summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--library/config.cpp2
-rw-r--r--library/qpedialog.cpp2
2 files changed, 2 insertions, 2 deletions
diff --git a/library/config.cpp b/library/config.cpp
index 72bd4d2..73ddeb5 100644
--- a/library/config.cpp
+++ b/library/config.cpp
@@ -1,231 +1,231 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000,2004 Trolltech AS. All rights reserved. 2** Copyright (C) 2000,2004 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20 20
21#include <qdir.h> 21#include <qdir.h>
22#include <qmessagebox.h> 22#include <qmessagebox.h>
23#if QT_VERSION <= 230 && defined(QT_NO_CODECS) 23#if QT_VERSION <= 230 && defined(QT_NO_CODECS)
24#include <qtextcodec.h> 24#include <qtextcodec.h>
25#endif 25#endif
26#include <qtextstream.h> 26#include <qtextstream.h>
27 27
28#include <sys/stat.h> 28#include <sys/stat.h>
29#include <sys/types.h> 29#include <sys/types.h>
30#include <sys/time.h> 30#include <sys/time.h>
31#include <fcntl.h> 31#include <fcntl.h>
32#include <stdlib.h> 32#include <stdlib.h>
33#include <time.h> 33#include <time.h>
34#include <unistd.h> 34#include <unistd.h>
35 35
36#define QTOPIA_INTERNAL_LANGLIST 36#define QTOPIA_INTERNAL_LANGLIST
37#include "config.h" 37#include "config.h"
38#include "global.h" 38#include "global.h"
39#include "qpeapplication.h" 39#include <qtopia/qpeapplication.h>
40 40
41 41
42/* 42/*
43 * Internal Class 43 * Internal Class
44 */ 44 */
45class ConfigPrivate { 45class ConfigPrivate {
46public: 46public:
47 ConfigPrivate() : multilang(FALSE) {} 47 ConfigPrivate() : multilang(FALSE) {}
48 ConfigPrivate(const ConfigPrivate& o) : 48 ConfigPrivate(const ConfigPrivate& o) :
49 trfile(o.trfile), 49 trfile(o.trfile),
50 trcontext(o.trcontext), 50 trcontext(o.trcontext),
51 multilang(o.multilang) 51 multilang(o.multilang)
52 {} 52 {}
53 ConfigPrivate& operator=(const ConfigPrivate& o) 53 ConfigPrivate& operator=(const ConfigPrivate& o)
54 { 54 {
55 trfile = o.trfile; 55 trfile = o.trfile;
56 trcontext = o.trcontext; 56 trcontext = o.trcontext;
57 multilang = o.multilang; 57 multilang = o.multilang;
58 return *this; 58 return *this;
59 } 59 }
60 60
61 QString trfile; 61 QString trfile;
62 QCString trcontext; 62 QCString trcontext;
63 bool multilang; 63 bool multilang;
64}; 64};
65 65
66///////////////////////////////////////////////////////////////// 66/////////////////////////////////////////////////////////////////
67///////////////////////////////////////////////////////////////// 67/////////////////////////////////////////////////////////////////
68 68
69#ifndef Q_OS_WIN32 69#ifndef Q_OS_WIN32
70 70
71//#define DEBUG_CONFIG_CACHE 71//#define DEBUG_CONFIG_CACHE
72class ConfigData 72class ConfigData
73{ 73{
74public: 74public:
75 ConfigData() {} 75 ConfigData() {}
76 ConfigData( const ConfigGroupMap& cf, const ConfigPrivate& pri, 76 ConfigData( const ConfigGroupMap& cf, const ConfigPrivate& pri,
77 struct stat sbuf ) 77 struct stat sbuf )
78 : cfg( cf ), priv( pri ), mtime( sbuf.st_mtime ), 78 : cfg( cf ), priv( pri ), mtime( sbuf.st_mtime ),
79 size( sbuf.st_size ) 79 size( sbuf.st_size )
80 { 80 {
81 gettimeofday(&used, 0 ); 81 gettimeofday(&used, 0 );
82 } 82 }
83 83
84 ConfigGroupMap cfg; 84 ConfigGroupMap cfg;
85 ConfigPrivate priv; // Owned by this object 85 ConfigPrivate priv; // Owned by this object
86 time_t mtime; 86 time_t mtime;
87 unsigned int size; 87 unsigned int size;
88 struct timeval used; 88 struct timeval used;
89}; 89};
90 90
91 91
92class ConfigCache : public QObject { 92class ConfigCache : public QObject {
93public: 93public:
94 static ConfigCache* instance(); 94 static ConfigCache* instance();
95 95
96 void insert( const QString& fileName, const ConfigGroupMap& cfg, 96 void insert( const QString& fileName, const ConfigGroupMap& cfg,
97 const ConfigPrivate *priv ); 97 const ConfigPrivate *priv );
98 bool find(const QString& fileName, ConfigGroupMap& cfg, 98 bool find(const QString& fileName, ConfigGroupMap& cfg,
99 ConfigPrivate** priv ); 99 ConfigPrivate** priv );
100protected: 100protected:
101 void timerEvent( QTimerEvent* ); 101 void timerEvent( QTimerEvent* );
102 102
103private: 103private:
104 ConfigCache(); 104 ConfigCache();
105 void remove( const QString& fileName ); 105 void remove( const QString& fileName );
106 void removeLru(); 106 void removeLru();
107 107
108private: 108private:
109 QMap<QString, ConfigData> m_cached; 109 QMap<QString, ConfigData> m_cached;
110 unsigned int m_totalSize; 110 unsigned int m_totalSize;
111 int m_tid; 111 int m_tid;
112private: 112private:
113 static ConfigCache* m_inst; 113 static ConfigCache* m_inst;
114 static const unsigned int CONFIG_CACHE_SIZE = 8192; 114 static const unsigned int CONFIG_CACHE_SIZE = 8192;
115 static const unsigned int CONFIG_CACHE_TIMEOUT = 1000; 115 static const unsigned int CONFIG_CACHE_TIMEOUT = 1000;
116}; 116};
117 117
118ConfigCache* ConfigCache::m_inst = 0; 118ConfigCache* ConfigCache::m_inst = 0;
119/* 119/*
120 * get destroyed when qApp gets destroyed 120 * get destroyed when qApp gets destroyed
121 */ 121 */
122ConfigCache::ConfigCache() : QObject( qApp ), m_totalSize( 0 ), m_tid( 0 ) {} 122ConfigCache::ConfigCache() : QObject( qApp ), m_totalSize( 0 ), m_tid( 0 ) {}
123ConfigCache* ConfigCache::instance() { 123ConfigCache* ConfigCache::instance() {
124 if ( !m_inst ) 124 if ( !m_inst )
125 m_inst = new ConfigCache(); 125 m_inst = new ConfigCache();
126 126
127 return m_inst; 127 return m_inst;
128} 128}
129 129
130void ConfigCache::remove( const QString& fileName ) { 130void ConfigCache::remove( const QString& fileName ) {
131 QMap<QString, ConfigData>::Iterator it = m_cached.find( fileName ); 131 QMap<QString, ConfigData>::Iterator it = m_cached.find( fileName );
132 132
133 if ( it == m_cached.end() ) 133 if ( it == m_cached.end() )
134 return; 134 return;
135 135
136 m_totalSize -= (*it).size; 136 m_totalSize -= (*it).size;
137 m_cached.remove( it ); 137 m_cached.remove( it );
138} 138}
139 139
140void ConfigCache::removeLru() { 140void ConfigCache::removeLru() {
141 QMap<QString, ConfigData>::Iterator it = m_cached.begin(); 141 QMap<QString, ConfigData>::Iterator it = m_cached.begin();
142 QMap<QString, ConfigData>::Iterator lru = it; 142 QMap<QString, ConfigData>::Iterator lru = it;
143 ++it; 143 ++it;
144 for (; it != m_cached.end(); ++it) 144 for (; it != m_cached.end(); ++it)
145 if ((*it).used.tv_sec < (*lru).used.tv_sec || 145 if ((*it).used.tv_sec < (*lru).used.tv_sec ||
146 ((*it).used.tv_sec == (*lru).used.tv_sec && 146 ((*it).used.tv_sec == (*lru).used.tv_sec &&
147 (*it).used.tv_usec < (*lru).used.tv_usec)) 147 (*it).used.tv_usec < (*lru).used.tv_usec))
148 lru = it; 148 lru = it;
149 149
150 m_totalSize -= (*lru).size; 150 m_totalSize -= (*lru).size;
151 m_cached.remove(lru); 151 m_cached.remove(lru);
152} 152}
153 153
154void ConfigCache::timerEvent( QTimerEvent* ) { 154void ConfigCache::timerEvent( QTimerEvent* ) {
155 while ( m_totalSize > CONFIG_CACHE_SIZE ) 155 while ( m_totalSize > CONFIG_CACHE_SIZE )
156 removeLru(); 156 removeLru();
157 157
158 killTimer(m_tid); 158 killTimer(m_tid);
159 m_tid = 0; 159 m_tid = 0;
160} 160}
161 161
162void ConfigCache::insert( const QString& fileName, const ConfigGroupMap& cfg, 162void ConfigCache::insert( const QString& fileName, const ConfigGroupMap& cfg,
163 const ConfigPrivate* _priv ) { 163 const ConfigPrivate* _priv ) {
164 164
165 165
166 struct stat sbuf; 166 struct stat sbuf;
167 ::stat( QFile::encodeName(fileName), &sbuf ); 167 ::stat( QFile::encodeName(fileName), &sbuf );
168 if ( static_cast<unsigned int>(sbuf.st_size) >= CONFIG_CACHE_SIZE>>1) 168 if ( static_cast<unsigned int>(sbuf.st_size) >= CONFIG_CACHE_SIZE>>1)
169 return; 169 return;
170 170
171 /* 171 /*
172 * remove the old version and use the new one 172 * remove the old version and use the new one
173 */ 173 */
174 ConfigPrivate priv = _priv ? *_priv : ConfigPrivate(); 174 ConfigPrivate priv = _priv ? *_priv : ConfigPrivate();
175 ConfigData data( cfg, priv, sbuf ); 175 ConfigData data( cfg, priv, sbuf );
176 m_totalSize += data.size; 176 m_totalSize += data.size;
177 177
178 remove( fileName ); 178 remove( fileName );
179 m_cached.insert( fileName, data ); 179 m_cached.insert( fileName, data );
180 180
181 /* 181 /*
182 * we've overcommited allocation, let us clean up 182 * we've overcommited allocation, let us clean up
183 * soon 183 * soon
184 */ 184 */
185 if ( m_totalSize >= CONFIG_CACHE_SIZE ) 185 if ( m_totalSize >= CONFIG_CACHE_SIZE )
186 if ( !m_tid ) 186 if ( !m_tid )
187 m_tid = startTimer(CONFIG_CACHE_TIMEOUT); 187 m_tid = startTimer(CONFIG_CACHE_TIMEOUT);
188} 188}
189 189
190bool ConfigCache::find( const QString& fileName, ConfigGroupMap& cfg, 190bool ConfigCache::find( const QString& fileName, ConfigGroupMap& cfg,
191 ConfigPrivate **ppriv ) { 191 ConfigPrivate **ppriv ) {
192 QMap<QString, ConfigData>::Iterator it = m_cached.find(fileName); 192 QMap<QString, ConfigData>::Iterator it = m_cached.find(fileName);
193 if (it != m_cached.end()) { 193 if (it != m_cached.end()) {
194 ConfigData &data = *it; 194 ConfigData &data = *it;
195 struct stat sbuf; 195 struct stat sbuf;
196 ::stat(QFile::encodeName( fileName ), &sbuf); 196 ::stat(QFile::encodeName( fileName ), &sbuf);
197 197
198 if (data.mtime == sbuf.st_mtime && (int)data.size == sbuf.st_size) { 198 if (data.mtime == sbuf.st_mtime && (int)data.size == sbuf.st_size) {
199 cfg = data.cfg; 199 cfg = data.cfg;
200 200
201 /* 201 /*
202 * null pointer 202 * null pointer
203 */ 203 */
204 if ( *ppriv == 0 ) 204 if ( *ppriv == 0 )
205 *ppriv = new ConfigPrivate( data.priv ); 205 *ppriv = new ConfigPrivate( data.priv );
206 **ppriv = data.priv; 206 **ppriv = data.priv;
207 gettimeofday(&data.used, 0); 207 gettimeofday(&data.used, 0);
208 208
209 return true; 209 return true;
210 } 210 }
211 } 211 }
212 212
213 return false; 213 return false;
214} 214}
215 215
216#endif 216#endif
217 217
218 218
219/*! 219/*!
220 \internal 220 \internal
221*/ 221*/
222QString Config::configFilename(const QString& name, Domain d) 222QString Config::configFilename(const QString& name, Domain d)
223{ 223{
224 switch (d) { 224 switch (d) {
225 case File: 225 case File:
226 return name; 226 return name;
227 case User: { 227 case User: {
228 QDir dir = (QString(getenv("HOME")) + "/Settings"); 228 QDir dir = (QString(getenv("HOME")) + "/Settings");
229 if ( !dir.exists() ) 229 if ( !dir.exists() )
230 mkdir(dir.path().local8Bit(),0700); 230 mkdir(dir.path().local8Bit(),0700);
231 return dir.path() + "/" + name + ".conf"; 231 return dir.path() + "/" + name + ".conf";
diff --git a/library/qpedialog.cpp b/library/qpedialog.cpp
index f52171f..8da0ca6 100644
--- a/library/qpedialog.cpp
+++ b/library/qpedialog.cpp
@@ -1,84 +1,84 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. 2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of the Qtopia Environment. 4** This file is part of the Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20 20
21#include "qpedialog.h" 21#include "qpedialog.h"
22 22
23#include <qdialog.h> 23#include <qdialog.h>
24 24
25#include <qpeapplication.h> 25#include <qtopia/qpeapplication.h>
26 26
27 27
28// Allow access to nornally protected accept and reject functions 28// Allow access to nornally protected accept and reject functions
29class HackedPrivateQDialog : public QDialog{ 29class HackedPrivateQDialog : public QDialog{
30public: 30public:
31 void accept() { QDialog::accept();} 31 void accept() { QDialog::accept();}
32 void reject() { QDialog::reject();} 32 void reject() { QDialog::reject();}
33}; 33};
34 34
35 35
36/** 36/**
37 * \brief This is the only c'tor. 37 * \brief This is the only c'tor.
38 * 38 *
39 * The parent of this Listener is the Dialog you pass. This means once 39 * The parent of this Listener is the Dialog you pass. This means once
40 * the dialog is deleted this listener will be deleted too. 40 * the dialog is deleted this listener will be deleted too.
41 * This Listener listens on QPEApplication::appMessage signal and implements 41 * This Listener listens on QPEApplication::appMessage signal and implements
42 * accept() and reject(). 42 * accept() and reject().
43 * 43 *
44 * \code 44 * \code
45 *QDialog *dialog = new YourDialog(); 45 *QDialog *dialog = new YourDialog();
46 (void)new QPEDialogListener(dialog); 46 (void)new QPEDialogListener(dialog);
47 if( QPEApplication::execDialog(dialog) == QDialog::Accept ){ 47 if( QPEApplication::execDialog(dialog) == QDialog::Accept ){
48 // do some stuff 48 // do some stuff
49 } 49 }
50 delete dialog; 50 delete dialog;
51 51
52 * \endcode 52 * \endcode
53 * 53 *
54 * @param di The dialog to handle 54 * @param di The dialog to handle
55 */ 55 */
56QPEDialogListener::QPEDialogListener(QDialog *di ) : QObject(di) 56QPEDialogListener::QPEDialogListener(QDialog *di ) : QObject(di)
57{ 57{
58 dialog = di; 58 dialog = di;
59 connect(qApp, SIGNAL(appMessage(const QCString&,const QByteArray&)), 59 connect(qApp, SIGNAL(appMessage(const QCString&,const QByteArray&)),
60 this, SLOT(appMessage(const QCString&,const QByteArray&)) ); 60 this, SLOT(appMessage(const QCString&,const QByteArray&)) );
61} 61}
62 62
63 63
64/** 64/**
65 * d'tor 65 * d'tor
66 */ 66 */
67QPEDialogListener::~QPEDialogListener() {} 67QPEDialogListener::~QPEDialogListener() {}
68 68
69/** 69/**
70 * \internal 70 * \internal
71 */ 71 */
72void QPEDialogListener::appMessage( const QCString &msg, const QByteArray & ) 72void QPEDialogListener::appMessage( const QCString &msg, const QByteArray & )
73{ 73{
74 if (!dialog) 74 if (!dialog)
75 return; 75 return;
76 76
77 HackedPrivateQDialog *hackedDialog = static_cast<HackedPrivateQDialog*>(dialog); 77 HackedPrivateQDialog *hackedDialog = static_cast<HackedPrivateQDialog*>(dialog);
78 78
79 if (msg == "accept()") { 79 if (msg == "accept()") {
80 hackedDialog->accept(); 80 hackedDialog->accept();
81 } else if (msg == "reject()") { 81 } else if (msg == "reject()") {
82 hackedDialog->reject(); 82 hackedDialog->reject();
83 } 83 }
84} 84}