Mercurial > minori
annotate src/gui/dialog/settings/recognition.cc @ 393:963047512d34
*: clang-format
| author | Paper <paper@tflc.us> |
|---|---|
| date | Fri, 07 Nov 2025 07:16:15 -0500 |
| 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 |
| 393 | 15 QWidget *SettingsPageRecognition::CreatePlayersWidget() |
| 16 { | |
| 17 QWidget *result = new QWidget(this); | |
|
301
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
18 result->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Maximum); |
|
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
19 |
| 393 | 20 QVBoxLayout *full_layout = new QVBoxLayout(result); |
|
301
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 { |
|
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
23 /* Feed link */ |
| 393 | 24 QWidget *widget = new QWidget(result); |
| 25 QVBoxLayout *widget_layout = new QVBoxLayout(widget); | |
|
301
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
26 |
| 393 | 27 QCheckBox *checkbox = new QCheckBox(result); |
|
301
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
28 checkbox->setText(tr("Enable media player detection")); |
|
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
29 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
|
30 widget_layout->addWidget(checkbox); |
|
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 { |
| 393 | 33 QLabel *label = new QLabel(tr("Allowed media players:"), widget); |
|
301
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
34 widget_layout->addWidget(label); |
|
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 { |
| 393 | 38 QListWidget *listwidget = new QListWidget(widget); |
|
301
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
39 for (size_t i = 0; i < players.size(); i++) { |
| 393 | 40 const auto &[enabled, player] = players[i]; |
|
301
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
41 if (player.type == animone::PlayerType::Default) { |
| 393 | 42 QListWidgetItem *item = new QListWidgetItem(listwidget); |
|
301
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
43 item->setCheckState(enabled ? Qt::Checked : Qt::Unchecked); |
|
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
44 item->setText(Strings::ToQString(player.name)); |
|
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
45 item->setData(Qt::UserRole, QVariant::fromValue(i)); |
|
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 } |
| 393 | 48 connect(listwidget, &QListWidget::itemChanged, this, [this](QListWidgetItem *item) { |
|
301
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
49 if (!item) |
|
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
50 return; |
|
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
51 size_t i = item->data(Qt::UserRole).toUInt(); |
|
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
52 players[i].enabled = item->checkState(); |
|
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
53 }); |
|
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
54 /* 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
|
55 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
|
56 detect_media_players = (state == Qt::Checked); |
|
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
57 listwidget->setEnabled(detect_media_players); |
|
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
58 }); |
|
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
59 listwidget->setEnabled(checkbox->checkState() == Qt::Checked); |
|
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
60 |
|
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
61 widget_layout->addWidget(listwidget); |
|
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 |
|
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
64 full_layout->addWidget(widget); |
|
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 |
|
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
67 full_layout->setSpacing(10); |
|
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
68 full_layout->setContentsMargins(0, 0, 0, 0); |
|
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
69 |
|
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
70 return result; |
|
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 |
| 393 | 73 void SettingsPageRecognition::SaveInfo() |
| 74 { | |
|
301
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
75 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
|
76 session.config.recognition.players = players; |
|
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
77 } |
|
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
78 |
| 393 | 79 SettingsPageRecognition::SettingsPageRecognition(QWidget *parent) |
| 80 : SettingsPage(parent, tr("Recognition")), players(session.config.recognition.players) | |
| 81 { | |
|
301
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
82 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
|
83 AddTab(CreatePlayersWidget(), tr("Media players")); |
|
b1f625b0227c
*: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents:
294
diff
changeset
|
84 } |
