Mercurial > minori
annotate src/gui/dialog/settings/recognition.cc @ 327:b5d6c27c308f
anime: refactor Anime::SeriesSeason to Season class
ToLocalString has also been altered to take in both season
and year because lots of locales actually treat formatting
seasons differently! most notably is Russian which adds a
suffix at the end to notate seasons(??)
author | Paper <paper@paper.us.eu.org> |
---|---|
date | Thu, 13 Jun 2024 01:49:18 -0400 |
parents | b1f625b0227c |
children |
rev | line source |
---|---|
301
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
1 #include "core/session.h" |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
2 #include "core/strings.h" |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
3 #include "gui/dialog/settings.h" |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
4 |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
5 #include <QCheckBox> |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
6 #include <QGroupBox> |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
7 #include <QLabel> |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
8 #include <QListWidget> |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
9 #include <QListWidgetItem> |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
10 #include <QSizePolicy> |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
11 #include <QVBoxLayout> |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
12 |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
13 #include <algorithm> |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
14 |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
15 QWidget* SettingsPageRecognition::CreatePlayersWidget() { |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
16 QWidget* result = new QWidget(this); |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
17 result->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Maximum); |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
18 |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
19 QVBoxLayout* full_layout = new QVBoxLayout(result); |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
20 |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
21 { |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
22 /* Feed link */ |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
23 QWidget* widget = new QWidget(result); |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
24 QVBoxLayout* widget_layout = new QVBoxLayout(widget); |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
25 |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
26 QCheckBox* checkbox = new QCheckBox(result); |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
27 checkbox->setText(tr("Enable media player detection")); |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
28 checkbox->setCheckState(detect_media_players ? Qt::Checked : Qt::Unchecked); |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
29 widget_layout->addWidget(checkbox); |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
30 |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
31 { |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
32 QLabel* label = new QLabel(tr("Allowed media players:"), widget); |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
33 widget_layout->addWidget(label); |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
34 } |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
35 |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
36 { |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
37 QListWidget* listwidget = new QListWidget(widget); |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
38 for (size_t i = 0; i < players.size(); i++) { |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
39 const auto& [enabled, player] = players[i]; |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
40 if (player.type == animone::PlayerType::Default) { |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
41 QListWidgetItem* item = new QListWidgetItem(listwidget); |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
42 item->setCheckState(enabled ? Qt::Checked : Qt::Unchecked); |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
43 item->setText(Strings::ToQString(player.name)); |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
44 item->setData(Qt::UserRole, QVariant::fromValue(i)); |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
45 } |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
46 } |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
47 connect(listwidget, &QListWidget::itemChanged, this, [this](QListWidgetItem* item) { |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
48 if (!item) |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
49 return; |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
50 size_t i = item->data(Qt::UserRole).toUInt(); |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
51 players[i].enabled = item->checkState(); |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
52 }); |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
53 /* this is down here because the listwidget state depends on it */ |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
54 connect(checkbox, &QCheckBox::stateChanged, this, [this, listwidget](int state) { |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
55 detect_media_players = (state == Qt::Checked); |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
56 listwidget->setEnabled(detect_media_players); |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
57 }); |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
58 listwidget->setEnabled(checkbox->checkState() == Qt::Checked); |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
59 |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
60 widget_layout->addWidget(listwidget); |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
61 } |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
62 |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
63 full_layout->addWidget(widget); |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
64 } |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
65 |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
66 full_layout->setSpacing(10); |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
67 full_layout->setContentsMargins(0, 0, 0, 0); |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
68 |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
69 return result; |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
70 } |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
71 |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
72 void SettingsPageRecognition::SaveInfo() { |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
73 session.config.recognition.detect_media_players = detect_media_players; |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
74 session.config.recognition.players = players; |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
75 } |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
76 |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
77 SettingsPageRecognition::SettingsPageRecognition(QWidget* parent) |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
78 : SettingsPage(parent, tr("Recognition")), players(session.config.recognition.players) { |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
79 detect_media_players = session.config.recognition.detect_media_players; |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
80 AddTab(CreatePlayersWidget(), tr("Media players")); |
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
81 } |