Mercurial > minori
view src/gui/dialog/settings/recognition.cc @ 258:862d0d8619f6
*: HUUUGE changes
animia has been renamed to animone, so instead of thinking of a
health condition, you think of a beautiful flower :)
I've also edited some of the code for animone, but I have no idea
if it even works or not because I don't have a mac or windows
machine lying around. whoops!
... anyway, all of the changes divergent from Anisthesia are now
licensed under BSD. it's possible that I could even rewrite most
of the code to where I don't even have to keep the MIT license,
but that's thinking too far into the future
I've been slacking off on implementing the anime seasons page,
mostly out of laziness. I think I'd have to create another db file
specifically for the seasons
anyway, this code is being pushed *primarily* because the hard drive
it's on is failing! yay :)
author | Paper <paper@paper.us.eu.org> |
---|---|
date | Mon, 01 Apr 2024 02:43:44 -0400 |
parents | ff0061e75f0f |
children | 99cbc51433e4 |
line wrap: on
line source
#include "core/session.h" #include "core/strings.h" #include "gui/dialog/settings.h" #include <QCheckBox> #include <QGroupBox> #include <QLabel> #include <QListWidget> #include <QListWidgetItem> #include <QSizePolicy> #include <QVBoxLayout> #include <algorithm> QWidget* SettingsPageRecognition::CreatePlayersWidget() { QWidget* result = new QWidget(this); result->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Maximum); QVBoxLayout* full_layout = new QVBoxLayout(result); { /* Feed link */ QWidget* widget = new QWidget(result); QVBoxLayout* widget_layout = new QVBoxLayout(widget); QCheckBox* checkbox = new QCheckBox(result); checkbox->setText(tr("Enable media player detection")); checkbox->setCheckState(detect_media_players ? Qt::Checked : Qt::Unchecked); widget_layout->addWidget(checkbox); { QLabel* label = new QLabel(tr("Allowed media players:"), widget); widget_layout->addWidget(label); } { QListWidget* listwidget = new QListWidget(widget); for (size_t i = 0; i < players.size(); i++) { const auto& [enabled, player] = players[i]; if (player.type == animone::PlayerType::Default) { QListWidgetItem* item = new QListWidgetItem(listwidget); item->setCheckState(enabled ? Qt::Checked : Qt::Unchecked); item->setText(Strings::ToQString(player.name)); item->setData(Qt::UserRole, QVariant::fromValue(i)); } } connect(listwidget, &QListWidget::itemChanged, this, [this](QListWidgetItem* item) { if (!item) return; size_t i = item->data(Qt::UserRole).toUInt(); players[i].enabled = item->checkState(); }); /* this is down here because the listwidget state depends on it */ connect(checkbox, &QCheckBox::stateChanged, this, [this, listwidget](int state) { detect_media_players = (state == Qt::Checked); listwidget->setEnabled(detect_media_players); }); listwidget->setEnabled(checkbox->checkState() == Qt::Checked); widget_layout->addWidget(listwidget); } full_layout->addWidget(widget); } full_layout->setSpacing(10); return result; } void SettingsPageRecognition::SaveInfo() { session.config.recognition.detect_media_players = detect_media_players; session.config.recognition.players = players; } SettingsPageRecognition::SettingsPageRecognition(QWidget* parent) : SettingsPage(parent, tr("Recognition")), players(session.config.recognition.players) { detect_media_players = session.config.recognition.detect_media_players; AddTab(CreatePlayersWidget(), tr("Media players")); }