Skip to content

Commit

Permalink
settings rework
Browse files Browse the repository at this point in the history
  • Loading branch information
Odizinne committed Sep 1, 2024
1 parent 78e7530 commit 60ba7ad
Show file tree
Hide file tree
Showing 3 changed files with 72 additions and 41 deletions.
48 changes: 31 additions & 17 deletions src/BigPictureTV/bigpicturetv.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ BigPictureTV::BigPictureTV(QObject *parent)
, windowCheckTimer(new QTimer(this))
{
loadSettings();
windowCheckTimer->setInterval(settings.value("checkrate").toInt());
windowCheckTimer->setInterval(window_checkrate);
connect(windowCheckTimer, &QTimer::timeout, this, &BigPictureTV::checkWindowTitle);
windowCheckTimer->start();
createTrayIcon();
Expand Down Expand Up @@ -63,8 +63,8 @@ void BigPictureTV::createTrayIcon()

void BigPictureTV::checkWindowTitle()
{
if (settings.value("target_window").toInt() == 1) {
if (settings.value("custom_window").toString() != "") {
if (target_window_mode == 1) {
if (custom_window_title != "") {
return;
}
}
Expand All @@ -73,13 +73,13 @@ void BigPictureTV::checkWindowTitle()
return;
}

bool disableVideo = settings.value("disable_monitor").toBool();
bool disableAudio = settings.value("disable_audio_switch").toBool();
bool disableVideo = disable_monitor_switch;
bool disableAudio = disable_audio_switch;
bool isRunning;
if (settings.value("target_window").toInt() == 0) {
if (target_window_mode == 0) {
isRunning = steamWindowManager->isBigPictureRunning();
} else if (settings.value("target_window").toInt() == 1) {
isRunning = steamWindowManager->isCustomWindowRunning(settings.value("custom_window").toString());
} else if (target_window_mode == 1) {
isRunning = steamWindowManager->isCustomWindowRunning(custom_window_title);
}

if (isRunning && !gamemodeActive) {
Expand All @@ -100,8 +100,8 @@ void BigPictureTV::handleMonitorChanges(bool isDesktopMode, bool disableVideo)
if (disableVideo)
return;

int index = isDesktopMode ? settings.value("desktop_monitor").toInt()
: settings.value("gamemode_monitor").toInt();
int index = isDesktopMode ? desktop_monitor_mode
: gamemode_monitor_mode;

const char *command = nullptr;

Expand All @@ -121,8 +121,8 @@ void BigPictureTV::handleAudioChanges(bool isDesktopMode, bool disableAudio)
if (disableAudio)
return;

QString audioDevice = isDesktopMode ? settings.value("desktop_audio").toString()
: settings.value("gamemode_audio").toString();
QString audioDevice = isDesktopMode ? desktop_audio_device
: gamemode_audio_device;

audioManager->setAudioDevice(audioDevice.toStdString());

Expand All @@ -135,16 +135,16 @@ void BigPictureTV::handleAudioChanges(bool isDesktopMode, bool disableAudio)

void BigPictureTV::handleActions(bool isDesktopMode)
{
if (settings.value("close_discord_action").toBool()) {
if (close_discord_action) {
handleDiscordAction(isDesktopMode);
}
if (settings.value("disable_nightlight").toBool()) {
if (disable_nightlight_action) {
handleNightLightAction(isDesktopMode);
}
if (settings.value("gamemode_powerplan").toBool()) {
if (performance_powerplan_action) {
handlePowerPlanAction(isDesktopMode);
}
if (settings.value("gamemode_pause_media").toBool()) {
if (pause_media_action) {
handleMediaAction(isDesktopMode);
}
}
Expand Down Expand Up @@ -211,6 +211,20 @@ void BigPictureTV::loadSettings()
QJsonDocument doc = QJsonDocument::fromJson(file.readAll(), &parseError);
if (parseError.error == QJsonParseError::NoError) {
settings = doc.object();

gamemode_audio_device = settings.value("gamemode_audio_device").toString();
desktop_audio_device = settings.value("desktop_audio_device").toString();
disable_audio_switch = settings.value("disable_audio_switch").toBool();
window_checkrate = settings.value("window_checkrate").toInt(1000);
close_discord_action = settings.value("close_discord_action").toBool(false);
performance_powerplan_action = settings.value("performance_powerplan_action").toBool(false);
pause_media_action = settings.value("pause_media_action").toBool(false);
gamemode_monitor_mode = settings.value("gamemode_monitor_mode").toInt(0);
desktop_monitor_mode = settings.value("desktop_monitor_mode").toInt(0);
disable_monitor_switch = settings.value("disable_monitor_switch").toBool();
disable_nightlight_action = settings.value("disable_nightlight_action").toBool();
target_window_mode = settings.value("target_window_mode").toInt(0);
custom_window_title = settings.value("custom_window_title").toString();
}
file.close();
}
Expand All @@ -237,6 +251,6 @@ void BigPictureTV::onConfiguratorClosed()
{
configurator = nullptr;
loadSettings();
windowCheckTimer->setInterval(settings.value("checkrate").toInt());
windowCheckTimer->setInterval(window_checkrate);
windowCheckTimer->start();
}
14 changes: 14 additions & 0 deletions src/BigPictureTV/bigpicturetv.h
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,20 @@ private slots:
void checkWindowTitle();
void showSettings();

QString gamemode_audio_device;
QString desktop_audio_device;
QString custom_window_title;
bool disable_audio_switch;
int window_checkrate;
bool close_discord_action;
bool performance_powerplan_action;
bool pause_media_action;
int gamemode_monitor_mode;
int desktop_monitor_mode;
bool disable_monitor_switch;
bool disable_nightlight_action;
bool target_window_mode;

bool gamemodeActive;
QJsonObject settings;
static const QString settingsFile;
Expand Down
51 changes: 27 additions & 24 deletions src/Configurator/configurator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -165,17 +165,20 @@ void Configurator::onAudioButtonClicked()

void Configurator::createDefaultSettings()
{
ui->checkrateSpinBox->setValue(1000);
ui->desktopAudioLineEdit->setText("Headset");
ui->gamemodeAudioLineEdit->setText("TV");
ui->desktopMonitorComboBox->setCurrentIndex(0);
ui->gamemodeMonitorComboBox->setCurrentIndex(0);
ui->closeDiscordCheckBox->setChecked(false);
ui->enablePerformancePowerPlan->setChecked(false);
ui->startupCheckBox->setChecked(false);
ui->disableNightLightCheckBox->setChecked(false);
ui->pauseMediaAction->setChecked(false);
ui->disableAudioCheckBox->setChecked(false);
ui->disableMonitorCheckBox->setChecked(false);
ui->checkrateSpinBox->setValue(1000);
ui->disableNightLightCheckBox->setChecked(false);
ui->customWindowLineEdit->setText("");
ui->targetWindowComboBox->setCurrentIndex(0);

saveSettings();
}

Expand Down Expand Up @@ -205,39 +208,39 @@ void Configurator::loadSettings()

void Configurator::applySettings()
{
ui->gamemodeAudioLineEdit->setText(settings.value("gamemode_audio").toString());
ui->desktopAudioLineEdit->setText(settings.value("desktop_audio").toString());
ui->gamemodeAudioLineEdit->setText(settings.value("gamemode_audio_device").toString());
ui->desktopAudioLineEdit->setText(settings.value("desktop_audio_device").toString());
ui->disableAudioCheckBox->setChecked(settings.value("disable_audio_switch").toBool());
ui->checkrateSpinBox->setValue(settings.value("checkrate").toInt(1000));
ui->checkrateSpinBox->setValue(settings.value("window_checkrate").toInt(1000));
ui->closeDiscordCheckBox->setChecked(settings.value("close_discord_action").toBool(false));
ui->enablePerformancePowerPlan->setChecked(settings.value("gamemode_powerplan").toBool(false));
ui->pauseMediaAction->setChecked(settings.value("gamemode_pause_media").toBool(false));
ui->gamemodeMonitorComboBox->setCurrentIndex(settings.value("gamemode_monitor").toInt(0));
ui->desktopMonitorComboBox->setCurrentIndex(settings.value("desktop_monitor").toInt(0));
ui->enablePerformancePowerPlan->setChecked(settings.value("performance_powerplan_action").toBool(false));
ui->pauseMediaAction->setChecked(settings.value("pause_media_action").toBool(false));
ui->gamemodeMonitorComboBox->setCurrentIndex(settings.value("gamemode_monitor_mode").toInt(0));
ui->desktopMonitorComboBox->setCurrentIndex(settings.value("desktop_monitor_mode").toInt(0));
ui->disableMonitorCheckBox->setChecked(settings.value("disable_monitor_switch").toBool());
ui->disableNightLightCheckBox->setChecked(settings.value("disable_nightlight").toBool());
ui->targetWindowComboBox->setCurrentIndex(settings.value("target_window").toInt(0));
ui->customWindowLineEdit->setText(settings.value("custom_window").toString());
ui->disableNightLightCheckBox->setChecked(settings.value("disable_nightlight_action").toBool());
ui->targetWindowComboBox->setCurrentIndex(settings.value("target_window_mode").toInt(0));
ui->customWindowLineEdit->setText(settings.value("custom_window_title").toString());
toggleAudioSettings(!ui->disableAudioCheckBox->isChecked());
toggleMonitorSettings(!ui->disableMonitorCheckBox->isChecked());
toggleCustomWindowTitle(ui->targetWindowComboBox->currentIndex() == 1);
}

void Configurator::saveSettings()
{
settings["gamemode_audio"] = ui->gamemodeAudioLineEdit->text();
settings["desktop_audio"] = ui->desktopAudioLineEdit->text();
settings["window_checkrate"] = ui->checkrateSpinBox->value();
settings["gamemode_audio_device"] = ui->gamemodeAudioLineEdit->text();
settings["desktop_audio_device"] = ui->desktopAudioLineEdit->text();
settings["gamemode_monitor_mode"] = ui->gamemodeMonitorComboBox->currentIndex();
settings["desktop_monitor_mode"] = ui->desktopMonitorComboBox->currentIndex();
settings["disable_audio_switch"] = ui->disableAudioCheckBox->isChecked();
settings["checkrate"] = ui->checkrateSpinBox->value();
settings["close_discord_action"] = ui->closeDiscordCheckBox->isChecked();
settings["gamemode_powerplan"] = ui->enablePerformancePowerPlan->isChecked();
settings["gamemode_pause_media"] = ui->pauseMediaAction->isChecked();
settings["gamemode_monitor"] = ui->gamemodeMonitorComboBox->currentIndex();
settings["desktop_monitor"] = ui->desktopMonitorComboBox->currentIndex();
settings["disable_monitor_switch"] = ui->disableMonitorCheckBox->isChecked();
settings["disable_nightlight"] = ui->disableNightLightCheckBox->isChecked();
settings["target_window"] = ui->targetWindowComboBox->currentIndex();
settings["custom_window"] = ui->customWindowLineEdit->text();
settings["close_discord_action"] = ui->closeDiscordCheckBox->isChecked();
settings["performance_powerplan_action"] = ui->enablePerformancePowerPlan->isChecked();
settings["pause_media_action"] = ui->pauseMediaAction->isChecked();
settings["disable_nightlight_action"] = ui->disableNightLightCheckBox->isChecked();
settings["target_window_mode"] = ui->targetWindowComboBox->currentIndex();
settings["custom_window_title"] = ui->customWindowLineEdit->text();

QFile file(settingsFile);
if (file.open(QIODevice::WriteOnly)) {
Expand Down

0 comments on commit 60ba7ad

Please sign in to comment.