KVIrc 5.2.6
Developer APIs
KviConfigurationFile.h
Go to the documentation of this file.
1#ifndef _KVI_CONFIG_H_INCLUDED_
2#define _KVI_CONFIG_H_INCLUDED_
3
4//=============================================================================
5//
6// File : KviConfigurationFile.h
7// Creation date : Thu Jan 14 1999 18:01:22 by Szymon Stefanek
8//
9// This file is part of the KVIrc IRC client distribution
10// Copyright (C) 1999-2010 Szymon Stefanek (pragma at kvirc dot net)
11//
12// This program is FREE software. You can redistribute it and/or
13// modify it under the terms of the GNU General Public License
14// as published by the Free Software Foundation; either version 2
15// of the License, or (at your option) any later version.
16//
17// This program is distributed in the HOPE that it will be USEFUL,
18// but WITHOUT ANY WARRANTY; without even the implied warranty of
19// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
20// See the GNU General Public License for more details.
21//
22// You should have received a copy of the GNU General Public License
23// along with this program. If not, write to the Free Software Foundation,
24// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
25//
26//=============================================================================
27
28#include "kvi_settings.h"
29#include "KviCString.h"
30#include "KviHeapObject.h"
31#include "KviPointerHashTable.h"
32
33#include <QList>
34#include <QFont>
35#include <QString>
36#include <QStringList>
37
38#define KVI_CONFIG_DEFAULT_GROUP "KVIrc"
39
40class KviPixmap;
42class QColor;
43class QRect;
44
48
50{
51public:
53 {
54 Read = 1,
55 Write = 2,
57 };
58
59public:
60 KviConfigurationFile(const QString & filename, FileMode f /* = ReadWrite*/, bool bLocal8Bit = false);
61 KviConfigurationFile(const char * filename, FileMode f /* = ReadWrite*/, bool bLocal8Bit = false);
63
64private:
67 QString m_szFileName;
70 QString m_szGroup;
73
74private:
75 bool load();
76 bool save();
78
79public:
80 //
81 // Useful when saving...
82 // Normally this class does not save empty groups
83 // and setGroup() is never a config modification.
84 // If the group is not existing it will be effectively
85 // created only at the first attempt to read from it or write to it.
86 // With this flag set to true the KviConfigurationFile class will
87 // write down also the empty groups, and calls to setGroup()
88 // will create the groups if not existing yet (and set the config data
89 // as modified).
90 //
91 void preserveEmptyGroups(bool bPreserve) { m_bPreserveEmptyGroups = bPreserve; };
92 const QString & fileName() { return m_szFileName; };
93 bool readOnly() { return m_bReadOnly; };
94 void setReadOnly(bool bReadOnly) { m_bReadOnly = bReadOnly; };
95 bool dirty() { return m_bDirty; };
96 bool saveIfDirty();
97
98 //
99 // This sets the save path for the config file
100 // In this way you can load a system-wide read-only config file
101 // as default configuration, alter its settings and save it to the
102 // user local configuration directory
103 void setSavePath(const QString & savePath) { m_szFileName = savePath; };
105
106 void clearDirtyFlag() { m_bDirty = false; };
107 void clear();
108 void clearGroup(const QString & szGroup);
109 void clearKey(const QString & szKey);
110 unsigned int groupsCount() { return m_pDict->count(); };
111 bool sync() { return save(); };
112 bool hasKey(const QString & szKey);
113 bool hasGroup(const QString & szGroup);
114 void setGroup(const QString & szGroup);
115 //void getContentsString(KviCString &buffer);
116 const QString & group() { return m_szGroup; };
117 void writeEntry(const QString & szKey, const QString & szValue);
118 void writeEntry(const QString & szKey, const char * szValue)
119 {
120 writeEntry(szKey, QString::fromUtf8(szValue));
121 };
122 QString readEntry(const QString & szKey, const QString & szDefault = QString());
123 // HACK for KviOptions.. (FIXME)
124 QString readKviCStringEntry(const QString & szKey, const KviCString & szDefault)
125 {
126 return readEntry(szKey, szDefault.ptr());
127 };
128 //void writeEntry(const char *szKey,KviCString &szValue);
129 //const char * readEntry(const char *szKey,KviCString &szDefault);
130 void writeEntry(const QString & szKey, const KviPixmap & pixmap);
131 KviPixmap readPixmapEntry(const QString & szKey, const KviPixmap & pixDef);
132 void writeEntry(const QString & szKey, const KviMessageTypeSettings & msg);
133 KviMessageTypeSettings readMsgTypeEntry(const QString & szKey, const KviMessageTypeSettings & msgDef);
134 void writeEntry(const QString & szKey, const QColor & clr);
135 QColor readColorEntry(const QString & szKey, const QColor & clr);
136 void writeEntry(const QString & szKey, QFont & fnt);
137 QFont readFontEntry(const QString & szKey, const QFont & fnt);
138 void writeEntry(const QString & szKey, bool bTrue);
139 bool readBoolEntry(const QString & szKey, bool bTrue);
140 QRect readRectEntry(const QString & szKey, const QRect & rct);
141 void writeEntry(const QString & szKey, const QRect & rct);
142 QStringList readStringListEntry(const QString & szKey, const QStringList & list = QStringList());
143 void writeEntry(const QString & szKey, const QStringList & list);
144 QList<int> readIntListEntry(const QString &, const QList<int> & list);
145 void writeEntry(const QString & szKey, const QList<int> & list);
146 //void writeEntry(const char *szKey,unsigned long lValue);
147 //unsigned long readULongEntry(const char *szKey,unsigned long lDefault);
148 //void writeEntry(const char *szKey,long lValue);
149 //long readLongEntry(const char *szKey,long lDefault);
150 void writeEntry(const QString & szKey, int iValue);
151 int readIntEntry(const QString & szKey, int iDefault);
152 void writeEntry(const QString & szKey, unsigned short int usValue);
153 unsigned short int readUShortEntry(const QString & szKey, unsigned short int usDefault);
154 void writeEntry(const QString & szKey, unsigned int iValue);
155 unsigned int readUIntEntry(const QString & szKey, unsigned int iDefault);
156 void writeEntry(const QString & szKey, char iValue);
157 char readCharEntry(const QString & szKey, char iDefault);
158 void writeEntry(const QString & szKey, unsigned char iValue);
159 unsigned char readUCharEntry(const QString & szKey, unsigned char iDefault);
160
161 static void getFontProperties(KviCString & buffer, QFont * fnt);
162 static void setFontProperties(KviCString & str, QFont * fnt);
163
164};
165
166#endif
KviPointerHashTable< QString, QString > KviConfigurationFileGroup
Definition KviConfigurationFile.h:45
KviPointerHashTableIterator< QString, QString > KviConfigurationFileGroupIterator
Definition KviConfigurationFile.h:46
KviPointerHashTableIterator< QString, KviConfigurationFileGroup > KviConfigurationFileIterator
Definition KviConfigurationFile.h:47
Heap Object.
Pointer Hash Table.
btnDict clear()
Definition KviCString.h:102
char * ptr() const
Definition KviCString.h:163
Definition KviConfigurationFile.h:50
unsigned int groupsCount()
Definition KviConfigurationFile.h:110
const QString & fileName()
Definition KviConfigurationFile.h:92
bool readOnly()
Definition KviConfigurationFile.h:93
void writeEntry(const QString &szKey, const QString &szValue)
Definition KviConfigurationFile.cpp:502
void preserveEmptyGroups(bool bPreserve)
Definition KviConfigurationFile.h:91
bool m_bPreserveEmptyGroups
Definition KviConfigurationFile.h:71
FileMode
Definition KviConfigurationFile.h:53
@ Write
Definition KviConfigurationFile.h:55
@ Read
Definition KviConfigurationFile.h:54
@ ReadWrite
Definition KviConfigurationFile.h:56
bool dirty()
Definition KviConfigurationFile.h:95
bool m_bLocal8Bit
Definition KviConfigurationFile.h:65
void clearDirtyFlag()
Definition KviConfigurationFile.h:106
KviConfigurationFile(const QString &filename, FileMode f, bool bLocal8Bit=false)
Definition KviConfigurationFile.cpp:37
QString readKviCStringEntry(const QString &szKey, const KviCString &szDefault)
Definition KviConfigurationFile.h:124
bool sync()
Definition KviConfigurationFile.h:111
bool save()
Definition KviConfigurationFile.cpp:346
QString m_szGroup
Definition KviConfigurationFile.h:70
void writeEntry(const QString &szKey, const char *szValue)
Definition KviConfigurationFile.h:118
bool m_bReadOnly
Definition KviConfigurationFile.h:72
const QString & group()
Definition KviConfigurationFile.h:116
QString m_szFileName
Definition KviConfigurationFile.h:67
KviPointerHashTable< QString, KviConfigurationFileGroup > * dict()
Definition KviConfigurationFile.h:104
void setSavePath(const QString &savePath)
Definition KviConfigurationFile.h:103
QString readEntry(const QString &szKey, const QString &szDefault=QString())
Definition KviConfigurationFile.cpp:510
bool m_bDirty
Definition KviConfigurationFile.h:68
QString m_szStrBuffer
Definition KviConfigurationFile.h:69
KviConfigurationFileGroup * getCurrentGroup()
Definition KviConfigurationFile.cpp:483
void setReadOnly(bool bReadOnly)
Definition KviConfigurationFile.h:94
bool load()
Definition KviConfigurationFile.cpp:100
KviPointerHashTable< QString, KviConfigurationFileGroup > * m_pDict
Definition KviConfigurationFile.h:66
Definition KviHeapObject.h:119
Definition KviMessageTypeSettings.h:47
Definition KviPixmap.h:35
A fast pointer hash table iterator implementation.
Definition KviPointerHashTable.h:967
A fast pointer hash table implementation.
Definition KviPointerHashTable.h:450
#define f
Definition detector.cpp:71
This file contains compile time settings.
#define KVILIB_API
Definition kvi_settings.h:124