summaryrefslogtreecommitdiff
authorerik <erik>2007-01-10 17:24:23 (UTC)
committer erik <erik>2007-01-10 17:24:23 (UTC)
commite7d3e1d0f3c75979c01ea6373ed3c80d0c986000 (patch) (unidiff)
tree34a6e8aa3de82f07c0531e59f375da216fbfb97a
parent51bd5e8d542372ad54898ce642fe9b82b8ba83f3 (diff)
downloadopie-e7d3e1d0f3c75979c01ea6373ed3c80d0c986000.zip
opie-e7d3e1d0f3c75979c01ea6373ed3c80d0c986000.tar.gz
opie-e7d3e1d0f3c75979c01ea6373ed3c80d0c986000.tar.bz2
All of the files in this commit have an inheritance member function
mismatch correction. None are serious, but all would have been improperly mislinked in the inheritance hierarchy if attempted to be used.
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/pim/datebook/holiday/national/nationalcfg.cpp2
-rw-r--r--core/pim/datebook/holiday/national/nationalcfg.h2
-rw-r--r--inputmethods/handwriting/qimpenwidget.cpp2
-rw-r--r--inputmethods/handwriting/qimpenwidget.h2
-rw-r--r--libopie2/opiepim/backend/odatebookaccessbackend_xml.cpp2
-rw-r--r--libopie2/opiepim/backend/odatebookaccessbackend_xml.h2
-rw-r--r--library/lightstyle.cpp8
-rw-r--r--library/lightstyle.h8
8 files changed, 14 insertions, 14 deletions
diff --git a/core/pim/datebook/holiday/national/nationalcfg.cpp b/core/pim/datebook/holiday/national/nationalcfg.cpp
index f71c833..33e9db3 100644
--- a/core/pim/datebook/holiday/national/nationalcfg.cpp
+++ b/core/pim/datebook/holiday/national/nationalcfg.cpp
@@ -1,371 +1,371 @@
1#include "nationalcfg.h" 1#include "nationalcfg.h"
2 2
3#include <opie2/odebug.h> 3#include <opie2/odebug.h>
4 4
5#include <qfile.h> 5#include <qfile.h>
6 6
7static QString _key_desc="description"; 7static QString _key_desc="description";
8static QString _key_doc="nationaldays"; 8static QString _key_doc="nationaldays";
9static QString _key_list="entries"; 9static QString _key_list="entries";
10static QString _key_entry="entry"; 10static QString _key_entry="entry";
11static QString _key_calc="calculation"; 11static QString _key_calc="calculation";
12 12
13static QString _content_type="type"; 13static QString _content_type="type";
14static QString _content_float="floating"; 14static QString _content_float="floating";
15static QString _content_fix="fix"; 15static QString _content_fix="fix";
16 16
17static QString _content_name="name"; 17static QString _content_name="name";
18static QString _content_value="value"; 18static QString _content_value="value";
19 19
20static QString _content_date="date"; 20static QString _content_date="date";
21static QString _content_weekd="weekday"; 21static QString _content_weekd="weekday";
22static QString _content_offset="offset"; 22static QString _content_offset="offset";
23static QString _content_dayofmonth="dayofmonth"; 23static QString _content_dayofmonth="dayofmonth";
24static QString _content_datedep="datedep"; 24static QString _content_datedep="datedep";
25static QString _content_month="month"; 25static QString _content_month="month";
26 26
27NHcfg::NHcfg() 27NHcfg::NHcfg()
28 :QXmlDefaultHandler(),err(""),_path("") 28 :QXmlDefaultHandler(),err(""),_path("")
29{ 29{
30} 30}
31 31
32NHcfg::~NHcfg() 32NHcfg::~NHcfg()
33{ 33{
34} 34}
35 35
36bool NHcfg::load(const QString&aPath) 36bool NHcfg::load(const QString&aPath)
37{ 37{
38 _path=aPath; 38 _path=aPath;
39 stage = 0; 39 stage = 0;
40 QFile *f=new QFile(_path); 40 QFile *f=new QFile(_path);
41 if (!f) { 41 if (!f) {
42 oerr << "Could not open file" << oendl; 42 oerr << "Could not open file" << oendl;
43 return false; 43 return false;
44 } 44 }
45 QXmlInputSource is(*f); 45 QXmlInputSource is(*f);
46 QXmlSimpleReader reader; 46 QXmlSimpleReader reader;
47 reader.setContentHandler(this); 47 reader.setContentHandler(this);
48 reader.setErrorHandler(this); 48 reader.setErrorHandler(this);
49 49
50 currentFixList.clear(); 50 currentFixList.clear();
51 currentFloatList.clear(); 51 currentFloatList.clear();
52 counter = 0; 52 counter = 0;
53 level = 0; 53 level = 0;
54 54
55 err = ""; 55 err = "";
56 bool ret = reader.parse(is); 56 bool ret = reader.parse(is);
57 if (err.length()>0) 57 if (err.length()>0)
58 odebug << "Errors: " << err << oendl; 58 odebug << "Errors: " << err << oendl;
59 return ret; 59 return ret;
60} 60}
61 61
62const tentrylist&NHcfg::fixDates()const 62const tentrylist&NHcfg::fixDates()const
63{ 63{
64 return currentFixList; 64 return currentFixList;
65} 65}
66 66
67const tentrylist&NHcfg::floatingDates()const 67const tentrylist&NHcfg::floatingDates()const
68{ 68{
69 return currentFloatList; 69 return currentFloatList;
70} 70}
71 71
72bool NHcfg::warning(const QXmlParseException& e) 72bool NHcfg::warning(const QXmlParseException& e)
73{ 73{
74 QString tmp; 74 QString tmp;
75 75
76 tmp.sprintf("%d: warning: %s\n", e.lineNumber(), 76 tmp.sprintf("%d: warning: %s\n", e.lineNumber(),
77 (const char*) e.message().utf8()); 77 (const char*) e.message().utf8());
78 78
79 err += tmp; 79 err += tmp;
80 80
81 return true; 81 return true;
82} 82}
83 83
84bool NHcfg::error(const QXmlParseException& e) 84bool NHcfg::error(const QXmlParseException& e)
85{ 85{
86 QString tmp; 86 QString tmp;
87 87
88 tmp.sprintf("%d: error: %s\n", e.lineNumber(), 88 tmp.sprintf("%d: error: %s\n", e.lineNumber(),
89 (const char*) e.message().utf8()); 89 (const char*) e.message().utf8());
90 90
91 err += tmp; 91 err += tmp;
92 92
93 return true; 93 return true;
94} 94}
95 95
96bool NHcfg::fatalError(const QXmlParseException& e) 96bool NHcfg::fatalError(const QXmlParseException& e)
97{ 97{
98 QString tmp; 98 QString tmp;
99 99
100 tmp.sprintf("%d: fatal error: %s\n", e.lineNumber(), 100 tmp.sprintf("%d: fatal error: %s\n", e.lineNumber(),
101 (const char*) e.message().utf8()); 101 (const char*) e.message().utf8());
102 102
103 err += tmp; 103 err += tmp;
104 104
105 return false; 105 return false;
106} 106}
107 107
108bool NHcfg::startElement(const QString&, const QString&,const QString& name, const QXmlAttributes& attr) 108bool NHcfg::startElement(const QString&, const QString&,const QString& name, const QXmlAttributes& attr)
109{ 109{
110 bool ret = false; 110 bool ret = false;
111 if (name==_key_doc) { 111 if (name==_key_doc) {
112 stage = 1; 112 stage = 1;
113 return true; 113 return true;
114 } 114 }
115 if (stage == 0) { 115 if (stage == 0) {
116 err = "This is not a national holiday config file"; 116 err = "This is not a national holiday config file";
117 return false; 117 return false;
118 } 118 }
119 if (name==_key_desc) { 119 if (name==_key_desc) {
120 stage = 2; 120 stage = 2;
121 ret = setName(attr); 121 ret = setName(attr);
122 return ret; 122 return ret;
123 } 123 }
124 if (stage<2) {return false;} 124 if (stage<2) {return false;}
125 if (name==_key_list) {stage=3;return true;} 125 if (name==_key_list) {stage=3;return true;}
126 126
127 if (stage<3) {return false;} 127 if (stage<3) {return false;}
128 128
129 if (name==_key_entry) { 129 if (name==_key_entry) {
130 ++level; 130 ++level;
131 ++counter; 131 ++counter;
132 m_currentEntry = NHentry(); 132 m_currentEntry = NHentry();
133 // odebug << "Level == " << level << oendl; 133 // odebug << "Level == " << level << oendl;
134 } 134 }
135 if (name==_key_calc) { 135 if (name==_key_calc) {
136 ++level; 136 ++level;
137// odebug << "Level == " << level << oendl; 137// odebug << "Level == " << level << oendl;
138 return true; 138 return true;
139 } 139 }
140 if (level == 1) { 140 if (level == 1) {
141 return parsevalue(name,attr); 141 return parsevalue(name,attr);
142 } else if (level >= 2) { 142 } else if (level >= 2) {
143 return parseCalc(name,attr); 143 return parseCalc(name,attr);
144 } 144 }
145} 145}
146 146
147bool NHcfg::setName(const QXmlAttributes&attr) 147bool NHcfg::setName(const QXmlAttributes&attr)
148{ 148{
149 int nindx = attr.index("value"); 149 int nindx = attr.index("value");
150 if (nindx==-1) { 150 if (nindx==-1) {
151 return false; 151 return false;
152 } 152 }
153 _contentname = attr.value(nindx); 153 _contentname = attr.value(nindx);
154 return true; 154 return true;
155} 155}
156 156
157bool NHcfg::parsevalue(const QString&name,const QXmlAttributes&attr) 157bool NHcfg::parsevalue(const QString&name,const QXmlAttributes&attr)
158{ 158{
159 if (name != _key_entry && name != _key_calc) {err = QString("Not a valid entry (%1)").arg(name); return false;} 159 if (name != _key_entry && name != _key_calc) {err = QString("Not a valid entry (%1)").arg(name); return false;}
160 160
161 int nindex = attr.index(_content_name); 161 int nindex = attr.index(_content_name);
162 int dindex = attr.index(_content_date); 162 int dindex = attr.index(_content_date);
163 int tindex = attr.index(_content_type); 163 int tindex = attr.index(_content_type);
164 164
165 if (nindex == -1) { 165 if (nindex == -1) {
166 err = QString("Listentry %1 is invalid (name missing)").arg(counter); 166 err = QString("Listentry %1 is invalid (name missing)").arg(counter);
167 return false; 167 return false;
168 } 168 }
169 m_currentEntry.setName(attr.value(nindex)); 169 m_currentEntry.setName(attr.value(nindex));
170 170
171 if (tindex != -1 && attr.value(tindex)==_content_float) { 171 if (tindex != -1 && attr.value(tindex)==_content_float) {
172 m_currentEntry.setType(NHentry::floating); 172 m_currentEntry.setType(NHentry::floating);
173 return true; 173 return true;
174 } 174 }
175 175
176 if (dindex == -1) { 176 if (dindex == -1) {
177 err = QString("Listentry %1 is invalid ").arg(counter);return false; 177 err = QString("Listentry %1 is invalid ").arg(counter);return false;
178 } 178 }
179 179
180 QString txt = attr.value(nindex); 180 QString txt = attr.value(nindex);
181 QString dstring = attr.value(dindex); 181 QString dstring = attr.value(dindex);
182 QStringList e = QStringList::split("-",dstring); 182 QStringList e = QStringList::split("-",dstring);
183 if (e.count()!=2){err=QString("Datestring %1 is invalid (entry %2)").arg(dstring).arg(counter);return false;} 183 if (e.count()!=2){err=QString("Datestring %1 is invalid (entry %2)").arg(dstring).arg(counter);return false;}
184 QDate d(0,e[0].toInt(),e[1].toInt()); 184 QDate d(0,e[0].toInt(),e[1].toInt());
185 m_currentEntry.setDate(d); 185 m_currentEntry.setDate(d);
186 return true; 186 return true;
187} 187}
188 188
189bool NHcfg::parseCalc(const QString&name,const QXmlAttributes&attr) 189bool NHcfg::parseCalc(const QString&name,const QXmlAttributes&attr)
190{ 190{
191 ++level; 191 ++level;
192 int vindex = attr.index(_content_value); 192 int vindex = attr.index(_content_value);
193 if (vindex == -1) { 193 if (vindex == -1) {
194 err = QString("Value for element %1 on entry %2 is missing").arg(name).arg(counter); 194 err = QString("Value for element %1 on entry %2 is missing").arg(name).arg(counter);
195 return false; 195 return false;
196 } 196 }
197 int what_c =0; 197 int what_c =0;
198 QString what = name.lower(); 198 QString what = name.lower();
199 QString value; 199 QString value;
200 if (what == _content_date) { 200 if (what == _content_date) {
201 what_c = 1; 201 what_c = 1;
202 } else if (what == _content_weekd) { 202 } else if (what == _content_weekd) {
203 what_c = 2; 203 what_c = 2;
204 } else if (what == _content_offset) { 204 } else if (what == _content_offset) {
205 what_c = 3; 205 what_c = 3;
206 } else if (what == _content_dayofmonth) { 206 } else if (what == _content_dayofmonth) {
207 what_c = 4; 207 what_c = 4;
208 } else if (what == _content_datedep) { 208 } else if (what == _content_datedep) {
209 what_c = 5; 209 what_c = 5;
210 } else if (what == _content_month) { 210 } else if (what == _content_month) {
211 what_c = 6; 211 what_c = 6;
212 } 212 }
213 if (what_c == 0) { 213 if (what_c == 0) {
214 err = QString("Unknown element %1 on entry %2").arg(name).arg(counter); 214 err = QString("Unknown element %1 on entry %2").arg(name).arg(counter);
215 return false; 215 return false;
216 } 216 }
217 value = attr.value(vindex).lower(); 217 value = attr.value(vindex).lower();
218 QStringList e; 218 QStringList e;
219 QDate d; 219 QDate d;
220 bool dotformat = false; 220 bool dotformat = false;
221 switch (what_c) { 221 switch (what_c) {
222 case 1: 222 case 1:
223 if (value != "easter") { 223 if (value != "easter") {
224 e = QStringList::split("-",value); 224 e = QStringList::split("-",value);
225 if (e.count()!=2) { 225 if (e.count()!=2) {
226 e = QStringList::split(".",value); 226 e = QStringList::split(".",value);
227 dotformat = true; 227 dotformat = true;
228 } 228 }
229 if (e.count()!=2){err=QString("Datestring %1 is invalid (entry %2)").arg(value).arg(counter);return false;} 229 if (e.count()!=2){err=QString("Datestring %1 is invalid (entry %2)").arg(value).arg(counter);return false;}
230 if (!dotformat) { 230 if (!dotformat) {
231 d=QDate(0,e[0].toInt(),e[1].toInt()); 231 d=QDate(0,e[0].toInt(),e[1].toInt());
232 } else { 232 } else {
233 d=QDate(0,e[1].toInt(),e[0].toInt()); 233 d=QDate(0,e[1].toInt(),e[0].toInt());
234 } 234 }
235 } else { 235 } else {
236 d=QDate(9999,1,1); 236 d=QDate(9999,1,1);
237 } 237 }
238 m_currentEntry.setDate(d); 238 m_currentEntry.setDate(d);
239 break; 239 break;
240 case 2: 240 case 2:
241 m_currentEntry.setWeekday(value); 241 m_currentEntry.setWeekday(value);
242 break; 242 break;
243 case 3: 243 case 3:
244 m_currentEntry.setOffet(value.toInt()); 244 m_currentEntry.setOffet(value.toInt());
245 break; 245 break;
246 case 4: 246 case 4:
247 m_currentEntry.setDayofmonth(value); 247 m_currentEntry.setDayofmonth(value);
248 break; 248 break;
249 case 5: 249 case 5:
250 m_currentEntry.setDaydep(value); 250 m_currentEntry.setDaydep(value);
251 break; 251 break;
252 case 6: 252 case 6:
253 m_currentEntry.setMonth(value); 253 m_currentEntry.setMonth(value);
254 break; 254 break;
255 } 255 }
256 return true; 256 return true;
257} 257}
258 258
259bool NHcfg::endElement(const QString&, const QString&,const QString& name) 259bool NHcfg::endElement(const QString&, const QString&,const QString& name)
260{ 260{
261// odebug << "End element: " << name << oendl; 261// odebug << "End element: " << name << oendl;
262 if (name==_key_entry) { 262 if (name==_key_entry) {
263 if (m_currentEntry.type()==NHentry::fix) { 263 if (m_currentEntry.type()==NHentry::fix) {
264 currentFixList.append(m_currentEntry); 264 currentFixList.append(m_currentEntry);
265 } else { 265 } else {
266 currentFloatList.append(m_currentEntry); 266 currentFloatList.append(m_currentEntry);
267// odebug << "Floatlist count " << currentFloatList.count() << oendl; 267// odebug << "Floatlist count " << currentFloatList.count() << oendl;
268 } 268 }
269 } else if (name==_key_calc) { 269 } else if (name==_key_calc) {
270 270
271 } 271 }
272 if (stage>=3) { 272 if (stage>=3) {
273 --level; 273 --level;
274 } 274 }
275// odebug << "Level == " << level << oendl; 275// odebug << "Level == " << level << oendl;
276 return true; 276 return true;
277} 277}
278 278
279const QString&NHcfg::errorString()const 279QString NHcfg::errorString() const
280{ 280{
281 return err; 281 return err;
282} 282}
283 283
284NHentry::NHentry() 284NHentry::NHentry()
285 :m_Type(fix) 285 :m_Type(fix)
286{ 286{
287 m_Offset=0; 287 m_Offset=0;
288} 288}
289 289
290NHentry::~NHentry() 290NHentry::~NHentry()
291{} 291{}
292 292
293void NHentry::setName(const QString&aName) 293void NHentry::setName(const QString&aName)
294{ 294{
295 m_Name = aName; 295 m_Name = aName;
296} 296}
297 297
298const QString&NHentry::name()const 298const QString&NHentry::name()const
299{ 299{
300 return m_Name; 300 return m_Name;
301} 301}
302 302
303void NHentry::setType(NHentry::entry_type aType) 303void NHentry::setType(NHentry::entry_type aType)
304{ 304{
305 m_Type = aType; 305 m_Type = aType;
306} 306}
307 307
308NHentry::entry_type NHentry::type()const 308NHentry::entry_type NHentry::type()const
309{ 309{
310 return m_Type; 310 return m_Type;
311} 311}
312 312
313void NHentry::setDate(const QDate&aDate) 313void NHentry::setDate(const QDate&aDate)
314{ 314{
315 m_Date = aDate; 315 m_Date = aDate;
316} 316}
317 317
318const QDate&NHentry::date()const 318const QDate&NHentry::date()const
319{ 319{
320 return m_Date; 320 return m_Date;
321} 321}
322 322
323void NHentry::setWeekday(const QString&aDay) 323void NHentry::setWeekday(const QString&aDay)
324{ 324{
325 m_Weekday = aDay; 325 m_Weekday = aDay;
326} 326}
327 327
328const QString&NHentry::weekday()const 328const QString&NHentry::weekday()const
329{ 329{
330 return m_Weekday; 330 return m_Weekday;
331} 331}
332 332
333void NHentry::setDayofmonth(const QString&aDay) 333void NHentry::setDayofmonth(const QString&aDay)
334{ 334{
335 m_Dayofmonth = aDay; 335 m_Dayofmonth = aDay;
336} 336}
337 337
338const QString&NHentry::dayofmonth()const 338const QString&NHentry::dayofmonth()const
339{ 339{
340 return m_Dayofmonth; 340 return m_Dayofmonth;
341} 341}
342 342
343void NHentry::setDaydep(const QString&dep) 343void NHentry::setDaydep(const QString&dep)
344{ 344{
345 m_Depth = dep; 345 m_Depth = dep;
346} 346}
347 347
348const QString&NHentry::daydep()const 348const QString&NHentry::daydep()const
349{ 349{
350 return m_Depth; 350 return m_Depth;
351} 351}
352 352
353void NHentry::setMonth(const QString&month) 353void NHentry::setMonth(const QString&month)
354{ 354{
355 m_Month = month; 355 m_Month = month;
356} 356}
357 357
358const QString&NHentry::month()const 358const QString&NHentry::month()const
359{ 359{
360 return m_Month; 360 return m_Month;
361} 361}
362 362
363void NHentry::setOffet(int aOffset) 363void NHentry::setOffet(int aOffset)
364{ 364{
365 m_Offset = aOffset; 365 m_Offset = aOffset;
366} 366}
367 367
368const int NHentry::offset()const 368const int NHentry::offset()const
369{ 369{
370 return m_Offset; 370 return m_Offset;
371} 371}
diff --git a/core/pim/datebook/holiday/national/nationalcfg.h b/core/pim/datebook/holiday/national/nationalcfg.h
index 872df65..2aedd95 100644
--- a/core/pim/datebook/holiday/national/nationalcfg.h
+++ b/core/pim/datebook/holiday/national/nationalcfg.h
@@ -1,75 +1,75 @@
1#ifndef _NATIONAL_CFG_H 1#ifndef _NATIONAL_CFG_H
2#define _NATIONAL_CFG_H 2#define _NATIONAL_CFG_H
3 3
4#include <qxml.h> 4#include <qxml.h>
5#include <qstringlist.h> 5#include <qstringlist.h>
6#include <qvaluelist.h> 6#include <qvaluelist.h>
7#include <qmap.h> 7#include <qmap.h>
8#include <qdatetime.h> 8#include <qdatetime.h>
9 9
10typedef QMap<QDate,QStringList> tholidaylist; 10typedef QMap<QDate,QStringList> tholidaylist;
11 11
12class NHentry 12class NHentry
13{ 13{
14public: 14public:
15 enum entry_type{fix,floating}; 15 enum entry_type{fix,floating};
16 NHentry(); 16 NHentry();
17 virtual ~NHentry(); 17 virtual ~NHentry();
18 18
19 void setName(const QString&); 19 void setName(const QString&);
20 const QString&name()const; 20 const QString&name()const;
21 void setType(entry_type); 21 void setType(entry_type);
22 entry_type type()const; 22 entry_type type()const;
23 void setDate(const QDate&); 23 void setDate(const QDate&);
24 const QDate&date()const; 24 const QDate&date()const;
25 void setWeekday(const QString&); 25 void setWeekday(const QString&);
26 const QString&weekday()const; 26 const QString&weekday()const;
27 void setDayofmonth(const QString&); 27 void setDayofmonth(const QString&);
28 const QString&dayofmonth()const; 28 const QString&dayofmonth()const;
29 void setDaydep(const QString&); 29 void setDaydep(const QString&);
30 const QString&daydep()const; 30 const QString&daydep()const;
31 void setMonth(const QString&); 31 void setMonth(const QString&);
32 const QString&month()const; 32 const QString&month()const;
33 void setOffet(int); 33 void setOffet(int);
34 const int offset()const; 34 const int offset()const;
35 35
36protected: 36protected:
37 entry_type m_Type; 37 entry_type m_Type;
38 QString m_Name,m_Weekday,m_Dayofmonth,m_Depth,m_Month; 38 QString m_Name,m_Weekday,m_Dayofmonth,m_Depth,m_Month;
39 QDate m_Date; 39 QDate m_Date;
40 int m_Offset; 40 int m_Offset;
41}; 41};
42 42
43typedef QValueList<NHentry> tentrylist; 43typedef QValueList<NHentry> tentrylist;
44 44
45class NHcfg:public QXmlDefaultHandler 45class NHcfg:public QXmlDefaultHandler
46{ 46{
47public: 47public:
48 NHcfg(); 48 NHcfg();
49 virtual ~NHcfg(); 49 virtual ~NHcfg();
50 50
51 bool load(const QString&); 51 bool load(const QString&);
52 const tentrylist&fixDates()const; 52 const tentrylist&fixDates()const;
53 const tentrylist&floatingDates()const; 53 const tentrylist&floatingDates()const;
54 54
55 virtual bool warning(const QXmlParseException& e); 55 virtual bool warning(const QXmlParseException& e);
56 virtual bool error(const QXmlParseException& e); 56 virtual bool error(const QXmlParseException& e);
57 virtual bool fatalError(const QXmlParseException& e); 57 virtual bool fatalError(const QXmlParseException& e);
58 virtual bool startElement(const QString&, const QString&,const QString& name, const QXmlAttributes& attr); 58 virtual bool startElement(const QString&, const QString&,const QString& name, const QXmlAttributes& attr);
59 virtual bool endElement(const QString&, const QString&,const QString& name); 59 virtual bool endElement(const QString&, const QString&,const QString& name);
60 virtual const QString&errorString()const; 60 virtual QString errorString()const;
61 61
62protected: 62protected:
63 QString err,_contentname; 63 QString err,_contentname;
64 QString _path; 64 QString _path;
65 65
66 NHentry m_currentEntry; 66 NHentry m_currentEntry;
67 67
68 bool setName(const QXmlAttributes&); 68 bool setName(const QXmlAttributes&);
69 bool parsevalue(const QString&,const QXmlAttributes&); 69 bool parsevalue(const QString&,const QXmlAttributes&);
70 bool parseCalc(const QString&,const QXmlAttributes&); 70 bool parseCalc(const QString&,const QXmlAttributes&);
71 int stage,counter,level; 71 int stage,counter,level;
72 tentrylist currentFloatList,currentFixList; 72 tentrylist currentFloatList,currentFixList;
73}; 73};
74 74
75#endif 75#endif
diff --git a/inputmethods/handwriting/qimpenwidget.cpp b/inputmethods/handwriting/qimpenwidget.cpp
index 8f8f582..7223e1a 100644
--- a/inputmethods/handwriting/qimpenwidget.cpp
+++ b/inputmethods/handwriting/qimpenwidget.cpp
@@ -1,446 +1,446 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 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 <qapplication.h> 21#include <qapplication.h>
22#include <qinputdialog.h> 22#include <qinputdialog.h>
23#include <qpainter.h> 23#include <qpainter.h>
24#include <qfile.h> 24#include <qfile.h>
25#include <qdatastream.h> 25#include <qdatastream.h>
26#include <qtimer.h> 26#include <qtimer.h>
27#include "qimpenchar.h" 27#include "qimpenchar.h"
28#include "qimpenwidget.h" 28#include "qimpenwidget.h"
29 29
30 #define TITLE_WIDTH30 // ### magic 30 #define TITLE_WIDTH30 // ### magic
31 31
32/*! 32/*!
33 \class QIMPenWidget qimpenwidget.h 33 \class QIMPenWidget qimpenwidget.h
34 34
35 Draws characters and allows input of characters. 35 Draws characters and allows input of characters.
36*/ 36*/
37 37
38QIMPenWidget::QIMPenWidget( QWidget *parent ) 38QIMPenWidget::QIMPenWidget( QWidget *parent )
39 : QWidget( parent ) 39 : QWidget( parent )
40{ 40{
41 charSets.setAutoDelete( TRUE ); 41 charSets.setAutoDelete( TRUE );
42 inputStroke = 0; 42 inputStroke = 0;
43 outputChar = 0; 43 outputChar = 0;
44 outputStroke = 0; 44 outputStroke = 0;
45 mode = Waiting; 45 mode = Waiting;
46 currCharSet = 0; 46 currCharSet = 0;
47 readOnly = FALSE; 47 readOnly = FALSE;
48 strokes.setAutoDelete( TRUE ); 48 strokes.setAutoDelete( TRUE );
49 49
50 timer = new QTimer(this); 50 timer = new QTimer(this);
51 connect( timer, SIGNAL(timeout()), SLOT(timeout())); 51 connect( timer, SIGNAL(timeout()), SLOT(timeout()));
52 52
53 setBackgroundColor( qApp->palette().color( QPalette::Active, 53 setBackgroundColor( qApp->palette().color( QPalette::Active,
54 QColorGroup::Base ) ); 54 QColorGroup::Base ) );
55 strokeColor = black; 55 strokeColor = black;
56 setFixedHeight( 75 ); 56 setFixedHeight( 75 );
57} 57}
58 58
59void QIMPenWidget::clear() 59void QIMPenWidget::clear()
60{ 60{
61 timer->stop(); 61 timer->stop();
62 mode = Waiting; 62 mode = Waiting;
63 QRect r( dirtyRect ); 63 QRect r( dirtyRect );
64 QIMPenStrokeIterator it( strokes ); 64 QIMPenStrokeIterator it( strokes );
65 while ( it.current() ) { 65 while ( it.current() ) {
66 r |= it.current()->boundingRect(); 66 r |= it.current()->boundingRect();
67 ++it; 67 ++it;
68 } 68 }
69 outputChar = 0; 69 outputChar = 0;
70 outputStroke = 0; 70 outputStroke = 0;
71 strokes.clear(); 71 strokes.clear();
72 if ( !r.isNull() ) { 72 if ( !r.isNull() ) {
73 r.moveBy( -2, -2 ); 73 r.moveBy( -2, -2 );
74 r.setSize( r.size() + QSize( 4, 4 ) ); 74 r.setSize( r.size() + QSize( 4, 4 ) );
75 repaint( r ); 75 repaint( r );
76 } else { 76 } else {
77 repaint(); 77 repaint();
78 } 78 }
79} 79}
80 80
81void QIMPenWidget::removeStroke() 81void QIMPenWidget::removeStroke()
82{ 82{
83 QRect r( dirtyRect ); 83 QRect r( dirtyRect );
84 QIMPenStroke *st = strokes.getFirst(); 84 QIMPenStroke *st = strokes.getFirst();
85 QRect strokeRect; 85 QRect strokeRect;
86 if ( st ) 86 if ( st )
87 strokeRect = st->boundingRect(); 87 strokeRect = st->boundingRect();
88 r |= strokeRect; 88 r |= strokeRect;
89 strokes.removeFirst(); 89 strokes.removeFirst();
90 if ( !r.isNull() ) { 90 if ( !r.isNull() ) {
91 r.moveBy( -2, -2 ); 91 r.moveBy( -2, -2 );
92 r.setSize( r.size() + QSize( 4, 4 ) ); 92 r.setSize( r.size() + QSize( 4, 4 ) );
93 repaint( r ); 93 repaint( r );
94 } 94 }
95} 95}
96 96
97void QIMPenWidget::greyStroke() 97void QIMPenWidget::greyStroke()
98{ 98{
99 QRect r( dirtyRect ); 99 QRect r( dirtyRect );
100 QIMPenStroke *st = strokes.getLast(); 100 QIMPenStroke *st = strokes.getLast();
101 QRect strokeRect; 101 QRect strokeRect;
102 if ( st ) 102 if ( st )
103 strokeRect = st->boundingRect(); 103 strokeRect = st->boundingRect();
104 r |= strokeRect; 104 r |= strokeRect;
105 QColor oldCol = strokeColor; 105 QColor oldCol = strokeColor;
106 strokeColor = gray; 106 strokeColor = gray;
107 if ( !r.isNull() ) { 107 if ( !r.isNull() ) {
108 r.moveBy( -2, -2 ); 108 r.moveBy( -2, -2 );
109 r.setSize( r.size() + QSize( 4, 4 ) ); 109 r.setSize( r.size() + QSize( 4, 4 ) );
110 repaint( r ); 110 repaint( r );
111 } 111 }
112 strokeColor = oldCol; 112 strokeColor = oldCol;
113} 113}
114 114
115/*! 115/*!
116 Insert a character set into the list. 116 Insert a character set into the list.
117*/ 117*/
118void QIMPenWidget::insertCharSet( QIMPenCharSet *cs, int stretch, int pos ) 118void QIMPenWidget::insertCharSet( QIMPenCharSet *cs, int stretch, int pos )
119{ 119{
120 CharSetEntry *e = new CharSetEntry; 120 CharSetEntry *e = new CharSetEntry;
121 e->cs = cs; 121 e->cs = cs;
122 e->stretch = stretch; 122 e->stretch = stretch;
123 if ( pos < 0 ) 123 if ( pos < 0 )
124 pos = charSets.count(); 124 pos = charSets.count();
125 charSets.insert( pos, e ); 125 charSets.insert( pos, e );
126 currCharSet = 0; 126 currCharSet = 0;
127 emit changeCharSet( currCharSet ); 127 emit changeCharSet( currCharSet );
128 emit changeCharSet( charSets.at(currCharSet)->cs ); 128 emit changeCharSet( charSets.at(currCharSet)->cs );
129 totalStretch = 0; 129 totalStretch = 0;
130 CharSetEntryIterator it( charSets ); 130 CharSetEntryIterator it( charSets );
131 for ( ; it.current(); ++it ) 131 for ( ; it.current(); ++it )
132 totalStretch += it.current()->stretch; 132 totalStretch += it.current()->stretch;
133 update(); 133 update();
134} 134}
135 135
136/*! 136/*!
137 Remove a character set from the list. 137 Remove a character set from the list.
138*/ 138*/
139void QIMPenWidget::removeCharSet( int pos ) 139void QIMPenWidget::removeCharSet( int pos )
140{ 140{
141 if ( pos >= 0 && pos < (int)charSets.count() ) { 141 if ( pos >= 0 && pos < (int)charSets.count() ) {
142 charSets.remove( pos ); 142 charSets.remove( pos );
143 currCharSet = 0; 143 currCharSet = 0;
144 if ( charSets.count() ) { 144 if ( charSets.count() ) {
145 emit changeCharSet( currCharSet ); 145 emit changeCharSet( currCharSet );
146 emit changeCharSet( charSets.at(currCharSet)->cs ); 146 emit changeCharSet( charSets.at(currCharSet)->cs );
147 } 147 }
148 totalStretch = 0; 148 totalStretch = 0;
149 CharSetEntryIterator it( charSets ); 149 CharSetEntryIterator it( charSets );
150 for ( ; it.current(); ++it ) 150 for ( ; it.current(); ++it )
151 totalStretch += it.current()->stretch; 151 totalStretch += it.current()->stretch;
152 update(); 152 update();
153 } 153 }
154} 154}
155 155
156void QIMPenWidget::changeCharSet( QIMPenCharSet *cs, int pos ) 156void QIMPenWidget::changeCharSet( QIMPenCharSet *cs, int pos )
157{ 157{
158 if ( pos >= 0 && pos < (int)charSets.count() ) { 158 if ( pos >= 0 && pos < (int)charSets.count() ) {
159 CharSetEntry *e = new CharSetEntry; 159 CharSetEntry *e = new CharSetEntry;
160 e->cs = cs; 160 e->cs = cs;
161 e->stretch = charSets.at(pos)->stretch; 161 e->stretch = charSets.at(pos)->stretch;
162 charSets.remove( pos ); 162 charSets.remove( pos );
163 charSets.insert( pos, e ); 163 charSets.insert( pos, e );
164 if ( pos == currCharSet ) { 164 if ( pos == currCharSet ) {
165 emit changeCharSet( charSets.at(currCharSet)->cs ); 165 emit changeCharSet( charSets.at(currCharSet)->cs );
166 } 166 }
167 update(); 167 update();
168 } 168 }
169} 169}
170 170
171void QIMPenWidget::clearCharSets() 171void QIMPenWidget::clearCharSets()
172{ 172{
173 charSets.clear(); 173 charSets.clear();
174 currCharSet = 0; 174 currCharSet = 0;
175 update(); 175 update();
176} 176}
177 177
178/*! 178/*!
179 Display a character. \a speed determines how quickly the character is 179 Display a character. \a speed determines how quickly the character is
180 drawn. 180 drawn.
181*/ 181*/
182void QIMPenWidget::showCharacter( QIMPenChar *ch, int speed ) 182void QIMPenWidget::showCharacter( QIMPenChar *ch, int speed )
183{ 183{
184 outputChar = 0; 184 outputChar = 0;
185 outputStroke = 0; 185 outputStroke = 0;
186 strokes.clear(); 186 strokes.clear();
187 mode = Output; 187 mode = Output;
188 repaint(); 188 repaint();
189 if ( !ch || ch->isEmpty() ) { 189 if ( !ch || ch->isEmpty() ) {
190 mode = Waiting; 190 mode = Waiting;
191 return; 191 return;
192 } 192 }
193 193
194 outputChar = ch; 194 outputChar = ch;
195 outputStroke = outputChar->penStrokes().getFirst(); 195 outputStroke = outputChar->penStrokes().getFirst();
196 if ( speed < 0 ) speed = 0; 196 if ( speed < 0 ) speed = 0;
197 if ( speed > 20 ) speed = 20; 197 if ( speed > 20 ) speed = 20;
198 speed = 50 - speed; 198 speed = 50 - speed;
199 pointIndex = 0; 199 pointIndex = 0;
200 strokeIndex = 0; 200 strokeIndex = 0;
201 lastPoint = outputStroke->startingPoint(); 201 lastPoint = outputStroke->startingPoint();
202 QRect br( outputChar->boundingRect() ); 202 QRect br( outputChar->boundingRect() );
203 lastPoint.setX( (width() - br.width()) / 2 + (lastPoint.x () - br.left()) ); 203 lastPoint.setX( (width() - br.width()) / 2 + (lastPoint.x () - br.left()) );
204 QPoint offset = lastPoint - outputStroke->startingPoint(); 204 QPoint offset = lastPoint - outputStroke->startingPoint();
205 br.moveBy( offset.x(), offset.y() ); 205 br.moveBy( offset.x(), offset.y() );
206 dirtyRect |= br; 206 dirtyRect |= br;
207 timer->start( speed ); 207 timer->start( speed );
208} 208}
209 209
210/*! 210/*!
211 Handle drawing/clearing of characters. 211 Handle drawing/clearing of characters.
212*/ 212*/
213void QIMPenWidget::timeout() 213void QIMPenWidget::timeout()
214{ 214{
215 if ( mode == Output ) { 215 if ( mode == Output ) {
216 const QArray<QIMPenGlyphLink> &chain = outputStroke->chain(); 216 const QArray<QIMPenGlyphLink> &chain = outputStroke->chain();
217 if ( pointIndex < chain.count() ) { 217 if ( pointIndex < chain.count() ) {
218 QPainter paint( this ); 218 QPainter paint( this );
219 paint.setBrush( Qt::black ); 219 paint.setBrush( Qt::black );
220 for ( unsigned i = 0; i < 3 && pointIndex < chain.count(); i++ ) { 220 for ( unsigned i = 0; i < 3 && pointIndex < chain.count(); i++ ) {
221 lastPoint.rx() += chain[pointIndex].dx; 221 lastPoint.rx() += chain[pointIndex].dx;
222 lastPoint.ry() += chain[pointIndex].dy; 222 lastPoint.ry() += chain[pointIndex].dy;
223 pointIndex++; 223 pointIndex++;
224 paint.drawRect( lastPoint.x()-1, lastPoint.y()-1, 2, 2 ); 224 paint.drawRect( lastPoint.x()-1, lastPoint.y()-1, 2, 2 );
225 } 225 }
226 } 226 }
227 if ( pointIndex >= chain.count() ) { 227 if ( pointIndex >= chain.count() ) {
228 QIMPenStrokeList strokes = outputChar->penStrokes(); 228 QIMPenStrokeList strokes = outputChar->penStrokes();
229 if ( strokeIndex < (int)strokes.count() - 1 ) { 229 if ( strokeIndex < (int)strokes.count() - 1 ) {
230 pointIndex = 0; 230 pointIndex = 0;
231 strokeIndex++; 231 strokeIndex++;
232 outputStroke = strokes.at( strokeIndex ); 232 outputStroke = strokes.at( strokeIndex );
233 lastPoint = outputChar->startingPoint(); 233 lastPoint = outputChar->startingPoint();
234 QRect br( outputChar->boundingRect() ); 234 QRect br( outputChar->boundingRect() );
235 lastPoint.setX( (width() - br.width()) / 2 235 lastPoint.setX( (width() - br.width()) / 2
236 + (lastPoint.x () - br.left()) ); 236 + (lastPoint.x () - br.left()) );
237 QPoint off = lastPoint - outputChar->startingPoint(); 237 QPoint off = lastPoint - outputChar->startingPoint();
238 lastPoint = outputStroke->startingPoint() + off; 238 lastPoint = outputStroke->startingPoint() + off;
239 } else { 239 } else {
240 timer->stop(); 240 timer->stop();
241 mode = Waiting; 241 mode = Waiting;
242 } 242 }
243 } 243 }
244 } else if ( mode == Waiting ) { 244 } else if ( mode == Waiting ) {
245 QRect r( dirtyRect ); 245 QRect r( dirtyRect );
246 if ( !r.isNull() ) { 246 if ( !r.isNull() ) {
247 r.moveBy( -2, -2 ); 247 r.moveBy( -2, -2 );
248 r.setSize( r.size() + QSize( 4, 4 ) ); 248 r.setSize( r.size() + QSize( 4, 4 ) );
249 repaint( r ); 249 repaint( r );
250 } 250 }
251 } 251 }
252} 252}
253 253
254/*! 254/*!
255 If the point \a p is over one of the character set titles, switch 255 If the point \a p is over one of the character set titles, switch
256 to the set and return TRUE. 256 to the set and return TRUE.
257*/ 257*/
258bool QIMPenWidget::selectSet( QPoint p ) 258bool QIMPenWidget::selectSet( QPoint p )
259{ 259{
260 if ( charSets.count() ) { 260 if ( charSets.count() ) {
261 CharSetEntryIterator it( charSets ); 261 CharSetEntryIterator it( charSets );
262 int spos = 0; 262 int spos = 0;
263 int idx = 0; 263 int idx = 0;
264 for ( ; it.current(); ++it, idx++ ) { 264 for ( ; it.current(); ++it, idx++ ) {
265 int setWidth = width() * it.current()->stretch / totalStretch; 265 int setWidth = width() * it.current()->stretch / totalStretch;
266 spos += setWidth; 266 spos += setWidth;
267 if ( p.x() < spos ) { 267 if ( p.x() < spos ) {
268 if ( idx != currCharSet ) { 268 if ( idx != currCharSet ) {
269 currCharSet = idx; 269 currCharSet = idx;
270 update( 0, 0, width(), 12 ); 270 update( 0, 0, width(), 12 );
271 emit changeCharSet( currCharSet ); 271 emit changeCharSet( currCharSet );
272 emit changeCharSet( charSets.at(currCharSet)->cs ); 272 emit changeCharSet( charSets.at(currCharSet)->cs );
273 } 273 }
274 break; 274 break;
275 } 275 }
276 } 276 }
277 } 277 }
278 278
279 return FALSE; 279 return FALSE;
280} 280}
281 281
282/*! 282/*!
283 Hopefully returns a sensible size. 283 Hopefully returns a sensible size.
284*/ 284*/
285QSize QIMPenWidget::sizeHint() 285QSize QIMPenWidget::sizeHint() const
286{ 286{
287 return QSize( TITLE_WIDTH * charSets.count(), 75 ); 287 return QSize( TITLE_WIDTH * charSets.count(), 75 );
288} 288}
289 289
290void QIMPenWidget::mousePressEvent( QMouseEvent *e ) 290void QIMPenWidget::mousePressEvent( QMouseEvent *e )
291{ 291{
292 if ( !readOnly && e->button() == LeftButton && mode == Waiting ) { 292 if ( !readOnly && e->button() == LeftButton && mode == Waiting ) {
293 // if selectSet returns false the click was not over the 293 // if selectSet returns false the click was not over the
294 // char set selectors. 294 // char set selectors.
295 if ( !selectSet( e->pos() ) ) { 295 if ( !selectSet( e->pos() ) ) {
296 // start of character input 296 // start of character input
297 timer->stop(); 297 timer->stop();
298 if ( outputChar ) { 298 if ( outputChar ) {
299 outputChar = 0; 299 outputChar = 0;
300 outputStroke = 0; 300 outputStroke = 0;
301 repaint(); 301 repaint();
302 } 302 }
303 mode = Input; 303 mode = Input;
304 lastPoint = e->pos(); 304 lastPoint = e->pos();
305 emit beginStroke(); 305 emit beginStroke();
306 inputStroke = new QIMPenStroke; 306 inputStroke = new QIMPenStroke;
307 strokes.append( inputStroke ); 307 strokes.append( inputStroke );
308 inputStroke->beginInput( e->pos() ); 308 inputStroke->beginInput( e->pos() );
309 QPainter paint( this ); 309 QPainter paint( this );
310 paint.setBrush( Qt::black ); 310 paint.setBrush( Qt::black );
311 paint.drawRect( lastPoint.x()-1, lastPoint.y()-1, 2, 2 ); 311 paint.drawRect( lastPoint.x()-1, lastPoint.y()-1, 2, 2 );
312 } 312 }
313 } 313 }
314} 314}
315 315
316void QIMPenWidget::mouseReleaseEvent( QMouseEvent *e ) 316void QIMPenWidget::mouseReleaseEvent( QMouseEvent *e )
317{ 317{
318 if ( !readOnly && e->button() == LeftButton && mode == Input ) { 318 if ( !readOnly && e->button() == LeftButton && mode == Input ) {
319 mode = Waiting; 319 mode = Waiting;
320 inputStroke->endInput(); 320 inputStroke->endInput();
321 if ( charSets.count() ) 321 if ( charSets.count() )
322 emit stroke( inputStroke ); 322 emit stroke( inputStroke );
323 inputStroke = 0; 323 inputStroke = 0;
324 } 324 }
325} 325}
326 326
327void QIMPenWidget::mouseMoveEvent( QMouseEvent *e ) 327void QIMPenWidget::mouseMoveEvent( QMouseEvent *e )
328{ 328{
329 if ( !readOnly && mode == Input ) { 329 if ( !readOnly && mode == Input ) {
330 int dx = QABS( e->pos().x() - lastPoint.x() ); 330 int dx = QABS( e->pos().x() - lastPoint.x() );
331 int dy = QABS( e->pos().y() - lastPoint.y() ); 331 int dy = QABS( e->pos().y() - lastPoint.y() );
332 if ( dx + dy > 1 ) { 332 if ( dx + dy > 1 ) {
333 if ( inputStroke->addPoint( e->pos() ) ) { 333 if ( inputStroke->addPoint( e->pos() ) ) {
334 QPainter paint( this ); 334 QPainter paint( this );
335 paint.setPen( Qt::black ); 335 paint.setPen( Qt::black );
336 paint.setBrush( Qt::black ); 336 paint.setBrush( Qt::black );
337 const QArray<QIMPenGlyphLink> &chain = inputStroke->chain(); 337 const QArray<QIMPenGlyphLink> &chain = inputStroke->chain();
338 QPoint p( e->pos() ); 338 QPoint p( e->pos() );
339 for ( int i = (int)chain.count()-1; i >= 0; i-- ) { 339 for ( int i = (int)chain.count()-1; i >= 0; i-- ) {
340 paint.drawRect( p.x()-1, p.y()-1, 2, 2 ); 340 paint.drawRect( p.x()-1, p.y()-1, 2, 2 );
341 p.rx() -= chain[i].dx; 341 p.rx() -= chain[i].dx;
342 p.ry() -= chain[i].dy; 342 p.ry() -= chain[i].dy;
343 if ( p == lastPoint ) 343 if ( p == lastPoint )
344 break; 344 break;
345 } 345 }
346 346
347 /* ### use this when thick lines work properly on all devices 347 /* ### use this when thick lines work properly on all devices
348 paint.setPen( QPen( Qt::black, 2 ) ); 348 paint.setPen( QPen( Qt::black, 2 ) );
349 paint.drawLine( lastPoint, e->pos() ); 349 paint.drawLine( lastPoint, e->pos() );
350 */ 350 */
351 } 351 }
352 lastPoint = e->pos(); 352 lastPoint = e->pos();
353 } 353 }
354 } 354 }
355} 355}
356 356
357void QIMPenWidget::paintEvent( QPaintEvent * ) 357void QIMPenWidget::paintEvent( QPaintEvent * )
358{ 358{
359 QPainter paint( this ); 359 QPainter paint( this );
360 360
361 // draw guidelines 361 // draw guidelines
362 paint.setPen( Qt::gray ); 362 paint.setPen( Qt::gray );
363 paint.drawLine( 0, 0, width(), 0 ); 363 paint.drawLine( 0, 0, width(), 0 );
364 int y = height() / 3; 364 int y = height() / 3;
365 paint.drawLine( 0, y, width(), y ); 365 paint.drawLine( 0, y, width(), y );
366 y *= 2; 366 y *= 2;
367 paint.setPen( blue ); 367 paint.setPen( blue );
368 paint.drawLine( 0, y, width(), y ); 368 paint.drawLine( 0, y, width(), y );
369 paint.setPen( Qt::gray ); 369 paint.setPen( Qt::gray );
370 370
371 if ( !charSets.count() ) 371 if ( !charSets.count() )
372 return; 372 return;
373 373
374 // draw the character set titles 374 // draw the character set titles
375 QFont selFont( "helvetica", 8, QFont::Bold ); 375 QFont selFont( "helvetica", 8, QFont::Bold );
376 QFont font( "helvetica", 8 ); 376 QFont font( "helvetica", 8 );
377 CharSetEntryIterator it( charSets ); 377 CharSetEntryIterator it( charSets );
378 int spos = 0; 378 int spos = 0;
379 for ( ; it.current(); ++it ) { 379 for ( ; it.current(); ++it ) {
380 int setWidth = width() * it.current()->stretch / totalStretch; 380 int setWidth = width() * it.current()->stretch / totalStretch;
381 spos += setWidth; 381 spos += setWidth;
382 if ( it.current() != charSets.getLast() ) { 382 if ( it.current() != charSets.getLast() ) {
383 paint.drawLine( spos, 0, spos, 5 ); 383 paint.drawLine( spos, 0, spos, 5 );
384 paint.drawLine( spos, height()-1, spos, height()-6 ); 384 paint.drawLine( spos, height()-1, spos, height()-6 );
385 } 385 }
386 paint.setFont( font ); 386 paint.setFont( font );
387 int w = paint.fontMetrics().width( it.current()->cs->title() ); 387 int w = paint.fontMetrics().width( it.current()->cs->title() );
388 int tpos = spos - setWidth / 2; 388 int tpos = spos - setWidth / 2;
389 paint.drawText( tpos - w/2, 0, w, 12, QPainter::AlignCenter, 389 paint.drawText( tpos - w/2, 0, w, 12, QPainter::AlignCenter,
390 it.current()->cs->title() ); 390 it.current()->cs->title() );
391 } 391 }
392 392
393 // draw any character that should be displayed when repainted. 393 // draw any character that should be displayed when repainted.
394 QPoint off; 394 QPoint off;
395 const QIMPenStrokeList *stk = 0; 395 const QIMPenStrokeList *stk = 0;
396 if ( outputChar && mode == Waiting ) { 396 if ( outputChar && mode == Waiting ) {
397 stk = &outputChar->penStrokes(); 397 stk = &outputChar->penStrokes();
398 QPoint p( outputChar->startingPoint() ); 398 QPoint p( outputChar->startingPoint() );
399 QRect br( outputChar->boundingRect() ); 399 QRect br( outputChar->boundingRect() );
400 p.setX( (width() - br.width()) / 2 + (p.x () - br.left()) ); 400 p.setX( (width() - br.width()) / 2 + (p.x () - br.left()) );
401 off = p - outputChar->startingPoint(); 401 off = p - outputChar->startingPoint();
402 } else if ( mode == Waiting ) { 402 } else if ( mode == Waiting ) {
403 stk = &strokes; 403 stk = &strokes;
404 strokeColor = gray; 404 strokeColor = gray;
405 } 405 }
406 406
407 if ( stk && !stk->isEmpty() ) { 407 if ( stk && !stk->isEmpty() ) {
408 paint.setPen( strokeColor ); 408 paint.setPen( strokeColor );
409 paint.setBrush( strokeColor ); 409 paint.setBrush( strokeColor );
410 QIMPenStrokeIterator it( *stk ); 410 QIMPenStrokeIterator it( *stk );
411 while ( it.current() ) { 411 while ( it.current() ) {
412 QPoint p = it.current()->startingPoint() + off; 412 QPoint p = it.current()->startingPoint() + off;
413 paint.drawRect( p.x()-1, p.y()-1, 2, 2 ); 413 paint.drawRect( p.x()-1, p.y()-1, 2, 2 );
414 const QArray<QIMPenGlyphLink> &chain = it.current()->chain(); 414 const QArray<QIMPenGlyphLink> &chain = it.current()->chain();
415 for ( unsigned i = 0; i < chain.count(); i++ ) { 415 for ( unsigned i = 0; i < chain.count(); i++ ) {
416 p.rx() += chain[i].dx; 416 p.rx() += chain[i].dx;
417 p.ry() += chain[i].dy; 417 p.ry() += chain[i].dy;
418 paint.drawRect( p.x()-1, p.y()-1, 2, 2 ); 418 paint.drawRect( p.x()-1, p.y()-1, 2, 2 );
419 } 419 }
420 ++it; 420 ++it;
421 if ( it.atLast() && mode == Waiting ) 421 if ( it.atLast() && mode == Waiting )
422 strokeColor = black; 422 strokeColor = black;
423 } 423 }
424 } 424 }
425 425
426 dirtyRect = QRect(); 426 dirtyRect = QRect();
427 427
428 // debug 428 // debug
429/* 429/*
430 if ( input ) { 430 if ( input ) {
431 QArray<int> sig = input->sig(); 431 QArray<int> sig = input->sig();
432 for ( unsigned i = 0; i < sig.count(); i++ ) { 432 for ( unsigned i = 0; i < sig.count(); i++ ) {
433 paint.drawPoint( 200 + i, height()/2 - sig[i] / 8 ); 433 paint.drawPoint( 200 + i, height()/2 - sig[i] / 8 );
434 } 434 }
435 } 435 }
436*/ 436*/
437} 437}
438 438
439void QIMPenWidget::resizeEvent( QResizeEvent *e ) 439void QIMPenWidget::resizeEvent( QResizeEvent *e )
440{ 440{
441 if ( mode == Output ) 441 if ( mode == Output )
442 showCharacter( outputChar, 0 ); 442 showCharacter( outputChar, 0 );
443 443
444 QWidget::resizeEvent( e ); 444 QWidget::resizeEvent( e );
445} 445}
446 446
diff --git a/inputmethods/handwriting/qimpenwidget.h b/inputmethods/handwriting/qimpenwidget.h
index 98d7f5c..d156554 100644
--- a/inputmethods/handwriting/qimpenwidget.h
+++ b/inputmethods/handwriting/qimpenwidget.h
@@ -1,88 +1,88 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 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 <qwidget.h> 21#include <qwidget.h>
22#include <qlist.h> 22#include <qlist.h>
23#include "qimpenchar.h" 23#include "qimpenchar.h"
24 24
25class QIMPenWidget : public QWidget 25class QIMPenWidget : public QWidget
26{ 26{
27 Q_OBJECT 27 Q_OBJECT
28public: 28public:
29 QIMPenWidget( QWidget *parent ); 29 QIMPenWidget( QWidget *parent );
30 30
31 void clear(); 31 void clear();
32 void greyStroke(); 32 void greyStroke();
33 void setReadOnly( bool r ) { readOnly = r; } 33 void setReadOnly( bool r ) { readOnly = r; }
34 34
35 void insertCharSet( QIMPenCharSet *cs, int stretch=1, int pos=-1 ); 35 void insertCharSet( QIMPenCharSet *cs, int stretch=1, int pos=-1 );
36 void removeCharSet( int ); 36 void removeCharSet( int );
37 void changeCharSet( QIMPenCharSet *cs, int pos ); 37 void changeCharSet( QIMPenCharSet *cs, int pos );
38 void clearCharSets(); 38 void clearCharSets();
39 void showCharacter( QIMPenChar *, int speed = 10 ); 39 void showCharacter( QIMPenChar *, int speed = 10 );
40 virtual QSize sizeHint(); 40 virtual QSize sizeHint() const;
41 41
42public slots: 42public slots:
43 void removeStroke(); 43 void removeStroke();
44 44
45signals: 45signals:
46 void changeCharSet( QIMPenCharSet *cs ); 46 void changeCharSet( QIMPenCharSet *cs );
47 void changeCharSet( int ); 47 void changeCharSet( int );
48 void beginStroke(); 48 void beginStroke();
49 void stroke( QIMPenStroke *ch ); 49 void stroke( QIMPenStroke *ch );
50 50
51protected slots: 51protected slots:
52 void timeout(); 52 void timeout();
53 53
54protected: 54protected:
55 enum Mode { Waiting, Input, Output }; 55 enum Mode { Waiting, Input, Output };
56 bool selectSet( QPoint ); 56 bool selectSet( QPoint );
57 virtual void mousePressEvent( QMouseEvent *e ); 57 virtual void mousePressEvent( QMouseEvent *e );
58 virtual void mouseReleaseEvent( QMouseEvent *e ); 58 virtual void mouseReleaseEvent( QMouseEvent *e );
59 virtual void mouseMoveEvent( QMouseEvent *e ); 59 virtual void mouseMoveEvent( QMouseEvent *e );
60 virtual void paintEvent( QPaintEvent *e ); 60 virtual void paintEvent( QPaintEvent *e );
61 virtual void resizeEvent( QResizeEvent *e ); 61 virtual void resizeEvent( QResizeEvent *e );
62 62
63 struct CharSetEntry { 63 struct CharSetEntry {
64 QIMPenCharSet *cs; 64 QIMPenCharSet *cs;
65 int stretch; 65 int stretch;
66 }; 66 };
67 typedef QList<CharSetEntry> CharSetEntryList; 67 typedef QList<CharSetEntry> CharSetEntryList;
68 typedef QListIterator<CharSetEntry> CharSetEntryIterator; 68 typedef QListIterator<CharSetEntry> CharSetEntryIterator;
69 69
70protected: 70protected:
71 Mode mode; 71 Mode mode;
72 bool autoHide; 72 bool autoHide;
73 bool readOnly; 73 bool readOnly;
74 QPoint lastPoint; 74 QPoint lastPoint;
75 unsigned pointIndex; 75 unsigned pointIndex;
76 int strokeIndex; 76 int strokeIndex;
77 int currCharSet; 77 int currCharSet;
78 QTimer *timer; 78 QTimer *timer;
79 QColor strokeColor; 79 QColor strokeColor;
80 QRect dirtyRect; 80 QRect dirtyRect;
81 QIMPenChar *outputChar; 81 QIMPenChar *outputChar;
82 QIMPenStroke *outputStroke; 82 QIMPenStroke *outputStroke;
83 QIMPenStroke *inputStroke; 83 QIMPenStroke *inputStroke;
84 QIMPenStrokeList strokes; 84 QIMPenStrokeList strokes;
85 CharSetEntryList charSets; 85 CharSetEntryList charSets;
86 int totalStretch; 86 int totalStretch;
87}; 87};
88 88
diff --git a/libopie2/opiepim/backend/odatebookaccessbackend_xml.cpp b/libopie2/opiepim/backend/odatebookaccessbackend_xml.cpp
index 55e47e2..2ebccd2 100644
--- a/libopie2/opiepim/backend/odatebookaccessbackend_xml.cpp
+++ b/libopie2/opiepim/backend/odatebookaccessbackend_xml.cpp
@@ -1,664 +1,664 @@
1/* 1/*
2 This file is part of the Opie Project 2 This file is part of the Opie Project
3 Copyright (C) Stefan Eilers (Eilers.Stefan@epost.de) 3 Copyright (C) Stefan Eilers (Eilers.Stefan@epost.de)
4 =. Copyright (C) The Opie Team <opie-devel@handhelds.org> 4 =. Copyright (C) The Opie Team <opie-devel@handhelds.org>
5 .=l. 5 .=l.
6 .>+-= 6 .>+-=
7 _;:, .> :=|. This program is free software; you can 7 _;:, .> :=|. This program is free software; you can
8.> <`_, > . <= redistribute it and/or modify it under 8.> <`_, > . <= redistribute it and/or modify it under
9:`=1 )Y*s>-.-- : the terms of the GNU Library General Public 9:`=1 )Y*s>-.-- : the terms of the GNU Library General Public
10.="- .-=="i, .._ License as published by the Free Software 10.="- .-=="i, .._ License as published by the Free Software
11 - . .-<_> .<> Foundation; either version 2 of the License, 11 - . .-<_> .<> Foundation; either version 2 of the License,
12 ._= =} : or (at your option) any later version. 12 ._= =} : or (at your option) any later version.
13 .%`+i> _;_. 13 .%`+i> _;_.
14 .i_,=:_. -<s. This program is distributed in the hope that 14 .i_,=:_. -<s. This program is distributed in the hope that
15 + . -:. = it will be useful, but WITHOUT ANY WARRANTY; 15 + . -:. = it will be useful, but WITHOUT ANY WARRANTY;
16 : .. .:, . . . without even the implied warranty of 16 : .. .:, . . . without even the implied warranty of
17 =_ + =;=|` MERCHANTABILITY or FITNESS FOR A 17 =_ + =;=|` MERCHANTABILITY or FITNESS FOR A
18 _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU 18 _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU
19..}^=.= = ; Library General Public License for more 19..}^=.= = ; Library General Public License for more
20++= -. .` .: details. 20++= -. .` .: details.
21 : = ...= . :.=- 21 : = ...= . :.=-
22 -. .:....=;==+<; You should have received a copy of the GNU 22 -. .:....=;==+<; You should have received a copy of the GNU
23 -_. . . )=. = Library General Public License along with 23 -_. . . )=. = Library General Public License along with
24 -- :-=` this library; see the file COPYING.LIB. 24 -- :-=` this library; see the file COPYING.LIB.
25 If not, write to the Free Software Foundation, 25 If not, write to the Free Software Foundation,
26 Inc., 59 Temple Place - Suite 330, 26 Inc., 59 Temple Place - Suite 330,
27 Boston, MA 02111-1307, USA. 27 Boston, MA 02111-1307, USA.
28*/ 28*/
29 29
30/* OPIE */ 30/* OPIE */
31#include <opie2/opimnotifymanager.h> 31#include <opie2/opimnotifymanager.h>
32#include <opie2/opimrecurrence.h> 32#include <opie2/opimrecurrence.h>
33#include <opie2/opimtimezone.h> 33#include <opie2/opimtimezone.h>
34#include <opie2/odatebookaccessbackend_xml.h> 34#include <opie2/odatebookaccessbackend_xml.h>
35#include <opie2/odebug.h> 35#include <opie2/odebug.h>
36 36
37#include <qtopia/global.h> 37#include <qtopia/global.h>
38#include <qtopia/stringutil.h> 38#include <qtopia/stringutil.h>
39#include <qtopia/timeconversion.h> 39#include <qtopia/timeconversion.h>
40 40
41/* QT */ 41/* QT */
42#include <qasciidict.h> 42#include <qasciidict.h>
43#include <qfile.h> 43#include <qfile.h>
44 44
45/* STD */ 45/* STD */
46#include <errno.h> 46#include <errno.h>
47#include <fcntl.h> 47#include <fcntl.h>
48 48
49#include <stdio.h> 49#include <stdio.h>
50#include <stdlib.h> 50#include <stdlib.h>
51 51
52#include <sys/types.h> 52#include <sys/types.h>
53#include <sys/mman.h> 53#include <sys/mman.h>
54#include <sys/stat.h> 54#include <sys/stat.h>
55 55
56#include <unistd.h> 56#include <unistd.h>
57 57
58 58
59using namespace Opie; 59using namespace Opie;
60 60
61namespace { 61namespace {
62 // FROM TT again 62 // FROM TT again
63char *strstrlen(const char *haystack, int hLen, const char* needle, int nLen) 63char *strstrlen(const char *haystack, int hLen, const char* needle, int nLen)
64{ 64{
65 char needleChar; 65 char needleChar;
66 char haystackChar; 66 char haystackChar;
67 if (!needle || !haystack || !hLen || !nLen) 67 if (!needle || !haystack || !hLen || !nLen)
68 return 0; 68 return 0;
69 69
70 const char* hsearch = haystack; 70 const char* hsearch = haystack;
71 71
72 if ((needleChar = *needle++) != 0) { 72 if ((needleChar = *needle++) != 0) {
73 nLen--; //(to make up for needle++) 73 nLen--; //(to make up for needle++)
74 do { 74 do {
75 do { 75 do {
76 if ((haystackChar = *hsearch++) == 0) 76 if ((haystackChar = *hsearch++) == 0)
77 return (0); 77 return (0);
78 if (hsearch >= haystack + hLen) 78 if (hsearch >= haystack + hLen)
79 return (0); 79 return (0);
80 } while (haystackChar != needleChar); 80 } while (haystackChar != needleChar);
81 } while (strncmp(hsearch, needle, QMIN(hLen - (hsearch - haystack), nLen)) != 0); 81 } while (strncmp(hsearch, needle, QMIN(hLen - (hsearch - haystack), nLen)) != 0);
82 hsearch--; 82 hsearch--;
83 } 83 }
84 return ((char *)hsearch); 84 return ((char *)hsearch);
85} 85}
86} 86}
87 87
88namespace { 88namespace {
89 time_t start, end, created, rp_end; 89 time_t start, end, created, rp_end;
90 OPimRecurrence* rec; 90 OPimRecurrence* rec;
91 static OPimRecurrence* recur() { 91 static OPimRecurrence* recur() {
92 if (!rec) 92 if (!rec)
93 rec = new OPimRecurrence; 93 rec = new OPimRecurrence;
94 94
95 return rec; 95 return rec;
96 } 96 }
97 int alarmTime; 97 int alarmTime;
98 int snd; 98 int snd;
99 enum Attribute{ 99 enum Attribute{
100 FDescription = 0, 100 FDescription = 0,
101 FLocation, 101 FLocation,
102 FCategories, 102 FCategories,
103 FUid, 103 FUid,
104 FType, 104 FType,
105 FAlarm, 105 FAlarm,
106 FSound, 106 FSound,
107 FRType, 107 FRType,
108 FRWeekdays, 108 FRWeekdays,
109 FRPosition, 109 FRPosition,
110 FRFreq, 110 FRFreq,
111 FRHasEndDate, 111 FRHasEndDate,
112 FREndDate, 112 FREndDate,
113 FRStart, 113 FRStart,
114 FREnd, 114 FREnd,
115 FNote, 115 FNote,
116 FCreated, // Should't this be called FRCreated ? 116 FCreated, // Should't this be called FRCreated ?
117 FTimeZone, 117 FTimeZone,
118 FRecParent, 118 FRecParent,
119 FRecChildren, 119 FRecChildren,
120 FExceptions 120 FExceptions
121 }; 121 };
122 122
123 // FIXME: Use OPimEvent::toMap() here !! (eilers) 123 // FIXME: Use OPimEvent::toMap() here !! (eilers)
124 static void save( const OPimEvent& ev, QString& buf ) { 124 static void save( const OPimEvent& ev, QString& buf ) {
125 buf += " description=\"" + Qtopia::escapeString(ev.description() ) + "\""; 125 buf += " description=\"" + Qtopia::escapeString(ev.description() ) + "\"";
126 if (!ev.location().isEmpty() ) 126 if (!ev.location().isEmpty() )
127 buf += " location=\"" + Qtopia::escapeString(ev.location() ) + "\""; 127 buf += " location=\"" + Qtopia::escapeString(ev.location() ) + "\"";
128 128
129 if (!ev.categories().isEmpty() ) 129 if (!ev.categories().isEmpty() )
130 buf += " categories=\""+ Qtopia::escapeString( Qtopia::Record::idsToString( ev.categories() ) ) + "\""; 130 buf += " categories=\""+ Qtopia::escapeString( Qtopia::Record::idsToString( ev.categories() ) ) + "\"";
131 131
132 buf += " uid=\"" + QString::number( ev.uid() ) + "\""; 132 buf += " uid=\"" + QString::number( ev.uid() ) + "\"";
133 133
134 if (ev.isAllDay() ) 134 if (ev.isAllDay() )
135 buf += " type=\"AllDay\""; // is that all ?? (eilers) 135 buf += " type=\"AllDay\""; // is that all ?? (eilers)
136 136
137 if (ev.hasNotifiers() ) { 137 if (ev.hasNotifiers() ) {
138 OPimAlarm alarm = ev.notifiers().alarms()[0]; // take only the first 138 OPimAlarm alarm = ev.notifiers().alarms()[0]; // take only the first
139 int minutes = alarm.dateTime().secsTo( ev.startDateTime() ) / 60; 139 int minutes = alarm.dateTime().secsTo( ev.startDateTime() ) / 60;
140 buf += " alarm=\"" + QString::number(minutes) + "\" sound=\""; 140 buf += " alarm=\"" + QString::number(minutes) + "\" sound=\"";
141 if ( alarm.sound() == OPimAlarm::Loud ) 141 if ( alarm.sound() == OPimAlarm::Loud )
142 buf += "loud"; 142 buf += "loud";
143 else 143 else
144 buf += "silent"; 144 buf += "silent";
145 buf += "\""; 145 buf += "\"";
146 } 146 }
147 if ( ev.hasRecurrence() ) { 147 if ( ev.hasRecurrence() ) {
148 buf += ev.recurrence().toString(); 148 buf += ev.recurrence().toString();
149 } 149 }
150 150
151 /* 151 /*
152 * fscking timezones :) well, we'll first convert 152 * fscking timezones :) well, we'll first convert
153 * the QDateTime to a QDateTime in UTC time 153 * the QDateTime to a QDateTime in UTC time
154 * and then we'll create a nice time_t 154 * and then we'll create a nice time_t
155 */ 155 */
156 OPimTimeZone zone( (ev.timeZone().isEmpty()||ev.isAllDay()) ? OPimTimeZone::utc() : OPimTimeZone::current() ); 156 OPimTimeZone zone( (ev.timeZone().isEmpty()||ev.isAllDay()) ? OPimTimeZone::utc() : OPimTimeZone::current() );
157 buf += " start=\"" + QString::number( zone.fromDateTime( ev.startDateTime())) + "\""; 157 buf += " start=\"" + QString::number( zone.fromDateTime( ev.startDateTime())) + "\"";
158 buf += " end=\"" + QString::number( zone.fromDateTime( ev.endDateTime() )) + "\""; 158 buf += " end=\"" + QString::number( zone.fromDateTime( ev.endDateTime() )) + "\"";
159 if (!ev.note().isEmpty() ) { 159 if (!ev.note().isEmpty() ) {
160 buf += " note=\"" + Qtopia::escapeString( ev.note() ) + "\""; 160 buf += " note=\"" + Qtopia::escapeString( ev.note() ) + "\"";
161 } 161 }
162 162
163 /* 163 /*
164 * Don't save a timezone if AllDay Events 164 * Don't save a timezone if AllDay Events
165 * as they're UTC only anyway 165 * as they're UTC only anyway
166 */ 166 */
167 if (!ev.isAllDay() ) { 167 if (!ev.isAllDay() ) {
168 168
169 buf += " timezone=\""; 169 buf += " timezone=\"";
170 if ( ev.timeZone().isEmpty() ) 170 if ( ev.timeZone().isEmpty() )
171 buf += "None"; 171 buf += "None";
172 else 172 else
173 buf += ev.timeZone(); 173 buf += ev.timeZone();
174 buf += "\""; 174 buf += "\"";
175 } 175 }
176 176
177 if (ev.parent() != 0 ) { 177 if (ev.parent() != 0 ) {
178 buf += " recparent=\""+QString::number(ev.parent() )+"\""; 178 buf += " recparent=\""+QString::number(ev.parent() )+"\"";
179 } 179 }
180 180
181 if (ev.children().count() != 0 ) { 181 if (ev.children().count() != 0 ) {
182 QArray<int> children = ev.children(); 182 QArray<int> children = ev.children();
183 buf += " recchildren=\""; 183 buf += " recchildren=\"";
184 for ( uint i = 0; i < children.count(); i++ ) { 184 for ( uint i = 0; i < children.count(); i++ ) {
185 if ( i != 0 ) buf += " "; 185 if ( i != 0 ) buf += " ";
186 buf += QString::number( children[i] ); 186 buf += QString::number( children[i] );
187 } 187 }
188 buf+= "\""; 188 buf+= "\"";
189 } 189 }
190 190
191 // skip custom writing 191 // skip custom writing
192 } 192 }
193 193
194 static bool saveEachEvent( const QMap<int, OPimEvent>& list, QFile& file ) { 194 static bool saveEachEvent( const QMap<int, OPimEvent>& list, QFile& file ) {
195 QMap<int, OPimEvent>::ConstIterator it; 195 QMap<int, OPimEvent>::ConstIterator it;
196 QString buf; 196 QString buf;
197 QCString str; 197 QCString str;
198 int total_written; 198 int total_written;
199 for ( it = list.begin(); it != list.end(); ++it ) { 199 for ( it = list.begin(); it != list.end(); ++it ) {
200 buf = "<event"; 200 buf = "<event";
201 save( it.data(), buf ); 201 save( it.data(), buf );
202 buf += " />\n"; 202 buf += " />\n";
203 str = buf.utf8(); 203 str = buf.utf8();
204 204
205 total_written = file.writeBlock(str.data(), str.length() ); 205 total_written = file.writeBlock(str.data(), str.length() );
206 if ( total_written != int(str.length() ) ) 206 if ( total_written != int(str.length() ) )
207 return false; 207 return false;
208 } 208 }
209 return true; 209 return true;
210 } 210 }
211} 211}
212 212
213namespace Opie { 213namespace Opie {
214ODateBookAccessBackend_XML::ODateBookAccessBackend_XML( const QString& , 214ODateBookAccessBackend_XML::ODateBookAccessBackend_XML( const QString& ,
215 const QString& fileName ) 215 const QString& fileName )
216 : ODateBookAccessBackend() { 216 : ODateBookAccessBackend() {
217 m_name = fileName.isEmpty() ? Global::applicationFileName( "datebook", "datebook.xml" ) : fileName; 217 m_name = fileName.isEmpty() ? Global::applicationFileName( "datebook", "datebook.xml" ) : fileName;
218 m_changed = false; 218 m_changed = false;
219} 219}
220ODateBookAccessBackend_XML::~ODateBookAccessBackend_XML() { 220ODateBookAccessBackend_XML::~ODateBookAccessBackend_XML() {
221} 221}
222bool ODateBookAccessBackend_XML::load() { 222bool ODateBookAccessBackend_XML::load() {
223 return loadFile(); 223 return loadFile();
224} 224}
225bool ODateBookAccessBackend_XML::reload() { 225bool ODateBookAccessBackend_XML::reload() {
226 clear(); 226 clear();
227 return load(); 227 return load();
228} 228}
229bool ODateBookAccessBackend_XML::save() { 229bool ODateBookAccessBackend_XML::save() {
230 if (!m_changed) return true; 230 if (!m_changed) return true;
231 231
232 int total_written; 232 int total_written;
233 QString strFileNew = m_name + ".new"; 233 QString strFileNew = m_name + ".new";
234 234
235 QFile f( strFileNew ); 235 QFile f( strFileNew );
236 if (!f.open( IO_WriteOnly | IO_Raw ) ) return false; 236 if (!f.open( IO_WriteOnly | IO_Raw ) ) return false;
237 237
238 QString buf( "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" ); 238 QString buf( "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" );
239 buf += "<!DOCTYPE DATEBOOK><DATEBOOK>\n"; 239 buf += "<!DOCTYPE DATEBOOK><DATEBOOK>\n";
240 buf += "<events>\n"; 240 buf += "<events>\n";
241 QCString str = buf.utf8(); 241 QCString str = buf.utf8();
242 total_written = f.writeBlock( str.data(), str.length() ); 242 total_written = f.writeBlock( str.data(), str.length() );
243 if ( total_written != int(str.length() ) ) { 243 if ( total_written != int(str.length() ) ) {
244 f.close(); 244 f.close();
245 QFile::remove( strFileNew ); 245 QFile::remove( strFileNew );
246 return false; 246 return false;
247 } 247 }
248 248
249 if (!saveEachEvent( m_raw, f ) ) { 249 if (!saveEachEvent( m_raw, f ) ) {
250 f.close(); 250 f.close();
251 QFile::remove( strFileNew ); 251 QFile::remove( strFileNew );
252 return false; 252 return false;
253 } 253 }
254 if (!saveEachEvent( m_rep, f ) ) { 254 if (!saveEachEvent( m_rep, f ) ) {
255 f.close(); 255 f.close();
256 QFile::remove( strFileNew ); 256 QFile::remove( strFileNew );
257 return false; 257 return false;
258 } 258 }
259 259
260 buf = "</events>\n</DATEBOOK>\n"; 260 buf = "</events>\n</DATEBOOK>\n";
261 str = buf.utf8(); 261 str = buf.utf8();
262 total_written = f.writeBlock( str.data(), str.length() ); 262 total_written = f.writeBlock( str.data(), str.length() );
263 if ( total_written != int(str.length() ) ) { 263 if ( total_written != int(str.length() ) ) {
264 f.close(); 264 f.close();
265 QFile::remove( strFileNew ); 265 QFile::remove( strFileNew );
266 return false; 266 return false;
267 } 267 }
268 f.close(); 268 f.close();
269 269
270 if ( ::rename( strFileNew, m_name ) < 0 ) { 270 if ( ::rename( strFileNew, m_name ) < 0 ) {
271 QFile::remove( strFileNew ); 271 QFile::remove( strFileNew );
272 return false; 272 return false;
273 } 273 }
274 274
275 m_changed = false; 275 m_changed = false;
276 return true; 276 return true;
277} 277}
278QArray<int> ODateBookAccessBackend_XML::allRecords()const { 278QArray<int> ODateBookAccessBackend_XML::allRecords()const {
279 QArray<int> ints( m_raw.count()+ m_rep.count() ); 279 QArray<int> ints( m_raw.count()+ m_rep.count() );
280 uint i = 0; 280 uint i = 0;
281 QMap<int, OPimEvent>::ConstIterator it; 281 QMap<int, OPimEvent>::ConstIterator it;
282 282
283 for ( it = m_raw.begin(); it != m_raw.end(); ++it ) { 283 for ( it = m_raw.begin(); it != m_raw.end(); ++it ) {
284 ints[i] = it.key(); 284 ints[i] = it.key();
285 i++; 285 i++;
286 } 286 }
287 for ( it = m_rep.begin(); it != m_rep.end(); ++it ) { 287 for ( it = m_rep.begin(); it != m_rep.end(); ++it ) {
288 ints[i] = it.key(); 288 ints[i] = it.key();
289 i++; 289 i++;
290 } 290 }
291 291
292 return ints; 292 return ints;
293} 293}
294QArray<int> ODateBookAccessBackend_XML::queryByExample(const OPimEvent&, int, const QDateTime& ) { 294QArray<int> ODateBookAccessBackend_XML::queryByExample(const OPimEvent&, int, const QDateTime& ) const {
295 return QArray<int>(); 295 return QArray<int>();
296} 296}
297void ODateBookAccessBackend_XML::clear() { 297void ODateBookAccessBackend_XML::clear() {
298 m_changed = true; 298 m_changed = true;
299 m_raw.clear(); 299 m_raw.clear();
300 m_rep.clear(); 300 m_rep.clear();
301} 301}
302OPimEvent ODateBookAccessBackend_XML::find( int uid ) const{ 302OPimEvent ODateBookAccessBackend_XML::find( int uid ) const{
303 if ( m_raw.contains( uid ) ) 303 if ( m_raw.contains( uid ) )
304 return m_raw[uid]; 304 return m_raw[uid];
305 else 305 else
306 return m_rep[uid]; 306 return m_rep[uid];
307} 307}
308bool ODateBookAccessBackend_XML::add( const OPimEvent& ev ) { 308bool ODateBookAccessBackend_XML::add( const OPimEvent& ev ) {
309 m_changed = true; 309 m_changed = true;
310 if (ev.hasRecurrence() ) 310 if (ev.hasRecurrence() )
311 m_rep.insert( ev.uid(), ev ); 311 m_rep.insert( ev.uid(), ev );
312 else 312 else
313 m_raw.insert( ev.uid(), ev ); 313 m_raw.insert( ev.uid(), ev );
314 314
315 return true; 315 return true;
316} 316}
317bool ODateBookAccessBackend_XML::remove( int uid ) { 317bool ODateBookAccessBackend_XML::remove( int uid ) {
318 m_changed = true; 318 m_changed = true;
319 m_raw.remove( uid ); 319 m_raw.remove( uid );
320 m_rep.remove( uid ); 320 m_rep.remove( uid );
321 321
322 return true; 322 return true;
323} 323}
324bool ODateBookAccessBackend_XML::replace( const OPimEvent& ev ) { 324bool ODateBookAccessBackend_XML::replace( const OPimEvent& ev ) {
325 replace( ev.uid() ); // ??? Shouldn't this be "remove( ev.uid() ) ??? (eilers) 325 replace( ev.uid() ); // ??? Shouldn't this be "remove( ev.uid() ) ??? (eilers)
326 return add( ev ); 326 return add( ev );
327} 327}
328 328
329QArray<int> ODateBookAccessBackend_XML::rawRepeats()const { 329QArray<int> ODateBookAccessBackend_XML::rawRepeats()const {
330 QArray<int> ints( m_rep.count() ); 330 QArray<int> ints( m_rep.count() );
331 uint i = 0; 331 uint i = 0;
332 QMap<int, OPimEvent>::ConstIterator it; 332 QMap<int, OPimEvent>::ConstIterator it;
333 333
334 for ( it = m_rep.begin(); it != m_rep.end(); ++it ) { 334 for ( it = m_rep.begin(); it != m_rep.end(); ++it ) {
335 ints[i] = it.key(); 335 ints[i] = it.key();
336 i++; 336 i++;
337 } 337 }
338 338
339 return ints; 339 return ints;
340} 340}
341QArray<int> ODateBookAccessBackend_XML::nonRepeats()const { 341QArray<int> ODateBookAccessBackend_XML::nonRepeats()const {
342 QArray<int> ints( m_raw.count() ); 342 QArray<int> ints( m_raw.count() );
343 uint i = 0; 343 uint i = 0;
344 QMap<int, OPimEvent>::ConstIterator it; 344 QMap<int, OPimEvent>::ConstIterator it;
345 345
346 for ( it = m_raw.begin(); it != m_raw.end(); ++it ) { 346 for ( it = m_raw.begin(); it != m_raw.end(); ++it ) {
347 ints[i] = it.key(); 347 ints[i] = it.key();
348 i++; 348 i++;
349 } 349 }
350 350
351 return ints; 351 return ints;
352} 352}
353OPimEvent::ValueList ODateBookAccessBackend_XML::directNonRepeats()const { 353OPimEvent::ValueList ODateBookAccessBackend_XML::directNonRepeats()const {
354 OPimEvent::ValueList list; 354 OPimEvent::ValueList list;
355 QMap<int, OPimEvent>::ConstIterator it; 355 QMap<int, OPimEvent>::ConstIterator it;
356 for (it = m_raw.begin(); it != m_raw.end(); ++it ) 356 for (it = m_raw.begin(); it != m_raw.end(); ++it )
357 list.append( it.data() ); 357 list.append( it.data() );
358 358
359 return list; 359 return list;
360} 360}
361OPimEvent::ValueList ODateBookAccessBackend_XML::directRawRepeats()const { 361OPimEvent::ValueList ODateBookAccessBackend_XML::directRawRepeats()const {
362 OPimEvent::ValueList list; 362 OPimEvent::ValueList list;
363 QMap<int, OPimEvent>::ConstIterator it; 363 QMap<int, OPimEvent>::ConstIterator it;
364 for (it = m_rep.begin(); it != m_rep.end(); ++it ) 364 for (it = m_rep.begin(); it != m_rep.end(); ++it )
365 list.append( it.data() ); 365 list.append( it.data() );
366 366
367 return list; 367 return list;
368} 368}
369 369
370// FIXME: Use OPimEvent::fromMap() (eilers) 370// FIXME: Use OPimEvent::fromMap() (eilers)
371bool ODateBookAccessBackend_XML::loadFile() { 371bool ODateBookAccessBackend_XML::loadFile() {
372 m_changed = false; 372 m_changed = false;
373 373
374 int fd = ::open( QFile::encodeName(m_name).data(), O_RDONLY ); 374 int fd = ::open( QFile::encodeName(m_name).data(), O_RDONLY );
375 if ( fd < 0 ) return false; 375 if ( fd < 0 ) return false;
376 376
377 struct stat attribute; 377 struct stat attribute;
378 if ( ::fstat(fd, &attribute ) == -1 ) { 378 if ( ::fstat(fd, &attribute ) == -1 ) {
379 ::close( fd ); 379 ::close( fd );
380 return false; 380 return false;
381 } 381 }
382 void* map_addr = ::mmap(NULL, attribute.st_size, PROT_READ, MAP_SHARED, fd, 0 ); 382 void* map_addr = ::mmap(NULL, attribute.st_size, PROT_READ, MAP_SHARED, fd, 0 );
383 if ( map_addr == ( (caddr_t)-1) ) { 383 if ( map_addr == ( (caddr_t)-1) ) {
384 ::close( fd ); 384 ::close( fd );
385 return false; 385 return false;
386 } 386 }
387 387
388 ::madvise( map_addr, attribute.st_size, MADV_SEQUENTIAL ); 388 ::madvise( map_addr, attribute.st_size, MADV_SEQUENTIAL );
389 ::close( fd ); 389 ::close( fd );
390 390
391 QAsciiDict<int> dict(FExceptions+1); 391 QAsciiDict<int> dict(FExceptions+1);
392 dict.setAutoDelete( true ); 392 dict.setAutoDelete( true );
393 dict.insert( "description", new int(FDescription) ); 393 dict.insert( "description", new int(FDescription) );
394 dict.insert( "location", new int(FLocation) ); 394 dict.insert( "location", new int(FLocation) );
395 dict.insert( "categories", new int(FCategories) ); 395 dict.insert( "categories", new int(FCategories) );
396 dict.insert( "uid", new int(FUid) ); 396 dict.insert( "uid", new int(FUid) );
397 dict.insert( "type", new int(FType) ); 397 dict.insert( "type", new int(FType) );
398 dict.insert( "alarm", new int(FAlarm) ); 398 dict.insert( "alarm", new int(FAlarm) );
399 dict.insert( "sound", new int(FSound) ); 399 dict.insert( "sound", new int(FSound) );
400 dict.insert( "rtype", new int(FRType) ); 400 dict.insert( "rtype", new int(FRType) );
401 dict.insert( "rweekdays", new int(FRWeekdays) ); 401 dict.insert( "rweekdays", new int(FRWeekdays) );
402 dict.insert( "rposition", new int(FRPosition) ); 402 dict.insert( "rposition", new int(FRPosition) );
403 dict.insert( "rfreq", new int(FRFreq) ); 403 dict.insert( "rfreq", new int(FRFreq) );
404 dict.insert( "rhasenddate", new int(FRHasEndDate) ); 404 dict.insert( "rhasenddate", new int(FRHasEndDate) );
405 dict.insert( "enddt", new int(FREndDate) ); 405 dict.insert( "enddt", new int(FREndDate) );
406 dict.insert( "start", new int(FRStart) ); 406 dict.insert( "start", new int(FRStart) );
407 dict.insert( "end", new int(FREnd) ); 407 dict.insert( "end", new int(FREnd) );
408 dict.insert( "note", new int(FNote) ); 408 dict.insert( "note", new int(FNote) );
409 dict.insert( "created", new int(FCreated) ); // Shouldn't this be FRCreated ?? 409 dict.insert( "created", new int(FCreated) ); // Shouldn't this be FRCreated ??
410 dict.insert( "recparent", new int(FRecParent) ); 410 dict.insert( "recparent", new int(FRecParent) );
411 dict.insert( "recchildren", new int(FRecChildren) ); 411 dict.insert( "recchildren", new int(FRecChildren) );
412 dict.insert( "exceptions", new int(FExceptions) ); 412 dict.insert( "exceptions", new int(FExceptions) );
413 dict.insert( "timezone", new int(FTimeZone) ); 413 dict.insert( "timezone", new int(FTimeZone) );
414 414
415 415
416 // initialiaze db hack 416 // initialiaze db hack
417 m_noTimeZone = true; 417 m_noTimeZone = true;
418 418
419 char* dt = (char*)map_addr; 419 char* dt = (char*)map_addr;
420 int len = attribute.st_size; 420 int len = attribute.st_size;
421 int i = 0; 421 int i = 0;
422 char* point; 422 char* point;
423 const char* collectionString = "<event "; 423 const char* collectionString = "<event ";
424 int strLen = ::strlen(collectionString); 424 int strLen = ::strlen(collectionString);
425 int *find; 425 int *find;
426 while ( ( point = ::strstrlen( dt+i, len -i, collectionString, strLen ) ) != 0 ) { 426 while ( ( point = ::strstrlen( dt+i, len -i, collectionString, strLen ) ) != 0 ) {
427 i = point -dt; 427 i = point -dt;
428 i+= strLen; 428 i+= strLen;
429 429
430 alarmTime = -1; 430 alarmTime = -1;
431 snd = 0; // silent 431 snd = 0; // silent
432 432
433 OPimEvent ev; 433 OPimEvent ev;
434 rec = 0; 434 rec = 0;
435 435
436 while ( TRUE ) { 436 while ( TRUE ) {
437 while ( i < len && (dt[i] == ' ' || dt[i] == '\n' || dt[i] == '\r') ) 437 while ( i < len && (dt[i] == ' ' || dt[i] == '\n' || dt[i] == '\r') )
438 ++i; 438 ++i;
439 if ( i >= len-2 || (dt[i] == '/' && dt[i+1] == '>') ) 439 if ( i >= len-2 || (dt[i] == '/' && dt[i+1] == '>') )
440 break; 440 break;
441 441
442 442
443 // we have another attribute, read it. 443 // we have another attribute, read it.
444 int j = i; 444 int j = i;
445 while ( j < len && dt[j] != '=' ) 445 while ( j < len && dt[j] != '=' )
446 ++j; 446 ++j;
447 QCString attr( dt+i, j-i+1); 447 QCString attr( dt+i, j-i+1);
448 448
449 i = ++j; // skip = 449 i = ++j; // skip =
450 450
451 // find the start of quotes 451 // find the start of quotes
452 while ( i < len && dt[i] != '"' ) 452 while ( i < len && dt[i] != '"' )
453 ++i; 453 ++i;
454 j = ++i; 454 j = ++i;
455 455
456 bool haveUtf = FALSE; 456 bool haveUtf = FALSE;
457 bool haveEnt = FALSE; 457 bool haveEnt = FALSE;
458 while ( j < len && dt[j] != '"' ) { 458 while ( j < len && dt[j] != '"' ) {
459 if ( ((unsigned char)dt[j]) > 0x7f ) 459 if ( ((unsigned char)dt[j]) > 0x7f )
460 haveUtf = TRUE; 460 haveUtf = TRUE;
461 if ( dt[j] == '&' ) 461 if ( dt[j] == '&' )
462 haveEnt = TRUE; 462 haveEnt = TRUE;
463 ++j; 463 ++j;
464 } 464 }
465 if ( i == j ) { 465 if ( i == j ) {
466 // empty value 466 // empty value
467 i = j + 1; 467 i = j + 1;
468 continue; 468 continue;
469 } 469 }
470 470
471 QCString value( dt+i, j-i+1 ); 471 QCString value( dt+i, j-i+1 );
472 i = j + 1; 472 i = j + 1;
473 473
474 QString str = (haveUtf ? QString::fromUtf8( value ) 474 QString str = (haveUtf ? QString::fromUtf8( value )
475 : QString::fromLatin1( value ) ); 475 : QString::fromLatin1( value ) );
476 if ( haveEnt ) 476 if ( haveEnt )
477 str = Qtopia::plainString( str ); 477 str = Qtopia::plainString( str );
478 478
479 /* 479 /*
480 * add key + value 480 * add key + value
481 */ 481 */
482 find = dict[attr.data()]; 482 find = dict[attr.data()];
483 if (!find) 483 if (!find)
484 ev.setCustomField( attr, str ); 484 ev.setCustomField( attr, str );
485 else { 485 else {
486 setField( ev, *find, str ); 486 setField( ev, *find, str );
487 } 487 }
488 } 488 }
489 /* time to finalize */ 489 /* time to finalize */
490 finalizeRecord( ev ); 490 finalizeRecord( ev );
491 delete rec; 491 delete rec;
492 m_noTimeZone = true; 492 m_noTimeZone = true;
493 } 493 }
494 ::munmap(map_addr, attribute.st_size ); 494 ::munmap(map_addr, attribute.st_size );
495 m_changed = false; // changed during add 495 m_changed = false; // changed during add
496 496
497 return true; 497 return true;
498} 498}
499 499
500// FIXME: Use OPimEvent::fromMap() which makes this obsolete.. (eilers) 500// FIXME: Use OPimEvent::fromMap() which makes this obsolete.. (eilers)
501void ODateBookAccessBackend_XML::finalizeRecord( OPimEvent& ev ) { 501void ODateBookAccessBackend_XML::finalizeRecord( OPimEvent& ev ) {
502 502
503 /* 503 /*
504 * quirk to import datebook files. They normally don't have a 504 * quirk to import datebook files. They normally don't have a
505 * timeZone attribute and we treat this as to use OPimTimeZone::current() 505 * timeZone attribute and we treat this as to use OPimTimeZone::current()
506 */ 506 */
507 if (m_noTimeZone ) 507 if (m_noTimeZone )
508 ev.setTimeZone( OPimTimeZone::current().timeZone() ); 508 ev.setTimeZone( OPimTimeZone::current().timeZone() );
509 509
510 510
511 511
512 /* AllDay is alway in UTC */ 512 /* AllDay is alway in UTC */
513 if ( ev.isAllDay() ) { 513 if ( ev.isAllDay() ) {
514 OPimTimeZone utc = OPimTimeZone::utc(); 514 OPimTimeZone utc = OPimTimeZone::utc();
515 ev.setStartDateTime( utc.toDateTime( start ) ); 515 ev.setStartDateTime( utc.toDateTime( start ) );
516 ev.setEndDateTime ( utc.toDateTime( end ) ); 516 ev.setEndDateTime ( utc.toDateTime( end ) );
517 }else { 517 }else {
518 /* to current date time */ 518 /* to current date time */
519 OPimTimeZone to_zone( ev.timeZone().isEmpty() ? OPimTimeZone::utc() : OPimTimeZone::current() ); 519 OPimTimeZone to_zone( ev.timeZone().isEmpty() ? OPimTimeZone::utc() : OPimTimeZone::current() );
520 520
521 ev.setStartDateTime(to_zone.toDateTime( start)); 521 ev.setStartDateTime(to_zone.toDateTime( start));
522 ev.setEndDateTime (to_zone.toDateTime( end)); 522 ev.setEndDateTime (to_zone.toDateTime( end));
523 } 523 }
524 if ( rec && rec->doesRecur() ) { 524 if ( rec && rec->doesRecur() ) {
525 OPimTimeZone utc = OPimTimeZone::utc(); 525 OPimTimeZone utc = OPimTimeZone::utc();
526 OPimRecurrence recu( *rec ); // call copy c'tor; 526 OPimRecurrence recu( *rec ); // call copy c'tor;
527 recu.setEndDate ( utc.toDateTime( rp_end ).date() ); 527 recu.setEndDate ( utc.toDateTime( rp_end ).date() );
528 recu.setCreatedDateTime( utc.toDateTime( created ) ); 528 recu.setCreatedDateTime( utc.toDateTime( created ) );
529 recu.setStart( ev.startDateTime().date() ); 529 recu.setStart( ev.startDateTime().date() );
530 ev.setRecurrence( recu ); 530 ev.setRecurrence( recu );
531 } 531 }
532 532
533 if (alarmTime != -1 ) { 533 if (alarmTime != -1 ) {
534 QDateTime dt = ev.startDateTime().addSecs( -1*alarmTime*60 ); 534 QDateTime dt = ev.startDateTime().addSecs( -1*alarmTime*60 );
535 OPimAlarm al( snd , dt ); 535 OPimAlarm al( snd , dt );
536 ev.notifiers().add( al ); 536 ev.notifiers().add( al );
537 } 537 }
538 if ( m_raw.contains( ev.uid() ) || m_rep.contains( ev.uid() ) ) { 538 if ( m_raw.contains( ev.uid() ) || m_rep.contains( ev.uid() ) ) {
539 ev.setUid( 1 ); 539 ev.setUid( 1 );
540 } 540 }
541 541
542 if ( ev.hasRecurrence() ) 542 if ( ev.hasRecurrence() )
543 m_rep.insert( ev.uid(), ev ); 543 m_rep.insert( ev.uid(), ev );
544 else 544 else
545 m_raw.insert( ev.uid(), ev ); 545 m_raw.insert( ev.uid(), ev );
546 546
547} 547}
548void ODateBookAccessBackend_XML::setField( OPimEvent& e, int id, const QString& value) { 548void ODateBookAccessBackend_XML::setField( OPimEvent& e, int id, const QString& value) {
549 switch( id ) { 549 switch( id ) {
550 case FDescription: 550 case FDescription:
551 e.setDescription( value ); 551 e.setDescription( value );
552 break; 552 break;
553 case FLocation: 553 case FLocation:
554 e.setLocation( value ); 554 e.setLocation( value );
555 break; 555 break;
556 case FCategories: 556 case FCategories:
557 e.setCategories( e.idsFromString( value ) ); 557 e.setCategories( e.idsFromString( value ) );
558 break; 558 break;
559 case FUid: 559 case FUid:
560 e.setUid( value.toInt() ); 560 e.setUid( value.toInt() );
561 break; 561 break;
562 case FType: 562 case FType:
563 if ( value == "AllDay" ) { 563 if ( value == "AllDay" ) {
564 e.setAllDay( true ); 564 e.setAllDay( true );
565 } 565 }
566 break; 566 break;
567 case FAlarm: 567 case FAlarm:
568 alarmTime = value.toInt(); 568 alarmTime = value.toInt();
569 break; 569 break;
570 case FSound: 570 case FSound:
571 snd = value == "loud" ? OPimAlarm::Loud : OPimAlarm::Silent; 571 snd = value == "loud" ? OPimAlarm::Loud : OPimAlarm::Silent;
572 break; 572 break;
573 // recurrence stuff 573 // recurrence stuff
574 case FRType: 574 case FRType:
575 if ( value == "Daily" ) 575 if ( value == "Daily" )
576 recur()->setType( OPimRecurrence::Daily ); 576 recur()->setType( OPimRecurrence::Daily );
577 else if ( value == "Weekly" ) 577 else if ( value == "Weekly" )
578 recur()->setType( OPimRecurrence::Weekly); 578 recur()->setType( OPimRecurrence::Weekly);
579 else if ( value == "MonthlyDay" ) 579 else if ( value == "MonthlyDay" )
580 recur()->setType( OPimRecurrence::MonthlyDay ); 580 recur()->setType( OPimRecurrence::MonthlyDay );
581 else if ( value == "MonthlyDate" ) 581 else if ( value == "MonthlyDate" )
582 recur()->setType( OPimRecurrence::MonthlyDate ); 582 recur()->setType( OPimRecurrence::MonthlyDate );
583 else if ( value == "Yearly" ) 583 else if ( value == "Yearly" )
584 recur()->setType( OPimRecurrence::Yearly ); 584 recur()->setType( OPimRecurrence::Yearly );
585 else 585 else
586 recur()->setType( OPimRecurrence::NoRepeat ); 586 recur()->setType( OPimRecurrence::NoRepeat );
587 break; 587 break;
588 case FRWeekdays: 588 case FRWeekdays:
589 recur()->setDays( value.toInt() ); 589 recur()->setDays( value.toInt() );
590 break; 590 break;
591 case FRPosition: 591 case FRPosition:
592 recur()->setPosition( value.toInt() ); 592 recur()->setPosition( value.toInt() );
593 break; 593 break;
594 case FRFreq: 594 case FRFreq:
595 recur()->setFrequency( value.toInt() ); 595 recur()->setFrequency( value.toInt() );
596 break; 596 break;
597 case FRHasEndDate: 597 case FRHasEndDate:
598 recur()->setHasEndDate( value.toInt() ); 598 recur()->setHasEndDate( value.toInt() );
599 break; 599 break;
600 case FREndDate: { 600 case FREndDate: {
601 rp_end = (time_t) value.toLong(); 601 rp_end = (time_t) value.toLong();
602 break; 602 break;
603 } 603 }
604 case FRStart: { 604 case FRStart: {
605 start = (time_t) value.toLong(); 605 start = (time_t) value.toLong();
606 break; 606 break;
607 } 607 }
608 case FREnd: { 608 case FREnd: {
609 end = ( (time_t) value.toLong() ); 609 end = ( (time_t) value.toLong() );
610 break; 610 break;
611 } 611 }
612 case FNote: 612 case FNote:
613 e.setNote( value ); 613 e.setNote( value );
614 break; 614 break;
615 case FCreated: 615 case FCreated:
616 created = value.toInt(); 616 created = value.toInt();
617 break; 617 break;
618 case FRecParent: 618 case FRecParent:
619 e.setParent( value.toInt() ); 619 e.setParent( value.toInt() );
620 break; 620 break;
621 case FRecChildren:{ 621 case FRecChildren:{
622 QStringList list = QStringList::split(' ', value ); 622 QStringList list = QStringList::split(' ', value );
623 for ( QStringList::Iterator it = list.begin(); it != list.end(); ++it ) { 623 for ( QStringList::Iterator it = list.begin(); it != list.end(); ++it ) {
624 e.addChild( (*it).toInt() ); 624 e.addChild( (*it).toInt() );
625 } 625 }
626 } 626 }
627 break; 627 break;
628 case FExceptions:{ 628 case FExceptions:{
629 QStringList list = QStringList::split(' ', value ); 629 QStringList list = QStringList::split(' ', value );
630 for (QStringList::Iterator it = list.begin(); it != list.end(); ++it ) { 630 for (QStringList::Iterator it = list.begin(); it != list.end(); ++it ) {
631 QDate date( (*it).left(4).toInt(), (*it).mid(4, 2).toInt(), (*it).right(2).toInt() ); 631 QDate date( (*it).left(4).toInt(), (*it).mid(4, 2).toInt(), (*it).right(2).toInt() );
632 recur()->exceptions().append( date ); 632 recur()->exceptions().append( date );
633 } 633 }
634 } 634 }
635 break; 635 break;
636 case FTimeZone: 636 case FTimeZone:
637 m_noTimeZone = false; 637 m_noTimeZone = false;
638 if ( value != "None" ) 638 if ( value != "None" )
639 e.setTimeZone( value ); 639 e.setTimeZone( value );
640 break; 640 break;
641 default: 641 default:
642 break; 642 break;
643 } 643 }
644} 644}
645QArray<int> ODateBookAccessBackend_XML::matchRegexp( const QRegExp &r ) const 645QArray<int> ODateBookAccessBackend_XML::matchRegexp( const QRegExp &r ) const
646{ 646{
647 QArray<int> m_currentQuery( m_raw.count()+ m_rep.count() ); 647 QArray<int> m_currentQuery( m_raw.count()+ m_rep.count() );
648 uint arraycounter = 0; 648 uint arraycounter = 0;
649 QMap<int, OPimEvent>::ConstIterator it; 649 QMap<int, OPimEvent>::ConstIterator it;
650 650
651 for ( it = m_raw.begin(); it != m_raw.end(); ++it ) 651 for ( it = m_raw.begin(); it != m_raw.end(); ++it )
652 if ( it.data().match( r ) ) 652 if ( it.data().match( r ) )
653 m_currentQuery[arraycounter++] = it.data().uid(); 653 m_currentQuery[arraycounter++] = it.data().uid();
654 for ( it = m_rep.begin(); it != m_rep.end(); ++it ) 654 for ( it = m_rep.begin(); it != m_rep.end(); ++it )
655 if ( it.data().match( r ) ) 655 if ( it.data().match( r ) )
656 m_currentQuery[arraycounter++] = it.data().uid(); 656 m_currentQuery[arraycounter++] = it.data().uid();
657 657
658 // Shrink to fit.. 658 // Shrink to fit..
659 m_currentQuery.resize(arraycounter); 659 m_currentQuery.resize(arraycounter);
660 660
661 return m_currentQuery; 661 return m_currentQuery;
662} 662}
663 663
664} 664}
diff --git a/libopie2/opiepim/backend/odatebookaccessbackend_xml.h b/libopie2/opiepim/backend/odatebookaccessbackend_xml.h
index cb19f76..7369c07 100644
--- a/libopie2/opiepim/backend/odatebookaccessbackend_xml.h
+++ b/libopie2/opiepim/backend/odatebookaccessbackend_xml.h
@@ -1,88 +1,88 @@
1/* 1/*
2 This file is part of the Opie Project 2 This file is part of the Opie Project
3 Copyright (C) Stefan Eilers (Eilers.Stefan@epost.de) 3 Copyright (C) Stefan Eilers (Eilers.Stefan@epost.de)
4 =. Copyright (C) The Opie Team <opie-devel@handhelds.org> 4 =. Copyright (C) The Opie Team <opie-devel@handhelds.org>
5 .=l. 5 .=l.
6 .>+-= 6 .>+-=
7 _;:, .> :=|. This program is free software; you can 7 _;:, .> :=|. This program is free software; you can
8.> <`_, > . <= redistribute it and/or modify it under 8.> <`_, > . <= redistribute it and/or modify it under
9:`=1 )Y*s>-.-- : the terms of the GNU Library General Public 9:`=1 )Y*s>-.-- : the terms of the GNU Library General Public
10.="- .-=="i, .._ License as published by the Free Software 10.="- .-=="i, .._ License as published by the Free Software
11 - . .-<_> .<> Foundation; either version 2 of the License, 11 - . .-<_> .<> Foundation; either version 2 of the License,
12 ._= =} : or (at your option) any later version. 12 ._= =} : or (at your option) any later version.
13 .%`+i> _;_. 13 .%`+i> _;_.
14 .i_,=:_. -<s. This program is distributed in the hope that 14 .i_,=:_. -<s. This program is distributed in the hope that
15 + . -:. = it will be useful, but WITHOUT ANY WARRANTY; 15 + . -:. = it will be useful, but WITHOUT ANY WARRANTY;
16 : .. .:, . . . without even the implied warranty of 16 : .. .:, . . . without even the implied warranty of
17 =_ + =;=|` MERCHANTABILITY or FITNESS FOR A 17 =_ + =;=|` MERCHANTABILITY or FITNESS FOR A
18 _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU 18 _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU
19..}^=.= = ; Library General Public License for more 19..}^=.= = ; Library General Public License for more
20++= -. .` .: details. 20++= -. .` .: details.
21 : = ...= . :.=- 21 : = ...= . :.=-
22 -. .:....=;==+<; You should have received a copy of the GNU 22 -. .:....=;==+<; You should have received a copy of the GNU
23 -_. . . )=. = Library General Public License along with 23 -_. . . )=. = Library General Public License along with
24 -- :-=` this library; see the file COPYING.LIB. 24 -- :-=` this library; see the file COPYING.LIB.
25 If not, write to the Free Software Foundation, 25 If not, write to the Free Software Foundation,
26 Inc., 59 Temple Place - Suite 330, 26 Inc., 59 Temple Place - Suite 330,
27 Boston, MA 02111-1307, USA. 27 Boston, MA 02111-1307, USA.
28*/ 28*/
29#ifndef OPIE_DATE_BOOK_ACCESS_BACKEND_XML__H 29#ifndef OPIE_DATE_BOOK_ACCESS_BACKEND_XML__H
30#define OPIE_DATE_BOOK_ACCESS_BACKEND_XML__H 30#define OPIE_DATE_BOOK_ACCESS_BACKEND_XML__H
31 31
32#include <qmap.h> 32#include <qmap.h>
33 33
34#include <opie2/odatebookaccessbackend.h> 34#include <opie2/odatebookaccessbackend.h>
35 35
36namespace Opie { 36namespace Opie {
37/** 37/**
38 * This is the default XML implementation for DateBoook XML storage 38 * This is the default XML implementation for DateBoook XML storage
39 * It fully implements the interface 39 * It fully implements the interface
40 * @see ODateBookAccessBackend 40 * @see ODateBookAccessBackend
41 * @see OPimAccessBackend 41 * @see OPimAccessBackend
42 */ 42 */
43class ODateBookAccessBackend_XML : public ODateBookAccessBackend { 43class ODateBookAccessBackend_XML : public ODateBookAccessBackend {
44public: 44public:
45 ODateBookAccessBackend_XML( const QString& appName, 45 ODateBookAccessBackend_XML( const QString& appName,
46 const QString& fileName = QString::null); 46 const QString& fileName = QString::null);
47 ~ODateBookAccessBackend_XML(); 47 ~ODateBookAccessBackend_XML();
48 48
49 bool load(); 49 bool load();
50 bool reload(); 50 bool reload();
51 bool save(); 51 bool save();
52 52
53 QArray<int> allRecords()const; 53 QArray<int> allRecords()const;
54 QArray<int> matchRegexp(const QRegExp &r) const; 54 QArray<int> matchRegexp(const QRegExp &r) const;
55 QArray<int> queryByExample( const OPimEvent&, int, const QDateTime& d = QDateTime() ); 55 QArray<int> queryByExample( const OPimEvent&, int, const QDateTime& d = QDateTime() )const;
56 OPimEvent find( int uid )const; 56 OPimEvent find( int uid )const;
57 void clear(); 57 void clear();
58 bool add( const OPimEvent& ev ); 58 bool add( const OPimEvent& ev );
59 bool remove( int uid ); 59 bool remove( int uid );
60 bool replace( const OPimEvent& ev ); 60 bool replace( const OPimEvent& ev );
61 61
62 QArray<UID> rawEvents()const; 62 QArray<UID> rawEvents()const;
63 QArray<UID> rawRepeats()const; 63 QArray<UID> rawRepeats()const;
64 QArray<UID> nonRepeats()const; 64 QArray<UID> nonRepeats()const;
65 65
66 OPimEvent::ValueList directNonRepeats()const; 66 OPimEvent::ValueList directNonRepeats()const;
67 OPimEvent::ValueList directRawRepeats()const; 67 OPimEvent::ValueList directRawRepeats()const;
68 68
69private: 69private:
70 bool m_changed :1 ; 70 bool m_changed :1 ;
71 bool m_noTimeZone : 1; 71 bool m_noTimeZone : 1;
72 72
73 bool loadFile(); 73 bool loadFile();
74 inline void finalizeRecord( OPimEvent& ev ); 74 inline void finalizeRecord( OPimEvent& ev );
75 inline void setField( OPimEvent&, int field, const QString& val ); 75 inline void setField( OPimEvent&, int field, const QString& val );
76 QString m_name; 76 QString m_name;
77 QMap<int, OPimEvent> m_raw; 77 QMap<int, OPimEvent> m_raw;
78 QMap<int, OPimEvent> m_rep; 78 QMap<int, OPimEvent> m_rep;
79 79
80 struct Data; 80 struct Data;
81 Data* data; 81 Data* data;
82 class Private; 82 class Private;
83 Private *d; 83 Private *d;
84}; 84};
85 85
86} 86}
87 87
88#endif 88#endif
diff --git a/library/lightstyle.cpp b/library/lightstyle.cpp
index c5073ca..3d5adfb 100644
--- a/library/lightstyle.cpp
+++ b/library/lightstyle.cpp
@@ -1,1288 +1,1288 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 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#include "lightstyle.h" 20#include "lightstyle.h"
21 21
22#if QT_VERSION < 0x030000 22#if QT_VERSION < 0x030000
23 23
24#define INCLUDE_MENUITEM_DEF 24#define INCLUDE_MENUITEM_DEF
25#include "qmenubar.h" 25#include "qmenubar.h"
26#include "qapplication.h" 26#include "qapplication.h"
27#include "qpainter.h" 27#include "qpainter.h"
28#include "qpalette.h" 28#include "qpalette.h"
29#include "qframe.h" 29#include "qframe.h"
30#include "qpushbutton.h" 30#include "qpushbutton.h"
31#include "qdrawutil.h" 31#include "qdrawutil.h"
32#include "qscrollbar.h" 32#include "qscrollbar.h"
33#include "qtabbar.h" 33#include "qtabbar.h"
34#include "qguardedptr.h" 34#include "qguardedptr.h"
35#include "qlayout.h" 35#include "qlayout.h"
36#include "qlineedit.h" 36#include "qlineedit.h"
37 37
38 38
39class LightStylePrivate 39class LightStylePrivate
40{ 40{
41public: 41public:
42 LightStylePrivate() 42 LightStylePrivate()
43 : hoverWidget(0), ref(1), savePalette(0) 43 : hoverWidget(0), ref(1), savePalette(0)
44 { 44 {
45 } 45 }
46 46
47 QGuardedPtr<QWidget> hoverWidget; 47 QGuardedPtr<QWidget> hoverWidget;
48 QPalette oldPalette, hoverPalette; 48 QPalette oldPalette, hoverPalette;
49 int ref; 49 int ref;
50 QPoint mousePos; 50 QPoint mousePos;
51 QPalette *savePalette; 51 QPalette *savePalette;
52}; 52};
53 53
54 54
55static LightStylePrivate *singleton = 0; 55static LightStylePrivate *singleton = 0;
56 56
57 57
58LightStyle::LightStyle() 58LightStyle::LightStyle()
59 : QWindowsStyle() 59 : QWindowsStyle()
60{ 60{
61 if (! singleton) { 61 if (! singleton) {
62 singleton = new LightStylePrivate; 62 singleton = new LightStylePrivate;
63 63
64 QPalette pal = QApplication::palette(); 64 QPalette pal = QApplication::palette();
65 singleton->oldPalette = pal; 65 singleton->oldPalette = pal;
66 66
67 QColor bg = pal.color(QPalette::Active, QColorGroup::Background); 67 QColor bg = pal.color(QPalette::Active, QColorGroup::Background);
68 QColor prelight; 68 QColor prelight;
69 69
70 if ( (bg.red() + bg.green() + bg.blue()) / 3 > 128) 70 if ( (bg.red() + bg.green() + bg.blue()) / 3 > 128)
71 prelight = pal.color(QPalette::Active, 71 prelight = pal.color(QPalette::Active,
72 QColorGroup::Background).light(110); 72 QColorGroup::Background).light(110);
73 else 73 else
74 prelight = pal.color(QPalette::Active, 74 prelight = pal.color(QPalette::Active,
75 QColorGroup::Background).light(120); 75 QColorGroup::Background).light(120);
76 76
77 QColorGroup active2(pal.color(QPalette::Active, 77 QColorGroup active2(pal.color(QPalette::Active,
78 QColorGroup::Foreground), // foreground 78 QColorGroup::Foreground), // foreground
79 prelight, // button 79 prelight, // button
80 prelight.light(), // light 80 prelight.light(), // light
81 prelight.dark(), // dark 81 prelight.dark(), // dark
82 prelight.dark(120), // mid 82 prelight.dark(120), // mid
83 pal.color(QPalette::Active, 83 pal.color(QPalette::Active,
84 QColorGroup::Text), // text 84 QColorGroup::Text), // text
85 pal.color(QPalette::Active, 85 pal.color(QPalette::Active,
86 QColorGroup::BrightText), // bright text 86 QColorGroup::BrightText), // bright text
87 pal.color(QPalette::Active, 87 pal.color(QPalette::Active,
88 QColorGroup::Base), // base 88 QColorGroup::Base), // base
89 bg); // background 89 bg); // background
90 active2.setColor(QColorGroup::Highlight, 90 active2.setColor(QColorGroup::Highlight,
91 pal.color(QPalette::Active, QColorGroup::Highlight)); 91 pal.color(QPalette::Active, QColorGroup::Highlight));
92 92
93 singleton->hoverPalette = pal; 93 singleton->hoverPalette = pal;
94 singleton->hoverPalette.setActive(active2); 94 singleton->hoverPalette.setActive(active2);
95 singleton->hoverPalette.setInactive(active2); 95 singleton->hoverPalette.setInactive(active2);
96 } else 96 } else
97 singleton->ref++; 97 singleton->ref++;
98} 98}
99 99
100 100
101LightStyle::~LightStyle() 101LightStyle::~LightStyle()
102{ 102{
103 if (singleton && singleton->ref-- <= 0) { 103 if (singleton && singleton->ref-- <= 0) {
104 delete singleton; 104 delete singleton;
105 singleton = 0; 105 singleton = 0;
106 } 106 }
107} 107}
108 108
109 109
110QSize LightStyle::scrollBarExtent() const 110QSize LightStyle::scrollBarExtent() const
111{ 111{
112 return QSize(12 + defaultFrameWidth(), 12 + defaultFrameWidth()); 112 return QSize(12 + defaultFrameWidth(), 12 + defaultFrameWidth());
113} 113}
114 114
115 115
116int LightStyle::buttonDefaultIndicatorWidth() const 116int LightStyle::buttonDefaultIndicatorWidth() const
117{ 117{
118 return 2; 118 return 2;
119} 119}
120 120
121 121
122int LightStyle::sliderThickness() const 122int LightStyle::sliderThickness() const
123{ 123{
124 return 16; 124 return 16;
125} 125}
126 126
127int LightStyle::sliderLength() const 127int LightStyle::sliderLength() const
128{ 128{
129 return 13; 129 return 13;
130} 130}
131 131
132 132
133int LightStyle::buttonMargin() const 133int LightStyle::buttonMargin() const
134{ 134{
135 return 4; 135 return 4;
136} 136}
137 137
138 138
139QSize LightStyle::exclusiveIndicatorSize() const 139QSize LightStyle::exclusiveIndicatorSize() const
140{ 140{
141 return QSize(13, 13); 141 return QSize(13, 13);
142} 142}
143 143
144 144
145int LightStyle::defaultFrameWidth() const 145int LightStyle::defaultFrameWidth() const
146{ 146{
147 return 2; 147 return 2;
148} 148}
149 149
150 150
151QSize LightStyle::indicatorSize() const 151QSize LightStyle::indicatorSize() const
152{ 152{
153 return QSize(13, 13); 153 return QSize(13, 13);
154} 154}
155 155
156 156
157void LightStyle::polish(QWidget *widget) 157void LightStyle::polish(QWidget *widget)
158{ 158{
159 if (widget->inherits("QPushButton")) 159 if (widget->inherits("QPushButton"))
160 widget->installEventFilter(this); 160 widget->installEventFilter(this);
161 161
162#if QT_VERSION >= 0x030000 162#if QT_VERSION >= 0x030000
163 if (widget->inherits("QLineEdit")) { 163 if (widget->inherits("QLineEdit")) {
164 QLineEdit *lineedit = (QLineEdit *) widget; 164 QLineEdit *lineedit = (QLineEdit *) widget;
165 lineedit->setFrameShape(QFrame::StyledPanel); 165 lineedit->setFrameShape(QFrame::StyledPanel);
166 lineedit->setLineWidth(2); 166 lineedit->setLineWidth(2);
167 } 167 }
168#endif 168#endif
169 169
170 QWindowsStyle::polish(widget); 170 QWindowsStyle::polish(widget);
171} 171}
172 172
173 173
174void LightStyle::unPolish(QWidget *widget) 174void LightStyle::unPolish(QWidget *widget)
175{ 175{
176 if (widget->inherits("QPushButton")) 176 if (widget->inherits("QPushButton"))
177 widget->removeEventFilter(this); 177 widget->removeEventFilter(this);
178 178
179#if QT_VERSION >= 0x030000 179#if QT_VERSION >= 0x030000
180 if (widget->inherits("QLineEdit")) { 180 if (widget->inherits("QLineEdit")) {
181 QLineEdit *lineedit = (QLineEdit *) widget; 181 QLineEdit *lineedit = (QLineEdit *) widget;
182 lineedit->setLineWidth(1); 182 lineedit->setLineWidth(1);
183 lineedit->setFrameShape(QFrame::WinPanel); 183 lineedit->setFrameShape(QFrame::WinPanel);
184 } 184 }
185#endif 185#endif
186 186
187 QWindowsStyle::unPolish(widget); 187 QWindowsStyle::unPolish(widget);
188} 188}
189 189
190 190
191void LightStyle::polish(QApplication *app) 191void LightStyle::polish(QApplication *app)
192{ 192{
193 QPalette pal = app->palette(); 193 QPalette pal = app->palette();
194 194
195 QColorGroup active(pal.color(QPalette::Active, 195 QColorGroup active(pal.color(QPalette::Active,
196 QColorGroup::Foreground), // foreground 196 QColorGroup::Foreground), // foreground
197 pal.color(QPalette::Active, 197 pal.color(QPalette::Active,
198 QColorGroup::Button), // button 198 QColorGroup::Button), // button
199 pal.color(QPalette::Active, 199 pal.color(QPalette::Active,
200 QColorGroup::Background).light(), // light 200 QColorGroup::Background).light(), // light
201 pal.color(QPalette::Active, 201 pal.color(QPalette::Active,
202 QColorGroup::Background).dark(175), // dark 202 QColorGroup::Background).dark(175), // dark
203 pal.color(QPalette::Active, 203 pal.color(QPalette::Active,
204 QColorGroup::Background).dark(110), // mid 204 QColorGroup::Background).dark(110), // mid
205 pal.color(QPalette::Active, 205 pal.color(QPalette::Active,
206 QColorGroup::Text), // text 206 QColorGroup::Text), // text
207 pal.color(QPalette::Active, 207 pal.color(QPalette::Active,
208 QColorGroup::BrightText), // bright text 208 QColorGroup::BrightText), // bright text
209 pal.color(QPalette::Active, 209 pal.color(QPalette::Active,
210 QColorGroup::Base), // base 210 QColorGroup::Base), // base
211 pal.color(QPalette::Active, 211 pal.color(QPalette::Active,
212 QColorGroup::Background)), // background 212 QColorGroup::Background)), // background
213 213
214 214
215 disabled(pal.color(QPalette::Disabled, 215 disabled(pal.color(QPalette::Disabled,
216 QColorGroup::Foreground), // foreground 216 QColorGroup::Foreground), // foreground
217 pal.color(QPalette::Disabled, 217 pal.color(QPalette::Disabled,
218 QColorGroup::Button), // button 218 QColorGroup::Button), // button
219 pal.color(QPalette::Disabled, 219 pal.color(QPalette::Disabled,
220 QColorGroup::Background).light(), // light 220 QColorGroup::Background).light(), // light
221 pal.color(QPalette::Disabled, 221 pal.color(QPalette::Disabled,
222 QColorGroup::Background).dark(), // dark 222 QColorGroup::Background).dark(), // dark
223 pal.color(QPalette::Disabled, 223 pal.color(QPalette::Disabled,
224 QColorGroup::Background).dark(110), // mid 224 QColorGroup::Background).dark(110), // mid
225 pal.color(QPalette::Disabled, 225 pal.color(QPalette::Disabled,
226 QColorGroup::Text), // text 226 QColorGroup::Text), // text
227 pal.color(QPalette::Disabled, 227 pal.color(QPalette::Disabled,
228 QColorGroup::BrightText), // bright text 228 QColorGroup::BrightText), // bright text
229 pal.color(QPalette::Disabled, 229 pal.color(QPalette::Disabled,
230 QColorGroup::Base), // base 230 QColorGroup::Base), // base
231 pal.color(QPalette::Disabled, 231 pal.color(QPalette::Disabled,
232 QColorGroup::Background)); // background 232 QColorGroup::Background)); // background
233 233
234 active.setColor(QColorGroup::Highlight, 234 active.setColor(QColorGroup::Highlight,
235 pal.color(QPalette::Active, QColorGroup::Highlight)); 235 pal.color(QPalette::Active, QColorGroup::Highlight));
236 disabled.setColor(QColorGroup::Highlight, 236 disabled.setColor(QColorGroup::Highlight,
237 pal.color(QPalette::Disabled, QColorGroup::Highlight)); 237 pal.color(QPalette::Disabled, QColorGroup::Highlight));
238 238
239 active.setColor(QColorGroup::HighlightedText, 239 active.setColor(QColorGroup::HighlightedText,
240 pal.color(QPalette::Active, QColorGroup::HighlightedText)); 240 pal.color(QPalette::Active, QColorGroup::HighlightedText));
241 disabled.setColor(QColorGroup::HighlightedText, 241 disabled.setColor(QColorGroup::HighlightedText,
242 pal.color(QPalette::Disabled, QColorGroup::HighlightedText)); 242 pal.color(QPalette::Disabled, QColorGroup::HighlightedText));
243 243
244 pal.setActive(active); 244 pal.setActive(active);
245 pal.setInactive(active); 245 pal.setInactive(active);
246 pal.setDisabled(disabled); 246 pal.setDisabled(disabled);
247 247
248 singleton->oldPalette = pal; 248 singleton->oldPalette = pal;
249 249
250 QColor bg = pal.color(QPalette::Active, QColorGroup::Background); 250 QColor bg = pal.color(QPalette::Active, QColorGroup::Background);
251 QColor prelight; 251 QColor prelight;
252 252
253 if ( (bg.red() + bg.green() + bg.blue()) / 3 > 128) 253 if ( (bg.red() + bg.green() + bg.blue()) / 3 > 128)
254 prelight = pal.color(QPalette::Active, 254 prelight = pal.color(QPalette::Active,
255 QColorGroup::Background).light(110); 255 QColorGroup::Background).light(110);
256 else 256 else
257 prelight = pal.color(QPalette::Active, 257 prelight = pal.color(QPalette::Active,
258 QColorGroup::Background).light(120); 258 QColorGroup::Background).light(120);
259 259
260 QColorGroup active2(pal.color(QPalette::Active, 260 QColorGroup active2(pal.color(QPalette::Active,
261 QColorGroup::Foreground), // foreground 261 QColorGroup::Foreground), // foreground
262 prelight, // button 262 prelight, // button
263 prelight.light(), // light 263 prelight.light(), // light
264 prelight.dark(), // dark 264 prelight.dark(), // dark
265 prelight.dark(120), // mid 265 prelight.dark(120), // mid
266 pal.color(QPalette::Active, 266 pal.color(QPalette::Active,
267 QColorGroup::Text), // text 267 QColorGroup::Text), // text
268 pal.color(QPalette::Active, 268 pal.color(QPalette::Active,
269 QColorGroup::BrightText), // bright text 269 QColorGroup::BrightText), // bright text
270 pal.color(QPalette::Active, 270 pal.color(QPalette::Active,
271 QColorGroup::Base), // base 271 QColorGroup::Base), // base
272 bg); // background 272 bg); // background
273 active2.setColor(QColorGroup::Highlight, 273 active2.setColor(QColorGroup::Highlight,
274 pal.color(QPalette::Active, QColorGroup::Highlight)); 274 pal.color(QPalette::Active, QColorGroup::Highlight));
275 275
276 singleton->hoverPalette = pal; 276 singleton->hoverPalette = pal;
277 singleton->hoverPalette.setActive(active2); 277 singleton->hoverPalette.setActive(active2);
278 singleton->hoverPalette.setInactive(active2); 278 singleton->hoverPalette.setInactive(active2);
279 279
280 app->setPalette(pal); 280 app->setPalette(pal);
281} 281}
282 282
283 283
284void LightStyle::unPolish(QApplication *app) 284void LightStyle::unPolish(QApplication *app)
285{ 285{
286 app->setPalette(singleton->oldPalette); 286 app->setPalette(singleton->oldPalette);
287} 287}
288 288
289 289
290void LightStyle::polishPopupMenu(QPopupMenu *menu) 290void LightStyle::polishPopupMenu(QPopupMenu *menu)
291{ 291{
292 menu->setMouseTracking(TRUE); 292 menu->setMouseTracking(TRUE);
293} 293}
294 294
295 295
296void LightStyle::drawPushButton(QPushButton *button, QPainter *p) 296void LightStyle::drawPushButton(QPushButton *button, QPainter *p)
297{ 297{
298 int x1, y1, x2, y2; 298 int x1, y1, x2, y2;
299 button->rect().coords(&x1, &y1, &x2, &y2); 299 button->rect().coords(&x1, &y1, &x2, &y2);
300 300
301 if (button->isDefault()) { 301 if (button->isDefault()) {
302 p->save(); 302 p->save();
303 p->setPen(button->palette().active().color(QColorGroup::Highlight)); 303 p->setPen(button->palette().active().color(QColorGroup::Highlight));
304 p->setBrush(button->palette().active().brush(QColorGroup::Highlight)); 304 p->setBrush(button->palette().active().brush(QColorGroup::Highlight));
305 p->drawRoundRect(x1, y1, x2 - x1 + 1, y2 - y1 + 1, 15, 15); 305 p->drawRoundRect(x1, y1, x2 - x1 + 1, y2 - y1 + 1, 15, 15);
306 p->restore(); 306 p->restore();
307 } 307 }
308 308
309 if (button->isDefault() || button->autoDefault()) { 309 if (button->isDefault() || button->autoDefault()) {
310 x1 += buttonDefaultIndicatorWidth(); 310 x1 += buttonDefaultIndicatorWidth();
311 y1 += buttonDefaultIndicatorWidth(); 311 y1 += buttonDefaultIndicatorWidth();
312 x2 -= buttonDefaultIndicatorWidth(); 312 x2 -= buttonDefaultIndicatorWidth();
313 y2 -= buttonDefaultIndicatorWidth(); 313 y2 -= buttonDefaultIndicatorWidth();
314 314
315 if (button->isDefault()) { 315 if (button->isDefault()) {
316 QPointArray pa(8); 316 QPointArray pa(8);
317 pa.setPoint(0, x1 + 2, y1 ); 317 pa.setPoint(0, x1 + 2, y1 );
318 pa.setPoint(1, x2 - 1, y1 ); 318 pa.setPoint(1, x2 - 1, y1 );
319 pa.setPoint(2, x2 + 1, y1 + 2); 319 pa.setPoint(2, x2 + 1, y1 + 2);
320 pa.setPoint(3, x2 + 1, y2 - 2); 320 pa.setPoint(3, x2 + 1, y2 - 2);
321 pa.setPoint(4, x2 - 2, y2 + 1); 321 pa.setPoint(4, x2 - 2, y2 + 1);
322 pa.setPoint(5, x1 + 2, y2 + 1); 322 pa.setPoint(5, x1 + 2, y2 + 1);
323 pa.setPoint(6, x1, y2 - 1); 323 pa.setPoint(6, x1, y2 - 1);
324 pa.setPoint(7, x1, y1 + 2); 324 pa.setPoint(7, x1, y1 + 2);
325 QRegion r(pa); 325 QRegion r(pa);
326 p->setClipRegion(r); 326 p->setClipRegion(r);
327 } 327 }
328 } 328 }
329 329
330 QBrush fill; 330 QBrush fill;
331 if (button->isDown() || button->isOn()) 331 if (button->isDown() || button->isOn())
332 fill = button->colorGroup().brush(QColorGroup::Mid); 332 fill = button->colorGroup().brush(QColorGroup::Mid);
333 else 333 else
334 fill = button->colorGroup().brush(QColorGroup::Button); 334 fill = button->colorGroup().brush(QColorGroup::Button);
335 335
336 if ( !button->isFlat() || button->isOn() || button->isDown() ) 336 if ( !button->isFlat() || button->isOn() || button->isDown() )
337 drawButton(p, x1, y1, x2 - x1 + 1, y2 - y1 + 1, 337 drawButton(p, x1, y1, x2 - x1 + 1, y2 - y1 + 1,
338 button->colorGroup(), button->isOn() || button->isDown(), &fill); 338 button->colorGroup(), button->isOn() || button->isDown(), &fill);
339} 339}
340 340
341 341
342void LightStyle::drawButton(QPainter *p, int x, int y, int w, int h, 342void LightStyle::drawButton(QPainter *p, int x, int y, int w, int h,
343 const QColorGroup &g, 343 const QColorGroup &g,
344 bool sunken, const QBrush *fill) 344 bool sunken, const QBrush *fill)
345{ 345{
346 p->save(); 346 p->save();
347 if ( fill ) 347 if ( fill )
348 p->fillRect(x + 2, y + 2, w - 4, h - 4, *fill); 348 p->fillRect(x + 2, y + 2, w - 4, h - 4, *fill);
349 else 349 else
350 p->fillRect(x + 2, y + 2, w - 4, h - 4, 350 p->fillRect(x + 2, y + 2, w - 4, h - 4,
351 QBrush(sunken ? g.mid() : g.button())); 351 QBrush(sunken ? g.mid() : g.button()));
352 352
353 // frame 353 // frame
354 p->setPen(g.dark()); 354 p->setPen(g.dark());
355 p->drawLine(x, y + 2, x, y + h - 3); // left 355 p->drawLine(x, y + 2, x, y + h - 3); // left
356 p->drawLine(x + 2, y, x + w - 3, y); // top 356 p->drawLine(x + 2, y, x + w - 3, y); // top
357 p->drawLine(x + w - 1, y + 2, x + w - 1, y + h - 3); // right 357 p->drawLine(x + w - 1, y + 2, x + w - 1, y + h - 3); // right
358 p->drawLine(x + 2, y + h - 1, x + w - 3, y + h - 1); // bottom 358 p->drawLine(x + 2, y + h - 1, x + w - 3, y + h - 1); // bottom
359 p->drawPoint(x + 1, y + 1); 359 p->drawPoint(x + 1, y + 1);
360 p->drawPoint(x + 1, y + h - 2); 360 p->drawPoint(x + 1, y + h - 2);
361 p->drawPoint(x + w - 2, y + 1); 361 p->drawPoint(x + w - 2, y + 1);
362 p->drawPoint(x + w - 2, y + h - 2); 362 p->drawPoint(x + w - 2, y + h - 2);
363 363
364 // bevel 364 // bevel
365 if (sunken) 365 if (sunken)
366 p->setPen(g.mid()); 366 p->setPen(g.mid());
367 else 367 else
368 p->setPen(g.light()); 368 p->setPen(g.light());
369 369
370 p->drawLine(x + 1, y + 2, x + 1, y + h - 3); // left 370 p->drawLine(x + 1, y + 2, x + 1, y + h - 3); // left
371 p->drawLine(x + 2, y + 1, x + w - 3, y + 1); // top 371 p->drawLine(x + 2, y + 1, x + w - 3, y + 1); // top
372 372
373 if (sunken) 373 if (sunken)
374 p->setPen(g.light()); 374 p->setPen(g.light());
375 else 375 else
376 p->setPen(g.mid()); 376 p->setPen(g.mid());
377 377
378 p->drawLine(x + w - 2, y + 2, x + w - 2, y + h - 3); // right + 1 378 p->drawLine(x + w - 2, y + 2, x + w - 2, y + h - 3); // right + 1
379 p->drawLine(x + 2, y + h - 2, x + w - 3, y + h - 2); // bottom + 1 379 p->drawLine(x + 2, y + h - 2, x + w - 3, y + h - 2); // bottom + 1
380 380
381 p->restore(); 381 p->restore();
382} 382}
383 383
384 384
385void LightStyle::drawBevelButton(QPainter *p, int x, int y, int w, int h, 385void LightStyle::drawBevelButton(QPainter *p, int x, int y, int w, int h,
386 const QColorGroup &g, 386 const QColorGroup &g,
387 bool sunken, const QBrush *fill) 387 bool sunken, const QBrush *fill)
388{ 388{
389 drawButton(p, x, y, w, h, g, sunken, fill); 389 drawButton(p, x, y, w, h, g, sunken, fill);
390} 390}
391 391
392 392
393void LightStyle::getButtonShift(int &x, int &y) const 393void LightStyle::getButtonShift(int &x, int &y)
394{ 394{
395 x = y = 0; 395 x = y = 0;
396} 396}
397 397
398 398
399void LightStyle::drawComboButton(QPainter *p, int x, int y, int w, int h, 399void LightStyle::drawComboButton(QPainter *p, int x, int y, int w, int h,
400 const QColorGroup &g, bool, 400 const QColorGroup &g, bool,
401 bool editable, bool, 401 bool editable, bool,
402 const QBrush *fill) 402 const QBrush *fill)
403{ 403{
404 drawButton(p, x, y, w, h, g, FALSE, fill); 404 drawButton(p, x, y, w, h, g, FALSE, fill);
405 405
406 if (editable) { 406 if (editable) {
407 QRect r = comboButtonRect(x, y, w, h); 407 QRect r = comboButtonRect(x, y, w, h);
408 qDrawShadePanel(p, r.x() - 1, r.y() - 1, 408 qDrawShadePanel(p, r.x() - 1, r.y() - 1,
409 r.width() + defaultFrameWidth(), 409 r.width() + defaultFrameWidth(),
410 r.height() + defaultFrameWidth(), 410 r.height() + defaultFrameWidth(),
411 g, TRUE); 411 g, TRUE);
412 } 412 }
413 413
414 int indent = ((y + h) / 2) - 3; 414 int indent = ((y + h) / 2) - 3;
415 int xpos = x; 415 int xpos = x;
416 416
417#if QT_VERSION >= 0x030000 417#if QT_VERSION >= 0x030000
418 if( QApplication::reverseLayout() ) 418 if( QApplication::reverseLayout() )
419 xpos += indent; 419 xpos += indent;
420 else 420 else
421#endif 421#endif
422 xpos += w - indent - 5; 422 xpos += w - indent - 5;
423 423
424 drawArrow(p, Qt::DownArrow, TRUE, xpos, indent, 5, 5, g, TRUE, fill); 424 drawArrow(p, Qt::DownArrow, TRUE, xpos, indent, 5, 5, g, TRUE, fill);
425} 425}
426 426
427 427
428QRect LightStyle::comboButtonRect( int x, int y, int w, int h ) const 428QRect LightStyle::comboButtonRect( int x, int y, int w, int h )
429{ 429{
430 QRect r(x + 3, y + 3, w - 6, h - 6); 430 QRect r(x + 3, y + 3, w - 6, h - 6);
431 int indent = ((y + h) / 2) - 3; 431 int indent = ((y + h) / 2) - 3;
432 r.setRight(r.right() - indent - 10); 432 r.setRight(r.right() - indent - 10);
433 433
434#if QT_VERSION >= 0x030000 434#if QT_VERSION >= 0x030000
435 if( QApplication::reverseLayout() ) 435 if( QApplication::reverseLayout() )
436 r.moveBy( indent + 10, 0 ); 436 r.moveBy( indent + 10, 0 );
437#endif 437#endif
438 438
439 return r; 439 return r;
440} 440}
441 441
442 442
443QRect LightStyle::comboButtonFocusRect(int x, int y, int w, int h ) const 443QRect LightStyle::comboButtonFocusRect(int x, int y, int w, int h )
444{ 444{
445 return comboButtonRect(x, y, w, h); 445 return comboButtonRect(x, y, w, h);
446} 446}
447 447
448 448
449void LightStyle::drawPanel(QPainter *p, int x, int y, int w, int h, 449void LightStyle::drawPanel(QPainter *p, int x, int y, int w, int h,
450 const QColorGroup &g, bool sunken, 450 const QColorGroup &g, bool sunken,
451 int lw, const QBrush *fill) 451 int lw, const QBrush *fill)
452{ 452{
453 if (lw >= 2) { 453 if (lw >= 2) {
454 if ( fill ) 454 if ( fill )
455 p->fillRect(x + 2, y + 2, w - 4, h - 4, *fill); 455 p->fillRect(x + 2, y + 2, w - 4, h - 4, *fill);
456 456
457 QPen oldpen = p->pen(); 457 QPen oldpen = p->pen();
458 458
459 // frame 459 // frame
460 p->setPen(g.dark()); 460 p->setPen(g.dark());
461 p->drawLine(x, y + 2, x, y + h - 3); // left 461 p->drawLine(x, y + 2, x, y + h - 3); // left
462 p->drawLine(x + 2, y, x + w - 3, y); // top 462 p->drawLine(x + 2, y, x + w - 3, y); // top
463 p->drawLine(x + w - 1, y + 2, x + w - 1, y + h - 3); // right 463 p->drawLine(x + w - 1, y + 2, x + w - 1, y + h - 3); // right
464 p->drawLine(x + 2, y + h - 1, x + w - 3, y + h - 1); // bottom 464 p->drawLine(x + 2, y + h - 1, x + w - 3, y + h - 1); // bottom
465 p->drawPoint(x + 1, y + 1); 465 p->drawPoint(x + 1, y + 1);
466 p->drawPoint(x + 1, y + h - 2); 466 p->drawPoint(x + 1, y + h - 2);
467 p->drawPoint(x + w - 2, y + 1); 467 p->drawPoint(x + w - 2, y + 1);
468 p->drawPoint(x + w - 2, y + h - 2); 468 p->drawPoint(x + w - 2, y + h - 2);
469 469
470 // bevel 470 // bevel
471 if (sunken) 471 if (sunken)
472 p->setPen(g.mid()); 472 p->setPen(g.mid());
473 else 473 else
474 p->setPen(g.light()); 474 p->setPen(g.light());
475 475
476 p->drawLine(x + 1, y + 2, x + 1, y + h - 3); // left 476 p->drawLine(x + 1, y + 2, x + 1, y + h - 3); // left
477 p->drawLine(x + 2, y + 1, x + w - 3, y + 1); // top 477 p->drawLine(x + 2, y + 1, x + w - 3, y + 1); // top
478 478
479 if (sunken) 479 if (sunken)
480 p->setPen(g.light()); 480 p->setPen(g.light());
481 else 481 else
482 p->setPen(g.mid()); 482 p->setPen(g.mid());
483 483
484 p->drawLine(x + w - 2, y + 2, x + w - 2, y + h - 3); // right + 1 484 p->drawLine(x + w - 2, y + 2, x + w - 2, y + h - 3); // right + 1
485 p->drawLine(x + 2, y + h - 2, x + w - 3, y + h - 2); // bottom + 1 485 p->drawLine(x + 2, y + h - 2, x + w - 3, y + h - 2); // bottom + 1
486 486
487 // corners 487 // corners
488 p->setPen(g.background()); 488 p->setPen(g.background());
489 p->drawLine(x, y, x + 1, y); 489 p->drawLine(x, y, x + 1, y);
490 p->drawLine(x, y + h - 1, x + 1, y + h - 1); 490 p->drawLine(x, y + h - 1, x + 1, y + h - 1);
491 p->drawLine(x + w - 2, y, x + w - 1, y); 491 p->drawLine(x + w - 2, y, x + w - 1, y);
492 p->drawLine(x + w - 2, y + h - 1, x + w - 1, y + h - 1); 492 p->drawLine(x + w - 2, y + h - 1, x + w - 1, y + h - 1);
493 p->drawPoint(x, y + 1); 493 p->drawPoint(x, y + 1);
494 p->drawPoint(x, y + h - 2); 494 p->drawPoint(x, y + h - 2);
495 p->drawPoint(x + w - 1, y + 1); 495 p->drawPoint(x + w - 1, y + 1);
496 p->drawPoint(x + w - 1, y + h - 2); 496 p->drawPoint(x + w - 1, y + h - 2);
497 497
498 p->setPen(oldpen); 498 p->setPen(oldpen);
499 } else 499 } else
500 qDrawShadePanel(p, x, y, w, h, g, sunken, lw, fill); 500 qDrawShadePanel(p, x, y, w, h, g, sunken, lw, fill);
501} 501}
502 502
503 503
504void LightStyle::drawIndicator(QPainter *p, int x, int y ,int w, int h, 504void LightStyle::drawIndicator(QPainter *p, int x, int y ,int w, int h,
505 const QColorGroup &g, int state, 505 const QColorGroup &g, int state,
506 bool down, bool) 506 bool down, bool)
507{ 507{
508 drawButton(p, x, y, w, h, g, TRUE, 508 drawButton(p, x, y, w, h, g, TRUE,
509 &g.brush(down ? QColorGroup::Mid : QColorGroup::Base)); 509 &g.brush(down ? QColorGroup::Mid : QColorGroup::Base));
510 510
511 p->save(); 511 p->save();
512 512
513 p->setPen(g.foreground()); 513 p->setPen(g.foreground());
514 if (state == QButton::NoChange) { 514 if (state == QButton::NoChange) {
515 p->drawLine(x + 3, y + h / 2, x + w - 4, y + h / 2); 515 p->drawLine(x + 3, y + h / 2, x + w - 4, y + h / 2);
516 p->drawLine(x + 3, y + 1 + h / 2, x + w - 4, y + 1 + h / 2); 516 p->drawLine(x + 3, y + 1 + h / 2, x + w - 4, y + 1 + h / 2);
517 p->drawLine(x + 3, y - 1 + h / 2, x + w - 4, y - 1 + h / 2); 517 p->drawLine(x + 3, y - 1 + h / 2, x + w - 4, y - 1 + h / 2);
518 } else if (state == QButton::On) { 518 } else if (state == QButton::On) {
519 p->drawLine(x + 4, y + 3, x + w - 4, y + h - 5); 519 p->drawLine(x + 4, y + 3, x + w - 4, y + h - 5);
520 p->drawLine(x + 3, y + 3, x + w - 4, y + h - 4); 520 p->drawLine(x + 3, y + 3, x + w - 4, y + h - 4);
521 p->drawLine(x + 3, y + 4, x + w - 5, y + h - 4); 521 p->drawLine(x + 3, y + 4, x + w - 5, y + h - 4);
522 p->drawLine(x + 3, y + h - 5, x + w - 5, y + 3); 522 p->drawLine(x + 3, y + h - 5, x + w - 5, y + 3);
523 p->drawLine(x + 3, y + h - 4, x + w - 4, y + 3); 523 p->drawLine(x + 3, y + h - 4, x + w - 4, y + 3);
524 p->drawLine(x + 4, y + h - 4, x + w - 4, y + 4); 524 p->drawLine(x + 4, y + h - 4, x + w - 4, y + 4);
525 } 525 }
526 526
527 p->restore(); 527 p->restore();
528} 528}
529 529
530 530
531void LightStyle::drawExclusiveIndicator(QPainter *p, int x, int y, int w, int h, 531void LightStyle::drawExclusiveIndicator(QPainter *p, int x, int y, int w, int h,
532 const QColorGroup &g, bool on, 532 const QColorGroup &g, bool on,
533 bool down, bool) 533 bool down, bool)
534{ 534{
535 p->save(); 535 p->save();
536 536
537 p->fillRect(x, y, w, h, g.brush(QColorGroup::Background)); 537 p->fillRect(x, y, w, h, g.brush(QColorGroup::Background));
538 538
539 p->setPen(g.dark()); 539 p->setPen(g.dark());
540 p->drawArc(x, y, w, h, 0, 16*360); 540 p->drawArc(x, y, w, h, 0, 16*360);
541 p->setPen(g.mid()); 541 p->setPen(g.mid());
542 p->drawArc(x + 1, y + 1, w - 2, h - 2, 45*16, 180*16); 542 p->drawArc(x + 1, y + 1, w - 2, h - 2, 45*16, 180*16);
543 p->setPen(g.light()); 543 p->setPen(g.light());
544 p->drawArc(x + 1, y + 1, w - 2, h - 2, 235*16, 180*16); 544 p->drawArc(x + 1, y + 1, w - 2, h - 2, 235*16, 180*16);
545 545
546 p->setPen(down ? g.mid() : g.base()); 546 p->setPen(down ? g.mid() : g.base());
547 p->setBrush(down ? g.mid() : g.base()); 547 p->setBrush(down ? g.mid() : g.base());
548 p->drawEllipse(x + 2, y + 2, w - 4, h - 4); 548 p->drawEllipse(x + 2, y + 2, w - 4, h - 4);
549 549
550 if (on) { 550 if (on) {
551 p->setBrush(g.foreground()); 551 p->setBrush(g.foreground());
552 p->drawEllipse(x + 3, y + 3, w - x - 6, h - y - 6); 552 p->drawEllipse(x + 3, y + 3, w - x - 6, h - y - 6);
553 } 553 }
554 554
555 p->restore(); 555 p->restore();
556} 556}
557 557
558 558
559 559
560#if 1 560#if 1
561//copied from QPE style 561//copied from QPE style
562void LightStyle::drawTab( QPainter *p, const QTabBar *tb, QTab *t, bool selected ) 562void LightStyle::drawTab( QPainter *p, const QTabBar *tb, QTab *t, bool selected )
563{ 563{
564#if 0 564#if 0
565 //We can't do this, because QTabBar::focusInEvent redraws the 565 //We can't do this, because QTabBar::focusInEvent redraws the
566 // tab label with the default font. 566 // tab label with the default font.
567 QFont f = tb->font(); 567 QFont f = tb->font();
568 f.setBold( selected ); 568 f.setBold( selected );
569 p->setFont( f ); 569 p->setFont( f );
570#endif 570#endif
571 QRect r( t->rect() ); 571 QRect r( t->rect() );
572 if ( tb->shape() == QTabBar::RoundedAbove ) { 572 if ( tb->shape() == QTabBar::RoundedAbove ) {
573 p->setPen( tb->colorGroup().light() ); 573 p->setPen( tb->colorGroup().light() );
574 p->drawLine( r.left(), r.bottom(), r.right(), r.bottom() ); 574 p->drawLine( r.left(), r.bottom(), r.right(), r.bottom() );
575 if ( r.left() == 0 ) 575 if ( r.left() == 0 )
576 p->drawPoint( tb->rect().bottomLeft() ); 576 p->drawPoint( tb->rect().bottomLeft() );
577 else { 577 else {
578 p->setPen( tb->colorGroup().light() ); 578 p->setPen( tb->colorGroup().light() );
579 p->drawLine( r.left(), r.bottom(), r.right(), r.bottom() ); 579 p->drawLine( r.left(), r.bottom(), r.right(), r.bottom() );
580 } 580 }
581 581
582 if ( selected ) { 582 if ( selected ) {
583 p->setPen( tb->colorGroup().background() ); 583 p->setPen( tb->colorGroup().background() );
584 p->drawLine( r.left()+2, r.top()+1, r.right()-2, r.top()+1 ); 584 p->drawLine( r.left()+2, r.top()+1, r.right()-2, r.top()+1 );
585 p->fillRect( QRect( r.left()+1, r.top()+2, r.width()-2, r.height()-2), 585 p->fillRect( QRect( r.left()+1, r.top()+2, r.width()-2, r.height()-2),
586 tb->colorGroup().brush( QColorGroup::Background )); 586 tb->colorGroup().brush( QColorGroup::Background ));
587 587
588 } else { 588 } else {
589 r.setRect( r.left() + 2, r.top() + 2, 589 r.setRect( r.left() + 2, r.top() + 2,
590 r.width() - 4, r.height() - 2 ); 590 r.width() - 4, r.height() - 2 );
591 p->setPen( tb->colorGroup().button() ); 591 p->setPen( tb->colorGroup().button() );
592 p->drawLine( r.left()+2, r.top()+1, r.right()-2, r.top()+1 ); 592 p->drawLine( r.left()+2, r.top()+1, r.right()-2, r.top()+1 );
593 p->fillRect( QRect( r.left()+1, r.top()+2, r.width()-2, r.height()-3), 593 p->fillRect( QRect( r.left()+1, r.top()+2, r.width()-2, r.height()-3),
594 tb->colorGroup().brush( QColorGroup::Button )); 594 tb->colorGroup().brush( QColorGroup::Button ));
595 //do shading; will not work for pixmap brushes 595 //do shading; will not work for pixmap brushes
596 QColor bg = tb->colorGroup().button(); 596 QColor bg = tb->colorGroup().button();
597 // int h,s,v; 597 // int h,s,v;
598 // bg.hsv( &h, &s, &v ); 598 // bg.hsv( &h, &s, &v );
599 int n = r.height()/2; 599 int n = r.height()/2;
600 int dark = 100; 600 int dark = 100;
601 for ( int i = 1; i < n; i++ ) { 601 for ( int i = 1; i < n; i++ ) {
602 dark = (dark * (100+(i*15)/n) )/100; 602 dark = (dark * (100+(i*15)/n) )/100;
603 p->setPen( bg.dark( dark ) ); 603 p->setPen( bg.dark( dark ) );
604 int y = r.bottom()-n+i; 604 int y = r.bottom()-n+i;
605 int x1 = r.left()+1; 605 int x1 = r.left()+1;
606 int x2 = r.right()-1; 606 int x2 = r.right()-1;
607 p->drawLine( x1, y, x2, y ); 607 p->drawLine( x1, y, x2, y );
608 } 608 }
609 609
610 } 610 }
611 611
612 p->setPen( tb->colorGroup().light() ); 612 p->setPen( tb->colorGroup().light() );
613 p->drawLine( r.left(), r.bottom()-1, r.left(), r.top() + 2 ); 613 p->drawLine( r.left(), r.bottom()-1, r.left(), r.top() + 2 );
614 p->drawPoint( r.left()+1, r.top() + 1 ); 614 p->drawPoint( r.left()+1, r.top() + 1 );
615 p->drawLine( r.left()+2, r.top(), 615 p->drawLine( r.left()+2, r.top(),
616 r.right() - 2, r.top() ); 616 r.right() - 2, r.top() );
617 617
618 p->setPen( tb->colorGroup().dark() ); 618 p->setPen( tb->colorGroup().dark() );
619 p->drawPoint( r.right() - 1, r.top() + 1 ); 619 p->drawPoint( r.right() - 1, r.top() + 1 );
620 p->drawLine( r.right(), r.top() + 2, r.right(), r.bottom() - 1); 620 p->drawLine( r.right(), r.top() + 2, r.right(), r.bottom() - 1);
621 } else if ( tb->shape() == QTabBar::RoundedBelow ) { 621 } else if ( tb->shape() == QTabBar::RoundedBelow ) {
622 if ( selected ) { 622 if ( selected ) {
623 p->setPen( tb->colorGroup().background() ); 623 p->setPen( tb->colorGroup().background() );
624 p->drawLine( r.left()+2, r.bottom()-1, r.right()-2, r.bottom()-1 ); 624 p->drawLine( r.left()+2, r.bottom()-1, r.right()-2, r.bottom()-1 );
625 p->fillRect( QRect( r.left()+1, r.top(), r.width()-2, r.height()-2), 625 p->fillRect( QRect( r.left()+1, r.top(), r.width()-2, r.height()-2),
626 tb->palette().normal().brush( QColorGroup::Background )); 626 tb->palette().normal().brush( QColorGroup::Background ));
627 } else { 627 } else {
628 p->setPen( tb->colorGroup().dark() ); 628 p->setPen( tb->colorGroup().dark() );
629 p->drawLine( r.left(), r.top(), 629 p->drawLine( r.left(), r.top(),
630 r.right(), r.top() ); 630 r.right(), r.top() );
631 r.setRect( r.left() + 2, r.top(), 631 r.setRect( r.left() + 2, r.top(),
632 r.width() - 4, r.height() - 2 ); 632 r.width() - 4, r.height() - 2 );
633 p->setPen( tb->colorGroup().button() ); 633 p->setPen( tb->colorGroup().button() );
634 p->drawLine( r.left()+2, r.bottom()-1, r.right()-2, r.bottom()-1 ); 634 p->drawLine( r.left()+2, r.bottom()-1, r.right()-2, r.bottom()-1 );
635 p->fillRect( QRect( r.left()+1, r.top()+1, r.width()-2, r.height()-3), 635 p->fillRect( QRect( r.left()+1, r.top()+1, r.width()-2, r.height()-3),
636 tb->palette().normal().brush( QColorGroup::Button )); 636 tb->palette().normal().brush( QColorGroup::Button ));
637 } 637 }
638 638
639 p->setPen( tb->colorGroup().dark() ); 639 p->setPen( tb->colorGroup().dark() );
640 p->drawLine( r.right(), r.top(), 640 p->drawLine( r.right(), r.top(),
641 r.right(), r.bottom() - 2 ); 641 r.right(), r.bottom() - 2 );
642 p->drawPoint( r.right() - 1, r.bottom() - 1 ); 642 p->drawPoint( r.right() - 1, r.bottom() - 1 );
643 p->drawLine( r.right() - 2, r.bottom(), 643 p->drawLine( r.right() - 2, r.bottom(),
644 r.left() + 2, r.bottom() ); 644 r.left() + 2, r.bottom() );
645 645
646 p->setPen( tb->colorGroup().light() ); 646 p->setPen( tb->colorGroup().light() );
647 p->drawLine( r.left(), r.top()+1, 647 p->drawLine( r.left(), r.top()+1,
648 r.left(), r.bottom() - 2 ); 648 r.left(), r.bottom() - 2 );
649 p->drawPoint( r.left() + 1, r.bottom() - 1 ); 649 p->drawPoint( r.left() + 1, r.bottom() - 1 );
650 if ( r.left() == 0 ) 650 if ( r.left() == 0 )
651 p->drawPoint( tb->rect().topLeft() ); 651 p->drawPoint( tb->rect().topLeft() );
652 652
653 } else { 653 } else {
654 QCommonStyle::drawTab( p, tb, t, selected ); 654 QCommonStyle::drawTab( p, tb, t, selected );
655 } 655 }
656} 656}
657 657
658#else 658#else
659 659
660void LightStyle::drawTab(QPainter *p, const QTabBar *tabbar, QTab *tab, 660void LightStyle::drawTab(QPainter *p, const QTabBar *tabbar, QTab *tab,
661 bool selected) 661 bool selected)
662{ 662{
663 p->save(); 663 p->save();
664 664
665 QColorGroup g = tabbar->colorGroup(); 665 QColorGroup g = tabbar->colorGroup();
666 QRect fr(tab->r); 666 QRect fr(tab->r);
667 fr.setLeft(fr.left() + 2); 667 fr.setLeft(fr.left() + 2);
668 668
669 if (! selected) { 669 if (! selected) {
670 if (tabbar->shape() == QTabBar::RoundedAbove || 670 if (tabbar->shape() == QTabBar::RoundedAbove ||
671 tabbar->shape() == QTabBar::TriangularAbove) { 671 tabbar->shape() == QTabBar::TriangularAbove) {
672 672
673 fr.setTop(fr.top() + 2); 673 fr.setTop(fr.top() + 2);
674 } else { 674 } else {
675 fr.setBottom(fr.bottom() - 2); 675 fr.setBottom(fr.bottom() - 2);
676 } 676 }
677 } 677 }
678 678
679 QRegion tabr(tab->r); 679 QRegion tabr(tab->r);
680 680
681 QPointArray cliptri(4); 681 QPointArray cliptri(4);
682 cliptri.setPoint(0, fr.left(), fr.top()); 682 cliptri.setPoint(0, fr.left(), fr.top());
683 cliptri.setPoint(1, fr.left(), fr.top() + 5); 683 cliptri.setPoint(1, fr.left(), fr.top() + 5);
684 cliptri.setPoint(2, fr.left() + 5, fr.top()); 684 cliptri.setPoint(2, fr.left() + 5, fr.top());
685 cliptri.setPoint(3, fr.left(), fr.top()); 685 cliptri.setPoint(3, fr.left(), fr.top());
686 QRegion trir(cliptri); 686 QRegion trir(cliptri);
687 p->setClipRegion(tabr - trir); 687 p->setClipRegion(tabr - trir);
688 688
689 p->setPen( NoPen ); 689 p->setPen( NoPen );
690 p->setBrush(g.brush(selected ? QColorGroup::Background : QColorGroup::Mid)); 690 p->setBrush(g.brush(selected ? QColorGroup::Background : QColorGroup::Mid));
691 691
692 fr.setWidth(fr.width() - 1); 692 fr.setWidth(fr.width() - 1);
693 p->drawRect(fr.left() + 1, fr.top() + 1, fr.width() - 2, fr.height() - 2); 693 p->drawRect(fr.left() + 1, fr.top() + 1, fr.width() - 2, fr.height() - 2);
694 694
695 if (tabbar->shape() == QTabBar::RoundedAbove) { 695 if (tabbar->shape() == QTabBar::RoundedAbove) {
696 // "rounded" tabs on top 696 // "rounded" tabs on top
697 fr.setBottom(fr.bottom() - 1); 697 fr.setBottom(fr.bottom() - 1);
698 698
699 p->setPen(g.dark()); 699 p->setPen(g.dark());
700 p->drawLine(fr.left(), fr.top() + 5, fr.left(), fr.bottom() - 1); 700 p->drawLine(fr.left(), fr.top() + 5, fr.left(), fr.bottom() - 1);
701 p->drawLine(fr.left(), fr.top() + 5, fr.left() + 5, fr.top()); 701 p->drawLine(fr.left(), fr.top() + 5, fr.left() + 5, fr.top());
702 p->drawLine(fr.left() + 5, fr.top(), fr.right() - 1, fr.top()); 702 p->drawLine(fr.left() + 5, fr.top(), fr.right() - 1, fr.top());
703 p->drawLine(fr.right(), fr.top() + 1, fr.right(), fr.bottom() - 1); 703 p->drawLine(fr.right(), fr.top() + 1, fr.right(), fr.bottom() - 1);
704 704
705 if (selected) { 705 if (selected) {
706 p->drawLine(fr.right(), fr.bottom(), fr.right() + 2, fr.bottom()); 706 p->drawLine(fr.right(), fr.bottom(), fr.right() + 2, fr.bottom());
707 p->drawPoint(fr.left(), fr.bottom()); 707 p->drawPoint(fr.left(), fr.bottom());
708 } else 708 } else
709 p->drawLine(fr.left(), fr.bottom(), fr.right() + 2, fr.bottom()); 709 p->drawLine(fr.left(), fr.bottom(), fr.right() + 2, fr.bottom());
710 710
711 if (fr.left() == 2) { 711 if (fr.left() == 2) {
712 p->drawPoint(fr.left() - 1, fr.bottom() + 1); 712 p->drawPoint(fr.left() - 1, fr.bottom() + 1);
713 p->drawPoint(fr.left() - 2, fr.bottom() + 2); 713 p->drawPoint(fr.left() - 2, fr.bottom() + 2);
714 } 714 }
715 715
716 if (selected) { 716 if (selected) {
717 p->setPen(g.mid()); 717 p->setPen(g.mid());
718 p->drawLine(fr.right() - 1, fr.top() + 1, fr.right() - 1, fr.bottom() - 2); 718 p->drawLine(fr.right() - 1, fr.top() + 1, fr.right() - 1, fr.bottom() - 2);
719 } 719 }
720 720
721 p->setPen(g.light()); p->setPen(red); 721 p->setPen(g.light()); p->setPen(red);
722 p->drawLine(fr.left() + 1, fr.top() + 6, fr.left() + 1, 722 p->drawLine(fr.left() + 1, fr.top() + 6, fr.left() + 1,
723 fr.bottom() - (selected ? 0 : 1)); 723 fr.bottom() - (selected ? 0 : 1));
724 p->drawLine(fr.left() + 1, fr.top() + 5, fr.left() + 5, fr.top() + 1); 724 p->drawLine(fr.left() + 1, fr.top() + 5, fr.left() + 5, fr.top() + 1);
725 p->drawLine(fr.left() + 6, fr.top() + 1, fr.right() - 3, fr.top() + 1); 725 p->drawLine(fr.left() + 6, fr.top() + 1, fr.right() - 3, fr.top() + 1);
726 if (selected) { 726 if (selected) {
727 p->drawLine(fr.right() + 1, fr.bottom() + 1, 727 p->drawLine(fr.right() + 1, fr.bottom() + 1,
728 fr.right() + 2, fr.bottom() + 1); 728 fr.right() + 2, fr.bottom() + 1);
729 p->drawLine(fr.left(), fr.bottom() + 1, fr.left() + 1, fr.bottom() + 1); 729 p->drawLine(fr.left(), fr.bottom() + 1, fr.left() + 1, fr.bottom() + 1);
730 } else 730 } else
731 p->drawLine(fr.left(), fr.bottom() + 1, 731 p->drawLine(fr.left(), fr.bottom() + 1,
732 fr.right() + 2, fr.bottom() + 1); 732 fr.right() + 2, fr.bottom() + 1);
733 } else if (tabbar->shape() == QTabBar::RoundedBelow) { 733 } else if (tabbar->shape() == QTabBar::RoundedBelow) {
734 // "rounded" tabs on bottom 734 // "rounded" tabs on bottom
735 fr.setTop(fr.top() + 1); 735 fr.setTop(fr.top() + 1);
736 736
737 p->setPen(g.dark()); 737 p->setPen(g.dark());
738 p->drawLine(fr.left(), fr.top(), fr.left(), fr.bottom() - 1); 738 p->drawLine(fr.left(), fr.top(), fr.left(), fr.bottom() - 1);
739 p->drawLine(fr.left() + 1, fr.bottom(), fr.right() - 1, fr.bottom()); 739 p->drawLine(fr.left() + 1, fr.bottom(), fr.right() - 1, fr.bottom());
740 p->drawLine(fr.right(), fr.top(), fr.right(), fr.bottom() - 1); 740 p->drawLine(fr.right(), fr.top(), fr.right(), fr.bottom() - 1);
741 741
742 if (! selected) 742 if (! selected)
743 p->drawLine(fr.left(), fr.top(), fr.right() + 3, fr.top()); 743 p->drawLine(fr.left(), fr.top(), fr.right() + 3, fr.top());
744 else 744 else
745 p->drawLine(fr.right(), fr.top(), fr.right() + 3, fr.top()); 745 p->drawLine(fr.right(), fr.top(), fr.right() + 3, fr.top());
746 746
747 p->setPen(g.mid()); 747 p->setPen(g.mid());
748 if (selected) 748 if (selected)
749 p->drawLine(fr.right() - 1, fr.top() + 1, fr.right() - 1, fr.bottom() - 1); 749 p->drawLine(fr.right() - 1, fr.top() + 1, fr.right() - 1, fr.bottom() - 1);
750 else 750 else
751 p->drawLine(fr.left(), fr.top() - 1, fr.right() + 3, fr.top() - 1); 751 p->drawLine(fr.left(), fr.top() - 1, fr.right() + 3, fr.top() - 1);
752 752
753 p->setPen(g.light()); 753 p->setPen(g.light());
754 p->drawLine(fr.left() + 1, fr.top() + (selected ? -1 : 2), 754 p->drawLine(fr.left() + 1, fr.top() + (selected ? -1 : 2),
755 fr.left() + 1, fr.bottom() - 1); 755 fr.left() + 1, fr.bottom() - 1);
756 756
757 } else { 757 } else {
758 // triangular drawing code 758 // triangular drawing code
759 QCommonStyle::drawTab(p, tabbar, tab, selected); 759 QCommonStyle::drawTab(p, tabbar, tab, selected);
760 } 760 }
761 761
762 p->restore(); 762 p->restore();
763} 763}
764#endif 764#endif
765 765
766void LightStyle::drawSlider(QPainter *p, int x, int y, int w, int h, 766void LightStyle::drawSlider(QPainter *p, int x, int y, int w, int h,
767 const QColorGroup &g, Qt::Orientation orientation, 767 const QColorGroup &g, Qt::Orientation orientation,
768 bool above, bool below) 768 bool above, bool below)
769{ 769{
770 drawButton(p, x, y, w, h, g, FALSE, &g.brush(QColorGroup::Button)); 770 drawButton(p, x, y, w, h, g, FALSE, &g.brush(QColorGroup::Button));
771 771
772 if (orientation == Horizontal) { 772 if (orientation == Horizontal) {
773 if (above && below) { 773 if (above && below) {
774 drawArrow(p, Qt::UpArrow, FALSE, x + 1, y + 1, w, h / 2, g, TRUE); 774 drawArrow(p, Qt::UpArrow, FALSE, x + 1, y + 1, w, h / 2, g, TRUE);
775 drawArrow(p, Qt::DownArrow, FALSE, x + 1, y + (h / 2) - 1, 775 drawArrow(p, Qt::DownArrow, FALSE, x + 1, y + (h / 2) - 1,
776 w, h / 2, g, TRUE); 776 w, h / 2, g, TRUE);
777 } else 777 } else
778 drawArrow(p, (above) ? Qt::UpArrow : Qt::DownArrow, 778 drawArrow(p, (above) ? Qt::UpArrow : Qt::DownArrow,
779 FALSE, x + 1, y, w, h, g, TRUE); 779 FALSE, x + 1, y, w, h, g, TRUE);
780 } else { 780 } else {
781 if (above && below) { 781 if (above && below) {
782 drawArrow(p, Qt::LeftArrow, FALSE, x + 1, y, w / 2, h, g, TRUE); 782 drawArrow(p, Qt::LeftArrow, FALSE, x + 1, y, w / 2, h, g, TRUE);
783 drawArrow(p, Qt::RightArrow, FALSE, x + (w / 2) - 2, y, w / 2, h, g, TRUE); 783 drawArrow(p, Qt::RightArrow, FALSE, x + (w / 2) - 2, y, w / 2, h, g, TRUE);
784 } else 784 } else
785 drawArrow(p, (above) ? Qt::LeftArrow : Qt::RightArrow, 785 drawArrow(p, (above) ? Qt::LeftArrow : Qt::RightArrow,
786 FALSE, x, y, w, h, g, TRUE); 786 FALSE, x, y, w, h, g, TRUE);
787 } 787 }
788} 788}
789 789
790 790
791void LightStyle::drawSliderGroove(QPainter *p, int x, int y, int w, int h, 791void LightStyle::drawSliderGroove(QPainter *p, int x, int y, int w, int h,
792 const QColorGroup& g, QCOORD c, 792 const QColorGroup& g, QCOORD c,
793 Qt::Orientation orientation) 793 Qt::Orientation orientation)
794{ 794{
795 if (orientation == Horizontal) 795 if (orientation == Horizontal)
796 drawButton(p, x, y+c - 3, w, 6, g, TRUE, &g.brush(QColorGroup::Mid)); 796 drawButton(p, x, y+c - 3, w, 6, g, TRUE, &g.brush(QColorGroup::Mid));
797 else 797 else
798 drawButton(p, x+c - 3, y, 6, h, g, TRUE, &g.brush(QColorGroup::Mid)); 798 drawButton(p, x+c - 3, y, 6, h, g, TRUE, &g.brush(QColorGroup::Mid));
799} 799}
800 800
801 801
802void LightStyle::scrollBarMetrics(const QScrollBar *scrollbar, 802void LightStyle::scrollBarMetrics(const QScrollBar *scrollbar,
803 int &sliderMin, int &sliderMax, 803 int &sliderMin, int &sliderMax,
804 int &sliderLength, int &buttonDim) const 804 int &sliderLength, int &buttonDim)
805{ 805{
806 int maxLength; 806 int maxLength;
807 int length = ((scrollbar->orientation() == Horizontal) ? 807 int length = ((scrollbar->orientation() == Horizontal) ?
808 scrollbar->width() : scrollbar->height()); 808 scrollbar->width() : scrollbar->height());
809 int extent = ((scrollbar->orientation() == Horizontal) ? 809 int extent = ((scrollbar->orientation() == Horizontal) ?
810 scrollbar->height() : scrollbar->width()); 810 scrollbar->height() : scrollbar->width());
811 extent--; 811 extent--;
812 812
813 if (length > (extent + defaultFrameWidth() - 1) * 2 + defaultFrameWidth()) 813 if (length > (extent + defaultFrameWidth() - 1) * 2 + defaultFrameWidth())
814 buttonDim = extent - defaultFrameWidth(); 814 buttonDim = extent - defaultFrameWidth();
815 else 815 else
816 buttonDim = (length - defaultFrameWidth()) / 2 - 1; 816 buttonDim = (length - defaultFrameWidth()) / 2 - 1;
817 817
818 sliderMin = buttonDim; 818 sliderMin = buttonDim;
819 maxLength = length - buttonDim * 3; 819 maxLength = length - buttonDim * 3;
820 820
821 if (scrollbar->maxValue() != scrollbar->minValue()) { 821 if (scrollbar->maxValue() != scrollbar->minValue()) {
822 uint range = scrollbar->maxValue() - scrollbar->minValue(); 822 uint range = scrollbar->maxValue() - scrollbar->minValue();
823 sliderLength = (scrollbar->pageStep() * maxLength) / 823 sliderLength = (scrollbar->pageStep() * maxLength) /
824 (range + scrollbar->pageStep()); 824 (range + scrollbar->pageStep());
825 825
826 if (sliderLength < buttonDim || range > INT_MAX / 2) 826 if (sliderLength < buttonDim || range > INT_MAX / 2)
827 sliderLength = buttonDim; 827 sliderLength = buttonDim;
828 if (sliderLength > maxLength) 828 if (sliderLength > maxLength)
829 sliderLength = maxLength; 829 sliderLength = maxLength;
830 } else 830 } else
831 sliderLength = maxLength; 831 sliderLength = maxLength;
832 832
833 sliderMax = sliderMin + maxLength - sliderLength; 833 sliderMax = sliderMin + maxLength - sliderLength;
834} 834}
835 835
836 836
837QStyle::ScrollControl LightStyle::scrollBarPointOver(const QScrollBar *scrollbar, 837QStyle::ScrollControl LightStyle::scrollBarPointOver(const QScrollBar *scrollbar,
838 int sliderStart, const QPoint &p) 838 int sliderStart, const QPoint &p)
839{ 839{
840 if (! scrollbar->rect().contains(p)) 840 if (! scrollbar->rect().contains(p))
841 return NoScroll; 841 return NoScroll;
842 842
843 int sliderMin, sliderMax, sliderLength, buttonDim, pos; 843 int sliderMin, sliderMax, sliderLength, buttonDim, pos;
844 scrollBarMetrics( scrollbar, sliderMin, sliderMax, sliderLength, buttonDim ); 844 scrollBarMetrics( scrollbar, sliderMin, sliderMax, sliderLength, buttonDim );
845 845
846 if (scrollbar->orientation() == Horizontal) 846 if (scrollbar->orientation() == Horizontal)
847 pos = p.x(); 847 pos = p.x();
848 else 848 else
849 pos = p.y(); 849 pos = p.y();
850 850
851 if (pos < buttonDim) 851 if (pos < buttonDim)
852 return SubLine; 852 return SubLine;
853 if (pos < sliderStart) 853 if (pos < sliderStart)
854 return SubPage; 854 return SubPage;
855 if (pos < sliderStart + sliderLength) 855 if (pos < sliderStart + sliderLength)
856 return Slider; 856 return Slider;
857 if (pos < sliderMax + sliderLength) 857 if (pos < sliderMax + sliderLength)
858 return AddPage; 858 return AddPage;
859 if (pos < sliderMax + sliderLength + buttonDim) 859 if (pos < sliderMax + sliderLength + buttonDim)
860 return SubLine; 860 return SubLine;
861 return AddLine; 861 return AddLine;
862} 862}
863 863
864 864
865 865
866void LightStyle::drawScrollBarControls( QPainter* p, const QScrollBar* scrollbar, 866void LightStyle::drawScrollBarControls( QPainter* p, const QScrollBar* scrollbar,
867 int sliderStart, uint controls, 867 int sliderStart, uint controls,
868 uint activeControl ) 868 uint activeControl )
869{ 869{
870 QColorGroup g = scrollbar->colorGroup(); 870 QColorGroup g = scrollbar->colorGroup();
871 871
872 int sliderMin, sliderMax, sliderLength, buttonDim; 872 int sliderMin, sliderMax, sliderLength, buttonDim;
873 scrollBarMetrics( scrollbar, sliderMin, sliderMax, sliderLength, buttonDim ); 873 scrollBarMetrics( scrollbar, sliderMin, sliderMax, sliderLength, buttonDim );
874 874
875 if (sliderStart > sliderMax) { // sanity check 875 if (sliderStart > sliderMax) { // sanity check
876 sliderStart = sliderMax; 876 sliderStart = sliderMax;
877 } 877 }
878 878
879 QRect addR, subR, subR2, addPageR, subPageR, sliderR; 879 QRect addR, subR, subR2, addPageR, subPageR, sliderR;
880 int length = ((scrollbar->orientation() == Horizontal) ? 880 int length = ((scrollbar->orientation() == Horizontal) ?
881 scrollbar->width() : scrollbar->height()); 881 scrollbar->width() : scrollbar->height());
882 int extent = ((scrollbar->orientation() == Horizontal) ? 882 int extent = ((scrollbar->orientation() == Horizontal) ?
883 scrollbar->height() : scrollbar->width()); 883 scrollbar->height() : scrollbar->width());
884 884
885 885
886 int fudge = 3; //####disgusting hack 886 int fudge = 3; //####disgusting hack
887 887
888 if (scrollbar->orientation() == Horizontal) { 888 if (scrollbar->orientation() == Horizontal) {
889 subR.setRect(0, defaultFrameWidth(), 889 subR.setRect(0, defaultFrameWidth(),
890 buttonDim + fudge, buttonDim); 890 buttonDim + fudge, buttonDim);
891 subR2.setRect(length - (buttonDim * 2), defaultFrameWidth() , 891 subR2.setRect(length - (buttonDim * 2), defaultFrameWidth() ,
892 buttonDim, buttonDim); 892 buttonDim, buttonDim);
893 addR.setRect(length - buttonDim, defaultFrameWidth(), 893 addR.setRect(length - buttonDim, defaultFrameWidth(),
894 buttonDim, buttonDim); 894 buttonDim, buttonDim);
895 } else { 895 } else {
896 subR.setRect(defaultFrameWidth() + 1, 0, 896 subR.setRect(defaultFrameWidth() + 1, 0,
897 buttonDim, buttonDim + fudge); 897 buttonDim, buttonDim + fudge);
898 subR2.setRect(defaultFrameWidth() + 1, length - (buttonDim * 2), 898 subR2.setRect(defaultFrameWidth() + 1, length - (buttonDim * 2),
899 buttonDim, buttonDim); 899 buttonDim, buttonDim);
900 addR.setRect(defaultFrameWidth() + 1, length - buttonDim, 900 addR.setRect(defaultFrameWidth() + 1, length - buttonDim,
901 buttonDim, buttonDim); 901 buttonDim, buttonDim);
902 } 902 }
903 903
904 int sliderEnd = sliderStart + sliderLength; 904 int sliderEnd = sliderStart + sliderLength;
905 int sliderW = extent - defaultFrameWidth() - 1; 905 int sliderW = extent - defaultFrameWidth() - 1;
906 if (scrollbar->orientation() == Horizontal) { 906 if (scrollbar->orientation() == Horizontal) {
907 subPageR.setRect( subR.right() + 1, defaultFrameWidth(), 907 subPageR.setRect( subR.right() + 1, defaultFrameWidth(),
908 sliderStart - subR.right() - 1 , sliderW ); 908 sliderStart - subR.right() - 1 , sliderW );
909 addPageR.setRect( sliderEnd, defaultFrameWidth(), 909 addPageR.setRect( sliderEnd, defaultFrameWidth(),
910 subR2.left() - sliderEnd, sliderW ); 910 subR2.left() - sliderEnd, sliderW );
911 sliderR.setRect( sliderStart, defaultFrameWidth(), sliderLength, sliderW ); 911 sliderR.setRect( sliderStart, defaultFrameWidth(), sliderLength, sliderW );
912 } else { 912 } else {
913 subPageR.setRect( defaultFrameWidth(), subR.bottom() + 1, 913 subPageR.setRect( defaultFrameWidth(), subR.bottom() + 1,
914 sliderW, sliderStart - subR.bottom() - 1 ); 914 sliderW, sliderStart - subR.bottom() - 1 );
915 addPageR.setRect( defaultFrameWidth(), sliderEnd, 915 addPageR.setRect( defaultFrameWidth(), sliderEnd,
916 sliderW, subR2.top() - sliderEnd ); 916 sliderW, subR2.top() - sliderEnd );
917 sliderR .setRect( defaultFrameWidth(), sliderStart, 917 sliderR .setRect( defaultFrameWidth(), sliderStart,
918 sliderW, sliderLength ); 918 sliderW, sliderLength );
919 } 919 }
920 920
921 if ( controls == ( AddLine | SubLine | AddPage | SubPage | 921 if ( controls == ( AddLine | SubLine | AddPage | SubPage |
922 Slider | First | Last ) ) { 922 Slider | First | Last ) ) {
923 if (scrollbar->orientation() == Horizontal) 923 if (scrollbar->orientation() == Horizontal)
924 qDrawShadePanel(p, 0, 0, length, 2, g, TRUE, 1, 924 qDrawShadePanel(p, 0, 0, length, 2, g, TRUE, 1,
925 &g.brush(QColorGroup::Background)); 925 &g.brush(QColorGroup::Background));
926 else 926 else
927 qDrawShadePanel(p, 0, 0, 2, length, g, TRUE, 1, 927 qDrawShadePanel(p, 0, 0, 2, length, g, TRUE, 1,
928 &g.brush(QColorGroup::Background)); 928 &g.brush(QColorGroup::Background));
929 } 929 }
930 930
931 if ( controls & AddLine ) 931 if ( controls & AddLine )
932 drawArrow( p, (scrollbar->orientation() == Vertical) ? DownArrow : RightArrow, 932 drawArrow( p, (scrollbar->orientation() == Vertical) ? DownArrow : RightArrow,
933 FALSE, addR.x(), addR.y(), 933 FALSE, addR.x(), addR.y(),
934 addR.width(), addR.height(), 934 addR.width(), addR.height(),
935 (( activeControl == AddLine ) ? 935 (( activeControl == AddLine ) ?
936 singleton->hoverPalette.active() : g), 936 singleton->hoverPalette.active() : g),
937 TRUE, &g.brush(QColorGroup::Background)); 937 TRUE, &g.brush(QColorGroup::Background));
938 if ( controls & SubLine ) { 938 if ( controls & SubLine ) {
939 drawArrow( p, (scrollbar->orientation() == Vertical) ? UpArrow : LeftArrow, 939 drawArrow( p, (scrollbar->orientation() == Vertical) ? UpArrow : LeftArrow,
940 FALSE, subR.x(), subR.y(), 940 FALSE, subR.x(), subR.y(),
941 subR.width(), subR.height(), 941 subR.width(), subR.height(),
942 (( activeControl == SubLine ) ? 942 (( activeControl == SubLine ) ?
943 singleton->hoverPalette.active() : g), 943 singleton->hoverPalette.active() : g),
944 TRUE, &g.brush(QColorGroup::Background)); 944 TRUE, &g.brush(QColorGroup::Background));
945 drawArrow( p, (scrollbar->orientation() == Vertical) ? UpArrow : LeftArrow, 945 drawArrow( p, (scrollbar->orientation() == Vertical) ? UpArrow : LeftArrow,
946 FALSE, subR2.x(), subR2.y(), 946 FALSE, subR2.x(), subR2.y(),
947 subR2.width(), subR2.height(), 947 subR2.width(), subR2.height(),
948 (( activeControl == SubLine ) ? 948 (( activeControl == SubLine ) ?
949 singleton->hoverPalette.active() : g), 949 singleton->hoverPalette.active() : g),
950 TRUE, &g.brush(QColorGroup::Background)); 950 TRUE, &g.brush(QColorGroup::Background));
951 } 951 }
952 952
953 if ( controls & SubPage ) 953 if ( controls & SubPage )
954 p->fillRect( subPageR, 954 p->fillRect( subPageR,
955 ((activeControl == SubPage) ? 955 ((activeControl == SubPage) ?
956 g.brush( QColorGroup::Dark ) : 956 g.brush( QColorGroup::Dark ) :
957 g.brush( QColorGroup::Mid ))); 957 g.brush( QColorGroup::Mid )));
958 if ( controls & AddPage ) 958 if ( controls & AddPage )
959 p->fillRect( addPageR, 959 p->fillRect( addPageR,
960 ((activeControl == AddPage) ? 960 ((activeControl == AddPage) ?
961 g.brush( QColorGroup::Dark ) : 961 g.brush( QColorGroup::Dark ) :
962 g.brush( QColorGroup::Mid ))); 962 g.brush( QColorGroup::Mid )));
963 963
964 if ( controls & Slider ) { 964 if ( controls & Slider ) {
965 965
966 QPoint bo = p->brushOrigin(); 966 QPoint bo = p->brushOrigin();
967 p->setBrushOrigin(sliderR.topLeft()); 967 p->setBrushOrigin(sliderR.topLeft());
968 if ( sliderR.isValid() ) { 968 if ( sliderR.isValid() ) {
969 p->fillRect( sliderR.x(), sliderR.y(), 2, 2, 969 p->fillRect( sliderR.x(), sliderR.y(), 2, 2,
970 g.brush( QColorGroup::Mid )); 970 g.brush( QColorGroup::Mid ));
971 p->fillRect( sliderR.x() + sliderR.width() - 2, 971 p->fillRect( sliderR.x() + sliderR.width() - 2,
972 sliderR.y(), 2, 2, 972 sliderR.y(), 2, 2,
973 g.brush( QColorGroup::Mid )); 973 g.brush( QColorGroup::Mid ));
974 p->fillRect( sliderR.x() + sliderR.width() - 2, 974 p->fillRect( sliderR.x() + sliderR.width() - 2,
975 sliderR.y() + sliderR.height() - 2, 2, 2, 975 sliderR.y() + sliderR.height() - 2, 2, 2,
976 g.brush( QColorGroup::Mid )); 976 g.brush( QColorGroup::Mid ));
977 p->fillRect( sliderR.x(), 977 p->fillRect( sliderR.x(),
978 sliderR.y() + sliderR.height() - 2, 2, 2, 978 sliderR.y() + sliderR.height() - 2, 2, 2,
979 g.brush( QColorGroup::Mid )); 979 g.brush( QColorGroup::Mid ));
980 980
981 QColorGroup cg( g ); 981 QColorGroup cg( g );
982 cg.setBrush( QColorGroup::Background, g.brush( QColorGroup::Mid ) ); 982 cg.setBrush( QColorGroup::Background, g.brush( QColorGroup::Mid ) );
983 drawBevelButton( p, sliderR.x(), sliderR.y(), 983 drawBevelButton( p, sliderR.x(), sliderR.y(),
984 sliderR.width(), sliderR.height(), 984 sliderR.width(), sliderR.height(),
985 cg, FALSE, &g.brush( QColorGroup::Button ) ); 985 cg, FALSE, &g.brush( QColorGroup::Button ) );
986 } 986 }
987 987
988 p->setBrushOrigin(bo); 988 p->setBrushOrigin(bo);
989 } 989 }
990} 990}
991 991
992 992
993void LightStyle::drawToolBarHandle(QPainter *p, const QRect &rect, 993void LightStyle::drawToolBarHandle(QPainter *p, const QRect &rect,
994 Qt::Orientation orientation, 994 Qt::Orientation orientation,
995 bool, const QColorGroup &g, bool) 995 bool, const QColorGroup &g, bool)
996{ 996{
997 p->save(); 997 p->save();
998 p->setPen(g.mid()); 998 p->setPen(g.mid());
999 p->setBrush(g.brush(QColorGroup::Mid)); 999 p->setBrush(g.brush(QColorGroup::Mid));
1000 1000
1001 if (orientation == Qt::Horizontal) { 1001 if (orientation == Qt::Horizontal) {
1002 QRect l, r; 1002 QRect l, r;
1003 l.setRect(rect.x() + 1, rect.y() + 1, rect.width() - 5, rect.height() - 2); 1003 l.setRect(rect.x() + 1, rect.y() + 1, rect.width() - 5, rect.height() - 2);
1004 r.setRect(l.right() + 1, l.y(), 3, l.height()); 1004 r.setRect(l.right() + 1, l.y(), 3, l.height());
1005 1005
1006 p->drawRect(l); 1006 p->drawRect(l);
1007 qDrawShadePanel(p, r, g, FALSE); 1007 qDrawShadePanel(p, r, g, FALSE);
1008 } else { 1008 } else {
1009 QRect t, b; 1009 QRect t, b;
1010 t.setRect(rect.x() + 1, rect.y() + 1, rect.width() - 2, rect.height() - 5); 1010 t.setRect(rect.x() + 1, rect.y() + 1, rect.width() - 2, rect.height() - 5);
1011 b.setRect(t.x(), t.bottom() + 1, t.width(), 3); 1011 b.setRect(t.x(), t.bottom() + 1, t.width(), 3);
1012 1012
1013 p->drawRect(t); 1013 p->drawRect(t);
1014 qDrawShadePanel(p, b, g, FALSE); 1014 qDrawShadePanel(p, b, g, FALSE);
1015 } 1015 }
1016 1016
1017 p->restore(); 1017 p->restore();
1018} 1018}
1019 1019
1020 1020
1021bool LightStyle::eventFilter(QObject *object, QEvent *event) 1021bool LightStyle::eventFilter(QObject *object, QEvent *event)
1022{ 1022{
1023 switch(event->type()) { 1023 switch(event->type()) {
1024 case QEvent::Enter: 1024 case QEvent::Enter:
1025 { 1025 {
1026 if (! object->isWidgetType() || 1026 if (! object->isWidgetType() ||
1027 ! object->inherits("QPushButton")) 1027 ! object->inherits("QPushButton"))
1028 break; 1028 break;
1029 1029
1030 singleton->hoverWidget = (QWidget *) object; 1030 singleton->hoverWidget = (QWidget *) object;
1031 if (! singleton->hoverWidget->isEnabled()) { 1031 if (! singleton->hoverWidget->isEnabled()) {
1032 singleton->hoverWidget = 0; 1032 singleton->hoverWidget = 0;
1033 break; 1033 break;
1034 } 1034 }
1035 1035
1036 QPalette pal = singleton->hoverWidget->palette(); 1036 QPalette pal = singleton->hoverWidget->palette();
1037 if (singleton->hoverWidget->ownPalette()) 1037 if (singleton->hoverWidget->ownPalette())
1038 singleton->savePalette = new QPalette(pal); 1038 singleton->savePalette = new QPalette(pal);
1039 1039
1040 singleton->hoverWidget->setPalette(singleton->hoverPalette); 1040 singleton->hoverWidget->setPalette(singleton->hoverPalette);
1041 1041
1042 break; 1042 break;
1043 } 1043 }
1044 1044
1045 case QEvent::Leave: 1045 case QEvent::Leave:
1046 { 1046 {
1047 if (object != singleton->hoverWidget) 1047 if (object != singleton->hoverWidget)
1048 break; 1048 break;
1049 1049
1050 if (singleton->savePalette) { 1050 if (singleton->savePalette) {
1051 singleton->hoverWidget->setPalette(*(singleton->savePalette)); 1051 singleton->hoverWidget->setPalette(*(singleton->savePalette));
1052 delete singleton->savePalette; 1052 delete singleton->savePalette;
1053 singleton->savePalette = 0; 1053 singleton->savePalette = 0;
1054 } else 1054 } else
1055 singleton->hoverWidget->unsetPalette(); 1055 singleton->hoverWidget->unsetPalette();
1056 1056
1057 singleton->hoverWidget = 0; 1057 singleton->hoverWidget = 0;
1058 1058
1059 break; 1059 break;
1060 } 1060 }
1061 1061
1062 default: 1062 default:
1063 { 1063 {
1064 ; 1064 ;
1065 } 1065 }
1066 } 1066 }
1067 1067
1068 return QWindowsStyle::eventFilter(object, event); 1068 return QWindowsStyle::eventFilter(object, event);
1069} 1069}
1070 1070
1071 1071
1072 static const int motifItemFrame = 1;// menu item frame width 1072 static const int motifItemFrame = 1;// menu item frame width
1073 static const int motifSepHeight = 2;// separator item height 1073 static const int motifSepHeight = 2;// separator item height
1074 static const int motifItemHMargin = 1;// menu item hor text margin 1074 static const int motifItemHMargin = 1;// menu item hor text margin
1075 static const int motifItemVMargin = 2;// menu item ver text margin 1075 static const int motifItemVMargin = 2;// menu item ver text margin
1076 static const int motifArrowHMargin = 0;// arrow horizontal margin 1076 static const int motifArrowHMargin = 0;// arrow horizontal margin
1077 static const int motifTabSpacing = 12;// space between text and tab 1077 static const int motifTabSpacing = 12;// space between text and tab
1078 static const int motifCheckMarkHMargin = 1;// horiz. margins of check mark 1078 static const int motifCheckMarkHMargin = 1;// horiz. margins of check mark
1079 static const int windowsRightBorder= 8; // right border on windows 1079 static const int windowsRightBorder= 8; // right border on windows
1080static const int windowsCheckMarkWidth = 2; // checkmarks width on windows 1080static const int windowsCheckMarkWidth = 2; // checkmarks width on windows
1081 1081
1082/*! \reimp 1082/*! \reimp
1083*/ 1083*/
1084int LightStyle::extraPopupMenuItemWidth( bool checkable, int maxpmw, QMenuItem* mi, const QFontMetrics& /*fm*/ ) 1084int LightStyle::extraPopupMenuItemWidth( bool checkable, int maxpmw, QMenuItem* mi, const QFontMetrics& /*fm*/ )
1085{ 1085{
1086#ifndef QT_NO_MENUDATA 1086#ifndef QT_NO_MENUDATA
1087 int w = 2*motifItemHMargin + 2*motifItemFrame; // a little bit of border can never harm 1087 int w = 2*motifItemHMargin + 2*motifItemFrame; // a little bit of border can never harm
1088 1088
1089 if ( mi->isSeparator() ) 1089 if ( mi->isSeparator() )
1090 return 10; // arbitrary 1090 return 10; // arbitrary
1091 else if ( mi->pixmap() ) 1091 else if ( mi->pixmap() )
1092 w += mi->pixmap()->width();// pixmap only 1092 w += mi->pixmap()->width();// pixmap only
1093 1093
1094 if ( !mi->text().isNull() ) { 1094 if ( !mi->text().isNull() ) {
1095 if ( mi->text().find('\t') >= 0 )// string contains tab 1095 if ( mi->text().find('\t') >= 0 )// string contains tab
1096 w += motifTabSpacing; 1096 w += motifTabSpacing;
1097 } 1097 }
1098 1098
1099 if ( maxpmw ) { // we have iconsets 1099 if ( maxpmw ) { // we have iconsets
1100 w += maxpmw; 1100 w += maxpmw;
1101 w += 6; // add a little extra border around the iconset 1101 w += 6; // add a little extra border around the iconset
1102 } 1102 }
1103 1103
1104 if ( checkable && maxpmw < windowsCheckMarkWidth ) { 1104 if ( checkable && maxpmw < windowsCheckMarkWidth ) {
1105 w += windowsCheckMarkWidth - maxpmw; // space for the checkmarks 1105 w += windowsCheckMarkWidth - maxpmw; // space for the checkmarks
1106 } 1106 }
1107 1107
1108 if ( maxpmw > 0 || checkable ) // we have a check-column ( iconsets or checkmarks) 1108 if ( maxpmw > 0 || checkable ) // we have a check-column ( iconsets or checkmarks)
1109 w += motifCheckMarkHMargin; // add space to separate the columns 1109 w += motifCheckMarkHMargin; // add space to separate the columns
1110 1110
1111 w += windowsRightBorder; // windows has a strange wide border on the right side 1111 w += windowsRightBorder; // windows has a strange wide border on the right side
1112 1112
1113 return w; 1113 return w;
1114#endif 1114#endif
1115} 1115}
1116 1116
1117/*! \reimp 1117/*! \reimp
1118*/ 1118*/
1119int LightStyle::popupMenuItemHeight( bool /*checkable*/, QMenuItem* mi, const QFontMetrics& fm ) 1119int LightStyle::popupMenuItemHeight( bool /*checkable*/, QMenuItem* mi, const QFontMetrics& fm )
1120{ 1120{
1121#ifndef QT_NO_MENUDATA 1121#ifndef QT_NO_MENUDATA
1122 int h = 0; 1122 int h = 0;
1123 if ( mi->isSeparator() ) // separator height 1123 if ( mi->isSeparator() ) // separator height
1124 h = motifSepHeight; 1124 h = motifSepHeight;
1125 else if ( mi->pixmap() ) // pixmap height 1125 else if ( mi->pixmap() ) // pixmap height
1126 h = mi->pixmap()->height() + 2*motifItemFrame; 1126 h = mi->pixmap()->height() + 2*motifItemFrame;
1127 else // text height 1127 else // text height
1128 h = fm.height() + 2*motifItemVMargin + 2*motifItemFrame; 1128 h = fm.height() + 2*motifItemVMargin + 2*motifItemFrame;
1129 1129
1130 if ( !mi->isSeparator() && mi->iconSet() != 0 ) { 1130 if ( !mi->isSeparator() && mi->iconSet() != 0 ) {
1131 h = QMAX( h, mi->iconSet()->pixmap().height() + 2*motifItemFrame ); 1131 h = QMAX( h, mi->iconSet()->pixmap().height() + 2*motifItemFrame );
1132 } 1132 }
1133 if ( mi->custom() ) 1133 if ( mi->custom() )
1134 h = QMAX( h, mi->custom()->sizeHint().height() + 2*motifItemVMargin + 2*motifItemFrame ) - 1; 1134 h = QMAX( h, mi->custom()->sizeHint().height() + 2*motifItemVMargin + 2*motifItemFrame ) - 1;
1135 return h; 1135 return h;
1136#endif 1136#endif
1137} 1137}
1138 1138
1139void LightStyle::drawPopupMenuItem( QPainter* p, bool checkable, int maxpmw, int tab, QMenuItem* mi, 1139void LightStyle::drawPopupMenuItem( QPainter* p, bool checkable, int maxpmw, int tab, QMenuItem* mi,
1140 const QPalette& pal, 1140 const QPalette& pal,
1141 bool act, bool enabled, int x, int y, int w, int h) 1141 bool act, bool enabled, int x, int y, int w, int h)
1142{ 1142{
1143#ifndef QT_NO_MENUDATA 1143#ifndef QT_NO_MENUDATA
1144 const QColorGroup & g = pal.active(); 1144 const QColorGroup & g = pal.active();
1145 bool dis = !enabled; 1145 bool dis = !enabled;
1146 QColorGroup itemg = dis ? pal.disabled() : pal.active(); 1146 QColorGroup itemg = dis ? pal.disabled() : pal.active();
1147 1147
1148 if ( checkable ) 1148 if ( checkable )
1149 maxpmw = QMAX( maxpmw, 8 ); // space for the checkmarks 1149 maxpmw = QMAX( maxpmw, 8 ); // space for the checkmarks
1150 1150
1151 int checkcol = maxpmw; 1151 int checkcol = maxpmw;
1152 1152
1153 if ( mi && mi->isSeparator() ) { // draw separator 1153 if ( mi && mi->isSeparator() ) { // draw separator
1154 p->setPen( g.dark() ); 1154 p->setPen( g.dark() );
1155 p->drawLine( x, y, x+w, y ); 1155 p->drawLine( x, y, x+w, y );
1156 p->setPen( g.light() ); 1156 p->setPen( g.light() );
1157 p->drawLine( x, y+1, x+w, y+1 ); 1157 p->drawLine( x, y+1, x+w, y+1 );
1158 return; 1158 return;
1159 } 1159 }
1160 1160
1161 QBrush fill = act? g.brush( QColorGroup::Highlight ) : 1161 QBrush fill = act? g.brush( QColorGroup::Highlight ) :
1162 g.brush( QColorGroup::Button ); 1162 g.brush( QColorGroup::Button );
1163 p->fillRect( x, y, w, h, fill); 1163 p->fillRect( x, y, w, h, fill);
1164 1164
1165 if ( !mi ) 1165 if ( !mi )
1166 return; 1166 return;
1167 1167
1168 if ( mi->isChecked() ) { 1168 if ( mi->isChecked() ) {
1169 if ( act && !dis ) { 1169 if ( act && !dis ) {
1170 qDrawShadePanel( p, x, y, checkcol, h, 1170 qDrawShadePanel( p, x, y, checkcol, h,
1171 g, TRUE, 1, &g.brush( QColorGroup::Button ) ); 1171 g, TRUE, 1, &g.brush( QColorGroup::Button ) );
1172 } else { 1172 } else {
1173 qDrawShadePanel( p, x, y, checkcol, h, 1173 qDrawShadePanel( p, x, y, checkcol, h,
1174 g, TRUE, 1, &g.brush( QColorGroup::Midlight ) ); 1174 g, TRUE, 1, &g.brush( QColorGroup::Midlight ) );
1175 } 1175 }
1176 } else if ( !act ) { 1176 } else if ( !act ) {
1177 p->fillRect(x, y, checkcol , h, 1177 p->fillRect(x, y, checkcol , h,
1178 g.brush( QColorGroup::Button )); 1178 g.brush( QColorGroup::Button ));
1179 } 1179 }
1180 1180
1181 if ( mi->iconSet() ) { // draw iconset 1181 if ( mi->iconSet() ) { // draw iconset
1182 QIconSet::Mode mode = dis ? QIconSet::Disabled : QIconSet::Normal; 1182 QIconSet::Mode mode = dis ? QIconSet::Disabled : QIconSet::Normal;
1183 if (act && !dis ) 1183 if (act && !dis )
1184 mode = QIconSet::Active; 1184 mode = QIconSet::Active;
1185 QPixmap pixmap; 1185 QPixmap pixmap;
1186 if ( mode == QIconSet::Disabled ) 1186 if ( mode == QIconSet::Disabled )
1187 pixmap = mi->iconSet()->pixmap( QIconSet::Automatic, mode ); 1187 pixmap = mi->iconSet()->pixmap( QIconSet::Automatic, mode );
1188 else 1188 else
1189 pixmap = mi->iconSet()->pixmap(); 1189 pixmap = mi->iconSet()->pixmap();
1190 int pixw = pixmap.width(); 1190 int pixw = pixmap.width();
1191 int pixh = pixmap.height(); 1191 int pixh = pixmap.height();
1192 if ( act && !dis ) { 1192 if ( act && !dis ) {
1193 if ( !mi->isChecked() ) 1193 if ( !mi->isChecked() )
1194 qDrawShadePanel( p, x, y, checkcol, h, g, FALSE, 1, &g.brush( QColorGroup::Button ) ); 1194 qDrawShadePanel( p, x, y, checkcol, h, g, FALSE, 1, &g.brush( QColorGroup::Button ) );
1195 } 1195 }
1196 QRect cr( x, y, checkcol, h ); 1196 QRect cr( x, y, checkcol, h );
1197 QRect pmr( 0, 0, pixw, pixh ); 1197 QRect pmr( 0, 0, pixw, pixh );
1198 pmr.moveCenter( cr.center() ); 1198 pmr.moveCenter( cr.center() );
1199 p->setPen( itemg.text() ); 1199 p->setPen( itemg.text() );
1200 p->drawPixmap( pmr.topLeft(), pixmap ); 1200 p->drawPixmap( pmr.topLeft(), pixmap );
1201 1201
1202 QBrush fill = act? g.brush( QColorGroup::Highlight ) : 1202 QBrush fill = act? g.brush( QColorGroup::Highlight ) :
1203 g.brush( QColorGroup::Button ); 1203 g.brush( QColorGroup::Button );
1204 p->fillRect( x+checkcol + 1, y, w - checkcol - 1, h, fill); 1204 p->fillRect( x+checkcol + 1, y, w - checkcol - 1, h, fill);
1205 } else if ( checkable ) {// just "checking"... 1205 } else if ( checkable ) {// just "checking"...
1206 int mw = checkcol + motifItemFrame; 1206 int mw = checkcol + motifItemFrame;
1207 int mh = h - 2*motifItemFrame; 1207 int mh = h - 2*motifItemFrame;
1208 if ( mi->isChecked() ) { 1208 if ( mi->isChecked() ) {
1209 drawCheckMark( p, x + motifItemFrame + 2, 1209 drawCheckMark( p, x + motifItemFrame + 2,
1210 y+motifItemFrame, mw, mh, itemg, act, dis ); 1210 y+motifItemFrame, mw, mh, itemg, act, dis );
1211 } 1211 }
1212 } 1212 }
1213 1213
1214 p->setPen( act ? g.highlightedText() : g.buttonText() ); 1214 p->setPen( act ? g.highlightedText() : g.buttonText() );
1215 1215
1216 QColor discol; 1216 QColor discol;
1217 if ( dis ) { 1217 if ( dis ) {
1218 discol = itemg.text(); 1218 discol = itemg.text();
1219 p->setPen( discol ); 1219 p->setPen( discol );
1220 } 1220 }
1221 1221
1222 int xm = motifItemFrame + checkcol + motifItemHMargin; 1222 int xm = motifItemFrame + checkcol + motifItemHMargin;
1223 1223
1224 if ( mi->custom() ) { 1224 if ( mi->custom() ) {
1225 int m = motifItemVMargin; 1225 int m = motifItemVMargin;
1226 p->save(); 1226 p->save();
1227 if ( dis && !act ) { 1227 if ( dis && !act ) {
1228 p->setPen( g.light() ); 1228 p->setPen( g.light() );
1229 mi->custom()->paint( p, itemg, act, enabled, 1229 mi->custom()->paint( p, itemg, act, enabled,
1230 x+xm+1, y+m+1, w-xm-tab+1, h-2*m ); 1230 x+xm+1, y+m+1, w-xm-tab+1, h-2*m );
1231 p->setPen( discol ); 1231 p->setPen( discol );
1232 } 1232 }
1233 mi->custom()->paint( p, itemg, act, enabled, 1233 mi->custom()->paint( p, itemg, act, enabled,
1234 x+xm, y+m, w-xm-tab+1, h-2*m ); 1234 x+xm, y+m, w-xm-tab+1, h-2*m );
1235 p->restore(); 1235 p->restore();
1236 } 1236 }
1237 QString s = mi->text(); 1237 QString s = mi->text();
1238 if ( !s.isNull() ) { // draw text 1238 if ( !s.isNull() ) { // draw text
1239 int t = s.find( '\t' ); 1239 int t = s.find( '\t' );
1240 int m = motifItemVMargin; 1240 int m = motifItemVMargin;
1241 const int text_flags = AlignVCenter|ShowPrefix | DontClip | SingleLine; 1241 const int text_flags = AlignVCenter|ShowPrefix | DontClip | SingleLine;
1242 if ( t >= 0 ) { // draw tab text 1242 if ( t >= 0 ) { // draw tab text
1243 if ( dis && !act ) { 1243 if ( dis && !act ) {
1244 p->setPen( g.light() ); 1244 p->setPen( g.light() );
1245 p->drawText( x+w-tab-windowsRightBorder-motifItemHMargin-motifItemFrame+1, 1245 p->drawText( x+w-tab-windowsRightBorder-motifItemHMargin-motifItemFrame+1,
1246 y+m+1, tab, h-2*m, text_flags, s.mid( t+1 )); 1246 y+m+1, tab, h-2*m, text_flags, s.mid( t+1 ));
1247 p->setPen( discol ); 1247 p->setPen( discol );
1248 } 1248 }
1249 p->drawText( x+w-tab-windowsRightBorder-motifItemHMargin-motifItemFrame, 1249 p->drawText( x+w-tab-windowsRightBorder-motifItemHMargin-motifItemFrame,
1250 y+m, tab, h-2*m, text_flags, s.mid( t+1 ) ); 1250 y+m, tab, h-2*m, text_flags, s.mid( t+1 ) );
1251 } 1251 }
1252 if ( dis && !act ) { 1252 if ( dis && !act ) {
1253 p->setPen( g.light() ); 1253 p->setPen( g.light() );
1254 p->drawText( x+xm+1, y+m+1, w-xm+1, h-2*m, text_flags, s, t ); 1254 p->drawText( x+xm+1, y+m+1, w-xm+1, h-2*m, text_flags, s, t );
1255 p->setPen( discol ); 1255 p->setPen( discol );
1256 } 1256 }
1257 p->drawText( x+xm, y+m, w-xm-tab+1, h-2*m, text_flags, s, t ); 1257 p->drawText( x+xm, y+m, w-xm-tab+1, h-2*m, text_flags, s, t );
1258 } else if ( mi->pixmap() ) { // draw pixmap 1258 } else if ( mi->pixmap() ) { // draw pixmap
1259 QPixmap *pixmap = mi->pixmap(); 1259 QPixmap *pixmap = mi->pixmap();
1260 if ( pixmap->depth() == 1 ) 1260 if ( pixmap->depth() == 1 )
1261 p->setBackgroundMode( OpaqueMode ); 1261 p->setBackgroundMode( OpaqueMode );
1262 p->drawPixmap( x+xm, y+motifItemFrame, *pixmap ); 1262 p->drawPixmap( x+xm, y+motifItemFrame, *pixmap );
1263 if ( pixmap->depth() == 1 ) 1263 if ( pixmap->depth() == 1 )
1264 p->setBackgroundMode( TransparentMode ); 1264 p->setBackgroundMode( TransparentMode );
1265 } 1265 }
1266 if ( mi->popup() ) { // draw sub menu arrow 1266 if ( mi->popup() ) { // draw sub menu arrow
1267 int dim = (h-2*motifItemFrame) / 2; 1267 int dim = (h-2*motifItemFrame) / 2;
1268 if ( act ) { 1268 if ( act ) {
1269 if ( !dis ) 1269 if ( !dis )
1270 discol = white; 1270 discol = white;
1271 QColorGroup g2( discol, g.highlight(), 1271 QColorGroup g2( discol, g.highlight(),
1272 white, white, 1272 white, white,
1273 dis ? discol : white, 1273 dis ? discol : white,
1274 discol, white ); 1274 discol, white );
1275 drawArrow( p, RightArrow, FALSE, 1275 drawArrow( p, RightArrow, FALSE,
1276 x+w - motifArrowHMargin - motifItemFrame - dim, y+h/2-dim/2, 1276 x+w - motifArrowHMargin - motifItemFrame - dim, y+h/2-dim/2,
1277 dim, dim, g2, TRUE ); 1277 dim, dim, g2, TRUE );
1278 } else { 1278 } else {
1279 drawArrow( p, RightArrow, 1279 drawArrow( p, RightArrow,
1280 FALSE, 1280 FALSE,
1281 x+w - motifArrowHMargin - motifItemFrame - dim, y+h/2-dim/2, 1281 x+w - motifArrowHMargin - motifItemFrame - dim, y+h/2-dim/2,
1282 dim, dim, g, mi->isEnabled() ); 1282 dim, dim, g, mi->isEnabled() );
1283 } 1283 }
1284 } 1284 }
1285#endif 1285#endif
1286} 1286}
1287 1287
1288#endif 1288#endif
diff --git a/library/lightstyle.h b/library/lightstyle.h
index 0392957..52e19b2 100644
--- a/library/lightstyle.h
+++ b/library/lightstyle.h
@@ -1,120 +1,120 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 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#ifndef LIGHTSTYLE_H 20#ifndef LIGHTSTYLE_H
21#define LIGHTSTYLE_H 21#define LIGHTSTYLE_H
22 22
23 23
24#ifndef QT_H 24#ifndef QT_H
25#include <qstyle.h> 25#include <qstyle.h>
26#include <qwindowsstyle.h> 26#include <qwindowsstyle.h>
27#endif // QT_H 27#endif // QT_H
28 28
29#if QT_VERSION < 0x030000 29#if QT_VERSION < 0x030000
30 30
31#ifdef QT_PLUGIN_STYLE_LIGHT 31#ifdef QT_PLUGIN_STYLE_LIGHT
32# define Q_EXPORT_STYLE_LIGHT 32# define Q_EXPORT_STYLE_LIGHT
33#else 33#else
34# define Q_EXPORT_STYLE_LIGHT Q_EXPORT 34# define Q_EXPORT_STYLE_LIGHT Q_EXPORT
35#endif // QT_PLUGIN_STYLE_LIGHT 35#endif // QT_PLUGIN_STYLE_LIGHT
36 36
37 37
38class Q_EXPORT_STYLE_LIGHT LightStyle : public QWindowsStyle 38class Q_EXPORT_STYLE_LIGHT LightStyle : public QWindowsStyle
39{ 39{
40public: 40public:
41 LightStyle(); 41 LightStyle();
42 virtual ~LightStyle(); 42 virtual ~LightStyle();
43 43
44 void polish(QWidget *widget); 44 void polish(QWidget *widget);
45 void unPolish(QWidget*widget); 45 void unPolish(QWidget*widget);
46 46
47 void polish(QApplication *app); 47 void polish(QApplication *app);
48 void unPolish(QApplication *app); 48 void unPolish(QApplication *app);
49 49
50 void polishPopupMenu(QPopupMenu *menu); 50 void polishPopupMenu(QPopupMenu *menu);
51 51
52 void drawPushButton(QPushButton *button, QPainter *p); 52 void drawPushButton(QPushButton *button, QPainter *p);
53 void drawButton(QPainter *p, int x, int y, int w, int h, 53 void drawButton(QPainter *p, int x, int y, int w, int h,
54 const QColorGroup &g, bool sunken = FALSE, 54 const QColorGroup &g, bool sunken = FALSE,
55 const QBrush *fill = 0); 55 const QBrush *fill = 0);
56 void drawBevelButton(QPainter *p, int x, int y, int w, int h, 56 void drawBevelButton(QPainter *p, int x, int y, int w, int h,
57 const QColorGroup &g, bool sunken = FALSE, 57 const QColorGroup &g, bool sunken = FALSE,
58 const QBrush *fill = 0); 58 const QBrush *fill = 0);
59 void getButtonShift(int &x, int &y) const; 59 void getButtonShift(int &x, int &y);
60 60
61 void drawComboButton(QPainter *p, int x, int y, int w, int h, 61 void drawComboButton(QPainter *p, int x, int y, int w, int h,
62 const QColorGroup &g, bool sunken = FALSE, 62 const QColorGroup &g, bool sunken = FALSE,
63 bool editable = FALSE, bool = TRUE, 63 bool editable = FALSE, bool = TRUE,
64 const QBrush *fill = 0); 64 const QBrush *fill = 0);
65 QRect comboButtonRect(int x, int y, int w, int h) const; 65 QRect comboButtonRect(int x, int y, int w, int h);
66 QRect comboButtonFocusRect(int x, int y, int w, int h) const; 66 QRect comboButtonFocusRect(int x, int y, int w, int h);
67 67
68 void drawIndicator(QPainter *p, int x, int y ,int w, int h, 68 void drawIndicator(QPainter *p, int x, int y ,int w, int h,
69 const QColorGroup &g, int state, 69 const QColorGroup &g, int state,
70 bool = FALSE, bool = TRUE); 70 bool = FALSE, bool = TRUE);
71 QSize indicatorSize() const; 71 QSize indicatorSize() const;
72 72
73 void drawExclusiveIndicator(QPainter *p, int x, int y ,int w, int h, 73 void drawExclusiveIndicator(QPainter *p, int x, int y ,int w, int h,
74 const QColorGroup &g, bool on, 74 const QColorGroup &g, bool on,
75 bool = FALSE, bool = TRUE); 75 bool = FALSE, bool = TRUE);
76 QSize exclusiveIndicatorSize() const; 76 QSize exclusiveIndicatorSize() const;
77 77
78 void drawPanel(QPainter * p, int x, int y, int w, int h, 78 void drawPanel(QPainter * p, int x, int y, int w, int h,
79 const QColorGroup &g, bool sunken = FALSE, 79 const QColorGroup &g, bool sunken = FALSE,
80 int = 1, const QBrush * = 0); 80 int = 1, const QBrush * = 0);
81 81
82 void scrollBarMetrics( const QScrollBar *, 82 void scrollBarMetrics( const QScrollBar *,
83 int &, int &, int &, int & ) const; 83 int &, int &, int &, int & );
84 void drawScrollBarControls(QPainter* p, const QScrollBar* sb, 84 void drawScrollBarControls(QPainter* p, const QScrollBar* sb,
85 int sliderStart, uint controls, 85 int sliderStart, uint controls,
86 uint activeControl); 86 uint activeControl);
87 QStyle::ScrollControl scrollBarPointOver(const QScrollBar *, int, const QPoint& p); 87 QStyle::ScrollControl scrollBarPointOver(const QScrollBar *, int, const QPoint& p);
88 88
89 void drawTab(QPainter *p, const QTabBar *tabbar, QTab *tab, bool selected); 89 void drawTab(QPainter *p, const QTabBar *tabbar, QTab *tab, bool selected);
90 90
91 void drawSlider(QPainter *p, int x, int y, int w, int h, 91 void drawSlider(QPainter *p, int x, int y, int w, int h,
92 const QColorGroup &g, Qt::Orientation orientation, 92 const QColorGroup &g, Qt::Orientation orientation,
93 bool, bool); 93 bool, bool);
94 void drawSliderGroove(QPainter *p, int x, int y, int w, int h, 94 void drawSliderGroove(QPainter *p, int x, int y, int w, int h,
95 const QColorGroup& g, QCOORD, 95 const QColorGroup& g, QCOORD,
96 Qt::Orientation ); 96 Qt::Orientation );
97 97
98 void drawToolBarHandle(QPainter *, const QRect &, Qt::Orientation, 98 void drawToolBarHandle(QPainter *, const QRect &, Qt::Orientation,
99 bool, const QColorGroup &, bool = FALSE ); 99 bool, const QColorGroup &, bool = FALSE );
100 100
101 QSize scrollBarExtent() const; 101 QSize scrollBarExtent() const;
102 int buttonDefaultIndicatorWidth() const; 102 int buttonDefaultIndicatorWidth() const;
103 int buttonMargin() const; 103 int buttonMargin() const;
104 int sliderThickness() const; 104 int sliderThickness() const;
105 int sliderLength() const; 105 int sliderLength() const;
106 int defaultFrameWidth() const; 106 int defaultFrameWidth() const;
107 107
108 int extraPopupMenuItemWidth( bool checkable, int maxpmw, QMenuItem*, const QFontMetrics& ); 108 int extraPopupMenuItemWidth( bool checkable, int maxpmw, QMenuItem*, const QFontMetrics& );
109 int popupMenuItemHeight( bool checkable, QMenuItem*, const QFontMetrics& ); 109 int popupMenuItemHeight( bool checkable, QMenuItem*, const QFontMetrics& );
110 void drawPopupMenuItem( QPainter* p, bool checkable, int maxpmw, int tab, QMenuItem* mi, 110 void drawPopupMenuItem( QPainter* p, bool checkable, int maxpmw, int tab, QMenuItem* mi,
111 const QPalette& pal, 111 const QPalette& pal,
112 bool act, bool enabled, int x, int y, int w, int h); 112 bool act, bool enabled, int x, int y, int w, int h);
113 113
114protected: 114protected:
115 bool eventFilter(QObject *, QEvent *); 115 bool eventFilter(QObject *, QEvent *);
116}; 116};
117 117
118#endif 118#endif
119 119
120#endif // LIGHTSTYLE_H 120#endif // LIGHTSTYLE_H