mirror of
https://github.com/TES3MP/openmw-tes3mp.git
synced 2025-02-19 17:09:40 +00:00
Globalization of user settings
This commit is contained in:
parent
10165d3c6b
commit
548f4d683f
6 changed files with 70 additions and 73 deletions
|
@ -61,6 +61,17 @@ void CS::Editor::setupDataFiles()
|
|||
QString path = QString::fromStdString(iter->string());
|
||||
mFileDialog.addFiles(path);
|
||||
}
|
||||
|
||||
//Settings setup
|
||||
QStringList settingFiles;
|
||||
QString userPath = QString::fromStdString(mCfgMgr.getUserPath().string());
|
||||
|
||||
settingFiles.append(QString("opencs.cfg"));
|
||||
settingFiles.append(userPath + QString("opencs.cfg"));
|
||||
|
||||
mUserSettings.setSettingsFiles(settingFiles);
|
||||
mUserSettings.readSettings();
|
||||
|
||||
}
|
||||
|
||||
void CS::Editor::createDocument()
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
#include "view/doc/viewmanager.hpp"
|
||||
#include "view/doc/startup.hpp"
|
||||
#include "view/doc/filedialog.hpp"
|
||||
#include "model/settings/usersettings.hpp"
|
||||
|
||||
namespace CS
|
||||
{
|
||||
|
@ -17,6 +18,7 @@ namespace CS
|
|||
{
|
||||
Q_OBJECT
|
||||
|
||||
CSMSettings::UserSettings mUserSettings;
|
||||
CSMDoc::DocumentManager mDocumentManager;
|
||||
CSVDoc::ViewManager mViewManager;
|
||||
CSVDoc::StartupDialogue mStartup;
|
||||
|
|
|
@ -30,17 +30,25 @@ namespace boost
|
|||
} /* namespace boost */
|
||||
#endif /* (BOOST_VERSION <= 104600) */
|
||||
|
||||
CSMSettings::UserSettings *CSMSettings::UserSettings::mUserSettingsInstance = 0;
|
||||
|
||||
CSMSettings::UserSettings::UserSettings()
|
||||
{
|
||||
assert(!mUserSettingsInstance);
|
||||
mUserSettingsInstance = this;
|
||||
}
|
||||
|
||||
CSMSettings::UserSettings::~UserSettings()
|
||||
{
|
||||
mUserSettingsInstance = 0;
|
||||
}
|
||||
|
||||
QFile *CSMSettings::UserSettings::openFile (const QString &filename)
|
||||
CSMSettings::SectionMap CSMSettings::UserSettings::getSettingsMap() const
|
||||
{
|
||||
return mSectionMap;
|
||||
}
|
||||
|
||||
QFile *CSMSettings::UserSettings::openFile (const QString &filename) const
|
||||
{
|
||||
QFile *file = new QFile(filename);
|
||||
|
||||
|
@ -64,7 +72,7 @@ QFile *CSMSettings::UserSettings::openFile (const QString &filename)
|
|||
return file;
|
||||
}
|
||||
|
||||
bool CSMSettings::UserSettings::writeFile(QFile *file, QMap<QString, CSMSettings::SettingList *> &settings)
|
||||
bool CSMSettings::UserSettings::writeFile(QFile *file, QMap<QString, CSMSettings::SettingList *> &settings) const
|
||||
{
|
||||
if (!file)
|
||||
return false;
|
||||
|
@ -89,7 +97,7 @@ bool CSMSettings::UserSettings::writeFile(QFile *file, QMap<QString, CSMSettings
|
|||
return true;
|
||||
}
|
||||
|
||||
void CSMSettings::UserSettings::getSettings(QTextStream &stream, SectionMap §ions)
|
||||
void CSMSettings::UserSettings::getSettings(QTextStream &stream, SectionMap §ions) const
|
||||
{
|
||||
//looks for a square bracket, "'\\["
|
||||
//that has one or more "not nothing" in it, "([^]]+)"
|
||||
|
@ -137,19 +145,11 @@ void CSMSettings::UserSettings::getSettings(QTextStream &stream, SectionMap &sec
|
|||
sections.insert(section, settings);
|
||||
}
|
||||
|
||||
QString CSMSettings::UserSettings::getSettingValue(QString section, QString setting)
|
||||
void CSMSettings::UserSettings::readSettings()
|
||||
{
|
||||
Files::ConfigurationManager configMgr;
|
||||
QString userPath = QString::fromStdString(configMgr.getUserPath().string());
|
||||
QStringList list;
|
||||
|
||||
list.append(QString("opencs.cfg"));
|
||||
list.append(userPath + QString("opencs.cfg"));
|
||||
|
||||
|
||||
CSMSettings::SectionMap sectionMap;
|
||||
|
||||
foreach (const QString &path, list)
|
||||
foreach (const QString &path, mSettingsFiles)
|
||||
{
|
||||
qDebug() << "Loading config file:" << qPrintable(path);
|
||||
QFile file(path);
|
||||
|
@ -166,22 +166,36 @@ QString CSMSettings::UserSettings::getSettingValue(QString section, QString sett
|
|||
Please make sure you have the right permissions \
|
||||
and try again.<br>").arg(file.fileName()));
|
||||
msgBox.exec();
|
||||
return QString();
|
||||
return;
|
||||
}
|
||||
|
||||
QTextStream stream(&file);
|
||||
stream.setCodec(QTextCodec::codecForName("UTF-8"));
|
||||
|
||||
|
||||
getSettings(stream, sectionMap);
|
||||
getSettings(stream, mSectionMap);
|
||||
}
|
||||
|
||||
file.close();
|
||||
}
|
||||
}
|
||||
|
||||
if(sectionMap.find(section) == sectionMap.end())
|
||||
void CSMSettings::UserSettings::setSettingsFiles(QStringList files)
|
||||
{
|
||||
mSettingsFiles = files;
|
||||
}
|
||||
|
||||
QStringList CSMSettings::UserSettings::getSettingsFiles () const
|
||||
{
|
||||
return mSettingsFiles;
|
||||
}
|
||||
|
||||
QString CSMSettings::UserSettings::getSettingValue(QString section, QString setting) const
|
||||
{
|
||||
if(mSectionMap.find(section) == mSectionMap.end())
|
||||
return QString();
|
||||
|
||||
CSMSettings::SettingMap *settings = sectionMap.value(section);
|
||||
CSMSettings::SettingMap *settings = mSectionMap.value(section);
|
||||
|
||||
if(settings->find(setting) == settings->end())
|
||||
return QString();
|
||||
|
@ -191,3 +205,9 @@ QString CSMSettings::UserSettings::getSettingValue(QString section, QString sett
|
|||
return settingContainer->getValue();
|
||||
}
|
||||
|
||||
const CSMSettings::UserSettings& CSMSettings::UserSettings::instance()
|
||||
{
|
||||
assert(mUserSettingsInstance);
|
||||
return *mUserSettingsInstance;
|
||||
}
|
||||
|
||||
|
|
|
@ -24,23 +24,27 @@ namespace CSMSettings {
|
|||
|
||||
public:
|
||||
|
||||
static UserSettings &instance()
|
||||
{
|
||||
static UserSettings instance;
|
||||
UserSettings();
|
||||
~UserSettings();
|
||||
|
||||
return instance;
|
||||
}
|
||||
static const UserSettings& instance();
|
||||
|
||||
QFile *openFile (const QString &);
|
||||
bool writeFile(QFile *file, QMap<QString, SettingList *> §ions);
|
||||
void getSettings (QTextStream &stream, SectionMap &settings);
|
||||
QString getSettingValue(QString section, QString setting);
|
||||
void readSettings();
|
||||
void setSettingsFiles(QStringList files);
|
||||
|
||||
QFile *openFile (const QString &) const;
|
||||
bool writeFile(QFile *file, QMap<QString, SettingList *> §ions) const;
|
||||
void getSettings (QTextStream &stream, SectionMap &settings) const;
|
||||
QStringList getSettingsFiles () const;
|
||||
CSMSettings::SectionMap getSettingsMap() const;
|
||||
QString getSettingValue(QString section, QString setting) const;
|
||||
|
||||
private:
|
||||
|
||||
UserSettings *mUserSettingsInstance;
|
||||
UserSettings();
|
||||
~UserSettings();
|
||||
static UserSettings *mUserSettingsInstance;
|
||||
|
||||
CSMSettings::SectionMap mSectionMap;
|
||||
QStringList mSettingsFiles;
|
||||
|
||||
UserSettings (UserSettings const &); //not implemented
|
||||
void operator= (UserSettings const &); //not implemented
|
||||
|
|
|
@ -23,7 +23,7 @@ CSVSettings::UserSettingsDialog::UserSettingsDialog(QMainWindow *parent) :
|
|||
{
|
||||
setWindowTitle(QString::fromUtf8 ("User Settings"));
|
||||
buildPages();
|
||||
setWidgetStates (loadSettings());
|
||||
setWidgetStates (CSMSettings::UserSettings::instance().getSettingsMap());
|
||||
positionWindow ();
|
||||
|
||||
connect (mListWidget,
|
||||
|
@ -119,46 +119,6 @@ void CSVSettings::UserSettingsDialog::positionWindow ()
|
|||
|
||||
}
|
||||
|
||||
CSMSettings::SectionMap CSVSettings::UserSettingsDialog::loadSettings ()
|
||||
{
|
||||
QString userPath = QString::fromStdString(mCfgMgr.getUserPath().string());
|
||||
|
||||
mPaths.append(QString("opencs.cfg"));
|
||||
mPaths.append(userPath + QString("opencs.cfg"));
|
||||
|
||||
CSMSettings::SectionMap settingsMap;
|
||||
|
||||
foreach (const QString &path, mPaths)
|
||||
{
|
||||
qDebug() << "Loading config file:" << qPrintable(path);
|
||||
QFile file(path);
|
||||
|
||||
if (file.exists())
|
||||
{
|
||||
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
|
||||
{
|
||||
QMessageBox msgBox;
|
||||
msgBox.setWindowTitle(tr("Error opening OpenCS configuration file"));
|
||||
msgBox.setIcon(QMessageBox::Critical);
|
||||
msgBox.setStandardButtons(QMessageBox::Ok);
|
||||
msgBox.setText(QObject::tr("<br><b>Could not open %0 for reading</b><br><br> \
|
||||
Please make sure you have the right permissions \
|
||||
and try again.<br>").arg(file.fileName()));
|
||||
msgBox.exec();
|
||||
return settingsMap;
|
||||
}
|
||||
|
||||
QTextStream stream(&file);
|
||||
stream.setCodec(QTextCodec::codecForName("UTF-8"));
|
||||
|
||||
CSMSettings::UserSettings::instance().getSettings(stream, settingsMap);
|
||||
}
|
||||
|
||||
file.close();
|
||||
}
|
||||
|
||||
return settingsMap;
|
||||
}
|
||||
|
||||
void CSVSettings::UserSettingsDialog::writeSettings()
|
||||
{
|
||||
|
@ -170,7 +130,9 @@ void CSVSettings::UserSettingsDialog::writeSettings()
|
|||
settings [page->objectName()] = page->getSettings();
|
||||
}
|
||||
|
||||
CSMSettings::UserSettings::instance().writeFile(CSMSettings::UserSettings::instance().openFile(mPaths.back()), settings);
|
||||
QStringList paths = CSMSettings::UserSettings::instance().getSettingsFiles();
|
||||
|
||||
CSMSettings::UserSettings::instance().writeFile(CSMSettings::UserSettings::instance().openFile(paths.back()), settings);
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -25,7 +25,6 @@ namespace CSVSettings {
|
|||
{
|
||||
Q_OBJECT
|
||||
|
||||
QStringList mPaths;
|
||||
QListWidget *mListWidget;
|
||||
QStackedWidget *mStackedWidget;
|
||||
Files::ConfigurationManager mCfgMgr;
|
||||
|
@ -41,7 +40,6 @@ namespace CSVSettings {
|
|||
void setWidgetStates (CSMSettings::SectionMap settingsMap);
|
||||
void buildPages();
|
||||
void positionWindow ();
|
||||
CSMSettings::SectionMap loadSettings();
|
||||
void writeSettings();
|
||||
void createSamplePage();
|
||||
|
||||
|
|
Loading…
Reference in a new issue