Files
fmviewer3/project/fm_viewer/rm_settings.cpp
2026-02-21 17:11:31 +09:00

210 lines
4.4 KiB
C++

#include "rm_settings.h"
#include "rm_include.h"
#include <QStandardPaths>
#include <QSettings>
#include "rm_app.h"
/*
[SDDRIVE]
DEFAULT=E:\
DRIVETEXT=
[USER]
VOLUME=0
[SAVE]
DIR=
[LANG]
DEFAULT=JAP
[IMGSAVE]
DIR=
[DEF_LATLON]
LAT=35.681382
LON=139.766084
[PATH]
FOLDER=
RECENT=C:\temp\CS-91FH 실차영상
[CAPTURE]
PATH=C:\Users\jeong\Documents\BBViewerDoc\backup
*/
#if (PLAYER_ONLY_LIBRARY_MODE)
RMSettings* RMSettings::_instance = NULL;
#endif
RMSettings::RMSettings(QObject *parent) :
QObject(parent)
{
settings = NULL;
}
QString RMSettings::_loadString(const char* group,const char* item)
{
if(settings == NULL) {
load();
}
settings->beginGroup(group);
QString res = settings->value(item).toString();
settings->endGroup();
return res;
}
void RMSettings::_setString(const char* group,const char* item,QString value)
{
if(settings == NULL) {
load();
}
settings->beginGroup(group);
settings->setValue(item, value);
settings->endGroup();
settings->sync();
}
QString RMSettings::lastBackupPath()
{
QString recent = _loadString("/PATH","/BACKUP");
if(recent.isEmpty())
{
return RMApp::appPath(RMApp::CAPTURE);
}
return recent;
}
void RMSettings::setLastBackupPath(QString& path)
{
if(path != lastMoviePath()) {
_setString("/PATH","/BACKUP",path);
}
}
int RMSettings::nullBitrate()
{
settings->beginGroup("/APP");
bool ok = false;
int res = settings->value("/NULLBITRATE").toInt(&ok);
settings->endGroup();
return ok ? res : 180;
}
QString RMSettings::lastMoviePath()
{
QString recent = _loadString("/PATH","/RECENT");
if(recent.isEmpty())
{
return QStandardPaths::writableLocation(QStandardPaths::DesktopLocation);
}
return recent;
}
void RMSettings::setLastMoviePath(QString& path)
{
if(path != lastMoviePath()) {
_setString("/PATH","/RECENT",path);
}
}
#if (RM_TESTING)
QString RMSettings::lastScript()
{
QString recent = _loadString("/PATH","/SCRIPT");
return recent;
}
void RMSettings::setLastScript(QString& path)
{
if(path != lastMoviePath()) {
_setString("/PATH","/SCRIPT",path);
}
}
#endif
#if (SELECT_AUDIO_BACKEND)
QString RMSettings::AudioDevice()
{
return _loadString("/AUDIO","/DEVICE");
}
void RMSettings::setAudioDevice(QString device)
{
_setString("/AUDIO","/DEVICE",device);
}
//bool RMSettings::XAudioOff()
//{
// QString str = _loadString("/AUDIO","/XAUDIO");
// return (str.length() > 0 && str.toUpper() == "OFF");
//}
//void RMSettings::setXAudioOff(bool off)
//{
// _setString("/AUDIO","/XAUDIO",(off ? QString("OFF") : QString("ON")));
//}
#endif // SELECT_AUDIO_BACKEND
bool RMSettings::HWAccelOff()
{
#if !(HWACCEL_SETTING)
return false;
#else
QString str = _loadString("/VIDEO","/HWACCEL");
return (str.length() > 0 && str.toUpper() == "OFF");
#endif
}
void RMSettings::setHWAccelOff(bool off)
{
#if (HWACCEL_SETTING)
//qInfo() << (off ? QString("OFF") : QString("ON"));
_setString("/VIDEO","/HWACCEL",(off ? QString("OFF") : QString("ON")));
#else
Q_UNUSED(off);
#endif
}
#if (LIVE_LANGUAGE_CHANGE)
int RMSettings::language()
{
settings->beginGroup("APP");
#if (INITIAL_LANGUAGE_AUTO)
int res = settings->value("LANGUAGE",RMLanguage::systemLanguage()).toInt();
#else
int res = settings->value("LANGUAGE",RMLanguage::LANGUAGE_JP).toInt();
#endif
settings->endGroup();
return res;
}
void RMSettings::setLanguage(int language)
{
settings->beginGroup("APP");
settings->setValue("LANGUAGE", language);
settings->endGroup();
settings->sync();
}
bool RMSettings::autoLanguage()
{
settings->beginGroup("APP");
#if (INITIAL_LANGUAGE_AUTO)
bool res = settings->value("LANGUAGE_AUTO",true).toBool();
#else
bool res = settings->value("LANGUAGE_AUTO",false).toBool();
#endif
settings->endGroup();
return res;
}
void RMSettings::setAutoLanguage(bool bAuto)
{
settings->beginGroup("APP");
settings->setValue("LANGUAGE_AUTO", bAuto);
settings->endGroup();
settings->sync();
}
#endif
void RMSettings::load()
{
if(settings != NULL) {
return;
}
QString path = RMApp::appPath(RMApp::INI);
//qInfo() << "INI PATH:" << path;
settings = new QSettings(path, QSettings::IniFormat,this);
const QStringList childKeys = settings->childKeys();
QStringList values;
foreach (const QString &childKey, childKeys)
{
values << settings->value(childKey).toString();
}
}