Mercurial > minori
view src/gui/dialog/settings/recognition.cc @ 229:adc20fa321c1
theme: force Fusion style on platforms other than Win32 or OS X
I was reluctant to do this, but most of the other styles just
look like pure shite regardless of whether I force a stylesheet
on them or not. KDE's style is actually hilariously bad paired
with my stylesheet, so I've decided to also make the stylesheet
Windows-specific as well, because that's really the only platform
where it makes sense in the first place.
author | Paper <paper@paper.us.eu.org> |
---|---|
date | Wed, 10 Jan 2024 21:23:57 -0500 |
parents | ffa535b6d630 |
children | ff0061e75f0f |
line wrap: on
line source
#include "core/session.h" #include "core/strings.h" #include "gui/dialog/settings.h" #include <QListWidget> #include <QListWidgetItem> #include <QGroupBox> #include <QCheckBox> #include <QLabel> #include <QSizePolicy> #include <QVBoxLayout> #include <algorithm> QWidget* SettingsPageRecognition::CreatePlayersWidget() { QWidget* result = new QWidget(this); result->setAutoFillBackground(true); 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 == animia::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")); }