view src/gui/dialog/settings/recognition.cc @ 120:275da698697d

config: template-ify INI now it's... slightly less ugly :')
author Paper <mrpapersonic@gmail.com>
date Wed, 08 Nov 2023 18:13:37 -0500
parents 4eae379cb1ff
children 54c9d36207db
line wrap: on
line source

#include "core/session.h"
#include "core/strings.h"
#include "gui/dialog/settings.h"
#include "track/types.h"
#include <QListWidget>
#include <QListWidgetItem>
#include <QGroupBox>
#include <QLabel>
#include <QSizePolicy>
#include <QVBoxLayout>
#include <algorithm>

Q_DECLARE_METATYPE(Track::Types::MediaPlayer);

QWidget* SettingsPageRecognition::CreatePlayersWidget() {
	QWidget* result = new QWidget(this);
	result->setAutoFillBackground(true);
	result->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Maximum);

	QVBoxLayout* full_layout = new QVBoxLayout(result);

	{
		/* URLs */
		QGroupBox* group = new QGroupBox(tr("URLs"), result);
		group->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Maximum);

		QVBoxLayout* group_layout = new QVBoxLayout(group);

		{
			/* Feed link */
			QWidget* widget = new QWidget(group);
			QVBoxLayout* widget_layout = new QVBoxLayout(widget);

			{
				QLabel* label = new QLabel(tr("Allowed media players:"), widget);
				widget_layout->addWidget(label);
			}

			{
				QListWidget* listwidget = new QListWidget(widget);
				for (const auto& player : session.recognition.players) {
					QListWidgetItem* item = new QListWidgetItem(listwidget);
					item->setCheckState(player.GetEnabled() ? Qt::Checked : Qt::Unchecked);
					item->setText(Strings::ToQString(player.GetName() + " (" + player.GetExecutable() + ")"));
					{
						QVariant v(QVariant::fromValue(player));
						item->setData(Qt::UserRole, v);
					}
				}
				widget_layout->addWidget(listwidget);
			}

			group_layout->addWidget(widget);
		}

		full_layout->addWidget(group);
	}

	full_layout->setSpacing(10);
	full_layout->addStretch();

	return result;
}

void SettingsPageRecognition::SaveInfo() {
}

SettingsPageRecognition::SettingsPageRecognition(QWidget* parent) : SettingsPage(parent, tr("Recognition")) {
	AddTab(CreatePlayersWidget(), tr("Media players"));
}