00001
00012
00013
00014 #include "settings.h"
00015
00016 #include <QSettings>
00017 #include <QString>
00018 #include <QVariant>
00019
00020 #ifdef DEBUG
00021 #include <iostream>
00022 #endif
00023
00024 namespace imedgine
00025 {
00026
00027
00028 Settings* Settings::settings_instance_ = 0;
00029
00030
00031
00032 Settings::~Settings()
00033 {
00034 delete q_settings_;
00035 }
00036
00037
00038
00039 Settings* const Settings::getInstance()
00040 {
00041 if (settings_instance_ == 0)
00042 {
00043 settings_instance_ = new Settings();
00044 }
00045
00046 return settings_instance_;
00047 }
00048
00049
00050
00051 void Settings::setValue(const QString& key, const QVariant& value)
00052 {
00053 q_settings_->setValue(key, value);
00054 }
00055
00056
00057
00058 void Settings::setValue(const std::string& key, const std::string& value)
00059 {
00060 QString qt_key = QString::fromStdString(key);
00061 QVariant qt_value = QString::fromStdString(value);
00062 setValue(qt_key, qt_value);
00063
00064 }
00065
00066
00067
00068 void Settings::setValue(const std::string& key, const int value)
00069 {
00070 QString qt_key = QString::fromStdString(key);
00071
00072 setValue(qt_key, value);
00073
00074 }
00075
00076
00077
00078 void Settings::setValue(const std::string& key, const double value)
00079 {
00080 QString qt_key = QString::fromStdString(key);
00081
00082 setValue(qt_key, value);
00083
00084 }
00085
00086
00087
00088 QVariant Settings::getValue(const QString& key, const QVariant& default_value) const
00089 {
00090 return(q_settings_->value(key, default_value));
00091 }
00092
00093
00094
00095 std::string Settings::getStringValue(const std::string& key, const std::string& default_value) const
00096 {
00097 QString qt_key = QString::fromStdString(key);
00098 QVariant qt_default_value = QString::fromStdString(default_value);
00099
00100 return ((getValue(qt_key, qt_default_value)).toString()).toStdString();
00101 }
00102
00103
00104
00105 int Settings::getIntValue(const std::string& key, const int default_value) const
00106 {
00107 QString qt_key = QString::fromStdString(key);
00108
00109
00110 return (getValue(qt_key, default_value)).toInt();
00111 }
00112
00113
00114
00115 double Settings::getDoubleValue(const std::string& key, const double default_value) const
00116 {
00117 QString qt_key = QString::fromStdString(key);
00118
00119
00120 return (getValue(qt_key, default_value)).toDouble();
00121 }
00122
00123
00124
00125 Settings::Settings()
00126 {
00127
00128
00129 #ifdef Q_OS_LINUX
00130 QString ini_path(getenv("HOME"));
00131 ini_path += "/.imedgine/";
00132 #endif
00133
00134 #ifdef Q_OS_WIN32
00135
00136 QString ini_path(getenv("APPDATA"));
00137 ini_path += "/imedgine/";
00138 #endif
00139
00140 #ifdef DEBUG
00141 std::cout << "Save path: " << ini_path.toStdString() << std::endl;
00142 #endif
00143
00144 QSettings::setPath(QSettings::IniFormat, QSettings::UserScope, ini_path);
00145 q_settings_ = new QSettings(QSettings::IniFormat,
00146 QSettings::UserScope, "imedgine.org", "imedgine");
00147 }
00148
00149
00150
00151 }