mirror of
https://gitlab.com/pholy/OSCAR-code.git
synced 2025-04-04 02:00:43 +00:00
122 lines
4.3 KiB
C++
122 lines
4.3 KiB
C++
/* Hi Resolution Implementation
|
|
*
|
|
* Copyright (c) 2023-2024 The OSCAR Team
|
|
*
|
|
* This file is subject to the terms and conditions of the GNU General Public
|
|
* License. See the file COPYING in the main directory of the source code
|
|
* for more details. */
|
|
|
|
#define TEST_MACROS_ENABLEDoff
|
|
#include <test_macros.h>
|
|
|
|
#include <QMessageBox>
|
|
#include <QDebug>
|
|
#include <QCheckBox>
|
|
#include <QFileDialog>
|
|
#include "SleepLib/profiles.h"
|
|
#include "highresolution.h"
|
|
|
|
|
|
namespace HighResolution {
|
|
|
|
const QString HI_RES_FILENAME("hiResolutionMode.txt");
|
|
HiResolutionMode hiResolutionNextSessionMode = HRM_INVALID;
|
|
HiResolutionMode hiResolutionOperaingMode = HRM_INVALID;
|
|
|
|
int readMode( QString filename) {
|
|
QFile file ( filename );
|
|
int mode=0;
|
|
if (file.open(QFile::ReadOnly)) {
|
|
QTextStream in(&file);
|
|
in >> mode;
|
|
file.close();
|
|
}
|
|
return mode;
|
|
}
|
|
|
|
void writeMode( QString filename, int data , QString description) {
|
|
QFile file ( filename );
|
|
if (file.open(QFile::WriteOnly|QFile::Text)) {
|
|
QTextStream out(&file);
|
|
out << data << " " << description << "\n" ;
|
|
file.close();
|
|
}
|
|
}
|
|
|
|
HiResolutionMode setHiResolutionMode(HiResolutionMode value) {
|
|
QString filename = GetAppData() + QDir::separator() + HI_RES_FILENAME;
|
|
if (value == HRM_ENABLED ) {
|
|
writeMode( filename , HRM_ENABLED ,"HiResolutionMode Enabled");
|
|
return HRM_ENABLED;
|
|
} else {
|
|
writeMode( filename , HRM_DISABLED , "HiResolutionMode Disabled");
|
|
}
|
|
return HRM_DISABLED;
|
|
}
|
|
|
|
HiResolutionMode getHiResolutionMode() {
|
|
QString filename = GetAppData() + QDir::separator() + HI_RES_FILENAME;
|
|
int hiResMode= readMode( filename );
|
|
return (hiResMode == HRM_ENABLED ) ? HRM_ENABLED : HRM_DISABLED ;
|
|
}
|
|
|
|
// this function is used to control the text name of the high resolution preference checkbox.
|
|
bool checkBox(bool set,QCheckBox* button) {
|
|
if (set) {
|
|
hiResolutionNextSessionMode = button->isChecked()? HRM_ENABLED : HRM_DISABLED ;
|
|
setHiResolutionMode(hiResolutionNextSessionMode);
|
|
if ( hiResolutionOperaingMode != hiResolutionNextSessionMode ) {
|
|
QString msg = QString("%1\n%2").arg(QObject::tr("High Resolution Mode change will take effect when OSCAR is restarted."))
|
|
.arg(QObject::tr("Restart Oscar now?") );
|
|
return QMessageBox::question(nullptr, STR_MessageBox_Question, msg, QMessageBox::No, QMessageBox::Yes) == QMessageBox::Yes;
|
|
}
|
|
return false;
|
|
}
|
|
QString label;
|
|
if (hiResolutionNextSessionMode == HRM_ENABLED ) {
|
|
if ( hiResolutionOperaingMode == hiResolutionNextSessionMode ) {
|
|
label = QObject::tr("High Resolution Mode is Enabled (Experimental)");
|
|
} else {
|
|
label = QObject::tr("The High Resolution Mode will be Enabled after Oscar is restarted.");
|
|
}
|
|
button->setChecked(true);
|
|
} else {
|
|
if ( hiResolutionOperaingMode == hiResolutionNextSessionMode ) {
|
|
label = QObject::tr("High Resolution Mode is Disabled (Experimental)");
|
|
} else {
|
|
label = QObject::tr("High Resolution Mode will be Disabled after Oscar is restarted.");
|
|
}
|
|
button->setChecked(false);
|
|
}
|
|
button->setText(label);
|
|
return false;
|
|
}
|
|
|
|
// These functions are for main.cpp
|
|
void init() {
|
|
hiResolutionOperaingMode = getHiResolutionMode();
|
|
};
|
|
|
|
void init(HiResolutionMode mode) {
|
|
hiResolutionOperaingMode = mode;
|
|
};
|
|
|
|
bool isEnabled() {
|
|
hiResolutionNextSessionMode = hiResolutionOperaingMode ;
|
|
return hiResolutionOperaingMode >= HRM_ENABLED;
|
|
};
|
|
|
|
void display(bool actuallyEnabled) {
|
|
bool shouldBeEnabled= (hiResolutionOperaingMode >= HRM_ENABLED) ;
|
|
if (shouldBeEnabled != actuallyEnabled) {
|
|
DEBUGFC O("RESULT MISMATCH") Q(hiResolutionOperaingMode) Q(shouldBeEnabled) Q(actuallyEnabled);
|
|
|
|
}
|
|
if (actuallyEnabled) {
|
|
qDebug() << "High Resolution Mode is Enabled";
|
|
} else {
|
|
qDebug() << "High Resolution Mode is Disabled";
|
|
}
|
|
}
|
|
}
|