Timesheets-Server
Timesheets server
Načítám...
Vyhledávám...
Nebylo nic nalezeno
msettings.cpp
Zobrazit dokumentaci tohoto souboru.
1
7#include "msettings.h"
8#include "pdebug.h"
9#include <QCoreApplication>
10#include <QStringList>
11#include <QFileInfo>
12#include <QDir>
13
14MSettings *MSettings::m_mSettings = NULL;
15
16
17MSettings::~MSettings() {
18 m_mSettings = NULL;
19}
20
21
22MSettings::MSettings(const QString& filename, QObject *parent) : QSettings(filename, QSettings::NativeFormat, parent) {
23 m_mSettings = this;
24 setIniCodec("UTF-8");
25}
26
27
28void MSettings::setValue(const QString& key, const QVariant& value) {
29 QSettings::setValue(key, value);
30 sync();
31}
32
33
34QVariant MSettings::value(const QString& key, const QVariant& defaultValue) const {
35 return QSettings::value(key, defaultValue);
36}
37
38
48MSettings *MSettings::instance(QObject *parent) {
49 if (m_mSettings == NULL) {
50 Q_ASSERT(parent);
51
52 QString filename;
53
54 while (true) {
55
56 // Konfigurační soubor z povelové řádky
57 QString configFileName;
58 QStringList arguments = QCoreApplication::arguments();
59 for (int i=0; i<arguments.size(); i++) {
60 const QString& argument = arguments[i];
61 if (argument == "-C" && i<arguments.size()-1) {
62 configFileName = arguments[i+1];
63 PDEBUG << "trying" << configFileName;
64 }
65 }
66 if (!configFileName.isEmpty()) {
67 QFileInfo fileinfo(configFileName);
68 if (fileinfo.exists() && fileinfo.isReadable()) {
69 filename = configFileName;
70 break;
71 }
72 }
73
74
75 // Konfigurační soubor ~/.config/hobrasoft.cz/timesheet-server.conf
76 QFileInfo fileinfo1( QDir::homePath() + "/.config/hobrasoft.cz/timesheet-server.conf");
77 PDEBUG << "Testing: " << fileinfo1.filePath();
78 if (fileinfo1.exists() && fileinfo1.isReadable()) {
79 filename = fileinfo1.filePath();
80 break;
81 }
82
83 // Konfigurační soubor ~/.mdcv04ip.conf"
84 QFileInfo fileinfo2( QDir::homePath() + "/.timesheet-server.conf");
85 PDEBUG << "Testing: " << fileinfo2.filePath();
86 if (fileinfo2.exists() && fileinfo2.isReadable()) {
87 filename = fileinfo2.filePath();
88 break;
89 }
90
91
92 // "/etc/mdcv04ip.conf"
93 QFileInfo fileinfo3("/etc/timesheet-server.conf");
94 PDEBUG << "Testing: " << fileinfo3.filePath();
95 if (fileinfo3.exists() && fileinfo3.isReadable()) {
96 filename = fileinfo3.filePath();
97 break;
98 }
99
100 break;
101 }
102
103 PDEBUG << "Using configuration file: " << filename;
104 new MSettings(filename, parent);
105 }
106 return m_mSettings;
107}
108
109
Globální QSettings objekt.
Definition msettings.h:117
QVariant value(const QString &key, const QVariant &defaultValue=QVariant()) const
Vrátí hodnotu z konfiguračního souboru.
Definition msettings.cpp:34
static MSettings * instance(QObject *parent=NULL)
Vytváří signleton instanci třídy, vyhledá konfigurační soubor.
Definition msettings.cpp:48
MSettings(const QString &filename, QObject *parent)
Konstruktor, otevře zadaný soubor.
Definition msettings.cpp:22
void setValue(const QString &key, const QVariant &value)
Nastaví hodnotu v konfiguračním souboru.
Definition msettings.cpp:28