annotate src/gui/dialog/settings/services.cc @ 101:c537996cf67b

*: multitude of config changes 1. theme is now configurable from the settings menu (but you have to restart for it to apply) 2. config is now stored in an INI file, with no method of conversion from json (this repo is private-ish anyway)
author Paper <mrpapersonic@gmail.com>
date Fri, 03 Nov 2023 14:06:02 -0400
parents 9b2b41f83a5e
children 2004b41d4a59
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
10
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
1 #include "core/anime.h"
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
2 #include "core/session.h"
65
26721c28bf22 *: avoid usage of (to|from)StdString
Paper <mrpapersonic@gmail.com>
parents: 63
diff changeset
3 #include "core/strings.h"
10
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
4 #include "gui/dialog/settings.h"
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
5 #include "services/anilist.h"
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
6 #include <QComboBox>
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
7 #include <QGroupBox>
76
3364fadc8a36 *: format source code
Paper <mrpapersonic@gmail.com>
parents: 74
diff changeset
8 #include <QLabel>
3364fadc8a36 *: format source code
Paper <mrpapersonic@gmail.com>
parents: 74
diff changeset
9 #include <QLineEdit>
10
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
10 #include <QPushButton>
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
11 #include <QSizePolicy>
68
2417121d894e *: normalize usage of layouts
Paper <mrpapersonic@gmail.com>
parents: 65
diff changeset
12 #include <QVBoxLayout>
10
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
13
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
14 QWidget* SettingsPageServices::CreateMainPage() {
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
15 QWidget* result = new QWidget(this);
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
16 result->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Maximum);
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
17
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
18 QGroupBox* sync_group_box = new QGroupBox(tr("Synchronization"), result);
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
19 sync_group_box->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Maximum);
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
20
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
21 QLabel* sync_combo_box_label = new QLabel(tr("Active service and metadata provider:"), sync_group_box);
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
22
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
23 QComboBox* sync_combo_box = new QComboBox(sync_group_box);
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
24 sync_combo_box->addItem(tr("AniList"));
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
25 connect(sync_combo_box, QOverload<int>::of(&QComboBox::currentIndexChanged), this,
15
cde8f67a7c7d *: update, megacommit :)
Paper <mrpapersonic@gmail.com>
parents: 11
diff changeset
26 [this](int index) { service = static_cast<Anime::Services>(index + 1); });
10
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
27 sync_combo_box->setCurrentIndex(static_cast<int>(service) - 1);
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
28
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
29 QLabel* sync_note_label =
15
cde8f67a7c7d *: update, megacommit :)
Paper <mrpapersonic@gmail.com>
parents: 11
diff changeset
30 new QLabel(tr("Note: Minori is unable to synchronize multiple services at the same time."), sync_group_box);
10
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
31
68
2417121d894e *: normalize usage of layouts
Paper <mrpapersonic@gmail.com>
parents: 65
diff changeset
32 QVBoxLayout* sync_layout = new QVBoxLayout(sync_group_box);
10
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
33 sync_layout->addWidget(sync_combo_box_label);
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
34 sync_layout->addWidget(sync_combo_box);
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
35 sync_layout->addWidget(sync_note_label);
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
36
68
2417121d894e *: normalize usage of layouts
Paper <mrpapersonic@gmail.com>
parents: 65
diff changeset
37 QVBoxLayout* full_layout = new QVBoxLayout(result);
10
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
38 full_layout->addWidget(sync_group_box);
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
39 full_layout->setSpacing(10);
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
40 full_layout->addStretch();
68
2417121d894e *: normalize usage of layouts
Paper <mrpapersonic@gmail.com>
parents: 65
diff changeset
41
10
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
42 return result;
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
43 }
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
44
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
45 QWidget* SettingsPageServices::CreateAniListPage() {
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
46 QWidget* result = new QWidget(this);
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
47 result->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum);
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
48
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
49 QGroupBox* group_box = new QGroupBox(tr("Account"), result);
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
50 group_box->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Maximum);
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
51
44
619cbd6e69f9 filesystem: fix CreateDirectories function
Paper <mrpapersonic@gmail.com>
parents: 15
diff changeset
52 /* this is outdated! usernames are retrieved through a request to AniList now.
63
3d2decf093bb *: fix many clang warnings
Paper <mrpapersonic@gmail.com>
parents: 44
diff changeset
53 although that's a bit... erm... cancerous, maybe this method IS useful. IDK */
10
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
54 QLabel* username_entry_label = new QLabel(tr("Username: (not your email address)"), group_box);
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
55
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
56 QWidget* auth_widget = new QWidget(group_box);
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
57 QLineEdit* username_entry = new QLineEdit(username, auth_widget);
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
58 connect(username_entry, &QLineEdit::editingFinished, this,
15
cde8f67a7c7d *: update, megacommit :)
Paper <mrpapersonic@gmail.com>
parents: 11
diff changeset
59 [this, username_entry] { username = username_entry->text(); });
10
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
60
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
61 QPushButton* auth_button = new QPushButton(auth_widget);
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
62 connect(auth_button, &QPushButton::clicked, this, [] { Services::AniList::AuthorizeUser(); });
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
63 auth_button->setText(session.config.anilist.auth_token.empty() ? tr("Authorize...") : tr("Re-authorize..."));
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
64
68
2417121d894e *: normalize usage of layouts
Paper <mrpapersonic@gmail.com>
parents: 65
diff changeset
65 QHBoxLayout* auth_layout = new QHBoxLayout(auth_widget);
10
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
66 auth_layout->addWidget(username_entry);
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
67 auth_layout->addWidget(auth_button);
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
68
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
69 QLabel* note_label = new QLabel(tr("<a href=\"http://anilist.co/\">Create a new AniList account</a>"), group_box);
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
70 note_label->setTextFormat(Qt::RichText);
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
71 note_label->setTextInteractionFlags(Qt::TextBrowserInteraction);
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
72 note_label->setOpenExternalLinks(true);
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
73
68
2417121d894e *: normalize usage of layouts
Paper <mrpapersonic@gmail.com>
parents: 65
diff changeset
74 QVBoxLayout* layout = new QVBoxLayout(group_box);
10
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
75 layout->addWidget(username_entry_label);
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
76 layout->addWidget(auth_widget);
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
77 layout->addWidget(note_label);
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
78
68
2417121d894e *: normalize usage of layouts
Paper <mrpapersonic@gmail.com>
parents: 65
diff changeset
79 QVBoxLayout* full_layout = new QVBoxLayout(result);
10
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
80 full_layout->addWidget(group_box);
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
81 full_layout->setSpacing(10);
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
82 full_layout->addStretch();
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
83 return result;
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
84 }
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
85
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
86 void SettingsPageServices::SaveInfo() {
76
3364fadc8a36 *: format source code
Paper <mrpapersonic@gmail.com>
parents: 74
diff changeset
87 // session.config.anilist.username =
3364fadc8a36 *: format source code
Paper <mrpapersonic@gmail.com>
parents: 74
diff changeset
88 Strings::ToUtf8String(username);
10
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
89 session.config.service = service;
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
90 }
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
91
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
92 SettingsPageServices::SettingsPageServices(QWidget* parent) : SettingsPage(parent, tr("Services")) {
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
93 username = QString::fromUtf8(session.config.anilist.username.c_str());
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
94 service = session.config.service;
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
95 AddTab(CreateMainPage(), tr("Main"));
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
96 AddTab(CreateAniListPage(), tr("AniList"));
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
97 }