summaryrefslogtreecommitdiff
path: root/library
authoreilers <eilers>2003-08-08 14:45:49 (UTC)
committer eilers <eilers>2003-08-08 14:45:49 (UTC)
commit14d394e6c107b037a09a31a92605034fe50f7813 (patch) (unidiff)
tree800699cf4dc9681c3eb023340634dd6a15fd04c8 /library
parentdbc6ea35f5535a1f69deb7ebbafc0f721721dbf2 (diff)
downloadopie-14d394e6c107b037a09a31a92605034fe50f7813.zip
opie-14d394e6c107b037a09a31a92605034fe50f7813.tar.gz
opie-14d394e6c107b037a09a31a92605034fe50f7813.tar.bz2
Merged branches from BRANCH_1_0
Diffstat (limited to 'library') (more/less context) (ignore whitespace changes)
-rw-r--r--library/applnk.cpp2
-rw-r--r--library/applnk.h2
-rw-r--r--library/backend/vcc.y2
-rw-r--r--library/backend/vcc_yacc.cpp2
-rw-r--r--library/backend/vobject.cpp1
-rw-r--r--library/calendar.cpp56
-rw-r--r--library/categoryedit_p.cpp1
-rw-r--r--library/categorymenu.cpp62
-rw-r--r--library/categoryselect.cpp114
-rw-r--r--library/categoryselect.h14
-rw-r--r--library/config.cpp26
-rw-r--r--library/datebookdb.cpp4
-rw-r--r--library/datebookmonth.cpp5
-rw-r--r--library/global.cpp24
-rw-r--r--library/inlinepics_p.h3083
-rw-r--r--library/libqpe1.control2
-rw-r--r--library/lnkpropertiesbase_p.ui10
-rw-r--r--library/mimetype.cpp64
-rw-r--r--library/opie-bootsplash.control2
-rw-r--r--library/opie-common.control2
-rwxr-xr-xlibrary/opie-common.postinst1
-rw-r--r--library/password.cpp15
-rw-r--r--library/qpeapplication.cpp56
-rw-r--r--library/qpedecoration_qws.cpp34
-rw-r--r--library/qpedecoration_qws.h2
-rw-r--r--library/qpemessagebox.cpp22
-rw-r--r--library/sound.cpp31
-rw-r--r--library/storage.cpp85
-rw-r--r--library/task-opie-applets.control2
-rw-r--r--library/task-opie-apps.control4
-rw-r--r--library/task-opie-complete.control2
-rw-r--r--library/task-opie-games.control2
-rw-r--r--library/task-opie-minimal.control3
-rw-r--r--library/task-opie-pim.control4
-rw-r--r--library/task-opie-settings.control3
-rw-r--r--library/task-opie.control4
-rw-r--r--library/timestring.cpp6
-rw-r--r--library/tzselect.cpp32
-rw-r--r--library/version.h2
39 files changed, 2136 insertions, 1652 deletions
diff --git a/library/applnk.cpp b/library/applnk.cpp
index 4adf1bd..8763eb2 100644
--- a/library/applnk.cpp
+++ b/library/applnk.cpp
@@ -1,1497 +1,1497 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. 2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of the Qtopia Environment. 4** This file is part of the Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20 20
21#define QTOPIA_INTERNAL_MIMEEXT 21#define QTOPIA_INTERNAL_MIMEEXT
22#define QTOPIA_INTERNAL_PRELOADACCESS 22#define QTOPIA_INTERNAL_PRELOADACCESS
23#define QTOPIA_INTERNAL_APPLNKASSIGN 23#define QTOPIA_INTERNAL_APPLNKASSIGN
24 24
25#include "applnk.h" 25#include "applnk.h"
26 26
27#include <qpe/qpeapplication.h> 27#include <qpe/qpeapplication.h>
28#include <qpe/categories.h> 28#include <qpe/categories.h>
29#include <qpe/categoryselect.h> 29#include <qpe/categoryselect.h>
30#include <qpe/qcopenvelope_qws.h> 30#include <qpe/qcopenvelope_qws.h>
31#include <qpe/global.h> 31#include <qpe/global.h>
32#include <qpe/mimetype.h> 32#include <qpe/mimetype.h>
33#include <qpe/config.h> 33#include <qpe/config.h>
34#include <qpe/storage.h> 34#include <qpe/storage.h>
35#include <qpe/resource.h> 35#include <qpe/resource.h>
36 36
37#include <qdict.h> 37#include <qdict.h>
38#include <qdir.h> 38#include <qdir.h>
39#include <qregexp.h> 39#include <qregexp.h>
40 40
41#include <qgfx_qws.h> 41#include <qgfx_qws.h>
42 42
43#include <stdlib.h> 43#include <stdlib.h>
44 44
45int AppLnk::lastId = 5000; 45int AppLnk::lastId = 5000;
46 46
47static int smallSize = 14; 47static int smallSize = 14;
48static int bigSize = 32; 48static int bigSize = 32;
49 49
50static QString safeFileName(const QString& n) 50static QString safeFileName(const QString& n)
51{ 51{
52 QString safename=n; 52 QString safename=n;
53 safename.replace(QRegExp("[^0-9A-Za-z.]"),"_"); 53 safename.replace(QRegExp("[^0-9A-Za-z.]"),"_");
54 safename.replace(QRegExp("^[^A-Za-z]*"),""); 54 safename.replace(QRegExp("^[^A-Za-z]*"),"");
55 if ( safename.isEmpty() ) 55 if ( safename.isEmpty() )
56 safename = "_"; 56 safename = "_";
57 return safename; 57 return safename;
58} 58}
59 59
60static bool prepareDirectories(const QString& lf) 60static bool prepareDirectories(const QString& lf)
61{ 61{
62 if ( !QFile::exists(lf) ) { 62 if ( !QFile::exists(lf) ) {
63 // May need to create directories 63 // May need to create directories
64 QFileInfo fi(lf); 64 QFileInfo fi(lf);
65 if ( system(("mkdir -p "+fi.dirPath(TRUE))) ) 65 if ( system(("mkdir -p "+fi.dirPath(TRUE))) )
66 return FALSE; 66 return FALSE;
67 } 67 }
68 return TRUE; 68 return TRUE;
69} 69}
70 70
71class AppLnkPrivate 71class AppLnkPrivate
72{ 72{
73public: 73public:
74 /* the size of the Pixmap */ 74 /* the size of the Pixmap */
75 enum Size {Normal = 0, Big }; 75 enum Size {Normal = 0, Big };
76 AppLnkPrivate() { 76 AppLnkPrivate() {
77 /* we want one normal and one big item */ 77 /* we want one normal and one big item */
78 78
79 QPixmap pix; 79 QPixmap pix;
80 mPixmaps.insert(0, pix ); 80 mPixmaps.insert(0, pix );
81 mPixmaps.insert(1, pix); 81 mPixmaps.insert(1, pix);
82 } 82 }
83 83
84 QStringList mCatList; // always correct 84 QStringList mCatList; // always correct
85 QArray<int> mCat; // cached value; correct if not empty 85 QArray<int> mCat; // cached value; correct if not empty
86 QMap<int, QPixmap> mPixmaps; 86 QMap<int, QPixmap> mPixmaps;
87 87
88 void updateCatListFromArray() 88 void updateCatListFromArray()
89 { 89 {
90 Categories cat( 0 ); 90 Categories cat( 0 );
91 cat.load( categoryFileName() ); 91 cat.load( categoryFileName() );
92 // we need to update the names for the mCat... to mCatList 92 // we need to update the names for the mCat... to mCatList
93 mCatList.clear(); 93 mCatList.clear();
94 for (uint i = 0; i < mCat.count(); i++ ) 94 for (uint i = 0; i < mCat.count(); i++ )
95 mCatList << cat.label("Document View", mCat[i] ); 95 mCatList << cat.label("Document View", mCat[i] );
96 96
97 } 97 }
98 98
99 void setCatArrayDirty() 99 void setCatArrayDirty()
100 { 100 {
101 mCat.resize(0); 101 mCat.resize(0);
102 } 102 }
103 103
104 void ensureCatArray() 104 void ensureCatArray()
105 { 105 {
106 if ( mCat.count() > 0 || mCatList.count()==0 ) 106 if ( mCat.count() > 0 || mCatList.count()==0 )
107 return; 107 return;
108 108
109 Categories cat( 0 ); 109 Categories cat( 0 );
110 cat.load( categoryFileName() ); 110 cat.load( categoryFileName() );
111 mCat.resize( mCatList.count() ); 111 mCat.resize( mCatList.count() );
112 int i; 112 int i;
113 QStringList::ConstIterator it; 113 QStringList::ConstIterator it;
114 for ( i = 0, it = mCatList.begin(); it != mCatList.end(); 114 for ( i = 0, it = mCatList.begin(); it != mCatList.end();
115 ++it, i++ ) { 115 ++it, i++ ) {
116 116
117 bool number; 117 bool number;
118 int id = (*it).toInt( &number ); 118 int id = (*it).toInt( &number );
119 if ( !number ) { 119 if ( !number ) {
120 id = cat.id( "Document View", *it ); 120 id = cat.id( "Document View", *it );
121 if ( id == 0 ) 121 if ( id == 0 )
122 id = cat.addCategory( "Document View", *it ); 122 id = cat.addCategory( "Document View", *it );
123 } 123 }
124 mCat[i] = id; 124 mCat[i] = id;
125 } 125 }
126 } 126 }
127}; 127};
128 128
129/*! 129/*!
130 \class AppLnk applnk.h 130 \class AppLnk applnk.h
131 \brief The AppLnk class represents an application available on the system. 131 \brief The AppLnk class represents an application available on the system.
132 132
133 Every Qtopia application \e app has a corresponding \e app.desktop 133 Every Qtopia application \e app has a corresponding \e app.desktop
134 file. When one of these files is read its data is stored as an 134 file. When one of these files is read its data is stored as an
135 AppLnk object. 135 AppLnk object.
136 136
137 The AppLnk class introduces some Qtopia-specific concepts, and 137 The AppLnk class introduces some Qtopia-specific concepts, and
138 provides a variety of functions, as described in the following 138 provides a variety of functions, as described in the following
139 sections. 139 sections.
140 \tableofcontents 140 \tableofcontents
141 141
142 \target Types 142 \target Types
143 \section1 Types 143 \section1 Types
144 144
145 Every AppLnk object has a \e type. For applications, games and 145 Every AppLnk object has a \e type. For applications, games and
146 settings the type is \c Application; for documents the 146 settings the type is \c Application; for documents the
147 type is the document's MIME type. 147 type is the document's MIME type.
148 148
149 \target files-and-links 149 \target files-and-links
150 \section1 Files and Links 150 \section1 Files and Links
151 151
152 When you create an AppLnk (or more likely, a \link doclnk.html 152 When you create an AppLnk (or more likely, a \link doclnk.html
153 DocLnk\endlink), you don't deal directly with filenames in the 153 DocLnk\endlink), you don't deal directly with filenames in the
154 filesystem. Instead you do this: 154 filesystem. Instead you do this:
155 \code 155 \code
156 DocLnk d; 156 DocLnk d;
157 d.setType("text/plain"); 157 d.setType("text/plain");
158 d.setName("My Nicely Named Document / Whatever"); // Yes, "/" is legal. 158 d.setName("My Nicely Named Document / Whatever"); // Yes, "/" is legal.
159 \endcode 159 \endcode
160 At this point, the file() and linkFile() are unknown. Normally 160 At this point, the file() and linkFile() are unknown. Normally
161 this is uninteresting, and the names become automatically known, 161 this is uninteresting, and the names become automatically known,
162 and more importantly, becomes reserved, when you ask what they are: 162 and more importantly, becomes reserved, when you ask what they are:
163 163
164 \code 164 \code
165 QString fn = d.file(); 165 QString fn = d.file();
166 \endcode 166 \endcode
167 This invents a filename, and creates the file on disk (an empty 167 This invents a filename, and creates the file on disk (an empty
168 reservation file) to prevent the name being used by another 168 reservation file) to prevent the name being used by another
169 application. 169 application.
170 170
171 In some circumstances, you don't want to create the file if it 171 In some circumstances, you don't want to create the file if it
172 doesn't already exist (e.g. in the Document tab, some of the \link 172 doesn't already exist (e.g. in the Document tab, some of the \link
173 doclnk.html DocLnk\endlink objects represented by icons are 173 doclnk.html DocLnk\endlink objects represented by icons are
174 DocLnk's created just for that view - they don't have 174 DocLnk's created just for that view - they don't have
175 corresponding \c .desktop files. To avoid littering empty 175 corresponding \c .desktop files. To avoid littering empty
176 reservation files around, we check in a few places to see whether 176 reservation files around, we check in a few places to see whether
177 the file really needs to exist). 177 the file really needs to exist).
178 178
179 \section1 Functionality 179 \section1 Functionality
180 180
181 AppLnk objects are created by calling the constructor with the 181 AppLnk objects are created by calling the constructor with the
182 name of a \e .desktop file. The object can be checked for validity 182 name of a \e .desktop file. The object can be checked for validity
183 using isValid(). 183 using isValid().
184 184
185 The following functions are used to set or retrieve information 185 The following functions are used to set or retrieve information
186 about the application: 186 about the application:
187 \table 187 \table
188 \header \i Get Function \i Set Function \i Short Description 188 \header \i Get Function \i Set Function \i Short Description
189 \row \i \l name() \i \l setName() \i application's name 189 \row \i \l name() \i \l setName() \i application's name
190 \row \i \l pixmap() \i \e none \i application's icon 190 \row \i \l pixmap() \i \e none \i application's icon
191 \row \i \l bigPixmap() \i \e none \i application's large icon 191 \row \i \l bigPixmap() \i \e none \i application's large icon
192 \row \i \e none \i setIcon() \i sets the icon's filename 192 \row \i \e none \i setIcon() \i sets the icon's filename
193 \row \i \l type() \i \l setType() \i see \link #Types Types\endlink above 193 \row \i \l type() \i \l setType() \i see \link #Types Types\endlink above
194 \row \i \l rotation() \i \e none \i 0, 90, 180 or 270 degrees 194 \row \i \l rotation() \i \e none \i 0, 90, 180 or 270 degrees
195 \row \i \l comment() \i \l setComment() \i text for the Details dialog 195 \row \i \l comment() \i \l setComment() \i text for the Details dialog
196 \row \i \l exec() \i \l setExec() \i executable's filename 196 \row \i \l exec() \i \l setExec() \i executable's filename
197 \row \i \l file() \i \e none \i document's filename 197 \row \i \l file() \i \e none \i document's filename
198 \row \i \l linkFile() \i \l setLinkFile() \i \e .desktop filename 198 \row \i \l linkFile() \i \l setLinkFile() \i \e .desktop filename
199 \row \i \l mimeTypes() \i \e none \i the mime types the application can view or edit 199 \row \i \l mimeTypes() \i \e none \i the mime types the application can view or edit
200 \row \i \l categories() \i \l setCategories() \i \e{see the function descriptions} 200 \row \i \l categories() \i \l setCategories() \i \e{see the function descriptions}
201 \row \i \l fileKnown() \i \e none \i see \link 201 \row \i \l fileKnown() \i \e none \i see \link
202#files-and-links Files and Links\endlink above 202#files-and-links Files and Links\endlink above
203 \row \i \l linkFileKnown() \i \e none \i see \link 203 \row \i \l linkFileKnown() \i \e none \i see \link
204#files-and-links Files and Links\endlink above 204#files-and-links Files and Links\endlink above
205 \row \i \l property() \i \l setProperty() \i any AppLnk property 205 \row \i \l property() \i \l setProperty() \i any AppLnk property
206 can be retrieved or set (if writeable) using these 206 can be retrieved or set (if writeable) using these
207 \endtable 207 \endtable
208 208
209 To save an AppLnk to disk use writeLink(). To execute the 209 To save an AppLnk to disk use writeLink(). To execute the
210 application that the AppLnk object refers to, use execute(). 210 application that the AppLnk object refers to, use execute().
211 211
212 AppLnk's can be deleted from disk using removeLinkFile(). To 212 AppLnk's can be deleted from disk using removeLinkFile(). To
213 remove both the link and the application's executable use 213 remove both the link and the application's executable use
214 removeFiles(). 214 removeFiles().
215 215
216 Icon sizes can be globally changed (but only for AppLnk objects 216 Icon sizes can be globally changed (but only for AppLnk objects
217 created after the calls) with setSmallIconSize() and 217 created after the calls) with setSmallIconSize() and
218 setBigIconSize(). 218 setBigIconSize().
219 219
220 \ingroup qtopiaemb 220 \ingroup qtopiaemb
221*/ 221*/
222 222
223/*! 223/*!
224 Sets the size used for small icons to \a small pixels. 224 Sets the size used for small icons to \a small pixels.
225 Only affects AppLnk objects created after the call. 225 Only affects AppLnk objects created after the call.
226 226
227 \sa smallIconSize() setIcon() 227 \sa smallIconSize() setIcon()
228*/ 228*/
229void AppLnk::setSmallIconSize(int small) 229void AppLnk::setSmallIconSize(int small)
230{ 230{
231 smallSize = small; 231 smallSize = small;
232} 232}
233 233
234/*! 234/*!
235 Returns the size used for small icons. 235 Returns the size used for small icons.
236 236
237 \sa setSmallIconSize() setIcon() 237 \sa setSmallIconSize() setIcon()
238*/ 238*/
239int AppLnk::smallIconSize() 239int AppLnk::smallIconSize()
240{ 240{
241 return smallSize; 241 return smallSize;
242} 242}
243 243
244 244
245/*! 245/*!
246 Sets the size used for large icons to \a big pixels. 246 Sets the size used for large icons to \a big pixels.
247 Only affects AppLnk objects created after the call. 247 Only affects AppLnk objects created after the call.
248 248
249 \sa bigIconSize() setIcon() 249 \sa bigIconSize() setIcon()
250*/ 250*/
251void AppLnk::setBigIconSize(int big) 251void AppLnk::setBigIconSize(int big)
252{ 252{
253 bigSize = big; 253 bigSize = big;
254} 254}
255 255
256/*! 256/*!
257 Returns the size used for large icons. 257 Returns the size used for large icons.
258 258
259 \sa setBigIconSize() setIcon() 259 \sa setBigIconSize() setIcon()
260*/ 260*/
261int AppLnk::bigIconSize() 261int AppLnk::bigIconSize()
262{ 262{
263 return bigSize; 263 return bigSize;
264} 264}
265 265
266 266
267/*! 267/*!
268 \fn QString AppLnk::name() const 268 \fn QString AppLnk::name() const
269 269
270 Returns the Name property. This is the user-visible name for the 270 Returns the Name property. This is the user-visible name for the
271 document or application, not the filename. 271 document or application, not the filename.
272 272
273 See \link #files-and-links Files and Links\endlink. 273 See \link #files-and-links Files and Links\endlink.
274 274
275 \sa setName() 275 \sa setName()
276*/ 276*/
277/*! 277/*!
278 \fn QString AppLnk::exec() const 278 \fn QString AppLnk::exec() const
279 279
280 Returns the Exec property. This is the name of the executable 280 Returns the Exec property. This is the name of the executable
281 program associated with the AppLnk. 281 program associated with the AppLnk.
282 282
283 \sa setExec() 283 \sa setExec()
284*/ 284*/
285/*! 285/*!
286 \fn QString AppLnk::rotation() const 286 \fn QString AppLnk::rotation() const
287 287
288 Returns the Rotation property. The value is 0, 90, 180 or 270 288 Returns the Rotation property. The value is 0, 90, 180 or 270
289 degrees. 289 degrees.
290*/ 290*/
291/*! 291/*!
292 \fn QString AppLnk::comment() const 292 \fn QString AppLnk::comment() const
293 293
294 Returns the Comment property. 294 Returns the Comment property.
295 295
296 \sa setComment() 296 \sa setComment()
297*/ 297*/
298/*! 298/*!
299 \fn QStringList AppLnk::mimeTypes() const 299 \fn QStringList AppLnk::mimeTypes() const
300 300
301 Returns the MimeTypes property. This is the list of MIME types 301 Returns the MimeTypes property. This is the list of MIME types
302 that the application can view or edit. 302 that the application can view or edit.
303*/ 303*/
304/*! 304/*!
305 \fn const QArray<int>& AppLnk::categories() const 305 \fn const QArray<int>& AppLnk::categories() const
306 306
307 Returns the Categories property. 307 Returns the Categories property.
308 308
309 See the CategoryWidget for more details. 309 See the CategoryWidget for more details.
310 310
311 \sa setCategories() 311 \sa setCategories()
312*/ 312*/
313 313
314const QArray<int>& AppLnk::categories() const 314const QArray<int>& AppLnk::categories() const
315{ 315{
316 d->ensureCatArray(); 316 d->ensureCatArray();
317 return d->mCat; 317 return d->mCat;
318} 318}
319 319
320/*! 320/*!
321 \fn int AppLnk::id() const 321 \fn int AppLnk::id() const
322 322
323 Returns the id of the AppLnk. If the AppLnk is not in an AppLnkSet, 323 Returns the id of the AppLnk. If the AppLnk is not in an AppLnkSet,
324 this value is 0, otherwise it is a value that is unique for the 324 this value is 0, otherwise it is a value that is unique for the
325 duration of the current process. 325 duration of the current process.
326 326
327 \sa AppLnkSet::find() 327 \sa AppLnkSet::find()
328*/ 328*/
329 329
330/*! 330/*!
331 \fn bool AppLnk::isValid() const 331 \fn bool AppLnk::isValid() const
332 332
333 Returns TRUE if this AppLnk is valid; otherwise returns FALSE. 333 Returns TRUE if this AppLnk is valid; otherwise returns FALSE.
334*/ 334*/
335/*! 335/*!
336 \fn bool AppLnk::fileKnown() const 336 \fn bool AppLnk::fileKnown() const
337 337
338 If the with the AppLnk associated file is not equal to QString::null 338 If the with the AppLnk associated file is not equal to QString::null
339*/ 339*/
340/*! 340/*!
341 \fn bool AppLnk::linkFileKnown()const 341 \fn bool AppLnk::linkFileKnown()const
342 342
343 The filename of the AppLnk 343 The filename of the AppLnk
344 344
345*/ 345*/
346/*! 346/*!
347 \fn void AppLnk::setRotation( const QString& ) 347 \fn void AppLnk::setRotation( const QString& )
348 348
349 The default rotation of the associated application. This 349 The default rotation of the associated application. This
350 function is included inline for binary compatible issues 350 function is included inline for binary compatible issues
351*/ 351*/
352/*! 352/*!
353 Creates an invalid AppLnk. 353 Creates an invalid AppLnk.
354 354
355 \sa isValid() 355 \sa isValid()
356*/ 356*/
357AppLnk::AppLnk() 357AppLnk::AppLnk()
358{ 358{
359 mId = 0; 359 mId = 0;
360 d = new AppLnkPrivate(); 360 d = new AppLnkPrivate();
361} 361}
362 362
363/*! 363/*!
364 Loads \a file (e.g. \e app.desktop) as an AppLnk. 364 Loads \a file (e.g. \e app.desktop) as an AppLnk.
365 365
366 \sa writeLink() 366 \sa writeLink()
367*/ 367*/
368AppLnk::AppLnk( const QString &file ) 368AppLnk::AppLnk( const QString &file )
369{ 369{
370 QStringList sl; 370 QStringList sl;
371 d = new AppLnkPrivate(); 371 d = new AppLnkPrivate();
372 if ( !file.isNull() ) { 372 if ( !file.isNull() ) {
373 Config config( file, Config::File ); 373 Config config( file, Config::File );
374 374
375 if ( config.isValid() ) { 375 if ( config.isValid() ) {
376 config.setGroup( "Desktop Entry" ); 376 config.setGroup( "Desktop Entry" );
377 377
378 mName = config.readEntry( "Name", file ); 378 mName = config.readEntry( "Name", file );
379 mExec = config.readEntry( "Exec" ); 379 mExec = config.readEntry( "Exec" );
380 mType = config.readEntry( "Type", QString::null ); 380 mType = config.readEntry( "Type", QString::null );
381 mIconFile = config.readEntry( "Icon", QString::null ); 381 mIconFile = config.readEntry( "Icon", QString::null );
382 mRotation = config.readEntry( "Rotation", "" ); 382 mRotation = config.readEntry( "Rotation", "" );
383 mComment = config.readEntry( "Comment", QString::null ); 383 mComment = config.readEntry( "Comment", QString::null );
384 // MIME types are case-insensitive. 384 // MIME types are case-insensitive.
385 mMimeTypes = config.readListEntry( "MimeType", ';' ); 385 mMimeTypes = config.readListEntry( "MimeType", ';' );
386 for (QStringList::Iterator it=mMimeTypes.begin(); it!=mMimeTypes.end(); ++it) 386 for (QStringList::Iterator it=mMimeTypes.begin(); it!=mMimeTypes.end(); ++it)
387 *it = (*it).lower(); 387 *it = (*it).lower();
388 mMimeTypeIcons = config.readListEntry( "MimeTypeIcons", ';' ); 388 mMimeTypeIcons = config.readListEntry( "MimeTypeIcons", ';' );
389 mLinkFile = file; 389 mLinkFile = file;
390 mFile = config.readEntry("File", QString::null); 390 mFile = config.readEntry("File", QString::null);
391 if ( !mExec. isEmpty ( )) { 391 if ( !mExec. isEmpty ( )) {
392 mFile = QString::null; 392 mFile = QString::null;
393 } 393 }
394 else if ( mFile[0] != '/' ) { 394 else if ( mFile[0] != '/' ) {
395 int slash = file.findRev('/'); 395 int slash = file.findRev('/');
396 if ( slash >= 0 ) { 396 if ( slash >= 0 ) {
397 mFile = file.left(slash) + '/' + mFile; 397 mFile = file.left(slash) + '/' + mFile;
398 } 398 }
399 } 399 }
400 d->mCatList = config.readListEntry("Categories", ';'); 400 d->mCatList = config.readListEntry("Categories", ';');
401 if ( d->mCatList[0].toInt() < -1 ) { 401 if ( d->mCatList[0].toInt() < -1 ) {
402 // numeric cats in file! convert to text 402 // numeric cats in file! convert to text
403 Categories cat( 0 ); 403 Categories cat( 0 );
404 cat.load( categoryFileName() ); 404 cat.load( categoryFileName() );
405 d->mCat.resize( d->mCatList.count() ); 405 d->mCat.resize( d->mCatList.count() );
406 int i; 406 int i;
407 QStringList::ConstIterator it; 407 QStringList::ConstIterator it;
408 for ( i = 0, it = d->mCatList.begin(); it != d->mCatList.end(); 408 for ( i = 0, it = d->mCatList.begin(); it != d->mCatList.end();
409 ++it, i++ ) { 409 ++it, i++ ) {
410 bool number; 410 bool number;
411 int id = (*it).toInt( &number ); 411 int id = (*it).toInt( &number );
412 if ( !number ) { 412 if ( !number ) {
413 // convert from text 413 // convert from text
414 id = cat.id( "Document View", *it ); 414 id = cat.id( "Document View", *it );
415 if ( id == 0 ) 415 if ( id == 0 )
416 id = cat.addCategory( "Document View", *it ); 416 id = cat.addCategory( "Document View", *it );
417 } 417 }
418 d->mCat[i] = id; 418 d->mCat[i] = id;
419 } 419 }
420 d->updateCatListFromArray(); 420 d->updateCatListFromArray();
421 } 421 }
422 } 422 }
423 } 423 }
424 mId = 0; 424 mId = 0;
425} 425}
426 426
427AppLnk& AppLnk::operator=(const AppLnk &copy) 427AppLnk& AppLnk::operator=(const AppLnk &copy)
428{ 428{
429 if ( this == &copy ) return *this; 429 if ( this == &copy ) return *this;
430 if ( mId ) 430 if ( mId )
431 qWarning("Deleting AppLnk that is in an AppLnkSet"); 431 qWarning("Deleting AppLnk that is in an AppLnkSet");
432 if ( d ) 432 if ( d )
433 delete d; 433 delete d;
434 434
435 435
436 mName = copy.mName; 436 mName = copy.mName;
437 437
438 /* remove for Qtopia 3.0 -zecke */ 438 /* remove for Qtopia 3.0 -zecke */
439 mPixmap = copy.mPixmap; 439 mPixmap = copy.mPixmap;
440 mBigPixmap = copy.mBigPixmap; 440 mBigPixmap = copy.mBigPixmap;
441 441
442 mExec = copy.mExec; 442 mExec = copy.mExec;
443 mType = copy.mType; 443 mType = copy.mType;
444 mRotation = copy.mRotation; 444 mRotation = copy.mRotation;
445 mComment = copy.mComment; 445 mComment = copy.mComment;
446 mFile = copy.mFile; 446 mFile = copy.mFile;
447 mLinkFile = copy.mLinkFile; 447 mLinkFile = copy.mLinkFile;
448 mIconFile = copy.mIconFile; 448 mIconFile = copy.mIconFile;
449 mMimeTypes = copy.mMimeTypes; 449 mMimeTypes = copy.mMimeTypes;
450 mMimeTypeIcons = copy.mMimeTypeIcons; 450 mMimeTypeIcons = copy.mMimeTypeIcons;
451 mId = 0; 451 mId = 0;
452 d = new AppLnkPrivate(); 452 d = new AppLnkPrivate();
453 d->mCat = copy.d->mCat; 453 d->mCat = copy.d->mCat;
454 d->mCatList = copy.d->mCatList; 454 d->mCatList = copy.d->mCatList;
455 d->mPixmaps = copy.d->mPixmaps; 455 d->mPixmaps = copy.d->mPixmaps;
456 456
457 return *this; 457 return *this;
458} 458}
459/*! 459/*!
460 protected internally to share code 460 protected internally to share code
461 should I document that at all? 461 should I document that at all?
462 I don't know the TT style for that 462 I don't know the TT style for that
463*/ 463*/
464const QPixmap& AppLnk::pixmap( int pos, int size ) const { 464const QPixmap& AppLnk::pixmap( int pos, int size ) const {
465 if ( d->mPixmaps[pos].isNull() ) { 465 if ( d->mPixmaps[pos].isNull() ) {
466 AppLnk* that = (AppLnk*)this; 466 AppLnk* that = (AppLnk*)this;
467 if ( mIconFile.isEmpty() ) { 467 if ( mIconFile.isEmpty() ) {
468 MimeType mt(type()); 468 MimeType mt(type());
469 that->d->mPixmaps[pos] = mt.pixmap(); 469 that->d->mPixmaps[pos] = pos ? mt.bigPixmap() : mt.pixmap();
470 if ( that->d->mPixmaps[pos].isNull() ) 470 if ( that->d->mPixmaps[pos].isNull() )
471 that->d->mPixmaps[pos].convertFromImage( 471 that->d->mPixmaps[pos].convertFromImage(
472 Resource::loadImage("UnknownDocument") 472 Resource::loadImage("UnknownDocument")
473 .smoothScale( size, size ) ); 473 .smoothScale( size, size ) );
474 return that->d->mPixmaps[pos]; 474 return that->d->mPixmaps[pos];
475 } 475 }
476 QImage unscaledIcon = Resource::loadImage( that->mIconFile ); 476 QImage unscaledIcon = Resource::loadImage( that->mIconFile );
477 if ( unscaledIcon.isNull() ) { 477 if ( unscaledIcon.isNull() ) {
478 // qDebug( "Cannot find icon: %s", that->mIconFile.latin1() ); 478 // qDebug( "Cannot find icon: %s", that->mIconFile.latin1() );
479 that->d->mPixmaps[pos].convertFromImage( 479 that->d->mPixmaps[pos].convertFromImage(
480 Resource::loadImage("UnknownDocument") 480 Resource::loadImage("UnknownDocument")
481 .smoothScale( size, size ) ); 481 .smoothScale( size, size ) );
482 } else { 482 } else {
483 that->d->mPixmaps[0].convertFromImage( unscaledIcon.smoothScale( smallSize, smallSize ) ); 483 that->d->mPixmaps[0].convertFromImage( unscaledIcon.smoothScale( smallSize, smallSize ) );
484 that->d->mPixmaps[1].convertFromImage( unscaledIcon.smoothScale( bigSize, bigSize ) ); 484 that->d->mPixmaps[1].convertFromImage( unscaledIcon.smoothScale( bigSize, bigSize ) );
485 } 485 }
486 return that->d->mPixmaps[pos]; 486 return that->d->mPixmaps[pos];
487 } 487 }
488 return d->mPixmaps[pos]; 488 return d->mPixmaps[pos];
489} 489}
490 490
491/*! 491/*!
492 Returns a small pixmap associated with the application. 492 Returns a small pixmap associated with the application.
493 493
494 \sa bigPixmap() setIcon() 494 \sa bigPixmap() setIcon()
495*/ 495*/
496const QPixmap& AppLnk::pixmap() const 496const QPixmap& AppLnk::pixmap() const
497{ 497{
498 if ( d->mPixmaps[0].isNull() ) { 498 if ( d->mPixmaps[0].isNull() ) {
499 return pixmap(AppLnkPrivate::Normal, smallSize ); 499 return pixmap(AppLnkPrivate::Normal, smallSize );
500 } 500 }
501 return d->mPixmaps[0]; 501 return d->mPixmaps[0];
502} 502}
503 503
504/*! 504/*!
505 Returns a large pixmap associated with the application. 505 Returns a large pixmap associated with the application.
506 506
507 \sa pixmap() setIcon() 507 \sa pixmap() setIcon()
508*/ 508*/
509const QPixmap& AppLnk::bigPixmap() const 509const QPixmap& AppLnk::bigPixmap() const
510{ 510{
511 if ( d->mPixmaps[1].isNull() ) { 511 if ( d->mPixmaps[1].isNull() ) {
512 return pixmap( AppLnkPrivate::Big, bigSize ); 512 return pixmap( AppLnkPrivate::Big, bigSize );
513 } 513 }
514 return d->mPixmaps[1]; 514 return d->mPixmaps[1];
515} 515}
516 516
517/*! 517/*!
518 Returns the type of the AppLnk. For applications, games and 518 Returns the type of the AppLnk. For applications, games and
519 settings the type is \c Application; for documents the type is the 519 settings the type is \c Application; for documents the type is the
520 document's MIME type. 520 document's MIME type.
521*/ 521*/
522QString AppLnk::type() const 522QString AppLnk::type() const
523{ 523{
524 if ( mType.isNull() ) { 524 if ( mType.isNull() ) {
525 AppLnk* that = (AppLnk*)this; 525 AppLnk* that = (AppLnk*)this;
526 QString f = file(); 526 QString f = file();
527 if ( !f.isNull() ) { 527 if ( !f.isNull() ) {
528 MimeType mt(f); 528 MimeType mt(f);
529 that->mType = mt.id(); 529 that->mType = mt.id();
530 return that->mType; 530 return that->mType;
531 } 531 }
532 } 532 }
533 return mType; 533 return mType;
534} 534}
535 535
536/*! 536/*!
537 Returns the file associated with the AppLnk. 537 Returns the file associated with the AppLnk.
538 538
539 \sa exec() name() 539 \sa exec() name()
540*/ 540*/
541QString AppLnk::file() const 541QString AppLnk::file() const
542{ 542{
543 if ( mExec.isEmpty ( ) && mFile.isNull() ) { 543 if ( mExec.isEmpty ( ) && mFile.isNull() ) {
544 AppLnk* that = (AppLnk*)this; 544 AppLnk* that = (AppLnk*)this;
545 QString ext = MimeType(mType).extension(); 545 QString ext = MimeType(mType).extension();
546 if ( !ext.isEmpty() ) 546 if ( !ext.isEmpty() )
547 ext = "." + ext; 547 ext = "." + ext;
548 if ( !mLinkFile.isEmpty() ) { 548 if ( !mLinkFile.isEmpty() ) {
549 that->mFile = 549 that->mFile =
550 mLinkFile.right(8)==".desktop" // 8 = strlen(".desktop") 550 mLinkFile.right(8)==".desktop" // 8 = strlen(".desktop")
551 ? mLinkFile.left(mLinkFile.length()-8) : mLinkFile; 551 ? mLinkFile.left(mLinkFile.length()-8) : mLinkFile;
552 qDebug("mFile now == %s", mFile.latin1()); 552 qDebug("mFile now == %s", mFile.latin1());
553 } else if ( mType.contains('/') ) { 553 } else if ( mType.contains('/') ) {
554 that->mFile = 554 that->mFile =
555 QString(getenv("HOME"))+"/Documents/"+mType+"/"+safeFileName(that->mName); 555 QString(getenv("HOME"))+"/Documents/"+mType+"/"+safeFileName(that->mName);
556 /* 556 /*
557 * A file with the same name or a .desktop file already exists 557 * A file with the same name or a .desktop file already exists
558 */ 558 */
559 if ( QFile::exists(that->mFile+ext) || QFile::exists(that->mFile+".desktop") ) { 559 if ( QFile::exists(that->mFile+ext) || QFile::exists(that->mFile+".desktop") ) {
560 int n=1; 560 int n=1;
561 QString nn; 561 QString nn;
562 while (QFile::exists((nn=(that->mFile+"_"+QString::number(n)))+ext) 562 while (QFile::exists((nn=(that->mFile+"_"+QString::number(n)))+ext)
563 || QFile::exists(nn+".desktop")) 563 || QFile::exists(nn+".desktop"))
564 n++; 564 n++;
565 that->mFile = nn; 565 that->mFile = nn;
566 } 566 }
567 that->mLinkFile = that->mFile+".desktop"; 567 that->mLinkFile = that->mFile+".desktop";
568 that->mFile += ext; 568 that->mFile += ext;
569 } 569 }
570 prepareDirectories(that->mFile); 570 prepareDirectories(that->mFile);
571 if ( !that->mFile.isEmpty() ) { 571 if ( !that->mFile.isEmpty() ) {
572 QFile f(that->mFile); 572 QFile f(that->mFile);
573 if ( !f.open(IO_WriteOnly) ) 573 if ( !f.open(IO_WriteOnly) )
574 that->mFile = QString::null; 574 that->mFile = QString::null;
575 return that->mFile; 575 return that->mFile;
576 } 576 }
577 } 577 }
578 return mFile; 578 return mFile;
579} 579}
580 580
581/*! 581/*!
582 Returns the desktop file corresponding to this AppLnk. 582 Returns the desktop file corresponding to this AppLnk.
583 583
584 \sa file() exec() name() 584 \sa file() exec() name()
585*/ 585*/
586QString AppLnk::linkFile() const 586QString AppLnk::linkFile() const
587{ 587{
588 if ( mLinkFile.isNull() ) { 588 if ( mLinkFile.isNull() ) {
589 AppLnk* that = (AppLnk*)this; 589 AppLnk* that = (AppLnk*)this;
590 if ( type().contains('/') ) { 590 if ( type().contains('/') ) {
591 StorageInfo storage; 591 StorageInfo storage;
592 const FileSystem *fs = storage.fileSystemOf( that->mFile ); 592 const FileSystem *fs = storage.fileSystemOf( that->mFile );
593 /* tmpfs + and ramfs are available too but not removable 593 /* tmpfs + and ramfs are available too but not removable
594 * either we fix storage or add this 594 * either we fix storage or add this
595 */ 595 */
596 if ( fs && ( fs->isRemovable() || fs->disk() == "/dev/mtdblock6" || fs->disk() == "tmpfs") ) { 596 if ( fs && ( fs->isRemovable() || fs->disk() == "/dev/mtdblock6" || fs->disk() == "tmpfs") ) {
597 that->mLinkFile = fs->path(); 597 that->mLinkFile = fs->path();
598 } else 598 } else
599 that->mLinkFile = getenv( "HOME" ); 599 that->mLinkFile = getenv( "HOME" );
600 that->mLinkFile += "/Documents/"+type()+"/"+safeFileName(that->mName); 600 that->mLinkFile += "/Documents/"+type()+"/"+safeFileName(that->mName);
601 601
602 /* the desktop file exists make sure we don't point to the same file */ 602 /* the desktop file exists make sure we don't point to the same file */
603 if ( QFile::exists(that->mLinkFile+".desktop") ) { 603 if ( QFile::exists(that->mLinkFile+".desktop") ) {
604 AppLnk lnk( that->mLinkFile + ".desktop" ); 604 AppLnk lnk( that->mLinkFile + ".desktop" );
605 605
606 /* the linked is different */ 606 /* the linked is different */
607 if(that->file() != lnk.file() ) { 607 if(that->file() != lnk.file() ) {
608 int n = 1; 608 int n = 1;
609 QString nn; 609 QString nn;
610 while (QFile::exists((nn=that->mLinkFile+"_"+QString::number(n))+".desktop")) { 610 while (QFile::exists((nn=that->mLinkFile+"_"+QString::number(n))+".desktop")) {
611 n++; 611 n++;
612 /* just to be sure */ 612 /* just to be sure */
613 AppLnk lnk(nn ); 613 AppLnk lnk(nn );
614 if (lnk.file() == that->file() ) 614 if (lnk.file() == that->file() )
615 break; 615 break;
616 } 616 }
617 that->mLinkFile = nn; 617 that->mLinkFile = nn;
618 } 618 }
619 } 619 }
620 that->mLinkFile += ".desktop"; 620 that->mLinkFile += ".desktop";
621 storeLink(); 621 storeLink();
622 } 622 }
623 return that->mLinkFile; 623 return that->mLinkFile;
624 } 624 }
625 return mLinkFile; 625 return mLinkFile;
626} 626}
627 627
628/*! 628/*!
629 Copies \a copy. 629 Copies \a copy.
630*/ 630*/
631AppLnk::AppLnk( const AppLnk &copy ) 631AppLnk::AppLnk( const AppLnk &copy )
632{ 632{
633 mName = copy.mName; 633 mName = copy.mName;
634 mPixmap = copy.mPixmap; 634 mPixmap = copy.mPixmap;
635 mBigPixmap = copy.mBigPixmap; 635 mBigPixmap = copy.mBigPixmap;
636 mExec = copy.mExec; 636 mExec = copy.mExec;
637 mType = copy.mType; 637 mType = copy.mType;
638 mRotation = copy.mRotation; 638 mRotation = copy.mRotation;
639 mComment = copy.mComment; 639 mComment = copy.mComment;
640 mFile = copy.mFile; 640 mFile = copy.mFile;
641 mLinkFile = copy.mLinkFile; 641 mLinkFile = copy.mLinkFile;
642 mIconFile = copy.mIconFile; 642 mIconFile = copy.mIconFile;
643 mMimeTypes = copy.mMimeTypes; 643 mMimeTypes = copy.mMimeTypes;
644 mMimeTypeIcons = copy.mMimeTypeIcons; 644 mMimeTypeIcons = copy.mMimeTypeIcons;
645 mId = 0; 645 mId = 0;
646 d = new AppLnkPrivate(); 646 d = new AppLnkPrivate();
647 d->mCat = copy.d->mCat; 647 d->mCat = copy.d->mCat;
648 d->mCatList = copy.d->mCatList; 648 d->mCatList = copy.d->mCatList;
649 d->mPixmaps = copy.d->mPixmaps; 649 d->mPixmaps = copy.d->mPixmaps;
650} 650}
651 651
652/*! 652/*!
653 Destroys the AppLnk. Note that if the AppLnk is currently a member 653 Destroys the AppLnk. Note that if the AppLnk is currently a member
654 of an AppLnkSet, this will produce a run-time warning. 654 of an AppLnkSet, this will produce a run-time warning.
655 655
656 \sa AppLnkSet::add() AppLnkSet::remove() 656 \sa AppLnkSet::add() AppLnkSet::remove()
657*/ 657*/
658AppLnk::~AppLnk() 658AppLnk::~AppLnk()
659{ 659{
660 if ( mId ) 660 if ( mId )
661 qWarning("Deleting AppLnk that is in an AppLnkSet"); 661 qWarning("Deleting AppLnk that is in an AppLnkSet");
662 if ( d ) 662 if ( d )
663 delete d; 663 delete d;
664} 664}
665 665
666/*! 666/*!
667 \overload 667 \overload
668 Executes the application associated with this AppLnk. 668 Executes the application associated with this AppLnk.
669 669
670 \sa exec() 670 \sa exec()
671*/ 671*/
672void AppLnk::execute() const 672void AppLnk::execute() const
673{ 673{
674 execute(QStringList()); 674 execute(QStringList());
675} 675}
676 676
677/*! 677/*!
678 Executes the application associated with this AppLnk, with 678 Executes the application associated with this AppLnk, with
679 \a args as arguments. 679 \a args as arguments.
680 680
681 \sa exec() 681 \sa exec()
682*/ 682*/
683void AppLnk::execute(const QStringList& args) const 683void AppLnk::execute(const QStringList& args) const
684{ 684{
685#ifdef Q_WS_QWS 685#ifdef Q_WS_QWS
686 if ( !mRotation.isEmpty() ) { 686 if ( !mRotation.isEmpty() ) {
687 // ######## this will only work in the server 687 // ######## this will only work in the server
688 int rot = QPEApplication::defaultRotation(); 688 int rot = QPEApplication::defaultRotation();
689 rot = (rot+mRotation.toInt())%360; 689 rot = (rot+mRotation.toInt())%360;
690 QCString old = getenv("QWS_DISPLAY"); 690 QCString old = getenv("QWS_DISPLAY");
691 setenv("QWS_DISPLAY", QString("Transformed:Rot%1:0").arg(rot), 1); 691 setenv("QWS_DISPLAY", QString("Transformed:Rot%1:0").arg(rot), 1);
692 invoke(args); 692 invoke(args);
693 setenv("QWS_DISPLAY", old.data(), 1); 693 setenv("QWS_DISPLAY", old.data(), 1);
694 } else 694 } else
695#endif 695#endif
696 invoke(args); 696 invoke(args);
697} 697}
698 698
699/*! 699/*!
700 Invokes the application associated with this AppLnk, with 700 Invokes the application associated with this AppLnk, with
701 \a args as arguments. Rotation is not taken into account by 701 \a args as arguments. Rotation is not taken into account by
702 this function, so you should not call it directly. 702 this function, so you should not call it directly.
703 703
704 \sa execute() 704 \sa execute()
705*/ 705*/
706void AppLnk::invoke(const QStringList& args) const 706void AppLnk::invoke(const QStringList& args) const
707{ 707{
708 Global::execute( exec(), args[0] ); 708 Global::execute( exec(), args[0] );
709} 709}
710 710
711/*! 711/*!
712 Sets the Exec property to \a exec. 712 Sets the Exec property to \a exec.
713 713
714 \sa exec() name() 714 \sa exec() name()
715*/ 715*/
716void AppLnk::setExec( const QString& exec ) 716void AppLnk::setExec( const QString& exec )
717{ 717{
718 mExec = exec; 718 mExec = exec;
719} 719}
720 720
721#if 0 // this was inlined for better BC 721#if 0 // this was inlined for better BC
722/*! 722/*!
723 Sets the Rotation property to \a rot. 723 Sets the Rotation property to \a rot.
724 724
725 \sa rotation() 725 \sa rotation()
726*/ 726*/
727void AppLnk::setRotation ( const QString &rot ) 727void AppLnk::setRotation ( const QString &rot )
728{ 728{
729 mRotation = rot; 729 mRotation = rot;
730} 730}
731#endif 731#endif
732 732
733/*! 733/*!
734 Sets the Name property to \a docname. 734 Sets the Name property to \a docname.
735 735
736 \sa name() 736 \sa name()
737*/ 737*/
738void AppLnk::setName( const QString& docname ) 738void AppLnk::setName( const QString& docname )
739{ 739{
740 mName = docname; 740 mName = docname;
741} 741}
742 742
743/*! 743/*!
744 Sets the File property to \a filename. 744 Sets the File property to \a filename.
745 745
746 \sa file() name() 746 \sa file() name()
747*/ 747*/
748void AppLnk::setFile( const QString& filename ) 748void AppLnk::setFile( const QString& filename )
749{ 749{
750 mFile = filename; 750 mFile = filename;
751} 751}
752 752
753/*! 753/*!
754 Sets the LinkFile property to \a filename. 754 Sets the LinkFile property to \a filename.
755 755
756 \sa linkFile() 756 \sa linkFile()
757*/ 757*/
758void AppLnk::setLinkFile( const QString& filename ) 758void AppLnk::setLinkFile( const QString& filename )
759{ 759{
760 mLinkFile = filename; 760 mLinkFile = filename;
761} 761}
762 762
763/*! 763/*!
764 Sets the Comment property to \a comment. 764 Sets the Comment property to \a comment.
765 765
766 This text is displayed in the 'Details Dialog', for example if the 766 This text is displayed in the 'Details Dialog', for example if the
767 user uses the 'press-and-hold' gesture. 767 user uses the 'press-and-hold' gesture.
768 768
769 \sa comment() 769 \sa comment()
770*/ 770*/
771void AppLnk::setComment( const QString& comment ) 771void AppLnk::setComment( const QString& comment )
772{ 772{
773 mComment = comment; 773 mComment = comment;
774} 774}
775 775
776/*! 776/*!
777 Sets the Type property to \a type. 777 Sets the Type property to \a type.
778 778
779 For applications, games and settings the type should be \c 779 For applications, games and settings the type should be \c
780 Application; for documents the type should be the document's MIME 780 Application; for documents the type should be the document's MIME
781 type. 781 type.
782 782
783 \sa type() 783 \sa type()
784*/ 784*/
785void AppLnk::setType( const QString& type ) 785void AppLnk::setType( const QString& type )
786{ 786{
787 mType = type; 787 mType = type;
788} 788}
789 789
790/*! 790/*!
791 \fn QString AppLnk::icon() const 791 \fn QString AppLnk::icon() const
792 792
793 Returns the Icon property. 793 Returns the Icon property.
794 794
795 \sa setIcon() 795 \sa setIcon()
796*/ 796*/
797 797
798/*! 798/*!
799 Sets the Icon property to \a iconname. This is the filename from 799 Sets the Icon property to \a iconname. This is the filename from
800 which the pixmap() and bigPixmap() are obtained. 800 which the pixmap() and bigPixmap() are obtained.
801 801
802 \sa icon() setSmallIconSize() setBigIconSize() 802 \sa icon() setSmallIconSize() setBigIconSize()
803*/ 803*/
804void AppLnk::setIcon( const QString& iconname ) 804void AppLnk::setIcon( const QString& iconname )
805{ 805{
806 mIconFile = iconname; 806 mIconFile = iconname;
807 QImage unscaledIcon = Resource::loadImage( mIconFile ); 807 QImage unscaledIcon = Resource::loadImage( mIconFile );
808 d->mPixmaps[0].convertFromImage( unscaledIcon.smoothScale( smallSize, smallSize ) ); 808 d->mPixmaps[0].convertFromImage( unscaledIcon.smoothScale( smallSize, smallSize ) );
809 d->mPixmaps[1].convertFromImage( unscaledIcon.smoothScale( bigSize, bigSize ) ); 809 d->mPixmaps[1].convertFromImage( unscaledIcon.smoothScale( bigSize, bigSize ) );
810} 810}
811 811
812/*! 812/*!
813 Sets the Categories property to \a c. 813 Sets the Categories property to \a c.
814 814
815 See the CategoryWidget for more details. 815 See the CategoryWidget for more details.
816 816
817 \sa categories() 817 \sa categories()
818*/ 818*/
819void AppLnk::setCategories( const QArray<int>& c ) 819void AppLnk::setCategories( const QArray<int>& c )
820{ 820{
821 d->mCat = c; 821 d->mCat = c;
822 d->updateCatListFromArray(); 822 d->updateCatListFromArray();
823} 823}
824 824
825/*! 825/*!
826 \fn QStringList AppLnk::mimeTypeIcons() const 826 \fn QStringList AppLnk::mimeTypeIcons() const
827 827
828 Returns the MimeTypeIcons property of the AppLnk. 828 Returns the MimeTypeIcons property of the AppLnk.
829*/ 829*/
830 830
831/*! 831/*!
832 Attempts to ensure that the link file for this AppLnk exists, 832 Attempts to ensure that the link file for this AppLnk exists,
833 including creating any required directories. Returns TRUE if 833 including creating any required directories. Returns TRUE if
834 successful; otherwise returns FALSE. 834 successful; otherwise returns FALSE.
835 835
836 You should not need to use this function. 836 You should not need to use this function.
837*/ 837*/
838bool AppLnk::ensureLinkExists() const 838bool AppLnk::ensureLinkExists() const
839{ 839{
840 QString lf = linkFile(); 840 QString lf = linkFile();
841 return prepareDirectories(lf); 841 return prepareDirectories(lf);
842} 842}
843 843
844/*! 844/*!
845 Commits the AppLnk to disk. Returns TRUE if the operation succeeded; 845 Commits the AppLnk to disk. Returns TRUE if the operation succeeded;
846 otherwise returns FALSE. 846 otherwise returns FALSE.
847 847
848 In addition, the "linkChanged(QString)" message is sent to the 848 In addition, the "linkChanged(QString)" message is sent to the
849 "QPE/System" \link qcop.html QCop\endlink channel. 849 "QPE/System" \link qcop.html QCop\endlink channel.
850*/ 850*/
851bool AppLnk::writeLink() const 851bool AppLnk::writeLink() const
852{ 852{
853 // Only re-writes settable parts 853 // Only re-writes settable parts
854 QString lf = linkFile(); 854 QString lf = linkFile();
855 if ( !ensureLinkExists() ) 855 if ( !ensureLinkExists() )
856 return FALSE; 856 return FALSE;
857 storeLink(); 857 storeLink();
858 return TRUE; 858 return TRUE;
859} 859}
860 860
861/*! 861/*!
862 \internal 862 \internal
863*/ 863*/
864void AppLnk::storeLink() const 864void AppLnk::storeLink() const
865{ 865{
866 Config config( mLinkFile, Config::File ); 866 Config config( mLinkFile, Config::File );
867 config.setGroup("Desktop Entry"); 867 config.setGroup("Desktop Entry");
868 config.writeEntry("Name",mName); 868 config.writeEntry("Name",mName);
869 if ( !mIconFile.isNull() ) config.writeEntry("Icon",mIconFile); 869 if ( !mIconFile.isNull() ) config.writeEntry("Icon",mIconFile);
870 config.writeEntry("Type",type()); 870 config.writeEntry("Type",type());
871 if(!rotation().isEmpty()) 871 if(!rotation().isEmpty())
872 config.writeEntry("Rotation",rotation()); 872 config.writeEntry("Rotation",rotation());
873 else 873 else
874 config.removeEntry("Rotation"); 874 config.removeEntry("Rotation");
875 if ( !mComment.isNull() ) config.writeEntry("Comment",mComment); 875 if ( !mComment.isNull() ) config.writeEntry("Comment",mComment);
876 QString f = file(); 876 QString f = file();
877 int i = 0; 877 int i = 0;
878 while ( i < (int)f.length() && i < (int)mLinkFile.length() && f[i] == mLinkFile[i] ) 878 while ( i < (int)f.length() && i < (int)mLinkFile.length() && f[i] == mLinkFile[i] )
879 i++; 879 i++;
880 while ( i && f[i] != '/' ) 880 while ( i && f[i] != '/' )
881 i--; 881 i--;
882 // simple case where in the same directory 882 // simple case where in the same directory
883 if ( mLinkFile.find( '/', i + 1 ) < 0 ) 883 if ( mLinkFile.find( '/', i + 1 ) < 0 )
884 f = f.mid(i+1); 884 f = f.mid(i+1);
885 // ### could do relative ie ../../otherDocs/file.doc 885 // ### could do relative ie ../../otherDocs/file.doc
886 config.writeEntry("File",f); 886 config.writeEntry("File",f);
887 config.writeEntry( "Categories", d->mCatList, ';' ); 887 config.writeEntry( "Categories", d->mCatList, ';' );
888 888
889#ifndef QT_NO_COP 889#ifndef QT_NO_COP
890 QCopEnvelope e("QPE/System", "linkChanged(QString)"); 890 QCopEnvelope e("QPE/System", "linkChanged(QString)");
891 e << mLinkFile; 891 e << mLinkFile;
892#endif 892#endif
893} 893}
894 894
895/*! 895/*!
896 Sets the property named \a key to \a value. 896 Sets the property named \a key to \a value.
897 897
898 \sa property() 898 \sa property()
899*/ 899*/
900void AppLnk::setProperty(const QString& key, const QString& value) 900void AppLnk::setProperty(const QString& key, const QString& value)
901{ 901{
902 if ( ensureLinkExists() ) { 902 if ( ensureLinkExists() ) {
903 Config cfg(linkFile(), Config::File); 903 Config cfg(linkFile(), Config::File);
904 cfg.writeEntry(key,value); 904 cfg.writeEntry(key,value);
905 } 905 }
906} 906}
907 907
908/*! 908/*!
909 Returns the property named \a key. 909 Returns the property named \a key.
910 910
911 \sa setProperty() 911 \sa setProperty()
912*/ 912*/
913QString AppLnk::property(const QString& key) const 913QString AppLnk::property(const QString& key) const
914{ 914{
915 QString lf = linkFile(); 915 QString lf = linkFile();
916 if ( !QFile::exists(lf) ) 916 if ( !QFile::exists(lf) )
917 return QString::null; 917 return QString::null;
918 Config cfg(lf, Config::File); 918 Config cfg(lf, Config::File);
919 return cfg.readEntry(key); 919 return cfg.readEntry(key);
920} 920}
921 921
922bool AppLnk::isPreloaded() const { 922bool AppLnk::isPreloaded() const {
923 // Preload information is stored in the Launcher config in v1.5. 923 // Preload information is stored in the Launcher config in v1.5.
924 Config cfg("Launcher"); 924 Config cfg("Launcher");
925 cfg.setGroup("Preload"); 925 cfg.setGroup("Preload");
926 QStringList apps = cfg.readListEntry("Apps",','); 926 QStringList apps = cfg.readListEntry("Apps",',');
927 if (apps.contains(exec())) 927 if (apps.contains(exec()))
928 return true; 928 return true;
929 return false; 929 return false;
930} 930}
931 931
932void AppLnk::setPreloaded(bool yesNo) { 932void AppLnk::setPreloaded(bool yesNo) {
933 // Preload information is stored in the Launcher config in v1.5. 933 // Preload information is stored in the Launcher config in v1.5.
934 Config cfg("Launcher"); 934 Config cfg("Launcher");
935 cfg.setGroup("Preload"); 935 cfg.setGroup("Preload");
936 QStringList apps = cfg.readListEntry("Apps", ','); 936 QStringList apps = cfg.readListEntry("Apps", ',');
937 if (apps.contains(exec()) && !yesNo) 937 if (apps.contains(exec()) && !yesNo)
938 apps.remove(exec()); 938 apps.remove(exec());
939 else if (yesNo && !apps.contains(exec())) 939 else if (yesNo && !apps.contains(exec()))
940 apps.append(exec()); 940 apps.append(exec());
941 cfg.writeEntry("Apps", apps, ','); 941 cfg.writeEntry("Apps", apps, ',');
942} 942}
943 943
944 944
945/*! 945/*!
946 Deletes both the linkFile() and the file() associated with this AppLnk. 946 Deletes both the linkFile() and the file() associated with this AppLnk.
947 947
948 \sa removeLinkFile() 948 \sa removeLinkFile()
949*/ 949*/
950void AppLnk::removeFiles() 950void AppLnk::removeFiles()
951{ 951{
952 bool valid = isValid(); 952 bool valid = isValid();
953 if ( !valid || !linkFileKnown() || QFile::remove(linkFile()) ) { 953 if ( !valid || !linkFileKnown() || QFile::remove(linkFile()) ) {
954 if ( QFile::remove(file()) ) { 954 if ( QFile::remove(file()) ) {
955#ifndef QT_NO_COP 955#ifndef QT_NO_COP
956 QCopEnvelope e("QPE/System", "linkChanged(QString)"); 956 QCopEnvelope e("QPE/System", "linkChanged(QString)");
957 if ( linkFileKnown() ) 957 if ( linkFileKnown() )
958 e << linkFile(); 958 e << linkFile();
959 else 959 else
960 e << file(); 960 e << file();
961#endif 961#endif
962 } else if ( valid ) { 962 } else if ( valid ) {
963 // restore link 963 // restore link
964 writeLink(); 964 writeLink();
965 } 965 }
966 } 966 }
967} 967}
968 968
969/*! 969/*!
970 Deletes the linkFile(), leaving any file() untouched. 970 Deletes the linkFile(), leaving any file() untouched.
971 971
972 \sa removeFiles() 972 \sa removeFiles()
973*/ 973*/
974void AppLnk::removeLinkFile() 974void AppLnk::removeLinkFile()
975{ 975{
976 if ( isValid() && linkFileKnown() && QFile::remove(linkFile()) ) { 976 if ( isValid() && linkFileKnown() && QFile::remove(linkFile()) ) {
977#ifndef QT_NO_COP 977#ifndef QT_NO_COP
978 QCopEnvelope e("QPE/System", "linkChanged(QString)"); 978 QCopEnvelope e("QPE/System", "linkChanged(QString)");
979 e << linkFile(); 979 e << linkFile();
980#endif 980#endif
981 } 981 }
982} 982}
983 983
984class AppLnkSetPrivate { 984class AppLnkSetPrivate {
985public: 985public:
986 AppLnkSetPrivate() 986 AppLnkSetPrivate()
987 { 987 {
988 typPix.setAutoDelete(TRUE); 988 typPix.setAutoDelete(TRUE);
989 typPixBig.setAutoDelete(TRUE); 989 typPixBig.setAutoDelete(TRUE);
990 typName.setAutoDelete(TRUE); 990 typName.setAutoDelete(TRUE);
991 } 991 }
992 992
993 QDict<QPixmap> typPix; 993 QDict<QPixmap> typPix;
994 QDict<QPixmap> typPixBig; 994 QDict<QPixmap> typPixBig;
995 QDict<QString> typName; 995 QDict<QString> typName;
996}; 996};
997 997
998/*! 998/*!
999 \class AppLnkSet applnk.h 999 \class AppLnkSet applnk.h
1000 \brief The AppLnkSet class is a set of AppLnk objects. 1000 \brief The AppLnkSet class is a set of AppLnk objects.
1001*/ 1001*/
1002 1002
1003/*! 1003/*!
1004 \fn QStringList AppLnkSet::types() const 1004 \fn QStringList AppLnkSet::types() const
1005 1005
1006 Returns the list of \link applnk.html#Types types\endlink in the set. 1006 Returns the list of \link applnk.html#Types types\endlink in the set.
1007 1007
1008 For applications, games and settings the type is \c Application; 1008 For applications, games and settings the type is \c Application;
1009 for documents the type is the document's MIME type. 1009 for documents the type is the document's MIME type.
1010 1010
1011 \sa AppLnk::type(), typeName(), typePixmap(), typeBigPixmap() 1011 \sa AppLnk::type(), typeName(), typePixmap(), typeBigPixmap()
1012*/ 1012*/
1013 1013
1014/*! 1014/*!
1015 \fn const QList<AppLnk>& AppLnkSet::children() const 1015 \fn const QList<AppLnk>& AppLnkSet::children() const
1016 1016
1017 Returns the members of the set. 1017 Returns the members of the set.
1018*/ 1018*/
1019 1019
1020/*! 1020/*!
1021 Constructs an empty AppLnkSet. 1021 Constructs an empty AppLnkSet.
1022*/ 1022*/
1023AppLnkSet::AppLnkSet() : 1023AppLnkSet::AppLnkSet() :
1024 d(new AppLnkSetPrivate) 1024 d(new AppLnkSetPrivate)
1025{ 1025{
1026} 1026}
1027 1027
1028/*! 1028/*!
1029 Constructs an AppLnkSet that contains AppLnk objects representing 1029 Constructs an AppLnkSet that contains AppLnk objects representing
1030 all the files in the given \a directory (and any subdirectories 1030 all the files in the given \a directory (and any subdirectories
1031 recursively). 1031 recursively).
1032 1032
1033 \omit 1033 \omit
1034 The directories may contain ".directory" files which override 1034 The directories may contain ".directory" files which override
1035 any AppLnk::type() values for AppLnk objects found in the directory. 1035 any AppLnk::type() values for AppLnk objects found in the directory.
1036 This allows simple localization of application types. 1036 This allows simple localization of application types.
1037 \endomit 1037 \endomit
1038*/ 1038*/
1039AppLnkSet::AppLnkSet( const QString &directory ) : 1039AppLnkSet::AppLnkSet( const QString &directory ) :
1040 d(new AppLnkSetPrivate) 1040 d(new AppLnkSetPrivate)
1041{ 1041{
1042 QDir dir( directory ); 1042 QDir dir( directory );
1043 mFile = directory; 1043 mFile = directory;
1044 findChildren(directory,QString::null,QString::null); 1044 findChildren(directory,QString::null,QString::null);
1045} 1045}
1046 1046
1047/*! 1047/*!
1048 Detaches all AppLnk objects from the set. The set become empty and 1048 Detaches all AppLnk objects from the set. The set become empty and
1049 the caller becomes responsible for deleting the AppLnk objects. 1049 the caller becomes responsible for deleting the AppLnk objects.
1050*/ 1050*/
1051void AppLnkSet::detachChildren() 1051void AppLnkSet::detachChildren()
1052{ 1052{
1053 QListIterator<AppLnk> it( mApps ); 1053 QListIterator<AppLnk> it( mApps );
1054 for ( ; it.current(); ) { 1054 for ( ; it.current(); ) {
1055 AppLnk* a = *it; 1055 AppLnk* a = *it;
1056 ++it; 1056 ++it;
1057 a->mId = 0; 1057 a->mId = 0;
1058 } 1058 }
1059 mApps.clear(); 1059 mApps.clear();
1060} 1060}
1061 1061
1062/*! 1062/*!
1063 Destroys the set, deleting all the AppLnk objects it contains. 1063 Destroys the set, deleting all the AppLnk objects it contains.
1064 1064
1065 \sa detachChildren() 1065 \sa detachChildren()
1066*/ 1066*/
1067AppLnkSet::~AppLnkSet() 1067AppLnkSet::~AppLnkSet()
1068{ 1068{
1069 QListIterator<AppLnk> it( mApps ); 1069 QListIterator<AppLnk> it( mApps );
1070 for ( ; it.current(); ) { 1070 for ( ; it.current(); ) {
1071 AppLnk* a = *it; 1071 AppLnk* a = *it;
1072 ++it; 1072 ++it;
1073 a->mId = 0; 1073 a->mId = 0;
1074 delete a; 1074 delete a;
1075 } 1075 }
1076 delete d; 1076 delete d;
1077} 1077}
1078 1078
1079void AppLnkSet::findChildren(const QString &dr, const QString& typ, const QString& typName, int depth) 1079void AppLnkSet::findChildren(const QString &dr, const QString& typ, const QString& typName, int depth)
1080{ 1080{
1081 depth++; 1081 depth++;
1082 if ( depth > 10 ) 1082 if ( depth > 10 )
1083 return; 1083 return;
1084 1084
1085 QDir dir( dr ); 1085 QDir dir( dr );
1086 QString typNameLocal = typName; 1086 QString typNameLocal = typName;
1087 1087
1088 if ( dir.exists( ".directory" ) ) { 1088 if ( dir.exists( ".directory" ) ) {
1089 Config config( dr + "/.directory", Config::File ); 1089 Config config( dr + "/.directory", Config::File );
1090 config.setGroup( "Desktop Entry" ); 1090 config.setGroup( "Desktop Entry" );
1091 typNameLocal = config.readEntry( "Name", typNameLocal ); 1091 typNameLocal = config.readEntry( "Name", typNameLocal );
1092 if ( !typ.isEmpty() ) { 1092 if ( !typ.isEmpty() ) {
1093 QString iconFile = config.readEntry( "Icon", "AppsIcon" ); 1093 QString iconFile = config.readEntry( "Icon", "AppsIcon" );
1094 QImage unscaledIcon = Resource::loadImage( iconFile ); 1094 QImage unscaledIcon = Resource::loadImage( iconFile );
1095 QPixmap pm, bpm; 1095 QPixmap pm, bpm;
1096 pm.convertFromImage( unscaledIcon.smoothScale( smallSize, smallSize ) ); 1096 pm.convertFromImage( unscaledIcon.smoothScale( smallSize, smallSize ) );
1097 bpm.convertFromImage( unscaledIcon.smoothScale( bigSize, bigSize ) ); 1097 bpm.convertFromImage( unscaledIcon.smoothScale( bigSize, bigSize ) );
1098 d->typPix.insert(typ, new QPixmap(pm)); 1098 d->typPix.insert(typ, new QPixmap(pm));
1099 d->typPixBig.insert(typ, new QPixmap(bpm)); 1099 d->typPixBig.insert(typ, new QPixmap(bpm));
1100 d->typName.insert(typ, new QString(typNameLocal)); 1100 d->typName.insert(typ, new QString(typNameLocal));
1101 } 1101 }
1102 } 1102 }
1103 1103
1104 const QFileInfoList *list = dir.entryInfoList(); 1104 const QFileInfoList *list = dir.entryInfoList();
1105 if ( list ) { 1105 if ( list ) {
1106 QFileInfo* fi; 1106 QFileInfo* fi;
1107 bool cadded=FALSE; 1107 bool cadded=FALSE;
1108 for ( QFileInfoListIterator it(*list); (fi=*it); ++it ) { 1108 for ( QFileInfoListIterator it(*list); (fi=*it); ++it ) {
1109 QString bn = fi->fileName(); 1109 QString bn = fi->fileName();
1110// qDebug("findChildren "+bn); 1110// qDebug("findChildren "+bn);
1111 if ( bn[0] != '.' && bn != "CVS" ) { 1111 if ( bn[0] != '.' && bn != "CVS" ) {
1112 if ( fi->isDir() ) { 1112 if ( fi->isDir() ) {
1113 QString c = typ.isNull() ? bn : typ+"/"+bn; 1113 QString c = typ.isNull() ? bn : typ+"/"+bn;
1114 QString d = typNameLocal.isNull() ? bn : typNameLocal+"/"+bn; 1114 QString d = typNameLocal.isNull() ? bn : typNameLocal+"/"+bn;
1115 findChildren(fi->filePath(), c, d, depth ); 1115 findChildren(fi->filePath(), c, d, depth );
1116 } else { 1116 } else {
1117 if ( fi->extension(FALSE) == "desktop" ) { 1117 if ( fi->extension(FALSE) == "desktop" ) {
1118 AppLnk* app = new AppLnk( fi->filePath() ); 1118 AppLnk* app = new AppLnk( fi->filePath() );
1119#ifdef QT_NO_QWS_MULTIPROCESS 1119#ifdef QT_NO_QWS_MULTIPROCESS
1120 if ( !Global::isBuiltinCommand( app->exec() ) ) 1120 if ( !Global::isBuiltinCommand( app->exec() ) )
1121 delete app; 1121 delete app;
1122 else 1122 else
1123#endif 1123#endif
1124 { 1124 {
1125 if ( !typ.isEmpty() ) { 1125 if ( !typ.isEmpty() ) {
1126 if ( !cadded ) { 1126 if ( !cadded ) {
1127 typs.append(typ); 1127 typs.append(typ);
1128 cadded = TRUE; 1128 cadded = TRUE;
1129 } 1129 }
1130 app->setType(typ); 1130 app->setType(typ);
1131 } 1131 }
1132 add(app); 1132 add(app);
1133 } 1133 }
1134 } 1134 }
1135 } 1135 }
1136 } 1136 }
1137 } 1137 }
1138 } 1138 }
1139} 1139}
1140 1140
1141/*! 1141/*!
1142 Adds AppLnk \a f to the set. The set takes responsibility for 1142 Adds AppLnk \a f to the set. The set takes responsibility for
1143 deleting \a f. 1143 deleting \a f.
1144 1144
1145 \sa remove() 1145 \sa remove()
1146*/ 1146*/
1147void AppLnkSet::add( AppLnk *f ) 1147void AppLnkSet::add( AppLnk *f )
1148{ 1148{
1149 if ( f->mId == 0 ) { 1149 if ( f->mId == 0 ) {
1150 AppLnk::lastId++; 1150 AppLnk::lastId++;
1151 f->mId = AppLnk::lastId; 1151 f->mId = AppLnk::lastId;
1152 mApps.append( f ); 1152 mApps.append( f );
1153 } else { 1153 } else {
1154 qWarning("Attempt to add an AppLnk twice"); 1154 qWarning("Attempt to add an AppLnk twice");
1155 } 1155 }
1156} 1156}
1157 1157
1158/*! 1158/*!
1159 Removes AppLnk \a f to the set. The caller becomes responsible for 1159 Removes AppLnk \a f to the set. The caller becomes responsible for
1160 deleting \a f. Returns TRUE if \a f was in the set; otherwise 1160 deleting \a f. Returns TRUE if \a f was in the set; otherwise
1161 returns FALSE. 1161 returns FALSE.
1162 1162
1163 \sa add() 1163 \sa add()
1164*/ 1164*/
1165bool AppLnkSet::remove( AppLnk *f ) 1165bool AppLnkSet::remove( AppLnk *f )
1166{ 1166{
1167 if ( mApps.remove( f ) ) { 1167 if ( mApps.remove( f ) ) {
1168 f->mId = 0; 1168 f->mId = 0;
1169 return TRUE; 1169 return TRUE;
1170 } 1170 }
1171 return FALSE; 1171 return FALSE;
1172} 1172}
1173 1173
1174 1174
1175/*! 1175/*!
1176 Returns the localized name for type \a t. 1176 Returns the localized name for type \a t.
1177 1177
1178 For applications, games and settings the type is \c Application; 1178 For applications, games and settings the type is \c Application;
1179 for documents the type is the document's MIME type. 1179 for documents the type is the document's MIME type.
1180*/ 1180*/
1181QString AppLnkSet::typeName( const QString& t ) const 1181QString AppLnkSet::typeName( const QString& t ) const
1182{ 1182{
1183 QString *st = d->typName.find(t); 1183 QString *st = d->typName.find(t);
1184 return st ? *st : QString::null; 1184 return st ? *st : QString::null;
1185} 1185}
1186 1186
1187/*! 1187/*!
1188 Returns the small pixmap associated with type \a t. 1188 Returns the small pixmap associated with type \a t.
1189 1189
1190 For applications, games and settings the type is \c Application; 1190 For applications, games and settings the type is \c Application;
1191 for documents the type is the document's MIME type. 1191 for documents the type is the document's MIME type.
1192*/ 1192*/
1193QPixmap AppLnkSet::typePixmap( const QString& t ) const 1193QPixmap AppLnkSet::typePixmap( const QString& t ) const
1194{ 1194{
1195 QPixmap *pm = d->typPix.find(t); 1195 QPixmap *pm = d->typPix.find(t);
1196 return pm ? *pm : QPixmap(); 1196 return pm ? *pm : QPixmap();
1197} 1197}
1198 1198
1199/*! 1199/*!
1200 Returns the large pixmap associated with type \a t. 1200 Returns the large pixmap associated with type \a t.
1201 1201
1202 For applications, games and settings the type is \c Application; 1202 For applications, games and settings the type is \c Application;
1203 for documents the type is the document's MIME type. 1203 for documents the type is the document's MIME type.
1204*/ 1204*/
1205QPixmap AppLnkSet::typeBigPixmap( const QString& t ) const 1205QPixmap AppLnkSet::typeBigPixmap( const QString& t ) const
1206{ 1206{
1207 QPixmap *pm = d->typPixBig.find(t); 1207 QPixmap *pm = d->typPixBig.find(t);
1208 return pm ? *pm : QPixmap(); 1208 return pm ? *pm : QPixmap();
1209} 1209}
1210 1210
1211/*! 1211/*!
1212 Returns the AppLnk with the given \a id. 1212 Returns the AppLnk with the given \a id.
1213*/ 1213*/
1214const AppLnk *AppLnkSet::find( int id ) const 1214const AppLnk *AppLnkSet::find( int id ) const
1215{ 1215{
1216 QListIterator<AppLnk> it( children() ); 1216 QListIterator<AppLnk> it( children() );
1217 1217
1218 for ( ; it.current(); ++it ) { 1218 for ( ; it.current(); ++it ) {
1219 const AppLnk *app = it.current(); 1219 const AppLnk *app = it.current();
1220 if ( app->id() == id ) 1220 if ( app->id() == id )
1221 return app; 1221 return app;
1222 } 1222 }
1223 1223
1224 return 0; 1224 return 0;
1225} 1225}
1226 1226
1227/*! 1227/*!
1228 Returns the AppLnk with the given \a exec attribute. 1228 Returns the AppLnk with the given \a exec attribute.
1229*/ 1229*/
1230const AppLnk *AppLnkSet::findExec( const QString& exec ) const 1230const AppLnk *AppLnkSet::findExec( const QString& exec ) const
1231{ 1231{
1232 QListIterator<AppLnk> it( children() ); 1232 QListIterator<AppLnk> it( children() );
1233 1233
1234 for ( ; it.current(); ++it ) { 1234 for ( ; it.current(); ++it ) {
1235 const AppLnk *app = it.current(); 1235 const AppLnk *app = it.current();
1236 if ( app->exec() == exec ) 1236 if ( app->exec() == exec )
1237 return app; 1237 return app;
1238 } 1238 }
1239 1239
1240 return 0; 1240 return 0;
1241} 1241}
1242 1242
1243/*! 1243/*!
1244 \class DocLnkSet applnk.h 1244 \class DocLnkSet applnk.h
1245 \brief The DocLnkSet class is a set of DocLnk objects. 1245 \brief The DocLnkSet class is a set of DocLnk objects.
1246*/ 1246*/
1247 1247
1248/*! 1248/*!
1249 \fn const QList<DocLnk>& DocLnkSet::children() const 1249 \fn const QList<DocLnk>& DocLnkSet::children() const
1250 1250
1251 Returns the members of the set. 1251 Returns the members of the set.
1252*/ 1252*/
1253 1253
1254/*! 1254/*!
1255 Constructs an empty DocLnkSet. 1255 Constructs an empty DocLnkSet.
1256 1256
1257 \sa appendFrom() 1257 \sa appendFrom()
1258*/ 1258*/
1259DocLnkSet::DocLnkSet() 1259DocLnkSet::DocLnkSet()
1260{ 1260{
1261} 1261}
1262 1262
1263/*! 1263/*!
1264 Constructs a DocLnkSet that contains DocLnk objects representing all 1264 Constructs a DocLnkSet that contains DocLnk objects representing all
1265 the files in the \a directory (and any subdirectories, recursively). 1265 the files in the \a directory (and any subdirectories, recursively).
1266 1266
1267 If \a mimefilter is not null, 1267 If \a mimefilter is not null,
1268 only documents with a MIME type matching \a mimefilter are selected. 1268 only documents with a MIME type matching \a mimefilter are selected.
1269 The value may contain multiple wild-card patterns separated by ";", 1269 The value may contain multiple wild-card patterns separated by ";",
1270 such as \c{*o/mpeg;audio/x-wav}. 1270 such as \c{*o/mpeg;audio/x-wav}.
1271 1271
1272 See also \link applnk.html#files-and-links Files and Links\endlink. 1272 See also \link applnk.html#files-and-links Files and Links\endlink.
1273 1273
1274*/ 1274*/
1275DocLnkSet::DocLnkSet( const QString &directory, const QString& mimefilter ) : 1275DocLnkSet::DocLnkSet( const QString &directory, const QString& mimefilter ) :
1276 AppLnkSet() 1276 AppLnkSet()
1277{ 1277{
1278 QDir dir( directory ); 1278 QDir dir( directory );
1279 mFile = dir.dirName(); 1279 mFile = dir.dirName();
1280 QDict<void> reference; 1280 QDict<void> reference;
1281 1281
1282 QStringList subFilter = QStringList::split(";", mimefilter); 1282 QStringList subFilter = QStringList::split(";", mimefilter);
1283 QValueList<QRegExp> mimeFilters; 1283 QValueList<QRegExp> mimeFilters;
1284 for( QStringList::Iterator it = subFilter.begin(); it != subFilter.end(); ++ it ) 1284 for( QStringList::Iterator it = subFilter.begin(); it != subFilter.end(); ++ it )
1285 mimeFilters.append( QRegExp(*it, FALSE, TRUE) ); 1285 mimeFilters.append( QRegExp(*it, FALSE, TRUE) );
1286 1286
1287 findChildren(directory, mimeFilters, reference); 1287 findChildren(directory, mimeFilters, reference);
1288 1288
1289 const QList<DocLnk> &list = children(); 1289 const QList<DocLnk> &list = children();
1290 for ( QListIterator<DocLnk> it( list ); it.current(); ++it ) { 1290 for ( QListIterator<DocLnk> it( list ); it.current(); ++it ) {
1291 reference.remove( (*it)->file() ); 1291 reference.remove( (*it)->file() );
1292 } 1292 }
1293 for ( QDictIterator<void> dit(reference); dit.current(); ++dit ) { 1293 for ( QDictIterator<void> dit(reference); dit.current(); ++dit ) {
1294 if ( dit.current() == (void*)2 ) { 1294 if ( dit.current() == (void*)2 ) {
1295 // Unreferenced, make an unwritten link 1295 // Unreferenced, make an unwritten link
1296 DocLnk* dl = new DocLnk; 1296 DocLnk* dl = new DocLnk;
1297 QFileInfo fi( dit.currentKey() ); 1297 QFileInfo fi( dit.currentKey() );
1298 dl->setFile(fi.filePath()); 1298 dl->setFile(fi.filePath());
1299 dl->setName(fi.baseName()); 1299 dl->setName(fi.baseName());
1300 // #### default to current path? 1300 // #### default to current path?
1301 // dl->setCategories( ... ); 1301 // dl->setCategories( ... );
1302 bool match = mimefilter.isNull(); 1302 bool match = mimefilter.isNull();
1303 if ( !match ) 1303 if ( !match )
1304 for( QValueList<QRegExp>::Iterator it = mimeFilters.begin(); it != mimeFilters.end() && !match; ++ it ) 1304 for( QValueList<QRegExp>::Iterator it = mimeFilters.begin(); it != mimeFilters.end() && !match; ++ it )
1305 if ( (*it).match(dl->type()) >= 0 ) 1305 if ( (*it).match(dl->type()) >= 0 )
1306 match = TRUE; 1306 match = TRUE;
1307 if ( match /* && dl->type() != "application/octet-stream" */ 1307 if ( match /* && dl->type() != "application/octet-stream" */
1308 && !!dl->exec() ) 1308 && !!dl->exec() )
1309 add(dl); 1309 add(dl);
1310 else 1310 else
1311 delete dl; 1311 delete dl;
1312 } 1312 }
1313 } 1313 }
1314} 1314}
1315 1315
1316// other becomes empty 1316// other becomes empty
1317/*! 1317/*!
1318 Transfers all DocLnk objects from \a other to this set. \a other becomes 1318 Transfers all DocLnk objects from \a other to this set. \a other becomes
1319 empty. 1319 empty.
1320*/ 1320*/
1321void DocLnkSet::appendFrom( DocLnkSet& other ) 1321void DocLnkSet::appendFrom( DocLnkSet& other )
1322{ 1322{
1323 if ( &other == this ) 1323 if ( &other == this )
1324 return; 1324 return;
1325 QListIterator<AppLnk> it( other.mApps ); 1325 QListIterator<AppLnk> it( other.mApps );
1326 for ( ; it.current(); ) { 1326 for ( ; it.current(); ) {
1327 mApps.append(*it); 1327 mApps.append(*it);
1328 ++it; 1328 ++it;
1329 } 1329 }
1330 other.mApps.clear(); 1330 other.mApps.clear();
1331} 1331}
1332 1332
1333void DocLnkSet::findChildren(const QString &dr, const QValueList<QRegExp> &mimeFilters, QDict<void> &reference, int depth) 1333void DocLnkSet::findChildren(const QString &dr, const QValueList<QRegExp> &mimeFilters, QDict<void> &reference, int depth)
1334{ 1334{
1335 depth++; 1335 depth++;
1336 if ( depth > 10 ) 1336 if ( depth > 10 )
1337 return; 1337 return;
1338 1338
1339 QDir dir( dr ); 1339 QDir dir( dr );
1340 1340
1341 /* Opie got a different approach 1341 /* Opie got a different approach
1342 * I guess it's geek vs. consumer 1342 * I guess it's geek vs. consumer
1343 * in this case to be discussed 1343 * in this case to be discussed
1344 */ 1344 */
1345 if ( dir.exists( ".Qtopia-ignore" ) ) 1345 if ( dir.exists( ".Qtopia-ignore" ) )
1346 return; 1346 return;
1347 1347
1348 const QFileInfoList *list = dir.entryInfoList(); 1348 const QFileInfoList *list = dir.entryInfoList();
1349 if ( list ) { 1349 if ( list ) {
1350 QFileInfo* fi; 1350 QFileInfo* fi;
1351 for ( QFileInfoListIterator it(*list); (fi=*it); ++it ) { 1351 for ( QFileInfoListIterator it(*list); (fi=*it); ++it ) {
1352 QString bn = fi->fileName(); 1352 QString bn = fi->fileName();
1353 if ( bn[0] != '.' ) { 1353 if ( bn[0] != '.' ) {
1354 if ( fi->isDir() ) { 1354 if ( fi->isDir() ) {
1355 if ( bn != "CVS" && bn != "Qtopia" && bn != "QtPalmtop" ) 1355 if ( bn != "CVS" && bn != "Qtopia" && bn != "QtPalmtop" )
1356 findChildren(fi->filePath(), mimeFilters, reference, depth); 1356 findChildren(fi->filePath(), mimeFilters, reference, depth);
1357 } else { 1357 } else {
1358 if ( fi->extension(FALSE) == "desktop" ) { 1358 if ( fi->extension(FALSE) == "desktop" ) {
1359 DocLnk* dl = new DocLnk( fi->filePath() ); 1359 DocLnk* dl = new DocLnk( fi->filePath() );
1360 QFileInfo fi2(dl->file()); 1360 QFileInfo fi2(dl->file());
1361 bool match = FALSE; 1361 bool match = FALSE;
1362 if ( !fi2.exists() ) { 1362 if ( !fi2.exists() ) {
1363 dir.remove( dl->file() ); 1363 dir.remove( dl->file() );
1364 } 1364 }
1365 if ( mimeFilters.count() == 0 ) { 1365 if ( mimeFilters.count() == 0 ) {
1366 add( dl ); 1366 add( dl );
1367 match = TRUE; 1367 match = TRUE;
1368 } else { 1368 } else {
1369 for( QValueList<QRegExp>::ConstIterator it = mimeFilters.begin(); it != mimeFilters.end(); ++ it ) { 1369 for( QValueList<QRegExp>::ConstIterator it = mimeFilters.begin(); it != mimeFilters.end(); ++ it ) {
1370 if ( (*it).match(dl->type()) >= 0 ) { 1370 if ( (*it).match(dl->type()) >= 0 ) {
1371 add(dl); 1371 add(dl);
1372 match = TRUE; 1372 match = TRUE;
1373 } 1373 }
1374 } 1374 }
1375 } 1375 }
1376 if ( !match ) 1376 if ( !match )
1377 delete dl; 1377 delete dl;
1378 } else { 1378 } else {
1379 if ( !reference.find(fi->fileName()) ) 1379 if ( !reference.find(fi->fileName()) )
1380 reference.insert(fi->filePath(), (void*)2); 1380 reference.insert(fi->filePath(), (void*)2);
1381 } 1381 }
1382 } 1382 }
1383 } 1383 }
1384 } 1384 }
1385 } 1385 }
1386} 1386}
1387 1387
1388/*! 1388/*!
1389 \class DocLnk applnk.h 1389 \class DocLnk applnk.h
1390 \brief The DocLnk class represents loaded document references. 1390 \brief The DocLnk class represents loaded document references.
1391*/ 1391*/
1392 1392
1393/*! 1393/*!
1394 \fn DocLnk::DocLnk( const DocLnk &o ) 1394 \fn DocLnk::DocLnk( const DocLnk &o )
1395 1395
1396 Copies \a o. 1396 Copies \a o.
1397*/ 1397*/
1398 1398
1399/*! 1399/*!
1400 Constructs a DocLnk from a valid .desktop \a file or a new .desktop 1400 Constructs a DocLnk from a valid .desktop \a file or a new .desktop
1401 \a file for other files. 1401 \a file for other files.
1402*/ 1402*/
1403DocLnk::DocLnk( const QString &file ) : 1403DocLnk::DocLnk( const QString &file ) :
1404 AppLnk(file) 1404 AppLnk(file)
1405{ 1405{
1406 init(file); 1406 init(file);
1407} 1407}
1408 1408
1409/*! 1409/*!
1410 Constructs a DocLnk from a valid .desktop \a file or a new .desktop 1410 Constructs a DocLnk from a valid .desktop \a file or a new .desktop
1411 \a file for other files. If \a may_be_desktopfile is TRUE, then an 1411 \a file for other files. If \a may_be_desktopfile is TRUE, then an
1412 attempt is made to read \a file as a .desktop file; if that fails it 1412 attempt is made to read \a file as a .desktop file; if that fails it
1413 is read as a normal file. 1413 is read as a normal file.
1414*/ 1414*/
1415DocLnk::DocLnk( const QString &file, bool may_be_desktopfile ) : 1415DocLnk::DocLnk( const QString &file, bool may_be_desktopfile ) :
1416 AppLnk(may_be_desktopfile ? file : QString::null) 1416 AppLnk(may_be_desktopfile ? file : QString::null)
1417{ 1417{
1418 init(file); 1418 init(file);
1419} 1419}
1420 1420
1421void DocLnk::init(const QString &file) 1421void DocLnk::init(const QString &file)
1422{ 1422{
1423 if ( isValid() ) { 1423 if ( isValid() ) {
1424#ifndef FORCED_DIR_STRUCTURE_WAY 1424#ifndef FORCED_DIR_STRUCTURE_WAY
1425 if ( mType.isNull() ) 1425 if ( mType.isNull() )
1426 // try to infer it 1426 // try to infer it
1427#endif 1427#endif
1428 { 1428 {
1429 int s0 = file.findRev('/'); 1429 int s0 = file.findRev('/');
1430 if ( s0 > 0 ) { 1430 if ( s0 > 0 ) {
1431 int s1 = file.findRev('/',s0-1); 1431 int s1 = file.findRev('/',s0-1);
1432 if ( s1 > 0 ) { 1432 if ( s1 > 0 ) {
1433 int s2 = file.findRev('/',s1-1); 1433 int s2 = file.findRev('/',s1-1);
1434 if ( s2 > 0 ) { 1434 if ( s2 > 0 ) {
1435 mType = file.mid(s2+1,s0-s2-1); 1435 mType = file.mid(s2+1,s0-s2-1);
1436 } 1436 }
1437 } 1437 }
1438 } 1438 }
1439 } 1439 }
1440 } else if ( QFile::exists(file) ) { 1440 } else if ( QFile::exists(file) ) {
1441 QString n = file; 1441 QString n = file;
1442 n.replace(QRegExp(".*/"),""); 1442 n.replace(QRegExp(".*/"),"");
1443 n.replace(QRegExp("\\..*"),""); 1443 n.replace(QRegExp("\\..*"),"");
1444 setName( n ); 1444 setName( n );
1445 setFile( file ); 1445 setFile( file );
1446 } 1446 }
1447 MimeType mt(mType); 1447 MimeType mt(mType);
1448 if( mt.application() ) 1448 if( mt.application() )
1449 mExec = mt.application()->exec(); 1449 mExec = mt.application()->exec();
1450} 1450}
1451 1451
1452/*! 1452/*!
1453 Constructs an invalid DocLnk. 1453 Constructs an invalid DocLnk.
1454*/ 1454*/
1455DocLnk::DocLnk() 1455DocLnk::DocLnk()
1456{ 1456{
1457} 1457}
1458 1458
1459/*! 1459/*!
1460 Destroys the DocLnk. Just like AppLnk objects, a run-time error 1460 Destroys the DocLnk. Just like AppLnk objects, a run-time error
1461 occurs if the DocLnk is a member of a DocLnkSet (or AppLnkSet). 1461 occurs if the DocLnk is a member of a DocLnkSet (or AppLnkSet).
1462*/ 1462*/
1463DocLnk::~DocLnk() 1463DocLnk::~DocLnk()
1464{ 1464{
1465} 1465}
1466 1466
1467/*! 1467/*!
1468 \reimp 1468 \reimp
1469*/ 1469*/
1470QString DocLnk::exec() const 1470QString DocLnk::exec() const
1471{ 1471{
1472 MimeType mt(type()); 1472 MimeType mt(type());
1473 const AppLnk* app = mt.application(); 1473 const AppLnk* app = mt.application();
1474 if ( app ) 1474 if ( app )
1475 return app->exec(); 1475 return app->exec();
1476 else 1476 else
1477 return QString::null; 1477 return QString::null;
1478} 1478}
1479 1479
1480/*! 1480/*!
1481 \reimp 1481 \reimp
1482*/ 1482*/
1483void DocLnk::invoke(const QStringList& args) const 1483void DocLnk::invoke(const QStringList& args) const
1484{ 1484{
1485 MimeType mt(type()); 1485 MimeType mt(type());
1486 const AppLnk* app = mt.application(); 1486 const AppLnk* app = mt.application();
1487 if ( app ) { 1487 if ( app ) {
1488 QStringList a = args; 1488 QStringList a = args;
1489 if ( linkFileKnown() && QFile::exists( linkFile() ) ) 1489 if ( linkFileKnown() && QFile::exists( linkFile() ) )
1490 a.append(linkFile()); 1490 a.append(linkFile());
1491 else 1491 else
1492 a.append(file()); 1492 a.append(file());
1493 app->execute(a); 1493 app->execute(a);
1494 } 1494 }
1495} 1495}
1496 1496
1497 1497
diff --git a/library/applnk.h b/library/applnk.h
index b4590d3..87971f7 100644
--- a/library/applnk.h
+++ b/library/applnk.h
@@ -1,208 +1,206 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. 2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of the Qtopia Environment. 4** This file is part of the Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20#ifndef __APPLNK_H__ 20#ifndef __APPLNK_H__
21#define __APPLNK_H__ 21#define __APPLNK_H__
22 22
23#include <qobject.h> 23#include <qobject.h>
24#include <qiconset.h> 24#include <qiconset.h>
25#include <qlist.h> 25#include <qlist.h>
26#include <qdict.h> 26#include <qdict.h>
27#include <qstringlist.h> 27#include <qstringlist.h>
28 28
29class AppLnkSetPrivate; 29class AppLnkSetPrivate;
30class AppLnkPrivate; 30class AppLnkPrivate;
31 31
32class AppLnk 32class AppLnk
33{ 33{
34public: 34public:
35 AppLnk(); 35 AppLnk();
36 AppLnk( const QString &file ); 36 AppLnk( const QString &file );
37 AppLnk( const AppLnk &copy ); // copy constructor 37 AppLnk( const AppLnk &copy ); // copy constructor
38 virtual ~AppLnk(); 38 virtual ~AppLnk();
39 39
40 bool isValid() const { return !mLinkFile.isNull(); } 40 bool isValid() const { return !mLinkFile.isNull(); }
41 41
42 static void setSmallIconSize(int); 42 static void setSmallIconSize(int);
43 static void setBigIconSize(int); 43 static void setBigIconSize(int);
44 static int smallIconSize(); 44 static int smallIconSize();
45 static int bigIconSize(); 45 static int bigIconSize();
46 46
47 QString name() const { return mName; } 47 QString name() const { return mName; }
48 const QPixmap& pixmap() const; 48 const QPixmap& pixmap() const;
49 const QPixmap& bigPixmap() const; 49 const QPixmap& bigPixmap() const;
50 QString icon() const { return mIconFile; } 50 QString icon() const { return mIconFile; }
51 virtual QString exec() const { return mExec; } 51 virtual QString exec() const { return mExec; }
52 QString type() const; 52 QString type() const;
53 QString rotation() const { return mRotation; } 53 QString rotation() const { return mRotation; }
54 QString comment() const { return mComment; } 54 QString comment() const { return mComment; }
55 QString file() const; 55 QString file() const;
56 QString linkFile() const; 56 QString linkFile() const;
57 QStringList mimeTypes() const { return mMimeTypes; } 57 QStringList mimeTypes() const { return mMimeTypes; }
58 QStringList mimeTypeIcons() const { return mMimeTypeIcons; } 58 QStringList mimeTypeIcons() const { return mMimeTypeIcons; }
59 const QArray<int> &categories() const; 59 const QArray<int> &categories() const;
60 int id() const { return mId; } 60 int id() const { return mId; }
61 61
62 bool fileKnown() const { return !mFile.isNull(); } 62 bool fileKnown() const { return !mFile.isNull(); }
63 bool linkFileKnown() const { return !mLinkFile.isNull(); } 63 bool linkFileKnown() const { return !mLinkFile.isNull(); }
64 64
65 void execute() const; 65 void execute() const;
66 void execute(const QStringList& args) const; 66 void execute(const QStringList& args) const;
67 void removeFiles(); 67 void removeFiles();
68 void removeLinkFile(); 68 void removeLinkFile();
69 69
70 void setName( const QString& docname ); 70 void setName( const QString& docname );
71 void setExec( const QString& exec ); 71 void setExec( const QString& exec );
72 void setFile( const QString& filename ); 72 void setFile( const QString& filename );
73 void setLinkFile( const QString& filename ); 73 void setLinkFile( const QString& filename );
74 void setComment( const QString& comment ); 74 void setComment( const QString& comment );
75 void setType( const QString& mimetype ); 75 void setType( const QString& mimetype );
76 inline void setRotation ( const QString &rot ) { mRotation = rot; } // inline for BC 76 inline void setRotation ( const QString &rot ) { mRotation = rot; } // inline for BC
77 void setIcon( const QString& iconname ); 77 void setIcon( const QString& iconname );
78 void setCategories( const QArray<int> &v ); 78 void setCategories( const QArray<int> &v );
79 bool writeLink() const; 79 bool writeLink() const;
80 80
81 void setProperty(const QString& key, const QString& value); 81 void setProperty(const QString& key, const QString& value);
82 QString property(const QString& key) const; 82 QString property(const QString& key) const;
83 83
84#ifdef QTOPIA_INTERNAL_PRELOADACCESS 84#ifdef QTOPIA_INTERNAL_PRELOADACCESS
85 bool isPreloaded() const; 85 bool isPreloaded() const;
86 void setPreloaded(bool yesNo); 86 void setPreloaded(bool yesNo);
87#endif 87#endif
88 88
89#ifdef QTOPIA_INTERNAL_APPLNKASSIGN
90 AppLnk &operator=(const AppLnk &other); 89 AppLnk &operator=(const AppLnk &other);
91#endif
92 90
93protected: 91protected:
94 QString mName; 92 QString mName;
95 93
96 /* remove for Qtopia 3.0 -zecke */ 94 /* remove for Qtopia 3.0 -zecke */
97 QPixmap mPixmap; 95 QPixmap mPixmap;
98 96
99 /* remove for Qtopia 3.0 -zecke */ 97 /* remove for Qtopia 3.0 -zecke */
100 QPixmap mBigPixmap; 98 QPixmap mBigPixmap;
101 99
102 QString mExec; 100 QString mExec;
103 QString mType; 101 QString mType;
104 QString mRotation; 102 QString mRotation;
105 QString mComment; 103 QString mComment;
106 QString mFile; 104 QString mFile;
107 QString mLinkFile; 105 QString mLinkFile;
108 QString mIconFile; 106 QString mIconFile;
109 QStringList mMimeTypes; 107 QStringList mMimeTypes;
110 QStringList mMimeTypeIcons; 108 QStringList mMimeTypeIcons;
111 int mId; 109 int mId;
112 static int lastId; 110 static int lastId;
113 AppLnkPrivate *d; 111 AppLnkPrivate *d;
114 friend class AppLnkSet; 112 friend class AppLnkSet;
115 113
116 virtual void invoke(const QStringList& args) const; 114 virtual void invoke(const QStringList& args) const;
117 bool ensureLinkExists() const; 115 bool ensureLinkExists() const;
118 void storeLink() const; 116 void storeLink() const;
119 117
120private: 118private:
121 const QPixmap& pixmap(int pos, int size) const; 119 const QPixmap& pixmap(int pos, int size) const;
122}; 120};
123 121
124class DocLnk : public AppLnk 122class DocLnk : public AppLnk
125{ 123{
126public: 124public:
127 DocLnk(); 125 DocLnk();
128 DocLnk( const DocLnk &o ) : AppLnk(o) { } 126 DocLnk( const DocLnk &o ) : AppLnk(o) { }
129 DocLnk( const QString &file ); 127 DocLnk( const QString &file );
130 DocLnk( const QString &file, bool may_be_desktopfile ); 128 DocLnk( const QString &file, bool may_be_desktopfile );
131 virtual ~DocLnk(); 129 virtual ~DocLnk();
132 130
133 131
134#ifdef QTOPIA_INTERNAL_APPLNKASSIGN 132#ifdef QTOPIA_INTERNAL_APPLNKASSIGN
135 DocLnk &operator=(const DocLnk &other) { AppLnk::operator=(other); return *this; } 133 DocLnk &operator=(const DocLnk &other) { AppLnk::operator=(other); return *this; }
136#endif 134#endif
137 135
138 QString exec() const; 136 QString exec() const;
139 137
140protected: 138protected:
141 void invoke(const QStringList& args) const; 139 void invoke(const QStringList& args) const;
142 140
143private: 141private:
144 void init(const QString &file); 142 void init(const QString &file);
145}; 143};
146 144
147class AppLnkSet 145class AppLnkSet
148{ 146{
149public: 147public:
150 AppLnkSet(); 148 AppLnkSet();
151 AppLnkSet( const QString &dir ); 149 AppLnkSet( const QString &dir );
152 ~AppLnkSet(); 150 ~AppLnkSet();
153 151
154 const AppLnk *find( int id ) const; 152 const AppLnk *find( int id ) const;
155 const AppLnk *findExec( const QString& execname ) const; 153 const AppLnk *findExec( const QString& execname ) const;
156 154
157 QStringList types() const { return typs; } 155 QStringList types() const { return typs; }
158 QString typeName( const QString& ) const; 156 QString typeName( const QString& ) const;
159 QPixmap typePixmap( const QString& ) const; 157 QPixmap typePixmap( const QString& ) const;
160 QPixmap typeBigPixmap( const QString& ) const; 158 QPixmap typeBigPixmap( const QString& ) const;
161 159
162 void add(AppLnk*); 160 void add(AppLnk*);
163 bool remove(AppLnk*); 161 bool remove(AppLnk*);
164 void clear() { 162 void clear() {
165 QListIterator<AppLnk> it( mApps ); 163 QListIterator<AppLnk> it( mApps );
166 for ( ; it.current(); ) { 164 for ( ; it.current(); ) {
167 AppLnk* a = *it; 165 AppLnk* a = *it;
168 ++it; 166 ++it;
169 a->mId = 0; 167 a->mId = 0;
170 delete a; 168 delete a;
171 } 169 }
172 mApps.clear(); 170 mApps.clear();
173 typs.clear(); 171 typs.clear();
174 } 172 }
175 173
176 const QList<AppLnk> &children() const { return mApps; } 174 const QList<AppLnk> &children() const { return mApps; }
177 void detachChildren(); 175 void detachChildren();
178 176
179protected: 177protected:
180 friend class AppLnk; 178 friend class AppLnk;
181 QList<AppLnk> mApps; 179 QList<AppLnk> mApps;
182 QString mFile; 180 QString mFile;
183 QStringList typs; 181 QStringList typs;
184 AppLnkSetPrivate *d; 182 AppLnkSetPrivate *d;
185 183
186private: 184private:
187 AppLnkSet( const AppLnkSet & ); // no copying! 185 AppLnkSet( const AppLnkSet & ); // no copying!
188 void findChildren(const QString &, const QString& t, const QString& lt, int depth = 0); 186 void findChildren(const QString &, const QString& t, const QString& lt, int depth = 0);
189}; 187};
190 188
191class DocLnkSet : public AppLnkSet 189class DocLnkSet : public AppLnkSet
192{ 190{
193public: 191public:
194 DocLnkSet(); 192 DocLnkSet();
195 DocLnkSet( const QString &dir, const QString &mimefilter=QString::null ); 193 DocLnkSet( const QString &dir, const QString &mimefilter=QString::null );
196 194
197 const QList<DocLnk> &children() const { return (const QList<DocLnk> &)mApps; } 195 const QList<DocLnk> &children() const { return (const QList<DocLnk> &)mApps; }
198 196
199 void appendFrom( DocLnkSet& other ); 197 void appendFrom( DocLnkSet& other );
200 198
201private: 199private:
202 DocLnkSet( const DocLnkSet & ); // no copying! 200 DocLnkSet( const DocLnkSet & ); // no copying!
203 void findChildren(const QString &dr, const QValueList<QRegExp> &mimeFilters, QDict<void> &reference, int depth=0); 201 void findChildren(const QString &dr, const QValueList<QRegExp> &mimeFilters, QDict<void> &reference, int depth=0);
204}; 202};
205 203
206 204
207#endif // __APPLNK_H__ 205#endif // __APPLNK_H__
208 206
diff --git a/library/backend/vcc.y b/library/backend/vcc.y
index 94a8fea..4c79368 100644
--- a/library/backend/vcc.y
+++ b/library/backend/vcc.y
@@ -1,1218 +1,1220 @@
1%{ 1%{
2 2
3/*************************************************************************** 3/***************************************************************************
4(C) Copyright 1996 Apple Computer, Inc., AT&T Corp., International 4(C) Copyright 1996 Apple Computer, Inc., AT&T Corp., International
5Business Machines Corporation and Siemens Rolm Communications Inc. 5Business Machines Corporation and Siemens Rolm Communications Inc.
6 6
7For purposes of this license notice, the term Licensors shall mean, 7For purposes of this license notice, the term Licensors shall mean,
8collectively, Apple Computer, Inc., AT&T Corp., International 8collectively, Apple Computer, Inc., AT&T Corp., International
9Business Machines Corporation and Siemens Rolm Communications Inc. 9Business Machines Corporation and Siemens Rolm Communications Inc.
10The term Licensor shall mean any of the Licensors. 10The term Licensor shall mean any of the Licensors.
11 11
12Subject to acceptance of the following conditions, permission is hereby 12Subject to acceptance of the following conditions, permission is hereby
13granted by Licensors without the need for written agreement and without 13granted by Licensors without the need for written agreement and without
14license or royalty fees, to use, copy, modify and distribute this 14license or royalty fees, to use, copy, modify and distribute this
15software for any purpose. 15software for any purpose.
16 16
17The above copyright notice and the following four paragraphs must be 17The above copyright notice and the following four paragraphs must be
18reproduced in all copies of this software and any software including 18reproduced in all copies of this software and any software including
19this software. 19this software.
20 20
21THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS AND NO LICENSOR SHALL HAVE 21THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS AND NO LICENSOR SHALL HAVE
22ANY OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS OR 22ANY OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS OR
23MODIFICATIONS. 23MODIFICATIONS.
24 24
25IN NO EVENT SHALL ANY LICENSOR BE LIABLE TO ANY PARTY FOR DIRECT, 25IN NO EVENT SHALL ANY LICENSOR BE LIABLE TO ANY PARTY FOR DIRECT,
26INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOST PROFITS ARISING OUT 26INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOST PROFITS ARISING OUT
27OF THE USE OF THIS SOFTWARE EVEN IF ADVISED OF THE POSSIBILITY OF SUCH 27OF THE USE OF THIS SOFTWARE EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
28DAMAGE. 28DAMAGE.
29 29
30EACH LICENSOR SPECIFICALLY DISCLAIMS ANY WARRANTIES, EXPRESS OR IMPLIED, 30EACH LICENSOR SPECIFICALLY DISCLAIMS ANY WARRANTIES, EXPRESS OR IMPLIED,
31INCLUDING BUT NOT LIMITED TO ANY WARRANTY OF NONINFRINGEMENT OR THE 31INCLUDING BUT NOT LIMITED TO ANY WARRANTY OF NONINFRINGEMENT OR THE
32IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 32IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
33PURPOSE. 33PURPOSE.
34 34
35The software is provided with RESTRICTED RIGHTS. Use, duplication, or 35The software is provided with RESTRICTED RIGHTS. Use, duplication, or
36disclosure by the government are subject to restrictions set forth in 36disclosure by the government are subject to restrictions set forth in
37DFARS 252.227-7013 or 48 CFR 52.227-19, as applicable. 37DFARS 252.227-7013 or 48 CFR 52.227-19, as applicable.
38 38
39***************************************************************************/ 39***************************************************************************/
40 40
41/* 41/*
42 * src: vcc.c 42 * src: vcc.c
43 * doc: Parser for vCard and vCalendar. Note that this code is 43 * doc: Parser for vCard and vCalendar. Note that this code is
44 * generated by a yacc parser generator. Generally it should not 44 * generated by a yacc parser generator. Generally it should not
45 * be edited by hand. The real source is vcc.y. The #line directives 45 * be edited by hand. The real source is vcc.y. The #line directives
46 * can be commented out here to make it easier to trace through 46 * can be commented out here to make it easier to trace through
47 * in a debugger. However, if a bug is found it should 47 * in a debugger. However, if a bug is found it should
48 * be fixed in vcc.y and this file regenerated. 48 * be fixed in vcc.y and this file regenerated.
49 */ 49 */
50 50
51 51
52/* debugging utilities */ 52/* debugging utilities */
53#if __DEBUG 53#if __DEBUG
54#define DBG_(x) printf x 54#define DBG_(x) printf x
55#else 55#else
56#define DBG_(x) 56#define DBG_(x)
57#endif 57#endif
58 58
59/**** External Functions ****/ 59/**** External Functions ****/
60 60
61/* assign local name to parser variables and functions so that 61/* assign local name to parser variables and functions so that
62 we can use more than one yacc based parser. 62 we can use more than one yacc based parser.
63*/ 63*/
64 64
65#if 0 65#if 0
66#define yyparse mime_parse 66#define yyparse mime_parse
67#define yylex mime_lex 67#define yylex mime_lex
68#define yyerror mime_error 68#define yyerror mime_error
69#define yychar mime_char 69#define yychar mime_char
70/* #define p_yyval p_mime_val */ 70/* #define p_yyval p_mime_val */
71#undef yyval 71#undef yyval
72#define yyval mime_yyval 72#define yyval mime_yyval
73/* #define p_yylval p_mime_lval */ 73/* #define p_yylval p_mime_lval */
74#undef yylval 74#undef yylval
75#define yylval mime_yylval 75#define yylval mime_yylval
76#define yydebug mime_debug 76#define yydebug mime_debug
77#define yynerrs mime_nerrs 77#define yynerrs mime_nerrs
78#define yyerrflag mime_errflag 78#define yyerrflag mime_errflag
79#define yyss mime_ss 79#define yyss mime_ss
80#define yyssp mime_ssp 80#define yyssp mime_ssp
81#define yyvs mime_vs 81#define yyvs mime_vs
82#define yyvsp mime_vsp 82#define yyvsp mime_vsp
83#define yylhs mime_lhs 83#define yylhs mime_lhs
84#define yylen mime_len 84#define yylen mime_len
85#define yydefred mime_defred 85#define yydefred mime_defred
86#define yydgoto mime_dgoto 86#define yydgoto mime_dgoto
87#define yysindex mime_sindex 87#define yysindex mime_sindex
88#define yyrindex mime_rindex 88#define yyrindex mime_rindex
89#define yygindex mime_gindex 89#define yygindex mime_gindex
90#define yytable mime_table 90#define yytable mime_table
91#define yycheck mime_check 91#define yycheck mime_check
92#define yyname mime_name 92#define yyname mime_name
93#define yyrule mime_rule 93#define yyrule mime_rule
94#ifdef YYPREFIX 94#ifdef YYPREFIX
95#undef YYPREFIX 95#undef YYPREFIX
96#endif 96#endif
97#define YYPREFIX "mime_" 97#define YYPREFIX "mime_"
98#endif 98#endif
99 99
100 100
101#ifndef _NO_LINE_FOLDING 101#ifndef _NO_LINE_FOLDING
102#define _SUPPORT_LINE_FOLDING 1 102#define _SUPPORT_LINE_FOLDING 1
103#endif 103#endif
104 104
105/* undef below if compile with MFC */ 105/* undef below if compile with MFC */
106/* #define INCLUDEMFC 1 */ 106/* #define INCLUDEMFC 1 */
107 107
108#if defined(WIN32) || defined(_WIN32) 108#if defined(WIN32) || defined(_WIN32)
109#ifdef INCLUDEMFC 109#ifdef INCLUDEMFC
110#include <afx.h> 110#include <afx.h>
111#endif 111#endif
112#endif 112#endif
113 113
114#include <string.h> 114#include <string.h>
115#ifndef __MWERKS__ 115#ifndef __MWERKS__
116#include <stdlib.h> 116#include <stdlib.h>
117#endif 117#endif
118#include <stdio.h> 118#include <stdio.h>
119#include <stdlib.h> 119#include <stdlib.h>
120#include <ctype.h> 120#include <ctype.h>
121 121
122//#ifdef PALMTOPCENTER 122//#ifdef PALMTOPCENTER
123//#include <qpe/vobject_p.h> 123//#include <qpe/vobject_p.h>
124//#else 124//#else
125#include "vobject_p.h" 125#include "vobject_p.h"
126//#endif 126//#endif
127 127
128/**** Types, Constants ****/ 128/**** Types, Constants ****/
129 129
130 #define YYDEBUG 0/* 1 to compile in some debugging code */ 130 #define YYDEBUG 0/* 1 to compile in some debugging code */
131 #define MAXTOKEN 256/* maximum token (line) length */ 131 #define MAXTOKEN 256/* maximum token (line) length */
132 #define YYSTACKSIZE 100// ~unref ? 132 #define YYSTACKSIZE 100// ~unref ?
133 #define MAXLEVEL 10/* max # of nested objects parseable */ 133 #define MAXLEVEL 10/* max # of nested objects parseable */
134 /* (includes outermost) */ 134 /* (includes outermost) */
135 135
136 136
137/**** Global Variables ****/ 137/**** Global Variables ****/
138int mime_lineNum, mime_numErrors; /* yyerror() can use these */ 138int mime_lineNum, mime_numErrors; /* yyerror() can use these */
139static VObject* vObjList; 139static VObject* vObjList;
140static VObject *curProp; 140static VObject *curProp;
141static VObject *curObj; 141static VObject *curObj;
142static VObject* ObjStack[MAXLEVEL]; 142static VObject* ObjStack[MAXLEVEL];
143static int ObjStackTop; 143static int ObjStackTop;
144 144
145 145
146/* A helpful utility for the rest of the app. */ 146/* A helpful utility for the rest of the app. */
147#if __CPLUSPLUS__ 147#if __CPLUSPLUS__
148extern "C" { 148extern "C" {
149#endif 149#endif
150 150
151 extern void yyerror(char *s); 151 extern void yyerror(char *s);
152 152
153#if __CPLUSPLUS__ 153#if __CPLUSPLUS__
154 }; 154 };
155#endif 155#endif
156 156
157int yyparse(); 157int yyparse();
158 158
159enum LexMode { 159enum LexMode {
160 L_NORMAL, 160 L_NORMAL,
161 L_VCARD, 161 L_VCARD,
162 L_VCAL, 162 L_VCAL,
163 L_VEVENT, 163 L_VEVENT,
164 L_VTODO, 164 L_VTODO,
165 L_VALUES, 165 L_VALUES,
166 L_BASE64, 166 L_BASE64,
167 L_QUOTED_PRINTABLE 167 L_QUOTED_PRINTABLE
168 }; 168 };
169 169
170/**** Private Forward Declarations ****/ 170/**** Private Forward Declarations ****/
171static int pushVObject(const char *prop); 171static int pushVObject(const char *prop);
172static VObject* popVObject(); 172static VObject* popVObject();
173static void lexPopMode(int top); 173static void lexPopMode(int top);
174static int lexWithinMode(enum LexMode mode); 174static int lexWithinMode(enum LexMode mode);
175static void lexPushMode(enum LexMode mode); 175static void lexPushMode(enum LexMode mode);
176static void enterProps(const char *s); 176static void enterProps(const char *s);
177static void enterAttr(const char *s1, const char *s2); 177static void enterAttr(const char *s1, const char *s2);
178static void enterValues(const char *value); 178static void enterValues(const char *value);
179#define mime_error yyerror 179#define mime_error yyerror
180void mime_error(char *s); 180void mime_error(char *s);
181void mime_error_(char *s); 181void mime_error_(char *s);
182 182
183%} 183%}
184 184
185/***************************************************************************/ 185/***************************************************************************/
186/*** The grammar ****/ 186/*** The grammar ****/
187/***************************************************************************/ 187/***************************************************************************/
188 188
189%union { 189%union {
190 char *str; 190 char *str;
191 VObject *vobj; 191 VObject *vobj;
192 } 192 }
193 193
194%token 194%token
195 EQ COLON DOT SEMICOLON SPACE HTAB LINESEP NEWLINE 195 EQ COLON DOT SEMICOLON SPACE HTAB LINESEP NEWLINE
196 BEGIN_VCARD END_VCARD BEGIN_VCAL END_VCAL 196 BEGIN_VCARD END_VCARD BEGIN_VCAL END_VCAL
197 BEGIN_VEVENT END_VEVENT BEGIN_VTODO END_VTODO 197 BEGIN_VEVENT END_VEVENT BEGIN_VTODO END_VTODO
198 ID 198 ID
199 199
200/* 200/*
201 * NEWLINE is the token that would occur outside a vCard, 201 * NEWLINE is the token that would occur outside a vCard,
202 * while LINESEP is the token that would occur inside a vCard. 202 * while LINESEP is the token that would occur inside a vCard.
203 */ 203 */
204 204
205%token <str> 205%token <str>
206 STRING ID 206 STRING ID
207 207
208%type <str> name value 208%type <str> name value
209 209
210%type <vobj> vcard vcal vobject 210%type <vobj> vcard vcal vobject
211 211
212%start mime 212%start mime
213 213
214%% 214%%
215 215
216 216
217mime: vobjects 217mime: vobjects
218 ; 218 ;
219 219
220vobjects: vobjects vobject 220vobjects: vobjects vobject
221 { addList(&vObjList, $2); curObj = 0; } 221 { addList(&vObjList, $2); curObj = 0; }
222 | vobject 222 | vobject
223 { addList(&vObjList, $1); curObj = 0; } 223 { addList(&vObjList, $1); curObj = 0; }
224 ; 224 ;
225 225
226vobject: vcard 226vobject: vcard
227 | vcal 227 | vcal
228 ; 228 ;
229 229
230vcard: 230vcard:
231 BEGIN_VCARD 231 BEGIN_VCARD
232 { 232 {
233 lexPushMode(L_VCARD); 233 lexPushMode(L_VCARD);
234 if (!pushVObject(VCCardProp)) YYERROR; 234 if (!pushVObject(VCCardProp)) YYERROR;
235 } 235 }
236 items END_VCARD 236 items END_VCARD
237 { 237 {
238 lexPopMode(0); 238 lexPopMode(0);
239 $$ = popVObject(); 239 $$ = popVObject();
240 } 240 }
241 | BEGIN_VCARD 241 | BEGIN_VCARD
242 { 242 {
243 lexPushMode(L_VCARD); 243 lexPushMode(L_VCARD);
244 if (!pushVObject(VCCardProp)) YYERROR; 244 if (!pushVObject(VCCardProp)) YYERROR;
245 } 245 }
246 END_VCARD 246 END_VCARD
247 { 247 {
248 lexPopMode(0); 248 lexPopMode(0);
249 $$ = popVObject(); 249 $$ = popVObject();
250 } 250 }
251 ; 251 ;
252 252
253items: items item 253items: items item
254 | item 254 | item
255 ; 255 ;
256 256
257item: prop COLON 257item: prop COLON
258 { 258 {
259 lexPushMode(L_VALUES); 259 lexPushMode(L_VALUES);
260 } 260 }
261 values LINESEP 261 values LINESEP
262 { 262 {
263 if (lexWithinMode(L_BASE64) || lexWithinMode(L_QUOTED_PRINTABLE)) 263 if (lexWithinMode(L_BASE64) || lexWithinMode(L_QUOTED_PRINTABLE))
264 lexPopMode(0); 264 lexPopMode(0);
265 lexPopMode(0); 265 lexPopMode(0);
266 } 266 }
267 | error 267 | error
268 ; 268 ;
269 269
270prop: name 270prop: name
271 { 271 {
272 enterProps($1); 272 enterProps($1);
273 } 273 }
274 attr_params 274 attr_params
275 | name 275 | name
276 { 276 {
277 enterProps($1); 277 enterProps($1);
278 } 278 }
279 ; 279 ;
280 280
281attr_params: attr_params attr_param 281attr_params: attr_params attr_param
282 | attr_param 282 | attr_param
283 ; 283 ;
284 284
285attr_param: SEMICOLON attr 285attr_param: SEMICOLON attr
286 ; 286 ;
287 287
288attr: name 288attr: name
289 { 289 {
290 enterAttr($1,0); 290 enterAttr($1,0);
291 } 291 }
292 | name EQ name 292 | name EQ name
293 { 293 {
294 enterAttr($1,$3); 294 enterAttr($1,$3);
295 295
296 } 296 }
297 ; 297 ;
298 298
299name: ID 299name: ID
300 ; 300 ;
301 301
302values: value SEMICOLON { enterValues($1); } values 302values: value SEMICOLON { enterValues($1); } values
303 | value 303 | value
304 { enterValues($1); } 304 { enterValues($1); }
305 ; 305 ;
306 306
307value: STRING 307value: STRING
308 | 308 |
309 { $$ = 0; } 309 { $$ = 0; }
310 ; 310 ;
311 311
312vcal: 312vcal:
313 BEGIN_VCAL 313 BEGIN_VCAL
314 { if (!pushVObject(VCCalProp)) YYERROR; } 314 { if (!pushVObject(VCCalProp)) YYERROR; }
315 calitems 315 calitems
316 END_VCAL 316 END_VCAL
317 { $$ = popVObject(); } 317 { $$ = popVObject(); }
318 | BEGIN_VCAL 318 | BEGIN_VCAL
319 { if (!pushVObject(VCCalProp)) YYERROR; } 319 { if (!pushVObject(VCCalProp)) YYERROR; }
320 END_VCAL 320 END_VCAL
321 { $$ = popVObject(); } 321 { $$ = popVObject(); }
322 ; 322 ;
323 323
324calitems: calitems calitem 324calitems: calitems calitem
325 | calitem 325 | calitem
326 ; 326 ;
327 327
328calitem: 328calitem:
329 eventitem 329 eventitem
330 | todoitem 330 | todoitem
331 | items 331 | items
332 ; 332 ;
333 333
334eventitem: 334eventitem:
335 BEGIN_VEVENT 335 BEGIN_VEVENT
336 { 336 {
337 lexPushMode(L_VEVENT); 337 lexPushMode(L_VEVENT);
338 if (!pushVObject(VCEventProp)) YYERROR; 338 if (!pushVObject(VCEventProp)) YYERROR;
339 } 339 }
340 items 340 items
341 END_VEVENT 341 END_VEVENT
342 { 342 {
343 lexPopMode(0); 343 lexPopMode(0);
344 popVObject(); 344 popVObject();
345 } 345 }
346 | BEGIN_VEVENT 346 | BEGIN_VEVENT
347 { 347 {
348 lexPushMode(L_VEVENT); 348 lexPushMode(L_VEVENT);
349 if (!pushVObject(VCEventProp)) YYERROR; 349 if (!pushVObject(VCEventProp)) YYERROR;
350 } 350 }
351 END_VEVENT 351 END_VEVENT
352 { 352 {
353 lexPopMode(0); 353 lexPopMode(0);
354 popVObject(); 354 popVObject();
355 } 355 }
356 ; 356 ;
357 357
358todoitem: 358todoitem:
359 BEGIN_VTODO 359 BEGIN_VTODO
360 { 360 {
361 lexPushMode(L_VTODO); 361 lexPushMode(L_VTODO);
362 if (!pushVObject(VCTodoProp)) YYERROR; 362 if (!pushVObject(VCTodoProp)) YYERROR;
363 } 363 }
364 items 364 items
365 END_VTODO 365 END_VTODO
366 { 366 {
367 lexPopMode(0); 367 lexPopMode(0);
368 popVObject(); 368 popVObject();
369 } 369 }
370 | BEGIN_VTODO 370 | BEGIN_VTODO
371 { 371 {
372 lexPushMode(L_VTODO); 372 lexPushMode(L_VTODO);
373 if (!pushVObject(VCTodoProp)) YYERROR; 373 if (!pushVObject(VCTodoProp)) YYERROR;
374 } 374 }
375 END_VTODO 375 END_VTODO
376 { 376 {
377 lexPopMode(0); 377 lexPopMode(0);
378 popVObject(); 378 popVObject();
379 } 379 }
380 ; 380 ;
381 381
382%% 382%%
383/*------------------------------------*/ 383/*------------------------------------*/
384static int pushVObject(const char *prop) 384static int pushVObject(const char *prop)
385 { 385 {
386 VObject *newObj; 386 VObject *newObj;
387 if (ObjStackTop == MAXLEVEL) 387 if (ObjStackTop == MAXLEVEL)
388 return FALSE; 388 return FALSE;
389 389
390 ObjStack[++ObjStackTop] = curObj; 390 ObjStack[++ObjStackTop] = curObj;
391 391
392 if (curObj) { 392 if (curObj) {
393 newObj = addProp(curObj,prop); 393 newObj = addProp(curObj,prop);
394 curObj = newObj; 394 curObj = newObj;
395 } 395 }
396 else 396 else
397 curObj = newVObject(prop); 397 curObj = newVObject(prop);
398 398
399 return TRUE; 399 return TRUE;
400 } 400 }
401 401
402 402
403/*---------------------------------------*/ 403/*---------------------------------------*/
404/* This pops the recently built vCard off the stack and returns it. */ 404/* This pops the recently built vCard off the stack and returns it. */
405static VObject* popVObject() 405static VObject* popVObject()
406 { 406 {
407 VObject *oldObj; 407 VObject *oldObj;
408 if (ObjStackTop < 0) { 408 if (ObjStackTop < 0) {
409 yyerror("pop on empty Object Stack\n"); 409 yyerror("pop on empty Object Stack\n");
410 return 0; 410 return 0;
411 } 411 }
412 oldObj = curObj; 412 oldObj = curObj;
413 curObj = ObjStack[ObjStackTop--]; 413 curObj = ObjStack[ObjStackTop--];
414 414
415 return oldObj; 415 return oldObj;
416 } 416 }
417 417
418 418
419static void enterValues(const char *value) 419static void enterValues(const char *value)
420 { 420 {
421 if (fieldedProp && *fieldedProp) { 421 if (fieldedProp && *fieldedProp) {
422 if (value) { 422 if (value) {
423 addPropValue(curProp,*fieldedProp,value); 423 addPropValue(curProp,*fieldedProp,value);
424 } 424 }
425 /* else this field is empty, advance to next field */ 425 /* else this field is empty, advance to next field */
426 fieldedProp++; 426 fieldedProp++;
427 } 427 }
428 else { 428 else {
429 if (value) { 429 if (value) {
430 setVObjectStringZValue_(curProp,strdup( value )); 430 setVObjectStringZValue_(curProp,strdup( value ));
431 } 431 }
432 } 432 }
433 deleteStr(value); 433 deleteStr(value);
434 } 434 }
435 435
436static void enterProps(const char *s) 436static void enterProps(const char *s)
437 { 437 {
438 curProp = addGroup(curObj,s); 438 curProp = addGroup(curObj,s);
439 deleteStr(s); 439 deleteStr(s);
440 } 440 }
441 441
442static void enterAttr(const char *s1, const char *s2) 442static void enterAttr(const char *s1, const char *s2)
443 { 443 {
444 const char *p1, *p2; 444 const char *p1, *p2;
445 p1 = lookupProp_(s1); 445 p1 = lookupProp_(s1);
446 if (s2) { 446 if (s2) {
447 VObject *a; 447 VObject *a;
448 p2 = lookupProp_(s2); 448 p2 = lookupProp_(s2);
449 a = addProp(curProp,p1); 449 a = addProp(curProp,p1);
450 setVObjectStringZValue(a,p2); 450 setVObjectStringZValue(a,p2);
451 } 451 }
452 else 452 else
453 addProp(curProp,p1); 453 addProp(curProp,p1);
454 if (qstricmp(p1,VCBase64Prop) == 0 || (s2 && qstricmp(p2,VCBase64Prop)==0)) 454 if (qstricmp(p1,VCBase64Prop) == 0 || (s2 && qstricmp(p2,VCBase64Prop)==0))
455 lexPushMode(L_BASE64); 455 lexPushMode(L_BASE64);
456 else if (qstricmp(p1,VCQuotedPrintableProp) == 0 456 else if (qstricmp(p1,VCQuotedPrintableProp) == 0
457 || (s2 && qstricmp(p2,VCQuotedPrintableProp)==0)) 457 || (s2 && qstricmp(p2,VCQuotedPrintableProp)==0))
458 lexPushMode(L_QUOTED_PRINTABLE); 458 lexPushMode(L_QUOTED_PRINTABLE);
459 deleteStr(s1); deleteStr(s2); 459 deleteStr(s1); deleteStr(s2);
460 } 460 }
461 461
462 462
463#define MAX_LEX_LOOKAHEAD_0 32 463#define MAX_LEX_LOOKAHEAD_0 32
464#define MAX_LEX_LOOKAHEAD 64 464#define MAX_LEX_LOOKAHEAD 64
465#define MAX_LEX_MODE_STACK_SIZE 10 465#define MAX_LEX_MODE_STACK_SIZE 10
466#define LEXMODE() (lexBuf.lexModeStack[lexBuf.lexModeStackTop]) 466#define LEXMODE() (lexBuf.lexModeStack[lexBuf.lexModeStackTop])
467 467
468struct LexBuf { 468struct LexBuf {
469 /* input */ 469 /* input */
470#ifdef INCLUDEMFC 470#ifdef INCLUDEMFC
471 CFile *inputFile; 471 CFile *inputFile;
472#else 472#else
473 FILE *inputFile; 473 FILE *inputFile;
474#endif 474#endif
475 char *inputString; 475 char *inputString;
476 unsigned long curPos; 476 unsigned long curPos;
477 unsigned long inputLen; 477 unsigned long inputLen;
478 /* lookahead buffer */ 478 /* lookahead buffer */
479 /* -- lookahead buffer is short instead of char so that EOF 479 /* -- lookahead buffer is short instead of char so that EOF
480 / can be represented correctly. 480 / can be represented correctly.
481 */ 481 */
482 unsigned long len; 482 unsigned long len;
483 short buf[MAX_LEX_LOOKAHEAD]; 483 short buf[MAX_LEX_LOOKAHEAD];
484 unsigned long getPtr; 484 unsigned long getPtr;
485 /* context stack */ 485 /* context stack */
486 unsigned long lexModeStackTop; 486 unsigned long lexModeStackTop;
487 enum LexMode lexModeStack[MAX_LEX_MODE_STACK_SIZE]; 487 enum LexMode lexModeStack[MAX_LEX_MODE_STACK_SIZE];
488 /* token buffer */ 488 /* token buffer */
489 unsigned long maxToken; 489 unsigned long maxToken;
490 char *strs; 490 char *strs;
491 unsigned long strsLen; 491 unsigned long strsLen;
492 } lexBuf; 492 } lexBuf;
493 493
494static void lexPushMode(enum LexMode mode) 494static void lexPushMode(enum LexMode mode)
495 { 495 {
496 if (lexBuf.lexModeStackTop == (MAX_LEX_MODE_STACK_SIZE-1)) 496 if (lexBuf.lexModeStackTop == (MAX_LEX_MODE_STACK_SIZE-1))
497 yyerror("lexical context stack overflow"); 497 yyerror("lexical context stack overflow");
498 else { 498 else {
499 lexBuf.lexModeStack[++lexBuf.lexModeStackTop] = mode; 499 lexBuf.lexModeStack[++lexBuf.lexModeStackTop] = mode;
500 } 500 }
501 } 501 }
502 502
503static void lexPopMode(int top) 503static void lexPopMode(int top)
504 { 504 {
505 /* special case of pop for ease of error recovery -- this 505 /* special case of pop for ease of error recovery -- this
506 version will never underflow */ 506 version will never underflow */
507 if (top) 507 if (top)
508 lexBuf.lexModeStackTop = 0; 508 lexBuf.lexModeStackTop = 0;
509 else 509 else
510 if (lexBuf.lexModeStackTop > 0) lexBuf.lexModeStackTop--; 510 if (lexBuf.lexModeStackTop > 0) lexBuf.lexModeStackTop--;
511 } 511 }
512 512
513static int lexWithinMode(enum LexMode mode) { 513static int lexWithinMode(enum LexMode mode) {
514 unsigned long i; 514 unsigned long i;
515 for (i=0;i<lexBuf.lexModeStackTop;i++) 515 for (i=0;i<lexBuf.lexModeStackTop;i++)
516 if (mode == lexBuf.lexModeStack[i]) return 1; 516 if (mode == lexBuf.lexModeStack[i]) return 1;
517 return 0; 517 return 0;
518 } 518 }
519 519
520static int lexGetc_() 520static int lexGetc_()
521 { 521 {
522 /* get next char from input, no buffering. */ 522 /* get next char from input, no buffering. */
523 if (lexBuf.curPos == lexBuf.inputLen) 523 if (lexBuf.curPos == lexBuf.inputLen)
524 return EOF; 524 return EOF;
525 else if (lexBuf.inputString) 525 else if (lexBuf.inputString)
526 return *(lexBuf.inputString + lexBuf.curPos++); 526 return *(lexBuf.inputString + lexBuf.curPos++);
527 else { 527 else {
528#ifdef INCLUDEMFC 528#ifdef INCLUDEMFC
529 char result; 529 char result;
530 return lexBuf.inputFile->Read(&result, 1) == 1 ? result : EOF; 530 return lexBuf.inputFile->Read(&result, 1) == 1 ? result : EOF;
531#else 531#else
532 return fgetc(lexBuf.inputFile); 532 return fgetc(lexBuf.inputFile);
533#endif 533#endif
534 } 534 }
535 } 535 }
536 536
537static int lexGeta() 537static int lexGeta()
538 { 538 {
539 ++lexBuf.len; 539 ++lexBuf.len;
540 return (lexBuf.buf[lexBuf.getPtr] = lexGetc_()); 540 return (lexBuf.buf[lexBuf.getPtr] = lexGetc_());
541 } 541 }
542 542
543static int lexGeta_(int i) 543static int lexGeta_(int i)
544 { 544 {
545 ++lexBuf.len; 545 ++lexBuf.len;
546 return (lexBuf.buf[(lexBuf.getPtr+i)%MAX_LEX_LOOKAHEAD] = lexGetc_()); 546 return (lexBuf.buf[(lexBuf.getPtr+i)%MAX_LEX_LOOKAHEAD] = lexGetc_());
547 } 547 }
548 548
549static void lexSkipLookahead() { 549static void lexSkipLookahead() {
550 if (lexBuf.len > 0 && lexBuf.buf[lexBuf.getPtr]!=EOF) { 550 if (lexBuf.len > 0 && lexBuf.buf[lexBuf.getPtr]!=EOF) {
551 /* don't skip EOF. */ 551 /* don't skip EOF. */
552 lexBuf.getPtr = (lexBuf.getPtr + 1) % MAX_LEX_LOOKAHEAD; 552 lexBuf.getPtr = (lexBuf.getPtr + 1) % MAX_LEX_LOOKAHEAD;
553 lexBuf.len--; 553 lexBuf.len--;
554 } 554 }
555 } 555 }
556 556
557static int lexLookahead() { 557static int lexLookahead() {
558 int c = (lexBuf.len)? 558 int c = (lexBuf.len)?
559 lexBuf.buf[lexBuf.getPtr]: 559 lexBuf.buf[lexBuf.getPtr]:
560 lexGeta(); 560 lexGeta();
561 /* do the \r\n -> \n or \r -> \n translation here */ 561 /* do the \r\n -> \n or \r -> \n translation here */
562 if (c == '\r') { 562 if (c == '\r') {
563 int a = (lexBuf.len>1)? 563 int a = (lexBuf.len>1)?
564 lexBuf.buf[(lexBuf.getPtr+1)%MAX_LEX_LOOKAHEAD]: 564 lexBuf.buf[(lexBuf.getPtr+1)%MAX_LEX_LOOKAHEAD]:
565 lexGeta_(1); 565 lexGeta_(1);
566 if (a == '\n') { 566 if (a == '\n') {
567 lexSkipLookahead(); 567 lexSkipLookahead();
568 } 568 }
569 lexBuf.buf[lexBuf.getPtr] = c = '\n'; 569 lexBuf.buf[lexBuf.getPtr] = c = '\n';
570 } 570 }
571 else if (c == '\n') { 571 else if (c == '\n') {
572 int a = (lexBuf.len>1)? 572 int a = (lexBuf.len>1)?
573 lexBuf.buf[lexBuf.getPtr+1]: 573 lexBuf.buf[lexBuf.getPtr+1]:
574 lexGeta_(1); 574 lexGeta_(1);
575 if (a == '\r') { 575 if (a == '\r') {
576 lexSkipLookahead(); 576 lexSkipLookahead();
577 } 577 }
578 lexBuf.buf[lexBuf.getPtr] = '\n'; 578 lexBuf.buf[lexBuf.getPtr] = '\n';
579 } 579 }
580 return c; 580 return c;
581 } 581 }
582 582
583static int lexGetc() { 583static int lexGetc() {
584 int c = lexLookahead(); 584 int c = lexLookahead();
585 if (lexBuf.len > 0 && lexBuf.buf[lexBuf.getPtr]!=EOF) { 585 if (lexBuf.len > 0 && lexBuf.buf[lexBuf.getPtr]!=EOF) {
586 /* EOF will remain in lookahead buffer */ 586 /* EOF will remain in lookahead buffer */
587 lexBuf.getPtr = (lexBuf.getPtr + 1) % MAX_LEX_LOOKAHEAD; 587 lexBuf.getPtr = (lexBuf.getPtr + 1) % MAX_LEX_LOOKAHEAD;
588 lexBuf.len--; 588 lexBuf.len--;
589 } 589 }
590 return c; 590 return c;
591 } 591 }
592 592
593static void lexSkipLookaheadWord() { 593static void lexSkipLookaheadWord() {
594 if (lexBuf.strsLen <= lexBuf.len) { 594 if (lexBuf.strsLen <= lexBuf.len) {
595 lexBuf.len -= lexBuf.strsLen; 595 lexBuf.len -= lexBuf.strsLen;
596 lexBuf.getPtr = (lexBuf.getPtr + lexBuf.strsLen) % MAX_LEX_LOOKAHEAD; 596 lexBuf.getPtr = (lexBuf.getPtr + lexBuf.strsLen) % MAX_LEX_LOOKAHEAD;
597 } 597 }
598 } 598 }
599 599
600static void lexClearToken() 600static void lexClearToken()
601 { 601 {
602 lexBuf.strsLen = 0; 602 lexBuf.strsLen = 0;
603 } 603 }
604 604
605static void lexAppendc(int c) 605static void lexAppendc(int c)
606 { 606 {
607 lexBuf.strs[lexBuf.strsLen] = c; 607 lexBuf.strs[lexBuf.strsLen] = c;
608 /* append up to zero termination */ 608 /* append up to zero termination */
609 if (c == 0) return; 609 if (c == 0) return;
610 lexBuf.strsLen++; 610 lexBuf.strsLen++;
611 if (lexBuf.strsLen > lexBuf.maxToken) { 611 if (lexBuf.strsLen > lexBuf.maxToken) {
612 /* double the token string size */ 612 /* double the token string size */
613 lexBuf.maxToken <<= 1; 613 lexBuf.maxToken <<= 1;
614 lexBuf.strs = (char*) realloc(lexBuf.strs,(size_t)lexBuf.maxToken); 614 lexBuf.strs = (char*) realloc(lexBuf.strs,(size_t)lexBuf.maxToken);
615 } 615 }
616 } 616 }
617 617
618static char* lexStr() { 618static char* lexStr() {
619 return dupStr(lexBuf.strs,(size_t)lexBuf.strsLen+1); 619 return dupStr(lexBuf.strs,(size_t)lexBuf.strsLen+1);
620 } 620 }
621 621
622static void lexSkipWhite() { 622static void lexSkipWhite() {
623 int c = lexLookahead(); 623 int c = lexLookahead();
624 while (c == ' ' || c == '\t') { 624 while (c == ' ' || c == '\t') {
625 lexSkipLookahead(); 625 lexSkipLookahead();
626 c = lexLookahead(); 626 c = lexLookahead();
627 } 627 }
628 } 628 }
629 629
630static char* lexGetWord() { 630static char* lexGetWord() {
631 int c; 631 int c;
632 lexSkipWhite(); 632 lexSkipWhite();
633 lexClearToken(); 633 lexClearToken();
634 c = lexLookahead(); 634 c = lexLookahead();
635 while (c != EOF && !strchr("\t\n ;:=",c)) { 635 while (c != EOF && !strchr("\t\n ;:=",c)) {
636 lexAppendc(c); 636 lexAppendc(c);
637 lexSkipLookahead(); 637 lexSkipLookahead();
638 c = lexLookahead(); 638 c = lexLookahead();
639 } 639 }
640 lexAppendc(0); 640 lexAppendc(0);
641 return lexStr(); 641 return lexStr();
642 } 642 }
643 643
644static void lexPushLookaheadc(int c) { 644static void lexPushLookaheadc(int c) {
645 int putptr; 645 int putptr;
646 /* can't putback EOF, because it never leaves lookahead buffer */ 646 /* can't putback EOF, because it never leaves lookahead buffer */
647 if (c == EOF) return; 647 if (c == EOF) return;
648 putptr = (int)lexBuf.getPtr - 1; 648 putptr = (int)lexBuf.getPtr - 1;
649 if (putptr < 0) putptr += MAX_LEX_LOOKAHEAD; 649 if (putptr < 0) putptr += MAX_LEX_LOOKAHEAD;
650 lexBuf.getPtr = putptr; 650 lexBuf.getPtr = putptr;
651 lexBuf.buf[putptr] = c; 651 lexBuf.buf[putptr] = c;
652 lexBuf.len += 1; 652 lexBuf.len += 1;
653 } 653 }
654 654
655static char* lexLookaheadWord() { 655static char* lexLookaheadWord() {
656 /* this function can lookahead word with max size of MAX_LEX_LOOKAHEAD_0 656 /* this function can lookahead word with max size of MAX_LEX_LOOKAHEAD_0
657 / and thing bigger than that will stop the lookahead and return 0; 657 / and thing bigger than that will stop the lookahead and return 0;
658 / leading white spaces are not recoverable. 658 / leading white spaces are not recoverable.
659 */ 659 */
660 int c; 660 int c;
661 int len = 0; 661 int len = 0;
662 int curgetptr = 0; 662 int curgetptr = 0;
663 lexSkipWhite(); 663 lexSkipWhite();
664 lexClearToken(); 664 lexClearToken();
665 curgetptr = (int)lexBuf.getPtr;// remember! 665 curgetptr = (int)lexBuf.getPtr;// remember!
666 while (len < (MAX_LEX_LOOKAHEAD_0)) { 666 while (len < (MAX_LEX_LOOKAHEAD_0)) {
667 c = lexGetc(); 667 c = lexGetc();
668 len++; 668 len++;
669 if (c == EOF || strchr("\t\n ;:=", c)) { 669 if (c == EOF || strchr("\t\n ;:=", c)) {
670 lexAppendc(0); 670 lexAppendc(0);
671 /* restore lookahead buf. */ 671 /* restore lookahead buf. */
672 lexBuf.len += len; 672 lexBuf.len += len;
673 lexBuf.getPtr = curgetptr; 673 lexBuf.getPtr = curgetptr;
674 return lexStr(); 674 return lexStr();
675 } 675 }
676 else 676 else
677 lexAppendc(c); 677 lexAppendc(c);
678 } 678 }
679 lexBuf.len += len;/* char that has been moved to lookahead buffer */ 679 lexBuf.len += len;/* char that has been moved to lookahead buffer */
680 lexBuf.getPtr = curgetptr; 680 lexBuf.getPtr = curgetptr;
681 return 0; 681 return 0;
682 } 682 }
683 683
684#ifdef _SUPPORT_LINE_FOLDING 684#ifdef _SUPPORT_LINE_FOLDING
685static void handleMoreRFC822LineBreak(int c) { 685static void handleMoreRFC822LineBreak(int c) {
686 /* suport RFC 822 line break in cases like 686 /* suport RFC 822 line break in cases like
687 *ADR: foo; 687 *ADR: foo;
688 * morefoo; 688 * morefoo;
689 * more foo; 689 * more foo;
690 */ 690 */
691 if (c == ';') { 691 if (c == ';') {
692 int a; 692 int a;
693 lexSkipLookahead(); 693 lexSkipLookahead();
694 /* skip white spaces */ 694 /* skip white spaces */
695 a = lexLookahead(); 695 a = lexLookahead();
696 while (a == ' ' || a == '\t') { 696 while (a == ' ' || a == '\t') {
697 lexSkipLookahead(); 697 lexSkipLookahead();
698 a = lexLookahead(); 698 a = lexLookahead();
699 } 699 }
700 if (a == '\n') { 700 if (a == '\n') {
701 lexSkipLookahead(); 701 lexSkipLookahead();
702 a = lexLookahead(); 702 a = lexLookahead();
703 if (a == ' ' || a == '\t') { 703 if (a == ' ' || a == '\t') {
704 /* continuation, throw away all the \n and spaces read so 704 /* continuation, throw away all the \n and spaces read so
705 * far 705 * far
706 */ 706 */
707 lexSkipWhite(); 707 lexSkipWhite();
708 lexPushLookaheadc(';'); 708 lexPushLookaheadc(';');
709 } 709 }
710 else { 710 else {
711 lexPushLookaheadc('\n'); 711 lexPushLookaheadc('\n');
712 lexPushLookaheadc(';'); 712 lexPushLookaheadc(';');
713 } 713 }
714 } 714 }
715 else { 715 else {
716 lexPushLookaheadc(';'); 716 lexPushLookaheadc(';');
717 } 717 }
718 } 718 }
719 } 719 }
720 720
721static char* lexGet1Value() { 721static char* lexGet1Value() {
722 int c; 722 int c;
723 lexSkipWhite(); 723 lexSkipWhite();
724 c = lexLookahead(); 724 c = lexLookahead();
725 lexClearToken(); 725 lexClearToken();
726 while (c != EOF && (c != ';' || !fieldedProp)) { 726 while (c != EOF && (c != ';' || !fieldedProp)) {
727 if (c == '\\' ) { 727 if (c == '\\' ) {
728 int a; 728 int a;
729 lexSkipLookahead(); 729 lexSkipLookahead();
730 a = lexLookahead(); 730 a = lexLookahead();
731 if ( a == ';' ) { 731 if ( a == ';' ) {
732 lexAppendc( ';' ); 732 lexAppendc( ';' );
733 lexSkipLookahead(); 733 lexSkipLookahead();
734 } else if ( a == '\n' ) { 734 } else if ( a == '\n' ) {
735 lexAppendc( '\n' ); 735 lexAppendc( '\n' );
736 lexSkipLookahead(); 736 lexSkipLookahead();
737 } else if ( a == '\\' ) { 737 } else if ( a == '\\' ) {
738 lexAppendc( '\\' ); 738 lexAppendc( '\\' );
739 lexSkipLookahead(); 739 lexSkipLookahead();
740 } else { 740 } else {
741 lexAppendc('\\'); 741 lexAppendc('\\');
742 } 742 }
743 } else if (c == '\n') { 743 } else if (c == '\n') {
744 int a; 744 int a;
745 lexSkipLookahead(); 745 lexSkipLookahead();
746 a = lexLookahead(); 746 a = lexLookahead();
747 if (a == ' ' || a == '\t') { 747 if (a == ' ' || a == '\t') {
748 lexAppendc(' '); 748 lexAppendc(' ');
749 lexSkipLookahead(); 749 lexSkipLookahead();
750 } 750 }
751 else { 751 else {
752 lexPushLookaheadc('\n'); 752 lexPushLookaheadc('\n');
753 break; 753 break;
754 } 754 }
755 } 755 }
756 else { 756 else {
757 lexAppendc(c); 757 lexAppendc(c);
758 lexSkipLookahead(); 758 lexSkipLookahead();
759 } 759 }
760 c = lexLookahead(); 760 c = lexLookahead();
761 } 761 }
762 lexAppendc(0); 762 lexAppendc(0);
763 handleMoreRFC822LineBreak(c); 763 handleMoreRFC822LineBreak(c);
764 return c==EOF?0:lexStr(); 764 return c==EOF?0:lexStr();
765 } 765 }
766#endif 766#endif
767 767
768static int match_begin_name(int end) { 768static int match_begin_name(int end) {
769 char *n = lexLookaheadWord(); 769 char *n = lexLookaheadWord();
770 int token = ID; 770 int token = ID;
771 if (n) { 771 if (n) {
772 if (!qstricmp(n,"vcard")) token = end?END_VCARD:BEGIN_VCARD; 772 if (!qstricmp(n,"vcard")) token = end?END_VCARD:BEGIN_VCARD;
773 else if (!qstricmp(n,"vcalendar")) token = end?END_VCAL:BEGIN_VCAL; 773 else if (!qstricmp(n,"vcalendar")) token = end?END_VCAL:BEGIN_VCAL;
774 else if (!qstricmp(n,"vevent")) token = end?END_VEVENT:BEGIN_VEVENT; 774 else if (!qstricmp(n,"vevent")) token = end?END_VEVENT:BEGIN_VEVENT;
775 else if (!qstricmp(n,"vtodo")) token = end?END_VTODO:BEGIN_VTODO; 775 else if (!qstricmp(n,"vtodo")) token = end?END_VTODO:BEGIN_VTODO;
776 deleteStr(n); 776 deleteStr(n);
777 return token; 777 return token;
778 } 778 }
779 return 0; 779 return 0;
780 } 780 }
781 781
782 782
783#ifdef INCLUDEMFC 783#ifdef INCLUDEMFC
784void initLex(const char *inputstring, unsigned long inputlen, CFile *inputfile) 784void initLex(const char *inputstring, unsigned long inputlen, CFile *inputfile)
785#else 785#else
786void initLex(const char *inputstring, unsigned long inputlen, FILE *inputfile) 786void initLex(const char *inputstring, unsigned long inputlen, FILE *inputfile)
787#endif 787#endif
788 { 788 {
789 // initialize lex mode stack 789 // initialize lex mode stack
790 lexBuf.lexModeStack[lexBuf.lexModeStackTop=0] = L_NORMAL; 790 lexBuf.lexModeStack[lexBuf.lexModeStackTop=0] = L_NORMAL;
791 791
792 // iniatialize lex buffer. 792 // iniatialize lex buffer.
793 lexBuf.inputString = (char*) inputstring; 793 lexBuf.inputString = (char*) inputstring;
794 lexBuf.inputLen = inputlen; 794 lexBuf.inputLen = inputlen;
795 lexBuf.curPos = 0; 795 lexBuf.curPos = 0;
796 lexBuf.inputFile = inputfile; 796 lexBuf.inputFile = inputfile;
797 797
798 lexBuf.len = 0; 798 lexBuf.len = 0;
799 lexBuf.getPtr = 0; 799 lexBuf.getPtr = 0;
800 800
801 lexBuf.maxToken = MAXTOKEN; 801 lexBuf.maxToken = MAXTOKEN;
802 lexBuf.strs = (char*)malloc(MAXTOKEN); 802 lexBuf.strs = (char*)malloc(MAXTOKEN);
803 lexBuf.strsLen = 0; 803 lexBuf.strsLen = 0;
804 804
805 } 805 }
806 806
807static void finiLex() { 807static void finiLex() {
808 free(lexBuf.strs); 808 free(lexBuf.strs);
809 } 809 }
810 810
811 811
812/*-----------------------------------*/ 812/*-----------------------------------*/
813/* This parses and converts the base64 format for binary encoding into 813/* This parses and converts the base64 format for binary encoding into
814 * a decoded buffer (allocated with new). See RFC 1521. 814 * a decoded buffer (allocated with new). See RFC 1521.
815 */ 815 */
816static char * lexGetDataFromBase64() 816static char * lexGetDataFromBase64()
817 { 817 {
818 unsigned long bytesLen = 0, bytesMax = 0; 818 unsigned long bytesLen = 0, bytesMax = 0;
819 int quadIx = 0, pad = 0; 819 int quadIx = 0, pad = 0;
820 unsigned long trip = 0; 820 unsigned long trip = 0;
821 unsigned char b; 821 unsigned char b;
822 int c; 822 int c;
823 unsigned char *bytes = NULL; 823 unsigned char *bytes = NULL;
824 unsigned char *oldBytes = NULL; 824 unsigned char *oldBytes = NULL;
825 825
826 DBG_(("db: lexGetDataFromBase64\n")); 826 DBG_(("db: lexGetDataFromBase64\n"));
827 while (1) { 827 while (1) {
828 c = lexGetc(); 828 c = lexGetc();
829 if (c == '\n') { 829 if (c == '\n') {
830 ++mime_lineNum; 830 ++mime_lineNum;
831 if (lexLookahead() == '\n') { 831 if (lexLookahead() == '\n') {
832 /* a '\n' character by itself means end of data */ 832 /* a '\n' character by itself means end of data */
833 break; 833 break;
834 } 834 }
835 else continue; /* ignore '\n' */ 835 else continue; /* ignore '\n' */
836 } 836 }
837 else { 837 else {
838 if ((c >= 'A') && (c <= 'Z')) 838 if ((c >= 'A') && (c <= 'Z'))
839 b = (unsigned char)(c - 'A'); 839 b = (unsigned char)(c - 'A');
840 else if ((c >= 'a') && (c <= 'z')) 840 else if ((c >= 'a') && (c <= 'z'))
841 b = (unsigned char)(c - 'a') + 26; 841 b = (unsigned char)(c - 'a') + 26;
842 else if ((c >= '0') && (c <= '9')) 842 else if ((c >= '0') && (c <= '9'))
843 b = (unsigned char)(c - '0') + 52; 843 b = (unsigned char)(c - '0') + 52;
844 else if (c == '+') 844 else if (c == '+')
845 b = 62; 845 b = 62;
846 else if (c == '/') 846 else if (c == '/')
847 b = 63; 847 b = 63;
848 else if (c == '=') { 848 else if (c == '=') {
849 b = 0; 849 b = 0;
850 pad++; 850 pad++;
851 } else if ((c == ' ') || (c == '\t')) { 851 } else if ((c == ' ') || (c == '\t')) {
852 continue; 852 continue;
853 } else { /* error condition */ 853 } else { /* error condition */
854 if (bytes) free(bytes); 854 if (bytes) free(bytes);
855 else if (oldBytes) free(oldBytes); 855 else if (oldBytes) free(oldBytes);
856 // error recovery: skip until 2 adjacent newlines. 856 // error recovery: skip until 2 adjacent newlines.
857 DBG_(("db: invalid character 0x%x '%c'\n", c,c)); 857 DBG_(("db: invalid character 0x%x '%c'\n", c,c));
858 if (c != EOF) { 858 if (c != EOF) {
859 c = lexGetc(); 859 c = lexGetc();
860 while (c != EOF) { 860 while (c != EOF) {
861 if (c == '\n' && lexLookahead() == '\n') { 861 if (c == '\n' && lexLookahead() == '\n') {
862 ++mime_lineNum; 862 ++mime_lineNum;
863 break; 863 break;
864 } 864 }
865 c = lexGetc(); 865 c = lexGetc();
866 } 866 }
867 } 867 }
868 return NULL; 868 return NULL;
869 } 869 }
870 trip = (trip << 6) | b; 870 trip = (trip << 6) | b;
871 if (++quadIx == 4) { 871 if (++quadIx == 4) {
872 unsigned char outBytes[3]; 872 unsigned char outBytes[3];
873 int numOut; 873 int numOut;
874 int i; 874 int i;
875 for (i = 0; i < 3; i++) { 875 for (i = 0; i < 3; i++) {
876 outBytes[2-i] = (unsigned char)(trip & 0xFF); 876 outBytes[2-i] = (unsigned char)(trip & 0xFF);
877 trip >>= 8; 877 trip >>= 8;
878 } 878 }
879 numOut = 3 - pad; 879 numOut = 3 - pad;
880 if (bytesLen + numOut > bytesMax) { 880 if (bytesLen + numOut > bytesMax) {
881 if (!bytes) { 881 if (!bytes) {
882 bytesMax = 1024; 882 bytesMax = 1024;
883 bytes = (unsigned char*)malloc((size_t)bytesMax); 883 bytes = (unsigned char*)malloc((size_t)bytesMax);
884 } 884 }
885 else { 885 else {
886 bytesMax <<= 2; 886 bytesMax <<= 2;
887 oldBytes = bytes; 887 oldBytes = bytes;
888 bytes = (unsigned char*)realloc(bytes,(size_t)bytesMax); 888 bytes = (unsigned char*)realloc(bytes,(size_t)bytesMax);
889 } 889 }
890 if (bytes == 0) { 890 if (bytes == 0) {
891 mime_error("out of memory while processing BASE64 data\n"); 891 mime_error("out of memory while processing BASE64 data\n");
892 } 892 }
893 } 893 }
894 if (bytes) { 894 if (bytes) {
895 memcpy(bytes + bytesLen, outBytes, numOut); 895 memcpy(bytes + bytesLen, outBytes, numOut);
896 bytesLen += numOut; 896 bytesLen += numOut;
897 } 897 }
898 trip = 0; 898 trip = 0;
899 quadIx = 0; 899 quadIx = 0;
900 } 900 }
901 } 901 }
902 } /* while */ 902 } /* while */
903 DBG_(("db: bytesLen = %d\n", bytesLen)); 903 DBG_(("db: bytesLen = %d\n", bytesLen));
904 /* kludge: all this won't be necessary if we have tree form 904 /* kludge: all this won't be necessary if we have tree form
905 representation */ 905 representation */
906 if (bytes) { 906 if (bytes) {
907 setValueWithSize(curProp,bytes,(unsigned int)bytesLen); 907 setValueWithSize(curProp,bytes,(unsigned int)bytesLen);
908 free(bytes); 908 free(bytes);
909 } 909 }
910 else if (oldBytes) { 910 else if (oldBytes) {
911 setValueWithSize(curProp,oldBytes,(unsigned int)bytesLen); 911 setValueWithSize(curProp,oldBytes,(unsigned int)bytesLen);
912 free(oldBytes); 912 free(oldBytes);
913 } 913 }
914 return 0; 914 return 0;
915 } 915 }
916 916
917static int match_begin_end_name(int end) { 917static int match_begin_end_name(int end) {
918 int token; 918 int token;
919 lexSkipWhite(); 919 lexSkipWhite();
920 if (lexLookahead() != ':') return ID; 920 if (lexLookahead() != ':') return ID;
921 lexSkipLookahead(); 921 lexSkipLookahead();
922 lexSkipWhite(); 922 lexSkipWhite();
923 token = match_begin_name(end); 923 token = match_begin_name(end);
924 if (token == ID) { 924 if (token == ID) {
925 lexPushLookaheadc(':'); 925 lexPushLookaheadc(':');
926 DBG_(("db: ID '%s'\n", yylval.str)); 926 DBG_(("db: ID '%s'\n", yylval.str));
927 return ID; 927 return ID;
928 } 928 }
929 else if (token != 0) { 929 else if (token != 0) {
930 lexSkipLookaheadWord(); 930 lexSkipLookaheadWord();
931 deleteStr(yylval.str); 931 deleteStr(yylval.str);
932 DBG_(("db: begin/end %d\n", token)); 932 DBG_(("db: begin/end %d\n", token));
933 return token; 933 return token;
934 } 934 }
935 return 0; 935 return 0;
936 } 936 }
937 937
938static char* lexGetQuotedPrintable() 938static char* lexGetQuotedPrintable()
939{ 939{
940 int c; 940 int c;
941 lexSkipWhite(); 941 lexSkipWhite();
942 c = lexLookahead(); 942 c = lexLookahead();
943 lexClearToken(); 943 lexClearToken();
944 944
945 while (c != EOF && c != ';') { 945 while (c != EOF && c != ';') {
946 if (c == '\n') { 946 if (c == '\n') {
947 // break, leave '\n' on remaining chars. 947 // break, leave '\n' on remaining chars.
948 break; 948 break;
949 } else if (c == '=') { 949 } else if (c == '=') {
950 int cur = 0; 950 int cur = 0;
951 int next; 951 int next;
952 952
953 lexSkipLookahead(); // skip '=' 953 lexSkipLookahead(); // skip '='
954 next = lexLookahead(); 954 next = lexLookahead();
955 955
956 if (next == '\n') { 956 if (next == '\n') {
957 // skip and only skip the \n 957 // skip and only skip the \n
958 lexSkipLookahead(); 958 lexSkipLookahead();
959 c = lexLookahead(); 959 c = lexLookahead();
960 ++mime_lineNum; // aid in error reporting 960 ++mime_lineNum; // aid in error reporting
961 continue; 961 continue;
962 } else if (next >= '0' && next <= '9') { 962 } else if (next >= '0' && next <= '9') {
963 cur = next - '0'; 963 cur = next - '0';
964 } else if (next >= 'A' && next <= 'F') { 964 } else if (next >= 'A' && next <= 'F') {
965 cur = next - 'A' + 10; 965 cur = next - 'A' + 10;
966 } else { 966 } else {
967 // we have been sent buggy stuff. doesn't matter 967 // we have been sent buggy stuff. doesn't matter
968 // what we do so long as we keep going. 968 // what we do so long as we keep going.
969 // should probably spit an error here 969 // should probably spit an error here
970 lexSkipLookahead(); 970 lexSkipLookahead();
971 c = lexLookahead(); 971 c = lexLookahead();
972 continue; 972 continue;
973 } 973 }
974 974
975 lexSkipLookahead(); // skip A-Z0-9 975 lexSkipLookahead(); // skip A-Z0-9
976 next = lexLookahead(); 976 next = lexLookahead();
977 977
978 cur = cur * 16; 978 cur = cur * 16;
979 // this time really just expecting 0-9A-F 979 // this time really just expecting 0-9A-F
980 if (next >= '0' && next <= '9') { 980 if (next >= '0' && next <= '9') {
981 cur += next - '0'; 981 cur += next - '0';
982 } else if (next >= 'A' && next <= 'F') { 982 } else if (next >= 'A' && next <= 'F') {
983 cur += next - 'A' + 10; 983 cur += next - 'A' + 10;
984 } else { 984 } else {
985 // we have been sent buggy stuff. doesn't matter 985 // we have been sent buggy stuff. doesn't matter
986 // what we do so long as we keep going. 986 // what we do so long as we keep going.
987 // should probably spit an error here 987 // should probably spit an error here
988 lexSkipLookahead(); 988 lexSkipLookahead();
989 c = lexLookahead(); 989 c = lexLookahead();
990 continue; 990 continue;
991 } 991 }
992 992
993 // got a valid escaped =. append it. 993 // got a valid escaped =. append it.
994 lexSkipLookahead(); // skip second 0-9A-F 994 lexSkipLookahead(); // skip second 0-9A-F
995 lexAppendc(cur); 995 lexAppendc(cur);
996 } else { 996 } else {
997 lexSkipLookahead(); // skip whatever we just read. 997 lexSkipLookahead(); // skip whatever we just read.
998 lexAppendc(c); // and append it. 998 lexAppendc(c); // and append it.
999 } 999 }
1000 c = lexLookahead(); 1000 c = lexLookahead();
1001 } 1001 }
1002 lexAppendc(0); 1002 lexAppendc(0);
1003 return c==EOF?0:lexStr(); 1003 return c==EOF?0:lexStr();
1004} 1004}
1005 1005
1006static int yylex() { 1006static int yylex() {
1007 1007
1008 int lexmode = LEXMODE(); 1008 int lexmode = LEXMODE();
1009 if (lexmode == L_VALUES) { 1009 if (lexmode == L_VALUES) {
1010 int c = lexGetc(); 1010 int c = lexGetc();
1011 if (c == ';' && fieldedProp) { 1011 if (c == ';' && fieldedProp) {
1012 DBG_(("db: SEMICOLON\n")); 1012 DBG_(("db: SEMICOLON\n"));
1013 lexPushLookaheadc(c); 1013 lexPushLookaheadc(c);
1014 handleMoreRFC822LineBreak(c); 1014 handleMoreRFC822LineBreak(c);
1015 lexSkipLookahead(); 1015 lexSkipLookahead();
1016 return SEMICOLON; 1016 return SEMICOLON;
1017 } 1017 }
1018 else if (strchr("\n",c)) { 1018 else if (strchr("\n",c)) {
1019 ++mime_lineNum; 1019 ++mime_lineNum;
1020 /* consume all line separator(s) adjacent to each other */ 1020 /* consume all line separator(s) adjacent to each other */
1021 c = lexLookahead(); 1021 c = lexLookahead();
1022 while (strchr("\n",c)) { 1022 while (strchr("\n",c)) {
1023 lexSkipLookahead(); 1023 lexSkipLookahead();
1024 c = lexLookahead(); 1024 c = lexLookahead();
1025 ++mime_lineNum; 1025 ++mime_lineNum;
1026 } 1026 }
1027 DBG_(("db: LINESEP\n")); 1027 DBG_(("db: LINESEP\n"));
1028 return LINESEP; 1028 return LINESEP;
1029 } 1029 }
1030 else { 1030 else {
1031 char *p = 0; 1031 char *p = 0;
1032 lexPushLookaheadc(c); 1032 lexPushLookaheadc(c);
1033 if (lexWithinMode(L_BASE64)) { 1033 if (lexWithinMode(L_BASE64)) {
1034 /* get each char and convert to bin on the fly... */ 1034 /* get each char and convert to bin on the fly... */
1035 p = lexGetDataFromBase64(); 1035 p = lexGetDataFromBase64();
1036 #if 0
1036 yylval.str = p; 1037 yylval.str = p;
1037 return STRING; 1038 return STRING;
1039 #endif
1038 } 1040 }
1039 else if (lexWithinMode(L_QUOTED_PRINTABLE)) { 1041 else if (lexWithinMode(L_QUOTED_PRINTABLE)) {
1040 p = lexGetQuotedPrintable(); 1042 p = lexGetQuotedPrintable();
1041 } 1043 }
1042 else { 1044 else {
1043#ifdef _SUPPORT_LINE_FOLDING 1045#ifdef _SUPPORT_LINE_FOLDING
1044 p = lexGet1Value(); 1046 p = lexGet1Value();
1045#else 1047#else
1046 p = lexGetStrUntil(";\n"); 1048 p = lexGetStrUntil(";\n");
1047#endif 1049#endif
1048 } 1050 }
1049 if (p) { 1051 if (p) {
1050 DBG_(("db: STRING: '%s'\n", p)); 1052 DBG_(("db: STRING: '%s'\n", p));
1051 yylval.str = p; 1053 yylval.str = p;
1052 return STRING; 1054 return STRING;
1053 } 1055 }
1054 else return 0; 1056 else return 0;
1055 } 1057 }
1056 } 1058 }
1057 else { 1059 else {
1058 /* normal mode */ 1060 /* normal mode */
1059 while (1) { 1061 while (1) {
1060 int c = lexGetc(); 1062 int c = lexGetc();
1061 switch(c) { 1063 switch(c) {
1062 case ':': { 1064 case ':': {
1063 /* consume all line separator(s) adjacent to each other */ 1065 /* consume all line separator(s) adjacent to each other */
1064 /* ignoring linesep immediately after colon. */ 1066 /* ignoring linesep immediately after colon. */
1065 /* I don't see this in the spec, and it breaks null values -- WA 1067 /* I don't see this in the spec, and it breaks null values -- WA
1066 c = lexLookahead(); 1068 c = lexLookahead();
1067 while (strchr("\n",c)) { 1069 while (strchr("\n",c)) {
1068 lexSkipLookahead(); 1070 lexSkipLookahead();
1069 c = lexLookahead(); 1071 c = lexLookahead();
1070 ++mime_lineNum; 1072 ++mime_lineNum;
1071 } 1073 }
1072 */ 1074 */
1073 DBG_(("db: COLON\n")); 1075 DBG_(("db: COLON\n"));
1074 return COLON; 1076 return COLON;
1075 } 1077 }
1076 case ';': 1078 case ';':
1077 DBG_(("db: SEMICOLON\n")); 1079 DBG_(("db: SEMICOLON\n"));
1078 return SEMICOLON; 1080 return SEMICOLON;
1079 case '=': 1081 case '=':
1080 DBG_(("db: EQ\n")); 1082 DBG_(("db: EQ\n"));
1081 return EQ; 1083 return EQ;
1082 /* ignore whitespace in this mode */ 1084 /* ignore whitespace in this mode */
1083 case '\t': 1085 case '\t':
1084 case ' ': continue; 1086 case ' ': continue;
1085 case '\n': { 1087 case '\n': {
1086 ++mime_lineNum; 1088 ++mime_lineNum;
1087 continue; 1089 continue;
1088 } 1090 }
1089 case EOF: return 0; 1091 case EOF: return 0;
1090 break; 1092 break;
1091 default: { 1093 default: {
1092 lexPushLookaheadc(c); 1094 lexPushLookaheadc(c);
1093 if (isalnum(c)) { 1095 if (isalnum(c)) {
1094 char *t = lexGetWord(); 1096 char *t = lexGetWord();
1095 yylval.str = t; 1097 yylval.str = t;
1096 if (!qstricmp(t, "begin")) { 1098 if (!qstricmp(t, "begin")) {
1097 return match_begin_end_name(0); 1099 return match_begin_end_name(0);
1098 } 1100 }
1099 else if (!qstricmp(t,"end")) { 1101 else if (!qstricmp(t,"end")) {
1100 return match_begin_end_name(1); 1102 return match_begin_end_name(1);
1101 } 1103 }
1102 else { 1104 else {
1103 DBG_(("db: ID '%s'\n", t)); 1105 DBG_(("db: ID '%s'\n", t));
1104 return ID; 1106 return ID;
1105 } 1107 }
1106 } 1108 }
1107 else { 1109 else {
1108 /* unknow token */ 1110 /* unknow token */
1109 return 0; 1111 return 0;
1110 } 1112 }
1111 break; 1113 break;
1112 } 1114 }
1113 } 1115 }
1114 } 1116 }
1115 } 1117 }
1116 return 0; 1118 return 0;
1117 } 1119 }
1118 1120
1119 1121
1120/***************************************************************************/ 1122/***************************************************************************/
1121 /*** Public Functions ****/ 1123 /*** Public Functions ****/
1122/***************************************************************************/ 1124/***************************************************************************/
1123 1125
1124static VObject* Parse_MIMEHelper() 1126static VObject* Parse_MIMEHelper()
1125 { 1127 {
1126 ObjStackTop = -1; 1128 ObjStackTop = -1;
1127 mime_numErrors = 0; 1129 mime_numErrors = 0;
1128 mime_lineNum = 1; 1130 mime_lineNum = 1;
1129 vObjList = 0; 1131 vObjList = 0;
1130 curObj = 0; 1132 curObj = 0;
1131 1133
1132 if (yyparse() != 0) 1134 if (yyparse() != 0)
1133 return 0; 1135 return 0;
1134 1136
1135 finiLex(); 1137 finiLex();
1136 return vObjList; 1138 return vObjList;
1137 } 1139 }
1138 1140
1139/*--------------------------------------------*/ 1141/*--------------------------------------------*/
1140DLLEXPORT(VObject*) Parse_MIME(const char *input, unsigned long len) 1142DLLEXPORT(VObject*) Parse_MIME(const char *input, unsigned long len)
1141 { 1143 {
1142 initLex(input, len, 0); 1144 initLex(input, len, 0);
1143 return Parse_MIMEHelper(); 1145 return Parse_MIMEHelper();
1144 } 1146 }
1145 1147
1146 1148
1147#if INCLUDEMFC 1149#if INCLUDEMFC
1148 1150
1149DLLEXPORT(VObject*) Parse_MIME_FromFile(CFile *file) 1151DLLEXPORT(VObject*) Parse_MIME_FromFile(CFile *file)
1150 { 1152 {
1151 unsigned long startPos; 1153 unsigned long startPos;
1152 VObject *result; 1154 VObject *result;
1153 1155
1154 initLex(0,-1,file); 1156 initLex(0,-1,file);
1155 startPos = file->GetPosition(); 1157 startPos = file->GetPosition();
1156 if (!(result = Parse_MIMEHelper())) 1158 if (!(result = Parse_MIMEHelper()))
1157 file->Seek(startPos, CFile::begin); 1159 file->Seek(startPos, CFile::begin);
1158 return result; 1160 return result;
1159 } 1161 }
1160 1162
1161#else 1163#else
1162 1164
1163VObject* Parse_MIME_FromFile(FILE *file) 1165VObject* Parse_MIME_FromFile(FILE *file)
1164 { 1166 {
1165 VObject *result; 1167 VObject *result;
1166 long startPos; 1168 long startPos;
1167 1169
1168 initLex(0,(unsigned long)-1,file); 1170 initLex(0,(unsigned long)-1,file);
1169 startPos = ftell(file); 1171 startPos = ftell(file);
1170 if (!(result = Parse_MIMEHelper())) { 1172 if (!(result = Parse_MIMEHelper())) {
1171 fseek(file,startPos,SEEK_SET); 1173 fseek(file,startPos,SEEK_SET);
1172 } 1174 }
1173 return result; 1175 return result;
1174 } 1176 }
1175 1177
1176DLLEXPORT(VObject*) Parse_MIME_FromFileName(char *fname) 1178DLLEXPORT(VObject*) Parse_MIME_FromFileName(char *fname)
1177 { 1179 {
1178 FILE *fp = fopen(fname,"r"); 1180 FILE *fp = fopen(fname,"r");
1179 if (fp) { 1181 if (fp) {
1180 VObject* o = Parse_MIME_FromFile(fp); 1182 VObject* o = Parse_MIME_FromFile(fp);
1181 fclose(fp); 1183 fclose(fp);
1182 return o; 1184 return o;
1183 } 1185 }
1184 else { 1186 else {
1185 char msg[80]; 1187 char msg[80];
1186 sprintf(msg, "can't open file '%s' for reading\n", fname); 1188 sprintf(msg, "can't open file '%s' for reading\n", fname);
1187 mime_error_(msg); 1189 mime_error_(msg);
1188 return 0; 1190 return 0;
1189 } 1191 }
1190 } 1192 }
1191 1193
1192#endif 1194#endif
1193 1195
1194/*-------------------------------------*/ 1196/*-------------------------------------*/
1195 1197
1196static MimeErrorHandler mimeErrorHandler; 1198static MimeErrorHandler mimeErrorHandler;
1197 1199
1198DLLEXPORT(void) registerMimeErrorHandler(MimeErrorHandler me) 1200DLLEXPORT(void) registerMimeErrorHandler(MimeErrorHandler me)
1199 { 1201 {
1200 mimeErrorHandler = me; 1202 mimeErrorHandler = me;
1201 } 1203 }
1202 1204
1203void mime_error(char *s) 1205void mime_error(char *s)
1204 { 1206 {
1205 char msg[256]; 1207 char msg[256];
1206 if (mimeErrorHandler) { 1208 if (mimeErrorHandler) {
1207 sprintf(msg,"%s at line %d", s, mime_lineNum); 1209 sprintf(msg,"%s at line %d", s, mime_lineNum);
1208 mimeErrorHandler(msg); 1210 mimeErrorHandler(msg);
1209 } 1211 }
1210 } 1212 }
1211 1213
1212void mime_error_(char *s) 1214void mime_error_(char *s)
1213 { 1215 {
1214 if (mimeErrorHandler) { 1216 if (mimeErrorHandler) {
1215 mimeErrorHandler(s); 1217 mimeErrorHandler(s);
1216 } 1218 }
1217 } 1219 }
1218 1220
diff --git a/library/backend/vcc_yacc.cpp b/library/backend/vcc_yacc.cpp
index 5649522..5f53aef 100644
--- a/library/backend/vcc_yacc.cpp
+++ b/library/backend/vcc_yacc.cpp
@@ -1,1595 +1,1597 @@
1#ifndef lint 1#ifndef lint
2 /*static char yysccsid[] = "from: @(#)yaccpar1.9 (Berkeley) 02/21/93";*/ 2 /*static char yysccsid[] = "from: @(#)yaccpar1.9 (Berkeley) 02/21/93";*/
3static char yyrcsid[] = "$Id$"; 3static char yyrcsid[] = "$Id$";
4#endif 4#endif
5#define YYBYACC 1 5#define YYBYACC 1
6#define YYMAJOR 1 6#define YYMAJOR 1
7#define YYMINOR 9 7#define YYMINOR 9
8#define yyclearin (yychar=(-1)) 8#define yyclearin (yychar=(-1))
9#define yyerrok (yyerrflag=0) 9#define yyerrok (yyerrflag=0)
10#define YYRECOVERING (yyerrflag!=0) 10#define YYRECOVERING (yyerrflag!=0)
11#define yyparse vccparse 11#define yyparse vccparse
12#define yylex vcclex 12#define yylex vcclex
13#define yyerror vccerror 13#define yyerror vccerror
14#define yychar vccchar 14#define yychar vccchar
15#define yyval vccval 15#define yyval vccval
16#define yylval vcclval 16#define yylval vcclval
17#define yydebug vccdebug 17#define yydebug vccdebug
18#define yynerrs vccnerrs 18#define yynerrs vccnerrs
19#define yyerrflag vccerrflag 19#define yyerrflag vccerrflag
20#define yyss vccss 20#define yyss vccss
21#define yyssp vccssp 21#define yyssp vccssp
22#define yyvs vccvs 22#define yyvs vccvs
23#define yyvsp vccvsp 23#define yyvsp vccvsp
24#define yylhs vcclhs 24#define yylhs vcclhs
25#define yylen vcclen 25#define yylen vcclen
26#define yydefred vccdefred 26#define yydefred vccdefred
27#define yydgoto vccdgoto 27#define yydgoto vccdgoto
28#define yysindex vccsindex 28#define yysindex vccsindex
29#define yyrindex vccrindex 29#define yyrindex vccrindex
30#define yygindex vccgindex 30#define yygindex vccgindex
31#define yytable vcctable 31#define yytable vcctable
32#define yycheck vcccheck 32#define yycheck vcccheck
33#define yyname vccname 33#define yyname vccname
34#define yyrule vccrule 34#define yyrule vccrule
35#define YYPREFIX "vcc" 35#define YYPREFIX "vcc"
36#line 1 "backend/vcc.y" 36#line 1 "backend/vcc.y"
37 37
38 38
39/*************************************************************************** 39/***************************************************************************
40(C) Copyright 1996 Apple Computer, Inc., AT&T Corp., International 40(C) Copyright 1996 Apple Computer, Inc., AT&T Corp., International
41Business Machines Corporation and Siemens Rolm Communications Inc. 41Business Machines Corporation and Siemens Rolm Communications Inc.
42 42
43For purposes of this license notice, the term Licensors shall mean, 43For purposes of this license notice, the term Licensors shall mean,
44collectively, Apple Computer, Inc., AT&T Corp., International 44collectively, Apple Computer, Inc., AT&T Corp., International
45Business Machines Corporation and Siemens Rolm Communications Inc. 45Business Machines Corporation and Siemens Rolm Communications Inc.
46The term Licensor shall mean any of the Licensors. 46The term Licensor shall mean any of the Licensors.
47 47
48Subject to acceptance of the following conditions, permission is hereby 48Subject to acceptance of the following conditions, permission is hereby
49granted by Licensors without the need for written agreement and without 49granted by Licensors without the need for written agreement and without
50license or royalty fees, to use, copy, modify and distribute this 50license or royalty fees, to use, copy, modify and distribute this
51software for any purpose. 51software for any purpose.
52 52
53The above copyright notice and the following four paragraphs must be 53The above copyright notice and the following four paragraphs must be
54reproduced in all copies of this software and any software including 54reproduced in all copies of this software and any software including
55this software. 55this software.
56 56
57THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS AND NO LICENSOR SHALL HAVE 57THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS AND NO LICENSOR SHALL HAVE
58ANY OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS OR 58ANY OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS OR
59MODIFICATIONS. 59MODIFICATIONS.
60 60
61IN NO EVENT SHALL ANY LICENSOR BE LIABLE TO ANY PARTY FOR DIRECT, 61IN NO EVENT SHALL ANY LICENSOR BE LIABLE TO ANY PARTY FOR DIRECT,
62INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOST PROFITS ARISING OUT 62INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOST PROFITS ARISING OUT
63OF THE USE OF THIS SOFTWARE EVEN IF ADVISED OF THE POSSIBILITY OF SUCH 63OF THE USE OF THIS SOFTWARE EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
64DAMAGE. 64DAMAGE.
65 65
66EACH LICENSOR SPECIFICALLY DISCLAIMS ANY WARRANTIES, EXPRESS OR IMPLIED, 66EACH LICENSOR SPECIFICALLY DISCLAIMS ANY WARRANTIES, EXPRESS OR IMPLIED,
67INCLUDING BUT NOT LIMITED TO ANY WARRANTY OF NONINFRINGEMENT OR THE 67INCLUDING BUT NOT LIMITED TO ANY WARRANTY OF NONINFRINGEMENT OR THE
68IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 68IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
69PURPOSE. 69PURPOSE.
70 70
71The software is provided with RESTRICTED RIGHTS. Use, duplication, or 71The software is provided with RESTRICTED RIGHTS. Use, duplication, or
72disclosure by the government are subject to restrictions set forth in 72disclosure by the government are subject to restrictions set forth in
73DFARS 252.227-7013 or 48 CFR 52.227-19, as applicable. 73DFARS 252.227-7013 or 48 CFR 52.227-19, as applicable.
74 74
75***************************************************************************/ 75***************************************************************************/
76 76
77/* 77/*
78 * src: vcc.c 78 * src: vcc.c
79 * doc: Parser for vCard and vCalendar. Note that this code is 79 * doc: Parser for vCard and vCalendar. Note that this code is
80 * generated by a yacc parser generator. Generally it should not 80 * generated by a yacc parser generator. Generally it should not
81 * be edited by hand. The real source is vcc.y. The #line directives 81 * be edited by hand. The real source is vcc.y. The #line directives
82 * can be commented out here to make it easier to trace through 82 * can be commented out here to make it easier to trace through
83 * in a debugger. However, if a bug is found it should 83 * in a debugger. However, if a bug is found it should
84 * be fixed in vcc.y and this file regenerated. 84 * be fixed in vcc.y and this file regenerated.
85 */ 85 */
86 86
87 87
88/* debugging utilities */ 88/* debugging utilities */
89#if __DEBUG 89#if __DEBUG
90#define DBG_(x) printf x 90#define DBG_(x) printf x
91#else 91#else
92#define DBG_(x) 92#define DBG_(x)
93#endif 93#endif
94 94
95/**** External Functions ****/ 95/**** External Functions ****/
96 96
97/* assign local name to parser variables and functions so that 97/* assign local name to parser variables and functions so that
98 we can use more than one yacc based parser. 98 we can use more than one yacc based parser.
99*/ 99*/
100 100
101#if 0 101#if 0
102#define yyparse mime_parse 102#define yyparse mime_parse
103#define yylex mime_lex 103#define yylex mime_lex
104#define yyerror mime_error 104#define yyerror mime_error
105#define yychar mime_char 105#define yychar mime_char
106/* #define p_yyval p_mime_val */ 106/* #define p_yyval p_mime_val */
107#undef yyval 107#undef yyval
108#define yyval mime_yyval 108#define yyval mime_yyval
109/* #define p_yylval p_mime_lval */ 109/* #define p_yylval p_mime_lval */
110#undef yylval 110#undef yylval
111#define yylval mime_yylval 111#define yylval mime_yylval
112#define yydebug mime_debug 112#define yydebug mime_debug
113#define yynerrs mime_nerrs 113#define yynerrs mime_nerrs
114#define yyerrflag mime_errflag 114#define yyerrflag mime_errflag
115#define yyss mime_ss 115#define yyss mime_ss
116#define yyssp mime_ssp 116#define yyssp mime_ssp
117#define yyvs mime_vs 117#define yyvs mime_vs
118#define yyvsp mime_vsp 118#define yyvsp mime_vsp
119#define yylhs mime_lhs 119#define yylhs mime_lhs
120#define yylen mime_len 120#define yylen mime_len
121#define yydefred mime_defred 121#define yydefred mime_defred
122#define yydgoto mime_dgoto 122#define yydgoto mime_dgoto
123#define yysindex mime_sindex 123#define yysindex mime_sindex
124#define yyrindex mime_rindex 124#define yyrindex mime_rindex
125#define yygindex mime_gindex 125#define yygindex mime_gindex
126#define yytable mime_table 126#define yytable mime_table
127#define yycheck mime_check 127#define yycheck mime_check
128#define yyname mime_name 128#define yyname mime_name
129#define yyrule mime_rule 129#define yyrule mime_rule
130#ifdef YYPREFIX 130#ifdef YYPREFIX
131#undef YYPREFIX 131#undef YYPREFIX
132#endif 132#endif
133#define YYPREFIX "mime_" 133#define YYPREFIX "mime_"
134#endif 134#endif
135 135
136 136
137#ifndef _NO_LINE_FOLDING 137#ifndef _NO_LINE_FOLDING
138#define _SUPPORT_LINE_FOLDING 1 138#define _SUPPORT_LINE_FOLDING 1
139#endif 139#endif
140 140
141/* undef below if compile with MFC */ 141/* undef below if compile with MFC */
142/* #define INCLUDEMFC 1 */ 142/* #define INCLUDEMFC 1 */
143 143
144#if defined(WIN32) || defined(_WIN32) 144#if defined(WIN32) || defined(_WIN32)
145#ifdef INCLUDEMFC 145#ifdef INCLUDEMFC
146#include <afx.h> 146#include <afx.h>
147#endif 147#endif
148#endif 148#endif
149 149
150#include <string.h> 150#include <string.h>
151#ifndef __MWERKS__ 151#ifndef __MWERKS__
152#include <stdlib.h> 152#include <stdlib.h>
153#endif 153#endif
154#include <stdio.h> 154#include <stdio.h>
155#include <stdlib.h> 155#include <stdlib.h>
156#include <ctype.h> 156#include <ctype.h>
157 157
158/*#ifdef PALMTOPCENTER */ 158/*#ifdef PALMTOPCENTER */
159/*#include <qpe/vobject_p.h> */ 159/*#include <qpe/vobject_p.h> */
160/*#else */ 160/*#else */
161#include "vobject_p.h" 161#include "vobject_p.h"
162/*#endif */ 162/*#endif */
163 163
164/**** Types, Constants ****/ 164/**** Types, Constants ****/
165 165
166 #define YYDEBUG 0/* 1 to compile in some debugging code */ 166 #define YYDEBUG 0/* 1 to compile in some debugging code */
167 #define MAXTOKEN 256/* maximum token (line) length */ 167 #define MAXTOKEN 256/* maximum token (line) length */
168 #define YYSTACKSIZE 100/* ~unref ? */ 168 #define YYSTACKSIZE 100/* ~unref ? */
169 #define MAXLEVEL 10/* max # of nested objects parseable */ 169 #define MAXLEVEL 10/* max # of nested objects parseable */
170 /* (includes outermost) */ 170 /* (includes outermost) */
171 171
172 172
173/**** Global Variables ****/ 173/**** Global Variables ****/
174int mime_lineNum, mime_numErrors; /* yyerror() can use these */ 174int mime_lineNum, mime_numErrors; /* yyerror() can use these */
175static VObject* vObjList; 175static VObject* vObjList;
176static VObject *curProp; 176static VObject *curProp;
177static VObject *curObj; 177static VObject *curObj;
178static VObject* ObjStack[MAXLEVEL]; 178static VObject* ObjStack[MAXLEVEL];
179static int ObjStackTop; 179static int ObjStackTop;
180 180
181 181
182/* A helpful utility for the rest of the app. */ 182/* A helpful utility for the rest of the app. */
183#if __CPLUSPLUS__ 183#if __CPLUSPLUS__
184extern "C" { 184extern "C" {
185#endif 185#endif
186 186
187 extern void yyerror(char *s); 187 extern void yyerror(char *s);
188 188
189#if __CPLUSPLUS__ 189#if __CPLUSPLUS__
190 }; 190 };
191#endif 191#endif
192 192
193int yyparse(); 193int yyparse();
194 194
195enum LexMode { 195enum LexMode {
196 L_NORMAL, 196 L_NORMAL,
197 L_VCARD, 197 L_VCARD,
198 L_VCAL, 198 L_VCAL,
199 L_VEVENT, 199 L_VEVENT,
200 L_VTODO, 200 L_VTODO,
201 L_VALUES, 201 L_VALUES,
202 L_BASE64, 202 L_BASE64,
203 L_QUOTED_PRINTABLE 203 L_QUOTED_PRINTABLE
204 }; 204 };
205 205
206/**** Private Forward Declarations ****/ 206/**** Private Forward Declarations ****/
207static int pushVObject(const char *prop); 207static int pushVObject(const char *prop);
208static VObject* popVObject(); 208static VObject* popVObject();
209static void lexPopMode(int top); 209static void lexPopMode(int top);
210static int lexWithinMode(enum LexMode mode); 210static int lexWithinMode(enum LexMode mode);
211static void lexPushMode(enum LexMode mode); 211static void lexPushMode(enum LexMode mode);
212static void enterProps(const char *s); 212static void enterProps(const char *s);
213static void enterAttr(const char *s1, const char *s2); 213static void enterAttr(const char *s1, const char *s2);
214static void enterValues(const char *value); 214static void enterValues(const char *value);
215#define mime_error yyerror 215#define mime_error yyerror
216void mime_error(char *s); 216void mime_error(char *s);
217void mime_error_(char *s); 217void mime_error_(char *s);
218 218
219#line 189 "backend/vcc.y" 219#line 189 "backend/vcc.y"
220typedef union { 220typedef union {
221 char *str; 221 char *str;
222 VObject *vobj; 222 VObject *vobj;
223 } YYSTYPE; 223 } YYSTYPE;
224#line 225 "y.tab.c" 224#line 225 "y.tab.c"
225#define EQ 257 225#define EQ 257
226#define COLON 258 226#define COLON 258
227#define DOT 259 227#define DOT 259
228#define SEMICOLON 260 228#define SEMICOLON 260
229#define SPACE 261 229#define SPACE 261
230#define HTAB 262 230#define HTAB 262
231#define LINESEP 263 231#define LINESEP 263
232#define NEWLINE 264 232#define NEWLINE 264
233#define BEGIN_VCARD 265 233#define BEGIN_VCARD 265
234#define END_VCARD 266 234#define END_VCARD 266
235#define BEGIN_VCAL 267 235#define BEGIN_VCAL 267
236#define END_VCAL 268 236#define END_VCAL 268
237#define BEGIN_VEVENT 269 237#define BEGIN_VEVENT 269
238#define END_VEVENT 270 238#define END_VEVENT 270
239#define BEGIN_VTODO 271 239#define BEGIN_VTODO 271
240#define END_VTODO 272 240#define END_VTODO 272
241#define ID 273 241#define ID 273
242#define STRING 274 242#define STRING 274
243#define YYERRCODE 256 243#define YYERRCODE 256
244short vcclhs[] = { -1, 244short vcclhs[] = { -1,
245 0, 6, 6, 5, 5, 8, 3, 9, 3, 7, 245 0, 6, 6, 5, 5, 8, 3, 9, 3, 7,
246 7, 13, 10, 10, 15, 11, 11, 14, 14, 16, 246 7, 13, 10, 10, 15, 11, 11, 14, 14, 16,
247 17, 17, 1, 18, 12, 12, 2, 2, 20, 4, 247 17, 17, 1, 18, 12, 12, 2, 2, 20, 4,
248 21, 4, 19, 19, 22, 22, 22, 25, 23, 26, 248 21, 4, 19, 19, 22, 22, 22, 25, 23, 26,
249 23, 27, 24, 28, 24, 249 23, 27, 24, 28, 24,
250}; 250};
251short vcclen[] = { 2, 251short vcclen[] = { 2,
252 1, 2, 1, 1, 1, 0, 4, 0, 3, 2, 252 1, 2, 1, 1, 1, 0, 4, 0, 3, 2,
253 1, 0, 5, 1, 0, 3, 1, 2, 1, 2, 253 1, 0, 5, 1, 0, 3, 1, 2, 1, 2,
254 1, 3, 1, 0, 4, 1, 1, 0, 0, 4, 254 1, 3, 1, 0, 4, 1, 1, 0, 0, 4,
255 0, 3, 2, 1, 1, 1, 1, 0, 4, 0, 255 0, 3, 2, 1, 1, 1, 1, 0, 4, 0,
256 3, 0, 4, 0, 3, 256 3, 0, 4, 0, 3,
257}; 257};
258short vccdefred[] = { 0, 258short vccdefred[] = { 0,
259 0, 0, 0, 4, 5, 3, 0, 0, 0, 0, 259 0, 0, 0, 4, 5, 3, 0, 0, 0, 0,
260 0, 2, 14, 23, 0, 0, 11, 0, 9, 0, 260 0, 2, 14, 23, 0, 0, 11, 0, 9, 0,
261 0, 0, 0, 34, 35, 36, 32, 0, 7, 10, 261 0, 0, 0, 34, 35, 36, 32, 0, 7, 10,
262 12, 0, 0, 0, 0, 30, 33, 0, 0, 19, 262 12, 0, 0, 0, 0, 30, 33, 0, 0, 19,
263 0, 0, 41, 0, 45, 0, 20, 18, 27, 0, 263 0, 0, 41, 0, 45, 0, 20, 18, 27, 0,
264 0, 39, 43, 0, 24, 13, 22, 0, 25, 264 0, 39, 43, 0, 24, 13, 22, 0, 25,
265}; 265};
266short vccdgoto[] = { 3, 266short vccdgoto[] = { 3,
267 15, 50, 4, 5, 6, 7, 22, 8, 9, 17, 267 15, 50, 4, 5, 6, 7, 22, 8, 9, 17,
268 18, 51, 41, 39, 28, 40, 47, 58, 23, 10, 268 18, 51, 41, 39, 28, 40, 47, 58, 23, 10,
269 11, 24, 25, 26, 32, 33, 34, 35, 269 11, 24, 25, 26, 32, 33, 34, 35,
270}; 270};
271short vccsindex[] = { -262, 271short vccsindex[] = { -262,
272 0, 0, 0, 0, 0, 0, -262, -252, -219, -249, 272 0, 0, 0, 0, 0, 0, -262, -252, -219, -249,
273 -256, 0, 0, 0, 0, -227, 0, -242, 0, 0, 273 -256, 0, 0, 0, 0, -227, 0, -242, 0, 0,
274 0, -252, -254, 0, 0, 0, 0, -208, 0, 0, 274 0, -252, -254, 0, 0, 0, 0, -208, 0, 0,
275 0, -252, -228, -252, -213, 0, 0, -212, -208, 0, 275 0, -252, -228, -252, -213, 0, 0, -212, -208, 0,
276 -214, -233, 0, -224, 0, -195, 0, 0, 0, -197, 276 -214, -233, 0, -224, 0, -195, 0, 0, 0, -197,
277 -199, 0, 0, -212, 0, 0, 0, -214, 0, 277 -199, 0, 0, -212, 0, 0, 0, -214, 0,
278}; 278};
279short vccrindex[] = { 0, 279short vccrindex[] = { 0,
280 -222, -238, 0, 0, 0, 0, 65, 0, 0, 0, 280 -222, -238, 0, 0, 0, 0, 65, 0, 0, 0,
281 0, 0, 0, 0, -215, 0, 0, 0, 0, -220, 281 0, 0, 0, 0, -215, 0, 0, 0, 0, -220,
282 -218, -260, 0, 0, 0, 0, 0, 0, 0, 0, 282 -218, -260, 0, 0, 0, 0, 0, 0, 0, 0,
283 0, 0, 0, 0, 0, 0, 0, 0, -192, 0, 283 0, 0, 0, 0, 0, 0, 0, 0, -192, 0,
284 -250, 0, 0, 0, 0, -202, 0, 0, 0, -196, 284 -250, 0, 0, 0, 0, -202, 0, 0, 0, -196,
285 0, 0, 0, 0, 0, 0, 0, -250, 0, 285 0, 0, 0, 0, 0, 0, 0, -250, 0,
286}; 286};
287short vccgindex[] = { 0, 287short vccgindex[] = { 0,
288 3, 0, 0, 0, 61, 0, -7, 0, 0, -16, 288 3, 0, 0, 0, 61, 0, -7, 0, 0, -16,
289 0, 11, 0, 0, 0, 31, 0, 0, 0, 0, 289 0, 11, 0, 0, 0, 31, 0, 0, 0, 0,
290 0, 48, 0, 0, 0, 0, 0, 0, 290 0, 48, 0, 0, 0, 0, 0, 0,
291}; 291};
292#define YYTABLESIZE 71 292#define YYTABLESIZE 71
293short vcctable[] = { 30, 293short vcctable[] = { 30,
294 16, 13, 1, 13, 2, 30, 13, 37, 37, 28, 294 16, 13, 1, 13, 2, 30, 13, 37, 37, 28,
295 37, 27, 28, 36, 20, 31, 21, 29, 14, 20, 295 37, 27, 28, 36, 20, 31, 21, 29, 14, 20,
296 14, 21, 13, 14, 42, 30, 44, 30, 13, 31, 296 14, 21, 13, 14, 42, 30, 44, 30, 13, 31,
297 29, 13, 29, 6, 29, 38, 52, 42, 29, 14, 297 29, 13, 29, 6, 29, 38, 52, 42, 29, 14,
298 46, 43, 17, 8, 15, 14, 19, 53, 14, 40, 298 46, 43, 17, 8, 15, 14, 19, 53, 14, 40,
299 6, 38, 38, 44, 42, 21, 57, 21, 45, 49, 299 6, 38, 38, 44, 42, 21, 57, 21, 45, 49,
300 14, 54, 55, 56, 1, 16, 26, 12, 59, 48, 300 14, 54, 55, 56, 1, 16, 26, 12, 59, 48,
301 37, 301 37,
302}; 302};
303short vcccheck[] = { 16, 303short vcccheck[] = { 16,
304 8, 256, 265, 256, 267, 22, 256, 268, 269, 260, 304 8, 256, 265, 256, 267, 22, 256, 268, 269, 260,
305 271, 268, 263, 268, 269, 258, 271, 256, 273, 269, 305 271, 268, 263, 268, 269, 258, 271, 256, 273, 269,
306 273, 271, 256, 273, 32, 42, 34, 44, 256, 268, 306 273, 271, 256, 273, 32, 42, 34, 44, 256, 268,
307 269, 256, 271, 256, 273, 256, 270, 256, 266, 273, 307 269, 256, 271, 256, 273, 256, 270, 256, 266, 273,
308 38, 270, 258, 266, 260, 273, 266, 272, 273, 270, 308 38, 270, 258, 266, 260, 273, 266, 272, 273, 270,
309 273, 260, 273, 272, 273, 258, 54, 260, 272, 274, 309 273, 260, 273, 272, 273, 258, 54, 260, 272, 274,
310 273, 257, 260, 263, 0, 258, 263, 7, 58, 39, 310 273, 257, 260, 263, 0, 258, 263, 7, 58, 39,
311 23, 311 23,
312}; 312};
313#define YYFINAL 3 313#define YYFINAL 3
314#ifndef YYDEBUG 314#ifndef YYDEBUG
315#define YYDEBUG 0 315#define YYDEBUG 0
316#endif 316#endif
317#define YYMAXTOKEN 274 317#define YYMAXTOKEN 274
318#if YYDEBUG 318#if YYDEBUG
319char *vccname[] = { 319char *vccname[] = {
320"end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 320"end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
3210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 3210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
3220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 3220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
3230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 3230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
3240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 3240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
3250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 3250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
3260,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"EQ","COLON","DOT","SEMICOLON", 3260,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"EQ","COLON","DOT","SEMICOLON",
327"SPACE","HTAB","LINESEP","NEWLINE","BEGIN_VCARD","END_VCARD","BEGIN_VCAL", 327"SPACE","HTAB","LINESEP","NEWLINE","BEGIN_VCARD","END_VCARD","BEGIN_VCAL",
328"END_VCAL","BEGIN_VEVENT","END_VEVENT","BEGIN_VTODO","END_VTODO","ID","STRING", 328"END_VCAL","BEGIN_VEVENT","END_VEVENT","BEGIN_VTODO","END_VTODO","ID","STRING",
329}; 329};
330char *vccrule[] = { 330char *vccrule[] = {
331"$accept : mime", 331"$accept : mime",
332"mime : vobjects", 332"mime : vobjects",
333"vobjects : vobjects vobject", 333"vobjects : vobjects vobject",
334"vobjects : vobject", 334"vobjects : vobject",
335"vobject : vcard", 335"vobject : vcard",
336"vobject : vcal", 336"vobject : vcal",
337"$$1 :", 337"$$1 :",
338"vcard : BEGIN_VCARD $$1 items END_VCARD", 338"vcard : BEGIN_VCARD $$1 items END_VCARD",
339"$$2 :", 339"$$2 :",
340"vcard : BEGIN_VCARD $$2 END_VCARD", 340"vcard : BEGIN_VCARD $$2 END_VCARD",
341"items : items item", 341"items : items item",
342"items : item", 342"items : item",
343"$$3 :", 343"$$3 :",
344"item : prop COLON $$3 values LINESEP", 344"item : prop COLON $$3 values LINESEP",
345"item : error", 345"item : error",
346"$$4 :", 346"$$4 :",
347"prop : name $$4 attr_params", 347"prop : name $$4 attr_params",
348"prop : name", 348"prop : name",
349"attr_params : attr_params attr_param", 349"attr_params : attr_params attr_param",
350"attr_params : attr_param", 350"attr_params : attr_param",
351"attr_param : SEMICOLON attr", 351"attr_param : SEMICOLON attr",
352"attr : name", 352"attr : name",
353"attr : name EQ name", 353"attr : name EQ name",
354"name : ID", 354"name : ID",
355"$$5 :", 355"$$5 :",
356"values : value SEMICOLON $$5 values", 356"values : value SEMICOLON $$5 values",
357"values : value", 357"values : value",
358"value : STRING", 358"value : STRING",
359"value :", 359"value :",
360"$$6 :", 360"$$6 :",
361"vcal : BEGIN_VCAL $$6 calitems END_VCAL", 361"vcal : BEGIN_VCAL $$6 calitems END_VCAL",
362"$$7 :", 362"$$7 :",
363"vcal : BEGIN_VCAL $$7 END_VCAL", 363"vcal : BEGIN_VCAL $$7 END_VCAL",
364"calitems : calitems calitem", 364"calitems : calitems calitem",
365"calitems : calitem", 365"calitems : calitem",
366"calitem : eventitem", 366"calitem : eventitem",
367"calitem : todoitem", 367"calitem : todoitem",
368"calitem : items", 368"calitem : items",
369"$$8 :", 369"$$8 :",
370"eventitem : BEGIN_VEVENT $$8 items END_VEVENT", 370"eventitem : BEGIN_VEVENT $$8 items END_VEVENT",
371"$$9 :", 371"$$9 :",
372"eventitem : BEGIN_VEVENT $$9 END_VEVENT", 372"eventitem : BEGIN_VEVENT $$9 END_VEVENT",
373"$$10 :", 373"$$10 :",
374"todoitem : BEGIN_VTODO $$10 items END_VTODO", 374"todoitem : BEGIN_VTODO $$10 items END_VTODO",
375"$$11 :", 375"$$11 :",
376"todoitem : BEGIN_VTODO $$11 END_VTODO", 376"todoitem : BEGIN_VTODO $$11 END_VTODO",
377}; 377};
378#endif 378#endif
379#ifdef YYSTACKSIZE 379#ifdef YYSTACKSIZE
380#undef YYMAXDEPTH 380#undef YYMAXDEPTH
381#define YYMAXDEPTH YYSTACKSIZE 381#define YYMAXDEPTH YYSTACKSIZE
382#else 382#else
383#ifdef YYMAXDEPTH 383#ifdef YYMAXDEPTH
384#define YYSTACKSIZE YYMAXDEPTH 384#define YYSTACKSIZE YYMAXDEPTH
385#else 385#else
386#define YYSTACKSIZE 500 386#define YYSTACKSIZE 500
387#define YYMAXDEPTH 500 387#define YYMAXDEPTH 500
388#endif 388#endif
389#endif 389#endif
390int yydebug; 390int yydebug;
391int yynerrs; 391int yynerrs;
392int yyerrflag; 392int yyerrflag;
393int yychar; 393int yychar;
394short *yyssp; 394short *yyssp;
395YYSTYPE *yyvsp; 395YYSTYPE *yyvsp;
396YYSTYPE yyval; 396YYSTYPE yyval;
397YYSTYPE yylval; 397YYSTYPE yylval;
398short yyss[YYSTACKSIZE]; 398short yyss[YYSTACKSIZE];
399YYSTYPE yyvs[YYSTACKSIZE]; 399YYSTYPE yyvs[YYSTACKSIZE];
400#define yystacksize YYSTACKSIZE 400#define yystacksize YYSTACKSIZE
401#line 382 "backend/vcc.y" 401#line 382 "backend/vcc.y"
402 402
403/*------------------------------------*/ 403/*------------------------------------*/
404static int pushVObject(const char *prop) 404static int pushVObject(const char *prop)
405 { 405 {
406 VObject *newObj; 406 VObject *newObj;
407 if (ObjStackTop == MAXLEVEL) 407 if (ObjStackTop == MAXLEVEL)
408 return FALSE; 408 return FALSE;
409 409
410 ObjStack[++ObjStackTop] = curObj; 410 ObjStack[++ObjStackTop] = curObj;
411 411
412 if (curObj) { 412 if (curObj) {
413 newObj = addProp(curObj,prop); 413 newObj = addProp(curObj,prop);
414 curObj = newObj; 414 curObj = newObj;
415 } 415 }
416 else 416 else
417 curObj = newVObject(prop); 417 curObj = newVObject(prop);
418 418
419 return TRUE; 419 return TRUE;
420 } 420 }
421 421
422 422
423/*---------------------------------------*/ 423/*---------------------------------------*/
424/* This pops the recently built vCard off the stack and returns it. */ 424/* This pops the recently built vCard off the stack and returns it. */
425static VObject* popVObject() 425static VObject* popVObject()
426 { 426 {
427 VObject *oldObj; 427 VObject *oldObj;
428 if (ObjStackTop < 0) { 428 if (ObjStackTop < 0) {
429 yyerror("pop on empty Object Stack\n"); 429 yyerror("pop on empty Object Stack\n");
430 return 0; 430 return 0;
431 } 431 }
432 oldObj = curObj; 432 oldObj = curObj;
433 curObj = ObjStack[ObjStackTop--]; 433 curObj = ObjStack[ObjStackTop--];
434 434
435 return oldObj; 435 return oldObj;
436 } 436 }
437 437
438 438
439static void enterValues(const char *value) 439static void enterValues(const char *value)
440 { 440 {
441 if (fieldedProp && *fieldedProp) { 441 if (fieldedProp && *fieldedProp) {
442 if (value) { 442 if (value) {
443 addPropValue(curProp,*fieldedProp,value); 443 addPropValue(curProp,*fieldedProp,value);
444 } 444 }
445 /* else this field is empty, advance to next field */ 445 /* else this field is empty, advance to next field */
446 fieldedProp++; 446 fieldedProp++;
447 } 447 }
448 else { 448 else {
449 if (value) { 449 if (value) {
450 setVObjectStringZValue_(curProp,strdup( value )); 450 setVObjectStringZValue_(curProp,strdup( value ));
451 } 451 }
452 } 452 }
453 deleteStr(value); 453 deleteStr(value);
454 } 454 }
455 455
456static void enterProps(const char *s) 456static void enterProps(const char *s)
457 { 457 {
458 curProp = addGroup(curObj,s); 458 curProp = addGroup(curObj,s);
459 deleteStr(s); 459 deleteStr(s);
460 } 460 }
461 461
462static void enterAttr(const char *s1, const char *s2) 462static void enterAttr(const char *s1, const char *s2)
463 { 463 {
464 const char *p1, *p2; 464 const char *p1, *p2;
465 p1 = lookupProp_(s1); 465 p1 = lookupProp_(s1);
466 if (s2) { 466 if (s2) {
467 VObject *a; 467 VObject *a;
468 p2 = lookupProp_(s2); 468 p2 = lookupProp_(s2);
469 a = addProp(curProp,p1); 469 a = addProp(curProp,p1);
470 setVObjectStringZValue(a,p2); 470 setVObjectStringZValue(a,p2);
471 } 471 }
472 else 472 else
473 addProp(curProp,p1); 473 addProp(curProp,p1);
474 if (qstricmp(p1,VCBase64Prop) == 0 || (s2 && qstricmp(p2,VCBase64Prop)==0)) 474 if (qstricmp(p1,VCBase64Prop) == 0 || (s2 && qstricmp(p2,VCBase64Prop)==0))
475 lexPushMode(L_BASE64); 475 lexPushMode(L_BASE64);
476 else if (qstricmp(p1,VCQuotedPrintableProp) == 0 476 else if (qstricmp(p1,VCQuotedPrintableProp) == 0
477 || (s2 && qstricmp(p2,VCQuotedPrintableProp)==0)) 477 || (s2 && qstricmp(p2,VCQuotedPrintableProp)==0))
478 lexPushMode(L_QUOTED_PRINTABLE); 478 lexPushMode(L_QUOTED_PRINTABLE);
479 deleteStr(s1); deleteStr(s2); 479 deleteStr(s1); deleteStr(s2);
480 } 480 }
481 481
482 482
483#define MAX_LEX_LOOKAHEAD_0 32 483#define MAX_LEX_LOOKAHEAD_0 32
484#define MAX_LEX_LOOKAHEAD 64 484#define MAX_LEX_LOOKAHEAD 64
485#define MAX_LEX_MODE_STACK_SIZE 10 485#define MAX_LEX_MODE_STACK_SIZE 10
486#define LEXMODE() (lexBuf.lexModeStack[lexBuf.lexModeStackTop]) 486#define LEXMODE() (lexBuf.lexModeStack[lexBuf.lexModeStackTop])
487 487
488struct LexBuf { 488struct LexBuf {
489 /* input */ 489 /* input */
490#ifdef INCLUDEMFC 490#ifdef INCLUDEMFC
491 CFile *inputFile; 491 CFile *inputFile;
492#else 492#else
493 FILE *inputFile; 493 FILE *inputFile;
494#endif 494#endif
495 char *inputString; 495 char *inputString;
496 unsigned long curPos; 496 unsigned long curPos;
497 unsigned long inputLen; 497 unsigned long inputLen;
498 /* lookahead buffer */ 498 /* lookahead buffer */
499 /* -- lookahead buffer is short instead of char so that EOF 499 /* -- lookahead buffer is short instead of char so that EOF
500 / can be represented correctly. 500 / can be represented correctly.
501 */ 501 */
502 unsigned long len; 502 unsigned long len;
503 short buf[MAX_LEX_LOOKAHEAD]; 503 short buf[MAX_LEX_LOOKAHEAD];
504 unsigned long getPtr; 504 unsigned long getPtr;
505 /* context stack */ 505 /* context stack */
506 unsigned long lexModeStackTop; 506 unsigned long lexModeStackTop;
507 enum LexMode lexModeStack[MAX_LEX_MODE_STACK_SIZE]; 507 enum LexMode lexModeStack[MAX_LEX_MODE_STACK_SIZE];
508 /* token buffer */ 508 /* token buffer */
509 unsigned long maxToken; 509 unsigned long maxToken;
510 char *strs; 510 char *strs;
511 unsigned long strsLen; 511 unsigned long strsLen;
512 } lexBuf; 512 } lexBuf;
513 513
514static void lexPushMode(enum LexMode mode) 514static void lexPushMode(enum LexMode mode)
515 { 515 {
516 if (lexBuf.lexModeStackTop == (MAX_LEX_MODE_STACK_SIZE-1)) 516 if (lexBuf.lexModeStackTop == (MAX_LEX_MODE_STACK_SIZE-1))
517 yyerror("lexical context stack overflow"); 517 yyerror("lexical context stack overflow");
518 else { 518 else {
519 lexBuf.lexModeStack[++lexBuf.lexModeStackTop] = mode; 519 lexBuf.lexModeStack[++lexBuf.lexModeStackTop] = mode;
520 } 520 }
521 } 521 }
522 522
523static void lexPopMode(int top) 523static void lexPopMode(int top)
524 { 524 {
525 /* special case of pop for ease of error recovery -- this 525 /* special case of pop for ease of error recovery -- this
526 version will never underflow */ 526 version will never underflow */
527 if (top) 527 if (top)
528 lexBuf.lexModeStackTop = 0; 528 lexBuf.lexModeStackTop = 0;
529 else 529 else
530 if (lexBuf.lexModeStackTop > 0) lexBuf.lexModeStackTop--; 530 if (lexBuf.lexModeStackTop > 0) lexBuf.lexModeStackTop--;
531 } 531 }
532 532
533static int lexWithinMode(enum LexMode mode) { 533static int lexWithinMode(enum LexMode mode) {
534 unsigned long i; 534 unsigned long i;
535 for (i=0;i<lexBuf.lexModeStackTop;i++) 535 for (i=0;i<lexBuf.lexModeStackTop;i++)
536 if (mode == lexBuf.lexModeStack[i]) return 1; 536 if (mode == lexBuf.lexModeStack[i]) return 1;
537 return 0; 537 return 0;
538 } 538 }
539 539
540static int lexGetc_() 540static int lexGetc_()
541 { 541 {
542 /* get next char from input, no buffering. */ 542 /* get next char from input, no buffering. */
543 if (lexBuf.curPos == lexBuf.inputLen) 543 if (lexBuf.curPos == lexBuf.inputLen)
544 return EOF; 544 return EOF;
545 else if (lexBuf.inputString) 545 else if (lexBuf.inputString)
546 return *(lexBuf.inputString + lexBuf.curPos++); 546 return *(lexBuf.inputString + lexBuf.curPos++);
547 else { 547 else {
548#ifdef INCLUDEMFC 548#ifdef INCLUDEMFC
549 char result; 549 char result;
550 return lexBuf.inputFile->Read(&result, 1) == 1 ? result : EOF; 550 return lexBuf.inputFile->Read(&result, 1) == 1 ? result : EOF;
551#else 551#else
552 return fgetc(lexBuf.inputFile); 552 return fgetc(lexBuf.inputFile);
553#endif 553#endif
554 } 554 }
555 } 555 }
556 556
557static int lexGeta() 557static int lexGeta()
558 { 558 {
559 ++lexBuf.len; 559 ++lexBuf.len;
560 return (lexBuf.buf[lexBuf.getPtr] = lexGetc_()); 560 return (lexBuf.buf[lexBuf.getPtr] = lexGetc_());
561 } 561 }
562 562
563static int lexGeta_(int i) 563static int lexGeta_(int i)
564 { 564 {
565 ++lexBuf.len; 565 ++lexBuf.len;
566 return (lexBuf.buf[(lexBuf.getPtr+i)%MAX_LEX_LOOKAHEAD] = lexGetc_()); 566 return (lexBuf.buf[(lexBuf.getPtr+i)%MAX_LEX_LOOKAHEAD] = lexGetc_());
567 } 567 }
568 568
569static void lexSkipLookahead() { 569static void lexSkipLookahead() {
570 if (lexBuf.len > 0 && lexBuf.buf[lexBuf.getPtr]!=EOF) { 570 if (lexBuf.len > 0 && lexBuf.buf[lexBuf.getPtr]!=EOF) {
571 /* don't skip EOF. */ 571 /* don't skip EOF. */
572 lexBuf.getPtr = (lexBuf.getPtr + 1) % MAX_LEX_LOOKAHEAD; 572 lexBuf.getPtr = (lexBuf.getPtr + 1) % MAX_LEX_LOOKAHEAD;
573 lexBuf.len--; 573 lexBuf.len--;
574 } 574 }
575 } 575 }
576 576
577static int lexLookahead() { 577static int lexLookahead() {
578 int c = (lexBuf.len)? 578 int c = (lexBuf.len)?
579 lexBuf.buf[lexBuf.getPtr]: 579 lexBuf.buf[lexBuf.getPtr]:
580 lexGeta(); 580 lexGeta();
581 /* do the \r\n -> \n or \r -> \n translation here */ 581 /* do the \r\n -> \n or \r -> \n translation here */
582 if (c == '\r') { 582 if (c == '\r') {
583 int a = (lexBuf.len>1)? 583 int a = (lexBuf.len>1)?
584 lexBuf.buf[(lexBuf.getPtr+1)%MAX_LEX_LOOKAHEAD]: 584 lexBuf.buf[(lexBuf.getPtr+1)%MAX_LEX_LOOKAHEAD]:
585 lexGeta_(1); 585 lexGeta_(1);
586 if (a == '\n') { 586 if (a == '\n') {
587 lexSkipLookahead(); 587 lexSkipLookahead();
588 } 588 }
589 lexBuf.buf[lexBuf.getPtr] = c = '\n'; 589 lexBuf.buf[lexBuf.getPtr] = c = '\n';
590 } 590 }
591 else if (c == '\n') { 591 else if (c == '\n') {
592 int a = (lexBuf.len>1)? 592 int a = (lexBuf.len>1)?
593 lexBuf.buf[lexBuf.getPtr+1]: 593 lexBuf.buf[lexBuf.getPtr+1]:
594 lexGeta_(1); 594 lexGeta_(1);
595 if (a == '\r') { 595 if (a == '\r') {
596 lexSkipLookahead(); 596 lexSkipLookahead();
597 } 597 }
598 lexBuf.buf[lexBuf.getPtr] = '\n'; 598 lexBuf.buf[lexBuf.getPtr] = '\n';
599 } 599 }
600 return c; 600 return c;
601 } 601 }
602 602
603static int lexGetc() { 603static int lexGetc() {
604 int c = lexLookahead(); 604 int c = lexLookahead();
605 if (lexBuf.len > 0 && lexBuf.buf[lexBuf.getPtr]!=EOF) { 605 if (lexBuf.len > 0 && lexBuf.buf[lexBuf.getPtr]!=EOF) {
606 /* EOF will remain in lookahead buffer */ 606 /* EOF will remain in lookahead buffer */
607 lexBuf.getPtr = (lexBuf.getPtr + 1) % MAX_LEX_LOOKAHEAD; 607 lexBuf.getPtr = (lexBuf.getPtr + 1) % MAX_LEX_LOOKAHEAD;
608 lexBuf.len--; 608 lexBuf.len--;
609 } 609 }
610 return c; 610 return c;
611 } 611 }
612 612
613static void lexSkipLookaheadWord() { 613static void lexSkipLookaheadWord() {
614 if (lexBuf.strsLen <= lexBuf.len) { 614 if (lexBuf.strsLen <= lexBuf.len) {
615 lexBuf.len -= lexBuf.strsLen; 615 lexBuf.len -= lexBuf.strsLen;
616 lexBuf.getPtr = (lexBuf.getPtr + lexBuf.strsLen) % MAX_LEX_LOOKAHEAD; 616 lexBuf.getPtr = (lexBuf.getPtr + lexBuf.strsLen) % MAX_LEX_LOOKAHEAD;
617 } 617 }
618 } 618 }
619 619
620static void lexClearToken() 620static void lexClearToken()
621 { 621 {
622 lexBuf.strsLen = 0; 622 lexBuf.strsLen = 0;
623 } 623 }
624 624
625static void lexAppendc(int c) 625static void lexAppendc(int c)
626 { 626 {
627 lexBuf.strs[lexBuf.strsLen] = c; 627 lexBuf.strs[lexBuf.strsLen] = c;
628 /* append up to zero termination */ 628 /* append up to zero termination */
629 if (c == 0) return; 629 if (c == 0) return;
630 lexBuf.strsLen++; 630 lexBuf.strsLen++;
631 if (lexBuf.strsLen > lexBuf.maxToken) { 631 if (lexBuf.strsLen > lexBuf.maxToken) {
632 /* double the token string size */ 632 /* double the token string size */
633 lexBuf.maxToken <<= 1; 633 lexBuf.maxToken <<= 1;
634 lexBuf.strs = (char*) realloc(lexBuf.strs,(size_t)lexBuf.maxToken); 634 lexBuf.strs = (char*) realloc(lexBuf.strs,(size_t)lexBuf.maxToken);
635 } 635 }
636 } 636 }
637 637
638static char* lexStr() { 638static char* lexStr() {
639 return dupStr(lexBuf.strs,(size_t)lexBuf.strsLen+1); 639 return dupStr(lexBuf.strs,(size_t)lexBuf.strsLen+1);
640 } 640 }
641 641
642static void lexSkipWhite() { 642static void lexSkipWhite() {
643 int c = lexLookahead(); 643 int c = lexLookahead();
644 while (c == ' ' || c == '\t') { 644 while (c == ' ' || c == '\t') {
645 lexSkipLookahead(); 645 lexSkipLookahead();
646 c = lexLookahead(); 646 c = lexLookahead();
647 } 647 }
648 } 648 }
649 649
650static char* lexGetWord() { 650static char* lexGetWord() {
651 int c; 651 int c;
652 lexSkipWhite(); 652 lexSkipWhite();
653 lexClearToken(); 653 lexClearToken();
654 c = lexLookahead(); 654 c = lexLookahead();
655 while (c != EOF && !strchr("\t\n ;:=",c)) { 655 while (c != EOF && !strchr("\t\n ;:=",c)) {
656 lexAppendc(c); 656 lexAppendc(c);
657 lexSkipLookahead(); 657 lexSkipLookahead();
658 c = lexLookahead(); 658 c = lexLookahead();
659 } 659 }
660 lexAppendc(0); 660 lexAppendc(0);
661 return lexStr(); 661 return lexStr();
662 } 662 }
663 663
664static void lexPushLookaheadc(int c) { 664static void lexPushLookaheadc(int c) {
665 int putptr; 665 int putptr;
666 /* can't putback EOF, because it never leaves lookahead buffer */ 666 /* can't putback EOF, because it never leaves lookahead buffer */
667 if (c == EOF) return; 667 if (c == EOF) return;
668 putptr = (int)lexBuf.getPtr - 1; 668 putptr = (int)lexBuf.getPtr - 1;
669 if (putptr < 0) putptr += MAX_LEX_LOOKAHEAD; 669 if (putptr < 0) putptr += MAX_LEX_LOOKAHEAD;
670 lexBuf.getPtr = putptr; 670 lexBuf.getPtr = putptr;
671 lexBuf.buf[putptr] = c; 671 lexBuf.buf[putptr] = c;
672 lexBuf.len += 1; 672 lexBuf.len += 1;
673 } 673 }
674 674
675static char* lexLookaheadWord() { 675static char* lexLookaheadWord() {
676 /* this function can lookahead word with max size of MAX_LEX_LOOKAHEAD_0 676 /* this function can lookahead word with max size of MAX_LEX_LOOKAHEAD_0
677 / and thing bigger than that will stop the lookahead and return 0; 677 / and thing bigger than that will stop the lookahead and return 0;
678 / leading white spaces are not recoverable. 678 / leading white spaces are not recoverable.
679 */ 679 */
680 int c; 680 int c;
681 int len = 0; 681 int len = 0;
682 int curgetptr = 0; 682 int curgetptr = 0;
683 lexSkipWhite(); 683 lexSkipWhite();
684 lexClearToken(); 684 lexClearToken();
685 curgetptr = (int)lexBuf.getPtr;// remember! 685 curgetptr = (int)lexBuf.getPtr;// remember!
686 while (len < (MAX_LEX_LOOKAHEAD_0)) { 686 while (len < (MAX_LEX_LOOKAHEAD_0)) {
687 c = lexGetc(); 687 c = lexGetc();
688 len++; 688 len++;
689 if (c == EOF || strchr("\t\n ;:=", c)) { 689 if (c == EOF || strchr("\t\n ;:=", c)) {
690 lexAppendc(0); 690 lexAppendc(0);
691 /* restore lookahead buf. */ 691 /* restore lookahead buf. */
692 lexBuf.len += len; 692 lexBuf.len += len;
693 lexBuf.getPtr = curgetptr; 693 lexBuf.getPtr = curgetptr;
694 return lexStr(); 694 return lexStr();
695 } 695 }
696 else 696 else
697 lexAppendc(c); 697 lexAppendc(c);
698 } 698 }
699 lexBuf.len += len;/* char that has been moved to lookahead buffer */ 699 lexBuf.len += len;/* char that has been moved to lookahead buffer */
700 lexBuf.getPtr = curgetptr; 700 lexBuf.getPtr = curgetptr;
701 return 0; 701 return 0;
702 } 702 }
703 703
704#ifdef _SUPPORT_LINE_FOLDING 704#ifdef _SUPPORT_LINE_FOLDING
705static void handleMoreRFC822LineBreak(int c) { 705static void handleMoreRFC822LineBreak(int c) {
706 /* suport RFC 822 line break in cases like 706 /* suport RFC 822 line break in cases like
707 *ADR: foo; 707 *ADR: foo;
708 * morefoo; 708 * morefoo;
709 * more foo; 709 * more foo;
710 */ 710 */
711 if (c == ';') { 711 if (c == ';') {
712 int a; 712 int a;
713 lexSkipLookahead(); 713 lexSkipLookahead();
714 /* skip white spaces */ 714 /* skip white spaces */
715 a = lexLookahead(); 715 a = lexLookahead();
716 while (a == ' ' || a == '\t') { 716 while (a == ' ' || a == '\t') {
717 lexSkipLookahead(); 717 lexSkipLookahead();
718 a = lexLookahead(); 718 a = lexLookahead();
719 } 719 }
720 if (a == '\n') { 720 if (a == '\n') {
721 lexSkipLookahead(); 721 lexSkipLookahead();
722 a = lexLookahead(); 722 a = lexLookahead();
723 if (a == ' ' || a == '\t') { 723 if (a == ' ' || a == '\t') {
724 /* continuation, throw away all the \n and spaces read so 724 /* continuation, throw away all the \n and spaces read so
725 * far 725 * far
726 */ 726 */
727 lexSkipWhite(); 727 lexSkipWhite();
728 lexPushLookaheadc(';'); 728 lexPushLookaheadc(';');
729 } 729 }
730 else { 730 else {
731 lexPushLookaheadc('\n'); 731 lexPushLookaheadc('\n');
732 lexPushLookaheadc(';'); 732 lexPushLookaheadc(';');
733 } 733 }
734 } 734 }
735 else { 735 else {
736 lexPushLookaheadc(';'); 736 lexPushLookaheadc(';');
737 } 737 }
738 } 738 }
739 } 739 }
740 740
741static char* lexGet1Value() { 741static char* lexGet1Value() {
742 int c; 742 int c;
743 lexSkipWhite(); 743 lexSkipWhite();
744 c = lexLookahead(); 744 c = lexLookahead();
745 lexClearToken(); 745 lexClearToken();
746 while (c != EOF && (c != ';' || !fieldedProp)) { 746 while (c != EOF && (c != ';' || !fieldedProp)) {
747 if (c == '\\' ) { 747 if (c == '\\' ) {
748 int a; 748 int a;
749 lexSkipLookahead(); 749 lexSkipLookahead();
750 a = lexLookahead(); 750 a = lexLookahead();
751 if ( a == ';' ) { 751 if ( a == ';' ) {
752 lexAppendc( ';' ); 752 lexAppendc( ';' );
753 lexSkipLookahead(); 753 lexSkipLookahead();
754 } else if ( a == '\n' ) { 754 } else if ( a == '\n' ) {
755 lexAppendc( '\n' ); 755 lexAppendc( '\n' );
756 lexSkipLookahead(); 756 lexSkipLookahead();
757 } else if ( a == '\\' ) { 757 } else if ( a == '\\' ) {
758 lexAppendc( '\\' ); 758 lexAppendc( '\\' );
759 lexSkipLookahead(); 759 lexSkipLookahead();
760 } else { 760 } else {
761 lexAppendc('\\'); 761 lexAppendc('\\');
762 } 762 }
763 } else if (c == '\n') { 763 } else if (c == '\n') {
764 int a; 764 int a;
765 lexSkipLookahead(); 765 lexSkipLookahead();
766 a = lexLookahead(); 766 a = lexLookahead();
767 if (a == ' ' || a == '\t') { 767 if (a == ' ' || a == '\t') {
768 lexAppendc(' '); 768 lexAppendc(' ');
769 lexSkipLookahead(); 769 lexSkipLookahead();
770 } 770 }
771 else { 771 else {
772 lexPushLookaheadc('\n'); 772 lexPushLookaheadc('\n');
773 break; 773 break;
774 } 774 }
775 } 775 }
776 else { 776 else {
777 lexAppendc(c); 777 lexAppendc(c);
778 lexSkipLookahead(); 778 lexSkipLookahead();
779 } 779 }
780 c = lexLookahead(); 780 c = lexLookahead();
781 } 781 }
782 lexAppendc(0); 782 lexAppendc(0);
783 handleMoreRFC822LineBreak(c); 783 handleMoreRFC822LineBreak(c);
784 return c==EOF?0:lexStr(); 784 return c==EOF?0:lexStr();
785 } 785 }
786#endif 786#endif
787 787
788static int match_begin_name(int end) { 788static int match_begin_name(int end) {
789 char *n = lexLookaheadWord(); 789 char *n = lexLookaheadWord();
790 int token = ID; 790 int token = ID;
791 if (n) { 791 if (n) {
792 if (!qstricmp(n,"vcard")) token = end?END_VCARD:BEGIN_VCARD; 792 if (!qstricmp(n,"vcard")) token = end?END_VCARD:BEGIN_VCARD;
793 else if (!qstricmp(n,"vcalendar")) token = end?END_VCAL:BEGIN_VCAL; 793 else if (!qstricmp(n,"vcalendar")) token = end?END_VCAL:BEGIN_VCAL;
794 else if (!qstricmp(n,"vevent")) token = end?END_VEVENT:BEGIN_VEVENT; 794 else if (!qstricmp(n,"vevent")) token = end?END_VEVENT:BEGIN_VEVENT;
795 else if (!qstricmp(n,"vtodo")) token = end?END_VTODO:BEGIN_VTODO; 795 else if (!qstricmp(n,"vtodo")) token = end?END_VTODO:BEGIN_VTODO;
796 deleteStr(n); 796 deleteStr(n);
797 return token; 797 return token;
798 } 798 }
799 return 0; 799 return 0;
800 } 800 }
801 801
802 802
803#ifdef INCLUDEMFC 803#ifdef INCLUDEMFC
804void initLex(const char *inputstring, unsigned long inputlen, CFile *inputfile) 804void initLex(const char *inputstring, unsigned long inputlen, CFile *inputfile)
805#else 805#else
806void initLex(const char *inputstring, unsigned long inputlen, FILE *inputfile) 806void initLex(const char *inputstring, unsigned long inputlen, FILE *inputfile)
807#endif 807#endif
808 { 808 {
809 // initialize lex mode stack 809 // initialize lex mode stack
810 lexBuf.lexModeStack[lexBuf.lexModeStackTop=0] = L_NORMAL; 810 lexBuf.lexModeStack[lexBuf.lexModeStackTop=0] = L_NORMAL;
811 811
812 // iniatialize lex buffer. 812 // iniatialize lex buffer.
813 lexBuf.inputString = (char*) inputstring; 813 lexBuf.inputString = (char*) inputstring;
814 lexBuf.inputLen = inputlen; 814 lexBuf.inputLen = inputlen;
815 lexBuf.curPos = 0; 815 lexBuf.curPos = 0;
816 lexBuf.inputFile = inputfile; 816 lexBuf.inputFile = inputfile;
817 817
818 lexBuf.len = 0; 818 lexBuf.len = 0;
819 lexBuf.getPtr = 0; 819 lexBuf.getPtr = 0;
820 820
821 lexBuf.maxToken = MAXTOKEN; 821 lexBuf.maxToken = MAXTOKEN;
822 lexBuf.strs = (char*)malloc(MAXTOKEN); 822 lexBuf.strs = (char*)malloc(MAXTOKEN);
823 lexBuf.strsLen = 0; 823 lexBuf.strsLen = 0;
824 824
825 } 825 }
826 826
827static void finiLex() { 827static void finiLex() {
828 free(lexBuf.strs); 828 free(lexBuf.strs);
829 } 829 }
830 830
831 831
832/*-----------------------------------*/ 832/*-----------------------------------*/
833/* This parses and converts the base64 format for binary encoding into 833/* This parses and converts the base64 format for binary encoding into
834 * a decoded buffer (allocated with new). See RFC 1521. 834 * a decoded buffer (allocated with new). See RFC 1521.
835 */ 835 */
836static char * lexGetDataFromBase64() 836static char * lexGetDataFromBase64()
837 { 837 {
838 unsigned long bytesLen = 0, bytesMax = 0; 838 unsigned long bytesLen = 0, bytesMax = 0;
839 int quadIx = 0, pad = 0; 839 int quadIx = 0, pad = 0;
840 unsigned long trip = 0; 840 unsigned long trip = 0;
841 unsigned char b; 841 unsigned char b;
842 int c; 842 int c;
843 unsigned char *bytes = NULL; 843 unsigned char *bytes = NULL;
844 unsigned char *oldBytes = NULL; 844 unsigned char *oldBytes = NULL;
845 845
846 DBG_(("db: lexGetDataFromBase64\n")); 846 DBG_(("db: lexGetDataFromBase64\n"));
847 while (1) { 847 while (1) {
848 c = lexGetc(); 848 c = lexGetc();
849 if (c == '\n') { 849 if (c == '\n') {
850 ++mime_lineNum; 850 ++mime_lineNum;
851 if (lexLookahead() == '\n') { 851 if (lexLookahead() == '\n') {
852 /* a '\n' character by itself means end of data */ 852 /* a '\n' character by itself means end of data */
853 break; 853 break;
854 } 854 }
855 else continue; /* ignore '\n' */ 855 else continue; /* ignore '\n' */
856 } 856 }
857 else { 857 else {
858 if ((c >= 'A') && (c <= 'Z')) 858 if ((c >= 'A') && (c <= 'Z'))
859 b = (unsigned char)(c - 'A'); 859 b = (unsigned char)(c - 'A');
860 else if ((c >= 'a') && (c <= 'z')) 860 else if ((c >= 'a') && (c <= 'z'))
861 b = (unsigned char)(c - 'a') + 26; 861 b = (unsigned char)(c - 'a') + 26;
862 else if ((c >= '0') && (c <= '9')) 862 else if ((c >= '0') && (c <= '9'))
863 b = (unsigned char)(c - '0') + 52; 863 b = (unsigned char)(c - '0') + 52;
864 else if (c == '+') 864 else if (c == '+')
865 b = 62; 865 b = 62;
866 else if (c == '/') 866 else if (c == '/')
867 b = 63; 867 b = 63;
868 else if (c == '=') { 868 else if (c == '=') {
869 b = 0; 869 b = 0;
870 pad++; 870 pad++;
871 } else if ((c == ' ') || (c == '\t')) { 871 } else if ((c == ' ') || (c == '\t')) {
872 continue; 872 continue;
873 } else { /* error condition */ 873 } else { /* error condition */
874 if (bytes) free(bytes); 874 if (bytes) free(bytes);
875 else if (oldBytes) free(oldBytes); 875 else if (oldBytes) free(oldBytes);
876 // error recovery: skip until 2 adjacent newlines. 876 // error recovery: skip until 2 adjacent newlines.
877 DBG_(("db: invalid character 0x%x '%c'\n", c,c)); 877 DBG_(("db: invalid character 0x%x '%c'\n", c,c));
878 if (c != EOF) { 878 if (c != EOF) {
879 c = lexGetc(); 879 c = lexGetc();
880 while (c != EOF) { 880 while (c != EOF) {
881 if (c == '\n' && lexLookahead() == '\n') { 881 if (c == '\n' && lexLookahead() == '\n') {
882 ++mime_lineNum; 882 ++mime_lineNum;
883 break; 883 break;
884 } 884 }
885 c = lexGetc(); 885 c = lexGetc();
886 } 886 }
887 } 887 }
888 return NULL; 888 return NULL;
889 } 889 }
890 trip = (trip << 6) | b; 890 trip = (trip << 6) | b;
891 if (++quadIx == 4) { 891 if (++quadIx == 4) {
892 unsigned char outBytes[3]; 892 unsigned char outBytes[3];
893 int numOut; 893 int numOut;
894 int i; 894 int i;
895 for (i = 0; i < 3; i++) { 895 for (i = 0; i < 3; i++) {
896 outBytes[2-i] = (unsigned char)(trip & 0xFF); 896 outBytes[2-i] = (unsigned char)(trip & 0xFF);
897 trip >>= 8; 897 trip >>= 8;
898 } 898 }
899 numOut = 3 - pad; 899 numOut = 3 - pad;
900 if (bytesLen + numOut > bytesMax) { 900 if (bytesLen + numOut > bytesMax) {
901 if (!bytes) { 901 if (!bytes) {
902 bytesMax = 1024; 902 bytesMax = 1024;
903 bytes = (unsigned char*)malloc((size_t)bytesMax); 903 bytes = (unsigned char*)malloc((size_t)bytesMax);
904 } 904 }
905 else { 905 else {
906 bytesMax <<= 2; 906 bytesMax <<= 2;
907 oldBytes = bytes; 907 oldBytes = bytes;
908 bytes = (unsigned char*)realloc(bytes,(size_t)bytesMax); 908 bytes = (unsigned char*)realloc(bytes,(size_t)bytesMax);
909 } 909 }
910 if (bytes == 0) { 910 if (bytes == 0) {
911 mime_error("out of memory while processing BASE64 data\n"); 911 mime_error("out of memory while processing BASE64 data\n");
912 } 912 }
913 } 913 }
914 if (bytes) { 914 if (bytes) {
915 memcpy(bytes + bytesLen, outBytes, numOut); 915 memcpy(bytes + bytesLen, outBytes, numOut);
916 bytesLen += numOut; 916 bytesLen += numOut;
917 } 917 }
918 trip = 0; 918 trip = 0;
919 quadIx = 0; 919 quadIx = 0;
920 } 920 }
921 } 921 }
922 } /* while */ 922 } /* while */
923 DBG_(("db: bytesLen = %d\n", bytesLen)); 923 DBG_(("db: bytesLen = %d\n", bytesLen));
924 /* kludge: all this won't be necessary if we have tree form 924 /* kludge: all this won't be necessary if we have tree form
925 representation */ 925 representation */
926 if (bytes) { 926 if (bytes) {
927 setValueWithSize(curProp,bytes,(unsigned int)bytesLen); 927 setValueWithSize(curProp,bytes,(unsigned int)bytesLen);
928 free(bytes); 928 free(bytes);
929 } 929 }
930 else if (oldBytes) { 930 else if (oldBytes) {
931 setValueWithSize(curProp,oldBytes,(unsigned int)bytesLen); 931 setValueWithSize(curProp,oldBytes,(unsigned int)bytesLen);
932 free(oldBytes); 932 free(oldBytes);
933 } 933 }
934 return 0; 934 return 0;
935 } 935 }
936 936
937static int match_begin_end_name(int end) { 937static int match_begin_end_name(int end) {
938 int token; 938 int token;
939 lexSkipWhite(); 939 lexSkipWhite();
940 if (lexLookahead() != ':') return ID; 940 if (lexLookahead() != ':') return ID;
941 lexSkipLookahead(); 941 lexSkipLookahead();
942 lexSkipWhite(); 942 lexSkipWhite();
943 token = match_begin_name(end); 943 token = match_begin_name(end);
944 if (token == ID) { 944 if (token == ID) {
945 lexPushLookaheadc(':'); 945 lexPushLookaheadc(':');
946 DBG_(("db: ID '%s'\n", yylval.str)); 946 DBG_(("db: ID '%s'\n", yylval.str));
947 return ID; 947 return ID;
948 } 948 }
949 else if (token != 0) { 949 else if (token != 0) {
950 lexSkipLookaheadWord(); 950 lexSkipLookaheadWord();
951 deleteStr(yylval.str); 951 deleteStr(yylval.str);
952 DBG_(("db: begin/end %d\n", token)); 952 DBG_(("db: begin/end %d\n", token));
953 return token; 953 return token;
954 } 954 }
955 return 0; 955 return 0;
956 } 956 }
957 957
958static char* lexGetQuotedPrintable() 958static char* lexGetQuotedPrintable()
959{ 959{
960 int c; 960 int c;
961 lexSkipWhite(); 961 lexSkipWhite();
962 c = lexLookahead(); 962 c = lexLookahead();
963 lexClearToken(); 963 lexClearToken();
964 964
965 while (c != EOF && c != ';') { 965 while (c != EOF && c != ';') {
966 if (c == '\n') { 966 if (c == '\n') {
967 // break, leave '\n' on remaining chars. 967 // break, leave '\n' on remaining chars.
968 break; 968 break;
969 } else if (c == '=') { 969 } else if (c == '=') {
970 int cur = 0; 970 int cur = 0;
971 int next; 971 int next;
972 972
973 lexSkipLookahead(); // skip '=' 973 lexSkipLookahead(); // skip '='
974 next = lexLookahead(); 974 next = lexLookahead();
975 975
976 if (next == '\n') { 976 if (next == '\n') {
977 // skip and only skip the \n 977 // skip and only skip the \n
978 lexSkipLookahead(); 978 lexSkipLookahead();
979 c = lexLookahead(); 979 c = lexLookahead();
980 ++mime_lineNum; // aid in error reporting 980 ++mime_lineNum; // aid in error reporting
981 continue; 981 continue;
982 } else if (next >= '0' && next <= '9') { 982 } else if (next >= '0' && next <= '9') {
983 cur = next - '0'; 983 cur = next - '0';
984 } else if (next >= 'A' && next <= 'F') { 984 } else if (next >= 'A' && next <= 'F') {
985 cur = next - 'A' + 10; 985 cur = next - 'A' + 10;
986 } else { 986 } else {
987 // we have been sent buggy stuff. doesn't matter 987 // we have been sent buggy stuff. doesn't matter
988 // what we do so long as we keep going. 988 // what we do so long as we keep going.
989 // should probably spit an error here 989 // should probably spit an error here
990 lexSkipLookahead(); 990 lexSkipLookahead();
991 c = lexLookahead(); 991 c = lexLookahead();
992 continue; 992 continue;
993 } 993 }
994 994
995 lexSkipLookahead(); // skip A-Z0-9 995 lexSkipLookahead(); // skip A-Z0-9
996 next = lexLookahead(); 996 next = lexLookahead();
997 997
998 cur = cur * 16; 998 cur = cur * 16;
999 // this time really just expecting 0-9A-F 999 // this time really just expecting 0-9A-F
1000 if (next >= '0' && next <= '9') { 1000 if (next >= '0' && next <= '9') {
1001 cur += next - '0'; 1001 cur += next - '0';
1002 } else if (next >= 'A' && next <= 'F') { 1002 } else if (next >= 'A' && next <= 'F') {
1003 cur += next - 'A' + 10; 1003 cur += next - 'A' + 10;
1004 } else { 1004 } else {
1005 // we have been sent buggy stuff. doesn't matter 1005 // we have been sent buggy stuff. doesn't matter
1006 // what we do so long as we keep going. 1006 // what we do so long as we keep going.
1007 // should probably spit an error here 1007 // should probably spit an error here
1008 lexSkipLookahead(); 1008 lexSkipLookahead();
1009 c = lexLookahead(); 1009 c = lexLookahead();
1010 continue; 1010 continue;
1011 } 1011 }
1012 1012
1013 // got a valid escaped =. append it. 1013 // got a valid escaped =. append it.
1014 lexSkipLookahead(); // skip second 0-9A-F 1014 lexSkipLookahead(); // skip second 0-9A-F
1015 lexAppendc(cur); 1015 lexAppendc(cur);
1016 } else { 1016 } else {
1017 lexSkipLookahead(); // skip whatever we just read. 1017 lexSkipLookahead(); // skip whatever we just read.
1018 lexAppendc(c); // and append it. 1018 lexAppendc(c); // and append it.
1019 } 1019 }
1020 c = lexLookahead(); 1020 c = lexLookahead();
1021 } 1021 }
1022 lexAppendc(0); 1022 lexAppendc(0);
1023 return c==EOF?0:lexStr(); 1023 return c==EOF?0:lexStr();
1024} 1024}
1025 1025
1026static int yylex() { 1026static int yylex() {
1027 1027
1028 int lexmode = LEXMODE(); 1028 int lexmode = LEXMODE();
1029 if (lexmode == L_VALUES) { 1029 if (lexmode == L_VALUES) {
1030 int c = lexGetc(); 1030 int c = lexGetc();
1031 if (c == ';' && fieldedProp) { 1031 if (c == ';' && fieldedProp) {
1032 DBG_(("db: SEMICOLON\n")); 1032 DBG_(("db: SEMICOLON\n"));
1033 lexPushLookaheadc(c); 1033 lexPushLookaheadc(c);
1034 handleMoreRFC822LineBreak(c); 1034 handleMoreRFC822LineBreak(c);
1035 lexSkipLookahead(); 1035 lexSkipLookahead();
1036 return SEMICOLON; 1036 return SEMICOLON;
1037 } 1037 }
1038 else if (strchr("\n",c)) { 1038 else if (strchr("\n",c)) {
1039 ++mime_lineNum; 1039 ++mime_lineNum;
1040 /* consume all line separator(s) adjacent to each other */ 1040 /* consume all line separator(s) adjacent to each other */
1041 c = lexLookahead(); 1041 c = lexLookahead();
1042 while (strchr("\n",c)) { 1042 while (strchr("\n",c)) {
1043 lexSkipLookahead(); 1043 lexSkipLookahead();
1044 c = lexLookahead(); 1044 c = lexLookahead();
1045 ++mime_lineNum; 1045 ++mime_lineNum;
1046 } 1046 }
1047 DBG_(("db: LINESEP\n")); 1047 DBG_(("db: LINESEP\n"));
1048 return LINESEP; 1048 return LINESEP;
1049 } 1049 }
1050 else { 1050 else {
1051 char *p = 0; 1051 char *p = 0;
1052 lexPushLookaheadc(c); 1052 lexPushLookaheadc(c);
1053 if (lexWithinMode(L_BASE64)) { 1053 if (lexWithinMode(L_BASE64)) {
1054 /* get each char and convert to bin on the fly... */ 1054 /* get each char and convert to bin on the fly... */
1055 p = lexGetDataFromBase64(); 1055 p = lexGetDataFromBase64();
1056#if 0
1056 yylval.str = p; 1057 yylval.str = p;
1057 return STRING; 1058 return STRING;
1059 #endif
1058 } 1060 }
1059 else if (lexWithinMode(L_QUOTED_PRINTABLE)) { 1061 else if (lexWithinMode(L_QUOTED_PRINTABLE)) {
1060 p = lexGetQuotedPrintable(); 1062 p = lexGetQuotedPrintable();
1061 } 1063 }
1062 else { 1064 else {
1063#ifdef _SUPPORT_LINE_FOLDING 1065#ifdef _SUPPORT_LINE_FOLDING
1064 p = lexGet1Value(); 1066 p = lexGet1Value();
1065#else 1067#else
1066 p = lexGetStrUntil(";\n"); 1068 p = lexGetStrUntil(";\n");
1067#endif 1069#endif
1068 } 1070 }
1069 if (p) { 1071 if (p) {
1070 DBG_(("db: STRING: '%s'\n", p)); 1072 DBG_(("db: STRING: '%s'\n", p));
1071 yylval.str = p; 1073 yylval.str = p;
1072 return STRING; 1074 return STRING;
1073 } 1075 }
1074 else return 0; 1076 else return 0;
1075 } 1077 }
1076 } 1078 }
1077 else { 1079 else {
1078 /* normal mode */ 1080 /* normal mode */
1079 while (1) { 1081 while (1) {
1080 int c = lexGetc(); 1082 int c = lexGetc();
1081 switch(c) { 1083 switch(c) {
1082 case ':': { 1084 case ':': {
1083 /* consume all line separator(s) adjacent to each other */ 1085 /* consume all line separator(s) adjacent to each other */
1084 /* ignoring linesep immediately after colon. */ 1086 /* ignoring linesep immediately after colon. */
1085 /* I don't see this in the spec, and it breaks null values -- WA 1087 /* I don't see this in the spec, and it breaks null values -- WA
1086 c = lexLookahead(); 1088 c = lexLookahead();
1087 while (strchr("\n",c)) { 1089 while (strchr("\n",c)) {
1088 lexSkipLookahead(); 1090 lexSkipLookahead();
1089 c = lexLookahead(); 1091 c = lexLookahead();
1090 ++mime_lineNum; 1092 ++mime_lineNum;
1091 } 1093 }
1092 */ 1094 */
1093 DBG_(("db: COLON\n")); 1095 DBG_(("db: COLON\n"));
1094 return COLON; 1096 return COLON;
1095 } 1097 }
1096 case ';': 1098 case ';':
1097 DBG_(("db: SEMICOLON\n")); 1099 DBG_(("db: SEMICOLON\n"));
1098 return SEMICOLON; 1100 return SEMICOLON;
1099 case '=': 1101 case '=':
1100 DBG_(("db: EQ\n")); 1102 DBG_(("db: EQ\n"));
1101 return EQ; 1103 return EQ;
1102 /* ignore whitespace in this mode */ 1104 /* ignore whitespace in this mode */
1103 case '\t': 1105 case '\t':
1104 case ' ': continue; 1106 case ' ': continue;
1105 case '\n': { 1107 case '\n': {
1106 ++mime_lineNum; 1108 ++mime_lineNum;
1107 continue; 1109 continue;
1108 } 1110 }
1109 case EOF: return 0; 1111 case EOF: return 0;
1110 break; 1112 break;
1111 default: { 1113 default: {
1112 lexPushLookaheadc(c); 1114 lexPushLookaheadc(c);
1113 if (isalnum(c)) { 1115 if (isalnum(c)) {
1114 char *t = lexGetWord(); 1116 char *t = lexGetWord();
1115 yylval.str = t; 1117 yylval.str = t;
1116 if (!qstricmp(t, "begin")) { 1118 if (!qstricmp(t, "begin")) {
1117 return match_begin_end_name(0); 1119 return match_begin_end_name(0);
1118 } 1120 }
1119 else if (!qstricmp(t,"end")) { 1121 else if (!qstricmp(t,"end")) {
1120 return match_begin_end_name(1); 1122 return match_begin_end_name(1);
1121 } 1123 }
1122 else { 1124 else {
1123 DBG_(("db: ID '%s'\n", t)); 1125 DBG_(("db: ID '%s'\n", t));
1124 return ID; 1126 return ID;
1125 } 1127 }
1126 } 1128 }
1127 else { 1129 else {
1128 /* unknow token */ 1130 /* unknow token */
1129 return 0; 1131 return 0;
1130 } 1132 }
1131 break; 1133 break;
1132 } 1134 }
1133 } 1135 }
1134 } 1136 }
1135 } 1137 }
1136 return 0; 1138 return 0;
1137 } 1139 }
1138 1140
1139 1141
1140/***************************************************************************/ 1142/***************************************************************************/
1141 /*** Public Functions ****/ 1143 /*** Public Functions ****/
1142/***************************************************************************/ 1144/***************************************************************************/
1143 1145
1144static VObject* Parse_MIMEHelper() 1146static VObject* Parse_MIMEHelper()
1145 { 1147 {
1146 ObjStackTop = -1; 1148 ObjStackTop = -1;
1147 mime_numErrors = 0; 1149 mime_numErrors = 0;
1148 mime_lineNum = 1; 1150 mime_lineNum = 1;
1149 vObjList = 0; 1151 vObjList = 0;
1150 curObj = 0; 1152 curObj = 0;
1151 1153
1152 if (yyparse() != 0) 1154 if (yyparse() != 0)
1153 return 0; 1155 return 0;
1154 1156
1155 finiLex(); 1157 finiLex();
1156 return vObjList; 1158 return vObjList;
1157 } 1159 }
1158 1160
1159/*--------------------------------------------*/ 1161/*--------------------------------------------*/
1160DLLEXPORT(VObject*) Parse_MIME(const char *input, unsigned long len) 1162DLLEXPORT(VObject*) Parse_MIME(const char *input, unsigned long len)
1161 { 1163 {
1162 initLex(input, len, 0); 1164 initLex(input, len, 0);
1163 return Parse_MIMEHelper(); 1165 return Parse_MIMEHelper();
1164 } 1166 }
1165 1167
1166 1168
1167#if INCLUDEMFC 1169#if INCLUDEMFC
1168 1170
1169DLLEXPORT(VObject*) Parse_MIME_FromFile(CFile *file) 1171DLLEXPORT(VObject*) Parse_MIME_FromFile(CFile *file)
1170 { 1172 {
1171 unsigned long startPos; 1173 unsigned long startPos;
1172 VObject *result; 1174 VObject *result;
1173 1175
1174 initLex(0,-1,file); 1176 initLex(0,-1,file);
1175 startPos = file->GetPosition(); 1177 startPos = file->GetPosition();
1176 if (!(result = Parse_MIMEHelper())) 1178 if (!(result = Parse_MIMEHelper()))
1177 file->Seek(startPos, CFile::begin); 1179 file->Seek(startPos, CFile::begin);
1178 return result; 1180 return result;
1179 } 1181 }
1180 1182
1181#else 1183#else
1182 1184
1183VObject* Parse_MIME_FromFile(FILE *file) 1185VObject* Parse_MIME_FromFile(FILE *file)
1184 { 1186 {
1185 VObject *result; 1187 VObject *result;
1186 long startPos; 1188 long startPos;
1187 1189
1188 initLex(0,(unsigned long)-1,file); 1190 initLex(0,(unsigned long)-1,file);
1189 startPos = ftell(file); 1191 startPos = ftell(file);
1190 if (!(result = Parse_MIMEHelper())) { 1192 if (!(result = Parse_MIMEHelper())) {
1191 fseek(file,startPos,SEEK_SET); 1193 fseek(file,startPos,SEEK_SET);
1192 } 1194 }
1193 return result; 1195 return result;
1194 } 1196 }
1195 1197
1196DLLEXPORT(VObject*) Parse_MIME_FromFileName(char *fname) 1198DLLEXPORT(VObject*) Parse_MIME_FromFileName(char *fname)
1197 { 1199 {
1198 FILE *fp = fopen(fname,"r"); 1200 FILE *fp = fopen(fname,"r");
1199 if (fp) { 1201 if (fp) {
1200 VObject* o = Parse_MIME_FromFile(fp); 1202 VObject* o = Parse_MIME_FromFile(fp);
1201 fclose(fp); 1203 fclose(fp);
1202 return o; 1204 return o;
1203 } 1205 }
1204 else { 1206 else {
1205 char msg[80]; 1207 char msg[80];
1206 sprintf(msg, "can't open file '%s' for reading\n", fname); 1208 sprintf(msg, "can't open file '%s' for reading\n", fname);
1207 mime_error_(msg); 1209 mime_error_(msg);
1208 return 0; 1210 return 0;
1209 } 1211 }
1210 } 1212 }
1211 1213
1212#endif 1214#endif
1213 1215
1214/*-------------------------------------*/ 1216/*-------------------------------------*/
1215 1217
1216static MimeErrorHandler mimeErrorHandler; 1218static MimeErrorHandler mimeErrorHandler;
1217 1219
1218DLLEXPORT(void) registerMimeErrorHandler(MimeErrorHandler me) 1220DLLEXPORT(void) registerMimeErrorHandler(MimeErrorHandler me)
1219 { 1221 {
1220 mimeErrorHandler = me; 1222 mimeErrorHandler = me;
1221 } 1223 }
1222 1224
1223void mime_error(char *s) 1225void mime_error(char *s)
1224 { 1226 {
1225 char msg[256]; 1227 char msg[256];
1226 if (mimeErrorHandler) { 1228 if (mimeErrorHandler) {
1227 sprintf(msg,"%s at line %d", s, mime_lineNum); 1229 sprintf(msg,"%s at line %d", s, mime_lineNum);
1228 mimeErrorHandler(msg); 1230 mimeErrorHandler(msg);
1229 } 1231 }
1230 } 1232 }
1231 1233
1232void mime_error_(char *s) 1234void mime_error_(char *s)
1233 { 1235 {
1234 if (mimeErrorHandler) { 1236 if (mimeErrorHandler) {
1235 mimeErrorHandler(s); 1237 mimeErrorHandler(s);
1236 } 1238 }
1237 } 1239 }
1238 1240
1239#line 1240 "y.tab.c" 1241#line 1240 "y.tab.c"
1240#define YYABORT goto yyabort 1242#define YYABORT goto yyabort
1241#define YYREJECT goto yyabort 1243#define YYREJECT goto yyabort
1242#define YYACCEPT goto yyaccept 1244#define YYACCEPT goto yyaccept
1243#define YYERROR goto yyerrlab 1245#define YYERROR goto yyerrlab
1244int 1246int
1245#if defined(__STDC__) 1247#if defined(__STDC__)
1246yyparse(void) 1248yyparse(void)
1247#else 1249#else
1248yyparse() 1250yyparse()
1249#endif 1251#endif
1250{ 1252{
1251 register int yym, yyn, yystate; 1253 register int yym, yyn, yystate;
1252#if YYDEBUG 1254#if YYDEBUG
1253 register char *yys; 1255 register char *yys;
1254 extern char *getenv(); 1256 extern char *getenv();
1255 1257
1256 if (yys = getenv("YYDEBUG")) 1258 if (yys = getenv("YYDEBUG"))
1257 { 1259 {
1258 yyn = *yys; 1260 yyn = *yys;
1259 if (yyn >= '0' && yyn <= '9') 1261 if (yyn >= '0' && yyn <= '9')
1260 yydebug = yyn - '0'; 1262 yydebug = yyn - '0';
1261 } 1263 }
1262#endif 1264#endif
1263 1265
1264 yynerrs = 0; 1266 yynerrs = 0;
1265 yyerrflag = 0; 1267 yyerrflag = 0;
1266 yychar = (-1); 1268 yychar = (-1);
1267 1269
1268 yyssp = yyss; 1270 yyssp = yyss;
1269 yyvsp = yyvs; 1271 yyvsp = yyvs;
1270 *yyssp = yystate = 0; 1272 *yyssp = yystate = 0;
1271 1273
1272yyloop: 1274yyloop:
1273 if ((yyn = yydefred[yystate]) != 0) goto yyreduce; 1275 if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
1274 if (yychar < 0) 1276 if (yychar < 0)
1275 { 1277 {
1276 if ((yychar = yylex()) < 0) yychar = 0; 1278 if ((yychar = yylex()) < 0) yychar = 0;
1277#if YYDEBUG 1279#if YYDEBUG
1278 if (yydebug) 1280 if (yydebug)
1279 { 1281 {
1280 yys = 0; 1282 yys = 0;
1281 if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; 1283 if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
1282 if (!yys) yys = "illegal-symbol"; 1284 if (!yys) yys = "illegal-symbol";
1283 printf("%sdebug: state %d, reading %d (%s)\n", 1285 printf("%sdebug: state %d, reading %d (%s)\n",
1284 YYPREFIX, yystate, yychar, yys); 1286 YYPREFIX, yystate, yychar, yys);
1285 } 1287 }
1286#endif 1288#endif
1287 } 1289 }
1288 if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && 1290 if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 &&
1289 yyn <= YYTABLESIZE && yycheck[yyn] == yychar) 1291 yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
1290 { 1292 {
1291#if YYDEBUG 1293#if YYDEBUG
1292 if (yydebug) 1294 if (yydebug)
1293 printf("%sdebug: state %d, shifting to state %d\n", 1295 printf("%sdebug: state %d, shifting to state %d\n",
1294 YYPREFIX, yystate, yytable[yyn]); 1296 YYPREFIX, yystate, yytable[yyn]);
1295#endif 1297#endif
1296 if (yyssp >= yyss + yystacksize - 1) 1298 if (yyssp >= yyss + yystacksize - 1)
1297 { 1299 {
1298 goto yyoverflow; 1300 goto yyoverflow;
1299 } 1301 }
1300 *++yyssp = yystate = yytable[yyn]; 1302 *++yyssp = yystate = yytable[yyn];
1301 *++yyvsp = yylval; 1303 *++yyvsp = yylval;
1302 yychar = (-1); 1304 yychar = (-1);
1303 if (yyerrflag > 0) --yyerrflag; 1305 if (yyerrflag > 0) --yyerrflag;
1304 goto yyloop; 1306 goto yyloop;
1305 } 1307 }
1306 if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && 1308 if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 &&
1307 yyn <= YYTABLESIZE && yycheck[yyn] == yychar) 1309 yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
1308 { 1310 {
1309 yyn = yytable[yyn]; 1311 yyn = yytable[yyn];
1310 goto yyreduce; 1312 goto yyreduce;
1311 } 1313 }
1312 if (yyerrflag) goto yyinrecovery; 1314 if (yyerrflag) goto yyinrecovery;
1313 yyerror("syntax error"); 1315 yyerror("syntax error");
1314#ifdef lint 1316#ifdef lint
1315 goto yyerrlab; 1317 goto yyerrlab;
1316#endif 1318#endif
1317yyerrlab: 1319yyerrlab:
1318 ++yynerrs; 1320 ++yynerrs;
1319yyinrecovery: 1321yyinrecovery:
1320 if (yyerrflag < 3) 1322 if (yyerrflag < 3)
1321 { 1323 {
1322 yyerrflag = 3; 1324 yyerrflag = 3;
1323 for (;;) 1325 for (;;)
1324 { 1326 {
1325 if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 && 1327 if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 &&
1326 yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) 1328 yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
1327 { 1329 {
1328#if YYDEBUG 1330#if YYDEBUG
1329 if (yydebug) 1331 if (yydebug)
1330 printf("%sdebug: state %d, error recovery shifting\ 1332 printf("%sdebug: state %d, error recovery shifting\
1331 to state %d\n", YYPREFIX, *yyssp, yytable[yyn]); 1333 to state %d\n", YYPREFIX, *yyssp, yytable[yyn]);
1332#endif 1334#endif
1333 if (yyssp >= yyss + yystacksize - 1) 1335 if (yyssp >= yyss + yystacksize - 1)
1334 { 1336 {
1335 goto yyoverflow; 1337 goto yyoverflow;
1336 } 1338 }
1337 *++yyssp = yystate = yytable[yyn]; 1339 *++yyssp = yystate = yytable[yyn];
1338 *++yyvsp = yylval; 1340 *++yyvsp = yylval;
1339 goto yyloop; 1341 goto yyloop;
1340 } 1342 }
1341 else 1343 else
1342 { 1344 {
1343#if YYDEBUG 1345#if YYDEBUG
1344 if (yydebug) 1346 if (yydebug)
1345 printf("%sdebug: error recovery discarding state %d\n", 1347 printf("%sdebug: error recovery discarding state %d\n",
1346 YYPREFIX, *yyssp); 1348 YYPREFIX, *yyssp);
1347#endif 1349#endif
1348 if (yyssp <= yyss) goto yyabort; 1350 if (yyssp <= yyss) goto yyabort;
1349 --yyssp; 1351 --yyssp;
1350 --yyvsp; 1352 --yyvsp;
1351 } 1353 }
1352 } 1354 }
1353 } 1355 }
1354 else 1356 else
1355 { 1357 {
1356 if (yychar == 0) goto yyabort; 1358 if (yychar == 0) goto yyabort;
1357#if YYDEBUG 1359#if YYDEBUG
1358 if (yydebug) 1360 if (yydebug)
1359 { 1361 {
1360 yys = 0; 1362 yys = 0;
1361 if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; 1363 if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
1362 if (!yys) yys = "illegal-symbol"; 1364 if (!yys) yys = "illegal-symbol";
1363 printf("%sdebug: state %d, error recovery discards token %d (%s)\n", 1365 printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
1364 YYPREFIX, yystate, yychar, yys); 1366 YYPREFIX, yystate, yychar, yys);
1365 } 1367 }
1366#endif 1368#endif
1367 yychar = (-1); 1369 yychar = (-1);
1368 goto yyloop; 1370 goto yyloop;
1369 } 1371 }
1370yyreduce: 1372yyreduce:
1371#if YYDEBUG 1373#if YYDEBUG
1372 if (yydebug) 1374 if (yydebug)
1373 printf("%sdebug: state %d, reducing by rule %d (%s)\n", 1375 printf("%sdebug: state %d, reducing by rule %d (%s)\n",
1374 YYPREFIX, yystate, yyn, yyrule[yyn]); 1376 YYPREFIX, yystate, yyn, yyrule[yyn]);
1375#endif 1377#endif
1376 yym = yylen[yyn]; 1378 yym = yylen[yyn];
1377 yyval = yyvsp[1-yym]; 1379 yyval = yyvsp[1-yym];
1378 switch (yyn) 1380 switch (yyn)
1379 { 1381 {
1380case 2: 1382case 2:
1381#line 221 "backend/vcc.y" 1383#line 221 "backend/vcc.y"
1382{ addList(&vObjList, yyvsp[0].vobj); curObj = 0; } 1384{ addList(&vObjList, yyvsp[0].vobj); curObj = 0; }
1383break; 1385break;
1384case 3: 1386case 3:
1385#line 223 "backend/vcc.y" 1387#line 223 "backend/vcc.y"
1386{ addList(&vObjList, yyvsp[0].vobj); curObj = 0; } 1388{ addList(&vObjList, yyvsp[0].vobj); curObj = 0; }
1387break; 1389break;
1388case 6: 1390case 6:
1389#line 232 "backend/vcc.y" 1391#line 232 "backend/vcc.y"
1390{ 1392{
1391 lexPushMode(L_VCARD); 1393 lexPushMode(L_VCARD);
1392 if (!pushVObject(VCCardProp)) YYERROR; 1394 if (!pushVObject(VCCardProp)) YYERROR;
1393 } 1395 }
1394break; 1396break;
1395case 7: 1397case 7:
1396#line 237 "backend/vcc.y" 1398#line 237 "backend/vcc.y"
1397{ 1399{
1398 lexPopMode(0); 1400 lexPopMode(0);
1399 yyval.vobj = popVObject(); 1401 yyval.vobj = popVObject();
1400 } 1402 }
1401break; 1403break;
1402case 8: 1404case 8:
1403#line 242 "backend/vcc.y" 1405#line 242 "backend/vcc.y"
1404{ 1406{
1405 lexPushMode(L_VCARD); 1407 lexPushMode(L_VCARD);
1406 if (!pushVObject(VCCardProp)) YYERROR; 1408 if (!pushVObject(VCCardProp)) YYERROR;
1407 } 1409 }
1408break; 1410break;
1409case 9: 1411case 9:
1410#line 247 "backend/vcc.y" 1412#line 247 "backend/vcc.y"
1411{ 1413{
1412 lexPopMode(0); 1414 lexPopMode(0);
1413 yyval.vobj = popVObject(); 1415 yyval.vobj = popVObject();
1414 } 1416 }
1415break; 1417break;
1416case 12: 1418case 12:
1417#line 258 "backend/vcc.y" 1419#line 258 "backend/vcc.y"
1418{ 1420{
1419 lexPushMode(L_VALUES); 1421 lexPushMode(L_VALUES);
1420 } 1422 }
1421break; 1423break;
1422case 13: 1424case 13:
1423#line 262 "backend/vcc.y" 1425#line 262 "backend/vcc.y"
1424{ 1426{
1425 if (lexWithinMode(L_BASE64) || lexWithinMode(L_QUOTED_PRINTABLE)) 1427 if (lexWithinMode(L_BASE64) || lexWithinMode(L_QUOTED_PRINTABLE))
1426 lexPopMode(0); 1428 lexPopMode(0);
1427 lexPopMode(0); 1429 lexPopMode(0);
1428 } 1430 }
1429break; 1431break;
1430case 15: 1432case 15:
1431#line 271 "backend/vcc.y" 1433#line 271 "backend/vcc.y"
1432{ 1434{
1433 enterProps(yyvsp[0].str); 1435 enterProps(yyvsp[0].str);
1434 } 1436 }
1435break; 1437break;
1436case 17: 1438case 17:
1437#line 276 "backend/vcc.y" 1439#line 276 "backend/vcc.y"
1438{ 1440{
1439 enterProps(yyvsp[0].str); 1441 enterProps(yyvsp[0].str);
1440 } 1442 }
1441break; 1443break;
1442case 21: 1444case 21:
1443#line 289 "backend/vcc.y" 1445#line 289 "backend/vcc.y"
1444{ 1446{
1445 enterAttr(yyvsp[0].str,0); 1447 enterAttr(yyvsp[0].str,0);
1446 } 1448 }
1447break; 1449break;
1448case 22: 1450case 22:
1449#line 293 "backend/vcc.y" 1451#line 293 "backend/vcc.y"
1450{ 1452{
1451 enterAttr(yyvsp[-2].str,yyvsp[0].str); 1453 enterAttr(yyvsp[-2].str,yyvsp[0].str);
1452 1454
1453 } 1455 }
1454break; 1456break;
1455case 24: 1457case 24:
1456#line 302 "backend/vcc.y" 1458#line 302 "backend/vcc.y"
1457{ enterValues(yyvsp[-1].str); } 1459{ enterValues(yyvsp[-1].str); }
1458break; 1460break;
1459case 26: 1461case 26:
1460#line 304 "backend/vcc.y" 1462#line 304 "backend/vcc.y"
1461{ enterValues(yyvsp[0].str); } 1463{ enterValues(yyvsp[0].str); }
1462break; 1464break;
1463case 28: 1465case 28:
1464#line 309 "backend/vcc.y" 1466#line 309 "backend/vcc.y"
1465{ yyval.str = 0; } 1467{ yyval.str = 0; }
1466break; 1468break;
1467case 29: 1469case 29:
1468#line 314 "backend/vcc.y" 1470#line 314 "backend/vcc.y"
1469{ if (!pushVObject(VCCalProp)) YYERROR; } 1471{ if (!pushVObject(VCCalProp)) YYERROR; }
1470break; 1472break;
1471case 30: 1473case 30:
1472#line 317 "backend/vcc.y" 1474#line 317 "backend/vcc.y"
1473{ yyval.vobj = popVObject(); } 1475{ yyval.vobj = popVObject(); }
1474break; 1476break;
1475case 31: 1477case 31:
1476#line 319 "backend/vcc.y" 1478#line 319 "backend/vcc.y"
1477{ if (!pushVObject(VCCalProp)) YYERROR; } 1479{ if (!pushVObject(VCCalProp)) YYERROR; }
1478break; 1480break;
1479case 32: 1481case 32:
1480#line 321 "backend/vcc.y" 1482#line 321 "backend/vcc.y"
1481{ yyval.vobj = popVObject(); } 1483{ yyval.vobj = popVObject(); }
1482break; 1484break;
1483case 38: 1485case 38:
1484#line 336 "backend/vcc.y" 1486#line 336 "backend/vcc.y"
1485{ 1487{
1486 lexPushMode(L_VEVENT); 1488 lexPushMode(L_VEVENT);
1487 if (!pushVObject(VCEventProp)) YYERROR; 1489 if (!pushVObject(VCEventProp)) YYERROR;
1488 } 1490 }
1489break; 1491break;
1490case 39: 1492case 39:
1491#line 342 "backend/vcc.y" 1493#line 342 "backend/vcc.y"
1492{ 1494{
1493 lexPopMode(0); 1495 lexPopMode(0);
1494 popVObject(); 1496 popVObject();
1495 } 1497 }
1496break; 1498break;
1497case 40: 1499case 40:
1498#line 347 "backend/vcc.y" 1500#line 347 "backend/vcc.y"
1499{ 1501{
1500 lexPushMode(L_VEVENT); 1502 lexPushMode(L_VEVENT);
1501 if (!pushVObject(VCEventProp)) YYERROR; 1503 if (!pushVObject(VCEventProp)) YYERROR;
1502 } 1504 }
1503break; 1505break;
1504case 41: 1506case 41:
1505#line 352 "backend/vcc.y" 1507#line 352 "backend/vcc.y"
1506{ 1508{
1507 lexPopMode(0); 1509 lexPopMode(0);
1508 popVObject(); 1510 popVObject();
1509 } 1511 }
1510break; 1512break;
1511case 42: 1513case 42:
1512#line 360 "backend/vcc.y" 1514#line 360 "backend/vcc.y"
1513{ 1515{
1514 lexPushMode(L_VTODO); 1516 lexPushMode(L_VTODO);
1515 if (!pushVObject(VCTodoProp)) YYERROR; 1517 if (!pushVObject(VCTodoProp)) YYERROR;
1516 } 1518 }
1517break; 1519break;
1518case 43: 1520case 43:
1519#line 366 "backend/vcc.y" 1521#line 366 "backend/vcc.y"
1520{ 1522{
1521 lexPopMode(0); 1523 lexPopMode(0);
1522 popVObject(); 1524 popVObject();
1523 } 1525 }
1524break; 1526break;
1525case 44: 1527case 44:
1526#line 371 "backend/vcc.y" 1528#line 371 "backend/vcc.y"
1527{ 1529{
1528 lexPushMode(L_VTODO); 1530 lexPushMode(L_VTODO);
1529 if (!pushVObject(VCTodoProp)) YYERROR; 1531 if (!pushVObject(VCTodoProp)) YYERROR;
1530 } 1532 }
1531break; 1533break;
1532case 45: 1534case 45:
1533#line 376 "backend/vcc.y" 1535#line 376 "backend/vcc.y"
1534{ 1536{
1535 lexPopMode(0); 1537 lexPopMode(0);
1536 popVObject(); 1538 popVObject();
1537 } 1539 }
1538break; 1540break;
1539#line 1540 "y.tab.c" 1541#line 1540 "y.tab.c"
1540 } 1542 }
1541 yyssp -= yym; 1543 yyssp -= yym;
1542 yystate = *yyssp; 1544 yystate = *yyssp;
1543 yyvsp -= yym; 1545 yyvsp -= yym;
1544 yym = yylhs[yyn]; 1546 yym = yylhs[yyn];
1545 if (yystate == 0 && yym == 0) 1547 if (yystate == 0 && yym == 0)
1546 { 1548 {
1547#if YYDEBUG 1549#if YYDEBUG
1548 if (yydebug) 1550 if (yydebug)
1549 printf("%sdebug: after reduction, shifting from state 0 to\ 1551 printf("%sdebug: after reduction, shifting from state 0 to\
1550 state %d\n", YYPREFIX, YYFINAL); 1552 state %d\n", YYPREFIX, YYFINAL);
1551#endif 1553#endif
1552 yystate = YYFINAL; 1554 yystate = YYFINAL;
1553 *++yyssp = YYFINAL; 1555 *++yyssp = YYFINAL;
1554 *++yyvsp = yyval; 1556 *++yyvsp = yyval;
1555 if (yychar < 0) 1557 if (yychar < 0)
1556 { 1558 {
1557 if ((yychar = yylex()) < 0) yychar = 0; 1559 if ((yychar = yylex()) < 0) yychar = 0;
1558#if YYDEBUG 1560#if YYDEBUG
1559 if (yydebug) 1561 if (yydebug)
1560 { 1562 {
1561 yys = 0; 1563 yys = 0;
1562 if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; 1564 if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
1563 if (!yys) yys = "illegal-symbol"; 1565 if (!yys) yys = "illegal-symbol";
1564 printf("%sdebug: state %d, reading %d (%s)\n", 1566 printf("%sdebug: state %d, reading %d (%s)\n",
1565 YYPREFIX, YYFINAL, yychar, yys); 1567 YYPREFIX, YYFINAL, yychar, yys);
1566 } 1568 }
1567#endif 1569#endif
1568 } 1570 }
1569 if (yychar == 0) goto yyaccept; 1571 if (yychar == 0) goto yyaccept;
1570 goto yyloop; 1572 goto yyloop;
1571 } 1573 }
1572 if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && 1574 if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 &&
1573 yyn <= YYTABLESIZE && yycheck[yyn] == yystate) 1575 yyn <= YYTABLESIZE && yycheck[yyn] == yystate)
1574 yystate = yytable[yyn]; 1576 yystate = yytable[yyn];
1575 else 1577 else
1576 yystate = yydgoto[yym]; 1578 yystate = yydgoto[yym];
1577#if YYDEBUG 1579#if YYDEBUG
1578 if (yydebug) 1580 if (yydebug)
1579 printf("%sdebug: after reduction, shifting from state %d \ 1581 printf("%sdebug: after reduction, shifting from state %d \
1580to state %d\n", YYPREFIX, *yyssp, yystate); 1582to state %d\n", YYPREFIX, *yyssp, yystate);
1581#endif 1583#endif
1582 if (yyssp >= yyss + yystacksize - 1) 1584 if (yyssp >= yyss + yystacksize - 1)
1583 { 1585 {
1584 goto yyoverflow; 1586 goto yyoverflow;
1585 } 1587 }
1586 *++yyssp = yystate; 1588 *++yyssp = yystate;
1587 *++yyvsp = yyval; 1589 *++yyvsp = yyval;
1588 goto yyloop; 1590 goto yyloop;
1589yyoverflow: 1591yyoverflow:
1590 yyerror("yacc stack overflow"); 1592 yyerror("yacc stack overflow");
1591yyabort: 1593yyabort:
1592 return (1); 1594 return (1);
1593yyaccept: 1595yyaccept:
1594 return (0); 1596 return (0);
1595} 1597}
diff --git a/library/backend/vobject.cpp b/library/backend/vobject.cpp
index b6d17dc..4c8de70 100644
--- a/library/backend/vobject.cpp
+++ b/library/backend/vobject.cpp
@@ -1,1365 +1,1366 @@
1/*************************************************************************** 1/***************************************************************************
2(C) Copyright 1996 Apple Computer, Inc., AT&T Corp., International 2(C) Copyright 1996 Apple Computer, Inc., AT&T Corp., International
3Business Machines Corporation and Siemens Rolm Communications Inc. 3Business Machines Corporation and Siemens Rolm Communications Inc.
4 4
5For purposes of this license notice, the term Licensors shall mean, 5For purposes of this license notice, the term Licensors shall mean,
6collectively, Apple Computer, Inc., AT&T Corp., International 6collectively, Apple Computer, Inc., AT&T Corp., International
7Business Machines Corporation and Siemens Rolm Communications Inc. 7Business Machines Corporation and Siemens Rolm Communications Inc.
8The term Licensor shall mean any of the Licensors. 8The term Licensor shall mean any of the Licensors.
9 9
10Subject to acceptance of the following conditions, permission is hereby 10Subject to acceptance of the following conditions, permission is hereby
11granted by Licensors without the need for written agreement and without 11granted by Licensors without the need for written agreement and without
12license or royalty fees, to use, copy, modify and distribute this 12license or royalty fees, to use, copy, modify and distribute this
13software for any purpose. 13software for any purpose.
14 14
15The above copyright notice and the following four paragraphs must be 15The above copyright notice and the following four paragraphs must be
16reproduced in all copies of this software and any software including 16reproduced in all copies of this software and any software including
17this software. 17this software.
18 18
19THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS AND NO LICENSOR SHALL HAVE 19THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS AND NO LICENSOR SHALL HAVE
20ANY OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS OR 20ANY OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS OR
21MODIFICATIONS. 21MODIFICATIONS.
22 22
23IN NO EVENT SHALL ANY LICENSOR BE LIABLE TO ANY PARTY FOR DIRECT, 23IN NO EVENT SHALL ANY LICENSOR BE LIABLE TO ANY PARTY FOR DIRECT,
24INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOST PROFITS ARISING OUT 24INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOST PROFITS ARISING OUT
25OF THE USE OF THIS SOFTWARE EVEN IF ADVISED OF THE POSSIBILITY OF SUCH 25OF THE USE OF THIS SOFTWARE EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
26DAMAGE. 26DAMAGE.
27 27
28EACH LICENSOR SPECIFICALLY DISCLAIMS ANY WARRANTIES, EXPRESS OR IMPLIED, 28EACH LICENSOR SPECIFICALLY DISCLAIMS ANY WARRANTIES, EXPRESS OR IMPLIED,
29INCLUDING BUT NOT LIMITED TO ANY WARRANTY OF NONINFRINGEMENT OR THE 29INCLUDING BUT NOT LIMITED TO ANY WARRANTY OF NONINFRINGEMENT OR THE
30IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 30IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
31PURPOSE. 31PURPOSE.
32 32
33The software is provided with RESTRICTED RIGHTS. Use, duplication, or 33The software is provided with RESTRICTED RIGHTS. Use, duplication, or
34disclosure by the government are subject to restrictions set forth in 34disclosure by the government are subject to restrictions set forth in
35DFARS 252.227-7013 or 48 CFR 52.227-19, as applicable. 35DFARS 252.227-7013 or 48 CFR 52.227-19, as applicable.
36 36
37***************************************************************************/ 37***************************************************************************/
38 38
39/* 39/*
40 * src: vobject.c 40 * src: vobject.c
41 * doc: vobject and APIs to construct vobject, APIs pretty print 41 * doc: vobject and APIs to construct vobject, APIs pretty print
42 * vobject, and convert a vobject into its textual representation. 42 * vobject, and convert a vobject into its textual representation.
43 */ 43 */
44 44
45 #ifndef MWERKS 45 #ifndef MWERKS
46#include <malloc.h> 46#include <malloc.h>
47#endif 47#endif
48 48
49#include <qtopia/config.h> 49#include <qtopia/config.h>
50#include "vobject_p.h" 50#include "vobject_p.h"
51#include "qfiledirect_p.h" 51#include "qfiledirect_p.h"
52#include <string.h> 52#include <string.h>
53#include <stdio.h> 53#include <stdio.h>
54#include <fcntl.h> 54#include <fcntl.h>
55//#include <io.h> 55//#include <io.h>
56 56
57 57
58 #define NAME_OF(o) o->id 58 #define NAME_OF(o) o->id
59 #define VALUE_TYPE(o) o->valType 59 #define VALUE_TYPE(o) o->valType
60 #define STRINGZ_VALUE_OF(o) o->val.strs 60 #define STRINGZ_VALUE_OF(o) o->val.strs
61 #define INTEGER_VALUE_OF(o) o->val.i 61 #define INTEGER_VALUE_OF(o) o->val.i
62 #define LONG_VALUE_OF(o) o->val.l 62 #define LONG_VALUE_OF(o) o->val.l
63 #define ANY_VALUE_OF(o) o->val.any 63 #define ANY_VALUE_OF(o) o->val.any
64 #define VOBJECT_VALUE_OF(o) o->val.vobj 64 #define VOBJECT_VALUE_OF(o) o->val.vobj
65 65
66static char vobj_cs[10]; 66static char vobj_cs[10];
67static enum { EightBit, QuotedPrintable, Base64 } vobj_enc=EightBit; 67static enum { EightBit, QuotedPrintable, Base64 } vobj_enc=EightBit;
68static const char *vobj_enc_s=0; 68static const char *vobj_enc_s=0;
69 69
70typedef union ValueItem { 70typedef union ValueItem {
71 const char *strs; 71 const char *strs;
72 unsigned int i; 72 unsigned int i;
73 unsigned long l; 73 unsigned long l;
74 void *any; 74 void *any;
75 VObject *vobj; 75 VObject *vobj;
76 } ValueItem; 76 } ValueItem;
77 77
78struct VObject { 78struct VObject {
79 VObject *next; 79 VObject *next;
80 const char *id; 80 const char *id;
81 VObject *prop; 81 VObject *prop;
82 unsigned short valType; 82 unsigned short valType;
83 ValueItem val; 83 ValueItem val;
84 }; 84 };
85 85
86typedef struct StrItem StrItem; 86typedef struct StrItem StrItem;
87 87
88struct StrItem { 88struct StrItem {
89 StrItem *next; 89 StrItem *next;
90 const char *s; 90 const char *s;
91 unsigned int refCnt; 91 unsigned int refCnt;
92 }; 92 };
93 93
94DLLEXPORT(const char**) fieldedProp; 94DLLEXPORT(const char**) fieldedProp;
95 95
96 96
97 97
98/*---------------------------------------------------------------------- 98/*----------------------------------------------------------------------
99 The following functions involve with memory allocation: 99 The following functions involve with memory allocation:
100 newVObject 100 newVObject
101 deleteVObject 101 deleteVObject
102 dupStr 102 dupStr
103 deleteStr 103 deleteStr
104 newStrItem 104 newStrItem
105 deleteStrItem 105 deleteStrItem
106 ----------------------------------------------------------------------*/ 106 ----------------------------------------------------------------------*/
107 107
108DLLEXPORT(VObject*) newVObject_(const char *id) 108DLLEXPORT(VObject*) newVObject_(const char *id)
109{ 109{
110 VObject *p = (VObject*)malloc(sizeof(VObject)); 110 VObject *p = (VObject*)malloc(sizeof(VObject));
111 p->next = 0; 111 p->next = 0;
112 p->id = id; 112 p->id = id;
113 p->prop = 0; 113 p->prop = 0;
114 VALUE_TYPE(p) = 0; 114 VALUE_TYPE(p) = 0;
115 ANY_VALUE_OF(p) = 0; 115 ANY_VALUE_OF(p) = 0;
116 return p; 116 return p;
117} 117}
118 118
119DLLEXPORT(VObject*) newVObject(const char *id) 119DLLEXPORT(VObject*) newVObject(const char *id)
120{ 120{
121 return newVObject_(lookupStr(id)); 121 return newVObject_(lookupStr(id));
122} 122}
123 123
124DLLEXPORT(void) deleteVObject(VObject *p) 124DLLEXPORT(void) deleteVObject(VObject *p)
125{ 125{
126 unUseStr(p->id); 126 unUseStr(p->id);
127 free(p); 127 free(p);
128} 128}
129 129
130DLLEXPORT(char*) dupStr(const char *s, unsigned int size) 130DLLEXPORT(char*) dupStr(const char *s, unsigned int size)
131{ 131{
132 char *t; 132 char *t;
133 if (size == 0) { 133 if (size == 0) {
134 size = strlen(s); 134 size = strlen(s);
135 } 135 }
136 t = (char*)malloc(size+1); 136 t = (char*)malloc(size+1);
137 if (t) { 137 if (t) {
138 memcpy(t,s,size); 138 memcpy(t,s,size);
139 t[size] = 0; 139 t[size] = 0;
140 return t; 140 return t;
141 } 141 }
142 else { 142 else {
143 return (char*)0; 143 return (char*)0;
144 } 144 }
145} 145}
146 146
147DLLEXPORT(void) deleteStr(const char *p) 147DLLEXPORT(void) deleteStr(const char *p)
148{ 148{
149 if (p) free((void*)p); 149 if (p) free((void*)p);
150} 150}
151 151
152 152
153static StrItem* newStrItem(const char *s, StrItem *next) 153static StrItem* newStrItem(const char *s, StrItem *next)
154{ 154{
155 StrItem *p = (StrItem*)malloc(sizeof(StrItem)); 155 StrItem *p = (StrItem*)malloc(sizeof(StrItem));
156 p->next = next; 156 p->next = next;
157 p->s = s; 157 p->s = s;
158 p->refCnt = 1; 158 p->refCnt = 1;
159 return p; 159 return p;
160} 160}
161 161
162static void deleteStrItem(StrItem *p) 162static void deleteStrItem(StrItem *p)
163{ 163{
164 free((void*)p); 164 free((void*)p);
165} 165}
166 166
167 167
168/*---------------------------------------------------------------------- 168/*----------------------------------------------------------------------
169 The following function provide accesses to VObject's value. 169 The following function provide accesses to VObject's value.
170 ----------------------------------------------------------------------*/ 170 ----------------------------------------------------------------------*/
171 171
172DLLEXPORT(const char*) vObjectName(VObject *o) 172DLLEXPORT(const char*) vObjectName(VObject *o)
173{ 173{
174 return NAME_OF(o); 174 return NAME_OF(o);
175} 175}
176 176
177DLLEXPORT(void) setVObjectName(VObject *o, const char* id) 177DLLEXPORT(void) setVObjectName(VObject *o, const char* id)
178{ 178{
179 NAME_OF(o) = id; 179 NAME_OF(o) = id;
180} 180}
181 181
182DLLEXPORT(const char*) vObjectStringZValue(VObject *o) 182DLLEXPORT(const char*) vObjectStringZValue(VObject *o)
183{ 183{
184 return STRINGZ_VALUE_OF(o); 184 return STRINGZ_VALUE_OF(o);
185} 185}
186 186
187DLLEXPORT(void) setVObjectStringZValue(VObject *o, const char *s) 187DLLEXPORT(void) setVObjectStringZValue(VObject *o, const char *s)
188{ 188{
189 STRINGZ_VALUE_OF(o) = dupStr(s,0); 189 STRINGZ_VALUE_OF(o) = dupStr(s,0);
190 VALUE_TYPE(o) = VCVT_STRINGZ; 190 VALUE_TYPE(o) = VCVT_STRINGZ;
191} 191}
192 192
193DLLEXPORT(void) setVObjectStringZValue_(VObject *o, const char *s) 193DLLEXPORT(void) setVObjectStringZValue_(VObject *o, const char *s)
194{ 194{
195 STRINGZ_VALUE_OF(o) = s; 195 STRINGZ_VALUE_OF(o) = s;
196 VALUE_TYPE(o) = VCVT_STRINGZ; 196 VALUE_TYPE(o) = VCVT_STRINGZ;
197} 197}
198 198
199DLLEXPORT(unsigned int) vObjectIntegerValue(VObject *o) 199DLLEXPORT(unsigned int) vObjectIntegerValue(VObject *o)
200{ 200{
201 return INTEGER_VALUE_OF(o); 201 return INTEGER_VALUE_OF(o);
202} 202}
203 203
204DLLEXPORT(void) setVObjectIntegerValue(VObject *o, unsigned int i) 204DLLEXPORT(void) setVObjectIntegerValue(VObject *o, unsigned int i)
205{ 205{
206 INTEGER_VALUE_OF(o) = i; 206 INTEGER_VALUE_OF(o) = i;
207 VALUE_TYPE(o) = VCVT_UINT; 207 VALUE_TYPE(o) = VCVT_UINT;
208} 208}
209 209
210DLLEXPORT(unsigned long) vObjectLongValue(VObject *o) 210DLLEXPORT(unsigned long) vObjectLongValue(VObject *o)
211{ 211{
212 return LONG_VALUE_OF(o); 212 return LONG_VALUE_OF(o);
213} 213}
214 214
215DLLEXPORT(void) setVObjectLongValue(VObject *o, unsigned long l) 215DLLEXPORT(void) setVObjectLongValue(VObject *o, unsigned long l)
216{ 216{
217 LONG_VALUE_OF(o) = l; 217 LONG_VALUE_OF(o) = l;
218 VALUE_TYPE(o) = VCVT_ULONG; 218 VALUE_TYPE(o) = VCVT_ULONG;
219} 219}
220 220
221DLLEXPORT(void*) vObjectAnyValue(VObject *o) 221DLLEXPORT(void*) vObjectAnyValue(VObject *o)
222{ 222{
223 return ANY_VALUE_OF(o); 223 return ANY_VALUE_OF(o);
224} 224}
225 225
226DLLEXPORT(void) setVObjectAnyValue(VObject *o, void *t) 226DLLEXPORT(void) setVObjectAnyValue(VObject *o, void *t)
227{ 227{
228 ANY_VALUE_OF(o) = t; 228 ANY_VALUE_OF(o) = t;
229 VALUE_TYPE(o) = VCVT_RAW; 229 VALUE_TYPE(o) = VCVT_RAW;
230} 230}
231 231
232DLLEXPORT(VObject*) vObjectVObjectValue(VObject *o) 232DLLEXPORT(VObject*) vObjectVObjectValue(VObject *o)
233{ 233{
234 return VOBJECT_VALUE_OF(o); 234 return VOBJECT_VALUE_OF(o);
235} 235}
236 236
237DLLEXPORT(void) setVObjectVObjectValue(VObject *o, VObject *p) 237DLLEXPORT(void) setVObjectVObjectValue(VObject *o, VObject *p)
238{ 238{
239 VOBJECT_VALUE_OF(o) = p; 239 VOBJECT_VALUE_OF(o) = p;
240 VALUE_TYPE(o) = VCVT_VOBJECT; 240 VALUE_TYPE(o) = VCVT_VOBJECT;
241} 241}
242 242
243DLLEXPORT(int) vObjectValueType(VObject *o) 243DLLEXPORT(int) vObjectValueType(VObject *o)
244{ 244{
245 return VALUE_TYPE(o); 245 return VALUE_TYPE(o);
246} 246}
247 247
248 248
249/*---------------------------------------------------------------------- 249/*----------------------------------------------------------------------
250 The following functions can be used to build VObject. 250 The following functions can be used to build VObject.
251 ----------------------------------------------------------------------*/ 251 ----------------------------------------------------------------------*/
252 252
253DLLEXPORT(VObject*) addVObjectProp(VObject *o, VObject *p) 253DLLEXPORT(VObject*) addVObjectProp(VObject *o, VObject *p)
254{ 254{
255 /* circular link list pointed to tail */ 255 /* circular link list pointed to tail */
256 /* 256 /*
257 o {next,id,prop,val} 257 o {next,id,prop,val}
258 V 258 V
259 pn {next,id,prop,val} 259 pn {next,id,prop,val}
260 V 260 V
261 ... 261 ...
262 p1 {next,id,prop,val} 262 p1 {next,id,prop,val}
263 V 263 V
264 pn 264 pn
265 --> 265 -->
266 o {next,id,prop,val} 266 o {next,id,prop,val}
267 V 267 V
268 pn {next,id,prop,val} 268 pn {next,id,prop,val}
269 V 269 V
270 p {next,id,prop,val} 270 p {next,id,prop,val}
271 ... 271 ...
272 p1 {next,id,prop,val} 272 p1 {next,id,prop,val}
273 V 273 V
274 pn 274 pn
275 */ 275 */
276 276
277 VObject *tail = o->prop; 277 VObject *tail = o->prop;
278 if (tail) { 278 if (tail) {
279 p->next = tail->next; 279 p->next = tail->next;
280 o->prop = tail->next = p; 280 o->prop = tail->next = p;
281 } 281 }
282 else { 282 else {
283 o->prop = p->next = p; 283 o->prop = p->next = p;
284 } 284 }
285 return p; 285 return p;
286} 286}
287 287
288DLLEXPORT(VObject*) addProp(VObject *o, const char *id) 288DLLEXPORT(VObject*) addProp(VObject *o, const char *id)
289{ 289{
290 return addVObjectProp(o,newVObject(id)); 290 return addVObjectProp(o,newVObject(id));
291} 291}
292 292
293DLLEXPORT(VObject*) addProp_(VObject *o, const char *id) 293DLLEXPORT(VObject*) addProp_(VObject *o, const char *id)
294{ 294{
295 return addVObjectProp(o,newVObject_(id)); 295 return addVObjectProp(o,newVObject_(id));
296} 296}
297 297
298DLLEXPORT(void) addList(VObject **o, VObject *p) 298DLLEXPORT(void) addList(VObject **o, VObject *p)
299{ 299{
300 p->next = 0; 300 p->next = 0;
301 if (*o == 0) { 301 if (*o == 0) {
302 *o = p; 302 *o = p;
303 } 303 }
304 else { 304 else {
305 VObject *t = *o; 305 VObject *t = *o;
306 while (t->next) { 306 while (t->next) {
307 t = t->next; 307 t = t->next;
308 } 308 }
309 t->next = p; 309 t->next = p;
310 } 310 }
311} 311}
312 312
313DLLEXPORT(VObject*) nextVObjectInList(VObject *o) 313DLLEXPORT(VObject*) nextVObjectInList(VObject *o)
314{ 314{
315 return o->next; 315 return o->next;
316} 316}
317 317
318DLLEXPORT(VObject*) setValueWithSize_(VObject *prop, void *val, unsigned int size) 318DLLEXPORT(VObject*) setValueWithSize_(VObject *prop, void *val, unsigned int size)
319{ 319{
320 VObject *sizeProp; 320 VObject *sizeProp;
321 setVObjectAnyValue(prop, val); 321 setVObjectAnyValue(prop, val);
322 sizeProp = addProp(prop,VCDataSizeProp); 322 sizeProp = addProp(prop,VCDataSizeProp);
323 setVObjectLongValue(sizeProp, size); 323 setVObjectLongValue(sizeProp, size);
324 return prop; 324 return prop;
325} 325}
326 326
327DLLEXPORT(VObject*) setValueWithSize(VObject *prop, void *val, unsigned int size) 327DLLEXPORT(VObject*) setValueWithSize(VObject *prop, void *val, unsigned int size)
328{ 328{
329 void *p = dupStr((const char *)val,size); 329 void *p = dupStr((const char *)val,size);
330 return setValueWithSize_(prop,p,p?size:0); 330 return setValueWithSize_(prop,p,p?size:0);
331} 331}
332 332
333DLLEXPORT(void) initPropIterator(VObjectIterator *i, VObject *o) 333DLLEXPORT(void) initPropIterator(VObjectIterator *i, VObject *o)
334{ 334{
335 i->start = o->prop; 335 i->start = o->prop;
336 i->next = 0; 336 i->next = 0;
337} 337}
338 338
339DLLEXPORT(void) initVObjectIterator(VObjectIterator *i, VObject *o) 339DLLEXPORT(void) initVObjectIterator(VObjectIterator *i, VObject *o)
340{ 340{
341 i->start = o->next; 341 i->start = o->next;
342 i->next = 0; 342 i->next = 0;
343} 343}
344 344
345DLLEXPORT(int) moreIteration(VObjectIterator *i) 345DLLEXPORT(int) moreIteration(VObjectIterator *i)
346{ 346{
347 return (i->start && (i->next==0 || i->next!=i->start)); 347 return (i->start && (i->next==0 || i->next!=i->start));
348} 348}
349 349
350DLLEXPORT(VObject*) nextVObject(VObjectIterator *i) 350DLLEXPORT(VObject*) nextVObject(VObjectIterator *i)
351{ 351{
352 if (i->start && i->next != i->start) { 352 if (i->start && i->next != i->start) {
353 if (i->next == 0) { 353 if (i->next == 0) {
354 i->next = i->start->next; 354 i->next = i->start->next;
355 return i->next; 355 return i->next;
356 } 356 }
357 else { 357 else {
358 i->next = i->next->next; 358 i->next = i->next->next;
359 return i->next; 359 return i->next;
360 } 360 }
361 } 361 }
362 else return (VObject*)0; 362 else return (VObject*)0;
363} 363}
364 364
365DLLEXPORT(VObject*) isAPropertyOf(VObject *o, const char *id) 365DLLEXPORT(VObject*) isAPropertyOf(VObject *o, const char *id)
366{ 366{
367 VObjectIterator i; 367 VObjectIterator i;
368 initPropIterator(&i,o); 368 initPropIterator(&i,o);
369 while (moreIteration(&i)) { 369 while (moreIteration(&i)) {
370 VObject *each = nextVObject(&i); 370 VObject *each = nextVObject(&i);
371 if (!qstricmp(id,each->id)) 371 if (!qstricmp(id,each->id))
372 return each; 372 return each;
373 } 373 }
374 return (VObject*)0; 374 return (VObject*)0;
375} 375}
376 376
377DLLEXPORT(VObject*) addGroup(VObject *o, const char *g) 377DLLEXPORT(VObject*) addGroup(VObject *o, const char *g)
378{ 378{
379 /* 379 /*
380 a.b.c 380 a.b.c
381 --> 381 -->
382 prop(c) 382 prop(c)
383 prop(VCGrouping=b) 383 prop(VCGrouping=b)
384 prop(VCGrouping=a) 384 prop(VCGrouping=a)
385 */ 385 */
386 char *dot = strrchr(g,'.'); 386 char *dot = strrchr(g,'.');
387 if (dot) { 387 if (dot) {
388 VObject *p, *t; 388 VObject *p, *t;
389 char *gs, *n = dot+1; 389 char *gs, *n = dot+1;
390 gs = dupStr(g,0);/* so we can write to it. */ 390 gs = dupStr(g,0);/* so we can write to it. */
391 /* used to be 391 /* used to be
392 * t = p = addProp_(o,lookupProp_(n)); 392 * t = p = addProp_(o,lookupProp_(n));
393 */ 393 */
394 t = p = addProp_(o,lookupProp(n)); 394 t = p = addProp_(o,lookupProp(n));
395 dot = strrchr(gs,'.'); 395 dot = strrchr(gs,'.');
396 *dot = 0; 396 *dot = 0;
397 do { 397 do {
398 dot = strrchr(gs,'.'); 398 dot = strrchr(gs,'.');
399 if (dot) { 399 if (dot) {
400 n = dot+1; 400 n = dot+1;
401 *dot=0; 401 *dot=0;
402 } 402 }
403 else 403 else
404 n = gs; 404 n = gs;
405 /* property(VCGroupingProp=n); 405 /* property(VCGroupingProp=n);
406 *and the value may have VCGrouping property 406 *and the value may have VCGrouping property
407 */ 407 */
408 t = addProp(t,VCGroupingProp); 408 t = addProp(t,VCGroupingProp);
409 setVObjectStringZValue(t,lookupProp_(n)); 409 setVObjectStringZValue(t,lookupProp_(n));
410 } while (n != gs); 410 } while (n != gs);
411 deleteStr(gs); 411 deleteStr(gs);
412 return p; 412 return p;
413 } 413 }
414 else 414 else
415 return addProp_(o,lookupProp(g)); 415 return addProp_(o,lookupProp(g));
416} 416}
417 417
418DLLEXPORT(VObject*) addPropValue(VObject *o, const char *p, const char *v) 418DLLEXPORT(VObject*) addPropValue(VObject *o, const char *p, const char *v)
419{ 419{
420 VObject *prop; 420 VObject *prop;
421 prop = addProp(o,p); 421 prop = addProp(o,p);
422 setVObjectStringZValue_(prop, strdup( v ) ); 422 setVObjectStringZValue_(prop, strdup( v ) );
423 return prop; 423 return prop;
424} 424}
425 425
426DLLEXPORT(VObject*) addPropSizedValue_(VObject *o, const char *p, const char *v, 426DLLEXPORT(VObject*) addPropSizedValue_(VObject *o, const char *p, const char *v,
427 unsigned int size) 427 unsigned int size)
428{ 428{
429 VObject *prop; 429 VObject *prop;
430 prop = addProp(o,p); 430 prop = addProp(o,p);
431 setValueWithSize_(prop, (void*)v, size); 431 setValueWithSize_(prop, (void*)v, size);
432 return prop; 432 return prop;
433} 433}
434 434
435DLLEXPORT(VObject*) addPropSizedValue(VObject *o, const char *p, const char *v, 435DLLEXPORT(VObject*) addPropSizedValue(VObject *o, const char *p, const char *v,
436 unsigned int size) 436 unsigned int size)
437{ 437{
438 return addPropSizedValue_(o,p,dupStr(v,size),size); 438 return addPropSizedValue_(o,p,dupStr(v,size),size);
439} 439}
440 440
441 441
442DLLEXPORT(void) cleanVObject(VObject *o) 442DLLEXPORT(void) cleanVObject(VObject *o)
443{ 443{
444 if (o == 0) return; 444 if (o == 0) return;
445 if (o->prop) { 445 if (o->prop) {
446 /* destroy time: cannot use the iterator here. 446 /* destroy time: cannot use the iterator here.
447 Have to break the cycle in the circular link 447 Have to break the cycle in the circular link
448 list and turns it into regular NULL-terminated 448 list and turns it into regular NULL-terminated
449 list -- since at some point of destruction, 449 list -- since at some point of destruction,
450 the reference entry for the iterator to work 450 the reference entry for the iterator to work
451 will not longer be valid. 451 will not longer be valid.
452 */ 452 */
453 VObject *p; 453 VObject *p;
454 p = o->prop->next; 454 p = o->prop->next;
455 o->prop->next = 0; 455 o->prop->next = 0;
456 do { 456 do {
457 VObject *t = p->next; 457 VObject *t = p->next;
458 cleanVObject(p); 458 cleanVObject(p);
459 p = t; 459 p = t;
460 } while (p); 460 } while (p);
461 } 461 }
462 switch (VALUE_TYPE(o)) { 462 switch (VALUE_TYPE(o)) {
463 case VCVT_STRINGZ: 463 case VCVT_STRINGZ:
464 case VCVT_RAW: 464 case VCVT_RAW:
465 // assume they are all allocated by malloc. 465 // assume they are all allocated by malloc.
466 free((char*)STRINGZ_VALUE_OF(o)); 466 free((char*)STRINGZ_VALUE_OF(o));
467 break; 467 break;
468 case VCVT_VOBJECT: 468 case VCVT_VOBJECT:
469 cleanVObject(VOBJECT_VALUE_OF(o)); 469 cleanVObject(VOBJECT_VALUE_OF(o));
470 break; 470 break;
471 } 471 }
472 deleteVObject(o); 472 deleteVObject(o);
473} 473}
474 474
475DLLEXPORT(void) cleanVObjects(VObject *list) 475DLLEXPORT(void) cleanVObjects(VObject *list)
476{ 476{
477 while (list) { 477 while (list) {
478 VObject *t = list; 478 VObject *t = list;
479 list = nextVObjectInList(list); 479 list = nextVObjectInList(list);
480 cleanVObject(t); 480 cleanVObject(t);
481 } 481 }
482} 482}
483 483
484/*---------------------------------------------------------------------- 484/*----------------------------------------------------------------------
485 The following is a String Table Facilities. 485 The following is a String Table Facilities.
486 ----------------------------------------------------------------------*/ 486 ----------------------------------------------------------------------*/
487 487
488#define STRTBLSIZE 255 488#define STRTBLSIZE 255
489 489
490static StrItem *strTbl[STRTBLSIZE]; 490static StrItem *strTbl[STRTBLSIZE];
491 491
492static unsigned int hashStr(const char *s) 492static unsigned int hashStr(const char *s)
493{ 493{
494 unsigned int h = 0; 494 unsigned int h = 0;
495 int i; 495 int i;
496 for (i=0;s[i];i++) { 496 for (i=0;s[i];i++) {
497 h += s[i]*i; 497 h += s[i]*i;
498 } 498 }
499 return h % STRTBLSIZE; 499 return h % STRTBLSIZE;
500} 500}
501 501
502DLLEXPORT(const char*) lookupStr(const char *s) 502DLLEXPORT(const char*) lookupStr(const char *s)
503{ 503{
504 StrItem *t; 504 StrItem *t;
505 unsigned int h = hashStr(s); 505 unsigned int h = hashStr(s);
506 if ((t = strTbl[h]) != 0) { 506 if ((t = strTbl[h]) != 0) {
507 do { 507 do {
508 if (qstricmp(t->s,s) == 0) { 508 if (qstricmp(t->s,s) == 0) {
509 t->refCnt++; 509 t->refCnt++;
510 return t->s; 510 return t->s;
511 } 511 }
512 t = t->next; 512 t = t->next;
513 } while (t); 513 } while (t);
514 } 514 }
515 s = dupStr(s,0); 515 s = dupStr(s,0);
516 strTbl[h] = newStrItem(s,strTbl[h]); 516 strTbl[h] = newStrItem(s,strTbl[h]);
517 return s; 517 return s;
518} 518}
519 519
520DLLEXPORT(void) unUseStr(const char *s) 520DLLEXPORT(void) unUseStr(const char *s)
521{ 521{
522 StrItem *t, *p; 522 StrItem *t, *p;
523 unsigned int h = hashStr(s); 523 unsigned int h = hashStr(s);
524 if ((t = strTbl[h]) != 0) { 524 if ((t = strTbl[h]) != 0) {
525 p = t; 525 p = t;
526 do { 526 do {
527 if (qstricmp(t->s,s) == 0) { 527 if (qstricmp(t->s,s) == 0) {
528 t->refCnt--; 528 t->refCnt--;
529 if (t->refCnt == 0) { 529 if (t->refCnt == 0) {
530 if (p == strTbl[h]) { 530 if (p == strTbl[h]) {
531 strTbl[h] = t->next; 531 strTbl[h] = t->next;
532 } 532 }
533 else { 533 else {
534 p->next = t->next; 534 p->next = t->next;
535 } 535 }
536 deleteStr(t->s); 536 deleteStr(t->s);
537 deleteStrItem(t); 537 deleteStrItem(t);
538 return; 538 return;
539 } 539 }
540 } 540 }
541 p = t; 541 p = t;
542 t = t->next; 542 t = t->next;
543 } while (t); 543 } while (t);
544 } 544 }
545} 545}
546 546
547DLLEXPORT(void) cleanStrTbl() 547DLLEXPORT(void) cleanStrTbl()
548{ 548{
549 int i; 549 int i;
550 for (i=0; i<STRTBLSIZE;i++) { 550 for (i=0; i<STRTBLSIZE;i++) {
551 StrItem *t = strTbl[i]; 551 StrItem *t = strTbl[i];
552 while (t) { 552 while (t) {
553 StrItem *p; 553 StrItem *p;
554 deleteStr(t->s); 554 deleteStr(t->s);
555 p = t; 555 p = t;
556 t = t->next; 556 t = t->next;
557 deleteStrItem(p); 557 deleteStrItem(p);
558 } while (t); 558 } while (t);
559 strTbl[i] = 0; 559 strTbl[i] = 0;
560 } 560 }
561} 561}
562 562
563 563
564struct PreDefProp { 564struct PreDefProp {
565 const char *name; 565 const char *name;
566 const char *alias; 566 const char *alias;
567 const char** fields; 567 const char** fields;
568 unsigned int flags; 568 unsigned int flags;
569 }; 569 };
570 570
571/* flags in PreDefProp */ 571/* flags in PreDefProp */
572 #define PD_BEGIN0x1 572 #define PD_BEGIN0x1
573 #define PD_INTERNAL0x2 573 #define PD_INTERNAL0x2
574 574
575static const char *adrFields[] = { 575static const char *adrFields[] = {
576 VCPostalBoxProp, 576 VCPostalBoxProp,
577 VCExtAddressProp, 577 VCExtAddressProp,
578 VCStreetAddressProp, 578 VCStreetAddressProp,
579 VCCityProp, 579 VCCityProp,
580 VCRegionProp, 580 VCRegionProp,
581 VCPostalCodeProp, 581 VCPostalCodeProp,
582 VCCountryNameProp, 582 VCCountryNameProp,
583 0 583 0
584}; 584};
585 585
586static const char *nameFields[] = { 586static const char *nameFields[] = {
587 VCFamilyNameProp, 587 VCFamilyNameProp,
588 VCGivenNameProp, 588 VCGivenNameProp,
589 VCAdditionalNamesProp, 589 VCAdditionalNamesProp,
590 VCNamePrefixesProp, 590 VCNamePrefixesProp,
591 VCNameSuffixesProp, 591 VCNameSuffixesProp,
592 NULL 592 NULL
593 }; 593 };
594 594
595static const char *orgFields[] = { 595static const char *orgFields[] = {
596 VCOrgNameProp, 596 VCOrgNameProp,
597 VCOrgUnitProp, 597 VCOrgUnitProp,
598 VCOrgUnit2Prop, 598 VCOrgUnit2Prop,
599 VCOrgUnit3Prop, 599 VCOrgUnit3Prop,
600 VCOrgUnit4Prop, 600 VCOrgUnit4Prop,
601 NULL 601 NULL
602 }; 602 };
603 603
604static const char *AAlarmFields[] = { 604static const char *AAlarmFields[] = {
605 VCRunTimeProp, 605 VCRunTimeProp,
606 VCSnoozeTimeProp, 606 VCSnoozeTimeProp,
607 VCRepeatCountProp, 607 VCRepeatCountProp,
608 VCAudioContentProp, 608 VCAudioContentProp,
609 0 609 0
610 }; 610 };
611 611
612/* ExDate -- has unamed fields */ 612/* ExDate -- has unamed fields */
613/* RDate -- has unamed fields */ 613/* RDate -- has unamed fields */
614 614
615static const char *DAlarmFields[] = { 615static const char *DAlarmFields[] = {
616 VCRunTimeProp, 616 VCRunTimeProp,
617 VCSnoozeTimeProp, 617 VCSnoozeTimeProp,
618 VCRepeatCountProp, 618 VCRepeatCountProp,
619 VCDisplayStringProp, 619 VCDisplayStringProp,
620 0 620 0
621 }; 621 };
622 622
623static const char *MAlarmFields[] = { 623static const char *MAlarmFields[] = {
624 VCRunTimeProp, 624 VCRunTimeProp,
625 VCSnoozeTimeProp, 625 VCSnoozeTimeProp,
626 VCRepeatCountProp, 626 VCRepeatCountProp,
627 VCEmailAddressProp, 627 VCEmailAddressProp,
628 VCNoteProp, 628 VCNoteProp,
629 0 629 0
630 }; 630 };
631 631
632static const char *PAlarmFields[] = { 632static const char *PAlarmFields[] = {
633 VCRunTimeProp, 633 VCRunTimeProp,
634 VCSnoozeTimeProp, 634 VCSnoozeTimeProp,
635 VCRepeatCountProp, 635 VCRepeatCountProp,
636 VCProcedureNameProp, 636 VCProcedureNameProp,
637 0 637 0
638 }; 638 };
639 639
640static struct PreDefProp propNames[] = { 640static struct PreDefProp propNames[] = {
641 { VC7bitProp, 0, 0, 0 }, 641 { VC7bitProp, 0, 0, 0 },
642 { VC8bitProp, 0, 0, 0 }, 642 { VC8bitProp, 0, 0, 0 },
643 { VCAAlarmProp, 0, AAlarmFields, 0 }, 643 { VCAAlarmProp, 0, AAlarmFields, 0 },
644 { VCAdditionalNamesProp, 0, 0, 0 }, 644 { VCAdditionalNamesProp, 0, 0, 0 },
645 { VCAdrProp, 0, adrFields, 0 }, 645 { VCAdrProp, 0, adrFields, 0 },
646 { VCAgentProp, 0, 0, 0 }, 646 { VCAgentProp, 0, 0, 0 },
647 { VCAIFFProp, 0, 0, 0 }, 647 { VCAIFFProp, 0, 0, 0 },
648 { VCAOLProp, 0, 0, 0 }, 648 { VCAOLProp, 0, 0, 0 },
649 { VCAppleLinkProp, 0, 0, 0 }, 649 { VCAppleLinkProp, 0, 0, 0 },
650 { VCAttachProp, 0, 0, 0 }, 650 { VCAttachProp, 0, 0, 0 },
651 { VCAttendeeProp, 0, 0, 0 }, 651 { VCAttendeeProp, 0, 0, 0 },
652 { VCATTMailProp, 0, 0, 0 }, 652 { VCATTMailProp, 0, 0, 0 },
653 { VCAudioContentProp, 0, 0, 0 }, 653 { VCAudioContentProp, 0, 0, 0 },
654 { VCAVIProp, 0, 0, 0 }, 654 { VCAVIProp, 0, 0, 0 },
655 { VCBase64Prop, 0, 0, 0 }, 655 { VCBase64Prop, 0, 0, 0 },
656 { VCBBSProp, 0, 0, 0 }, 656 { VCBBSProp, 0, 0, 0 },
657 { VCBirthDateProp, 0, 0, 0 }, 657 { VCBirthDateProp, 0, 0, 0 },
658 { VCBMPProp, 0, 0, 0 }, 658 { VCBMPProp, 0, 0, 0 },
659 { VCBodyProp, 0, 0, 0 }, 659 { VCBodyProp, 0, 0, 0 },
660 { VCBusinessRoleProp, 0, 0, 0 }, 660 { VCBusinessRoleProp, 0, 0, 0 },
661 { VCCalProp, 0, 0, PD_BEGIN }, 661 { VCCalProp, 0, 0, PD_BEGIN },
662 { VCCaptionProp, 0, 0, 0 }, 662 { VCCaptionProp, 0, 0, 0 },
663 { VCCardProp, 0, 0, PD_BEGIN }, 663 { VCCardProp, 0, 0, PD_BEGIN },
664 { VCCarProp, 0, 0, 0 }, 664 { VCCarProp, 0, 0, 0 },
665 { VCCategoriesProp, 0, 0, 0 }, 665 { VCCategoriesProp, 0, 0, 0 },
666 { VCCellularProp, 0, 0, 0 }, 666 { VCCellularProp, 0, 0, 0 },
667 { VCCGMProp, 0, 0, 0 }, 667 { VCCGMProp, 0, 0, 0 },
668 { VCCharSetProp, 0, 0, 0 }, 668 { VCCharSetProp, 0, 0, 0 },
669 { VCCIDProp, VCContentIDProp, 0, 0 }, 669 { VCCIDProp, VCContentIDProp, 0, 0 },
670 { VCCISProp, 0, 0, 0 }, 670 { VCCISProp, 0, 0, 0 },
671 { VCCityProp, 0, 0, 0 }, 671 { VCCityProp, 0, 0, 0 },
672 { VCClassProp, 0, 0, 0 }, 672 { VCClassProp, 0, 0, 0 },
673 { VCCommentProp, 0, 0, 0 }, 673 { VCCommentProp, 0, 0, 0 },
674 { VCCompletedProp, 0, 0, 0 }, 674 { VCCompletedProp, 0, 0, 0 },
675 { VCContentIDProp, 0, 0, 0 }, 675 { VCContentIDProp, 0, 0, 0 },
676 { VCCountryNameProp, 0, 0, 0 }, 676 { VCCountryNameProp, 0, 0, 0 },
677 { VCDAlarmProp, 0, DAlarmFields, 0 }, 677 { VCDAlarmProp, 0, DAlarmFields, 0 },
678 { VCDataSizeProp, 0, 0, PD_INTERNAL }, 678 { VCDataSizeProp, 0, 0, PD_INTERNAL },
679 { VCDayLightProp, 0, 0, 0 }, 679 { VCDayLightProp, 0, 0, 0 },
680 { VCDCreatedProp, 0, 0, 0 }, 680 { VCDCreatedProp, 0, 0, 0 },
681 { VCDeliveryLabelProp, 0, 0, 0 }, 681 { VCDeliveryLabelProp, 0, 0, 0 },
682 { VCDescriptionProp, 0, 0, 0 }, 682 { VCDescriptionProp, 0, 0, 0 },
683 { VCDIBProp, 0, 0, 0 }, 683 { VCDIBProp, 0, 0, 0 },
684 { VCDisplayStringProp, 0, 0, 0 }, 684 { VCDisplayStringProp, 0, 0, 0 },
685 { VCDomesticProp, 0, 0, 0 }, 685 { VCDomesticProp, 0, 0, 0 },
686 { VCDTendProp, 0, 0, 0 }, 686 { VCDTendProp, 0, 0, 0 },
687 { VCDTstartProp, 0, 0, 0 }, 687 { VCDTstartProp, 0, 0, 0 },
688 { VCDueProp, 0, 0, 0 }, 688 { VCDueProp, 0, 0, 0 },
689 { VCEmailAddressProp, 0, 0, 0 }, 689 { VCEmailAddressProp, 0, 0, 0 },
690 { VCEncodingProp, 0, 0, 0 }, 690 { VCEncodingProp, 0, 0, 0 },
691 { VCEndProp, 0, 0, 0 }, 691 { VCEndProp, 0, 0, 0 },
692 { VCEventProp, 0, 0, PD_BEGIN }, 692 { VCEventProp, 0, 0, PD_BEGIN },
693 { VCEWorldProp, 0, 0, 0 }, 693 { VCEWorldProp, 0, 0, 0 },
694 { VCExNumProp, 0, 0, 0 }, 694 { VCExNumProp, 0, 0, 0 },
695 { VCExpDateProp, 0, 0, 0 }, 695 { VCExpDateProp, 0, 0, 0 },
696 { VCExpectProp, 0, 0, 0 }, 696 { VCExpectProp, 0, 0, 0 },
697 { VCExtAddressProp, 0, 0, 0 }, 697 { VCExtAddressProp, 0, 0, 0 },
698 { VCFamilyNameProp, 0, 0, 0 }, 698 { VCFamilyNameProp, 0, 0, 0 },
699 { VCFaxProp, 0, 0, 0 }, 699 { VCFaxProp, 0, 0, 0 },
700 { VCFullNameProp, 0, 0, 0 }, 700 { VCFullNameProp, 0, 0, 0 },
701 { VCGeoLocationProp, 0, 0, 0 }, 701 { VCGeoLocationProp, 0, 0, 0 },
702 { VCGeoProp, 0, 0, 0 }, 702 { VCGeoProp, 0, 0, 0 },
703 { VCGIFProp, 0, 0, 0 }, 703 { VCGIFProp, 0, 0, 0 },
704 { VCGivenNameProp, 0, 0, 0 }, 704 { VCGivenNameProp, 0, 0, 0 },
705 { VCGroupingProp, 0, 0, 0 }, 705 { VCGroupingProp, 0, 0, 0 },
706 { VCHomeProp, 0, 0, 0 }, 706 { VCHomeProp, 0, 0, 0 },
707 { VCIBMMailProp, 0, 0, 0 }, 707 { VCIBMMailProp, 0, 0, 0 },
708 { VCInlineProp, 0, 0, 0 }, 708 { VCInlineProp, 0, 0, 0 },
709 { VCInternationalProp, 0, 0, 0 }, 709 { VCInternationalProp, 0, 0, 0 },
710 { VCInternetProp, 0, 0, 0 }, 710 { VCInternetProp, 0, 0, 0 },
711 { VCISDNProp, 0, 0, 0 }, 711 { VCISDNProp, 0, 0, 0 },
712 { VCJPEGProp, 0, 0, 0 }, 712 { VCJPEGProp, 0, 0, 0 },
713 { VCLanguageProp, 0, 0, 0 }, 713 { VCLanguageProp, 0, 0, 0 },
714 { VCLastModifiedProp, 0, 0, 0 }, 714 { VCLastModifiedProp, 0, 0, 0 },
715 { VCLastRevisedProp, 0, 0, 0 }, 715 { VCLastRevisedProp, 0, 0, 0 },
716 { VCLocationProp, 0, 0, 0 }, 716 { VCLocationProp, 0, 0, 0 },
717 { VCLogoProp, 0, 0, 0 }, 717 { VCLogoProp, 0, 0, 0 },
718 { VCMailerProp, 0, 0, 0 }, 718 { VCMailerProp, 0, 0, 0 },
719 { VCMAlarmProp, 0, MAlarmFields, 0 }, 719 { VCMAlarmProp, 0, MAlarmFields, 0 },
720 { VCMCIMailProp, 0, 0, 0 }, 720 { VCMCIMailProp, 0, 0, 0 },
721 { VCMessageProp, 0, 0, 0 }, 721 { VCMessageProp, 0, 0, 0 },
722 { VCMETProp, 0, 0, 0 }, 722 { VCMETProp, 0, 0, 0 },
723 { VCModemProp, 0, 0, 0 }, 723 { VCModemProp, 0, 0, 0 },
724 { VCMPEG2Prop, 0, 0, 0 }, 724 { VCMPEG2Prop, 0, 0, 0 },
725 { VCMPEGProp, 0, 0, 0 }, 725 { VCMPEGProp, 0, 0, 0 },
726 { VCMSNProp, 0, 0, 0 }, 726 { VCMSNProp, 0, 0, 0 },
727 { VCNamePrefixesProp, 0, 0, 0 }, 727 { VCNamePrefixesProp, 0, 0, 0 },
728 { VCNameProp, 0, nameFields, 0 }, 728 { VCNameProp, 0, nameFields, 0 },
729 { VCNameSuffixesProp, 0, 0, 0 }, 729 { VCNameSuffixesProp, 0, 0, 0 },
730 { VCNoteProp, 0, 0, 0 }, 730 { VCNoteProp, 0, 0, 0 },
731 { VCOrgNameProp, 0, 0, 0 }, 731 { VCOrgNameProp, 0, 0, 0 },
732 { VCOrgProp, 0, orgFields, 0 }, 732 { VCOrgProp, 0, orgFields, 0 },
733 { VCOrgUnit2Prop, 0, 0, 0 }, 733 { VCOrgUnit2Prop, 0, 0, 0 },
734 { VCOrgUnit3Prop, 0, 0, 0 }, 734 { VCOrgUnit3Prop, 0, 0, 0 },
735 { VCOrgUnit4Prop, 0, 0, 0 }, 735 { VCOrgUnit4Prop, 0, 0, 0 },
736 { VCOrgUnitProp, 0, 0, 0 }, 736 { VCOrgUnitProp, 0, 0, 0 },
737 { VCPagerProp, 0, 0, 0 }, 737 { VCPagerProp, 0, 0, 0 },
738 { VCPAlarmProp, 0, PAlarmFields, 0 }, 738 { VCPAlarmProp, 0, PAlarmFields, 0 },
739 { VCParcelProp, 0, 0, 0 }, 739 { VCParcelProp, 0, 0, 0 },
740 { VCPartProp, 0, 0, 0 }, 740 { VCPartProp, 0, 0, 0 },
741 { VCPCMProp, 0, 0, 0 }, 741 { VCPCMProp, 0, 0, 0 },
742 { VCPDFProp, 0, 0, 0 }, 742 { VCPDFProp, 0, 0, 0 },
743 { VCPGPProp, 0, 0, 0 }, 743 { VCPGPProp, 0, 0, 0 },
744 { VCPhotoProp, 0, 0, 0 }, 744 { VCPhotoProp, 0, 0, 0 },
745 { VCPICTProp, 0, 0, 0 }, 745 { VCPICTProp, 0, 0, 0 },
746 { VCPMBProp, 0, 0, 0 }, 746 { VCPMBProp, 0, 0, 0 },
747 { VCPostalBoxProp, 0, 0, 0 }, 747 { VCPostalBoxProp, 0, 0, 0 },
748 { VCPostalCodeProp, 0, 0, 0 }, 748 { VCPostalCodeProp, 0, 0, 0 },
749 { VCPostalProp, 0, 0, 0 }, 749 { VCPostalProp, 0, 0, 0 },
750 { VCPowerShareProp, 0, 0, 0 }, 750 { VCPowerShareProp, 0, 0, 0 },
751 { VCPreferredProp, 0, 0, 0 }, 751 { VCPreferredProp, 0, 0, 0 },
752 { VCPriorityProp, 0, 0, 0 }, 752 { VCPriorityProp, 0, 0, 0 },
753 { VCProcedureNameProp, 0, 0, 0 }, 753 { VCProcedureNameProp, 0, 0, 0 },
754 { VCProdIdProp, 0, 0, 0 }, 754 { VCProdIdProp, 0, 0, 0 },
755 { VCProdigyProp, 0, 0, 0 }, 755 { VCProdigyProp, 0, 0, 0 },
756 { VCPronunciationProp, 0, 0, 0 }, 756 { VCPronunciationProp, 0, 0, 0 },
757 { VCPSProp, 0, 0, 0 }, 757 { VCPSProp, 0, 0, 0 },
758 { VCPublicKeyProp, 0, 0, 0 }, 758 { VCPublicKeyProp, 0, 0, 0 },
759 { VCQPProp, VCQuotedPrintableProp, 0, 0 }, 759 { VCQPProp, VCQuotedPrintableProp, 0, 0 },
760 { VCQPProp, VCBase64Prop, 0, 0 },
760 { VCQuickTimeProp, 0, 0, 0 }, 761 { VCQuickTimeProp, 0, 0, 0 },
761 { VCQuotedPrintableProp, 0, 0, 0 }, 762 { VCQuotedPrintableProp, 0, 0, 0 },
762 { VCRDateProp, 0, 0, 0 }, 763 { VCRDateProp, 0, 0, 0 },
763 { VCRegionProp, 0, 0, 0 }, 764 { VCRegionProp, 0, 0, 0 },
764 { VCRelatedToProp, 0, 0, 0 }, 765 { VCRelatedToProp, 0, 0, 0 },
765 { VCRepeatCountProp, 0, 0, 0 }, 766 { VCRepeatCountProp, 0, 0, 0 },
766 { VCResourcesProp, 0, 0, 0 }, 767 { VCResourcesProp, 0, 0, 0 },
767 { VCRNumProp, 0, 0, 0 }, 768 { VCRNumProp, 0, 0, 0 },
768 { VCRoleProp, 0, 0, 0 }, 769 { VCRoleProp, 0, 0, 0 },
769 { VCRRuleProp, 0, 0, 0 }, 770 { VCRRuleProp, 0, 0, 0 },
770 { VCRSVPProp, 0, 0, 0 }, 771 { VCRSVPProp, 0, 0, 0 },
771 { VCRunTimeProp, 0, 0, 0 }, 772 { VCRunTimeProp, 0, 0, 0 },
772 { VCSequenceProp, 0, 0, 0 }, 773 { VCSequenceProp, 0, 0, 0 },
773 { VCSnoozeTimeProp, 0, 0, 0 }, 774 { VCSnoozeTimeProp, 0, 0, 0 },
774 { VCStartProp, 0, 0, 0 }, 775 { VCStartProp, 0, 0, 0 },
775 { VCStatusProp, 0, 0, 0 }, 776 { VCStatusProp, 0, 0, 0 },
776 { VCStreetAddressProp, 0, 0, 0 }, 777 { VCStreetAddressProp, 0, 0, 0 },
777 { VCSubTypeProp, 0, 0, 0 }, 778 { VCSubTypeProp, 0, 0, 0 },
778 { VCSummaryProp, 0, 0, 0 }, 779 { VCSummaryProp, 0, 0, 0 },
779 { VCTelephoneProp, 0, 0, 0 }, 780 { VCTelephoneProp, 0, 0, 0 },
780 { VCTIFFProp, 0, 0, 0 }, 781 { VCTIFFProp, 0, 0, 0 },
781 { VCTimeZoneProp, 0, 0, 0 }, 782 { VCTimeZoneProp, 0, 0, 0 },
782 { VCTitleProp, 0, 0, 0 }, 783 { VCTitleProp, 0, 0, 0 },
783 { VCTLXProp, 0, 0, 0 }, 784 { VCTLXProp, 0, 0, 0 },
784 { VCTodoProp, 0, 0, PD_BEGIN }, 785 { VCTodoProp, 0, 0, PD_BEGIN },
785 { VCTranspProp, 0, 0, 0 }, 786 { VCTranspProp, 0, 0, 0 },
786 { VCUniqueStringProp, 0, 0, 0 }, 787 { VCUniqueStringProp, 0, 0, 0 },
787 { VCURLProp, 0, 0, 0 }, 788 { VCURLProp, 0, 0, 0 },
788 { VCURLValueProp, 0, 0, 0 }, 789 { VCURLValueProp, 0, 0, 0 },
789 { VCValueProp, 0, 0, 0 }, 790 { VCValueProp, 0, 0, 0 },
790 { VCVersionProp, 0, 0, 0 }, 791 { VCVersionProp, 0, 0, 0 },
791 { VCVideoProp, 0, 0, 0 }, 792 { VCVideoProp, 0, 0, 0 },
792 { VCVoiceProp, 0, 0, 0 }, 793 { VCVoiceProp, 0, 0, 0 },
793 { VCWAVEProp, 0, 0, 0 }, 794 { VCWAVEProp, 0, 0, 0 },
794 { VCWMFProp, 0, 0, 0 }, 795 { VCWMFProp, 0, 0, 0 },
795 { VCWorkProp, 0, 0, 0 }, 796 { VCWorkProp, 0, 0, 0 },
796 { VCX400Prop, 0, 0, 0 }, 797 { VCX400Prop, 0, 0, 0 },
797 { VCX509Prop, 0, 0, 0 }, 798 { VCX509Prop, 0, 0, 0 },
798 { VCXRuleProp, 0, 0, 0 }, 799 { VCXRuleProp, 0, 0, 0 },
799 { 0,0,0,0 } 800 { 0,0,0,0 }
800 }; 801 };
801 802
802 803
803static struct PreDefProp* lookupPropInfo(const char* str) 804static struct PreDefProp* lookupPropInfo(const char* str)
804{ 805{
805 /* brute force for now, could use a hash table here. */ 806 /* brute force for now, could use a hash table here. */
806 int i; 807 int i;
807 808
808 for (i = 0; propNames[i].name; i++) 809 for (i = 0; propNames[i].name; i++)
809 if (qstricmp(str, propNames[i].name) == 0) { 810 if (qstricmp(str, propNames[i].name) == 0) {
810 return &propNames[i]; 811 return &propNames[i];
811 } 812 }
812 813
813 return 0; 814 return 0;
814} 815}
815 816
816 817
817DLLEXPORT(const char*) lookupProp_(const char* str) 818DLLEXPORT(const char*) lookupProp_(const char* str)
818{ 819{
819 int i; 820 int i;
820 821
821 for (i = 0; propNames[i].name; i++) 822 for (i = 0; propNames[i].name; i++)
822 if (qstricmp(str, propNames[i].name) == 0) { 823 if (qstricmp(str, propNames[i].name) == 0) {
823 const char* s; 824 const char* s;
824 s = propNames[i].alias?propNames[i].alias:propNames[i].name; 825 s = propNames[i].alias?propNames[i].alias:propNames[i].name;
825 return lookupStr(s); 826 return lookupStr(s);
826 } 827 }
827 return lookupStr(str); 828 return lookupStr(str);
828} 829}
829 830
830 831
831DLLEXPORT(const char*) lookupProp(const char* str) 832DLLEXPORT(const char*) lookupProp(const char* str)
832{ 833{
833 int i; 834 int i;
834 835
835 for (i = 0; propNames[i].name; i++) 836 for (i = 0; propNames[i].name; i++)
836 if (qstricmp(str, propNames[i].name) == 0) { 837 if (qstricmp(str, propNames[i].name) == 0) {
837 const char *s; 838 const char *s;
838 fieldedProp = propNames[i].fields; 839 fieldedProp = propNames[i].fields;
839 s = propNames[i].alias?propNames[i].alias:propNames[i].name; 840 s = propNames[i].alias?propNames[i].alias:propNames[i].name;
840 return lookupStr(s); 841 return lookupStr(s);
841 } 842 }
842 fieldedProp = 0; 843 fieldedProp = 0;
843 return lookupStr(str); 844 return lookupStr(str);
844} 845}
845 846
846 847
847/*---------------------------------------------------------------------- 848/*----------------------------------------------------------------------
848 APIs to Output text form. 849 APIs to Output text form.
849 ----------------------------------------------------------------------*/ 850 ----------------------------------------------------------------------*/
850#define OFILE_REALLOC_SIZE 256 851#define OFILE_REALLOC_SIZE 256
851typedef struct OFile { 852typedef struct OFile {
852 FILE *fp; 853 FILE *fp;
853 char *s; 854 char *s;
854 int len; 855 int len;
855 int limit; 856 int limit;
856 int alloc:1; 857 int alloc:1;
857 int fail:1; 858 int fail:1;
858 } OFile; 859 } OFile;
859 860
860#if 0 861#if 0
861static void appendsOFile(OFile *fp, const char *s) 862static void appendsOFile(OFile *fp, const char *s)
862{ 863{
863 int slen; 864 int slen;
864 if (fp->fail) return; 865 if (fp->fail) return;
865 slen = strlen(s); 866 slen = strlen(s);
866 if (fp->fp) { 867 if (fp->fp) {
867 fwrite(s,1,slen,fp->fp); 868 fwrite(s,1,slen,fp->fp);
868 } 869 }
869 else { 870 else {
870stuff: 871stuff:
871 if (fp->len + slen < fp->limit) { 872 if (fp->len + slen < fp->limit) {
872 memcpy(fp->s+fp->len,s,slen); 873 memcpy(fp->s+fp->len,s,slen);
873 fp->len += slen; 874 fp->len += slen;
874 return; 875 return;
875 } 876 }
876 else if (fp->alloc) { 877 else if (fp->alloc) {
877 fp->limit = fp->limit + OFILE_REALLOC_SIZE; 878 fp->limit = fp->limit + OFILE_REALLOC_SIZE;
878 if (OFILE_REALLOC_SIZE <= slen) fp->limit += slen; 879 if (OFILE_REALLOC_SIZE <= slen) fp->limit += slen;
879 fp->s = (char *) realloc(fp->s,fp->limit); 880 fp->s = (char *) realloc(fp->s,fp->limit);
880 if (fp->s) goto stuff; 881 if (fp->s) goto stuff;
881 } 882 }
882 if (fp->alloc) 883 if (fp->alloc)
883 free(fp->s); 884 free(fp->s);
884 fp->s = 0; 885 fp->s = 0;
885 fp->fail = 1; 886 fp->fail = 1;
886 } 887 }
887} 888}
888 889
889static void appendcOFile(OFile *fp, char c) 890static void appendcOFile(OFile *fp, char c)
890{ 891{
891 if (fp->fail) return; 892 if (fp->fail) return;
892 if (fp->fp) { 893 if (fp->fp) {
893 fputc(c,fp->fp); 894 fputc(c,fp->fp);
894 } 895 }
895 else { 896 else {
896stuff: 897stuff:
897 if (fp->len+1 < fp->limit) { 898 if (fp->len+1 < fp->limit) {
898 fp->s[fp->len] = c; 899 fp->s[fp->len] = c;
899 fp->len++; 900 fp->len++;
900 return; 901 return;
901 } 902 }
902 else if (fp->alloc) { 903 else if (fp->alloc) {
903 fp->limit = fp->limit + OFILE_REALLOC_SIZE; 904 fp->limit = fp->limit + OFILE_REALLOC_SIZE;
904 fp->s = (char *) realloc(fp->s,fp->limit); 905 fp->s = (char *) realloc(fp->s,fp->limit);
905 if (fp->s) goto stuff; 906 if (fp->s) goto stuff;
906 } 907 }
907 if (fp->alloc) 908 if (fp->alloc)
908 free(fp->s); 909 free(fp->s);
909 fp->s = 0; 910 fp->s = 0;
910 fp->fail = 1; 911 fp->fail = 1;
911 } 912 }
912} 913}
913#else 914#else
914static void appendcOFile_(OFile *fp, char c) 915static void appendcOFile_(OFile *fp, char c)
915{ 916{
916 if (fp->fail) return; 917 if (fp->fail) return;
917 if (fp->fp) { 918 if (fp->fp) {
918 fputc(c,fp->fp); 919 fputc(c,fp->fp);
919 } 920 }
920 else { 921 else {
921stuff: 922stuff:
922 if (fp->len+1 < fp->limit) { 923 if (fp->len+1 < fp->limit) {
923 fp->s[fp->len] = c; 924 fp->s[fp->len] = c;
924 fp->len++; 925 fp->len++;
925 return; 926 return;
926 } 927 }
927 else if (fp->alloc) { 928 else if (fp->alloc) {
928 fp->limit = fp->limit + OFILE_REALLOC_SIZE; 929 fp->limit = fp->limit + OFILE_REALLOC_SIZE;
929 fp->s = (char *)realloc(fp->s,fp->limit); 930 fp->s = (char *)realloc(fp->s,fp->limit);
930 if (fp->s) goto stuff; 931 if (fp->s) goto stuff;
931 } 932 }
932 if (fp->alloc) 933 if (fp->alloc)
933 free(fp->s); 934 free(fp->s);
934 fp->s = 0; 935 fp->s = 0;
935 fp->fail = 1; 936 fp->fail = 1;
936 } 937 }
937} 938}
938 939
939static void appendcOFile(OFile *fp, char c) 940static void appendcOFile(OFile *fp, char c)
940{ 941{
941 if (c == '\n') { 942 if (c == '\n') {
942 /* write out as <CR><LF> */ 943 /* write out as <CR><LF> */
943 appendcOFile_(fp,0xd); 944 appendcOFile_(fp,0xd);
944 appendcOFile_(fp,0xa); 945 appendcOFile_(fp,0xa);
945 } 946 }
946 else 947 else
947 appendcOFile_(fp,c); 948 appendcOFile_(fp,c);
948} 949}
949 950
950static void appendsOFile(OFile *fp, const char *s) 951static void appendsOFile(OFile *fp, const char *s)
951{ 952{
952 int i, slen; 953 int i, slen;
953 slen = strlen(s); 954 slen = strlen(s);
954 for (i=0; i<slen; i++) { 955 for (i=0; i<slen; i++) {
955 appendcOFile(fp,s[i]); 956 appendcOFile(fp,s[i]);
956 } 957 }
957} 958}
958 959
959#endif 960#endif
960 961
961static void appendsOFileEncCs(OFile *fp) 962static void appendsOFileEncCs(OFile *fp)
962{ 963{
963 if ( vobj_enc_s ) { 964 if ( vobj_enc_s ) {
964 appendsOFile(fp, ";" VCEncodingProp "="); 965 appendsOFile(fp, ";" VCEncodingProp "=");
965 appendsOFile(fp, vobj_enc_s); 966 appendsOFile(fp, vobj_enc_s);
966 } 967 }
967 appendsOFile(fp, ";" VCCharSetProp "="); 968 appendsOFile(fp, ";" VCCharSetProp "=");
968 appendsOFile(fp, vobj_cs); 969 appendsOFile(fp, vobj_cs);
969} 970}
970 971
971 972
972static void initOFile(OFile *fp, FILE *ofp) 973static void initOFile(OFile *fp, FILE *ofp)
973{ 974{
974 fp->fp = ofp; 975 fp->fp = ofp;
975 fp->s = 0; 976 fp->s = 0;
976 fp->len = 0; 977 fp->len = 0;
977 fp->limit = 0; 978 fp->limit = 0;
978 fp->alloc = 0; 979 fp->alloc = 0;
979 fp->fail = 0; 980 fp->fail = 0;
980} 981}
981 982
982static int writeBase64(OFile *fp, unsigned char *s, long len) 983static int writeBase64(OFile *fp, unsigned char *s, long len)
983{ 984{
984 long cur = 0; 985 long cur = 0;
985 int i, numQuads = 0; 986 int i, numQuads = 0;
986 unsigned long trip; 987 unsigned long trip;
987 unsigned char b; 988 unsigned char b;
988 char quad[5]; 989 char quad[5];
989#define MAXQUADS 16 990#define MAXQUADS 16
990 991
991 quad[4] = 0; 992 quad[4] = 0;
992 993
993 while (cur < len) { 994 while (cur < len) {
994 // collect the triplet of bytes into 'trip' 995 // collect the triplet of bytes into 'trip'
995 trip = 0; 996 trip = 0;
996 for (i = 0; i < 3; i++) { 997 for (i = 0; i < 3; i++) {
997 b = (cur < len) ? *(s + cur) : 0; 998 b = (cur < len) ? *(s + cur) : 0;
998 cur++; 999 cur++;
999 trip = trip << 8 | b; 1000 trip = trip << 8 | b;
1000 } 1001 }
1001 // fill in 'quad' with the appropriate four characters 1002 // fill in 'quad' with the appropriate four characters
1002 for (i = 3; i >= 0; i--) { 1003 for (i = 3; i >= 0; i--) {
1003 b = (unsigned char)(trip & 0x3F); 1004 b = (unsigned char)(trip & 0x3F);
1004 trip = trip >> 6; 1005 trip = trip >> 6;
1005 if ((3 - i) < (cur - len)) 1006 if ((3 - i) < (cur - len))
1006 quad[i] = '='; // pad char 1007 quad[i] = '='; // pad char
1007 else if (b < 26) quad[i] = (char)b + 'A'; 1008 else if (b < 26) quad[i] = (char)b + 'A';
1008 else if (b < 52) quad[i] = (char)(b - 26) + 'a'; 1009 else if (b < 52) quad[i] = (char)(b - 26) + 'a';
1009 else if (b < 62) quad[i] = (char)(b - 52) + '0'; 1010 else if (b < 62) quad[i] = (char)(b - 52) + '0';
1010 else if (b == 62) quad[i] = '+'; 1011 else if (b == 62) quad[i] = '+';
1011 else quad[i] = '/'; 1012 else quad[i] = '/';
1012 } 1013 }
1013 // now output 'quad' with appropriate whitespace and line ending 1014 // now output 'quad' with appropriate whitespace and line ending
1014 appendsOFile(fp, (numQuads == 0 ? " " : "")); 1015 appendsOFile(fp, (numQuads == 0 ? " " : ""));
1015 appendsOFile(fp, quad); 1016 appendsOFile(fp, quad);
1016 appendsOFile(fp, ((cur >= len)?"\n" :(numQuads==MAXQUADS-1?"\n" : ""))); 1017 appendsOFile(fp, ((cur >= len)?"\n" :(numQuads==MAXQUADS-1?"\n" : "")));
1017 numQuads = (numQuads + 1) % MAXQUADS; 1018 numQuads = (numQuads + 1) % MAXQUADS;
1018 } 1019 }
1019 appendcOFile(fp,'\n'); 1020 appendcOFile(fp,'\n');
1020 1021
1021 return 1; 1022 return 1;
1022} 1023}
1023 1024
1024static const char *qpReplaceChar(unsigned char c) 1025static const char *qpReplaceChar(unsigned char c)
1025{ 1026{
1026 if (c == '\n') { 1027 if (c == '\n') {
1027 return "=0A=\n"; 1028 return "=0A=\n";
1028 } else if ( 1029 } else if (
1029 // RFC 1521 1030 // RFC 1521
1030 (c >= 32 && c <= 60) // Note: " " not allowed at EOL 1031 (c >= 32 && c <= 60) // Note: " " not allowed at EOL
1031 || 1032 ||
1032 (c >= 62 && c <= 126) 1033 (c >= 62 && c <= 126)
1033 ) 1034 )
1034 { 1035 {
1035 return 0; 1036 return 0;
1036 } 1037 }
1037 1038
1038 static char trans[4]; 1039 static char trans[4];
1039 trans[0] = '='; 1040 trans[0] = '=';
1040 trans[3] = '\0'; 1041 trans[3] = '\0';
1041 int rem = c % 16; 1042 int rem = c % 16;
1042 int div = c / 16; 1043 int div = c / 16;
1043 1044
1044 if (div < 10) 1045 if (div < 10)
1045 trans[1] = '0' + div; 1046 trans[1] = '0' + div;
1046 else 1047 else
1047 trans[1] = 'A' + (div - 10); 1048 trans[1] = 'A' + (div - 10);
1048 1049
1049 if (rem < 10) 1050 if (rem < 10)
1050 trans[2] = '0' + rem; 1051 trans[2] = '0' + rem;
1051 else 1052 else
1052 trans[2] = 'A' + (rem - 10); 1053 trans[2] = 'A' + (rem - 10);
1053 1054
1054 return trans; 1055 return trans;
1055} 1056}
1056 1057
1057static void writeEncString(OFile *fp, const char *s, bool nosemi) 1058static void writeEncString(OFile *fp, const char *s, bool nosemi)
1058{ 1059{
1059 /* 1060 /*
1060 only A-Z, 0-9 and 1061 only A-Z, 0-9 and
1061 "'" (ASCII code 39) 1062 "'" (ASCII code 39)
1062 "(" (ASCII code 40) 1063 "(" (ASCII code 40)
1063 ")" (ASCII code 41) 1064 ")" (ASCII code 41)
1064 "+" (ASCII code 43) 1065 "+" (ASCII code 43)
1065 "," (ASCII code 44) 1066 "," (ASCII code 44)
1066 "-" (ASCII code 45) 1067 "-" (ASCII code 45)
1067 "/" (ASCII code 47) 1068 "/" (ASCII code 47)
1068 "?" (ASCII code 63) 1069 "?" (ASCII code 63)
1069 1070
1070 should remain un-encoded. 1071 should remain un-encoded.
1071 '=' needs to be encoded as it is the escape character. 1072 '=' needs to be encoded as it is the escape character.
1072 ';' needs to be as it is a field separator. 1073 ';' needs to be as it is a field separator.
1073 1074
1074 */ 1075 */
1075 const char *p = s; 1076 const char *p = s;
1076 switch ( vobj_enc ) { 1077 switch ( vobj_enc ) {
1077 case EightBit: 1078 case EightBit:
1078 while (*p) { 1079 while (*p) {
1079 if ( *p == '\n' || nosemi && ( *p == '\\' || *p == ';' ) ) 1080 if ( *p == '\n' || nosemi && ( *p == '\\' || *p == ';' ) )
1080 appendcOFile(fp, '\\'); 1081 appendcOFile(fp, '\\');
1081 appendcOFile(fp, *p); 1082 appendcOFile(fp, *p);
1082 p++; 1083 p++;
1083 } 1084 }
1084 break; 1085 break;
1085 case QuotedPrintable: 1086 case QuotedPrintable:
1086 while (*p) { 1087 while (*p) {
1087 const char *rep = qpReplaceChar(*p); 1088 const char *rep = qpReplaceChar(*p);
1088 if (rep) 1089 if (rep)
1089 appendsOFile(fp, rep); 1090 appendsOFile(fp, rep);
1090 else if ( *p == ';' && nosemi ) 1091 else if ( *p == ';' && nosemi )
1091 appendsOFile(fp, "=3B"); 1092 appendsOFile(fp, "=3B");
1092 else if ( *p == ' ' ) { 1093 else if ( *p == ' ' ) {
1093 if ( !p[1] || p[1] == '\n' ) // RFC 1521 1094 if ( !p[1] || p[1] == '\n' ) // RFC 1521
1094 appendsOFile(fp, "=20"); 1095 appendsOFile(fp, "=20");
1095 else 1096 else
1096 appendcOFile(fp, *p); 1097 appendcOFile(fp, *p);
1097 } else 1098 } else
1098 appendcOFile(fp, *p); 1099 appendcOFile(fp, *p);
1099 p++; 1100 p++;
1100 } 1101 }
1101 break; 1102 break;
1102 case Base64: 1103 case Base64:
1103 writeBase64(fp, (unsigned char*)p, strlen(p)); 1104 writeBase64(fp, (unsigned char*)p, strlen(p));
1104 break; 1105 break;
1105 } 1106 }
1106} 1107}
1107 1108
1108static bool includesUnprintable(VObject *o) 1109static bool includesUnprintable(VObject *o)
1109{ 1110{
1110 if (o) { 1111 if (o) {
1111 if (VALUE_TYPE(o) == VCVT_STRINGZ) { 1112 if (VALUE_TYPE(o) == VCVT_STRINGZ) {
1112 const char *p = STRINGZ_VALUE_OF(o); 1113 const char *p = STRINGZ_VALUE_OF(o);
1113 if (p) { 1114 if (p) {
1114 while (*p) { 1115 while (*p) {
1115 if (*p==' ' && (!p[1] || p[1]=='\n') // RFC 1521: spaces at ends need quoting 1116 if (*p==' ' && (!p[1] || p[1]=='\n') // RFC 1521: spaces at ends need quoting
1116 || qpReplaceChar(*p) ) 1117 || qpReplaceChar(*p) )
1117 return TRUE; 1118 return TRUE;
1118 p++; 1119 p++;
1119 } 1120 }
1120 } 1121 }
1121 } 1122 }
1122 } 1123 }
1123 return FALSE; 1124 return FALSE;
1124} 1125}
1125 1126
1126static void writeVObject_(OFile *fp, VObject *o); 1127static void writeVObject_(OFile *fp, VObject *o);
1127 1128
1128static void writeValue(OFile *fp, VObject *o, unsigned long size, bool nosemi) 1129static void writeValue(OFile *fp, VObject *o, unsigned long size, bool nosemi)
1129{ 1130{
1130 if (o == 0) return; 1131 if (o == 0) return;
1131 switch (VALUE_TYPE(o)) { 1132 switch (VALUE_TYPE(o)) {
1132 case VCVT_STRINGZ: { 1133 case VCVT_STRINGZ: {
1133 writeEncString(fp, STRINGZ_VALUE_OF(o), nosemi); 1134 writeEncString(fp, STRINGZ_VALUE_OF(o), nosemi);
1134 break; 1135 break;
1135 } 1136 }
1136 case VCVT_UINT: { 1137 case VCVT_UINT: {
1137 char buf[16]; 1138 char buf[16];
1138 sprintf(buf,"%u", INTEGER_VALUE_OF(o)); 1139 sprintf(buf,"%u", INTEGER_VALUE_OF(o));
1139 appendsOFile(fp,buf); 1140 appendsOFile(fp,buf);
1140 break; 1141 break;
1141 } 1142 }
1142 case VCVT_ULONG: { 1143 case VCVT_ULONG: {
1143 char buf[16]; 1144 char buf[16];
1144 sprintf(buf,"%lu", LONG_VALUE_OF(o)); 1145 sprintf(buf,"%lu", LONG_VALUE_OF(o));
1145 appendsOFile(fp,buf); 1146 appendsOFile(fp,buf);
1146 break; 1147 break;
1147 } 1148 }
1148 case VCVT_RAW: { 1149 case VCVT_RAW: {
1149 appendcOFile(fp,'\n'); 1150 appendcOFile(fp,'\n');
1150 writeBase64(fp,(unsigned char*)(ANY_VALUE_OF(o)),size); 1151 writeBase64(fp,(unsigned char*)(ANY_VALUE_OF(o)),size);
1151 break; 1152 break;
1152 } 1153 }
1153 case VCVT_VOBJECT: 1154 case VCVT_VOBJECT:
1154 appendcOFile(fp,'\n'); 1155 appendcOFile(fp,'\n');
1155 writeVObject_(fp,VOBJECT_VALUE_OF(o)); 1156 writeVObject_(fp,VOBJECT_VALUE_OF(o));
1156 break; 1157 break;
1157 } 1158 }
1158} 1159}
1159 1160
1160static void writeAttrValue(OFile *fp, VObject *o) 1161static void writeAttrValue(OFile *fp, VObject *o)
1161{ 1162{
1162 if (NAME_OF(o)) { 1163 if (NAME_OF(o)) {
1163 struct PreDefProp *pi; 1164 struct PreDefProp *pi;
1164 pi = lookupPropInfo(NAME_OF(o)); 1165 pi = lookupPropInfo(NAME_OF(o));
1165 if (pi && ((pi->flags & PD_INTERNAL) != 0)) return; 1166 if (pi && ((pi->flags & PD_INTERNAL) != 0)) return;
1166 if ( includesUnprintable(o) ) 1167 if ( includesUnprintable(o) )
1167 appendsOFileEncCs(fp); 1168 appendsOFileEncCs(fp);
1168 appendcOFile(fp,';'); 1169 appendcOFile(fp,';');
1169 appendsOFile(fp,NAME_OF(o)); 1170 appendsOFile(fp,NAME_OF(o));
1170 } else { 1171 } else {
1171 appendcOFile(fp,';'); 1172 appendcOFile(fp,';');
1172 } 1173 }
1173 if (VALUE_TYPE(o)) { 1174 if (VALUE_TYPE(o)) {
1174 appendcOFile(fp,'='); 1175 appendcOFile(fp,'=');
1175 writeValue(fp,o,0,TRUE); 1176 writeValue(fp,o,0,TRUE);
1176 } 1177 }
1177} 1178}
1178 1179
1179static void writeGroup(OFile *fp, VObject *o) 1180static void writeGroup(OFile *fp, VObject *o)
1180{ 1181{
1181 char buf1[256]; 1182 char buf1[256];
1182 char buf2[256]; 1183 char buf2[256];
1183 strcpy(buf1,NAME_OF(o)); 1184 strcpy(buf1,NAME_OF(o));
1184 while ((o=isAPropertyOf(o,VCGroupingProp)) != 0) { 1185 while ((o=isAPropertyOf(o,VCGroupingProp)) != 0) {
1185 strcpy(buf2,STRINGZ_VALUE_OF(o)); 1186 strcpy(buf2,STRINGZ_VALUE_OF(o));
1186 strcat(buf2,"."); 1187 strcat(buf2,".");
1187 strcat(buf2,buf1); 1188 strcat(buf2,buf1);
1188 strcpy(buf1,buf2); 1189 strcpy(buf1,buf2);
1189 } 1190 }
1190 appendsOFile(fp,buf1); 1191 appendsOFile(fp,buf1);
1191} 1192}
1192 1193
1193static int inList(const char **list, const char *s) 1194static int inList(const char **list, const char *s)
1194{ 1195{
1195 if (list == 0) return 0; 1196 if (list == 0) return 0;
1196 while (*list) { 1197 while (*list) {
1197 if (qstricmp(*list,s) == 0) return 1; 1198 if (qstricmp(*list,s) == 0) return 1;
1198 list++; 1199 list++;
1199 } 1200 }
1200 return 0; 1201 return 0;
1201} 1202}
1202 1203
1203static void writeProp(OFile *fp, VObject *o) 1204static void writeProp(OFile *fp, VObject *o)
1204{ 1205{
1205 if (NAME_OF(o)) { 1206 if (NAME_OF(o)) {
1206 struct PreDefProp *pi; 1207 struct PreDefProp *pi;
1207 VObjectIterator t; 1208 VObjectIterator t;
1208 const char **fields_ = 0; 1209 const char **fields_ = 0;
1209 pi = lookupPropInfo(NAME_OF(o)); 1210 pi = lookupPropInfo(NAME_OF(o));
1210 if (pi && ((pi->flags & PD_BEGIN) != 0)) { 1211 if (pi && ((pi->flags & PD_BEGIN) != 0)) {
1211 writeVObject_(fp,o); 1212 writeVObject_(fp,o);
1212 return; 1213 return;
1213 } 1214 }
1214 if (isAPropertyOf(o,VCGroupingProp)) 1215 if (isAPropertyOf(o,VCGroupingProp))
1215 writeGroup(fp,o); 1216 writeGroup(fp,o);
1216 else 1217 else
1217 appendsOFile(fp,NAME_OF(o)); 1218 appendsOFile(fp,NAME_OF(o));
1218 if (pi) fields_ = pi->fields; 1219 if (pi) fields_ = pi->fields;
1219 initPropIterator(&t,o); 1220 initPropIterator(&t,o);
1220 while (moreIteration(&t)) { 1221 while (moreIteration(&t)) {
1221 const char *s; 1222 const char *s;
1222 VObject *eachProp = nextVObject(&t); 1223 VObject *eachProp = nextVObject(&t);
1223 s = NAME_OF(eachProp); 1224 s = NAME_OF(eachProp);
1224 if (qstricmp(VCGroupingProp,s) && !inList(fields_,s)) 1225 if (qstricmp(VCGroupingProp,s) && !inList(fields_,s))
1225 writeAttrValue(fp,eachProp); 1226 writeAttrValue(fp,eachProp);
1226 } 1227 }
1227 if (fields_) { 1228 if (fields_) {
1228 int i = 0, n = 0; 1229 int i = 0, n = 0;
1229 const char** fields = fields_; 1230 const char** fields = fields_;
1230 /* output prop as fields */ 1231 /* output prop as fields */
1231 bool printable = TRUE; 1232 bool printable = TRUE;
1232 while (*fields && printable) { 1233 while (*fields && printable) {
1233 VObject *t = isAPropertyOf(o,*fields); 1234 VObject *t = isAPropertyOf(o,*fields);
1234 if (includesUnprintable(t)) 1235 if (includesUnprintable(t))
1235 printable = FALSE; 1236 printable = FALSE;
1236 fields++; 1237 fields++;
1237 } 1238 }
1238 fields = fields_; 1239 fields = fields_;
1239 if (!printable) 1240 if (!printable)
1240 appendsOFileEncCs(fp); 1241 appendsOFileEncCs(fp);
1241 appendcOFile(fp,':'); 1242 appendcOFile(fp,':');
1242 while (*fields) { 1243 while (*fields) {
1243 VObject *t = isAPropertyOf(o,*fields); 1244 VObject *t = isAPropertyOf(o,*fields);
1244 i++; 1245 i++;
1245 if (t) n = i; 1246 if (t) n = i;
1246 fields++; 1247 fields++;
1247 } 1248 }
1248 fields = fields_; 1249 fields = fields_;
1249 for (i=0;i<n;i++) { 1250 for (i=0;i<n;i++) {
1250 writeValue(fp,isAPropertyOf(o,*fields),0,TRUE); 1251 writeValue(fp,isAPropertyOf(o,*fields),0,TRUE);
1251 fields++; 1252 fields++;
1252 if (i<(n-1)) appendcOFile(fp,';'); 1253 if (i<(n-1)) appendcOFile(fp,';');
1253 } 1254 }
1254 } 1255 }
1255 } 1256 }
1256 1257
1257 1258
1258 if (VALUE_TYPE(o)) { 1259 if (VALUE_TYPE(o)) {
1259 if ( includesUnprintable(o) ) 1260 if ( includesUnprintable(o) )
1260 appendsOFileEncCs(fp); 1261 appendsOFileEncCs(fp);
1261 unsigned long size = 0; 1262 unsigned long size = 0;
1262 VObject *p = isAPropertyOf(o,VCDataSizeProp); 1263 VObject *p = isAPropertyOf(o,VCDataSizeProp);
1263 if (p) size = LONG_VALUE_OF(p); 1264 if (p) size = LONG_VALUE_OF(p);
1264 appendcOFile(fp,':'); 1265 appendcOFile(fp,':');
1265 writeValue(fp,o,size,FALSE); 1266 writeValue(fp,o,size,FALSE);
1266 } 1267 }
1267 1268
1268 appendcOFile(fp,'\n'); 1269 appendcOFile(fp,'\n');
1269} 1270}
1270 1271
1271static void writeVObject_(OFile *fp, VObject *o) 1272static void writeVObject_(OFile *fp, VObject *o)
1272{ 1273{
1273 if (NAME_OF(o)) { 1274 if (NAME_OF(o)) {
1274 struct PreDefProp *pi; 1275 struct PreDefProp *pi;
1275 pi = lookupPropInfo(NAME_OF(o)); 1276 pi = lookupPropInfo(NAME_OF(o));
1276 1277
1277 if (pi && ((pi->flags & PD_BEGIN) != 0)) { 1278 if (pi && ((pi->flags & PD_BEGIN) != 0)) {
1278 VObjectIterator t; 1279 VObjectIterator t;
1279 const char *begin = NAME_OF(o); 1280 const char *begin = NAME_OF(o);
1280 appendsOFile(fp,"BEGIN:"); 1281 appendsOFile(fp,"BEGIN:");
1281 appendsOFile(fp,begin); 1282 appendsOFile(fp,begin);
1282 appendcOFile(fp,'\n'); 1283 appendcOFile(fp,'\n');
1283 initPropIterator(&t,o); 1284 initPropIterator(&t,o);
1284 while (moreIteration(&t)) { 1285 while (moreIteration(&t)) {
1285 VObject *eachProp = nextVObject(&t); 1286 VObject *eachProp = nextVObject(&t);
1286 writeProp(fp, eachProp); 1287 writeProp(fp, eachProp);
1287 } 1288 }
1288 appendsOFile(fp,"END:"); 1289 appendsOFile(fp,"END:");
1289 appendsOFile(fp,begin); 1290 appendsOFile(fp,begin);
1290 appendsOFile(fp,"\n\n"); 1291 appendsOFile(fp,"\n\n");
1291 } 1292 }
1292 } 1293 }
1293} 1294}
1294 1295
1295static void initVObjectEncoding() 1296static void initVObjectEncoding()
1296{ 1297{
1297 Config pimConfig( "Beam" ); 1298 Config pimConfig( "Beam" );
1298 pimConfig.setGroup("Send"); 1299 pimConfig.setGroup("Send");
1299 Config devcfg(pimConfig.readEntry("DeviceConfig"),Config::File); 1300 Config devcfg(pimConfig.readEntry("DeviceConfig"),Config::File);
1300 QString enc = "QP"; 1301 QString enc = "QP";
1301 QString cs = "UTF-8"; 1302 QString cs = "UTF-8";
1302 if ( devcfg.isValid() ) { 1303 if ( devcfg.isValid() ) {
1303 devcfg.setGroup("Send"); 1304 devcfg.setGroup("Send");
1304 enc = devcfg.readEntry("Encoding","QP"); 1305 enc = devcfg.readEntry("Encoding","QP");
1305 cs = devcfg.readEntry("CharSet","UTF-8"); 1306 cs = devcfg.readEntry("CharSet","UTF-8");
1306 } 1307 }
1307 strncpy(vobj_cs,cs.latin1(),10); 1308 strncpy(vobj_cs,cs.latin1(),10);
1308 if ( enc == "QP" ) { 1309 if ( enc == "QP" ) {
1309 vobj_enc = QuotedPrintable; 1310 vobj_enc = QuotedPrintable;
1310 vobj_enc_s = VCQuotedPrintableProp; 1311 vobj_enc_s = VCQuotedPrintableProp;
1311 } else if ( enc == "B64" ) { 1312 } else if ( enc == "B64" ) {
1312 vobj_enc = Base64; 1313 vobj_enc = Base64;
1313 vobj_enc_s = VCBase64Prop; 1314 vobj_enc_s = VCBase64Prop;
1314 } else { 1315 } else {
1315 vobj_enc = EightBit; 1316 vobj_enc = EightBit;
1316 vobj_enc_s = 0; 1317 vobj_enc_s = 0;
1317 } 1318 }
1318} 1319}
1319 1320
1320void writeVObject(FILE *fp, VObject *o) 1321void writeVObject(FILE *fp, VObject *o)
1321{ 1322{
1322 initVObjectEncoding(); 1323 initVObjectEncoding();
1323 1324
1324 OFile ofp; 1325 OFile ofp;
1325 // ##### 1326 // #####
1326 //_setmode(_fileno(fp), _O_BINARY); 1327 //_setmode(_fileno(fp), _O_BINARY);
1327 initOFile(&ofp,fp); 1328 initOFile(&ofp,fp);
1328 writeVObject_(&ofp,o); 1329 writeVObject_(&ofp,o);
1329} 1330}
1330 1331
1331DLLEXPORT(void) writeVObjectToFile(char *fname, VObject *o) 1332DLLEXPORT(void) writeVObjectToFile(char *fname, VObject *o)
1332{ 1333{
1333 QFileDirect f( fname); 1334 QFileDirect f( fname);
1334 if ( !f.open( IO_WriteOnly ) ) { 1335 if ( !f.open( IO_WriteOnly ) ) {
1335 qWarning("Unable to open vobject write %s", fname); 1336 qWarning("Unable to open vobject write %s", fname);
1336 return; 1337 return;
1337 } 1338 }
1338 1339
1339 writeVObject( f.directHandle(),o ); 1340 writeVObject( f.directHandle(),o );
1340} 1341}
1341 1342
1342DLLEXPORT(void) writeVObjectsToFile(char *fname, VObject *list) 1343DLLEXPORT(void) writeVObjectsToFile(char *fname, VObject *list)
1343{ 1344{
1344 QFileDirect f( fname); 1345 QFileDirect f( fname);
1345 if ( !f.open( IO_WriteOnly ) ) { 1346 if ( !f.open( IO_WriteOnly ) ) {
1346 qWarning("Unable to open vobject write %s", fname); 1347 qWarning("Unable to open vobject write %s", fname);
1347 return; 1348 return;
1348 } 1349 }
1349 1350
1350 while (list) { 1351 while (list) {
1351 writeVObject(f.directHandle(),list); 1352 writeVObject(f.directHandle(),list);
1352 list = nextVObjectInList(list); 1353 list = nextVObjectInList(list);
1353 } 1354 }
1354} 1355}
1355 1356
1356DLLEXPORT(const char *) vObjectTypeInfo(VObject *o) 1357DLLEXPORT(const char *) vObjectTypeInfo(VObject *o)
1357{ 1358{
1358 const char *type = vObjectName( o ); 1359 const char *type = vObjectName( o );
1359 if ( strcmp( type, "TYPE" ) == 0 ) 1360 if ( strcmp( type, "TYPE" ) == 0 )
1360 type = vObjectStringZValue( o ); 1361 type = vObjectStringZValue( o );
1361 return type; 1362 return type;
1362} 1363}
1363 1364
1364 1365
1365// end of source file vobject.c 1366// end of source file vobject.c
diff --git a/library/calendar.cpp b/library/calendar.cpp
index b9ef585..c7536c3 100644
--- a/library/calendar.cpp
+++ b/library/calendar.cpp
@@ -1,66 +1,112 @@
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 "calendar.h" 20#include "calendar.h"
21 21
22#include <qdatetime.h> 22#include <qdatetime.h>
23#include <qobject.h>
24
25/*! \class Calendar calendar.html
26
27 \brief The Calendar class provides programmers with an easy to calculate
28 and get information about dates, months and years.
29
30 \ingroup qtopiaemb
31*/
32
33
34
35static void never_called_tr_function_um_libqpe_ts_etwas_unter_zu_jubeln() {
36 (void)QObject::tr("Jan");
37 (void)QObject::tr("Feb");
38 (void)QObject::tr("Mar");
39 (void)QObject::tr("Apr");
40 (void)QObject::tr("May");
41 (void)QObject::tr("Jun");
42 (void)QObject::tr("Jul");
43 (void)QObject::tr("Aug");
44 (void)QObject::tr("Sep");
45 (void)QObject::tr("Oct");
46 (void)QObject::tr("Nov");
47 (void)QObject::tr("Dec");
48 (void)QObject::tr("Mon");
49 (void)QObject::tr("Tue");
50 (void)QObject::tr("Wed");
51 (void)QObject::tr("Thu");
52 (void)QObject::tr("Fri");
53 (void)QObject::tr("Sat");
54 (void)QObject::tr("Sun");
55}
56
57
58
59/*!
60 Returns the name of the month for \a m.
61 Equivalent to QDate::monthName().
62*/
23 63
24QString Calendar::nameOfMonth( int m ) 64QString Calendar::nameOfMonth( int m )
25{ 65{
26 QDate d; 66 QDate d;
27 return d.monthName( m ); 67 qDebug( d.monthName( m ) );
68 return QObject::tr( d.monthName( m ) );
28} 69}
29 70
71/*!
72 Returns the name of the day for \a d.
73 Equivalent to QDate::dayName().
74*/
30QString Calendar::nameOfDay( int d ) 75QString Calendar::nameOfDay( int d )
31{ 76{
32 QDate dt; 77 QDate dt;
33 return dt.dayName( d ); 78 return QObject::tr( dt.dayName( d ) );
34} 79}
35 80
81/*! \obsolete */
36QValueList<Calendar::Day> Calendar::daysOfMonth( int year, int month, 82QValueList<Calendar::Day> Calendar::daysOfMonth( int year, int month,
37 bool startWithMonday ) 83 bool startWithMonday )
38{ 84{
39 QDate temp; 85 QDate temp;
40 temp.setYMD( year, month, 1 ); 86 temp.setYMD( year, month, 1 );
41 int firstDay = temp.dayOfWeek(); 87 int firstDay = temp.dayOfWeek();
42 int i; 88 int i;
43 QDate prev; 89 QDate prev;
44 QValueList<Day> days; 90 QValueList<Day> days;
45 91
46 if ( startWithMonday ) 92 if ( startWithMonday )
47 i = 1; 93 i = 1;
48 else 94 else
49 i = 0; 95 i = 0;
50 96
51 if ( month > 1 ) 97 if ( month > 1 )
52 prev.setYMD( year, month - 1, 1 ); 98 prev.setYMD( year, month - 1, 1 );
53 else 99 else
54 prev.setYMD( year - 1, 12, 1 ); 100 prev.setYMD( year - 1, 12, 1 );
55 for ( ; i < firstDay; i++ ) { 101 for ( ; i < firstDay; i++ ) {
56 days.append( Day( prev.daysInMonth() - ( firstDay - i - 1 ), 102 days.append( Day( prev.daysInMonth() - ( firstDay - i - 1 ),
57 Day::PrevMonth, FALSE ) ); 103 Day::PrevMonth, FALSE ) );
58 } 104 }
59 for ( i = 1; i <= temp.daysInMonth(); i++ ) 105 for ( i = 1; i <= temp.daysInMonth(); i++ )
60 days.append( Day( i, Day::ThisMonth, FALSE ) ); 106 days.append( Day( i, Day::ThisMonth, FALSE ) );
61 i = 0; 107 i = 0;
62 while ( days.count() < 6 * 7 ) 108 while ( days.count() < 6 * 7 )
63 days.append( Day( ++i, Day::NextMonth, FALSE ) ); 109 days.append( Day( ++i, Day::NextMonth, FALSE ) );
64 110
65 return days; 111 return days;
66} 112}
diff --git a/library/categoryedit_p.cpp b/library/categoryedit_p.cpp
index 07e707e..9321259 100644
--- a/library/categoryedit_p.cpp
+++ b/library/categoryedit_p.cpp
@@ -1,229 +1,230 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2001 Trolltech AS. All rights reserved. 2** Copyright (C) 2001 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 "categoryedit_p.h" 21#include "categoryedit_p.h"
22 22
23#include <qpe/categories.h> 23#include <qpe/categories.h>
24 24
25#include <qdir.h> 25#include <qdir.h>
26#include <qcheckbox.h> 26#include <qcheckbox.h>
27#include <qlineedit.h> 27#include <qlineedit.h>
28#include <qlistview.h> 28#include <qlistview.h>
29#include <qstringlist.h> 29#include <qstringlist.h>
30#include <qtoolbutton.h> 30#include <qtoolbutton.h>
31 31
32#include <sys/types.h> 32#include <sys/types.h>
33#include <sys/stat.h> 33#include <sys/stat.h>
34 34
35#include <stdlib.h> 35#include <stdlib.h>
36 36
37 37
38using namespace Qtopia; 38using namespace Qtopia;
39 39
40class CategoryEditPrivate 40class CategoryEditPrivate
41{ 41{
42public: 42public:
43 CategoryEditPrivate( QWidget *parent, const QString &appName ) 43 CategoryEditPrivate( QWidget *parent, const QString &appName )
44 : mCategories( parent, "" ), 44 : mCategories( parent, "" ),
45 mStrApp( appName ) 45 mStrApp( appName )
46 { 46 {
47 editItem = 0; 47 editItem = 0;
48 mCategories.load( categoryFileName() ); 48 mCategories.load( categoryFileName() );
49 } 49 }
50 Categories mCategories; 50 Categories mCategories;
51 QListViewItem *editItem; 51 QListViewItem *editItem;
52 QString mStrApp; 52 QString mStrApp;
53 QString mVisible; 53 QString mVisible;
54}; 54};
55 55
56CategoryEdit::CategoryEdit( QWidget *parent, const char *name ) 56CategoryEdit::CategoryEdit( QWidget *parent, const char *name )
57 : CategoryEditBase( parent, name ) 57 : CategoryEditBase( parent, name )
58{ 58{
59 d = 0; 59 d = 0;
60} 60}
61 61
62CategoryEdit::CategoryEdit( const QArray<int> &recCats, 62CategoryEdit::CategoryEdit( const QArray<int> &recCats,
63 const QString &appName, const QString &visibleName, 63 const QString &appName, const QString &visibleName,
64 QWidget *parent, const char *name ) 64 QWidget *parent, const char *name )
65 : CategoryEditBase( parent, name ) 65 : CategoryEditBase( parent, name )
66{ 66{
67 d = 0; 67 d = 0;
68 setCategories( recCats, appName, visibleName ); 68 setCategories( recCats, appName, visibleName );
69} 69}
70 70
71void CategoryEdit::setCategories( const QArray<int> &recCats, 71void CategoryEdit::setCategories( const QArray<int> &recCats,
72 const QString &appName, const QString &visibleName ) 72 const QString &appName, const QString &visibleName )
73{ 73{
74 if ( !d ) 74 if ( !d )
75 d = new CategoryEditPrivate( (QWidget*)parent(), name() ); 75 d = new CategoryEditPrivate( (QWidget*)parent(), name() );
76 d->mStrApp = appName; 76 d->mStrApp = appName;
77 d->mVisible = visibleName; 77 d->mVisible = visibleName;
78 78
79 QStringList appCats = d->mCategories.labels( d->mStrApp ); 79 QStringList appCats = d->mCategories.labels( d->mStrApp );
80 QArray<int> cats = d->mCategories.ids(d->mStrApp, appCats); 80 QArray<int> cats = d->mCategories.ids(d->mStrApp, appCats);
81 lvView->clear(); 81 lvView->clear();
82 82
83 QStringList::ConstIterator it; 83 QStringList::ConstIterator it;
84 int i, j; 84 int i, j;
85 for ( i = 0, it = appCats.begin(); it != appCats.end(); i++, ++it ) { 85 for ( i = 0, it = appCats.begin(); it != appCats.end(); i++, ++it ) {
86 QCheckListItem *chk; 86 QCheckListItem *chk;
87 chk = new QCheckListItem( lvView, (*it), QCheckListItem::CheckBox ); 87 chk = new QCheckListItem( lvView, (*it), QCheckListItem::CheckBox );
88 if ( !d->mCategories.isGlobal((*it)) ) 88 if ( !d->mCategories.isGlobal((*it)) )
89 chk->setText( 1, tr(d->mVisible) ); 89 chk->setText( 1, tr(d->mVisible) );
90 else 90 else
91 chk->setText( 1, tr("All") ); 91 chk->setText( 1, tr("All") );
92 // Is this record using this category, then we should check it 92 // Is this record using this category, then we should check it
93 for ( j = 0; j < int(recCats.count()); j++ ) { 93 for ( j = 0; j < int(recCats.count()); j++ ) {
94 if ( cats[i] == recCats[j] ) { 94 if ( cats[i] == recCats[j] ) {
95 chk->setOn( true ); 95 chk->setOn( true );
96 break; 96 break;
97 } 97 }
98 } 98 }
99 } 99 }
100 lvView->setSorting( 0, TRUE ); 100 lvView->setSorting( 0, TRUE );
101 lvView->sort(); 101 lvView->sort();
102 if ( lvView->childCount() < 1 ) 102 if ( lvView->childCount() < 1 )
103 txtCat->setEnabled( FALSE ); 103 txtCat->setEnabled( FALSE );
104 else { 104 else {
105 lvView->setSelected( lvView->firstChild(), true ); 105 lvView->setSelected( lvView->firstChild(), true );
106 } 106 }
107} 107}
108 108
109CategoryEdit::~CategoryEdit() 109CategoryEdit::~CategoryEdit()
110{ 110{
111 if ( d ) 111 if ( d )
112 delete d; 112 delete d;
113} 113}
114 114
115void CategoryEdit::slotSetText( QListViewItem *selected ) 115void CategoryEdit::slotSetText( QListViewItem *selected )
116{ 116{
117 d->editItem = selected; 117 d->editItem = selected;
118 if ( !d->editItem ) 118 if ( !d->editItem )
119 return; 119 return;
120 txtCat->setText( d->editItem->text(0) ); 120 txtCat->setText( d->editItem->text(0) );
121 txtCat->setEnabled( true ); 121 txtCat->setEnabled( true );
122 if ( d->editItem->text(1) == tr("All") ) 122 if ( d->editItem->text(1) == tr("All") )
123 chkGlobal->setChecked( true ); 123 chkGlobal->setChecked( true );
124 else 124 else
125 chkGlobal->setChecked( false ); 125 chkGlobal->setChecked( false );
126} 126}
127 127
128void CategoryEdit::slotAdd() 128void CategoryEdit::slotAdd()
129{ 129{
130 QString name = tr( "New Category" ); 130 QString name = tr( "New Category" );
131 bool insertOk = FALSE; 131 bool insertOk = FALSE;
132 int num = 0; 132 int num = 0;
133 while ( !insertOk ) { 133 while ( !insertOk ) {
134 if ( num++ > 0 ) 134 if ( num++ > 0 )
135 name = tr("New Category ") + QString::number(num); 135 name = tr("New Category ") + QString::number(num);
136 insertOk = d->mCategories.addCategory( d->mStrApp, name ); 136 insertOk = d->mCategories.addCategory( d->mStrApp, name );
137 } 137 }
138 QCheckListItem *chk; 138 QCheckListItem *chk;
139 chk = new QCheckListItem( lvView, name, QCheckListItem::CheckBox ); 139 chk = new QCheckListItem( lvView, name, QCheckListItem::CheckBox );
140 if ( !chkGlobal->isChecked() ) 140 if ( !chkGlobal->isChecked() )
141 chk->setText( 1, tr(d->mVisible) ); 141 chk->setText( 1, tr(d->mVisible) );
142 else 142 else
143 chk->setText( 1, tr("All") ); 143 chk->setText( 1, tr("All") );
144 144
145 lvView->setSelected( chk, TRUE ); 145 lvView->setSelected( chk, TRUE );
146 txtCat->selectAll(); 146 txtCat->selectAll();
147 txtCat->setFocus();
147} 148}
148 149
149void CategoryEdit::slotRemove() 150void CategoryEdit::slotRemove()
150{ 151{
151 d->editItem = lvView->selectedItem(); 152 d->editItem = lvView->selectedItem();
152 if ( d->editItem ) { 153 if ( d->editItem ) {
153 QListViewItem *sibling = d->editItem->nextSibling(); 154 QListViewItem *sibling = d->editItem->nextSibling();
154 155
155 d->mCategories.removeCategory( d->mStrApp, d->editItem->text(0) ); 156 d->mCategories.removeCategory( d->mStrApp, d->editItem->text(0) );
156 157
157 delete d->editItem; 158 delete d->editItem;
158 d->editItem = 0; 159 d->editItem = 0;
159 160
160 if ( sibling ) 161 if ( sibling )
161 lvView->setSelected( sibling, TRUE ); 162 lvView->setSelected( sibling, TRUE );
162 } 163 }
163 if ( lvView->childCount() < 1 ) { 164 if ( lvView->childCount() < 1 ) {
164 txtCat->clear(); 165 txtCat->clear();
165 txtCat->setEnabled( FALSE ); 166 txtCat->setEnabled( FALSE );
166 } 167 }
167} 168}
168 169
169void CategoryEdit::slotSetGlobal( bool isChecked ) 170void CategoryEdit::slotSetGlobal( bool isChecked )
170{ 171{
171 if ( d->editItem ) { 172 if ( d->editItem ) {
172 if ( isChecked ) 173 if ( isChecked )
173 d->editItem->setText( 1, tr("All") ); 174 d->editItem->setText( 1, tr("All") );
174 else 175 else
175 d->editItem->setText( 1, tr(d->mVisible) ); 176 d->editItem->setText( 1, tr(d->mVisible) );
176 177
177 d->mCategories.setGlobal( d->mStrApp, d->editItem->text( 0 ), isChecked ); 178 d->mCategories.setGlobal( d->mStrApp, d->editItem->text( 0 ), isChecked );
178 } 179 }
179} 180}
180 181
181void CategoryEdit::slotTextChanged( const QString &strNew ) 182void CategoryEdit::slotTextChanged( const QString &strNew )
182{ 183{
183 if ( d->editItem ) { 184 if ( d->editItem ) {
184 if ( chkGlobal->isChecked() ) 185 if ( chkGlobal->isChecked() )
185 d->mCategories.renameGlobalCategory( d->editItem->text(0), strNew ); 186 d->mCategories.renameGlobalCategory( d->editItem->text(0), strNew );
186 else 187 else
187 d->mCategories.renameCategory( d->mStrApp, d->editItem->text(0), strNew ); 188 d->mCategories.renameCategory( d->mStrApp, d->editItem->text(0), strNew );
188 d->editItem->setText( 0, strNew ); 189 d->editItem->setText( 0, strNew );
189 } 190 }
190} 191}
191 192
192QArray<int> CategoryEdit::newCategories() 193QArray<int> CategoryEdit::newCategories()
193{ 194{
194 QArray<int> a; 195 QArray<int> a;
195 if ( d ) { 196 if ( d ) {
196 d->mCategories.save( categoryFileName() ); 197 d->mCategories.save( categoryFileName() );
197 QListViewItemIterator it( lvView ); 198 QListViewItemIterator it( lvView );
198 QValueList<int> l; 199 QValueList<int> l;
199 for ( ; it.current(); ++it ) { 200 for ( ; it.current(); ++it ) {
200 if ( reinterpret_cast<QCheckListItem*>(it.current())->isOn() ) 201 if ( reinterpret_cast<QCheckListItem*>(it.current())->isOn() )
201 l.append( d->mCategories.id( d->mStrApp, it.current()->text(0) ) ); 202 l.append( d->mCategories.id( d->mStrApp, it.current()->text(0) ) );
202 } 203 }
203 uint i = 0; 204 uint i = 0;
204 a.resize( l.count() ); 205 a.resize( l.count() );
205 for ( QValueList<int>::Iterator lit = l.begin(); lit != l.end(); ++lit ) 206 for ( QValueList<int>::Iterator lit = l.begin(); lit != l.end(); ++lit )
206 a[i++] = *lit; 207 a[i++] = *lit;
207 } 208 }
208 return a; 209 return a;
209} 210}
210 211
211void CategoryEdit::accept() 212void CategoryEdit::accept()
212{ 213{
213 // write our categories out... 214 // write our categories out...
214 d->mCategories.save( categoryFileName() ); 215 d->mCategories.save( categoryFileName() );
215 // QDialog::accept(); 216 // QDialog::accept();
216} 217}
217 218
218QString categoryFileName() 219QString categoryFileName()
219{ 220{
220 QDir dir = (QString(getenv("HOME")) + "/Settings"); 221 QDir dir = (QString(getenv("HOME")) + "/Settings");
221 if ( !dir.exists() ) 222 if ( !dir.exists() )
222 mkdir( dir.path().local8Bit(), 0700 ); 223 mkdir( dir.path().local8Bit(), 0700 );
223 return dir.path() + "/" + "Categories" + ".xml"; 224 return dir.path() + "/" + "Categories" + ".xml";
224} 225}
225 226
226void CategoryEdit::kludge() 227void CategoryEdit::kludge()
227{ 228{
228 lvView->setMaximumHeight( 130 ); 229 lvView->setMaximumHeight( 130 );
229} 230}
diff --git a/library/categorymenu.cpp b/library/categorymenu.cpp
index e733107..5d7adf7 100644
--- a/library/categorymenu.cpp
+++ b/library/categorymenu.cpp
@@ -1,110 +1,162 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2001 Trolltech AS. All rights reserved. 2** Copyright (C) 2001 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 "categorymenu.h" 21#include "categorymenu.h"
22#include "backend/categories.h" 22#include "backend/categories.h"
23#include "categoryselect.h" 23#include "categoryselect.h"
24#include <qstring.h> 24#include <qstring.h>
25#include <qmap.h> 25#include <qmap.h>
26 26
27/*!
28 \class CategoryMenu
29 \brief The CategoryMenu widget aids in filtering records or files by Category.
30
31 The CategoryMenu widget provides a popup menu that will make filtering records
32 or files by category much easier. The widget will lookup the available
33 categories for an application, populate the menu, and keep a track of which
34 categories are being filtered against. A set of categories can be tested
35 by the isSelected() function to see if a record or file containing those
36 categories would be allowed through by the filter.
37
38 \warning Currently this class is not suitable for extending.
39
40 \ingroup qtopiaemb
41*/
42
43/*!
44 \fn void CategoryMenu::categoryChange()
45 This signal is emitted when the user selects a different category in the
46 menu, hence changing what records or files should be selected.
47*/
48
49/*!
50 Creates a new CategoryMenu with \a parent and \a name. The menu will be
51 populated with the available categories for \a application.
52
53 If \a globals is TRUE then it will also poplulate the menu with the
54 global categories.
55*/
27CategoryMenu::CategoryMenu( const QString &n, bool ig = TRUE, 56CategoryMenu::CategoryMenu( const QString &n, bool ig = TRUE,
28 QWidget *parent, const char *name ) : 57 QWidget *parent, const char *name ) :
29 QPopupMenu(parent, name), 58 QPopupMenu(parent, name),
30 appName(n), 59 appName(n),
31 includeGlobal(ig) 60 includeGlobal(ig)
32{ 61{
33 currentMid = 1; 62 currentMid = 1;
34 reload(); 63 reload();
35 connect(this, SIGNAL(activated(int)), this, SLOT(mapMenuId(int))); 64 connect(this, SIGNAL(activated(int)), this, SLOT(mapMenuId(int)));
36} 65}
37 66
38CategoryMenu::~CategoryMenu( ) 67/*!
68 Destroys a CategoryMenu.
69*/
70CategoryMenu::~CategoryMenu( )
39{ 71{
40} 72}
41 73
74/*!
75 Repopulates the widget's list of available categories.
76*/
42void CategoryMenu::reload() 77void CategoryMenu::reload()
43{ 78{
44 clear(); 79 clear();
45 Categories c; 80 Categories c;
46 81
47 c.load(categoryFileName()); 82 c.load(categoryFileName());
48 83
49 QStringList sl = c.labels(appName, includeGlobal); 84 QStringList sl = c.labels(appName, includeGlobal);
50 int mid = 1; 85 int mid = 1;
51 86
52 insertItem(tr("All"), mid); 87 insertItem(tr("All"), mid);
53 mid++; 88 mid++;
54 insertItem(tr("Unfiled"), mid); 89 insertItem(tr("Unfiled"), mid);
55 mid++; 90 mid++;
56 91
57 for (QStringList::Iterator it = sl.begin(); 92 for (QStringList::Iterator it = sl.begin();
58 it != sl.end(); ++it ) { 93 it != sl.end(); ++it ) {
59 int cid = c.id(appName, *it); 94 int cid = c.id(appName, *it);
60 insertItem(*it, mid); 95 insertItem(*it, mid);
61 menuToId.insert(mid, cid); 96 menuToId.insert(mid, cid);
62 idToMenu.insert(cid, mid); 97 idToMenu.insert(cid, mid);
63 mid++; 98 mid++;
64 } 99 }
65 100
66 setItemChecked(currentMid, TRUE ); 101 setItemChecked(currentMid, TRUE );
67} 102}
68 103
69void CategoryMenu::mapMenuId(int id) 104/*!
105 \internal
106*/
107void CategoryMenu::mapMenuId(int id)
70{ 108{
71 if (id == currentMid) 109 if (id == currentMid)
72 return; 110 return;
73 setItemChecked( currentMid, FALSE ); 111 setItemChecked( currentMid, FALSE );
74 setItemChecked( id, TRUE ); 112 setItemChecked( id, TRUE );
75 currentMid = id; 113 currentMid = id;
76 114
77 emit categoryChange(); 115 emit categoryChange();
78} 116}
79 117
118/*!
119 Returns TRUE if a record or file with the set of category ids \a cUids
120 is allowed by the current selection in the CategoryMenu.
121 Otherwise returns FALSE.
122*/
80bool CategoryMenu::isSelected(const QArray<int> &cUids) const 123bool CategoryMenu::isSelected(const QArray<int> &cUids) const
81{ 124{
82 if (currentMid == 1) 125 if (currentMid == 1)
83 return TRUE; 126 return TRUE;
84 127
85 if (currentMid == 2 && cUids.count() == 0) 128 if (currentMid == 2 && cUids.count() == 0)
86 return TRUE; 129 return TRUE;
87 130
88 if (cUids.contains(menuToId[currentMid])) 131 if (cUids.contains(menuToId[currentMid]))
89 return TRUE; 132 return TRUE;
90 133
91 return FALSE; 134 return FALSE;
92} 135}
93 136
137/*!
138 Sets the menu to have \a newCatUid as the currently selected Category.
139*/
94void CategoryMenu::setCurrentCategory( int newCatUid ) 140void CategoryMenu::setCurrentCategory( int newCatUid )
95{ 141{
96 if (!idToMenu.contains(newCatUid)) 142 if (!idToMenu.contains(newCatUid))
97 return; 143 return;
98 144
99 mapMenuId(idToMenu[newCatUid]); 145 mapMenuId(idToMenu[newCatUid]);
100} 146}
101 147
148/*!
149 Sets the menu to allow all category sets.
150*/
102void CategoryMenu::setCurrentCategoryAll( ) 151void CategoryMenu::setCurrentCategoryAll( )
103{ 152{
104 mapMenuId(1); 153 mapMenuId(1);
105} 154}
106 155
156/*!
157 Sets the menu to allow only empty category sets.
158*/
107void CategoryMenu::setCurrentCategoryUnfiled( ) 159void CategoryMenu::setCurrentCategoryUnfiled( )
108{ 160{
109 mapMenuId(2); 161 mapMenuId(2);
110} 162}
diff --git a/library/categoryselect.cpp b/library/categoryselect.cpp
index 21b3f91..8473aeb 100644
--- a/library/categoryselect.cpp
+++ b/library/categoryselect.cpp
@@ -1,452 +1,560 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2001 Trolltech AS. All rights reserved. 2** Copyright (C) 2001 Trolltech AS. All rights reserved.
3** Copyright (C) 2003 zecke introduce a needed symbol
3** 4**
4** This file is part of Qtopia Environment. 5** This file is part of Qtopia Environment.
5** 6**
6** This file may be distributed and/or modified under the terms of the 7** 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 8** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 9** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 10** packaging of this file.
10** 11**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 12** 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. 13** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 14**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 15** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 16**
16** Contact info@trolltech.com if any conditions of this licensing are 17** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 18** not clear to you.
18** 19**
19**********************************************************************/ 20**********************************************************************/
20 21
21#include <qpe/categories.h> 22#include <qpe/categories.h>
22#include <qpe/palmtoprecord.h> 23#include <qpe/palmtoprecord.h>
23 24
24#include <qmessagebox.h> 25#include <qmessagebox.h>
25#include <qlayout.h> 26#include <qlayout.h>
26#include <qtoolbutton.h> 27#include <qtoolbutton.h>
27#include <qfile.h> 28#include <qfile.h>
28 29
29#include "categorywidget.h" 30#include "categorywidget.h"
30#include "categoryselect.h" 31#include "categoryselect.h"
31 32
32#include <stdlib.h> 33#include <stdlib.h>
33 34
35
36/*! \enum CategorySelect::SelectorWidget
37 Chooses a type of widget to use as the selection widget.
38
39 \value ComboBox
40 \value ListView
41*/
42
43/*!
44 \class CategorySelect
45 \brief The CategorySelect widget allows users to select Categories with a
46 combobox interface.
47
48 CategorySelect is useful to provide a QComboBox of Categories for
49 filtering (such as in the Contacts table view) or to allow the user
50 to select multiple Categories. The allCategories variable sets
51 whether the CategorySelect is in filtering or selecting mode.
52
53 In filtering mode, the All and Unfiled categories are added. The
54
55 In selecting mode, the CategorySelect may either be a QComboBox and
56 a QToolButton or a QListView with checkable items depending on the
57 screen size.
58
59 CategorySelect automatically updates itself if Categories has been
60 changed elsewhere in the environment.
61
62 Signals and slots are provided to notify the application of the users
63 selections. A QToolButton is also provided so that users can edit the
64 Categories manually.
65
66 \ingroup qtopiaemb
67*/
68
69
34static QString categoryEdittingFileName() 70static QString categoryEdittingFileName()
35{ 71{
36 QString str = getenv("HOME"); 72 QString str = getenv("HOME");
37 str +="/.cateditting"; 73 str +="/.cateditting";
38 return str; 74 return str;
39} 75}
40 76
41class CategoryComboPrivate 77class CategoryComboPrivate
42{ 78{
43public: 79public:
44 CategoryComboPrivate(QObject *o) 80 CategoryComboPrivate(QObject *o)
45 : mCat( o ) 81 : mCat( o )
46 { 82 {
47 } 83 }
48 QArray<int> mAppCats; 84 QArray<int> mAppCats;
49 QString mStrAppName; 85 QString mStrAppName;
50 QString mStrVisibleName; 86 QString mStrVisibleName;
51 Categories mCat; 87 Categories mCat;
52}; 88};
53 89
54class CategorySelectPrivate 90class CategorySelectPrivate
55{ 91{
56public: 92public:
57 CategorySelectPrivate( const QArray<int> &cats) 93 CategorySelectPrivate( const QArray<int> &cats)
58 : mRec( cats ), 94 : mRec( cats ),
59 usingAll( false ) 95 usingAll( false )
60 { 96 {
61 } 97 }
62 CategorySelectPrivate() 98 CategorySelectPrivate()
63 { 99 {
64 } 100 }
65 QArray<int> mRec; 101 QArray<int> mRec;
66 bool usingAll; 102 bool usingAll;
67 QString mVisibleName; 103 QString mVisibleName;
68}; 104};
69 105
70CategoryCombo::CategoryCombo( QWidget *parent, const char *name , int width) 106CategoryCombo::CategoryCombo( QWidget *parent, const char *name , int width)
71 : QComboBox( parent, name ) 107 : QComboBox( parent, name )
72{ 108{
73 d = new CategoryComboPrivate(this); 109 d = new CategoryComboPrivate(this);
74 if (width) 110 if (width)
75 setFixedWidth(width); 111 setFixedWidth(width);
76} 112}
77 113
78void CategoryCombo::initCombo( const QArray<int> &recCats, 114void CategoryCombo::initCombo( const QArray<int> &recCats,
79 const QString &appName ) 115 const QString &appName )
80{ 116{
81 initCombo( recCats, appName, appName ); 117 initCombo( recCats, appName, appName );
82} 118}
83 119
84void CategoryCombo::initCombo( const QArray<int> &recCats, 120void CategoryCombo::initCombo( const QArray<int> &recCats,
85 const QString &appName, 121 const QString &appName,
86 const QString &visibleName ) 122 const QString &visibleName )
87{ 123{
88 d->mStrAppName = appName; 124 d->mStrAppName = appName;
89 d->mStrVisibleName = visibleName; 125 d->mStrVisibleName = visibleName;
90 clear(); 126 clear();
91 QStringList slApp; 127 QStringList slApp;
92 128
93 QObject::disconnect( this, SIGNAL(activated(int)), 129 QObject::disconnect( this, SIGNAL(activated(int)),
94 this, SLOT(slotValueChanged(int)) ); 130 this, SLOT(slotValueChanged(int)) );
95 131
96 QObject::connect( this, SIGNAL(activated(int)), 132 QObject::connect( this, SIGNAL(activated(int)),
97 this, SLOT(slotValueChanged(int)) ); 133 this, SLOT(slotValueChanged(int)) );
98 bool loadOk = d->mCat.load( categoryFileName() ); 134 bool loadOk = d->mCat.load( categoryFileName() );
99 slApp = d->mCat.labels( d->mStrAppName, TRUE, Categories::UnfiledLabel ); 135 slApp = d->mCat.labels( d->mStrAppName, TRUE, Categories::UnfiledLabel );
100 136
101 d->mAppCats = d->mCat.ids( d->mStrAppName, slApp); 137 d->mAppCats = d->mCat.ids( d->mStrAppName, slApp);
102 138
103 int i, 139 int i,
104 j, 140 j,
105 saveMe, 141 saveMe,
106 recCount; 142 recCount;
107 QStringList::Iterator it; 143 QStringList::Iterator it;
108 // now add in all the items... 144 // now add in all the items...
109 recCount = recCats.count(); 145 recCount = recCats.count();
110 saveMe = -1; 146 saveMe = -1;
111 if ( recCount > 1 && loadOk ) { 147 if ( recCount > 1 && loadOk ) {
112 it = slApp.begin(); 148 it = slApp.begin();
113 for ( j = 0; j< (int)(slApp.count()-1); ++it, j++ ) { 149 for ( j = 0; j< (int)(slApp.count()-1); ++it, j++ ) {
114 // grr... we have to go through and compare... 150 // grr... we have to go through and compare...
115 if ( j < int(d->mAppCats.size()) ) { 151 if ( j < int(d->mAppCats.size()) ) {
116 for ( i = 0; i < recCount; i++ ) { 152 for ( i = 0; i < recCount; i++ ) {
117 if ( recCats[i] == d->mAppCats[j] ) { 153 if ( recCats[i] == d->mAppCats[j] ) {
118 (*it).append( tr(" (Multi.)") ); 154 (*it).append( tr(" (Multi.)") );
119 if ( saveMe < 0 ) 155 if ( saveMe < 0 )
120 saveMe = j; 156 saveMe = j;
121 // no need to continue through the list. 157 // no need to continue through the list.
122 break; 158 break;
123 } 159 }
124 } 160 }
125 } 161 }
126 insertItem( *it ); 162 insertItem( *it );
127 } 163 }
128 insertItem( *it ); 164 insertItem( *it );
129 } else 165 } else
130 insertStringList( slApp ); 166 insertStringList( slApp );
131 167
132 if ( recCount > 0 && loadOk ) { 168 if ( recCount > 0 && loadOk ) {
133 for ( i = 0; i < int(d->mAppCats.size()); i++ ) { 169 for ( i = 0; i < int(d->mAppCats.size()); i++ ) {
134 if ( d->mAppCats[i] == recCats[0] ) { 170 if ( d->mAppCats[i] == recCats[0] ) {
135 setCurrentItem( i ); 171 setCurrentItem( i );
136 break; 172 break;
137 } 173 }
138 } 174 }
139 } else 175 } else
140 { 176 {
141 setCurrentItem( slApp.count()-1 ); // unfiled 177 setCurrentItem( slApp.count()-1 ); // unfiled
142 } 178 }
143} 179}
144 180
145// this is a new function by SHARP instead of initCombo() 181// this is a new function by SHARP instead of initCombo()
146QArray<int> CategoryCombo::initComboWithRefind( const QArray<int> &recCats, 182QArray<int> CategoryCombo::initComboWithRefind( const QArray<int> &recCats,
147 const QString &appName) 183 const QString &appName)
148{ 184{
149 QString visibleName = appName; 185 QString visibleName = appName;
150 d->mStrAppName = appName; 186 d->mStrAppName = appName;
151 d->mStrVisibleName = visibleName; 187 d->mStrVisibleName = visibleName;
152 clear(); 188 clear();
153 QStringList slApp; 189 QStringList slApp;
154 QArray<int> results; 190 QArray<int> results;
155 191
156 QObject::disconnect( this, SIGNAL(activated(int)), 192 QObject::disconnect( this, SIGNAL(activated(int)),
157 this, SLOT(slotValueChanged(int)) ); 193 this, SLOT(slotValueChanged(int)) );
158 194
159 QObject::connect( this, SIGNAL(activated(int)), 195 QObject::connect( this, SIGNAL(activated(int)),
160 this, SLOT(slotValueChanged(int)) ); 196 this, SLOT(slotValueChanged(int)) );
161 bool loadOk = d->mCat.load( categoryFileName() ); 197 bool loadOk = d->mCat.load( categoryFileName() );
162 slApp = d->mCat.labels( d->mStrAppName, TRUE, Categories::UnfiledLabel ); 198 slApp = d->mCat.labels( d->mStrAppName, TRUE, Categories::UnfiledLabel );
163 199
164 d->mAppCats = d->mCat.ids( d->mStrAppName, slApp); 200 d->mAppCats = d->mCat.ids( d->mStrAppName, slApp);
165 201
166 // addition part 202 // addition part
167 // make new recCats 203 // make new recCats
168 if (loadOk){ 204 if (loadOk){
169 int i,j; 205 int i,j;
170 int value; 206 int value;
171 int rCount = recCats.count(); 207 int rCount = recCats.count();
172 int mCount = d->mAppCats.count(); 208 int mCount = d->mAppCats.count();
173 209
174 for (i=0; i<rCount; i++){ 210 for (i=0; i<rCount; i++){
175 value = 0; 211 value = 0;
176 for (j=0; j<mCount; j++){ 212 for (j=0; j<mCount; j++){
177 if (recCats[i] == d->mAppCats[j]){ 213 if (recCats[i] == d->mAppCats[j]){
178 value = recCats[i]; 214 value = recCats[i];
179 break; 215 break;
180 } 216 }
181 } 217 }
182 if (value != 0){ 218 if (value != 0){
183 int tmp = results.size(); 219 int tmp = results.size();
184 results.resize( tmp + 1 ); 220 results.resize( tmp + 1 );
185 results[ tmp ] = value; 221 results[ tmp ] = value;
186 } 222 }
187 } 223 }
188 } 224 }
189 else{ 225 else{
190 results = recCats; 226 results = recCats;
191 } 227 }
192 // addition end 228 // addition end
193 229
194 int i, 230 int i,
195 j, 231 j,
196 saveMe, 232 saveMe,
197 recCount; 233 recCount;
198 QStringList::Iterator it; 234 QStringList::Iterator it;
199 // now add in all the items... 235 // now add in all the items...
200 recCount = results.count(); 236 recCount = results.count();
201 saveMe = -1; 237 saveMe = -1;
202 if ( recCount > 1 && loadOk ) { 238 if ( recCount > 1 && loadOk ) {
203 it = slApp.begin(); 239 it = slApp.begin();
204 for ( j = 0; j< (int)(slApp.count()-1); ++it, j++ ) { 240 for ( j = 0; j< (int)(slApp.count()-1); ++it, j++ ) {
205 241
206 // grr... we have to go through and compare... 242 // grr... we have to go through and compare...
207 if ( j < int(d->mAppCats.size()) ) { 243 if ( j < int(d->mAppCats.size()) ) {
208 for ( i = 0; i < recCount; i++ ) { 244 for ( i = 0; i < recCount; i++ ) {
209 if ( results[i] == d->mAppCats[j] ) { 245 if ( results[i] == d->mAppCats[j] ) {
210 (*it).append( tr(" (Multi.)") ); 246 (*it).append( tr(" (Multi.)") );
211 if ( saveMe < 0 ) 247 if ( saveMe < 0 )
212 saveMe = j; 248 saveMe = j;
213 // no need to continue through the list. 249 // no need to continue through the list.
214 break; 250 break;
215 } 251 }
216 } 252 }
217 } 253 }
218 insertItem( *it ); 254 insertItem( *it );
219 } 255 }
220 insertItem( *it ); 256 insertItem( *it );
221 } else 257 } else
222 insertStringList( slApp ); 258 insertStringList( slApp );
223 259
224 if ( recCount > 0 && loadOk ) { 260 if ( recCount > 0 && loadOk ) {
225 for ( i = 0; i < int(d->mAppCats.size()); i++ ) { 261 for ( i = 0; i < int(d->mAppCats.size()); i++ ) {
226 if ( d->mAppCats[i] == results[0] ) { 262 if ( d->mAppCats[i] == results[0] ) {
227 setCurrentItem( i ); 263 setCurrentItem( i );
228 break; 264 break;
229 } 265 }
230 } 266 }
231 } else 267 } else
232 { 268 {
233 setCurrentItem( slApp.count()-1 ); // unfiled 269 setCurrentItem( slApp.count()-1 ); // unfiled
234 } 270 }
235/* 271/*
236 QObject::connect( this, SIGNAL(activated(int)), 272 QObject::connect( this, SIGNAL(activated(int)),
237 this, SLOT(slotValueChanged(int)) ); 273 this, SLOT(slotValueChanged(int)) );
238*/ 274*/
239 return results; 275 return results;
240} 276}
241 277
242 278
243CategoryCombo::~CategoryCombo() 279CategoryCombo::~CategoryCombo()
244{ 280{
245 delete d; 281 delete d;
246} 282}
247 283
248int CategoryCombo::currentCategory() const 284int CategoryCombo::currentCategory() const
249{ 285{
250 int returnMe; 286 int returnMe;
251 returnMe = currentItem(); 287 returnMe = currentItem();
252 288
253 if ( returnMe == (int)d->mAppCats.count() ) 289 if ( returnMe == (int)d->mAppCats.count() )
254 returnMe = -1; 290 returnMe = -1;
255 else if ( returnMe > (int)d->mAppCats.count() ) // only happen on "All" 291 else if ( returnMe > (int)d->mAppCats.count() ) // only happen on "All"
256 returnMe = -2; 292 returnMe = -2;
257 else 293 else
258 returnMe = d->mAppCats[returnMe]; 294 returnMe = d->mAppCats[returnMe];
259 return returnMe; 295 return returnMe;
260} 296}
261 297
262void CategoryCombo::setCurrentCategory( int newCatUid ) 298void CategoryCombo::setCurrentCategory( int newCatUid )
263{ 299{
264 int i; 300 int i;
265 for ( i = 0; i < int(d->mAppCats.size()); i++ ) { 301 for ( i = 0; i < int(d->mAppCats.size()); i++ ) {
266 if ( d->mAppCats[i] == newCatUid ) 302 if ( d->mAppCats[i] == newCatUid )
267 setCurrentItem( i ); 303 setCurrentItem( i );
268 } 304 }
269} 305}
270 306
271void CategoryCombo::setCurrentText( const QString &str ) 307void CategoryCombo::setCurrentText( const QString &str )
272{ 308{
273 int i; 309 int i;
274 int stop; 310 int stop;
275 stop = count(); 311 stop = count();
276 for ( i = 0; i < stop; i++ ) { 312 for ( i = 0; i < stop; i++ ) {
277 if ( text( i ) == str ) { 313 if ( text( i ) == str ) {
278 setCurrentItem( i ); 314 setCurrentItem( i );
279 break; 315 break;
280 } 316 }
281 } 317 }
282} 318}
283 319
284void CategoryCombo::slotValueChanged( int ) 320void CategoryCombo::slotValueChanged( int )
285{ 321{
286 emit sigCatChanged( currentCategory() ); 322 emit sigCatChanged( currentCategory() );
287} 323}
288 324
325/*!
326 Constructs a category selector with parent \a parent, name \a name.
327
328 This constructor is provided to make Opie compatible with Sharp ROM.
329*/
330CategorySelect::CategorySelect( QWidget* parent, const char* name )
331 : QHBox( parent, name ),
332 cmbCat( 0 ),
333 cmdCat( 0 ),
334 d( 0 )
335{
336 d = new CategorySelectPrivate();
337 init(0); // default argument
338}
339/*!
340 Constructs a category selector with parent \a parent, name \a name and
341 fixed width \a width.
342
343 This constructor is provided to make integration with Qt Designer easier.
344*/
289CategorySelect::CategorySelect( QWidget *parent, const char *name,int width) 345CategorySelect::CategorySelect( QWidget *parent, const char *name,int width)
290 : QHBox( parent, name ), 346 : QHBox( parent, name ),
291 cmbCat( 0 ), 347 cmbCat( 0 ),
292 cmdCat( 0 ), 348 cmdCat( 0 ),
293 d( 0 ) 349 d( 0 )
294{ 350{
295 d = new CategorySelectPrivate(); 351 d = new CategorySelectPrivate();
296 init(width); 352 init(width);
297} 353}
298 354
355/*!
356 \overload
357 This constructor accepts an array \a vl of integers representing Categories.
358 \a appName is used as the visible name string.
359*/
299CategorySelect::CategorySelect( const QArray<int> &vl, 360CategorySelect::CategorySelect( const QArray<int> &vl,
300 const QString &appName, QWidget *parent, 361 const QString &appName, QWidget *parent,
301 const char *name ,int width) 362 const char *name ,int width)
302 : QHBox( parent, name ) 363 : QHBox( parent, name )
303{ 364{
304 d = new CategorySelectPrivate( vl ); 365 d = new CategorySelectPrivate( vl );
305 366
306 init(width); 367 init(width);
307 368
308 setCategories( vl, appName, appName ); 369 setCategories( vl, appName, appName );
309} 370}
310 371
372/*!
373 \overload
374
375 This constructor accepts an array \a vl of integers representing Categories.
376 \a visibleName is the string used when the name of this widget is required
377 to be displayed. \a width is an integer used as the fixed width of the widget.
378*/
311CategorySelect::CategorySelect( const QArray<int> &vl, 379CategorySelect::CategorySelect( const QArray<int> &vl,
312 const QString &appName, 380 const QString &appName,
313 const QString &visibleName, 381 const QString &visibleName,
314 QWidget *parent, const char *name , int width) 382 QWidget *parent, const char *name , int width)
315 : QHBox( parent, name ) 383 : QHBox( parent, name )
316{ 384{
317 d = new CategorySelectPrivate( vl ); 385 d = new CategorySelectPrivate( vl );
318 init(width); 386 init(width);
319 setCategories( vl, appName, visibleName ); 387 setCategories( vl, appName, visibleName );
320} 388}
321 389
390/*!
391 Destructs a CategorySelect widget.
392*/
322CategorySelect::~CategorySelect() 393CategorySelect::~CategorySelect()
323{ 394{
324 delete d; 395 delete d;
325} 396}
326 397
398/*!
399 This slot is called when the user pushes the button to edit Categories.
400*/
327void CategorySelect::slotDialog() 401void CategorySelect::slotDialog()
328{ 402{
329 if (QFile::exists( categoryEdittingFileName() )){ 403 if (QFile::exists( categoryEdittingFileName() )){
330 QMessageBox::warning(this,tr("Error"), 404 QMessageBox::warning(this,tr("Error"),
331 tr("Sorry, another application is\nediting categories.") ); 405 tr("Sorry, another application is\nediting categories.") );
332 return; 406 return;
333 } 407 }
334 408
335 QFile f( categoryEdittingFileName() ); 409 QFile f( categoryEdittingFileName() );
336 if ( !f.open( IO_WriteOnly) ){ 410 if ( !f.open( IO_WriteOnly) ){
337 return; 411 return;
338 } 412 }
339 413
340 QDialog editDlg( this, 0, TRUE ); 414 QDialog editDlg( this, 0, TRUE );
341 editDlg.setCaption( tr("Edit Categories") ); 415 editDlg.setCaption( tr("Edit Categories") );
342 QVBoxLayout *vb = new QVBoxLayout( &editDlg ); 416 QVBoxLayout *vb = new QVBoxLayout( &editDlg );
343 QScrollView *sv = new QScrollView( &editDlg ); 417 QScrollView *sv = new QScrollView( &editDlg );
344 sv->setResizePolicy( QScrollView::AutoOneFit ); 418 sv->setResizePolicy( QScrollView::AutoOneFit );
345 sv->setHScrollBarMode( QScrollView::AlwaysOff ); 419 sv->setHScrollBarMode( QScrollView::AlwaysOff );
346 vb->addWidget( sv ); 420 vb->addWidget( sv );
347 CategoryWidget ce( d->mRec, mStrAppName, d->mVisibleName, &editDlg ); 421 CategoryWidget ce( d->mRec, mStrAppName, d->mVisibleName, &editDlg );
348 sv->addChild( &ce ); 422 sv->addChild( &ce );
349 editDlg.showMaximized(); 423 editDlg.showMaximized();
350 424
351 if ( editDlg.exec() ) { 425 if ( editDlg.exec() ) {
352 d->mRec = ce.newCategories(); 426 d->mRec = ce.newCategories();
353 cmbCat->initCombo( d->mRec, mStrAppName ); 427 cmbCat->initCombo( d->mRec, mStrAppName );
354 } 428 }
355 429
356 f.close(); 430 f.close();
357 QFile::remove( categoryEdittingFileName() ); 431 QFile::remove( categoryEdittingFileName() );
358} 432}
359 433
434
435/*!
436 This slot is called when a new Category is available.
437*/
360void CategorySelect::slotNewCat( int newUid ) 438void CategorySelect::slotNewCat( int newUid )
361{ 439{
362 if ( newUid != -1 ) { 440 if ( newUid != -1 ) {
363 bool alreadyIn = false; 441 bool alreadyIn = false;
364 for ( uint it = 0; it < d->mRec.count(); ++it ) { 442 for ( uint it = 0; it < d->mRec.count(); ++it ) {
365 if ( d->mRec[it] == newUid ) { 443 if ( d->mRec[it] == newUid ) {
366 alreadyIn = true; 444 alreadyIn = true;
367 break; 445 break;
368 } 446 }
369 } 447 }
370 if ( !alreadyIn ) { 448 if ( !alreadyIn ) {
371 d->mRec.resize( 1 ); 449 d->mRec.resize( 1 );
372 d->mRec[ 0 ] = newUid; 450 d->mRec[ 0 ] = newUid;
373 } 451 }
374 } else 452 } else
375 d->mRec.resize(0); // now Unfiled. 453 d->mRec.resize(0); // now Unfiled.
376 emit signalSelected( currentCategory() ); 454 emit signalSelected( currentCategory() );
377} 455}
378 456
457/*!
458 \overload
459
460 Resets the CategorySelect to select the \a vlCats for
461 the Categories assoicated with \a appName.
462
463 This function should only be called if <i>filtering</i>
464 on Categories and not selecting and therefore possibly
465 allowing the user to edit Categories.
466*/
379QString CategorySelect::setCategories( const QArray<int> &rec, 467QString CategorySelect::setCategories( const QArray<int> &rec,
380 const QString &appName ) 468 const QString &appName )
381{ 469{
382 return setCategories( rec, appName, appName ); 470 return setCategories( rec, appName, appName );
383} 471}
384 472
473/*!
474 Resets the CategorySelect to select the \a vlCats for
475 the Categories assoicated with \a appName and displays
476 the \a visibleName if the user is selecting and therefore editing
477 new Categories.
478 */
385QString CategorySelect::setCategories( const QArray<int> &rec, 479QString CategorySelect::setCategories( const QArray<int> &rec,
386 const QString &appName, 480 const QString &appName,
387 const QString &visibleName ) 481 const QString &visibleName )
388{ 482{
389 d->mVisibleName = visibleName; 483 d->mVisibleName = visibleName;
390 mStrAppName = appName; 484 mStrAppName = appName;
391 d->mRec = cmbCat->initComboWithRefind( rec, appName ); 485 d->mRec = cmbCat->initComboWithRefind( rec, appName );
392 return Qtopia::Record::idsToString(d->mRec); 486 return Qtopia::Record::idsToString(d->mRec);
393} 487}
394 488
395void CategorySelect::init(int width) 489void CategorySelect::init(int width)
396{ 490{
397 cmbCat = new CategoryCombo( this, 0, width); 491 cmbCat = new CategoryCombo( this, 0, width);
398 492
399 QObject::connect( cmbCat, SIGNAL(sigCatChanged(int)), 493 QObject::connect( cmbCat, SIGNAL(sigCatChanged(int)),
400 this, SLOT(slotNewCat(int)) ); 494 this, SLOT(slotNewCat(int)) );
401 cmdCat = new QToolButton( this ); 495 cmdCat = new QToolButton( this );
402 QObject::connect( cmdCat, SIGNAL(clicked()), this, SLOT(slotDialog()) ); 496 QObject::connect( cmdCat, SIGNAL(clicked()), this, SLOT(slotDialog()) );
403 cmdCat->setTextLabel( "...", FALSE ); 497 cmdCat->setTextLabel( "...", FALSE );
404 cmdCat->setUsesTextLabel( true ); 498 cmdCat->setUsesTextLabel( true );
405 cmdCat->setMaximumSize( cmdCat->sizeHint() ); 499 cmdCat->setMaximumSize( cmdCat->sizeHint() );
406 cmdCat->setFocusPolicy( TabFocus ); 500 cmdCat->setFocusPolicy( TabFocus );
407} 501}
408 502
409 503/*!
504 Return the value of the currently selected category.
505 */
410int CategorySelect::currentCategory() const 506int CategorySelect::currentCategory() const
411{ 507{
412 return cmbCat->currentCategory(); 508 return cmbCat->currentCategory();
413} 509}
414 510
511
415void CategorySelect::setCurrentCategory( int newCatUid ) 512void CategorySelect::setCurrentCategory( int newCatUid )
416{ 513{
417 cmbCat->setCurrentCategory( newCatUid ); 514 cmbCat->setCurrentCategory( newCatUid );
418} 515}
419 516
420 517/*!
518 Returns a shallow copy of the categories in this CategorySelect.
519 */
421const QArray<int> &CategorySelect::currentCategories() const 520const QArray<int> &CategorySelect::currentCategories() const
422{ 521{
423 return d->mRec; 522 return d->mRec;
424} 523}
425 524
525/*!
526 Hides the edit section of the CategorySelect widget if \a remove is TRUE.
527 */
426void CategorySelect::setRemoveCategoryEdit( bool remove ) 528void CategorySelect::setRemoveCategoryEdit( bool remove )
427{ 529{
428 if ( remove ) { 530 if ( remove ) {
429 cmdCat->setEnabled( FALSE ); 531 cmdCat->setEnabled( FALSE );
430 cmdCat->hide(); 532 cmdCat->hide();
431 } else { 533 } else {
432 cmdCat->setEnabled( TRUE ); 534 cmdCat->setEnabled( TRUE );
433 cmdCat->show(); 535 cmdCat->show();
434 } 536 }
435} 537}
436 538
539/*!
540 Changes this CategorySelect to the All category if \a all is TRUE.
541 */
437void CategorySelect::setAllCategories( bool add ) 542void CategorySelect::setAllCategories( bool add )
438{ 543{
439 d->usingAll = add; 544 d->usingAll = add;
440 if ( add ) { 545 if ( add ) {
441 cmbCat->insertItem( tr( "All" ), cmbCat->count() ); 546 cmbCat->insertItem( tr( "All" ), cmbCat->count() );
442 cmbCat->setCurrentItem( cmbCat->count() - 1 ); 547 cmbCat->setCurrentItem( cmbCat->count() - 1 );
443 } else 548 } else
444 cmbCat->removeItem( cmbCat->count() - 1 ); 549 cmbCat->removeItem( cmbCat->count() - 1 );
445} 550}
446 551
447// 01.12.21 added 552// 01.12.21 added
553/*!
554 Sets the fixed width of the widget to \a width.
555 */
448void CategorySelect::setFixedWidth(int width) 556void CategorySelect::setFixedWidth(int width)
449{ 557{
450 width -= cmdCat->width(); 558 width -= cmdCat->width();
451 cmbCat->setFixedWidth(width); 559 cmbCat->setFixedWidth(width);
452} 560}
diff --git a/library/categoryselect.h b/library/categoryselect.h
index 7a8e491..8ec1941 100644
--- a/library/categoryselect.h
+++ b/library/categoryselect.h
@@ -1,113 +1,121 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2001 Trolltech AS. All rights reserved. 2** Copyright (C) 2001 Trolltech AS. All rights reserved.
3** Copyright (C) 2003 zecke Introduce Sharp to the glory of default arguments
3** 4**
4** This file is part of Qtopia Environment. 5** This file is part of Qtopia Environment.
5** 6**
6** This file may be distributed and/or modified under the terms of the 7** 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 8** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 9** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 10** packaging of this file.
10** 11**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 12** 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. 13** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 14**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 15** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 16**
16** Contact info@trolltech.com if any conditions of this licensing are 17** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 18** not clear to you.
18** 19**
19**********************************************************************/ 20**********************************************************************/
20 21
21#ifndef __CATEGORYCOMBO_H__ 22#ifndef __CATEGORYCOMBO_H__
22#define __CATEGORYCOMBO_H__ 23#define __CATEGORYCOMBO_H__
23 24
24#include <qcombobox.h> 25#include <qcombobox.h>
25#include <qhbox.h> 26#include <qhbox.h>
26#include <qstring.h> 27#include <qstring.h>
27#include <qarray.h> 28#include <qarray.h>
28 29
29extern QString categoryFileName(); 30extern QString categoryFileName();
30 31
31class QToolButton; 32class QToolButton;
32 33
33class CategoryComboPrivate; 34class CategoryComboPrivate;
34class CategoryCombo : public QComboBox 35class CategoryCombo : public QComboBox
35{ 36{
36 Q_OBJECT 37 Q_OBJECT
37 38
38public: 39public:
39 CategoryCombo( QWidget *parent, const char* name = 0, int width=0); 40 CategoryCombo( QWidget *parent, const char* name = 0, int width = 0);
40 41
41 ~CategoryCombo(); 42 ~CategoryCombo();
42 43
43 int currentCategory() const; 44 int currentCategory() const;
44 void setCurrentCategory( int id ); 45 void setCurrentCategory( int id );
45 // depreciated. 46 // depreciated.
46 void initCombo( const QArray<int> &recCats, const QString &appName ); 47 void initCombo( const QArray<int> &recCats, const QString &appName );
47 void initCombo( const QArray<int> &recCats, const QString &appName, 48 void initCombo( const QArray<int> &recCats, const QString &appName,
48 const QString &visibleName /* = appName */ ); 49 const QString &visibleName /* = appName */ );
49 50
50 QArray<int> initComboWithRefind( const QArray<int> &recCats, const QString &appName ); 51 QArray<int> initComboWithRefind( const QArray<int> &recCats, const QString &appName );
51 52
52signals: 53signals:
53 void sigCatChanged( int newUid ); 54 void sigCatChanged( int newUid );
54 55
55private slots: 56private slots:
56 void slotValueChanged( int ); 57 void slotValueChanged( int );
57 58
58private: 59private:
59 void setCurrentText( const QString &str ); 60 void setCurrentText( const QString &str );
60 CategoryComboPrivate *d; 61 CategoryComboPrivate *d;
61}; 62};
62 63
63#endif 64#endif
64 65
65class CategorySelectPrivate; 66class CategorySelectPrivate;
66class CategorySelect : public QHBox 67class CategorySelect : public QHBox
67{ 68{
68 Q_OBJECT 69 Q_OBJECT
69public: 70public:
70 // we need two constructors, the first gets around designer limitations 71 // we need two constructors, the first gets around designer limitations
71 72
72 CategorySelect( QWidget *parent = 0, const char *name = 0, int width = 0 ); 73 /*
74 * The Sharp libqpe does have two c'tor and no default argument for int width
75 * to stay BC cause the Kompany have the original headers and don't compile
76 * against the normal SDK we need to provide the two symbols as well
77 * -zecke
78 */
79 CategorySelect( QWidget* parent = 0, const char* name = 0 );
80 CategorySelect( QWidget *parent /*= 0 */, const char *name/* = 0*/ , int width /* = 0 if we break bc -zecke */ );
73 81
74 CategorySelect( const QArray<int> &vlCats, const QString &appName, 82 CategorySelect( const QArray<int> &vlCats, const QString &appName,
75 QWidget *parent = 0, const char *name = 0, 83 QWidget *parent = 0, const char *name = 0,
76 int width = 0); 84 int width = 0);
77 CategorySelect( const QArray<int> &vlCats, const QString &appName, 85 CategorySelect( const QArray<int> &vlCats, const QString &appName,
78 const QString &visibleName, QWidget *parent = 0, 86 const QString &visibleName, QWidget *parent = 0,
79 const char *name = 0 , int width = 0); 87 const char *name = 0 , int width = 0);
80 88
81 ~CategorySelect(); 89 ~CategorySelect();
82 90
83 const QArray<int> &currentCategories() const; 91 const QArray<int> &currentCategories() const;
84 int currentCategory() const; 92 int currentCategory() const;
85 void setCurrentCategory( int newCatUid ); 93 void setCurrentCategory( int newCatUid );
86 // pretty much if you don't set it the constructor, you need to 94 // pretty much if you don't set it the constructor, you need to
87 // call it here ASAP! 95 // call it here ASAP!
88 // however this call is depreciated... 96 // however this call is depreciated...
89 97
90 QString setCategories( const QArray<int> &vlCats, const QString &appName ); 98 QString setCategories( const QArray<int> &vlCats, const QString &appName );
91 QString setCategories( const QArray<int> &vlCats, const QString &appName, 99 QString setCategories( const QArray<int> &vlCats, const QString &appName,
92 const QString &visibleName ); 100 const QString &visibleName );
93 // these were added for find dialog. 101 // these were added for find dialog.
94 void setRemoveCategoryEdit( bool remove ); 102 void setRemoveCategoryEdit( bool remove );
95 void setAllCategories( bool add ); 103 void setAllCategories( bool add );
96 104
97 void setFixedWidth(int width); 105 void setFixedWidth(int width);
98signals: 106signals:
99 void signalSelected( int ); 107 void signalSelected( int );
100 108
101private slots: 109private slots:
102 void slotDialog(); 110 void slotDialog();
103 111
104public slots: 112public slots:
105 void slotNewCat( int id ); 113 void slotNewCat( int id );
106 114
107private: 115private:
108 void init(int width=0); 116 void init(int width=0);
109 QString mStrAppName; 117 QString mStrAppName;
110 CategoryCombo *cmbCat; 118 CategoryCombo *cmbCat;
111 QToolButton *cmdCat; 119 QToolButton *cmdCat;
112 CategorySelectPrivate *d; 120 CategorySelectPrivate *d;
113}; 121};
diff --git a/library/config.cpp b/library/config.cpp
index b47c620..b28c771 100644
--- a/library/config.cpp
+++ b/library/config.cpp
@@ -1,570 +1,580 @@
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 <qdir.h> 21#include <qdir.h>
22#include <qfile.h> 22#include <qfile.h>
23#include <qfileinfo.h> 23#include <qfileinfo.h>
24#include <qmessagebox.h> 24#include <qmessagebox.h>
25#if QT_VERSION <= 230 && defined(QT_NO_CODECS) 25#if QT_VERSION <= 230 && defined(QT_NO_CODECS)
26#include <qtextcodec.h> 26#include <qtextcodec.h>
27#endif 27#endif
28#include <qtextstream.h> 28#include <qtextstream.h>
29 29
30#include <sys/stat.h> 30#include <sys/stat.h>
31#include <sys/types.h> 31#include <sys/types.h>
32#include <fcntl.h> 32#include <fcntl.h>
33#include <stdlib.h> 33#include <stdlib.h>
34#include <unistd.h> 34#include <unistd.h>
35 35
36#define QTOPIA_INTERNAL_LANGLIST 36#define QTOPIA_INTERNAL_LANGLIST
37#include "config.h" 37#include "config.h"
38#include "global.h" 38#include "global.h"
39 39
40 40
41/*! 41/*!
42 \internal 42 \internal
43*/ 43*/
44QString Config::configFilename(const QString& name, Domain d) 44QString Config::configFilename(const QString& name, Domain d)
45{ 45{
46 switch (d) { 46 switch (d) {
47 case File: 47 case File:
48 return name; 48 return name;
49 case User: { 49 case User: {
50 QDir dir = (QString(getenv("HOME")) + "/Settings"); 50 QDir dir = (QString(getenv("HOME")) + "/Settings");
51 if ( !dir.exists() ) 51 if ( !dir.exists() )
52 mkdir(dir.path().local8Bit(),0700); 52 mkdir(dir.path().local8Bit(),0700);
53 return dir.path() + "/" + name + ".conf"; 53 return dir.path() + "/" + name + ".conf";
54 } 54 }
55 } 55 }
56 return name; 56 return name;
57} 57}
58 58
59/*! 59/*!
60 \class Config config.h 60 \class Config config.h
61 \brief The Config class provides for saving application cofniguration state. 61 \brief The Config class provides for saving application cofniguration state.
62 62
63 You should keep a Config in existence only while you do not want others 63 You should keep a Config in existence only while you do not want others
64 to be able to change the state. There is no locking currently, but there 64 to be able to change the state. There is no locking currently, but there
65 may be in the future. 65 may be in the future.
66*/ 66*/
67 67
68/*! 68/*!
69 \enum Config::ConfigGroup 69 \enum Config::ConfigGroup
70 \internal 70 \internal
71*/ 71*/
72 72
73/*! 73/*!
74 \enum Config::Domain 74 \enum Config::Domain
75 75
76 \value File 76 \value File
77 \value User 77 \value User
78 78
79 See Config for details. 79 See Config for details.
80*/ 80*/
81 81
82/*! 82/*!
83 Constructs a config that will load or create a configuration with the 83 Constructs a config that will load or create a configuration with the
84 given \a name in the given \a domain. 84 given \a name in the given \a domain.
85 85
86 You must call setGroup() before doing much else with the Config. 86 You must call setGroup() before doing much else with the Config.
87 87
88 In the default Domain, \e User, 88 In the default Domain, \e User,
89 the configuration is user-specific. \a name should not contain "/" in 89 the configuration is user-specific. \a name should not contain "/" in
90 this case, and in general should be the name of the C++ class that is 90 this case, and in general should be the name of the C++ class that is
91 primarily responsible for maintaining the configuration. 91 primarily responsible for maintaining the configuration.
92 92
93 In the File Domain, \a name is an absolute filename. 93 In the File Domain, \a name is an absolute filename.
94*/ 94*/
95Config::Config( const QString &name, Domain domain ) 95Config::Config( const QString &name, Domain domain )
96 : filename( configFilename(name,domain) ) 96 : filename( configFilename(name,domain) )
97{ 97{
98 git = groups.end(); 98 git = groups.end();
99 read(); 99 read();
100 QStringList l = Global::languageList(); 100 QStringList l = Global::languageList();
101 lang = l[0]; 101 lang = l[0];
102 glang = l[1]; 102 glang = l[1];
103} 103}
104 104
105 105
106// Sharp ROM compatibility 106// Sharp ROM compatibility
107Config::Config ( const QString &name, bool what ) 107Config::Config ( const QString &name, bool what )
108 : filename( configFilename(name,what ? User : File) ) 108 : filename( configFilename(name,what ? User : File) )
109{ 109{
110 git = groups.end(); 110 git = groups.end();
111 read(); 111 read();
112 QStringList l = Global::languageList(); 112 QStringList l = Global::languageList();
113 lang = l[0]; 113 lang = l[0];
114 glang = l[1]; 114 glang = l[1];
115} 115}
116 116
117/*! 117/*!
118 Writes any changes to disk and destroys the in-memory object. 118 Writes any changes to disk and destroys the in-memory object.
119*/ 119*/
120Config::~Config() 120Config::~Config()
121{ 121{
122 if ( changed ) 122 if ( changed )
123 write(); 123 write();
124} 124}
125 125
126/*! 126/*!
127 Returns whether the current group has an entry called \a key. 127 Returns whether the current group has an entry called \a key.
128*/ 128*/
129bool Config::hasKey( const QString &key ) const 129bool Config::hasKey( const QString &key ) const
130{ 130{
131 if ( groups.end() == git ) 131 if ( groups.end() == git )
132 return FALSE; 132 return FALSE;
133 ConfigGroup::ConstIterator it = ( *git ).find( key ); 133 ConfigGroup::ConstIterator it = ( *git ).find( key );
134 return it != ( *git ).end(); 134 return it != ( *git ).end();
135} 135}
136 136
137/*! 137/*!
138 Sets the current group for subsequent reading and writing of 138 Sets the current group for subsequent reading and writing of
139 entries to \a gname. Grouping allows the application to partition the namespace. 139 entries to \a gname. Grouping allows the application to partition the namespace.
140 140
141 This function must be called prior to any reading or writing 141 This function must be called prior to any reading or writing
142 of entries. 142 of entries.
143 143
144 The \a gname must not be empty. 144 The \a gname must not be empty.
145*/ 145*/
146void Config::setGroup( const QString &gname ) 146void Config::setGroup( const QString &gname )
147{ 147{
148 QMap< QString, ConfigGroup>::Iterator it = groups.find( gname ); 148 QMap< QString, ConfigGroup>::Iterator it = groups.find( gname );
149 if ( it == groups.end() ) { 149 if ( it == groups.end() ) {
150 git = groups.insert( gname, ConfigGroup() ); 150 git = groups.insert( gname, ConfigGroup() );
151 changed = TRUE; 151 changed = TRUE;
152 return; 152 return;
153 } 153 }
154 git = it; 154 git = it;
155} 155}
156 156
157/*! 157/*!
158 Writes a (\a key, \a value) entry to the current group. 158 Writes a (\a key, \a value) entry to the current group.
159 159
160 \sa readEntry() 160 \sa readEntry()
161*/ 161*/
162void Config::writeEntry( const QString &key, const char* value ) 162void Config::writeEntry( const QString &key, const char* value )
163{ 163{
164 writeEntry(key,QString(value)); 164 writeEntry(key,QString(value));
165} 165}
166 166
167/*! 167/*!
168 Writes a (\a key, \a value) entry to the current group. 168 Writes a (\a key, \a value) entry to the current group.
169 169
170 \sa readEntry() 170 \sa readEntry()
171*/ 171*/
172void Config::writeEntry( const QString &key, const QString &value ) 172void Config::writeEntry( const QString &key, const QString &value )
173{ 173{
174 if ( git == groups.end() ) { 174 if ( git == groups.end() ) {
175 qWarning( "no group set" ); 175 qWarning( "no group set" );
176 return; 176 return;
177 } 177 }
178 if ( (*git)[key] != value ) { 178 if ( (*git)[key] != value ) {
179 ( *git ).insert( key, value ); 179 ( *git ).insert( key, value );
180 changed = TRUE; 180 changed = TRUE;
181 } 181 }
182} 182}
183 183
184/* 184/*
185 Note that the degree of protection offered by the encryption here is 185 Note that the degree of protection offered by the encryption here is
186 only sufficient to avoid the most casual observation of the configuration 186 only sufficient to avoid the most casual observation of the configuration
187 files. People with access to the files can write down the contents and 187 files. People with access to the files can write down the contents and
188 decrypt it using this source code. 188 decrypt it using this source code.
189 189
190 Conceivably, and at some burden to the user, this encryption could 190 Conceivably, and at some burden to the user, this encryption could
191 be improved. 191 be improved.
192*/ 192*/
193static QString encipher(const QString& plain) 193static QString encipher(const QString& plain)
194{ 194{
195 // mainly, we make it long 195 // mainly, we make it long
196 QString cipher; 196 QString cipher;
197 int mix=28730492; 197 int mix=28730492;
198 for (int i=0; i<(int)plain.length(); i++) { 198 for (int i=0; i<(int)plain.length(); i++) {
199 int u = plain[i].unicode(); 199 int u = plain[i].unicode();
200 int c = u ^ mix; 200 int c = u ^ mix;
201 QString x = QString::number(c,36); 201 QString x = QString::number(c,36);
202 cipher.append(QChar('a'+x.length())); 202 cipher.append(QChar('a'+x.length()));
203 cipher.append(x); 203 cipher.append(x);
204 mix *= u; 204 mix *= u;
205 } 205 }
206 return cipher; 206 return cipher;
207} 207}
208 208
209static QString decipher(const QString& cipher) 209static QString decipher(const QString& cipher)
210{ 210{
211 QString plain; 211 QString plain;
212 int mix=28730492; 212 int mix=28730492;
213 for (int i=0; i<(int)cipher.length();) { 213 for (int i=0; i<(int)cipher.length();) {
214 int l = cipher[i].unicode()-'a'; 214 int l = cipher[i].unicode()-'a';
215 QString x = cipher.mid(i+1,l); i+=l+1; 215 QString x = cipher.mid(i+1,l); i+=l+1;
216 int u = x.toInt(0,36) ^ mix; 216 int u = x.toInt(0,36) ^ mix;
217 plain.append(QChar(u)); 217 plain.append(QChar(u));
218 mix *= u; 218 mix *= u;
219 } 219 }
220 return plain; 220 return plain;
221} 221}
222 222
223/*! 223/*!
224 Writes an encrypted (\a key, \a value) entry to the current group. 224 Writes an encrypted (\a key, \a value) entry to the current group.
225 225
226 Note that the degree of protection offered by the encryption is 226 Note that the degree of protection offered by the encryption is
227 only sufficient to avoid the most casual observation of the configuration 227 only sufficient to avoid the most casual observation of the configuration
228 files. 228 files.
229 229
230 \sa readEntry() 230 \sa readEntry()
231*/ 231*/
232void Config::writeEntryCrypt( const QString &key, const QString &value ) 232void Config::writeEntryCrypt( const QString &key, const QString &value )
233{ 233{
234 if ( git == groups.end() ) { 234 if ( git == groups.end() ) {
235 qWarning( "no group set" ); 235 qWarning( "no group set" );
236 return; 236 return;
237 } 237 }
238 QString evalue = encipher(value); 238 QString evalue = encipher(value);
239 if ( (*git)[key] != evalue ) { 239 if ( (*git)[key] != evalue ) {
240 ( *git ).insert( key, evalue ); 240 ( *git ).insert( key, evalue );
241 changed = TRUE; 241 changed = TRUE;
242 } 242 }
243} 243}
244 244
245/*! 245/*!
246 Writes a (\a key, \a num) entry to the current group. 246 Writes a (\a key, \a num) entry to the current group.
247 247
248 \sa readNumEntry() 248 \sa readNumEntry()
249*/ 249*/
250void Config::writeEntry( const QString &key, int num ) 250void Config::writeEntry( const QString &key, int num )
251{ 251{
252 QString s; 252 QString s;
253 s.setNum( num ); 253 s.setNum( num );
254 writeEntry( key, s ); 254 writeEntry( key, s );
255} 255}
256 256
257#ifdef Q_HAS_BOOL_TYPE 257#ifdef Q_HAS_BOOL_TYPE
258/*! 258/*!
259 Writes a (\a key, \a b) entry to the current group. This is equivalent 259 Writes a (\a key, \a b) entry to the current group. This is equivalent
260 to writing a 0 or 1 as an integer entry. 260 to writing a 0 or 1 as an integer entry.
261 261
262 \sa readBoolEntry() 262 \sa readBoolEntry()
263*/ 263*/
264void Config::writeEntry( const QString &key, bool b ) 264void Config::writeEntry( const QString &key, bool b )
265{ 265{
266 QString s; 266 QString s;
267 s.setNum( ( int )b ); 267 s.setNum( ( int )b );
268 writeEntry( key, s ); 268 writeEntry( key, s );
269} 269}
270#endif 270#endif
271 271
272/*! 272/*!
273 Writes a (\a key, \a lst) entry to the current group. The list 273 Writes a (\a key, \a lst) entry to the current group. The list
274 is separated by \a sep, so the strings must not contain that character. 274 is separated by \a sep, so the strings must not contain that character.
275 275
276 \sa readListEntry() 276 \sa readListEntry()
277*/ 277*/
278void Config::writeEntry( const QString &key, const QStringList &lst, const QChar &sep ) 278void Config::writeEntry( const QString &key, const QStringList &lst, const QChar &sep )
279{ 279{
280 QString s; 280 QString s;
281 QStringList::ConstIterator it = lst.begin(); 281 QStringList::ConstIterator it = lst.begin();
282 for ( ; it != lst.end(); ++it ) 282 for ( ; it != lst.end(); ++it )
283 s += *it + sep; 283 s += *it + sep;
284 writeEntry( key, s ); 284 writeEntry( key, s );
285} 285}
286 286
287/*! 287/*!
288 Removes the \a key entry from the current group. Does nothing if 288 Removes the \a key entry from the current group. Does nothing if
289 there is no such entry. 289 there is no such entry.
290*/ 290*/
291 291
292void Config::removeEntry( const QString &key ) 292void Config::removeEntry( const QString &key )
293{ 293{
294 if ( git == groups.end() ) { 294 if ( git == groups.end() ) {
295 qWarning( "no group set" ); 295 qWarning( "no group set" );
296 return; 296 return;
297 } 297 }
298 ( *git ).remove( key ); 298 ( *git ).remove( key );
299 changed = TRUE; 299 changed = TRUE;
300} 300}
301 301
302/*! 302/*!
303 \fn bool Config::operator == ( const Config & other ) const 303 \fn bool Config::operator == ( const Config & other ) const
304 304
305 Tests for equality with \a other. Config objects are equal if they refer to the same filename. 305 Tests for equality with \a other. Config objects are equal if they refer to the same filename.
306*/ 306*/
307 307
308/*! 308/*!
309 \fn bool Config::operator != ( const Config & other ) const 309 \fn bool Config::operator != ( const Config & other ) const
310 310
311 Tests for inequality with \a other. Config objects are equal if they refer to the same filename. 311 Tests for inequality with \a other. Config objects are equal if they refer to the same filename.
312*/ 312*/
313 313
314/*! 314/*!
315 \fn QString Config::readEntry( const QString &key, const QString &deflt ) const 315 \fn QString Config::readEntry( const QString &key, const QString &deflt ) const
316 316
317 Reads a string entry stored with \a key, defaulting to \a deflt if there is no entry. 317 Reads a string entry stored with \a key, defaulting to \a deflt if there is no entry.
318*/ 318*/
319 319
320/*! 320/*!
321 \internal 321 \internal
322 For compatibility, non-const version. 322 For compatibility, non-const version.
323*/ 323*/
324QString Config::readEntry( const QString &key, const QString &deflt ) 324QString Config::readEntry( const QString &key, const QString &deflt )
325{ 325{
326 QString res = readEntryDirect( key+"["+lang+"]" ); 326 QString res = readEntryDirect( key+"["+lang+"]" );
327 if ( !res.isNull() ) 327 if ( !res.isNull() )
328 return res; 328 return res;
329 if ( !glang.isEmpty() ) { 329 if ( !glang.isEmpty() ) {
330 res = readEntryDirect( key+"["+glang+"]" ); 330 res = readEntryDirect( key+"["+glang+"]" );
331 if ( !res.isNull() ) 331 if ( !res.isNull() )
332 return res; 332 return res;
333 } 333 }
334 return readEntryDirect( key, deflt ); 334 return readEntryDirect( key, deflt );
335} 335}
336 336
337/*! 337/*!
338 \fn QString Config::readEntryCrypt( const QString &key, const QString &deflt ) const 338 \fn QString Config::readEntryCrypt( const QString &key, const QString &deflt ) const
339 339
340 Reads an encrypted string entry stored with \a key, defaulting to \a deflt if there is no entry. 340 Reads an encrypted string entry stored with \a key, defaulting to \a deflt if there is no entry.
341*/ 341*/
342 342
343/*! 343/*!
344 \internal 344 \internal
345 For compatibility, non-const version. 345 For compatibility, non-const version.
346*/ 346*/
347QString Config::readEntryCrypt( const QString &key, const QString &deflt ) 347QString Config::readEntryCrypt( const QString &key, const QString &deflt )
348{ 348{
349 QString res = readEntryDirect( key+"["+lang+"]" ); 349 QString res = readEntryDirect( key+"["+lang+"]" );
350 if ( res.isNull() && glang.isEmpty() ) 350 if ( res.isNull() && glang.isEmpty() )
351 res = readEntryDirect( key+"["+glang+"]" ); 351 res = readEntryDirect( key+"["+glang+"]" );
352 if ( res.isNull() ) 352 if ( res.isNull() )
353 res = readEntryDirect( key, QString::null ); 353 res = readEntryDirect( key, QString::null );
354 if ( res.isNull() ) 354 if ( res.isNull() )
355 return deflt; 355 return deflt;
356 return decipher(res); 356 return decipher(res);
357} 357}
358 358
359/*! 359/*!
360 \fn QString Config::readEntryDirect( const QString &key, const QString &deflt ) const 360 \fn QString Config::readEntryDirect( const QString &key, const QString &deflt ) const
361 \internal 361 \internal
362*/ 362*/
363 363
364/*! 364/*!
365 \internal 365 \internal
366 For compatibility, non-const version. 366 For compatibility, non-const version.
367*/ 367*/
368QString Config::readEntryDirect( const QString &key, const QString &deflt ) 368QString Config::readEntryDirect( const QString &key, const QString &deflt )
369{ 369{
370 if ( git == groups.end() ) { 370 if ( git == groups.end() ) {
371 //qWarning( "no group set" ); 371 //qWarning( "no group set" );
372 return deflt; 372 return deflt;
373 } 373 }
374 ConfigGroup::ConstIterator it = ( *git ).find( key ); 374 ConfigGroup::ConstIterator it = ( *git ).find( key );
375 if ( it != ( *git ).end() ) 375 if ( it != ( *git ).end() )
376 return *it; 376 return *it;
377 else 377 else
378 return deflt; 378 return deflt;
379} 379}
380 380
381/*! 381/*!
382 \fn int Config::readNumEntry( const QString &key, int deflt ) const 382 \fn int Config::readNumEntry( const QString &key, int deflt ) const
383 Reads a numeric entry stored with \a key, defaulting to \a deflt if there is no entry. 383 Reads a numeric entry stored with \a key, defaulting to \a deflt if there is no entry.
384*/ 384*/
385 385
386/*! 386/*!
387 \internal 387 \internal
388 For compatibility, non-const version. 388 For compatibility, non-const version.
389*/ 389*/
390int Config::readNumEntry( const QString &key, int deflt ) 390int Config::readNumEntry( const QString &key, int deflt )
391{ 391{
392 QString s = readEntry( key ); 392 QString s = readEntry( key );
393 if ( s.isEmpty() ) 393 if ( s.isEmpty() )
394 return deflt; 394 return deflt;
395 else 395 else
396 return s.toInt(); 396 return s.toInt();
397} 397}
398 398
399/*! 399/*!
400 \fn bool Config::readBoolEntry( const QString &key, bool deflt ) const 400 \fn bool Config::readBoolEntry( const QString &key, bool deflt ) const
401 Reads a bool entry stored with \a key, defaulting to \a deflt if there is no entry. 401 Reads a bool entry stored with \a key, defaulting to \a deflt if there is no entry.
402*/ 402*/
403 403
404/*! 404/*!
405 \internal 405 \internal
406 For compatibility, non-const version. 406 For compatibility, non-const version.
407*/ 407*/
408bool Config::readBoolEntry( const QString &key, bool deflt ) 408bool Config::readBoolEntry( const QString &key, bool deflt )
409{ 409{
410 QString s = readEntry( key ); 410 QString s = readEntry( key );
411 if ( s.isEmpty() ) 411 if ( s.isEmpty() )
412 return deflt; 412 return deflt;
413 else 413 else
414 return (bool)s.toInt(); 414 return (bool)s.toInt();
415} 415}
416 416
417/*! 417/*!
418 \fn QStringList Config::readListEntry( const QString &key, const QChar &sep ) const 418 \fn QStringList Config::readListEntry( const QString &key, const QChar &sep ) const
419 Reads a string list entry stored with \a key, and with \a sep as the separator. 419 Reads a string list entry stored with \a key, and with \a sep as the separator.
420*/ 420*/
421 421
422/*! 422/*!
423 \internal 423 \internal
424 For compatibility, non-const version. 424 For compatibility, non-const version.
425*/ 425*/
426QStringList Config::readListEntry( const QString &key, const QChar &sep ) 426QStringList Config::readListEntry( const QString &key, const QChar &sep )
427{ 427{
428 QString s = readEntry( key ); 428 QString s = readEntry( key );
429 if ( s.isEmpty() ) 429 if ( s.isEmpty() )
430 return QStringList(); 430 return QStringList();
431 else 431 else
432 return QStringList::split( sep, s ); 432 return QStringList::split( sep, s );
433} 433}
434 434
435/*! 435/*!
436 Removes all entries from the current group. 436 Removes all entries from the current group.
437*/ 437*/
438void Config::clearGroup() 438void Config::clearGroup()
439{ 439{
440 if ( git == groups.end() ) { 440 if ( git == groups.end() ) {
441 qWarning( "no group set" ); 441 qWarning( "no group set" );
442 return; 442 return;
443 } 443 }
444 if ( !(*git).isEmpty() ) { 444 if ( !(*git).isEmpty() ) {
445 ( *git ).clear(); 445 ( *git ).clear();
446 changed = TRUE; 446 changed = TRUE;
447 } 447 }
448} 448}
449 449
450/*! 450/*!
451 \internal 451 \internal
452*/ 452*/
453void Config::write( const QString &fn ) 453void Config::write( const QString &fn )
454{ 454{
455 QString strNewFile; 455 QString strNewFile;
456 if ( !fn.isEmpty() ) 456 if ( !fn.isEmpty() )
457 filename = fn; 457 filename = fn;
458 strNewFile = filename + ".new"; 458 strNewFile = filename + ".new";
459 459
460 QFile f( strNewFile ); 460 QFile f( strNewFile );
461 if ( !f.open( IO_WriteOnly|IO_Raw ) ) { 461 if ( !f.open( IO_WriteOnly|IO_Raw ) ) {
462 qWarning( "could not open for writing `%s'", strNewFile.latin1() ); 462 qWarning( "could not open for writing `%s'", strNewFile.latin1() );
463 git = groups.end(); 463 git = groups.end();
464 return; 464 return;
465 } 465 }
466 466
467 QString str; 467 QString str;
468 QCString cstr; 468 QCString cstr;
469 QMap< QString, ConfigGroup >::Iterator g_it = groups.begin(); 469 QMap< QString, ConfigGroup >::Iterator g_it = groups.begin();
470 470
471 for ( ; g_it != groups.end(); ++g_it ) { 471 for ( ; g_it != groups.end(); ++g_it ) {
472 str += "[" + g_it.key() + "]\n"; 472 str += "[" + g_it.key() + "]\n";
473 ConfigGroup::Iterator e_it = ( *g_it ).begin(); 473 ConfigGroup::Iterator e_it = ( *g_it ).begin();
474 for ( ; e_it != ( *g_it ).end(); ++e_it ) 474 for ( ; e_it != ( *g_it ).end(); ++e_it )
475 str += e_it.key() + " = " + *e_it + "\n"; 475 str += e_it.key() + " = " + *e_it + "\n";
476 } 476 }
477 cstr = str.utf8(); 477 cstr = str.utf8();
478 478
479 int total_length; 479 int total_length;
480 total_length = f.writeBlock( cstr.data(), cstr.length() ); 480 total_length = f.writeBlock( cstr.data(), cstr.length() );
481 if ( total_length != int(cstr.length()) ) { 481 if ( total_length != int(cstr.length()) ) {
482 QMessageBox::critical( 0, QObject::tr("Out of Space"), 482 QMessageBox::critical( 0, QObject::tr("Out of Space"),
483 QObject::tr("There was a problem creating\nConfiguration Information \nfor this program.\n\nPlease free up some space and\ntry again.") ); 483 QObject::tr("There was a problem creating\nConfiguration Information \nfor this program.\n\nPlease free up some space and\ntry again.") );
484 f.close(); 484 f.close();
485 QFile::remove( strNewFile ); 485 QFile::remove( strNewFile );
486 return; 486 return;
487 } 487 }
488 488
489 f.close(); 489 f.close();
490 // now rename the file... 490 // now rename the file...
491 if ( rename( strNewFile, filename ) < 0 ) { 491 if ( rename( strNewFile, filename ) < 0 ) {
492 qWarning( "problem renaming the file %s to %s", strNewFile.latin1(), 492 qWarning( "problem renaming the file %s to %s", strNewFile.latin1(),
493 filename.latin1() ); 493 filename.latin1() );
494 QFile::remove( strNewFile ); 494 QFile::remove( strNewFile );
495 } 495 }
496} 496}
497 497
498/*! 498/*!
499 Returns whether the Config is in a valid state. 499 Returns whether the Config is in a valid state.
500*/ 500*/
501bool Config::isValid() const 501bool Config::isValid() const
502{ 502{
503 return groups.end() != git; 503 return groups.end() != git;
504} 504}
505 505
506/*! 506/*!
507 \internal 507 \internal
508*/ 508*/
509void Config::read() 509void Config::read()
510{ 510{
511 changed = FALSE; 511 changed = FALSE;
512 512
513 if ( !QFileInfo( filename ).exists() ) { 513 if ( !QFileInfo( filename ).exists() ) {
514 git = groups.end(); 514 git = groups.end();
515 return; 515 return;
516 } 516 }
517 517
518 QFile f( filename ); 518 QFile f( filename );
519 if ( !f.open( IO_ReadOnly ) ) { 519 if ( !f.open( IO_ReadOnly ) ) {
520 git = groups.end(); 520 git = groups.end();
521 return; 521 return;
522 } 522 }
523 523
524
525 // hack to avoid problems if big files are passed to test
526 // if they are valid configs ( like passing a mp3 ... )
527 // I just hope that there are no conf files > 100000 byte
528 // not the best solution, find something else later
529 if ( f.size() > 100000 ) {
530 return;
531 }
532
533
524 QTextStream s( &f ); 534 QTextStream s( &f );
525#if QT_VERSION <= 230 && defined(QT_NO_CODECS) 535#if QT_VERSION <= 230 && defined(QT_NO_CODECS)
526 // The below should work, but doesn't in Qt 2.3.0 536 // The below should work, but doesn't in Qt 2.3.0
527 s.setCodec( QTextCodec::codecForMib( 106 ) ); 537 s.setCodec( QTextCodec::codecForMib( 106 ) );
528#else 538#else
529 s.setEncoding( QTextStream::UnicodeUTF8 ); 539 s.setEncoding( QTextStream::UnicodeUTF8 );
530#endif 540#endif
531 541
532 QStringList list = QStringList::split('\n', s.read() ); 542 QStringList list = QStringList::split('\n', s.read() );
533 f.close(); 543 f.close();
534 544
535 for ( QStringList::Iterator it = list.begin(); it != list.end(); ++it ) { 545 for ( QStringList::Iterator it = list.begin(); it != list.end(); ++it ) {
536 if ( !parse( *it ) ) { 546 if ( !parse( *it ) ) {
537 git = groups.end(); 547 git = groups.end();
538 return; 548 return;
539 } 549 }
540 } 550 }
541} 551}
542 552
543/*! 553/*!
544 \internal 554 \internal
545*/ 555*/
546bool Config::parse( const QString &l ) 556bool Config::parse( const QString &l )
547{ 557{
548 QString line = l.stripWhiteSpace(); 558 QString line = l.stripWhiteSpace();
549 559
550 if ( line [0] == QChar ( '#' )) 560 if ( line [0] == QChar ( '#' ))
551 return true; // ignore comments 561 return true; // ignore comments
552 562
553 if ( line[ 0 ] == QChar( '[' ) ) { 563 if ( line[ 0 ] == QChar( '[' ) ) {
554 QString gname = line; 564 QString gname = line;
555 gname = gname.remove( 0, 1 ); 565 gname = gname.remove( 0, 1 );
556 if ( gname[ (int)gname.length() - 1 ] == QChar( ']' ) ) 566 if ( gname[ (int)gname.length() - 1 ] == QChar( ']' ) )
557 gname = gname.remove( gname.length() - 1, 1 ); 567 gname = gname.remove( gname.length() - 1, 1 );
558 git = groups.insert( gname, ConfigGroup() ); 568 git = groups.insert( gname, ConfigGroup() );
559 } else if ( !line.isEmpty() ) { 569 } else if ( !line.isEmpty() ) {
560 if ( git == groups.end() ) 570 if ( git == groups.end() )
561 return FALSE; 571 return FALSE;
562 int eq = line.find( '=' ); 572 int eq = line.find( '=' );
563 if ( eq == -1 ) 573 if ( eq == -1 )
564 return FALSE; 574 return FALSE;
565 QString key = line.left(eq).stripWhiteSpace(); 575 QString key = line.left(eq).stripWhiteSpace();
566 QString value = line.mid(eq+1).stripWhiteSpace(); 576 QString value = line.mid(eq+1).stripWhiteSpace();
567 ( *git ).insert( key, value ); 577 ( *git ).insert( key, value );
568 } 578 }
569 return TRUE; 579 return TRUE;
570} 580}
diff --git a/library/datebookdb.cpp b/library/datebookdb.cpp
index 2f33255..000ff71 100644
--- a/library/datebookdb.cpp
+++ b/library/datebookdb.cpp
@@ -1,1136 +1,1136 @@
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 <qasciidict.h> 21#include <qasciidict.h>
22#include <qfile.h> 22#include <qfile.h>
23#include <qmessagebox.h> 23#include <qmessagebox.h>
24#include <qstring.h> 24#include <qstring.h>
25#include <qtextcodec.h> 25#include <qtextcodec.h>
26#include <qtextstream.h> 26#include <qtextstream.h>
27#include <qtl.h> 27#include <qtl.h>
28 28
29#include <qpe/alarmserver.h> 29#include <qpe/alarmserver.h>
30#include <qpe/global.h> 30#include <qpe/global.h>
31#include "datebookdb.h" 31#include "datebookdb.h"
32#include <qpe/stringutil.h> 32#include <qpe/stringutil.h>
33#include <qpe/timeconversion.h> 33#include <qpe/timeconversion.h>
34 34
35#include <errno.h> 35#include <errno.h>
36#include <stdlib.h> 36#include <stdlib.h>
37 37
38 38
39class DateBookDBPrivate 39class DateBookDBPrivate
40{ 40{
41public: 41public:
42 bool clean; // indcate whether we need to write to disk... 42 bool clean; // indcate whether we need to write to disk...
43}; 43};
44 44
45 45
46// Helper functions 46// Helper functions
47 47
48static QString dateBookJournalFile() 48static QString dateBookJournalFile()
49{ 49{
50 QString str = getenv("HOME"); 50 QString str = getenv("HOME");
51 return QString( str +"/.caljournal" ); 51 return QString( str +"/.caljournal" );
52} 52}
53 53
54static QString dateBookFilename() 54static QString dateBookFilename()
55{ 55{
56 return Global::applicationFileName("datebook","datebook.xml"); 56 return Global::applicationFileName("datebook","datebook.xml");
57} 57}
58 58
59/* Calculating the next event of a recuring event is actually 59/* Calculating the next event of a recuring event is actually
60 computationally inexpensive, esp. compared to checking each day 60 computationally inexpensive, esp. compared to checking each day
61 individually. There are bad worse cases for say the 29th of 61 individually. There are bad worse cases for say the 29th of
62 february or the 31st of some other months. However 62 february or the 31st of some other months. However
63 these are still bounded */ 63 these are still bounded */
64bool nextOccurance(const Event &e, const QDate &from, QDateTime &next) 64bool nextOccurance(const Event &e, const QDate &from, QDateTime &next)
65{ 65{
66 // easy checks, first are we too far in the future or too far in the past? 66 // easy checks, first are we too far in the future or too far in the past?
67 QDate tmpDate; 67 QDate tmpDate;
68 int freq = e.repeatPattern().frequency; 68 int freq = e.repeatPattern().frequency;
69 int diff, diff2, a; 69 int diff, diff2, a;
70 int iday, imonth, iyear; 70 int iday, imonth, iyear;
71 int dayOfWeek = 0; 71 int dayOfWeek = 0;
72 int firstOfWeek = 0; 72 int firstOfWeek = 0;
73 int weekOfMonth; 73 int weekOfMonth;
74 74
75 75
76 if (e.repeatPattern().hasEndDate && e.repeatPattern().endDate() < from) 76 if (e.repeatPattern().hasEndDate && e.repeatPattern().endDate() < from)
77 return FALSE; 77 return FALSE;
78 78
79 if (e.start() >= from) { 79 if (e.start() >= from) {
80 next = e.start(); 80 next = e.start();
81 return TRUE; 81 return TRUE;
82 } 82 }
83 83
84 switch ( e.repeatPattern().type ) { 84 switch ( e.repeatPattern().type ) {
85 case Event::Weekly: 85 case Event::Weekly:
86 /* weekly is just daily by 7 */ 86 /* weekly is just daily by 7 */
87 /* first convert the repeatPattern.Days() mask to the next 87 /* first convert the repeatPattern.Days() mask to the next
88 day of week valid after from */ 88 day of week valid after from */
89 dayOfWeek = from.dayOfWeek(); 89 dayOfWeek = from.dayOfWeek();
90 dayOfWeek--; /* we want 0-6, doco for above specs 1-7 */ 90 dayOfWeek--; /* we want 0-6, doco for above specs 1-7 */
91 91
92 /* this is done in case freq > 1 and from in week not 92 /* this is done in case freq > 1 and from in week not
93 for this round */ 93 for this round */
94 // firstOfWeek = 0; this is already done at decl. 94 // firstOfWeek = 0; this is already done at decl.
95 while(!((1 << firstOfWeek) & e.repeatPattern().days)) 95 while(!((1 << firstOfWeek) & e.repeatPattern().days))
96 firstOfWeek++; 96 firstOfWeek++;
97 97
98 /* there is at least one 'day', or there would be no event */ 98 /* there is at least one 'day', or there would be no event */
99 while(!((1 << (dayOfWeek % 7)) & e.repeatPattern().days)) 99 while(!((1 << (dayOfWeek % 7)) & e.repeatPattern().days))
100 dayOfWeek++; 100 dayOfWeek++;
101 101
102 dayOfWeek = dayOfWeek % 7; /* the actual day of week */ 102 dayOfWeek = dayOfWeek % 7; /* the actual day of week */
103 dayOfWeek -= e.start().date().dayOfWeek() -1; 103 dayOfWeek -= e.start().date().dayOfWeek() -1;
104 104
105 firstOfWeek = firstOfWeek % 7; /* the actual first of week */ 105 firstOfWeek = firstOfWeek % 7; /* the actual first of week */
106 firstOfWeek -= e.start().date().dayOfWeek() -1; 106 firstOfWeek -= e.start().date().dayOfWeek() -1;
107 107
108 // dayOfWeek may be negitive now 108 // dayOfWeek may be negitive now
109 // day of week is number of days to add to start day 109 // day of week is number of days to add to start day
110 110
111 freq *= 7; 111 freq *= 7;
112 // FALL-THROUGH !!!!! 112 // FALL-THROUGH !!!!!
113 case Event::Daily: 113 case Event::Daily:
114 // the add is for the possible fall through from weekly */ 114 // the add is for the possible fall through from weekly */
115 if(e.start().date().addDays(dayOfWeek) > from) { 115 if(e.start().date().addDays(dayOfWeek) > from) {
116 /* first week exception */ 116 /* first week exception */
117 next = QDateTime(e.start().date().addDays(dayOfWeek), 117 next = QDateTime(e.start().date().addDays(dayOfWeek),
118 e.start().time()); 118 e.start().time());
119 if ((next.date() > e.repeatPattern().endDate()) 119 if ((next.date() > e.repeatPattern().endDate())
120 && e.repeatPattern().hasEndDate) 120 && e.repeatPattern().hasEndDate)
121 return FALSE; 121 return FALSE;
122 return TRUE; 122 return TRUE;
123 } 123 }
124 /* if from is middle of a non-week */ 124 /* if from is middle of a non-week */
125 125
126 diff = e.start().date().addDays(dayOfWeek).daysTo(from) % freq; 126 diff = e.start().date().addDays(dayOfWeek).daysTo(from) % freq;
127 diff2 = e.start().date().addDays(firstOfWeek).daysTo(from) % freq; 127 diff2 = e.start().date().addDays(firstOfWeek).daysTo(from) % freq;
128 128
129 if(diff != 0) 129 if(diff != 0)
130 diff = freq - diff; 130 diff = freq - diff;
131 if(diff2 != 0) 131 if(diff2 != 0)
132 diff2 = freq - diff2; 132 diff2 = freq - diff2;
133 diff = QMIN(diff, diff2); 133 diff = QMIN(diff, diff2);
134 134
135 next = QDateTime(from.addDays(diff), e.start().time()); 135 next = QDateTime(from.addDays(diff), e.start().time());
136 if ( (next.date() > e.repeatPattern().endDate()) 136 if ( (next.date() > e.repeatPattern().endDate())
137 && e.repeatPattern().hasEndDate ) 137 && e.repeatPattern().hasEndDate )
138 return FALSE; 138 return FALSE;
139 return TRUE; 139 return TRUE;
140 case Event::MonthlyDay: 140 case Event::MonthlyDay:
141 iday = from.day(); 141 iday = from.day();
142 iyear = from.year(); 142 iyear = from.year();
143 imonth = from.month(); 143 imonth = from.month();
144 /* find equivelent day of month for this month */ 144 /* find equivelent day of month for this month */
145 dayOfWeek = e.start().date().dayOfWeek(); 145 dayOfWeek = e.start().date().dayOfWeek();
146 weekOfMonth = (e.start().date().day() - 1) / 7; 146 weekOfMonth = (e.start().date().day() - 1) / 7;
147 147
148 /* work out when the next valid month is */ 148 /* work out when the next valid month is */
149 a = from.year() - e.start().date().year(); 149 a = from.year() - e.start().date().year();
150 a *= 12; 150 a *= 12;
151 a = a + (imonth - e.start().date().month()); 151 a = a + (imonth - e.start().date().month());
152 /* a is e.start()monthsFrom(from); */ 152 /* a is e.start()monthsFrom(from); */
153 if(a % freq) { 153 if(a % freq) {
154 a = freq - (a % freq); 154 a = freq - (a % freq);
155 imonth = from.month() + a; 155 imonth = from.month() + a;
156 if (imonth > 12) { 156 if (imonth > 12) {
157 imonth--; 157 imonth--;
158 iyear += imonth / 12; 158 iyear += imonth / 12;
159 imonth = imonth % 12; 159 imonth = imonth % 12;
160 imonth++; 160 imonth++;
161 } 161 }
162 } 162 }
163 /* imonth is now the first month after or on 163 /* imonth is now the first month after or on
164 from that matches the frequency given */ 164 from that matches the frequency given */
165 165
166 /* find for this month */ 166 /* find for this month */
167 tmpDate = QDate( iyear, imonth, 1 ); 167 tmpDate = QDate( iyear, imonth, 1 );
168 168
169 iday = 1; 169 iday = 1;
170 iday += (7 + dayOfWeek - tmpDate.dayOfWeek()) % 7; 170 iday += (7 + dayOfWeek - tmpDate.dayOfWeek()) % 7;
171 iday += 7 * weekOfMonth; 171 iday += 7 * weekOfMonth;
172 while (iday > tmpDate.daysInMonth()) { 172 while (iday > tmpDate.daysInMonth()) {
173 imonth += freq; 173 imonth += freq;
174 if (imonth > 12) { 174 if (imonth > 12) {
175 imonth--; 175 imonth--;
176 iyear += imonth / 12; 176 iyear += imonth / 12;
177 imonth = imonth % 12; 177 imonth = imonth % 12;
178 imonth++; 178 imonth++;
179 } 179 }
180 tmpDate = QDate( iyear, imonth, 1 ); 180 tmpDate = QDate( iyear, imonth, 1 );
181 /* these loops could go for a while, check end case now */ 181 /* these loops could go for a while, check end case now */
182 if ((tmpDate > e.repeatPattern().endDate()) && e.repeatPattern().hasEndDate) 182 if ((tmpDate > e.repeatPattern().endDate()) && e.repeatPattern().hasEndDate)
183 return FALSE; 183 return FALSE;
184 iday = 1; 184 iday = 1;
185 iday += (7 + dayOfWeek - tmpDate.dayOfWeek()) % 7; 185 iday += (7 + dayOfWeek - tmpDate.dayOfWeek()) % 7;
186 iday += 7 * weekOfMonth; 186 iday += 7 * weekOfMonth;
187 } 187 }
188 tmpDate = QDate(iyear, imonth, iday); 188 tmpDate = QDate(iyear, imonth, iday);
189 189
190 if (tmpDate >= from) { 190 if (tmpDate >= from) {
191 next = QDateTime(tmpDate, e.start().time()); 191 next = QDateTime(tmpDate, e.start().time());
192 if ((next.date() > e.repeatPattern().endDate()) && e.repeatPattern().hasEndDate) 192 if ((next.date() > e.repeatPattern().endDate()) && e.repeatPattern().hasEndDate)
193 return FALSE; 193 return FALSE;
194 return TRUE; 194 return TRUE;
195 } 195 }
196 196
197 /* need to find the next iteration */ 197 /* need to find the next iteration */
198 do { 198 do {
199 imonth += freq; 199 imonth += freq;
200 if (imonth > 12) { 200 if (imonth > 12) {
201 imonth--; 201 imonth--;
202 iyear += imonth / 12; 202 iyear += imonth / 12;
203 imonth = imonth % 12; 203 imonth = imonth % 12;
204 imonth++; 204 imonth++;
205 } 205 }
206 tmpDate = QDate( iyear, imonth, 1 ); 206 tmpDate = QDate( iyear, imonth, 1 );
207 /* these loops could go for a while, check end case now */ 207 /* these loops could go for a while, check end case now */
208 if ((tmpDate > e.repeatPattern().endDate()) && e.repeatPattern().hasEndDate) 208 if ((tmpDate > e.repeatPattern().endDate()) && e.repeatPattern().hasEndDate)
209 return FALSE; 209 return FALSE;
210 iday = 1; 210 iday = 1;
211 iday += (7 + dayOfWeek - tmpDate.dayOfWeek()) % 7; 211 iday += (7 + dayOfWeek - tmpDate.dayOfWeek()) % 7;
212 iday += 7 * weekOfMonth; 212 iday += 7 * weekOfMonth;
213 } while (iday > tmpDate.daysInMonth()); 213 } while (iday > tmpDate.daysInMonth());
214 tmpDate = QDate(iyear, imonth, iday); 214 tmpDate = QDate(iyear, imonth, iday);
215 215
216 next = QDateTime(tmpDate, e.start().time()); 216 next = QDateTime(tmpDate, e.start().time());
217 if ((next.date() > e.repeatPattern().endDate()) && e.repeatPattern().hasEndDate) 217 if ((next.date() > e.repeatPattern().endDate()) && e.repeatPattern().hasEndDate)
218 return FALSE; 218 return FALSE;
219 return TRUE; 219 return TRUE;
220 case Event::MonthlyDate: 220 case Event::MonthlyDate:
221 iday = e.start().date().day(); 221 iday = e.start().date().day();
222 iyear = from.year(); 222 iyear = from.year();
223 imonth = from.month(); 223 imonth = from.month();
224 224
225 a = from.year() - e.start().date().year(); 225 a = from.year() - e.start().date().year();
226 a *= 12; 226 a *= 12;
227 a = a + (imonth - e.start().date().month()); 227 a = a + (imonth - e.start().date().month());
228 /* a is e.start()monthsFrom(from); */ 228 /* a is e.start()monthsFrom(from); */
229 if(a % freq) { 229 if(a % freq) {
230 a = freq - (a % freq); 230 a = freq - (a % freq);
231 imonth = from.month() + a; 231 imonth = from.month() + a;
232 if (imonth > 12) { 232 if (imonth > 12) {
233 imonth--; 233 imonth--;
234 iyear += imonth / 12; 234 iyear += imonth / 12;
235 imonth = imonth % 12; 235 imonth = imonth % 12;
236 imonth++; 236 imonth++;
237 } 237 }
238 } 238 }
239 /* imonth is now the first month after or on 239 /* imonth is now the first month after or on
240 from that matches the frequencey given */ 240 from that matches the frequencey given */
241 241
242 /* this could go for a while, worse case, 4*12 iterations, probably */ 242 /* this could go for a while, worse case, 4*12 iterations, probably */
243 while(!QDate::isValid(iyear, imonth, iday) ) { 243 while(!QDate::isValid(iyear, imonth, iday) ) {
244 imonth += freq; 244 imonth += freq;
245 if (imonth > 12) { 245 if (imonth > 12) {
246 imonth--; 246 imonth--;
247 iyear += imonth / 12; 247 iyear += imonth / 12;
248 imonth = imonth % 12; 248 imonth = imonth % 12;
249 imonth++; 249 imonth++;
250 } 250 }
251 /* these loops could go for a while, check end case now */ 251 /* these loops could go for a while, check end case now */
252 if ((QDate(iyear, imonth, 1) > e.repeatPattern().endDate()) && e.repeatPattern().hasEndDate) 252 if ((QDate(iyear, imonth, 1) > e.repeatPattern().endDate()) && e.repeatPattern().hasEndDate)
253 return FALSE; 253 return FALSE;
254 } 254 }
255 255
256 if(QDate(iyear, imonth, iday) >= from) { 256 if(QDate(iyear, imonth, iday) >= from) {
257 /* done */ 257 /* done */
258 next = QDateTime(QDate(iyear, imonth, iday), 258 next = QDateTime(QDate(iyear, imonth, iday),
259 e.start().time()); 259 e.start().time());
260 if ((next.date() > e.repeatPattern().endDate()) && e.repeatPattern().hasEndDate) 260 if ((next.date() > e.repeatPattern().endDate()) && e.repeatPattern().hasEndDate)
261 return FALSE; 261 return FALSE;
262 return TRUE; 262 return TRUE;
263 } 263 }
264 264
265 /* ok, need to cycle */ 265 /* ok, need to cycle */
266 imonth += freq; 266 imonth += freq;
267 imonth--; 267 imonth--;
268 iyear += imonth / 12; 268 iyear += imonth / 12;
269 imonth = imonth % 12; 269 imonth = imonth % 12;
270 imonth++; 270 imonth++;
271 271
272 while(!QDate::isValid(iyear, imonth, iday) ) { 272 while(!QDate::isValid(iyear, imonth, iday) ) {
273 imonth += freq; 273 imonth += freq;
274 imonth--; 274 imonth--;
275 iyear += imonth / 12; 275 iyear += imonth / 12;
276 imonth = imonth % 12; 276 imonth = imonth % 12;
277 imonth++; 277 imonth++;
278 if ((QDate(iyear, imonth, 1) > e.repeatPattern().endDate()) && e.repeatPattern().hasEndDate) 278 if ((QDate(iyear, imonth, 1) > e.repeatPattern().endDate()) && e.repeatPattern().hasEndDate)
279 return FALSE; 279 return FALSE;
280 } 280 }
281 281
282 next = QDateTime(QDate(iyear, imonth, iday), e.start().time()); 282 next = QDateTime(QDate(iyear, imonth, iday), e.start().time());
283 if ((next.date() > e.repeatPattern().endDate()) && e.repeatPattern().hasEndDate) 283 if ((next.date() > e.repeatPattern().endDate()) && e.repeatPattern().hasEndDate)
284 return FALSE; 284 return FALSE;
285 return TRUE; 285 return TRUE;
286 case Event::Yearly: 286 case Event::Yearly:
287 iday = e.start().date().day(); 287 iday = e.start().date().day();
288 imonth = e.start().date().month(); 288 imonth = e.start().date().month();
289 iyear = from.year(); // after all, we want to start in this year 289 iyear = from.year(); // after all, we want to start in this year
290 290
291 diff = 1; 291 diff = 1;
292 if(imonth == 2 && iday > 28) { 292 if(imonth == 2 && iday > 28) {
293 /* leap year, and it counts, calculate actual frequency */ 293 /* leap year, and it counts, calculate actual frequency */
294 if(freq % 4) 294 if(freq % 4)
295 if (freq % 2) 295 if (freq % 2)
296 freq = freq * 4; 296 freq = freq * 4;
297 else 297 else
298 freq = freq * 2; 298 freq = freq * 2;
299 /* else divides by 4 already, leave freq alone */ 299 /* else divides by 4 already, leave freq alone */
300 diff = 4; 300 diff = 4;
301 } 301 }
302 302
303 a = from.year() - e.start().date().year(); 303 a = from.year() - e.start().date().year();
304 if(a % freq) { 304 if(a % freq) {
305 a = freq - (a % freq); 305 a = freq - (a % freq);
306 iyear = iyear + a; 306 iyear = iyear + a;
307 } 307 }
308 308
309 /* under the assumption we won't hit one of the special not-leap years twice */ 309 /* under the assumption we won't hit one of the special not-leap years twice */
310 if(!QDate::isValid(iyear, imonth, iday)) { 310 if(!QDate::isValid(iyear, imonth, iday)) {
311 /* must have been skipping by leap years and hit one that wasn't, (e.g. 2100) */ 311 /* must have been skipping by leap years and hit one that wasn't, (e.g. 2100) */
312 iyear += freq; 312 iyear += freq;
313 } 313 }
314 314
315 if(QDate(iyear, imonth, iday) >= from) { 315 if(QDate(iyear, imonth, iday) >= from) {
316 next = QDateTime(QDate(iyear, imonth, iday), 316 next = QDateTime(QDate(iyear, imonth, iday),
317 e.start().time()); 317 e.start().time());
318 if ((next.date() > e.repeatPattern().endDate()) && e.repeatPattern().hasEndDate) 318 if ((next.date() > e.repeatPattern().endDate()) && e.repeatPattern().hasEndDate)
319 return FALSE; 319 return FALSE;
320 return TRUE; 320 return TRUE;
321 } 321 }
322 /* iyear == from.year(), need to advance again */ 322 /* iyear == from.year(), need to advance again */
323 iyear += freq; 323 iyear += freq;
324 /* under the assumption we won't hit one of the special not-leap years twice */ 324 /* under the assumption we won't hit one of the special not-leap years twice */
325 if(!QDate::isValid(iyear, imonth, iday)) { 325 if(!QDate::isValid(iyear, imonth, iday)) {
326 /* must have been skipping by leap years and hit one that wasn't, (e.g. 2100) */ 326 /* must have been skipping by leap years and hit one that wasn't, (e.g. 2100) */
327 iyear += freq; 327 iyear += freq;
328 } 328 }
329 329
330 next = QDateTime(QDate(iyear, imonth, iday), e.start().time()); 330 next = QDateTime(QDate(iyear, imonth, iday), e.start().time());
331 if ((next.date() > e.repeatPattern().endDate()) && e.repeatPattern().hasEndDate) 331 if ((next.date() > e.repeatPattern().endDate()) && e.repeatPattern().hasEndDate)
332 return FALSE; 332 return FALSE;
333 return TRUE; 333 return TRUE;
334 default: 334 default:
335 return FALSE; 335 return FALSE;
336 } 336 }
337} 337}
338 338
339static bool nextAlarm( const Event &ev, QDateTime& when, int& warn) 339static bool nextAlarm( const Event &ev, QDateTime& when, int& warn)
340{ 340{
341 QDateTime now = QDateTime::currentDateTime(); 341 QDateTime now = QDateTime::currentDateTime();
342 if ( ev.hasRepeat() ) { 342 if ( ev.hasRepeat() ) {
343 QDateTime ralarm; 343 QDateTime ralarm;
344 if (nextOccurance(ev, now.date(), ralarm)) { 344 if (nextOccurance(ev, now.date(), ralarm)) {
345 ralarm = ralarm.addSecs(-ev.alarmTime()*60); 345 ralarm = ralarm.addSecs(-ev.alarmTime()*60);
346 if ( ralarm > now ) { 346 if ( ralarm > now ) {
347 when = ralarm; 347 when = ralarm;
348 warn = ev.alarmTime(); 348 warn = ev.alarmTime();
349 } else if ( nextOccurance(ev, now.date().addDays(1), ralarm) ) { 349 } else if ( nextOccurance(ev, now.date().addDays(1), ralarm) ) {
350 ralarm = ralarm.addSecs( -ev.alarmTime()*60 ); 350 ralarm = ralarm.addSecs( -ev.alarmTime()*60 );
351 if ( ralarm > now ) { 351 if ( ralarm > now ) {
352 when = ralarm; 352 when = ralarm;
353 warn = ev.alarmTime(); 353 warn = ev.alarmTime();
354 } 354 }
355 } 355 }
356 } 356 }
357 } else { 357 } else {
358 warn = ev.alarmTime(); 358 warn = ev.alarmTime();
359 when = ev.start().addSecs( -ev.alarmTime()*60 ); 359 when = ev.start().addSecs( -ev.alarmTime()*60 );
360 } 360 }
361 return when > now; 361 return when > now;
362} 362}
363 363
364static void addEventAlarm( const Event &ev ) 364static void addEventAlarm( const Event &ev )
365{ 365{
366 QDateTime when; 366 QDateTime when;
367 int warn; 367 int warn;
368 if ( nextAlarm(ev,when,warn) ) 368 if ( nextAlarm(ev,when,warn) )
369 AlarmServer::addAlarm( when, 369 AlarmServer::addAlarm( when,
370 "QPE/Application/datebook", 370 "QPE/Application/datebook",
371 "alarm(QDateTime,int)", warn ); 371 "alarm(QDateTime,int)", warn );
372} 372}
373 373
374static void delEventAlarm( const Event &ev ) 374static void delEventAlarm( const Event &ev )
375{ 375{
376 QDateTime when; 376 QDateTime when;
377 int warn; 377 int warn;
378 if ( nextAlarm(ev,when,warn) ) 378 if ( nextAlarm(ev,when,warn) )
379 AlarmServer::deleteAlarm( when, 379 AlarmServer::deleteAlarm( when,
380 "QPE/Application/datebook", 380 "QPE/Application/datebook",
381 "alarm(QDateTime,int)", warn ); 381 "alarm(QDateTime,int)", warn );
382} 382}
383 383
384 384
385DateBookDB::DateBookDB() 385DateBookDB::DateBookDB()
386{ 386{
387 init(); 387 init();
388} 388}
389 389
390DateBookDB::~DateBookDB() 390DateBookDB::~DateBookDB()
391{ 391{
392 save(); 392 save();
393 eventList.clear(); 393 eventList.clear();
394 repeatEvents.clear(); 394 repeatEvents.clear();
395} 395}
396 396
397 397
398//#### Why is this code duplicated in getEffectiveEvents ????? 398//#### Why is this code duplicated in getEffectiveEvents ?????
399//#### Addendum. Don't use this function, lets faze it out if we can. 399//#### Addendum. Don't use this function, lets faze it out if we can.
400QValueList<Event> DateBookDB::getEvents( const QDate &from, const QDate &to ) 400QValueList<Event> DateBookDB::getEvents( const QDate &from, const QDate &to )
401{ 401{
402 QValueList<Event> tmpList; 402 QValueList<Event> tmpList;
403 tmpList = getNonRepeatingEvents( from, to ); 403 tmpList = getNonRepeatingEvents( from, to );
404 404
405 // check for repeating events... 405 // check for repeating events...
406 for (QValueList<Event>::ConstIterator it = repeatEvents.begin(); 406 for (QValueList<Event>::ConstIterator it = repeatEvents.begin();
407 it != repeatEvents.end(); ++it) { 407 it != repeatEvents.end(); ++it) {
408 QDate itDate = from; 408 QDate itDate = from;
409 QDateTime due; 409 QDateTime due;
410 410
411 /* create a false end date, to short circuit on hard 411 /* create a false end date, to short circuit on hard
412 MonthlyDay recurences */ 412 MonthlyDay recurences */
413 Event dummy_event = *it; 413 Event dummy_event = *it;
414 Event::RepeatPattern r = dummy_event.repeatPattern(); 414 Event::RepeatPattern r = dummy_event.repeatPattern();
415 if ( !r.hasEndDate || r.endDate() > to ) { 415 if ( !r.hasEndDate || r.endDate() > to ) {
416 r.setEndDate( to ); 416 r.setEndDate( to );
417 r.hasEndDate = TRUE; 417 r.hasEndDate = TRUE;
418 } 418 }
419 dummy_event.setRepeat(TRUE, r); 419 dummy_event.setRepeat(TRUE, r);
420 420
421 while (nextOccurance(dummy_event, itDate, due)) { 421 while (nextOccurance(dummy_event, itDate, due)) {
422 if (due.date() > to) 422 if (due.date() > to)
423 break; 423 break;
424 Event newEvent = *it; 424 Event newEvent = *it;
425 newEvent.setStart(due); 425 newEvent.setStart(due);
426 newEvent.setEnd(due.addSecs((*it).start().secsTo((*it).end()))); 426 newEvent.setEnd(due.addSecs((*it).start().secsTo((*it).end())));
427 427
428 tmpList.append(newEvent); 428 tmpList.append(newEvent);
429 itDate = due.date().addDays(1); /* the next event */ 429 itDate = due.date().addDays(1); /* the next event */
430 } 430 }
431 } 431 }
432 qHeapSort(tmpList); 432 qHeapSort(tmpList);
433 return tmpList; 433 return tmpList;
434} 434}
435 435
436QValueList<Event> DateBookDB::getEvents( const QDateTime &start ) 436QValueList<Event> DateBookDB::getEvents( const QDateTime &start )
437{ 437{
438 QValueList<Event> day = getEvents(start.date(),start.date()); 438 QValueList<Event> day = getEvents(start.date(),start.date());
439 439
440 QValueListConstIterator<Event> it; 440 QValueListConstIterator<Event> it;
441 QDateTime dtTmp; 441 QDateTime dtTmp;
442 QValueList<Event> tmpList; 442 QValueList<Event> tmpList;
443 for (it = day.begin(); it != day.end(); ++it ) { 443 for (it = day.begin(); it != day.end(); ++it ) {
444 dtTmp = (*it).start(TRUE); 444 dtTmp = (*it).start(TRUE);
445 if ( dtTmp == start ) 445 if ( dtTmp == start )
446 tmpList.append( *it ); 446 tmpList.append( *it );
447 } 447 }
448 return tmpList; 448 return tmpList;
449} 449}
450 450
451//#### Why is this code duplicated in getEvents ????? 451//#### Why is this code duplicated in getEvents ?????
452 452
453QValueList<EffectiveEvent> DateBookDB::getEffectiveEvents( const QDate &from, 453QValueList<EffectiveEvent> DateBookDB::getEffectiveEvents( const QDate &from,
454 const QDate &to ) 454 const QDate &to )
455{ 455{
456 QValueList<EffectiveEvent> tmpList; 456 QValueList<EffectiveEvent> tmpList;
457 QValueListIterator<Event> it; 457 QValueListIterator<Event> it;
458 458
459 EffectiveEvent effEv; 459 EffectiveEvent effEv;
460 QDateTime dtTmp, 460 QDateTime dtTmp,
461 dtEnd; 461 dtEnd;
462 462
463 for (it = eventList.begin(); it != eventList.end(); ++it ) { 463 for (it = eventList.begin(); it != eventList.end(); ++it ) {
464 if (!(*it).isValidUid()) 464 if (!(*it).isValidUid())
465 (*it).assignUid(); // FIXME: Hack to restore cleared uids 465 (*it).assignUid(); // FIXME: Hack to restore cleared uids
466 466
467 dtTmp = (*it).start(TRUE); 467 dtTmp = (*it).start(TRUE);
468 dtEnd = (*it).end(TRUE); 468 dtEnd = (*it).end(TRUE);
469 469
470 if ( dtTmp.date() >= from && dtTmp.date() <= to ) { 470 if ( dtTmp.date() >= from && dtTmp.date() <= to ) {
471 Event tmpEv = *it; 471 Event tmpEv = *it;
472 effEv.setEvent(tmpEv); 472 effEv.setEvent(tmpEv);
473 effEv.setDate( dtTmp.date() ); 473 effEv.setDate( dtTmp.date() );
474 effEv.setStart( dtTmp.time() ); 474 effEv.setStart( dtTmp.time() );
475 if ( dtTmp.date() != dtEnd.date() ) 475 if ( dtTmp.date() != dtEnd.date() )
476 effEv.setEnd( QTime(23, 59, 0) ); 476 effEv.setEnd( QTime(23, 59, 0) );
477 else 477 else
478 effEv.setEnd( dtEnd.time() ); 478 effEv.setEnd( dtEnd.time() );
479 tmpList.append( effEv ); 479 tmpList.append( effEv );
480 } 480 }
481 // we must also check for end date information... 481 // we must also check for end date information...
482 if ( dtEnd.date() != dtTmp.date() && dtEnd.date() >= from ) { 482 if ( dtEnd.date() != dtTmp.date() && dtEnd.date() >= from ) {
483 QDateTime dt = dtTmp.addDays( 1 ); 483 QDateTime dt = dtTmp.addDays( 1 );
484 dt.setTime( QTime(0, 0, 0) ); 484 dt.setTime( QTime(0, 0, 0) );
485 QDateTime dtStop; 485 QDateTime dtStop;
486 if ( dtEnd > to ) { 486 if ( dtEnd > to ) {
487 dtStop = to; 487 dtStop = to;
488 } else 488 } else
489 dtStop = dtEnd; 489 dtStop = dtEnd;
490 while ( dt <= dtStop ) { 490 while ( dt <= dtStop ) {
491 Event tmpEv = *it; 491 Event tmpEv = *it;
492 effEv.setEvent( tmpEv ); 492 effEv.setEvent( tmpEv );
493 effEv.setDate( dt.date() ); 493 effEv.setDate( dt.date() );
494 if ( dt >= from ) { 494 if ( dt >= from ) {
495 effEv.setStart( QTime(0, 0, 0) ); 495 effEv.setStart( QTime(0, 0, 0) );
496 if ( dt.date() == dtEnd.date() ) 496 if ( dt.date() == dtEnd.date() )
497 effEv.setEnd( dtEnd.time() ); 497 effEv.setEnd( dtEnd.time() );
498 else 498 else
499 effEv.setEnd( QTime(23, 59, 59) ); 499 effEv.setEnd( QTime(23, 59, 59) );
500 tmpList.append( effEv ); 500 tmpList.append( effEv );
501 } 501 }
502 dt = dt.addDays( 1 ); 502 dt = dt.addDays( 1 );
503 } 503 }
504 } 504 }
505 } 505 }
506 // check for repeating events... 506 // check for repeating events...
507 QDateTime repeat; 507 QDateTime repeat;
508 for ( it = repeatEvents.begin(); it != repeatEvents.end(); ++it ) { 508 for ( it = repeatEvents.begin(); it != repeatEvents.end(); ++it ) {
509 if (!(*it).isValidUid()) 509 if (!(*it).isValidUid())
510 (*it).assignUid(); // FIXME: Hack to restore cleared uids 510 (*it).assignUid(); // FIXME: Hack to restore cleared uids
511 511
512 /* create a false end date, to short circuit on hard 512 /* create a false end date, to short circuit on hard
513 MonthlyDay recurences */ 513 MonthlyDay recurences */
514 Event dummy_event = *it; 514 Event dummy_event = *it;
515 int duration = (*it).start().date().daysTo( (*it).end().date() ); 515 int duration = (*it).start().date().daysTo( (*it).end().date() );
516 QDate itDate = from.addDays(-duration); 516 QDate itDate = from.addDays(-duration);
517 517
518 Event::RepeatPattern r = dummy_event.repeatPattern(); 518 Event::RepeatPattern r = dummy_event.repeatPattern();
519 if ( !r.hasEndDate || r.endDate() > to ) { 519 if ( !r.hasEndDate || r.endDate() > to ) {
520 r.setEndDate( to ); 520 r.setEndDate( to );
521 r.hasEndDate = TRUE; 521 r.hasEndDate = TRUE;
522 } 522 }
523 dummy_event.setRepeat(TRUE, r); 523 dummy_event.setRepeat(TRUE, r);
524 524
525 while (nextOccurance(dummy_event, itDate, repeat)) { 525 while (nextOccurance(dummy_event, itDate, repeat)) {
526 if(repeat.date() > to) 526 if(repeat.date() > to)
527 break; 527 break;
528 effEv.setDate( repeat.date() ); 528 effEv.setDate( repeat.date() );
529 if ((*it).type() == Event::AllDay) { 529 if ((*it).type() == Event::AllDay) {
530 effEv.setStart( QTime(0,0,0) ); 530 effEv.setStart( QTime(0,0,0) );
531 effEv.setEnd( QTime(23,59,59) ); 531 effEv.setEnd( QTime(23,59,59) );
532 } else { 532 } else {
533 /* we only occur by days, not hours/minutes/seconds. Hence 533 /* we only occur by days, not hours/minutes/seconds. Hence
534 the actual end and start times will be the same for 534 the actual end and start times will be the same for
535 every repeated event. For multi day events this is 535 every repeated event. For multi day events this is
536 fixed up later if on wronge day span */ 536 fixed up later if on wronge day span */
537 effEv.setStart( (*it).start().time() ); 537 effEv.setStart( (*it).start().time() );
538 effEv.setEnd( (*it).end().time() ); 538 effEv.setEnd( (*it).end().time() );
539 } 539 }
540 if ( duration != 0 ) { 540 if ( duration != 0 ) {
541 // multi-day repeating events 541 // multi-day repeating events
542 QDate sub_it = QMAX( repeat.date(), from ); 542 QDate sub_it = QMAX( repeat.date(), from );
543 QDate startDate = repeat.date(); 543 QDate startDate = repeat.date();
544 QDate endDate = startDate.addDays( duration ); 544 QDate endDate = startDate.addDays( duration );
545 545
546 while ( sub_it <= endDate && sub_it <= to ) { 546 while ( sub_it <= endDate && sub_it <= to ) {
547 EffectiveEvent tmpEffEv = effEv; 547 EffectiveEvent tmpEffEv = effEv;
548 Event tmpEv = *it; 548 Event tmpEv = *it;
549 tmpEffEv.setEvent( tmpEv ); 549 tmpEffEv.setEvent( tmpEv );
550 550
551 if ( sub_it != startDate ) 551 if ( sub_it != startDate )
552 tmpEffEv.setStart( QTime(0,0,0) ); 552 tmpEffEv.setStart( QTime(0,0,0) );
553 if ( sub_it != endDate ) 553 if ( sub_it != endDate )
554 tmpEffEv.setEnd( QTime(23,59,59) ); 554 tmpEffEv.setEnd( QTime(23,59,59) );
555 tmpEffEv.setDate( sub_it ); 555 tmpEffEv.setDate( sub_it );
556 tmpEffEv.setEffectiveDates( startDate, endDate ); 556 tmpEffEv.setEffectiveDates( startDate, endDate );
557 tmpList.append( tmpEffEv ); 557 tmpList.append( tmpEffEv );
558 sub_it = sub_it.addDays( 1 ); 558 sub_it = sub_it.addDays( 1 );
559 } 559 }
560 itDate = endDate; 560 itDate = endDate;
561 } else { 561 } else {
562 Event tmpEv = *it; 562 Event tmpEv = *it;
563 effEv.setEvent( tmpEv ); 563 effEv.setEvent( tmpEv );
564 tmpList.append( effEv ); 564 tmpList.append( effEv );
565 itDate = repeat.date().addDays( 1 ); 565 itDate = repeat.date().addDays( 1 );
566 } 566 }
567 } 567 }
568 } 568 }
569 569
570 qHeapSort( tmpList ); 570 qHeapSort( tmpList );
571 return tmpList; 571 return tmpList;
572} 572}
573 573
574QValueList<EffectiveEvent> DateBookDB::getEffectiveEvents( const QDateTime &dt) 574QValueList<EffectiveEvent> DateBookDB::getEffectiveEvents( const QDateTime &dt)
575{ 575{
576 QValueList<EffectiveEvent> day = getEffectiveEvents(dt.date(), dt.date()); 576 QValueList<EffectiveEvent> day = getEffectiveEvents(dt.date(), dt.date());
577 QValueListConstIterator<EffectiveEvent> it; 577 QValueListConstIterator<EffectiveEvent> it;
578 QValueList<EffectiveEvent> tmpList; 578 QValueList<EffectiveEvent> tmpList;
579 QDateTime dtTmp; 579 QDateTime dtTmp;
580 580
581 for (it = day.begin(); it != day.end(); ++it ) { 581 for (it = day.begin(); it != day.end(); ++it ) {
582 dtTmp = QDateTime( (*it).date(), (*it).start() ); 582 dtTmp = QDateTime( (*it).date(), (*it).start() );
583 // at the moment we don't have second granularity, be nice about that.. 583 // at the moment we don't have second granularity, be nice about that..
584 if ( QABS(dt.secsTo(dtTmp)) < 60 ) 584 if ( QABS(dt.secsTo(dtTmp)) < 60 )
585 tmpList.append( *it ); 585 tmpList.append( *it );
586 } 586 }
587 return tmpList; 587 return tmpList;
588} 588}
589 589
590void DateBookDB::addEvent( const Event &ev, bool doalarm ) 590void DateBookDB::addEvent( const Event &ev, bool doalarm )
591{ 591{
592 // write to the journal... 592 // write to the journal...
593 saveJournalEntry( ev, ACTION_ADD, -1, false ); 593 saveJournalEntry( ev, ACTION_ADD, -1, false );
594 addJFEvent( ev, doalarm ); 594 addJFEvent( ev, doalarm );
595 d->clean = false; 595 d->clean = false;
596} 596}
597 597
598void DateBookDB::addJFEvent( const Event &ev, bool doalarm ) 598void DateBookDB::addJFEvent( const Event &ev, bool doalarm )
599{ 599{
600 if ( doalarm && ev.hasAlarm() ) 600 if ( doalarm && ev.hasAlarm() )
601 addEventAlarm( ev ); 601 addEventAlarm( ev );
602 if ( ev.hasRepeat() ) 602 if ( ev.hasRepeat() )
603 repeatEvents.append( ev ); 603 repeatEvents.append( ev );
604 else 604 else
605 eventList.append( ev ); 605 eventList.append( ev );
606} 606}
607 607
608void DateBookDB::editEvent( const Event &old, Event &editedEv ) 608void DateBookDB::editEvent( const Event &old, Event &editedEv )
609{ 609{
610 int oldIndex=0; 610 int oldIndex=0;
611 bool oldHadRepeat = old.hasRepeat(); 611 bool oldHadRepeat = old.hasRepeat();
612 Event orig; 612 Event orig;
613 613
614 // write to the journal... 614 // write to the journal...
615 if ( oldHadRepeat ) { 615 if ( oldHadRepeat ) {
616 if ( origRepeat( old, orig ) ) // should work always... 616 if ( origRepeat( old, orig ) ) // should work always...
617 oldIndex = repeatEvents.findIndex( orig ); 617 oldIndex = repeatEvents.findIndex( orig );
618 } else 618 } else
619 oldIndex = eventList.findIndex( old ); 619 oldIndex = eventList.findIndex( old );
620 saveJournalEntry( editedEv, ACTION_REPLACE, oldIndex, oldHadRepeat ); 620 saveJournalEntry( editedEv, ACTION_REPLACE, oldIndex, oldHadRepeat );
621 621
622 // Delete old event 622 // Delete old event
623 if ( old.hasAlarm() ) 623 if ( old.hasAlarm() )
624 delEventAlarm( old ); 624 delEventAlarm( old );
625 if ( oldHadRepeat ) { 625 if ( oldHadRepeat ) {
626 if ( editedEv.hasRepeat() ) { // This mean that origRepeat was run above and 626 if ( editedEv.hasRepeat() ) { // This mean that origRepeat was run above and
627 // orig is initialized 627 // orig is initialized
628 // assumption, when someone edits a repeating event, they 628 // assumption, when someone edits a repeating event, they
629 // want to change them all, maybe not perfect, but it works 629 // want to change them all, maybe not perfect, but it works
630 // for the moment... 630 // for the moment...
631 repeatEvents.remove( orig ); 631 repeatEvents.remove( orig );
632 } else 632 } else
633 removeRepeat( old ); 633 removeRepeat( old );
634 } else { 634 } else {
635 QValueList<Event>::Iterator it = eventList.find( old ); 635 QValueList<Event>::Iterator it = eventList.find( old );
636 if ( it != eventList.end() ) 636 if ( it != eventList.end() )
637 eventList.remove( it ); 637 eventList.remove( it );
638 } 638 }
639 639
640 // Add new event 640 // Add new event
641 if ( editedEv.hasAlarm() ) 641 if ( editedEv.hasAlarm() )
642 addEventAlarm( editedEv ); 642 addEventAlarm( editedEv );
643 if ( editedEv.hasRepeat() ) 643 if ( editedEv.hasRepeat() )
644 repeatEvents.append( editedEv ); 644 repeatEvents.append( editedEv );
645 else 645 else
646 eventList.append( editedEv ); 646 eventList.append( editedEv );
647 647
648 d->clean = false; 648 d->clean = false;
649} 649}
650 650
651void DateBookDB::removeEvent( const Event &ev ) 651void DateBookDB::removeEvent( const Event &ev )
652{ 652{
653 // write to the journal... 653 // write to the journal...
654 saveJournalEntry( ev, ACTION_REMOVE, -1, false ); 654 saveJournalEntry( ev, ACTION_REMOVE, -1, false );
655 removeJFEvent( ev ); 655 removeJFEvent( ev );
656 d->clean = false; 656 d->clean = false;
657} 657}
658 658
659void DateBookDB::removeJFEvent( const Event&ev ) 659void DateBookDB::removeJFEvent( const Event&ev )
660{ 660{
661 if ( ev.hasAlarm() ) 661 if ( ev.hasAlarm() )
662 delEventAlarm( ev ); 662 delEventAlarm( ev );
663 if ( ev.hasRepeat() ) { 663 if ( ev.hasRepeat() ) {
664 removeRepeat( ev ); 664 removeRepeat( ev );
665 } else { 665 } else {
666 QValueList<Event>::Iterator it = eventList.find( ev ); 666 QValueList<Event>::Iterator it = eventList.find( ev );
667 if ( it != eventList.end() ) 667 if ( it != eventList.end() )
668 eventList.remove( it ); 668 eventList.remove( it );
669 } 669 }
670} 670}
671 671
672// also handles journaling... 672// also handles journaling...
673void DateBookDB::loadFile( const QString &strFile ) 673void DateBookDB::loadFile( const QString &strFile )
674{ 674{
675 675
676 QFile f( strFile ); 676 QFile f( strFile );
677 if ( !f.open( IO_ReadOnly ) ) 677 if ( !f.open( IO_ReadOnly ) )
678 return; 678 return;
679 679
680 enum Attribute { 680 enum Attribute {
681 FDescription = 0, 681 FDescription = 0,
682 FLocation, 682 FLocation,
683 FCategories, 683 FCategories,
684 FUid, 684 FUid,
685 FType, 685 FType,
686 FAlarm, 686 FAlarm,
687 FSound, 687 FSound,
688 FRType, 688 FRType,
689 FRWeekdays, 689 FRWeekdays,
690 FRPosition, 690 FRPosition,
691 FRFreq, 691 FRFreq,
692 FRHasEndDate, 692 FRHasEndDate,
693 FREndDate, 693 FREndDate,
694 FRStart, 694 FRStart,
695 FREnd, 695 FREnd,
696 FNote, 696 FNote,
697 FCreated, 697 FCreated,
698 FAction, 698 FAction,
699 FActionKey, 699 FActionKey,
700 FJournalOrigHadRepeat 700 FJournalOrigHadRepeat
701 }; 701 };
702 702
703 QAsciiDict<int> dict( 97 ); 703 QAsciiDict<int> dict( 97 );
704 dict.setAutoDelete( TRUE ); 704 dict.setAutoDelete( TRUE );
705 dict.insert( "description", new int(FDescription) ); 705 dict.insert( "description", new int(FDescription) );
706 dict.insert( "location", new int(FLocation) ); 706 dict.insert( "location", new int(FLocation) );
707 dict.insert( "categories", new int(FCategories) ); 707 dict.insert( "categories", new int(FCategories) );
708 dict.insert( "uid", new int(FUid) ); 708 dict.insert( "uid", new int(FUid) );
709 dict.insert( "type", new int(FType) ); 709 dict.insert( "type", new int(FType) );
710 dict.insert( "alarm", new int(FAlarm) ); 710 dict.insert( "alarm", new int(FAlarm) );
711 dict.insert( "sound", new int(FSound) ); 711 dict.insert( "sound", new int(FSound) );
712 dict.insert( "rtype", new int(FRType) ); 712 dict.insert( "rtype", new int(FRType) );
713 dict.insert( "rweekdays", new int(FRWeekdays) ); 713 dict.insert( "rweekdays", new int(FRWeekdays) );
714 dict.insert( "rposition", new int(FRPosition) ); 714 dict.insert( "rposition", new int(FRPosition) );
715 dict.insert( "rfreq", new int(FRFreq) ); 715 dict.insert( "rfreq", new int(FRFreq) );
716 dict.insert( "rhasenddate", new int(FRHasEndDate) ); 716 dict.insert( "rhasenddate", new int(FRHasEndDate) );
717 dict.insert( "enddt", new int(FREndDate) ); 717 dict.insert( "enddt", new int(FREndDate) );
718 dict.insert( "start", new int(FRStart) ); 718 dict.insert( "start", new int(FRStart) );
719 dict.insert( "end", new int(FREnd) ); 719 dict.insert( "end", new int(FREnd) );
720 dict.insert( "note", new int(FNote) ); 720 dict.insert( "note", new int(FNote) );
721 dict.insert( "created", new int(FCreated) ); 721 dict.insert( "created", new int(FCreated) );
722 dict.insert( "action", new int(FAction) ); 722 dict.insert( "action", new int(FAction) );
723 dict.insert( "actionkey", new int(FActionKey) ); 723 dict.insert( "actionkey", new int(FActionKey) );
724 dict.insert( "actionorig", new int (FJournalOrigHadRepeat) ); 724 dict.insert( "actionorig", new int (FJournalOrigHadRepeat) );
725 725
726 726
727 QByteArray ba = f.readAll(); 727 QByteArray ba = f.readAll();
728 char* dt = ba.data(); 728 char* dt = ba.data();
729 int len = ba.size(); 729 int len = ba.size();
730 int currentAction, 730 int currentAction,
731 journalKey, 731 journalKey,
732 origHadRepeat; // should be bool, but we need tri-state(not being used) 732 origHadRepeat; // should be bool, but we need tri-state(not being used)
733 733
734 int i = 0; 734 int i = 0;
735 char *point; 735 char *point;
736 // hack to get rid of segfaults after reading </DATEBOOK> 736 // hack to get rid of segfaults after reading </DATEBOOK>
737 while ( (dt+i != 0) && (( point = strstr( dt+i, "<event " ) ) != 0 )) { 737 while ( (dt+i != 0) && (( point = strstr( dt+i, "<event " ) ) != 0 )) {
738 i = point - dt; 738 i = point - dt;
739 // if we are reading in events in the general case, 739 // if we are reading in events in the general case,
740 // we are just adding them, so let the actions represent that... 740 // we are just adding them, so let the actions represent that...
741 currentAction = ACTION_ADD; 741 currentAction = ACTION_ADD;
742 journalKey = -1; 742 journalKey = -1;
743 origHadRepeat = -1; 743 origHadRepeat = -1;
744 // some temporary variables for dates and times ... 744 // some temporary variables for dates and times ...
745 //int startY = 0, startM = 0, startD = 0, starth = 0, startm = 0, starts = 0; 745 //int startY = 0, startM = 0, startD = 0, starth = 0, startm = 0, starts = 0;
746 //int endY = 0, endM = 0, endD = 0, endh = 0, endm = 0, ends = 0; 746 //int endY = 0, endM = 0, endD = 0, endh = 0, endm = 0, ends = 0;
747 //int enddtY = 0, enddtM = 0, enddtD = 0; 747 //int enddtY = 0, enddtM = 0, enddtD = 0;
748 748
749 // ... for the alarm settings ... 749 // ... for the alarm settings ...
750 int alarmTime = -1; Event::SoundTypeChoice alarmSound = Event::Silent; 750 int alarmTime = -1; Event::SoundTypeChoice alarmSound = Event::Silent;
751 // ... and for the recurrence 751 // ... and for the recurrence
752 Event::RepeatPattern rp; 752 Event::RepeatPattern rp;
753 Event e; 753 Event e;
754 754
755 i += 7; 755 i += 7;
756 756
757 while( 1 ) { 757 while( 1 ) {
758 while ( i < len && (dt[i] == ' ' || dt[i] == '\n' || dt[i] == '\r') ) 758 while ( i < len && (dt[i] == ' ' || dt[i] == '\n' || dt[i] == '\r') )
759 ++i; 759 ++i;
760 if ( i >= len-2 || (dt[i] == '/' && dt[i+1] == '>') ) 760 if ( i >= len-2 || (dt[i] == '/' && dt[i+1] == '>') )
761 break; 761 break;
762 // we have another attribute, read it. 762 // we have another attribute, read it.
763 int j = i; 763 int j = i;
764 while ( j < len && dt[j] != '=' ) 764 while ( j < len && dt[j] != '=' )
765 ++j; 765 ++j;
766 char *attr = dt+i; 766 char *attr = dt+i;
767 dt[j] = '\0'; 767 dt[j] = '\0';
768 i = ++j; // skip = 768 i = ++j; // skip =
769 while ( i < len && dt[i] != '"' ) 769 while ( i < len && dt[i] != '"' )
770 ++i; 770 ++i;
771 j = ++i; 771 j = ++i;
772 bool haveAmp = FALSE; 772 bool haveAmp = FALSE;
773 bool haveUtf = FALSE; 773 bool haveUtf = FALSE;
774 while ( j < len && dt[j] != '"' ) { 774 while ( j < len && dt[j] != '"' ) {
775 if ( dt[j] == '&' ) 775 if ( dt[j] == '&' )
776 haveAmp = TRUE; 776 haveAmp = TRUE;
777 if ( ((unsigned char)dt[j]) > 0x7f ) 777 if ( ((unsigned char)dt[j]) > 0x7f )
778 haveUtf = TRUE; 778 haveUtf = TRUE;
779 ++j; 779 ++j;
780 } 780 }
781 781
782 if ( i == j ) { 782 if ( i == j ) {
783 // leave out empty attributes 783 // leave out empty attributes
784 i = j + 1; 784 i = j + 1;
785 continue; 785 continue;
786 } 786 }
787 787
788 QString value = haveUtf ? QString::fromUtf8( dt+i, j-i ) 788 QString value = haveUtf ? QString::fromUtf8( dt+i, j-i )
789 : QString::fromLatin1( dt+i, j-i ); 789 : QString::fromLatin1( dt+i, j-i );
790 if ( haveAmp ) 790 if ( haveAmp )
791 value = Qtopia::plainString( value ); 791 value = Qtopia::plainString( value );
792 i = j + 1; 792 i = j + 1;
793 793
794 //qDebug("attr='%s' value='%s'", attr.data(), value.latin1() ); 794 //qDebug("attr='%s' value='%s'", attr.data(), value.latin1() );
795 int * find = dict[ attr ]; 795 int * find = dict[ attr ];
796#if 1 796#if 1
797 if ( !find ) { 797 if ( !find ) {
798 // custom field 798 // custom field
799 e.setCustomField(attr, value); 799 e.setCustomField(attr, value);
800 continue; 800 continue;
801 } 801 }
802 802
803 switch( *find ) { 803 switch( *find ) {
804 case FDescription: 804 case FDescription:
805 e.setDescription( value ); 805 e.setDescription( value );
806 break; 806 break;
807 case FLocation: 807 case FLocation:
808 e.setLocation( value ); 808 e.setLocation( value );
809 break; 809 break;
810 case FCategories: 810 case FCategories:
811 e.setCategories( Qtopia::Record::idsFromString( value ) ); 811 e.setCategories( Qtopia::Record::idsFromString( value ) );
812 break; 812 break;
813 case FUid: 813 case FUid:
814 e.setUid( value.toInt() ); 814 e.setUid( value.toInt() );
815 break; 815 break;
816 case FType: 816 case FType:
817 if ( value == "AllDay" ) 817 if ( value == "AllDay" )
818 e.setType( Event::AllDay ); 818 e.setType( Event::AllDay );
819 else 819 else
820 e.setType( Event::Normal ); 820 e.setType( Event::Normal );
821 break; 821 break;
822 case FAlarm: 822 case FAlarm:
823 alarmTime = value.toInt(); 823 alarmTime = value.toInt();
824 break; 824 break;
825 case FSound: 825 case FSound:
826 alarmSound = value == "loud" ? Event::Loud : Event::Silent; 826 alarmSound = value == "loud" ? Event::Loud : Event::Silent;
827 break; 827 break;
828 // recurrence stuff 828 // recurrence stuff
829 case FRType: 829 case FRType:
830 if ( value == "Daily" ) 830 if ( value == "Daily" )
831 rp.type = Event::Daily; 831 rp.type = Event::Daily;
832 else if ( value == "Weekly" ) 832 else if ( value == "Weekly" )
833 rp.type = Event::Weekly; 833 rp.type = Event::Weekly;
834 else if ( value == "MonthlyDay" ) 834 else if ( value == "MonthlyDay" )
835 rp.type = Event::MonthlyDay; 835 rp.type = Event::MonthlyDay;
836 else if ( value == "MonthlyDate" ) 836 else if ( value == "MonthlyDate" )
837 rp.type = Event::MonthlyDate; 837 rp.type = Event::MonthlyDate;
838 else if ( value == "Yearly" ) 838 else if ( value == "Yearly" )
839 rp.type = Event::Yearly; 839 rp.type = Event::Yearly;
840 else 840 else
841 rp.type = Event::NoRepeat; 841 rp.type = Event::NoRepeat;
842 break; 842 break;
843 case FRWeekdays: 843 case FRWeekdays:
844 // QtopiaDesktop 1.6 sometimes creates 'rweekdays="0"' 844 // QtopiaDesktop 1.6 sometimes creates 'rweekdays="0"'
845 // when it goes mad. This causes datebook to crash.. (se) 845 // when it goes mad. This causes datebook to crash.. (se)
846 if ( value.toInt() != 0 ) 846 if ( value.toInt() != 0 )
847 rp.days = value.toInt(); 847 rp.days = value.toInt();
848 else 848 else
849 rp.days = 1; 849 rp.days = 1;
850 break; 850 break;
851 case FRPosition: 851 case FRPosition:
852 rp.position = value.toInt(); 852 rp.position = value.toInt();
853 break; 853 break;
854 case FRFreq: 854 case FRFreq:
855 rp.frequency = value.toInt(); 855 rp.frequency = value.toInt();
856 break; 856 break;
857 case FRHasEndDate: 857 case FRHasEndDate:
858 rp.hasEndDate = value.toInt(); 858 rp.hasEndDate = value.toInt();
859 break; 859 break;
860 case FREndDate: { 860 case FREndDate: {
861 rp.endDateUTC = (time_t) value.toLong(); 861 rp.endDateUTC = (time_t) value.toLong();
862 break; 862 break;
863 } 863 }
864 case FRStart: { 864 case FRStart: {
865 e.setStart( (time_t) value.toLong() ); 865 e.setStart( (time_t) value.toLong() );
866 break; 866 break;
867 } 867 }
868 case FREnd: { 868 case FREnd: {
869 e.setEnd( (time_t) value.toLong() ); 869 e.setEnd( (time_t) value.toLong() );
870 break; 870 break;
871 } 871 }
872 case FNote: 872 case FNote:
873 e.setNotes( value ); 873 e.setNotes( value );
874 break; 874 break;
875 case FCreated: 875 case FCreated:
876 rp.createTime = value.toInt(); 876 rp.createTime = value.toInt();
877 break; 877 break;
878 case FAction: 878 case FAction:
879 currentAction = value.toInt(); 879 currentAction = value.toInt();
880 break; 880 break;
881 case FActionKey: 881 case FActionKey:
882 journalKey = value.toInt(); 882 journalKey = value.toInt();
883 break; 883 break;
884 case FJournalOrigHadRepeat: 884 case FJournalOrigHadRepeat:
885 origHadRepeat = value.toInt(); 885 origHadRepeat = value.toInt();
886 break; 886 break;
887 default: 887 default:
888 qDebug( "huh??? missing enum? -- attr.: %s", attr ); 888 qDebug( "huh??? missing enum? -- attr.: %s", attr );
889 break; 889 break;
890 } 890 }
891#endif 891#endif
892 } 892 }
893 // "post processing" (dates, times, alarm, recurrence) 893 // "post processing" (dates, times, alarm, recurrence)
894 // start date/time 894 // start date/time
895 e.setRepeat( rp.type != Event::NoRepeat, rp ); 895 e.setRepeat( rp.type != Event::NoRepeat, rp );
896 896
897 if ( alarmTime != -1 ) 897 if ( alarmTime != -1 )
898 e.setAlarm( TRUE, alarmTime, alarmSound ); 898 e.setAlarm( TRUE, alarmTime, alarmSound );
899 899
900 // now do our action based on the current action... 900 // now do our action based on the current action...
901 switch ( currentAction ) { 901 switch ( currentAction ) {
902 case ACTION_ADD: 902 case ACTION_ADD:
903 addJFEvent( e ); 903 addJFEvent( e );
904 break; 904 break;
905 case ACTION_REMOVE: 905 case ACTION_REMOVE:
906 removeJFEvent( e ); 906 removeJFEvent( e );
907 break; 907 break;
908 case ACTION_REPLACE: 908 case ACTION_REPLACE:
909 // be a little bit careful, 909 // be a little bit careful,
910 // in case of a messed up journal... 910 // in case of a messed up journal...
911 if ( journalKey > -1 && origHadRepeat > -1 ) { 911 if ( journalKey > -1 && origHadRepeat > -1 ) {
912 // get the original from proper list... 912 // get the original from proper list...
913 if ( origHadRepeat ) 913 if ( origHadRepeat )
914 removeJFEvent( *(repeatEvents.at(journalKey)) ); 914 removeJFEvent( *(repeatEvents.at(journalKey)) );
915 else 915 else
916 removeJFEvent( *(eventList.at(journalKey)) ); 916 removeJFEvent( *(eventList.at(journalKey)) );
917 addJFEvent( e ); 917 addJFEvent( e );
918 } 918 }
919 break; 919 break;
920 default: 920 default:
921 break; 921 break;
922 } 922 }
923 } 923 }
924 f.close(); 924 f.close();
925} 925}
926 926
927void DateBookDB::init() 927void DateBookDB::init()
928{ 928{
929 d = new DateBookDBPrivate; 929 d = new DateBookDBPrivate;
930 d->clean = false; 930 d->clean = false;
931 QString str = dateBookFilename(); 931 QString str = dateBookFilename();
932 if ( str.isNull() ) { 932 if ( str.isNull() ) {
933 QMessageBox::warning( 0, QObject::tr("Out of Space"), 933 QMessageBox::warning( 0, QObject::tr("Out of Space"),
934 QObject::tr("Unable to create start up files\n" 934 QObject::tr("Unable to create start up files\n"
935 "Please free up some space\n" 935 "Please free up some space\n"
936 "before entering data") ); 936 "before entering data") );
937 } 937 }
938 // continuing along, we call this datebook filename again, 938 // continuing along, we call this datebook filename again,
939 // because they may fix it before continuing, though it seems 939 // because they may fix it before continuing, though it seems
940 // pretty unlikely... 940 // pretty unlikely...
941 loadFile( dateBookFilename() ); 941 loadFile( dateBookFilename() );
942 942
943 if ( QFile::exists( dateBookJournalFile() ) ) { 943 if ( QFile::exists( dateBookJournalFile() ) ) {
944 // merge the journal 944 // merge the journal
945 loadFile( dateBookJournalFile() ); 945 loadFile( dateBookJournalFile() );
946 // save in our changes and remove the journal... 946 // save in our changes and remove the journal...
947 save(); 947 save();
948 } 948 }
949 d->clean = true; 949 d->clean = true;
950} 950}
951 951
952bool DateBookDB::save() 952bool DateBookDB::save()
953{ 953{
954 if ( d->clean == true ) 954 if ( d->clean == true )
955 return true; 955 return true;
956 QValueListIterator<Event> it; 956 QValueListIterator<Event> it;
957 int total_written; 957 int total_written;
958 QString strFileNew = dateBookFilename() + ".new"; 958 QString strFileNew = dateBookFilename() + ".new";
959 959
960 QFile f( strFileNew ); 960 QFile f( strFileNew );
961 if ( !f.open( IO_WriteOnly|IO_Raw ) ) 961 if ( !f.open( IO_WriteOnly|IO_Raw ) )
962 return FALSE; 962 return FALSE;
963 963
964 QString buf( "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" ); 964 QString buf( "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" );
965 buf += "<!DOCTYPE DATEBOOK><DATEBOOK>\n"; 965 buf += "<!DOCTYPE DATEBOOK><DATEBOOK>\n";
966 buf += "<events>\n"; 966 buf += "<events>\n";
967 QCString str = buf.utf8(); 967 QCString str = buf.utf8();
968 total_written = f.writeBlock( str.data(), str.length() ); 968 total_written = f.writeBlock( str.data(), str.length() );
969 if ( total_written != int(str.length()) ) { 969 if ( total_written != int(str.length()) ) {
970 f.close(); 970 f.close();
971 QFile::remove( strFileNew ); 971 QFile::remove( strFileNew );
972 return false; 972 return false;
973 } 973 }
974 974
975 for ( it = eventList.begin(); it != eventList.end(); ++it ) { 975 for ( it = eventList.begin(); it != eventList.end(); ++it ) {
976 buf = "<event"; 976 buf = "<event";
977 (*it).save( buf ); 977 (*it).save( buf );
978 buf += " />\n"; 978 buf += " />\n";
979 str = buf.utf8(); 979 str = buf.utf8();
980 total_written = f.writeBlock( str.data(), str.length() ); 980 total_written = f.writeBlock( str.data(), str.length() );
981 if ( total_written != int(str.length()) ) { 981 if ( total_written != int(str.length()) ) {
982 f.close(); 982 f.close();
983 QFile::remove( strFileNew ); 983 QFile::remove( strFileNew );
984 return false; 984 return false;
985 } 985 }
986 } 986 }
987 for ( it = repeatEvents.begin(); it != repeatEvents.end(); ++it ) { 987 for ( it = repeatEvents.begin(); it != repeatEvents.end(); ++it ) {
988 buf = "<event"; 988 buf = "<event";
989 (*it).save( buf ); 989 (*it).save( buf );
990 buf += " />\n"; 990 buf += " />\n";
991 str = buf.utf8(); 991 str = buf.utf8();
992 total_written = f.writeBlock( str.data(), str.length() ); 992 total_written = f.writeBlock( str.data(), str.length() );
993 if ( total_written != int(str.length()) ) { 993 if ( total_written != int(str.length()) ) {
994 f.close(); 994 f.close();
995 QFile::remove( strFileNew ); 995 QFile::remove( strFileNew );
996 return false; 996 return false;
997 } 997 }
998 } 998 }
999 buf = "</events>\n</DATEBOOK>\n"; 999 buf = "</events>\n</DATEBOOK>\n";
1000 str = buf.utf8(); 1000 str = buf.utf8();
1001 total_written = f.writeBlock( str.data(), str.length() ); 1001 total_written = f.writeBlock( str.data(), str.length() );
1002 if ( total_written != int(str.length()) ) { 1002 if ( total_written != int(str.length()) ) {
1003 f.close(); 1003 f.close();
1004 QFile::remove( strFileNew ); 1004 QFile::remove( strFileNew );
1005 return false; 1005 return false;
1006 } 1006 }
1007 f.close(); 1007 f.close();
1008 1008
1009 // now rename... I like to use the systemcall 1009 // now rename... I like to use the systemcall
1010 if ( ::rename( strFileNew, dateBookFilename() ) < 0 ) { 1010 if ( ::rename( strFileNew, dateBookFilename() ) < 0 ) {
1011 qWarning( "problem renaming file %s to %s errno %d", 1011 qWarning( "problem renaming file %s to %s errno %d",
1012 strFileNew.latin1(), dateBookFilename().latin1(), errno ); 1012 strFileNew.latin1(), dateBookFilename().latin1(), errno );
1013 // remove the file, otherwise it will just stick around... 1013 // remove the file, otherwise it will just stick around...
1014 QFile::remove( strFileNew ); 1014 QFile::remove( strFileNew );
1015 } 1015 }
1016 1016
1017 // may as well remove the journal file... 1017 // may as well remove the journal file...
1018 QFile::remove( dateBookJournalFile() ); 1018 QFile::remove( dateBookJournalFile() );
1019 d->clean = true; 1019 d->clean = true;
1020 return true; 1020 return true;
1021} 1021}
1022 1022
1023void DateBookDB::reload() 1023void DateBookDB::reload()
1024{ 1024{
1025 QValueList<Event>::Iterator it = eventList.begin(); 1025 QValueList<Event>::Iterator it = eventList.begin();
1026 for ( ; it != eventList.end(); ++it ) { 1026 for ( ; it != eventList.end(); ++it ) {
1027 if ( (*it).hasAlarm() ) 1027 if ( (*it).hasAlarm() )
1028 delEventAlarm( *it ); 1028 delEventAlarm( *it );
1029 if ( (*it).hasRepeat() ) 1029 if ( (*it).hasRepeat() )
1030 removeRepeat( *it ); 1030 removeRepeat( *it );
1031 } 1031 }
1032 eventList.clear(); 1032 eventList.clear();
1033 repeatEvents.clear(); // should be a NOP 1033 repeatEvents.clear(); // should be a NOP
1034 init(); 1034 init();
1035} 1035}
1036 1036
1037bool DateBookDB::removeRepeat( const Event &ev ) 1037bool DateBookDB::removeRepeat( const Event &ev )
1038{ 1038{
1039 time_t removeMe = ev.repeatPattern().createTime; 1039 time_t removeMe = ev.repeatPattern().createTime;
1040 QValueListIterator<Event> it; 1040 QValueListIterator<Event> it;
1041 for ( it = repeatEvents.begin(); it != repeatEvents.end(); ++it ) { 1041 for ( it = repeatEvents.begin(); it != repeatEvents.end(); ++it ) {
1042 if ( removeMe == (*it).repeatPattern().createTime ) { 1042 if ( removeMe == (*it).repeatPattern().createTime ) {
1043 repeatEvents.remove( *it ); 1043 (void)repeatEvents.remove( it );
1044 // best break, or we are going into undefined territory! 1044 // best break, or we are going into undefined territory!
1045 return TRUE; 1045 return TRUE;
1046 } 1046 }
1047 } 1047 }
1048 return FALSE; 1048 return FALSE;
1049} 1049}
1050 1050
1051bool DateBookDB::origRepeat( const Event &ev, Event &orig ) const 1051bool DateBookDB::origRepeat( const Event &ev, Event &orig ) const
1052{ 1052{
1053 time_t removeMe = ev.repeatPattern().createTime; 1053 time_t removeMe = ev.repeatPattern().createTime;
1054 QValueListConstIterator<Event> it; 1054 QValueListConstIterator<Event> it;
1055 for ( it = repeatEvents.begin(); it != repeatEvents.end(); ++it ) { 1055 for ( it = repeatEvents.begin(); it != repeatEvents.end(); ++it ) {
1056 if ( removeMe == (*it).repeatPattern().createTime ) { 1056 if ( removeMe == (*it).repeatPattern().createTime ) {
1057 orig = (*it); 1057 orig = (*it);
1058 return TRUE; 1058 return TRUE;
1059 } 1059 }
1060 } 1060 }
1061 return FALSE; 1061 return FALSE;
1062} 1062}
1063 1063
1064void DateBookDB::saveJournalEntry( const Event &ev, journal_action action ) 1064void DateBookDB::saveJournalEntry( const Event &ev, journal_action action )
1065{ 1065{
1066 saveJournalEntry( ev, action, -1, false ); 1066 saveJournalEntry( ev, action, -1, false );
1067} 1067}
1068 1068
1069bool DateBookDB::saveJournalEntry( const Event &evOld, journal_action action, 1069bool DateBookDB::saveJournalEntry( const Event &evOld, journal_action action,
1070 int key, bool origHadRepeat ) 1070 int key, bool origHadRepeat )
1071{ 1071{
1072 bool status = false; 1072 bool status = false;
1073 Event ev = evOld; 1073 Event ev = evOld;
1074 // write our log based on the action 1074 // write our log based on the action
1075 QFile f( dateBookJournalFile() ); 1075 QFile f( dateBookJournalFile() );
1076 if ( !f.open( IO_WriteOnly|IO_Append ) ) 1076 if ( !f.open( IO_WriteOnly|IO_Append ) )
1077 return false; 1077 return false;
1078 QString buf = "<event"; 1078 QString buf = "<event";
1079 ev.save( buf ); 1079 ev.save( buf );
1080 buf += " action="; 1080 buf += " action=";
1081 buf += "\"" + QString::number(action) + "\""; 1081 buf += "\"" + QString::number(action) + "\"";
1082 buf += " actionkey=\"" + QString::number(key) + "\""; 1082 buf += " actionkey=\"" + QString::number(key) + "\"";
1083 buf += " actionorig=\"" + QString::number(origHadRepeat) +"\""; 1083 buf += " actionorig=\"" + QString::number(origHadRepeat) +"\"";
1084 buf += " />\n"; 1084 buf += " />\n";
1085 QString str = buf.utf8(); 1085 QString str = buf.utf8();
1086 status = ( f.writeBlock( str.data(), str.length() ) == int(str.length()) ); 1086 status = ( f.writeBlock( str.data(), str.length() ) == int(str.length()) );
1087 f.close(); 1087 f.close();
1088 return status; 1088 return status;
1089} 1089}
1090 1090
1091QValueList<Event> DateBookDB::getRawRepeats() const 1091QValueList<Event> DateBookDB::getRawRepeats() const
1092{ 1092{
1093 return repeatEvents; 1093 return repeatEvents;
1094} 1094}
1095 1095
1096QValueList<Event> DateBookDB::getNonRepeatingEvents( const QDate &from, 1096QValueList<Event> DateBookDB::getNonRepeatingEvents( const QDate &from,
1097 const QDate &to ) const 1097 const QDate &to ) const
1098{ 1098{
1099 QValueListConstIterator<Event> it; 1099 QValueListConstIterator<Event> it;
1100 QDateTime dtTmp, dtEnd; 1100 QDateTime dtTmp, dtEnd;
1101 QValueList<Event> tmpList; 1101 QValueList<Event> tmpList;
1102 for (it = eventList.begin(); it != eventList.end(); ++it ) { 1102 for (it = eventList.begin(); it != eventList.end(); ++it ) {
1103 dtTmp = (*it).start(TRUE); 1103 dtTmp = (*it).start(TRUE);
1104 dtEnd = (*it).end(TRUE); 1104 dtEnd = (*it).end(TRUE);
1105 1105
1106 if ( dtTmp.date() >= from && dtTmp.date() <= to ) { 1106 if ( dtTmp.date() >= from && dtTmp.date() <= to ) {
1107 Event e = *it; 1107 Event e = *it;
1108 if ( dtTmp.date() != dtEnd.date() ) 1108 if ( dtTmp.date() != dtEnd.date() )
1109 e.setEnd( QDateTime(dtTmp.date(), QTime(23, 59, 0)) ); 1109 e.setEnd( QDateTime(dtTmp.date(), QTime(23, 59, 0)) );
1110 tmpList.append( e ); 1110 tmpList.append( e );
1111 } 1111 }
1112 // we must also check for end date information... 1112 // we must also check for end date information...
1113 if ( dtEnd.date() != dtTmp.date() && dtEnd.date() >= from ) { 1113 if ( dtEnd.date() != dtTmp.date() && dtEnd.date() >= from ) {
1114 QDateTime dt = dtTmp.addDays( 1 ); 1114 QDateTime dt = dtTmp.addDays( 1 );
1115 dt.setTime( QTime(0, 0, 0) ); 1115 dt.setTime( QTime(0, 0, 0) );
1116 QDateTime dtStop; 1116 QDateTime dtStop;
1117 if ( dtEnd > to ) { 1117 if ( dtEnd > to ) {
1118 dtStop = to; 1118 dtStop = to;
1119 } else 1119 } else
1120 dtStop = dtEnd; 1120 dtStop = dtEnd;
1121 while ( dt <= dtStop ) { 1121 while ( dt <= dtStop ) {
1122 Event ev = *it; 1122 Event ev = *it;
1123 if ( dt >= from ) { 1123 if ( dt >= from ) {
1124 ev.setStart( QDateTime(dt.date(), QTime(0, 0, 0)) ); 1124 ev.setStart( QDateTime(dt.date(), QTime(0, 0, 0)) );
1125 if ( dt.date() == dtEnd.date() ) 1125 if ( dt.date() == dtEnd.date() )
1126 ev.setEnd( QDateTime(dt.date(), dtEnd.time()) ); 1126 ev.setEnd( QDateTime(dt.date(), dtEnd.time()) );
1127 else 1127 else
1128 ev.setEnd( QDateTime(dt.date(), QTime(23, 59, 0)) ); 1128 ev.setEnd( QDateTime(dt.date(), QTime(23, 59, 0)) );
1129 tmpList.append( ev ); 1129 tmpList.append( ev );
1130 } 1130 }
1131 dt = dt.addDays( 1 ); 1131 dt = dt.addDays( 1 );
1132 } 1132 }
1133 } 1133 }
1134 } 1134 }
1135 return tmpList; 1135 return tmpList;
1136} 1136}
diff --git a/library/datebookmonth.cpp b/library/datebookmonth.cpp
index e8be313..728045f 100644
--- a/library/datebookmonth.cpp
+++ b/library/datebookmonth.cpp
@@ -1,762 +1,767 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. 2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of the Qtopia Environment. 4** This file is part of the Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20#include "config.h" 20#include "config.h"
21#include "datebookmonth.h" 21#include "datebookmonth.h"
22#include "datebookdb.h" 22#include "datebookdb.h"
23#include <qtopia/private/event.h> 23#include <qtopia/private/event.h>
24#include "resource.h" 24#include "resource.h"
25#include <qpe/qpeapplication.h> 25#include <qpe/qpeapplication.h>
26#include "timestring.h" 26#include "timestring.h"
27 27
28#include <qtoolbutton.h> 28#include <qtoolbutton.h>
29#include <qspinbox.h> 29#include <qspinbox.h>
30#include <qcombobox.h> 30#include <qcombobox.h>
31#include <qdatetime.h> 31#include <qdatetime.h>
32#include <qpainter.h> 32#include <qpainter.h>
33#include <qpopupmenu.h> 33#include <qpopupmenu.h>
34#include <qvaluestack.h> 34#include <qvaluestack.h>
35#include <qwhatsthis.h> 35#include <qwhatsthis.h>
36 36
37 37
38DateBookMonthHeader::DateBookMonthHeader( QWidget *parent, const char *name ) 38DateBookMonthHeader::DateBookMonthHeader( QWidget *parent, const char *name )
39 : QHBox( parent, name ) 39 : QHBox( parent, name )
40{ 40{
41 setBackgroundMode( PaletteButton ); 41 setBackgroundMode( PaletteButton );
42 42
43 begin = new QToolButton( this ); 43 begin = new QToolButton( this );
44 begin->setFocusPolicy(NoFocus); 44 begin->setFocusPolicy(NoFocus);
45 begin->setPixmap( Resource::loadPixmap( "start" ) ); 45 begin->setPixmap( Resource::loadPixmap( "start" ) );
46 begin->setAutoRaise( TRUE ); 46 begin->setAutoRaise( TRUE );
47 begin->setFixedSize( begin->sizeHint() ); 47 begin->setFixedSize( begin->sizeHint() );
48 QWhatsThis::add( begin, tr("Show January in the selected year") ); 48 QWhatsThis::add( begin, tr("Show January in the selected year") );
49 49
50 back = new QToolButton( this ); 50 back = new QToolButton( this );
51 back->setFocusPolicy(NoFocus); 51 back->setFocusPolicy(NoFocus);
52 back->setPixmap( Resource::loadPixmap( "back" ) ); 52 back->setPixmap( Resource::loadPixmap( "back" ) );
53 back->setAutoRaise( TRUE ); 53 back->setAutoRaise( TRUE );
54 back->setFixedSize( back->sizeHint() ); 54 back->setFixedSize( back->sizeHint() );
55 QWhatsThis::add( back, tr("Show the previous month") ); 55 QWhatsThis::add( back, tr("Show the previous month") );
56 56
57 month = new QComboBox( FALSE, this ); 57 month = new QComboBox( FALSE, this );
58 for ( int i = 0; i < 12; ++i ) 58 for ( int i = 0; i < 12; ++i )
59 month->insertItem( Calendar::nameOfMonth( i + 1 ) ); 59 month->insertItem( Calendar::nameOfMonth( i + 1 ) );
60 60
61 year = new QSpinBox( 1752, 8000, 1, this ); 61 year = new QSpinBox( 1752, 8000, 1, this );
62 62
63 next = new QToolButton( this ); 63 next = new QToolButton( this );
64 next->setFocusPolicy(NoFocus); 64 next->setFocusPolicy(NoFocus);
65 next->setPixmap( Resource::loadPixmap( "forward" ) ); 65 next->setPixmap( Resource::loadPixmap( "forward" ) );
66 next->setAutoRaise( TRUE ); 66 next->setAutoRaise( TRUE );
67 next->setFixedSize( next->sizeHint() ); 67 next->setFixedSize( next->sizeHint() );
68 QWhatsThis::add( next, tr("Show the next month") ); 68 QWhatsThis::add( next, tr("Show the next month") );
69 69
70 end = new QToolButton( this ); 70 end = new QToolButton( this );
71 end->setFocusPolicy(NoFocus); 71 end->setFocusPolicy(NoFocus);
72 end->setPixmap( Resource::loadPixmap( "finish" ) ); 72 end->setPixmap( Resource::loadPixmap( "finish" ) );
73 end->setAutoRaise( TRUE ); 73 end->setAutoRaise( TRUE );
74 end->setFixedSize( end->sizeHint() ); 74 end->setFixedSize( end->sizeHint() );
75 QWhatsThis::add( end, tr("Show December in the selected year") ); 75 QWhatsThis::add( end, tr("Show December in the selected year") );
76 76
77 connect( month, SIGNAL( activated( int ) ), 77 connect( month, SIGNAL( activated( int ) ),
78 this, SLOT( updateDate() ) ); 78 this, SLOT( updateDate() ) );
79 connect( year, SIGNAL( valueChanged( int ) ), 79 connect( year, SIGNAL( valueChanged( int ) ),
80 this, SLOT( updateDate() ) ); 80 this, SLOT( updateDate() ) );
81 connect( begin, SIGNAL( clicked() ), 81 connect( begin, SIGNAL( clicked() ),
82 this, SLOT( firstMonth() ) ); 82 this, SLOT( firstMonth() ) );
83 connect( end, SIGNAL( clicked() ), 83 connect( end, SIGNAL( clicked() ),
84 this, SLOT( lastMonth() ) ); 84 this, SLOT( lastMonth() ) );
85 connect( back, SIGNAL( clicked() ), 85 connect( back, SIGNAL( clicked() ),
86 this, SLOT( monthBack() ) ); 86 this, SLOT( monthBack() ) );
87 connect( next, SIGNAL( clicked() ), 87 connect( next, SIGNAL( clicked() ),
88 this, SLOT( monthForward() ) ); 88 this, SLOT( monthForward() ) );
89 back->setAutoRepeat( TRUE ); 89 back->setAutoRepeat( TRUE );
90 next->setAutoRepeat( TRUE ); 90 next->setAutoRepeat( TRUE );
91} 91}
92 92
93 93
94DateBookMonthHeader::~DateBookMonthHeader() 94DateBookMonthHeader::~DateBookMonthHeader()
95{ 95{
96 96
97} 97}
98 98
99void DateBookMonthHeader::updateDate() 99void DateBookMonthHeader::updateDate()
100{ 100{
101 emit dateChanged( year->value(), month->currentItem() + 1 ); 101 emit dateChanged( year->value(), month->currentItem() + 1 );
102} 102}
103 103
104void DateBookMonthHeader::firstMonth() 104void DateBookMonthHeader::firstMonth()
105{ 105{
106 emit dateChanged( year->value(), 1 ); 106 emit dateChanged( year->value(), 1 );
107 month->setCurrentItem( 0 ); 107 month->setCurrentItem( 0 );
108} 108}
109 109
110void DateBookMonthHeader::lastMonth() 110void DateBookMonthHeader::lastMonth()
111{ 111{
112 emit dateChanged( year->value(), 12 ); 112 emit dateChanged( year->value(), 12 );
113 month->setCurrentItem( 11 ); 113 month->setCurrentItem( 11 );
114} 114}
115 115
116void DateBookMonthHeader::monthBack() 116void DateBookMonthHeader::monthBack()
117{ 117{
118 if ( month->currentItem() > 0 ) { 118 if ( month->currentItem() > 0 ) {
119 emit dateChanged( year->value(), month->currentItem() ); 119 emit dateChanged( year->value(), month->currentItem() );
120 month->setCurrentItem( month->currentItem() - 1 ); 120 month->setCurrentItem( month->currentItem() - 1 );
121 } else { 121 } else {
122 emit dateChanged( year->value() - 1, 12 ); 122 emit dateChanged( year->value() - 1, 12 );
123 // we have a signal set to a changed value in year so we only need to change 123 // we have a signal set to a changed value in year so we only need to change
124 // year to get the result... 124 // year to get the result...
125 month->setCurrentItem( 11 ); 125 month->setCurrentItem( 11 );
126 year->setValue( year->value() - 1 ); 126 year->setValue( year->value() - 1 );
127 } 127 }
128} 128}
129 129
130void DateBookMonthHeader::monthForward() 130void DateBookMonthHeader::monthForward()
131{ 131{
132 if ( month->currentItem() < 11 ) { 132 if ( month->currentItem() < 11 ) {
133 emit dateChanged( year->value(), month->currentItem() + 2 ); 133 emit dateChanged( year->value(), month->currentItem() + 2 );
134 month->setCurrentItem( month->currentItem() + 1 ); 134 month->setCurrentItem( month->currentItem() + 1 );
135 } else { 135 } else {
136 // we have a signal set to a changed value in year so we only need to change 136 // we have a signal set to a changed value in year so we only need to change
137 // year to get the result... 137 // year to get the result...
138 month->setCurrentItem( 0 ); 138 month->setCurrentItem( 0 );
139 year->setValue( year->value() + 1 ); 139 year->setValue( year->value() + 1 );
140 } 140 }
141} 141}
142 142
143void DateBookMonthHeader::setDate( int y, int m ) 143void DateBookMonthHeader::setDate( int y, int m )
144{ 144{
145 year->setValue( y ); 145 year->setValue( y );
146 month->setCurrentItem( m - 1 ); 146 month->setCurrentItem( m - 1 );
147} 147}
148 148
149//--------------------------------------------------------------------------- 149//---------------------------------------------------------------------------
150 150
151class DateBookMonthTablePrivate 151class DateBookMonthTablePrivate
152{ 152{
153public: 153public:
154 DateBookMonthTablePrivate() {}; 154 DateBookMonthTablePrivate() {};
155 ~DateBookMonthTablePrivate() { mMonthEvents.clear(); }; 155 ~DateBookMonthTablePrivate() { mMonthEvents.clear(); };
156 156
157 QValueList<EffectiveEvent> mMonthEvents; 157 QValueList<EffectiveEvent> mMonthEvents;
158 bool onMonday; 158 bool onMonday;
159}; 159};
160 160
161DateBookMonthTable::DateBookMonthTable( QWidget *parent, const char *name, 161DateBookMonthTable::DateBookMonthTable( QWidget *parent, const char *name,
162 DateBookDB *newDb ) 162 DateBookDB *newDb )
163 : QTable( 6, 7, parent, name ), 163 : QTable( 6, 7, parent, name ),
164 db( newDb ) 164 db( newDb )
165{ 165{
166 d = new DateBookMonthTablePrivate(); 166 d = new DateBookMonthTablePrivate();
167 selYear = -1; 167 selYear = -1;
168 selMonth = -1; 168 selMonth = -1;
169 selDay = -1; 169 selDay = -1;
170 170
171 /* init these as well make valgrind happy and be consistent with Qtopia1.6 -zecke */
172 year = -1;
173 month = -1;
174 day = -1;
175
171 Config cfg( "qpe" ); 176 Config cfg( "qpe" );
172 cfg.setGroup( "Time" ); 177 cfg.setGroup( "Time" );
173 d->onMonday = cfg.readBoolEntry( "MONDAY" ); 178 d->onMonday = cfg.readBoolEntry( "MONDAY" );
174 179
175 horizontalHeader()->setResizeEnabled( FALSE ); 180 horizontalHeader()->setResizeEnabled( FALSE );
176 // we have to do this here... or suffer the consequences later... 181 // we have to do this here... or suffer the consequences later...
177 for ( int i = 0; i < 7; i++ ){ 182 for ( int i = 0; i < 7; i++ ){
178 horizontalHeader()->resizeSection( i, 30 ); 183 horizontalHeader()->resizeSection( i, 30 );
179 setColumnStretchable( i, TRUE ); 184 setColumnStretchable( i, TRUE );
180 } 185 }
181 setupLabels(); 186 setupLabels();
182 187
183 verticalHeader()->hide(); 188 verticalHeader()->hide();
184 setLeftMargin( 0 ); 189 setLeftMargin( 0 );
185 for ( int i = 0; i < 6; ++i ) 190 for ( int i = 0; i < 6; ++i )
186 setRowStretchable( i, TRUE ); 191 setRowStretchable( i, TRUE );
187 192
188 setSelectionMode( NoSelection ); 193 setSelectionMode( NoSelection );
189 194
190 connect( this, SIGNAL( clicked( int, int, int, const QPoint & ) ), 195 connect( this, SIGNAL( clicked( int, int, int, const QPoint & ) ),
191 this, SLOT( dayClicked( int, int ) ) ); 196 this, SLOT( dayClicked( int, int ) ) );
192 connect( this, SIGNAL( currentChanged( int, int ) ), 197 connect( this, SIGNAL( currentChanged( int, int ) ),
193 this, SLOT( dragDay( int, int ) ) ); 198 this, SLOT( dragDay( int, int ) ) );
194 setVScrollBarMode( AlwaysOff ); 199 setVScrollBarMode( AlwaysOff );
195 setHScrollBarMode( AlwaysOff ); 200 setHScrollBarMode( AlwaysOff );
196} 201}
197 202
198DateBookMonthTable::~DateBookMonthTable() 203DateBookMonthTable::~DateBookMonthTable()
199{ 204{
200 monthsEvents.clear(); 205 monthsEvents.clear();
201 delete d; 206 delete d;
202} 207}
203 208
204void DateBookMonthTable::setDate(int y, int m, int d) 209void DateBookMonthTable::setDate(int y, int m, int d)
205{ 210{
206 if (month == m && year == y) { 211 if (month == m && year == y) {
207 if ( selYear == -1 ) 212 if ( selYear == -1 )
208 year = selYear; 213 year = selYear;
209 if ( selMonth == -1 ) 214 if ( selMonth == -1 )
210 month = selMonth; 215 month = selMonth;
211 int r1, c1, r2, c2; 216 int r1, c1, r2, c2;
212 findDay(selDay, r1, c1); 217 findDay(selDay, r1, c1);
213 selDay = day = d; 218 selDay = day = d;
214 findDay(selDay, r2, c2); 219 findDay(selDay, r2, c2);
215 setCurrentCell( r2, c2 ); 220 setCurrentCell( r2, c2 );
216 //updateCell(r1,c1); 221 //updateCell(r1,c1);
217 //updateCell(r2,c2); 222 //updateCell(r2,c2);
218 } else { 223 } else {
219 selYear = year = y; 224 selYear = year = y;
220 selMonth = month = m; 225 selMonth = month = m;
221 selDay = day = d; 226 selDay = day = d;
222 setupTable(); 227 setupTable();
223 } 228 }
224} 229}
225 230
226void DateBookMonthTable::redraw() 231void DateBookMonthTable::redraw()
227{ 232{
228 setupLabels(); 233 setupLabels();
229 setupTable(); 234 setupTable();
230} 235}
231 236
232void DateBookMonthTable::setWeekStart( bool onMonday ) 237void DateBookMonthTable::setWeekStart( bool onMonday )
233{ 238{
234 d->onMonday = onMonday; 239 d->onMonday = onMonday;
235 setupLabels(); 240 setupLabels();
236 setupTable(); 241 setupTable();
237} 242}
238 243
239void DateBookMonthTable::setupTable() 244void DateBookMonthTable::setupTable()
240{ 245{
241 QValueList<Calendar::Day> days = Calendar::daysOfMonth( year, month, d->onMonday ); 246 QValueList<Calendar::Day> days = Calendar::daysOfMonth( year, month, d->onMonday );
242 QValueList<Calendar::Day>::Iterator it = days.begin(); 247 QValueList<Calendar::Day>::Iterator it = days.begin();
243 int row = 0, col = 0; 248 int row = 0, col = 0;
244 int crow = 0; 249 int crow = 0;
245 int ccol = 0; 250 int ccol = 0;
246 for ( ; it != days.end(); ++it ) { 251 for ( ; it != days.end(); ++it ) {
247 DayItemMonth *i = (DayItemMonth *)item( row, col ); 252 DayItemMonth *i = (DayItemMonth *)item( row, col );
248 if ( !i ) { 253 if ( !i ) {
249 i = new DayItemMonth( this, QTableItem::Never, "" ); 254 i = new DayItemMonth( this, QTableItem::Never, "" );
250 setItem( row, col, i ); 255 setItem( row, col, i );
251 } 256 }
252 Calendar::Day calDay = *it; 257 Calendar::Day calDay = *it;
253 i->clearEffEvents(); 258 i->clearEffEvents();
254 i->setDay( calDay.date ); 259 i->setDay( calDay.date );
255 i->setType( calDay.type ); 260 i->setType( calDay.type );
256 if ( i->day() == day && calDay.type == Calendar::Day::ThisMonth ) { 261 if ( i->day() == day && calDay.type == Calendar::Day::ThisMonth ) {
257 crow = row; 262 crow = row;
258 ccol = col; 263 ccol = col;
259 } 264 }
260 265
261 updateCell( row, col ); 266 updateCell( row, col );
262 267
263 if ( col == 6 ) { 268 if ( col == 6 ) {
264 ++row; 269 ++row;
265 col = 0; 270 col = 0;
266 } else { 271 } else {
267 ++col; 272 ++col;
268 } 273 }
269 } 274 }
270 setCurrentCell( crow, ccol ); 275 setCurrentCell( crow, ccol );
271 getEvents(); 276 getEvents();
272} 277}
273 278
274void DateBookMonthTable::findDay( int day, int &row, int &col ) 279void DateBookMonthTable::findDay( int day, int &row, int &col )
275{ 280{
276 QDate dtBegin( year, month, 1 ); 281 QDate dtBegin( year, month, 1 );
277 int skips = dtBegin.dayOfWeek(); 282 int skips = dtBegin.dayOfWeek();
278 int effective_day = day + skips - 1; // row/columns begin at 0 283 int effective_day = day + skips - 1; // row/columns begin at 0
279 // make an extra adjustment if we start on Mondays. 284 // make an extra adjustment if we start on Mondays.
280 if ( d->onMonday ) 285 if ( d->onMonday )
281 effective_day--; 286 effective_day--;
282 row = effective_day / 7; 287 row = effective_day / 7;
283 col = effective_day % 7; 288 col = effective_day % 7;
284} 289}
285 290
286void DateBookMonthTable::dayClicked( int row, int col ) 291void DateBookMonthTable::dayClicked( int row, int col )
287{ 292{
288 changeDaySelection( row, col ); 293 changeDaySelection( row, col );
289 emit dateClicked( selYear, selMonth, selDay ); 294 emit dateClicked( selYear, selMonth, selDay );
290} 295}
291 296
292void DateBookMonthTable::dragDay( int row, int col ) 297void DateBookMonthTable::dragDay( int row, int col )
293{ 298{
294 changeDaySelection( row, col ); 299 changeDaySelection( row, col );
295} 300}
296 301
297void DateBookMonthTable::changeDaySelection( int row, int col ) 302void DateBookMonthTable::changeDaySelection( int row, int col )
298{ 303{
299 DayItemMonth *i = (DayItemMonth*)item( row, col ); 304 DayItemMonth *i = (DayItemMonth*)item( row, col );
300 if ( !i ) 305 if ( !i )
301 return; 306 return;
302 switch ( i->type() ) { 307 switch ( i->type() ) {
303 case Calendar::Day::ThisMonth: 308 case Calendar::Day::ThisMonth:
304 selMonth = month; 309 selMonth = month;
305 break; 310 break;
306 case Calendar::Day::PrevMonth: 311 case Calendar::Day::PrevMonth:
307 selMonth = month-1; 312 selMonth = month-1;
308 break; 313 break;
309 default: 314 default:
310 selMonth = month+1; 315 selMonth = month+1;
311 } 316 }
312 317
313 selYear = year; 318 selYear = year;
314 if ( selMonth <= 0 ) { 319 if ( selMonth <= 0 ) {
315 selMonth = 12; 320 selMonth = 12;
316 selYear--; 321 selYear--;
317 } else if ( selMonth > 12 ) { 322 } else if ( selMonth > 12 ) {
318 selMonth = 1; 323 selMonth = 1;
319 selYear++; 324 selYear++;
320 } 325 }
321 selDay = i->day(); 326 selDay = i->day();
322} 327}
323 328
324 329
325void DateBookMonthTable::viewportMouseReleaseEvent( QMouseEvent * ) 330void DateBookMonthTable::viewportMouseReleaseEvent( QMouseEvent * )
326{ 331{
327 dayClicked( currentRow(), currentColumn() ); 332 dayClicked( currentRow(), currentColumn() );
328} 333}
329 334
330void DateBookMonthTable::getEvents() 335void DateBookMonthTable::getEvents()
331{ 336{
332 if ( !db ) 337 if ( !db )
333 return; 338 return;
334 339
335 QDate dtStart( year, month, 1 ); 340 QDate dtStart( year, month, 1 );
336 d->mMonthEvents = db->getEffectiveEvents( dtStart, 341 d->mMonthEvents = db->getEffectiveEvents( dtStart,
337 QDate( year, month, 342 QDate( year, month,
338 dtStart.daysInMonth() ) ); 343 dtStart.daysInMonth() ) );
339 QValueListIterator<EffectiveEvent> it = d->mMonthEvents.begin(); 344 QValueListIterator<EffectiveEvent> it = d->mMonthEvents.begin();
340 // now that the events are sorted, basically go through the list, make 345 // now that the events are sorted, basically go through the list, make
341 // a small list for every day and set it for each item... 346 // a small list for every day and set it for each item...
342 // clear all the items... 347 // clear all the items...
343 while ( it != d->mMonthEvents.end() ) { 348 while ( it != d->mMonthEvents.end() ) {
344 QValueList<EffectiveEvent> dayEvent; 349 QValueList<EffectiveEvent> dayEvent;
345 EffectiveEvent e = *it; 350 EffectiveEvent e = *it;
346 ++it; 351 ++it;
347 dayEvent.append( e ); 352 dayEvent.append( e );
348 while ( it != d->mMonthEvents.end() 353 while ( it != d->mMonthEvents.end()
349 && e.date() == (*it).date() ) { 354 && e.date() == (*it).date() ) {
350 dayEvent.append( *it ); 355 dayEvent.append( *it );
351 ++it; 356 ++it;
352 } 357 }
353 int row, col; 358 int row, col;
354 findDay( e.date().day(), row, col ); 359 findDay( e.date().day(), row, col );
355 DayItemMonth* w = static_cast<DayItemMonth*>( item( row, col ) ); 360 DayItemMonth* w = static_cast<DayItemMonth*>( item( row, col ) );
356 w->setEvents( dayEvent ); 361 w->setEvents( dayEvent );
357 updateCell( row, col ); 362 updateCell( row, col );
358 dayEvent.clear(); 363 dayEvent.clear();
359 } 364 }
360} 365}
361 366
362 367
363void DateBookMonthTable::setupLabels() 368void DateBookMonthTable::setupLabels()
364{ 369{
365 for ( int i = 0; i < 7; ++i ) { 370 for ( int i = 0; i < 7; ++i ) {
366 // horizontalHeader()->resizeSection( i, 30 ); 371 // horizontalHeader()->resizeSection( i, 30 );
367 // setColumnStretchable( i, TRUE ); 372 // setColumnStretchable( i, TRUE );
368 if ( d->onMonday ) 373 if ( d->onMonday )
369 horizontalHeader()->setLabel( i, Calendar::nameOfDay( i + 1 ) ); 374 horizontalHeader()->setLabel( i, Calendar::nameOfDay( i + 1 ) );
370 else { 375 else {
371 if ( i == 0 ) 376 if ( i == 0 )
372 horizontalHeader()->setLabel( i, Calendar::nameOfDay( 7 ) ); 377 horizontalHeader()->setLabel( i, Calendar::nameOfDay( 7 ) );
373 else 378 else
374 horizontalHeader()->setLabel( i, Calendar::nameOfDay( i ) ); 379 horizontalHeader()->setLabel( i, Calendar::nameOfDay( i ) );
375 } 380 }
376 } 381 }
377} 382}
378 383
379 384
380//--------------------------------------------------------------------------- 385//---------------------------------------------------------------------------
381 386
382DateBookMonth::DateBookMonth( QWidget *parent, const char *name, bool ac, 387DateBookMonth::DateBookMonth( QWidget *parent, const char *name, bool ac,
383 DateBookDB *data ) 388 DateBookDB *data )
384 : QVBox( parent, name ), 389 : QVBox( parent, name ),
385 autoClose( ac ) 390 autoClose( ac )
386{ 391{
387 setFocusPolicy(StrongFocus); 392 setFocusPolicy(StrongFocus);
388 year = QDate::currentDate().year(); 393 year = QDate::currentDate().year();
389 month = QDate::currentDate().month(); 394 month = QDate::currentDate().month();
390 day = QDate::currentDate().day(); 395 day = QDate::currentDate().day();
391 header = new DateBookMonthHeader( this, "DateBookMonthHeader" ); 396 header = new DateBookMonthHeader( this, "DateBookMonthHeader" );
392 table = new DateBookMonthTable( this, "DateBookMonthTable", data ); 397 table = new DateBookMonthTable( this, "DateBookMonthTable", data );
393 header->setDate( year, month ); 398 header->setDate( year, month );
394 table->setDate( year, month, QDate::currentDate().day() ); 399 table->setDate( year, month, QDate::currentDate().day() );
395 header->setFocusPolicy(NoFocus); 400 header->setFocusPolicy(NoFocus);
396 table->setFocusPolicy(NoFocus); 401 table->setFocusPolicy(NoFocus);
397 connect( header, SIGNAL( dateChanged( int, int ) ), 402 connect( header, SIGNAL( dateChanged( int, int ) ),
398 this, SLOT( setDate( int, int ) ) ); 403 this, SLOT( setDate( int, int ) ) );
399 connect( table, SIGNAL( dateClicked( int, int, int ) ), 404 connect( table, SIGNAL( dateClicked( int, int, int ) ),
400 this, SLOT( finalDate(int, int, int) ) ); 405 this, SLOT( finalDate(int, int, int) ) );
401 connect( qApp, SIGNAL(weekChanged(bool)), this, 406 connect( qApp, SIGNAL(weekChanged(bool)), this,
402 SLOT(slotWeekChange(bool)) ); 407 SLOT(slotWeekChange(bool)) );
403 table->setFocus(); 408 table->setFocus();
404} 409}
405 410
406DateBookMonth::~DateBookMonth() 411DateBookMonth::~DateBookMonth()
407{ 412{
408 413
409} 414}
410 415
411void DateBookMonth::setDate( int y, int m ) 416void DateBookMonth::setDate( int y, int m )
412{ 417{
413 /* only change the date if this is a different date, 418 /* only change the date if this is a different date,
414 * other wise we may mistakenly overide the day */ 419 * other wise we may mistakenly overide the day */
415 if ( (y != year) || (m != month) ) { 420 if ( (y != year) || (m != month) ) {
416 year = y; 421 year = y;
417 month = m; 422 month = m;
418 QDate nd( y, m, 1 ); 423 QDate nd( y, m, 1 );
419 if ( nd.daysInMonth() < day ) 424 if ( nd.daysInMonth() < day )
420 day = nd.daysInMonth(); 425 day = nd.daysInMonth();
421 table->setDate( year, month, day ); 426 table->setDate( year, month, day );
422 } 427 }
423} 428}
424 429
425void DateBookMonth::setDate( int y, int m, int d ) 430void DateBookMonth::setDate( int y, int m, int d )
426{ 431{
427 header->setDate( y, m); 432 header->setDate( y, m);
428 table->setDate( y, m, d); 433 table->setDate( y, m, d);
429 year = y; 434 year = y;
430 month = m; 435 month = m;
431 day = d; 436 day = d;
432} 437}
433 438
434/* called when we wish to close or pass back the date */ 439/* called when we wish to close or pass back the date */
435void DateBookMonth::finalDate(int y, int m, int d) 440void DateBookMonth::finalDate(int y, int m, int d)
436{ 441{
437 setDate( y, m, d ); 442 setDate( y, m, d );
438 443
439 emit dateClicked(y, m, d); 444 emit dateClicked(y, m, d);
440 // emit dateClicked(QDate(y, m, d).toString()); 445 // emit dateClicked(QDate(y, m, d).toString());
441 446
442 if ( autoClose && parentWidget() ) 447 if ( autoClose && parentWidget() )
443 parentWidget()->close(); 448 parentWidget()->close();
444} 449}
445 450
446void DateBookMonth::setDate( QDate d) 451void DateBookMonth::setDate( QDate d)
447{ 452{
448 setDate(d.year(), d.month(), d.day()); 453 setDate(d.year(), d.month(), d.day());
449} 454}
450 455
451void DateBookMonth::redraw() 456void DateBookMonth::redraw()
452{ 457{
453 table->setDate( year, month, day ); 458 table->setDate( year, month, day );
454 table->redraw(); 459 table->redraw();
455} 460}
456 461
457QDate DateBookMonth::selectedDate() const 462QDate DateBookMonth::selectedDate() const
458{ 463{
459 if ( !table ) 464 if ( !table )
460 return QDate::currentDate(); 465 return QDate::currentDate();
461 int y, m, d; 466 int y, m, d;
462 table->getDate( y, m, d ); 467 table->getDate( y, m, d );
463 return QDate( y, m, d ); 468 return QDate( y, m, d );
464} 469}
465 470
466void DateBookMonth::slotWeekChange( bool startOnMonday ) 471void DateBookMonth::slotWeekChange( bool startOnMonday )
467{ 472{
468 table->setWeekStart( startOnMonday ); 473 table->setWeekStart( startOnMonday );
469} 474}
470 475
471void DateBookMonth::keyPressEvent( QKeyEvent *e ) 476void DateBookMonth::keyPressEvent( QKeyEvent *e )
472{ 477{
473 switch(e->key()) { 478 switch(e->key()) {
474 case Key_Up: 479 case Key_Up:
475 setDate(QDate(year, month, day).addDays(-7)); 480 setDate(QDate(year, month, day).addDays(-7));
476 break; 481 break;
477 case Key_Down: 482 case Key_Down:
478 setDate(QDate(year, month, day).addDays(7)); 483 setDate(QDate(year, month, day).addDays(7));
479 break; 484 break;
480 case Key_Left: 485 case Key_Left:
481 setDate(QDate(year, month, day).addDays(-1)); 486 setDate(QDate(year, month, day).addDays(-1));
482 break; 487 break;
483 case Key_Right: 488 case Key_Right:
484 setDate(QDate(year, month, day).addDays(1)); 489 setDate(QDate(year, month, day).addDays(1));
485 break; 490 break;
486 case Key_Space: 491 case Key_Space:
487 qWarning("space"); 492 qWarning("space");
488 emit dateClicked(year, month, day); 493 emit dateClicked(year, month, day);
489 if ( autoClose && parentWidget() ) 494 if ( autoClose && parentWidget() )
490 parentWidget()->close(); 495 parentWidget()->close();
491 break; 496 break;
492 default: 497 default:
493 qWarning("ignore"); 498 qWarning("ignore");
494 e->ignore(); 499 e->ignore();
495 break; 500 break;
496 } 501 }
497} 502}
498 503
499//--------------------------------------------------------------------------- 504//---------------------------------------------------------------------------
500class DayItemMonthPrivate 505class DayItemMonthPrivate
501{ 506{
502public: 507public:
503 DayItemMonthPrivate() {}; 508 DayItemMonthPrivate() {};
504 ~DayItemMonthPrivate() { mDayEvents.clear(); }; 509 ~DayItemMonthPrivate() { mDayEvents.clear(); };
505 QValueList<EffectiveEvent> mDayEvents; 510 QValueList<EffectiveEvent> mDayEvents;
506}; 511};
507 512
508DayItemMonth::DayItemMonth( QTable *table, EditType et, const QString &t ) 513DayItemMonth::DayItemMonth( QTable *table, EditType et, const QString &t )
509 : QTableItem( table, et, t ) 514 : QTableItem( table, et, t )
510{ 515{
511 d = new DayItemMonthPrivate(); 516 d = new DayItemMonthPrivate();
512} 517}
513 518
514DayItemMonth::~DayItemMonth() 519DayItemMonth::~DayItemMonth()
515{ 520{
516 daysEvents.clear(); 521 daysEvents.clear();
517 delete d; 522 delete d;
518} 523}
519 524
520void DayItemMonth::setEvents( const QValueList<EffectiveEvent> &effEv ) 525void DayItemMonth::setEvents( const QValueList<EffectiveEvent> &effEv )
521{ 526{
522 d->mDayEvents = effEv; 527 d->mDayEvents = effEv;
523} 528}
524 529
525void DayItemMonth::clearEffEvents() 530void DayItemMonth::clearEffEvents()
526{ 531{
527 d->mDayEvents.clear(); 532 d->mDayEvents.clear();
528} 533}
529 534
530void DayItemMonth::paint( QPainter *p, const QColorGroup &cg, 535void DayItemMonth::paint( QPainter *p, const QColorGroup &cg,
531 const QRect &cr, bool selected ) 536 const QRect &cr, bool selected )
532{ 537{
533 p->save(); 538 p->save();
534 539
535 QColorGroup g( cg ); 540 QColorGroup g( cg );
536 g.setBrush( QColorGroup::Base, back ); 541 g.setBrush( QColorGroup::Base, back );
537 g.setColor( QColorGroup::Text, forg ); 542 g.setColor( QColorGroup::Text, forg );
538 if ( selected ) 543 if ( selected )
539 p->setPen( g.highlightedText() ); 544 p->setPen( g.highlightedText() );
540 else 545 else
541 p->setPen( g.text() ); 546 p->setPen( g.text() );
542 547
543 QValueStack<int> normalLine; 548 QValueStack<int> normalLine;
544 QValueStack<int> repeatLine; 549 QValueStack<int> repeatLine;
545 QValueStack<int> travelLine; 550 QValueStack<int> travelLine;
546 551
547 bool normalAllDay = FALSE; 552 bool normalAllDay = FALSE;
548 bool repeatAllDay = FALSE; 553 bool repeatAllDay = FALSE;
549 bool travelAllDay = FALSE; 554 bool travelAllDay = FALSE;
550 555
551 QValueListIterator<EffectiveEvent> itDays = d->mDayEvents.begin(); 556 QValueListIterator<EffectiveEvent> itDays = d->mDayEvents.begin();
552 557
553 for ( ; itDays != d->mDayEvents.end(); ++itDays ) { 558 for ( ; itDays != d->mDayEvents.end(); ++itDays ) {
554 int w = cr.width(); 559 int w = cr.width();
555 Event ev = (*itDays).event(); 560 Event ev = (*itDays).event();
556 561
557 int f = (*itDays).start().hour(); // assume Effective event 562 int f = (*itDays).start().hour(); // assume Effective event
558 int t = (*itDays).end().hour(); // is truncated. 563 int t = (*itDays).end().hour(); // is truncated.
559 564
560 if (ev.isAllDay()) { 565 if (ev.isAllDay()) {
561 if (!ev.hasRepeat()) 566 if (!ev.hasRepeat())
562 normalAllDay = TRUE; 567 normalAllDay = TRUE;
563 else 568 else
564 repeatAllDay = TRUE; 569 repeatAllDay = TRUE;
565 } else { 570 } else {
566 int sLine, eLine; 571 int sLine, eLine;
567 if (f == 0) 572 if (f == 0)
568 sLine = 0; 573 sLine = 0;
569 else if (f < 8 ) 574 else if (f < 8 )
570 sLine = 1; 575 sLine = 1;
571 else if (f >= 17) 576 else if (f >= 17)
572 sLine = w - 4; 577 sLine = w - 4;
573 else { 578 else {
574 sLine = (f - 8) * (w - 8); 579 sLine = (f - 8) * (w - 8);
575 if (sLine) 580 if (sLine)
576 sLine /= 8; 581 sLine /= 8;
577 sLine += 4; 582 sLine += 4;
578 } 583 }
579 if (t == 23) 584 if (t == 23)
580 eLine = w; 585 eLine = w;
581 else if (t < 8) 586 else if (t < 8)
582 eLine = 4; 587 eLine = 4;
583 else if (t >= 17) 588 else if (t >= 17)
584 eLine = w - 1; 589 eLine = w - 1;
585 else { 590 else {
586 eLine = (t - 8) * (w - 8); 591 eLine = (t - 8) * (w - 8);
587 if (eLine) 592 if (eLine)
588 eLine /= 8; 593 eLine /= 8;
589 eLine += 4; 594 eLine += 4;
590 } 595 }
591 if (!ev.hasRepeat()) { 596 if (!ev.hasRepeat()) {
592 normalLine.push(sLine); 597 normalLine.push(sLine);
593 normalLine.push(eLine); 598 normalLine.push(eLine);
594 } else { 599 } else {
595 repeatLine.push(sLine); 600 repeatLine.push(sLine);
596 repeatLine.push(eLine); 601 repeatLine.push(eLine);
597 } 602 }
598 } 603 }
599 } 604 }
600 605
601 // draw the background 606 // draw the background
602 if (normalAllDay || repeatAllDay || travelAllDay) { 607 if (normalAllDay || repeatAllDay || travelAllDay) {
603 p->save(); 608 p->save();
604 609
605 if (normalAllDay) 610 if (normalAllDay)
606 if (repeatAllDay) { 611 if (repeatAllDay) {
607 p->fillRect( 0, 0, cr.width(), cr.height() / 2, 612 p->fillRect( 0, 0, cr.width(), cr.height() / 2,
608 colorNormalLight ); 613 colorNormalLight );
609 p->fillRect( 0, cr.height() / 2, cr.width(), cr.height() / 2, 614 p->fillRect( 0, cr.height() / 2, cr.width(), cr.height() / 2,
610 colorRepeatLight ); 615 colorRepeatLight );
611 } else 616 } else
612 p->fillRect( 0, 0, cr.width(), cr.height(), 617 p->fillRect( 0, 0, cr.width(), cr.height(),
613 colorNormalLight ); 618 colorNormalLight );
614 else if (repeatAllDay) 619 else if (repeatAllDay)
615 p->fillRect( 0, 0, cr.width(), cr.height(), 620 p->fillRect( 0, 0, cr.width(), cr.height(),
616 colorRepeatLight ); 621 colorRepeatLight );
617 } else { 622 } else {
618 p->fillRect( 0, 0, cr.width(), 623 p->fillRect( 0, 0, cr.width(),
619 cr.height(), selected 624 cr.height(), selected
620 ? g.brush( QColorGroup::Highlight ) 625 ? g.brush( QColorGroup::Highlight )
621 : g.brush( QColorGroup::Base ) ); 626 : g.brush( QColorGroup::Base ) );
622 } 627 }
623 628
624 // The lines 629 // The lines
625 // now for the lines. 630 // now for the lines.
626 int h = 5; 631 int h = 5;
627 int y = cr.height() / 2 - h; 632 int y = cr.height() / 2 - h;
628 633
629 while(normalLine.count() >= 2) { 634 while(normalLine.count() >= 2) {
630 int x2 = normalLine.pop(); 635 int x2 = normalLine.pop();
631 int x1 = normalLine.pop(); 636 int x1 = normalLine.pop();
632 if (x2 < x1 + 2) 637 if (x2 < x1 + 2)
633 x2 = x1 + 2; 638 x2 = x1 + 2;
634 p->fillRect(x1, y, x2 - x1, h, colorNormal); 639 p->fillRect(x1, y, x2 - x1, h, colorNormal);
635 } 640 }
636 641
637 y += h; 642 y += h;
638 643
639 while(repeatLine.count() >= 2) { 644 while(repeatLine.count() >= 2) {
640 int x2 = repeatLine.pop(); 645 int x2 = repeatLine.pop();
641 int x1 = repeatLine.pop(); 646 int x1 = repeatLine.pop();
642 if (x2 < x1 + 2) 647 if (x2 < x1 + 2)
643 x2 = x1 + 2; 648 x2 = x1 + 2;
644 p->fillRect(x1, y, x2 - x1, h, colorRepeat); 649 p->fillRect(x1, y, x2 - x1, h, colorRepeat);
645 } 650 }
646 651
647 652
648 // Finally, draw the number. 653 // Finally, draw the number.
649 QFont f = p->font(); 654 QFont f = p->font();
650 f.setPointSize( ( f.pointSize() / 3 ) * 2 ); 655 f.setPointSize( ( f.pointSize() / 3 ) * 2 );
651 p->setFont( f ); 656 p->setFont( f );
652 QFontMetrics fm( f ); 657 QFontMetrics fm( f );
653 p->drawText( 1, 1 + fm.ascent(), QString::number( day() ) ); 658 p->drawText( 1, 1 + fm.ascent(), QString::number( day() ) );
654 659
655 p->restore(); 660 p->restore();
656} 661}
657 662
658 663
659 664
660void DayItemMonth::setType( Calendar::Day::Type t ) 665void DayItemMonth::setType( Calendar::Day::Type t )
661{ 666{
662 switch ( t ) { 667 switch ( t ) {
663 case Calendar::Day::PrevMonth: 668 case Calendar::Day::PrevMonth:
664 case Calendar::Day::NextMonth: 669 case Calendar::Day::NextMonth:
665 back = QBrush( QColor( 224, 224, 224 ) ); 670 back = QBrush( QColor( 224, 224, 224 ) );
666 forg = black; 671 forg = black;
667 break; 672 break;
668 case Calendar::Day::ThisMonth: 673 case Calendar::Day::ThisMonth:
669 back = QBrush( white ); 674 back = QBrush( white );
670 forg = black; 675 forg = black;
671 break; 676 break;
672 } 677 }
673 typ = t; 678 typ = t;
674} 679}
675 680
676 681
677 682
678DateButton::DateButton( bool longDate, QWidget *parent, const char * name ) 683DateButton::DateButton( bool longDate, QWidget *parent, const char * name )
679 :QPushButton( parent, name ) 684 :QPushButton( parent, name )
680{ 685{
681 longFormat = longDate; 686 longFormat = longDate;
682 df = DateFormat('/', DateFormat::MonthDayYear, DateFormat::MonthDayYear); 687 df = DateFormat('/', DateFormat::MonthDayYear, DateFormat::MonthDayYear);
683 setDate( QDate::currentDate() ); 688 setDate( QDate::currentDate() );
684 689
685 connect(this,SIGNAL(pressed()),this,SLOT(pickDate())); 690 connect(this,SIGNAL(pressed()),this,SLOT(pickDate()));
686 691
687 692
688} 693}
689 694
690 695
691void DateButton::pickDate() 696void DateButton::pickDate()
692{ 697{
693 static QPopupMenu *m1 = 0; 698 static QPopupMenu *m1 = 0;
694 static DateBookMonth *picker = 0; 699 static DateBookMonth *picker = 0;
695 if ( !m1 ) { 700 if ( !m1 ) {
696 m1 = new QPopupMenu( this ); 701 m1 = new QPopupMenu( this );
697 picker = new DateBookMonth( m1, 0, TRUE ); 702 picker = new DateBookMonth( m1, 0, TRUE );
698 m1->insertItem( picker ); 703 m1->insertItem( picker );
699 connect( picker, SIGNAL( dateClicked( int, int, int ) ), 704 connect( picker, SIGNAL( dateClicked( int, int, int ) ),
700 this, SLOT( setDate( int, int, int ) ) ); 705 this, SLOT( setDate( int, int, int ) ) );
701 connect( picker, SIGNAL( dateClicked( int, int, int ) ), 706 connect( picker, SIGNAL( dateClicked( int, int, int ) ),
702 this, SIGNAL( dateSelected( int, int, int ) ) ); 707 this, SIGNAL( dateSelected( int, int, int ) ) );
703 connect( m1, SIGNAL( aboutToHide() ), 708 connect( m1, SIGNAL( aboutToHide() ),
704 this, SLOT( gotHide() ) ); 709 this, SLOT( gotHide() ) );
705 } 710 }
706 picker->slotWeekChange( weekStartsMonday ); 711 picker->slotWeekChange( weekStartsMonday );
707 picker->setDate( currDate.year(), currDate.month(), currDate.day() ); 712 picker->setDate( currDate.year(), currDate.month(), currDate.day() );
708 m1->popup(mapToGlobal(QPoint(0,height()))); 713 m1->popup(mapToGlobal(QPoint(0,height())));
709 picker->setFocus(); 714 picker->setFocus();
710} 715}
711 716
712 717
713void DateButton::gotHide() 718void DateButton::gotHide()
714{ 719{
715 // we have to redo the button... 720 // we have to redo the button...
716 setDown( false ); 721 setDown( false );
717} 722}
718 723
719 724
720// void dateSelected( int year, int month, int day ); 725// void dateSelected( int year, int month, int day );
721 726
722void DateButton::setWeekStartsMonday( int b ) 727void DateButton::setWeekStartsMonday( int b )
723{ 728{
724 weekStartsMonday = b; 729 weekStartsMonday = b;
725} 730}
726 731
727void DateButton::setDate( int y, int m, int d ) 732void DateButton::setDate( int y, int m, int d )
728{ 733{
729 setDate( QDate( y,m,d) ); 734 setDate( QDate( y,m,d) );
730} 735}
731 736
732void DateButton::setDate( QDate d ) 737void DateButton::setDate( QDate d )
733{ 738{
734 currDate = d; 739 currDate = d;
735 setText( longFormat ? TimeString::longDateString( d, df ) : 740 setText( longFormat ? TimeString::longDateString( d, df ) :
736 TimeString::shortDate( d, df ) ); 741 TimeString::shortDate( d, df ) );
737 742
738} 743}
739 744
740void DateButton::setDateFormat( DateFormat f ) 745void DateButton::setDateFormat( DateFormat f )
741{ 746{
742 df = f; 747 df = f;
743 setDate( currDate ); 748 setDate( currDate );
744} 749}
745 750
746bool DateButton::customWhatsThis() const 751bool DateButton::customWhatsThis() const
747{ 752{
748 return TRUE; 753 return TRUE;
749} 754}
750 755
751 756
752// this class is only here for Sharp ROM compatibility 757// this class is only here for Sharp ROM compatibility
753// I have reverse engineered this class and it seems to 758// I have reverse engineered this class and it seems to
754// work (only qtmail seems to use it) - sandman 759// work (only qtmail seems to use it) - sandman
755// DO NOT USE IT IN NEW CODE !! 760// DO NOT USE IT IN NEW CODE !!
756 761
757DateBookMonthPopup::DateBookMonthPopup ( QWidget *w ) 762DateBookMonthPopup::DateBookMonthPopup ( QWidget *w )
758 : QPopupMenu ( w ) 763 : QPopupMenu ( w )
759{ 764{
760 m_dbm = new DateBookMonth( this, 0, TRUE ); 765 m_dbm = new DateBookMonth( this, 0, TRUE );
761 insertItem( m_dbm ); 766 insertItem( m_dbm );
762} 767}
diff --git a/library/global.cpp b/library/global.cpp
index ce39751..189b830 100644
--- a/library/global.cpp
+++ b/library/global.cpp
@@ -1,849 +1,857 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. 2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of the Qtopia Environment. 4** This file is part of the Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20#define QTOPIA_INTERNAL_LANGLIST 20#define QTOPIA_INTERNAL_LANGLIST
21#include <qpe/qpedebug.h> 21#include <qpe/qpedebug.h>
22#include <qpe/global.h> 22#include <qpe/global.h>
23#include <qpe/qdawg.h> 23#include <qpe/qdawg.h>
24#include <qpe/qpeapplication.h> 24#include <qpe/qpeapplication.h>
25#include <qpe/resource.h> 25#include <qpe/resource.h>
26#include <qpe/storage.h> 26#include <qpe/storage.h>
27#include <qpe/applnk.h> 27#include <qpe/applnk.h>
28#include <qpe/qcopenvelope_qws.h> 28#include <qpe/qcopenvelope_qws.h>
29 29
30#include <qfile.h> 30#include <qfile.h>
31#include <qlabel.h> 31#include <qlabel.h>
32#include <qtimer.h> 32#include <qtimer.h>
33#include <qmap.h> 33#include <qmap.h>
34#include <qdict.h> 34#include <qdict.h>
35#include <qdir.h> 35#include <qdir.h>
36#include <qmessagebox.h> 36#include <qmessagebox.h>
37#include <qregexp.h> 37#include <qregexp.h>
38 38
39#include <stdlib.h> 39#include <stdlib.h>
40#include <sys/stat.h> 40#include <sys/stat.h>
41#include <sys/wait.h> 41#include <sys/wait.h>
42#include <sys/types.h> 42#include <sys/types.h>
43#include <fcntl.h> 43#include <fcntl.h>
44#include <unistd.h> 44#include <unistd.h>
45#include <errno.h> 45#include <errno.h>
46 46
47#include <qwindowsystem_qws.h> // for qwsServer 47#include <qwindowsystem_qws.h> // for qwsServer
48#include <qdatetime.h> 48#include <qdatetime.h>
49 49
50#include <qfile.h> 50#include <qfile.h>
51 51
52namespace { 52namespace {
53 // checks if the storage should be searched 53 // checks if the storage should be searched
54 bool checkStorage(const QString &path ){ // this is a small Config replacement cause config is too limited -zecke 54 bool checkStorage(const QString &path ){ // this is a small Config replacement cause config is too limited -zecke
55 QFile file(path ); 55 QFile file(path );
56 if(!file.open(IO_ReadOnly ) ) 56 if(!file.open(IO_ReadOnly ) )
57 return true; 57 return true;
58 58
59 QByteArray array = file.readAll(); 59 QByteArray array = file.readAll();
60 QStringList list = QStringList::split('\n', QString( array ) ); 60 QStringList list = QStringList::split('\n', QString( array ) );
61 for(QStringList::Iterator it = list.begin(); it != list.end(); ++it ){ 61 for(QStringList::Iterator it = list.begin(); it != list.end(); ++it ){
62 if( (*it).startsWith("autocheck = 0" ) ){ 62 if( (*it).startsWith("autocheck = 0" ) ){
63 return false; 63 return false;
64 }else if( (*it).startsWith("autocheck = 1" ) ){ 64 }else if( (*it).startsWith("autocheck = 1" ) ){
65 return true; 65 return true;
66 } 66 }
67 } 67 }
68 return true; 68 return true;
69 } 69 }
70} 70}
71 71
72//#include "quickexec_p.h" 72//#include "quickexec_p.h"
73 73
74class Emitter : public QObject { 74class Emitter : public QObject {
75 Q_OBJECT 75 Q_OBJECT
76public: 76public:
77 Emitter( QWidget* receiver, const QString& document ) 77 Emitter( QWidget* receiver, const QString& document )
78 { 78 {
79 connect(this, SIGNAL(setDocument(const QString&)), 79 connect(this, SIGNAL(setDocument(const QString&)),
80 receiver, SLOT(setDocument(const QString&))); 80 receiver, SLOT(setDocument(const QString&)));
81 emit setDocument(document); 81 emit setDocument(document);
82 disconnect(this, SIGNAL(setDocument(const QString&)), 82 disconnect(this, SIGNAL(setDocument(const QString&)),
83 receiver, SLOT(setDocument(const QString&))); 83 receiver, SLOT(setDocument(const QString&)));
84 } 84 }
85 85
86signals: 86signals:
87 void setDocument(const QString&); 87 void setDocument(const QString&);
88}; 88};
89 89
90 90
91class StartingAppList : public QObject { 91class StartingAppList : public QObject {
92 Q_OBJECT 92 Q_OBJECT
93public: 93public:
94 static void add( const QString& name ); 94 static void add( const QString& name );
95 static bool isStarting( const QString name ); 95 static bool isStarting( const QString name );
96private slots: 96private slots:
97 void handleNewChannel( const QString &); 97 void handleNewChannel( const QString &);
98private: 98private:
99 StartingAppList( QObject *parent=0, const char* name=0 ) ; 99 StartingAppList( QObject *parent=0, const char* name=0 ) ;
100 100
101 QDict<QTime> dict; 101 QDict<QTime> dict;
102 static StartingAppList *appl; 102 static StartingAppList *appl;
103}; 103};
104 104
105StartingAppList* StartingAppList::appl = 0; 105StartingAppList* StartingAppList::appl = 0;
106 106
107StartingAppList::StartingAppList( QObject *parent, const char* name ) 107StartingAppList::StartingAppList( QObject *parent, const char* name )
108 :QObject( parent, name ) 108 :QObject( parent, name )
109{ 109{
110#if QT_VERSION >= 232 && defined(QWS) 110#if QT_VERSION >= 232 && defined(QWS)
111 connect( qwsServer, SIGNAL( newChannel(const QString&)), 111 connect( qwsServer, SIGNAL( newChannel(const QString&)),
112 this, SLOT( handleNewChannel(const QString&)) ); 112 this, SLOT( handleNewChannel(const QString&)) );
113#endif 113#endif
114 dict.setAutoDelete( TRUE ); 114 dict.setAutoDelete( TRUE );
115} 115}
116 116
117void StartingAppList::add( const QString& name ) 117void StartingAppList::add( const QString& name )
118{ 118{
119#if QT_VERSION >= 232 && !defined(QT_NO_COP) 119#if QT_VERSION >= 232 && !defined(QT_NO_COP)
120 if ( !appl ) 120 if ( !appl )
121 appl = new StartingAppList; 121 appl = new StartingAppList;
122 QTime *t = new QTime; 122 QTime *t = new QTime;
123 t->start(); 123 t->start();
124 appl->dict.insert( "QPE/Application/" + name, t ); 124 appl->dict.insert( "QPE/Application/" + name, t );
125#endif 125#endif
126} 126}
127 127
128bool StartingAppList::isStarting( const QString name ) 128bool StartingAppList::isStarting( const QString name )
129{ 129{
130#if QT_VERSION >= 232 && !defined(QT_NO_COP) 130#if QT_VERSION >= 232 && !defined(QT_NO_COP)
131 if ( appl ) { 131 if ( appl ) {
132 QTime *t = appl->dict.find( "QPE/Application/" + name ); 132 QTime *t = appl->dict.find( "QPE/Application/" + name );
133 if ( !t ) 133 if ( !t )
134 return FALSE; 134 return FALSE;
135 if ( t->elapsed() > 10000 ) { 135 if ( t->elapsed() > 10000 ) {
136 // timeout in case of crash or something 136 // timeout in case of crash or something
137 appl->dict.remove( "QPE/Application/" + name ); 137 appl->dict.remove( "QPE/Application/" + name );
138 return FALSE; 138 return FALSE;
139 } 139 }
140 return TRUE; 140 return TRUE;
141 } 141 }
142#endif 142#endif
143 return FALSE; 143 return FALSE;
144} 144}
145 145
146void StartingAppList::handleNewChannel( const QString & name ) 146void StartingAppList::handleNewChannel( const QString & name )
147{ 147{
148#if QT_VERSION >= 232 && !defined(QT_NO_COP) 148#if QT_VERSION >= 232 && !defined(QT_NO_COP)
149 dict.remove( name ); 149 dict.remove( name );
150#endif 150#endif
151} 151}
152 152
153static bool docDirCreated = FALSE; 153static bool docDirCreated = FALSE;
154static QDawg* fixed_dawg = 0; 154static QDawg* fixed_dawg = 0;
155static QDict<QDawg> *named_dawg = 0; 155static QDict<QDawg> *named_dawg = 0;
156 156
157static QString qpeDir() 157static QString qpeDir()
158{ 158{
159 QString dir = getenv("OPIEDIR"); 159 QString dir = getenv("OPIEDIR");
160 if ( dir.isEmpty() ) dir = ".."; 160 if ( dir.isEmpty() ) dir = "..";
161 return dir; 161 return dir;
162} 162}
163 163
164static QString dictDir() 164static QString dictDir()
165{ 165{
166 return qpeDir() + "/etc/dict"; 166 return qpeDir() + "/etc/dict";
167} 167}
168 168
169/*! 169/*!
170 \class Global global.h 170 \class Global global.h
171 \brief The Global class provides application-wide global functions. 171 \brief The Global class provides application-wide global functions.
172 172
173 The Global functions are grouped as follows: 173 The Global functions are grouped as follows:
174 \tableofcontents 174 \tableofcontents
175 175
176 \section1 User Interface 176 \section1 User Interface
177 177
178 The statusMessage() function provides short-duration messages to the 178 The statusMessage() function provides short-duration messages to the
179 user. The showInputMethod() function shows the current input method, 179 user. The showInputMethod() function shows the current input method,
180 and hideInputMethod() hides the input method. 180 and hideInputMethod() hides the input method.
181 181
182 \section1 Document related 182 \section1 Document related
183 183
184 The findDocuments() function creates a set of \link doclnk.html 184 The findDocuments() function creates a set of \link doclnk.html
185 DocLnk\endlink objects in a particular folder. 185 DocLnk\endlink objects in a particular folder.
186 186
187 \section1 Filesystem related 187 \section1 Filesystem related
188 188
189 Global provides an applicationFileName() function that returns the 189 Global provides an applicationFileName() function that returns the
190 full path of an application-specific file. 190 full path of an application-specific file.
191 191
192 The execute() function runs an application. 192 The execute() function runs an application.
193 193
194 \section1 Word list related 194 \section1 Word list related
195 195
196 A list of words relevant to the current locale is maintained by the 196 A list of words relevant to the current locale is maintained by the
197 system. The list is held in a \link qdawg.html DAWG\endlink 197 system. The list is held in a \link qdawg.html DAWG\endlink
198 (implemented by the QDawg class). This list is used, for example, by 198 (implemented by the QDawg class). This list is used, for example, by
199 the pickboard input method. 199 the pickboard input method.
200 200
201 The global QDawg is returned by fixedDawg(); this cannot be updated. 201 The global QDawg is returned by fixedDawg(); this cannot be updated.
202 An updatable copy of the global QDawg is returned by addedDawg(). 202 An updatable copy of the global QDawg is returned by addedDawg().
203 Applications may have their own word lists stored in \l{QDawg}s 203 Applications may have their own word lists stored in \l{QDawg}s
204 which are returned by dawg(). Use addWords() to add words to the 204 which are returned by dawg(). Use addWords() to add words to the
205 updateable copy of the global QDawg or to named application 205 updateable copy of the global QDawg or to named application
206 \l{QDawg}s. 206 \l{QDawg}s.
207 207
208 \section1 Quoting 208 \section1 Quoting
209 209
210 The shellQuote() function quotes a string suitable for passing to a 210 The shellQuote() function quotes a string suitable for passing to a
211 shell. The stringQuote() function backslash escapes '\' and '"' 211 shell. The stringQuote() function backslash escapes '\' and '"'
212 characters. 212 characters.
213 213
214 \section1 Hardware 214 \section1 Hardware
215 215
216 The writeHWClock() function sets the hardware clock to the system 216 The writeHWClock() function sets the hardware clock to the system
217 clock's date and time. 217 clock's date and time.
218 218
219 \ingroup qtopiaemb 219 \ingroup qtopiaemb
220*/ 220*/
221 221
222/*! 222/*!
223 \internal 223 \internal
224*/ 224*/
225Global::Global() 225Global::Global()
226{ 226{
227} 227}
228 228
229/*! 229/*!
230 Returns the unchangeable QDawg that contains general 230 Returns the unchangeable QDawg that contains general
231 words for the current locale. 231 words for the current locale.
232 232
233 \sa addedDawg() 233 \sa addedDawg()
234*/ 234*/
235const QDawg& Global::fixedDawg() 235const QDawg& Global::fixedDawg()
236{ 236{
237 if ( !fixed_dawg ) { 237 if ( !fixed_dawg ) {
238 if ( !docDirCreated ) 238 if ( !docDirCreated )
239 createDocDir(); 239 createDocDir();
240 240
241 fixed_dawg = new QDawg; 241 fixed_dawg = new QDawg;
242 QString dawgfilename = dictDir() + "/dawg"; 242 QString dawgfilename = dictDir() + "/dawg";
243 QString words_lang; 243 QString words_lang;
244 QStringList langs = Global::languageList(); 244 QStringList langs = Global::languageList();
245 for (QStringList::ConstIterator it = langs.begin(); it!=langs.end(); ++it) { 245 for (QStringList::ConstIterator it = langs.begin(); it!=langs.end(); ++it) {
246 QString lang = *it; 246 QString lang = *it;
247 words_lang = dictDir() + "/words." + lang; 247 words_lang = dictDir() + "/words." + lang;
248 QString dawgfilename_lang = dawgfilename + "." + lang; 248 QString dawgfilename_lang = dawgfilename + "." + lang;
249 if ( QFile::exists(dawgfilename_lang) || 249 if ( QFile::exists(dawgfilename_lang) ||
250 QFile::exists(words_lang) ) { 250 QFile::exists(words_lang) ) {
251 dawgfilename = dawgfilename_lang; 251 dawgfilename = dawgfilename_lang;
252 break; 252 break;
253 } 253 }
254 } 254 }
255 QFile dawgfile(dawgfilename); 255 QFile dawgfile(dawgfilename);
256 256
257 if ( !dawgfile.exists() ) { 257 if ( !dawgfile.exists() ) {
258 QString fn = dictDir() + "/words"; 258 QString fn = dictDir() + "/words";
259 if ( QFile::exists(words_lang) ) 259 if ( QFile::exists(words_lang) )
260 fn = words_lang; 260 fn = words_lang;
261 QFile in(fn); 261 QFile in(fn);
262 if ( in.open(IO_ReadOnly) ) { 262 if ( in.open(IO_ReadOnly) ) {
263 fixed_dawg->createFromWords(&in); 263 fixed_dawg->createFromWords(&in);
264 dawgfile.open(IO_WriteOnly); 264 dawgfile.open(IO_WriteOnly);
265 fixed_dawg->write(&dawgfile); 265 fixed_dawg->write(&dawgfile);
266 dawgfile.close(); 266 dawgfile.close();
267 } 267 }
268 } else { 268 } else {
269 fixed_dawg->readFile(dawgfilename); 269 fixed_dawg->readFile(dawgfilename);
270 } 270 }
271 } 271 }
272 272
273 return *fixed_dawg; 273 return *fixed_dawg;
274} 274}
275 275
276/*! 276/*!
277 Returns the changeable QDawg that contains general 277 Returns the changeable QDawg that contains general
278 words for the current locale. 278 words for the current locale.
279 279
280 \sa fixedDawg() 280 \sa fixedDawg()
281*/ 281*/
282const QDawg& Global::addedDawg() 282const QDawg& Global::addedDawg()
283{ 283{
284 return dawg("local"); 284 return dawg("local");
285} 285}
286 286
287/*! 287/*!
288 Returns the QDawg with the given \a name. 288 Returns the QDawg with the given \a name.
289 This is an application-specific word list. 289 This is an application-specific word list.
290 290
291 \a name should not contain "/". 291 \a name should not contain "/".
292*/ 292*/
293const QDawg& Global::dawg(const QString& name) 293const QDawg& Global::dawg(const QString& name)
294{ 294{
295 createDocDir(); 295 createDocDir();
296 if ( !named_dawg ) 296 if ( !named_dawg )
297 named_dawg = new QDict<QDawg>; 297 named_dawg = new QDict<QDawg>;
298 QDawg* r = named_dawg->find(name); 298 QDawg* r = named_dawg->find(name);
299 if ( !r ) { 299 if ( !r ) {
300 r = new QDawg; 300 r = new QDawg;
301 named_dawg->insert(name,r); 301 named_dawg->insert(name,r);
302 QString dawgfilename = applicationFileName("Dictionary", name ) + ".dawg"; 302 QString dawgfilename = applicationFileName("Dictionary", name ) + ".dawg";
303 QFile dawgfile(dawgfilename); 303 QFile dawgfile(dawgfilename);
304 if ( dawgfile.open(IO_ReadOnly) ) 304 if ( dawgfile.open(IO_ReadOnly) )
305 r->readFile(dawgfilename); 305 r->readFile(dawgfilename);
306 } 306 }
307 return *r; 307 return *r;
308} 308}
309 309
310/*! 310/*!
311 \overload 311 \overload
312 Adds \a wordlist to the addedDawg(). 312 Adds \a wordlist to the addedDawg().
313 313
314 Note that the addition of words persists between program executions 314 Note that the addition of words persists between program executions
315 (they are saved in the dictionary files), so you should confirm the 315 (they are saved in the dictionary files), so you should confirm the
316 words with the user before adding them. 316 words with the user before adding them.
317*/ 317*/
318void Global::addWords(const QStringList& wordlist) 318void Global::addWords(const QStringList& wordlist)
319{ 319{
320 addWords("local",wordlist); 320 addWords("local",wordlist);
321} 321}
322 322
323/*! 323/*!
324 \overload 324 \overload
325 Adds \a wordlist to the addedDawg(). 325 Adds \a wordlist to the addedDawg().
326 326
327 Note that the addition of words persists between program executions 327 Note that the addition of words persists between program executions
328 (they are saved in the dictionary files), so you should confirm the 328 (they are saved in the dictionary files), so you should confirm the
329 words with the user before adding them. 329 words with the user before adding them.
330*/ 330*/
331void Global::addWords(const QString& dictname, const QStringList& wordlist) 331void Global::addWords(const QString& dictname, const QStringList& wordlist)
332{ 332{
333 QDawg& d = (QDawg&)dawg(dictname); 333 QDawg& d = (QDawg&)dawg(dictname);
334 QStringList all = d.allWords() + wordlist; 334 QStringList all = d.allWords() + wordlist;
335 d.createFromWords(all); 335 d.createFromWords(all);
336 336
337 QString dawgfilename = applicationFileName("Dictionary", dictname) + ".dawg"; 337 QString dawgfilename = applicationFileName("Dictionary", dictname) + ".dawg";
338 QFile dawgfile(dawgfilename); 338 QFile dawgfile(dawgfilename);
339 if ( dawgfile.open(IO_WriteOnly) ) { 339 if ( dawgfile.open(IO_WriteOnly) ) {
340 d.write(&dawgfile); 340 d.write(&dawgfile);
341 dawgfile.close(); 341 dawgfile.close();
342 } 342 }
343 343
344 // #### Re-read the dawg here if we use mmap(). 344 // #### Re-read the dawg here if we use mmap().
345 345
346 // #### Signal other processes to re-read. 346 // #### Signal other processes to re-read.
347} 347}
348 348
349 349
350/*! 350/*!
351 Returns the full path for the application called \a appname, with the 351 Returns the full path for the application called \a appname, with the
352 given \a filename. Returns QString::null if there was a problem creating 352 given \a filename. Returns QString::null if there was a problem creating
353 the directory tree for \a appname. 353 the directory tree for \a appname.
354 If \a filename contains "/", it is the caller's responsibility to 354 If \a filename contains "/", it is the caller's responsibility to
355 ensure that those directories exist. 355 ensure that those directories exist.
356*/ 356*/
357QString Global::applicationFileName(const QString& appname, const QString& filename) 357QString Global::applicationFileName(const QString& appname, const QString& filename)
358{ 358{
359 QDir d; 359 QDir d;
360 QString r = getenv("HOME"); 360 QString r = getenv("HOME");
361 r += "/Applications/"; 361 r += "/Applications/";
362 if ( !QFile::exists( r ) ) 362 if ( !QFile::exists( r ) )
363 if ( d.mkdir(r) == false ) 363 if ( d.mkdir(r) == false )
364 return QString::null; 364 return QString::null;
365 r += appname; 365 r += appname;
366 if ( !QFile::exists( r ) ) 366 if ( !QFile::exists( r ) )
367 if ( d.mkdir(r) == false ) 367 if ( d.mkdir(r) == false )
368 return QString::null; 368 return QString::null;
369 r += "/"; r += filename; 369 r += "/"; r += filename;
370 return r; 370 return r;
371} 371}
372 372
373/*! 373/*!
374 \internal 374 \internal
375*/ 375*/
376void Global::createDocDir() 376void Global::createDocDir()
377{ 377{
378 if ( !docDirCreated ) { 378 if ( !docDirCreated ) {
379 docDirCreated = TRUE; 379 docDirCreated = TRUE;
380 mkdir( QPEApplication::documentDir().latin1(), 0755 ); 380 mkdir( QPEApplication::documentDir().latin1(), 0755 );
381 } 381 }
382} 382}
383 383
384 384
385/*! 385/*!
386 Displays a status \a message to the user. This usually appears 386 Displays a status \a message to the user. This usually appears
387 in the taskbar for a short amount of time, then disappears. 387 in the taskbar for a short amount of time, then disappears.
388*/ 388*/
389void Global::statusMessage(const QString& message) 389void Global::statusMessage(const QString& message)
390{ 390{
391#if !defined(QT_NO_COP) 391#if !defined(QT_NO_COP)
392 QCopEnvelope e( "QPE/TaskBar", "message(QString)" ); 392 QCopEnvelope e( "QPE/TaskBar", "message(QString)" );
393 e << message; 393 e << message;
394#endif 394#endif
395} 395}
396 396
397/*! 397/*!
398 \internal 398 \internal
399*/ 399*/
400void Global::applyStyle() 400void Global::applyStyle()
401{ 401{
402#if !defined(QT_NO_COP) 402#if !defined(QT_NO_COP)
403 QCopChannel::send( "QPE/System", "applyStyle()" ); 403 QCopChannel::send( "QPE/System", "applyStyle()" );
404#else 404#else
405 ((QPEApplication *)qApp)->applyStyle(); // apply without needing QCop for floppy version 405 ((QPEApplication *)qApp)->applyStyle(); // apply without needing QCop for floppy version
406#endif 406#endif
407} 407}
408 408
409/*! 409/*!
410 \internal 410 \internal
411*/ 411*/
412QWidget *Global::shutdown( bool ) 412QWidget *Global::shutdown( bool )
413{ 413{
414#if !defined(QT_NO_COP) 414#if !defined(QT_NO_COP)
415 QCopChannel::send( "QPE/System", "shutdown()" ); 415 QCopChannel::send( "QPE/System", "shutdown()" );
416#endif 416#endif
417 return 0; 417 return 0;
418} 418}
419 419
420/*! 420/*!
421 \internal 421 \internal
422*/ 422*/
423QWidget *Global::restart( bool ) 423QWidget *Global::restart( bool )
424{ 424{
425#if !defined(QT_NO_COP) 425#if !defined(QT_NO_COP)
426 QCopChannel::send( "QPE/System", "restart()" ); 426 QCopChannel::send( "QPE/System", "restart()" );
427#endif 427#endif
428 return 0; 428 return 0;
429} 429}
430 430
431/*! 431/*!
432 Explicitly show the current input method. 432 Explicitly show the current input method.
433 433
434 Input methods are indicated in the taskbar by a small icon. If the 434 Input methods are indicated in the taskbar by a small icon. If the
435 input method is activated (shown) then it takes up some proportion 435 input method is activated (shown) then it takes up some proportion
436 of the bottom of the screen, to allow the user to interact (input 436 of the bottom of the screen, to allow the user to interact (input
437 characters) with it. 437 characters) with it.
438 438
439 \sa hideInputMethod() 439 \sa hideInputMethod()
440*/ 440*/
441void Global::showInputMethod() 441void Global::showInputMethod()
442{ 442{
443#if !defined(QT_NO_COP) 443#if !defined(QT_NO_COP)
444 QCopChannel::send( "QPE/TaskBar", "showInputMethod()" ); 444 QCopChannel::send( "QPE/TaskBar", "showInputMethod()" );
445#endif 445#endif
446} 446}
447 447
448/*! 448/*!
449 Explicitly hide the current input method. 449 Explicitly hide the current input method.
450 450
451 The current input method is still indicated in the taskbar, but no 451 The current input method is still indicated in the taskbar, but no
452 longer takes up screen space, and can no longer be interacted with. 452 longer takes up screen space, and can no longer be interacted with.
453 453
454 \sa showInputMethod() 454 \sa showInputMethod()
455*/ 455*/
456void Global::hideInputMethod() 456void Global::hideInputMethod()
457{ 457{
458#if !defined(QT_NO_COP) 458#if !defined(QT_NO_COP)
459 QCopChannel::send( "QPE/TaskBar", "hideInputMethod()" ); 459 QCopChannel::send( "QPE/TaskBar", "hideInputMethod()" );
460#endif 460#endif
461} 461}
462 462
463 463
464/*! 464/*!
465 \internal 465 \internal
466*/ 466*/
467bool Global::isBuiltinCommand( const QString &name ) 467bool Global::isBuiltinCommand( const QString &name )
468{ 468{
469 if(!builtin) 469 if(!builtin)
470 return FALSE; // yes, it can happen 470 return FALSE; // yes, it can happen
471 for (int i = 0; builtin[i].file; i++) { 471 for (int i = 0; builtin[i].file; i++) {
472 if ( builtin[i].file == name ) { 472 if ( builtin[i].file == name ) {
473 return TRUE; 473 return TRUE;
474 } 474 }
475 } 475 }
476 return FALSE; 476 return FALSE;
477} 477}
478 478
479Global::Command* Global::builtin=0; 479Global::Command* Global::builtin=0;
480QGuardedPtr<QWidget> *Global::running=0; 480QGuardedPtr<QWidget> *Global::running=0;
481 481
482/*! 482/*!
483 \class Global::Command 483 \class Global::Command
484 \brief The Global::Command class is internal. 484 \brief The Global::Command class is internal.
485 \internal 485 \internal
486*/ 486*/
487 487
488/*! 488/*!
489 \internal 489 \internal
490*/ 490*/
491void Global::setBuiltinCommands( Command* list ) 491void Global::setBuiltinCommands( Command* list )
492{ 492{
493 if ( running ) 493 if ( running )
494 delete [] running; 494 delete [] running;
495 495
496 builtin = list; 496 builtin = list;
497 int count = 0; 497 int count = 0;
498 if (!builtin) 498 if (!builtin)
499 return; 499 return;
500 while ( builtin[count].file ) 500 while ( builtin[count].file )
501 count++; 501 count++;
502 502
503 running = new QGuardedPtr<QWidget> [ count ]; 503 running = new QGuardedPtr<QWidget> [ count ];
504} 504}
505 505
506/*! 506/*!
507 \internal 507 \internal
508*/ 508*/
509void Global::setDocument( QWidget* receiver, const QString& document ) 509void Global::setDocument( QWidget* receiver, const QString& document )
510{ 510{
511 Emitter emitter(receiver,document); 511 Emitter emitter(receiver,document);
512} 512}
513 513
514/*! 514/*!
515 \internal 515 \internal
516*/ 516*/
517bool Global::terminateBuiltin( const QString& n ) 517bool Global::terminateBuiltin( const QString& n )
518{ 518{
519 if (!builtin) 519 if (!builtin)
520 return FALSE; 520 return FALSE;
521 for (int i = 0; builtin[i].file; i++) { 521 for (int i = 0; builtin[i].file; i++) {
522 if ( builtin[i].file == n ) { 522 if ( builtin[i].file == n ) {
523 delete running[i]; 523 delete running[i];
524 return TRUE; 524 return TRUE;
525 } 525 }
526 } 526 }
527 return FALSE; 527 return FALSE;
528} 528}
529 529
530/*! 530/*!
531 \internal 531 \internal
532*/ 532*/
533void Global::terminate( const AppLnk* app ) 533void Global::terminate( const AppLnk* app )
534{ 534{
535 //if ( terminateBuiltin(app->exec()) ) return; // maybe? haven't tried this 535 //if ( terminateBuiltin(app->exec()) ) return; // maybe? haven't tried this
536 536
537#ifndef QT_NO_COP 537#ifndef QT_NO_COP
538 QCString channel = "QPE/Application/" + app->exec().utf8(); 538 QCString channel = "QPE/Application/" + app->exec().utf8();
539 if ( QCopChannel::isRegistered(channel) ) { 539 if ( QCopChannel::isRegistered(channel) ) {
540 QCopEnvelope e(channel, "quit()"); 540 QCopEnvelope e(channel, "quit()");
541 } 541 }
542#endif 542#endif
543} 543}
544 544
545/*! 545/*!
546 Low-level function to run command \a c. 546 Low-level function to run command \a c.
547 547
548 \warning Do not use this function. Use execute instead. 548 \warning Do not use this function. Use execute instead.
549 549
550 \sa execute() 550 \sa execute()
551*/ 551*/
552void Global::invoke(const QString &c) 552void Global::invoke(const QString &c)
553{ 553{
554 // Convert the command line in to a list of arguments 554 // Convert the command line in to a list of arguments
555 QStringList list = QStringList::split(QRegExp(" *"),c); 555 QStringList list = QStringList::split(QRegExp(" *"),c);
556 556
557#if !defined(QT_NO_COP) 557#if !defined(QT_NO_COP)
558 QString ap=list[0]; 558 QString ap=list[0];
559 // see if the application is already running 559 // see if the application is already running
560 // XXX should lock file /tmp/qcop-msg-ap 560 // XXX should lock file /tmp/qcop-msg-ap
561 if ( QCopChannel::isRegistered( ("QPE/Application/" + ap).latin1() ) ) { 561 if ( QCopChannel::isRegistered( ("QPE/Application/" + ap).latin1() ) ) {
562 // If the channel is already register, the app is already running, so show it. 562 // If the channel is already register, the app is already running, so show it.
563 { QCopEnvelope env( ("QPE/Application/" + ap).latin1(), "raise()" ); } 563 { QCopEnvelope env( ("QPE/Application/" + ap).latin1(), "raise()" ); }
564 564
565 QCopEnvelope e("QPE/System", "notBusy(QString)" ); 565 //QCopEnvelope e("QPE/System", "notBusy(QString)" );
566 e << ap; 566 //e << ap;
567 return; 567 return;
568 } 568 }
569 // XXX should unlock file /tmp/qcop-msg-ap 569 // XXX should unlock file /tmp/qcop-msg-ap
570 //see if it is being started 570 //see if it is being started
571 if ( StartingAppList::isStarting( ap ) ) { 571 if ( StartingAppList::isStarting( ap ) ) {
572 QCopEnvelope e("QPE/System", "notBusy(QString)" ); 572 // FIXME take it out for now, since it leads to a much to short showing of wait if
573 e << ap; 573 // some entry is clicked.
574 // Real cause is that ::execute is called twice for document tab. But it would need some larger changes
575 // to fix that, and with future syncs with qtopia 1.6 it will change anyway big time since somebody there
576 // had the idea that an apploader belongs to the launcher ...
577 //QCopEnvelope e("QPE/System", "notBusy(QString)" );
578 //e << ap;
574 return; 579 return;
575 } 580 }
576 581
577#endif 582#endif
578 583
579#ifdef QT_NO_QWS_MULTIPROCESS 584#ifdef QT_NO_QWS_MULTIPROCESS
580 QMessageBox::warning( 0, "Error", "Could not find the application " + c, "Ok", 0, 0, 0, 1 ); 585 QMessageBox::warning( 0, "Error", "Could not find the application " + c, "Ok", 0, 0, 0, 1 );
581#else 586#else
582 587
583 QStrList slist; 588 QStrList slist;
584 unsigned int j; 589 unsigned int j;
585 for ( j = 0; j < list.count(); j++ ) 590 for ( j = 0; j < list.count(); j++ )
586 slist.append( list[j].utf8() ); 591 slist.append( list[j].utf8() );
587 592
588 const char **args = new (const char *)[slist.count() + 1]; 593 const char **args = new (const char *)[slist.count() + 1];
589 for ( j = 0; j < slist.count(); j++ ) 594 for ( j = 0; j < slist.count(); j++ )
590 args[j] = slist.at(j); 595 args[j] = slist.at(j);
591 args[j] = NULL; 596 args[j] = NULL;
592 597
593#if !defined(QT_NO_COP) 598#if !defined(QT_NO_COP)
594 // an attempt to show a wait... 599 // an attempt to show a wait...
595 // more logic should be used, but this will be fine for the moment... 600 // more logic should be used, but this will be fine for the moment...
596 QCopEnvelope ( "QPE/System", "busy()" ); 601 QCopEnvelope ( "QPE/System", "busy()" );
597#endif 602#endif
598 603
599#ifdef HAVE_QUICKEXEC 604#ifdef HAVE_QUICKEXEC
600 QString libexe = qpeDir()+"/binlib/lib"+args[0] + ".so"; 605 QString libexe = qpeDir()+"/binlib/lib"+args[0] + ".so";
601 qDebug("libfile = %s", libexe.latin1() ); 606 qDebug("libfile = %s", libexe.latin1() );
602 if ( QFile::exists( libexe ) ) { 607 if ( QFile::exists( libexe ) ) {
603 qDebug("calling quickexec %s", libexe.latin1() ); 608 qDebug("calling quickexec %s", libexe.latin1() );
604 quickexecv( libexe.utf8().data(), (const char **)args ); 609 quickexecv( libexe.utf8().data(), (const char **)args );
605 } else 610 } else
606#endif 611#endif
607 { 612 {
608 bool success = false; 613 bool success = false;
609 int pfd [2]; 614 int pfd [2];
610 if ( ::pipe ( pfd ) < 0 ) 615 if ( ::pipe ( pfd ) < 0 )
611 pfd [0] = pfd [1] = -1; 616 pfd [0] = pfd [1] = -1;
612 617
613 pid_t pid = ::fork ( ); 618 pid_t pid = ::fork ( );
614 619
615 if ( pid == 0 ) { // child 620 if ( pid == 0 ) { // child
616 for ( int fd = 3; fd < 100; fd++ ) { 621 for ( int fd = 3; fd < 100; fd++ ) {
617 if ( fd != pfd [1] ) 622 if ( fd != pfd [1] )
618 ::close ( fd ); 623 ::close ( fd );
619 } 624 }
620 ::setpgid ( ::getpid ( ), ::getppid ( )); 625 ::setpgid ( ::getpid ( ), ::getppid ( ));
621 626
622 // Closing of fd[1] indicates that the execvp succeeded! 627 // Closing of fd[1] indicates that the execvp succeeded!
623 if ( pfd [1] >= 0 ) 628 if ( pfd [1] >= 0 )
624 ::fcntl ( pfd [1], F_SETFD, FD_CLOEXEC ); 629 ::fcntl ( pfd [1], F_SETFD, FD_CLOEXEC );
625 630
626 // Try bindir first, so that foo/bar works too 631 // Try bindir first, so that foo/bar works too
627 ::execv ( qpeDir ( ) + "/bin/" + args [0], (char * const *) args ); 632 ::execv ( qpeDir ( ) + "/bin/" + args [0], (char * const *) args );
628 ::execvp ( args [0], (char * const *) args ); 633 ::execvp ( args [0], (char * const *) args );
629 634
630 char resultByte = 1; 635 char resultByte = 1;
631 if ( pfd [1] >= 0 ) 636 if ( pfd [1] >= 0 )
632 ::write ( pfd [1], &resultByte, 1 ); 637 ::write ( pfd [1], &resultByte, 1 );
633 ::_exit ( -1 ); 638 ::_exit ( -1 );
634 } 639 }
635 else if ( pid > 0 ) { 640 else if ( pid > 0 ) {
636 success = true; 641 success = true;
637 642
638 if ( pfd [1] >= 0 ) 643 if ( pfd [1] >= 0 )
639 ::close ( pfd [1] ); 644 ::close ( pfd [1] );
640 if ( pfd [0] >= 0 ) { 645 if ( pfd [0] >= 0 ) {
641 while ( true ) { 646 while ( true ) {
642 char resultByte; 647 char resultByte;
643 int n = ::read ( pfd [0], &resultByte, 1 ); 648 int n = ::read ( pfd [0], &resultByte, 1 );
644 if ( n == 1 ) { 649 if ( n == 1 ) {
645 success = false; 650 success = false;
646 break; 651 break;
647 } 652 }
648 if (( n == -1 ) && (( errno == ECHILD ) || ( errno == EINTR ))) 653 if (( n == -1 ) && (( errno == ECHILD ) || ( errno == EINTR )))
649 continue; 654 continue;
650 655
651 break; // success 656 break; // success
652 } 657 }
653 ::close ( pfd [0] ); 658 ::close ( pfd [0] );
654 } 659 }
655 } 660 }
656 if ( success ) 661 if ( success )
657 StartingAppList::add( list[0] ); 662 StartingAppList::add( list[0] );
658 else 663 else
659 QMessageBox::warning( 0, "Error", "Could not start the application " + c, "Ok", 0, 0, 0, 1 ); 664 QMessageBox::warning( 0, "Error", "Could not start the application " + c, "Ok", 0, 0, 0, 1 );
660 } 665 }
661#endif //QT_NO_QWS_MULTIPROCESS 666#endif //QT_NO_QWS_MULTIPROCESS
662} 667}
663 668
664 669
665/*! 670/*!
666 Executes the application identfied by \a c, passing \a 671 Executes the application identfied by \a c, passing \a
667 document if it isn't null. 672 document if it isn't null.
668 673
669 Note that a better approach might be to send a QCop message to the 674 Note that a better approach might be to send a QCop message to the
670 application's QPE/Application/\e{appname} channel. 675 application's QPE/Application/\e{appname} channel.
671*/ 676*/
672void Global::execute( const QString &c, const QString& document ) 677void Global::execute( const QString &c, const QString& document )
673{ 678{
674 if ( qApp->type() != QApplication::GuiServer ) { 679 if ( qApp->type() != QApplication::GuiServer ) {
675 // ask the server to do the work 680 // ask the server to do the work
676#if !defined(QT_NO_COP) 681#if !defined(QT_NO_COP)
677 if ( document.isNull() ) { 682 if ( document.isNull() ) {
678 QCopEnvelope e( "QPE/System", "execute(QString)" ); 683 QCopEnvelope e( "QPE/System", "execute(QString)" );
679 e << c; 684 e << c;
680 } else { 685 } else {
681 QCopEnvelope e( "QPE/System", "execute(QString,QString)" ); 686 QCopEnvelope e( "QPE/System", "execute(QString,QString)" );
682 e << c << document; 687 e << c << document;
683 } 688 }
684#endif 689#endif
685 return; 690 return;
686 } 691 }
687 692
688 // Attempt to execute the app using a builtin class for the app first 693 // Attempt to execute the app using a builtin class for the app first
689 // else try and find it in the bin directory 694 // else try and find it in the bin directory
690 if (builtin) { 695 if (builtin) {
691 for (int i = 0; builtin[i].file; i++) { 696 for (int i = 0; builtin[i].file; i++) {
692 if ( builtin[i].file == c ) { 697 if ( builtin[i].file == c ) {
693 if ( running[i] ) { 698 if ( running[i] ) {
694 if ( !document.isNull() && builtin[i].documentary ) 699 if ( !document.isNull() && builtin[i].documentary )
695 setDocument(running[i], document); 700 setDocument(running[i], document);
696 running[i]->raise(); 701 running[i]->raise();
697 running[i]->show(); 702 running[i]->show();
698 running[i]->setActiveWindow(); 703 running[i]->setActiveWindow();
699 } else { 704 } else {
700 running[i] = builtin[i].func( builtin[i].maximized ); 705 running[i] = builtin[i].func( builtin[i].maximized );
701 } 706 }
702#ifndef QT_NO_COP 707#ifndef QT_NO_COP
703 QCopEnvelope e("QPE/System", "notBusy(QString)" ); 708 QCopEnvelope e("QPE/System", "notBusy(QString)" );
704 e << c; // that was quick ;-) 709 e << c; // that was quick ;-)
705#endif 710#endif
706 return; 711 return;
707 } 712 }
708 } 713 }
709 } 714 }
710 715
711 //Global::invoke(c, document); 716 //Global::invoke(c, document);
712 717
713 // Convert the command line in to a list of arguments 718 // Convert the command line in to a list of arguments
714 QStringList list = QStringList::split(QRegExp(" *"),c); 719 QStringList list = QStringList::split(QRegExp(" *"),c);
715 720
716#if !defined(QT_NO_COP) 721#if !defined(QT_NO_COP)
717 QString ap=list[0]; 722 QString ap=list[0];
718 723
719 qDebug("executing %s", ap.latin1() ); 724 qDebug("executing %s", ap.latin1() );
720 725
721 /* if need be, sending a qcop message will result in an invoke, see 726 /* if need be, sending a qcop message will result in an invoke, see
722 preceeding function */ 727 preceeding function */
723 invoke( ap ); 728 invoke( ap );
724 //{ QCopEnvelope env( ("QPE/Application/" + ap).latin1(), "raise()" ); } 729 //{ QCopEnvelope env( ("QPE/Application/" + ap).latin1(), "raise()" ); }
725 if ( !document.isEmpty() ) { 730 if ( !document.isEmpty() ) {
726 QCopEnvelope env( ("QPE/Application/" + ap).latin1(), "setDocument(QString)" ); 731 QCopEnvelope env( ("QPE/Application/" + ap).latin1(), "setDocument(QString)" );
727 env << document; 732 env << document;
728 } 733 }
729#endif 734#endif
730} 735}
731 736
732/*! 737/*!
733 Returns the string \a s with the characters '\', '"', and '$' quoted 738 Returns the string \a s with the characters '\', '"', and '$' quoted
734 by a preceeding '\'. 739 by a preceeding '\'.
735 740
736 \sa stringQuote() 741 \sa stringQuote()
737*/ 742*/
738QString Global::shellQuote(const QString& s) 743QString Global::shellQuote(const QString& s)
739{ 744{
740 QString r="\""; 745 QString r="\"";
741 for (int i=0; i<(int)s.length(); i++) { 746 for (int i=0; i<(int)s.length(); i++) {
742 char c = s[i].latin1(); 747 char c = s[i].latin1();
743 switch (c) { 748 switch (c) {
744 case '\\': case '"': case '$': 749 case '\\': case '"': case '$':
745 r+="\\"; 750 r+="\\";
746 } 751 }
747 r += s[i]; 752 r += s[i];
748 } 753 }
749 r += "\""; 754 r += "\"";
750 return r; 755 return r;
751} 756}
752 757
753/*! 758/*!
754 Returns the string \a s with the characters '\' and '"' quoted by a 759 Returns the string \a s with the characters '\' and '"' quoted by a
755 preceeding '\'. 760 preceeding '\'.
756 761
757 \sa shellQuote() 762 \sa shellQuote()
758*/ 763*/
759QString Global::stringQuote(const QString& s) 764QString Global::stringQuote(const QString& s)
760{ 765{
761 QString r="\""; 766 QString r="\"";
762 for (int i=0; i<(int)s.length(); i++) { 767 for (int i=0; i<(int)s.length(); i++) {
763 char c = s[i].latin1(); 768 char c = s[i].latin1();
764 switch (c) { 769 switch (c) {
765 case '\\': case '"': 770 case '\\': case '"':
766 r+="\\"; 771 r+="\\";
767 } 772 }
768 r += s[i]; 773 r += s[i];
769 } 774 }
770 r += "\""; 775 r += "\"";
771 return r; 776 return r;
772} 777}
773 778
774/*! 779/*!
775 Finds all documents on the system's document directories which 780 Finds all documents on the system's document directories which
776 match the filter \a mimefilter, and appends the resulting DocLnk 781 match the filter \a mimefilter, and appends the resulting DocLnk
777 objects to \a folder. 782 objects to \a folder.
778*/ 783*/
779void Global::findDocuments(DocLnkSet* folder, const QString &mimefilter) 784void Global::findDocuments(DocLnkSet* folder, const QString &mimefilter)
780{ 785{
781 QString homedocs = QString(getenv("HOME")) + "/Documents"; 786 QString homedocs = QString(getenv("HOME")) + "/Documents";
782 DocLnkSet d(homedocs,mimefilter); 787 DocLnkSet d(homedocs,mimefilter);
783 folder->appendFrom(d); 788 folder->appendFrom(d);
784 /** let's do intellegint way of searching these files 789 /** let's do intellegint way of searching these files
785 * a) the user don't want to check mediums global 790 * a) the user don't want to check mediums global
786 * b) the user wants to check but use the global options for it 791 * b) the user wants to check but use the global options for it
787 * c) the user wants to check it but not this medium 792 * c) the user wants to check it but not this medium
788 * d) the user wants to check and this medium as well 793 * d) the user wants to check and this medium as well
789 * 794 *
790 * In all cases we need to apply a different mimefilter to 795 * In all cases we need to apply a different mimefilter to
791 * the medium. 796 * the medium.
792 * a) mimefilter.isEmpty() we need to apply the responding filter 797 * a) mimefilter.isEmpty() we need to apply the responding filter
793 * either the global or the one on the medium 798 * either the global or the one on the medium
794 * 799 *
795 * b) mimefilter is set to an application we need to find out if the 800 * b) mimefilter is set to an application we need to find out if the
796 * mimetypes are included in the mime mask of the medium 801 * mimetypes are included in the mime mask of the medium
797 */ 802 */
798 StorageInfo storage; 803 StorageInfo storage;
799 const QList<FileSystem> &fs = storage.fileSystems(); 804 const QList<FileSystem> &fs = storage.fileSystems();
800 QListIterator<FileSystem> it ( fs ); 805 QListIterator<FileSystem> it ( fs );
801 for ( ; it.current(); ++it ) { 806 for ( ; it.current(); ++it ) {
802 if ( (*it)->isRemovable() ) { // let's find out if we should search on it 807 if ( (*it)->isRemovable() ) { // let's find out if we should search on it
803 // this is a candidate look at the cf and see if we should search on it 808 // this is a candidate look at the cf and see if we should search on it
804 QString path = (*it)->path(); 809 QString path = (*it)->path();
805 if( !checkStorage((*it)->path() + "/.opiestorage.cf" ) ) 810 if( !checkStorage((*it)->path() + "/.opiestorage.cf" ) )
806 continue; 811 continue;
807 DocLnkSet ide( path, mimefilter ); 812 DocLnkSet ide( path, mimefilter );
808 folder->appendFrom(ide); 813 folder->appendFrom(ide);
809 } else if ( (*it)->disk() == "/dev/mtdblock6" || (*it)->disk() == "tmpfs" ) { 814 } else if ( (*it)->disk() == "/dev/mtdblock6" || (*it)->disk() == "tmpfs" ) {
810 QString path = (*it)->path() + "/Documents"; 815 QString path = (*it)->path() + "/Documents";
811 DocLnkSet ide( path, mimefilter ); 816 DocLnkSet ide( path, mimefilter );
812 folder->appendFrom(ide); 817 folder->appendFrom(ide);
813 } 818 }
814 } 819 }
815} 820}
816 821
817QStringList Global::languageList() 822QStringList Global::languageList()
818{ 823{
819 QString lang = getenv("LANG"); 824 QString lang = getenv("LANG");
820 QStringList langs; 825 QStringList langs;
821 langs.append(lang); 826 langs.append(lang);
822 int i = lang.find("."); 827 int i = lang.find(".");
823 if ( i > 0 ) 828 if ( i > 0 )
824 lang = lang.left( i ); 829 lang = lang.left( i );
825 i = lang.find( "_" ); 830 i = lang.find( "_" );
826 if ( i > 0 ) 831 if ( i > 0 )
827 langs.append(lang.left(i)); 832 langs.append(lang.left(i));
828 return langs; 833 return langs;
829} 834}
830 835
831QStringList Global::helpPath() 836QStringList Global::helpPath()
832{ 837{
838 QString qpeDir = QPEApplication::qpeDir();
833 QStringList path; 839 QStringList path;
834 QStringList langs = Global::languageList(); 840 QStringList langs = Global::languageList();
835 for (QStringList::ConstIterator it = langs.fromLast(); it!=langs.end(); --it) { 841 for (QStringList::ConstIterator it = langs.fromLast(); it!=langs.end(); --it) {
836 QString lang = *it; 842 QString lang = *it;
837 if ( !lang.isEmpty() ) 843 if ( !lang.isEmpty() )
838 path += QPEApplication::qpeDir() + "/help/" + lang + "/html"; 844 path += qpeDir + "/help/" + lang + "/html";
839 } 845 }
840 path += QPEApplication::qpeDir() + "/pics"; 846 path += qpeDir + "/pics";
841 path += QPEApplication::qpeDir() + "/help/html"; 847 path += qpeDir + "/help/html";
842 path += QPEApplication::qpeDir() + "/docs"; 848 /* we even put english into the en dir so try it as fallback as well for opie */
849 path += qpeDir + "/help/en/html";
850 path += qpeDir + "/docs";
843 851
844 852
845 return path; 853 return path;
846} 854}
847 855
848 856
849#include "global.moc" 857#include "global.moc"
diff --git a/library/inlinepics_p.h b/library/inlinepics_p.h
index 8ac1a69..594a0ea 100644
--- a/library/inlinepics_p.h
+++ b/library/inlinepics_p.h
@@ -1,3048 +1,3039 @@
1/* Generated by qembed */ 1#ifndef _QEMBED_1804289383
2#ifndef _667541281 2#define _QEMBED_1804289383
3#define _667541281
4#include <qimage.h> 3#include <qimage.h>
5#include <stdlib.h> 4#include <qdict.h>
6static const QRgb _to1_data[] = { 5static const QRgb _to1_data[] = {
7 0x0,0x0,0x1c9191aa,0x7daeaec1,0xaabfbfcd,0xa3c5c5d3,0x63bfbfce,0x8b6b6c7,0x0,0x0,0x0,0x0,0x0,0x0, 6 0x0,0x0,0x1c9191aa,0x7daeaec1,0xaabfbfcd,0xa3c5c5d3,0x63bfbfce,0x8b6b6c7,0x0,0x0,0x0,0x0,0x0,0x0,
8 0x0,0x478c8ca6,0xeca3a9c1,0xf9bbd1e5,0xf7d0e5f5,0xf8d9e7f4,0xfbccd9ea,0xccc9cad8,0x19babaca,0x0,0x0,0x0,0x0,0x0, 7 0x0,0x478c8ca6,0xeca3a9c1,0xf9bbd1e5,0xf7d0e5f5,0xf8d9e7f4,0xfbccd9ea,0xccc9cad8,0x19babaca,0x0,0x0,0x0,0x0,0x0,
9 0x1c747493,0xea8f95b4,0xf4a3d0f4,0xf5c6efff,0xf5d6f4ff,0xf5dbf5ff,0xf5d2f3ff,0xf5b9d8f2,0xbbc9cad8,0x1b8b8c9,0x0,0x0,0x0,0x0, 8 0x1c747493,0xea8f95b4,0xf4a3d0f4,0xf5c6efff,0xf5d6f4ff,0xf5dbf5ff,0xf5d2f3ff,0xf5b9d8f2,0xbbc9cad8,0x1b8b8c9,0x0,0x0,0x0,0x0,
10 0x7d7e7e9a,0xf38881b1,0xf7a8acd4,0xf5b3e3ff,0xf5c2edff,0xf5c6efff,0xf6c1d9ed,0xf7b6a3c3,0xf5b7c7e4,0x31b5b5c6,0x0,0x0,0x0,0x0, 9 0x7d7e7e9a,0xf38881b1,0xf7a8acd4,0xf5b3e3ff,0xf5c2edff,0xf5c6efff,0xf6c1d9ed,0xf7b6a3c3,0xf5b7c7e4,0x31b5b5c6,0x0,0x0,0x0,0x0,
11 0xab7b7b98,0xbc435dbe,0xe6a45a8b,0xdf92cafe,0xf1b495b7,0xdaa4bae3,0xde9cc3f1,0xf9b36189,0xee9dbdeb,0x60b9b9c9,0x0,0x0,0x0,0x0, 10 0xab7b7b98,0xbc435dbe,0xe6a45a8b,0xdf92cafe,0xf1b495b7,0xdaa4bae3,0xde9cc3f1,0xf9b36189,0xee9dbdeb,0x60b9b9c9,0x0,0x0,0x0,0x0,
12 0xa3717190,0xbc4b65bc,0xcea43e71,0x9975b2fc,0xc0ab6592,0xa597a3d9,0x9d7cabf0,0xdba84172,0xe49cb3e1,0x56afafc2,0x0,0x0,0x0,0x0, 11 0xa3717190,0xbc4b65bc,0xcea43e71,0x9975b2fc,0xc0ab6592,0xa597a3d9,0x9d7cabf0,0xdba84172,0xe49cb3e1,0x56afafc2,0x0,0x0,0x0,0x0,
13 0x61636385,0xe97e5c87,0xbb9f699d,0x9ba5d2f9,0xacc9b2c4,0x9fc7dcec,0xa7b3b2d3,0xc0a46a9a,0xf2b5a7be,0x1aa3a3b8,0x0,0x0,0x0,0x0, 12 0x61636385,0xe97e5c87,0xbb9f699d,0x9ba5d2f9,0xacc9b2c4,0x9fc7dcec,0xa7b3b2d3,0xc0a46a9a,0xf2b5a7be,0x1aa3a3b8,0x0,0x0,0x0,0x0,
14 0x857577b,0xc966678a,0xc07d9dca,0x9ac3edfe,0x99eafeff,0x99ecfeff,0x9dc6edfc,0xdca5b5d2,0xdfb2b2c4,0x3b7b7c8,0x0,0x0,0x0,0x0, 13 0x857577b,0xc966678a,0xc07d9dca,0x9ac3edfe,0x99eafeff,0x99ecfeff,0x9dc6edfc,0xdca5b5d2,0xdfb2b2c4,0x3b7b7c8,0x0,0x0,0x0,0x0,
15 0x0,0x1958587c,0xb8696a8b,0xe5878faa,0xceb0b7c8,0xd3b6bbcb,0xeb9ea2b9,0xcd9595ad,0xeea3a3b7,0xb1cb9f58,0x4ee4991e,0x0,0x0,0x0, 14 0x0,0x1958587c,0xb8696a8b,0xe5878faa,0xceb0b7c8,0xd3b6bbcb,0xeb9ea2b9,0xcd9595ad,0xeea3a3b7,0xb1cb9f58,0x4ee4991e,0x0,0x0,0x0,
16 0x0,0x0,0x5b5b7e,0x2f606083,0x5e6e6e8e,0x54747493,0x1a777795,0x0,0xb1a57239,0xfff7d37d,0xf7f7d46f,0x4fe4991e,0x0,0x0, 15 0x0,0x0,0x5b5b7e,0x2f606083,0x5e6e6e8e,0x54747493,0x1a777795,0x0,0xb1a57239,0xfff7d37d,0xf7f7d46f,0x4fe4991e,0x0,0x0,
17 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x449f5b0e,0xf3dd921d,0xfffddc87,0xf7f7d36f,0x4fe4991e,0x0, 16 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x449f5b0e,0xf3dd921d,0xfffddc87,0xf7f7d36f,0x4fe4991e,0x0,
18 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x459f5b0e,0xf3dd921d,0xfffddc87,0xf6f7d36f,0x4de4991e, 17 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x459f5b0e,0xf3dd921d,0xfffddc87,0xf6f7d36f,0x4de4991e,
19 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x459f5b0e,0xf3dd921c,0xfff0c975,0xa8cdab7a, 18 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x459f5b0e,0xf3dd921c,0xfff0c975,0xa8cdab7a,
20 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x449f5b0e,0xaa977354,0x4a8787a1 19 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x449f5b0e,0xaa977354,0x4a8787a1
21}; 20};
22 21
22/* Generated by qembed */
23static const QRgb accessories_data[] = {
24 0x0,0x0,0x0,0x2fcac00,0x49feb50d,0xd2ffd436,0x68e2a50e,0x4f7a500,0x8afabb25,0x3edd9508,0x0,0x0,0x0,0x0,
25 0x0,0xfdad00,0x31feb007,0xb9ffd147,0xfdfff275,0xffffff72,0xe6f8d235,0xa0f5be35,0xfffff883,0xf3f9dc4d,0x53d6890a,0x301b00,0x0,0x0,
26 0x2f3a600,0x97fec53f,0xfcffec94,0xffffffa4,0xffffff87,0xffffe951,0xfffed131,0xfffbc232,0xfffef974,0xfffff55e,0xfaf7cb35,0x6bd27f08,0x1522b00,0x0,
27 0x2e09900,0x97f9c240,0xfffffdba,0xfffff082,0xffffcf34,0xffffd534,0xffffed52,0xfffec724,0xfff6bd27,0xfffce047,0xffffd636,0xfdf8b418,0x77c56901,0x1000000,
28 0xa3f6ab09,0xbcfac646,0xffffc635,0xffffc01a,0xffffd332,0xffffe649,0xfffff761,0xffffd939,0xffffdd40,0xfff1b92b,0xfff9bd21,0xf1e6960c,0x517a3c00,0x1000000,
29 0x12bb8001,0xbcf6c643,0xffffea66,0xfffdc421,0xffffde40,0xfffff057,0xfffffe79,0xffffe94e,0xffffef55,0xfffcea56,0xffe3981c,0xd3cd790b,0x84c75e02,0x279c3d00,
30 0x0,0xdb57b00,0xe6f9bb1a,0xfffdd73b,0xfff8c52d,0xfffff865,0xfff8d75b,0xfff9d943,0xfff1cb44,0xffefc33b,0xfff9d03a,0xe7d78b14,0x76904202,0x11260f00,
31 0x0,0x2e89700,0xdcfab310,0xfff8b417,0xfff5ac13,0xffea960a,0xffe88f05,0xffecb64c,0xfffaee74,0xffecbc39,0xfada7f0c,0x36512100,0x1000000,0x0,
32 0x0,0x2e28d00,0xdcf8bc20,0xffffd635,0xfffed334,0xfff8c631,0xfff2b630,0xffefb22e,0xffedad28,0xfffbc325,0xfae89e19,0x295c2200,0x0,0x0,
33 0x0,0x1d88300,0xcdf0b124,0xffffe84e,0xffffeb50,0xffffec54,0xffffe552,0xffffe043,0xffffdf41,0xffffdd3f,0xfae7aa2a,0x295b2200,0x0,0x0,
34 0x0,0x0,0x25bc6c02,0xd6e7ac2f,0xfffef667,0xfffffd70,0xfffff668,0xfffff35b,0xfffff158,0xfef5cf47,0xd0c1741d,0x1b3e1700,0x0,0x0,
35 0x0,0x0,0x0,0x1aa65600,0xc9dc952f,0xfffdf18f,0xfffffe86,0xfff9e161,0xe1d08d2d,0x70883a06,0x11140700,0x0,0x0,0x0,
36 0x0,0x0,0x0,0x0,0x10924200,0xb9cf7a2f,0xedd99445,0x8695420b,0x1b2c1000,0x1000000,0x0,0x0,0x0,0x0,
37 0x0,0x0,0x0,0x0,0x0,0xa782e00,0x214b1c00,0x2000000,0x0,0x0,0x0,0x0,0x0,0x0
38};
39
40static const QRgb appearance_data[] = {
41 0x0,0x0,0x0,0x0,0x0,0x6e5c528,0x95f2e089,0x51d3bf5a,0x0,0x0,0x0,0x0,0x0,0x0,
42 0x0,0x0,0x0,0x0,0x0,0x68efd96a,0xfffefae1,0xeef3e9b4,0x20847319,0x0,0x0,0x0,0x0,0x0,
43 0x0,0x0,0x0,0x0,0x10e6c626,0xe6f8ecaa,0xfffffcd8,0xfffffbd7,0x9ed6c56a,0x1090909,0x0,0x0,0x0,0x0,
44 0x0,0x0,0x1efdf8d,0x11e4c322,0xa6f3e078,0xfffff9c6,0xfffffbc5,0xfffffbc7,0xfaf9f0ae,0x59ceb843,0x5bea322,0x0,0x0,0x0,
45 0x41ecd14b,0x93f3df73,0xc9f6e686,0xf1f9ed98,0xfffbf3b3,0xfffbf5d0,0xfffbf296,0xfffbf4bf,0xfffaf2be,0xfefcf4ab,0xe2f6e78e,0xb3f3e17e,0x7debd462,0x18c5aa23,
46 0xdef3d84a,0xfffdeb57,0xfffef150,0xfffef345,0xfffbf4ba,0xffffffff,0xffffffff,0xffffffff,0xfffffefc,0xfffbee52,0xfffef24a,0xfffdef54,0xfffde657,0x93bba42f,
47 0x57d7b91e,0xfaf9e136,0xfffef142,0xfffff442,0xfff2ebbd,0xff6f6f6f,0xffdedede,0xff858585,0xffbebebd,0xfffbef60,0xfffff343,0xfffded40,0xe6dbc128,0x35483d09,
48 0x0,0x6ad5ba27,0xfdfbe84d,0xfffef45a,0xfff9ef7c,0xff8a866f,0xffede7bc,0xff9c987f,0xffd8d196,0xfffef459,0xfffef159,0xede3cc39,0x4654480c,0x0,
49 0x0,0x14d420c,0xa4e9d141,0xfffef371,0xffefe58e,0xfff0e8ab,0xfff1eaad,0xfff0e8ab,0xffeee7a9,0xfff8ee71,0xfef9e962,0x69786814,0x1040404,0x0,
50 0x0,0x0,0x6bebd142,0xfffef386,0xfff0e9ad,0xffe8e8e8,0xffe7e7e7,0xffe8e8e8,0xffedebe0,0xfffbf288,0xfaf3e26b,0x2b413807,0x0,0x0,
51 0x0,0x0,0x82f0d854,0xfffef59f,0xfff9f29e,0xffeae4c3,0xffede7c9,0xffede8c9,0xfff0e8ad,0xfffff9a3,0xfcf7e983,0x376e5e0f,0x0,0x0,
52 0x0,0x0,0xa1f4df6f,0xfffef7b5,0xfffef8b4,0xfffcf19c,0xf1e6d776,0xf8f1e383,0xfffef6ab,0xfffef8b7,0xfffdf1a2,0x53927e19,0x0,0x0,
53 0x0,0x0,0x9befd761,0xfcf7e896,0xd2cdbc5d,0x6a7f6f1c,0x1c1b1703,0x215e500d,0x80c6b140,0xe5ebda7c,0xfdf9e78f,0x5986741a,0x0,0x0,
54 0x0,0x0,0x16937e18,0x456a5b13,0xf050401,0x1b1b1b,0x0,0x0,0x222222,0x11574a0a,0x487b6a18,0xf100e02,0x0,0x0
55};
56
23static const QRgb AppsIcon_data[] = { 57static const QRgb AppsIcon_data[] = {
24 0xff83acde,0xff8bb5e6,0xff81b0e6,0xff74a9e6,0xff65a2e6,0xff5a9de6,0xff5198e6,0xff4f97e6,0xff4f97e6,0xff4f97e6,0xff4d96e5,0xaa3a8dda,0x0,0x0, 58 0xff83acde,0xff8bb5e6,0xff81b0e6,0xff74a9e6,0xff65a2e6,0xff5a9de6,0xff5198e6,0xff4f97e6,0xff4f97e6,0xff4f97e6,0xff4d96e5,0xaa3a8dda,0x0,0x0,
25 0xff91b8e5,0xffafd2fc,0xff9ac9fc,0xff7ebafc,0xff5fabfc,0xff48a0fc,0xff3597fc,0xff3094fc,0xff2f94fc,0xff2f94fc,0xff2d93fa,0xaa218aea,0x0,0x0, 59 0xff91b8e5,0xffafd2fc,0xff9ac9fc,0xff7ebafc,0xff5fabfc,0xff48a0fc,0xff3597fc,0xff3094fc,0xff2f94fc,0xff2f94fc,0xff2d93fa,0xaa218aea,0x0,0x0,
26 0xffa0c0e5,0xffddebfb,0xffd7e9fb,0xffd0e5fb,0xffc7e1fb,0xffc1defb,0xffbadcfb,0xffb7dafb,0xffb4d9fb,0xffb2d8fb,0xffa8d2f8,0xaa74b3e5,0x0,0x0, 60 0xffa0c0e5,0xffddebfb,0xffd7e9fb,0xffd0e5fb,0xffc7e1fb,0xffc1defb,0xffbadcfb,0xffb7dafb,0xffb4d9fb,0xffb2d8fb,0xffa8d2f8,0xaa74b3e5,0x0,0x0,
27 0xffa9c5e6,0xfff4faff,0xfff2f9ff,0xffeff8ff,0xffebf7ff,0xffe8f6ff,0xffe5f5ff,0xffe0f3ff,0xffddf2ff,0xffdaf1ff,0xffcce8fb,0xaa87bde4,0x0,0x0, 61 0xffa9c5e6,0xfff4faff,0xfff2f9ff,0xffeff8ff,0xffebf7ff,0xffe8f6ff,0xffe5f5ff,0xffe0f3ff,0xffddf2ff,0xffdaf1ff,0xffcce8fb,0xaa87bde4,0x0,0x0,
28 0xffa8c5e6,0xfff2faff,0xfff0f9ff,0xffecf7ff,0xffe2f1fd,0xffdaeefe,0xffd4ecff,0xffc6e5ff,0xffbde1ff,0xffb7deff,0xffabd6fc,0xaa72b2e8,0x0,0x0, 62 0xffa8c5e6,0xfff2faff,0xfff0f9ff,0xffecf7ff,0xffe2f1fd,0xffdaeefe,0xffd4ecff,0xffc6e5ff,0xffbde1ff,0xffb7deff,0xffabd6fc,0xaa72b2e8,0x0,0x0,
29 0xffa7c5e6,0xffeff9ff,0xffedf8ff,0xffe7f5fe,0xffc5ddf4,0xffb5d4f6,0xffadd4fc,0xff8cc4fc,0xff74b8fc,0xff68affc,0xff63acfb,0xd953a2f7,0x8e50a3f8,0x1f48a1f7, 63 0xffa7c5e6,0xffeff9ff,0xffedf8ff,0xffe7f5fe,0xffc5ddf4,0xffb5d4f6,0xffadd4fc,0xff8cc4fc,0xff74b8fc,0xff68affc,0xff63acfb,0xd953a2f7,0x8e50a3f8,0x1f48a1f7,
30 0xffa6c5e6,0xffecf8ff,0xffe9f7ff,0xffe3f4fe,0xffbfd8f0,0xffcbddf3,0xffdcecfc,0xffd1e6fc,0xffc9e3fc,0xffc3e0fc,0xffbfdffc,0xffbcddfc,0xffa5d2f8,0x3991c9f5, 64 0xffa6c5e6,0xffecf8ff,0xffe9f7ff,0xffe3f4fe,0xffbfd8f0,0xffcbddf3,0xffdcecfc,0xffd1e6fc,0xffc9e3fc,0xffc3e0fc,0xffbfdffc,0xffbcddfc,0xffa5d2f8,0x3991c9f5,
31 0xffa4c4e6,0xffe8f6ff,0xffe5f5ff,0xffdef1fe,0xffbfd9f1,0xffd9e7f6,0xfff2faff,0xffecf7ff,0xffe8f6ff,0xffe3f4ff,0xffdff2ff,0xffdbf1ff,0xffbde2fa,0x39a4d5f6, 65 0xffa4c4e6,0xffe8f6ff,0xffe5f5ff,0xffdef1fe,0xffbfd9f1,0xffd9e7f6,0xfff2faff,0xffecf7ff,0xffe8f6ff,0xffe3f4ff,0xffdff2ff,0xffdbf1ff,0xffbde2fa,0x39a4d5f6,
32 0xffa3c3e6,0xffe5f5ff,0xffe1f4ff,0xffdbf0fe,0xffbdd8f1,0xffd6e6f6,0xffedf8ff,0xffe7f6ff,0xffe3f4ff,0xffdef2ff,0xffd9f1ff,0xffd6f0ff,0xffb9e1fa,0x39a1d4f6, 66 0xffa3c3e6,0xffe5f5ff,0xffe1f4ff,0xffdbf0fe,0xffbdd8f1,0xffd6e6f6,0xffedf8ff,0xffe7f6ff,0xffe3f4ff,0xffdef2ff,0xffd9f1ff,0xffd6f0ff,0xffb9e1fa,0x39a1d4f6,
33 0xffa2c3e6,0xffe2f4ff,0xffdef3ff,0xffd7effe,0xffbad7f1,0xffd2e5f6,0xffe9f7ff,0xffe3f4ff,0xffdef2ff,0xffdaf0ff,0xffd4efff,0xffd1eeff,0xffb5dffa,0x399ed3f6, 67 0xffa2c3e6,0xffe2f4ff,0xffdef3ff,0xffd7effe,0xffbad7f1,0xffd2e5f6,0xffe9f7ff,0xffe3f4ff,0xffdef2ff,0xffdaf0ff,0xffd4efff,0xffd1eeff,0xffb5dffa,0x399ed3f6,
34 0xff9abee4,0xffd3ebfb,0xffd0eafb,0xffcae7fa,0xffb3d2ef,0xffcfe4f6,0xffe4f5ff,0xffdef2ff,0xffd9f1ff,0xffd4efff,0xffd0edff,0xffcdecff,0xffb2defa,0x399bd2f6, 68 0xff9abee4,0xffd3ebfb,0xffd0eafb,0xffcae7fa,0xffb3d2ef,0xffcfe4f6,0xffe4f5ff,0xffdef2ff,0xffd9f1ff,0xffd4efff,0xffd0edff,0xffcdecff,0xffb2defa,0x399bd2f6,
35 0xaa6da6d8,0xaa8bbee4,0xaa89bde4,0xaa87bce4,0xc696c0e5,0xffcce3f6,0xffe0f4ff,0xffdaf1ff,0xffd6f0ff,0xffd1eeff,0xffcdecff,0xffc9ecff,0xffafddfa,0x399ad0f6, 69 0xaa6da6d8,0xaa8bbee4,0xaa89bde4,0xaa87bce4,0xc696c0e5,0xffcce3f6,0xffe0f4ff,0xffdaf1ff,0xffd6f0ff,0xffd1eeff,0xffcdecff,0xffc9ecff,0xffafddfa,0x399ad0f6,
36 0x0,0x0,0x0,0x0,0x559bc4ea,0xffb2d7f3,0xffc2e4fa,0xffbce2fa,0xffb9e1fa,0xffb6dffa,0xffb2defa,0xffafddfa,0xff9ad2f8,0x3988c9f6, 70 0x0,0x0,0x0,0x0,0x559bc4ea,0xffb2d7f3,0xffc2e4fa,0xffbce2fa,0xffb9e1fa,0xffb6dffa,0xffb2defa,0xffafddfa,0xff9ad2f8,0x3988c9f6,
37 0x0,0x0,0x0,0x0,0x138bbeea,0x399dccf1,0x39a9d6f6,0x39a4d5f6,0x39a2d4f6,0x399fd3f6,0x399bd1f6,0x399ad1f6,0x3988caf6,0xd79c3f6 71 0x0,0x0,0x0,0x0,0x138bbeea,0x399dccf1,0x39a9d6f6,0x39a4d5f6,0x39a2d4f6,0x399fd3f6,0x399bd1f6,0x399ad1f6,0x3988caf6,0xd79c3f6
38}; 72};
39 73
74static const QRgb back_inactive_data[] = {
75 0x0,0x0,0x0,0x0,0x0,0x0,0x1f1f1f1,0x5f1f1f1,0x5f1f1f1,0x4f1f1f1,0x1f1f1f1,0x0,0x0,0x0,
76 0x0,0x0,0x0,0x0,0x0,0x2f1f1f1,0x33a7bef1,0x9483a4f1,0x997d9ef1,0x947798f1,0x78668bf1,0xb3a6dbf,0x0,0x0,
77 0x0,0x0,0x0,0x0,0x1f1f1f1,0x32a8bff1,0xca8caaec,0xffc5d4e8,0xffc7d5e8,0xffc1d1e8,0xe2738dcc,0x152b4b72,0x0,0x0,
78 0x0,0x0,0x0,0x1f1f1f1,0x27a5bdf1,0xc384a4ec,0xfebccbdd,0xffd2d9db,0xffcfd7dd,0xeb8297c7,0x4a34557f,0x2000000,0x0,0x0,
79 0x0,0x0,0xf1f1f1,0x18c6d4f1,0xa786a5e5,0xffa9bbd4,0xffc2cbd1,0xffc0cad1,0xf1889cc7,0x5a3a5781,0x5000000,0x0,0x0,0x0,
80 0x0,0x0,0xff1f1f1,0x8e82a1e8,0xf99ab1cb,0xffb4c0c6,0xffb4c0c6,0xfb8ca0ca,0x8643669b,0xa172235,0x0,0x0,0x0,0x0,
81 0x0,0x0,0x4c7191f1,0xf688a1c7,0xffa7b5bb,0xffa8b5bb,0xff93a7c0,0x983f619a,0xe172a4a,0x0,0x0,0x0,0x0,0x0,
82 0x0,0x0,0x1e7692f1,0xcb617fcb,0xff99a8b5,0xff9dacb4,0xff9baab4,0xd25b79c5,0x1e2657c6,0x0,0x0,0x0,0x0,0x0,
83 0x0,0x0,0x2f1f1f1,0x234866c1,0xd16580bb,0xff91a2ad,0xff94a4ac,0xff8a9daf,0xb94f71c4,0xe2049a7,0x0,0x0,0x0,0x0,
84 0x0,0x0,0x0,0x2aeb5dd,0x433a60ce,0xef667fb9,0xff8c9ca7,0xff8d9da7,0xfb7f92ab,0x8c4367bb,0x41d48ab,0x0,0x0,0x0,
85 0x0,0x0,0x0,0xf1f1f1,0x3949cdb,0x59355ad1,0xf36c81b1,0xff8798a1,0xff8799a1,0xfd788ba9,0x83355cc2,0x1173372,0x0,0x0,
86 0x0,0x0,0x0,0x0,0xf1f1f1,0x3f1f1f1,0x5e2654ca,0xe95f7bad,0xf0617da7,0xf0617ca7,0xe2486db1,0x1c1a3b8c,0x0,0x0,
87 0x0,0x0,0x0,0x0,0x0,0xf1f1f1,0x787878,0x251a3f9d,0x32173b8e,0x32173a8d,0x2b173884,0x50e0e13,0x0,0x0,
88 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0
89};
90
91static const QRgb back_data[] = {
92 0x0,0x0,0x0,0x0,0x0,0x0,0x1fefefe,0x5fefefe,0x5fefefe,0x4fefefe,0x1fefefe,0x0,0x0,0x0,
93 0x0,0x0,0x0,0x0,0x0,0x2fefefe,0x33c7e2fe,0x9488c2fe,0x997ab9fe,0x946daffe,0x784f97fe,0xb175be3,0x0,0x0,
94 0x0,0x0,0x0,0x0,0x1fefefe,0x32c8e3fe,0xca99cafd,0xffe8f3fc,0xffeaf4fc,0xffe5f1fc,0xe2659cee,0x150c2863,0x0,0x0,
95 0x0,0x0,0x0,0x1fefefe,0x27c4e1fe,0xc38ac2fd,0xfee0edf8,0xfff2f6f7,0xfff0f5f8,0xeb84adea,0x4a12347f,0x2000000,0x0,0x0,
96 0x0,0x0,0xfefefe,0x18e9f3fe,0xa78ec4fb,0xffc9dff3,0xffe6edf1,0xffe4ecf1,0xf191b6ea,0x5a173782,0x5000000,0x0,0x0,0x0,
97 0x0,0x0,0xffefefe,0x8e85befc,0xf9b3d3ed,0xffd7e4e9,0xffd7e4e9,0xfb9abcec,0x861f4eb4,0xa030713,0x0,0x0,0x0,0x0,
98 0x0,0x0,0x4c62a2fe,0xf691beea,0xffc7d8df,0xffc8d8df,0xffa7c6e4,0x981b46b3,0xe030b27,0x0,0x0,0x0,0x0,0x0,
99 0x0,0x0,0x1e6ba4fe,0xcb467fed,0xffb0c8d8,0xffb8cdd7,0xffb4cbd7,0xd23d71e8,0x1e0937e9,0x0,0x0,0x0,0x0,0x0,
100 0x0,0x0,0x2fefefe,0x23244ee5,0xd14c80df,0xffa2bfcf,0xffa8c2cd,0xff95b7d1,0xb92d62e7,0xe0626c7,0x0,0x0,0x0,0x0,
101 0x0,0x0,0x0,0x2d0d8f8,0x431744ef,0xef4f7fdd,0xff99b6c7,0xff9bb7c6,0xfb7fa4cc,0x8c1f50df,0x40524cc,0x0,0x0,0x0,
102 0x0,0x0,0x0,0xfefefe,0x3a8b5f7,0x59133bf1,0xf35883d3,0xff90afbe,0xff90b0be,0xfd6f97c9,0x83133ee6,0x1031164,0x0,0x0,
103 0x0,0x0,0x0,0x0,0xfefefe,0x3fefefe,0x5e0933ec,0xe94375ce,0xf0467ac7,0xf04679c7,0xe2245ad4,0x1c041899,0x0,0x0,
104 0x0,0x0,0x0,0x0,0x0,0xfefefe,0x707070,0x25041bb8,0x3203189d,0x3203179c,0x2b031589,0x5010102,0x0,0x0,
105 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0
106};
107
108static const QRgb beam_data[] = {
109 0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,
110 0xdcdcdc,0xffc3c3c3,0xffc3c3c3,0xffc3c3c3,0xffc3c3c3,0xffc3c3c3,0xffc3c3c3,0xffc3c3c3,0xffc3c3c3,0xffc3c3c3,0xffc3c3c3,0xffc3c3c3,0xffc3c3c3,0xdcdcdc,
111 0xffc3c3c3,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xffc3c3c3,
112 0xdcdcdc,0xdcdcdc,0xffa0a0a0,0xffa0a0a0,0xffa0a0a0,0xffa0a0a0,0xffa0a0a0,0xffa0a0a0,0xffa0a0a0,0xffa0a0a0,0xffa0a0a0,0xffa0a0a0,0xdcdcdc,0xdcdcdc,
113 0xdcdcdc,0xffa0a0a0,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xffa0a0a0,0xdcdcdc,
114 0xdcdcdc,0xdcdcdc,0xdcdcdc,0xff808080,0xff808080,0xff808080,0xff808080,0xff808080,0xff808080,0xff808080,0xff808080,0xdcdcdc,0xdcdcdc,0xdcdcdc,
115 0xdcdcdc,0xdcdcdc,0xff808080,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xff808080,0xdcdcdc,0xdcdcdc,
116 0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xff585858,0xff585858,0xff585858,0xff585858,0xff585858,0xff585858,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,
117 0xdcdcdc,0xdcdcdc,0xdcdcdc,0xff585858,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xff585858,0xdcdcdc,0xdcdcdc,0xdcdcdc,
118 0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xff303030,0xff303030,0xff303030,0xff303030,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,
119 0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xff303030,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xff303030,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,
120 0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xff303030,0xff303030,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,
121 0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xff303030,0xff303030,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,
122 0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc
123};
124
125static const QRgb bell_data[] = {
126 0xfffffa,0x0,0x1e2e2e1,0x40938117,0x4b8c7c1a,0xa090804,0x7000000,0x2000000,0x0,0x0,0x0,0x0,0x0,0x0,
127 0x0,0x0,0x31bbb55b,0xdcc0ac29,0xe8bfa51d,0xa5a89226,0x4b807420,0x13000000,0x7000000,0x1000000,0x0,0x0,0x0,0x0,
128 0x0,0x488893c,0xb5c0be2f,0xffecd50d,0xffebbf05,0xffbe9a04,0xde96820a,0x43302a10,0x1e000000,0x9000000,0x1000000,0x0,0x0,0x0,
129 0x0,0x25a19738,0xead5cc1b,0xfff7e605,0xfff6cb07,0xffddad01,0xffaf8d03,0xba766819,0x430c0a04,0x1c000000,0x6000000,0x0,0x0,0x0,
130 0x0,0x30a6943b,0xf0e1d016,0xfffaf007,0xfff4d802,0xfff5c502,0xffcda300,0xf9947e0d,0x89534517,0x3c020201,0x13000000,0x3000000,0x0,0x0,
131 0x1000000,0x31b29d54,0xf0e7d61b,0xfffdf703,0xfff8de01,0xfffcca06,0xffecb900,0xffc39d03,0xf49c8222,0x7e4f471f,0x2c010100,0xd000000,0x2000000,0x0,
132 0x1000000,0x31b6a257,0xf0e9d71c,0xfffdf801,0xfff9ed01,0xfff5d203,0xfffacc06,0xfff1c407,0xffe5c20a,0xf7cab927,0x717f782f,0x25000000,0xb000000,0x2000000,
133 0x1000000,0x31b2a243,0xf0ecdd13,0xfffdf70a,0xfff6ef18,0xffe7d213,0xffcdac0d,0xffb28c07,0xffb28b0a,0xffc8a508,0xfad3b91f,0x72776521,0x23000000,0xa000000,
134 0x1000000,0x5ed5c442,0xfaf1df19,0xffd9c508,0xffb49806,0xff9a7c00,0xffb0930f,0xff9b7804,0xff9c7303,0xffd4a508,0xfecca719,0xd08d7422,0x47000000,0x1a000000,
135 0x8ac9d4f,0xb4d8bd2a,0xffd2a70a,0xffae8308,0xffa07c01,0xffb89209,0xffcab546,0xffedcf2f,0xffab8706,0xffb69017,0xe479631e,0x93110d05,0x5d000000,0x25000000,
136 0x1394822c,0xd8c9a718,0xffe3af0a,0xffddbc07,0xfff2ed07,0xfff3e516,0xffbca716,0xfaab9819,0xd66d5c13,0xb340340d,0x91050401,0x79000000,0x4a000000,0x1c000000,
137 0x7221d0b,0x749b8020,0xddaa8a26,0xe2a89523,0xe4a0a61f,0xe87f821a,0xc34d470e,0xa11f1c05,0x8e000000,0x7c000000,0x64000000,0x44000000,0x22000000,0xb000000,
138 0x4000000,0x19010100,0x43070603,0x63040301,0x76020200,0x7f000000,0x7d000000,0x6c000000,0x57000000,0x3f000000,0x29000000,0x16000000,0x8000000,0x2000000,
139 0x1000000,0xa000000,0x20000000,0x39000000,0x45000000,0x45000000,0x3e000000,0x2e000000,0x1e000000,0x11000000,0x8000000,0x3000000,0x1000000,0x0
140};
141
142static const QRgb binary_data[] = {
143 0x0,0x40d0d0df,0xffd2d2e0,0xffd6d6e3,0xffd6d6e3,0xffd5d5e3,0xffd5d5e3,0xffd3d3e1,0xffc7c7d8,0xaba2a2bb,0x109c9cb6,0x0,0x0,0x0,
144 0x0,0x40d0d0df,0xffe2e2eb,0xffffffff,0xffffffff,0xfffbfbfe,0xfff6f6fd,0xffeaeaf3,0xffe4e4ef,0xffc2c2d4,0x9fa7a7bf,0x189c9cb6,0x0,0x0,
145 0x0,0x40d0d0df,0xffe2e2eb,0xffffffff,0xffffffff,0xffe2e2ea,0xfff4f4fb,0xffededf5,0xffdfdfeb,0xffbdbdd0,0xffadadc3,0x9b9c9cb6,0x189c9cb6,0x0,
146 0x0,0x40d0d0df,0xffe2e2eb,0xffffffff,0xffe0e0e8,0xffa8a8bf,0xffededf5,0xffefeff7,0xffe1e1ec,0xffbebed1,0xffb6b6cb,0xffa4a4bd,0x409c9cb6,0x0,
147 0x0,0x40d0d0df,0xffe2e2eb,0xffffffff,0xffe8e8ee,0xffababc1,0xffefeff6,0xfff1f1f8,0xffe9e9f2,0xffdadae6,0xffcecedd,0xffaeaec4,0x409c9cb6,0x0,
148 0x0,0x40d0d0df,0xffe2e2eb,0xffffffff,0xffd1d1dd,0xffa2a2bb,0xffb1b1c6,0xfff2f2f8,0xffe6e6f0,0xffd4d4e3,0xffd0d0df,0xffafafc5,0x409c9cb6,0x0,
149 0x0,0x40d0d0df,0xffe2e2eb,0xffffffff,0xfff7f7f9,0xffeeeef5,0xffeaeaf3,0xffe8e8f1,0xffe0e0ec,0xffdbdbe8,0xffd8d8e6,0xffb2b2c8,0x409c9cb6,0x0,
150 0x0,0x40d0d0df,0xffe2e2eb,0xffffffff,0xfffdfdff,0xffefeff7,0xffeeeef5,0xffe6e6f0,0xffe2e2ed,0xffdadae8,0xffddddea,0xffb4b4c9,0x409c9cb6,0x0,
151 0x0,0x40d0d0df,0xffe2e2eb,0xffffffff,0xffededf3,0xffbdbdd0,0xffd4d4e1,0xffe8e8f1,0xffc7c7d7,0xffb6b6cb,0xffe1e1ed,0xffb6b6ca,0x409c9cb6,0x0,
152 0x0,0x40d0d0df,0xffe2e2eb,0xfffdfdff,0xffc0c0d1,0xffdcdce8,0xffa7a7be,0xffe5e5ef,0xffb2b2c7,0xffb7b7cb,0xffe2e2ed,0xffb6b6ca,0x409c9cb6,0x0,
153 0x0,0x40d0d0df,0xffe2e2eb,0xfffbfbfe,0xffdadae6,0xffc7c7d7,0xffc6c6d7,0xffe7e7f1,0xffb9b9cd,0xffaaaac1,0xffd1d1e0,0xffb6b6cb,0x409c9cb6,0x0,
154 0x0,0x40d0d0df,0xffe2e2eb,0xfff9f9fd,0xfff3f3f9,0xffd9d9e5,0xffececf3,0xffe9e9f1,0xffccccdc,0xffcacada,0xffd5d5e3,0xffb6b6cb,0x409c9cb6,0x0,
155 0x0,0x40d0d0df,0xffe1e1eb,0xfff8f8fc,0xfff3f3f9,0xfff1f1f8,0xffefeff6,0xffebebf4,0xffe9e9f2,0xffe6e6f0,0xffe3e3ee,0xffb6b6cb,0x409c9cb6,0x0,
156 0x0,0x40a3a3bb,0xffa5a5bd,0xffa7a7bf,0xffa7a7be,0xffa7a7be,0xffa6a6be,0xffa6a6be,0xffa6a6be,0xffa5a5bd,0xffa5a5bd,0xff9f9fb9,0x409c9cb6,0x0
157};
158
159static const QRgb bold_data[] = {
160 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
161 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
162 0x0,0x0,0x0,0x30000000,0x60000000,0x60000000,0x60000000,0x60000000,0x48000000,0x0,0x0,0x0,0x0,0x0,
163 0x0,0x0,0x0,0x40000000,0xcf000000,0xff000000,0x8f000000,0x8f000000,0xdf000000,0x50000000,0x0,0x0,0x0,0x0,
164 0x0,0x0,0x0,0x0,0x9f000000,0xff000000,0x20000000,0xc000000,0x87000000,0xdb000000,0x50000000,0x0,0x0,0x0,
165 0x0,0x0,0x0,0x0,0x9f000000,0xff000000,0x20000000,0x0,0x40000000,0xff000000,0x7f000000,0x0,0x0,0x0,
166 0x0,0x0,0x0,0x0,0x9f000000,0xff000000,0x20000000,0x1c000000,0xe7000000,0xab000000,0x10000000,0x0,0x0,0x0,
167 0x0,0x0,0x0,0x0,0x9f000000,0xff000000,0xe3000000,0xdf000000,0xe7000000,0xab000000,0x10000000,0x0,0x0,0x0,
168 0x0,0x0,0x0,0x0,0x9f000000,0xff000000,0x20000000,0x0,0x30000000,0xd7000000,0x9f000000,0x18000000,0x0,0x0,
169 0x0,0x0,0x0,0x0,0x9f000000,0xff000000,0x20000000,0x0,0x0,0x60000000,0xff000000,0x60000000,0x0,0x0,
170 0x0,0x0,0x0,0x0,0x9f000000,0xff000000,0x20000000,0x0,0x20000000,0xaf000000,0xbf000000,0x30000000,0x0,0x0,
171 0x0,0x0,0x0,0x50000000,0xdb000000,0xff000000,0xab000000,0x9f000000,0xb7000000,0xc3000000,0x30000000,0x0,0x0,0x0,
172 0x0,0x0,0x0,0x20000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x28000000,0x0,0x0,0x0,0x0,
173 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0
174};
175
176static const QRgb calculator_data[] = {
177 0x2000000,0xfff8f8f8,0xfff1f1f1,0xffe1e1e1,0xffd4d4d4,0xffdfdfdf,0xffeaeaea,0xffeaeaea,0xffeaeaea,0xffeaeaea,0xffeaeaea,0xffeaeaea,0x13000000,0xe000000,
178 0x7000000,0xff649c64,0xff549254,0xff3c763c,0xffffffff,0xff3c763c,0xff468946,0xff468946,0xff468946,0xff468946,0xff468946,0xff2e792e,0xff005800,0x2b000000,
179 0xe000000,0xff508b50,0xff2c6b2c,0xff134a13,0xffffffff,0xff134a13,0xff185e18,0xff1b691b,0xff1c6e1c,0xff1c6e1c,0xff1c6e1c,0xff005b00,0xff004300,0x55000000,
180 0x13000000,0xff3f7c3f,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xff005300,0xff005c00,0xff005c00,0xff005c00,0xff005100,0xff003a00,0x71000000,
181 0x15000000,0xff438343,0xff185e18,0xff003e00,0xffffffff,0xff003900,0xff004200,0xff004600,0xff004b00,0xff004b00,0xff004f00,0xff004d00,0xff003a00,0x7f000000,
182 0x15000000,0xff468946,0xff1c6e1c,0xff004f00,0xffffffff,0xff004600,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xff004900,0xff003a00,0x7f000000,
183 0x15000000,0xff438343,0xff196419,0xff005300,0xff005300,0xff004f00,0xff004600,0xff004600,0xff004600,0xff004200,0xff004b00,0xff004d00,0xff003a00,0x7f000000,
184 0x15000000,0xff3f7c3f,0xffffffff,0xff7fa57f,0xff005300,0xff7fa57f,0xffffffff,0xff005300,0xff7fa97f,0xffffffff,0xff7fa97f,0xff005100,0xff003a00,0x7f000000,
185 0x15000000,0xff438343,0xff8bac8b,0xffffffff,0xff7fa07f,0xffffffff,0xff7fa27f,0xff004b00,0xff004600,0xff004200,0xff004600,0xff004600,0xff003700,0x7f000000,
186 0x15000000,0xff468946,0xff196419,0xff7fa07f,0xffffffff,0xff7fa07f,0xff004b00,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xff003500,0x7f000000,
187 0x15000000,0xff438343,0xff8bac8b,0xffffffff,0xff7fa07f,0xffffffff,0xff7fa27f,0xff004b00,0xff004600,0xff004200,0xff004600,0xff004600,0xff003700,0x7f000000,
188 0x15000000,0xff2a6e2a,0xffffffff,0xff7fa07f,0xff004900,0xff7fa07f,0xffffffff,0xff004900,0xff7fa47f,0xffffffff,0xff7fa47f,0xff004800,0xff003600,0x7f000000,
189 0x13000000,0xff005400,0xff003d00,0xff003700,0xff003a00,0xff003700,0xff003500,0xff003700,0xff003700,0xff003500,0xff003700,0xff003600,0xff003000,0x71000000,
190 0xe000000,0x2b000000,0x55000000,0x71000000,0x7f000000,0x7f000000,0x7f000000,0x7f000000,0x7f000000,0x7f000000,0x7f000000,0x7f000000,0x71000000,0x55000000
191};
192
40static const QRgb Calibrate_data[] = { 193static const QRgb Calibrate_data[] = {
41 0xffffff,0xffffff,0x1ffffff,0x3ffffff,0x5ffffff,0x8dfdfdf,0xdc4c4c4,0x13aeaeae,0x1ba1a1a1,0x258a8a8a,0x2f828282,0x39797979,0x41727272,0x486e6e6e, 194 0xffffff,0xffffff,0x1ffffff,0x3ffffff,0x5ffffff,0x8dfdfdf,0xdc4c4c4,0x13aeaeae,0x1ba1a1a1,0x258a8a8a,0x2f828282,0x39797979,0x41727272,0x486e6e6e,
42 0x4d6a6a6a,0x51686868,0x51656565,0x4f646464,0x4b636363,0x45646464,0x3d646464,0x32666666,0x286c6c6c,0x1e6f6f6f,0x15797979,0xd898989,0x104f4f4f,0x4bfbfbf, 195 0x4d6a6a6a,0x51686868,0x51656565,0x4f646464,0x4b636363,0x45646464,0x3d646464,0x32666666,0x286c6c6c,0x1e6f6f6f,0x15797979,0xd898989,0x104f4f4f,0x4bfbfbf,
43 0x1ffffff,0xffffff,0xffffff,0xffffff,0xffffff,0x1ffffff,0x3ffffff,0x6d5d5d5,0xacccccc,0x11b4b4b4,0x1aa7a7a7,0x26949494,0x33878787,0x417e7e7e, 196 0x1ffffff,0xffffff,0xffffff,0xffffff,0xffffff,0x1ffffff,0x3ffffff,0x6d5d5d5,0xacccccc,0x11b4b4b4,0x1aa7a7a7,0x26949494,0x33878787,0x417e7e7e,
44 0x9c84939a,0xda74889d,0xf461749c,0xfd52659b,0xff48589b,0xff46599e,0xff4c5e9a,0xfd586c99,0xf5657b97,0xdd728791,0xa6758484,0x575e5e5e,0x495e5e5e,0x39626262, 197 0x9c84939a,0xda74889d,0xf461749c,0xfd52659b,0xff48589b,0xff46599e,0xff4c5e9a,0xfd586c99,0xf5657b97,0xdd728791,0xa6758484,0x575e5e5e,0x495e5e5e,0x39626262,
45 0x2a676767,0x4e1f1f1f,0xaa040404,0xffb0b0b0,0x5999999,0x2808080,0xffffff,0xffffff,0x1ffffff,0x3ffffff,0x6d5d5d5,0xbd1d1d1,0x14b3b3b3,0x209f9f9f, 198 0x2a676767,0x4e1f1f1f,0xaa040404,0xffb0b0b0,0x5999999,0x2808080,0xffffff,0xffffff,0x1ffffff,0x3ffffff,0x6d5d5d5,0xbd1d1d1,0x14b3b3b3,0x209f9f9f,
46 0x2e909090,0x3f868686,0xb681939e,0xf365799d,0xff596fa4,0xff6d89ab,0xff84a7af,0xff97c0b4,0xffa2d0b5,0xffa8d7b7,0xffa2d0b4,0xff97c1af,0xff87aeaa,0xff7696a3, 199 0x2e909090,0x3f868686,0xb681939e,0xf365799d,0xff596fa4,0xff6d89ab,0xff84a7af,0xff97c0b4,0xffa2d0b5,0xffa8d7b7,0xffa2d0b4,0xff97c1af,0xff87aeaa,0xff7696a3,
47 0xff658199,0xf4657d8d,0xc3728384,0x5d5a5a5a,0x702e2e2e,0xf0020202,0xffc2c2c2,0xffa7a7a7,0xff636363,0x5999999,0x2808080,0xffffff,0x3ffffff,0x6d5d5d5, 200 0xff658199,0xf4657d8d,0xc3728384,0x5d5a5a5a,0x702e2e2e,0xf0020202,0xffc2c2c2,0xffa7a7a7,0xff636363,0x5999999,0x2808080,0xffffff,0x3ffffff,0x6d5d5d5,
48 0xbd1d1d1,0x16aeaeae,0x229e9e9e,0x348e8e8e,0x8089999b,0xe97186a1,0xff647da7,0xff81a4b0,0xffa4d2ba,0xffb5e8bc,0xffbcf0bf,0xffbef4be,0xffbff6be,0xffbff6bc, 201 0xbd1d1d1,0x16aeaeae,0x229e9e9e,0x348e8e8e,0x8089999b,0xe97186a1,0xff647da7,0xff81a4b0,0xffa4d2ba,0xffb5e8bc,0xffbcf0bf,0xffbef4be,0xffbff6be,0xffbff6bc,
49 0xffbef4bc,0xffb7edb7,0xffb3e7b5,0xffaadcae,0xff98c5a5,0xff7ca197,0xff638086,0xf249595e,0xf7040405,0xffc2c2c2,0xffaaaaaa,0xff6b6b6b,0xff2e2e2e,0xff0f0f0f, 202 0xffbef4bc,0xffb7edb7,0xffb3e7b5,0xffaadcae,0xff98c5a5,0xff7ca197,0xff638086,0xf249595e,0xf7040405,0xffc2c2c2,0xffaaaaaa,0xff6b6b6b,0xff2e2e2e,0xff0f0f0f,
50 0x5999999,0x2808080,0x5ffffff,0xacccccc,0x14b3b3b3,0x229e9e9e,0x358c8c8c,0xa48697a0,0xf7687ca2,0xff7c9db0,0xffa4d2b9,0xffbbefc0,0xffc2f9c1,0xffc4fbc1, 203 0x5999999,0x2808080,0x5ffffff,0xacccccc,0x14b3b3b3,0x229e9e9e,0x358c8c8c,0xa48697a0,0xf7687ca2,0xff7c9db0,0xffa4d2b9,0xffbbefc0,0xffc2f9c1,0xffc4fbc1,
51 0xffc3fac0,0xffc3fac0,0xffc1f8be,0xffc0f7bd,0xffbdf4ba,0xffbbf1b8,0xffb6ebb3,0xffaee2ab,0xffa3d4a1,0xff90bc92,0xff050707,0xff060808,0xff8b89b4,0xff9b9ba6, 204 0xffc3fac0,0xffc3fac0,0xffc1f8be,0xffc0f7bd,0xffbdf4ba,0xffbbf1b8,0xffb6ebb3,0xffaee2ab,0xffa3d4a1,0xff90bc92,0xff050707,0xff060808,0xff8b89b4,0xff9b9ba6,
52 0xff6b6b6b,0xff2f2e2e,0xff0b0b0b,0x8c070707,0xb747474,0x4808080,0x8dfdfdf,0x10afafaf,0x1f9c9c9c,0x338c8c8c,0xa38396a0,0xfa6379a2,0xff87aab2,0xffb3e5be, 205 0xff6b6b6b,0xff2f2e2e,0xff0b0b0b,0x8c070707,0xb747474,0x4808080,0x8dfdfdf,0x10afafaf,0x1f9c9c9c,0x338c8c8c,0xa38396a0,0xfa6379a2,0xff87aab2,0xffb3e5be,
53 0xffc3fac2,0xffc6fdc3,0xffc5fcc2,0xffc4fbc1,0xffc2f9bf,0xffc1f8be,0xffc0f7bd,0xffbdf4ba,0xffbbf1b8,0xffb6ebb3,0xffaee2ab,0xffa4d5a1,0xff96c294,0xff919291, 206 0xffc3fac2,0xffc6fdc3,0xffc5fcc2,0xffc4fbc1,0xffc2f9bf,0xffc1f8be,0xffc0f7bd,0xffbdf4ba,0xffbbf1b8,0xffb6ebb3,0xffaee2ab,0xffa4d5a1,0xff96c294,0xff919291,
54 0xff080b08,0xffb8b8c0,0xff8d8ca3,0xff4d4d64,0xff2b2a2d,0xff0b0b0b,0xf1020202,0x541a1a1a,0x14595959,0x8606060,0xcbfbfbf,0x19a3a3a3,0x2c8b8b8b,0x7e88989a, 207 0xff080b08,0xffb8b8c0,0xff8d8ca3,0xff4d4d64,0xff2b2a2d,0xff0b0b0b,0xf1020202,0x541a1a1a,0x14595959,0x8606060,0xcbfbfbf,0x19a3a3a3,0x2c8b8b8b,0x7e88989a,
55 0xf7667ca1,0xff87aab2,0xffb6e9be,0xffc6fdc3,0xffc5fcc2,0xffc5fcc2,0xffc4fbc1,0xffc3fac0,0xffc1f8be,0xffc0f7bd,0xffbdf4ba,0xffbaf0b7,0xffb5eab2,0xffaee2ab, 208 0xf7667ca1,0xff87aab2,0xffb6e9be,0xffc6fdc3,0xffc5fcc2,0xffc5fcc2,0xffc4fbc1,0xffc3fac0,0xffc1f8be,0xffc0f7bd,0xffbdf4ba,0xffbaf0b7,0xffb5eab2,0xffaee2ab,
56 0xffa3d4a0,0xff95c092,0xff0f1210,0xff080b08,0xffc2c2c2,0xffaaaaaa,0xff67676a,0xff27272d,0xff08080a,0xf8040404,0x7f252525,0x374a4a4a,0x1e4d4d4d,0xf555555, 209 0xffa3d4a0,0xff95c092,0xff0f1210,0xff080b08,0xffc2c2c2,0xffaaaaaa,0xff67676a,0xff27272d,0xff08080a,0xf8040404,0x7f252525,0x374a4a4a,0x1e4d4d4d,0xf555555,
57 0x11a5a5a5,0x238a8a8a,0x3c7b7b7b,0xe97184a0,0xff7c9db0,0xffb3e5be,0xffc6fdc3,0xffc6fdc3,0xffc5fcc2,0xffc4fbc1,0xffc2f9bf,0xffc1f8be,0xffbff6bc,0xffbcf3b9, 210 0x11a5a5a5,0x238a8a8a,0x3c7b7b7b,0xe97184a0,0xff7c9db0,0xffb3e5be,0xffc6fdc3,0xffc6fdc3,0xffc5fcc2,0xffc4fbc1,0xffc2f9bf,0xffc1f8be,0xffbff6bc,0xffbcf3b9,
58 0xffb9efb6,0xffb4e9b1,0xfface0a9,0xffa1d29e,0xff95c192,0xff878b85,0xff080b08,0xffc2c2c2,0xffaaaaaa,0xff6b6b6b,0xff2f2f2f,0xff0b0b0b,0xff020303,0xf72e3a39, 211 0xffb9efb6,0xffb4e9b1,0xfface0a9,0xffa1d29e,0xff95c192,0xff878b85,0xff080b08,0xffc2c2c2,0xffaaaaaa,0xff6b6b6b,0xff2f2f2f,0xff0b0b0b,0xff020303,0xf72e3a39,
59 0x72414141,0x4c404040,0x2c404040,0x17434343,0x18959595,0x307a7a7a,0xb57f919c,0xff637ca6,0xffa4d1b8,0xffc2f9c1,0xffbdf4ba,0xff96cd93,0xff71a86e,0xff50874d, 212 0x72414141,0x4c404040,0x2c404040,0x17434343,0x18959595,0x307a7a7a,0xb57f919c,0xff637ca6,0xffa4d1b8,0xffc2f9c1,0xffbdf4ba,0xff96cd93,0xff71a86e,0xff50874d,
60 0xff356c32,0xff235a20,0xff2b6228,0xff3f763c,0xff5a9058,0xff7baf78,0xff98c996,0xff93be91,0xff202520,0xff090b08,0xffc2c2c2,0xffaaaaaa,0xff6b6b6b,0xff2f2e2e, 213 0xff356c32,0xff235a20,0xff2b6228,0xff3f763c,0xff5a9058,0xff7baf78,0xff98c996,0xff93be91,0xff202520,0xff090b08,0xffc2c2c2,0xffaaaaaa,0xff6b6b6b,0xff2f2e2e,
61 0xff0b0b0b,0xff030403,0xff212d21,0xff33463c,0xd34c5c55,0x643b3b3b,0x3e3a3a3a,0x223c3c3c,0x217c7c7c,0x3c6f6f6f,0xf263779a,0xff80a2af,0xffb9edbe,0xff8ec58b, 214 0xff0b0b0b,0xff030403,0xff212d21,0xff33463c,0xd34c5c55,0x643b3b3b,0x3e3a3a3a,0x223c3c3c,0x217c7c7c,0x3c6f6f6f,0xf263779a,0xff80a2af,0xffb9edbe,0xff8ec58b,
62 0xff5a9157,0xff5f965c,0xff80b77d,0xff9ad197,0xffb0e7ad,0xffb9f0b6,0xffa9dfa6,0xff8ac087,0xff679b64,0xff3c6d39,0xff366134,0xff787f78,0xff080a08,0xffa8a9a8, 215 0xff5a9157,0xff5f965c,0xff80b77d,0xff9ad197,0xffb0e7ad,0xffb9f0b6,0xffa9dfa6,0xff8ac087,0xff679b64,0xff3c6d39,0xff366134,0xff787f78,0xff080a08,0xffa8a9a8,
63 0xffa8a8a8,0xff6b6b6c,0xff2e2f2e,0xff0b0b0b,0xff030403,0xff243123,0xff3b523b,0xff425c48,0xf7475d56,0x7b363636,0x51323232,0x2f363636,0x29707070,0x977b8c93, 216 0xffa8a8a8,0xff6b6b6c,0xff2e2f2e,0xff0b0b0b,0xff030403,0xff243123,0xff3b523b,0xff425c48,0xf7475d56,0x7b363636,0x51323232,0x2f363636,0x29707070,0x977b8c93,
64 0xff576da2,0xff94c1a6,0xff6ea56c,0xff659c62,0xff9ad197,0xffc1f8be,0xffc0f7bd,0xffbef5bb,0xffbbf2b8,0xffb9efb6,0xffb3e8b0,0xfface0a9,0xffa1d29e,0xff94bf91, 217 0xff576da2,0xff94c1a6,0xff6ea56c,0xff659c62,0xff9ad197,0xffc1f8be,0xffc0f7bd,0xffbef5bb,0xffbbf2b8,0xffb9efb6,0xffb3e8b0,0xfface0a9,0xffa1d29e,0xff94bf91,
65 0xff212720,0xff050704,0xffbdbdbd,0xff000000,0xff606160,0xff2e2e2e,0xff0b0b0b,0xff030403,0xff233022,0xff3c543b,0xff4c6b4b,0xff557857,0xff50715d,0xbe48554c, 218 0xff212720,0xff050704,0xffbdbdbd,0xff000000,0xff606160,0xff2e2e2e,0xff0b0b0b,0xff030403,0xff233022,0xff3c543b,0xff4c6b4b,0xff557857,0xff50715d,0xbe48554c,
66 0x622f2f2f,0x3c2f2f2f,0x32616161,0xd8738598,0xff627e98,0xff5b8e5d,0xff7fb67c,0xffc0f7bd,0xffc1f8be,0xffa7dea4,0xff76ad73,0xff487f45,0xff235a20,0xff0b4108, 219 0x622f2f2f,0x3c2f2f2f,0x32616161,0xd8738598,0xff627e98,0xff5b8e5d,0xff7fb67c,0xffc0f7bd,0xffc1f8be,0xffa7dea4,0xff76ad73,0xff487f45,0xff235a20,0xff0b4108,
67 0xff1b5018,0xff366834,0xff588456,0xff778178,0xff080b08,0xffc2c2c2,0xffa9a9a9,0xff686868,0xff000000,0xff111111,0xff030402,0xff222f21,0xff3b533a,0xff4c6a4a, 220 0xff1b5018,0xff366834,0xff588456,0xff778178,0xff080b08,0xffc2c2c2,0xffa9a9a9,0xff686868,0xff000000,0xff111111,0xff030402,0xff222f21,0xff3b533a,0xff4c6a4a,
68 0xff5a7f58,0xff618b60,0xff5c8663,0xe64e6458,0x722b2b2b,0x47282828,0x39555555,0xf35f7397,0xff466b5c,0xff77ab77,0xffc0f7bd,0xffbff6bc,0xff80b77d,0xff3d743a, 221 0xff5a7f58,0xff618b60,0xff5c8663,0xe64e6458,0x722b2b2b,0x47282828,0x39555555,0xf35f7397,0xff466b5c,0xff77ab77,0xffc0f7bd,0xffbff6bc,0xff80b77d,0xff3d743a,
69 0xff60975d,0xff84bb81,0xffa0d69d,0xffaee4ab,0xff93c690,0xff6b9a69,0xff192219,0xff030603,0xffc2c2c2,0xffaaaaaa,0xff6b6b6b,0xff2f2e2f,0xff0c0c0c,0xff020302, 222 0xff60975d,0xff84bb81,0xffa0d69d,0xffaee4ab,0xff93c690,0xff6b9a69,0xff192219,0xff030603,0xffc2c2c2,0xffaaaaaa,0xff6b6b6b,0xff2f2e2f,0xff0c0c0c,0xff020302,
70 0xff202e1f,0xff395038,0xff486747,0xff587d56,0xff638e60,0xff689766,0xff629167,0xf74d6a5b,0x7f262626,0x53252525,0x3e4e4e4e,0xfd3b4e79,0xff456f51,0xffb9efb9, 223 0xff202e1f,0xff395038,0xff486747,0xff587d56,0xff638e60,0xff689766,0xff629167,0xf74d6a5b,0x7f262626,0x53252525,0x3e4e4e4e,0xfd3b4e79,0xff456f51,0xffb9efb9,
71 0xffbff6bc,0xff73aa70,0xff60975d,0xff9dd49a,0xffb9f0b6,0xffb5ebb2,0xffb1e7af,0xffabdfa8,0xff9ecf9c,0xff87b185,0xff1d261d,0xffc2c2c2,0xffaaaaaa,0xff6b6b6b, 224 0xffbff6bc,0xff73aa70,0xff60975d,0xff9dd49a,0xffb9f0b6,0xffb5ebb2,0xffb1e7af,0xffabdfa8,0xff9ecf9c,0xff87b185,0xff1d261d,0xffc2c2c2,0xffaaaaaa,0xff6b6b6b,
72 0xff2f2f2f,0xff0b0b0b,0xff010201,0xff152214,0xff364d35,0xff456343,0xff537851,0xff608b5d,0xff679765,0xff6a9b67,0xff649665,0xfd51745d,0x8a232323,0x5b222222, 225 0xff2f2f2f,0xff0b0b0b,0xff010201,0xff152214,0xff364d35,0xff456343,0xff537851,0xff608b5d,0xff679765,0xff6a9b67,0xff649665,0xfd51745d,0x8a232323,0x5b222222,
73 0x43484848,0xff1d2f45,0xff7aa888,0xffbbf1b9,0xff7eb57b,0xff60975d,0xffb9f0b6,0xffb9f0b6,0xff8ec58b,0xff548a51,0xff245921,0xff063904,0xff1b4a19,0xff152515, 226 0x43484848,0xff1d2f45,0xff7aa888,0xffbbf1b9,0xff7eb57b,0xff60975d,0xffb9f0b6,0xffb9f0b6,0xff8ec58b,0xff548a51,0xff245921,0xff063904,0xff1b4a19,0xff152515,
74 0xffbfbfbf,0xffaaaaaa,0xff6b6b6b,0xff2e2f2e,0xff0b0b0b,0xff020302,0xff162315,0xff112810,0xff3e5c3c,0xff4f744d,0xff5a8558,0xff639260,0xff679a64,0xff689d65, 227 0xffbfbfbf,0xffaaaaaa,0xff6b6b6b,0xff2e2f2e,0xff0b0b0b,0xff020302,0xff162315,0xff112810,0xff3e5c3c,0xff4f744d,0xff5a8558,0xff639260,0xff679a64,0xff689d65,
75 0xff629761,0xff537f5b,0x92212121,0x61202020,0x45434343,0xff1c2f3e,0xffa3d3b2,0xffa2d99f,0xff3e753b,0xff9cd399,0xffb8efb5,0xff7bb278,0xff356c32,0xff659b62, 228 0xff629761,0xff537f5b,0x92212121,0x61202020,0x45434343,0xff1c2f3e,0xffa3d3b2,0xffa2d99f,0xff3e753b,0xff9cd399,0xffb8efb5,0xff7bb278,0xff356c32,0xff659b62,
76 0xff89be86,0xff97c894,0xff486547,0xff0c140c,0xffb6b6b6,0xff6b6b6b,0xff2e2e2e,0xff0b0b0b,0xff010200,0xff192718,0xff324a31,0xff173616,0xff355a33,0xff558052, 229 0xff89be86,0xff97c894,0xff486547,0xff0c140c,0xffb6b6b6,0xff6b6b6b,0xff2e2e2e,0xff0b0b0b,0xff010200,0xff192718,0xff324a31,0xff173616,0xff355a33,0xff558052,
77 0xff5d8c5a,0xff62955f,0xff659a62,0xff649b61,0xff5e945d,0xff548459,0x961f1f1f,0x651c1c1c,0x443c3c3c,0xff2f4264,0xff9eccaf,0xff73aa71,0xff639a60,0xffb7eeb4, 230 0xff5d8c5a,0xff62955f,0xff659a62,0xff649b61,0xff5e945d,0xff548459,0x961f1f1f,0x651c1c1c,0x443c3c3c,0xff2f4264,0xff9eccaf,0xff73aa71,0xff639a60,0xffb7eeb4,
78 0xff91c88e,0xff397036,0xff96cc93,0xffabe1a8,0xffa2d69f,0xff93c391,0xff040504,0xffbfbfbf,0xff6b6b6b,0xff232423,0xff0b0b0b,0xff0a0e0a,0xff0f1d0e,0xff1c351b, 231 0xff91c88e,0xff397036,0xff96cc93,0xffabe1a8,0xffa2d69f,0xff93c391,0xff040504,0xffbfbfbf,0xff6b6b6b,0xff232423,0xff0b0b0b,0xff0a0e0a,0xff0f1d0e,0xff1c351b,
79 0xff3d5b3b,0xff2b5029,0xff2a5527,0xff588755,0xff5d8f5a,0xff60955d,0xff60975e,0xff5d945a,0xff5a8f59,0xff4e7b53,0x971b1b1b,0x65191919,0x42363636,0xfd465a7f, 232 0xff3d5b3b,0xff2b5029,0xff2a5527,0xff588755,0xff5d8f5a,0xff60955d,0xff60975e,0xff5d945a,0xff5a8f59,0xff4e7b53,0x971b1b1b,0x65191919,0x42363636,0xfd465a7f,
80 0xff92bcaa,0xff497e47,0xff86bd83,0xffb5ecb2,0xff5c9359,0xff6ba268,0xffade3aa,0xff85bb82,0xff3c703a,0xff0a3908,0xff000000,0xff636363,0xff191919,0xff0a120a, 233 0xff92bcaa,0xff497e47,0xff86bd83,0xffb5ecb2,0xff5c9359,0xff6ba268,0xffade3aa,0xff85bb82,0xff3c703a,0xff0a3908,0xff000000,0xff636363,0xff191919,0xff0a120a,
81 0xff040704,0xff273927,0xff253f24,0xff143312,0xff456b43,0xff3c673a,0xff1e4d1b,0xff588b55,0xff5b9058,0xff5d935a,0xff5b9258,0xff598e56,0xff548952,0xfd446a4a, 234 0xff040704,0xff273927,0xff253f24,0xff143312,0xff456b43,0xff3c673a,0xff1e4d1b,0xff588b55,0xff5b9058,0xff5d935a,0xff5b9258,0xff598e56,0xff548952,0xfd446a4a,
82 0x94181818,0x64171717,0x3e313131,0xf45a708a,0xff83a9a4,0xff295e27,0xffa0d79d,0xffb2e9af,0xff336a30,0xff91c88e,0xfface2a9,0xff437940,0xff063903,0xff033201, 235 0x94181818,0x64171717,0x3e313131,0xf45a708a,0xff83a9a4,0xff295e27,0xffa0d79d,0xffb2e9af,0xff336a30,0xff91c88e,0xfface2a9,0xff437940,0xff063903,0xff033201,
83 0xff000000,0xff000000,0xff040504,0xff192719,0xff0b2409,0xff3c593a,0xff395b37,0xff0b3209,0xff4a7648,0xff497946,0xff144711,0xff558a52,0xff578d54,0xff568d53, 236 0xff000000,0xff000000,0xff040504,0xff192719,0xff0b2409,0xff3c593a,0xff395b37,0xff0b3209,0xff4a7648,0xff497946,0xff144711,0xff558a52,0xff578d54,0xff568d53,
84 0xff568c53,0xff538950,0xff4d824b,0xf73d5c43,0x8f151515,0x5e161616,0x372e2e2e,0xd9677d87,0xff72939f,0xff154913,0xffafe6ac,0xffb0e7ad,0xff195016,0xffa8dfa5, 237 0xff568c53,0xff538950,0xff4d824b,0xf73d5c43,0x8f151515,0x5e161616,0x372e2e2e,0xd9677d87,0xff72939f,0xff154913,0xffafe6ac,0xffb0e7ad,0xff195016,0xffa8dfa5,
85 0xffa9dfa6,0xff144911,0xff073a04,0xff043502,0xff022e00,0xff072d05,0xff537551,0xff476845,0xff022300,0xff476c45,0xff487146,0xff043102,0xff4d7d4a,0xff4e824c, 238 0xffa9dfa6,0xff144911,0xff073a04,0xff043502,0xff022e00,0xff072d05,0xff537551,0xff476845,0xff022300,0xff476c45,0xff487146,0xff043102,0xff4d7d4a,0xff4e824c,
86 0xff0e440c,0xff52884f,0xff50874d,0xff51874e,0xff50874d,0xff4c834a,0xff497f48,0xea344d3b,0x86131313,0x57121212,0x302b2b2b,0x9f607273,0xff638096,0xff1f4f1f, 239 0xff0e440c,0xff52884f,0xff50874d,0xff51874e,0xff50874d,0xff4c834a,0xff497f48,0xea344d3b,0x86131313,0x57121212,0x302b2b2b,0x9f607273,0xff638096,0xff1f4f1f,
87 0xff9ad198,0xffade4aa,0xff2f662c,0xff8ec58b,0xffa6dca3,0xff437940,0xff093d06,0xff053803,0xff043302,0xff295427,0xff5d855a,0xff456d43,0xff113a0e,0xff507b4d, 240 0xff9ad198,0xffade4aa,0xff2f662c,0xff8ec58b,0xffa6dca3,0xff437940,0xff093d06,0xff053803,0xff043302,0xff295427,0xff5d855a,0xff456d43,0xff113a0e,0xff507b4d,
88 0xff457442,0xff0e400c,0xff4e824b,0xff487d45,0xff154b12,0xff4d844a,0xff4d834a,0xff4c8349,0xff4a8147,0xff477e45,0xff427342,0xc929382c,0x79111111,0x4e101010, 241 0xff457442,0xff0e400c,0xff4e824b,0xff487d45,0xff154b12,0xff4d844a,0xff4d834a,0xff4c8349,0xff4a8147,0xff477e45,0xff427342,0xc929382c,0x79111111,0x4e101010,
89 0x26282828,0x46212121,0xf2617888,0xff2f5938,0xff77ac77,0xffabe2a8,0xff548b51,0xff659c62,0xffa2d99f,0xff7cb279,0xff3e733b,0xff0f430c,0xff31642f,0xff598956, 242 0x26282828,0x46212121,0xf2617888,0xff2f5938,0xff77ac77,0xffabe2a8,0xff548b51,0xff659c62,0xffa2d99f,0xff7cb279,0xff3e733b,0xff0f430c,0xff31642f,0xff598956,
90 0xff659463,0xff356433,0xff295927,0xff558652,0xff3a6d38,0xff1e521b,0xff4d824a,0xff3c7339,0xff1d531a,0xff4a8047,0xff498046,0xff498046,0xff457c42,0xff427840, 243 0xff659463,0xff356433,0xff295927,0xff558652,0xff3a6d38,0xff1e521b,0xff4d824a,0xff3c7339,0xff1d531a,0xff4a8047,0xff498046,0xff498046,0xff457c42,0xff427840,
91 0xf7335338,0x970f0f0f,0x6b0e0e0e,0x410c0c0c,0x1d232323,0x391f1f1f,0xb8607473,0xff42645d,0xff497a4d,0xffa7dea5,0xff82b97f,0xff31682e,0xff86bd83,0xff96cd93, 244 0xf7335338,0x970f0f0f,0x6b0e0e0e,0x410c0c0c,0x1d232323,0x391f1f1f,0xb8607473,0xff42645d,0xff497a4d,0xffa7dea5,0xff82b97f,0xff31682e,0xff86bd83,0xff96cd93,
92 0xff8fc68c,0xff87bc84,0xff7bb079,0xff73a770,0xff598c56,0xff1b4e18,0xff477b44,0xff588c55,0xff2a5f27,0xff2f652c,0xff4b8148,0xff2f662c,0xff285f25,0xff477e44, 245 0xff8fc68c,0xff87bc84,0xff7bb079,0xff73a770,0xff598c56,0xff1b4e18,0xff477b44,0xff588c55,0xff2a5f27,0xff2f652c,0xff4b8148,0xff2f662c,0xff285f25,0xff477e44,
93 0xff457c42,0xff437a40,0xff42783f,0xff3d6f3d,0xd9283b2d,0x840e0e0e,0x590b0b0b,0x350a0a0a,0x15242424,0x29191919,0x49151515,0xeb5b727b,0xff1e4922,0xff80b483, 246 0xff457c42,0xff437a40,0xff42783f,0xff3d6f3d,0xd9283b2d,0x840e0e0e,0x590b0b0b,0x350a0a0a,0x15242424,0x29191919,0x49151515,0xeb5b727b,0xff1e4922,0xff80b483,
94 0xffa1d89e,0xff689f65,0xff2d642a,0xff568c53,0xff73a970,0xff7eb57c,0xff659b62,0xff42783f,0xff1e541b,0xff41773e,0xff5c9159,0xff477d44,0xff164c13,0xff40773e, 247 0xffa1d89e,0xff689f65,0xff2d642a,0xff568c53,0xff73a970,0xff7eb57c,0xff659b62,0xff42783f,0xff1e541b,0xff41773e,0xff5c9159,0xff477d44,0xff164c13,0xff40773e,
95 0xff497f46,0xff1f561c,0xff31682e,0xff437a40,0xff41783e,0xff40773d,0xff3d743b,0xf32e4b32,0x970c0c0c,0x6e090909,0x470b0b0b,0x27070707,0xd272727,0x1e1a1a1a, 248 0xff497f46,0xff1f561c,0xff31682e,0xff437a40,0xff41783e,0xff40773d,0xff3d743b,0xf32e4b32,0x970c0c0c,0x6e090909,0x470b0b0b,0x27070707,0xd272727,0x1e1a1a1a,
96 0x36131313,0x88495852,0xf948626d,0xff39663f,0xff93c894,0xff94cb91,0xff6fa66c,0xff42793f,0xff1f561c,0xff0b4208,0xff1c5219,0xff356b32,0xff4f864c,0xff5f965c, 249 0x36131313,0x88495852,0xf948626d,0xff39663f,0xff93c894,0xff94cb91,0xff6fa66c,0xff42793f,0xff1f561c,0xff0b4208,0xff1c5219,0xff356b32,0xff4f864c,0xff5f965c,
97 0xff578e54,0xff275e24,0xff31682e,0xff487f45,0xff356c32,0xff195016,0xff3e753b,0xff3f763c,0xff3e753b,0xff3c733a,0xfb335435,0xbd1c241e,0x7d080808,0x57090909, 250 0xff578e54,0xff275e24,0xff31682e,0xff487f45,0xff356c32,0xff195016,0xff3e753b,0xff3f763c,0xff3e753b,0xff3c733a,0xfb335435,0xbd1c241e,0x7d080808,0x57090909,
98 0x350a0a0a,0x1c090909,0x7242424,0x120e0e0e,0x250e0e0e,0x400c0c0c,0xac52625f,0xfb3e5a5f,0xff35633a,0xff70a571,0xff89c087,0xff84bb81,0xff7eb57b,0xff77ae74, 251 0x350a0a0a,0x1c090909,0x7242424,0x120e0e0e,0x250e0e0e,0x400c0c0c,0xac52625f,0xfb3e5a5f,0xff35633a,0xff70a571,0xff89c087,0xff84bb81,0xff7eb57b,0xff77ae74,
99 0xff71a86e,0xff6aa067,0xff62985f,0xff4b8148,0xff265d23,0xff2b6228,0xff4b8248,0xff447b41,0xff1d541a,0xff2c6329,0xff3d743a,0xff3c7339,0xff3b7239,0xfb305531, 252 0xff71a86e,0xff6aa067,0xff62985f,0xff4b8148,0xff265d23,0xff2b6228,0xff4b8248,0xff447b41,0xff1d541a,0xff2c6329,0xff3d743a,0xff3c7339,0xff3b7239,0xfb305531,
100 0xd0213024,0x86060606,0x61050505,0x3f040404,0x24070707,0x11000000,0x3000000,0xb171717,0x170b0b0b,0x2c0c0c0c,0x47070707,0xae4b5b56,0xf9425d5f,0xff174518, 253 0xd0213024,0x86060606,0x61050505,0x3f040404,0x24070707,0x11000000,0x3000000,0xb171717,0x170b0b0b,0x2c0c0c0c,0x47070707,0xae4b5b56,0xf9425d5f,0xff174518,
101 0xff386b38,0xff568c55,0xff6aa067,0xff70a76d,0xff5e955b,0xff467d43,0xff2d642a,0xff144b11,0xff32692f,0xff4c8349,0xff487f45,0xff285f25,0xff1d541a,0xff3d743a, 254 0xff386b38,0xff568c55,0xff6aa067,0xff70a76d,0xff5e955b,0xff467d43,0xff2d642a,0xff144b11,0xff32692f,0xff4c8349,0xff487f45,0xff285f25,0xff1d541a,0xff3d743a,
102 0xff3b7138,0xff397037,0xfa2e5131,0xd0202d24,0x89040404,0x67050505,0x47040404,0x2b060606,0x16000000,0xa000000,0x1000000,0x5000000,0xd000000,0x1b090909, 255 0xff3b7138,0xff397037,0xfa2e5131,0xd0202d24,0x89040404,0x67050505,0x47040404,0x2b060606,0x16000000,0xa000000,0x1000000,0x5000000,0xd000000,0x1b090909,
103 0x2f050505,0x49030303,0x9236423d,0xed4b6461,0xff3a6346,0xff215122,0xff0f430d,0xff033900,0xff0e440b,0xff1e551b,0xff32692f,0xff467d43,0xff4d844a,0xff487f45, 256 0x2f050505,0x49030303,0x9236423d,0xed4b6461,0xff3a6346,0xff215122,0xff0f430d,0xff033900,0xff0e440b,0xff1e551b,0xff32692f,0xff467d43,0xff4d844a,0xff487f45,
104 0xff275e24,0xff194f16,0xff356c33,0xff3a7038,0xff376835,0xf22a462d,0xbc18221a,0x85020202,0x67020202,0x49030303,0x2e000000,0x1a000000,0xd000000,0x5000000, 257 0xff275e24,0xff194f16,0xff356c33,0xff3a7038,0xff376835,0xf22a462d,0xbc18221a,0x85020202,0x67020202,0x49030303,0x2e000000,0x1a000000,0xd000000,0x5000000,
105 0xffffff,0x2000000,0x6000000,0xe000000,0x1b000000,0x2e000000,0x47040404,0x61030303,0xc3415249,0xf349675a,0xff578063,0xff5a8a61,0xff598b5c,0xff568a57, 258 0xffffff,0x2000000,0x6000000,0xe000000,0x1b000000,0x2e000000,0x47040404,0x61030303,0xc3415249,0xf349675a,0xff578063,0xff5a8a61,0xff598b5c,0xff568a57,
106 0xff538851,0xff4e844d,0xff366c34,0xff194f17,0xff1c511a,0xff376d36,0xff3a6a39,0xf72b4b2f,0xd8223426,0x94020202,0x7c020202,0x60000000,0x46000000,0x2e000000, 259 0xff538851,0xff4e844d,0xff366c34,0xff194f17,0xff1c511a,0xff376d36,0xff3a6a39,0xf72b4b2f,0xd8223426,0x94020202,0x7c020202,0x60000000,0x46000000,0x2e000000,
107 0x1b000000,0xe000000,0x6000000,0x2000000,0xffffff,0x1000000,0x2000000,0x7000000,0xe000000,0x1a000000,0x2a000000,0x3e000000,0x55000000,0x6c000000, 260 0x1b000000,0xe000000,0x6000000,0x2000000,0xffffff,0x1000000,0x2000000,0x7000000,0xe000000,0x1a000000,0x2a000000,0x3e000000,0x55000000,0x6c000000,
108 0xb6314039,0xe23e5648,0xf63d5a4b,0xfd355a44,0xff295432,0xff174817,0xff15421e,0xfd284f34,0xf7315236,0xe82b422e,0xc71d2c20,0x93000000,0x81000000,0x6c000000, 261 0xb6314039,0xe23e5648,0xf63d5a4b,0xfd355a44,0xff295432,0xff174817,0xff15421e,0xfd284f34,0xf7315236,0xe82b422e,0xc71d2c20,0x93000000,0x81000000,0x6c000000,
109 0x55000000,0x3e000000,0x2a000000,0x1a000000,0xe000000,0x7000000,0x2000000,0x1000000,0xffffff,0xffffff,0x1000000,0x2000000,0x6000000,0xd000000, 262 0x55000000,0x3e000000,0x2a000000,0x1a000000,0xe000000,0x7000000,0x2000000,0x1000000,0xffffff,0xffffff,0x1000000,0x2000000,0x6000000,0xd000000,
110 0x16000000,0x23000000,0x33000000,0x45000000,0x56000000,0x67000000,0x75000000,0x81000000,0x89000000,0x8e000000,0x90000000,0x8e000000,0x89000000,0x81000000, 263 0x16000000,0x23000000,0x33000000,0x45000000,0x56000000,0x67000000,0x75000000,0x81000000,0x89000000,0x8e000000,0x90000000,0x8e000000,0x89000000,0x81000000,
111 0x75000000,0x67000000,0x56000000,0x45000000,0x33000000,0x23000000,0x16000000,0xd000000,0x6000000,0x2000000,0x1000000,0xffffff,0xffffff,0xffffff, 264 0x75000000,0x67000000,0x56000000,0x45000000,0x33000000,0x23000000,0x16000000,0xd000000,0x6000000,0x2000000,0x1000000,0xffffff,0xffffff,0xffffff,
112 0xffffff,0x1000000,0x2000000,0x5000000,0xa000000,0x11000000,0x1b000000,0x26000000,0x33000000,0x3f000000,0x4a000000,0x53000000,0x59000000,0x5e000000, 265 0xffffff,0x1000000,0x2000000,0x5000000,0xa000000,0x11000000,0x1b000000,0x26000000,0x33000000,0x3f000000,0x4a000000,0x53000000,0x59000000,0x5e000000,
113 0x5f000000,0x5e000000,0x59000000,0x53000000,0x4a000000,0x3f000000,0x33000000,0x26000000,0x1b000000,0x11000000,0xa000000,0x5000000,0x2000000,0x1000000, 266 0x5f000000,0x5e000000,0x59000000,0x53000000,0x4a000000,0x3f000000,0x33000000,0x26000000,0x1b000000,0x11000000,0xa000000,0x5000000,0x2000000,0x1000000,
114 0xffffff,0xffffff 267 0xffffff,0xffffff
115}; 268};
116 269
270static const QRgb center_data[] = {
271 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
272 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
273 0xc000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0xc000000,
274 0x10000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x10000000,
275 0x0,0x0,0x3c000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x3c000000,0x0,0x0,
276 0x0,0x0,0x18000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x18000000,0x0,0x0,
277 0x1c000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0x1c000000,
278 0x0,0x0,0xc000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0xc000000,0x0,0x0,
279 0x0,0x0,0x48000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0x48000000,0x0,0x0,
280 0xc000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0xc000000,
281 0x10000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x10000000,
282 0x0,0x0,0x3c000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x3c000000,0x0,0x0,
283 0x0,0x0,0x18000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x18000000,0x0,0x0,
284 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0
285};
286
287static const QRgb citytime_icon_data[] = {
288 0x0,0x0,0x0,0x1b9ebfb,0x2ca9e0fc,0x7688c4f8,0x8f75b7f8,0x856cb1f7,0x4b68b0f5,0x75c9ed8,0x0,0x0,0x0,0x0,
289 0x0,0x0,0xed3fcfd,0xa2b8e6fc,0xfbb6e0f9,0xffc5eafe,0xffd1eefe,0xffb9e4fe,0xff89c7fc,0xd46db2f7,0x38509ae6,0x0,0x0,0x0,
290 0x0,0xaecfcfd,0xc2bde5fd,0xffade3ff,0xffccf7ff,0xffebfeff,0xffdffdff,0xffb8ecff,0xff97d7ff,0xff76c1ff,0xf14e9ff8,0x3d408ada,0x0,0x0,
291 0x0,0x84aed3f9,0xff8dccfe,0xffc8edff,0xffe9f9ff,0xfff2fbff,0xffddfcff,0xffbbedff,0xff9cd8ff,0xff74bfff,0xff55aaff,0xdd3b89ec,0xe295582,0x0,
292 0xfd8fdfd,0xed77b7f7,0xffb7e2ff,0xffddf5ff,0xffe4f7ff,0xffd3f3ff,0xffbbedff,0xfface2ff,0xff95d2ff,0xff6ab9ff,0xff53a9ff,0xff2e76e9,0x653b82d1,0x0,
293 0x45b4e5fa,0xff4f96f0,0xffc2eafe,0xffd6f3ff,0xffdaf4ff,0xffa4ddff,0xff99d8ff,0xff8aceff,0xff74bfff,0xff5eb0ff,0xff55aaff,0xff1a56da,0xae2b70d5,0x1000000,
294 0x6399d1f8,0xff4088eb,0xff57adf7,0xffabe3ff,0xffd3f2ff,0xffc6ebff,0xffafdfff,0xff6cbaff,0xff5bafff,0xff53a9ff,0xff529af5,0xff1f59db,0xcb2d70d7,0x5000000,
295 0x5b90caf7,0xff2c6de0,0xff3b83e9,0xff56a6f4,0xffbce6fe,0xffcaeeff,0xffcbefff,0xff62b2ff,0xff4ca1fb,0xff5299f3,0xff5991ec,0xff3a76e4,0xc54287dc,0x5000000,
296 0x2d91cdf5,0xfd265fda,0xff2763dd,0xff7baff2,0xffb7e1fc,0xffc8ecfe,0xffccefff,0xff619bed,0xff2663dd,0xff80b2f1,0xff5386e6,0xff0e43d2,0x9c4081cd,0x1000000,
297 0x376add3,0xcc4983e4,0xff5383e4,0xffb2dcfc,0xffcceeff,0xffdcf4ff,0xffe1f6ff,0xffb9d7f8,0xffa5ccf6,0xff9ac6f6,0xff71a3ee,0xfd407ce5,0x49306294,0x0,
298 0x0,0x456eb0ec,0xfb669aec,0xffbbe3fd,0xffd5f3ff,0xffe9f9ff,0xfff4fcff,0xffe6f8ff,0xffd2f1ff,0xffb6dffc,0xff95c7f9,0xb15592d3,0x903070b,0x0,
299 0x0,0x12f516f,0x6d6eafea,0xfaaad9fc,0xffceedfe,0xffe6f7ff,0xfff0fbff,0xffe4f7ff,0xffd1f1ff,0xffb0dcfc,0xc668a4df,0x1e18334d,0x0,0x0,
300 0x0,0x0,0x10b151f,0x435094d5,0xc34c8ae0,0xf73c74e0,0xff4a7be2,0xfc5286e5,0xe37db3ea,0x88528bc2,0x150e1e2d,0x0,0x0,0x0,
301 0x0,0x0,0x0,0x0,0x4000000,0x202a5885,0x35306498,0x302a5886,0x130b1824,0x2000000,0x0,0x0,0x0,0x0
302};
303
117static const QRgb Clock_data[] = { 304static const QRgb Clock_data[] = {
118 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20b4b4c3,0x70b2b2c1,0xbfb0b0c0,0xefaeaebe,0xffababbd, 305 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20b4b4c3,0x70b2b2c1,0xbfb0b0c0,0xefaeaebe,0xffababbd,
119 0xffa9a9bb,0xffa6a6b9,0xffa4a4b7,0xefa2a2b5,0xbf9f9fb3,0x709d9db1,0x209b9bb0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 306 0xffa9a9bb,0xffa6a6b9,0xffa4a4b7,0xefa2a2b5,0xbf9f9fb3,0x709d9db1,0x209b9bb0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
120 0x0,0x0,0x0,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x30b6b6c5,0xafb5b5c4,0xffb3b3c2, 307 0x0,0x0,0x0,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x30b6b6c5,0xafb5b5c4,0xffb3b3c2,
121 0xffbabac8,0xffd1d1db,0xffe4e4ea,0xffe8e8ed,0xfffcfcfd,0xfffbfbfc,0xffe4e4e9,0xffdddde4,0xffc4c4d0,0xffa7a7b9,0xff9999ae,0xc19595aa,0x309595ab,0x0, 308 0xffbabac8,0xffd1d1db,0xffe4e4ea,0xffe8e8ed,0xfffcfcfd,0xfffbfbfc,0xffe4e4e9,0xffdddde4,0xffc4c4d0,0xffa7a7b9,0xff9999ae,0xc19595aa,0x309595ab,0x0,
122 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0, 309 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,
123 0x8fb8b8c6,0xffb6b6c5,0xffc7c7d2,0xffececf0,0xfffefeff,0xfffefefe,0xffefeff2,0xffe8e8ed,0xffd8d8e0,0xffd1d1da,0xffe3e3e9,0xffe7e7ec,0xfff5f5f7,0xfff3f3f5, 310 0x8fb8b8c6,0xffb6b6c5,0xffc7c7d2,0xffececf0,0xfffefeff,0xfffefefe,0xffefeff2,0xffe8e8ed,0xffd8d8e0,0xffd1d1da,0xffe3e3e9,0xffe7e7ec,0xfff5f5f7,0xfff3f3f5,
124 0xffdadae2,0xffababbd,0xff9393a9,0x938c8ca2,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffffff,0x0,0x0, 311 0xffdadae2,0xffababbd,0xff9393a9,0x938c8ca2,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffffff,0x0,0x0,
125 0x0,0x0,0x10babac8,0xcfb8b8c7,0xffbbbbc9,0xffe8e8ed,0xffffffff,0xfff5f5f8,0xffd0d0d9,0xffb6b6c5,0xffafb4ca,0xffa6b5d6,0xff9aafd7,0xff97add6, 312 0x0,0x0,0x10babac8,0xcfb8b8c7,0xffbbbbc9,0xffe8e8ed,0xffffffff,0xfff5f5f8,0xffd0d0d9,0xffb6b6c5,0xffafb4ca,0xffa6b5d6,0xff9aafd7,0xff97add6,
126 0xffa4b2cf,0xffa1a8c0,0xffa2a2b5,0xffbbbbc9,0xffe4e4e9,0xffececf0,0xffceced8,0xff9494aa,0xd48989a0,0x108a8aa2,0x0,0x0,0x0,0x0, 313 0xffa4b2cf,0xffa1a8c0,0xffa2a2b5,0xffbbbbc9,0xffe4e4e9,0xffececf0,0xffceced8,0xff9494aa,0xd48989a0,0x108a8aa2,0x0,0x0,0x0,0x0,
127 0x0,0xffffff,0x0,0x0,0x0,0x10babac8,0xcfb9b9c7,0xffc5c5d1,0xfff6f6f8,0xfffbfbfc,0xffd7d7df,0xffb8b9c7,0xffb8c8e2,0xffdfedfa, 314 0x0,0xffffff,0x0,0x0,0x0,0x10babac8,0xcfb9b9c7,0xffc5c5d1,0xfff6f6f8,0xfffbfbfc,0xffd7d7df,0xffb8b9c7,0xffb8c8e2,0xffdfedfa,
128 0xfff6fcff,0xfffafeff,0xffbabee7,0xffb5bce7,0xffebf9ff,0xffe5f7ff,0xffc2dff7,0xffadbed5,0xff999bb0,0xffb9b9c7,0xffe2e2e8,0xffd9d9e1,0xff9b9baf,0xd783839a, 315 0xfff6fcff,0xfffafeff,0xffbabee7,0xffb5bce7,0xffebf9ff,0xffe5f7ff,0xffc2dff7,0xffadbed5,0xff999bb0,0xffb9b9c7,0xffe2e2e8,0xffd9d9e1,0xff9b9baf,0xd783839a,
129 0x13717186,0x0,0x0,0x0,0x0,0xffffff,0x0,0x0,0x0,0xcfb9b9c8,0xffc5c5d1,0xfffafafb,0xfff2f2f5,0xffc1c1ce, 316 0x13717186,0x0,0x0,0x0,0x0,0xffffff,0x0,0x0,0x0,0xcfb9b9c8,0xffc5c5d1,0xfffafafb,0xfff2f2f5,0xffc1c1ce,
130 0xffafc0dc,0xffdff2fb,0xffe7f8ff,0xffedfaff,0xfff1fbff,0xfff4fcff,0xff797dcf,0xff777dcf,0xffe9f9ff,0xffe3f7ff,0xffddf5ff,0xffd7f3ff,0xffc1e3f8,0xff89a1c9, 317 0xffafc0dc,0xffdff2fb,0xffe7f8ff,0xffedfaff,0xfff1fbff,0xfff4fcff,0xff797dcf,0xff777dcf,0xffe9f9ff,0xffe3f7ff,0xffddf5ff,0xffd7f3ff,0xffc1e3f8,0xff89a1c9,
131 0xff9898ad,0xffd1d1db,0xffd9d9e1,0xff9696ac,0xd77f7f97,0x3000000,0x0,0x0,0x0,0xffffff,0x0,0x0,0x8fbabac8,0xffbcbcca, 318 0xff9898ad,0xffd1d1db,0xffd9d9e1,0xff9696ac,0xd77f7f97,0x3000000,0x0,0x0,0x0,0xffffff,0x0,0x0,0x8fbabac8,0xffbcbcca,
132 0xfff6f6f8,0xfff2f2f5,0xffbdbdcb,0xff9bbae4,0xffd9f4ff,0xffdef5ff,0xffe4f7ff,0xffe8f8ff,0xffecf9ff,0xffedfaff,0xffcedaf3,0xffccd9f3,0xffe5f7ff,0xffe0f6ff, 319 0xfff6f6f8,0xfff2f2f5,0xffbdbdcb,0xff9bbae4,0xffd9f4ff,0xffdef5ff,0xffe4f7ff,0xffe8f8ff,0xffecf9ff,0xffedfaff,0xffcedaf3,0xffccd9f3,0xffe5f7ff,0xffe0f6ff,
133 0xffdaf4ff,0xffd4f2ff,0xffcef1ff,0xffc6ebfe,0xff83a5d6,0xff8e8ea5,0xffccccd6,0xffceced8,0xff8787a0,0xa1717188,0x0,0x0,0x0,0xffffff, 320 0xffdaf4ff,0xffd4f2ff,0xffcef1ff,0xffc6ebfe,0xff83a5d6,0xff8e8ea5,0xffccccd6,0xffceced8,0xff8787a0,0xa1717188,0x0,0x0,0x0,0xffffff,
134 0x0,0x30babac8,0xffb8b8c7,0xffe9e9ed,0xfffbfbfc,0xffc2c2ce,0xff98b9e4,0xffd0f1ff,0xffd5f3ff,0xffdaf4ff,0xffdff6ff,0xffe3f7ff,0xffe5f7ff,0xffe6f8ff, 321 0x0,0x30babac8,0xffb8b8c7,0xffe9e9ed,0xfffbfbfc,0xffc2c2ce,0xff98b9e4,0xffd0f1ff,0xffd5f3ff,0xffdaf4ff,0xffdff6ff,0xffe3f7ff,0xffe5f7ff,0xffe6f8ff,
135 0xffe6f8ff,0xffe4f7ff,0xffe0f6ff,0xffdcf5ff,0xffd7f3ff,0xffd1f2ff,0xffcbefff,0xffc2e9fe,0xffb9e2fd,0xff7ca0d4,0xff8e8ea5,0xffd0d0da,0xffb8b8c7,0xff7e7e98, 322 0xffe6f8ff,0xffe4f7ff,0xffe0f6ff,0xffdcf5ff,0xffd7f3ff,0xffd1f2ff,0xffcbefff,0xffc2e9fe,0xffb9e2fd,0xff7ca0d4,0xff8e8ea5,0xffd0d0da,0xffb8b8c7,0xff7e7e98,
136 0x48535365,0x0,0x0,0xffffff,0x0,0xbfb9b9c7,0xffc9c9d4,0xffffffff,0xffd8d8e0,0xff92add9,0xffc4eafe,0xffccefff,0xffd1f1ff,0xffd6f3ff, 323 0x48535365,0x0,0x0,0xffffff,0x0,0xbfb9b9c7,0xffc9c9d4,0xffffffff,0xffd8d8e0,0xff92add9,0xffc4eafe,0xffccefff,0xffd1f1ff,0xffd6f3ff,
137 0xffdaf4ff,0xffddf5ff,0xffdff6ff,0xffe0f6ff,0xffe0f6ff,0xffdef5ff,0xffdbf4ff,0xffd7f3ff,0xffd2f2ff,0xff81969f,0xff0c0f10,0xff9abace,0xffb5dffc,0xffacd8fb, 324 0xffdaf4ff,0xffddf5ff,0xffdff6ff,0xffe0f6ff,0xffe0f6ff,0xffdef5ff,0xffdbf4ff,0xffd7f3ff,0xffd2f2ff,0xff81969f,0xff0c0f10,0xff9abace,0xffb5dffc,0xffacd8fb,
138 0xff6f8bc0,0xffa3a3b6,0xffceced8,0xff9090a7,0xbf707089,0xa000000,0x0,0xffffff,0x20b8b8c7,0xffb7b7c6,0xffededf1,0xfff6f6f8,0xffafb3c9,0xff9ac8f5, 325 0xff6f8bc0,0xffa3a3b6,0xffceced8,0xff9090a7,0xbf707089,0xa000000,0x0,0xffffff,0x20b8b8c7,0xffb7b7c6,0xffededf1,0xfff6f6f8,0xffafb3c9,0xff9ac8f5,
139 0xffbee5fd,0xffc5ebfe,0xffccf0ff,0xffd1f1ff,0xffd4f2ff,0xffd7f3ff,0xffd9f4ff,0xffd9f4ff,0xffd9f4ff,0xffd7f3ff,0xffd5f3ff,0xffd2f2ff,0xff81969f,0xff000000, 326 0xffbee5fd,0xffc5ebfe,0xffccf0ff,0xffd1f1ff,0xffd4f2ff,0xffd7f3ff,0xffd9f4ff,0xffd9f4ff,0xffd9f4ff,0xffd7f3ff,0xffd5f3ff,0xffd2f2ff,0xff81969f,0xff000000,
140 0xff000000,0xff455560,0xffabd5f4,0xffa8d4fa,0xff85b7f0,0xff767b9c,0xffc1c1cd,0xffb4b4c3,0xff787894,0x3f3d3d4b,0x0,0xffffff,0x70b7b7c6,0xffbfbfcc, 327 0xff000000,0xff455560,0xffabd5f4,0xffa8d4fa,0xff85b7f0,0xff767b9c,0xffc1c1cd,0xffb4b4c3,0xff787894,0x3f3d3d4b,0x0,0xffffff,0x70b7b7c6,0xffbfbfcc,
141 0xffffffff,0xffd2d2dc,0xff7ea3dd,0xffb0dbfc,0xffb7e0fc,0xffbee6fd,0xffc5eafe,0xffcaefff,0xffcef1ff,0xffd1f1ff,0xffd2f2ff,0xffd3f2ff,0xffd2f2ff,0xffd1f2ff, 328 0xffffffff,0xffd2d2dc,0xff7ea3dd,0xffb0dbfc,0xffb7e0fc,0xffbee6fd,0xffc5eafe,0xffcaefff,0xffcef1ff,0xffd1f1ff,0xffd2f2ff,0xffd3f2ff,0xffd2f2ff,0xffd1f2ff,
142 0xffcff1ff,0xff80969f,0xff000000,0xff000000,0xff3a4750,0xff99bed8,0xffa6d1f4,0xffa2d1fa,0xff9acaf9,0xff5d84c7,0xff9595ab,0xffc3c3cf,0xff7f7f9a,0x8d5c5c73, 329 0xffcff1ff,0xff80969f,0xff000000,0xff000000,0xff3a4750,0xff99bed8,0xffa6d1f4,0xffa2d1fa,0xff9acaf9,0xff5d84c7,0xff9595ab,0xffc3c3cf,0xff7f7f9a,0x8d5c5c73,
143 0x6000000,0xffffff,0xbfb6b6c5,0xffd5d5dd,0xffffffff,0xffbbbbc9,0xff79aff1,0xffa9d6fb,0xffb0dbfc,0xffb7e0fc,0xffbde5fd,0xffc2e8fe,0xffc6ecfe,0xffc9eeff, 330 0x6000000,0xffffff,0xbfb6b6c5,0xffd5d5dd,0xffffffff,0xffbbbbc9,0xff79aff1,0xffa9d6fb,0xffb0dbfc,0xffb7e0fc,0xffbde5fd,0xffc2e8fe,0xffc6ecfe,0xffc9eeff,
144 0xffcbefff,0xffccefff,0xffcbefff,0xffcaeeff,0xff7d959f,0xff000000,0xff000000,0xff3a4750,0xff99bed8,0xffa7d1f4,0xffa4d2fa,0xff9dccf9,0xff95c6f8,0xff619beb, 331 0xffcbefff,0xffccefff,0xffcbefff,0xffcaeeff,0xff7d959f,0xff000000,0xff000000,0xff3a4750,0xff99bed8,0xffa7d1f4,0xffa4d2fa,0xff9dccf9,0xff95c6f8,0xff619beb,
145 0xff7a7a95,0xffbfbfcc,0xff9393a9,0xcc6c6c86,0x16000000,0xffffff,0xefb4b4c3,0xffe7e7ec,0xfff1f1f4,0xff9dabcb,0xff83b9f6,0xffa2d1fa,0xffa9d6fb,0xffafdafb, 332 0xff7a7a95,0xffbfbfcc,0xff9393a9,0xcc6c6c86,0x16000000,0xffffff,0xefb4b4c3,0xffe7e7ec,0xfff1f1f4,0xff9dabcb,0xff83b9f6,0xffa2d1fa,0xffa9d6fb,0xffafdafb,
146 0xffb4defc,0xffb9e2fd,0xffbde5fd,0xffc0e7fe,0xffc2e8fe,0xffc2e9fe,0xffc2e8fe,0xff79919f,0xff000000,0xff000000,0xff394750,0xff98bdd8,0xffa6d1f4,0xffa4d2fa, 333 0xffb4defc,0xffb9e2fd,0xffbde5fd,0xffc0e7fe,0xffc2e8fe,0xffc2e9fe,0xffc2e8fe,0xff79919f,0xff000000,0xff000000,0xff394750,0xff98bdd8,0xffa6d1f4,0xffa4d2fa,
147 0xff9dcdf9,0xff96c7f8,0xff85bbf6,0xff458aee,0xff6674a0,0xffadadbe,0xffa2a2b5,0xf26f6f8c,0x26000000,0xffffff,0xffb2b2c2,0xffebebef,0xffebebef,0xff88a2d2, 334 0xff9dcdf9,0xff96c7f8,0xff85bbf6,0xff458aee,0xff6674a0,0xffadadbe,0xffa2a2b5,0xf26f6f8c,0x26000000,0xffffff,0xffb2b2c2,0xffebebef,0xffebebef,0xff88a2d2,
148 0xff94c6f8,0xff9bcbf9,0xffa1d0fa,0xffa7d4fa,0xffacd8fb,0xffb0dbfc,0xffb4defc,0xffb6dffc,0xff96b7cd,0xff3b474f,0xff2f393f,0xff000000,0xff000000,0xff384650, 335 0xff94c6f8,0xff9bcbf9,0xffa1d0fa,0xffa7d4fa,0xffacd8fb,0xffb0dbfc,0xffb4defc,0xffb6dffc,0xff96b7cd,0xff3b474f,0xff2f393f,0xff000000,0xff000000,0xff384650,
149 0xff95bad8,0xffa3cff4,0xffa3d1fa,0xff9dccf9,0xff90c3f7,0xff6ea9f3,0xff498def,0xff3f86ed,0xff5877b7,0xffa5a5b8,0xffa3a3b6,0xff6f6f8c,0x30000000,0xffffff, 336 0xff95bad8,0xffa3cff4,0xffa3d1fa,0xff9dccf9,0xff90c3f7,0xff6ea9f3,0xff498def,0xff3f86ed,0xff5877b7,0xffa5a5b8,0xffa3a3b6,0xff6f6f8c,0x30000000,0xffffff,
150 0xffb1b1c0,0xfffefefe,0xffd8d8e0,0xff7d9fd7,0xff6990e1,0xff4962cb,0xff86b0ed,0xff9ecef9,0xffa3d1fa,0xffa2d0fa,0xff9acaf9,0xff93c5f8,0xff13191f,0xff505050, 337 0xffb1b1c0,0xfffefefe,0xffd8d8e0,0xff7d9fd7,0xff6990e1,0xff4962cb,0xff86b0ed,0xff9ecef9,0xffa3d1fa,0xffa2d0fa,0xff9acaf9,0xff93c5f8,0xff13191f,0xff505050,
151 0xff707070,0xff000000,0xff1b2228,0xff6c88a0,0xff7798b5,0xff799cbb,0xff7daad8,0xff7cb3f5,0xff65a3f2,0xff5189e7,0xff294ac7,0xff3669db,0xff577abc,0xff9494aa, 338 0xff707070,0xff000000,0xff1b2228,0xff6c88a0,0xff7798b5,0xff799cbb,0xff7daad8,0xff7cb3f5,0xff65a3f2,0xff5189e7,0xff294ac7,0xff3669db,0xff577abc,0xff9494aa,
152 0xffafafc0,0xff6d6d8b,0x33000000,0xffffff,0xffafafbf,0xfffdfdfe,0xffd6d6de,0xff81a2d7,0xff638ce0,0xff455fcb,0xff7fabed,0xff90c2f8,0xff88bcf6,0xff86bbf6, 339 0xffafafc0,0xff6d6d8b,0x33000000,0xffffff,0xffafafbf,0xfffdfdfe,0xffd6d6de,0xff81a2d7,0xff638ce0,0xff455fcb,0xff7fabed,0xff90c2f8,0xff88bcf6,0xff86bbf6,
153 0xff8cc0f7,0xff91c4f8,0xff000000,0xffafafaf,0xffefefef,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff3a5471,0xff76aef0,0xff70abf3,0xff5a90e8, 340 0xff8cc0f7,0xff91c4f8,0xff000000,0xffafafaf,0xffefefef,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff3a5471,0xff76aef0,0xff70abf3,0xff5a90e8,
154 0xff2e4ec8,0xff3d6fdb,0xff5b7dbc,0xff8c8ca4,0xffababbc,0xff6b6b8a,0x33000000,0xffffff,0xffadadbe,0xffe8e8ed,0xffe8e8ed,0xff89a5d4,0xff77b0f4,0xff80b6f5, 341 0xff2e4ec8,0xff3d6fdb,0xff5b7dbc,0xff8c8ca4,0xffababbc,0xff6b6b8a,0x33000000,0xffffff,0xffadadbe,0xffe8e8ed,0xffe8e8ed,0xff89a5d4,0xff77b0f4,0xff80b6f5,
155 0xff7eb5f5,0xff82b8f6,0xff8abff7,0xff92c4f8,0xff99caf9,0xff9ecef9,0xff485c6d,0xff000000,0xff202020,0xff1b2228,0xff475a6b,0xff45596a,0xff43576a,0xff40556a, 342 0xff7eb5f5,0xff82b8f6,0xff8abff7,0xff92c4f8,0xff99caf9,0xff9ecef9,0xff485c6d,0xff000000,0xff202020,0xff1b2228,0xff475a6b,0xff45596a,0xff43576a,0xff40556a,
156 0xff5a7b9e,0xff7fb3ed,0xff7ab2f5,0xff70abf4,0xff66a3f2,0xff5b9bf1,0xff6179af,0xff9a9aaf,0xff9898ad,0xff696988,0x33000000,0xffffff,0xefababbc,0xffe2e2e8, 343 0xff5a7b9e,0xff7fb3ed,0xff7ab2f5,0xff70abf4,0xff66a3f2,0xff5b9bf1,0xff6179af,0xff9a9aaf,0xff9898ad,0xff696988,0x33000000,0xffffff,0xefababbc,0xffe2e2e8,
157 0xffececf0,0xff9ca8c5,0xff6ea9f3,0xff77b0f4,0xff82b8f6,0xff8cc0f7,0xff95c7f8,0xff9ecdf9,0xffa5d3fa,0xffabd7fb,0xffb0dbfc,0xff7e9aaf,0xff748fa1,0xff8fb1c9, 344 0xffececf0,0xff9ca8c5,0xff6ea9f3,0xff77b0f4,0xff82b8f6,0xff8cc0f7,0xff95c7f8,0xff9ecdf9,0xffa5d3fa,0xffabd7fb,0xffb0dbfc,0xff7e9aaf,0xff748fa1,0xff8fb1c9,
158 0xffa5cdeb,0xffa6d0f2,0xffa1ccf1,0xff9ac7f0,0xff92c1ef,0xff8dbff5,0xff84baf6,0xff7ab2f5,0xff6faaf3,0xff64a1f2,0xff65719a,0xff9b9bb0,0xff9191a8,0xf2676784, 345 0xffa5cdeb,0xffa6d0f2,0xffa1ccf1,0xff9ac7f0,0xff92c1ef,0xff8dbff5,0xff84baf6,0xff7ab2f5,0xff6faaf3,0xff64a1f2,0xff65719a,0xff9b9bb0,0xff9191a8,0xf2676784,
159 0x33000000,0xffffff,0xbfa9a9ba,0xffccccd6,0xfffafafb,0xffacacbd,0xff77adf0,0xff80b7f5,0xff8bbff7,0xff96c7f8,0xffa0cff9,0xffa9d6fb,0xffb1dcfc,0xffb8e1fd, 346 0x33000000,0xffffff,0xbfa9a9ba,0xffccccd6,0xfffafafb,0xffacacbd,0xff77adf0,0xff80b7f5,0xff8bbff7,0xff96c7f8,0xffa0cff9,0xffa9d6fb,0xffb1dcfc,0xffb8e1fd,
160 0xffbde5fd,0xffc1e8fe,0xffc2e9fe,0xffc1e8fe,0xffbee6fd,0xffb9e2fd,0xffb3ddfc,0xffabd7fb,0xffa2d0fa,0xff98c9f8,0xff8dc1f7,0xff82b8f6,0xff77b0f4,0xff6ba3ec, 347 0xffbde5fd,0xffc1e8fe,0xffc2e9fe,0xffc1e8fe,0xffbee6fd,0xffb9e2fd,0xffb3ddfc,0xffabd7fb,0xffa2d0fa,0xff98c9f8,0xff8dc1f7,0xff82b8f6,0xff77b0f4,0xff6ba3ec,
161 0xff696988,0xffa3a3b6,0xff80809a,0xcc60607d,0x30000000,0xffffff,0x70a7a7b9,0xffb0b0c0,0xfff8f8fa,0xffc3c3d0,0xff8eadd9,0xff87bcf6,0xff93c5f8,0xff9fcef9, 348 0xff696988,0xffa3a3b6,0xff80809a,0xcc60607d,0x30000000,0xffffff,0x70a7a7b9,0xffb0b0c0,0xfff8f8fa,0xffc3c3d0,0xff8eadd9,0xff87bcf6,0xff93c5f8,0xff9fcef9,
162 0xffaad6fb,0xffb4ddfc,0xffbce4fd,0xffc4eafe,0xffcaeeff,0xffcdf0ff,0xffcff1ff,0xffcef0ff,0xffcbefff,0xffc6ebfe,0xffbee6fd,0xffb6dffc,0xffacd8fb,0xffa1d0fa, 349 0xffaad6fb,0xffb4ddfc,0xffbce4fd,0xffc4eafe,0xffcaeeff,0xffcdf0ff,0xffcff1ff,0xffcef0ff,0xffcbefff,0xffc6ebfe,0xffbee6fd,0xffb6dffc,0xffacd8fb,0xffa1d0fa,
163 0xff96c7f8,0xff8abef7,0xff7eb5f5,0xff6c89bc,0xff7b7b96,0xff9f9fb3,0xff6d6d8b,0x8d505069,0x26000000,0xffffff,0x20a5a5b8,0xffa3a3b6,0xffe2e2e8,0xffebebef, 350 0xff96c7f8,0xff8abef7,0xff7eb5f5,0xff6c89bc,0xff7b7b96,0xff9f9fb3,0xff6d6d8b,0x8d505069,0x26000000,0xffffff,0x20a5a5b8,0xffa3a3b6,0xffe2e2e8,0xffebebef,
164 0xff9ea1b7,0xff8fbff3,0xff9acbf9,0xffa6d4fa,0xffb2dcfc,0xffbde5fd,0xffc7ecfe,0xffcff1ff,0xffd4f2ff,0xffd6f3ff,0xffd8f3ff,0xffd7f3ff,0xffd4f2ff,0xffd0f1ff, 351 0xff9ea1b7,0xff8fbff3,0xff9acbf9,0xffa6d4fa,0xffb2dcfc,0xffbde5fd,0xffc7ecfe,0xffcff1ff,0xffd4f2ff,0xffd6f3ff,0xffd8f3ff,0xffd7f3ff,0xffd4f2ff,0xffd0f1ff,
165 0xffc9edff,0xffbfe6fd,0xffb4defc,0xffa9d6fb,0xff9dccf9,0xff90c3f8,0xff82b4ef,0xff65698b,0xff9898ad,0xff8e8ea5,0xff646484,0x4d292936,0x16000000,0xffffff, 352 0xffc9edff,0xffbfe6fd,0xffb4defc,0xffa9d6fb,0xff9dccf9,0xff90c3f8,0xff82b4ef,0xff65698b,0xff9898ad,0xff8e8ea5,0xff646484,0x4d292936,0x16000000,0xffffff,
166 0x0,0xb19f9fb2,0xffb5b5c4,0xfff4f4f6,0xffc2c2cf,0xff99aecf,0xffa0cffa,0xffadd9fb,0xffb9e2fd,0xffc5ebfe,0xffcff1ff,0xffd6f3ff,0xffdbf5ff,0xffdff6ff, 353 0x0,0xb19f9fb2,0xffb5b5c4,0xfff4f4f6,0xffc2c2cf,0xff99aecf,0xffa0cffa,0xffadd9fb,0xffb9e2fd,0xffc5ebfe,0xffcff1ff,0xffd6f3ff,0xffdbf5ff,0xffdff6ff,
167 0xffe1f6ff,0xffe0f6ff,0xffdcf5ff,0xffd7f3ff,0xffd1f1ff,0xffc8edff,0xffbce4fd,0xffb0dbfc,0xffa3d1fa,0xff96c7f8,0xff758cb6,0xff7d7d98,0xff9b9bb0,0xff71718f, 354 0xffe1f6ff,0xffe0f6ff,0xffdcf5ff,0xffd7f3ff,0xffd1f1ff,0xffc8edff,0xffbce4fd,0xffb0dbfc,0xffa3d1fa,0xff96c7f8,0xff758cb6,0xff7d7d98,0xff9b9bb0,0xff71718f,
168 0xbf5b5b78,0x33000000,0x6000000,0xffffff,0x0,0x309f9fb3,0xff9d9db1,0xffd7d7df,0xffebebef,0xffa3a3b6,0xffa0bcdd,0xffb2dcfc,0xffbfe7fd,0xffccefff, 355 0xbf5b5b78,0x33000000,0x6000000,0xffffff,0x0,0x309f9fb3,0xff9d9db1,0xffd7d7df,0xffebebef,0xffa3a3b6,0xffa0bcdd,0xffb2dcfc,0xffbfe7fd,0xffccefff,
169 0xffd4f2ff,0xffdcf5ff,0xffe2f7ff,0xffe8f8ff,0xffeaf9ff,0xffe8f8ff,0xffe4f7ff,0xffddf5ff,0xffd6f3ff,0xffcdf0ff,0xffc2e8fe,0xffb5dffc,0xffa8d5fa,0xff87a5cd, 356 0xffd4f2ff,0xffdcf5ff,0xffe2f7ff,0xffe8f8ff,0xffeaf9ff,0xffe8f8ff,0xffe4f7ff,0xffddf5ff,0xffd6f3ff,0xffcdf0ff,0xffc2e8fe,0xffb5dffc,0xffa8d5fa,0xff87a5cd,
170 0xff6a6a89,0xff9898ae,0xff8888a0,0xff636383,0x59353546,0x23000000,0x0,0xffffff,0x0,0x0,0x939797ab,0xff9e9eb2,0xffe3e3e9,0xffdbdbe3, 357 0xff6a6a89,0xff9898ae,0xff8888a0,0xff636383,0x59353546,0x23000000,0x0,0xffffff,0x0,0x0,0x939797ab,0xff9e9eb2,0xffe3e3e9,0xffdbdbe3,
171 0xff9999ae,0xffa9c2dc,0xffc3e9fe,0xffcff1ff,0xffd8f3ff,0xffe0f6ff,0xffe8f8ff,0xffeffaff,0xfff3fbff,0xfff0fbff,0xffeaf9ff,0xffe2f7ff,0xffdaf4ff,0xffd1f1ff, 358 0xff9999ae,0xffa9c2dc,0xffc3e9fe,0xffcff1ff,0xffd8f3ff,0xffe0f6ff,0xffe8f8ff,0xffeffaff,0xfff3fbff,0xfff0fbff,0xffeaf9ff,0xffe2f7ff,0xffdaf4ff,0xffd1f1ff,
172 0xffc6ecfe,0xffb8e1fd,0xff92adcf,0xff676786,0xff9292a8,0xff9292a8,0xff676786,0xa5555571,0x33000000,0xa000000,0x0,0xffffff,0x0,0x0, 359 0xffc6ecfe,0xffb8e1fd,0xff92adcf,0xff676786,0xff9292a8,0xff9292a8,0xff676786,0xa5555571,0x33000000,0xa000000,0x0,0xffffff,0x0,0x0,
173 0x0,0xd49393a9,0xffa5a5b8,0xffe4e4e9,0xffd6d6df,0xff9999ae,0xffa5b6cb,0xffccebf9,0xffdaf4ff,0xffe3f7ff,0xffecf9ff,0xfff4fcff,0xff7d7fcf,0xff7b7ecf, 360 0x0,0xd49393a9,0xffa5a5b8,0xffe4e4e9,0xffd6d6df,0xff9999ae,0xffa5b6cb,0xffccebf9,0xffdaf4ff,0xffe3f7ff,0xffecf9ff,0xfff4fcff,0xff7d7fcf,0xff7b7ecf,
174 0xffedfaff,0xffe4f7ff,0xffdcf5ff,0xffd2f2ff,0xffc2e5f7,0xff8b9db9,0xff6b6b8a,0xff9393a9,0xff9696ac,0xff6d6d8b,0xd95d5d7c,0x33000000,0x1d000000,0x0, 361 0xffedfaff,0xffe4f7ff,0xffdcf5ff,0xffd2f2ff,0xffc2e5f7,0xff8b9db9,0xff6b6b8a,0xff9393a9,0xff9696ac,0xff6d6d8b,0xd95d5d7c,0x33000000,0x1d000000,0x0,
175 0x0,0xffffff,0x0,0x0,0x0,0x109595ab,0xd78e8ea3,0xffa1a1b4,0xffdadae1,0xffdcdce3,0xffaeaebf,0xff8b8da5,0xffafbcce,0xffdceff9, 362 0x0,0xffffff,0x0,0x0,0x0,0x109595ab,0xd78e8ea3,0xffa1a1b4,0xffdadae1,0xffdcdce3,0xffaeaebf,0xff8b8da5,0xffafbcce,0xffdceff9,
176 0xffebf9ff,0xfff3fcff,0xff9b9edb,0xff989ddb,0xffecfaff,0xffe4f7ff,0xffd4ecf8,0xff9eaec3,0xff6d708e,0xff80809a,0xff9b9bb0,0xff9494aa,0xff6e6e8c,0xd95e5e7d, 363 0xffebf9ff,0xfff3fcff,0xff9b9edb,0xff989ddb,0xffecfaff,0xffe4f7ff,0xffd4ecf8,0xff9eaec3,0xff6d708e,0xff80809a,0xff9b9bb0,0xff9494aa,0xff6e6e8c,0xd95e5e7d,
177 0x40181821,0x29000000,0x0,0x0,0x0,0xffffff,0x0,0x0,0x0,0x0,0x137a7a8e,0xd78a8aa0,0xff9292a8,0xffc4c4d0, 364 0x40181821,0x29000000,0x0,0x0,0x0,0xffffff,0x0,0x0,0x0,0x0,0x137a7a8e,0xd78a8aa0,0xff9292a8,0xffc4c4d0,
178 0xffdbdbe3,0xffcdcdd8,0xffa0a0b4,0xff83839d,0xff9093aa,0xffa5a9bc,0xffb4b8c8,0xffb1b7c7,0xff9ea3b8,0xff8387a1,0xff6f6f8d,0xff81819b,0xff9e9eb2,0xffa0a0b4, 365 0xffdbdbe3,0xffcdcdd8,0xffa0a0b4,0xff83839d,0xff9093aa,0xffa5a9bc,0xffb4b8c8,0xffb1b7c7,0xff9ea3b8,0xff8387a1,0xff6f6f8d,0xff81819b,0xff9e9eb2,0xffa0a0b4,
179 0xff8b8ba3,0xff686887,0xd95e5e7d,0x40191921,0x29000000,0x3000000,0x0,0x0,0x0,0xffffff,0x0,0x0,0x0,0x0, 366 0xff8b8ba3,0xff686887,0xd95e5e7d,0x40191921,0x29000000,0x3000000,0x0,0x0,0x0,0xffffff,0x0,0x0,0x0,0x0,
180 0x0,0x3000000,0xa17b7b90,0xff8888a1,0xff9b9baf,0xffc0c0cd,0xffd1d1da,0xffcdcdd7,0xffbabac8,0xffb1b1c1,0xff9e9eb2,0xff9a9aaf,0xffa4a4b7,0xffa4a4b7, 367 0x0,0x3000000,0xa17b7b90,0xff8888a1,0xff9b9baf,0xffc0c0cd,0xffd1d1da,0xffcdcdd7,0xffbabac8,0xffb1b1c1,0xff9e9eb2,0xff9a9aaf,0xffa4a4b7,0xffa4a4b7,
181 0xffacacbd,0xffa7a7b9,0xff9494aa,0xff757592,0xff666685,0xa5575772,0x33000000,0x29000000,0x3000000,0x0,0x0,0x0,0x0,0xffffff, 368 0xffacacbd,0xffa7a7b9,0xff9494aa,0xff757592,0xff666685,0xa5575772,0x33000000,0x29000000,0x3000000,0x0,0x0,0x0,0x0,0xffffff,
182 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x485a5a6a,0xbf7a7a91,0xff82829c,0xff8a8aa2,0xff9f9fb2,0xffaeaebf,0xffafafbf, 369 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x485a5a6a,0xbf7a7a91,0xff82829c,0xff8a8aa2,0xff9f9fb2,0xffaeaebf,0xffafafbf,
183 0xffbcbcca,0xffb7b7c6,0xffa2a2b5,0xff9a9aaf,0xff8787a0,0xff72728f,0xff696987,0xbf5f5f7b,0x59373748,0x33000000,0x1d000000,0x0,0x0,0x0, 370 0xffbcbcca,0xffb7b7c6,0xffa2a2b5,0xff9a9aaf,0xff8787a0,0xff72728f,0xff696987,0xbf5f5f7b,0x59373748,0x33000000,0x1d000000,0x0,0x0,0x0,
184 0x0,0x0,0x0,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xa000000,0x3f42424f, 371 0x0,0x0,0x0,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xa000000,0x3f42424f,
185 0x8d64647a,0xcc74748e,0xf2787893,0xff777793,0xff757591,0xff72728f,0xff70708d,0xf26d6d8a,0xcc656581,0x8d54546c,0x4d2b2b38,0x33000000,0x23000000,0xa000000, 372 0x8d64647a,0xcc74748e,0xf2787893,0xff777793,0xff757591,0xff72728f,0xff70708d,0xf26d6d8a,0xcc656581,0x8d54546c,0x4d2b2b38,0x33000000,0x23000000,0xa000000,
186 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0, 373 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,
187 0x0,0x0,0x0,0x0,0x6000000,0x16000000,0x26000000,0x30000000,0x33000000,0x33000000,0x33000000,0x33000000,0x30000000,0x26000000, 374 0x0,0x0,0x0,0x0,0x6000000,0x16000000,0x26000000,0x30000000,0x33000000,0x33000000,0x33000000,0x33000000,0x30000000,0x26000000,
188 0x16000000,0x6000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffffff,0xffffff,0xffffff, 375 0x16000000,0x6000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffffff,0xffffff,0xffffff,
189 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, 376 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,
190 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, 377 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,
191 0xffffff,0xffffff 378 0xffffff,0xffffff
192}; 379};
193 380
194static const QRgb CloseButton_data[] = { 381static const QRgb CloseButton_data[] = {
195 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, 382 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,
196 0xffffff,0xffffff,0xffffff,0x3edcdcdc,0x93dbdbdb,0xd5dedede,0xfadcdcdc,0xd8d1d1d1,0x9ec8c8c8,0x509d9d9d,0xc000000,0x3000000,0xffffff,0xffffff, 383 0xffffff,0xffffff,0xffffff,0x3ed5d5d5,0x93d4d4d4,0xd5d8d8d8,0xfad5d5d5,0xd8c8c8c8,0x9ebebebe,0x508e8e8e,0xc000000,0x3000000,0xffffff,0xffffff,
197 0xffffff,0xffffff,0x60dcdcdc,0xdbe3e3e3,0xffe2e2e2,0xffd3d3d3,0xffcecece,0xffcdcdcd,0xffd7d7d7,0xe6c5c5c5,0x838d8d8d,0x18000000,0x4000000,0xffffff, 384 0xffffff,0xffffff,0x60d5d5d5,0xdbdddddd,0xffdcdcdc,0xffcbcbcb,0xffc5c5c5,0xffc4c4c4,0xffd0d0d0,0xe6bbbbbb,0x837d7d7d,0x18000000,0x4000000,0xffffff,
198 0xffffff,0x3edddcdc,0xdbdadada,0xffcbcbcb,0xff353535,0xff888888,0xffc2c1c2,0xff878687,0xff343434,0xffb1b2b1,0xec9e9d9e,0x75595959,0x18000000,0x3000000, 385 0xffffff,0x3ed6d5d5,0xdbd3d3d3,0xffc1c1c1,0xff262626,0xff777777,0xffb7b6b7,0xff767576,0xff252525,0xffa4a5a4,0xec8f8e8f,0x75474747,0x18000000,0x3000000,
199 0xffffff,0x94d5d6d5,0xffd1d0d0,0xff8c8c8c,0xff000000,0xff000000,0xff5a5a5a,0xff000000,0xff000000,0xff868786,0xffabaaaa,0xc8616161,0x3d000000,0xc000000, 386 0xffffff,0x94cdcecd,0xffc8c7c7,0xff7b7b7b,0xff000000,0xff000000,0xff484848,0xff000000,0xff000000,0xff757675,0xff9d9c9c,0xc84f4f4f,0x3d000000,0xc000000,
200 0xffffff,0xd5cbcbcb,0xffbbbbbb,0xffadadad,0xff7a7a7a,0xff000000,0xff000000,0xff000000,0xff777777,0xffb1b1b1,0xffb1b1b1,0xef616161,0x61000000,0x1a000000, 387 0xffffff,0xd5c2c2c2,0xffafafaf,0xffa0a0a0,0xff686868,0xff000000,0xff000000,0xff000000,0xff656565,0xffa4a4a4,0xffa4a4a4,0xef4f4f4f,0x61000000,0x1a000000,
201 0xffffff,0xfabfbfbf,0xffababab,0xffa4a4a4,0xff7a7a7a,0xff000000,0xff000000,0xff000000,0xff747474,0xffaeaeae,0xffa2a2a2,0xfd5d5d5d,0x7c000000,0x25000000, 388 0xffffff,0xfab4b4b4,0xff9d9d9d,0xff959595,0xff696969,0xff000000,0xff000000,0xff000000,0xff626262,0xffa1a1a1,0xff939393,0xfd4b4b4b,0x7c000000,0x25000000,
202 0xffffff,0xd9b0b0b0,0xffa0a0a0,0xff7d7d7d,0xff000000,0xff000000,0xff4a4a4a,0xff000000,0xff000000,0xff7a7a7a,0xff8c8c8c,0xf2484848,0x85000000,0x2b000000, 389 0xffffff,0xd9a3a3a3,0xff919191,0xff6c6c6c,0xff000000,0xff000000,0xff393939,0xff000000,0xff000000,0xff696969,0xff7b7b7b,0xf2373737,0x85000000,0x2b000000,
203 0xffffff,0xa0949494,0xff9b9b9a,0xff959696,0xff383838,0xff6a6a6a,0xffa1a1a0,0xff6e6e6e,0xff353535,0xff969796,0xff6a696a,0xdf363636,0x7c000000,0x25000000, 390 0xffffff,0xa0848484,0xff8c8c8b,0xff858686,0xff292929,0xff585858,0xff929291,0xff5c5c5c,0xff262626,0xff868786,0xff585758,0xdf272727,0x7c000000,0x25000000,
204 0xffffff,0x516f6f6f,0xe7818181,0xff8d8d8d,0xff949494,0xff999a9a,0xff9b9b9b,0xff9e9e9e,0xff8f8f8f,0xff737273,0xf5414141,0xbb1a1a1a,0x61000000,0x1a000000, 391 0xffffff,0x515d5d5d,0xe7707070,0xff7c7c7c,0xff848484,0xff898a8a,0xff8c8c8c,0xff8f8f8f,0xff7f7f7f,0xff616061,0xf5313131,0xbb101010,0x61000000,0x1a000000,
205 0xffffff,0xc000000,0x84505050,0xed626262,0xff6f6e6e,0xff7b7b7a,0xff7d7d7d,0xff767576,0xff636263,0xf5414140,0xcd1f1f1f,0x83000000,0x3d000000,0xc000000, 392 0xffffff,0xc000000,0x843f3f3f,0xed505050,0xff5d5c5c,0xff6a6a69,0xff6c6c6c,0xff646364,0xff515051,0xf5313130,0xcd141414,0x83000000,0x3d000000,0xc000000,
206 0xffffff,0x3000000,0x18000000,0x762f2f2f,0xc93b3b3b,0xf0404040,0xfd464646,0xf3393939,0xdf2a2a2a,0xbb161616,0x83000000,0x4b000000,0x18000000,0x3000000, 393 0xffffff,0x3000000,0x18000000,0x76212121,0xc92b2b2b,0xf0303030,0xfd353535,0xf32a2a2a,0xdf1d1d1d,0xbb0d0d0d,0x83000000,0x4b000000,0x18000000,0x3000000,
207 0xffffff,0xffffff,0x4000000,0x18000000,0x3d000000,0x61000000,0x7c000000,0x85000000,0x7c000000,0x61000000,0x3d000000,0x18000000,0x4000000,0xffffff, 394 0xffffff,0xffffff,0x4000000,0x18000000,0x3d000000,0x61000000,0x7c000000,0x85000000,0x7c000000,0x61000000,0x3d000000,0x18000000,0x4000000,0xffffff,
208 0xffffff,0xffffff,0xffffff,0x3000000,0xc000000,0x1a000000,0x25000000,0x2b000000,0x25000000,0x1a000000,0xc000000,0x3000000,0xffffff,0xffffff 395 0xffffff,0xffffff,0xffffff,0x3000000,0xc000000,0x1a000000,0x25000000,0x2b000000,0x25000000,0x1a000000,0xc000000,0x3000000,0xffffff,0xffffff
209}; 396};
210 397
398static const QRgb close_data[] = {
399 0x0,0x0,0x0,0x2c90000,0x1fc80000,0x5bc60000,0x83c50000,0x83c20000,0x5bbb0000,0x1fb70000,0x2b50000,0x0,0x0,0x0,
400 0x0,0x0,0xdcb0000,0x87cb0000,0xecd51313,0xffe44a4a,0xffed6f6f,0xffec7070,0xffe05050,0xecc91a1a,0x87b30000,0xdad0000,0x0,0x0,
401 0x0,0xdca0000,0xaacd0000,0xfee53b3b,0xfffbb1b1,0xffffd6d6,0xffffd9d9,0xffffd9d9,0xffffd7d7,0xfffbbcbc,0xfedb4c4c,0xaab00000,0xda70000,0x0,
402 0x2c90000,0x87ca0000,0xfee52f2f,0xfffeadad,0xffffd6d6,0xffffbdbd,0xffffb3b3,0xffffb3b3,0xffffbdbd,0xffffd6d6,0xfffeb1b1,0xfed84343,0x87a60000,0x2a00000,
403 0x1fc80000,0xecd50808,0xfffb7272,0xffffbcbc,0xffffffff,0xffffe7e7,0xffff9b9b,0xffff9b9b,0xffffe7e7,0xffffffff,0xffffbbbb,0xfffa7171,0xecb90c0c,0x1f9d0000,
404 0x5bc50000,0xffe41b1b,0xffff6464,0xffff7474,0xffffd9d9,0xffffffff,0xffffe0e0,0xffffe0e0,0xffffffff,0xfffcc6c6,0xfff63535,0xfff30e0e,0xffd00202,0x5b9a0000,
405 0x83c50000,0xffec1c1c,0xffff3f3f,0xffff3f3f,0xffff5252,0xffffd2d2,0xffffffff,0xffffffff,0xfffcc6c6,0xfff31c1c,0xfff20000,0xfff20000,0xffdc0000,0x839b0000,
406 0x83c10000,0xffec0a0a,0xffff1616,0xffff1616,0xffff3131,0xffffcece,0xffffffff,0xffffffff,0xfffcc6c6,0xfff41c1c,0xfff40000,0xfff40000,0xffdc0000,0x83970000,
407 0x5bbb0000,0xffe10000,0xfffe0101,0xfffe1b1b,0xffffc5c5,0xffffffff,0xffffc6c6,0xffffc6c6,0xffffffff,0xfffdc4c4,0xfffa1a1a,0xfffa0000,0xffcf0000,0x5b900000,
408 0x1fb70000,0xeccb0202,0xfffc0909,0xffff6d6d,0xffffffff,0xffffc8c8,0xffff2525,0xffff2525,0xffffc8c8,0xffffffff,0xffff6d6d,0xfffb0909,0xecae0202,0x1f8c0000,
409 0x2b40000,0x87b30101,0xfede1313,0xffff2828,0xffff7e7e,0xffff3a3a,0xffff2323,0xffff2323,0xffff3a3a,0xffff7e7e,0xfffe2828,0xfed01313,0x878e0101,0x28b0000,
410 0x0,0xdac0000,0xaab00404,0xfedb2121,0xfffc3b3b,0xffff3d3d,0xffff3d3d,0xffff3d3d,0xffff3d3d,0xfffb3b3b,0xfed02121,0xaa930404,0xd890000,0x0,
411 0x0,0x0,0xda60000,0x87a50202,0xecbb1616,0xffd73131,0xffe63f3f,0xffe53f3f,0xffd33131,0xecaf1616,0x878e0202,0xd890000,0x0,0x0,
412 0x0,0x0,0x0,0x29f0000,0x1d9c0000,0x59990101,0x839b0505,0x83970505,0x5b8f0101,0x1f8c0000,0x28a0000,0x0,0x0,0x0
413};
414
415static const QRgb copy_inactive_data[] = {
416 0x2bbc6d1,0x7b9c4cf,0xebfc8d3,0x1fc2cbd6,0x31c0c9d4,0x209fadbf,0x98494ac,0x17e8fa9,0x0,0x0,0x0,0x0,0x0,0x0,
417 0x21bfc9d4,0x48c8d1da,0x5cced5dd,0x73d0d8df,0x7eced6de,0x6da6b3c3,0x498b9bb1,0x168090a9,0x0,0x0,0x0,0x0,0x0,0x0,
418 0x42c4cdd7,0x7ee0e5ea,0x7ee3e7ec,0x7ed7dee4,0x7ed7dde4,0x7eadbac8,0x7d9eadbd,0x538394ab,0x47d8da8,0x0,0x0,0x0,0x0,0x0,
419 0x2dc4cdd7,0x7be2e6eb,0x7ee6eaed,0x7ed7dee4,0x7edde3e8,0x7ec9d2da,0x7eb9c4cf,0x7394a3b5,0x44a0a2b0,0x3ec0bbc6,0x35cac4d2,0x13a39cab,0x22b2b2b,0x2b2b2b,
420 0x17c2cbd5,0x6bd8dee4,0x7eeaeef0,0x7edbe1e6,0x7ed5dce2,0x7ec9d1da,0x7ec0c9d4,0x7eafbac7,0x7e9ea1af,0x7ebebac2,0x76d2cdd9,0x50b2aaba,0x1877707f,0x336343a,
421 0xbbec8d3,0x57d0d7df,0x7ee8ecef,0x7edae1e6,0x7eced5dd,0x7ec3ccd6,0x7ec1c9d4,0x7ec0cad3,0x7e99a1af,0x7eb9b6bd,0x7ec4bdcb,0x79b2a7bb,0x599c92a5,0x145f5a63,
422 0x6b7c1ce,0x42cdd4dd,0x7ce7ecef,0x7edce2e7,0x7ecbd2db,0x7ec9d1da,0x7ec6cfd9,0x7ec7d0d8,0x7e9fa8b7,0x7eb2b0b9,0x7ecbc5cf,0x7ecfc7d6,0x7bb5abbe,0x2b59555c,
423 0x2b7c2ce,0x25ccd3dc,0x73dee3e8,0x7edee3e8,0x7ecdd5dd,0x7ecad2db,0x7ec7cfd9,0x7ed2d8e0,0x7eafb8c5,0x7ea6a7b1,0x7ebeb9c4,0x7ed7d1de,0x7dbbb2c4,0x36514e54,
424 0x0,0x16c4cdd7,0x67d8dee4,0x7ee6eaed,0x7edbe1e7,0x7edae0e6,0x7ed2d9e0,0x7ec5ccd7,0x7ea1abbb,0x7e9d9fad,0x7eb4afba,0x7ed5d0dc,0x7dbdb4c5,0x39504d52,
425 0x0,0xebbc4d1,0x53cbd3dc,0x7ad5dbe2,0x6fc6ced8,0x79b3bbc8,0x7ea5adba,0x7e9ea5b4,0x7ea9abb9,0x7eb5b2be,0x7ec0bbc6,0x7ed9d4df,0x7ebeb5c6,0x39504d53,
426 0x0,0x59baabc,0x2b9facbf,0x469ca9bc,0x2e8999b0,0x67b0b2c0,0x7ec9c9d0,0x7ec9c5ce,0x7ed1ccd6,0x7ed5d0db,0x7ed8d2de,0x7ee0dbe6,0x7ebeb6c6,0x39504d52,
427 0x0,0x17d8ea8,0x67d8ca8,0x97d8ba8,0x27d8aa8,0x5ddbd6e1,0x7ef2f1f4,0x7fe9e6ed,0x7ee9e5ed,0x7ee8e3ec,0x7ee5e1ea,0x7fe8e4ed,0x7fc0b8c8,0x3a504d53,
428 0x0,0x0,0x0,0x0,0x0,0x5dbdb5c6,0x7ec6bfcc,0x7fc3bbca,0x7fc2bac9,0x7fc2b9c9,0x80c1b8c8,0x81c0b8c8,0x81b0a6b9,0x3b4e4b51,
429 0x0,0x0,0x0,0x0,0x0,0x137e7783,0x2c5c595f,0x39514e53,0x3a504d52,0x3a504d53,0x3b504d52,0x3c4f4c51,0x3e4c494f,0x2f303031
430};
431
432static const QRgb copy_data[] = {
433 0x5bbc5d1,0xdb9c4cf,0x1cbfc8d3,0x40c2cbd6,0x64c0c9d4,0x419fadbf,0x128494ac,0x27e8fa9,0x0,0x0,0x0,0x0,0x0,0x0,
434 0x41bfc9d4,0x90c9d1da,0xbaced5dd,0xe9d0d8df,0xffced6de,0xdca6b3c3,0x958b9bb1,0x2d8090a9,0x0,0x0,0x0,0x0,0x0,0x0,
435 0x84c4cdd7,0xffe0e5ea,0xffe3e7ec,0xffd7dee4,0xffd7dde4,0xffadbac8,0xfd9eadbd,0xa88394ab,0x97d8da8,0x0,0x0,0x0,0x0,0x0,
436 0x5bc4cdd7,0xf8e2e6eb,0xffe6eaed,0xffd7dee4,0xffdde3e8,0xffc9d2da,0xffb9c4cf,0xe894a3b5,0x8aa0a2b0,0x7fc0bbc6,0x6bcac4d2,0x26a39cab,0x42b2b2b,0x2b2b2b,
437 0x2fc2cbd5,0xd9d8dee4,0xffeaeef0,0xffdbe1e6,0xffd5dce2,0xffc9d1da,0xffc0c9d4,0xffafbac7,0xfe9ea1af,0xfebebac2,0xf0d2cdd9,0xa1b2aaba,0x3178717f,0x637343a,
438 0x15bec8d3,0xb0d0d7df,0xffe8ecef,0xffdbe1e6,0xffced6dd,0xffc3ccd6,0xffc1c9d4,0xffc0cad3,0xff99a1af,0xffb9b6bd,0xffc5becb,0xf4b2a7bb,0xb59c92a5,0x2a5e5a63,
439 0xcb7c1ce,0x86cdd4dd,0xfce7ecef,0xffdce2e7,0xffcbd3db,0xffc9d1da,0xffc6cfd9,0xffc7d0d8,0xff9fa8b7,0xffb2b0b9,0xffcbc5cf,0xffcfc7d6,0xf9b5abbe,0x5659555d,
440 0x3b7c2ce,0x4cccd3dc,0xeadee3e8,0xffdee3e8,0xffcdd5dd,0xffcad2db,0xffc7cfd9,0xffd2d8e0,0xffafb8c5,0xffa6a7b1,0xffbeb9c4,0xffd7d1de,0xfebbb2c4,0x6f514e54,
441 0x0,0x2dc4cdd7,0xd0d8dee4,0xffe6eaed,0xffdbe1e7,0xffdae0e6,0xffd2d9e0,0xffc5ccd7,0xffa1abbb,0xff9c9fad,0xffb4afba,0xffd5d0dc,0xfebdb4c5,0x73504d52,
442 0x0,0x1dbbc4d1,0xa7cbd3dc,0xf7d5dbe2,0xe1c6ced8,0xf5b3bbc8,0xffa5adba,0xff9ea5b4,0xffa9abb9,0xffb5b2be,0xffc0bbc6,0xffd9d4df,0xfebeb6c6,0x73504d53,
443 0x0,0xb9baabc,0x56a0acbf,0x8e9ca9bc,0x5e8999b0,0xd0b0b2c0,0xffc9c9d0,0xffc9c5ce,0xffd1ccd6,0xffd5d0db,0xffd8d2de,0xffe0dbe6,0xfebfb6c7,0x73504d53,
444 0x0,0x17d8ea8,0xc7d8ca8,0x137d8ba8,0x57d8aa8,0xbcdbd6e0,0xfef2f1f4,0xffe9e6ed,0xffe9e5ed,0xffe8e3ec,0xffe5e1ea,0xffe8e4ed,0xfec0b8c8,0x73504d53,
445 0x0,0x0,0x0,0x0,0x0,0xbbbdb5c6,0xfcc6bfcc,0xfdc3bbca,0xfdc2bac9,0xfdc2bac9,0xfdc1b8c8,0xfdc0b8c8,0xfcb0a6b9,0x724e4b51,
446 0x0,0x0,0x0,0x0,0x0,0x267c7682,0x585c595f,0x72504e53,0x73504d53,0x73504d53,0x73504d53,0x73504d52,0x724e4b51,0x4e313132
447};
448
449static const QRgb c_src_data[] = {
450 0x0,0x0,0x14d3d3d4,0x2fcdcdd1,0x2fc8c8cf,0x2fc4c4cc,0x2fbfbfc9,0x2fbabac7,0x17adadbc,0x0,0x0,0x0,0x0,0x0,
451 0x0,0x0,0x7cd6d6d9,0xfff4f4f5,0xfff5f5f6,0xfff3f3f5,0xffeeeef2,0xffe6e6ed,0xe3bebecd,0x289393a5,0x0,0x0,0x0,0x0,
452 0x0,0x0,0x7dd2d2d7,0xfffdfdfe,0xfff3f3f3,0xfffdfdfe,0xfff0f0f2,0xffececf1,0xffdedee7,0xddc9c9d7,0x2489899f,0x0,0x0,0x0,
453 0x0,0x0,0x7dcdcdd5,0xfffdfdfe,0xfff4f4f4,0xfffefefe,0xfff4f4f5,0xfff1f1f6,0xffdddde6,0xfff3f3f7,0xdcbabace,0x207b7b94,0x0,0x0,
454 0x0,0x0,0x7dc8c8d2,0xfffdfdfd,0xffebebeb,0xfffcfcfd,0xffebebec,0xffececf1,0xffd3d3e0,0xffc9c9da,0xffc6c6d8,0x8d8d8da6,0x0,0x0,
455 0x0,0x0,0x7dc3c3d0,0xfffdfdfd,0xfffcfcfc,0xffffffff,0xfff6f6f8,0xfff2f2f7,0xffe8e8f1,0xffe0e0ec,0xffdfdfec,0x938e8ea6,0x0,0x0,
456 0x0,0x0,0x7dbebecd,0xfffdfdfd,0xffffffff,0xffffffff,0xffe8e8ea,0xffeaeaf0,0xffd9d9e1,0xffe0e0e9,0xffe1e1ed,0x938a8aa5,0x0,0x0,
457 0x0,0x0,0x7db9b9cb,0xfffcfcfd,0xffececee,0xfff0f0f6,0xffe3e3e9,0xffe6e6ee,0xffe9e9f2,0xffe6e6f0,0xffe3e3ef,0x938888a3,0x0,0x0,
458 0x0,0x0,0x7db4b4c8,0xfff8f8fa,0xffefeff1,0xfff3f3f7,0xffebebf0,0xffededf3,0xffebebf3,0xffe9e9f2,0xffe6e6f0,0x938585a2,0x0,0x0,
459 0x0,0x0,0x7db5b5ca,0xffe2d9e9,0xffccbcd8,0xffbba5cb,0xffad93c0,0xffa588ba,0xff8b67a6,0xff7f579d,0xff9779b1,0x938282a1,0x0,0x0,
460 0x0,0x0,0x7db2b2c9,0xffddd3e5,0xffc2aed0,0xffad93c0,0xffbca7cc,0xffa082b6,0xff754894,0xff663589,0xff8560a2,0x937f7f9f,0x0,0x0,
461 0x0,0x0,0x7daeaec6,0xffddd3e5,0xffc2aed0,0xffb69ec6,0xffb59dc6,0xffad92bf,0xff764a95,0xff663589,0xff8661a3,0x937d7d9e,0x0,0x0,
462 0x0,0x0,0x7ca5a5c1,0xffddd8e7,0xffd0c7dd,0xffc5b9d5,0xffbaabcc,0xffaf9dc5,0xffa591bd,0xff9d86b7,0xffaa99c2,0x92747499,0x0,0x0,
463 0x0,0x0,0x1a6d6d8a,0x455b5b76,0x45585873,0x45545472,0x45515170,0x454d4d6e,0x454a4a6d,0x4547476b,0x45434369,0x2831314e,0x0,0x0
464};
465
466static const QRgb cut_inactive_data[] = {
467 0x0,0x0,0x0,0x1b9b9b9,0x13c3c3c3,0x6bcbcbcb,0x97d3d3d3,0x568d8d8d,0xb0b0b0b,0x2000000,0x0,0x0,0x0,0x0,
468 0x0,0x0,0x0,0x8b9b9b9,0x5acdcdcd,0x93c8c8c8,0x8eb1b1b1,0x8c9f9f9f,0x271b1b1b,0xb333333,0x7a5a5a5,0x2808080,0x0,0x0,
469 0x0,0x0,0x0,0xeb6b6b6,0x6bd4d4d4,0x909e9e9e,0x68707070,0x8e9d9d9d,0x331e1e1e,0x30a0a0a0,0x46bebebe,0x21878787,0x6212121,0x1000000,
470 0x0,0x0,0x0,0xdb0b0b0,0x69cccccc,0x94afafaf,0x7b8f8f8f,0x8e9d9d9d,0x4e6d6d6d,0x76b7b7b7,0x8facacac,0x6a909090,0x21515151,0x5000000,
471 0x0,0x0,0x0,0x59a9a9a,0x3bb0b0b0,0x86bababa,0x96c7c7c7,0x96a2a2a2,0x82acacac,0x75979797,0x6c8d8d8d,0x8d9b9b9b,0x40545454,0xe000000,
472 0x0,0x0,0x0,0x1000000,0xc5c5c5c,0x679d9d9d,0x97b7b7b7,0x9a9a9a9a,0x95b0b0b0,0x7ea4a4a4,0x80c1c1c1,0x93a5a5a5,0x4a474747,0x15000000,
473 0x0,0x0,0x0,0x8d8d8d,0x39b0b0b0,0x889d9d9d,0x9acccccc,0x968d8d8d,0x8d888888,0x98b1b1b1,0x94a8a8a8,0x6c6e6e6e,0x38181818,0x13000000,
474 0x0,0xa1a1a1,0x5aeaeae,0x3bb9b9b9,0x88dddddd,0x9ab3b3b3,0x9ad3d3d3,0x8f888888,0x52252525,0x55434343,0x4f3a3a3a,0x38161616,0x1e000000,0x8000000,
475 0x0,0x7afafaf,0x3ebebebe,0x88d8d8d8,0x96c7c7c7,0x96919191,0x9ad4d4d4,0x8e898989,0x3c0d0d0d,0x1f000000,0x19000000,0x14000000,0x9000000,0x1000000,
476 0x0,0x1eb7b7b7,0x86cacaca,0x96c7c7c7,0x77737373,0x806b6b6b,0x98d4d4d4,0x8e8a8a8a,0x370e0e0e,0x10000000,0x4000000,0x3000000,0x1000000,0x0,
477 0x0,0x26b2b2b2,0x93ababab,0x78787878,0x48212121,0x6f6e6e6e,0x97d5d5d5,0x8e8a8a8a,0x370e0e0e,0xe000000,0x1000000,0x0,0x0,0x0,
478 0x0,0x20818181,0x6e6f6f6f,0x43272727,0x27010101,0x65797979,0x96d4d4d4,0x8b909090,0x37101010,0xe000000,0x1000000,0x0,0x0,0x0,
479 0x0,0x94c4c4c,0x23323232,0x1e030303,0xf000000,0x60858585,0x94989898,0x5e4c4c4c,0x2d050505,0xc000000,0x0,0x0,0x0,0x0,
480 0x0,0x1000000,0x6000000,0x8000000,0x3000000,0x57696969,0x564a4a4a,0x35070707,0x1a000000,0x6000000,0x0,0x0,0x0,0x0
481};
482
483static const QRgb cut_data[] = {
484 0x0,0x0,0x0,0x1f2bf00,0x20f9cd00,0xb1fdd900,0xfbfbe601,0x8edd8000,0x13170800,0x4000000,0x0,0x0,0x0,0x0,
485 0x0,0x0,0x0,0xdf3bf00,0x96fddc00,0xf3eddb02,0xebcfc305,0xe8ee9600,0x41361200,0x12403600,0xbdab102,0x4a77e05,0x0,0x0,
486 0x0,0x0,0x0,0x17f0bb00,0xb1fee600,0xeec9a607,0xad897905,0xebec9300,0x54331b00,0x51c0ad00,0x74e8cc03,0x37b28906,0x93e1a02,0x1000000,
487 0x0,0x0,0x0,0x16e7b600,0xaefcda00,0xf5dab905,0xccac9a06,0xebec9300,0x81917000,0xc3dfc503,0xecd5b606,0xb0cf8b04,0x37884600,0x7000000,
488 0x0,0x0,0x0,0x9c49b00,0x62e2b800,0xdff1c201,0xf9eada03,0xf8f39900,0xd8dcb502,0xc2bba105,0xb2ad9705,0xe9e49301,0x6a8a4800,0x17000000,
489 0x0,0x0,0x0,0x1000000,0x15775f00,0xabd9961e,0xfafbb509,0xffed8b0a,0xf7ddbb05,0xd1c3b204,0xd4e3d400,0xf4f09e00,0x7b763d00,0x23000000,
490 0x0,0x0,0x0,0x1739ed6,0x5f92b5e6,0xe17ea5ce,0xfec5cfdb,0xf97393b6,0xead07c09,0xfbf7af00,0xf6f2a300,0xb4b16200,0x5e2c1300,0x1f000000,
491 0x0,0x7fa9da,0x995b4dc,0x63a0bfe1,0xe1c7e5f5,0xff89c0e7,0xffbcd8fa,0xed4798e4,0x8935201a,0x8d862f00,0x82702a00,0x5d2a1000,0x31000000,0xd000000,
492 0x0,0xc95b6de,0x67a7c5e4,0xe1c1e0f3,0xf8a0d3f6,0xf85ca0dd,0xfebed8fa,0xec4899e6,0x64021020,0x33000000,0x29000000,0x21000000,0xf000000,0x2000000,
493 0x0,0x329abee2,0xddafd3ed,0xf8a1d3f6,0xc63e80bf,0xd43578b9,0xfbbfd8f8,0xeb4e99e1,0x5c001226,0x1b000000,0x7000000,0x5000000,0x2000000,0x0,
494 0x0,0x3f8fbbe4,0xf481b6e7,0xc74385c4,0x77072749,0xb74479a8,0xfac1d9f8,0xeb4f99e1,0x5b001225,0x18000000,0x2000000,0x0,0x0,0x0,
495 0x0,0x354590dc,0xb5367dc6,0x6f0a2f55,0x40000204,0xa74b86bb,0xf9bed9f9,0xe65e9cd6,0x5a041321,0x18000000,0x1000000,0x0,0x0,0x0,
496 0x0,0xf0e59a4,0x3a093c6f,0x31000407,0x19000000,0x9f5592c8,0xf560a6ee,0x9b2f5475,0x4a020609,0x14000000,0x1000000,0x0,0x0,0x0,
497 0x0,0x2000000,0xa000000,0xc000000,0x4000000,0x8f1d7dd3,0x8e11579e,0x5603080c,0x29000000,0x9000000,0x1000000,0x0,0x0,0x0
498};
499
500static const QRgb datebook_icon_data[] = {
501 0x343b98e5,0x7254a9e9,0x7b52a5e3,0x7b50a4e3,0x7b4fa4e3,0x7b4ea3e2,0x7b4da3e2,0x7b4ba2e2,0x7b4aa1e2,0x7b49a1e2,0x7b47a0e1,0x7a479fe1,0x492c7cbc,0xe00162b,
502 0xc767bcf7,0xf766bef6,0xf94fb5f3,0xf94eb5f3,0xf94cb5f3,0xf94bb5f2,0xf94ab4f3,0xf948b4f3,0xf947b4f3,0xf946b4f3,0xf944b3f3,0xf94bb5f4,0xd352aae5,0x4b033c65,
503 0xe94db4f6,0xff16a6e9,0xff04a1e4,0xff05a2e4,0xff07a3e5,0xff09a4e5,0xff0ba5e5,0xff0da6e6,0xff0fa8e6,0xff12a8e7,0xff14a9e7,0xff15a9e9,0xef34a1e4,0x74083858,
504 0xe96cbff6,0xff84cdf6,0xff71c6f4,0xff71c6f5,0xff70c5f5,0xff6fc4f5,0xff6ec3f4,0xff6ec3f4,0xff6ec2f5,0xff6ec2f5,0xff6dc2f4,0xff71c2f5,0xf05fafe4,0x79013455,
505 0xe96eb7e7,0xffd8dee3,0xffdbe0e4,0xffd3d8dd,0xffdae1e6,0xffced5da,0xffd8e0e6,0xffced6dc,0xffd4dde3,0xffced7de,0xffcfd8df,0xffd3dbe1,0xf07ab1d5,0x79003453,
506 0xe96ab4e3,0xffe8ebed,0xfff1f1f1,0xffe3e2e2,0xfff5f5f5,0xffe0e0df,0xfff6f6f5,0xffe4e4e5,0xffeff0f1,0xffe7e8e8,0xffeaeaea,0xfff1efee,0xf080b3d3,0x79013454,
507 0xe966b0df,0xffd5d8d9,0xffdbdbdb,0xffd3d2d2,0xffe0e0e0,0xffd0d0d0,0xffe0e0e0,0xffd3d4d6,0xffdbdcdd,0xffd4d5d6,0xffd9d6d5,0xffdddbda,0xf07fb0cf,0x79013554,
508 0xe966b2e2,0xffeceff1,0xfff5f5f5,0xffe8e8e8,0xfffdfdfd,0xffe5e5e5,0xfffdfdfd,0xffeaebeb,0xfff8f8f8,0xffececec,0xfff2efec,0xfff6f5f4,0xf086b6d5,0x79013454,
509 0xe962aedf,0xffd8dbdd,0xffdfdede,0xffd6d5d5,0xffe4e4e4,0xffd3d3d3,0xffe4e4e4,0xffd6d7d9,0xffe0e0e1,0xffd8d9d9,0xffdddad8,0xffe1dfde,0xf084b3d0,0x79013554,
510 0xe962b0e1,0xffe6eaec,0xffefefef,0xffe2e2e2,0xfff4f4f4,0xffdfdfdf,0xfff5f5f4,0xffe2e3e4,0xffeef0f0,0xffe6e6e7,0xffeaeaea,0xfff1efee,0xf089b7d4,0x79023554,
511 0xea5eaee2,0xffd5dce1,0xffdde0e3,0xffd5d8da,0xffe2e5e7,0xffd3d6d8,0xffe4e6e7,0xffd9dadb,0xffe2e3e4,0xffdcddde,0xffdfdfe0,0xffe6e4e3,0xf08cb8d4,0x78023554,
512 0xbb449edd,0xf87cbde9,0xfd81c0ea,0xfd84c2eb,0xfd88c3eb,0xfd8bc5ec,0xfd90c7ec,0xfd96caed,0xfd9acced,0xfd9fceee,0xfda4d0ee,0xfca8d2ee,0xdc649cc3,0x63001f36,
513 0x360f466e,0x75164e74,0x89154769,0x8a154768,0x8a164768,0x8a164868,0x8a174868,0x8a184868,0x8a194968,0x8a1a4969,0x8a1b4969,0x891b4a68,0x6a0e2b41,0x28000306,
514 0x4000000,0xf000000,0x15000000,0x15000000,0x15000000,0x15000000,0x15000000,0x15000000,0x15000000,0x15000000,0x15000000,0x15000000,0xf000000,0x4000000
515};
516
517static const QRgb day_data[] = {
518 0x343b98e5,0x7254a9e9,0x7b52a5e3,0x7b50a4e3,0x7b4fa4e3,0x7b4ea3e2,0x7b4da3e2,0x7b4ba2e2,0x7b4aa1e2,0x7b49a1e2,0x7b47a0e1,0x7a479fe1,0x492c7cbc,0xe00162b,
519 0xc767bcf7,0xf766bef6,0xf94fb5f3,0xf94eb5f3,0xf94cb5f3,0xf94bb5f2,0xf94ab4f3,0xf948b4f3,0xf947b4f3,0xf946b4f3,0xf944b3f3,0xf94bb5f4,0xd352aae5,0x4b033c65,
520 0xe94db4f6,0xff16a6e9,0xff04a1e4,0xff05a2e4,0xff07a3e5,0xff09a4e5,0xff0ba5e5,0xff0da6e6,0xff0fa8e6,0xff12a8e7,0xff14a9e7,0xff15a9e9,0xef34a1e4,0x74083858,
521 0xe96cbff6,0xff84cdf6,0xff71c6f4,0xff71c6f5,0xff70c5f5,0xff6fc4f5,0xff6ec3f4,0xff6ec3f4,0xff6ec2f5,0xff6ec2f5,0xff6dc2f4,0xff71c2f5,0xf05fafe4,0x79013455,
522 0xe96eb7e7,0xffd8dee3,0xffdbe0e4,0xffd3d8dd,0xffdae1e6,0xffced5da,0xffd8e0e6,0xffced6dc,0xffd4dde3,0xffced7de,0xffcfd8df,0xffd3dbe1,0xf07ab1d5,0x79003453,
523 0xe96ab4e3,0xffe8ebed,0xfff1f1f1,0xffe3e2e2,0xfff5f5f5,0xffe0e0df,0xfff6f6f5,0xffe5e4e3,0xfff2f0ee,0xffeae7e6,0xffeaeae9,0xfff1efee,0xf080b3d3,0x79013454,
524 0xe966b0df,0xffd5d8d9,0xffdbdbdb,0xffd3d2d2,0xffe0e0e0,0xffd0d0d0,0xffe0e0e0,0xffe4d1ab,0xfff6d477,0xfff1c87d,0xffddd5cc,0xffdddbda,0xf07fb0cf,0x79013554,
525 0xe966b2e2,0xffeceff1,0xfff5f5f5,0xffe8e8e8,0xfffdfdfd,0xffe5e5e5,0xfffdfdfd,0xfffee192,0xffffcf1c,0xfffdb436,0xfff9eada,0xfff6f5f4,0xf086b6d5,0x79013454,
526 0xe962aedf,0xffd8dbdd,0xffdfdede,0xffd6d5d5,0xffe4e4e4,0xffd3d3d3,0xffe4e4e4,0xffeccd9d,0xfffbb954,0xfff7ab61,0xffe3d7cb,0xffe1dfde,0xf084b3d0,0x79013554,
527 0xe962b0e1,0xffe6eaec,0xffefefef,0xffe2e2e2,0xfff4f4f4,0xffdfdfdf,0xfff5f5f4,0xffe5e3e2,0xfff3f0eb,0xffebe7e2,0xffeaeae9,0xfff1efee,0xf089b7d4,0x79023554,
528 0xea5eaee2,0xffd5dce1,0xffdde0e3,0xffd5d8da,0xffe2e5e7,0xffd3d6d8,0xffe4e6e7,0xffd9dadb,0xffe2e3e4,0xffdcddde,0xffdfdfe0,0xffe6e4e3,0xf08cb8d4,0x78023554,
529 0xbb449edd,0xf87cbde9,0xfd81c0ea,0xfd84c2eb,0xfd88c3eb,0xfd8bc5ec,0xfd90c7ec,0xfd96caed,0xfd9acced,0xfd9fceee,0xfda4d0ee,0xfca8d2ee,0xdc649cc3,0x63001f36,
530 0x360f466e,0x75164e74,0x89154769,0x8a154768,0x8a164768,0x8a164868,0x8a174868,0x8a184868,0x8a194968,0x8a1a4969,0x8a1b4969,0x891b4a68,0x6a0e2b41,0x28000306,
531 0x4000000,0xf000000,0x15000000,0x15000000,0x15000000,0x15000000,0x15000000,0x15000000,0x15000000,0x15000000,0x15000000,0x15000000,0xf000000,0x4000000
532};
533
211static const QRgb DocsIcon_data[] = { 534static const QRgb DocsIcon_data[] = {
212 0x0,0x0,0x16d3d3d5,0x3dceced1,0x3dc8c8cf,0x3dc4c4cc,0x3dbfbfc9,0x3dbabac7,0x29b0b0be,0x0,0x0,0x0,0x0,0x0, 535 0x0,0x0,0x16d3d3d5,0x3dceced1,0x3dc8c8cf,0x3dc4c4cc,0x3dbfbfc9,0x3dbabac7,0x29b0b0be,0x0,0x0,0x0,0x0,0x0,
213 0x0,0x0,0x60d6d6d9,0xfff6f6f7,0xfff7f7f8,0xfff7f7f8,0xfff2f2f5,0xffebebf1,0xf6c7c7d5,0x489e9eaf,0x0,0x0,0x0,0x0, 536 0x0,0x0,0x60d6d6d9,0xfff6f6f7,0xfff7f7f8,0xfff7f7f8,0xfff2f2f5,0xffebebf1,0xf6c7c7d5,0x489e9eaf,0x0,0x0,0x0,0x0,
214 0x0,0x0,0x60d1d1d7,0xfffdfdfd,0xffffffff,0xffffffff,0xfffbfbfc,0xfff4f4f8,0xffdcdce6,0xf3d5d5e1,0x469595ab,0x0,0x0,0x0, 537 0x0,0x0,0x60d1d1d7,0xfffdfdfd,0xffffffff,0xffffffff,0xfffbfbfc,0xfff4f4f8,0xffdcdce6,0xf3d5d5e1,0x469595ab,0x0,0x0,0x0,
215 0x0,0x0,0x60ccccd4,0xfffcfcfd,0xffffffff,0xffffffff,0xfffbfbfc,0xfff4f4f8,0xffd9d9e4,0xfff6f6f9,0xf1cbcbda,0x3c8686a0,0x0,0x0, 538 0x0,0x0,0x60ccccd4,0xfffcfcfd,0xffffffff,0xffffffff,0xfffbfbfc,0xfff4f4f8,0xffd9d9e4,0xfff6f6f9,0xf1cbcbda,0x3c8686a0,0x0,0x0,
216 0x0,0x0,0x60c7c7d2,0xfffcfcfd,0xffffffff,0xffffffff,0xfffbfbfc,0xfff4f4f8,0xffd8d8e4,0xffcbcbdb,0xffc6c6d7,0xb79e9eb5,0x2000000,0x0, 539 0x0,0x0,0x60c7c7d2,0xfffcfcfd,0xffffffff,0xffffffff,0xfffbfbfc,0xfff4f4f8,0xffd8d8e4,0xffcbcbdb,0xffc6c6d7,0xb79e9eb5,0x2000000,0x0,
217 0x0,0x0,0x60c2c2cf,0xfffcfcfc,0xffffffff,0xffffffff,0xfffafafc,0xfff4f4f8,0xffececf3,0xffe2e2ee,0xffd3d5e2,0xbaa3a3b9,0x2000000,0x0, 540 0x0,0x0,0x60c2c2cf,0xfffcfcfc,0xffffffff,0xffffffff,0xfffafafc,0xfff4f4f8,0xffececf3,0xffe2e2ee,0xffd3d5e2,0xbaa3a3b9,0x2000000,0x0,
218 0x0,0x0,0x60bcbccc,0xfffbfbfc,0xffffffff,0xffffffff,0xfff9f9fc,0xfff0f0f6,0xffe7e7f1,0xffe4e4ef,0xffd8dae7,0xbaa0a0b7,0x2000000,0x0, 541 0x0,0x0,0x60bcbccc,0xfffbfbfc,0xffffffff,0xffffffff,0xfff9f9fc,0xfff0f0f6,0xffe7e7f1,0xffe4e4ef,0xffd8dae7,0xbaa0a0b7,0x2000000,0x0,
219 0x0,0x0,0x60b7b7ca,0xfffbfbfc,0xfffbfbfd,0xfff3f3f8,0xffeeeef5,0xffececf3,0xffe9e9f2,0xffe6e6f0,0xffd7d9e6,0xba9f9fb7,0x2000000,0x0, 542 0x0,0x0,0x60b7b7ca,0xfffbfbfc,0xfffbfbfd,0xfff3f3f8,0xffeeeef5,0xffececf3,0xffe9e9f2,0xffe6e6f0,0xffd7d9e6,0xba9f9fb7,0x2000000,0x0,
220 0x0,0x0,0x60b1b1c7,0xfff7f7fa,0xfff6f6f9,0xfff3f3f8,0xfff1f1f6,0xffeeeef5,0xffececf3,0xffe9e9f2,0xffd6d8e6,0xba9d9db6,0x2000000,0x0, 543 0x0,0x0,0x60b1b1c7,0xfff7f7fa,0xfff6f6f9,0xfff3f3f8,0xfff1f1f6,0xffeeeef5,0xffececf3,0xffe9e9f2,0xffd6d8e6,0xba9d9db6,0x2000000,0x0,
221 0x0,0x0,0x60acacc4,0xfff7f7f9,0xfff8f8fb,0xfff6f6f9,0xfff3f3f8,0xfff1f1f6,0xffeeeef5,0xffebebf3,0xffdbdde9,0xba9b9bb5,0x2000000,0x0, 544 0x0,0x0,0x60acacc4,0xfff7f7f9,0xfff8f8fb,0xfff6f6f9,0xfff3f3f8,0xfff1f1f6,0xffeeeef5,0xffebebf3,0xffdbdde9,0xba9b9bb5,0x2000000,0x0,
222 0x0,0x0,0x60a7a7c1,0xfff9f9fb,0xfffbfbfc,0xfff8f8fb,0xfff6f6f9,0xfff3f3f8,0xfff1f1f6,0xffeeeef5,0xffd4d7e5,0xba9a9ab5,0x2000000,0x0, 545 0x0,0x0,0x60a7a7c1,0xfff9f9fb,0xfffbfbfc,0xfff8f8fb,0xfff6f6f9,0xfff3f3f8,0xfff1f1f6,0xffeeeef5,0xffd4d7e5,0xba9a9ab5,0x2000000,0x0,
223 0x0,0x0,0x60a1a1bf,0xfffafafc,0xfffdfdfe,0xfffbfbfc,0xfff8f8fb,0xfff6f6f9,0xfff3f3f8,0xfff1f1f6,0xffdbdeea,0xba9898b4,0x2000000,0x0, 546 0x0,0x0,0x60a1a1bf,0xfffafafc,0xfffdfdfe,0xfffbfbfc,0xfff8f8fb,0xfff6f6f9,0xfff3f3f8,0xfff1f1f6,0xffdbdeea,0xba9898b4,0x2000000,0x0,
224 0x0,0x0,0x609b9bbc,0xfff2f2f6,0xfff6f6f9,0xfff4f4f8,0xfff2f2f7,0xffefeff5,0xffececf3,0xffeaeaf2,0xffd4d6e6,0xba9292b0,0x2000000,0x0, 547 0x0,0x0,0x609b9bbc,0xfff2f2f6,0xfff6f6f9,0xfff4f4f8,0xfff2f2f7,0xffefeff5,0xffececf3,0xffeaeaf2,0xffd4d6e6,0xba9292b0,0x2000000,0x0,
225 0x0,0x0,0x1d7c7c9c,0x6072728d,0x616f6f8b,0x616b6b89,0x61686887,0x61646485,0x61606083,0x615d5d82,0x61595980,0x47444468,0x1000000,0x0 548 0x0,0x0,0x1d7c7c9c,0x6072728d,0x616f6f8b,0x616b6b89,0x61686887,0x61646485,0x61606083,0x615d5d82,0x61595980,0x47444468,0x1000000,0x0
226}; 549};
227 550
228static const QRgb DocumentTypeExcel_data[] = { 551static const QRgb DocumentTypeExcel_data[] = {
229 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5, 552 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,
230 0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xde9daac1,0x0,0x0,0x0,0x0,0x0, 553 0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xde9daac1,0x0,0x0,0x0,0x0,0x0,
231 0x0,0x0,0x0,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,0xfffbffff,0xffffffff, 554 0x0,0x0,0x0,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,0xfffbffff,0xffffffff,
232 0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffeffff,0xfff5faff,0xffedf3fe,0xffe4ebf9,0xffd8e1f2,0xffc2d0e9,0xe0a7b2c4, 555 0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffeffff,0xfff5faff,0xffedf3fe,0xffe4ebf9,0xffd8e1f2,0xffc2d0e9,0xe0a7b2c4,
233 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0, 556 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,
234 0x0,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfff8fdff,0xfff2f7ff,0xffeaf1fd, 557 0x0,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfff8fdff,0xfff2f7ff,0xffeaf1fd,
235 0xffe1e9f7,0xffd5dff0,0xffbfcce3,0xffebf4ff,0xe6a2aec1,0x0,0x0,0x0,0x0,0x0,0x0,0xffffff,0x0,0x0, 558 0xffe1e9f7,0xffd5dff0,0xffbfcce3,0xffebf4ff,0xe6a2aec1,0x0,0x0,0x0,0x0,0x0,0x0,0xffffff,0x0,0x0,
236 0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,0xfffcffff,0xffe5e5e5,0xffdcdcdc,0xffdcdcdc,0xffdcdcdc,0xffdcdcdc,0xffdcdcdc,0xffdcdcdc, 559 0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,0xfffcffff,0xffe5e5e5,0xffdcdcdc,0xffdcdcdc,0xffdcdcdc,0xffdcdcdc,0xffdcdcdc,0xffdcdcdc,
237 0xffdcdcdc,0xffd8dcdc,0xffc6cace,0xffedf4fe,0xffe6edfa,0xffd9e2f2,0xffc2cee5,0xfff0f6ff,0xffdce7f9,0xe3a1adc3,0x0,0x0,0x0,0x0, 560 0xffdcdcdc,0xffd8dcdc,0xffc6cace,0xffedf4fe,0xffe6edfa,0xffd9e2f2,0xffc2cee5,0xfff0f6ff,0xffdce7f9,0xe3a1adc3,0x0,0x0,0x0,0x0,
238 0x0,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,0xfffcffff,0xffdcdcdc,0xffffffff,0xffffffff, 561 0x0,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,0xfffcffff,0xffdcdcdc,0xffffffff,0xffffffff,
239 0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffeffff,0xffc4c7ca,0xfff1f7ff,0xffe9effc,0xffdce5f4,0xffc4d0e6,0xffffffff,0xffe8eefb,0xffdbe5f9, 562 0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffeffff,0xffc4c7ca,0xfff1f7ff,0xffe9effc,0xffdce5f4,0xffc4d0e6,0xffffffff,0xffe8eefb,0xffdbe5f9,
240 0xe8a4afc5,0x0,0x0,0x0,0x0,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc4d0e5, 563 0xe8a4afc5,0x0,0x0,0x0,0x0,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,
241 0xfffcffff,0xffdcdcdc,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffc5c9ca,0xfff3f9ff,0xffebf1fd,0xffdfe7f6, 564 0xfffcffff,0xffdcdcdc,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffc5c9ca,0xfff3f9ff,0xffebf1fd,0xffdfe7f6,
242 0xffc6d1e5,0xffffffff,0xfffdffff,0xffecf2fd,0xffdee9fb,0xe3a4b0c4,0x0,0x0,0x0,0xffffff,0x0,0x0,0x0,0x0, 565 0xffc6d1e5,0xffffffff,0xfffdffff,0xffecf2fd,0xffdee9fb,0xe3a4b0c4,0x0,0x0,0x0,0xffffff,0x0,0x0,0x0,0x0,
243 0x0,0x0,0x0,0xffc4d0e5,0xfffcffff,0xffdcdcdc,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff, 566 0x0,0x0,0x0,0xffc4d0e5,0xfffcffff,0xffdcdcdc,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,
244 0xffc7caca,0xfff5f9ff,0xffedf3fe,0xffe3ebf9,0xffbecbe1,0xfff3f5fb,0xffecf2f9,0xffe4ebf7,0xffd8e1f0,0xffd0dcf1,0xe99eabc1,0x0,0x0,0xffffff, 567 0xffc7caca,0xfff5f9ff,0xffedf3fe,0xffe3ebf9,0xffbecbe1,0xfff3f5fb,0xffecf2f9,0xffe4ebf7,0xffd8e1f0,0xffd0dcf1,0xe99eabc1,0x0,0x0,0xffffff,
245 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,0xfffcffff,0xffdcdcdc,0xffdcdcdc,0xffdcdcdc,0xffdcdcdc,0xffdcdcdc, 568 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,0xfffcffff,0xffdcdcdc,0xffdcdcdc,0xffdcdcdc,0xffdcdcdc,0xffdcdcdc,
246 0xffdcdcdc,0xffdcdcdc,0xffdcdcdc,0xffdcdcdc,0xffbfc1c1,0xffc3c6ca,0xffbec2ca,0xffb7bdc7,0xff9ea8b7,0xff78869c,0xff78869c,0xff78869c,0xff78869c,0xff808fa6, 569 0xffdcdcdc,0xffdcdcdc,0xffdcdcdc,0xffdcdcdc,0xffbfc1c1,0xffc3c6ca,0xffbec2ca,0xffb7bdc7,0xff9ea8b7,0xff78869c,0xff78869c,0xff78869c,0xff78869c,0xff808fa6,
247 0xff98a9c5,0xff98a9c5,0x0,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,0xfffcffff,0xffdcdcdc, 570 0xff98a9c5,0xff98a9c5,0x0,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,0xfffcffff,0xffdcdcdc,
248 0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffc3c8cc,0xffccd4e0,0xffc6d0e0,0xffc1cbdf,0xffbcc8dc,0xffb9c5d9, 571 0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffc3c8cc,0xffccd4e0,0xffc6d0e0,0xffc1cbdf,0xffbcc8dc,0xffb9c5d9,
249 0xffb1bdd4,0xff9faec8,0xff96a5c2,0xff93a0b7,0xffaebedb,0xff8495b1,0x33000000,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0, 572 0xffb1bdd4,0xff9faec8,0xff96a5c2,0xff93a0b7,0xffaebedb,0xff8495b1,0x33000000,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,
250 0x0,0xffc4d0e5,0xfffcffff,0xffdcdcdc,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffc5c8cc,0xffccd5e0, 573 0x0,0xffc4d0e5,0xfffcffff,0xffdcdcdc,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffc5c8cc,0xffccd5e0,
251 0xffc7d2e0,0xffc2cddf,0xffbcc8dc,0xffb7c3d8,0xffa8b4ce,0xff9caac7,0xff99a9c5,0xff97a3b9,0xffb5c5e0,0xff8495b1,0x33000000,0xffffff,0x0,0x0, 574 0xffc7d2e0,0xffc2cddf,0xffbcc8dc,0xffb7c3d8,0xffa8b4ce,0xff9caac7,0xff99a9c5,0xff97a3b9,0xffb5c5e0,0xff8495b1,0x33000000,0xffffff,0x0,0x0,
252 0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,0xfffcffff,0xffdcdcdc,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0, 575 0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,0xfffcffff,0xffdcdcdc,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,
253 0xffd1d7e0,0xffd1d7e0,0xffc5c8cc,0xffcdd7e0,0xffc7d2e0,0xffc4cfe0,0xffbec9dd,0xffafbcd2,0xffa3b2cc,0xffa2b0ca,0xff9fafc9,0xff9da8bd,0xffbdcbe5,0xff8495b1, 576 0xffd1d7e0,0xffd1d7e0,0xffc5c8cc,0xffcdd7e0,0xffc7d2e0,0xffc4cfe0,0xffbec9dd,0xffafbcd2,0xffa3b2cc,0xffa2b0ca,0xff9fafc9,0xff9da8bd,0xffbdcbe5,0xff8495b1,
254 0x33000000,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,0xfffcffff,0xffdcdcdc,0xffc5c8cc,0xffc5c8cc, 577 0x33000000,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,0xfffcffff,0xffdcdcdc,0xffc5c8cc,0xffc5c8cc,
255 0xffc5c8cc,0xffc5c8cc,0xffc5c8cc,0xffc5c8cc,0xffc5c8cc,0xffc5c8cc,0xffbfc0c2,0xffc3c8cc,0xffbdc4cc,0xffb4bcca,0xffa8b1c2,0xffa1abbe,0xff9ea9bb,0xff9ba6bb, 578 0xffc5c8cc,0xffc5c8cc,0xffc5c8cc,0xffc5c8cc,0xffc5c8cc,0xffc5c8cc,0xffbfc0c2,0xffc3c8cc,0xffbdc4cc,0xffb4bcca,0xffa8b1c2,0xffa1abbe,0xff9ea9bb,0xff9ba6bb,
256 0xff9aa4b9,0xff9fa9bb,0xffc3d0e8,0xff8495b1,0x33000000,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc4d0e5, 579 0xff9aa4b9,0xff9fa9bb,0xffc3d0e8,0xff8495b1,0x33000000,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,
257 0xfffcffff,0xffdcdcdc,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffdadcdc,0xfff5faff,0xffeaf0fd,0xffdce5f5, 580 0xfffcffff,0xffdcdcdc,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffdadcdc,0xfff5faff,0xffeaf0fd,0xffdce5f5,
258 0xffd6e0f1,0xffd3ddee,0xffd0dbed,0xffced9ec,0xffccd7ea,0xffafb9ca,0xffc8d5ec,0xff8495b1,0x33000000,0xffffff,0x0,0x0,0x0,0x0, 581 0xffd6e0f1,0xffd3ddee,0xffd0dbed,0xffced9ec,0xffccd7ea,0xffafb9ca,0xffc8d5ec,0xff8495b1,0x33000000,0xffffff,0x0,0x0,0x0,0x0,
259 0x0,0x506ab5e6,0x8f52b2ec,0xff66baec,0xff60c5f8,0xff1bb1f9,0xff3abdf9,0xff54cafb,0xff50ceff,0xff7fdeff,0xffcff3ff,0xffffffff,0xffffffff,0xfffcffff, 582 0x0,0x506ab5e6,0x8f52b2ec,0xff66baec,0xff60c5f8,0xff1bb1f9,0xff3abdf9,0xff54cafb,0xff50ceff,0xff7fdeff,0xffcff3ff,0xffffffff,0xffffffff,0xfffcffff,
260 0xffd1d6dc,0xffe9effc,0xffdfe8f6,0xffdbe4f3,0xffdae3f3,0xffd7e0f1,0xffd5dff0,0xffd2dcef,0xffd0dbed,0xffb3bdcc,0xffcedaf0,0xff8495b1,0x33000000,0xffffff, 583 0xffd1d6dc,0xffe9effc,0xffdfe8f6,0xffdbe4f3,0xffdae3f3,0xffd7e0f1,0xffd5dff0,0xffd2dcef,0xffd0dbed,0xffb3bdcc,0xffcedaf0,0xff8495b1,0x33000000,0xffffff,
261 0x0,0x0,0x106ab0e6,0x806ab2e6,0xef40aaf0,0xff21a7f7,0xff00a4ff,0xff00a8ff,0xff00acff,0xff00afff,0xff00b3ff,0xff00b7ff,0xff00bbff,0xff00beff, 584 0x0,0x0,0x106ab0e6,0x806ab2e6,0xef40aaf0,0xff21a7f7,0xff00a4ff,0xff00a8ff,0xff00acff,0xff00afff,0xff00b3ff,0xff00b7ff,0xff00bbff,0xff00beff,
262 0xff00c2ff,0xff30d1ff,0xffbceffc,0xfff4f9ff,0xffc9cfd9,0xffe4ecf9,0xffe1e9f7,0xffdfe7f6,0xffdde5f4,0xffdbe4f3,0xffd9e2f3,0xffd7e1f2,0xffd4def0,0xffb7bece, 585 0xff00c2ff,0xff30d1ff,0xffbceffc,0xfff4f9ff,0xffc9cfd9,0xffe4ecf9,0xffe1e9f7,0xffdfe7f6,0xffdde5f4,0xffdbe4f3,0xffd9e2f3,0xffd7e1f2,0xffd4def0,0xffb7bece,
263 0xffd2def2,0xff8495b1,0x33000000,0xffffff,0x0,0x306aafe6,0xdf53aceb,0xff14a0fa,0xff009fff,0xff00a3ff,0xff00a7ff,0xff00aaff,0xff00aeff,0xff00b2ff, 586 0xffd2def2,0xff8495b1,0x33000000,0xffffff,0x0,0x306aafe6,0xdf53aceb,0xff14a0fa,0xff009fff,0xff00a3ff,0xff00a7ff,0xff00aaff,0xff00aeff,0xff00b2ff,
264 0xff00b6ff,0xff00b9ff,0xff00bdff,0xff00c1ff,0xff00c5ff,0xff00c8ff,0xff14ccfa,0xff74d0e7,0xffb2bec9,0xffc6ccd7,0xffc5ccd7,0xffc3cad6,0xffc2c9d5,0xffbfc6d3, 587 0xff00b6ff,0xff00b9ff,0xff00bdff,0xff00c1ff,0xff00c5ff,0xff00c8ff,0xff14ccfa,0xff74d0e7,0xffb2bec9,0xffc6ccd7,0xffc5ccd7,0xffc3cad6,0xffc2c9d5,0xffbfc6d3,
265 0xffbec5d2,0xffbdc4d1,0xffbac2d0,0xffb2bac7,0xffd5e0f4,0xff8495b1,0x33000000,0xffffff,0x3047a6ee,0xef55abeb,0xff079bfd,0xff009eff,0xff00a1ff,0xff00a5ff, 588 0xffbec5d2,0xffbdc4d1,0xffbac2d0,0xffb2bac7,0xffd5e0f4,0xff8495b1,0x33000000,0xffffff,0x3047a6ee,0xef55abeb,0xff079bfd,0xff009eff,0xff00a1ff,0xff00a5ff,
266 0xff00a9ff,0xff00adff,0xff00b0ff,0xff00b4ff,0xff00b8ff,0xff00bcff,0xff00c0ff,0xff00c3ff,0xff00c7ff,0xff00cbff,0xff00cfff,0xff07d2fd,0xff7cd2e5,0xffeaf1fc, 589 0xff00a9ff,0xff00adff,0xff00b0ff,0xff00b4ff,0xff00b8ff,0xff00bcff,0xff00c0ff,0xff00c3ff,0xff00c7ff,0xff00cbff,0xff00cfff,0xff07d2fd,0xff7cd2e5,0xffeaf1fc,
267 0xffe7eefb,0xffe4ecf9,0xffe2eaf8,0xffe1e9f8,0xffdee6f5,0xffdde6f4,0xffdce5f4,0xffbcc4d1,0xffd9e3f6,0xff8495b1,0x33000000,0xffffff,0xbf6aafe6,0xff0d9cfc, 590 0xffe7eefb,0xffe4ecf9,0xffe2eaf8,0xffe1e9f8,0xffdee6f5,0xffdde6f4,0xffdce5f4,0xffbcc4d1,0xffd9e3f6,0xff8495b1,0x33000000,0xffffff,0xbf6aafe6,0xff0d9cfc,
268 0xff009cff,0xff00a0ff,0xff00a4ff,0xff00a8ff,0xff00abff,0xff00afff,0xff00b3ff,0xff00b7ff,0xff00bbff,0xff00beff,0xff00c2ff,0xff00c6ff,0xff00caff,0xff00cdff, 591 0xff009cff,0xff00a0ff,0xff00a4ff,0xff00a8ff,0xff00abff,0xff00afff,0xff00b3ff,0xff00b7ff,0xff00bbff,0xff00beff,0xff00c2ff,0xff00c6ff,0xff00caff,0xff00cdff,
269 0xff00d1ff,0xff00d5ff,0xff28d7f6,0xffbbe7f4,0xffe9f0fc,0xffe7eefb,0xffe4ebf9,0xffe4ebf8,0xffe2eaf8,0xffdfe7f7,0xffdee6f5,0xffbec6d2,0xffdbe5f7,0xff8495b1, 592 0xff00d1ff,0xff00d5ff,0xff28d7f6,0xffbbe7f4,0xffe9f0fc,0xffe7eefb,0xffe4ebf9,0xffe4ebf8,0xffe2eaf8,0xffdfe7f7,0xffdee6f5,0xffbec6d2,0xffdbe5f7,0xff8495b1,
270 0x33000000,0xffffff,0xff42a7ef,0xff009bff,0xff009fff,0xff00a3ff,0xff00a6ff,0xff00aaff,0xff00aeff,0xff00b2ff,0xff00b5ff,0xff00b9ff,0xff00bdff,0xff00c1ff, 593 0x33000000,0xffffff,0xff42a7ef,0xff009bff,0xff009fff,0xff00a3ff,0xff00a6ff,0xff00aaff,0xff00aeff,0xff00b2ff,0xff00b5ff,0xff00b9ff,0xff00bdff,0xff00c1ff,
271 0xff00c4ff,0xff00c8ff,0xff00ccff,0xff00d0ff,0xff00d4ff,0xff00d7ff,0xff00dbff,0xff93dfec,0xffebf1fd,0xffe8effc,0xffe7eefb,0xffe5ecf9,0xffe3ebf9,0xffe2eaf8, 594 0xff00c4ff,0xff00c8ff,0xff00ccff,0xff00d0ff,0xff00d4ff,0xff00d7ff,0xff00dbff,0xff93dfec,0xffebf1fd,0xffe8effc,0xffe7eefb,0xffe5ecf9,0xffe3ebf9,0xffe2eaf8,
272 0xffe0e7f6,0xffc0c7d4,0xffdce6f8,0xff8495b1,0x33000000,0xffffff,0xff3ca7f1,0xff009dff,0xff00a1ff,0xff00a5ff,0xff00a9ff,0xff00adff,0xff00b0ff,0xff00b4ff, 595 0xffe0e7f6,0xffc0c7d4,0xffdce6f8,0xff8495b1,0x33000000,0xffffff,0xff3ca7f1,0xff009dff,0xff00a1ff,0xff00a5ff,0xff00a9ff,0xff00adff,0xff00b0ff,0xff00b4ff,
273 0xff00b8ff,0xff00d0af,0xff9f7751,0xffbf5d53,0xffbf5951,0xffbf554f,0xffbf524d,0xffbf4e4b,0xffbf4b49,0xffbf4747,0xffbf4345,0xffd19596,0xffcad1db,0xffcacfd9, 596 0xff00b8ff,0xff00d0af,0xff9f7751,0xffbf5d53,0xffbf5951,0xffbf554f,0xffbf524d,0xffbf4e4b,0xffbf4b49,0xffbf4747,0xffbf4345,0xffd19596,0xffcad1db,0xffcacfd9,
274 0xffc8ced8,0xffc6ccd8,0xffc4cbd6,0xffc3c9d5,0xffc1c8d5,0xffb9c0cb,0xffdee8fa,0xff8495b1,0x33000000,0xffffff,0xff5ab0e8,0xff00a0ff,0xff00a4ff,0xff00a8ff, 597 0xffc8ced8,0xffc6ccd8,0xffc4cbd6,0xffc3c9d5,0xffc1c8d5,0xffb9c0cb,0xffdee8fa,0xff8495b1,0x33000000,0xffffff,0xff5ab0e8,0xff00a0ff,0xff00a4ff,0xff00a8ff,
275 0xff00abff,0xff00afff,0xff00b3ff,0xff00b7ff,0xff00baff,0xff00ee40,0xff40d208,0xffff4d21,0xffff471f,0xffff411c,0xffff3b19,0xffff3517,0xffff2e14,0xffff2812, 598 0xff00abff,0xff00afff,0xff00b3ff,0xff00b7ff,0xff00baff,0xff00ee40,0xff40d208,0xffff4d21,0xffff471f,0xffff411c,0xffff3b19,0xffff3517,0xffff2e14,0xffff2812,
276 0xfffd3523,0xffde8179,0xffc4cee0,0xffc1cbdf,0xffbfc9de,0xffbdc8dc,0xffbbc7db,0xffbbc6db,0xffb8c4d9,0xffb6becd,0xffdfe9fa,0xff8495b1,0x33000000,0xffffff, 599 0xfffd3523,0xffde8179,0xffc4cee0,0xffc1cbdf,0xffbfc9de,0xffbdc8dc,0xffbbc7db,0xffbbc6db,0xffb8c4d9,0xffb6becd,0xffdfe9fa,0xff8495b1,0x33000000,0xffffff,
277 0xff53acd7,0xff2eabf4,0xff00a6ff,0xff00aaff,0xff00aeff,0xff00b1ff,0xff00b5ff,0xff00b9ff,0xff00c5df,0xff00fe00,0xff00fe00,0xffbf871f,0xffff5c28,0xffff5625, 600 0xff53acd7,0xff2eabf4,0xff00a6ff,0xff00aaff,0xff00aeff,0xff00b1ff,0xff00b5ff,0xff00b9ff,0xff00c5df,0xff00fe00,0xff00fe00,0xffbf871f,0xffff5c28,0xffff5625,
278 0xffff4f22,0xffff4920,0xffff431d,0xfffe411f,0xfff86a53,0xffb77064,0xffc3cddf,0xffc1ccdf,0xffbfcade,0xffbec9dc,0xffbdc8dc,0xffbbc6da,0xffbac5da,0xffb7bfce, 601 0xffff4f22,0xffff4920,0xffff431d,0xfffe411f,0xfff86a53,0xffb77064,0xffc3cddf,0xffc1ccdf,0xffbfcade,0xffbec9dc,0xffbdc8dc,0xffbbc6da,0xffbac5da,0xffb7bfce,
279 0xffdfe9fa,0xff8495b1,0x33000000,0xffffff,0xcc3495b9,0xff53b0e2,0xff28aff6,0xff00acff,0xff00b0ff,0xff00b4ff,0xff00b8ff,0xff00bbff,0xff00d790,0xff00f802, 602 0xffdfe9fa,0xff8495b1,0x33000000,0xffffff,0xcc3495b9,0xff53b0e2,0xff28aff6,0xff00acff,0xff00b0ff,0xff00b4ff,0xff00b8ff,0xff00bbff,0xff00d790,0xff00f802,
280 0xff00f702,0xff20e308,0xffff7031,0xffff6a2e,0xffff642b,0xffff5e29,0xfffe5b2b,0xfff87f5f,0xffbb5c45,0xffa38486,0xffc4cfe0,0xffc2ccdf,0xffbfcade,0xffbec9de, 603 0xff00f702,0xff20e308,0xffff7031,0xffff6a2e,0xffff642b,0xffff5e29,0xfffe5b2b,0xfff87f5f,0xffbb5c45,0xffa38486,0xffc4cfe0,0xffc2ccdf,0xffbfcade,0xffbec9de,
281 0xffbdc8dc,0xffbbc7db,0xffb9c5d9,0xffb8c0ce,0xffe0e9fb,0xff8495b1,0x33000000,0xffffff,0x5c236a91,0xff3097b8,0xff4faad0,0xff35b6f3,0xff00b3ff,0xff00b6ff, 604 0xffbdc8dc,0xffbbc7db,0xffb9c5d9,0xffb8c0ce,0xffe0e9fb,0xff8495b1,0x33000000,0xffffff,0x5c236a91,0xff3097b8,0xff4faad0,0xff35b6f3,0xff00b3ff,0xff00b6ff,
282 0xff00baff,0xff00beff,0xff00d137,0xff00d50a,0xff00d30a,0xff00d10a,0xff80a722,0xffff7f37,0xffff7934,0xfffc814a,0xfff1906b,0xffb15b41,0xff8b4d40,0xff9eabb9, 605 0xff00baff,0xff00beff,0xff00d137,0xff00d50a,0xff00d30a,0xff00d10a,0xff80a722,0xffff7f37,0xffff7934,0xfffc814a,0xfff1906b,0xffb15b41,0xff8b4d40,0xff9eabb9,
283 0xffb8bfcc,0xffb6becb,0xffb4bcca,0xffb3bac8,0xffb2bac8,0xffafb7c7,0xffaeb7c6,0xffb6bdc9,0xffe0e9fb,0xff8495b1,0x33000000,0xffffff,0xd000030,0x891f6788, 606 0xffb8bfcc,0xffb6becb,0xffb4bcca,0xffb3bac8,0xffb2bac8,0xffafb7c7,0xffaeb7c6,0xffb6bdc9,0xffe0e9fb,0xff8495b1,0x33000000,0xffffff,0xd000030,0x891f6788,
284 0xff288fae,0xff2e93b1,0xff41aad1,0xff2ab9f0,0xff0dbefc,0xff00bde2,0xff00b112,0xff00af12,0xff00ad13,0xff07ad18,0xff31ae2f,0xfff1a160,0xffed9a6a,0xffc77453, 607 0xff288fae,0xff2e93b1,0xff41aad1,0xff2ab9f0,0xff0dbefc,0xff00bde2,0xff00b112,0xff00af12,0xff00ad13,0xff07ad18,0xff31ae2f,0xfff1a160,0xffed9a6a,0xffc77453,
285 0xff95452f,0xff8f5548,0xffa298a0,0xffedf3fd,0xffeff5ff,0xffebf2fd,0xffeaf1fd,0xffe7eefa,0xffe6edfa,0xffe3eaf8,0xffe2eaf8,0xffc3cad6,0xffdfe9fa,0xff8495b1, 608 0xff95452f,0xff8f5548,0xffa298a0,0xffedf3fd,0xffeff5ff,0xffebf2fd,0xffeaf1fd,0xffe7eefa,0xffe6edfa,0xffe3eaf8,0xffe2eaf8,0xffc3cad6,0xffdfe9fa,0xff8495b1,
286 0x33000000,0xffffff,0x0,0x16000029,0x6a103f5f,0xd61e7a96,0xff1d85a0,0xff1a829c,0xff208ca8,0xff279797,0xff3c9d40,0xff429c48,0xff489b51,0xff41974f, 609 0x33000000,0xffffff,0x0,0x16000029,0x6a103f5f,0xd61e7a96,0xff1d85a0,0xff1a829c,0xff208ca8,0xff279797,0xff3c9d40,0xff429c48,0xff489b51,0xff41974f,
287 0xff2f8d48,0xff8a623e,0xff97432d,0xff893d29,0xff9e7773,0xffc4c3d0,0xffc8cdd5,0xfff0f6ff,0xffedf3fe,0xffebf2fd,0xffe9f0fc,0xffe7eefa,0xffe6edfa,0xffe3ebf8, 610 0xff2f8d48,0xff8a623e,0xff97432d,0xff893d29,0xff9e7773,0xffc4c3d0,0xffc8cdd5,0xfff0f6ff,0xffedf3fe,0xffebf2fd,0xffe9f0fc,0xffe7eefa,0xffe6edfa,0xffe3ebf8,
288 0xffe2eaf8,0xffc2c9d5,0xffe0e9fb,0xff8495b1,0x33000000,0xffffff,0x0,0x0,0xe000022,0x35000022,0x740b3551,0xb812627c,0xe1117189,0xff1d807b, 611 0xffe2eaf8,0xffc2c9d5,0xffe0e9fb,0xff8495b1,0x33000000,0xffffff,0x0,0x0,0xe000022,0x35000022,0x740b3551,0xb812627c,0xe1117189,0xff1d807b,
289 0xff3d9540,0xff2f8e3c,0xff218739,0xff147f36,0xff0b7a34,0xff866e58,0xffab8c8a,0xffb2b8c4,0xffd5dae5,0xffeff5fd,0xffd0d5dc,0xfff0f6ff,0xffedf3fe,0xffeaf1fd, 612 0xff3d9540,0xff2f8e3c,0xff218739,0xff147f36,0xff0b7a34,0xff866e58,0xffab8c8a,0xffb2b8c4,0xffd5dae5,0xffeff5fd,0xffd0d5dc,0xfff0f6ff,0xffedf3fe,0xffeaf1fd,
290 0xffe9f0fc,0xffe6edfa,0xffe4ecf9,0xffe2eaf8,0xffe2eaf8,0xffc2c8d5,0xffe0eafc,0xff8495b1,0x33000000,0xffffff,0x0,0x0,0x0,0x2000000, 613 0xffe9f0fc,0xffe6edfa,0xffe4ecf9,0xffe2eaf8,0xffe2eaf8,0xffc2c8d5,0xffe0eafc,0xff8495b1,0x33000000,0xffffff,0x0,0x0,0x0,0x2000000,
291 0x1200001b,0x2d00001f,0x4200001c,0xff9da6c1,0xffafc1ba,0xff94ac9f,0xff8ba599,0xff8ea6a1,0xffaeb2bc,0xffb6bac2,0xffc3c6cd,0xffcdd1d8,0xffd2d6dc,0xffd0d6dc, 614 0x1200001b,0x2d00001f,0x4200001c,0xff9da6c1,0xffafc1ba,0xff94ac9f,0xff8ba599,0xff8ea6a1,0xffaeb2bc,0xffb6bac2,0xffc3c6cd,0xffcdd1d8,0xffd2d6dc,0xffd0d6dc,
292 0xffc7ccd3,0xffcfd4dc,0xffccd1db,0xffcad0da,0xffc9cfd9,0xffc6ccd7,0xffc4cbd6,0xffc3cad6,0xffc3cad6,0xffc2c8d5,0xffe0eafc,0xff8495b1,0x33000000,0xffffff, 615 0xffc7ccd3,0xffcfd4dc,0xffccd1db,0xffcad0da,0xffc9cfd9,0xffc6ccd7,0xffc4cbd6,0xffc3cad6,0xffc3cad6,0xffc2c8d5,0xffe0eafc,0xff8495b1,0x33000000,0xffffff,
293 0x0,0x0,0x0,0x0,0x0,0x2000000,0x6000000,0xffc4d0e5,0xfff4fdff,0xffffffff,0xffffffff,0xfff9feff,0xfff9feff,0xfff8fdff, 616 0x0,0x0,0x0,0x0,0x0,0x2000000,0x6000000,0xffc4d0e5,0xfff4fdff,0xffffffff,0xffffffff,0xfff9feff,0xfff9feff,0xfff8fdff,
294 0xfff7fcff,0xfff4f9ff,0xfff4f9ff,0xfff2f8ff,0xfff1f7ff,0xfff0f6ff,0xffedf3fe,0xffeaf1fd,0xffe9f0fc,0xffe6edfa,0xffe4ecf9,0xffe2eaf8,0xffe2eaf8,0xffe1e8f7, 617 0xfff7fcff,0xfff4f9ff,0xfff4f9ff,0xfff2f8ff,0xfff1f7ff,0xfff0f6ff,0xffedf3fe,0xffeaf1fd,0xffe9f0fc,0xffe6edfa,0xffe4ecf9,0xffe2eaf8,0xffe2eaf8,0xffe1e8f7,
295 0xffe0eafc,0xff8495b1,0x33000000,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,0xff8495b1,0xff8495b1, 618 0xffe0eafc,0xff8495b1,0x33000000,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,0xff8495b1,0xff8495b1,
296 0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1, 619 0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,
297 0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0x33000000,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0, 620 0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0x33000000,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,
298 0x0,0x0,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000, 621 0x0,0x0,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,
299 0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0xffffff,0xffffff,0xffffff, 622 0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0xffffff,0xffffff,0xffffff,
300 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, 623 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,
301 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, 624 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,
302 0xffffff,0xffffff 625 0xffffff,0xffffff
303}; 626};
304 627
305static const QRgb DocumentTypeNone_data[] = { 628static const QRgb DocumentTypeNone_data[] = {
306 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5, 629 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,
307 0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xde9daac1,0x0,0x0,0x0,0x0,0x0, 630 0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xde9daac1,0x0,0x0,0x0,0x0,0x0,
308 0x0,0x0,0x0,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xfffbffff,0xffffffff, 631 0x0,0x0,0x0,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xfffbffff,0xffffffff,
309 0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffeffff,0xfff5faff,0xffedf3fe,0xffe4ebf9,0xffd8e1f2,0xffc2d0e9,0xe0a7b2c4, 632 0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffeffff,0xfff5faff,0xffedf3fe,0xffe4ebf9,0xffd8e1f2,0xffc2d0e9,0xe0a7b2c4,
310 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, 633 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,
311 0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfff8fdff,0xfff2f7ff,0xffeaf1fd, 634 0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfff8fdff,0xfff2f7ff,0xffeaf1fd,
312 0xffe1e9f7,0xffd5dff0,0xffbfcce3,0xffebf4ff,0xe6a2aec1,0x0,0x0,0x0,0x0,0x0,0x0,0xffffff,0xffffff,0xffffff, 635 0xffe1e9f7,0xffd5dff0,0xffbfcce3,0xffebf4ff,0xe6a2aec1,0x0,0x0,0x0,0x0,0x0,0x0,0xffffff,0xffffff,0xffffff,
313 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff, 636 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,
314 0xffffffff,0xfffbffff,0xfff5faff,0xffedf4fe,0xffe6edfa,0xffd9e2f2,0xffc2cee5,0xfff0f6ff,0xffdce7f9,0xe3a1adc3,0x0,0x0,0x0,0x0, 637 0xffffffff,0xfffbffff,0xfff5faff,0xffedf4fe,0xffe6edfa,0xffd9e2f2,0xffc2cee5,0xfff0f6ff,0xffdce7f9,0xe3a1adc3,0x0,0x0,0x0,0x0,
315 0x0,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xffffffff, 638 0x0,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xffffffff,
316 0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffeffff,0xfff8fcff,0xfff1f7ff,0xffe9effc,0xffdce5f4,0xffc4d0e6,0xffffffff,0xffe8eefb,0xffdbe5f9, 639 0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffeffff,0xfff8fcff,0xfff1f7ff,0xffe9effc,0xffdce5f4,0xffc4d0e6,0xffffffff,0xffe8eefb,0xffdbe5f9,
317 0xe8a4afc5,0x0,0x0,0x0,0x0,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5, 640 0xe8a4afc5,0x0,0x0,0x0,0x0,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5,
318 0xfffcffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffafeff,0xfff3f9ff,0xffebf1fd,0xffdfe7f6, 641 0xfffcffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffafeff,0xfff3f9ff,0xffebf1fd,0xffdfe7f6,
319 0xffc6d1e5,0xffffffff,0xfffdffff,0xffecf2fd,0xffdee9fb,0xe3a4b0c4,0x0,0x0,0x0,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, 642 0xffc6d1e5,0xffffffff,0xfffdffff,0xffecf2fd,0xffdee9fb,0xe3a4b0c4,0x0,0x0,0x0,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,
320 0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff, 643 0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,
321 0xfffcffff,0xfff5f9ff,0xffedf3fe,0xffe3ebf9,0xffbecbe1,0xfff3f5fb,0xffecf2f9,0xffe4ebf7,0xffd8e1f0,0xffd0dcf1,0xe99eabc1,0x0,0x0,0xffffff, 644 0xfffcffff,0xfff5f9ff,0xffedf3fe,0xffe3ebf9,0xffbecbe1,0xfff3f5fb,0xffecf2f9,0xffe4ebf7,0xffd8e1f0,0xffd0dcf1,0xe99eabc1,0x0,0x0,0xffffff,
322 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff, 645 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,
323 0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffcffff,0xfff7fbff,0xfff0f6ff,0xffe8effc,0xffc8d4e7,0xff98a9c5,0xff98a9c5,0xff98a9c5,0xff98a9c5,0xff98a9c5, 646 0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffcffff,0xfff7fbff,0xfff0f6ff,0xffe8effc,0xffc8d4e7,0xff98a9c5,0xff98a9c5,0xff98a9c5,0xff98a9c5,0xff98a9c5,
324 0xff98a9c5,0xff98a9c5,0x0,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff, 647 0xff98a9c5,0xff98a9c5,0x0,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff,
325 0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffdffff,0xfff8fcff,0xfff1f6ff,0xffebf1fe,0xffe5edfa,0xffe1e9f7, 648 0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffdffff,0xfff8fcff,0xfff1f6ff,0xffebf1fe,0xffe5edfa,0xffe1e9f7,
326 0xffd7e0f1,0xffc1cee4,0xffb6c4dd,0xffb4c3dc,0xffaebedb,0xff8495b1,0x33000000,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, 649 0xffd7e0f1,0xffc1cee4,0xffb6c4dd,0xffb4c3dc,0xffaebedb,0xff8495b1,0x33000000,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,
327 0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfff8fdff, 650 0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfff8fdff,
328 0xfff3f9ff,0xffecf3fe,0xffe5edfa,0xffdfe7f6,0xffccd6ea,0xffbecae2,0xffbbc9e0,0xffb9c6df,0xffb5c5e0,0xff8495b1,0x33000000,0xffffff,0xffffff,0xffffff, 651 0xfff3f9ff,0xffecf3fe,0xffe5edfa,0xffdfe7f6,0xffccd6ea,0xffbecae2,0xffbbc9e0,0xffb9c6df,0xffb5c5e0,0xff8495b1,0x33000000,0xffffff,0xffffff,0xffffff,
329 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff, 652 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,
330 0xffffffff,0xffffffff,0xffffffff,0xfffaffff,0xfff3f9ff,0xffeff5ff,0xffe7eefb,0xffd5dfef,0xffc7d3e8,0xffc5d1e6,0xffc2cfe5,0xffc1cde4,0xffbdcbe5,0xff8495b1, 653 0xffffffff,0xffffffff,0xffffffff,0xfffaffff,0xfff3f9ff,0xffeff5ff,0xffe7eefb,0xffd5dfef,0xffc7d3e8,0xffc5d1e6,0xffc2cfe5,0xffc1cde4,0xffbdcbe5,0xff8495b1,
331 0x33000000,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xffffffff, 654 0x33000000,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xffffffff,
332 0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffdffff,0xfff5faff,0xffe9f0fc,0xffdae2f2,0xffd0daed,0xffccd7ea,0xffc9d4e9, 655 0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffdffff,0xfff5faff,0xffe9f0fc,0xffdae2f2,0xffd0daed,0xffccd7ea,0xffc9d4e9,
333 0xffc7d2e7,0xffc6d2e6,0xffc3d0e8,0xff8495b1,0x33000000,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5, 656 0xffc7d2e7,0xffc6d2e6,0xffc3d0e8,0xff8495b1,0x33000000,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5,
334 0xfffcffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffdffff,0xfff5faff,0xffeaf0fd,0xffdce5f5, 657 0xfffcffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffdffff,0xfff5faff,0xffeaf0fd,0xffdce5f5,
335 0xffd6e0f1,0xffd3ddee,0xffd0dbed,0xffced9ec,0xffccd7ea,0xffcbd7ea,0xffc8d5ec,0xff8495b1,0x33000000,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, 658 0xffd6e0f1,0xffd3ddee,0xffd0dbed,0xffced9ec,0xffccd7ea,0xffcbd7ea,0xffc8d5ec,0xff8495b1,0x33000000,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,
336 0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffcffff, 659 0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffcffff,
337 0xfff3f8ff,0xffe9effc,0xffdfe8f6,0xffdbe4f3,0xffdae3f3,0xffd7e0f1,0xffd5dff0,0xffd2dcef,0xffd0dbed,0xffd0dbed,0xffcedaf0,0xff8495b1,0x33000000,0xffffff, 660 0xfff3f8ff,0xffe9effc,0xffdfe8f6,0xffdbe4f3,0xffdae3f3,0xffd7e0f1,0xffd5dff0,0xffd2dcef,0xffd0dbed,0xffd0dbed,0xffcedaf0,0xff8495b1,0x33000000,0xffffff,
338 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff, 661 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,
339 0xffffffff,0xffffffff,0xffffffff,0xfff4f9ff,0xffe9f0fc,0xffe4ecf9,0xffe1e9f7,0xffdfe7f6,0xffdde5f4,0xffdbe4f3,0xffd9e2f3,0xffd7e1f2,0xffd4def0,0xffd4ddef, 662 0xffffffff,0xffffffff,0xffffffff,0xfff4f9ff,0xffe9f0fc,0xffe4ecf9,0xffe1e9f7,0xffdfe7f6,0xffdde5f4,0xffdbe4f3,0xffd9e2f3,0xffd7e1f2,0xffd4def0,0xffd4ddef,
340 0xffd2def2,0xff8495b1,0x33000000,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff, 663 0xffd2def2,0xff8495b1,0x33000000,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff,
341 0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffdffff,0xfff0f6ff,0xffebf1fd,0xffe8effc,0xffe6edfa,0xffe5edfa,0xffe2eaf8,0xffe1e9f7,0xffdee6f5, 664 0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffdffff,0xfff0f6ff,0xffebf1fd,0xffe8effc,0xffe6edfa,0xffe5edfa,0xffe2eaf8,0xffe1e9f7,0xffdee6f5,
342 0xffdde5f4,0xffdbe4f3,0xffd8e1f2,0xffd8e1f1,0xffd5e0f4,0xff8495b1,0x33000000,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, 665 0xffdde5f4,0xffdbe4f3,0xffd8e1f2,0xffd8e1f1,0xffd5e0f4,0xff8495b1,0x33000000,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,
343 0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffcffff,0xfff2f7ff,0xfff0f6ff,0xffedf4ff,0xffecf2fe,0xffeaf1fc, 666 0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffcffff,0xfff2f7ff,0xfff0f6ff,0xffedf4ff,0xffecf2fe,0xffeaf1fc,
344 0xffe7eefb,0xffe4ecf9,0xffe2eaf8,0xffe1e9f8,0xffdee6f5,0xffdde6f4,0xffdce5f4,0xffdae4f3,0xffd9e3f6,0xff8495b1,0x33000000,0xffffff,0xffffff,0xffffff, 667 0xffe7eefb,0xffe4ecf9,0xffe2eaf8,0xffe1e9f8,0xffdee6f5,0xffdde6f4,0xffdce5f4,0xffdae4f3,0xffd9e3f6,0xff8495b1,0x33000000,0xffffff,0xffffff,0xffffff,
345 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfff6fbff,0xfff4f9ff, 668 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfff6fbff,0xfff4f9ff,
346 0xfff1f7ff,0xffeef4ff,0xffeef4ff,0xffecf2fd,0xffe9f0fc,0xffe7eefb,0xffe4ebf9,0xffe4ebf8,0xffe2eaf8,0xffdfe7f7,0xffdee6f5,0xffdde6f4,0xffdbe5f7,0xff8495b1, 669 0xfff1f7ff,0xffeef4ff,0xffeef4ff,0xffecf2fd,0xffe9f0fc,0xffe7eefb,0xffe4ebf9,0xffe4ebf8,0xffe2eaf8,0xffdfe7f7,0xffdee6f5,0xffdde6f4,0xffdbe5f7,0xff8495b1,
347 0x33000000,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xffffffff, 670 0x33000000,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xffffffff,
348 0xffffffff,0xfff9feff,0xfff8fdff,0xfff5faff,0xfff3f8ff,0xfff1f7ff,0xffeff5ff,0xffedf3fe,0xffebf1fd,0xffe8effc,0xffe7eefb,0xffe5ecf9,0xffe3ebf9,0xffe2eaf8, 671 0xffffffff,0xfff9feff,0xfff8fdff,0xfff5faff,0xfff3f8ff,0xfff1f7ff,0xffeff5ff,0xffedf3fe,0xffebf1fd,0xffe8effc,0xffe7eefb,0xffe5ecf9,0xffe3ebf9,0xffe2eaf8,
349 0xffe0e7f6,0xffdfe7f6,0xffdce6f8,0xff8495b1,0x33000000,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5, 672 0xffe0e7f6,0xffdfe7f6,0xffdce6f8,0xff8495b1,0x33000000,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5,
350 0xfffcffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfff9fdff,0xfff8fdff,0xfff6fbff,0xfff4f9ff,0xfff2f7ff,0xfff0f6ff,0xffeef4ff,0xffebf3fe,0xffeaf0fc, 673 0xfffcffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfff9fdff,0xfff8fdff,0xfff6fbff,0xfff4f9ff,0xfff2f7ff,0xfff0f6ff,0xffeef4ff,0xffebf3fe,0xffeaf0fc,
351 0xffe8effb,0xffe6edfb,0xffe4ecf9,0xffe2e9f7,0xffe0e8f7,0xffe0e8f6,0xffdee8fa,0xff8495b1,0x33000000,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, 674 0xffe8effb,0xffe6edfb,0xffe4ecf9,0xffe2e9f7,0xffe0e8f7,0xffe0e8f6,0xffdee8fa,0xff8495b1,0x33000000,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,
352 0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xffffffff,0xfffcffff,0xfff9feff,0xfff9feff,0xfff6fbff,0xfff4f9ff,0xfff2f8ff, 675 0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xffffffff,0xfffcffff,0xfff9feff,0xfff9feff,0xfff6fbff,0xfff4f9ff,0xfff2f8ff,
353 0xfff1f7ff,0xfff0f6ff,0xffeef4ff,0xffebf1fd,0xffe9effc,0xffe6edfa,0xffe4ecf9,0xffe3ebf9,0xffe0e8f7,0xffdfe7f7,0xffdfe9fa,0xff8495b1,0x33000000,0xffffff, 676 0xfff1f7ff,0xfff0f6ff,0xffeef4ff,0xffebf1fd,0xffe9effc,0xffe6edfa,0xffe4ecf9,0xffe3ebf9,0xffe0e8f7,0xffdfe7f7,0xffdfe9fa,0xff8495b1,0x33000000,0xffffff,
354 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xffffffff,0xfffcffff,0xfff9feff, 677 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xffffffff,0xfffcffff,0xfff9feff,
355 0xfff8fdff,0xfff6fbff,0xfff4f9ff,0xfff3f8ff,0xfff2f7ff,0xfff0f6ff,0xffedf3fe,0xffebf2fd,0xffe9f0fc,0xffe7eefa,0xffe6edfa,0xffe3ebf8,0xffe2eaf8,0xffe1e9f8, 678 0xfff8fdff,0xfff6fbff,0xfff4f9ff,0xfff3f8ff,0xfff2f7ff,0xfff0f6ff,0xffedf3fe,0xffebf2fd,0xffe9f0fc,0xffe7eefa,0xffe6edfa,0xffe3ebf8,0xffe2eaf8,0xffe1e9f8,
356 0xffdfe9fa,0xff8495b1,0x33000000,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff, 679 0xffdfe9fa,0xff8495b1,0x33000000,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff,
357 0xffffffff,0xffffffff,0xfffbffff,0xfff9feff,0xfff7fdff,0xfff7fcff,0xfff4f9ff,0xfff3f8ff,0xfff2f8ff,0xfff0f6ff,0xffeff5ff,0xffecf2fe,0xffe9f0fc,0xffe8effc, 680 0xffffffff,0xffffffff,0xfffbffff,0xfff9feff,0xfff7fdff,0xfff7fcff,0xfff4f9ff,0xfff3f8ff,0xfff2f8ff,0xfff0f6ff,0xffeff5ff,0xffecf2fe,0xffe9f0fc,0xffe8effc,
358 0xffe6edfa,0xffe4ecf9,0xffe1e9f7,0xffe2eaf8,0xffe0e9fb,0xff8495b1,0x33000000,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, 681 0xffe6edfa,0xffe4ecf9,0xffe1e9f7,0xffe2eaf8,0xffe0e9fb,0xff8495b1,0x33000000,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,
359 0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xfffeffff,0xfffafeff,0xfff9feff,0xfff8fdff,0xfff6fbff,0xfff5faff,0xfff3f8ff,0xfff1f7ff,0xfff0f6ff, 682 0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xfffeffff,0xfffafeff,0xfff9feff,0xfff8fdff,0xfff6fbff,0xfff5faff,0xfff3f8ff,0xfff1f7ff,0xfff0f6ff,
360 0xffeef4ff,0xffecf2fd,0xffe9f0fc,0xffe7eefa,0xffe6edfa,0xffe3eaf9,0xffe1e9f7,0xffe2eaf8,0xffe0e9fb,0xff8495b1,0x33000000,0xffffff,0xffffff,0xffffff, 683 0xffeef4ff,0xffecf2fd,0xffe9f0fc,0xffe7eefa,0xffe6edfa,0xffe3eaf9,0xffe1e9f7,0xffe2eaf8,0xffe0e9fb,0xff8495b1,0x33000000,0xffffff,0xffffff,0xffffff,
361 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xfffeffff,0xfffafeff,0xfff9feff,0xfff8fdff,0xfff5faff, 684 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xfffeffff,0xfffafeff,0xfff9feff,0xfff8fdff,0xfff5faff,
362 0xfff5faff,0xfff3f8ff,0xfff1f7ff,0xfff0f6ff,0xffeff5ff,0xffebf2fd,0xffeaf1fd,0xffe7eefa,0xffe6edfa,0xffe3eaf8,0xffe2eaf8,0xffe2eaf8,0xffdfe9fa,0xff8495b1, 685 0xfff5faff,0xfff3f8ff,0xfff1f7ff,0xfff0f6ff,0xffeff5ff,0xffebf2fd,0xffeaf1fd,0xffe7eefa,0xffe6edfa,0xffe3eaf8,0xffe2eaf8,0xffe2eaf8,0xffdfe9fa,0xff8495b1,
363 0x33000000,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xfffcffff, 686 0x33000000,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xfffcffff,
364 0xfffafeff,0xfff8fdff,0xfff7fcff,0xfff5faff,0xfff4f9ff,0xfff2f7ff,0xfff1f7ff,0xfff0f6ff,0xffedf3fe,0xffebf2fd,0xffe9f0fc,0xffe7eefa,0xffe6edfa,0xffe3ebf8, 687 0xfffafeff,0xfff8fdff,0xfff7fcff,0xfff5faff,0xfff4f9ff,0xfff2f7ff,0xfff1f7ff,0xfff0f6ff,0xffedf3fe,0xffebf2fd,0xffe9f0fc,0xffe7eefa,0xffe6edfa,0xffe3ebf8,
365 0xffe2eaf8,0xffe1e9f7,0xffe0e9fb,0xff8495b1,0x33000000,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5, 688 0xffe2eaf8,0xffe1e9f7,0xffe0e9fb,0xff8495b1,0x33000000,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5,
366 0xfffcffff,0xffffffff,0xffffffff,0xfff9feff,0xfff9feff,0xfff8fdff,0xfff7fcff,0xfff4f9ff,0xfff4f9ff,0xfff2f8ff,0xfff1f7ff,0xfff0f6ff,0xffedf3fe,0xffeaf1fd, 689 0xfffcffff,0xffffffff,0xffffffff,0xfff9feff,0xfff9feff,0xfff8fdff,0xfff7fcff,0xfff4f9ff,0xfff4f9ff,0xfff2f8ff,0xfff1f7ff,0xfff0f6ff,0xffedf3fe,0xffeaf1fd,
367 0xffe9f0fc,0xffe6edfa,0xffe4ecf9,0xffe2eaf8,0xffe2eaf8,0xffe1e8f7,0xffe0eafc,0xff8495b1,0x33000000,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, 690 0xffe9f0fc,0xffe6edfa,0xffe4ecf9,0xffe2eaf8,0xffe2eaf8,0xffe1e8f7,0xffe0eafc,0xff8495b1,0x33000000,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,
368 0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xfff9feff,0xfff9feff,0xfff8fdff,0xfff7fcff,0xfff4f9ff,0xfff4f9ff,0xfff2f8ff, 691 0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xfff9feff,0xfff9feff,0xfff8fdff,0xfff7fcff,0xfff4f9ff,0xfff4f9ff,0xfff2f8ff,
369 0xfff1f7ff,0xfff0f6ff,0xffedf3fe,0xffeaf1fd,0xffe9f0fc,0xffe6edfa,0xffe4ecf9,0xffe2eaf8,0xffe2eaf8,0xffe1e8f7,0xffe0eafc,0xff8495b1,0x33000000,0xffffff, 692 0xfff1f7ff,0xfff0f6ff,0xffedf3fe,0xffeaf1fd,0xffe9f0fc,0xffe6edfa,0xffe4ecf9,0xffe2eaf8,0xffe2eaf8,0xffe1e8f7,0xffe0eafc,0xff8495b1,0x33000000,0xffffff,
370 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xfff4fdff,0xffffffff,0xffffffff,0xfff9feff,0xfff9feff,0xfff8fdff, 693 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xfff4fdff,0xffffffff,0xffffffff,0xfff9feff,0xfff9feff,0xfff8fdff,
371 0xfff7fcff,0xfff4f9ff,0xfff4f9ff,0xfff2f8ff,0xfff1f7ff,0xfff0f6ff,0xffedf3fe,0xffeaf1fd,0xffe9f0fc,0xffe6edfa,0xffe4ecf9,0xffe2eaf8,0xffe2eaf8,0xffe1e8f7, 694 0xfff7fcff,0xfff4f9ff,0xfff4f9ff,0xfff2f8ff,0xfff1f7ff,0xfff0f6ff,0xffedf3fe,0xffeaf1fd,0xffe9f0fc,0xffe6edfa,0xffe4ecf9,0xffe2eaf8,0xffe2eaf8,0xffe1e8f7,
372 0xffe0eafc,0xff8495b1,0x33000000,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xff8495b1,0xff8495b1, 695 0xffe0eafc,0xff8495b1,0x33000000,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xff8495b1,0xff8495b1,
373 0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1, 696 0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,
374 0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0x33000000,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, 697 0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0x33000000,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,
375 0xffffff,0x0,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000, 698 0xffffff,0x0,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,
376 0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0xffffff,0xffffff,0xffffff, 699 0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0xffffff,0xffffff,0xffffff,
377 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, 700 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,
378 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, 701 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,
379 0xffffff,0xffffff 702 0xffffff,0xffffff
380}; 703};
381 704
382static const QRgb DocumentTypePowerPoint_data[] = { 705static const QRgb DocumentTypePowerPoint_data[] = {
383 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, 706 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,
384 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, 707 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,
385 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0x1000500,0x2000500,0x5000500,0x9000500,0x10000500,0x18000500,0x22000500, 708 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0x1000200,0x2000200,0x5000200,0x9000200,0x10000200,0x18000200,0x22000200,
386 0x2c000500,0x36000500,0x3f000500,0x45000500,0x4a000500,0x4d000500,0x4e000500,0x4e000500,0x4e000500,0x4c000500,0x49000500,0x45000500,0x3f000500,0x37000500, 709 0x2c000200,0x36000200,0x3f000200,0x45000200,0x4a000200,0x4d000200,0x4e000200,0x4e000200,0x4e000200,0x4c000200,0x49000200,0x45000200,0x3f000200,0x37000200,
387 0x2e000500,0x25000500,0x1c000500,0x13000500,0xd000500,0x8000500,0x4000500,0x2000500,0xffffff,0xffffff,0xffffff,0x1000500,0x3000500,0x7000500, 710 0x2e000200,0x25000200,0x1c000200,0x13000200,0xd000200,0x8000200,0x4000200,0x2000200,0xffffff,0xffffff,0xffffff,0x1000200,0x3000200,0x7000200,
388 0xd000500,0x16000500,0x22000500,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000, 711 0xd000200,0x16000200,0x22000200,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,
389 0xff000000,0xff000000,0xfd373737,0x72545754,0x44000500,0x37000500,0x2b000500,0x1f000500,0x15000500,0xd000500,0x8000500,0x4000500,0xffffff,0xffffff, 712 0xff000000,0xff000000,0xfd282828,0x72434543,0x44000200,0x37000200,0x2b000200,0x1f000200,0x15000200,0xd000200,0x8000200,0x4000200,0xffffff,0xffffff,
390 0xffffff,0x1000500,0x4000500,0x9000500,0x11000500,0x1d000500,0x2c000500,0xff000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffefefe, 713 0xffffff,0x1000200,0x4000200,0x9000200,0x11000200,0x1d000200,0x2c000200,0xff000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffefefe,
391 0xfffefefe,0xfffdfdfd,0xfffafafa,0xfff5f5f5,0xffededed,0xffe3e3e3,0xffd1d1d1,0xfd363636,0x76404240,0x4e000500,0x3d000500,0x2e000500,0x21000500,0x16000500, 714 0xfffefefe,0xfffcfcfc,0xfff9f9f9,0xfff3f3f3,0xffe9e9e9,0xffdedede,0xffc8c8c8,0xfd272727,0x76303230,0x4e000200,0x3d000200,0x2e000200,0x21000200,0x16000200,
392 0xe000500,0x8000500,0xffffff,0xffffff,0xffffff,0x2000500,0x5000500,0xb000500,0x15000500,0x24000500,0x36000500,0xff000000,0xffffffff,0xffffffff, 715 0xe000200,0x8000200,0xffffff,0xffffff,0xffffff,0x2000200,0x5000200,0xb000200,0x15000200,0x24000200,0x36000200,0xff000000,0xffffffff,0xffffffff,
393 0xffffffff,0xffffffff,0xfffefefe,0xfffefefe,0xfffdfdfd,0xfffdfdfd,0xfff8f8f8,0xfff0f0f0,0xffe3e3e3,0xffd4d4d4,0xfffefefe,0xffbebebe,0xfd383838,0x803e403e, 716 0xffffffff,0xffffffff,0xfffefefe,0xfffefefe,0xfffdfdfd,0xfffcfcfc,0xfff6f6f6,0xffededed,0xffdedede,0xffcccccc,0xfffefefe,0xffb3b3b3,0xfd292929,0x802e302e,
394 0x53000500,0x40000500,0x2f000500,0x21000500,0x16000500,0xd000500,0xffffff,0xffffff,0xffffff,0x2000500,0x6000500,0xd000500,0x18000500,0x29000500, 717 0x53000200,0x40000200,0x2f000200,0x21000200,0x16000200,0xd000200,0xffffff,0xffffff,0xffffff,0x2000200,0x6000200,0xd000200,0x18000200,0x29000200,
395 0x3f000500,0xff000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffefefe,0xfffdfdfd,0xfffdfdfd,0xfffbfbfb,0xfff6f6f6,0xffededed,0xffdbdbdb,0xffc6c6c6, 718 0x3f000200,0xff000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffefefe,0xfffdfdfd,0xfffcfcfc,0xfffafafa,0xfff4f4f4,0xffe9e9e9,0xffd4d4d4,0xffbcbcbc,
396 0xffffffff,0xfffdfdfd,0xffaeaeae,0xfd3b3b3b,0x7e353735,0x55000500,0x41000500,0x2f000500,0x20000500,0x15000500,0xffffff,0xffffff,0x1000500,0x2000500, 719 0xffffffff,0xfffcfcfc,0xffa1a1a1,0xfd2b2b2b,0x7e262826,0x55000200,0x41000200,0x2f000200,0x20000200,0x15000200,0xffffff,0xffffff,0x1000200,0x2000200,
397 0x6000500,0xe000500,0x1b000500,0x2d000500,0x45000500,0xff000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffdfdfd,0xfffdfdfd,0xfffcfcfc,0xfffafafa, 720 0x6000200,0xe000200,0x1b000200,0x2d000200,0x45000200,0xff000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffdfdfd,0xfffdfdfd,0xfffbfbfb,0xfff9f9f9,
398 0xfff4f4f4,0xffe8e8e8,0xffd5d5d5,0xffbababa,0xffffffff,0xffffffff,0xfffdfdfd,0xffa3a3a3,0xfd3e3e3e,0x7a2a2d2a,0x55000500,0x40000500,0x2d000500,0x1e000500, 721 0xfff2f2f2,0xffe4e4e4,0xffcdcdcd,0xffaeaeae,0xffffffff,0xffffffff,0xfffcfcfc,0xff949494,0xfd2e2e2e,0x7a1d1f1d,0x55000200,0x40000200,0x2d000200,0x1e000200,
399 0xffffff,0xffffff,0x1000500,0x2000500,0x7000500,0xf000500,0x1d000500,0x30000500,0x4a000500,0xff000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff, 722 0xffffff,0xffffff,0x1000200,0x2000200,0x7000200,0xf000200,0x1d000200,0x30000200,0x4a000200,0xff000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,
400 0xfffdfdfd,0xfffdfdfd,0xfffcfcfc,0xfff8f8f8,0xfff3f3f3,0xffe7e7e7,0xffd1d1d1,0xffb4b4b4,0xffffffff,0xffffffff,0xffffffff,0xfffafafa,0xff9d9d9d,0xfd454545, 723 0xfffdfdfd,0xfffcfcfc,0xfffbfbfb,0xfff7f7f7,0xfff0f0f0,0xffe2e2e2,0xffc8c8c8,0xffa7a7a7,0xffffffff,0xffffffff,0xffffffff,0xfff9f9f9,0xff8e8e8e,0xfd343434,
401 0x782b2b2b,0x52000500,0x3c000500,0x29000500,0xffffff,0xffffff,0x1000500,0x3000500,0x7000500,0x10000500,0x1e000500,0x32000500,0x4d000500,0xff000000, 724 0x781e1e1e,0x52000200,0x3c000200,0x29000200,0xffffff,0xffffff,0x1000200,0x3000200,0x7000200,0x10000200,0x1e000200,0x32000200,0x4d000200,0xff000000,
402 0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffdfdfd,0xfffcfcfc,0xfffbfbfb,0xfff8f8f8,0xfff3f3f3,0xffe6e6e6,0xffd1d1d1,0xffb3b3b3,0xffffffff,0xffffffff, 725 0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffcfcfc,0xfffbfbfb,0xfffafafa,0xfff7f7f7,0xfff0f0f0,0xffe1e1e1,0xffc8c8c8,0xffa6a6a6,0xffffffff,0xffffffff,
403 0xffffffff,0xffffffff,0xfff9f9f9,0xff9e9e9e,0xfc4c4c4c,0x701f231f,0x4c000500,0x36000500,0x1000000,0x2000000,0x5000000,0x9000000,0xf000000,0x18000000, 726 0xffffffff,0xffffffff,0xfff8f8f8,0xff8f8f8f,0xfc3b3b3b,0x70141714,0x4c000200,0x36000200,0x1000000,0x2000000,0x5000000,0x9000000,0xf000000,0x18000000,
404 0x27000000,0x3b000000,0x55000600,0xff000000,0xfff7f7f7,0xfff7f7f7,0xfff7f7f7,0xfff8f8f8,0xfff6f6f6,0xfff7f7f7,0xfff7f7f7,0xfff6f6f6,0xfff2f2f2,0xffe8e8e8, 727 0x27000000,0x3b000000,0x55000300,0xff000000,0xfff5f5f5,0xfff5f5f5,0xfff5f5f5,0xfff6f6f6,0xfff4f4f4,0xfff5f5f5,0xfff5f5f5,0xfff4f4f4,0xffefefef,0xffe4e4e4,
405 0xffd4d4d4,0xffb9b9b9,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffbfbfb,0xffa1a1a1,0xfb545454,0x5c000500,0x42000500,0x4000000,0x7000000, 728 0xffcccccc,0xffadadad,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffafafa,0xff929292,0xfb434343,0x5c000200,0x42000200,0x4000000,0x7000000,
406 0xd000000,0x15000000,0x1d000000,0x29000000,0x38000000,0x4c000000,0x64000000,0xff000000,0xffe5e5e5,0xffe5e5e5,0xffe7e7e7,0xffe8e8e8,0xffe8e8e8,0xffececec, 729 0xd000000,0x15000000,0x1d000000,0x29000000,0x38000000,0x4c000000,0x64000000,0xff000000,0xffe0e0e0,0xffe0e0e0,0xffe2e2e2,0xffe4e4e4,0xffe4e4e4,0xffe8e8e8,
407 0xffefefef,0xfff3f3f3,0xfff0f0f0,0xffeaeaea,0xffdddddd,0xffc9c9c9,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffbfbfb,0xff3e3e3e, 730 0xffececec,0xfff0f0f0,0xffededed,0xffe6e6e6,0xffd7d7d7,0xffbfbfbf,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffafafa,0xff2e2e2e,
408 0x6a000500,0x4e000500,0x7000000,0xf000000,0x19000000,0x28000000,0x34000000,0x43000000,0x52000000,0x64000000,0x79000500,0xff000000,0xffcbcbcb,0xffcbcbcb, 731 0x6a000200,0x4e000200,0x7000000,0xf000000,0x19000000,0x28000000,0x34000000,0x43000000,0x52000000,0x64000000,0x79000200,0xff000000,0xffc2c2c2,0xffc2c2c2,
409 0xffcdcdcd,0xffd1d1d1,0xffd6d6d6,0xffdddddd,0xffe7e7e7,0xffececec,0xffefefef,0xffefefef,0xffe7e7e7,0xffc5c5c5,0xff9f9f9f,0xff7f7f7f,0xff6f6f6f,0xff6b6b6b, 732 0xffc4c4c4,0xffc9c9c9,0xffcecece,0xffd6d6d6,0xffe2e2e2,0xffe8e8e8,0xffececec,0xffececec,0xffe2e2e2,0xffbbbbbb,0xff909090,0xff6e6e6e,0xff5d5d5d,0xff595959,
410 0xff717171,0xff8c8c8c,0xffb5b5b5,0xff000000,0x76000500,0x58000500,0xc000000,0x19000000,0xff78cf7b,0xff75cd78,0xff71cb75,0xff6ec872,0xff69c56d,0xff67c56b, 733 0xff5f5f5f,0xff7b7b7b,0xffa8a8a8,0xff000000,0x76000200,0x58000200,0xc000000,0x19000000,0xff66c66a,0xff63c466,0xff5fc163,0xff5cbe60,0xff57bb5b,0xff55bb59,
411 0xff62c466,0xff5ec463,0xff58c15d,0xff51bf57,0xff4dbd50,0xff45bc4a,0xff42b948,0xffc6c6c6,0xffd7d7d7,0xffe5e5e5,0xffeeeeee,0xfff2f2f2,0xffcfcfcf,0xffa0a0a0, 734 0xff50ba54,0xff4cba51,0xff46b64b,0xff40b445,0xff3cb13f,0xff34b039,0xff32ad37,0xffbcbcbc,0xffd0d0d0,0xffe0e0e0,0xffebebeb,0xffefefef,0xffc6c6c6,0xff919191,
412 0xff8d8d8d,0xff828282,0xff828282,0xff7d7d7d,0xff717171,0xff707070,0xff747474,0xff000000,0x80000500,0x60000500,0x12000000,0x27000000,0xff74cb77,0xff6fc673, 735 0xff7c7c7c,0xff717171,0xff717171,0xff6c6c6c,0xff5f5f5f,0xff5e5e5e,0xff626262,0xff000000,0x80000200,0x60000200,0x12000000,0x27000000,0xff62c265,0xff5dbc61,
413 0xff6ac16d,0xff64bc68,0xff61ba65,0xff5db860,0xff59b95d,0xff53b757,0xff4db552,0xff48b24c,0xff41b047,0xff3ead43,0xff3ead42,0xffa7a7a7,0xffc4c4c4,0xffdbdbdb, 736 0xff58b65b,0xff52b056,0xff4fae53,0xff4bac4e,0xff47ad4b,0xff42ab45,0xff3ca841,0xff37a53b,0xff31a336,0xff2ea033,0xff2e9f32,0xff999999,0xffb9b9b9,0xffd4d4d4,
414 0xffececec,0xffd9d9d9,0xffababab,0xff9a9a9a,0xffa4a4a4,0xffc0c0c0,0xffcecece,0xffcfcfcf,0xffc4c4c4,0xff919191,0xff6e6e6e,0xff000000,0x87000500,0x66000500, 737 0xffe8e8e8,0xffd2d2d2,0xff9d9d9d,0xff8b8b8b,0xff959595,0xffb5b5b5,0xffc5c5c5,0xffc6c6c6,0xffbababa,0xff818181,0xff5c5c5c,0xff000000,0x87000200,0x66000200,
415 0x17000000,0x31000000,0xff6fc673,0xffffffff,0xffffffff,0xffffffff,0xfff4f9f5,0xffa5d1a7,0xff4ca74f,0xffffffff,0xffffffff,0xffffffff,0xfff3f9f3,0xff9acb9c, 738 0x17000000,0x31000000,0xff5dbc61,0xffffffff,0xffffffff,0xffffffff,0xfff2f8f3,0xff97c899,0xff3b993e,0xffffffff,0xffffffff,0xffffffff,0xfff1f8f1,0xff8bc28d,
416 0xff399e3d,0xff8d8d8d,0xffb1b1b1,0xffd3d3d3,0xffdddddd,0xffbdbdbd,0xffa8a8a8,0xffb5b5b5,0xffe6e6e6,0xfff3f3f3,0xfff7f7f7,0xfff3f3f3,0xffd1d1d1,0xffe7e7e7, 739 0xff2a8f2d,0xff7c7c7c,0xffa4a4a4,0xffcbcbcb,0xffd7d7d7,0xffb1b1b1,0xff9a9a9a,0xffa8a8a8,0xffe1e1e1,0xfff1f1f1,0xfff5f5f5,0xfff0f0f0,0xffc9c9c9,0xffe2e2e2,
417 0xff9f9f9f,0xff000000,0x8b000500,0x6a000500,0x1b000000,0x3c000000,0xff69bf6c,0xffffffff,0xffe0eee1,0xff7fb582,0xffc6ddc7,0xffffffff,0xff78b07a,0xffffffff, 740 0xff909090,0xff000000,0x8b000200,0x6a000200,0x1b000000,0x3c000000,0xff57b45a,0xffffffff,0xffdaeadb,0xff6ea871,0xffbcd6bd,0xffffffff,0xff66a369,0xffffffff,
418 0xffdceadd,0xff6fa972,0xffc0d9c1,0xffffffff,0xff70ad73,0xff767676,0xffa2a2a2,0xffc8c8c8,0xffcacaca,0xffb3b3b3,0xffb1b1b1,0xffe3e3e3,0xfffafafa,0xfff8f8f8, 741 0xffd5e6d6,0xff5d9b60,0xffb5d2b6,0xffffffff,0xff5e9f61,0xff646464,0xff939393,0xffbebebe,0xffc0c0c0,0xffa6a6a6,0xffa4a4a4,0xffdedede,0xfff9f9f9,0xfff6f6f6,
419 0xfff7f7f7,0xffafafaf,0xff7a7a7a,0xffb6b6b6,0xffe1e1e1,0xff000000,0x8e000500,0x6d000500,0x1d000000,0x43000000,0xff62ba66,0xffffffff,0xffd1e3d2,0xff418943, 742 0xfff5f5f5,0xffa2a2a2,0xff686868,0xffa9a9a9,0xffdbdbdb,0xff000000,0x8e000200,0x6d000200,0x1d000000,0x43000000,0xff50ae54,0xffffffff,0xffc9deca,0xff317833,
420 0xff77a778,0xffffffff,0xff99bd9a,0xffffffff,0xffcbddcc,0xff2a772e,0xff6b9f6d,0xffffffff,0xff96bc98,0xff666666,0xff979797,0xffbfbfbf,0xffbfbfbf,0xffb2b2b2, 743 0xff659966,0xffffffff,0xff89b18a,0xffffffff,0xffc2d6c3,0xff1d6520,0xff59905b,0xffffffff,0xff86b088,0xff545454,0xff878787,0xffb4b4b4,0xffb4b4b4,0xffa5a5a5,
421 0xffc5c5c5,0xfff5f5f5,0xfffbfbfb,0xfffafafa,0xffb6b6b6,0xff7c7c7c,0xff777777,0xff9b9b9b,0xffefefef,0xff000000,0x8f000500,0x6e000500,0x1f000000,0x45000000, 744 0xffbbbbbb,0xfff3f3f3,0xfffafafa,0xfff9f9f9,0xffaaaaaa,0xff6b6b6b,0xff656565,0xff8c8c8c,0xffececec,0xff000000,0x8f000200,0x6e000200,0x1f000000,0x45000000,
422 0xff5eb661,0xffffffff,0xffd1e2d1,0xff3b803d,0xff9abc9a,0xffffffff,0xff88af8a,0xffffffff,0xffcbdacb,0xff276c29,0xff93b495,0xffffffff,0xff88b089,0xff606060, 745 0xff4caa4f,0xffffffff,0xffc8dcc9,0xff2b6f2d,0xff8ab08b,0xffffffff,0xff77a279,0xffffffff,0xffc1d3c2,0xff1a5a1c,0xff83a785,0xffffffff,0xff77a378,0xff4e4e4e,
423 0xff919191,0xffbcbcbc,0xffb8b8b8,0xffb2b2b2,0xffcecece,0xfffdfdfd,0xfffcfcfc,0xffbababa,0xff828282,0xff7a7a7a,0xff808080,0xffe4e4e4,0xffffffff,0xff000000, 746 0xff818181,0xffb0b0b0,0xffacacac,0xffa5a5a5,0xffc5c5c5,0xfffcfcfc,0xfffbfbfb,0xffaeaeae,0xff717171,0xff696969,0xff6f6f6f,0xffdfdfdf,0xffffffff,0xff000000,
424 0x90000500,0x6e000500,0x1f000000,0x46000000,0xff58b35d,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffdbe7dc,0xff397e3d,0xffffffff,0xffffffff,0xffffffff, 747 0x90000200,0x6e000200,0x1f000000,0x46000000,0xff46a64b,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffd4e2d5,0xff2a6d2d,0xffffffff,0xffffffff,0xffffffff,
425 0xffffffff,0xffdae5db,0xff3b803e,0xff616161,0xff929292,0xffbdbdbd,0xffbbbbbb,0xffaeaeae,0xffc6c6c6,0xfff9f9f9,0xffbcbcbc,0xff868686,0xff7e7e7e,0xff777777, 748 0xffffffff,0xffd3e0d4,0xff2b6f2e,0xff4f4f4f,0xff828282,0xffb2b2b2,0xffafafaf,0xffa1a1a1,0xffbcbcbc,0xfff8f8f8,0xffb0b0b0,0xff757575,0xff6d6d6d,0xff656565,
426 0xff747474,0xffa4a4a4,0xfff4f4f4,0xff000000,0x90000500,0x6f000500,0x1f000000,0x46000000,0xff53b257,0xffffffff,0xffdde9dd,0xff70a473,0xff5d9a5f,0xff2d7d30, 749 0xff626262,0xff959595,0xfff2f2f2,0xff000000,0x90000200,0x6f000200,0x1f000000,0x46000000,0xff42a545,0xffffffff,0xffd6e5d7,0xff5e9561,0xff4b8a4d,0xff1f6c22,
427 0xff2b7a2f,0xffffffff,0xffdae4da,0xff68936a,0xff578c5a,0xff29722b,0xff2b7a2f,0xff656565,0xff969696,0xffc2c2c2,0xffc5c5c5,0xffa8a8a8,0xffadadad,0xffeaeaea, 750 0xff1e6921,0xffffffff,0xffd3dfd3,0xff568358,0xff457b48,0xff1c601e,0xff1e6921,0xff535353,0xff868686,0xffb7b7b7,0xffbbbbbb,0xff9a9a9a,0xff9f9f9f,0xffe6e6e6,
428 0xffb9b9b9,0xff7e7e7e,0xff9b9b9b,0xff9a9a9a,0xff696969,0xff676767,0xff939393,0xff000000,0x90000500,0x6f000500,0x1f000000,0x46000000,0xff4eaf51,0xffffffff, 751 0xffadadad,0xff6d6d6d,0xff8c8c8c,0xff8b8b8b,0xff575757,0xff555555,0xff838383,0xff000000,0x90000200,0x6f000200,0x1f000000,0x46000000,0xff3da240,0xffffffff,
429 0xffcee1ce,0xff2f8334,0xff308734,0xff2f8634,0xff2f8433,0xffffffff,0xffcbdbcb,0xff286f2a,0xff29732b,0xff2b7a2f,0xff2f8233,0xff6b6b6b,0xff9b9b9b,0xffc5c5c5, 752 0xffc5dbc5,0xff217225,0xff227625,0xff217525,0xff217324,0xffffffff,0xffc1d4c2,0xff1b5d1d,0xff1c611e,0xff1e6821,0xff217124,0xff595959,0xff8c8c8c,0xffbbbbbb,
430 0xffd3d3d3,0xffa8a8a8,0xff949494,0xffb5b5b5,0xfff0f0f0,0xffc5c5c5,0xffebebeb,0xfffcfcfc,0xff9e9e9e,0xff686868,0xff686868,0xff000000,0x90000500,0x6f000500, 753 0xffcbcbcb,0xff9a9a9a,0xff848484,0xffa8a8a8,0xffededed,0xffbbbbbb,0xffe7e7e7,0xfffbfbfb,0xff8f8f8f,0xff565656,0xff565656,0xff000000,0x90000200,0x6f000200,
431 0x1d000000,0x43000000,0xff49b04e,0xffffffff,0xffcde2ce,0xff318834,0xff338d37,0xff348e37,0xff318c36,0xffffffff,0xffcbdccc,0xff29752d,0xff2b7a2f,0xff2e7f31, 754 0x1d000000,0x43000000,0xff38a33d,0xffffffff,0xffc4dcc5,0xff237725,0xff247d28,0xff257e28,0xff237b27,0xffffffff,0xffc2d5c3,0xff1c631f,0xff1e6921,0xff206e23,
432 0xff318834,0xff757575,0xffa4a4a4,0xffc7c7c7,0xffe3e3e3,0xffc5c5c5,0xff8d8d8d,0xff818181,0xffa5a5a5,0xffdddddd,0xffe8e8e8,0xffeaeaea,0xffcbcbcb,0xff707070, 755 0xff237725,0xff636363,0xff959595,0xffbdbdbd,0xffdddddd,0xffbbbbbb,0xff7c7c7c,0xff707070,0xff979797,0xffd6d6d6,0xffe3e3e3,0xffe6e6e6,0xffc2c2c2,0xff5e5e5e,
433 0xff696969,0xff000000,0x90000500,0x6f000500,0x1b000000,0x3e000000,0xff45b148,0xffffffff,0xffcde3ce,0xff348f37,0xff359439,0xff359539,0xff349138,0xffffffff, 756 0xff575757,0xff000000,0x90000200,0x6f000200,0x1b000000,0x3e000000,0xff34a437,0xffffffff,0xffc4ddc5,0xff257f28,0xff26842a,0xff26852a,0xff258129,0xffffffff,
434 0xffcbddcc,0xff2d7b30,0xff2e8031,0xff308734,0xff338d37,0xff858585,0xffadadad,0xffcbcbcb,0xffe4e4e4,0xffeeeeee,0xffb7b7b7,0xff7d7d7d,0xff767676,0xff797979, 757 0xffc2d7c3,0xff1f6a22,0xff206f23,0xff227625,0xff247c28,0xff747474,0xff9f9f9f,0xffc1c1c1,0xffdfdfdf,0xffebebeb,0xffababab,0xff6c6c6c,0xff646464,0xff676767,
435 0xff868686,0xff868686,0xff7c7c7c,0xff6d6d6d,0xff6d6d6d,0xff000000,0x90000500,0x6f000500,0x17000000,0x34000000,0xff3fb245,0xff3ba43f,0xff36993b,0xff369639, 758 0xff757575,0xff757575,0xff6b6b6b,0xff5b5b5b,0xff5b5b5b,0xff000000,0x90000200,0x6f000200,0x17000000,0x34000000,0xff2fa534,0xff2b952f,0xff27892b,0xff27862a,
436 0xff369a3c,0xff36993b,0xff359539,0xff338e37,0xff2f8433,0xff2f8331,0xff308634,0xff318a35,0xff338e37,0xff979797,0xffb8b8b8,0xffd2d2d2,0xffe3e3e3,0xfff3f3f3, 759 0xff278a2c,0xff27892b,0xff26852a,0xff247e28,0xff217324,0xff217223,0xff227525,0xff237926,0xff247e28,0xff878787,0xffacacac,0xffcacaca,0xffdedede,0xfff0f0f0,
437 0xfff5f5f5,0xffc7c7c7,0xff969696,0xff727272,0xff727272,0xff727272,0xff727272,0xff939393,0xffbebebe,0xff000000,0x90000500,0x6e000500,0x12000000,0x28000000, 760 0xfff3f3f3,0xffbdbdbd,0xff868686,0xff606060,0xff606060,0xff606060,0xff606060,0xff838383,0xffb3b3b3,0xff000000,0x90000200,0x6e000200,0x12000000,0x28000000,
438 0x47000000,0x6b000000,0x87000000,0x9a000000,0xa7000000,0xb2000000,0xbc000000,0xff000000,0xff6d6d6d,0xff6e6e6e,0xff767676,0xff848484,0xff969696,0xffadadad, 761 0x47000000,0x6b000000,0x87000000,0x9a000000,0xa7000000,0xb2000000,0xbc000000,0xff000000,0xff5b5b5b,0xff5c5c5c,0xff646464,0xff737373,0xff868686,0xff9f9f9f,
439 0xffc6c6c6,0xffd9d9d9,0xffe8e8e8,0xffefefef,0xfff7f7f7,0xfff9f9f9,0xffebebeb,0xffd7d7d7,0xffc9c9c9,0xffc9c9c9,0xffd6d6d6,0xffeaeaea,0xfffafafa,0xff000000, 762 0xffbcbcbc,0xffd2d2d2,0xffe4e4e4,0xffececec,0xfff5f5f5,0xfff8f8f8,0xffe7e7e7,0xffcfcfcf,0xffbfbfbf,0xffbfbfbf,0xffcecece,0xffe6e6e6,0xfff9f9f9,0xff000000,
440 0x8e000500,0x6d000500,0xc000000,0x1a000000,0x2f000000,0x47000000,0x5b000000,0x6c000000,0x79000000,0x87000000,0x97000000,0xff000000,0xffa0a0a0,0xffa0a0a0, 763 0x8e000200,0x6d000200,0xc000000,0x1a000000,0x2f000000,0x47000000,0x5b000000,0x6c000000,0x79000000,0x87000000,0x97000000,0xff000000,0xff919191,0xff919191,
441 0xffa5a5a5,0xffafafaf,0xffbababa,0xffc7c7c7,0xffd7d7d7,0xffe4e4e4,0xffededed,0xfff2f2f2,0xfff4f4f4,0xfff5f5f5,0xfff8f8f8,0xfff8f8f8,0xfff8f8f8,0xfff8f8f8, 764 0xff979797,0xffa2a2a2,0xffaeaeae,0xffbdbdbd,0xffd0d0d0,0xffdfdfdf,0xffe9e9e9,0xffefefef,0xfff2f2f2,0xfff3f3f3,0xfff6f6f6,0xfff7f7f7,0xfff7f7f7,0xfff7f7f7,
442 0xfff8f8f8,0xfff7f7f7,0xfff4f4f4,0xff000000,0x8c000500,0x6b000500,0x7000000,0x10000000,0x1b000000,0x2a000000,0x37000000,0x45000000,0x53000000,0x63000000, 765 0xfff7f7f7,0xfff5f5f5,0xfff2f2f2,0xff000000,0x8c000200,0x6b000200,0x7000000,0x10000000,0x1b000000,0x2a000000,0x37000000,0x45000000,0x53000000,0x63000000,
443 0x76000000,0xff000000,0xffc9c9c9,0xffc9c9c9,0xffcbcbcb,0xffd1d1d1,0xffd5d5d5,0xffdcdcdc,0xffe6e6e6,0xffececec,0xfff2f2f2,0xfff5f5f5,0xfff6f6f6,0xfff6f6f6, 766 0x76000000,0xff000000,0xffbfbfbf,0xffbfbfbf,0xffc2c2c2,0xffc8c8c8,0xffcdcdcd,0xffd5d5d5,0xffe1e1e1,0xffe8e8e8,0xffefefef,0xfff3f3f3,0xfff4f4f4,0xfff4f4f4,
444 0xfff6f6f6,0xfff6f6f6,0xfff6f6f6,0xfff6f6f6,0xfff6f6f6,0xfff6f6f6,0xfff6f6f6,0xff000000,0x87000500,0x68000500,0x4000000,0x7000000,0xd000000,0x14000000, 767 0xfff4f4f4,0xfff4f4f4,0xfff4f4f4,0xfff4f4f4,0xfff4f4f4,0xfff4f4f4,0xfff4f4f4,0xff000000,0x87000200,0x68000200,0x4000000,0x7000000,0xd000000,0x14000000,
445 0x1c000000,0x28000000,0x35000000,0x47000000,0x5c000600,0xff000000,0xffe5e5e5,0xffe5e5e5,0xffe7e7e7,0xffe8e8e8,0xffe8e8e8,0xffececec,0xfff1f1f1,0xfff3f3f3, 768 0x1c000000,0x28000000,0x35000000,0x47000000,0x5c000300,0xff000000,0xffe0e0e0,0xffe0e0e0,0xffe2e2e2,0xffe4e4e4,0xffe4e4e4,0xffe8e8e8,0xffeeeeee,0xfff1f1f1,
446 0xfff5f5f5,0xfff8f8f8,0xfff8f8f8,0xfff8f8f8,0xfff8f8f8,0xfff8f8f8,0xfff8f8f8,0xfff8f8f8,0xfff8f8f8,0xfff8f8f8,0xfff8f8f8,0xff000000,0x7f000500,0x61000500, 769 0xfff3f3f3,0xfff6f6f6,0xfff6f6f6,0xfff6f6f6,0xfff6f6f6,0xfff6f6f6,0xfff6f6f6,0xfff6f6f6,0xfff6f6f6,0xfff6f6f6,0xfff6f6f6,0xff000000,0x7f000200,0x61000200,
447 0x1000000,0x2000000,0x4000000,0x8000000,0xe000000,0x16000000,0x21000000,0x31000000,0x47000000,0xff000000,0xfff7f7f7,0xfff7f7f7,0xfff7f7f7,0xfff8f8f8, 770 0x1000000,0x2000000,0x4000000,0x8000000,0xe000000,0x16000000,0x21000000,0x31000000,0x47000000,0xff000000,0xfff5f5f5,0xfff5f5f5,0xfff5f5f5,0xfff6f6f6,
448 0xfff8f8f8,0xfffafafa,0xfffcfcfc,0xfffdfdfd,0xfffefefe,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff, 771 0xfff7f7f7,0xfff9f9f9,0xfffbfbfb,0xfffdfdfd,0xfffefefe,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,
449 0xffffffff,0xff000000,0x73000500,0x58000500,0xffffff,0xffffff,0xffffff,0x2000500,0x5000500,0xb000500,0x15000500,0x24000500,0x36000500,0xff000000, 772 0xffffffff,0xff000000,0x73000200,0x58000200,0xffffff,0xffffff,0xffffff,0x2000200,0x5000200,0xb000200,0x15000200,0x24000200,0x36000200,0xff000000,
450 0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000, 773 0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,
451 0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0x63000500,0x4c000500,0xffffff,0xffffff,0xffffff,0x1000500,0x4000500,0x9000500, 774 0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0x63000200,0x4c000200,0xffffff,0xffffff,0xffffff,0x1000200,0x4000200,0x9000200,
452 0x11000500,0x1d000500,0x2c000500,0x3e000500,0x51000500,0x63000500,0x73000500,0x7f000500,0x87000500,0x8c000500,0x8e000500,0x90000500,0x90000500,0x90000500, 775 0x11000200,0x1d000200,0x2c000200,0x3e000200,0x51000200,0x63000200,0x73000200,0x7f000200,0x87000200,0x8c000200,0x8e000200,0x90000200,0x90000200,0x90000200,
453 0x90000500,0x90000500,0x90000500,0x90000500,0x8e000500,0x8c000500,0x87000500,0x7f000500,0x73000500,0x63000500,0x51000500,0x3e000500,0xffffff,0xffffff, 776 0x90000200,0x90000200,0x90000200,0x90000200,0x8e000200,0x8c000200,0x87000200,0x7f000200,0x73000200,0x63000200,0x51000200,0x3e000200,0xffffff,0xffffff,
454 0xffffff,0x1000500,0x3000500,0x7000500,0xd000500,0x16000500,0x22000500,0x30000500,0x3e000500,0x4c000500,0x58000500,0x61000500,0x68000500,0x6b000500, 777 0xffffff,0x1000200,0x3000200,0x7000200,0xd000200,0x16000200,0x22000200,0x30000200,0x3e000200,0x4c000200,0x58000200,0x61000200,0x68000200,0x6b000200,
455 0x6d000500,0x6e000500,0x6f000500,0x6f000500,0x6f000500,0x6f000500,0x6f000500,0x6e000500,0x6d000500,0x6b000500,0x68000500,0x61000500,0x58000500,0x4c000500, 778 0x6d000200,0x6e000200,0x6f000200,0x6f000200,0x6f000200,0x6f000200,0x6f000200,0x6e000200,0x6d000200,0x6b000200,0x68000200,0x61000200,0x58000200,0x4c000200,
456 0x3e000500,0x30000500 779 0x3e000200,0x30000200
457}; 780};
458 781
459static const QRgb DocumentTypeWord_data[] = { 782static const QRgb DocumentTypeWord_data[] = {
460 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffb9c5db,0xffb9c5db,0xffb9c5db,0xffb9c5db,0xffb9c5db,0xffb9c5db,0xffb9c5db, 783 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffbac6db,0xffbac6db,0xffbac6db,0xffbac6db,0xffbac6db,0xffbac6db,0xffbac6db,
461 0xffb9c5db,0xffb9c5db,0xffb9c5db,0xffb9c5db,0xffb9c5db,0xffb9c5db,0xffb9c5db,0xffb9c5db,0xde929fb6,0x1d17191a,0xc0b0a,0x111111,0x111111,0x111111, 784 0xffbac6db,0xffbac6db,0xffbac6db,0xffbac6db,0xffbac6db,0xffbac6db,0xffbac6db,0xffbac6db,0xde93a0b7,0x1d181a1b,0xc0b0a,0x111111,0x111111,0x111111,
462 0x111111,0x111111,0x111111,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffb9c5db,0xfff1f6ff,0xffffffff, 785 0x111111,0x111111,0x111111,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffbac6db,0xfff1f6ff,0xffffffff,
463 0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffeffff,0xfff9fdff,0xfff4f7fe,0xffebf0f9,0xffe3e9f4,0xffdae1ef,0xffced7e8,0xffb7c5df,0xdaa1acbf, 786 0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffeffff,0xfff9fdff,0xfff4f7fe,0xffebf0f9,0xffe3e9f4,0xffdae1ef,0xffced7e8,0xffb8c6df,0xdaa2adc0,
464 0x1d141518,0xa0a09,0x121212,0x111111,0x111111,0x111111,0x111111,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, 787 0x1d151619,0xa0a09,0x121212,0x111111,0x111111,0x111111,0x111111,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,
465 0xffffff,0xffb9c5db,0xfff2f7ff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffeffff,0xfff9fdff,0xfff5f9ff,0xffeef3fc,0xffe8edf7,0xffe0e7f3, 788 0xffffff,0xffbac6db,0xfff2f7ff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffeffff,0xfff9fdff,0xfff5f9ff,0xffeef3fc,0xffe8edf7,0xffe0e7f3,
466 0xffd7dfed,0xffcbd5e6,0xffb4c1d9,0xffe1eaf9,0xe19ba7bb,0x2418191b,0xb0a09,0x111111,0x111111,0x111111,0x111111,0xffffff,0xffffff,0xffffff, 789 0xffd7dfed,0xffcbd5e6,0xffb5c2d9,0xffe1eaf9,0xe19ca8bc,0x24191a1c,0xb0a09,0x111111,0x111111,0x111111,0x111111,0xffffff,0xffffff,0xffffff,
467 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffb9c5db,0xfff2f7ff,0xffffffff,0xffffffff,0xffc4c4c4,0xffc4c4c4,0xffc4c4c4,0xffc3c4c4,0xffbfc3c4, 790 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffbac6db,0xfff2f7ff,0xffffffff,0xffffffff,0xffc5c5c5,0xffc5c5c5,0xffc5c5c5,0xffc4c5c5,0xffc0c4c5,
468 0xffbabec4,0xfff1f5fe,0xffebf0f9,0xffe3eaf4,0xffdce3f0,0xffcfd8e8,0xffb7c3db,0xffe6ecf7,0xffd2ddef,0xdd9ba7bd,0x2017181b,0xa0908,0x111212,0x111111, 791 0xffbbbfc5,0xfff1f5fe,0xffebf0f9,0xffe3eaf4,0xffdce3f0,0xffcfd8e8,0xffb8c4db,0xffe6ecf7,0xffd2ddef,0xdd9ca8be,0x2018191c,0xa0908,0x111212,0x111111,
469 0x111111,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffb9c5db,0xfff2f7ff,0xffffffff,0xffffffff,0xffffffff, 792 0x111111,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffbac6db,0xfff2f7ff,0xffffffff,0xffffffff,0xffffffff,
470 0xffffffff,0xffffffff,0xffffffff,0xfffcffff,0xfff8fbff,0xfff4f8fe,0xffeef2fb,0xffe7edf7,0xffdfe5f2,0xffd2dbea,0xffb9c5dc,0xfff5f8ff,0xffdee4f1,0xffd1dbef, 793 0xffffffff,0xffffffff,0xffffffff,0xfffcffff,0xfff8fbff,0xfff4f8fe,0xffeef2fb,0xffe7edf7,0xffdfe5f2,0xffd2dbea,0xffbac6dc,0xfff5f8ff,0xffdee4f1,0xffd1dbef,
471 0xe39ca8be,0x2318181b,0xb0a09,0x121212,0x111111,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffb9c5db, 794 0xe39da9bf,0x2319191c,0xb0a09,0x121212,0x111111,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffbac6db,
472 0xfff2f7ff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffdffff,0xfff9fcff,0xfff5f8ff,0xfff0f4fd,0xffe9eff8,0xffe1e7f3,0xffd5ddec, 795 0xfff2f7ff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffdffff,0xfff9fcff,0xfff5f8ff,0xfff0f4fd,0xffe9eff8,0xffe1e7f3,0xffd5ddec,
473 0xffbbc7db,0xffffffff,0xfff3f7fe,0xffe2e8f3,0xffd4dff1,0xdd9eaabf,0x231b1d1f,0xa0908,0x111111,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, 796 0xffbcc7db,0xffffffff,0xfff3f7fe,0xffe2e8f3,0xffd4dff1,0xdd9fabc0,0x231c1e20,0xa0908,0x111111,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,
474 0xffffff,0xffffff,0xffffff,0xffb9c5db,0xfff2f7ff,0xffffffff,0xffffffff,0xffc4c4c4,0xffc4c4c4,0xffc4c4c4,0xffc4c4c4,0xffc2c4c4,0xffbec2c4,0xffbcbec4, 797 0xffffff,0xffffff,0xffffff,0xffbac6db,0xfff2f7ff,0xffffffff,0xffffffff,0xffc5c5c5,0xffc5c5c5,0xffc5c5c5,0xffc5c5c5,0xffc3c5c5,0xffbfc3c5,0xffbdbfc5,
475 0xffb5b9c2,0xffadb2bd,0xffe3e9f4,0xffd9e1ef,0xffb3c0d7,0xffe9ebf1,0xffe2e8ef,0xffdae1ed,0xffced7e6,0xffc5d2e7,0xe496a3ba,0x29202124,0xf0f0e,0xffffff, 798 0xffb6bac3,0xffaeb3be,0xffe3e9f4,0xffd9e1ef,0xffb4c1d7,0xffe9ebf1,0xffe2e8ef,0xffdae1ed,0xffced7e6,0xffc6d2e7,0xe497a4bb,0x29212225,0xf0f0e,0xffffff,
476 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffb9c5db,0xfff2f7ff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff, 799 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffbac6db,0xfff2f7ff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,
477 0xffffffff,0xfffeffff,0xfffcffff,0xfff7fbff,0xfff2f6fd,0xffedf1fb,0xffe6ecf6,0xffdee5f2,0xffbdcadd,0xff8d9eba,0xff8d9eba,0xff8d9eba,0xff8d9eba,0xff8d9eba, 800 0xffffffff,0xfffeffff,0xfffcffff,0xfff7fbff,0xfff2f6fd,0xffedf1fb,0xffe6ecf6,0xffdee5f2,0xffbecadd,0xff8e9fbb,0xff8e9fbb,0xff8e9fbb,0xff8e9fbb,0xff8e9fbb,
478 0xff8d9eba,0xff8d9eba,0x90805,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffb9c5db,0xfff2f7ff,0xffffffff, 801 0xff8e9fbb,0xff8e9fbb,0x90805,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffbac6db,0xfff2f7ff,0xffffffff,
479 0xffffffff,0xffc4c4c4,0xffc4c4c4,0xffc4c4c4,0xffc4c4c4,0xffc3c4c4,0xffbfc3c4,0xffbdbfc4,0xffb6bbc4,0xffb1b5bf,0xffe7ecf7,0xffe1e7f4,0xffdbe3f0,0xffd7dfed, 802 0xffffffff,0xffc5c5c5,0xffc5c5c5,0xffc5c5c5,0xffc5c5c5,0xffc4c5c5,0xffc0c4c5,0xffbec0c5,0xffb7bcc5,0xffb2b6c0,0xffe7ecf7,0xffe1e7f4,0xffdbe3f0,0xffd7dfed,
480 0xffcdd6e7,0xffb6c3da,0xffabb9d3,0xffa9b8d2,0xffa3b3d1,0xff798aa6,0x150b0a08,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, 803 0xffcdd6e7,0xffb7c4da,0xffacbad3,0xffaab9d2,0xffa4b4d1,0xff7a8ba7,0x150b0a08,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,
481 0xffffff,0xffb9c5db,0xfff2f7ff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffcffff,0xfffafdff,0xfff5f8fe,0xffeef3fc, 804 0xffffff,0xffbac6db,0xfff2f7ff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffcffff,0xfffafdff,0xfff5f8fe,0xffeef3fc,
482 0xffe9eff8,0xffe2e9f4,0xffdbe3f0,0xffd5ddec,0xffc1cce0,0xffb3bfd8,0xffb0bed6,0xffaebbd5,0xffaabad6,0xff798aa6,0x210b0a07,0xffffff,0xffffff,0xffffff, 805 0xffe9eff8,0xffe2e9f4,0xffdbe3f0,0xffd5ddec,0xffc2cce0,0xffb4c0d8,0xffb1bfd6,0xffafbcd5,0xffabbbd6,0xff7a8ba7,0x210b0a07,0xffffff,0xffffff,0xffffff,
483 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffb9c5db,0xfff2f7ff,0xffffffff,0xffffffff,0xffc4c4c4,0xffc4c4c4,0xffc4c4c4,0xffc4c4c4,0xffc4c4c4, 806 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffbac6db,0xfff2f7ff,0xffffffff,0xffffffff,0xffc5c5c5,0xffc5c5c5,0xffc5c5c5,0xffc5c5c5,0xffc5c5c5,
484 0xffc2c4c4,0xffbdc2c4,0xfff5f8ff,0xfff0f5fd,0xffe9eff9,0xffe5ebf6,0xffdde4f1,0xffcbd5e5,0xffbcc9de,0xffbac7dc,0xffb7c4db,0xffb6c2da,0xffb2c0db,0xff798aa6, 807 0xffc3c5c5,0xffbec3c5,0xfff5f8ff,0xfff0f5fd,0xffe9eff9,0xffe5ebf6,0xffdde4f1,0xffcbd5e5,0xffbdc9de,0xffbbc7dc,0xffb8c5db,0xffb7c3da,0xffb3c1db,0xff7a8ba7,
485 0x230b0907,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffb9c5db,0xfff2f7ff,0xffffffff,0xffffffff,0xffffffff, 808 0x230b0907,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffbac6db,0xfff2f7ff,0xffffffff,0xffffffff,0xffffffff,
486 0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffdffff,0xfffafdff,0xfff7faff,0xfff3f7fe,0xffebf0fa,0xffdfe6f2,0xffd0d8e8,0xffc5d0e3,0xffc1cde0,0xffbecadf, 809 0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffdffff,0xfffafdff,0xfff7faff,0xfff3f7fe,0xffebf0fa,0xffdfe6f2,0xffd0d8e8,0xffc6d0e3,0xffc2cde0,0xffbfcadf,
487 0xffbcc8dd,0xffbbc8dc,0xffb8c5de,0xff798aa6,0x230a0907,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffb9c5db, 810 0xffbdc8dd,0xffbcc8dc,0xffb9c6de,0xff7a8ba7,0x230a0907,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffbac6db,
488 0xfff2f7ff,0xffffffff,0xffffffff,0xffc4c4c4,0xffc4c4c4,0xffc4c4c4,0xffc4c4c4,0xffc4c4c4,0xffc2c4c4,0xffbdc2c4,0xffb6bbc3,0xffadb3bd,0xffa3aab8,0xff949eb2, 811 0xfff2f7ff,0xffffffff,0xffffffff,0xffc5c5c5,0xffc5c5c5,0xffc5c5c5,0xffc5c5c5,0xffc5c5c5,0xffc3c5c5,0xffbec3c5,0xffb7bcc4,0xffaeb4be,0xffa4abb9,0xff959fb3,
489 0xff8f9cb0,0xff909eb2,0xff8c9cb1,0xff8c9bb0,0xff8f9fb3,0xffc0cde0,0xffbdcbe2,0xff798aa6,0x230a0907,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, 812 0xff909db1,0xff919fb3,0xff8d9db2,0xff8d9cb1,0xff90a0b4,0xffc1cde0,0xffbecbe2,0xff7a8ba7,0x230a0907,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,
490 0xffffff,0xffffff,0xffffff,0xffb9c5db,0xfff2f7ff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffdffff,0xfffafcff,0xfff6faff,0xfff2f6fe, 813 0xffffff,0xffffff,0xffffff,0xffbac6db,0xfff2f7ff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffdffff,0xfffafcff,0xfff6faff,0xfff2f6fe,
491 0xffe9eef8,0xffdfe5f2,0xffd5deec,0xffd1dae9,0xffd0d9e9,0xffcdd6e7,0xffcbd5e6,0xffc8d2e5,0xffc5d1e3,0xffc5d1e3,0xffc3d0e6,0xff798aa6,0x230a0906,0xffffff, 814 0xffe9eef8,0xffdfe5f2,0xffd5deec,0xffd1dae9,0xffd0d9e9,0xffcdd6e7,0xffcbd5e6,0xffc8d2e5,0xffc6d1e3,0xffc6d1e3,0xffc4d0e6,0xff7a8ba7,0x230a0906,0xffffff,
492 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffb9c5db,0xfff2f7ff,0xffffffff,0xffffffff,0xffc4c4c4,0xffc4c4c4,0xffc2c4c4, 815 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffbac6db,0xfff2f7ff,0xffffffff,0xffffffff,0xffc5c5c5,0xffc5c5c5,0xffc3c5c5,
493 0xffbfc3c4,0xffbdc2c4,0xffb9bdc4,0xffacb2bc,0xffa2aab7,0xff9ca7b5,0xff9aa5b7,0xff9aa4b7,0xff99a4b6,0xff98a4b6,0xff9aa8ba,0xff98a7b9,0xff97a5b8,0xffcad3e5, 816 0xffc0c4c5,0xffbec3c5,0xffbabec5,0xffadb3bd,0xffa3abb8,0xff9da8b6,0xff9ba6b8,0xff9ba5b8,0xff9aa5b7,0xff99a5b7,0xff9ba9bb,0xff99a8ba,0xff98a6b9,0xffcad3e5,
494 0xffc8d4e8,0xff798aa6,0x230a0806,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffb9c5db,0xfff2f7ff,0xffffffff, 817 0xffc8d4e8,0xff7a8ba7,0x230a0806,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffbac6db,0xfff2f7ff,0xffffffff,
495 0xffffffff,0xffffffff,0xfffeffff,0xfffdffff,0xfffcffff,0xfff3f7fd,0xffe6ecf6,0xffe1e7f3,0xffdee5f2,0xffdce3f0,0xffdbe3f0,0xffd8e0ee,0xffd7dfed,0xffd4dceb, 818 0xffffffff,0xffffffff,0xfffeffff,0xfffdffff,0xfffcffff,0xfff3f7fd,0xffe6ecf6,0xffe1e7f3,0xffdee5f2,0xffdce3f0,0xffdbe3f0,0xffd8e0ee,0xffd7dfed,0xffd4dceb,
496 0xffd3dbea,0xffd1dae9,0xffced7e8,0xffced7e7,0xffcbd6ea,0xff798aa6,0x230a0806,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, 819 0xffd3dbea,0xffd1dae9,0xffced7e8,0xffced7e7,0xffcbd6ea,0xff7a8ba7,0x230a0806,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,
497 0xffffff,0xffb9c5db,0xfff2f7ff,0xffffffff,0xffffffff,0xffc4c4c4,0xffc4c4c4,0xffc3c4c4,0xffb5b9c2,0xffabb0bd,0xffaab1bd,0xffa7b0bc,0xffa6b0bc,0xffa5afbc, 820 0xffffff,0xffbac6db,0xfff2f7ff,0xffffffff,0xffffffff,0xffc5c5c5,0xffc5c5c5,0xffc4c5c5,0xffb6bac3,0xffacb1be,0xffabb2be,0xffa8b1bd,0xffa7b1bd,0xffa6b0bd,
498 0xffa3acbe,0xffa1adbd,0xff9fabbd,0xff9faabe,0xff9cabbf,0xffa1afc0,0xffa0aec0,0xffd0dae9,0xffcfd9ec,0xff798aa6,0x23090806,0xffffff,0xffffff,0xffffff, 821 0xffa4adbf,0xffa2aebe,0xffa0acbe,0xffa0abbf,0xff9dacc0,0xffa2b0c1,0xffa1afc1,0xffd0dae9,0xffcfd9ec,0xff7a8ba7,0x23090806,0xffffff,0xffffff,0xffffff,
499 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffb9c5db,0xfff2f7ff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfff5f9fe,0xffecf1fa,0xffeaeff9, 822 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffbac6db,0xfff2f7ff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfff5f9fe,0xffecf1fa,0xffeaeff9,
500 0xffe7edf7,0xffe4eaf5,0xffe4eaf5,0xffe2e8f3,0xffdfe6f2,0xffdde4f1,0xffdae1ef,0xffdae1ee,0xffd8e0ee,0xffd5dded,0xffd4dceb,0xffd3dcea,0xffd1dbed,0xff798aa6, 823 0xffe7edf7,0xffe4eaf5,0xffe4eaf5,0xffe2e8f3,0xffdfe6f2,0xffdde4f1,0xffdae1ef,0xffdae1ee,0xffd8e0ee,0xffd5dded,0xffd4dceb,0xffd3dcea,0xffd1dbed,0xff7a8ba7,
501 0x23090806,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffb9c5db,0xfff2f7ff,0xffffffff,0xffffffff,0xffc4c4c4, 824 0x23090806,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffbac6db,0xfff2f7ff,0xffffffff,0xffffffff,0xffc5c5c5,
502 0xffbfc2c4,0xffb4b9c2,0xffb2b9c2,0xffb0b6c3,0xffadb4c2,0xffacb5c2,0xffabb3c3,0xffa9b4c1,0xffa8b3c2,0xffa6b2c1,0xffa5b2c4,0xffa4b0c3,0xffa3b2c4,0xffa2b2c5, 825 0xffc0c3c5,0xffb5bac3,0xffb3bac3,0xffb1b7c4,0xffaeb5c3,0xffadb6c3,0xffacb4c4,0xffaab5c2,0xffa9b4c3,0xffa7b3c2,0xffa6b3c5,0xffa5b1c4,0xffa4b3c5,0xffa3b3c6,
503 0xffa5b3c8,0xffd5ddec,0xffd2dcee,0xff798aa6,0x23090806,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffb9c5db, 826 0xffa6b4c8,0xffd5ddec,0xffd2dcee,0xff7a8ba7,0x23090806,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffbac6db,
504 0xfff2f7ff,0xffffffff,0xffffffff,0xffffffff,0xfff5f9fe,0xffeff3fc,0xffeef3fb,0xffecf1f9,0xffeaeff9,0xffe8edf7,0xffe6ecf7,0xffe4eaf5,0xffe1e9f4,0xffe0e6f2, 827 0xfff2f7ff,0xffffffff,0xffffffff,0xffffffff,0xfff5f9fe,0xffeff3fc,0xffeef3fb,0xffecf1f9,0xffeaeff9,0xffe8edf7,0xffe6ecf7,0xffe4eaf5,0xffe1e9f4,0xffe0e6f2,
505 0xffdee5f1,0xffdce3f1,0xffdae2ef,0xffd8dfed,0xffd6deed,0xffd6deec,0xffd4def0,0xff798aa6,0x23090806,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, 828 0xffdee5f1,0xffdce3f1,0xffdae2ef,0xffd8dfed,0xffd6deed,0xffd6deec,0xffd4def0,0xff7a8ba7,0x23090806,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,
506 0xffffff,0xffffff,0xffffff,0xffb9c5db,0xfff2f7ff,0xffffffff,0xffffffff,0xffc3c4c5,0xffb6bcc4,0xffb4bbc5,0xffb4bcc7,0xffb2b9c5,0xffb1b8c5,0xffb0b8c5, 829 0xffffff,0xffffff,0xffffff,0xffbac6db,0xfff2f7ff,0xffffffff,0xffffffff,0xffc4c5c6,0xffb7bdc5,0xffb5bcc6,0xffb5bdc7,0xffb3bac6,0xffb2b9c6,0xffb1b9c6,
507 0xffaeb8c5,0xffafb8c5,0xffacb6c5,0xffaab7c8,0xffaab6c8,0xffa8b5c8,0xffa6b4c9,0xffa6b6cb,0xffa4b4ca,0xffd5dded,0xffd5dff0,0xff798aa6,0x23090806,0xffffff, 830 0xffafb9c6,0xffb0b9c6,0xffadb7c6,0xffabb8c8,0xffabb7c8,0xffa9b6c8,0xffa7b5c9,0xffa7b7cb,0xffa5b5ca,0xffd5dded,0xffd5dff0,0xff7a8ba7,0x23090806,0xffffff,
508 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffb9c5db,0xfff2f7ff,0xffffffff,0xffffffff,0xfffafdff,0xfff2f6fd,0xffeff4fc, 831 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffbac6db,0xfff2f7ff,0xffffffff,0xffffffff,0xfffafdff,0xfff2f6fd,0xffeff4fc,
509 0xffeef3fb,0xffecf1fa,0xffeaeff9,0xffe9eef8,0xffe8edf7,0xffe6ecf6,0xffe3e9f4,0xffe1e8f3,0xffdfe6f2,0xffdde4f0,0xffdce3f0,0xffd9e1ee,0xffd8e0ee,0xffd7dfee, 832 0xffeef3fb,0xffecf1fa,0xffeaeff9,0xffe9eef8,0xffe8edf7,0xffe6ecf6,0xffe3e9f4,0xffe1e8f3,0xffdfe6f2,0xffdde4f0,0xffdce3f0,0xffd9e1ee,0xffd8e0ee,0xffd7dfee,
510 0xffd5dff0,0xff798aa6,0x23090806,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffb9c5db,0xfff2f7ff,0xffffffff, 833 0xffd5dff0,0xff7a8ba7,0x23090806,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffbac6db,0xfff2f7ff,0xffffffff,
511 0xffffffff,0xffbcbfc8,0xffb6bcc7,0xffb4bcc8,0xffb3bcc7,0xffb4bbc8,0xffb2b9c8,0xffb1b9c8,0xffb1bcc8,0xffafbbca,0xffaebacb,0xffadb9cb,0xffaab8cb,0xffa9b8cc, 834 0xffffffff,0xffbdc0c8,0xffb7bdc7,0xffb5bdc8,0xffb4bdc7,0xffb5bcc8,0xffb3bac8,0xffb2bac8,0xffb2bdc8,0xffb0bcca,0xffafbbcb,0xffaebacb,0xffabb9cb,0xffaab9cc,
512 0xffa8b9cd,0xffaab8cd,0xffa7b8cd,0xffd8e0ee,0xffd6dff1,0xff798aa6,0x23090806,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, 835 0xffa9bacd,0xffabb9cd,0xffa8b9cd,0xffd8e0ee,0xffd6dff1,0xff7a8ba7,0x23090806,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,
513 0xffffff,0xffb9c5db,0xfff2f7ff,0xffffffff,0xffffffff,0xfff4f8fe,0xfff0f4fc,0xffeff4fc,0xffeef3fb,0xffecf1fa,0xffebf0f9,0xffe9eef8,0xffe7edf7,0xffe6ecf6, 836 0xffffff,0xffbac6db,0xfff2f7ff,0xffffffff,0xffffffff,0xfff4f8fe,0xfff0f4fc,0xffeff4fc,0xffeef3fb,0xffecf1fa,0xffebf0f9,0xffe9eef8,0xffe7edf7,0xffe6ecf6,
514 0xffe4eaf5,0xffe2e8f3,0xffdfe6f2,0xffdde4f0,0xffdce3f0,0xffd9e0ef,0xffd7dfed,0xffd8e0ee,0xffd6dff1,0xff798aa6,0x23090806,0xffffff,0xffffff,0xffffff, 837 0xffe4eaf5,0xffe2e8f3,0xffdfe6f2,0xffdde4f0,0xffdce3f0,0xffd9e0ef,0xffd7dfed,0xffd8e0ee,0xffd6dff1,0xff7a8ba7,0x23090806,0xffffff,0xffffff,0xffffff,
515 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffb9c5db,0xfff2f7ff,0xffffffff,0xffffffff,0xffbbbfca,0xffb7bcc8,0xffb6bdca,0xffb6bdc9,0xffb2bbc9, 838 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffbac6db,0xfff2f7ff,0xffffffff,0xffffffff,0xffbcc0ca,0xffb8bdc8,0xffb7beca,0xffb7bec9,0xffb3bcc9,
516 0xffb3beca,0xffb2bdca,0xffb0bccc,0xffb0bccd,0xffafbccd,0xffacbccd,0xffaebcce,0xffacbace,0xffabb9cf,0xffa9bbd0,0xffa8bbd1,0xffd8e0ee,0xffd5dff0,0xff798aa6, 839 0xffb4bfca,0xffb3beca,0xffb1bdcc,0xffb1bdcd,0xffb0bdcd,0xffadbdcd,0xffafbdce,0xffadbbce,0xffacbacf,0xffaabcd0,0xffa9bcd1,0xffd8e0ee,0xffd5dff0,0xff7a8ba7,
517 0x23090806,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffb9c5db,0xfff2f7ff,0xffffffff,0xfffcfeff,0xfff2f6fd, 840 0x23090806,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffbac6db,0xfff2f7ff,0xffffffff,0xfffcfeff,0xfff2f6fd,
518 0xfff0f4fc,0xffeef3fb,0xffedf2fb,0xffebf0f9,0xffeaeff9,0xffe8edf7,0xffe7edf7,0xffe6ecf6,0xffe3e9f4,0xffe1e8f3,0xffdfe6f2,0xffdde4f0,0xffdce3f0,0xffd9e1ee, 841 0xfff0f4fc,0xffeef3fb,0xffedf2fb,0xffebf0f9,0xffeaeff9,0xffe8edf7,0xffe7edf7,0xffe6ecf6,0xffe3e9f4,0xffe1e8f3,0xffdfe6f2,0xffdde4f0,0xffdce3f0,0xffd9e1ee,
519 0xffd8e0ee,0xffd7dfed,0xffd6dff1,0xff798aa6,0x23090806,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffb9c5db, 842 0xffd8e0ee,0xffd7dfed,0xffd6dff1,0xff7a8ba7,0x23090806,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffbac6db,
520 0xfff2f7ff,0xffffffff,0xfff8fafe,0xffeff4fc,0xffeff4fc,0xffeef3fb,0xffedf2fb,0xffeaeff9,0xffeaeff9,0xffe8eef8,0xffe7edf7,0xffe6ecf6,0xffe3e9f4,0xffe0e7f3, 843 0xfff2f7ff,0xffffffff,0xfff8fafe,0xffeff4fc,0xffeff4fc,0xffeef3fb,0xffedf2fb,0xffeaeff9,0xffeaeff9,0xffe8eef8,0xffe7edf7,0xffe6ecf6,0xffe3e9f4,0xffe0e7f3,
521 0xffdfe6f2,0xffdce3f0,0xffdae2ef,0xffd8e0ee,0xffd8e0ee,0xffd7deed,0xffd6e0f2,0xff798aa6,0x23090806,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, 844 0xffdfe6f2,0xffdce3f0,0xffdae2ef,0xffd8e0ee,0xffd8e0ee,0xffd7deed,0xffd6e0f2,0xff7a8ba7,0x23090806,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,
522 0xffffff,0xffffff,0xffffff,0xffb9c5db,0xfff2f7ff,0xffffffff,0xfff8fafe,0xffeff4fc,0xffeff4fc,0xffeef3fb,0xffedf2fb,0xffeaeff9,0xffeaeff9,0xffe8eef8, 845 0xffffff,0xffffff,0xffffff,0xffbac6db,0xfff2f7ff,0xffffffff,0xfff8fafe,0xffeff4fc,0xffeff4fc,0xffeef3fb,0xffedf2fb,0xffeaeff9,0xffeaeff9,0xffe8eef8,
523 0xffb3becf,0xffb3c0d0,0xffe3e9f4,0xffe0e7f3,0xffdfe6f2,0xffdce3f0,0xffdae2ef,0xffd8e0ee,0xffd8e0ee,0xffd7deed,0xffd6e0f2,0xff798aa6,0x23090806,0xffffff, 846 0xffb4bfcf,0xffb4c1d0,0xffe3e9f4,0xffe0e7f3,0xffdfe6f2,0xffdce3f0,0xffdae2ef,0xffd8e0ee,0xffd8e0ee,0xffd7deed,0xffd6e0f2,0xff7a8ba7,0x23090806,0xffffff,
524 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffb9c5db,0xffeaf3ff,0xffffffff,0xfff8fafe,0xffeff4fc,0xffeff4fc,0xffeef3fb, 847 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffbac6db,0xffeaf3ff,0xffffffff,0xfff8fafe,0xffeff4fc,0xffeff4fc,0xffeef3fb,
525 0xffedf2fb,0xffeaeff9,0xffeaeff9,0xffe8eef8,0xffe7edf7,0xffe6ecf6,0xffe3e9f4,0xffe0e7f3,0xffdfe6f2,0xffdce3f0,0xffdae2ef,0xffd8e0ee,0xffd8e0ee,0xffd7deed, 848 0xffedf2fb,0xffeaeff9,0xffeaeff9,0xffe8eef8,0xffe7edf7,0xffe6ecf6,0xffe3e9f4,0xffe0e7f3,0xffdfe6f2,0xffdce3f0,0xffdae2ef,0xffd8e0ee,0xffd8e0ee,0xffd7deed,
526 0xffd6e0f2,0xff798aa6,0x23080705,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffb9c5db,0xff798aa6,0xff798aa6, 849 0xffd6e0f2,0xff7a8ba7,0x23080705,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffbac6db,0xff7a8ba7,0xff7a8ba7,
527 0xff798aa6,0xff798aa6,0xff798aa6,0xff798aa6,0xff798aa6,0xff798aa6,0xff798aa6,0xff798aa6,0xff798aa6,0xff798aa6,0xff798aa6,0xff798aa6,0xff798aa6,0xff798aa6, 850 0xff7a8ba7,0xff7a8ba7,0xff7a8ba7,0xff7a8ba7,0xff7a8ba7,0xff7a8ba7,0xff7a8ba7,0xff7a8ba7,0xff7a8ba7,0xff7a8ba7,0xff7a8ba7,0xff7a8ba7,0xff7a8ba7,0xff7a8ba7,
528 0xff798aa6,0xff798aa6,0xff798aa6,0xff798aa6,0xff798aa6,0xff798aa6,0x280f0f0e,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, 851 0xff7a8ba7,0xff7a8ba7,0xff7a8ba7,0xff7a8ba7,0xff7a8ba7,0xff7a8ba7,0x280f0f0e,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,
529 0xffffff,0x60f0f0e,0x1b090808,0x340c0b0a,0x3b0c0c0a,0x3a0c0c0a,0x3a0c0c0a,0x3a0c0c0a,0x3a0c0c0a,0x3a0c0c0a,0x3a0c0c0a,0x3a0c0c0a,0x3a0c0c0a,0x3a0c0c0a, 852 0xffffff,0x60f0f0e,0x1b090808,0x340c0b0a,0x3b0c0c0a,0x3a0c0c0a,0x3a0c0c0a,0x3a0c0c0a,0x3a0c0c0a,0x3a0c0c0a,0x3a0c0c0a,0x3a0c0c0a,0x3a0c0c0a,0x3a0c0c0a,
530 0x3a0c0c0a,0x3a0c0c0a,0x3a0c0c0a,0x3a0c0c0a,0x3a0c0c0a,0x3a0c0c0a,0x3a0c0c0a,0x3a0c0c0a,0x3a0c0c0a,0x310e0e0d,0x1b111112,0xffffff,0xffffff,0xffffff, 853 0x3a0c0c0a,0x3a0c0c0a,0x3a0c0c0a,0x3a0c0c0a,0x3a0c0c0a,0x3a0c0c0a,0x3a0c0c0a,0x3a0c0c0a,0x3a0c0c0a,0x310e0e0d,0x1b111112,0xffffff,0xffffff,0xffffff,
531 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0x2111111,0xa111111,0x10111111,0x11111111,0x11111111,0x11111111,0x11111111,0x11111111,0x11111111, 854 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0x2111111,0xa111111,0x10111111,0x11111111,0x11111111,0x11111111,0x11111111,0x11111111,0x11111111,
532 0x11111111,0x11111111,0x11111111,0x11111111,0x11111111,0x11111111,0x11111111,0x11111111,0x11111111,0x11111111,0x11111111,0x11111111,0x11111111,0xe111111, 855 0x11111111,0x11111111,0x11111111,0x11111111,0x11111111,0x11111111,0x11111111,0x11111111,0x11111111,0x11111111,0x11111111,0x11111111,0x11111111,0xe111111,
533 0x7111111,0xffffff 856 0x7111111,0xffffff
534}; 857};
535 858
536static const QRgb Games_data[] = {
537 0x0,0x0,0x0,0x186b7bdd,0xd77387d0,0x25101320,0x0,0x65060a2,0x3e4e5d9f,0x4d495794,0x3273052,0x0,0x0,0x0,
538 0x0,0x0,0x0,0x2e6778cf,0xdc7386c8,0x4c434f89,0x635a6ab2,0xd37989c5,0xfdaabbe0,0xfdacbbdc,0x93505c93,0x51d2348,0x0,0x0,
539 0x0,0x0,0x0,0x286472d0,0xfa7184d4,0xff7a8cce,0xffaec4ee,0xff96a5ff,0xffc0d4fd,0xffb7dfd9,0xffbac6de,0x80424c80,0x1050509,0x0,
540 0x0,0x6674d6,0x306472ce,0xc47485d6,0xffa6bdef,0xffcbe5ff,0xffcdd7ed,0xffb2b6f0,0xffb5dade,0xff79c382,0xfff0fbfd,0xfba3acc9,0x452e3668,0x0,
541 0x56876dd,0x7c6b7adc,0xf58399e1,0xff9ab1d2,0xffb9d3f2,0xffcbe5ff,0xffed9172,0xffe0c3b3,0xfff1cf6b,0xffebf6f9,0xfff4fcff,0xfff7fbfd,0xd1656d97,0x90f1228,
542 0x9a6e80e5,0xff8ca7df,0xff9a9ea4,0xff979797,0xff75797f,0xffcde5fd,0xffd6ebff,0xffddeefa,0xffe0eceb,0xffd9edff,0xfff5fdff,0xfffcffff,0xffc5c9db,0x5c2d3667,
543 0xbf738deb,0xff899fbc,0xff959595,0xff717171,0xff7d8083,0xffd0e7fe,0xffd2e8ff,0xffbcdbff,0xffa0c0f3,0xf66f84ba,0xfeacbadb,0xfff6fbff,0xffedf6ff,0xc0515e8f,
544 0xa86c7fe0,0xff9fc1ed,0xff959ea9,0xff98a1ab,0xffbdd5ef,0xffabd0ff,0xff96bef9,0xfa738fcc,0xb0404d80,0x3d191e3a,0x81384378,0xfa7f93c3,0xff9db5e1,0xb93e497a,
545 0x7c6574d3,0xff9ec4fe,0xffbcdbff,0xffc4dfff,0xff92baf8,0xf96c88cf,0xbb475690,0x50242b4c,0xb000000,0x0,0x1000000,0x45272e5c,0x76272e5c,0x280f1225,
546 0x4a616fc8,0xff8eaff4,0xffbddcff,0xffc6e0ff,0xf77992d4,0x5122294a,0xd020205,0x1000000,0x0,0x0,0x0,0x0,0x1000000,0x0,
547 0x125767b0,0xfb7997e6,0xffbfdcff,0xffc5e0ff,0xf06e89cb,0x1705060c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
548 0x14d5d9b,0xc56980d3,0xffb4d5ff,0xffb3d5ff,0xe05f77bc,0xf000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
549 0x0,0x675969b7,0xff7ca1ed,0xff7ba4ee,0xba4c5c99,0x7000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
550 0x0,0x6303c6d,0x72495694,0x813e4a7f,0x2715192e,0x1000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0
551};
552
553static const QRgb Go_black_highlight_data[] = {
554 0x28999b9c,0x2d949697,0x32959798,0x43868788,0x776f6f70,0x9a626263,0x93606060,0x60646565,0x31818384,0x22969899,0x1e939596,0x1b919394,0x2e9a9b9c,0x369c9d9f,
555 0x6b7c7d7e,0xbc737474,0xe2696a6a,0xed656565,0xed616162,0xe35a5a5a,0xb24b4c4c,0x51555555,0x25818384,0x1c919394,0x34949697,0x6a848586,0xce7d7e7e,0xf97b7c7d,
556 0xff767777,0xff767777,0xff727373,0xff5e5e5f,0xfa494a4a,0xcd393939,0x5b414243,0x237d7e7f,0x409c9e9f,0xb97f8080,0xf9838484,0xffaaabac,0xffa6a7a8,0xff9b9c9c,
557 0xff717272,0xff5e5e5e,0xff505151,0xfc3f3f3f,0xb62e2f2f,0x46464748,0x68848585,0xde828283,0xffa0a1a2,0xffe5e6e6,0xffffffff,0xffa6a8a8,0xff7b7c7c,0xff666666,
558 0xff545555,0xff434343,0xeb2d2d2e,0x7a2d2d2e,0x82777878,0xea757676,0xff919292,0xffbdbebe,0xffe6e6e7,0xffa2a3a4,0xff7f8080,0xff646565,0xff515152,0xff404040,
559 0xfa2d2d2d,0xa3232324,0x766f7071,0xea6e6f6f,0xff787a7a,0xff7e8080,0xff949595,0xff757676,0xff646464,0xff575858,0xff4d4d4e,0xff404040,0xfc2d2d2d,0xb2202020,
560 0x4a7c7e7e,0xda59595a,0xfe565757,0xff6c6d6d,0xff787878,0xff626262,0xff525354,0xff484849,0xff3c3c3c,0xff373838,0xfa242424,0xa91e1e1e,0x2e8d8f90,0x9b464747,
561 0xf7484949,0xff5a5a5b,0xff636364,0xff515152,0xff454545,0xff3c3c3c,0xff373838,0xff2a2a2a,0xee191919,0x871e1f1f,0x26909293,0x4b585859,0xc0393939,0xfa414141,
562 0xff4e4e4f,0xff434343,0xff3b3c3c,0xff333334,0xff2a2b2b,0xf81b1b1c,0xc0171717,0x572b2b2c,0x218e9091,0x28818384,0x5d444445,0xb52d2d2d,0xeb2e2f2f,0xfa2d2d2d,
563 0xfd272728,0xfb1f2020,0xf1181818,0xc4171717,0x6f232424,0x2e4b4c4d,0x1e8e9091,0x1f929495,0x28787a7b,0x4b434445,0x842c2c2c,0xaf232323,0xc01c1d1d,0xb71a1a1b,
564 0x931c1c1c,0x5c282929,0x2f4a4b4c,0x1b7c7e7e
565};
566
567static const QRgb Go_black_data[] = {
568 0x0,0x0,0x0,0x184a4a4a,0x664a4a4a,0x89454545,0x763c3c3c,0x302d2d2d,0x2000000,0x0,0x0,0x0,0x0,0x0,
569 0x6d505050,0xf5535353,0xff525252,0xff4d4d4d,0xff454545,0xfd393939,0xb3272727,0x18080808,0x1000000,0x0,0x0,0x64505050,0xfe575757,0xff595959,
570 0xff585858,0xff4d4d4d,0xff464646,0xff3d3d3d,0xff313131,0xce1a1a1a,0x1d000000,0x1000000,0xb474747,0xec525252,0xff575757,0xff989898,0xffa2a2a2,0xff4f4f4f,
571 0xff434343,0xff3b3b3b,0xff313131,0xff212121,0x98090909,0x12000000,0x48474747,0xff515151,0xff545454,0xff888888,0xff787878,0xff474747,0xff3f3f3f,0xff373737,
572 0xff2d2d2d,0xff212121,0xe80f0f0f,0x3f000000,0x64424242,0xff4b4b4b,0xff4c4c4c,0xff4c4c4c,0xff474747,0xff404040,0xff3a3a3a,0xff323232,0xff282828,0xff1e1e1e,
573 0xf8111111,0x6e000000,0x4b363636,0xff434343,0xff444444,0xff424242,0xff3f3f3f,0xff3a3a3a,0xff333333,0xff2b2b2b,0xff222222,0xff1b1b1b,0xfa0e0e0e,0x82000000,
574 0x101b1b1b,0xf1343434,0xff3b3b3b,0xff3a3a3a,0xff363636,0xff313131,0xff2b2b2b,0xff232323,0xff1c1c1c,0xff1a1a1a,0xf3050505,0x75000000,0x2000000,0x861d1d1d,
575 0xff2d2d2d,0xff2f2f2f,0xff2c2c2c,0xff282828,0xff212121,0xff1c1c1c,0xff1b1b1b,0xfe0f0f0f,0xd8000000,0x4a000000,0x0,0x15000000,0xb4101010,0xfe1e1e1e,
576 0xff1f1f1f,0xff1d1d1d,0xff1b1b1b,0xff1a1a1a,0xfe0e0e0e,0xed000000,0x8f000000,0x18000000,0x0,0x2000000,0x28000000,0x97020202,0xe90a0a0a,0xf90d0d0d,
577 0xfb0a0a0a,0xf6030303,0xdf000000,0x95000000,0x2c000000,0x3000000,0x0,0x0,0x2000000,0x1b000000,0x55000000,0x89000000,0x9c000000,0x8b000000,
578 0x58000000,0x1d000000,0x3000000,0x0
579};
580
581static const QRgb Go_white_data[] = {
582 0x0,0x0,0x0,0x0,0x10d0d0d,0x730302c,0xb282825,0x7000000,0x2000000,0x0,0x0,0x0,0x0,0x0,
583 0x1000000,0x50bdbdac,0xc7cecebb,0xf5d3d3c0,0xf8c3c3b1,0xde99998b,0x875b5b52,0x17030303,0x2000000,0x0,0x0,0x0,0x86cdcdba,0xfef7f7e2,
584 0xfffdfde8,0xfff8f8e1,0xffe7e7d2,0xffcdcdba,0xffa6a697,0xd355554d,0x2a020202,0x2000000,0x0,0x4dc5c5b2,0xfef7f7e2,0xfffffff0,0xfffffff1,0xfffdfde9,
585 0xffeeeed8,0xffd7d7c3,0xffb7b7a6,0xff87877a,0xbf2b2b27,0x1a000000,0x1000000,0xc4d1d1be,0xfffdfde8,0xfffffff1,0xfffffffd,0xfffffff7,0xffececd6,0xffd5d5c1,
586 0xffb7b7a6,0xff8e8e81,0xfa474740,0x51000000,0x53e3e38,0xf4d4d4c0,0xfff8f8e1,0xfffdfde9,0xfffffff7,0xfffafaec,0xffe2e2cd,0xffcbcbb8,0xffafaf9e,0xff88887b,
587 0xff4c4c45,0x8b070706,0x8383833,0xf7c3c3b2,0xffe7e7d2,0xffeeeed8,0xffececd6,0xffe2e2cd,0xffd1d1be,0xffbcbcaa,0xff9f9f90,0xff79796d,0xff40403a,0x9d070706,
588 0x3000000,0xd89d9d8f,0xffcdcdba,0xffd7d7c3,0xffd5d5c1,0xffcbcbb8,0xffbcbcaa,0xffa6a697,0xff89897c,0xff616158,0xfe2c2c28,0x87010101,0x1000000,0x7a65655b,
589 0xffa6a697,0xffb7b7a6,0xffb7b7a6,0xffafaf9e,0xff9f9f90,0xff89897c,0xff6a6a60,0xff3f3f39,0xf2161613,0x5b000000,0x0,0xe060605,0xca585851,0xff87877a,
590 0xff8e8e81,0xff88887b,0xff79796d,0xff616158,0xff3f3f39,0xfc1e1e1b,0xa7010101,0x23000000,0x0,0x1000000,0x1f030303,0xb62d2d29,0xfa474740,0xff4c4c45,
591 0xff40403a,0xfe2c2c28,0xf2161613,0xa7010101,0x39000000,0x5000000,0x0,0x0,0x1000000,0x14000000,0x44010100,0x7e080807,0x8e080807,0x7a010101,
592 0x55000000,0x22000000,0x5000000,0x0
593};
594
595static const QRgb HelpButton_data[] = {
596 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,
597 0xffffff,0xffffff,0xffffff,0x3edcdcdc,0x93dbdbdb,0xd5dedede,0xfadcdcdc,0xd8d1d1d1,0x9ec8c8c8,0x509d9d9d,0xc000000,0x3000000,0xffffff,0xffffff,
598 0xffffff,0xffffff,0x60dcdcdc,0xdbe3e3e3,0xffe2e2e2,0xffd3d3d3,0xffcecece,0xffcdcdcd,0xffd7d7d7,0xe6c5c5c5,0x838d8d8d,0x18000000,0x4000000,0xffffff,
599 0xffffff,0x3edddcdc,0xdbdadada,0xffd8d8d8,0xffaaa9a9,0xff434343,0xff424142,0xff686768,0xffc4c4c4,0xffbdbdbd,0xec9e9d9e,0x75595959,0x18000000,0x3000000,
600 0xffffff,0x94d5d6d5,0xffd1d0d0,0xffbdbdbd,0xff000000,0xff737373,0xffbdbdbd,0xff000000,0xff717171,0xffb6b7b6,0xffabaaaa,0xc8616161,0x3d000000,0xc000000,
601 0xffffff,0xd5cbcbcb,0xffbbbbbb,0xffadadad,0xff6d6d6d,0xff868686,0xffb5b5b5,0xff000000,0xff6a6a6a,0xffb1b1b1,0xffb1b1b1,0xef616161,0x61000000,0x1a000000,
602 0xffffff,0xfabfbfbf,0xffababab,0xffa4a4a4,0xffb2b2b2,0xffa6a6a6,0xff545454,0xff2a2a2a,0xff979797,0xffaeaeae,0xffa2a2a2,0xfd5d5d5d,0x7c000000,0x25000000,
603 0xffffff,0xd9b0b0b0,0xffa0a0a0,0xffa6a6a6,0xff9f9f9f,0xff606060,0xff000000,0xffa0a0a0,0xffa6a6a6,0xffa3a3a3,0xff8c8c8c,0xf2484848,0x85000000,0x2b000000,
604 0xffffff,0xa0949494,0xff9b9b9a,0xff9a9a9a,0xffa5a5a5,0xff9d9d9d,0xffa1a1a0,0xffa4a4a4,0xff9b9b9b,0xff9a9b9a,0xff6a696a,0xdf363636,0x7c000000,0x25000000,
605 0xffffff,0x516f6f6f,0xe7818181,0xff8d8d8d,0xff949494,0xff545454,0xff353535,0xff9e9e9e,0xff8f8f8f,0xff737273,0xf5414141,0xbb1a1a1a,0x61000000,0x1a000000,
606 0xffffff,0xc000000,0x84505050,0xed626262,0xff6f6e6e,0xff656565,0xff353535,0xff767576,0xff636263,0xf5414140,0xcd1f1f1f,0x83000000,0x3d000000,0xc000000,
607 0xffffff,0x3000000,0x18000000,0x762f2f2f,0xc93b3b3b,0xf0404040,0xfd464646,0xf3393939,0xdf2a2a2a,0xbb161616,0x83000000,0x4b000000,0x18000000,0x3000000,
608 0xffffff,0xffffff,0x4000000,0x18000000,0x3d000000,0x61000000,0x7c000000,0x85000000,0x7c000000,0x61000000,0x3d000000,0x18000000,0x4000000,0xffffff,
609 0xffffff,0xffffff,0xffffff,0x3000000,0xc000000,0x1a000000,0x25000000,0x2b000000,0x25000000,0x1a000000,0xc000000,0x3000000,0xffffff,0xffffff
610};
611
612static const QRgb Language_data[] = {
613 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
614 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
615 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
616 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
617 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
618 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
619 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
620 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x411d62c2,0x431b5ebb,0x441859b7,
621 0x441858b5,0x4000000,0x1000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
622 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x31216bc7,0x822069c7,0xc12068c6,0xf01f67c6,
623 0xff1d65c6,0xff1c63c4,0xff1b60c2,0xff195ec1,0xff185cc0,0xff175abe,0xf01658bc,0xc31453b7,0x87124eb0,0x370f46a1,0x4000000,0x1000000,0x0,0x0,
624 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x61246fcb,0xe0236ecb,
625 0xff216cca,0xff387fda,0xff609de7,0xff85b7f1,0xffaad3ff,0xffacd4ff,0xffc4e2ff,0xffc3e2ff,0xffaad3ff,0xffa7d2ff,0xff80b2ee,0xff5993e1,0xff2e6ecf,0xff114fb7,
626 0xe20f4cb4,0x6b0d42a2,0x8000000,0x2000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
627 0x512571cc,0xe02471cc,0xff2c77d2,0xff68a6eb,0xff7c9ebc,0xff737b7f,0xff505052,0xff2c2c2c,0xffb6bec2,0xffe6eef3,0xffe6edf3,0xffe4ecf2,0xffa9b1b7,0xff4f5355,
628 0xff6e7a7f,0xffd7f3ff,0xffc9edff,0xff9fd0fa,0xff5d98e3,0xff1855bc,0xe30c45ae,0x5c093b99,0x7000000,0x2000000,0x0,0x0,0x0,0x0,
629 0x0,0x0,0x0,0x902572cd,0xff2471cd,0xff579be6,0xffacddff,0xff161616,0xffa8a8a8,0xffffffff,0xffc8b8b9,0xffef0030,0xff503020,0xff484849,
630 0xff606060,0xff808080,0xffb0b0b0,0xff989899,0xff4d5254,0xffd9f4ff,0xffd1f2ff,0xffc9efff,0xffc1edff,0xffa5dbff,0xff4883d8,0xff0942af,0x9d073a9d,0xd000000,
631 0x2000000,0x0,0x0,0x0,0x0,0x0,0xa02672cd,0xff2976d1,0xff72b2f6,0xffb4e7ff,0xffc0edff,0xff404040,0xffc8c8c9,0xffffffff,
632 0xffe06090,0xffff0000,0xff923822,0xffff0000,0xffef3060,0xffef97da,0xffffffff,0xffc8c8c9,0xff404040,0xffc8dbe5,0xffd1f2ff,0xffc9efff,0xffc1edff,0xffb9ebff,
633 0xffb1e8ff,0xff70adf0,0xff0d45b1,0xae05379b,0x10000000,0x3000000,0x0,0x0,0x0,0x812673cd,0xff2a76d1,0xff6aacf6,0xffabe4ff,0xffb7eaff,
634 0xffbfecff,0xff363636,0xffa0a0a0,0xffffffff,0xffff6060,0xffff0000,0xffef0000,0xffbc220c,0xffff0000,0xffff0000,0xffffcad5,0xffe0e0e0,0xff8c8c8c,0xff59626a,
635 0xffcbecfa,0xffc8efff,0xffc0edff,0xffb8eaff,0xffb0e8ff,0xffa5e2ff,0xff5f9eef,0xff0b41ae,0x87022f8c,0xf000000,0x2000000,0x0,0x21256fc9,0xff2572ce,
636 0xff5fa3f3,0xff8bcaff,0xffade7ff,0xffb5eaff,0xffbdecff,0xff222222,0xffa0a0a0,0xffffffff,0xffff8a76,0xffff0000,0xffd51616,0xff661616,0xff961616,0xffff0000,
637 0xffff0000,0xffffffff,0xffa0a0a2,0xff3d4147,0xff56636d,0xffc5eeff,0xffbdecff,0xffb6eaff,0xffaee8ff,0xffa7e4ff,0xff89c8ff,0xff5290e9,0xff0236a6,0x3f011b54,
638 0xa000000,0x1000000,0x912470cb,0xff3882da,0xff76b7ff,0xff90cfff,0xffabe6ff,0xffb2e9ff,0xffbaebff,0xff0c1c0c,0xff989899,0xffffffff,0xff806070,0xff384848,
639 0xff585858,0xff262616,0xff000000,0xff6c3c3c,0xff800000,0xffb0b0b0,0xff646455,0xff223232,0xff101000,0xff60767f,0xffbbebff,0xffb3e9ff,0xfface7ff,0xffa6e3ff,
640 0xff8bcaff,0xff70b1ff,0xff1c53bc,0xa8002b8c,0x18000000,0x4000000,0xe02470cc,0xff5da1ef,0xff7bbbff,0xff8dccff,0xffa8e5ff,0xffafe8ff,0xffb6eaff,0xff000000,
641 0xff7e7e7f,0xffe0e0e0,0xff000000,0xff324222,0xff585858,0xff3c3c2c,0xff000000,0xff202010,0xff324232,0xff585858,0xff4e4e4e,0xff102010,0xff000000,0xff000000,
642 0xffb6eaff,0xffb0e8ff,0xffa9e5ff,0xffa4e1ff,0xff8ac9ff,0xff74b5ff,0xff4d8ae3,0xe800309e,0x28000000,0xa000000,0xff236fcc,0xff70b2f9,0xff7fbfff,0xff84c3ff,
643 0xffa0deff,0xffabe6ff,0xffb1e8ff,0xff000000,0xff747475,0xffe0e0e0,0xff000000,0xff201010,0xff8c2c2c,0xffd00000,0xff900000,0xff3c1c0c,0xff183828,0xff525242,
644 0xff585858,0xff262616,0xff000000,0xff100000,0xffb2e9ff,0xffabe7ff,0xffa6e3ff,0xff9cdaff,0xff7fbfff,0xff78b9ff,0xff65a4f4,0xff0032a4,0x33000000,0x10000000,
645 0xff226dcb,0xff7ebeff,0xff83c3ff,0xff88c7ff,0xff8ecdff,0xffa3e1ff,0xfface7ff,0xff000000,0xff586859,0xffc8c8c9,0xff100000,0xff900000,0xffef0000,0xffff0000,
646 0xffb00000,0xff700000,0xff501000,0xff7c2c2c,0xff7c422c,0xff961616,0xffa00000,0xff800000,0xff56737f,0xffa7e4ff,0xff9fddff,0xff87c7ff,0xff81c1ff,0xff7cbcff,
647 0xff77b7ff,0xff0032a4,0x38000000,0x12000000,0xf0216bc8,0xff6aacf1,0xff87c6ff,0xff8ccbff,0xff91cfff,0xff95d4ff,0xffa0ddff,0xff000000,0xff2c2c2c,0xff9aa6b2,
648 0xff400000,0xffa00000,0xffe00000,0xffff0000,0xffe02000,0xffa02000,0xff5c0c0c,0xffd00000,0xffff0000,0xffff0000,0xffc00000,0xff800000,0xff53717f,0xff9cdaff,
649 0xff8fceff,0xff8ac9ff,0xff85c4ff,0xff7fbfff,0xff5c99e8,0xf40031a1,0x39000000,0x13000000,0xb41f66c3,0xff4c91df,0xff8acaff,0xff90ceff,0xff95d3ff,0xff9ad8ff,
650 0xff9edcff,0xff000000,0xffa9e5ff,0xffb7d1e6,0xff200000,0xff900000,0xffd04600,0xffffdf00,0xffffff00,0xffefb000,0xff763c16,0xffd02c00,0xffff0000,0xffff0000,
651 0xffd03600,0xffb02c00,0xff4d6c7f,0xff97d6ff,0xff92d1ff,0xff8dccff,0xff88c7ff,0xff83c2ff,0xff3770cc,0xc7002c90,0x35000000,0x11000000,0x491b5aaf,0xff246bc9,
652 0xff87c6fb,0xff93d2ff,0xff98d7ff,0xff9ddbff,0xffa2e0ff,0xff53717f,0xffade7ff,0xffb8d0e6,0xff000000,0xffdf6000,0xffffa000,0xffffff00,0xffffff00,0xffffc000,
653 0xff9c4c0c,0xffd0b020,0xffffc000,0xffffc000,0xffffc000,0xffff8000,0xff4f6e7f,0xff9bd9ff,0xff96d4ff,0xff91cfff,0xff8bcaff,0xff7dbcf9,0xff083baa,0x74001c5b,
654 0x2c000000,0xc000000,0x5000000,0xc61b60bd,0xff397dd2,0xff96d5ff,0xff9cdaff,0xffa1dfff,0xffa6e3ff,0xfface7ff,0xffb3e9ff,0xffb9d0e6,0xff000000,0xffff8000,
655 0xffefb000,0xffa08600,0xff707020,0xffa6602c,0xff7c480c,0xffb09020,0xffffff00,0xffffff00,0xffffdf00,0xffef7600,0xff51707f,0xff9fdcff,0xff99d7ff,0xff94d2ff,
656 0xff8ecdff,0xff2258bb,0xd2002d95,0x3d000000,0x1d000000,0x5000000,0x1000000,0x1d0f366c,0xf21a5ebf,0xff498bd8,0xff9fdcff,0xffa4e2ff,0xffaae6ff,0xffb2e9ff,
657 0xffbaebff,0xffbbd0e5,0xff000000,0xffdf8000,0xff705030,0xffa4a7ac,0xffadb2b9,0xff705600,0xff564626,0xffefb000,0xffb09000,0xff808000,0xff806000,0xff4b5a40,
658 0xffa7e4ff,0xffa2dfff,0xff9cdaff,0xff96d5ff,0xff366dc6,0xe900309d,0x51000a20,0x2c000000,0xe000000,0x1000000,0x0,0x4000000,0x4311438a,0xe61658b9,
659 0xff3072c9,0xff95d2f7,0xffafe8ff,0xffb7eaff,0xffbfedff,0xffbad0e4,0xff000000,0xff505356,0xffbfc9d9,0xffbdc7d8,0xffbbc6d7,0xffa9afba,0xff7d838e,0xff565c66,
660 0xff838c9b,0xffb1bdd2,0xff8fabc1,0xffb3e9ff,0xffabe6ff,0xffa4e2ff,0xff8bc7f4,0xff1d51b5,0xdd002f9a,0x6900174b,0x33000000,0x16000000,0x4000000,0x0,
661 0x0,0x0,0x7000000,0x2809244c,0xbf1350ad,0xff1d5dbf,0xff629ddc,0xffb1e2fb,0xffc4eeff,0xffc8ebfa,0xff000000,0xffb9ced8,0xffbed0d8,0xffc1d0d8,
662 0xffc2d0d8,0xffbfd0d8,0xffbbcfd8,0xffb6cdd8,0xffb0ccd8,0xffaac9d8,0xffacd4e4,0xffb7eaff,0xffa3dcf9,0xff538bd2,0xff0a3daa,0xc7002c90,0x50000a21,0x32000000,
663 0x19000000,0x6000000,0x0,0x0,0x0,0x0,0x1000000,0x6000000,0x16000000,0x600d377c,0xce104aaa,0xff104eb6,0xff5489d1,0xffa0c7ec,
664 0xffd9f4ff,0xffe1f6ff,0xffe9f9ff,0xffeefaff,0xfff0fbff,0xffecfaff,0xffe6f8ff,0xffdef5ff,0xffd5f3ff,0xffc0e4f9,0xff86b3e3,0xff4677c6,0xff0032a4,0xd2002d95,
665 0x75001b59,0x3d000000,0x2b000000,0x15000000,0x6000000,0x1000000,0x0,0x0,0x0,0x0,0x0,0x0,0x4000000,0xe000000,
666 0x1e000000,0x56082a65,0xda0d46aa,0xff3f72c5,0xffdcf5ff,0xffe5f8ff,0xffeefaff,0xffe7f0fa,0xff8ea8da,0xff7b9ad4,0xff7698d3,0xff3965bc,0xff2957b6,0xff0032a4,
667 0xe900309d,0xbb002b8c,0x6800174c,0x3c000000,0x2f000000,0x1e000000,0xe000000,0x4000000,0x0,0x0,0x0,0x0,0x0,0x0,
668 0x0,0x0,0x0,0x1000000,0x6000000,0xf000000,0xe30c47af,0xff89b2e2,0xffddf5ff,0xffe6f8ff,0xffa6bfe5,0xff1548b0,0xdd05379f,0xa4032c83,
669 0xa2022b84,0xa1012983,0x71001c5d,0x5700123c,0x3b000000,0x34000000,0x29000000,0x1b000000,0xf000000,0x6000000,0x1000000,0x0,0x0,0x0,
670 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x410c46af,0xff1751b6,0xffc6e7fa,0xffc0def5,0xff3e6dc1,
671 0xf4063ca8,0x99042b7d,0x41000000,0x33000000,0x29000000,0x26000000,0x24000000,0x1e000000,0x17000000,0x11000000,0xb000000,0x5000000,0x1000000,0x0,
672 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xa10b45af,
673 0xff5284ce,0xff6c99d6,0xff083fad,0xc7063697,0x5c02153c,0x38000000,0x24000000,0x13000000,0xb000000,0xa000000,0x8000000,0x5000000,0x2000000,0x1000000,
674 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
675 0x0,0x0,0x100b45b0,0xff0a44b0,0xff154db3,0xe8083da6,0x8104266b,0x3e000000,0x2c000000,0x19000000,0xa000000,0x2000000,0x0,0x0,
676 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
677 0x0,0x0,0x0,0x0,0x0,0x0,0x720a43ad,0xff0942af,0x9b073690,0x4d020d24,0x34000000,0x20000000,0xf000000,0x4000000,
678 0x1000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
679 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x15083385,0x35052869,0x2c000000,0x27000000,
680 0x15000000,0x8000000,0x2000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
681 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
682 0x3000000,0xb000000,0x11000000,0xb000000,0x3000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
683 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
684 0x0,0x0,0x0,0x0,0x0,0x1000000,0x2000000,0x1000000,0x0,0x0,0x0,0x0,0x0,0x0,
685 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
686 0x0,0x0
687};
688
689static const QRgb MPEGPlayer_data[] = {
690 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2a4a6dc,
691 0xfa4a6dc,0x18a4a6dc,0x18a4a6dc,0x26a4a6dc,0x27a4a6dc,0x14a4a6dc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
692 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
693 0x2a0a1b6,0x1fa3a4bb,0x579d9fba,0x979a9bbc,0xb6989ac1,0xc29698c3,0xc29698c4,0xd09698c8,0xd0989acb,0xb18f91bc,0x708486a5,0x2885869e,0x8727496,0x0,
694 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
695 0x0,0x0,0x6a5a6b6,0x419e9fbd,0x95a9aac6,0xefb8b9d1,0xfecbcce0,0xffe4e5f1,0xffefeff9,0xfff4f5ff,0xfff3f3ff,0xffefeffe,0xffe5e6f7,0xffd2d3ec,
696 0xffb9bbdf,0xf59c9ec7,0xb98688b3,0x5174779f,0x156b6d91,0x1000000,0x0,0x0,0x0,0x0,0x0,0x0,0xcc917107,0xcd876b09,
697 0xf4a5a293,0xffb1b1b1,0xffcbcbcb,0xf4a4a4a4,0x339e9e9e,0x11a7a7b5,0x70a3a3bc,0xe0bebfd4,0xfce0e0eb,0xfff6f6fa,0xfffcfcfe,0xfff9f9ff,0xfff6f7ff,0xfff3f4ff,
698 0xfff1f1ff,0xffedeeff,0xffebecff,0xffe8e9ff,0xffe6e7fe,0xffd9dbf6,0xffc3c5e7,0xea989ac4,0xa27c7fac,0x1f66678b,0x320212f,0x0,0x0,0x0,
699 0x0,0x0,0xcc6b5803,0xcc5f5103,0xd25c541a,0xf497968b,0xffa4a4a4,0xffcacaca,0xe39a9a9a,0xc9ababb7,0xfcd5d6e3,0xfffcfcff,0xfffefeff,0xffffffff,
700 0xfffdfdff,0xfff9faff,0xfff7f7ff,0xfff4f4ff,0xfff1f1ff,0xffedeeff,0xffebecff,0xffe7e9ff,0xffe5e6ff,0xffe2e3ff,0xffdfe1ff,0xffd7d9fa,0xffaaaddf,0xd77e7fb3,
701 0x576b6c99,0x6222332,0x1000000,0x0,0x0,0x0,0xcc413f01,0xcc474201,0xcc514903,0xcd74600b,0xf4a19a84,0xff9a9a9a,0xffa5a5a5,0xff9e9e9e,
702 0xffe0e1e5,0xfffbfbff,0xfffdfdff,0xffffffff,0xfffefeff,0xfffbfbff,0xfff8f8ff,0xfff4f5ff,0xfff2f2ff,0xffedeeff,0xffeaebff,0xffe6e8ff,0xffe4e5ff,0xffe1e2ff,
703 0xffdee0ff,0xffd3d5ff,0xffbbbef6,0xfe9396cf,0xe07274aa,0x425c5d88,0x71b1b27,0x0,0x0,0x0,0xcc756006,0xcc8d720a,0xcca5850f,0xccb59415,
704 0xd5bda42f,0xfca09b81,0xff9d9d9d,0xff949494,0xff979798,0xffe3e3e7,0xfffbfbff,0xfffefeff,0xfffefeff,0xfffcfcff,0xfff9f9ff,0xfff4f5ff,0xfff2f2ff,0xffedeeff,
705 0xffeaebff,0xffe5e6ff,0xffe3e4ff,0xffdfe1ff,0xffd8daff,0xffbec1f7,0xffa7aae4,0xff8f92cc,0xff787bb4,0xdb5f6197,0x4c53547e,0x5000000,0x0,0x0,
706 0xccbe9f19,0xcccaac1f,0xccd2b726,0xcdd6be2b,0xe1d6c23a,0xfed8c955,0xff9e9a80,0xff8c8c8c,0xffababab,0xff838384,0xffdddde1,0xfffdfdff,0xfffefeff,0xfffdfdff,
707 0xfffafaff,0xfff4f5ff,0xfff2f2ff,0xffecedff,0xffe9eaff,0xffe4e5ff,0xffe1e3ff,0xffdcdeff,0xffc9cbfc,0xffa9ace6,0xff9598d2,0xff7e81bb,0xff6f72ac,0xfd6567a0,
708 0xbd5b5d8f,0x17242534,0x3000000,0x0,0xccd8c12d,0xccdbc630,0xccdfcb35,0xd8dbc738,0xf8d5c247,0xffdbc556,0xffcbb757,0xff8e8976,0xff7b7b7b,0xffb2b2b2,
709 0xff808081,0xffdedfe2,0xfffdfdff,0xfffefeff,0xfffbfbff,0xfff5f5ff,0xfff0f1ff,0xffebecff,0xffe7e8ff,0xffe2e4ff,0xffdee0ff,0xffcbcdfd,0xffadb0ea,0xff8f92cc,
710 0xff7b7eb8,0xff6d70aa,0xff7174ae,0xff777ab4,0xfe686aa3,0x764f517a,0x12181924,0x1000000,0xccddc834,0xccdac130,0xccd3b728,0xe8c8ad30,0xfec5ad41,0xffc7af47,
711 0xffb7a34d,0xff878370,0xff85826c,0xff707070,0xff878787,0xff7e7e7f,0xffd9d9dc,0xfffefeff,0xfffcfcff,0xfff8f8ff,0xfff3f4ff,0xffeeeeff,0xffe7e8ff,0xffe0e2ff,
712 0xffd7daff,0xffb1b4ed,0xff9497d1,0xff787bb5,0xff6e71ab,0xff7477b1,0xff7d80ba,0xff8588c2,0xff7c7fb9,0xc7575a8d,0x3434364f,0x4000000,0xccc9ac23,0xccc3a51e,
713 0xd1bb9e1a,0xfbbda433,0xffc6ae45,0xffc2ac4d,0xff898571,0xffb2a863,0xffc7be5e,0xff89866a,0xff777777,0xff6b6b6b,0xff757576,0xffd9d9de,0xffeeefff,0xffd6d8fe,
714 0xffcccefb,0xffc9ccf7,0xffd4d6fa,0xffd9dbff,0xffbbbef3,0xff8e91cb,0xff7679b3,0xff6f72ac,0xff7a7db7,0xff8588c2,0xff8c8fc9,0xff9396d0,0xff9295cf,0xf56a6da4,
715 0x7945476e,0xd000000,0xccbd9c17,0xccc2a31a,0xdbc7aa24,0xffceb843,0xffc8b85b,0xff8c8874,0xffc3bb6c,0xffe8dc65,0xffe5e16e,0xffece26f,0xff848165,0xff686868,
716 0xff878787,0xff5d5d60,0xffb6b8d8,0xffc7c9fe,0xffbabdf7,0xffabaee8,0xffaeb1eb,0xffb2b5ec,0xff9497d1,0xff7376b0,0xff7275af,0xff8083bd,0xff8a8dc7,0xff9396d0,
717 0xff989bd5,0xff9da0da,0xff9fa2dc,0xff7a7db6,0xae4d4f7e,0x18000000,0xd0cbb130,0xccd9c22e,0xe7dac83d,0xffd6cb5e,0xff8e8b76,0xffc2bd74,0xfff2e971,0xffede46e,
718 0xffe6e06f,0xfff2e46c,0xffdbcd65,0xff767257,0xff515151,0xff9a9a9a,0xff59595b,0xffb5b8d9,0xffbbbef5,0xffacafe9,0xffb5b8f2,0xffb7baf4,0xff8c8fc9,0xff7a7db7,
719 0xff8b8ec8,0xff9699d3,0xff9c9fd9,0xffa1a4de,0xffa5a8e2,0xffa9ace6,0xffabaee8,0xff9294ce,0xe1525588,0x27000000,0xf699967e,0xd3ded251,0xeed6cc58,0xff8f8d77,
720 0xffc7bf72,0xffeee26e,0xffe9db69,0xffe1d262,0xffd3c65c,0xffd8c556,0xffceb94e,0xffbca848,0xff645f48,0xff474747,0xff6d6d6d,0xff55555a,0xff72749f,0xff9294ca,
721 0xffb8bbf4,0xffc5c8fe,0xffbbbef5,0xff9295cf,0xff9ea1db,0xffa5a8e2,0xffa9ace6,0xffaeb1eb,0xffb1b4ee,0xffb3b6f0,0xffb5b8f2,0xffa1a4dd,0xf551538a,0x30000000,
722 0xff909090,0xf88e8d7b,0xfc8c8a72,0xffbaaf6c,0xffe0d061,0xffdac85b,0xffd0bc53,0xffc4b04a,0xffb5a546,0xffbca441,0xffb1993d,0xffa8903a,0xff94803a,0xff534f3f,
723 0xff505050,0xff424242,0xf63e3e40,0xbf3f3f51,0xf29798c2,0xffd3d5ff,0xffd4d6ff,0xffb0b3ed,0xffb5b8f2,0xffb9bcf6,0xffbbbef7,0xffbec1f9,0xffc0c3fb,0xffc1c4fc,
724 0xffc2c5fd,0xffafb2e9,0xff4e518a,0x39000000,0xffababab,0xff7b7b7b,0xfc86826b,0xffbdab55,0xffbea848,0xffb69f43,0xffac953e,0xffa28a39,0xff988639,0xff9d8737,
725 0xff917f36,0xff867836,0xff7b7135,0xff6b6635,0xff3f4036,0xff454545,0xff606060,0xec262627,0xd76a6a82,0xffe1e2ff,0xffe0e1ff,0xffc2c5fc,0xffcbcdfe,0xffcccfff,
726 0xffcdd0ff,0xffcdd0ff,0xffcdd0ff,0xffced1ff,0xffced1ff,0xffb7baea,0xff4d5088,0x3e000000,0xe47b7b7b,0xffb2b2b2,0xff707070,0xff767263,0xff978039,0xff927a31,
727 0xff86722f,0xff7a6a2b,0xff766f35,0xff797035,0xff6e6934,0xff686534,0xff626234,0xff6b6734,0xff4d4a32,0xff3c392f,0xff272727,0xff828282,0xfc2a2a2c,0xffc1c3ce,
728 0xffebecfe,0xffced0ff,0xffdee0ff,0xffdddfff,0xffdddeff,0xffdcddff,0xffdbddff,0xffdadcff,0xffd9dbff,0xffc0c2ea,0xfe4f5187,0x3f000000,0x2b757575,0xd6707070,
729 0xff878787,0xff7d7d7d,0xff666256,0xff695d2f,0xff5d5526,0xff504c24,0xff565a34,0xff6b6734,0xff736c35,0xff887a37,0xff9d8a3b,0xff695e35,0xff555035,0xffac9a44,
730 0xff4b472d,0xff1d1d1d,0xff585858,0xff383839,0xffb6b8c7,0xffd3d5fe,0xffe4e5ff,0xffe2e3ff,0xffe1e3ff,0xffdfe1ff,0xffdfe1ff,0xffdee0ff,0xffdee0ff,0xffbbbee6,
731 0xf64e5186,0x3f000000,0x0,0x1f6d6d6d,0xef706f6f,0xff6a6a6a,0xff6e6e6e,0xff54544e,0xff4a4928,0xff655b26,0xff867a39,0xffa6903c,0xffb59d40,0xffbda644,
732 0xff7a6e3b,0xff5d5938,0xffc9ba52,0xffd6c858,0xffc8bc56,0xff444127,0xff272727,0xff1b1b1b,0xff2d2e30,0xffb7bacb,0xffe8eafe,0xffe7e8ff,0xffe5e6ff,0xffe4e5ff,
733 0xffe3e4ff,0xffe1e3ff,0xffe1e3ff,0xffaaacd7,0xe24a4c7c,0x3b000000,0x0,0x0,0x6371625c,0xff636166,0xff878787,0xff515151,0xff575245,0xff978137,
734 0xffbaa747,0xffcfb84c,0xffd6c251,0xff867b41,0xff5a573a,0xffcec359,0xffd9cc5c,0xffd7c95b,0xffd2c157,0xffb9a94c,0xff38331c,0xff232323,0xff363636,0xff1b1c1e,
735 0xffb5b7c6,0xffeaebfe,0xffe9eaff,0xffe6e8ff,0xffe6e7ff,0xffe4e5ff,0xffe2e3fe,0xff9193c1,0xc33d3f67,0x35000000,0x0,0x0,0xf735b4c,0xda796d76,
736 0xff57575d,0xff9a9a9a,0xff464646,0xff555242,0xffc0b453,0xffdccc59,0xff877f45,0xff5e5939,0xffcfbf56,0xffd3c155,0xffccb951,0xffc5b24c,0xffbfac48,0xffbba746,
737 0xffb09e42,0xff302c14,0xff000000,0xff6f6f6f,0xff121213,0xffbcbecc,0xffebecfe,0xffeaebff,0xffe8eaff,0xffe7e9ff,0xffd1d2ef,0xf46b6da1,0x9123243f,0x2a000000,
738 0x0,0x0,0x24f3f2f,0x83816f6e,0xfc7f7a96,0xff52525b,0xff6c6c6c,0xff575757,0xff59573f,0xff787243,0xff555035,0xffc1ac4b,0xffc7b14a,0xffc1ac48,
739 0xffbfaa46,0xffc0aa46,0xffc4b049,0xffc9b54d,0xffcebd53,0xffbeb350,0xff343217,0xff000000,0xff525252,0xff262628,0xffb6b8c7,0xffecedfe,0xffebecff,0xffe7e8fd,
740 0xffb2b4dc,0xd8444674,0x6510111d,0x1e000000,0x0,0x0,0x0,0x2b796651,0xc68c7e80,0xff9192be,0xff53535b,0xff414141,0xff4c4c4c,0xff38362e,
741 0xffa69440,0xffc6ae46,0xffc5af48,0xffc9b34b,0xffcdbb50,0xffd2c456,0xffd7cc5c,0xffddd362,0xffe2da67,0xffe6df6c,0xffdad569,0xff35341a,0xff111111,0xff121212,
742 0xff262628,0xffbbbdcc,0xffecedfe,0xffd0d2ed,0xfa777bad,0x951b1d35,0x3e030304,0x10000000,0x0,0x0,0x0,0x73f3427,0x6082715e,0xfc9793ae,
743 0xff9497c4,0xff4b4c54,0xff5f5f5f,0xff272727,0xff433e29,0xffbeac4b,0xffd6c657,0xffdbce5c,0xffe0d663,0xffe4dc69,0xffe9e36e,0xffebe470,0xffebe571,0xffeae370,
744 0xffe5dd6e,0xffa8a14f,0xff000000,0xff1e1e1e,0xff2b2b2b,0xff1c1d1f,0xffafb3c3,0xfe989cc7,0xd740446e,0x5a07070c,0x28000000,0x7000000,0x0,0x0,
745 0x0,0x1000000,0x91a170d,0x9a8b8073,0xf6a3a1bc,0xffa6a9da,0xff3c3d45,0xff828282,0xff1d1d1d,0xff383623,0xffcbc55e,0xffebe46e,0xffeee772,0xffece571,
746 0xffe9e16d,0xffe5db6b,0xffdfd365,0xffd6c95e,0xffb4a74d,0xff262310,0xff73682c,0xff26220e,0xff000000,0xff6f6f6f,0xff0a0a0d,0xe743476a,0x8116182b,0x31000000,
747 0x12000000,0x2000000,0x0,0x0,0x0,0x0,0x2000000,0x285e5542,0xa88d8579,0xfeafaed2,0xffa2a9d5,0xff35353b,0xff575757,0xff2f2f2f,
748 0xff3a3821,0xffd3cb64,0xffe6db6a,0xffe0d364,0xffd7ca5e,0xffcebf56,0xffc4b44e,0xffa3943f,0xff221f0e,0xff675a26,0xff9f8b3b,0xff837333,0xff1f1c0c,0xff000000,
749 0xff606060,0xf308090c,0x7c0c1422,0x1b000000,0x7000000,0x0,0x0,0x0,0x0,0x0,0x0,0x4000000,0x171f1c12,0x9f837e71,
750 0xefa3a3b6,0xffb7b8d3,0xff37373c,0xff191919,0xff2b2b2b,0xff252312,0xffb1a248,0xffc1af4b,0xffb7a545,0xffae9a40,0xff8f7e34,0xff1e1b0b,0xff5a4f24,0xff857736,
751 0xff7c7136,0xff706a35,0xff5f5e32,0xff11120b,0xff0b0b0b,0xff171717,0xf6181819,0x7000000,0x1000000,0x0,0x0,0x0,0x0,0x0,
752 0x0,0x1000000,0x5000000,0x25373426,0x7a6a685e,0xe89999a2,0xfe999ab0,0xff2e2f32,0xff353535,0xff000000,0xff231f0d,0xff958236,0xff9c873a,0xff827231,
753 0xff1b170a,0xff4a4522,0xff716b35,0xff656334,0xff5a5c34,0xff525833,0xff5f6034,0xff645f30,0xff201c0d,0xff1f1f1f,0xff222222,0x1000000,0x0,0x0,
754 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x5000000,0x11000000,0x3f2b2b24,0x8d5e5e5b,0xdc717282,0xfd16171a,0xff6f6f6f,
755 0xff000000,0xff151309,0xff595126,0xff15140a,0xff3b3d22,0xff5b5d33,0xff5c5d34,0xff656335,0xff7d7337,0xff91823b,0xffa18f3e,0xffb09c43,0xffb5a446,0xff2c2912,
756 0xff000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3000000,0xe010101,
757 0x21090909,0x5031312f,0x922f2f35,0xf4050607,0xff515151,0xff1a1a1a,0xff000000,0xff3d3d21,0xff6c6835,0xff7f7437,0xff93833a,0xffa5923f,0xffb39f43,0xffbdaa48,
758 0xffc4b44d,0xffcabc52,0xffcec257,0xffb9b051,0xff7c7b3b,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
759 0x0,0x0,0x0,0x1000000,0x4000000,0xd000000,0x18000000,0x40000000,0xde020202,0xf3000000,0xe1000000,0xff181509,0xff8f7e36,0xffb2a044,
760 0xffbbab49,0xffc1b44f,0xffc5bb53,0xffc9c058,0xffcbc359,0xffcac25b,0xffcac05a,0xffc4b855,0xffb4a94e,0x0,0x0,0x0,0x0,0x0,
761 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1000000,0x4000000,0x21000000,0x50000000,0x6e000000,
762 0x57000000,0x7f000000,0x7f3f3a19,0x7d777131,0x7c7c7735,0x7983803a,0x7688863e,0x748c8b42,0x748c8a41,0x738a853e,0x7388803c,0x73827a37,0x668c843b,0x0,
763 0x0,0x0
764};
765
766static const QRgb OKButton_data[] = {
767 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,
768 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,
769 0xffffff,0xffffff,0xffffff,0xffffff,0x3edcdcdc,0x93dbdbdb,0xd5dfdfdf,0xfededede,0xf8d9d9d9,0xeedcdcdc,0xe1d8d8d8,0xdcdadada,0xe1dadada,0xe6dbdbdb,
770 0xecdddddd,0xf1dcdcdc,0xf6dcdcdc,0xfbdddddd,0xfedddddd,0xffdedede,0xffdddddd,0xd9d2d2d2,0xa1c8c8c8,0x519e9e9e,0xc000000,0x3000000,0xffffff,0xffffff,
771 0xffffff,0xffffff,0xffffff,0x5fdcdcdc,0xdbe3e3e3,0xffe2e2e2,0xffd3d3d3,0xffcecece,0xffcccccc,0xffd5d5d5,0xffd0d0d0,0xffcdcdcd,0xffcecece,0xffcecece,
772 0xffcdcdcd,0xffcccccc,0xffcdcdcd,0xffcecece,0xffd1d1d1,0xffd2d2d2,0xffd3d3d3,0xffd4d4d4,0xffdcdcdc,0xe7c7c7c7,0x848e8e8e,0x18000000,0x4000000,0xffffff,
773 0xffffff,0xffffff,0x3edddcdc,0xdbdadada,0xffd8d8d8,0xffcac9c9,0xffc6c6c6,0xffc2c1c2,0xffc4c3c4,0xffa6a6a6,0xff414141,0xff424242,0xff676767,0xffc4c4c4,
774 0xffa4a4a4,0xff424242,0xffa6a5a6,0xffcbcacb,0xff8a898a,0xffb3b2b3,0xffd6d5d6,0xffd6d5d6,0xffd3d3d3,0xffc5c6c5,0xeda2a1a2,0x765a5a5a,0x18000000,0x3000000,
775 0xffffff,0xffffff,0x93d4d5d4,0xffd1d0d0,0xffbcbcbc,0xffbab9b9,0xffbdbdbd,0xffbcbcbc,0xffbbbaba,0xff000000,0xff6d6e6d,0xffbdbdbd,0xff000000,0xff727272,
776 0xff929292,0xff000000,0xff979797,0xff7b7b7b,0xff272727,0xffb1b1b1,0xffd1d1d1,0xffd1d1d1,0xffd0d0d0,0xffc7c8c7,0xffb3b2b2,0xc9626262,0x3d000000,0xc000000,
777 0xffffff,0xffffff,0xd5cbcbcb,0xffb8b8b8,0xffa7a7a7,0xffaeaeae,0xffa9a8a8,0xffb1b1b1,0xffa6a6a6,0xff000000,0xff686868,0xffb6b6b6,0xff000000,0xff686868,
778 0xff868686,0xff000000,0xff595959,0xff252525,0xff9d9d9d,0xffc4c4c4,0xffc0c0c0,0xffbcbcbc,0xffc6c6c6,0xffc5c5c5,0xffbbbbbb,0xf0666666,0x61000000,0x1a000000,
779 0xffffff,0xffffff,0xfabebebe,0xffa4a4a4,0xff979797,0xffa8a8a8,0xffa0a0a0,0xff9b9b9b,0xffa1a1a1,0xff000000,0xff636363,0xffa4a4a4,0xff000000,0xff5f5f5f,
780 0xff7a7a7a,0xff000000,0xff000000,0xff9f9f9f,0xffbbbbbb,0xffadadad,0xffa7a7a7,0xffb2b2b2,0xffbcbcbc,0xffc2c2c2,0xffadadad,0xfd626262,0x7c000000,0x25000000,
781 0xffffff,0xffffff,0xd8adadad,0xff989898,0xff959595,0xff8b8b8b,0xff939393,0xff9a9a9a,0xff939393,0xff000000,0xff585858,0xff979797,0xff000000,0xff5b5b5b,
782 0xff757575,0xff000000,0xff2b2b2b,0xff2f2f2f,0xffa9a9a9,0xffb3b3b3,0xffadadad,0xffadadad,0xffb8b8b8,0xffb4b4b4,0xff959595,0xf24a4a4a,0x85000000,0x2b000000,
783 0xffffff,0xffffff,0x9e919191,0xff949493,0xff868787,0xff8c8c8c,0xff818181,0xff888887,0xff8a8a8a,0xff000000,0xff545654,0xff848384,0xff000000,0xff4f4f4f,
784 0xff676766,0xff000000,0xff737372,0xff4e4e4d,0xff3c3c3c,0xff9e9e9e,0xffaeaeae,0xffb2b2b2,0xffacacac,0xffa5a6a5,0xff706f70,0xdf373737,0x7c000000,0x25000000,
785 0xffffff,0xffffff,0x506d6d6d,0xe67b7b7b,0xff7d7d7d,0xff7a7a7a,0xff777878,0xff777777,0xff7d7e7d,0xff484848,0xff161616,0xff292929,0xff1e1f1f,0xff6a6b6b,
786 0xff5c5c5c,0xff000000,0xff616161,0xff838383,0xff484848,0xff7e7e7e,0xffa5a5a5,0xffa6a7a6,0xff979797,0xff787778,0xf5434343,0xbb1a1a1a,0x61000000,0x1a000000,
787 0xffffff,0xffffff,0xc000000,0x834d4d4d,0xec595959,0xff5e5d5d,0xff656564,0xff696969,0xff696869,0xff6b6a6b,0xff6a6a69,0xff666665,0xff646463,0xff656564,
788 0xff666666,0xff686868,0xff6c6c6c,0xff727272,0xff7a7a7a,0xff828282,0xff818181,0xff787778,0xff656465,0xf5424241,0xce222222,0x83000000,0x3d000000,0xc000000,
789 0xffffff,0xffffff,0x3000000,0x18000000,0x752d2d2d,0xc8353535,0xef363636,0xff3e3e3e,0xfd373737,0xfa353535,0xf5333333,0xf3313131,0xf5353535,0xf7353535,
790 0xf9373737,0xfa383838,0xfc3c3c3c,0xfe3d3d3d,0xff424242,0xff454545,0xff454545,0xf3383838,0xdf2a2a2a,0xbb161616,0x83000000,0x4b000000,0x18000000,0x3000000,
791 0xffffff,0xffffff,0xffffff,0x4000000,0x18000000,0x3d000000,0x61000000,0x7c000000,0x8a000000,0x8b000000,0x87000000,0x82000000,0x81000000,0x82000000,
792 0x84000000,0x87000000,0x89000000,0x8b000000,0x8e000000,0x8e000000,0x8f000000,0x8b000000,0x7c000000,0x61000000,0x3d000000,0x18000000,0x4000000,0xffffff,
793 0xffffff,0xffffff,0xffffff,0xffffff,0x3000000,0xc000000,0x1a000000,0x26000000,0x2d000000,0x2e000000,0x2b000000,0x29000000,0x28000000,0x29000000,
794 0x2a000000,0x2b000000,0x2d000000,0x2e000000,0x2e000000,0x2f000000,0x30000000,0x2e000000,0x26000000,0x1a000000,0xc000000,0x3000000,0xffffff,0xffffff
795};
796
797static const QRgb Rotation_data[] = {
798 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0x1000000,0x3000000,0x6000000,0xb000000,0x12000000,0x19000000,0x21000000,0x29000000,0x2f000000,
799 0x35000000,0x38000000,0x3b040404,0x4d535353,0x5a828282,0x3d3f3f3f,0x2d060606,0x24070707,0x1b090909,0x140d0d0d,0xc151515,0x7242424,0x3000000,0x1000000,
800 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0x1000000,0x2000000,0x5000000,0xa000000,0x11000000,0x1b000000,0x26000000,
801 0x6e647e80,0xab7da6a7,0xd387b7b9,0xeb8bc0c2,0xf98dc6c8,0xfe8ac8ca,0xf97ec0c2,0xed6fb6b7,0xd8629ea2,0xcc90aeb0,0xa1849698,0x460b0b0b,0x390d0d0d,0x2b0c0c0c,
802 0x1f101010,0x130d0d0d,0xb171717,0x5000000,0x2000000,0x1000000,0xffffff,0xffffff,0xffffff,0xffffff,0x1000000,0x2000000,0x6000000,0xd000000,
803 0x16000000,0x23000000,0x84759496,0xd091b9bb,0xfaabcecf,0xffa9d0d2,0xffa1ccce,0xff9acacc,0xff90c6c8,0xff89c4c6,0xff7fc1c3,0xff74bfc1,0xff69bcbe,0xff60b9bc,
804 0xfd88c1c4,0xe78bb4b7,0xa0395f62,0x4f101010,0x3a121212,0x28131313,0x19141414,0xe121212,0x6000000,0x2000000,0x1000000,0xffffff,0xffffff,0x1000000,
805 0x2000000,0x7000000,0xe000000,0x1a000000,0x545f7474,0xc08eb5b6,0xfaafcfd1,0xffafcfd0,0xffadcccd,0xffa3c8ca,0xff9ac4c6,0xff93c0c2,0xff8abfbf,0xff80bbbd,
806 0xff79babc,0xff6fb8bb,0xff65b8ba,0xff5cb6b9,0xff50b2b5,0xff69a2a7,0xfe76b0b5,0xd2377579,0x7f293d3d,0x47121212,0x2f101010,0x1d121212,0xf111111,0x7000000,
807 0x2000000,0x1000000,0xffffff,0x2000000,0x6000000,0xe000000,0x1b000000,0x73728f8f,0xda9fc1c3,0xffb6d1d3,0xffb0cdce,0xffaac6c8,0xffa2bfc1,0xff96b8b9,
808 0xff8db3b5,0xff84adaf,0xff7cabac,0xff76aaac,0xff6fadae,0xff6ab1b3,0xff63b4b5,0xff58b4b6,0xff4eadb3,0xff61a1a6,0xff4f8a8f,0xff5f9ea3,0xe82d777c,0x9d2a4a4c,
809 0x50131313,0x33141414,0x1e111111,0xf111111,0x7242424,0x2000000,0x1000000,0x5000000,0xd000000,0x1a000000,0x736f8f8f,0xe2a1c3c5,0xffb5cfd1,0xffaec9cb,
810 0xffa2bec0,0xff98b4b5,0xff8ba6a8,0xff7e9a9d,0xff739395,0xff6b8c8e,0xff658c8d,0xff639092,0xff70a1a4,0xff88b3b6,0xff5aadaf,0xff53adb3,0xff4ba9b2,0xff40a0a8,
811 0xff5c9398,0xff4a8488,0xff418d95,0xef2b7378,0xa2294449,0x53161616,0x33141414,0x1e1a1a1a,0xe121212,0x62b2b2b,0x3000000,0xa000000,0x16000000,0x545c7174,
812 0xda9abec2,0xffb2cfd2,0xffacc8cb,0xffa2bdc0,0xff91abae,0xff80989b,0xff788e90,0xff9dadae,0xffa9babb,0xffb6c9ca,0xffc0d5d7,0xffb9d2d4,0xffb3cdce,0xff8fb4b7,
813 0xff52a4a7,0xff4da8b1,0xff45a6ad,0xff3b9da6,0xff6fa2a7,0xff5b9095,0xff498086,0xff297e86,0xec2a676e,0x91243537,0x4e141414,0x2f161616,0x18151515,0xb171717,
814 0x6000000,0x11000000,0x23000000,0xbf88b0b4,0xffafced2,0xffaac9cd,0xffa2bfc3,0xff92adb0,0xffb0c7c9,0xffc0d5d6,0xffcadcde,0xffd1e1e1,0xffd4e3e4,0xffd2e3e4,
815 0xffcedfe1,0xffc7dcdd,0xffbfd6d7,0xff4c8b8f,0xff4c9ca2,0xff47a2ab,0xff40a0ab,0xff399aa4,0xff6aa2a9,0xff6b9da1,0xff598c91,0xff427d83,0xff28767e,0xdd2a585d,
816 0x6c151515,0x45161616,0x27141414,0x120e0e0e,0xb000000,0x1b000000,0x846f8e93,0xfaa3c7cd,0xffa5c9cd,0xff9fc2c6,0xff92b2b6,0xff7f9a9e,0xff667e80,0xffd0dfe0,
817 0xffd9e6e6,0xffe0eaea,0xffe2eced,0xffe0eced,0xffdbe8e9,0xffd3e3e3,0xffa4bcbe,0xff43868c,0xff44969f,0xff429da8,0xff3a9ea8,0xff3796a1,0xff45949c,0xff77a6a9,
818 0xff65979b,0xff5c888b,0xff296c73,0xfc276b74,0xbb284146,0x5f151515,0x39161616,0x1d121212,0x12000000,0x26000000,0xd085afb6,0xff9dc7cd,0xff9dc3c9,0xff94b8be,
819 0xff84a4aa,0xff6d898d,0xff687b7e,0xffd9e6e8,0xffe4eded,0xffecf2f3,0xffeef3f4,0xffebf3f3,0xffe4eef0,0xffdbe8ea,0xff628a8e,0xff3f848c,0xff3c919d,0xff3796a2,
820 0xff3396a2,0xff36929d,0xff45919a,0xff7eabaf,0xff6e9ea2,0xff5c8e92,0xff2b646c,0xff28676e,0xe9285659,0x79171717,0x4b141414,0x2a121212,0x19000000,0x6e59747b,
821 0xfa93c0c7,0xff98c2ca,0xff92bbc3,0xff87acb3,0xff73959b,0xff5c767b,0xffd2e2e2,0xffdfeaeb,0xffebf2f3,0xfff4f7f8,0xfff8fafb,0xfff4f8f8,0xffebf2f3,0xffe1ebec,
822 0xff356f76,0xff37848e,0xff348e99,0xff2c909d,0xff308f9c,0xff328c98,0xff72a3a9,0xff83aeb2,0xff75a4a8,0xff639598,0xff2e5e65,0xff295f66,0xfc266069,0xb0233437,
823 0x5e161616,0x37131313,0x21000000,0xab6b969e,0xff8ebec7,0xff8bbbc3,0xff84b1ba,0xff779fa7,0xff62858c,0xffaabcbe,0xffd5e4e5,0xffe3eded,0xffedf4f4,0xfff7fafa,
824 0xffffffff,0xfff8fafa,0xffedf4f4,0xff8fa8ab,0xff30727c,0xff2e808e,0xff288795,0xff278795,0xff2b8795,0xff2f8491,0xff88aeb2,0xff85b0b3,0xff7aa7ab,0xff69999e,
825 0xff305960,0xff2b5a61,0xff265e66,0xd6264448,0x71171717,0x45121212,0x29000000,0xd370a1ac,0xff83b9c4,0xff80b4be,0xff78a8b2,0xff68939c,0xff54767d,0xffc4d8da,
826 0xffd3e2e3,0xffe0ecec,0xffebf2f2,0xfff3f8f8,0xfff7fafb,0xfff4f8f8,0xffebf2f3,0xff2b656f,0xff2a7481,0xff257d8e,0xff1f808e,0xff23818e,0xff277e8d,0xff2c7c87,
827 0xff8fb6ba,0xff86b1b4,0xff7aa8ab,0xff6c9b9f,0xff32545a,0xff2e545b,0xff285961,0xed264d51,0x80181818,0x4f131313,0x2f000000,0xeb70a7b3,0xff79b3bf,0xff75aeb9,
828 0xff6c9fa9,0xff5b858f,0xff81989c,0xffc1d7d8,0xffd0e1e1,0xffdbe8e9,0xffe5eeef,0xffebf2f3,0xff98a8ab,0xffd7e1e3,0xffe4edee,0xff276c7a,0xff237585,0xff1b7787,
829 0xff1e7888,0xff1e7585,0xff227382,0xff5c8f98,0xff8db6b8,0xff84b0b3,0xff7aa8ac,0xff6d9da2,0xff345056,0xff2f5056,0xff2a555c,0xf7264f57,0x8d191919,0x5a141414,
830 0x34000000,0xf96da9b8,0xff6dacba,0xff69a5b3,0xff5f95a1,0xff507b85,0xffa7c1c3,0xffbcd3d6,0xffc9dbdd,0xffd2e3e4,0xffdbe8e9,0xffb3c2c5,0xff28525c,0xff29606c,
831 0xff64929d,0xff206f7f,0xff187283,0xff1a7183,0xff1a6f81,0xff1a6b7c,0xff1f6978,0xff92b9bb,0xff8ab3b7,0xff82afb2,0xff79a8ab,0xff6e9ea2,0xff364c51,0xff324d53,
832 0xff2b5157,0xfc265259,0x961a1a1a,0x61181818,0x37000000,0xfe65a7b7,0xff64a6b6,0xff5f9ead,0xff558d9b,0xff47737e,0xffa7c5c7,0xffb4ced0,0xffc0d6d9,0xffc9dbdd,
833 0xffcfe1e2,0xff26535e,0xff28616e,0xff266a7a,0xff1f6e7f,0xff166e80,0xff166e80,0xff548d9a,0xff186677,0xff196071,0xff87abae,0xff8db6b9,0xff87b2b4,0xff7facb0,
834 0xff77a6a9,0xff749c9f,0xff36494d,0xff324b50,0xff2c4e56,0xfe25515b,0x9a1a1a1a,0x66171717,0x39040404,0xf9599daf,0xff5a9fb1,0xff5596a8,0xff4c8795,0xff3e6d78,
835 0xffa0c0c3,0xffabc8ca,0xffb6cfd2,0xffbdd5d7,0xff5c7b82,0xff265d6b,0xff25687a,0xff206d81,0xff176e81,0xff166c7f,0xff166a7d,0xffa9c7c9,0xff9ab9be,0xff769aa1,
836 0xff8fb7ba,0xff88b3b6,0xff83afb2,0xff7babae,0xff74a5a8,0xff6d7e80,0xff37484c,0xff334a4f,0xff2c4c52,0xfc244a53,0x9c1a1a1a,0x66171717,0x38050505,0xed4d8fa2,
837 0xff5099ac,0xff4c91a4,0xff448091,0xff396a77,0xff97bbbd,0xffa3c2c5,0xffabc8cb,0xffb1cccf,0xff235362,0xff216172,0xff1e687e,0xff176a80,0xff166a7e,0xff15667b,
838 0xff156175,0xff9fc1c4,0xff97bcbf,0xff90b8bb,0xff8ab4b7,0xff83afb3,0xff7eacb0,0xff79a9ab,0xff71a3a7,0xff394649,0xff39484c,0xff32494e,0xff2c4c53,0xf924444b,
839 0x98191919,0x64141414,0x35050505,0xd7447d90,0xff4691a7,0xff428a9f,0xff3d7b8e,0xff336675,0xff8fb4b8,0xff99bec1,0xffa0c1c3,0xff8ca6ab,0xff215667,0xff1c6274,
840 0xff19667b,0xff19677d,0xff16637b,0xff166074,0xff7097a1,0xff96bbbe,0xff8fb7ba,0xff88b4b7,0xff84b1b3,0xff7eadaf,0xff7aa9ac,0xff75a6a9,0xff7a9799,0xff3b4649,
841 0xff38474c,0xff32494f,0xff294851,0xf1233d44,0x931a1a1a,0x5f151515,0x30050505,0xb5366775,0xff3d88a2,0xff39829a,0xff36778c,0xff2e6376,0xff85aeb1,0xff8fb7b9,
842 0xff96bcbe,0xff6a878f,0xff1e5769,0xff1c6073,0xff1b6478,0xff196378,0xff185f74,0xff175a6e,0xff92b9bb,0xff8db6b8,0xff87b3b6,0xff82afb2,0xff7eadb0,0xff7aa9ad,
843 0xff77a6aa,0xff71a2a6,0xff3c4346,0xff3c4649,0xff37474c,0xff30474e,0xff274650,0xe121353b,0x89181818,0x59141414,0x2a060606,0x81294953,0xfb357e99,0xff337c97,
844 0xff30738b,0xff2c6377,0xff79a6aa,0xff85afb3,0xff8cb6b8,0xff315966,0xff225869,0xff215e72,0xff206177,0xff1c5f74,0xff1b5c72,0xff467483,0xff89b4b7,0xff85b1b4,
845 0xff81afb2,0xff7eacaf,0xff7aaaad,0xff76a7a9,0xff73a4a7,0xff545a5b,0xff3e4447,0xff3b464a,0xff36474d,0xff2d464f,0xfd25434c,0xc51f2a2d,0x7d181818,0x4f131313,
846 0x22080808,0x420c0c0c,0xd92c647a,0xff2d7593,0xff2a6d88,0xff276177,0xff6f9399,0xff78a6aa,0xff82adb2,0xff365b69,0xff265769,0xff265d72,0xff256074,0xff245e73,
847 0xff225a6f,0xff7e9fa5,0xff82afb2,0xff7fadb0,0xff7cabaf,0xff79a8ac,0xff75a6aa,0xff72a3a7,0xff6ea0a4,0xff3f4446,0xff3e4649,0xff3a474b,0xff33464c,0xff2a444c,
848 0xf2223940,0x9d1a1a1a,0x6d151515,0x420f0f0f,0x1a0a0a0a,0x350e0e0e,0x9d244b57,0xfb256b88,0xff246985,0xff236078,0xff456d7c,0xff6c9b9f,0xff76a5a8,0xff69858d,
849 0xff2b5769,0xff2a5d70,0xff295e73,0xff295d72,0xff295a6e,0xff7eacb0,0xff7cabaf,0xff78a9ad,0xff76a6a9,0xff74a5a9,0xff71a2a6,0xff6ca0a4,0xff689b9e,0xff6b9395,
850 0xff3b4549,0xff36454c,0xff2d434c,0xfd254049,0xd31f2c30,0x89181818,0x5c131313,0x350e0e0e,0x130d0d0d,0x280d0d0d,0x490e0e0e,0xd1215669,0xff1e6581,0xff1e5e7a,
851 0xff21576d,0xff5c8e93,0xff68999e,0xff74949a,0xff2e5768,0xff2f5c6d,0xff305e72,0xff2f5d71,0xff77959d,0xff76a7ab,0xff75a6a9,0xff73a5a8,0xff7a9fa3,0xff7b969a,
852 0xff788a8d,0xff4e5558,0xff3f474a,0xff3d474b,0xff36454b,0xff30434b,0xff28404b,0xec20343a,0x9e1b1b1b,0x73161616,0x49111111,0x280d0d0d,0xc151515,0x1d121212,
853 0x36131313,0x7b193339,0xe71a556a,0xff1c5b77,0xff20576f,0xff486b7a,0xff588a8f,0xff619497,0xff2e5465,0xff30596a,0xff325c6e,0xff335d6f,0xff718d95,0xff516d7b,
854 0xff375663,0xff39515c,0xff3b4e56,0xff3d4b52,0xff3e4b50,0xff3e4a4e,0xff3b484d,0xff38464e,0xff32434c,0xff29404b,0xf522383f,0xbe1e2528,0x83171717,0x5b141414,
855 0x350e0e0e,0x1c090909,0x7242424,0x120e0e0e,0x26141414,0x43131313,0x97173a46,0xee1a5167,0xff1c5670,0xff21526a,0xff507981,0xff508389,0xff638089,0xff315567,
856 0xff335a6b,0xff355b6c,0xff385b6c,0xff395a69,0xff3b5765,0xff3c555f,0xff3d515b,0xff3d4e56,0xff3c4c53,0xff394951,0xff364850,0xff2f434c,0xff29404b,0xf8233841,
857 0xcc1e282c,0x8e191919,0x66141414,0x42131313,0x250e0e0e,0x120e0e0e,0x3000000,0xb171717,0x18151515,0x2d111111,0x4b141414,0x9e193642,0xea1a4a5f,0xff1c4f6a,
858 0xff1f4e64,0xff3c6e75,0xff46787e,0xff2d5164,0xff315365,0xff345668,0xff365868,0xff375666,0xff395563,0xff3a5360,0xff3a505d,0xff384d57,0xff354a55,0xff324750,
859 0xff2d444f,0xff273f4b,0xf521363f,0xcc1e282c,0x921a1a1a,0x6c151515,0x4b111111,0x2d111111,0x170b0b0b,0xa000000,0x1000000,0x5000000,0xe121212,0x1c121212,
860 0x31151515,0x4e171717,0x8b182c33,0xdb194251,0xfc1c4b64,0xff1f4a62,0xff39666d,0xff386a70,0xff2b4e60,0xff2d4f61,0xff305062,0xff325161,0xff33505e,0xff324d5c,
861 0xff324b59,0xff2f4855,0xff2c4653,0xff28414e,0xfd243d49,0xeb1f323a,0xbc1e2526,0x8e191919,0x6c151515,0x4d111111,0x30101010,0x1b090909,0xd000000,0x5000000,
862 0xffffff,0x2000000,0x6000000,0xf111111,0x1d121212,0x31151515,0x4b141414,0x68161616,0xb719333e,0xe81c404f,0xfc1c465b,0xff5b7984,0xff50727b,0xff25485c,
863 0xff27495a,0xff29495a,0xff294658,0xff294757,0xff274252,0xff264251,0xfd223f4c,0xf1213640,0xd11e2b30,0x9d1c1c1c,0x82181818,0x66141414,0x4a111111,0x30101010,
864 0x1c090909,0xe000000,0x6000000,0x2000000,0xffffff,0x1000000,0x2000000,0x7000000,0x10202020,0x1d1a1a1a,0x2d171717,0x44171717,0x5c161616,0x75181818,
865 0xad192b32,0xd41a3841,0xed39555f,0xfa6f858f,0xfd466371,0xfe214253,0xfc20404f,0xf81f3c4a,0xef1f3842,0xde1e3139,0xc31c282e,0x9b1a1a1a,0x87191919,0x73161616,
866 0x5a141414,0x42131313,0x2d111111,0x1b090909,0xe000000,0x7000000,0x2000000,0x1000000,0xffffff,0xffffff,0x1000000,0x2000000,0x7242424,0xe121212,
867 0x18151515,0x26141414,0x38171717,0x4a151515,0x5d161616,0x6f171717,0x7e181818,0x8b1a1a1a,0x9c3a3a3a,0xa9575757,0xa74c4c4c,0x9f3a3a3a,0x98353535,0x8a252525,
868 0x7d181818,0x6c151515,0x5b141414,0x49111111,0x350e0e0e,0x250e0e0e,0x170b0b0b,0xd000000,0x6000000,0x2000000,0x1000000,0xffffff,0xffffff,0xffffff,
869 0xffffff,0x1000000,0x2000000,0x62b2b2b,0xb171717,0x120e0e0e,0x1d121212,0x29131313,0x37131313,0x44131313,0x4f131313,0x59141414,0x60181818,0x65171717,
870 0x66171717,0x64141414,0x5f151515,0x58141414,0x4e141414,0x420f0f0f,0x350e0e0e,0x280d0d0d,0x1c090909,0x120e0e0e,0xa000000,0x5000000,0x2000000,0x1000000,
871 0xffffff,0xffffff
872};
873
874static const QRgb SettingsIcon_data[] = {
875 0x0,0x0,0x67bbbbc8,0xc6e3e3e9,0xbddfdfe6,0x61bdbdc8,0x36f6f78,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
876 0x0,0x0,0x1b91919e,0xd2d0d0d8,0xfffefefe,0xfef6f6f7,0x85b2b2be,0x1000000,0x0,0x0,0x0,0x0,0x0,0x0,
877 0x429494a9,0x661616f,0x0,0x1d858594,0xedd1d1da,0xfffefeff,0xf9d8d8e0,0x1a474750,0x0,0x0,0x0,0x0,0x0,0x0,
878 0xc5c1c1ce,0xa1a6a6b6,0x8626274,0x92a9a9bb,0xffe9e9ee,0xfff5f5f7,0xffdfdfe6,0x405c5c6b,0x0,0x0,0x0,0x0,0x0,0x0,
879 0xbab5b5c4,0xffe0e0e7,0xd8a8a8b9,0xffdddde4,0xffe9e9ee,0xffe9e9ee,0xffc5c5d1,0x303d3d4a,0x0,0x0,0x0,0x0,0x0,0x0,
880 0x5c818198,0xfecacad5,0xffdddde4,0xffdedee5,0xffdddde5,0xffd4d4dd,0xffc1c1cd,0xb7a39388,0x8fd79c2d,0x7895d1c,0x0,0x0,0x0,0x0,
881 0x33f3f51,0x7f74748c,0xf7a0a0b3,0xffb4b4c3,0xffafafbf,0xffcacad5,0xffcfc4bc,0xffe0ab39,0xffeeb524,0xa7d09b2c,0x67a521a,0x0,0x0,0x0,
882 0x0,0x1000000,0x192a2a39,0x403b3b50,0x3d39394d,0xd59a8c8b,0xffdea939,0xfff6a014,0xfffd9f12,0xfff1b523,0xa8c8922a,0x87e541b,0x0,0x0,
883 0x0,0x0,0x0,0x0,0x0,0x87ba8128,0xfff1b423,0xffffb71f,0xffffb71f,0xfffdb51f,0xfff2b824,0xa7c08827,0x76f4919,0x0,
884 0x0,0x0,0x0,0x0,0x0,0x5644217,0x9bb57e26,0xfff3bb27,0xffffcd2d,0xffffcb2b,0xfffebe24,0xfff5b622,0xa5b87d25,0x5533614,
885 0x0,0x0,0x0,0x0,0x0,0x0,0x4563814,0x9dae7524,0xfff1be2b,0xffffc528,0xffffa515,0xffff9c0f,0xfeeca21d,0x50825420,
886 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x55b3a17,0x9ca56b22,0xfff3a018,0xffffad1a,0xffff9a0e,0xfff49b14,0x69794d1e,
887 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x54e3115,0x9ba1631e,0xfee68912,0xfff28f0e,0xe2b06b1a,0x2637230f,
888 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x5472c15,0x4f6c421f,0x696b411d,0x2634200f,0x1000000
889};
890
891static const QRgb Shutdown_data[] = {
892 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0x1000000,0x3000000,0x6000000,0xb000000,0x12000000,0x19000000,0x21000000,0x29000000,0x2f000000,
893 0x34000000,0x37000000,0x38000000,0x37000000,0x34000000,0x2f000000,0x29000000,0x21000000,0x19000000,0x12000000,0xb000000,0x6000000,0x3000000,0x1000000,
894 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0x1000000,0x2000000,0x5000000,0xa000000,0x11000000,0x1b000000,0x26000000,
895 0x5d9a5254,0x93c36569,0xbed86d71,0xdee47175,0xf3ec7075,0xfef16f73,0xf3eb6669,0xe0e25d5f,0xc4d04f53,0x9fb44042,0x70832a2e,0x3f000000,0x33000000,0x26000000,
896 0x1b000000,0x11000000,0xa000000,0x5000000,0x2000000,0x1000000,0xffffff,0xffffff,0xffffff,0xffffff,0x1000000,0x2000000,0x6000000,0xd000000,
897 0x16000000,0x23000000,0x6fb26366,0xbad9787b,0xf5f18388,0xfff38386,0xfff27e82,0xffee797b,0xffed7276,0xffec6d70,0xffec656a,0xffed6065,0xffef5a5e,0xfff05258,
898 0xf7ec4a4f,0xc6cb393e,0x88942529,0x45000000,0x33000000,0x23000000,0x16000000,0xd000000,0x6000000,0x2000000,0x1000000,0xffffff,0xffffff,0x1000000,
899 0x2000000,0x7000000,0xe000000,0x1a000000,0x478a4e4f,0xa7d4787a,0xf5f38a8d,0xfff6898d,0xfff5888c,0xfff28285,0xffed7b7f,0xffe87578,0xffe36d71,0xffe1666a,
900 0xffe36165,0xffe75b60,0xffeb545a,0xffee4e53,0xfff1484d,0xfff24047,0xf8eb373e,0xbcbc272b,0x6c5f1013,0x3e000000,0x2a000000,0x1a000000,0xe000000,0x7000000,
901 0x2000000,0x1000000,0xffffff,0x2000000,0x6000000,0xe000000,0x1b000000,0x5fa96163,0xc6e18183,0xfff78d90,0xfff78c8e,0xfff68b8d,0xfff3868a,0xffee7f82,
902 0xffe7797b,0xffde7073,0xffd76669,0xffd46063,0xffd75a5d,0xffdd5659,0xffe34f54,0xffeb4a4e,0xffee4248,0xfff03b41,0xfff13338,0xfff02a31,0xd7cb1f25,0x85791216,
903 0x46000000,0x2e000000,0x1b000000,0xe000000,0x6000000,0x2000000,0x1000000,0x5000000,0xd000000,0x1a000000,0x5fa96163,0xd0e58387,0xfff78d91,0xfff68d8f,
904 0xfff68c8e,0xfff48a8d,0xffef8488,0xffe87c7f,0xffdc7175,0xffd1686b,0xffffffff,0xffffffff,0xffffffff,0xffcf4d51,0xffd9484c,0xffe34248,0xffec3d41,0xffee3539,
905 0xffef2b33,0xffee242b,0xffe9232a,0xe0c71e24,0x8a701214,0x48000000,0x2e000000,0x1a000000,0xd000000,0x5000000,0x3000000,0xa000000,0x16000000,0x478a4e4f,
906 0xc6e18183,0xfff78d91,0xfff68d90,0xfff58d8f,0xfff38a8d,0xfff0878a,0xffe87e82,0xffdd7779,0xffd06a6d,0xffc46063,0xffffffff,0xffffffff,0xffffffff,0xffc24549,
907 0xffcd4045,0xffda3b41,0xffe3343b,0xffeb2d34,0xffec252b,0xffe8232a,0xffe32329,0xffdf2228,0xdbb61b22,0x7b4c0c0d,0x46000000,0x2a000000,0x16000000,0xa000000,
908 0x6000000,0x11000000,0x23000000,0xa7d4787a,0xfff78d90,0xfff68d8f,0xfff48d8e,0xfff18b8d,0xffed8588,0xffe78084,0xffdd787b,0xffd16e71,0xffc16164,0xffb5575a,
909 0xffffffff,0xffffffff,0xffffffff,0xffb33d40,0xffbe373c,0xffcd3337,0xffd92d33,0xffe1252d,0xffe02229,0xffdf2228,0xffdd2228,0xffd92028,0xffd52027,0xc89a171b,
910 0x60000000,0x3e000000,0x23000000,0x11000000,0xb000000,0x1b000000,0x6fb26366,0xf5f38a8d,0xfff68c8e,0xfff58b8d,0xfff1898c,0xffec8487,0xffe27d81,0xffda777a,
911 0xffcf6f72,0xffcb7f82,0xffd5a7a8,0xffa74e51,0xffffffff,0xffffffff,0xffffffff,0xffa63437,0xffd39496,0xffc85156,0xffca2429,0xffd22027,0xffd32025,0xffd52027,
912 0xffd31f25,0xffd22027,0xffcd1f25,0xf9c41d23,0xa2691013,0x55000000,0x33000000,0x1b000000,0x12000000,0x26000000,0xbad9787b,0xfff6898d,0xfff68b8d,0xfff3898c,
913 0xffed8588,0xffe27d81,0xffd67578,0xffcb6e70,0xffd9a7a8,0xfff0e2e2,0xffffffff,0xff9b4749,0xffffffff,0xffffffff,0xffffffff,0xff9a2e31,0xffffffff,0xfff0d9da,
914 0xffd68486,0xffbf1d23,0xffc21e24,0xffc81e24,0xffcb1f25,0xffcb1f25,0xffc71e24,0xffc31e23,0xd796161b,0x6c000000,0x45000000,0x26000000,0x19000000,0x5d9a5254,
915 0xf5f28488,0xfff5888c,0xfff3868a,0xffee8387,0xffe47c80,0xffd87579,0xffc86c6e,0xffddb3b5,0xfffefefe,0xffffffff,0xffffffff,0xff974245,0xffffffff,0xffffffff,
916 0xffffffff,0xff95282b,0xffffffff,0xffffffff,0xfffefdfd,0xffd69597,0xffb21a20,0xffba1d22,0xffbd1d23,0xffc11d23,0xffbf1e23,0xffbd1d22,0xfab31b20,0x9b4c0c0f,
917 0x56000000,0x33000000,0x21000000,0x93c4676a,0xfff68487,0xfff58487,0xfff18184,0xffe97d80,0xffdd7679,0xffcc6c6f,0xffd7a5a7,0xfffefefe,0xffffffff,0xffffffff,
918 0xffefe4e4,0xff963e41,0xffffffff,0xffffffff,0xffffffff,0xff942327,0xffefe0e0,0xffffffff,0xffffffff,0xfffefdfd,0xffc88284,0xffa91a1f,0xffb11b20,0xffb61b22,
919 0xffb71d20,0xffb51b20,0xffb21b20,0xc2711214,0x67000000,0x3f000000,0x29000000,0xbeda6f73,0xfff68084,0xfff47f83,0xffee7c80,0xffe47679,0xffd56d70,0xffcb7c7e,
920 0xfff0e1e2,0xffffffff,0xffffffff,0xffd8b9ba,0xffae6b6c,0xff9b3c3e,0xffffffff,0xffffffff,0xffffffff,0xff9a1e23,0xffaa4d50,0xffd4aaac,0xffffffff,0xffffffff,
921 0xffebd7d8,0xffab4548,0xffa4191e,0xffab1a1f,0xffad1a1f,0xffad1a1f,0xffac1a1f,0xde841419,0x75000000,0x4a000000,0x2f000000,0xdee77376,0xfff57b7e,0xfff27a7c,
922 0xffeb7779,0xffdd6e72,0xffcb6468,0xffd8a7a8,0xffffffff,0xffffffff,0xfff1e4e5,0xffb56c6e,0xffa43f42,0xffa6393d,0xffffffff,0xffffffff,0xffffffff,0xffa3191e,
923 0xff9a171b,0xffa64d4f,0xffeedfdf,0xffffffff,0xffffffff,0xffc28a8c,0xff97171b,0xffa0191e,0xffa4191e,0xffa4191e,0xffa4191e,0xef91161a,0x81000000,0x53000000,
924 0x34000000,0xf3ef7377,0xfff5767a,0xfff27478,0xffe86e72,0xffda666a,0xffc65b5e,0xffe7cccd,0xffffffff,0xffffffff,0xffd7b0b1,0xffac4045,0xffb03d40,0xffb4373b,
925 0xffffffff,0xffffffff,0xffffffff,0xffa91a1e,0xff9e171d,0xff93161a,0xffcba1a3,0xffffffff,0xffffffff,0xffdabebf,0xff8c1419,0xff95171a,0xff9c171d,0xff9e191d,
926 0xff9d171d,0xf997161b,0x89000000,0x59000000,0x37000000,0xfef47175,0xfff57175,0xfff06d71,0xffe6686b,0xffd65e62,0xffc25357,0xfff5ebeb,0xffffffff,0xffffffff,
927 0xffc47f81,0xffb43c3f,0xffbc383c,0xffc13136,0xffffffff,0xffffffff,0xffffffff,0xffae1a20,0xffa2191d,0xff93161b,0xffac696b,0xffffffff,0xffffffff,0xfff0e6e7,
928 0xff831317,0xff8c1619,0xff93161b,0xff97171d,0xff98171b,0xfe97171b,0x8e000000,0x5e000000,0x38000000,0xf3ee676b,0xfff4696e,0xfff0676b,0xffe56063,0xffd3565b,
929 0xffc04b4f,0xfffefdfd,0xffffffff,0xffffffff,0xffb65256,0xffb93538,0xffc53135,0xffcd2a30,0xffce1f25,0xffc71e23,0xffbe1d23,0xffb31a20,0xffa3191e,0xff91161a,
930 0xff91383b,0xffffffff,0xffffffff,0xfffdfdfd,0xff7b1216,0xff851419,0xff8d161a,0xff90161b,0xff92161a,0xfa8c1419,0x90000000,0x5f000000,0x37000000,0xe0e45e61,
931 0xfff36368,0xffef5e63,0xffe5595c,0xffd54f53,0xffc14348,0xfff5e9ea,0xffffffff,0xffffffff,0xffc57679,0xffb92b30,0xffc7272d,0xffd12027,0xffcd1f25,0xffc61e24,
932 0xffbd1d22,0xffaf1a20,0xff9d171d,0xff8a1419,0xffa5686a,0xffffffff,0xffffffff,0xffeee6e6,0xff771316,0xff801317,0xff871419,0xff8c161a,0xff8d161a,0xf27b1317,
933 0x8e000000,0x5e000000,0x34000000,0xc4d15054,0xfff35b60,0xfff0575c,0xffe65054,0xffd7484c,0xffc43e41,0xffe7c5c6,0xffffffff,0xffffffff,0xffd7a6a7,0xffb21f24,
934 0xffbd1d22,0xffc41d23,0xffc41d24,0xffbd1d22,0xffb21b20,0xffa4191d,0xff90161a,0xff7e1317,0xffc2a0a1,0xffffffff,0xffffffff,0xffd3bebe,0xff741214,0xff7d1317,
935 0xff831317,0xff871419,0xff881419,0xe56a1013,0x89000000,0x59000000,0x2f000000,0x9fb64045,0xfff35359,0xffef4e53,0xffe8494e,0xffdb4045,0xffc9363c,0xffd79395,
936 0xffffffff,0xffffffff,0xfff1dfe0,0xffb74e51,0xffad1a1f,0xffb11a1f,0xffb21b20,0xffad1a1f,0xffa2191d,0xff93161a,0xff821417,0xff8f4a4c,0xffe8dedf,0xffffffff,
937 0xffffffff,0xffb08889,0xff721214,0xff7a1316,0xff7f1317,0xff811417,0xff851419,0xd1510c0f,0x81000000,0x53000000,0x29000000,0x70832a2e,0xf7ed4a4f,0xfff0484d,
938 0xffeb4147,0xffe0393f,0xffd13036,0xffc84f53,0xffefd9d9,0xffffffff,0xffffffff,0xffd6abac,0xffae4d51,0xff9d171d,0xff9d171d,0xff97171b,0xff8e161a,0xff821317,
939 0xff904a4d,0xffc4a9a9,0xffffffff,0xffffffff,0xffe3d7d7,0xff844041,0xff731216,0xff791216,0xff7d1317,0xff801317,0xfc7d1216,0xb5300808,0x75000000,0x4a000000,
940 0x21000000,0x3f000000,0xc6cb393e,0xfff14047,0xffec3940,0xffe43337,0xffd8292f,0xffc82227,0xffd28385,0xfffefdfd,0xffffffff,0xffffffff,0xffeedfdf,0xffcca1a3,
941 0xffae696b,0xff92383c,0xffa5686a,0xffc2a0a1,0xffe8dedf,0xffffffff,0xffffffff,0xfffefdfd,0xffa87e80,0xff6d1213,0xff741214,0xff7a1216,0xff7b1317,0xff7e1317,
942 0xe6600f12,0x93000000,0x67000000,0x3f000000,0x19000000,0x33000000,0x88942529,0xf8ea373e,0xffee3137,0xffe82a31,0xffdf2329,0xffce1f25,0xffbc1d22,0xffd39597,
943 0xfffefdfd,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffefdfd,0xffb49193,0xff6b1013,0xff721014,
944 0xff761216,0xff7a1316,0xff7b1317,0xfc7a1216,0xc33b080a,0x81000000,0x56000000,0x33000000,0x12000000,0x26000000,0x45000000,0xbcbc272b,0xffef2a31,0xffeb242a,
945 0xffe02229,0xffd12025,0xffc21e24,0xffb21a20,0xffc88284,0xffebd7d8,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffe3d7d7,
946 0xffa87e80,0xff6b1013,0xff701014,0xff741216,0xff781216,0xff7a1316,0xff7b1316,0xdf540d10,0x94000000,0x6c000000,0x45000000,0x26000000,0xb000000,0x1b000000,
947 0x33000000,0x6c5f1013,0xd7ca1f25,0xffe8232a,0xffdf2228,0xffd52027,0xffc71e23,0xffba1d22,0xffaa1a1f,0xffac4548,0xffc38a8c,0xffdabebf,0xfff0e6e7,0xfffdfdfd,
948 0xffeee6e6,0xffd4bebe,0xffb18889,0xff854041,0xff6f1214,0xff721014,0xff741216,0xff781216,0xff791316,0xff7a1316,0xed620f12,0xae220506,0x7b000000,0x55000000,
949 0x33000000,0x1b000000,0x6000000,0x11000000,0x23000000,0x3e000000,0x85791216,0xe0c61e24,0xffdd2228,0xffd51f27,0xffcb1f25,0xffbf1d23,0xffb31b20,0xffa5191e,
950 0xff9a171d,0xff8f161a,0xff851417,0xff7e1316,0xff7a1317,0xff771216,0xff761216,0xff741216,0xff751214,0xff771216,0xff781216,0xff791316,0xff7a1316,0xf0660f12,
951 0xbc300608,0x85000000,0x60000000,0x3e000000,0x23000000,0x11000000,0x3000000,0xa000000,0x16000000,0x2a000000,0x46000000,0x8a701214,0xdbb61b22,0xffd22027,
952 0xffcb1f25,0xffc21d23,0xffb81d22,0xffad1a1f,0xffa2191e,0xff99171b,0xff90161a,0xff881419,0xff831417,0xff7f1317,0xff7d1316,0xff7b1317,0xff7a1216,0xff7a1316,
953 0xff7b1317,0xff7a1316,0xed620f12,0xbc300608,0x88000000,0x66000000,0x46000000,0x2a000000,0x16000000,0xa000000,0x1000000,0x5000000,0xd000000,0x1a000000,
954 0x2e000000,0x48000000,0x7b4c0c0d,0xc89a171b,0xf9c31d23,0xffc01e23,0xffba1d20,0xffb01a1f,0xffa7191e,0xff9d171d,0xff97171b,0xff90161b,0xff8b141a,0xff861419,
955 0xff831317,0xff7f1417,0xff7e1317,0xff7c1317,0xfc7a1216,0xdf540d10,0xae220506,0x85000000,0x66000000,0x48000000,0x2e000000,0x1a000000,0xd000000,0x5000000,
956 0xffffff,0x2000000,0x6000000,0xe000000,0x1b000000,0x2e000000,0x46000000,0x60000000,0xa2691013,0xd795161b,0xfab21b20,0xffb11b20,0xffaa1a1f,0xffa3191e,
957 0xff9a171d,0xff95171b,0xff8f161a,0xff8c161a,0xff861419,0xff841419,0xfc7d1216,0xe6600f12,0xc33b080a,0x94000000,0x7b000000,0x60000000,0x46000000,0x2e000000,
958 0x1b000000,0xe000000,0x6000000,0x2000000,0xffffff,0x1000000,0x2000000,0x7000000,0xe000000,0x1a000000,0x2a000000,0x3e000000,0x55000000,0x6c000000,
959 0x9b4c0c0f,0xc2711214,0xde841419,0xef91161a,0xf997161b,0xfe97171b,0xfa8c1419,0xf27b1317,0xe56a1013,0xd1510c0f,0xb5300808,0x93000000,0x81000000,0x6c000000,
960 0x55000000,0x3e000000,0x2a000000,0x1a000000,0xe000000,0x7000000,0x2000000,0x1000000,0xffffff,0xffffff,0x1000000,0x2000000,0x6000000,0xd000000,
961 0x16000000,0x23000000,0x33000000,0x45000000,0x56000000,0x67000000,0x75000000,0x81000000,0x89000000,0x8e000000,0x90000000,0x8e000000,0x89000000,0x81000000,
962 0x75000000,0x67000000,0x56000000,0x45000000,0x33000000,0x23000000,0x16000000,0xd000000,0x6000000,0x2000000,0x1000000,0xffffff,0xffffff,0xffffff,
963 0xffffff,0x1000000,0x2000000,0x5000000,0xa000000,0x11000000,0x1b000000,0x26000000,0x33000000,0x3f000000,0x4a000000,0x53000000,0x59000000,0x5e000000,
964 0x5f000000,0x5e000000,0x59000000,0x53000000,0x4a000000,0x3f000000,0x33000000,0x26000000,0x1b000000,0x11000000,0xa000000,0x5000000,0x2000000,0x1000000,
965 0xffffff,0xffffff
966};
967
968static const QRgb Sound_data[] = {
969 0xffffff,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3c00c600,0xaf00cc00,0xe600d400,0xf600dc00,0xff00e400,
970 0xff00ec00,0xff00f400,0xff00fc00,0xff00f800,0xff00ee00,0xfe00e300,0xef00d800,0xc000ce00,0x5700c400,0x0,0x0,0x0,0x0,0x0,
971 0x0,0x0,0x0,0x0,0xffffff,0xffffff,0x0,0x0,0x0,0x0,0x0,0x9c00b500,0xef00bd00,0xff00c400,
972 0xff00cc00,0xff00d400,0xff00dc00,0xff00d400,0xff00d900,0xff00d700,0xff00db00,0xff00dd00,0xff00d300,0xff00d600,0xff00d800,0xff00ce00,0xff00c300,0xfc00b701,
973 0xc200ac01,0x23009106,0x0,0x0,0x0,0x0,0x0,0x0,0xffffff,0xffffff,0x0,0x0,0x0,0x5700a600,
974 0xf600ad00,0xff00b400,0xff00bc00,0xff00bd00,0xf100b303,0xcd009c06,0x9d007808,0x6000350d,0x4300000e,0x4300000e,0x4300000e,0x4300000e,0x4300000e,0x8d006400,
975 0xb4007302,0xe2009b00,0xfc00a900,0xff00b300,0xff00ae00,0xfe00a200,0xa9008904,0x4000030,0x0,0x0,0x0,0x0,0xffffff,0xffffff,
976 0x0,0x0,0x9c009e00,0xff00a400,0xff00aa00,0xfd00a401,0xc3008108,0x67003110,0x3b000008,0x2f000000,0x26000000,0x1a000000,0xb000000,0x4000000,
977 0x4000000,0x4000000,0x4000000,0x4000000,0x16000000,0x20000000,0x2c000000,0x8c005400,0xeb008900,0xff009b00,0xff009800,0xe7008303,0xf00002d,0x0,
978 0x0,0x0,0xffffff,0xffffff,0x0,0x9c009600,0xff009c00,0xfe009c00,0xc3007108,0x51000016,0x35000004,0x24000000,0xd000000,0x2000000,
979 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x16000000,0x8a005d00,
980 0xf8008500,0xff008e00,0xea007704,0x1700002a,0x0,0x0,0xffffff,0xffffff,0x3c008e00,0xff009400,0xf9008d02,0x85003511,0x3e00000b,0x24000000,
981 0x7000000,0x1000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
982 0x0,0x0,0x0,0x0,0x16000000,0xe2007600,0xff008300,0xce006307,0x8000018,0x0,0xffffff,0xffffff,0xdb008d00,0xf8008402,
983 0x73001c16,0x35000004,0x15000000,0x3000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
984 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe1007000,0xfd007601,0x4e00001c,0x1000000,
985 0xffffff,0xffffff,0xff008900,0x97003c0f,0x3a000008,0x10000000,0x1000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
986 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
987 0x1f006000,0xfc007400,0xa900460c,0x9000000,0xffffff,0xffffff,0xe2007803,0x51000016,0x1a000000,0x2000000,0x0,0x0,0x0,0x0,
988 0x0,0x0,0x5700d500,0x9c00de00,0xc000e800,0xc000f200,0xc000fc00,0xc000f700,0xc000e900,0x7000dc00,0x1f00d400,0x0,0x0,0x0,
989 0x0,0x0,0x0,0x0,0x0,0x9e006f00,0xa900460c,0x1e000000,0xffffff,0xffffff,0x93006505,0x35000009,0x7000000,0x0,
990 0x0,0x0,0x0,0x7000b800,0xdb00c100,0xfe00ca00,0xff00d400,0xff00de00,0xff00e800,0xff00f200,0xff00fc00,0xff00f700,0xff00e900,0xff00dc00,
991 0xff00cf00,0xf600c200,0xaf00b500,0x23009606,0x0,0x0,0x0,0x0,0x0,0x1f006700,0x90005407,0x1e000000,0xffffff,0xffffff,
992 0x4000030,0x1d000000,0x2000000,0x0,0x0,0x3c00a500,0xef00ad00,0xff00b600,0xff00bf00,0xf900bd02,0xe300ac05,0xbd009605,0x9a007307,0x97006f05,
993 0x97006905,0x97006205,0x97005d05,0xcd00a000,0xed00a801,0xfe00a900,0xff00b500,0xfe00a600,0xb8009103,0xa000030,0x0,0x0,0x0,0x0,
994 0xa000013,0x1a000000,0xffffff,0xffffff,0x0,0x1000000,0x0,0x0,0x87009a00,0xfe00a200,0xff00a800,0xea009a04,0x8300490f,0x45000010,
995 0x32000000,0x2c000000,0x23000000,0x1a000000,0x19000000,0x19000000,0x19000000,0x19000000,0x26000000,0x2e000000,0xb0007200,0xfc009300,0xff009a00,0xe7008303,
996 0x32005011,0x0,0x0,0x0,0x0,0x1000000,0xffffff,0xffffff,0x0,0x0,0x0,0x57009100,0xff009800,0xf9009102,
997 0x85003b11,0x4300000e,0x2e000000,0x14000000,0x5000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
998 0x0,0x1f000000,0xbf006e00,0xff008700,0xea007504,0x1d000021,0x0,0x0,0x0,0x0,0xffffff,0xffffff,0x0,0x0,
999 0x0,0xf6008f00,0xe7007e04,0x58000019,0x35000004,0x15000000,0x4000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
1000 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x6e005600,0xfe007d00,0xa6004c0b,0x8000018,0x0,0x0,0x0,
1001 0xffffff,0xffffff,0x0,0x0,0x57008b00,0xf8008202,0x72001a16,0x2e000000,0x9000000,0x1000000,0x0,0x0,0x0,0x70bababa,
1002 0x70bcbcbc,0x70bebebe,0x70c0c0c0,0x70c3c3c3,0x70c5c5c5,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xb4006d00,0xea006904,
1003 0x35000018,0x1000000,0x0,0x0,0xffffff,0xffffff,0x0,0x0,0x70008b00,0xa6005b09,0x3a000008,0x10000000,0x1fb4b4b4,0x9cababab,
1004 0xe69f9f9f,0xfb959595,0xff8f8f8f,0xff959595,0xff9b9b9b,0xffa2a2a2,0xffa7a7a7,0xffacacac,0xffafafaf,0xffb1b1b1,0xfbb8b8b8,0xe6c0c0c0,0x9cc9c9c9,0x23b4b4ba,
1005 0x0,0x0,0x0,0xe3006c01,0x4c000017,0x5000000,0x0,0x0,0xffffff,0xffffff,0x0,0x0,0x57007400,0x2b00001a,
1006 0x547d7d7d,0xdb999999,0xff7d7d7d,0xff7f7f7f,0xff767676,0xff6e6e6e,0xff686868,0xff626262,0xff626262,0xff636363,0xff6a6a6a,0xff737373,0xff7b7b7b,0xff8a8a8a,
1007 0xff9c9c9c,0xffababab,0xffb8b8b8,0xffbcbcbc,0xe0c1c1c3,0x45b5b5bb,0x0,0x70006e00,0x40000011,0x7000000,0x0,0x0,0xffffff,0xffffff,
1008 0x0,0x0,0x0,0xc4969696,0xff747474,0xff797979,0xff6b6b6b,0xff626262,0xff626262,0xff626262,0xff626262,0xff626262,0xff626262,0xff686868,
1009 0xff707070,0xff797979,0xff818181,0xff8a8a8a,0xff929292,0xff9a9a9a,0xffa3a3a3,0xffb0b0b0,0xffbababa,0xffc0c0c0,0xcbbcbcbf,0xa000030,0x16000000,0x5000000,
1010 0x0,0x0,0xffffff,0xffffff,0x0,0x0,0xdb8f8f8f,0xff737373,0xff6c6c6c,0xff626262,0xff626262,0xff626262,0xff626262,0xff626262,
1011 0xff626262,0xff626262,0xff666666,0xff6e6e6e,0xff777777,0xff7f7f7f,0xff888888,0xff909090,0xff989898,0xffa1a1a1,0xffa9a9a9,0xffb1b1b1,0xffb9b9b9,0xffbfbfbf,
1012 0xffc1c1c1,0xe7bcbcbf,0x1000002a,0x0,0x0,0x0,0xffffff,0xffffff,0x0,0x9c9c9c9c,0xff6f6f6f,0xff696969,0xff626262,0xff626262,
1013 0xff626262,0xff626262,0xff626262,0xff626262,0xff626262,0xff646464,0xff6c6c6c,0xff757575,0xff7d7d7d,0xff868686,0xff8e8e8e,0xff969696,0xff9f9f9f,0xffa7a7a7,
1014 0xffb0b0b0,0xffb7b7b7,0xffbfbfbf,0xffc8c8c8,0xffcbcbcb,0xffc3c3c3,0xc1a0a0a7,0x700001b,0x0,0x0,0xffffff,0xffffff,0x0,0xf67b7b7b,
1015 0xff717171,0xff626262,0xff626262,0xff626262,0xff626262,0xff626262,0xff626262,0xff626262,0xff909090,0xffc0c0c0,0xffd7d7d7,0xffe7e7e7,0xffeeeeee,0xffdcdcdc,
1016 0xffc7c7c7,0xffb4b4b4,0xffa5a5a5,0xffaeaeae,0xffb5b5b5,0xffbdbdbd,0xffc6c6c6,0xffcecece,0xffd6d6d6,0xffcacaca,0xf9c6c6c8,0x40000019,0x1000000,0x0,
1017 0xffffff,0xffffff,0x0,0xff646464,0xff747474,0xff626262,0xff626262,0xff626262,0xff626262,0xff626262,0xff737373,0xffaaaaaa,0xffc1c1c1,0xffc6c6c6,
1018 0xffbdbdbd,0xffb4b4b4,0xffaaaaaa,0xffb9b9b9,0xffd7d7d7,0xffcfcfcf,0xffbababa,0xffb5b5b5,0xffbbbbbb,0xffc4c4c4,0xffcccccc,0xffd4d4d4,0xffdcdcdc,0xffcccccc,
1019 0xffcecece,0x5e00001c,0x7000000,0x0,0xffffff,0xffffff,0x0,0xff5f5f5f,0xff727272,0xff626262,0xff626262,0xff626262,0xff626262,0xff656565,
1020 0xff929292,0xff787878,0xff868686,0xff919191,0xff8b8b8b,0xff808080,0xff787878,0xff787878,0xff7b7b7b,0xff9c9c9c,0xffa1a1a1,0xff989898,0xffbfbfbf,0xffcacaca,
1021 0xffd2d2d2,0xffdadada,0xffe3e3e3,0xffd0d0d0,0xffc2c2c2,0x5f00001c,0xb000000,0x0,0xffffff,0xffffff,0x0,0xfe4d4d4d,0xff747474,0xff646464,
1022 0xff626262,0xff626262,0xff626262,0xff686868,0xff656565,0xff505050,0xff505050,0xff505050,0xff505050,0xff505050,0xff505050,0xff505050,0xff505050,0xff5d5d5d,
1023 0xff6a6a6a,0xff656565,0xffb5b5b5,0xffd0d0d0,0xffd8d8d8,0xffe1e1e1,0xffe6e6e6,0xffcccccc,0xf9acacad,0x5a00001a,0xb000000,0x0,0xffffff,0xffffff,
1024 0x0,0xdb3c3c3c,0xff686868,0xff757575,0xff626262,0xff626262,0xff626262,0xff616161,0xff505050,0xff373737,0xff353535,0xff353535,0xff353535,0xff353535,
1025 0xff353535,0xff373737,0xff3e3e3e,0xff474747,0xff3d3d3d,0xff505050,0xffc0c0c0,0xffd6d6d6,0xffdfdfdf,0xffe5e5e5,0xffd4d4d4,0xffc2c2c2,0xd1606068,0x48000012,
1026 0xa000000,0x0,0xffffff,0xffffff,0x0,0x1f424242,0xfc2a2a2a,0xff696969,0xff7a7a7a,0xff6b6b6b,0xff626262,0xff686868,0xff5c5c5c,0xff494949,
1027 0xff3d3d3d,0xff353535,0xff353535,0xff353535,0xff353535,0xff3a3a3a,0xff393939,0xff3d3d3d,0xff4a4a4a,0xff9e9e9e,0xffd4d4d4,0xffdddddd,0xffe1e1e1,0xffd9d9d9,
1028 0xffc5c5c5,0xf9767678,0x6100001d,0x27000000,0x5000000,0x0,0xffffff,0xffffff,0x0,0x0,0x5b3b3b3b,0xf8252525,0xff4c4c4c,0xff838383,
1029 0xff7f7f7f,0xff787878,0xff7b7b7b,0xff737373,0xff606060,0xff4c4c4c,0xff474747,0xff474747,0xff474747,0xff474747,0xff4c4c4c,0xff727272,0xffacacac,0xffd6d6d6,
1030 0xffe1e1e1,0xffe0e0e0,0xffd5d5d5,0xffa3a3a3,0xf66f6f72,0x731b1b31,0x35000004,0xc000000,0x0,0x0,0xffffff,0xffffff,0x0,0x0,
1031 0x0,0x2e2f2f2f,0xcc343434,0xff242424,0xff535353,0xff818181,0xff959595,0xff999999,0xff9f9f9f,0xffa2a2a2,0xff989898,0xffa0a0a0,0xffa7a7a7,0xffaeaeae,
1032 0xffc9c9c9,0xffdadada,0xffdcdcdc,0xffdcdcdc,0xffc1c1c1,0xff9a9a9a,0xfe727273,0xd158585f,0x53000017,0x34000004,0x10000000,0x1000000,0x0,0x0,
1033 0xffffff,0xffffff,0x0,0x0,0x0,0x0,0x6000000,0x40252525,0xbf3c3c3c,0xf9313131,0xff373737,0xff515151,0xff6b6b6b,0xff7f7f7f,
1034 0xff939393,0xff989898,0xff9e9e9e,0xffa4a4a4,0xff949494,0xff929292,0xff828282,0xff6a6a6a,0xf6646466,0xc352525a,0x6a1f1f31,0x3b000008,0x27000000,0x8000000,
1035 0x1000000,0x0,0x0,0x0,0xffffff,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x6000000,0x57262626,
1036 0xff393939,0xff505050,0xff444444,0xff3e3e3e,0xff404040,0xff454545,0xff4d4d4d,0xff565656,0xff696969,0xff7e7e7e,0xff737373,0xf95f5f60,0x5f00001c,0x31000000,
1037 0x24000000,0xe000000,0x2000000,0x0,0x0,0x0,0x0,0x0,0xffffff,0xffffff,0x0,0x0,0x0,0x0,
1038 0x0,0x0,0x0,0x0,0xa13d3d3d,0xfe444444,0xff4b4b4b,0xff464646,0xff434343,0xff444444,0xff535353,0xff646464,0xff737373,0xff6e6e6e,
1039 0xf9646466,0x99373745,0x3a000008,0xb000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffffff,0xffffff,
1040 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3a272727,0xbf474747,0xeb515151,0xf6535356,0xff5e5e5e,
1041 0xfe626262,0xf6616163,0xea5f5f63,0xb04f4f56,0x4d000015,0x35000004,0x19000000,0x2000000,0x0,0x0,0x0,0x0,0x0,0x0,
1042 0x0,0x0
1043};
1044
1045static const QRgb SoundPlayer_data[] = {
1046 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x318091d7,0x537c8dd0,0x847c8ace,
1047 0x867987c9,0x867784c5,0x586e7cb9,0x27626ea4,0x4000000,0x1000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
1048 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x218597de,0xa18598df,
1049 0xf08496de,0xff95a4e2,0xffa5b0e7,0xffafb7ea,0xffacb5e9,0xffaab2e7,0xff9ca6df,0xff838fcf,0xe37381c1,0x8b6b77b2,0x2a566091,0x5000000,0x1000000,0x0,
1050 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
1051 0x108da0eb,0xa1899de6,0xff90a1e7,0xffb8c2f1,0xffdde1fb,0xffe9edff,0xffe8edff,0xffe8eeff,0xffe6edff,0xffc7d6ff,0xffc7d4ff,0xffc9d4ff,0xffc1cbf8,0xff9ba3dc,
1052 0xff7783c1,0x90636da6,0x1d3c4365,0x4000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
1053 0x0,0x0,0x0,0x318ca0e9,0xf08ca0eb,0xffb6c2f3,0xffe9ecfe,0xfff0f3ff,0xffeef3ff,0xffedf1ff,0xffebf0ff,0xffe9efff,0xffe8eeff,0xffc9d8ff,
1054 0xffc7d6ff,0xffc3d4ff,0xffcfdbff,0xffd4deff,0xffc9d0fb,0xff8b94d0,0xd96873ae,0x454b527d,0x8000000,0x1000000,0x0,0x0,0x0,0x0,
1055 0x0,0x0,0x0,0x0,0x0,0x0,0x318ea2ec,0xf095a8f0,0xffd4dbf9,0xfff5f7ff,0xfff5f7ff,0xfff3f6ff,0xfff0f4ff,0xffeef3ff,
1056 0xffedf1ff,0xffebf0ff,0xffe4ebff,0xffccdaff,0xffc9d8ff,0xffc8d7ff,0xffd6e1ff,0xffd6e0ff,0xffd4e0ff,0xffe6eaff,0xffa8ade4,0xf36974b1,0x4c434970,0xa000000,
1057 0x1000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3190a5f0,0xf097abf2,0xffe3e7fc,0xfff9fbff,0xfff9fbff,
1058 0xfff7f9ff,0xfff5f7ff,0xfff3f6ff,0xfff0f4ff,0xffeef3ff,0xffedf1ff,0xffe4ebff,0xffcfdcff,0xffccdaff,0xffd0dcff,0xffd9e3ff,0xffd7e2ff,0xffe7edff,0xfff6f9ff,
1059 0xfff0f3ff,0xffabb1e3,0xf46771ae,0x40343957,0xa000000,0x1000000,0x0,0x0,0x0,0x0,0x0,0x0,0x1095aaf8,0xe092a8f5,
1060 0xffd1d9fb,0xfff9fbff,0xfffdfeff,0xfffafcff,0xfff9fbff,0xfff7f9ff,0xfff5f7ff,0xfff3f6ff,0xfff0f4ff,0xffeef3ff,0xffe7edff,0xffd3dfff,0xffcfdcff,0xffd8e3ff,
1061 0xffdbe4ff,0xffdfe7ff,0xfff7f9ff,0xfff7f9ff,0xfff6f9ff,0xffedefff,0xff9ea4dd,0xdc616aa3,0x21000000,0x6000000,0x0,0x0,0x0,0x0,
1062 0x0,0x0,0x9193a8f5,0xffb9c8fa,0xffeff4ff,0xfff3f7ff,0xfff9fbff,0xfffdfeff,0xfffbfcff,0xfffafbff,0xfff7f9ff,0xfff5f7ff,0xfff3f6ff,0xfff0f4ff,
1063 0xffe4ebff,0xffd7e1ff,0xffd5e0ff,0xffdee7ff,0xffdce6ff,0xfff2f5ff,0xfff8f9ff,0xfff7f9ff,0xfff7f9ff,0xfff6f9ff,0xffe5e8ff,0xff7d85c1,0x934d5481,0x17000000,
1064 0x3000000,0x0,0x0,0x0,0x0,0x2192a8f3,0xff9cb0fa,0xffeaefff,0xffe8efff,0xffedf3ff,0xfff3f7ff,0xfff9fbff,0xfffdfeff,0xfffcfdff,
1065 0xfffafbff,0xfff7f9ff,0xfff5f7ff,0xfff3f6ff,0xffe7eeff,0xffdbe4ff,0xffdee6ff,0xffe1e9ff,0xffedf2ff,0xfff8faff,0xfff8f9ff,0xfff8f9ff,0xfff7f9ff,0xfff7f9ff,
1066 0xfff6f9ff,0xffc4c9f5,0xf4636ca7,0x3d1a1c2b,0xc000000,0x0,0x0,0x0,0x0,0x8295abf8,0xffc2cffc,0xffe0eaff,0xffe3ecff,0xffe8efff,
1067 0xffedf3ff,0xfff3f7ff,0xfff9fbff,0xfffdfeff,0xfffcfdff,0xfffafbff,0xfff7f9ff,0xfff5f7ff,0xffebf0ff,0xffdfe8ff,0xffe5ecff,0xffe9efff,0xfff9fbff,0xfff9faff,
1068 0xfff8faff,0xfff8f9ff,0xfff8f9ff,0xfff7f9ff,0xfff5f7ff,0xffecefff,0xff868cca,0x8c444a73,0x1b000000,0x3000000,0x0,0x0,0x0,0xe196adfa,
1069 0xffe1e9fe,0xffd9e5ff,0xffdee9ff,0xffe3ecff,0xffe8efff,0xffedf3ff,0xfff3f7ff,0xfff8fbff,0xfffdfeff,0xfffdfdff,0xfffafbff,0xfff3f5fe,0xffe8edfd,0xffe2e9fd,
1070 0xffeaf0ff,0xfff7faff,0xfff9fbff,0xffaae0ae,0xff7bdb7e,0xff7be37e,0xff7adb7e,0xffc5eccf,0xfff3f6ff,0xfff3f6ff,0xffabafe4,0xca565d91,0x2c000000,0x9000000,
1071 0x0,0x0,0x2194aaf7,0xffaabdfd,0xffdfe9ff,0xffd5e2ff,0xffd9e5ff,0xffdee9ff,0xffe3ecff,0xffe8efff,0xffedf3ff,0xfff3f7ff,0xfff8fbff,0xfffafcff,
1072 0xffeef1fc,0xffe8ecfa,0xffdfe5f9,0xffdce2f7,0xffe5e9f7,0xffe8f3ed,0xff3eba3f,0xff5dc55f,0xff7adf7e,0xff5cd55f,0xff1ed01f,0xff00e300,0xff1ee01f,0xff97ea9e,
1073 0xffdbdeff,0xff6971ac,0x3e000000,0x12000000,0x0,0x0,0x5394aaf6,0xffbecdfe,0xffd0dfff,0xffd1e0ff,0xffd5e2ff,0xffd9e5ff,0xffdee9ff,0xffe3ecff,
1074 0xffe8efff,0xffedf3ff,0xfff1f6ff,0xffeaeffe,0xffeef1fc,0xffe7ebfa,0xffd3d9f2,0xffdde1f3,0xffe9ebf6,0xffbbd2c7,0xffe8efee,0xfff8faff,0xfff7f9ff,0xfff6f9ff,
1075 0xffecf1ff,0xffa8dcbe,0xff35db3f,0xff00ee00,0xff30e43f,0xff6a8ca4,0x77343858,0x1b000000,0x2000000,0x0,0x8494aaf7,0xffcbd7fe,0xffc9daff,0xffcdddff,
1076 0xffd1dfff,0xffd5e2ff,0xffd9e5ff,0xffdee9ff,0xffe3ecff,0xffe8efff,0xffe6edff,0xffe5ebfe,0xffd5dffc,0xf7889be3,0xc96875ab,0xf57783bc,0xffd1d4e8,0xffe3e6f4,
1077 0xffe9ecf9,0xffe9efff,0xffe1e9ff,0xffd7e2ff,0xffd3dfff,0xffd0dcff,0xffccdaff,0xff89d5ae,0xff0cea10,0xff09ef0d,0x9b206e36,0x24000000,0x5000000,0x0,
1078 0x8692a8f4,0xffbfcffe,0xffc4d8ff,0xffc9daff,0xffcdddff,0xffd1dfff,0xffd5e2ff,0xffd9e5ff,0xffdee9ff,0xffe3ecff,0xffdfe8ff,0xffe6ecfe,0xffaebffc,0x914b5475,
1079 0x51000000,0x8c4a527d,0xff9199c5,0xffdce1f4,0xffdde3f7,0xffe4ebff,0xffdfe8ff,0xffdbe5ff,0xffd7e2ff,0xffd3dfff,0xffd0dcff,0xffccdaff,0xffa3d3cf,0xff1ad527,
1080 0xfa03f605,0x52009000,0x8000000,0x0,0x8692a8f4,0xffbfcffe,0xffc1d6ff,0xffc4d8ff,0xffc9daff,0xffcdddff,0xffd6e3ff,0xffe2ebff,0xffebf1ff,0xfff2f6ff,
1081 0xffeff3ff,0xffeff2fe,0xffafc1fc,0x84485275,0x35000000,0x75596296,0xff6e9f93,0xff37c03c,0xff00ba00,0xff1cd11f,0xff47dd4f,0xff8add9e,0xffdbe5ff,0xffd7e2ff,
1082 0xffd3dfff,0xffd0dcff,0xffccdaff,0xff7c94b8,0xfa03df05,0xe500ec00,0x1a008900,0x0,0x8692a8f4,0xffcbd7fe,0xffccdcff,0xffdbe6ff,0xffe8efff,0xfff2f6ff,
1083 0xfff5f8ff,0xfff6f9ff,0xfff7f9ff,0xfff8fbff,0xfff2f5ff,0xffecf0fe,0xffd8e0fc,0xf5889be4,0xcc7685c5,0xff6b7da9,0xff86ca92,0xffd6dee5,0xffeceffa,0xffc0e4cf,
1084 0xff65db6f,0xff0ee810,0xff29e82f,0xffb1e4cf,0xffd7e2ff,0xffd3dfff,0xffd0dcff,0xff898fcd,0xa01f5635,0xff00e100,0xa300dc00,0x0,0x588ba0e8,0xffbecdfe,
1085 0xfff2f6ff,0xfff2f6ff,0xfff3f7ff,0xfff3f7ff,0xfff4f8ff,0xfff7f9ff,0xfff8fbff,0xfff9fbff,0xfff8fbff,0xffecf0fe,0xffe0e3f3,0xffa2a3b0,0xff8b8a93,0xff949298,
1086 0xffa7a6ad,0xffcfd0d7,0xfff8fafe,0xfff4f7ff,0xffeef3ff,0xffdaecef,0xff47e44f,0xff00f400,0xff88eb9e,0xffd7e2ff,0xffcdd7ff,0xff7980bc,0x842f334f,0x95009500,
1087 0xff00de00,0x2000cb00,0x277d90d1,0xffa4b8fd,0xfff5f8ff,0xfff2f6ff,0xfff2f6ff,0xfff5f8ff,0xfff7f9ff,0xfff8faff,0xfff8faff,0xfff9fbff,0xfff9fbff,0xfff5f9ff,
1088 0xff7b7880,0xff736e73,0xff6a656a,0xff686368,0xff706c70,0xff787378,0xffa29ea3,0xffdedee2,0xfff4f7ff,0xffeef3ff,0xffe9efff,0xff71e77e,0xff00fc00,0xff95ecae,
1089 0xffcbd3ff,0xff636ca7,0x59010101,0x33002300,0xef00c200,0x9f00c200,0x4000000,0xe395abf8,0xffecf0fe,0xfff3f7ff,0xfff5f9ff,0xfff6f9ff,0xfff7f9ff,0xfff7f9ff,
1090 0xfff8faff,0xfff8faff,0xfff9fbff,0xff9397a0,0xff746f74,0xff686368,0xff686368,0xff686368,0xff686368,0xff686368,0xff6c676c,0xff837e83,0xffc8c5ca,0xfff4f7ff,
1091 0xffeef3ff,0xffe9efff,0xff63df6f,0xff0ef110,0xff91b3c7,0xd6525989,0x4b000000,0x1c000000,0x8100a600,0xdf00be00,0x1000000,0x8b8ba0e8,0xffc2cffc,0xfff6f8ff,
1092 0xfff5f9ff,0xfff6f9ff,0xfff6f9ff,0xfff7f9ff,0xfff7f9ff,0xfff8faff,0xffeef3ff,0xff818591,0xff777377,0xff686368,0xff686368,0xff686368,0xff686368,0xff686368,
1093 0xff686368,0xff686368,0xff827e82,0xffc0bfc2,0xfff4f7ff,0xffeef3ff,0xffe9efff,0xff36d43f,0xff27c03d,0xa33b4062,0x3e000000,0x13000000,0x30006300,0xff00bb00,
1094 0x0,0x1b596694,0xf29aaff7,0xfff1f4ff,0xfff5f8ff,0xfff5f9ff,0xfff6f9ff,0xfff6f9ff,0xfff7f9ff,0xfff3f6ff,0xffdce7ff,0xff757b87,0xff7b777b,0xff686368,
1095 0xff696469,0xff7b777b,0xff8d898d,0xff7e7a7e,0xff696469,0xff696469,0xff6b666b,0xff837f83,0xffc7c5c9,0xfff4f7ff,0xffeff3ff,0xff95b6c2,0xff00cf00,0x73013501,
1096 0x2e000000,0xa000000,0x0,0xff00a400,0x0,0x4000000,0x8e869ae1,0xffb3c2f9,0xfff6f8ff,0xfff5f8ff,0xfff5f9ff,0xfff6f9ff,0xfff6f9ff,0xffdee9ff,
1097 0xffd7e4ff,0xff8c95a7,0xff656265,0xff6c676c,0xff635e63,0xff595359,0xff7e7a7e,0xffb9b6b9,0xffafacaf,0xff7e7a7e,0xff787478,0xff7a767a,0xffa09ca0,0xffdedee1,
1098 0xffe4e7ff,0xff7d85c1,0xe90ba512,0x98008700,0x1c000000,0x3000000,0x0,0xff009b00,0x0,0x0,0x1c55618d,0xd88da2eb,0xffd1d9fb,0xfff5f8ff,
1099 0xfff5f8ff,0xfff5f9ff,0xffe6eeff,0xffd3e1ff,0xffd5e3ff,0xffbecef1,0xff59575d,0xff837f83,0xff635f63,0xff423c42,0xff575257,0xff8f8a8f,0xffbebbbe,0xffc5c3c5,
1100 0xff878387,0xff898589,0xff8b878b,0xffb7b4b8,0xff9aa0d6,0xde5a6397,0xa2017201,0x98009b00,0xc000000,0x0,0x20008800,0xbf00a000,0x0,0x0,
1101 0x4000000,0x456674a9,0xf38fa3ee,0xffdbe1fb,0xfff5f8ff,0xffeef3ff,0xffd0dfff,0xffd2e0ff,0xffd1e0ff,0xffc1d5ff,0xff5d5c6a,0xff868286,0xff797479,0xff464046,
1102 0xff423c42,0xff585258,0xff817c81,0xffb5b3b5,0xffb2afb2,0xff999599,0xff9b979b,0xffa6a3a6,0xfb9195b4,0x7113141c,0x6f006800,0x8b00a100,0x3000000,0x0,
1103 0x7000ab00,0x30009400,0x0,0x0,0x0,0x8000000,0x4c5b6897,0xf48ca1ea,0xffcdd5f8,0xffdbe6ff,0xffceddff,0xffd0dfff,0xffc5d8ff,0xffbed3ff,
1104 0xff6c6c79,0xff534e53,0xffa09da0,0xff5a555a,0xff423c42,0xff423c42,0xff554f55,0xff858085,0xffb5b3b5,0xffa8a5a8,0xffaaa7aa,0xffaca9ac,0xf7b8b7b9,0x48000000,
1105 0x75008400,0x64009900,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1000000,0xa000000,0x4e586492,0xe8879be3,0xffaab8f0,
1106 0xffdae2fe,0xffd2dfff,0xffbbd2ff,0xffbbd1ff,0xff7f8294,0xff4f4a4f,0xff6e6a6e,0xffa3a0a3,0xff575257,0xff443e44,0xff464046,0xff5d585d,0xff908d90,0xffb7b4b7,
1107 0xffb9b7b9,0xffbbb8bb,0xffbfbdbf,0x4f767476,0xa3009900,0x1000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
1108 0x1000000,0xa000000,0x322d334b,0xac7384c1,0xff90a1e7,0xffb2bcef,0xffccd6fb,0xffcad8ff,0xffc1cdea,0xff615d63,0xff4d474d,0xff7a757a,0xffb7b4b7,0xff716d71,
1109 0xff4d474d,0xff4e494e,0xff827e82,0xffc7c4c7,0xffc9c7c9,0xffcbc9cb,0xffc7c4c7,0x48b0aeb0,0x1000000,0x0,0x0,0x0,0x0,0x0,
1110 0x0,0x0,0x0,0x0,0x0,0x1000000,0x8000000,0x1b000000,0x4e38405d,0xa66877ae,0xea7f90d5,0xff8f9fe0,0xff9fabe5,0xff9294b6,
1111 0xff625c62,0xff625d62,0xff7e7a7e,0xffcdcbcd,0xffc7c4c7,0xffb4b1b4,0xffd4d2d4,0xffd6d5d6,0xffd8d7d8,0xffdbd9db,0xffcdcbcd,0x31c4c2c4,0x0,0x0,
1112 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4000000,0xf000000,0x20000000,
1113 0x33000000,0x5b2e344c,0x7a434c71,0x9f596595,0xbb61688f,0xf36d6972,0xff767176,0xff706b70,0xffb1aeb1,0xffe1e0e1,0xffe0dfe0,0xffe3e2e3,0xffe2e1e2,0xffd8d6d8,
1114 0xcfcdcbcd,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
1115 0x0,0x0,0x1000000,0x5000000,0xc000000,0x16000000,0x1f000000,0x27000000,0x2e000000,0x32000000,0x634b474b,0x5d504d50,0x735c585c,0xd37e7b7e,
1116 0xffa09da0,0xffb8b6b8,0xffbbb8bb,0xbfb0adb0,0x10d1cfd1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
1117 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1000000,0x3000000,0x7000000,0xa000000,0xc000000,
1118 0xa000000,0x7000000,0x3000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
1119 0x0,0x0
1120};
1121
1122static const QRgb Spreadsheet_data[] = {
1123 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,
1124 0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xde9daac1,0x0,0x0,0x0,0x0,0x0,
1125 0x0,0x0,0x0,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,0xfffbffff,0xffffffff,
1126 0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffeffff,0xfff5faff,0xffedf3fe,0xffe4ebf9,0xffd8e1f2,0xffc2d0e9,0xe0a7b2c4,
1127 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,
1128 0x0,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfff8fdff,0xfff2f7ff,0xffeaf1fd,
1129 0xffe1e9f7,0xffd5dff0,0xffbfcce3,0xffebf4ff,0xe6a2aec1,0x0,0x0,0x0,0x0,0x0,0x0,0xffffff,0x0,0x0,
1130 0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,0xfffcffff,0xffe5e5e5,0xffdcdcdc,0xffdcdcdc,0xffdcdcdc,0xffdcdcdc,0xffdcdcdc,0xffdcdcdc,
1131 0xffdcdcdc,0xffd8dcdc,0xffc6cace,0xffedf4fe,0xffe6edfa,0xffd9e2f2,0xffc2cee5,0xfff0f6ff,0xffdce7f9,0xe3a1adc3,0x0,0x0,0x0,0x0,
1132 0x0,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,0xfffcffff,0xffdcdcdc,0xffffffff,0xffffffff,
1133 0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffeffff,0xffc4c7ca,0xfff1f7ff,0xffe9effc,0xffdce5f4,0xffc4d0e6,0xffffffff,0xffe8eefb,0xffdbe5f9,
1134 0xe8a4afc5,0x0,0x0,0x0,0x0,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,
1135 0xfffcffff,0xffdcdcdc,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffc5c9ca,0xfff3f9ff,0xffebf1fd,0xffdfe7f6,
1136 0xffc6d1e5,0xffffffff,0xfffdffff,0xffecf2fd,0xffdee9fb,0xe3a4b0c4,0x0,0x0,0x0,0xffffff,0x0,0x0,0x0,0x0,
1137 0x0,0x0,0x0,0xffc4d0e5,0xfffcffff,0xffdcdcdc,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,
1138 0xffc7caca,0xfff5f9ff,0xffedf3fe,0xffe3ebf9,0xffbecbe1,0xfff3f5fb,0xffecf2f9,0xffe4ebf7,0xffd8e1f0,0xffd0dcf1,0xe99eabc1,0x0,0x0,0xffffff,
1139 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,0xfffcffff,0xffdcdcdc,0xffdcdcdc,0xffdcdcdc,0xffdcdcdc,0xffdcdcdc,
1140 0xffdcdcdc,0xffdcdcdc,0xffdcdcdc,0xffdcdcdc,0xffbfc1c1,0xffc3c6ca,0xffbec2ca,0xffb7bdc7,0xff9ea8b7,0xff78869c,0xff78869c,0xff78869c,0xff78869c,0xff808fa6,
1141 0xff98a9c5,0xff98a9c5,0x0,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,0xfffcffff,0xffdcdcdc,
1142 0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffc3c8cc,0xffccd4e0,0xffc6d0e0,0xffc1cbdf,0xffbcc8dc,0xffb9c5d9,
1143 0xffb1bdd4,0xff9faec8,0xff96a5c2,0xff93a0b7,0xffaebedb,0xff8495b1,0x33000000,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,
1144 0x0,0xffc4d0e5,0xfffcffff,0xffdcdcdc,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffc5c8cc,0xffccd5e0,
1145 0xffc7d2e0,0xffc2cddf,0xffbcc8dc,0xffb7c3d8,0xffa8b4ce,0xff9caac7,0xff99a9c5,0xff97a3b9,0xffb5c5e0,0xff8495b1,0x33000000,0xffffff,0x0,0x0,
1146 0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,0xfffcffff,0xffdcdcdc,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,
1147 0xffd1d7e0,0xffd1d7e0,0xffc5c8cc,0xffcdd7e0,0xffc7d2e0,0xffc4cfe0,0xffbec9dd,0xffafbcd2,0xffa3b2cc,0xffa2b0ca,0xff9fafc9,0xff9da8bd,0xffbdcbe5,0xff8495b1,
1148 0x33000000,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,0xfffcffff,0xffdcdcdc,0xffc5c8cc,0xffc5c8cc,
1149 0xffc5c8cc,0xffc5c8cc,0xffc5c8cc,0xffc5c8cc,0xffc5c8cc,0xffc5c8cc,0xffbfc0c2,0xffc3c8cc,0xffbdc4cc,0xffb4bcca,0xffa8b1c2,0xffa1abbe,0xff9ea9bb,0xff9ba6bb,
1150 0xff9aa4b9,0xff9fa9bb,0xffc3d0e8,0xff8495b1,0x33000000,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,
1151 0xfffcffff,0xffdcdcdc,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffdadcdc,0xfff5faff,0xffeaf0fd,0xffdce5f5,
1152 0xffd6e0f1,0xffd3ddee,0xffd0dbed,0xffced9ec,0xffccd7ea,0xffafb9ca,0xffc8d5ec,0xff8495b1,0x33000000,0xffffff,0x0,0x0,0x0,0x0,
1153 0x0,0x506ab5e6,0x8f52b2ec,0xff66baec,0xff60c5f8,0xff1bb1f9,0xff3abdf9,0xff54cafb,0xff50ceff,0xff7fdeff,0xffcff3ff,0xffffffff,0xffffffff,0xfffcffff,
1154 0xffd1d6dc,0xffe9effc,0xffdfe8f6,0xffdbe4f3,0xffdae3f3,0xffd7e0f1,0xffd5dff0,0xffd2dcef,0xffd0dbed,0xffb3bdcc,0xffcedaf0,0xff8495b1,0x33000000,0xffffff,
1155 0x0,0x0,0x106ab0e6,0x806ab2e6,0xef40aaf0,0xff21a7f7,0xff00a4ff,0xff00a8ff,0xff00acff,0xff00afff,0xff00b3ff,0xff00b7ff,0xff00bbff,0xff00beff,
1156 0xff00c2ff,0xff30d1ff,0xffbceffc,0xfff4f9ff,0xffc9cfd9,0xffe4ecf9,0xffe1e9f7,0xffdfe7f6,0xffdde5f4,0xffdbe4f3,0xffd9e2f3,0xffd7e1f2,0xffd4def0,0xffb7bece,
1157 0xffd2def2,0xff8495b1,0x33000000,0xffffff,0x0,0x306aafe6,0xdf53aceb,0xff14a0fa,0xff009fff,0xff00a3ff,0xff00a7ff,0xff00aaff,0xff00aeff,0xff00b2ff,
1158 0xff00b6ff,0xff00b9ff,0xff00bdff,0xff00c1ff,0xff00c5ff,0xff00c8ff,0xff14ccfa,0xff74d0e7,0xffb2bec9,0xffc6ccd7,0xffc5ccd7,0xffc3cad6,0xffc2c9d5,0xffbfc6d3,
1159 0xffbec5d2,0xffbdc4d1,0xffbac2d0,0xffb2bac7,0xffd5e0f4,0xff8495b1,0x33000000,0xffffff,0x3047a6ee,0xef55abeb,0xff079bfd,0xff009eff,0xff00a1ff,0xff00a5ff,
1160 0xff00a9ff,0xff00adff,0xff00b0ff,0xff00b4ff,0xff00b8ff,0xff00bcff,0xff00c0ff,0xff00c3ff,0xff00c7ff,0xff00cbff,0xff00cfff,0xff07d2fd,0xff7cd2e5,0xffeaf1fc,
1161 0xffe7eefb,0xffe4ecf9,0xffe2eaf8,0xffe1e9f8,0xffdee6f5,0xffdde6f4,0xffdce5f4,0xffbcc4d1,0xffd9e3f6,0xff8495b1,0x33000000,0xffffff,0xbf6aafe6,0xff0d9cfc,
1162 0xff009cff,0xff00a0ff,0xff00a4ff,0xff00a8ff,0xff00abff,0xff00afff,0xff00b3ff,0xff00b7ff,0xff00bbff,0xff00beff,0xff00c2ff,0xff00c6ff,0xff00caff,0xff00cdff,
1163 0xff00d1ff,0xff00d5ff,0xff28d7f6,0xffbbe7f4,0xffe9f0fc,0xffe7eefb,0xffe4ebf9,0xffe4ebf8,0xffe2eaf8,0xffdfe7f7,0xffdee6f5,0xffbec6d2,0xffdbe5f7,0xff8495b1,
1164 0x33000000,0xffffff,0xff42a7ef,0xff009bff,0xff009fff,0xff00a3ff,0xff00a6ff,0xff00aaff,0xff00aeff,0xff00b2ff,0xff00b5ff,0xff00b9ff,0xff00bdff,0xff00c1ff,
1165 0xff00c4ff,0xff00c8ff,0xff00ccff,0xff00d0ff,0xff00d4ff,0xff00d7ff,0xff00dbff,0xff93dfec,0xffebf1fd,0xffe8effc,0xffe7eefb,0xffe5ecf9,0xffe3ebf9,0xffe2eaf8,
1166 0xffe0e7f6,0xffc0c7d4,0xffdce6f8,0xff8495b1,0x33000000,0xffffff,0xff3ca7f1,0xff009dff,0xff00a1ff,0xff00a5ff,0xff00a9ff,0xff00adff,0xff00b0ff,0xff00b4ff,
1167 0xff00b8ff,0xff00d0af,0xff9f7751,0xffbf5d53,0xffbf5951,0xffbf554f,0xffbf524d,0xffbf4e4b,0xffbf4b49,0xffbf4747,0xffbf4345,0xffd19596,0xffcad1db,0xffcacfd9,
1168 0xffc8ced8,0xffc6ccd8,0xffc4cbd6,0xffc3c9d5,0xffc1c8d5,0xffb9c0cb,0xffdee8fa,0xff8495b1,0x33000000,0xffffff,0xff5ab0e8,0xff00a0ff,0xff00a4ff,0xff00a8ff,
1169 0xff00abff,0xff00afff,0xff00b3ff,0xff00b7ff,0xff00baff,0xff00ee40,0xff40d208,0xffff4d21,0xffff471f,0xffff411c,0xffff3b19,0xffff3517,0xffff2e14,0xffff2812,
1170 0xfffd3523,0xffde8179,0xffc4cee0,0xffc1cbdf,0xffbfc9de,0xffbdc8dc,0xffbbc7db,0xffbbc6db,0xffb8c4d9,0xffb6becd,0xffdfe9fa,0xff8495b1,0x33000000,0xffffff,
1171 0xff53acd7,0xff2eabf4,0xff00a6ff,0xff00aaff,0xff00aeff,0xff00b1ff,0xff00b5ff,0xff00b9ff,0xff00c5df,0xff00fe00,0xff00fe00,0xffbf871f,0xffff5c28,0xffff5625,
1172 0xffff4f22,0xffff4920,0xffff431d,0xfffe411f,0xfff86a53,0xffb77064,0xffc3cddf,0xffc1ccdf,0xffbfcade,0xffbec9dc,0xffbdc8dc,0xffbbc6da,0xffbac5da,0xffb7bfce,
1173 0xffdfe9fa,0xff8495b1,0x33000000,0xffffff,0xcc3495b9,0xff53b0e2,0xff28aff6,0xff00acff,0xff00b0ff,0xff00b4ff,0xff00b8ff,0xff00bbff,0xff00d790,0xff00f802,
1174 0xff00f702,0xff20e308,0xffff7031,0xffff6a2e,0xffff642b,0xffff5e29,0xfffe5b2b,0xfff87f5f,0xffbb5c45,0xffa38486,0xffc4cfe0,0xffc2ccdf,0xffbfcade,0xffbec9de,
1175 0xffbdc8dc,0xffbbc7db,0xffb9c5d9,0xffb8c0ce,0xffe0e9fb,0xff8495b1,0x33000000,0xffffff,0x5c236a91,0xff3097b8,0xff4faad0,0xff35b6f3,0xff00b3ff,0xff00b6ff,
1176 0xff00baff,0xff00beff,0xff00d137,0xff00d50a,0xff00d30a,0xff00d10a,0xff80a722,0xffff7f37,0xffff7934,0xfffc814a,0xfff1906b,0xffb15b41,0xff8b4d40,0xff9eabb9,
1177 0xffb8bfcc,0xffb6becb,0xffb4bcca,0xffb3bac8,0xffb2bac8,0xffafb7c7,0xffaeb7c6,0xffb6bdc9,0xffe0e9fb,0xff8495b1,0x33000000,0xffffff,0xd000030,0x891f6788,
1178 0xff288fae,0xff2e93b1,0xff41aad1,0xff2ab9f0,0xff0dbefc,0xff00bde2,0xff00b112,0xff00af12,0xff00ad13,0xff07ad18,0xff31ae2f,0xfff1a160,0xffed9a6a,0xffc77453,
1179 0xff95452f,0xff8f5548,0xffa298a0,0xffedf3fd,0xffeff5ff,0xffebf2fd,0xffeaf1fd,0xffe7eefa,0xffe6edfa,0xffe3eaf8,0xffe2eaf8,0xffc3cad6,0xffdfe9fa,0xff8495b1,
1180 0x33000000,0xffffff,0x0,0x16000029,0x6a103f5f,0xd61e7a96,0xff1d85a0,0xff1a829c,0xff208ca8,0xff279797,0xff3c9d40,0xff429c48,0xff489b51,0xff41974f,
1181 0xff2f8d48,0xff8a623e,0xff97432d,0xff893d29,0xff9e7773,0xffc4c3d0,0xffc8cdd5,0xfff0f6ff,0xffedf3fe,0xffebf2fd,0xffe9f0fc,0xffe7eefa,0xffe6edfa,0xffe3ebf8,
1182 0xffe2eaf8,0xffc2c9d5,0xffe0e9fb,0xff8495b1,0x33000000,0xffffff,0x0,0x0,0xe000022,0x35000022,0x740b3551,0xb812627c,0xe1117189,0xff1d807b,
1183 0xff3d9540,0xff2f8e3c,0xff218739,0xff147f36,0xff0b7a34,0xff866e58,0xffab8c8a,0xffb2b8c4,0xffd5dae5,0xffeff5fd,0xffd0d5dc,0xfff0f6ff,0xffedf3fe,0xffeaf1fd,
1184 0xffe9f0fc,0xffe6edfa,0xffe4ecf9,0xffe2eaf8,0xffe2eaf8,0xffc2c8d5,0xffe0eafc,0xff8495b1,0x33000000,0xffffff,0x0,0x0,0x0,0x2000000,
1185 0x1200001b,0x2d00001f,0x4200001c,0xff9da6c1,0xffafc1ba,0xff94ac9f,0xff8ba599,0xff8ea6a1,0xffaeb2bc,0xffb6bac2,0xffc3c6cd,0xffcdd1d8,0xffd2d6dc,0xffd0d6dc,
1186 0xffc7ccd3,0xffcfd4dc,0xffccd1db,0xffcad0da,0xffc9cfd9,0xffc6ccd7,0xffc4cbd6,0xffc3cad6,0xffc3cad6,0xffc2c8d5,0xffe0eafc,0xff8495b1,0x33000000,0xffffff,
1187 0x0,0x0,0x0,0x0,0x0,0x2000000,0x6000000,0xffc4d0e5,0xfff4fdff,0xffffffff,0xffffffff,0xfff9feff,0xfff9feff,0xfff8fdff,
1188 0xfff7fcff,0xfff4f9ff,0xfff4f9ff,0xfff2f8ff,0xfff1f7ff,0xfff0f6ff,0xffedf3fe,0xffeaf1fd,0xffe9f0fc,0xffe6edfa,0xffe4ecf9,0xffe2eaf8,0xffe2eaf8,0xffe1e8f7,
1189 0xffe0eafc,0xff8495b1,0x33000000,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,0xff8495b1,0xff8495b1,
1190 0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,
1191 0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0x33000000,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,
1192 0x0,0x0,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,
1193 0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0xffffff,0xffffff,0xffffff,
1194 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,
1195 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,
1196 0xffffff,0xffffff
1197};
1198
1199static const QRgb Tux_data[] = {
1200 0x4000000,0x7000000,0xc000000,0x12000000,0x17000000,0x1b000000,0x1d000000,0x1f000000,0x1f000000,0x1f000000,0x1f000000,0x1f000000,0x1f000000,0x1f000000,
1201 0x1f000000,0x1f000000,0x1f000000,0x1f000000,0x1f000000,0x1f000000,0x1f000000,0x1f000000,0x1f000000,0x1f000000,0x1f000000,0x1f000000,0x1d000000,0x1b000000,
1202 0x17000000,0x12000000,0xc000000,0x7000000,0x7000000,0xf000000,0x18000000,0x25000000,0x2e000000,0x36000000,0x3b000000,0x3d000000,0x3d000000,0x3d000000,
1203 0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,
1204 0x3d000000,0x3d000000,0x3b000000,0x36000000,0x2e000000,0x25000000,0x18000000,0xf000000,0xc000000,0x18000000,0xff090684,0xff090682,0xff090680,0xff090680,
1205 0xff090681,0xff090681,0xff090682,0xff090683,0xff060456,0xff060454,0xff060454,0xff060454,0xff060454,0xff060454,0xff060454,0xff060454,0xff060454,0xff060454,
1206 0xff060454,0xff060454,0xff060454,0xff060457,0xff070465,0xff070467,0xff060456,0xff06034d,0xff04033a,0x3d000000,0x29000000,0x18000000,0x12000000,0x25000000,
1207 0xff090682,0xffe4f8f0,0xffd2f3e7,0xffccf1e2,0xffcdf1e2,0xffd2f3e4,0xffd9f4e7,0xffafafae,0xff9b9b9b,0xff9c9c9c,0xff9c9c9c,0xff9c9c9c,0xff9c9c9c,0xff9c9c9c,
1208 0xff9c9c9c,0xff9c9c9c,0xff9c9c9c,0xff9c9c9c,0xff9c9c9c,0xff9c9c9c,0xff9c9c9c,0xff9d9d9d,0xffb1b1b1,0xffb4b4b5,0xffa1a1a1,0xff8f8f8f,0xff04033a,0x5c000000,
1209 0x3d000000,0x25000000,0x17000000,0x2e000000,0xff08067f,0xffcff2e5,0xff97e3c7,0xff7ddcb8,0xff7fdcb7,0xff8ee0bc,0xffa1e5c3,0xff565656,0xff4f4f4f,0xff4f4f4f,
1210 0xff4f4f4f,0xff4f4f4f,0xff4f4f4f,0xff4f4f4f,0xff4f4f4f,0xff4f4f4f,0xff4f4f4f,0xff4f4f4f,0xff4f4f4f,0xff4f4f4f,0xff4f4f4f,0xff505050,0xff595858,0xff525253,
1211 0xff4e4e4e,0xff494949,0xff02011d,0x74000000,0x4e000000,0x2e000000,0x1b000000,0x36000000,0xff08067e,0xffc4efdf,0xff76d9b5,0xff50cfa0,0xff53d09f,0xff69d6a7,
1212 0xff605f5c,0xff161616,0xff161616,0xff161616,0xff161616,0xff161616,0xff161616,0xff161616,0xff161616,0xff161616,0xff161616,0xff161616,0xff161616,0xff161616,
1213 0xff161616,0xff161616,0xff161616,0xff161616,0xff151515,0xff131313,0xff010008,0x87000000,0x5a000000,0x36000000,0x1d000000,0x3b000000,0xff08067e,0xffc0eede,
1214 0xff6ad6af,0xff43cc99,0xff46cd98,0xff5fd3a0,0xff3a3937,0xff030303,0xff040404,0xff040404,0xff040404,0xff040404,0xff040404,0xff040404,0xff040404,0xff040404,
1215 0xff040404,0xff040404,0xff040404,0xff040404,0xff040404,0xff040404,0xff030303,0xff040404,0xff030303,0xff030303,0xff000001,0x93000000,0x62000000,0x3b000000,
1216 0x1f000000,0x3d000000,0xff08067e,0xffbfeedd,0xff69d6ae,0xff41cb98,0xff46cc97,0xff61d4a1,0xff2a2928,0xff000000,0xff020202,0xff020202,0xff020202,0xff020202,
1217 0xff010101,0xff000201,0xff020202,0xff020202,0xff020202,0xff020202,0xff020202,0xff020202,0xff010101,0xff050505,0xff0f0e0e,0xff060606,0xff010101,0xff010101,
1218 0xff000001,0x99000000,0x66000000,0x3d000000,0x1f000000,0x3d000000,0xff08067e,0xffbfeedd,0xff69d6ae,0xff41cb98,0xff47cc97,0xff63d4a1,0xff242523,0xff000000,
1219 0xff020202,0xff010101,0xff020202,0xff131111,0xff171515,0xff020202,0xff000201,0xff020202,0xff020202,0xff020202,0xff010101,0xff030303,0xff060606,0xff060606,
1220 0xff161615,0xff383535,0xff050505,0xff010101,0xff000001,0x99000000,0x66000000,0x3d000000,0x1f000000,0x3d000000,0xff08067e,0xffbfeedd,0xff69d6ae,0xff42cb98,
1221 0xff48cd98,0xff64d5a1,0xff20201f,0xff000000,0xff010101,0xff090909,0xff1b1918,0xff0e0e0d,0xff141414,0xff100f0f,0xff020202,0xff020202,0xff020202,0xff010101,
1222 0xff252220,0xff716d6c,0xff73706f,0xff565352,0xff1b1b1b,0xff090908,0xff0c0c0c,0xff010101,0xff000001,0x99000000,0x66000000,0x3d000000,0x1f000000,0x3d000000,
1223 0xff08067e,0xffbfeedd,0xff69d6ae,0xff42cb98,0xff48cd98,0xff64d5a2,0xff20201f,0xff000000,0xff090909,0xff7f7c7b,0xff888888,0xff797979,0xff2f2d2b,0xff020202,
1224 0xff020202,0xff020202,0xff010101,0xff181717,0xffb2b2b2,0xffa9a9a9,0xffa4a4a4,0xff9a9a9a,0xff9e9e9e,0xff383534,0xff010101,0xff010101,0xff000001,0x99000000,
1225 0x66000000,0x3d000000,0x1f000000,0x3d000000,0xff08067e,0xffbfeedd,0xff69d6ae,0xff42cb98,0xff48cd98,0xff64d5a2,0xff252423,0xff000000,0xff2e2c2a,0xffdddddd,
1226 0xffefefef,0xfff3f3f3,0xffe1e1e1,0xff1e1c1b,0xff000101,0xff020202,0xff010101,0xff6f6866,0xfff3f3f3,0xffeaeaea,0xff7d7d7d,0xff8a8a8a,0xffdcdcdc,0xffbcbcbe,
1227 0xff0d0c0c,0xff000000,0xff000001,0x99000000,0x66000000,0x3d000000,0x1f000000,0x3d000000,0xff08067e,0xffbfeedd,0xff69d6ae,0xff42cb98,0xff48cd98,0xff64d5a2,
1228 0xff252624,0xff000000,0xff5f5856,0xfff3f3f3,0xff868686,0xff8b8b8b,0xfffefefe,0xff6a6663,0xff010101,0xff010101,0xff030303,0xffb9b3b0,0xffffffff,0xff595959,
1229 0xff000000,0xff050505,0xff949494,0xffebebee,0xff2f2c2d,0xff000000,0xff000001,0x99000000,0x66000000,0x3d000000,0x1f000000,0x3d000000,0xff08067e,0xffbfeedd,
1230 0xff69d6ae,0xff42cb98,0xff48cd98,0xff64d5a2,0xff282826,0xff000000,0xff837c78,0xff6d6d6d,0xff050505,0xff202020,0xff868686,0xff908c88,0xff020202,0xff060606,
1231 0xff0b0a09,0xffbfbab8,0xffd4d4d4,0xff070707,0xff030303,0xff282828,0xff3f3f3f,0xffebebee,0xff504c4e,0xff000000,0xff000001,0x99000000,0x66000000,0x3d000000,
1232 0x1f000000,0x3d000000,0xff08067e,0xffbfeedd,0xff69d6ae,0xff42cb98,0xff48cd98,0xff64d5a2,0xff2b2c2a,0xff000000,0xff837c7a,0xff484848,0xff020202,0xff1b1b1b,
1233 0xff525252,0xff757072,0xff020202,0xff050505,0xff070707,0xff837d7f,0xffc7c7c7,0xff090909,0xff080808,0xff0b0b0b,0xff1c1c1c,0xffeaeaed,0xff575255,0xff000000,
1234 0xff000001,0x99000000,0x66000000,0x3d000000,0x1f000000,0x3d000000,0xff08067e,0xffbfeedd,0xff69d6ae,0xff42cb98,0xff48cd98,0xff64d5a2,0xff31302f,0xff000000,
1235 0xff6d6765,0xff636363,0xff020202,0xff000000,0xff524f47,0xff9f8948,0xff7e6717,0xff8b741b,0xff5f4f20,0xff968343,0xffddd3a1,0xff101010,0xff050505,0xff020202,
1236 0xff383838,0xffebebee,0xff443f42,0xff000000,0xff000001,0x99000000,0x66000000,0x3d000000,0x1f000000,0x3d000000,0xff08067e,0xffbfeedd,0xff69d6ae,0xff42cb98,
1237 0xff48cd98,0xff64d5a2,0xff363634,0xff000000,0xff44403e,0xffa1a1a1,0xff020202,0xff39362b,0xffb89421,0xffc7a21f,0xfff2c711,0xfff0c915,0xffd1b333,0xffc2a228,
1238 0xffe8bf12,0xff97833d,0xff353229,0xff0e0e0e,0xffa8a8a8,0xffebebee,0xff1d1b1c,0xff000000,0xff000001,0x99000000,0x66000000,0x3d000000,0x1f000000,0x3d000000,
1239 0xff08067e,0xffbfeedd,0xff69d6ae,0xff42cb98,0xff48cd98,0xff64d5a2,0xff3a3937,0xff000000,0xff0b0b0b,0xffc6c7cd,0xffa28f5a,0xffd3a200,0xffe4b200,0xffe7bb10,
1240 0xffe9c51f,0xffeac827,0xffedcc2c,0xffefcd2e,0xffedcc2c,0xffe9bf0c,0xffe2b70b,0xffcda833,0xffeccd91,0xff938577,0xff030304,0xff000000,0xff000001,0x99000000,
1241 0x66000000,0x3d000000,0x1f000000,0x3d000000,0xff08067e,0xffbfeedd,0xff69d6ae,0xff42cb98,0xff48cd98,0xff64d5a1,0xff42413e,0xff000101,0xff000000,0xff564a2d,
1242 0xffd6a200,0xffdca900,0xffe4b600,0xffe6be14,0xffe9c521,0xffedcc2d,0xffeed436,0xfff2d949,0xfff5e164,0xfff3dc51,0xffeecc27,0xffe6b700,0xffd5a200,0xff9d6d05,
1243 0xff241c0f,0xff000000,0xff000001,0x99000000,0x66000000,0x3d000000,0x1f000000,0x3d000000,0xff08067e,0xffbfeedd,0xff69d6ae,0xff42cb98,0xff47cc98,0xff64d5a1,
1244 0xff474642,0xff000000,0xff14110d,0xffa07300,0xffcd9800,0xffddaa00,0xffe6b300,0xffe7bb10,0xffe9c51f,0xffecca28,0xffedce2e,0xfff4db58,0xfffae97f,0xfff0d547,
1245 0xffeec310,0xffae8a0e,0xff564214,0xffa37605,0xff3c2f11,0xff000000,0xff000001,0x99000000,0x66000000,0x3d000000,0x1f000000,0x3d000000,0xff08067e,0xffbfeedd,
1246 0xff69d6ae,0xff41cb98,0xff47cc97,0xff62d4a1,0xff4b4a47,0xff000000,0xff3c2e17,0xffbe8600,0xffc79400,0xffd9a700,0xffe3b200,0xffe6b90d,0xffe9c018,0xffe9c51f,
1247 0xffefd135,0xfff5e462,0xfff3d644,0xffeec30c,0xffb08c14,0xff624e17,0xffa2780b,0xffb68400,0xff2e2411,0xff000000,0xff000001,0x99000000,0x66000000,0x3d000000,
1248 0x1f000000,0x3d000000,0xff08067e,0xffbfeedd,0xff69d6ae,0xff41cb98,0xff46cc97,0xff62d4a1,0xff504f4c,0xff010101,0xff2d2414,0xff815c0e,0xffb68700,0xffd5a100,
1249 0xffe2b100,0xffe7b700,0xffe9bc0f,0xffecc214,0xfff8d625,0xfff2cf26,0xffb6941c,0xff6e561b,0xff785d18,0xffd3a100,0xffcb9700,0xffaf7b00,0xff1f1a0e,0xff000000,
1250 0xff000001,0x99000000,0x66000000,0x3d000000,0x1f000000,0x3d000000,0xff08067e,0xffbfeedd,0xff69d6ae,0xff41cb98,0xff46cc98,0xff61d4a1,0xff595854,0xff020202,
1251 0xff070706,0xff523f20,0xff755414,0xff7f6213,0xffac8408,0xffbf9500,0xffc09809,0xffba9413,0xff886d1b,0xff5c4b1a,0xff5f4918,0xff9d7610,0xffe2ae00,0xffce9d00,
1252 0xffc6992b,0xffbfa262,0xff242120,0xff000000,0xff000001,0x99000000,0x66000000,0x3d000000,0x1f000000,0x3d000000,0xff08067e,0xffc0eedd,0xff6ad7ae,0xff44cc99,
1253 0xff48cd98,0xff64d5a1,0xff82ddad,0xff030303,0xff020202,0xff96928d,0xffbe9643,0xff926407,0xff795d15,0xff7b6820,0xff7c661f,0xff7e681f,0xff957819,0xffbc920e,
1254 0xffe3af00,0xffe0ac00,0xffcf9d00,0xffd0b262,0xffcecbc3,0xffc3c3c6,0xff716f77,0xff020203,0xff000000,0x99000000,0x66000000,0x3d000000,0x1f000000,0x3d000000,
1255 0xff08067e,0xffc0eddd,0xff6cd5af,0xff49cb99,0xff4ecd9a,0xff69d4a3,0xff494845,0xff010101,0xff090908,0xffcbcbce,0xffdad2c5,0xffba8d2a,0xffb77f00,0xffd8a90b,
1256 0xffecc110,0xffeaba00,0xffdcad00,0xffd3a100,0xffcc9800,0xffcb9b15,0xffd4bf87,0xffd2d2d2,0xffd3d3d3,0xffc9c9cc,0xff9696a0,0xff08080a,0xff000000,0x99000000,
1257 0x66000000,0x3d000000,0x1f000000,0x3d000000,0xff08067c,0xffbee8da,0xff6dcdaa,0xff4bc094,0xff53c293,0xff6cc89d,0xff0f0f0f,0xff000000,0xff060606,0xffbab6b8,
1258 0xffd0d0d3,0xffcbc3ba,0xffaf8735,0xffa07100,0xffaa7a00,0xffad7e00,0xffb08000,0xffb88d22,0xffcaaf71,0xffcfc8be,0xffcbcbcd,0xffcdcdcf,0xffdedee1,0xffd8d8de,
1259 0xffa0a0ac,0xff1d1c21,0xff000000,0x99000000,0x66000000,0x3d000000,0x1d000000,0x3b000000,0xff080577,0xffb7d6cd,0xff69af98,0xff45987c,0xff489579,0xff1a1a1b,
1260 0xff000000,0xff010101,0xff080707,0xffa0a0a9,0xffababb5,0xff9e9ea7,0xffa0a0a9,0xff95866e,0xff907b52,0xff927d55,0xff9a8c75,0xff9e9da2,0xff9e9ea7,0xff9e9ea7,
1261 0xffa2a2ac,0xffacacb7,0xffafafba,0xffa3a3b0,0xff7c7c8f,0xff3e3d4f,0xff000002,0x93000000,0x62000000,0x3b000000,0x1b000000,0x36000000,0xff070568,0xff98b4ae,
1262 0xff59736d,0xff314e48,0xff202025,0xff010101,0xff000000,0xff000000,0xff232227,0xff65657a,0xff65657a,0xff616174,0xff5f5f72,0xff5e5e71,0xff5e5e71,0xff5e5e71,
1263 0xff5e5e71,0xff5f5f72,0xff5f5f72,0xff616174,0xff646478,0xff656579,0xff646479,0xff5e5e74,0xff4d4d65,0xff40405a,0xff01000c,0x87000000,0x5a000000,0x36000000,
1264 0x17000000,0x2e000000,0xff050451,0xff050343,0xff030226,0xff020117,0xff000005,0xff000000,0xff000000,0xff000002,0xff030238,0xff040242,0xff040241,0xff040241,
1265 0xff040240,0xff040240,0xff040240,0xff040240,0xff040240,0xff040240,0xff040241,0xff040241,0xff040241,0xff040241,0xff040241,0xff040241,0xff040240,0xff040242,
1266 0xff03022c,0x74000000,0x4e000000,0x2e000000,0x12000000,0x25000000,0x3d000000,0x5c000000,0x74000000,0x87000000,0x93000000,0x99000000,0x99000000,0x99000000,
1267 0x99000000,0x99000000,0x99000000,0x99000000,0x99000000,0x99000000,0x99000000,0x99000000,0x99000000,0x99000000,0x99000000,0x99000000,0x99000000,0x99000000,
1268 0x99000000,0x99000000,0x93000000,0x87000000,0x74000000,0x5c000000,0x3d000000,0x25000000,0xc000000,0x18000000,0x29000000,0x3d000000,0x4d000000,0x5a000000,
1269 0x62000000,0x66000000,0x66000000,0x66000000,0x66000000,0x66000000,0x66000000,0x66000000,0x66000000,0x66000000,0x66000000,0x66000000,0x66000000,0x66000000,
1270 0x66000000,0x66000000,0x66000000,0x66000000,0x66000000,0x66000000,0x62000000,0x5a000000,0x4d000000,0x3d000000,0x29000000,0x18000000,0x7000000,0xf000000,
1271 0x18000000,0x25000000,0x2e000000,0x36000000,0x3b000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,
1272 0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3b000000,0x36000000,0x2e000000,0x25000000,
1273 0x18000000,0xf000000
1274};
1275
1276static const QRgb UtilsIcon_data[] = {
1277 0x0,0xf0f0f0,0x42f7eb5,0x1c3889c3,0x4c3988ca,0x7a3a8cd4,0xa43995e3,0x9d1e93ed,0x721290f2,0x430888f5,0x120162d6,0x20a162b,0xa0a0a,0xa0a0a,
1278 0xf0f0f0,0x82e85c2,0x453994d2,0xa53fa8e9,0xea63c1fc,0xff8bd2ff,0xff96d4ff,0xff75c3ff,0xf94eb0ff,0xd6228ef6,0x700558bd,0x21031d43,0x7050b17,0x10a0a0a,
1279 0x43b79af,0x444594d0,0xcc61b5f0,0xff91d7ff,0xffb8e7ff,0xffbde7ff,0xffabdfff,0xff8cceff,0xff6eb9ff,0xff3f9aff,0xdc0d65d4,0x7c002e77,0x24011235,0x607090d,
1280 0x1c4587bb,0xa050a4e5,0xff9fd8ff,0xffd4f0ff,0xffdcf3ff,0xffc2eaff,0xffc9ebfe,0xffb2ddfe,0xff52a9ff,0xff3691ff,0xfa0c6bef,0xcd0041ad,0x62001e59,0x19070c18,
1281 0x4c418cc4,0xe36bc1fa,0xffc2e9ff,0xffe4f5ff,0xffe9f7ff,0xffceeeff,0xfff6fbfd,0xffe5f1fd,0xff3397ff,0xfe177bfd,0xfe035eec,0xef0043bb,0xa7002570,0x3b070f22,
1282 0x9f1e96ea,0xfd87d1ff,0xffc6ecff,0xffd0efff,0xffd9f2ff,0xffc9eaff,0xffb5e0ff,0xff85c2ff,0xff338dfe,0xfe0e6bf6,0xfe0050e0,0xfc003fb6,0xd600287e,0x69081022,
1283 0xf317a4fe,0xff88d1ff,0xffb0e3ff,0xff9bdeff,0xffaae1ff,0xffe3f4fe,0xfff1f8fd,0xffd4e7fd,0xff2c82fc,0xfe0c5eed,0xfe0047d7,0xfe003bb4,0xf1002986,0x85081023,
1284 0xda0d96e0,0xff6ec3ff,0xff8dd3ff,0xff61c4ff,0xff6dc3ff,0xff6ebcff,0xffebf5fd,0xffe0ebfc,0xff186af8,0xfe014fe9,0xfe003dc8,0xff0034ac,0xf4002683,0x87080f23,
1285 0x860b81c1,0xfe3ba8fc,0xff60bcff,0xff3cacff,0xff3ba4ff,0xff3b9afe,0xffe4effc,0xffdee8fb,0xff0857ec,0xfe0045d3,0xfe0037b7,0xff002e9c,0xd0001e6b,0x6e080d1b,
1286 0x330c70ae,0xda0e87e1,0xfd2b9ffc,0xff1a93ff,0xff2e91f4,0xff64a8f7,0xffebf2fc,0xffe8effa,0xff4c7fe4,0xfe0d43be,0xfe0030a3,0xf0002588,0x9a021547,0x4b080b11,
1287 0x904507e,0x700265a5,0xec037ad9,0xff0474ec,0xff2675db,0xff6e9ae1,0xff7ea2e2,0xff7e9ddd,0xff6586ce,0xfe113fab,0xf2002788,0xbd00175b,0x6a060c21,0x2b0a0a0a,
1288 0x2121a20,0x23073d63,0x81014c8f,0xd100479f,0xf40046a9,0xfe0045b4,0xff003eb6,0xff0039ae,0xff00329b,0xf500298a,0xbe001b63,0x79030d2d,0x42080a12,0x120a0a0a,
1289 0xa0a0a,0x60a0a0a,0x2006172c,0x64011f4b,0xa9002663,0xd5002c7a,0xfa002f8a,0xe700297e,0xc9001f66,0xa7001851,0x71000d31,0x3f050712,0x1b0a0a0a,0x30a0a0a,
1290 0xa0a0a,0x10a0a0a,0x60a0a0a,0x19070c17,0x39070f1f,0x67081021,0x87081225,0x89080f1f,0x78070b19,0x4f02061a,0x24070911,0xb07070d,0x40a0a0a,0xa0a0a
1291};
1292
1293static const QRgb accessories_data[] = {
1294 0x0,0x0,0x0,0x2fcac00,0x49feb50d,0xd2ffd436,0x68e2a50e,0x4f7a500,0x8afabb25,0x3edd9508,0x0,0x0,0x0,0x0,
1295 0x0,0xfdad00,0x31feb007,0xb9ffd147,0xfdfff275,0xffffff72,0xe6f8d235,0xa0f5be35,0xfffff883,0xf3f9dc4d,0x53d6890a,0x301b00,0x0,0x0,
1296 0x2f3a600,0x97fec53f,0xfcffec94,0xffffffa4,0xffffff87,0xffffe951,0xfffed131,0xfffbc232,0xfffef974,0xfffff55e,0xfaf7cb35,0x6bd27f08,0x1522b00,0x0,
1297 0x2e09900,0x97f9c240,0xfffffdba,0xfffff082,0xffffcf34,0xffffd534,0xffffed52,0xfffec724,0xfff6bd27,0xfffce047,0xffffd636,0xfdf8b418,0x77c56901,0x1000000,
1298 0xa3f6ab09,0xbcfac646,0xffffc635,0xffffc01a,0xffffd332,0xffffe649,0xfffff761,0xffffd939,0xffffdd40,0xfff1b92b,0xfff9bd21,0xf1e6960c,0x517a3c00,0x1000000,
1299 0x12bb8001,0xbcf6c643,0xffffea66,0xfffdc421,0xffffde40,0xfffff057,0xfffffe79,0xffffe94e,0xffffef55,0xfffcea56,0xffe3981c,0xd3cd790b,0x84c75e02,0x279c3d00,
1300 0x0,0xdb57b00,0xe6f9bb1a,0xfffdd73b,0xfff8c52d,0xfffff865,0xfff8d75b,0xfff9d943,0xfff1cb44,0xffefc33b,0xfff9d03a,0xe7d78b14,0x76904202,0x11260f00,
1301 0x0,0x2e89700,0xdcfab310,0xfff8b417,0xfff5ac13,0xffea960a,0xffe88f05,0xffecb64c,0xfffaee74,0xffecbc39,0xfada7f0c,0x36512100,0x1000000,0x0,
1302 0x0,0x2e28d00,0xdcf8bc20,0xffffd635,0xfffed334,0xfff8c631,0xfff2b630,0xffefb22e,0xffedad28,0xfffbc325,0xfae89e19,0x295c2200,0x0,0x0,
1303 0x0,0x1d88300,0xcdf0b124,0xffffe84e,0xffffeb50,0xffffec54,0xffffe552,0xffffe043,0xffffdf41,0xffffdd3f,0xfae7aa2a,0x295b2200,0x0,0x0,
1304 0x0,0x0,0x25bc6c02,0xd6e7ac2f,0xfffef667,0xfffffd70,0xfffff668,0xfffff35b,0xfffff158,0xfef5cf47,0xd0c1741d,0x1b3e1700,0x0,0x0,
1305 0x0,0x0,0x0,0x1aa65600,0xc9dc952f,0xfffdf18f,0xfffffe86,0xfff9e161,0xe1d08d2d,0x70883a06,0x11140700,0x0,0x0,0x0,
1306 0x0,0x0,0x0,0x0,0x10924200,0xb9cf7a2f,0xedd99445,0x8695420b,0x1b2c1000,0x1000000,0x0,0x0,0x0,0x0,
1307 0x0,0x0,0x0,0x0,0x0,0xa782e00,0x214b1c00,0x2000000,0x0,0x0,0x0,0x0,0x0,0x0
1308};
1309
1310static const QRgb appearance_data[] = {
1311 0x0,0x0,0x0,0x0,0x0,0x6e5c528,0x95f2e089,0x51d3bf5a,0x0,0x0,0x0,0x0,0x0,0x0,
1312 0x0,0x0,0x0,0x0,0x0,0x68efd96a,0xfffefae1,0xeef3e9b4,0x20847319,0x0,0x0,0x0,0x0,0x0,
1313 0x0,0x0,0x0,0x0,0x10e6c626,0xe6f8ecaa,0xfffffcd8,0xfffffbd7,0x9ed6c56a,0x1090909,0x0,0x0,0x0,0x0,
1314 0x0,0x0,0x1efdf8d,0x11e4c322,0xa6f3e078,0xfffff9c6,0xfffffbc5,0xfffffbc7,0xfaf9f0ae,0x59ceb843,0x5bea322,0x0,0x0,0x0,
1315 0x41ecd14b,0x93f3df73,0xc9f6e686,0xf1f9ed98,0xfffbf3b3,0xfffbf5d0,0xfffbf296,0xfffbf4bf,0xfffaf2be,0xfefcf4ab,0xe2f6e78e,0xb3f3e17e,0x7debd462,0x18c5aa23,
1316 0xdef3d84a,0xfffdeb57,0xfffef150,0xfffef345,0xfffbf4ba,0xffffffff,0xffffffff,0xffffffff,0xfffffefc,0xfffbee52,0xfffef24a,0xfffdef54,0xfffde657,0x93bba42f,
1317 0x57d7b91e,0xfaf9e136,0xfffef142,0xfffff442,0xfff2ebbd,0xff6f6f6f,0xffdedede,0xff858585,0xffbebebd,0xfffbef60,0xfffff343,0xfffded40,0xe6dbc128,0x35483d09,
1318 0x0,0x6ad5ba27,0xfdfbe84d,0xfffef45a,0xfff9ef7c,0xff8a866f,0xffede7bc,0xff9c987f,0xffd8d196,0xfffef459,0xfffef159,0xede3cc39,0x4654480c,0x0,
1319 0x0,0x14d420c,0xa4e9d141,0xfffef371,0xffefe58e,0xfff0e8ab,0xfff1eaad,0xfff0e8ab,0xffeee7a9,0xfff8ee71,0xfef9e962,0x69786814,0x1040404,0x0,
1320 0x0,0x0,0x6bebd142,0xfffef386,0xfff0e9ad,0xffe8e8e8,0xffe7e7e7,0xffe8e8e8,0xffedebe0,0xfffbf288,0xfaf3e26b,0x2b413807,0x0,0x0,
1321 0x0,0x0,0x82f0d854,0xfffef59f,0xfff9f29e,0xffeae4c3,0xffede7c9,0xffede8c9,0xfff0e8ad,0xfffff9a3,0xfcf7e983,0x376e5e0f,0x0,0x0,
1322 0x0,0x0,0xa1f4df6f,0xfffef7b5,0xfffef8b4,0xfffcf19c,0xf1e6d776,0xf8f1e383,0xfffef6ab,0xfffef8b7,0xfffdf1a2,0x53927e19,0x0,0x0,
1323 0x0,0x0,0x9befd761,0xfcf7e896,0xd2cdbc5d,0x6a7f6f1c,0x1c1b1703,0x215e500d,0x80c6b140,0xe5ebda7c,0xfdf9e78f,0x5986741a,0x0,0x0,
1324 0x0,0x0,0x16937e18,0x456a5b13,0xf050401,0x1b1b1b,0x0,0x0,0x222222,0x11574a0a,0x487b6a18,0xf100e02,0x0,0x0
1325};
1326
1327static const QRgb back_data[] = {
1328 0x0,0x0,0x0,0x0,0x0,0x0,0x1fefefe,0x5fefefe,0x5fefefe,0x4fefefe,0x1fefefe,0x0,0x0,0x0,
1329 0x0,0x0,0x0,0x0,0x0,0x2fefefe,0x33c7e2fe,0x9488c2fe,0x997ab9fe,0x946daffe,0x784f97fe,0xb175be3,0x0,0x0,
1330 0x0,0x0,0x0,0x0,0x1fefefe,0x32c8e3fe,0xca99cafd,0xffe8f3fc,0xffeaf4fc,0xffe5f1fc,0xe2659cee,0x150c2863,0x0,0x0,
1331 0x0,0x0,0x0,0x1fefefe,0x27c4e1fe,0xc38ac2fd,0xfee0edf8,0xfff2f6f7,0xfff0f5f8,0xeb84adea,0x4a12347f,0x2000000,0x0,0x0,
1332 0x0,0x0,0xfefefe,0x18e9f3fe,0xa78ec4fb,0xffc9dff3,0xffe6edf1,0xffe4ecf1,0xf191b6ea,0x5a173782,0x5000000,0x0,0x0,0x0,
1333 0x0,0x0,0xffefefe,0x8e85befc,0xf9b3d3ed,0xffd7e4e9,0xffd7e4e9,0xfb9abcec,0x861f4eb4,0xa030713,0x0,0x0,0x0,0x0,
1334 0x0,0x0,0x4c62a2fe,0xf691beea,0xffc7d8df,0xffc8d8df,0xffa7c6e4,0x981b46b3,0xe030b27,0x0,0x0,0x0,0x0,0x0,
1335 0x0,0x0,0x1e6ba4fe,0xcb467fed,0xffb0c8d8,0xffb8cdd7,0xffb4cbd7,0xd23d71e8,0x1e0937e9,0x0,0x0,0x0,0x0,0x0,
1336 0x0,0x0,0x2fefefe,0x23244ee5,0xd14c80df,0xffa2bfcf,0xffa8c2cd,0xff95b7d1,0xb92d62e7,0xe0626c7,0x0,0x0,0x0,0x0,
1337 0x0,0x0,0x0,0x2d0d8f8,0x431744ef,0xef4f7fdd,0xff99b6c7,0xff9bb7c6,0xfb7fa4cc,0x8c1f50df,0x40524cc,0x0,0x0,0x0,
1338 0x0,0x0,0x0,0xfefefe,0x3a8b5f7,0x59133bf1,0xf35883d3,0xff90afbe,0xff90b0be,0xfd6f97c9,0x83133ee6,0x1031164,0x0,0x0,
1339 0x0,0x0,0x0,0x0,0xfefefe,0x3fefefe,0x5e0933ec,0xe94375ce,0xf0467ac7,0xf04679c7,0xe2245ad4,0x1c041899,0x0,0x0,
1340 0x0,0x0,0x0,0x0,0x0,0xfefefe,0x707070,0x25041bb8,0x3203189d,0x3203179c,0x2b031589,0x5010102,0x0,0x0,
1341 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0
1342};
1343
1344static const QRgb back_inactive_data[] = {
1345 0x0,0x0,0x0,0x0,0x0,0x0,0x1f1f1f1,0x5f1f1f1,0x5f1f1f1,0x4f1f1f1,0x1f1f1f1,0x0,0x0,0x0,
1346 0x0,0x0,0x0,0x0,0x0,0x2f1f1f1,0x33a7bef1,0x9483a4f1,0x997d9ef1,0x947798f1,0x78668bf1,0xb3a6dbf,0x0,0x0,
1347 0x0,0x0,0x0,0x0,0x1f1f1f1,0x32a8bff1,0xca8caaec,0xffc5d4e8,0xffc7d5e8,0xffc1d1e8,0xe2738dcc,0x152b4b72,0x0,0x0,
1348 0x0,0x0,0x0,0x1f1f1f1,0x27a5bdf1,0xc384a4ec,0xfebccbdd,0xffd2d9db,0xffcfd7dd,0xeb8297c7,0x4a34557f,0x2000000,0x0,0x0,
1349 0x0,0x0,0xf1f1f1,0x18c6d4f1,0xa786a5e5,0xffa9bbd4,0xffc2cbd1,0xffc0cad1,0xf1889cc7,0x5a3a5781,0x5000000,0x0,0x0,0x0,
1350 0x0,0x0,0xff1f1f1,0x8e82a1e8,0xf99ab1cb,0xffb4c0c6,0xffb4c0c6,0xfb8ca0ca,0x8643669b,0xa172235,0x0,0x0,0x0,0x0,
1351 0x0,0x0,0x4c7191f1,0xf688a1c7,0xffa7b5bb,0xffa8b5bb,0xff93a7c0,0x983f619a,0xe172a4a,0x0,0x0,0x0,0x0,0x0,
1352 0x0,0x0,0x1e7692f1,0xcb617fcb,0xff99a8b5,0xff9dacb4,0xff9baab4,0xd25b79c5,0x1e2657c6,0x0,0x0,0x0,0x0,0x0,
1353 0x0,0x0,0x2f1f1f1,0x234866c1,0xd16580bb,0xff91a2ad,0xff94a4ac,0xff8a9daf,0xb94f71c4,0xe2049a7,0x0,0x0,0x0,0x0,
1354 0x0,0x0,0x0,0x2aeb5dd,0x433a60ce,0xef667fb9,0xff8c9ca7,0xff8d9da7,0xfb7f92ab,0x8c4367bb,0x41d48ab,0x0,0x0,0x0,
1355 0x0,0x0,0x0,0xf1f1f1,0x3949cdb,0x59355ad1,0xf36c81b1,0xff8798a1,0xff8799a1,0xfd788ba9,0x83355cc2,0x1173372,0x0,0x0,
1356 0x0,0x0,0x0,0x0,0xf1f1f1,0x3f1f1f1,0x5e2654ca,0xe95f7bad,0xf0617da7,0xf0617ca7,0xe2486db1,0x1c1a3b8c,0x0,0x0,
1357 0x0,0x0,0x0,0x0,0x0,0xf1f1f1,0x787878,0x251a3f9d,0x32173b8e,0x32173a8d,0x2b173884,0x50e0e13,0x0,0x0,
1358 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0
1359};
1360
1361static const QRgb beam_data[] = {
1362 0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,
1363 0xdcdcdc,0xffc3c3c3,0xffc3c3c3,0xffc3c3c3,0xffc3c3c3,0xffc3c3c3,0xffc3c3c3,0xffc3c3c3,0xffc3c3c3,0xffc3c3c3,0xffc3c3c3,0xffc3c3c3,0xffc3c3c3,0xdcdcdc,
1364 0xffc3c3c3,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xffc3c3c3,
1365 0xdcdcdc,0xdcdcdc,0xffa0a0a0,0xffa0a0a0,0xffa0a0a0,0xffa0a0a0,0xffa0a0a0,0xffa0a0a0,0xffa0a0a0,0xffa0a0a0,0xffa0a0a0,0xffa0a0a0,0xdcdcdc,0xdcdcdc,
1366 0xdcdcdc,0xffa0a0a0,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xffa0a0a0,0xdcdcdc,
1367 0xdcdcdc,0xdcdcdc,0xdcdcdc,0xff808080,0xff808080,0xff808080,0xff808080,0xff808080,0xff808080,0xff808080,0xff808080,0xdcdcdc,0xdcdcdc,0xdcdcdc,
1368 0xdcdcdc,0xdcdcdc,0xff808080,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xff808080,0xdcdcdc,0xdcdcdc,
1369 0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xff585858,0xff585858,0xff585858,0xff585858,0xff585858,0xff585858,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,
1370 0xdcdcdc,0xdcdcdc,0xdcdcdc,0xff585858,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xff585858,0xdcdcdc,0xdcdcdc,0xdcdcdc,
1371 0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xff303030,0xff303030,0xff303030,0xff303030,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,
1372 0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xff303030,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xff303030,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,
1373 0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xff303030,0xff303030,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,
1374 0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xff303030,0xff303030,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,
1375 0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc
1376};
1377
1378static const QRgb bell_data[] = {
1379 0xfffffa,0x0,0x1e2e2e1,0x40938117,0x4b8c7c1a,0xa090804,0x7000000,0x2000000,0x0,0x0,0x0,0x0,0x0,0x0,
1380 0x0,0x0,0x31bbb55b,0xdcc0ac29,0xe8bfa51d,0xa5a89226,0x4b807420,0x13000000,0x7000000,0x1000000,0x0,0x0,0x0,0x0,
1381 0x0,0x488893c,0xb5c0be2f,0xffecd50d,0xffebbf05,0xffbe9a04,0xde96820a,0x43302a10,0x1e000000,0x9000000,0x1000000,0x0,0x0,0x0,
1382 0x0,0x25a19738,0xead5cc1b,0xfff7e605,0xfff6cb07,0xffddad01,0xffaf8d03,0xba766819,0x430c0a04,0x1c000000,0x6000000,0x0,0x0,0x0,
1383 0x0,0x30a6943b,0xf0e1d016,0xfffaf007,0xfff4d802,0xfff5c502,0xffcda300,0xf9947e0d,0x89534517,0x3c020201,0x13000000,0x3000000,0x0,0x0,
1384 0x1000000,0x31b29d54,0xf0e7d61b,0xfffdf703,0xfff8de01,0xfffcca06,0xffecb900,0xffc39d03,0xf49c8222,0x7e4f471f,0x2c010100,0xd000000,0x2000000,0x0,
1385 0x1000000,0x31b6a257,0xf0e9d71c,0xfffdf801,0xfff9ed01,0xfff5d203,0xfffacc06,0xfff1c407,0xffe5c20a,0xf7cab927,0x717f782f,0x25000000,0xb000000,0x2000000,
1386 0x1000000,0x31b2a243,0xf0ecdd13,0xfffdf70a,0xfff6ef18,0xffe7d213,0xffcdac0d,0xffb28c07,0xffb28b0a,0xffc8a508,0xfad3b91f,0x72776521,0x23000000,0xa000000,
1387 0x1000000,0x5ed5c442,0xfaf1df19,0xffd9c508,0xffb49806,0xff9a7c00,0xffb0930f,0xff9b7804,0xff9c7303,0xffd4a508,0xfecca719,0xd08d7422,0x47000000,0x1a000000,
1388 0x8ac9d4f,0xb4d8bd2a,0xffd2a70a,0xffae8308,0xffa07c01,0xffb89209,0xffcab546,0xffedcf2f,0xffab8706,0xffb69017,0xe479631e,0x93110d05,0x5d000000,0x25000000,
1389 0x1394822c,0xd8c9a718,0xffe3af0a,0xffddbc07,0xfff2ed07,0xfff3e516,0xffbca716,0xfaab9819,0xd66d5c13,0xb340340d,0x91050401,0x79000000,0x4a000000,0x1c000000,
1390 0x7221d0b,0x749b8020,0xddaa8a26,0xe2a89523,0xe4a0a61f,0xe87f821a,0xc34d470e,0xa11f1c05,0x8e000000,0x7c000000,0x64000000,0x44000000,0x22000000,0xb000000,
1391 0x4000000,0x19010100,0x43070603,0x63040301,0x76020200,0x7f000000,0x7d000000,0x6c000000,0x57000000,0x3f000000,0x29000000,0x16000000,0x8000000,0x2000000,
1392 0x1000000,0xa000000,0x20000000,0x39000000,0x45000000,0x45000000,0x3e000000,0x2e000000,0x1e000000,0x11000000,0x8000000,0x3000000,0x1000000,0x0
1393};
1394
1395static const QRgb binary_data[] = {
1396 0x0,0x40d0d0df,0xffd2d2e0,0xffd6d6e3,0xffd6d6e3,0xffd5d5e3,0xffd5d5e3,0xffd3d3e1,0xffc7c7d8,0xaba2a2bb,0x109c9cb6,0x0,0x0,0x0,
1397 0x0,0x40d0d0df,0xffe2e2eb,0xffffffff,0xffffffff,0xfffbfbfe,0xfff6f6fd,0xffeaeaf3,0xffe4e4ef,0xffc2c2d4,0x9fa7a7bf,0x189c9cb6,0x0,0x0,
1398 0x0,0x40d0d0df,0xffe2e2eb,0xffffffff,0xffffffff,0xffe2e2ea,0xfff4f4fb,0xffededf5,0xffdfdfeb,0xffbdbdd0,0xffadadc3,0x9b9c9cb6,0x189c9cb6,0x0,
1399 0x0,0x40d0d0df,0xffe2e2eb,0xffffffff,0xffe0e0e8,0xffa8a8bf,0xffededf5,0xffefeff7,0xffe1e1ec,0xffbebed1,0xffb6b6cb,0xffa4a4bd,0x409c9cb6,0x0,
1400 0x0,0x40d0d0df,0xffe2e2eb,0xffffffff,0xffe8e8ee,0xffababc1,0xffefeff6,0xfff1f1f8,0xffe9e9f2,0xffdadae6,0xffcecedd,0xffaeaec4,0x409c9cb6,0x0,
1401 0x0,0x40d0d0df,0xffe2e2eb,0xffffffff,0xffd1d1dd,0xffa2a2bb,0xffb1b1c6,0xfff2f2f8,0xffe6e6f0,0xffd4d4e3,0xffd0d0df,0xffafafc5,0x409c9cb6,0x0,
1402 0x0,0x40d0d0df,0xffe2e2eb,0xffffffff,0xfff7f7f9,0xffeeeef5,0xffeaeaf3,0xffe8e8f1,0xffe0e0ec,0xffdbdbe8,0xffd8d8e6,0xffb2b2c8,0x409c9cb6,0x0,
1403 0x0,0x40d0d0df,0xffe2e2eb,0xffffffff,0xfffdfdff,0xffefeff7,0xffeeeef5,0xffe6e6f0,0xffe2e2ed,0xffdadae8,0xffddddea,0xffb4b4c9,0x409c9cb6,0x0,
1404 0x0,0x40d0d0df,0xffe2e2eb,0xffffffff,0xffededf3,0xffbdbdd0,0xffd4d4e1,0xffe8e8f1,0xffc7c7d7,0xffb6b6cb,0xffe1e1ed,0xffb6b6ca,0x409c9cb6,0x0,
1405 0x0,0x40d0d0df,0xffe2e2eb,0xfffdfdff,0xffc0c0d1,0xffdcdce8,0xffa7a7be,0xffe5e5ef,0xffb2b2c7,0xffb7b7cb,0xffe2e2ed,0xffb6b6ca,0x409c9cb6,0x0,
1406 0x0,0x40d0d0df,0xffe2e2eb,0xfffbfbfe,0xffdadae6,0xffc7c7d7,0xffc6c6d7,0xffe7e7f1,0xffb9b9cd,0xffaaaac1,0xffd1d1e0,0xffb6b6cb,0x409c9cb6,0x0,
1407 0x0,0x40d0d0df,0xffe2e2eb,0xfff9f9fd,0xfff3f3f9,0xffd9d9e5,0xffececf3,0xffe9e9f1,0xffccccdc,0xffcacada,0xffd5d5e3,0xffb6b6cb,0x409c9cb6,0x0,
1408 0x0,0x40d0d0df,0xffe1e1eb,0xfff8f8fc,0xfff3f3f9,0xfff1f1f8,0xffefeff6,0xffebebf4,0xffe9e9f2,0xffe6e6f0,0xffe3e3ee,0xffb6b6cb,0x409c9cb6,0x0,
1409 0x0,0x40a3a3bb,0xffa5a5bd,0xffa7a7bf,0xffa7a7be,0xffa7a7be,0xffa6a6be,0xffa6a6be,0xffa6a6be,0xffa5a5bd,0xffa5a5bd,0xff9f9fb9,0x409c9cb6,0x0
1410};
1411
1412static const QRgb bold_data[] = {
1413 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
1414 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
1415 0x0,0x0,0x0,0x30000000,0x60000000,0x60000000,0x60000000,0x60000000,0x48000000,0x0,0x0,0x0,0x0,0x0,
1416 0x0,0x0,0x0,0x40000000,0xcf000000,0xff000000,0x8f000000,0x8f000000,0xdf000000,0x50000000,0x0,0x0,0x0,0x0,
1417 0x0,0x0,0x0,0x0,0x9f000000,0xff000000,0x20000000,0xc000000,0x87000000,0xdb000000,0x50000000,0x0,0x0,0x0,
1418 0x0,0x0,0x0,0x0,0x9f000000,0xff000000,0x20000000,0x0,0x40000000,0xff000000,0x7f000000,0x0,0x0,0x0,
1419 0x0,0x0,0x0,0x0,0x9f000000,0xff000000,0x20000000,0x1c000000,0xe7000000,0xab000000,0x10000000,0x0,0x0,0x0,
1420 0x0,0x0,0x0,0x0,0x9f000000,0xff000000,0xe3000000,0xdf000000,0xe7000000,0xab000000,0x10000000,0x0,0x0,0x0,
1421 0x0,0x0,0x0,0x0,0x9f000000,0xff000000,0x20000000,0x0,0x30000000,0xd7000000,0x9f000000,0x18000000,0x0,0x0,
1422 0x0,0x0,0x0,0x0,0x9f000000,0xff000000,0x20000000,0x0,0x0,0x60000000,0xff000000,0x60000000,0x0,0x0,
1423 0x0,0x0,0x0,0x0,0x9f000000,0xff000000,0x20000000,0x0,0x20000000,0xaf000000,0xbf000000,0x30000000,0x0,0x0,
1424 0x0,0x0,0x0,0x50000000,0xdb000000,0xff000000,0xab000000,0x9f000000,0xb7000000,0xc3000000,0x30000000,0x0,0x0,0x0,
1425 0x0,0x0,0x0,0x20000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x28000000,0x0,0x0,0x0,0x0,
1426 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0
1427};
1428
1429static const QRgb c_src_data[] = {
1430 0x0,0x0,0x14d3d3d4,0x2fcdcdd1,0x2fc8c8cf,0x2fc4c4cc,0x2fbfbfc9,0x2fbabac7,0x17adadbc,0x0,0x0,0x0,0x0,0x0,
1431 0x0,0x0,0x7cd6d6d9,0xfff4f4f5,0xfff5f5f6,0xfff3f3f5,0xffeeeef2,0xffe6e6ed,0xe3bebecd,0x289393a5,0x0,0x0,0x0,0x0,
1432 0x0,0x0,0x7dd2d2d7,0xfffdfdfe,0xfff3f3f3,0xfffdfdfe,0xfff0f0f2,0xffececf1,0xffdedee7,0xddc9c9d7,0x2489899f,0x0,0x0,0x0,
1433 0x0,0x0,0x7dcdcdd5,0xfffdfdfe,0xfff4f4f4,0xfffefefe,0xfff4f4f5,0xfff1f1f6,0xffdddde6,0xfff3f3f7,0xdcbabace,0x207b7b94,0x0,0x0,
1434 0x0,0x0,0x7dc8c8d2,0xfffdfdfd,0xffebebeb,0xfffcfcfd,0xffebebec,0xffececf1,0xffd3d3e0,0xffc9c9da,0xffc6c6d8,0x8d8d8da6,0x0,0x0,
1435 0x0,0x0,0x7dc3c3d0,0xfffdfdfd,0xfffcfcfc,0xffffffff,0xfff6f6f8,0xfff2f2f7,0xffe8e8f1,0xffe0e0ec,0xffdfdfec,0x938e8ea6,0x0,0x0,
1436 0x0,0x0,0x7dbebecd,0xfffdfdfd,0xffffffff,0xffffffff,0xffe8e8ea,0xffeaeaf0,0xffd9d9e1,0xffe0e0e9,0xffe1e1ed,0x938a8aa5,0x0,0x0,
1437 0x0,0x0,0x7db9b9cb,0xfffcfcfd,0xffececee,0xfff0f0f6,0xffe3e3e9,0xffe6e6ee,0xffe9e9f2,0xffe6e6f0,0xffe3e3ef,0x938888a3,0x0,0x0,
1438 0x0,0x0,0x7db4b4c8,0xfff8f8fa,0xffefeff1,0xfff3f3f7,0xffebebf0,0xffededf3,0xffebebf3,0xffe9e9f2,0xffe6e6f0,0x938585a2,0x0,0x0,
1439 0x0,0x0,0x7db5b5ca,0xffe2d9e9,0xffccbcd8,0xffbba5cb,0xffad93c0,0xffa588ba,0xff8b67a6,0xff7f579d,0xff9779b1,0x938282a1,0x0,0x0,
1440 0x0,0x0,0x7db2b2c9,0xffddd3e5,0xffc2aed0,0xffad93c0,0xffbca7cc,0xffa082b6,0xff754894,0xff663589,0xff8560a2,0x937f7f9f,0x0,0x0,
1441 0x0,0x0,0x7daeaec6,0xffddd3e5,0xffc2aed0,0xffb69ec6,0xffb59dc6,0xffad92bf,0xff764a95,0xff663589,0xff8661a3,0x937d7d9e,0x0,0x0,
1442 0x0,0x0,0x7ca5a5c1,0xffddd8e7,0xffd0c7dd,0xffc5b9d5,0xffbaabcc,0xffaf9dc5,0xffa591bd,0xff9d86b7,0xffaa99c2,0x92747499,0x0,0x0,
1443 0x0,0x0,0x1a6d6d8a,0x455b5b76,0x45585873,0x45545472,0x45515170,0x454d4d6e,0x454a4a6d,0x4547476b,0x45434369,0x2831314e,0x0,0x0
1444};
1445
1446static const QRgb calculator_data[] = {
1447 0x2000000,0xfff9f9f9,0xfff3f3f3,0xffe6e6e6,0xffdbdbdb,0xffe4e4e4,0xffeeeeee,0xffeeeeee,0xffeeeeee,0xffeeeeee,0xffeeeeee,0xffeeeeee,0x13000000,0xe000000,
1448 0x7000000,0xff76aa76,0xff66a166,0xff4d874d,0xffffffff,0xff4d874d,0xff589958,0xff589958,0xff589958,0xff589958,0xff589958,0xff3e8a3e,0xff006a00,0x2b000000,
1449 0xe000000,0xff629a62,0xff3c7c3c,0xff1e5c1e,0xffffffff,0xff1e5c1e,0xff247024,0xff287a28,0xff297f29,0xff297f29,0xff297f29,0xff006d00,0xff005400,0x55000000,
1450 0x13000000,0xff508d50,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xff006500,0xff006e00,0xff006e00,0xff006e00,0xff006300,0xff004b00,0x71000000,
1451 0x15000000,0xff549354,0xff247024,0xff004f00,0xffffffff,0xff004a00,0xff005300,0xff005800,0xff005d00,0xff005d00,0xff006100,0xff005f00,0xff004b00,0x7f000000,
1452 0x15000000,0xff589958,0xff297f29,0xff006100,0xffffffff,0xff005800,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xff005b00,0xff004b00,0x7f000000,
1453 0x15000000,0xff549354,0xff257625,0xff006500,0xff006500,0xff006100,0xff005800,0xff005800,0xff005800,0xff005300,0xff005d00,0xff005f00,0xff004b00,0x7f000000,
1454 0x15000000,0xff508d50,0xffffffff,0xff8fb28f,0xff006500,0xff8fb28f,0xffffffff,0xff006500,0xff8fb68f,0xffffffff,0xff8fb68f,0xff006300,0xff004b00,0x7f000000,
1455 0x15000000,0xff549354,0xff9ab89a,0xffffffff,0xff8fad8f,0xffffffff,0xff8faf8f,0xff005d00,0xff005800,0xff005300,0xff005800,0xff005800,0xff004800,0x7f000000,
1456 0x15000000,0xff589958,0xff257625,0xff8fad8f,0xffffffff,0xff8fad8f,0xff005d00,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xff004600,0x7f000000,
1457 0x15000000,0xff549354,0xff9ab89a,0xffffffff,0xff8fad8f,0xffffffff,0xff8faf8f,0xff005d00,0xff005800,0xff005300,0xff005800,0xff005800,0xff004800,0x7f000000,
1458 0x15000000,0xff397f39,0xffffffff,0xff8fad8f,0xff005b00,0xff8fad8f,0xffffffff,0xff005b00,0xff8fb18f,0xffffffff,0xff8fb18f,0xff005a00,0xff004700,0x7f000000,
1459 0x13000000,0xff006600,0xff004e00,0xff004800,0xff004b00,0xff004800,0xff004600,0xff004800,0xff004800,0xff004600,0xff004800,0xff004700,0xff004000,0x71000000,
1460 0xe000000,0x2b000000,0x55000000,0x71000000,0x7f000000,0x7f000000,0x7f000000,0x7f000000,0x7f000000,0x7f000000,0x7f000000,0x7f000000,0x71000000,0x55000000
1461};
1462
1463static const QRgb center_data[] = {
1464 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
1465 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
1466 0xc000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0xc000000,
1467 0x10000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x10000000,
1468 0x0,0x0,0x3c000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x3c000000,0x0,0x0,
1469 0x0,0x0,0x18000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x18000000,0x0,0x0,
1470 0x1c000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0x1c000000,
1471 0x0,0x0,0xc000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0xc000000,0x0,0x0,
1472 0x0,0x0,0x48000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0x48000000,0x0,0x0,
1473 0xc000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0xc000000,
1474 0x10000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x10000000,
1475 0x0,0x0,0x3c000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x3c000000,0x0,0x0,
1476 0x0,0x0,0x18000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x18000000,0x0,0x0,
1477 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0
1478};
1479
1480static const QRgb citytime_icon_data[] = {
1481 0x0,0x0,0x0,0x1b9ebfb,0x2ca9e0fc,0x7688c4f8,0x8f75b7f8,0x856cb1f7,0x4b68b0f5,0x75c9ed8,0x0,0x0,0x0,0x0,
1482 0x0,0x0,0xed3fcfd,0xa2b8e6fc,0xfbb6e0f9,0xffc5eafe,0xffd1eefe,0xffb9e4fe,0xff89c7fc,0xd46db2f7,0x38509ae6,0x0,0x0,0x0,
1483 0x0,0xaecfcfd,0xc2bde5fd,0xffade3ff,0xffccf7ff,0xffebfeff,0xffdffdff,0xffb8ecff,0xff97d7ff,0xff76c1ff,0xf14e9ff8,0x3d408ada,0x0,0x0,
1484 0x0,0x84aed3f9,0xff8dccfe,0xffc8edff,0xffe9f9ff,0xfff2fbff,0xffddfcff,0xffbbedff,0xff9cd8ff,0xff74bfff,0xff55aaff,0xdd3b89ec,0xe295582,0x0,
1485 0xfd8fdfd,0xed77b7f7,0xffb7e2ff,0xffddf5ff,0xffe4f7ff,0xffd3f3ff,0xffbbedff,0xfface2ff,0xff95d2ff,0xff6ab9ff,0xff53a9ff,0xff2e76e9,0x653b82d1,0x0,
1486 0x45b4e5fa,0xff4f96f0,0xffc2eafe,0xffd6f3ff,0xffdaf4ff,0xffa4ddff,0xff99d8ff,0xff8aceff,0xff74bfff,0xff5eb0ff,0xff55aaff,0xff1a56da,0xae2b70d5,0x1000000,
1487 0x6399d1f8,0xff4088eb,0xff57adf7,0xffabe3ff,0xffd3f2ff,0xffc6ebff,0xffafdfff,0xff6cbaff,0xff5bafff,0xff53a9ff,0xff529af5,0xff1f59db,0xcb2d70d7,0x5000000,
1488 0x5b90caf7,0xff2c6de0,0xff3b83e9,0xff56a6f4,0xffbce6fe,0xffcaeeff,0xffcbefff,0xff62b2ff,0xff4ca1fb,0xff5299f3,0xff5991ec,0xff3a76e4,0xc54287dc,0x5000000,
1489 0x2d91cdf5,0xfd265fda,0xff2763dd,0xff7baff2,0xffb7e1fc,0xffc8ecfe,0xffccefff,0xff619bed,0xff2663dd,0xff80b2f1,0xff5386e6,0xff0e43d2,0x9c4081cd,0x1000000,
1490 0x376add3,0xcc4983e4,0xff5383e4,0xffb2dcfc,0xffcceeff,0xffdcf4ff,0xffe1f6ff,0xffb9d7f8,0xffa5ccf6,0xff9ac6f6,0xff71a3ee,0xfd407ce5,0x49306294,0x0,
1491 0x0,0x456eb0ec,0xfb669aec,0xffbbe3fd,0xffd5f3ff,0xffe9f9ff,0xfff4fcff,0xffe6f8ff,0xffd2f1ff,0xffb6dffc,0xff95c7f9,0xb15592d3,0x903070b,0x0,
1492 0x0,0x12f516f,0x6d6eafea,0xfaaad9fc,0xffceedfe,0xffe6f7ff,0xfff0fbff,0xffe4f7ff,0xffd1f1ff,0xffb0dcfc,0xc668a4df,0x1e18334d,0x0,0x0,
1493 0x0,0x0,0x10b151f,0x435094d5,0xc34c8ae0,0xf73c74e0,0xff4a7be2,0xfc5286e5,0xe37db3ea,0x88528bc2,0x150e1e2d,0x0,0x0,0x0,
1494 0x0,0x0,0x0,0x0,0x4000000,0x202a5885,0x35306498,0x302a5886,0x130b1824,0x2000000,0x0,0x0,0x0,0x0
1495};
1496
1497static const QRgb close_data[] = {
1498 0x0,0x0,0x0,0x2c90000,0x1fc80000,0x5bc60000,0x83c50000,0x83c20000,0x5bbb0000,0x1fb70000,0x2b50000,0x0,0x0,0x0,
1499 0x0,0x0,0xdcb0000,0x87cb0000,0xecd51313,0xffe44a4a,0xffed6f6f,0xffec7070,0xffe05050,0xecc91a1a,0x87b30000,0xdad0000,0x0,0x0,
1500 0x0,0xdca0000,0xaacd0000,0xfee53b3b,0xfffbb1b1,0xffffd6d6,0xffffd9d9,0xffffd9d9,0xffffd7d7,0xfffbbcbc,0xfedb4c4c,0xaab00000,0xda70000,0x0,
1501 0x2c90000,0x87ca0000,0xfee52f2f,0xfffeadad,0xffffd6d6,0xffffbdbd,0xffffb3b3,0xffffb3b3,0xffffbdbd,0xffffd6d6,0xfffeb1b1,0xfed84343,0x87a60000,0x2a00000,
1502 0x1fc80000,0xecd50808,0xfffb7272,0xffffbcbc,0xffffffff,0xffffe7e7,0xffff9b9b,0xffff9b9b,0xffffe7e7,0xffffffff,0xffffbbbb,0xfffa7171,0xecb90c0c,0x1f9d0000,
1503 0x5bc50000,0xffe41b1b,0xffff6464,0xffff7474,0xffffd9d9,0xffffffff,0xffffe0e0,0xffffe0e0,0xffffffff,0xfffcc6c6,0xfff63535,0xfff30e0e,0xffd00202,0x5b9a0000,
1504 0x83c50000,0xffec1c1c,0xffff3f3f,0xffff3f3f,0xffff5252,0xffffd2d2,0xffffffff,0xffffffff,0xfffcc6c6,0xfff31c1c,0xfff20000,0xfff20000,0xffdc0000,0x839b0000,
1505 0x83c10000,0xffec0a0a,0xffff1616,0xffff1616,0xffff3131,0xffffcece,0xffffffff,0xffffffff,0xfffcc6c6,0xfff41c1c,0xfff40000,0xfff40000,0xffdc0000,0x83970000,
1506 0x5bbb0000,0xffe10000,0xfffe0101,0xfffe1b1b,0xffffc5c5,0xffffffff,0xffffc6c6,0xffffc6c6,0xffffffff,0xfffdc4c4,0xfffa1a1a,0xfffa0000,0xffcf0000,0x5b900000,
1507 0x1fb70000,0xeccb0202,0xfffc0909,0xffff6d6d,0xffffffff,0xffffc8c8,0xffff2525,0xffff2525,0xffffc8c8,0xffffffff,0xffff6d6d,0xfffb0909,0xecae0202,0x1f8c0000,
1508 0x2b40000,0x87b30101,0xfede1313,0xffff2828,0xffff7e7e,0xffff3a3a,0xffff2323,0xffff2323,0xffff3a3a,0xffff7e7e,0xfffe2828,0xfed01313,0x878e0101,0x28b0000,
1509 0x0,0xdac0000,0xaab00404,0xfedb2121,0xfffc3b3b,0xffff3d3d,0xffff3d3d,0xffff3d3d,0xffff3d3d,0xfffb3b3b,0xfed02121,0xaa930404,0xd890000,0x0,
1510 0x0,0x0,0xda60000,0x87a50202,0xecbb1616,0xffd73131,0xffe63f3f,0xffe53f3f,0xffd33131,0xecaf1616,0x878e0202,0xd890000,0x0,0x0,
1511 0x0,0x0,0x0,0x29f0000,0x1d9c0000,0x59990101,0x839b0505,0x83970505,0x5b8f0101,0x1f8c0000,0x28a0000,0x0,0x0,0x0
1512};
1513
1514static const QRgb copy_data[] = {
1515 0x5bbc5d1,0xdb9c4cf,0x1cbfc8d3,0x40c2cbd6,0x64c0c9d4,0x419fadbf,0x128494ac,0x27e8fa9,0x0,0x0,0x0,0x0,0x0,0x0,
1516 0x41bfc9d4,0x90c9d1da,0xbaced5dd,0xe9d0d8df,0xffced6de,0xdca6b3c3,0x958b9bb1,0x2d8090a9,0x0,0x0,0x0,0x0,0x0,0x0,
1517 0x84c4cdd7,0xffe0e5ea,0xffe3e7ec,0xffd7dee4,0xffd7dde4,0xffadbac8,0xfd9eadbd,0xa88394ab,0x97d8da8,0x0,0x0,0x0,0x0,0x0,
1518 0x5bc4cdd7,0xf8e2e6eb,0xffe6eaed,0xffd7dee4,0xffdde3e8,0xffc9d2da,0xffb9c4cf,0xe894a3b5,0x8aa0a2b0,0x7fc0bbc6,0x6bcac4d2,0x26a39cab,0x42b2b2b,0x2b2b2b,
1519 0x2fc2cbd5,0xd9d8dee4,0xffeaeef0,0xffdbe1e6,0xffd5dce2,0xffc9d1da,0xffc0c9d4,0xffafbac7,0xfe9ea1af,0xfebebac2,0xf0d2cdd9,0xa1b2aaba,0x3178717f,0x637343a,
1520 0x15bec8d3,0xb0d0d7df,0xffe8ecef,0xffdbe1e6,0xffced6dd,0xffc3ccd6,0xffc1c9d4,0xffc0cad3,0xff99a1af,0xffb9b6bd,0xffc5becb,0xf4b2a7bb,0xb59c92a5,0x2a5e5a63,
1521 0xcb7c1ce,0x86cdd4dd,0xfce7ecef,0xffdce2e7,0xffcbd3db,0xffc9d1da,0xffc6cfd9,0xffc7d0d8,0xff9fa8b7,0xffb2b0b9,0xffcbc5cf,0xffcfc7d6,0xf9b5abbe,0x5659555d,
1522 0x3b7c2ce,0x4cccd3dc,0xeadee3e8,0xffdee3e8,0xffcdd5dd,0xffcad2db,0xffc7cfd9,0xffd2d8e0,0xffafb8c5,0xffa6a7b1,0xffbeb9c4,0xffd7d1de,0xfebbb2c4,0x6f514e54,
1523 0x0,0x2dc4cdd7,0xd0d8dee4,0xffe6eaed,0xffdbe1e7,0xffdae0e6,0xffd2d9e0,0xffc5ccd7,0xffa1abbb,0xff9c9fad,0xffb4afba,0xffd5d0dc,0xfebdb4c5,0x73504d52,
1524 0x0,0x1dbbc4d1,0xa7cbd3dc,0xf7d5dbe2,0xe1c6ced8,0xf5b3bbc8,0xffa5adba,0xff9ea5b4,0xffa9abb9,0xffb5b2be,0xffc0bbc6,0xffd9d4df,0xfebeb6c6,0x73504d53,
1525 0x0,0xb9baabc,0x56a0acbf,0x8e9ca9bc,0x5e8999b0,0xd0b0b2c0,0xffc9c9d0,0xffc9c5ce,0xffd1ccd6,0xffd5d0db,0xffd8d2de,0xffe0dbe6,0xfebfb6c7,0x73504d53,
1526 0x0,0x17d8ea8,0xc7d8ca8,0x137d8ba8,0x57d8aa8,0xbcdbd6e0,0xfef2f1f4,0xffe9e6ed,0xffe9e5ed,0xffe8e3ec,0xffe5e1ea,0xffe8e4ed,0xfec0b8c8,0x73504d53,
1527 0x0,0x0,0x0,0x0,0x0,0xbbbdb5c6,0xfcc6bfcc,0xfdc3bbca,0xfdc2bac9,0xfdc2bac9,0xfdc1b8c8,0xfdc0b8c8,0xfcb0a6b9,0x724e4b51,
1528 0x0,0x0,0x0,0x0,0x0,0x267c7682,0x585c595f,0x72504e53,0x73504d53,0x73504d53,0x73504d53,0x73504d52,0x724e4b51,0x4e313132
1529};
1530
1531static const QRgb copy_inactive_data[] = {
1532 0x2bbc6d1,0x7b9c4cf,0xebfc8d3,0x1fc2cbd6,0x31c0c9d4,0x209fadbf,0x98494ac,0x17e8fa9,0x0,0x0,0x0,0x0,0x0,0x0,
1533 0x21bfc9d4,0x48c8d1da,0x5cced5dd,0x73d0d8df,0x7eced6de,0x6da6b3c3,0x498b9bb1,0x168090a9,0x0,0x0,0x0,0x0,0x0,0x0,
1534 0x42c4cdd7,0x7ee0e5ea,0x7ee3e7ec,0x7ed7dee4,0x7ed7dde4,0x7eadbac8,0x7d9eadbd,0x538394ab,0x47d8da8,0x0,0x0,0x0,0x0,0x0,
1535 0x2dc4cdd7,0x7be2e6eb,0x7ee6eaed,0x7ed7dee4,0x7edde3e8,0x7ec9d2da,0x7eb9c4cf,0x7394a3b5,0x44a0a2b0,0x3ec0bbc6,0x35cac4d2,0x13a39cab,0x22b2b2b,0x2b2b2b,
1536 0x17c2cbd5,0x6bd8dee4,0x7eeaeef0,0x7edbe1e6,0x7ed5dce2,0x7ec9d1da,0x7ec0c9d4,0x7eafbac7,0x7e9ea1af,0x7ebebac2,0x76d2cdd9,0x50b2aaba,0x1877707f,0x336343a,
1537 0xbbec8d3,0x57d0d7df,0x7ee8ecef,0x7edae1e6,0x7eced5dd,0x7ec3ccd6,0x7ec1c9d4,0x7ec0cad3,0x7e99a1af,0x7eb9b6bd,0x7ec4bdcb,0x79b2a7bb,0x599c92a5,0x145f5a63,
1538 0x6b7c1ce,0x42cdd4dd,0x7ce7ecef,0x7edce2e7,0x7ecbd2db,0x7ec9d1da,0x7ec6cfd9,0x7ec7d0d8,0x7e9fa8b7,0x7eb2b0b9,0x7ecbc5cf,0x7ecfc7d6,0x7bb5abbe,0x2b59555c,
1539 0x2b7c2ce,0x25ccd3dc,0x73dee3e8,0x7edee3e8,0x7ecdd5dd,0x7ecad2db,0x7ec7cfd9,0x7ed2d8e0,0x7eafb8c5,0x7ea6a7b1,0x7ebeb9c4,0x7ed7d1de,0x7dbbb2c4,0x36514e54,
1540 0x0,0x16c4cdd7,0x67d8dee4,0x7ee6eaed,0x7edbe1e7,0x7edae0e6,0x7ed2d9e0,0x7ec5ccd7,0x7ea1abbb,0x7e9d9fad,0x7eb4afba,0x7ed5d0dc,0x7dbdb4c5,0x39504d52,
1541 0x0,0xebbc4d1,0x53cbd3dc,0x7ad5dbe2,0x6fc6ced8,0x79b3bbc8,0x7ea5adba,0x7e9ea5b4,0x7ea9abb9,0x7eb5b2be,0x7ec0bbc6,0x7ed9d4df,0x7ebeb5c6,0x39504d53,
1542 0x0,0x59baabc,0x2b9facbf,0x469ca9bc,0x2e8999b0,0x67b0b2c0,0x7ec9c9d0,0x7ec9c5ce,0x7ed1ccd6,0x7ed5d0db,0x7ed8d2de,0x7ee0dbe6,0x7ebeb6c6,0x39504d52,
1543 0x0,0x17d8ea8,0x67d8ca8,0x97d8ba8,0x27d8aa8,0x5ddbd6e1,0x7ef2f1f4,0x7fe9e6ed,0x7ee9e5ed,0x7ee8e3ec,0x7ee5e1ea,0x7fe8e4ed,0x7fc0b8c8,0x3a504d53,
1544 0x0,0x0,0x0,0x0,0x0,0x5dbdb5c6,0x7ec6bfcc,0x7fc3bbca,0x7fc2bac9,0x7fc2b9c9,0x80c1b8c8,0x81c0b8c8,0x81b0a6b9,0x3b4e4b51,
1545 0x0,0x0,0x0,0x0,0x0,0x137e7783,0x2c5c595f,0x39514e53,0x3a504d52,0x3a504d53,0x3b504d52,0x3c4f4c51,0x3e4c494f,0x2f303031
1546};
1547
1548static const QRgb cut_data[] = {
1549 0x0,0x0,0x0,0x1f2bf00,0x20f9cd00,0xb1fdd900,0xfbfbe601,0x8edd8000,0x13170800,0x4000000,0x0,0x0,0x0,0x0,
1550 0x0,0x0,0x0,0xdf3bf00,0x96fddc00,0xf3eddb02,0xebcfc305,0xe8ee9600,0x41361200,0x12403600,0xbdab102,0x4a77e05,0x0,0x0,
1551 0x0,0x0,0x0,0x17f0bb00,0xb1fee600,0xeec9a607,0xad897905,0xebec9300,0x54331b00,0x51c0ad00,0x74e8cc03,0x37b28906,0x93e1a02,0x1000000,
1552 0x0,0x0,0x0,0x16e7b600,0xaefcda00,0xf5dab905,0xccac9a06,0xebec9300,0x81917000,0xc3dfc503,0xecd5b606,0xb0cf8b04,0x37884600,0x7000000,
1553 0x0,0x0,0x0,0x9c49b00,0x62e2b800,0xdff1c201,0xf9eada03,0xf8f39900,0xd8dcb502,0xc2bba105,0xb2ad9705,0xe9e49301,0x6a8a4800,0x17000000,
1554 0x0,0x0,0x0,0x1000000,0x15775f00,0xabd9961e,0xfafbb509,0xffed8b0a,0xf7ddbb05,0xd1c3b204,0xd4e3d400,0xf4f09e00,0x7b763d00,0x23000000,
1555 0x0,0x0,0x0,0x1739ed6,0x5f92b5e6,0xe17ea5ce,0xfec5cfdb,0xf97393b6,0xead07c09,0xfbf7af00,0xf6f2a300,0xb4b16200,0x5e2c1300,0x1f000000,
1556 0x0,0x7fa9da,0x995b4dc,0x63a0bfe1,0xe1c7e5f5,0xff89c0e7,0xffbcd8fa,0xed4798e4,0x8935201a,0x8d862f00,0x82702a00,0x5d2a1000,0x31000000,0xd000000,
1557 0x0,0xc95b6de,0x67a7c5e4,0xe1c1e0f3,0xf8a0d3f6,0xf85ca0dd,0xfebed8fa,0xec4899e6,0x64021020,0x33000000,0x29000000,0x21000000,0xf000000,0x2000000,
1558 0x0,0x329abee2,0xddafd3ed,0xf8a1d3f6,0xc63e80bf,0xd43578b9,0xfbbfd8f8,0xeb4e99e1,0x5c001226,0x1b000000,0x7000000,0x5000000,0x2000000,0x0,
1559 0x0,0x3f8fbbe4,0xf481b6e7,0xc74385c4,0x77072749,0xb74479a8,0xfac1d9f8,0xeb4f99e1,0x5b001225,0x18000000,0x2000000,0x0,0x0,0x0,
1560 0x0,0x354590dc,0xb5367dc6,0x6f0a2f55,0x40000204,0xa74b86bb,0xf9bed9f9,0xe65e9cd6,0x5a041321,0x18000000,0x1000000,0x0,0x0,0x0,
1561 0x0,0xf0e59a4,0x3a093c6f,0x31000407,0x19000000,0x9f5592c8,0xf560a6ee,0x9b2f5475,0x4a020609,0x14000000,0x1000000,0x0,0x0,0x0,
1562 0x0,0x2000000,0xa000000,0xc000000,0x4000000,0x8f1d7dd3,0x8e11579e,0x5603080c,0x29000000,0x9000000,0x1000000,0x0,0x0,0x0
1563};
1564
1565static const QRgb cut_inactive_data[] = {
1566 0x0,0x0,0x0,0x1b9b9b9,0x13c3c3c3,0x6bcbcbcb,0x97d3d3d3,0x568d8d8d,0xb0b0b0b,0x2000000,0x0,0x0,0x0,0x0,
1567 0x0,0x0,0x0,0x8b9b9b9,0x5acdcdcd,0x93c8c8c8,0x8eb1b1b1,0x8c9f9f9f,0x271b1b1b,0xb333333,0x7a5a5a5,0x2808080,0x0,0x0,
1568 0x0,0x0,0x0,0xeb6b6b6,0x6bd4d4d4,0x909e9e9e,0x68707070,0x8e9d9d9d,0x331e1e1e,0x30a0a0a0,0x46bebebe,0x21878787,0x6212121,0x1000000,
1569 0x0,0x0,0x0,0xdb0b0b0,0x69cccccc,0x94afafaf,0x7b8f8f8f,0x8e9d9d9d,0x4e6d6d6d,0x76b7b7b7,0x8facacac,0x6a909090,0x21515151,0x5000000,
1570 0x0,0x0,0x0,0x59a9a9a,0x3bb0b0b0,0x86bababa,0x96c7c7c7,0x96a2a2a2,0x82acacac,0x75979797,0x6c8d8d8d,0x8d9b9b9b,0x40545454,0xe000000,
1571 0x0,0x0,0x0,0x1000000,0xc5c5c5c,0x679d9d9d,0x97b7b7b7,0x9a9a9a9a,0x95b0b0b0,0x7ea4a4a4,0x80c1c1c1,0x93a5a5a5,0x4a474747,0x15000000,
1572 0x0,0x0,0x0,0x8d8d8d,0x39b0b0b0,0x889d9d9d,0x9acccccc,0x968d8d8d,0x8d888888,0x98b1b1b1,0x94a8a8a8,0x6c6e6e6e,0x38181818,0x13000000,
1573 0x0,0xa1a1a1,0x5aeaeae,0x3bb9b9b9,0x88dddddd,0x9ab3b3b3,0x9ad3d3d3,0x8f888888,0x52252525,0x55434343,0x4f3a3a3a,0x38161616,0x1e000000,0x8000000,
1574 0x0,0x7afafaf,0x3ebebebe,0x88d8d8d8,0x96c7c7c7,0x96919191,0x9ad4d4d4,0x8e898989,0x3c0d0d0d,0x1f000000,0x19000000,0x14000000,0x9000000,0x1000000,
1575 0x0,0x1eb7b7b7,0x86cacaca,0x96c7c7c7,0x77737373,0x806b6b6b,0x98d4d4d4,0x8e8a8a8a,0x370e0e0e,0x10000000,0x4000000,0x3000000,0x1000000,0x0,
1576 0x0,0x26b2b2b2,0x93ababab,0x78787878,0x48212121,0x6f6e6e6e,0x97d5d5d5,0x8e8a8a8a,0x370e0e0e,0xe000000,0x1000000,0x0,0x0,0x0,
1577 0x0,0x20818181,0x6e6f6f6f,0x43272727,0x27010101,0x65797979,0x96d4d4d4,0x8b909090,0x37101010,0xe000000,0x1000000,0x0,0x0,0x0,
1578 0x0,0x94c4c4c,0x23323232,0x1e030303,0xf000000,0x60858585,0x94989898,0x5e4c4c4c,0x2d050505,0xc000000,0x0,0x0,0x0,0x0,
1579 0x0,0x1000000,0x6000000,0x8000000,0x3000000,0x57696969,0x564a4a4a,0x35070707,0x1a000000,0x6000000,0x0,0x0,0x0,0x0
1580};
1581
1582static const QRgb datebook_icon_data[] = {
1583 0xe483addd,0xf18cb5e6,0xf181b0e6,0xf175aae6,0xf169a4e6,0xf15c9ee6,0xf1549ae6,0xf15297e6,0xf15298e6,0xf15298e6,0xf15599e7,0xf14597e8,0xa315588d,0x17002741,
1584 0xf592b8e5,0xffafd4fd,0xff90c6fd,0xff70b6fd,0xff57a9fd,0xff3499fc,0xff258efd,0xff2388fd,0xff2189fc,0xff2388fd,0xff2389fe,0xff1d8afb,0xc208518c,0x30001827,
1585 0xf19fbfe5,0xffddebfa,0xffb7daf7,0xffa6d3f6,0xffc5dffa,0xff93cbf4,0xffb0d7f9,0xffadd5f9,0xff8ec9f4,0xffaed6fa,0xffb1d7fb,0xff8bc6f6,0xc4255e89,0x34001525,
1586 0xf1a9c5e6,0xfffbfefe,0xffcbe6fa,0xffbbdff8,0xfff2fafe,0xff9fd1f5,0xffe0f3fd,0xffdef1fd,0xff9bd0f5,0xffe4f5fe,0xffe6f6fe,0xffadd9f6,0xc42d6189,0x34001425,
1587 0xfa91c4ee,0xffb0daf7,0xff9ed1f5,0xff97cef4,0xffabd8f7,0xff8dc9f3,0xffa4d5f6,0xffa3d4f6,0xff8cc8f3,0xffa5d5f7,0xffa6d6f7,0xff91cbf4,0xc42b6089,0x34001425,
1588 0xf49dc5e9,0xffd9effc,0xffb6ddf8,0xffa9d7f7,0xffceeafc,0xff96cdf4,0xffc0e4fb,0xffbfe2fb,0xff93ccf4,0xffc1e5fc,0xffc2e6fc,0xff9bd1f6,0xc42a6089,0x34001425,
1589 0xf1a6c4e6,0xfff2fcff,0xffc5e5fa,0xffb5def9,0xffe5f6ff,0xff9bd0f5,0xffd2edfd,0xffd0ebfd,0xff97cff5,0xffd3efff,0xffd5f1ff,0xffa1d5f7,0xc42a6089,0x34001425,
1590 0xf3a0c4e7,0xffe2f3fd,0xffbbe0f9,0xffadd9f8,0xffd6eefd,0xff98cef5,0xffc6e6fc,0xffc3e5fc,0xff94cdf5,0xffc7e8fd,0xffc8e9fd,0xff9bd1f6,0xc4296089,0x34001425,
1591 0xfc8bc4ef,0xff9cd1f5,0xff92ccf4,0xff8ecaf4,0xff99cff5,0xff88c7f3,0xff94cef5,0xff94cdf5,0xff87c7f3,0xff95cef5,0xff95cef5,0xff86c7f3,0xc4285f89,0x34001425,
1592 0xf1a3c3e6,0xffe8f8ff,0xffbfe2fa,0xffb0dbf9,0xffdaf1ff,0xff99cff5,0xffc9eafd,0xffc6e8fd,0xff95cef5,0xffc9ecff,0xffcbedff,0xff9ad2f7,0xc4285f89,0x34001525,
1593 0xf1a6c5e7,0xffeaf9ff,0xffc0e3fa,0xffb1dcf9,0xffdcf3ff,0xff99d0f5,0xffcbebfd,0xffc8e9fd,0xff95cef5,0xffcbedff,0xffcdeeff,0xff9dd3f8,0xc4296089,0x34001525,
1594 0xfa80b6e6,0xffafdbf7,0xff9cd1f5,0xff95cdf4,0xffa6d6f7,0xff8bc8f3,0xff9dd2f6,0xff9bd1f6,0xff89c8f3,0xff9ad2f7,0xff9dd4f8,0xff7bc4f7,0xc7205f8d,0x34001728,
1595 0xa628618e,0xc12e628a,0xc42b6089,0xc42b6089,0xc42b6089,0xc42a6089,0xc42a6089,0xc4296089,0xc42a6089,0xc4285f89,0xc4296089,0xc421608d,0x9e083656,0x30000d16,
1596 0x14002b4a,0x30001627,0x34001424,0x34001425,0x34001425,0x34001425,0x34001425,0x34001425,0x34001425,0x34001425,0x34001425,0x34001626,0x30000d16,0x16000204
1597};
1598
1599static const QRgb day_data[] = {
1600 0xe483addd,0xf18cb5e6,0xf181b0e6,0xf175aae6,0xf169a4e6,0xf15c9ee6,0xf1549ae6,0xf15297e6,0xf15298e6,0xf15298e6,0xf15599e7,0xf14597e8,0xa315588d,0x17002741,
1601 0xf592b8e5,0xffafd4fd,0xff95c7fd,0xff77b9fd,0xff57a9fd,0xff389afd,0xff268efd,0xff2388fd,0xff2388fd,0xff2388fd,0xff2389fe,0xff1d8afb,0xc208518c,0x30001827,
1602 0xf19fbfe5,0xffddebfa,0xffd4e6fa,0xffcde3fa,0xffc5dffa,0xffbedcfa,0xffb7dafa,0xffb3d8fa,0xffb1d7fa,0xffaed6fa,0xffb1d7fb,0xff8bc6f6,0xc4255e89,0x34001525,
1603 0xf1a9c5e6,0xfffbfefe,0xfff5fbfe,0xfff4fbfe,0xfff2fafe,0xfff0fafe,0xffedfafe,0xffeaf7fe,0xffe7f6fe,0xffe4f5fe,0xffe6f6fe,0xffadd9f6,0xc42d6189,0x34001425,
1604 0xf1a8c5e6,0xfff9fdff,0xfff2faff,0xffeff9ff,0xffecf8ff,0xffe9f7ff,0xffe5f6ff,0xffe2f4ff,0xffdef3ff,0xffdbf2ff,0xffddf3ff,0xffa6d6f7,0xc42b6089,0x34001425,
1605 0xf1a7c5e6,0xfff6fdff,0xffeff9ff,0xffecf8ff,0xffe8f7ff,0xffe5f6ff,0xffe1f4ff,0xffdef2ff,0xffdaf1ff,0xffd7f0ff,0xffd8f2ff,0xffa3d5f7,0xc42a6089,0x34001425,
1606 0xf1a6c4e6,0xfff2fcff,0xffebf8ff,0xffe8f7ff,0xffe5f6ff,0xffe1f4ff,0xffdef3ff,0xffdaf1ff,0xffd6f0ff,0xffd3efff,0xffd5f1ff,0xffa1d5f7,0xc42a6089,0x34001425,
1607 0xf1a4c3e6,0xffeffaff,0xffe8f6ff,0xffe5f5ff,0xffe2f4ff,0xffdef2ff,0xffdaf1ff,0xffd6efff,0xffd2efff,0xffd0eeff,0xffd2eeff,0xff9ed3f7,0xc4296089,0x34001425,
1608 0xf1a3c3e6,0xffebfaff,0xffe5f5ff,0xffe1f4ff,0xffddf3ff,0xffdaf1ff,0xffd6f1ff,0xffd3efff,0xffcfeeff,0xffccecff,0xffceeeff,0xff9cd3f7,0xc4285f89,0x34001425,
1609 0xf1a3c3e6,0xffe8f8ff,0xffe1f4ff,0xffdef3ff,0xffdaf1ff,0xffd7f0ff,0xffd3f0ff,0xffcfeeff,0xffccecff,0xffc9ecff,0xffcbedff,0xff9ad2f7,0xc4285f89,0x34001525,
1610 0xf1a6c5e7,0xffeaf9ff,0xffe3f5ff,0xffe0f4ff,0xffdcf3ff,0xffd9f2ff,0xffd5f1ff,0xffd1eeff,0xffceeeff,0xffcbedff,0xffcdeeff,0xff9dd3f8,0xc4296089,0x34001525,
1611 0xfa80b6e6,0xffafdbf7,0xffaad8f7,0xffa8d7f7,0xffa6d6f7,0xffa3d5f7,0xffa1d5f7,0xff9ed3f7,0xff9cd2f7,0xff9ad2f7,0xff9dd4f8,0xff7bc4f7,0xc7205f8d,0x34001728,
1612 0xa628618e,0xc12e628a,0xc42c6189,0xc42b6089,0xc42b6089,0xc42a6089,0xc42a6089,0xc4296089,0xc4285f89,0xc4285f89,0xc4296089,0xc421608d,0x9e083656,0x30000d16,
1613 0x14002b4a,0x30001627,0x34001424,0x34001425,0x34001425,0x34001425,0x34001425,0x34001425,0x34001425,0x34001425,0x34001425,0x34001626,0x30000d16,0x16000204
1614};
1615
1616static const QRgb done_data[] = { 859static const QRgb done_data[] = {
1617 0x0,0x0,0x0,0x5179f1b,0x4709990e,0x96049709,0xbd039708,0xbf039708,0x9f039607,0x54049708,0x709990d,0x0,0x0,0x0, 860 0x0,0x0,0x0,0x5179f1b,0x4709990e,0x96049709,0xbd039708,0xbf039708,0x9f039607,0x54049708,0x709990d,0x0,0x0,0x0,
1618 0x0,0x1ba21f,0x230e9b12,0xb7059709,0xf8029607,0xfc039608,0xfe029608,0xfe019506,0xff009606,0xff009506,0xd0019606,0x32039607,0x8990c,0x0, 861 0x0,0x1ba21f,0x230e9b12,0xb7059709,0xf8029607,0xfc039608,0xfe029608,0xfe019506,0xff009606,0xff009506,0xd0019606,0x32039607,0x8990c,0x0,
1619 0x0,0x230d9b12,0xd7049708,0xf908980d,0xfc119b15,0xfe129c16,0xfe0b9910,0xff05970a,0xff019507,0xff009506,0xff009506,0xef009606,0x36019606,0x0, 862 0x0,0x230d9b12,0xd7049708,0xf908980d,0xfc119b15,0xfe129c16,0xfe0b9910,0xff05970a,0xff019507,0xff009506,0xff009506,0xef009606,0x36019606,0x0,
1620 0x5179f1b,0xb6059709,0xf908980d,0xfc1fa124,0xfe39ab3c,0xfe35a939,0xff1b9f20,0xff0a990f,0xff039608,0xff029607,0xff169d1c,0xff109b17,0xda009507,0xd009605, 863 0x5179f1b,0xb6059709,0xf908980d,0xfc1fa124,0xfe39ab3c,0xfe35a939,0xff1b9f20,0xff0a990f,0xff039608,0xff029607,0xff169d1c,0xff109b17,0xda009507,0xd009605,
1621 0x460a990e,0xf8039608,0xfc2ba52f,0xfe67bd6a,0xff87ca8a,0xff6fc071,0xff2ca630,0xff0e9b13,0xff0e9a13,0xff70c274,0xffe2f1e2,0xff91cf94,0xff019508,0x69009605, 864 0x460a990e,0xf8039608,0xfc2ba52f,0xfe67bd6a,0xff87ca8a,0xff6fc071,0xff2ca630,0xff0e9b13,0xff0e9a13,0xff70c274,0xffe2f1e2,0xff91cf94,0xff019508,0x69009605,
1622 0x96049709,0xfc05970a,0xfe78c57b,0xffeff6ef,0xffb6ddb7,0xff61ba64,0xff29a52d,0xff24a228,0xffa0d6a2,0xfff6faf7,0xffd0ead2,0xff3cac41,0xff009507,0xbb009507, 865 0x96049709,0xfc05970a,0xfe78c57b,0xffeff6ef,0xffb6ddb7,0xff61ba64,0xff29a52d,0xff24a228,0xffa0d6a2,0xfff6faf7,0xffd0ead2,0xff3cac41,0xff009507,0xbb009507,
1623 0xbd039708,0xfe039608,0xfe3ead42,0xffeef7ef,0xffe9f4e9,0xff4db351,0xff27a42b,0xffa7d8a9,0xfff6faf6,0xff94d197,0xff179e1d,0xff009507,0xff009508,0xe0009507, 866 0xbd039708,0xfe039608,0xfe3ead42,0xffeef7ef,0xffe9f4e9,0xff4db351,0xff27a42b,0xffa7d8a9,0xfff6faf6,0xff94d197,0xff179e1d,0xff009507,0xff009508,0xe0009507,
1624 0xbf039708,0xfe019506,0xff07970c,0xff7fc882,0xfffbfdfb,0xffa0d5a2,0xffa1d6a4,0xfff9fcf9,0xff8fcf93,0xff08980e,0xff009506,0xff009507,0xff009508,0xe3009507, 867 0xbf039708,0xfe019506,0xff07970c,0xff7fc882,0xfffbfdfb,0xffa0d5a2,0xffa1d6a4,0xfff9fcf9,0xff8fcf93,0xff08980e,0xff009506,0xff009507,0xff009508,0xe3009507,
1625 0x9f039607,0xff009606,0xff019507,0xff159d1b,0xffcee9cf,0xfff8fbf8,0xfffafcfa,0xffbae0bc,0xff129c18,0xff009506,0xff009506,0xff009507,0xff009508,0xc6009507, 868 0x9f039607,0xff009606,0xff019507,0xff159d1b,0xffcee9cf,0xfff8fbf8,0xfffafcfa,0xffbae0bc,0xff129c18,0xff009506,0xff009506,0xff009507,0xff009508,0xc6009507,
1626 0x53049708,0xfe009506,0xff009506,0xff019506,0xff56b75a,0xfffafcfa,0xffddf0de,0xff26a32c,0xff009506,0xff009506,0xff009507,0xff009508,0xff009508,0x7c009506, 869 0x53049708,0xfe009506,0xff009506,0xff019506,0xff56b75a,0xfffafcfa,0xffddf0de,0xff26a32c,0xff009506,0xff009506,0xff009507,0xff009508,0xff009508,0x7c009506,
1627 0x809990d,0xd0019606,0xff009506,0xff009506,0xff07970d,0xff75c379,0xff3cac41,0xff009506,0xff009506,0xff009507,0xff009508,0xff009508,0xeb009507,0x17009605, 870 0x809990d,0xd0019606,0xff009506,0xff009506,0xff07970d,0xff75c379,0xff3cac41,0xff009506,0xff009506,0xff009507,0xff009508,0xff009508,0xeb009507,0x17009605,
1628 0x0,0x32039607,0xef009606,0xff009507,0xff009507,0xff009507,0xff009507,0xff009507,0xff009507,0xff009508,0xff009508,0xfa009408,0x53009606,0x0, 871 0x0,0x32039607,0xef009606,0xff009507,0xff009507,0xff009507,0xff009507,0xff009507,0xff009507,0xff009508,0xff009508,0xfa009408,0x53009606,0x0,
1629 0x0,0x8990c,0x36019606,0xda009606,0xff009507,0xff009507,0xff009508,0xff009508,0xff009508,0xff009508,0xeb009507,0x53009606,0x9604,0x0, 872 0x0,0x8990c,0x36019606,0xda009606,0xff009507,0xff009507,0xff009508,0xff009508,0xff009508,0xff009508,0xeb009507,0x53009606,0x9604,0x0,
1630 0x0,0x0,0x0,0xd009605,0x69009605,0xbb009507,0xe1009507,0xe3009507,0xc6009507,0x7c009506,0x17009605,0x0,0x0,0x0 873 0x0,0x0,0x0,0xd009605,0x69009605,0xbb009507,0xe1009507,0xe3009507,0xc6009507,0x7c009506,0x17009605,0x0,0x0,0x0
1631}; 874};
1632 875
1633static const QRgb down_data[] = { 876static const QRgb down_data[] = {
1634 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 877 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
1635 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 878 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
1636 0x1fefefe,0x1ba5cdfe,0x167ab7fe,0xfefefe,0x0,0x0,0x0,0x0,0x0,0xfefefe,0xef3f9fe,0x2163a6fe,0x7fadfe,0x0, 879 0x1fefefe,0x1ba5cdfe,0x167ab7fe,0xfefefe,0x0,0x0,0x0,0x0,0x0,0xfefefe,0xef3f9fe,0x2163a6fe,0x7fadfe,0x0,
1637 0x5fefefe,0x9289c2fe,0xdd7ab3fd,0x31236ff3,0x0,0x0,0x0,0x0,0x1fefefe,0x1feaf4fe,0xa385bffe,0xdf77b2fb,0x231553d0,0x0, 880 0x5fefefe,0x9289c2fe,0xdd7ab3fd,0x31236ff3,0x0,0x0,0x0,0x0,0x1fefefe,0x1feaf4fe,0xa385bffe,0xdf77b2fb,0x231553d0,0x0,
1638 0x7fefefe,0xa288c1fd,0xffe6f1fb,0xe58bb8f9,0x3e2569ea,0x21252e9,0x0,0x3fefefe,0x2fc3e1fe,0xb099cbfd,0xfdd9eafb,0xf09ec3f2,0x320e369f,0x0, 881 0x7fefefe,0xa288c1fd,0xffe6f1fb,0xe58bb8f9,0x3e2569ea,0x21252e9,0x0,0x3fefefe,0x2fc3e1fe,0xb099cbfd,0xfdd9eafb,0xf09ec3f2,0x320e369f,0x0,
1639 0x7fefefe,0xa077b5fb,0xffd8e7f2,0xffe5edf2,0xeb92bbf2,0x71276af7,0x98da9f5,0x43a7d1fe,0xd087bff9,0xfdd3e5f3,0xffe8eff1,0xf090b8eb,0x320b2f9c,0x0, 882 0x7fefefe,0xa077b5fb,0xffd8e7f2,0xffe5edf2,0xeb92bbf2,0x71276af7,0x98da9f5,0x43a7d1fe,0xd087bff9,0xfdd3e5f3,0xffe8eff1,0xf090b8eb,0x320b2f9c,0x0,
1640 0x4fefefe,0x8b4f98f9,0xffbad3ea,0xffd2e0e7,0xffd0dfe7,0xf994b9ec,0x913776f5,0xe075b2f5,0xffc5dae9,0xffd2e0e7,0xffd2e0e7,0xec75a4e3,0x2d092380,0x0, 883 0x4fefefe,0x8b4f98f9,0xffbad3ea,0xffd2e0e7,0xffd0dfe7,0xf994b9ec,0x913776f5,0xe075b2f5,0xffc5dae9,0xffd2e0e7,0xffd2e0e7,0xec75a4e3,0x2d092380,0x0,
1641 0x1fefefe,0x174c77f4,0xb2366eed,0xfea4c0de,0xffbdd0d9,0xffbdd0d9,0xffa1c1de,0xffbbcfda,0xffbdd0d9,0xffbacfd9,0xf6789fdf,0x760c34a1,0x8000000,0x0, 884 0x1fefefe,0x174c77f4,0xb2366eed,0xfea4c0de,0xffbdd0d9,0xffbdd0d9,0xffa1c1de,0xffbbcfda,0xffbdd0d9,0xffbacfd9,0xf6789fdf,0x760c34a1,0x8000000,0x0,
1642 0x0,0xfefefe,0x100f37df,0xa8285bed,0xff81a8d7,0xffa8c2ce,0xffa8c2ce,0xffa8c2ce,0xffa1bed0,0xf35885db,0x6d0c2e9d,0x8000000,0x0,0x0, 885 0x0,0xfefefe,0x100f37df,0xa8285bed,0xff81a8d7,0xffa8c2ce,0xffa8c2ce,0xffa8c2ce,0xffa1bed0,0xf35885db,0x6d0c2e9d,0x8000000,0x0,0x0,
1643 0x0,0x0,0xfefefe,0xc0e33e5,0x811d4ddf,0xf66a95d0,0xff95b5c3,0xff8eb0c6,0xdc3f6cc2,0x580a2482,0x6010411,0x0,0x0,0x0, 886 0x0,0x0,0xfefefe,0xc0e33e5,0x811d4ddf,0xf66a95d0,0xff95b5c3,0xff8eb0c6,0xdc3f6cc2,0x580a2482,0x6010411,0x0,0x0,0x0,
1644 0x0,0x0,0x0,0xfefefe,0x31f39c8,0x630f39e4,0xf14e7cd1,0xd32a53c9,0x37041461,0x4010103,0x0,0x0,0x0,0x0, 887 0x0,0x0,0x0,0xfefefe,0x31f39c8,0x630f39e4,0xf14e7cd1,0xd32a53c9,0x37041461,0x4010103,0x0,0x0,0x0,0x0,
1645 0x0,0x0,0x0,0x0,0xfefefe,0x494949,0x350421de,0x1f030d4c,0x2000000,0x0,0x0,0x0,0x0,0x0, 888 0x0,0x0,0x0,0x0,0xfefefe,0x494949,0x350421de,0x1f030d4c,0x2000000,0x0,0x0,0x0,0x0,0x0,
1646 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 889 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
1647 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0 890 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0
1648}; 891};
1649 892
893static const QRgb editdelete_data[] = {
894 0x0,0x261818,0x8d5858,0xdd000000,0x0,0x5000000,0x0,0x0,0x0,0x0,0xde000000,0x663a3a,0x5000000,0x1000000,
895 0x0,0x261818,0x8e201313,0xdf764747,0x90000000,0x0,0x4000000,0x0,0x0,0x8b000000,0xdf795353,0x93150d0d,0x4000000,0xa000000,
896 0x0,0x8f261818,0xff8b5f5f,0xf7e08383,0xf37e3f3f,0xa2000000,0x1000000,0x0,0x98000000,0xec946c6c,0xf6e79696,0xff824141,0xaa000000,0x18100808,
897 0xdc000000,0xdf764848,0xf6e08383,0xffd37171,0xf7cf6767,0xf8783c3c,0x8b020101,0x8a040303,0xed946c6c,0xf4e89b9b,0xffca6969,0xfa944a4a,0xfc412121,0x88020101,
898 0x1000000,0x90000000,0xf37f3f3f,0xf8cf6868,0xffcd6666,0xf6d46c6c,0xf1683838,0xea795757,0xf1e99a9a,0xffca6969,0xfb8a4444,0xfb3d1e1e,0xbe000000,0x2e000000,
899 0x3000000,0x0,0xa2000000,0xf9763b3b,0xf6d46d6d,0xffcd6969,0xfdd77878,0xfedb8383,0xffc76868,0xf98f4646,0xfb3b1d1d,0xc5000000,0x48000000,0x22000000,
900 0x0,0x4000000,0x1000000,0x8a000000,0xf2683737,0xfcd77777,0xffd06c6c,0xffce6666,0xfdab5555,0xf6361b1b,0xb8000000,0x4e000000,0x29000000,0xb000000,
901 0x0,0x0,0x0,0x88000000,0xea785858,0xfcdb8282,0xffce6767,0xffc86363,0xfdb95c5c,0xf5572c2c,0xb6000000,0x27000000,0x11000000,0x1000000,
902 0x0,0x0,0x95000000,0xed926b6b,0xf2ea9b9b,0xffc86868,0xfeab5454,0xfeb95c5c,0xffc86464,0xf8c66363,0xf5723939,0xa8000000,0x2000000,0x4000000,
903 0x0,0x8e000000,0xec956c6c,0xf4e89b9b,0xffca6969,0xf98f4646,0xf6361b1b,0xf6572c2c,0xf9c76363,0xffd06868,0xf9ca6565,0xf6713939,0xa2000000,0x2000000,
904 0xdc000000,0xd7785050,0xf3e79595,0xffca6969,0xfa8a4444,0xfa3c1e1e,0xb8000000,0xb6020101,0xf6743a3a,0xf9ca6565,0xffbd5e5e,0xf8a15151,0xf64e2727,0x81000000,
905 0x0,0x8d000000,0xff884444,0xfa964a4a,0xfa3d1f1f,0xc5000000,0x4e000000,0x28000000,0xa8000000,0xf6713838,0xf9a25050,0xff542929,0xbc000000,0x29000000,
906 0x2000000,0x0,0xa5000000,0xf6412121,0xbc000000,0x46000000,0x29000000,0x10000000,0x2000000,0xa3000000,0xf74b2525,0xbc000000,0x4c000000,0x2a000000,
907 0x1000000,0x7000000,0xb000000,0x84000000,0x28000000,0x21000000,0xb000000,0x0,0x3000000,0x3000000,0x81000000,0x29000000,0x29000000,0x11000000
908};
909
1650static const QRgb edit_data[] = { 910static const QRgb edit_data[] = {
1651 0xffd6dfed,0xffe5eaf4,0xffe5eaf4,0xffe5eaf4,0xffe3eaf4,0xffdae3f2,0xf9c5cedc,0x49c3b4a9,0x8d28357,0x0,0x0,0x0,0x0,0x0, 911 0xffd6dfed,0xffe5eaf4,0xffe5eaf4,0xffe5eaf4,0xffe3eaf4,0xffdae3f2,0xf9c5cedc,0x49c3b4a9,0x8d28357,0x0,0x0,0x0,0x0,0x0,
1652 0xffe4eaf4,0xffffffff,0xffffffff,0xffffffff,0xfffbfeff,0xffedf3fd,0xffe5ce80,0xfbf8cf69,0xafebb785,0x14a74a17,0x0,0x0,0x0,0x0, 912 0xffe4eaf4,0xffffffff,0xffffffff,0xffffffff,0xfffbfeff,0xffedf3fd,0xffe5ce80,0xfbf8cf69,0xafebb785,0x14a74a17,0x0,0x0,0x0,0x0,
1653 0xffe4eaf4,0xffffffff,0xffffffff,0xffffffff,0xfffeffff,0xfff3f1ed,0xfff8d625,0xfffeb006,0xfbe99141,0x5c9f8f93,0x0,0x0,0x0,0x0, 913 0xffe4eaf4,0xffffffff,0xffffffff,0xffffffff,0xfffeffff,0xfff3f1ed,0xfff8d625,0xfffeb006,0xfbe99141,0x5c9f8f93,0x0,0x0,0x0,0x0,
1654 0xffe4eaf4,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfff8e59f,0xfffdcd09,0xfffc9e10,0xffc49277,0xf89dadc9,0x1a515b6b,0x0,0x0,0x0, 914 0xffe4eaf4,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfff8e59f,0xfffdcd09,0xfffc9e10,0xffc49277,0xf89dadc9,0x1a515b6b,0x0,0x0,0x0,
1655 0xffe4eaf4,0xffffffff,0xffffffff,0xffffffff,0xfffefaf3,0xfffcdb44,0xfffec219,0xffef9234,0xffc1bfcc,0xffa7b6d0,0x26373e4a,0x0,0x0,0x0, 915 0xffe4eaf4,0xffffffff,0xffffffff,0xffffffff,0xfffefaf3,0xfffcdb44,0xfffec219,0xffef9234,0xffc1bfcc,0xffa7b6d0,0x26373e4a,0x0,0x0,0x0,
1656 0xffe4eaf4,0xffffffff,0xffffffff,0xffffffff,0xfffdedbb,0xfffdd82e,0xfffeb832,0xffdaa27b,0xffccd8eb,0xffafbed6,0x26373e4a,0x0,0x0,0x0, 916 0xffe4eaf4,0xffffffff,0xffffffff,0xffffffff,0xfffdedbb,0xfffdd82e,0xfffeb832,0xffdaa27b,0xffccd8eb,0xffafbed6,0x26373e4a,0x0,0x0,0x0,
1657 0xffe4eaf4,0xffffffff,0xffffffff,0xfffefdfb,0xfffbe072,0xfffed342,0xfff6a845,0xffd7d0d7,0xffd6e0f1,0xffb6c3d9,0x26373e4a,0x100001f,0x800001f,0x600001e, 917 0xffe4eaf4,0xffffffff,0xffffffff,0xfffefdfb,0xfffbe072,0xfffed342,0xfff6a845,0xffd7d0d7,0xffd6e0f1,0xffb6c3d9,0x26373e4a,0x100001f,0x800001f,0x600001e,
1658 0xffe4eaf4,0xffffffff,0xffffffff,0xfff7eed3,0xfffde35e,0xfffecd5c,0xffe4b184,0xffe1e9f7,0xffdce4f3,0xffb5c1d7,0x35262b3d,0x1a00001d,0x1d00001b,0x1b00001a, 918 0xffe4eaf4,0xffffffff,0xffffffff,0xfff7eed3,0xfffde35e,0xfffecd5c,0xffe4b184,0xffe1e9f7,0xffdce4f3,0xffb5c1d7,0x35262b3d,0x1a00001d,0x1d00001b,0x1b00001a,
1659 0xffe4eaf4,0xffffffff,0xfffcfeff,0xfff7dead,0xfffee483,0xfff6c471,0xffdecdc9,0xffd7deec,0xffcdd4e5,0xffaab5cb,0x3e1f2236,0x1e00001a,0x1e00001a,0x1c00001a, 919 0xffe4eaf4,0xffffffff,0xfffcfeff,0xfff7dead,0xfffee483,0xfff6c471,0xffdecdc9,0xffd7deec,0xffcdd4e5,0xffaab5cb,0x3e1f2236,0x1e00001a,0x1e00001a,0x1c00001a,
1660 0xffe4eaf4,0xffffffff,0xfffbffff,0xffecd3b7,0xfff7dfc0,0xffd6baa9,0xffd3d7e4,0xffcfd6e5,0xffccd3e3,0xffabb6cc,0x3d1f2336,0x17000018,0xf000016,0x7000010, 920 0xffe4eaf4,0xffffffff,0xfffbffff,0xffecd3b7,0xfff7dfc0,0xffd6baa9,0xffd3d7e4,0xffcfd6e5,0xffccd3e3,0xffabb6cc,0x3d1f2336,0x17000018,0xf000016,0x7000010,
1661 0xffe4eaf4,0xffffffff,0xfffafeff,0xffc8b7af,0xffc2aea9,0xffd7dce6,0xffd4dae7,0xffd0d7e6,0xffd1d8e7,0xffb5c0d6,0x2a303643,0x2000007,0x0,0x0, 921 0xffe4eaf4,0xffffffff,0xfffafeff,0xffc8b7af,0xffc2aea9,0xffd7dce6,0xffd4dae7,0xffd0d7e6,0xffd1d8e7,0xffb5c0d6,0x2a303643,0x2000007,0x0,0x0,
1662 0xffe4eaf4,0xfffeffff,0xfff9feff,0xffece9eb,0xffeaf0f7,0xffe6ecf6,0xffe0e6f3,0xffe2e9f6,0xffe2eaf8,0xffbecadf,0x26373e4a,0x0,0x0,0x0, 922 0xffe4eaf4,0xfffeffff,0xfff9feff,0xffece9eb,0xffeaf0f7,0xffe6ecf6,0xffe0e6f3,0xffe2e9f6,0xffe2eaf8,0xffbecadf,0x26373e4a,0x0,0x0,0x0,
1663 0xffcdd7e6,0xffd8dee7,0xffd4dde7,0xffd2dbe7,0xffd0d9e7,0xffced7e6,0xffcad4e5,0xffc6d1e3,0xffc4cfe2,0xffacb9d1,0x26373e4a,0x0,0x0,0x0, 923 0xffcdd7e6,0xffd8dee7,0xffd4dde7,0xffd2dbe7,0xffd0d9e7,0xffced7e6,0xffcad4e5,0xffc6d1e3,0xffc4cfe2,0xffacb9d1,0x26373e4a,0x0,0x0,0x0,
1664 0x2c737d8f,0x364e5868,0x364e5868,0x364e5868,0x364e5868,0x364e5868,0x364e5868,0x364e5868,0x364e5868,0x364e5868,0x10111316,0x0,0x0,0x0 924 0x2c737d8f,0x364e5868,0x364e5868,0x364e5868,0x364e5868,0x364e5868,0x364e5868,0x364e5868,0x364e5868,0x364e5868,0x10111316,0x0,0x0,0x0
1665}; 925};
1666 926
1667static const QRgb editdelete_data[] = {
1668 0x0,0x352424,0x9c6a6a,0xdd000000,0x0,0x5000000,0x0,0x0,0x0,0x0,0xde000000,0x784b4b,0x5000000,0x1000000,
1669 0x0,0x352424,0x8e2e1e1e,0xdf875959,0x90000000,0x0,0x4000000,0x0,0x0,0x8b000000,0xdf8a6565,0x93201616,0x4000000,0xa000000,
1670 0x0,0x8f352424,0xff9a7171,0xf7e59393,0xf38e5050,0xa2000000,0x1000000,0x0,0x98000000,0xeca37d7d,0xf6eba4a4,0xff925252,0xaa000000,0x181a0f0f,
1671 0xdc000000,0xdf875a5a,0xf6e59393,0xffda8282,0xf7d77979,0xf8894d4d,0x8b050303,0x8a080606,0xeda37d7d,0xf4eca9a9,0xffd27a7a,0xfaa35c5c,0xfc522f2f,0x88050303,
1672 0x1000000,0x90000000,0xf38f5050,0xf8d77a7a,0xffd57878,0xf6db7d7d,0xf17a4949,0xea8a6969,0xf1eda8a8,0xffd27a7a,0xfb9a5656,0xfb4e2b2b,0xbe000000,0x2e000000,
1673 0x3000000,0x0,0xa2000000,0xf9874c4c,0xf6db7e7e,0xffd57a7a,0xfddd8989,0xfee19393,0xffd07a7a,0xf99e5858,0xfb4c2a2a,0xc5000000,0x48000000,0x22000000,
1674 0x0,0x4000000,0x1000000,0x8a000000,0xf27a4848,0xfcdd8888,0xffd77d7d,0xffd67878,0xfdb76767,0xf6472828,0xb8000000,0x4e000000,0x29000000,0xb000000,
1675 0x0,0x0,0x0,0x88000000,0xea896a6a,0xfce19292,0xffd67979,0xffd17575,0xfdc46e6e,0xf5693c3c,0xb6000000,0x27000000,0x11000000,0x1000000,
1676 0x0,0x0,0x95000000,0xeda17c7c,0xf2eea9a9,0xffd17a7a,0xfeb76666,0xfec46e6e,0xffd17676,0xf8cf7575,0xf5834a4a,0xa8000000,0x2000000,0x4000000,
1677 0x0,0x8e000000,0xeca47d7d,0xf4eca9a9,0xffd27a7a,0xf99e5858,0xf6472828,0xf6693c3c,0xf9d07575,0xffd77a7a,0xf9d27777,0xf6824a4a,0xa2000000,0x2000000,
1678 0xdc000000,0xd7896262,0xf3eba4a4,0xffd27a7a,0xfa9a5656,0xfa4d2b2b,0xb8000000,0xb6050303,0xf6854b4b,0xf9d27777,0xffc77070,0xf8ae6363,0xf6603636,0x81000000,
1679 0x0,0x8d000000,0xff985656,0xfaa45c5c,0xfa4e2d2d,0xc5000000,0x4e000000,0x28000000,0xa8000000,0xf6824949,0xf9af6262,0xff663838,0xbc000000,0x29000000,
1680 0x2000000,0x0,0xa5000000,0xf6522f2f,0xbc000000,0x46000000,0x29000000,0x10000000,0x2000000,0xa3000000,0xf75d3434,0xbc000000,0x4c000000,0x2a000000,
1681 0x1000000,0x7000000,0xb000000,0x84000000,0x28000000,0x21000000,0xb000000,0x0,0x3000000,0x3000000,0x81000000,0x29000000,0x29000000,0x11000000
1682};
1683
1684static const QRgb enter_data[] = { 927static const QRgb enter_data[] = {
1685 0x0,0x0,0x0,0x5179f1b,0x4709990e,0x96049709,0xbd039708,0xbf039708,0x9f039607,0x54049708,0x709990d,0x0,0x0,0x0, 928 0x0,0x0,0x0,0x5179f1b,0x4709990e,0x96049709,0xbd039708,0xbf039708,0x9f039607,0x54049708,0x709990d,0x0,0x0,0x0,
1686 0x0,0x1ba21f,0x230e9b12,0xb7059709,0xf8029607,0xfc039608,0xfe029608,0xfe019506,0xff009606,0xff009506,0xd0019606,0x32039607,0x8990c,0x0, 929 0x0,0x1ba21f,0x230e9b12,0xb7059709,0xf8029607,0xfc039608,0xfe029608,0xfe019506,0xff009606,0xff009506,0xd0019606,0x32039607,0x8990c,0x0,
1687 0x0,0x230d9b12,0xd7049708,0xf908980d,0xfc119b15,0xfe129c16,0xfe0b9910,0xff05970a,0xff019507,0xff009506,0xff009506,0xef009606,0x36019606,0x0, 930 0x0,0x230d9b12,0xd7049708,0xf908980d,0xfc119b15,0xfe129c16,0xfe0b9910,0xff05970a,0xff019507,0xff009506,0xff009506,0xef009606,0x36019606,0x0,
1688 0x5179f1b,0xb6059709,0xf908980d,0xfc1fa124,0xfe39ab3c,0xfe35a939,0xff1b9f20,0xff0a990f,0xff039608,0xff029607,0xff169d1c,0xff109b17,0xda009507,0xd009605, 931 0x5179f1b,0xb6059709,0xf908980d,0xfc1fa124,0xfe39ab3c,0xfe35a939,0xff1b9f20,0xff0a990f,0xff039608,0xff029607,0xff169d1c,0xff109b17,0xda009507,0xd009605,
1689 0x460a990e,0xf8039608,0xfc2ba52f,0xfe67bd6a,0xff87ca8a,0xff6fc071,0xff2ca630,0xff0e9b13,0xff0e9a13,0xff70c274,0xffe2f1e2,0xff91cf94,0xff019508,0x69009605, 932 0x460a990e,0xf8039608,0xfc2ba52f,0xfe67bd6a,0xff87ca8a,0xff6fc071,0xff2ca630,0xff0e9b13,0xff0e9a13,0xff70c274,0xffe2f1e2,0xff91cf94,0xff019508,0x69009605,
1690 0x96049709,0xfc05970a,0xfe78c57b,0xffeff6ef,0xffb6ddb7,0xff61ba64,0xff29a52d,0xff24a228,0xffa0d6a2,0xfff6faf7,0xffd0ead2,0xff3cac41,0xff009507,0xbb009507, 933 0x96049709,0xfc05970a,0xfe78c57b,0xffeff6ef,0xffb6ddb7,0xff61ba64,0xff29a52d,0xff24a228,0xffa0d6a2,0xfff6faf7,0xffd0ead2,0xff3cac41,0xff009507,0xbb009507,
1691 0xbd039708,0xfe039608,0xfe3ead42,0xffeef7ef,0xffe9f4e9,0xff4db351,0xff27a42b,0xffa7d8a9,0xfff6faf6,0xff94d197,0xff179e1d,0xff009507,0xff009508,0xe0009507, 934 0xbd039708,0xfe039608,0xfe3ead42,0xffeef7ef,0xffe9f4e9,0xff4db351,0xff27a42b,0xffa7d8a9,0xfff6faf6,0xff94d197,0xff179e1d,0xff009507,0xff009508,0xe0009507,
1692 0xbf039708,0xfe019506,0xff07970c,0xff7fc882,0xfffbfdfb,0xffa0d5a2,0xffa1d6a4,0xfff9fcf9,0xff8fcf93,0xff08980e,0xff009506,0xff009507,0xff009508,0xe3009507, 935 0xbf039708,0xfe019506,0xff07970c,0xff7fc882,0xfffbfdfb,0xffa0d5a2,0xffa1d6a4,0xfff9fcf9,0xff8fcf93,0xff08980e,0xff009506,0xff009507,0xff009508,0xe3009507,
1693 0x9f039607,0xff009606,0xff019507,0xff159d1b,0xffcee9cf,0xfff8fbf8,0xfffafcfa,0xffbae0bc,0xff129c18,0xff009506,0xff009506,0xff009507,0xff009508,0xc6009507, 936 0x9f039607,0xff009606,0xff019507,0xff159d1b,0xffcee9cf,0xfff8fbf8,0xfffafcfa,0xffbae0bc,0xff129c18,0xff009506,0xff009506,0xff009507,0xff009508,0xc6009507,
1694 0x53049708,0xfe009506,0xff009506,0xff019506,0xff56b75a,0xfffafcfa,0xffddf0de,0xff26a32c,0xff009506,0xff009506,0xff009507,0xff009508,0xff009508,0x7c009506, 937 0x53049708,0xfe009506,0xff009506,0xff019506,0xff56b75a,0xfffafcfa,0xffddf0de,0xff26a32c,0xff009506,0xff009506,0xff009507,0xff009508,0xff009508,0x7c009506,
1695 0x809990d,0xd0019606,0xff009506,0xff009506,0xff07970d,0xff75c379,0xff3cac41,0xff009506,0xff009506,0xff009507,0xff009508,0xff009508,0xeb009507,0x17009605, 938 0x809990d,0xd0019606,0xff009506,0xff009506,0xff07970d,0xff75c379,0xff3cac41,0xff009506,0xff009506,0xff009507,0xff009508,0xff009508,0xeb009507,0x17009605,
1696 0x0,0x32039607,0xef009606,0xff009507,0xff009507,0xff009507,0xff009507,0xff009507,0xff009507,0xff009508,0xff009508,0xfa009408,0x53009606,0x0, 939 0x0,0x32039607,0xef009606,0xff009507,0xff009507,0xff009507,0xff009507,0xff009507,0xff009507,0xff009508,0xff009508,0xfa009408,0x53009606,0x0,
1697 0x0,0x8990c,0x36019606,0xda009606,0xff009507,0xff009507,0xff009508,0xff009508,0xff009508,0xff009508,0xeb009507,0x53009606,0x9604,0x0, 940 0x0,0x8990c,0x36019606,0xda009606,0xff009507,0xff009507,0xff009508,0xff009508,0xff009508,0xff009508,0xeb009507,0x53009606,0x9604,0x0,
1698 0x0,0x0,0x0,0xd009605,0x69009605,0xbb009507,0xe1009507,0xe3009507,0xc6009507,0x7c009506,0x17009605,0x0,0x0,0x0 941 0x0,0x0,0x0,0xd009605,0x69009605,0xbb009507,0xe1009507,0xe3009507,0xc6009507,0x7c009506,0x17009605,0x0,0x0,0x0
1699}; 942};
1700 943
1701static const QRgb exec_data[] = { 944static const QRgb exec_data[] = {
1702 0x0,0x0,0x0,0x643db5f6,0xa324c2f7,0x243d95ee,0x4c31a3f7,0x572a95ec,0xc2c70e3,0x0,0x0,0x0,0x0,0x0, 945 0x0,0x0,0x0,0x643db5f6,0xa324c2f7,0x243d95ee,0x4c31a3f7,0x572a95ec,0xc2c70e3,0x0,0x0,0x0,0x0,0x0,
1703 0x0,0x513fb3f5,0x7337b7f4,0xce46b4f2,0xff03e2ff,0xe914cbf9,0xec0fc9f9,0xfe03d5fe,0x7b1f87df,0xe1f6cf0,0x41c64e6,0x0,0x0,0x0, 946 0x0,0x513fb3f5,0x7337b7f4,0xce46b4f2,0xff03e2ff,0xe914cbf9,0xec0fc9f9,0xfe03d5fe,0x7b1f87df,0xe1f6cf0,0x41c64e6,0x0,0x0,0x0,
1704 0x1254b7ff,0xea34cbfa,0xfe06e2ff,0xfd08dcfd,0xff06d4f9,0xff16a9e8,0xff1aa2e6,0xff10b6f2,0xfa0bbef9,0xed0eacf5,0xb81296ed,0x110e4fcf,0x0,0x0, 947 0x1254b7ff,0xea34cbfa,0xfe06e2ff,0xfd08dcfd,0xff06d4f9,0xff16a9e8,0xff1aa2e6,0xff10b6f2,0xfa0bbef9,0xed0eacf5,0xb81296ed,0x110e4fcf,0x0,0x0,
1705 0x1e4fafff,0xed56b0f4,0xff2ed6fc,0xff05d8fb,0xf6318edc,0xd23283d4,0xe63387d8,0xfe3488d7,0xff2e98e1,0xff0ab9fc,0xf50ba2f4,0x2709328c,0x0,0x0, 948 0x1e4fafff,0xed56b0f4,0xff2ed6fc,0xff05d8fb,0xf6318edc,0xd23283d4,0xe63387d8,0xfe3488d7,0xff2e98e1,0xff0ab9fc,0xf50ba2f4,0x2709328c,0x0,0x0,
1706 0x9436befb,0xf51fc6f6,0xfe10defe,0xde0dc9f7,0x2f246088,0xc000000,0xa112e40,0x563ea3e4,0xeb41ace8,0xff3bafeb,0xfe06b0fd,0xb50d84eb,0x500861de,0x0, 949 0x9436befb,0xf51fc6f6,0xfe10defe,0xde0dc9f7,0x2f246088,0xc000000,0xa112e40,0x563ea3e4,0xeb41ace8,0xff3bafeb,0xfe06b0fd,0xb50d84eb,0x500861de,0x0,
1707 0xd043bbf4,0xfd0cddfd,0xfe09dcff,0xe608cdfc,0xb235488,0x0,0x0,0x0,0x354ecdf6,0xf94fd1f5,0xff23b8fc,0xff00a5ff,0xee078cf2,0x150030b1, 950 0xd043bbf4,0xfd0cddfd,0xfe09dcff,0xe608cdfc,0xb235488,0x0,0x0,0x0,0x354ecdf6,0xf94fd1f5,0xff23b8fc,0xff00a5ff,0xee078cf2,0x150030b1,
1708 0xd74792e8,0xfc357fe0,0xfd54bbf4,0xff04d0ff,0x761bbbfb,0x0,0x0,0x0,0x6bffff,0xaa5aebff,0xff30c3fe,0xfc13a1fa,0xc51662d4,0x27002377, 951 0xd74792e8,0xfc357fe0,0xfd54bbf4,0xff04d0ff,0x761bbbfb,0x0,0x0,0x0,0x6bffff,0xaa5aebff,0xff30c3fe,0xfc13a1fa,0xc51662d4,0x27002377,
1709 0x7f3584e4,0xd4317ede,0xfd57abf0,0xfe1ecdfe,0xfd03c2fe,0x761cb7fc,0x751bbfe,0x0,0x0,0x7758e5ff,0xff15aaff,0xfd0399fd,0xb5086de0,0x140239b6, 952 0x7f3584e4,0xd4317ede,0xfd57abf0,0xfe1ecdfe,0xfd03c2fe,0x761cb7fc,0x751bbfe,0x0,0x0,0x7758e5ff,0xff15aaff,0xfd0399fd,0xb5086de0,0x140239b6,
1710 0x1000000,0x3b2872d8,0xf747bef6,0xff00c3ff,0xfe21c4fe,0xff04b7ff,0xe10db3ff,0xa219b3ff,0xa11ab0ff,0xea0ca4ff,0xff039aff,0xfe2a9bf6,0xfe0e99fd,0x650a4dc3, 953 0x1000000,0x3b2872d8,0xf747bef6,0xff00c3ff,0xfe21c4fe,0xff04b7ff,0xe10db3ff,0xa219b3ff,0xa11ab0ff,0xea0ca4ff,0xff039aff,0xfe2a9bf6,0xfe0e99fd,0x650a4dc3,
1711 0x0,0x873280e6,0xfc4797e8,0xfc46abef,0xfd327add,0xfb4fa0eb,0xfe10afff,0xff04a6ff,0xff1faaff,0xff109fff,0xff1e9ffd,0xfe1b5dd3,0xd41a5cd2,0x29001c6b, 954 0x0,0x873280e6,0xfc4797e8,0xfc46abef,0xfd327add,0xfb4fa0eb,0xfe10afff,0xff04a6ff,0xff1faaff,0xff109fff,0xff1e9ffd,0xfe1b5dd3,0xd41a5cd2,0x29001c6b,
1712 0x0,0x482874e2,0xec3380e1,0xf02a6bd8,0xc82067d6,0xf85d95e4,0xfb1caefe,0xfd29abfd,0xfc2d70d9,0xfa6ba7ed,0xff0996ff,0xe5337ae0,0x30002373,0x5000000, 955 0x0,0x482874e2,0xec3380e1,0xf02a6bd8,0xc82067d6,0xf85d95e4,0xfb1caefe,0xfd29abfd,0xfc2d70d9,0xfa6ba7ed,0xff0996ff,0xe5337ae0,0x30002373,0x5000000,
1713 0x0,0x0,0x331d65dd,0x3a124398,0xf07255f,0xf06292e3,0xfb4295e9,0xf64393ea,0xd81e5ad2,0xfd739be3,0xf2558ee4,0x721a47b5,0x9000001,0x0, 956 0x0,0x0,0x331d65dd,0x3a124398,0xf07255f,0xf06292e3,0xfb4295e9,0xf64393ea,0xd81e5ad2,0xfd739be3,0xf2558ee4,0x721a47b5,0x9000001,0x0,
1714 0x0,0x0,0x0,0x0,0x0,0xbb1f60da,0xf6195ed4,0x9f0b48c5,0x1c001f6c,0xb02d5fd2,0x6d0338b0,0xf000206,0x0,0x0, 957 0x0,0x0,0x0,0x0,0x0,0xbb1f60da,0xf6195ed4,0x9f0b48c5,0x1c001f6c,0xb02d5fd2,0x6d0338b0,0xf000206,0x0,0x0,
1715 0x0,0x0,0x0,0x0,0x0,0x5002371,0x2d0033af,0x1f001a56,0x1000000,0x3000000,0x7000000,0x0,0x0,0x0 958 0x0,0x0,0x0,0x0,0x0,0x5002371,0x2d0033af,0x1f001a56,0x1000000,0x3000000,0x7000000,0x0,0x0,0x0
1716}; 959};
1717 960
1718static const QRgb fastback_data[] = { 961static const QRgb fastback_data[] = {
1719 0x0,0x0,0x0,0x1fefefe,0x16c8e3fe,0x299ecbfe,0x2690c1fe,0x1b69a4fe,0x10cee4fe,0x26a7d1fe,0x2795c4fe,0x2079b0fe,0x9488afe,0x0, 962 0x0,0x0,0x0,0x1fefefe,0x16c8e3fe,0x299ecbfe,0x2690c1fe,0x1b69a4fe,0x10cee4fe,0x26a7d1fe,0x2795c4fe,0x2079b0fe,0x9488afe,0x0,
1720 0x0,0x0,0xfefefe,0x20e2f0fe,0xb796c9fe,0xe7aad3fe,0xe59fccfe,0xdd7eb7fe,0xa561a6fb,0xe3a7d2fe,0xe6a3cffe,0xe292c4fe,0x95458ef9,0x4103996, 963 0x0,0x0,0xfefefe,0x20e2f0fe,0xb796c9fe,0xe7aad3fe,0xe59fccfe,0xdd7eb7fe,0xa561a6fb,0xe3a7d2fe,0xe6a3cffe,0xe292c4fe,0x95458ef9,0x4103996,
1721 0x0,0x0,0xdfefefe,0x9497c9fe,0xfcdeeefd,0xfffcfcfc,0xfffcfcfc,0xec6ea0ed,0xf29fc7f6,0xfffafcfc,0xfffcfcfc,0xf9b5d1f7,0x6c2556b3,0x2010101, 964 0x0,0x0,0xdfefefe,0x9497c9fe,0xfcdeeefd,0xfffcfcfc,0xfffcfcfc,0xec6ea0ed,0xf29fc7f6,0xfffafcfc,0xfffcfcfc,0xf9b5d1f7,0x6c2556b3,0x2010101,
1722 0x0,0x5fefefe,0x5fa6d1fe,0xf7b7d8f9,0xfff2f6f7,0xfff2f6f7,0xfd95bef9,0xe36194e1,0xffebf3f8,0xfff2f6f7,0xffd4e6f8,0x9d3064c0,0xc03081b,0x0, 965 0x0,0x5fefefe,0x5fa6d1fe,0xf7b7d8f9,0xfff2f6f7,0xfff2f6f7,0xfd95bef9,0xe36194e1,0xffebf3f8,0xfff2f6f7,0xffd4e6f8,0x9d3064c0,0xc03081b,0x0,
1723 0x2fefefe,0x3fa9d2fe,0xe094c5f8,0xffe3ecf1,0xffe6edf1,0xfbb6d0ef,0xdf3975dd,0xffcfe2f2,0xffe6edf1,0xffdde9f1,0xcc4f7fd7,0x1f061136,0x0,0x0, 966 0x2fefefe,0x3fa9d2fe,0xe094c5f8,0xffe3ecf1,0xffe6edf1,0xfbb6d0ef,0xdf3975dd,0xffcfe2f2,0xffe6edf1,0xffdde9f1,0xcc4f7fd7,0x1f061136,0x0,0x0,
1724 0x1cd5e8fe,0xb583bbf9,0xffc6dceb,0xffd7e4e9,0xffc6d9eb,0xe44076df,0xf99bbfea,0xffd7e4e9,0xffd6e3e9,0xf2739ee8,0x410d2466,0x2000000,0x0,0x0, 967 0x1cd5e8fe,0xb583bbf9,0xffc6dceb,0xffd7e4e9,0xffc6d9eb,0xe44076df,0xf99bbfea,0xffd7e4e9,0xffd6e3e9,0xf2739ee8,0x410d2466,0x2000000,0x0,0x0,
1725 0x5366abfb,0xfc95bfe8,0xffc8d8df,0xffc7d8e0,0xee6691e1,0xe35185da,0xffc5d7e0,0xffc8d8df,0xff9fbee6,0x851741aa,0x6020514,0x0,0x0,0x0, 968 0x5366abfb,0xfc95bfe8,0xffc8d8df,0xffc7d8e0,0xee6691e1,0xe35185da,0xffc5d7e0,0xffc8d8df,0xff9fbee6,0x851741aa,0x6020514,0x0,0x0,0x0,
1726 0x1d81a9fc,0xcf4d86ed,0xffb1c8d8,0xffb8cdd7,0xff8db2dd,0xdb2560ed,0xfd99b9dc,0xffb8cdd7,0xffafc8d8,0xc93d72e5,0xf0831ce,0x0,0x0,0x0, 969 0x1d81a9fc,0xcf4d86ed,0xffb1c8d8,0xffb8cdd7,0xff8db2dd,0xdb2560ed,0xfd99b9dc,0xffb8cdd7,0xffafc8d8,0xc93d72e5,0xf0831ce,0x0,0x0,0x0,
1727 0x2fefefe,0x3f265cf3,0xec5f90df,0xffa7c2ce,0xffa8c2cd,0xf3618edb,0xe02b63e8,0xff9fbecf,0xffa8c2cd,0xff8eb1d2,0x921d50e6,0x103070e,0x0,0x0, 970 0x2fefefe,0x3f265cf3,0xec5f90df,0xffa7c2ce,0xffa8c2cd,0xf3618edb,0xe02b63e8,0xff9fbecf,0xffa8c2cd,0xff8eb1d2,0x921d50e6,0x103070e,0x0,0x0,
1728 0xfefefe,0x5c3d8fa,0x7b1b4ff4,0xfc799fd1,0xff9bb7c6,0xff96b4c7,0xe63666e0,0xec4b7bdd,0xff9bb7c6,0xff9bb7c6,0xf46792d2,0x510732e3,0x0,0x0, 971 0xfefefe,0x5c3d8fa,0x7b1b4ff4,0xfc799fd1,0xff9bb7c6,0xff96b4c7,0xe63666e0,0xec4b7bdd,0xff9bb7c6,0xff9bb7c6,0xf46792d2,0x510732e3,0x0,0x0,
1729 0x0,0xfefefe,0xaafbefa,0xab1f55e8,0xff81a7c2,0xff90b0be,0xff82a7c1,0xda1648e4,0xfd5c8ad0,0xff90afbe,0xff8eaebf,0xe23f70d7,0x230627d4,0x0, 972 0x0,0xfefefe,0xaafbefa,0xab1f55e8,0xff81a7c2,0xff90b0be,0xff82a7c1,0xda1648e4,0xfd5c8ad0,0xff90afbe,0xff8eaebf,0xe23f70d7,0x230627d4,0x0,
1730 0x0,0x0,0x1fefefe,0x213458f6,0xd23663dc,0xff7095c5,0xff7095c4,0xfa4d79d1,0xc8143fe2,0xfc668dc8,0xff7095c4,0xff668ec8,0xa71a46de,0x4031060, 973 0x0,0x0,0x1fefefe,0x213458f6,0xd23663dc,0xff7095c5,0xff7095c4,0xfa4d79d1,0xc8143fe2,0xfc668dc8,0xff7095c4,0xff668ec8,0xa71a46de,0x4031060,
1731 0x0,0x0,0x0,0x1fbfbfb,0x220527de,0x60062bbe,0x640629af,0x630628b1,0x2e041fa8,0x53062bcb,0x640629b0,0x640629af,0x450524ab,0x3020616, 974 0x0,0x0,0x0,0x1fbfbfb,0x220527de,0x60062bbe,0x640629af,0x630628b1,0x2e041fa8,0x53062bcb,0x640629b0,0x640629af,0x450524ab,0x3020616,
1732 0x0,0x0,0x0,0x0,0x0,0x0,0x1000000,0x1000000,0x0,0x0,0x1000000,0x1000000,0x0,0x0 975 0x0,0x0,0x0,0x0,0x0,0x0,0x1000000,0x1000000,0x0,0x0,0x1000000,0x1000000,0x0,0x0
1733}; 976};
1734 977
1735static const QRgb fastforward_data[] = { 978static const QRgb fastforward_data[] = {
1736 0x8e9f4fe,0x24aad2fe,0x289ac8fe,0x2386bbfe,0x117fb3fe,0x1bb9dafe,0x299ecbfe,0x2590c1fe,0x186ba6fe,0x15b96fe,0x0,0x0,0x0,0x0, 979 0x8e9f4fe,0x24aad2fe,0x289ac8fe,0x2386bbfe,0x117fb3fe,0x1bb9dafe,0x299ecbfe,0x2590c1fe,0x186ba6fe,0x15b96fe,0x0,0x0,0x0,0x0,
1737 0x3680bcfe,0xe091c5fe,0xe7a9d2fe,0xe49fccfe,0xb96aa7fc,0xb96aacfc,0xe7abd4fe,0xe5a3cefe,0xd886bbfe,0x473277f1,0x5080e,0x0,0x0,0x0, 980 0x3680bcfe,0xe091c5fe,0xe7a9d2fe,0xe49fccfe,0xb96aa7fc,0xb96aacfc,0xe7abd4fe,0xe5a3cefe,0xd886bbfe,0x473277f1,0x5080e,0x0,0x0,0x0,
1738 0x1691c1fd,0xbd6dabfc,0xffedf4fd,0xfffcfcfc,0xfde0edfc,0xdb4c8ef5,0xfac7dffc,0xfffcfcfc,0xfff7fafc,0xd781b0f7,0x1e1756dc,0x0,0x0,0x0, 981 0x1691c1fd,0xbd6dabfc,0xffedf4fd,0xfffcfcfc,0xfde0edfc,0xdb4c8ef5,0xfac7dffc,0xfffcfcfc,0xfff7fafc,0xd781b0f7,0x1e1756dc,0x0,0x0,0x0,
1739 0x1fefefe,0x254a87f3,0xdf7db0fa,0xffeff5f8,0xfff2f6f7,0xfdb2d0f8,0xda3c7ef3,0xffdfedf8,0xfff2f6f7,0xffe5eff8,0xb04b87f0,0x40c3ab5,0x0,0x0, 982 0x1fefefe,0x254a87f3,0xdf7db0fa,0xffeff5f8,0xfff2f6f7,0xfdb2d0f8,0xda3c7ef3,0xffdfedf8,0xfff2f6f7,0xffe5eff8,0xb04b87f0,0x40c3ab5,0x0,0x0,
1740 0x0,0x3fefefe,0x52286ff8,0xf1a0c4f4,0xffe6edf1,0xffe6edf1,0xee7caaf2,0xe35a92f4,0xffdfeaf1,0xffe6edf1,0xfcbbd5f2,0x7c2766ee,0x20a2fab,0x0, 983 0x0,0x3fefefe,0x52286ff8,0xf1a0c4f4,0xffe6edf1,0xffe6edf1,0xee7caaf2,0xe35a92f4,0xffdfeaf1,0xffe6edf1,0xfcbbd5f2,0x7c2766ee,0x20a2fab,0x0,
1741 0x0,0xfefefe,0x6f5f5f5,0x8d3475f6,0xffb8d1ec,0xffd7e4e9,0xffd0e0ea,0xdf427ded,0xf481abef,0xffd7e3e9,0xffd6e3e9,0xee84afed,0x3d124cde,0x0, 984 0x0,0xfefefe,0x6f5f5f5,0x8d3475f6,0xffb8d1ec,0xffd7e4e9,0xffd0e0ea,0xdf427ded,0xf481abef,0xffd7e3e9,0xffd6e3e9,0xee84afed,0x3d124cde,0x0,
1742 0x0,0x0,0xfefefe,0x2aa8c7fb,0xde5e9ff2,0xffc7d8e0,0xffc8d8df,0xfda4c2e3,0xd3266ded,0xffaecbe4,0xffc8d8df,0xffc2d5e0,0xbe467ce4,0x9072089, 985 0x0,0x0,0xfefefe,0x2aa8c7fb,0xde5e9ff2,0xffc7d8e0,0xffc8d8df,0xfda4c2e3,0xd3266ded,0xffaecbe4,0xffc8d8df,0xffc2d5e0,0xbe467ce4,0x9072089,
1743 0x0,0x0,0x7fefefe,0x7785bdfb,0xff8bb7e2,0xffb8cdd7,0xffb8cdd7,0xf35988df,0xee5288de,0xffb4cbd7,0xffb8cdd7,0xfd8eb1dd,0x821940ac,0x4000000, 986 0x0,0x0,0x7fefefe,0x7785bdfb,0xff8bb7e2,0xffb8cdd7,0xffb8cdd7,0xf35988df,0xee5288de,0xffb4cbd7,0xffb8cdd7,0xfd8eb1dd,0x821940ac,0x4000000,
1744 0x0,0x3fefefe,0x489bcafe,0xed6ba7e6,0xffa8c2cd,0xffa8c2cd,0xff749fda,0xde2a5fd1,0xff98bad2,0xffa8c2cd,0xff99b9d1,0xb92856c6,0x18030c3b,0x0, 987 0x0,0x3fefefe,0x489bcafe,0xed6ba7e6,0xffa8c2cd,0xffa8c2cd,0xff749fda,0xde2a5fd1,0xff98bad2,0xffa8c2cd,0xff99b9d1,0xb92856c6,0x18030c3b,0x0,
1745 0xfefefe,0x28b9d9fe,0xc65da1ed,0xfe94b4c9,0xff9bb7c6,0xff87a9cc,0xe21e50d8,0xfb79a4d0,0xff9bb7c6,0xff9bb7c6,0xe7406cd2,0x36041870,0x1000000,0x0, 988 0xfefefe,0x28b9d9fe,0xc65da1ed,0xfe94b4c9,0xff9bb7c6,0xff87a9cc,0xe21e50d8,0xfb79a4d0,0xff9bb7c6,0xff9bb7c6,0xe7406cd2,0x36041870,0x1000000,0x0,
1746 0xfeaf2fe,0x9a5b9ff4,0xfe7aa6c9,0xff90afbe,0xff88abc0,0xea2b5bd2,0xf55083d1,0xff90afbe,0xff90afbe,0xfc5383d1,0x5a08207d,0x3000000,0x0,0x0, 989 0xfeaf2fe,0x9a5b9ff4,0xfe7aa6c9,0xff90afbe,0xff88abc0,0xea2b5bd2,0xf55083d1,0xff90afbe,0xff90afbe,0xfc5383d1,0x5a08207d,0x3000000,0x0,0x0,
1747 0x384884fb,0xf64279dc,0xff7095c4,0xff7095c5,0xeb4670c7,0xde1a45d3,0xff6a91c7,0xff7095c4,0xfb628ac7,0x941335ad,0xa01051b,0x0,0x0,0x0, 990 0x384884fb,0xf64279dc,0xff7095c4,0xff7095c5,0xeb4670c7,0xde1a45d3,0xff6a91c7,0xff7095c4,0xfb628ac7,0x941335ad,0xa01051b,0x0,0x0,0x0,
1748 0x112e5ff8,0x58072ed7,0x630629b1,0x640629af,0x42051d91,0x44062ad1,0x61062ab9,0x640629af,0x590624a6,0x14020a44,0x0,0x0,0x0,0x0, 991 0x112e5ff8,0x58072ed7,0x630629b1,0x640629af,0x42051d91,0x44062ad1,0x61062ab9,0x640629af,0x590624a6,0x14020a44,0x0,0x0,0x0,0x0,
1749 0x0,0x0,0x1000000,0x1000000,0x0,0x0,0x1000000,0x1000000,0x1000000,0x0,0x0,0x0,0x0,0x0 992 0x0,0x0,0x1000000,0x1000000,0x0,0x0,0x1000000,0x1000000,0x1000000,0x0,0x0,0x0,0x0,0x0
1750}; 993};
1751 994
1752static const QRgb fileopen_data[] = { 995static const QRgb fileopen_data[] = {
1753 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3bc4cce8,0x49c1c9e7,0x0,0x0,0x0,0x0,0x0, 996 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3bc4cce8,0x49c1c9e7,0x0,0x0,0x0,0x0,0x0,
1754 0x0,0x0,0x0,0x0,0x0,0x0,0x36c8cfe7,0xeee9eaf3,0xdedcdfee,0xc5e6e9b,0x0,0x0,0x0,0x0, 997 0x0,0x0,0x0,0x0,0x0,0x0,0x36c8cfe7,0xeee9eaf3,0xdedcdfee,0xc5e6e9b,0x0,0x0,0x0,0x0,
1755 0x0,0x0,0x0,0x0,0x0,0x36d1d6e8,0xededeef5,0xffececf4,0xffeaeaf3,0xae879ed4,0x3000000,0x0,0x0,0x0, 998 0x0,0x0,0x0,0x0,0x0,0x36d1d6e8,0xededeef5,0xffececf4,0xffeaeaf3,0xae879ed4,0x3000000,0x0,0x0,0x0,
1756 0x23fabff,0x284da4f0,0x7d8fc1f2,0xcfa2caf6,0x7e90b7e7,0xecf1f2f7,0xfff2f2f8,0xffececf4,0xffe6e6f0,0xf6cfd4ea,0x6a4b70be,0x9b5880d6,0x3f0836a7,0x0, 999 0x23fabff,0x284da4f0,0x7d8fc1f2,0xcfa2caf6,0x7e90b7e7,0xecf1f2f7,0xfff2f2f8,0xffececf4,0xffe6e6f0,0xf6cfd4ea,0x6a4b70be,0x9b5880d6,0x3f0836a7,0x0,
1757 0x4a62b1f4,0xfed1e6fc,0xffcfe4ff,0xffc3daf8,0xffeff2f7,0xfff8f8fb,0xfff3f2f7,0xffc2d1eb,0xff9fbce8,0xff6fa2ea,0xdc5197f1,0xc40045c7,0x37001b53,0x0, 1000 0x4a62b1f4,0xfed1e6fc,0xffcfe4ff,0xffc3daf8,0xffeff2f7,0xfff8f8fb,0xfff3f2f7,0xffc2d1eb,0xff9fbce8,0xff6fa2ea,0xdc5197f1,0xc40045c7,0x37001b53,0x0,
1758 0x13329cf5,0xf5c3dffb,0xffcae1ff,0xffe0e6ee,0xfffefefe,0xfff8f8fb,0xffc1d5ee,0xff9bc6f7,0xff65a7f8,0xff5a9ff7,0xf53e7de3,0xd8002db1,0x21000c24,0x0, 1001 0x13329cf5,0xf5c3dffb,0xffcae1ff,0xffe0e6ee,0xfffefefe,0xfff8f8fb,0xffc1d5ee,0xff9bc6f7,0xff65a7f8,0xff5a9ff7,0xf53e7de3,0xd8002db1,0x21000c24,0x0,
1759 0x0,0xbbabd1f7,0xffc4deff,0xffbacdea,0xffcee3f6,0xffb2d4f3,0xff9fcbf7,0xff75b3fa,0xff589cf6,0xff3e78e2,0xf70c39be,0xbe002cae,0x19000104,0x0, 1002 0x0,0xbbabd1f7,0xffc4deff,0xffbacdea,0xffcee3f6,0xffb2d4f3,0xff9fcbf7,0xff75b3fa,0xff589cf6,0xff3e78e2,0xf70c39be,0xbe002cae,0x19000104,0x0,
1760 0x0,0x697cb3ec,0xffc1dcff,0xff9ec8f8,0xffc5e4f8,0xffaed9fd,0xff87befa,0xff5996f1,0xff336fe3,0xff2054cf,0xfe6279c5,0xb85e71b0,0x12000000,0x0, 1003 0x0,0x697cb3ec,0xffc1dcff,0xff9ec8f8,0xffc5e4f8,0xffaed9fd,0xff87befa,0xff5996f1,0xff336fe3,0xff2054cf,0xfe6279c5,0xb85e71b0,0x12000000,0x0,
1761 0x0,0x1d368be9,0xfeafd0fa,0xff91c2f8,0xffabd4f8,0xff98c9fa,0xff6fa8f4,0xff518beb,0xff7596db,0xffb2b6cf,0xffb4b4c6,0xa24c63a8,0xb000000,0x0, 1004 0x0,0x1d368be9,0xfeafd0fa,0xff91c2f8,0xffabd4f8,0xff98c9fa,0xff6fa8f4,0xff518beb,0xff7596db,0xffb2b6cf,0xffb4b4c6,0xa24c63a8,0xb000000,0x0,
1762 0x0,0x12684f0,0xc997bff1,0xff8bbef7,0xff94c9fe,0xff7eb6f6,0xff9dbdee,0xffcbd0e0,0xffcbcbd8,0xfa9ba4c4,0xa84a63a7,0x3f00154b,0x3000000,0x0, 1005 0x0,0x12684f0,0xc997bff1,0xff8bbef7,0xff94c9fe,0xff7eb6f6,0xff9dbdee,0xffcbd0e0,0xffcbcbd8,0xfa9ba4c4,0xa84a63a7,0x3f00154b,0x3000000,0x0,
1763 0x0,0x0,0x7c82aee7,0xff91c1f6,0xffbbdcfc,0xffe0e7f1,0xffe3e2e9,0xfcb9c1d7,0xb86178b6,0x4b092063,0x18000001,0x2000000,0x0,0x0, 1006 0x0,0x0,0x7c82aee7,0xff91c1f6,0xffbbdcfc,0xffe0e7f1,0xffe3e2e9,0xfcb9c1d7,0xb86178b6,0x4b092063,0x18000001,0x2000000,0x0,0x0,
1764 0x0,0x0,0x303176d6,0xfd9fc5f0,0xfffafafb,0xffdae0ec,0xc97c99cc,0x5813357b,0x1b000000,0x4000000,0x0,0x0,0x0,0x0, 1007 0x0,0x0,0x303176d6,0xfd9fc5f0,0xfffafafb,0xffdae0ec,0xc97c99cc,0x5813357b,0x1b000000,0x4000000,0x0,0x0,0x0,0x0,
1765 0x0,0x0,0x1186ce6,0xda82afe6,0xd59cbce4,0x6626559a,0x20000409,0x6000000,0x0,0x0,0x0,0x0,0x0,0x0, 1008 0x0,0x0,0x1186ce6,0xda82afe6,0xd59cbce4,0x6626559a,0x20000409,0x6000000,0x0,0x0,0x0,0x0,0x0,0x0,
1766 0x0,0x0,0x0,0x30297bdc,0x25030f1e,0x9000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0 1009 0x0,0x0,0x0,0x30297bdc,0x25030f1e,0x9000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0
1767}; 1010};
1768 1011
1769static const QRgb find_data[] = { 1012static const QRgb find_data[] = {
1770 0x0,0x16acaec0,0x89a5b4ce,0xe8a0bfdf,0xffa8cae7,0xf6a6c7e3,0xafaabed6,0x31aeb2c4,0x1aaaabc,0x0,0x20fefeff,0x5fbfcbd7,0xb36a849d,0x799eb1c3, 1013 0x0,0x16acaec0,0x89a5b4ce,0xe8a0bfdf,0xffa8cae7,0xf6a6c7e3,0xafaabed6,0x31aeb2c4,0x1aaaabc,0x0,0x20fefeff,0x5fbfcbd7,0xb36a849d,0x799eb1c3,
1771 0x169fa1b6,0xc395afd1,0xff96ccf2,0xffa8e0fa,0xfface4fb,0xffa9e1fb,0xffabe2fa,0xeaaacadf,0x44a3a8bc,0x0,0x23f2f5f8,0xa49db3c5,0xa987a0b5,0x9f748ca3, 1014 0x169fa1b6,0xc395afd1,0xff96ccf2,0xffa8e0fa,0xfface4fb,0xffa9e1fb,0xffabe2fa,0xeaaacadf,0x44a3a8bc,0x0,0x23f2f5f8,0xa49db3c5,0xa987a0b5,0x9f748ca3,
1772 0x898e9ebd,0xff93caf1,0xffb5ecfc,0xffccfafe,0xffbff1fd,0xffb8eefc,0xffb4ebfc,0xffbdf1fc,0xcda8c1d2,0x129393a9,0x708aa4ba,0xff728fa8,0xff53728f,0x9c6b849c, 1015 0x898e9ebd,0xff93caf1,0xffb5ecfc,0xffccfafe,0xffbff1fd,0xffb8eefc,0xffb4ebfc,0xffbdf1fc,0xcda8c1d2,0x129393a9,0x708aa4ba,0xff728fa8,0xff53728f,0x9c6b849c,
1773 0xe888a7cc,0xffa4ddfa,0xffc8f8fe,0xffe8ffff,0xffcdf5fe,0xffccf9fe,0xffcafcfe,0xffccfdff,0xfebce2e9,0x418e93a9,0x55839cb2,0xfb4f6e8b,0xfb3c5a79,0x8076899f, 1016 0xe888a7cc,0xffa4ddfa,0xffc8f8fe,0xffe8ffff,0xffcdf5fe,0xffccf9fe,0xffcafcfe,0xffccfdff,0xfebce2e9,0x418e93a9,0x55839cb2,0xfb4f6e8b,0xfb3c5a79,0x8076899f,
1774 0xff8eb0d2,0xffa8e1fb,0xffb6ebfc,0xffc8f3fd,0xffcaf9fe,0xffdbffff,0xffdaffff,0xffdcffff,0xffceeef1,0x648f97ad,0xcfefeff,0x4556718c,0x4948637f,0x18fefeff, 1017 0xff8eb0d2,0xffa8e1fb,0xffb6ebfc,0xffc8f3fd,0xffcaf9fe,0xffdbffff,0xffdaffff,0xffdcffff,0xffceeef1,0x648f97ad,0xcfefeff,0x4556718c,0x4948637f,0x18fefeff,
1775 0xf4809fc4,0xffa7e0fa,0xffb1e8fb,0xffc4f5fe,0xffd7feff,0xffdeffff,0xffe7ffff,0xffebffff,0xffcce0e7,0x4b7b809a,0x0,0x0,0x0,0x0, 1018 0xf4809fc4,0xffa7e0fa,0xffb1e8fb,0xffc4f5fe,0xffd7feff,0xffdeffff,0xffe7ffff,0xffebffff,0xffcce0e7,0x4b7b809a,0x0,0x0,0x0,0x0,
1776 0xa56a7da1,0xffa4dbf6,0xfface5fb,0xffc0f5fd,0xffd4ffff,0xffe2ffff,0xfff0ffff,0xfff7feff,0xe1aeb7c6,0x1a5d5d7e,0x0,0x0,0x0,0x0, 1019 0xa56a7da1,0xffa4dbf6,0xfface5fb,0xffc0f5fd,0xffd4ffff,0xffe2ffff,0xfff0ffff,0xfff7feff,0xe1aeb7c6,0x1a5d5d7e,0x0,0x0,0x0,0x0,
1777 0x25585a7e,0xe07c99ba,0xffb1e6f7,0xffc1f5fe,0xffd2ffff,0xffe0ffff,0xffecfefe,0xffc6ced8,0xe8898aa2,0x2d968c92,0x9c7862c,0x0,0x0,0x0, 1020 0x25585a7e,0xe07c99ba,0xffb1e6f7,0xffc1f5fe,0xffd2ffff,0xffe0ffff,0xffecfefe,0xffc6ced8,0xe8898aa2,0x2d968c92,0x9c7862c,0x0,0x0,0x0,
1778 0x0,0x30595c7f,0xb4768caa,0xf6a0c4d5,0xffb7dce4,0xfbb9d4dd,0xd99eabbc,0xb08789a1,0xdda7a5b2,0xe1c89f68,0xabcf8a23,0xfb57729,0x0,0x0, 1021 0x0,0x30595c7f,0xb4768caa,0xf6a0c4d5,0xffb7dce4,0xfbb9d4dd,0xd99eabbc,0xb08789a1,0xdda7a5b2,0xe1c89f68,0xabcf8a23,0xfb57729,0x0,0x0,
1779 0xdfefeff,0x49859eb4,0x238595ab,0x2a565779,0x47666c8a,0x345e5f80,0x13555578,0x47c7c97,0x92b48549,0xffefd28d,0xfeecb34d,0xacc37f21,0xfa16728,0x0, 1022 0xdfefeff,0x49859eb4,0x238595ab,0x2a565779,0x47666c8a,0x345e5f80,0x13555578,0x47c7c97,0x92b48549,0xffefd28d,0xfeecb34d,0xacc37f21,0xfa16728,0x0,
1780 0x40fafbfd,0x8e8197ac,0x729caebf,0xb0617c97,0x0,0x0,0x0,0x0,0x25a26a2b,0xd4cca153,0xfff8e19e,0xfeeab24e,0xafb77622,0xf8f5825, 1023 0x40fafbfd,0x8e8197ac,0x729caebf,0xb0617c97,0x0,0x0,0x0,0x0,0x25a26a2b,0xd4cca153,0xfff8e19e,0xfeeab24e,0xafb77622,0xf8f5825,
1781 0x9ca4b9ca,0xff7592ab,0xa57a93aa,0x7296a8b9,0x1c90a4b7,0x0,0x0,0x0,0x0,0x22865327,0xd4c29851,0xfff8df9b,0xffe9b351,0xb3a26825, 1024 0x9ca4b9ca,0xff7592ab,0xa57a93aa,0x7296a8b9,0x1c90a4b7,0x0,0x0,0x0,0x0,0x22865327,0xd4c29851,0xfff8df9b,0xffe9b351,0xb3a26825,
1782 0xff7592aa,0xff51708d,0xff405e7d,0x8e879db1,0x49516d88,0x0,0x0,0x0,0x0,0x0,0x257e4d29,0xd5bb9353,0xffe2c586,0xfd977964, 1025 0xff7592aa,0xff51708d,0xff405e7d,0x8e879db1,0x49516d88,0x0,0x0,0x0,0x0,0x0,0x257e4d29,0xd5bb9353,0xffe2c586,0xfd977964,
1783 0x917d94aa,0xff3d5c7a,0x9c5d758e,0x41f8f9fb,0x18fefeff,0x0,0x0,0x0,0x0,0x0,0x744426,0x267c4c29,0x8a87644d,0x6d726e86 1026 0x917d94aa,0xff3d5c7a,0x9c5d758e,0x41f8f9fb,0x18fefeff,0x0,0x0,0x0,0x0,0x0,0x744426,0x267c4c29,0x8a87644d,0x6d726e86
1784}; 1027};
1785 1028
1786static const QRgb finish_data[] = { 1029static const QRgb finish_data[] = {
1787 0x8e9f4fe,0x24aad2fe,0x289ac8fe,0x2386bbfe,0x117fb3fe,0x1bb9dafe,0x299ecbfe,0x2590c1fe,0x186ba6fe,0x15b96fe,0x0,0x0,0x0,0x0, 1030 0x8e9f4fe,0x24aad2fe,0x289ac8fe,0x2386bbfe,0x117fb3fe,0x1bb9dafe,0x299ecbfe,0x2590c1fe,0x186ba6fe,0x15b96fe,0x0,0x0,0x0,0x0,
1788 0x3680bcfe,0xe091c5fe,0xe7a9d2fe,0xe49fccfe,0xb96aa7fc,0xb96aacfc,0xe7abd4fe,0xe5a3cefe,0xd886bbfe,0x473277f1,0x5080e,0x0,0x0,0x0, 1031 0x3680bcfe,0xe091c5fe,0xe7a9d2fe,0xe49fccfe,0xb96aa7fc,0xb96aacfc,0xe7abd4fe,0xe5a3cefe,0xd886bbfe,0x473277f1,0x5080e,0x0,0x0,0x0,
1789 0x1691c1fd,0xbd6dabfc,0xffedf4fd,0xfffcfcfc,0xfde0edfc,0xdb4c8ef5,0xfac7dffc,0xfffcfcfc,0xfff7fafc,0xd781b0f7,0x1e1756dc,0x0,0x0,0x0, 1032 0x1691c1fd,0xbd6dabfc,0xffedf4fd,0xfffcfcfc,0xfde0edfc,0xdb4c8ef5,0xfac7dffc,0xfffcfcfc,0xfff7fafc,0xd781b0f7,0x1e1756dc,0x0,0x0,0x0,
1790 0x1fefefe,0x254a87f3,0xdf7db0fa,0xffeff5f8,0xfff2f6f7,0xfdb2d0f8,0xda3c7ef3,0xffdfedf8,0xfff2f6f7,0xffe5eff8,0xb04b87f0,0x40c3ab5,0x0,0x0, 1033 0x1fefefe,0x254a87f3,0xdf7db0fa,0xffeff5f8,0xfff2f6f7,0xfdb2d0f8,0xda3c7ef3,0xffdfedf8,0xfff2f6f7,0xffe5eff8,0xb04b87f0,0x40c3ab5,0x0,0x0,
1791 0x0,0x3fefefe,0x52286ff8,0xf1a0c4f4,0xffe6edf1,0xffe6edf1,0xee7caaf2,0xe35a92f4,0xffdfeaf1,0xffe6edf1,0xfcbbd5f2,0x7c2766ee,0x20a2fab,0x0, 1034 0x0,0x3fefefe,0x52286ff8,0xf1a0c4f4,0xffe6edf1,0xffe6edf1,0xee7caaf2,0xe35a92f4,0xffdfeaf1,0xffe6edf1,0xfcbbd5f2,0x7c2766ee,0x20a2fab,0x0,
1792 0x0,0xfefefe,0x6f5f5f5,0x8d3475f6,0xffb8d1ec,0xffd7e4e9,0xffd0e0ea,0xdf427ded,0xf481abef,0xffd7e3e9,0xffd6e3e9,0xee84afed,0x3d124cde,0x0, 1035 0x0,0xfefefe,0x6f5f5f5,0x8d3475f6,0xffb8d1ec,0xffd7e4e9,0xffd0e0ea,0xdf427ded,0xf481abef,0xffd7e3e9,0xffd6e3e9,0xee84afed,0x3d124cde,0x0,
1793 0x0,0x0,0xfefefe,0x2aa8c7fb,0xde5e9ff2,0xffc7d8e0,0xffc8d8df,0xfda4c2e3,0xd3266ded,0xffaecbe4,0xffc8d8df,0xffc2d5e0,0xbe467ce4,0x9072089, 1036 0x0,0x0,0xfefefe,0x2aa8c7fb,0xde5e9ff2,0xffc7d8e0,0xffc8d8df,0xfda4c2e3,0xd3266ded,0xffaecbe4,0xffc8d8df,0xffc2d5e0,0xbe467ce4,0x9072089,
1794 0x0,0x0,0x7fefefe,0x7785bdfb,0xff8bb7e2,0xffb8cdd7,0xffb8cdd7,0xf35988df,0xee5288de,0xffb4cbd7,0xffb8cdd7,0xfd8eb1dd,0x821940ac,0x4000000, 1037 0x0,0x0,0x7fefefe,0x7785bdfb,0xff8bb7e2,0xffb8cdd7,0xffb8cdd7,0xf35988df,0xee5288de,0xffb4cbd7,0xffb8cdd7,0xfd8eb1dd,0x821940ac,0x4000000,
1795 0x0,0x3fefefe,0x489bcafe,0xed6ba7e6,0xffa8c2cd,0xffa8c2cd,0xff749fda,0xde2a5fd1,0xff98bad2,0xffa8c2cd,0xff99b9d1,0xb92856c6,0x18030c3b,0x0, 1038 0x0,0x3fefefe,0x489bcafe,0xed6ba7e6,0xffa8c2cd,0xffa8c2cd,0xff749fda,0xde2a5fd1,0xff98bad2,0xffa8c2cd,0xff99b9d1,0xb92856c6,0x18030c3b,0x0,
1796 0xfefefe,0x28b9d9fe,0xc65da1ed,0xfe94b4c9,0xff9bb7c6,0xff87a9cc,0xe21e50d8,0xfb79a4d0,0xff9bb7c6,0xff9bb7c6,0xe7406cd2,0x36041870,0x1000000,0x0, 1039 0xfefefe,0x28b9d9fe,0xc65da1ed,0xfe94b4c9,0xff9bb7c6,0xff87a9cc,0xe21e50d8,0xfb79a4d0,0xff9bb7c6,0xff9bb7c6,0xe7406cd2,0x36041870,0x1000000,0x0,
1797 0xfeaf2fe,0x9a5b9ff4,0xfe7aa6c9,0xff90afbe,0xff88abc0,0xea2b5bd2,0xf55083d1,0xff90afbe,0xff90afbe,0xfc5383d1,0x5a08207d,0x3000000,0x0,0x0, 1040 0xfeaf2fe,0x9a5b9ff4,0xfe7aa6c9,0xff90afbe,0xff88abc0,0xea2b5bd2,0xf55083d1,0xff90afbe,0xff90afbe,0xfc5383d1,0x5a08207d,0x3000000,0x0,0x0,
1798 0x384884fb,0xf64279dc,0xff7095c4,0xff7095c5,0xeb4670c7,0xde1a45d3,0xff6a91c7,0xff7095c4,0xfb628ac7,0x941335ad,0xa01051b,0x0,0x0,0x0, 1041 0x384884fb,0xf64279dc,0xff7095c4,0xff7095c5,0xeb4670c7,0xde1a45d3,0xff6a91c7,0xff7095c4,0xfb628ac7,0x941335ad,0xa01051b,0x0,0x0,0x0,
1799 0x112e5ff8,0x58072ed7,0x630629b1,0x640629af,0x42051d91,0x44062ad1,0x61062ab9,0x640629af,0x590624a6,0x14020a44,0x0,0x0,0x0,0x0, 1042 0x112e5ff8,0x58072ed7,0x630629b1,0x640629af,0x42051d91,0x44062ad1,0x61062ab9,0x640629af,0x590624a6,0x14020a44,0x0,0x0,0x0,0x0,
1800 0x0,0x0,0x1000000,0x1000000,0x0,0x0,0x1000000,0x1000000,0x1000000,0x0,0x0,0x0,0x0,0x0 1043 0x0,0x0,0x1000000,0x1000000,0x0,0x0,0x1000000,0x1000000,0x1000000,0x0,0x0,0x0,0x0,0x0
1801}; 1044};
1802 1045
1803static const QRgb folder_data[] = {
1804 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x121760ca,0xa1459c2,0x0,0x0,0x0,
1805 0x0,0x0,0x0,0x0,0xbadb7db,0x11abb7de,0x0,0x262376d8,0x904f8cda,0xd15e95df,0x791656ba,0x0,0x0,0x0,
1806 0x0,0x0,0x0,0xea4acc6,0xc4c3c8db,0xf3d6dae9,0xa3adbadc,0xe66ba4e3,0xb65b9fe8,0xac0d6fe2,0xc41055be,0xb052564,0x0,0x0,
1807 0x0,0x0,0xcadb3c5,0xbfc6cad9,0xfff1f1f6,0xffe7e9f3,0xffa4c3e9,0xfe8cbaee,0xee65a5f0,0xcd2578e2,0xcd1056b8,0x570539a1,0x0,0x0,
1808 0x0,0xab6b9c5,0xbac9ccd7,0xffedf1f7,0xffa9ccee,0xff98c4ed,0xffb2d6f7,0xff91c3f7,0xff77b2f8,0xff5996e4,0xe72462b8,0xab02399f,0x2000c27,0x0,
1809 0x9d4d7dc,0xb2d1d2d9,0xffcae1f5,0xffa7cff3,0xffddf2fa,0xffc7e7fa,0xffaad4f9,0xff8cc0f6,0xff6aa2e9,0xff3c78ca,0xd0084ba0,0xd2003c95,0x2e002a8e,0x0,
1810 0xa6d7d7d9,0xfffbfbfb,0xffe8f2fb,0xffb8d9f5,0xffe0f5fb,0xffc3e5fa,0xffa5d0f8,0xff7bade9,0xff568dd5,0xff2c70c3,0xf81757aa,0xd2154b95,0x911f45a4,0x0,
1811 0x4ebdbec1,0xc7d3d5da,0xfeececf0,0xffa2caf0,0xffdff4fc,0xffbfe2fa,0xff95c2f0,0xff6e9fdf,0xff3c7bc9,0xff3b7ac4,0xff7f9ec9,0xffb6b8cc,0xed6c7cb8,0x13002275,
1812 0x0,0x9869b2f0,0xfdaecde6,0xff93b4d9,0xffbbdcf4,0xffb7dcf8,0xff88b5e8,0xff6093d3,0xff99b8de,0xffd1d4e1,0xffcbcbd8,0xffbfbfd0,0xff8b93ba,0x5d032d97,
1813 0x0,0x4a439be9,0xf3a5d3f6,0xffc1e6fc,0xff8bbae8,0xff9bc4ec,0xffbdd3ee,0xffeff2f7,0xffe9e9ef,0xffdddde6,0xffbbbdd1,0xed5a6fb2,0x860e3292,0x21000d2a,
1814 0x0,0x0,0x3d3d9aec,0xea9ecdf4,0xff89bceb,0xffebf2fa,0xffffffff,0xfffbfbfc,0xffebecf2,0xf68595c9,0x9b1e409e,0x30001547,0xa000000,0x0,
1815 0x0,0x0,0x0,0x2c2c84dd,0xe381b2e6,0xffa2bee6,0xffffffff,0xfcafc0e5,0xaf3b5db2,0x3e001a5d,0xe000000,0x0,0x0,0x0,
1816 0x0,0x0,0x0,0x0,0x221c68ca,0xd33f77cc,0xc2537cc6,0x4e052c77,0x12000103,0x0,0x0,0x0,0x0,0x0,
1817 0x0,0x0,0x0,0x0,0x0,0xa0f4394,0x14010409,0x2000000,0x0,0x0,0x0,0x0,0x0,0x0
1818};
1819
1820static const QRgb folder_open_data[] = { 1046static const QRgb folder_open_data[] = {
1821 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3bc4cce8,0x49c1c9e7,0x0,0x0,0x0,0x0,0x0, 1047 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3bc4cce8,0x49c1c9e7,0x0,0x0,0x0,0x0,0x0,
1822 0x0,0x0,0x0,0x0,0x0,0x0,0x36c8cfe7,0xeee9eaf3,0xdedcdfee,0xc5e6e9b,0x0,0x0,0x0,0x0, 1048 0x0,0x0,0x0,0x0,0x0,0x0,0x36c8cfe7,0xeee9eaf3,0xdedcdfee,0xc5e6e9b,0x0,0x0,0x0,0x0,
1823 0x0,0x0,0x0,0x0,0x0,0x36d1d6e8,0xededeef5,0xffececf4,0xffeaeaf3,0xae879ed4,0x3000000,0x0,0x0,0x0, 1049 0x0,0x0,0x0,0x0,0x0,0x36d1d6e8,0xededeef5,0xffececf4,0xffeaeaf3,0xae879ed4,0x3000000,0x0,0x0,0x0,
1824 0x23fabff,0x284da4f0,0x7d8fc1f2,0xcfa2caf6,0x7e90b7e7,0xecf1f2f7,0xfff2f2f8,0xffececf4,0xffe6e6f0,0xf6cfd4ea,0x6a4b70be,0x9b5880d6,0x3f0836a7,0x0, 1050 0x23fabff,0x284da4f0,0x7d8fc1f2,0xcfa2caf6,0x7e90b7e7,0xecf1f2f7,0xfff2f2f8,0xffececf4,0xffe6e6f0,0xf6cfd4ea,0x6a4b70be,0x9b5880d6,0x3f0836a7,0x0,
1825 0x4a62b1f4,0xfed1e6fc,0xffcfe4ff,0xffc3daf8,0xffeff2f7,0xfff8f8fb,0xfff3f2f7,0xffc2d1eb,0xff9fbce8,0xff6fa2ea,0xdc5197f1,0xc40045c7,0x37001b53,0x0, 1051 0x4a62b1f4,0xfed1e6fc,0xffcfe4ff,0xffc3daf8,0xffeff2f7,0xfff8f8fb,0xfff3f2f7,0xffc2d1eb,0xff9fbce8,0xff6fa2ea,0xdc5197f1,0xc40045c7,0x37001b53,0x0,
1826 0x13329cf5,0xf5c3dffb,0xffcae1ff,0xffe0e6ee,0xfffefefe,0xfff8f8fb,0xffc1d5ee,0xff9bc6f7,0xff65a7f8,0xff5a9ff7,0xf53e7de3,0xd8002db1,0x21000c24,0x0, 1052 0x13329cf5,0xf5c3dffb,0xffcae1ff,0xffe0e6ee,0xfffefefe,0xfff8f8fb,0xffc1d5ee,0xff9bc6f7,0xff65a7f8,0xff5a9ff7,0xf53e7de3,0xd8002db1,0x21000c24,0x0,
1827 0x0,0xbbabd1f7,0xffc4deff,0xffbacdea,0xffcee3f6,0xffb2d4f3,0xff9fcbf7,0xff75b3fa,0xff589cf6,0xff3e78e2,0xf70c39be,0xbe002cae,0x19000104,0x0, 1053 0x0,0xbbabd1f7,0xffc4deff,0xffbacdea,0xffcee3f6,0xffb2d4f3,0xff9fcbf7,0xff75b3fa,0xff589cf6,0xff3e78e2,0xf70c39be,0xbe002cae,0x19000104,0x0,
1828 0x0,0x697cb3ec,0xffc1dcff,0xff9ec8f8,0xffc5e4f8,0xffaed9fd,0xff87befa,0xff5996f1,0xff336fe3,0xff2054cf,0xfe6279c5,0xb85e71b0,0x12000000,0x0, 1054 0x0,0x697cb3ec,0xffc1dcff,0xff9ec8f8,0xffc5e4f8,0xffaed9fd,0xff87befa,0xff5996f1,0xff336fe3,0xff2054cf,0xfe6279c5,0xb85e71b0,0x12000000,0x0,
1829 0x0,0x1d368be9,0xfeafd0fa,0xff91c2f8,0xffabd4f8,0xff98c9fa,0xff6fa8f4,0xff518beb,0xff7596db,0xffb2b6cf,0xffb4b4c6,0xa24c63a8,0xb000000,0x0, 1055 0x0,0x1d368be9,0xfeafd0fa,0xff91c2f8,0xffabd4f8,0xff98c9fa,0xff6fa8f4,0xff518beb,0xff7596db,0xffb2b6cf,0xffb4b4c6,0xa24c63a8,0xb000000,0x0,
1830 0x0,0x12684f0,0xc997bff1,0xff8bbef7,0xff94c9fe,0xff7eb6f6,0xff9dbdee,0xffcbd0e0,0xffcbcbd8,0xfa9ba4c4,0xa84a63a7,0x3f00154b,0x3000000,0x0, 1056 0x0,0x12684f0,0xc997bff1,0xff8bbef7,0xff94c9fe,0xff7eb6f6,0xff9dbdee,0xffcbd0e0,0xffcbcbd8,0xfa9ba4c4,0xa84a63a7,0x3f00154b,0x3000000,0x0,
1831 0x0,0x0,0x7c82aee7,0xff91c1f6,0xffbbdcfc,0xffe0e7f1,0xffe3e2e9,0xfcb9c1d7,0xb86178b6,0x4b092063,0x18000001,0x2000000,0x0,0x0, 1057 0x0,0x0,0x7c82aee7,0xff91c1f6,0xffbbdcfc,0xffe0e7f1,0xffe3e2e9,0xfcb9c1d7,0xb86178b6,0x4b092063,0x18000001,0x2000000,0x0,0x0,
1832 0x0,0x0,0x303176d6,0xfd9fc5f0,0xfffafafb,0xffdae0ec,0xc97c99cc,0x5813357b,0x1b000000,0x4000000,0x0,0x0,0x0,0x0, 1058 0x0,0x0,0x303176d6,0xfd9fc5f0,0xfffafafb,0xffdae0ec,0xc97c99cc,0x5813357b,0x1b000000,0x4000000,0x0,0x0,0x0,0x0,
1833 0x0,0x0,0x1186ce6,0xda82afe6,0xd59cbce4,0x6626559a,0x20000409,0x6000000,0x0,0x0,0x0,0x0,0x0,0x0, 1059 0x0,0x0,0x1186ce6,0xda82afe6,0xd59cbce4,0x6626559a,0x20000409,0x6000000,0x0,0x0,0x0,0x0,0x0,0x0,
1834 0x0,0x0,0x0,0x30297bdc,0x25030f1e,0x9000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0 1060 0x0,0x0,0x0,0x30297bdc,0x25030f1e,0x9000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0
1835}; 1061};
1836 1062
1063static const QRgb folder_data[] = {
1064 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x121760ca,0xa1459c2,0x0,0x0,0x0,
1065 0x0,0x0,0x0,0x0,0xbadb7db,0x11abb7de,0x0,0x262376d8,0x904f8cda,0xd15e95df,0x791656ba,0x0,0x0,0x0,
1066 0x0,0x0,0x0,0xea4acc6,0xc4c3c8db,0xf3d6dae9,0xa3adbadc,0xe66ba4e3,0xb65b9fe8,0xac0d6fe2,0xc41055be,0xb052564,0x0,0x0,
1067 0x0,0x0,0xcadb3c5,0xbfc6cad9,0xfff1f1f6,0xffe7e9f3,0xffa4c3e9,0xfe8cbaee,0xee65a5f0,0xcd2578e2,0xcd1056b8,0x570539a1,0x0,0x0,
1068 0x0,0xab6b9c5,0xbac9ccd7,0xffedf1f7,0xffa9ccee,0xff98c4ed,0xffb2d6f7,0xff91c3f7,0xff77b2f8,0xff5996e4,0xe72462b8,0xab02399f,0x2000c27,0x0,
1069 0x9d4d7dc,0xb2d1d2d9,0xffcae1f5,0xffa7cff3,0xffddf2fa,0xffc7e7fa,0xffaad4f9,0xff8cc0f6,0xff6aa2e9,0xff3c78ca,0xd0084ba0,0xd2003c95,0x2e002a8e,0x0,
1070 0xa6d7d7d9,0xfffbfbfb,0xffe8f2fb,0xffb8d9f5,0xffe0f5fb,0xffc3e5fa,0xffa5d0f8,0xff7bade9,0xff568dd5,0xff2c70c3,0xf81757aa,0xd2154b95,0x911f45a4,0x0,
1071 0x4ebdbec1,0xc7d3d5da,0xfeececf0,0xffa2caf0,0xffdff4fc,0xffbfe2fa,0xff95c2f0,0xff6e9fdf,0xff3c7bc9,0xff3b7ac4,0xff7f9ec9,0xffb6b8cc,0xed6c7cb8,0x13002275,
1072 0x0,0x9869b2f0,0xfdaecde6,0xff93b4d9,0xffbbdcf4,0xffb7dcf8,0xff88b5e8,0xff6093d3,0xff99b8de,0xffd1d4e1,0xffcbcbd8,0xffbfbfd0,0xff8b93ba,0x5d032d97,
1073 0x0,0x4a439be9,0xf3a5d3f6,0xffc1e6fc,0xff8bbae8,0xff9bc4ec,0xffbdd3ee,0xffeff2f7,0xffe9e9ef,0xffdddde6,0xffbbbdd1,0xed5a6fb2,0x860e3292,0x21000d2a,
1074 0x0,0x0,0x3d3d9aec,0xea9ecdf4,0xff89bceb,0xffebf2fa,0xffffffff,0xfffbfbfc,0xffebecf2,0xf68595c9,0x9b1e409e,0x30001547,0xa000000,0x0,
1075 0x0,0x0,0x0,0x2c2c84dd,0xe381b2e6,0xffa2bee6,0xffffffff,0xfcafc0e5,0xaf3b5db2,0x3e001a5d,0xe000000,0x0,0x0,0x0,
1076 0x0,0x0,0x0,0x0,0x221c68ca,0xd33f77cc,0xc2537cc6,0x4e052c77,0x12000103,0x0,0x0,0x0,0x0,0x0,
1077 0x0,0x0,0x0,0x0,0x0,0xa0f4394,0x14010409,0x2000000,0x0,0x0,0x0,0x0,0x0,0x0
1078};
1079
1837static const QRgb font_data[] = { 1080static const QRgb font_data[] = {
1838 0x0,0x0,0x0,0x0,0x0,0x0,0x4d171717,0x510f0f0f,0xa000000,0x0,0x0,0x0,0x0,0x0, 1081 0x0,0x0,0x0,0x0,0x0,0x0,0x4d171717,0x510f0f0f,0xa000000,0x0,0x0,0x0,0x0,0x0,
1839 0x0,0x0,0x0,0x0,0x0,0x37000000,0xf5737373,0xffa0a0a1,0xc8464647,0x550c0c0c,0x4000000,0x0,0x0,0x0, 1082 0x0,0x0,0x0,0x0,0x0,0x37000000,0xf5737373,0xffa0a0a1,0xc8464647,0x550c0c0c,0x4000000,0x0,0x0,0x0,
1840 0x0,0x0,0x24000000,0x30000000,0x0,0x50000000,0xab1e1e1f,0xff717172,0xffcccccd,0xffa5a5a5,0xcb3e3e3e,0x4e000000,0x0,0x0, 1083 0x0,0x0,0x24000000,0x30000000,0x0,0x50000000,0xab1e1e1f,0xff717172,0xffcccccd,0xffa5a5a5,0xcb3e3e3e,0x4e000000,0x0,0x0,
1841 0x0,0x20000000,0xe0626262,0xf7818182,0xa9272727,0x31070707,0x4000000,0x96707073,0xff141414,0xff6e6e6f,0xffd1d1d2,0xfc858586,0x3c000000,0x0, 1084 0x0,0x20000000,0xe0626262,0xf7818182,0xa9272727,0x31070707,0x4000000,0x96707073,0xff141414,0xff6e6e6f,0xffd1d1d2,0xfc858586,0x3c000000,0x0,
1842 0x0,0x40000000,0xd8972c2c,0xfcc89798,0xffd0d0d1,0xff7f7f7f,0xab2e2e2f,0xa458585a,0xff000000,0xff2d2d2d,0xff565656,0xf6919191,0x34000000,0x0, 1085 0x0,0x40000000,0xd8972c2c,0xfcc89798,0xffd0d0d1,0xff7f7f7f,0xab2e2e2f,0xa458585a,0xff000000,0xff2d2d2d,0xff565656,0xf6919191,0x34000000,0x0,
1843 0x0,0x10000000,0xc000000,0x9bc8585b,0xffd72d2d,0xffca9394,0xffcfcfd0,0xff6d6d6d,0xff000000,0xff484848,0xfa656565,0x5e313131,0x0,0x0, 1086 0x0,0x10000000,0xc000000,0x9bc8585b,0xffd72d2d,0xffca9394,0xffcfcfd0,0xff6d6d6d,0xff000000,0xff484848,0xfa656565,0x5e313131,0x0,0x0,
1844 0x0,0x0,0x0,0x80ac8c90,0xffff0000,0xffd81e1e,0xff975858,0xffababab,0xff000000,0xff484848,0xef666666,0x0,0x0,0x0, 1087 0x0,0x0,0x0,0x80ac8c90,0xffff0000,0xffd81e1e,0xff975858,0xffababab,0xff000000,0xff484848,0xef666666,0x0,0x0,0x0,
1845 0x0,0x0,0x0,0x80ac8c90,0xffff0000,0xffd03c3c,0xff6c6c6c,0xff252525,0xff000000,0xff484848,0xef666666,0x0,0x0,0x0, 1088 0x0,0x0,0x0,0x80ac8c90,0xffff0000,0xffd03c3c,0xff6c6c6c,0xff252525,0xff000000,0xff484848,0xef666666,0x0,0x0,0x0,
1846 0x0,0x0,0x0,0x7fac8c90,0xffff0000,0xffd03c3c,0xff6c6c6c,0xff000000,0xff000000,0xff484848,0xef666666,0x0,0x0,0x0, 1089 0x0,0x0,0x0,0x7fac8c90,0xffff0000,0xffd03c3c,0xff6c6c6c,0xff000000,0xff000000,0xff484848,0xef666666,0x0,0x0,0x0,
1847 0x0,0x0,0x0,0x7fac8c90,0xffff0000,0xffd03c3c,0xff6c6c6c,0xd5000000,0xff000000,0xff484848,0xf58f8f8f,0x24000000,0x0,0x0, 1090 0x0,0x0,0x0,0x7fac8c90,0xffff0000,0xffd03c3c,0xff6c6c6c,0xd5000000,0xff000000,0xff484848,0xf58f8f8f,0x24000000,0x0,0x0,
1848 0x0,0x0,0x0,0x86b27c80,0xffff0000,0xffd03c3c,0xff6c6c6c,0x9000000,0x5d000000,0xda050505,0xfd8e8e8e,0x8a3a3a3a,0x0,0x0, 1091 0x0,0x0,0x0,0x86b27c80,0xffff0000,0xffd03c3c,0xff6c6c6c,0x9000000,0x5d000000,0xda050505,0xfd8e8e8e,0x8a3a3a3a,0x0,0x0,
1849 0x0,0x0,0x2ac00000,0xe1dd0000,0xfffb0000,0xffd03c3c,0xff818181,0x15c00000,0x0,0x0,0x54000000,0x0,0x0,0x0, 1092 0x0,0x0,0x2ac00000,0xe1dd0000,0xfffb0000,0xffd03c3c,0xff818181,0x15c00000,0x0,0x0,0x54000000,0x0,0x0,0x0,
1850 0x0,0x0,0x0,0x20c00000,0x85d30000,0xebdb1010,0xffdfa7a7,0xa0c03a3a,0x0,0x0,0x0,0x0,0x0,0x0, 1093 0x0,0x0,0x0,0x20c00000,0x85d30000,0xebdb1010,0xffdfa7a7,0xa0c03a3a,0x0,0x0,0x0,0x0,0x0,0x0,
1851 0x0,0x0,0x0,0x0,0x0,0x18c00000,0x81c71515,0xec00000,0x0,0x0,0x0,0x0,0x0,0x0 1094 0x0,0x0,0x0,0x0,0x0,0x18c00000,0x81c71515,0xec00000,0x0,0x0,0x0,0x0,0x0,0x0
1852}; 1095};
1853 1096
1854static const QRgb forward_data[] = {
1855 0x0,0x0,0x1fefefe,0x5fefefe,0x5fefefe,0x5fefefe,0x2fefefe,0xfefefe,0x0,0x0,0x0,0x0,0x0,0x0,
1856 0x0,0x0,0x1ca8d1fe,0x8f86c0fe,0x9a81bcfe,0x9776b5fe,0x8058a1fe,0x101b64f1,0x0,0x0,0x0,0x0,0x0,0x0,
1857 0x0,0x0,0x1d9bcbfe,0xe07eb8fd,0xffeaf4fc,0xffeaf4fc,0xffe0eefc,0xb25494f7,0x101453de,0x0,0x0,0x0,0x0,0x0,
1858 0x0,0x0,0x3fefefe,0x37367cf3,0xe588b7f9,0xfff0f5f8,0xfff2f6f7,0xfed6e6f8,0xa84585f7,0xc1251e4,0x0,0x0,0x0,0x0,
1859 0x0,0x0,0x0,0x2f2f2f2,0x432a6aeb,0xed94bcf4,0xffe4ecf1,0xffe6edf1,0xffb8d3f3,0x813875e9,0x30d3abf,0x0,0x0,0x0,
1860 0x0,0x0,0x0,0xfefefe,0x67fa2f5,0x742969f7,0xf99bbeef,0xffd7e4e9,0xffd7e4e9,0xf69bbfeb,0x621e5cea,0x0,0x0,0x0,
1861 0x0,0x0,0x0,0x0,0xfefefe,0xeb6c8f8,0x9c478af7,0xffafcde4,0xffc8d8df,0xffc7d8df,0xf179a5e8,0x350a3ade,0x0,0x0,
1862 0x0,0x0,0x0,0x0,0x3fefefe,0x449ac9fe,0xe169a8ef,0xffb6ccd7,0xffb8cdd7,0xffb0c8d8,0xd33d6cd2,0x1f05114c,0x0,0x0,
1863 0x0,0x0,0x0,0x1fefefe,0x2eb7dafe,0xcf60a3ef,0xff9dbdd1,0xffa8c2cd,0xffa2bfcf,0xdc4876c6,0x37061961,0x2000000,0x0,0x0,
1864 0x0,0x0,0xfefefe,0x1fe2effe,0xb064a5f1,0xfc8bb0cd,0xff9bb7c6,0xff99b6c7,0xf34e7cd5,0x580a2482,0x4010204,0x0,0x0,0x0,
1865 0x0,0x0,0xfeef6fe,0xa54c93f5,0xfd7aa5ca,0xff90b0be,0xff90afbe,0xf65781cd,0x6d09259c,0x6010411,0x0,0x0,0x0,0x0,
1866 0x0,0x0,0x265188fe,0xe02b69de,0xf0477ac8,0xf04679c7,0xec4273c8,0x7606239e,0x8000000,0x0,0x0,0x0,0x0,0x0,
1867 0x0,0x0,0x2bfdffe,0x230420d0,0x3203189f,0x3203179c,0x2d031480,0x8000000,0x0,0x0,0x0,0x0,0x0,0x0,
1868 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0
1869};
1870
1871static const QRgb forward_inactive_data[] = { 1097static const QRgb forward_inactive_data[] = {
1872 0x0,0x0,0x1f1f1f1,0x5f1f1f1,0x5f1f1f1,0x5f1f1f1,0x2f1f1f1,0xf1f1f1,0x0,0x0,0x0,0x0,0x0,0x0, 1098 0x0,0x0,0x1f1f1f1,0x5f1f1f1,0x5f1f1f1,0x5f1f1f1,0x2f1f1f1,0xf1f1f1,0x0,0x0,0x0,0x0,0x0,0x0,
1873 0x0,0x0,0x1c94aff1,0x8f83a3f1,0x9a80a0f1,0x977b9cf1,0x806c90f1,0x103f72d1,0x0,0x0,0x0,0x0,0x0,0x0, 1099 0x0,0x0,0x1c94aff1,0x8f83a3f1,0x9a80a0f1,0x977b9cf1,0x806c90f1,0x103f72d1,0x0,0x0,0x0,0x0,0x0,0x0,
1874 0x0,0x0,0x1d8daaf1,0xe07f9dec,0xffc7d5e8,0xffc7d5e8,0xffbccce8,0xb26989db,0x103769ba,0x0,0x0,0x0,0x0,0x0, 1100 0x0,0x0,0x1d8daaf1,0xe07f9dec,0xffc7d5e8,0xffc7d5e8,0xffbccce8,0xb26989db,0x103769ba,0x0,0x0,0x0,0x0,0x0,
1875 0x0,0x0,0x3f1f1f1,0x37567ed4,0xe5839ddf,0xffcfd7dd,0xffd2d9db,0xfeb3c2dd,0xa86082db,0xc3468c0,0x0,0x0,0x0,0x0, 1101 0x0,0x0,0x3f1f1f1,0x37567ed4,0xe5839ddf,0xffcfd7dd,0xffd2d9db,0xfeb3c2dd,0xa86082db,0xc3468c0,0x0,0x0,0x0,0x0,
1876 0x0,0x0,0x0,0x2d2d2d2,0x434d75c8,0xed89a0d5,0xffc0cad1,0xffc2cbd1,0xff9db1d4,0x81587bc6,0x32d59a2,0x0,0x0,0x0, 1102 0x0,0x0,0x0,0x2d2d2d2,0x434d75c8,0xed89a0d5,0xffc0cad1,0xffc2cbd1,0xff9db1d4,0x81587bc6,0x32d59a2,0x0,0x0,0x0,
1877 0x0,0x0,0x0,0xf1f1f1,0x67f91d7,0x744c75db,0xf98da1ce,0xffb4c0c6,0xffb4c0c6,0xf68da2c8,0x62426ec7,0x0,0x0,0x0, 1103 0x0,0x0,0x0,0xf1f1f1,0x67f91d7,0x744c75db,0xf98da1ce,0xffb4c0c6,0xffb4c0c6,0xf68da2c8,0x62426ec7,0x0,0x0,0x0,
1878 0x0,0x0,0x0,0x0,0xf1f1f1,0xe9ca8dd,0x9c6284db,0xff98acc0,0xffa8b5bb,0xffa7b5bb,0xf17c92c5,0x352859ba,0x0,0x0, 1104 0x0,0x0,0x0,0x0,0xf1f1f1,0xe9ca8dd,0x9c6284db,0xff98acc0,0xffa8b5bb,0xffa7b5bb,0xf17c92c5,0x352859ba,0x0,0x0,
1879 0x0,0x0,0x0,0x0,0x3f1f1f1,0x448ca9f1,0xe17594ce,0xff9cabb4,0xff9dacb4,0xff99a8b5,0xd35b76b0,0x1f1d3365,0x0,0x0, 1105 0x0,0x0,0x0,0x0,0x3f1f1f1,0x448ca9f1,0xe17594ce,0xff9cabb4,0xff9dacb4,0xff99a8b5,0xd35b76b0,0x1f1d3365,0x0,0x0,
1880 0x0,0x0,0x0,0x1f1f1f1,0x2e9db7f1,0xcf7091ce,0xff8ea1af,0xff94a4ac,0xff91a2ad,0xdc627ba7,0x37203d71,0x2000000,0x0,0x0, 1106 0x0,0x0,0x0,0x1f1f1f1,0x2e9db7f1,0xcf7091ce,0xff8ea1af,0xff94a4ac,0xff91a2ad,0xdc627ba7,0x37203d71,0x2000000,0x0,0x0,
1881 0x0,0x0,0xf1f1f1,0x1fbecef1,0xb07292d1,0xfc8599ac,0xff8d9da7,0xff8c9ca7,0xf3667eb2,0x58284881,0x40e131a,0x0,0x0,0x0, 1107 0x0,0x0,0xf1f1f1,0x1fbecef1,0xb07292d1,0xfc8599ac,0xff8d9da7,0xff8c9ca7,0xf3667eb2,0x58284881,0x40e131a,0x0,0x0,0x0,
1882 0x0,0x0,0xfccd9f1,0xa56589d7,0xfd7d92aa,0xff8799a1,0xff8798a1,0xf66b80ac,0x6d26488d,0x60e1a33,0x0,0x0,0x0,0x0, 1108 0x0,0x0,0xfccd9f1,0xa56589d7,0xfd7d92aa,0xff8799a1,0xff8798a1,0xf66b80ac,0x6d26488d,0x60e1a33,0x0,0x0,0x0,0x0,
1883 0x0,0x0,0x266883f1,0xe04e75ba,0xf0627da8,0xf0617ca7,0xec5e7aa8,0x7620478e,0x8000000,0x0,0x0,0x0,0x0,0x0, 1109 0x0,0x0,0x266883f1,0xe04e75ba,0xf0627da8,0xf0617ca7,0xec5e7aa8,0x7620478e,0x8000000,0x0,0x0,0x0,0x0,0x0,
1884 0x0,0x0,0x2a2bbf1,0x231a44ae,0x32173b8f,0x32173a8d,0x2d173780,0x8000000,0x0,0x0,0x0,0x0,0x0,0x0, 1110 0x0,0x0,0x2a2bbf1,0x231a44ae,0x32173b8f,0x32173a8d,0x2d173780,0x8000000,0x0,0x0,0x0,0x0,0x0,0x0,
1885 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0 1111 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0
1886}; 1112};
1887 1113
1114static const QRgb forward_data[] = {
1115 0x0,0x0,0x1fefefe,0x5fefefe,0x5fefefe,0x5fefefe,0x2fefefe,0xfefefe,0x0,0x0,0x0,0x0,0x0,0x0,
1116 0x0,0x0,0x1ca8d1fe,0x8f86c0fe,0x9a81bcfe,0x9776b5fe,0x8058a1fe,0x101b64f1,0x0,0x0,0x0,0x0,0x0,0x0,
1117 0x0,0x0,0x1d9bcbfe,0xe07eb8fd,0xffeaf4fc,0xffeaf4fc,0xffe0eefc,0xb25494f7,0x101453de,0x0,0x0,0x0,0x0,0x0,
1118 0x0,0x0,0x3fefefe,0x37367cf3,0xe588b7f9,0xfff0f5f8,0xfff2f6f7,0xfed6e6f8,0xa84585f7,0xc1251e4,0x0,0x0,0x0,0x0,
1119 0x0,0x0,0x0,0x2f2f2f2,0x432a6aeb,0xed94bcf4,0xffe4ecf1,0xffe6edf1,0xffb8d3f3,0x813875e9,0x30d3abf,0x0,0x0,0x0,
1120 0x0,0x0,0x0,0xfefefe,0x67fa2f5,0x742969f7,0xf99bbeef,0xffd7e4e9,0xffd7e4e9,0xf69bbfeb,0x621e5cea,0x0,0x0,0x0,
1121 0x0,0x0,0x0,0x0,0xfefefe,0xeb6c8f8,0x9c478af7,0xffafcde4,0xffc8d8df,0xffc7d8df,0xf179a5e8,0x350a3ade,0x0,0x0,
1122 0x0,0x0,0x0,0x0,0x3fefefe,0x449ac9fe,0xe169a8ef,0xffb6ccd7,0xffb8cdd7,0xffb0c8d8,0xd33d6cd2,0x1f05114c,0x0,0x0,
1123 0x0,0x0,0x0,0x1fefefe,0x2eb7dafe,0xcf60a3ef,0xff9dbdd1,0xffa8c2cd,0xffa2bfcf,0xdc4876c6,0x37061961,0x2000000,0x0,0x0,
1124 0x0,0x0,0xfefefe,0x1fe2effe,0xb064a5f1,0xfc8bb0cd,0xff9bb7c6,0xff99b6c7,0xf34e7cd5,0x580a2482,0x4010204,0x0,0x0,0x0,
1125 0x0,0x0,0xfeef6fe,0xa54c93f5,0xfd7aa5ca,0xff90b0be,0xff90afbe,0xf65781cd,0x6d09259c,0x6010411,0x0,0x0,0x0,0x0,
1126 0x0,0x0,0x265188fe,0xe02b69de,0xf0477ac8,0xf04679c7,0xec4273c8,0x7606239e,0x8000000,0x0,0x0,0x0,0x0,0x0,
1127 0x0,0x0,0x2bfdffe,0x230420d0,0x3203189f,0x3203179c,0x2d031480,0x8000000,0x0,0x0,0x0,0x0,0x0,0x0,
1128 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0
1129};
1130
1888static const QRgb fullscreen_data[] = { 1131static const QRgb fullscreen_data[] = {
1889 0xe483addd,0xf18cb6e6,0xf181b1e6,0xf175abe6,0xf169a4e6,0xf15c9ee6,0xf1549ae6,0xf15297e6,0xf15298e6,0xf15298e6,0xf1559ae7,0xf14597e8,0xa315588d,0x17002741, 1132 0xe483addd,0xf18cb6e6,0xf181b1e6,0xf175abe6,0xf169a4e6,0xf15c9ee6,0xf1549ae6,0xf15297e6,0xf15298e6,0xf15298e6,0xf1559ae7,0xf14597e8,0xa315588d,0x17002741,
1890 0xf592b8e5,0xffafd5fc,0xff95c8fb,0xff77b8fa,0xff57a8fc,0xff389afd,0xff268efd,0xff2388fd,0xff2388fc,0xff2388fa,0xff238bfc,0xff1d8afb,0xc208518c,0x30001827, 1133 0xf592b8e5,0xffafd5fc,0xff95c8fb,0xff77b8fa,0xff57a8fc,0xff389afd,0xff268efd,0xff2388fd,0xff2388fc,0xff2388fa,0xff238bfc,0xff1d8afb,0xc208518c,0x30001827,
1891 0xf19fbfe5,0xffdbb8c9,0xffd191a6,0xffcba8bf,0xffc5d3ec,0xffbedcfa,0xffb7dafa,0xffb3d9f9,0xffb2c0e3,0xffb38db0,0xffb78cad,0xff8daada,0xc4255e8a,0x34001525, 1134 0xf19fbfe5,0xffdbb8c9,0xffd191a6,0xffcba8bf,0xffc5d3ec,0xffbedcfa,0xffb7dafa,0xffb3d9f9,0xffb2c0e3,0xffb38db0,0xffb78cad,0xff8daada,0xc4255e8a,0x34001525,
1892 0xf1a8c6e8,0xfff67678,0xffee1a1e,0xfff17579,0xfff2e6e7,0xfff0fbfe,0xffedf9fe,0xffeafbfd,0xffeaced2,0xfff1474c,0xfff8282b,0xffb48eaa,0xc42d6189,0x34001626, 1135 0xf1a8c6e8,0xfff67678,0xffee1a1e,0xfff17579,0xfff2e6e7,0xfff0fbfe,0xffedf9fe,0xffeafbfd,0xffeaced2,0xfff1474c,0xfff8282b,0xffb48eaa,0xc42d6189,0x34001626,
1893 0xf1a8c6e8,0xfff57e81,0xffee3a40,0xffee444b,0xffecafb3,0xffe8f3f8,0xffe5f7ff,0xffe2eff4,0xffe7848b,0xffec3238,0xffee474d,0xffae8fae,0xc42b5f88,0x34001626, 1136 0xf1a8c6e8,0xfff57e81,0xffee3a40,0xffee444b,0xffecafb3,0xffe8f3f8,0xffe5f7ff,0xffe2eff4,0xffe7848b,0xffec3238,0xffee474d,0xffae8fae,0xc42b5f88,0x34001626,
1894 0xf1a6c4e6,0xfff4d7da,0xffefbfc4,0xffec7981,0xffe9b2b7,0xffe5f3f9,0xffe1f5ff,0xffdeedf5,0xffe38d98,0xffe2828b,0xffddccd4,0xffa5c0e1,0xc42a5f88,0x34001525, 1137 0xf1a6c4e6,0xfff4d7da,0xffefbfc4,0xffec7981,0xffe9b2b7,0xffe5f3f9,0xffe1f5ff,0xffdeedf5,0xffe38d98,0xffe2828b,0xffddccd4,0xffa5c0e1,0xc42a5f88,0x34001525,
1895 0xf1a6c4e5,0xfff2fcfe,0xffebf9fc,0xffe8f0f3,0xffe5f3f8,0xffe1f4ff,0xffdef3ff,0xffdaf1fe,0xffd7ebf5,0xffd4eaf4,0xffd5f4fe,0xffa1d6f7,0xc42a6089,0x34001425, 1138 0xf1a6c4e5,0xfff2fcfe,0xffebf9fc,0xffe8f0f3,0xffe5f3f8,0xffe1f4ff,0xffdef3ff,0xffdaf1fe,0xffd7ebf5,0xffd4eaf4,0xffd5f4fe,0xffa1d6f7,0xc42a6089,0x34001425,
1896 0xf1a4c4e5,0xffeffcfe,0xffe8f8fc,0xffe5eff3,0xffe1f1f8,0xffdef3ff,0xffdaf1ff,0xffd6effe,0xffd3ebf5,0xffd0e9f4,0xffd1f2fe,0xff9ed5f6,0xc4296089,0x34001425, 1139 0xf1a4c4e5,0xffeffcfe,0xffe8f8fc,0xffe5eff3,0xffe1f1f8,0xffdef3ff,0xffdaf1ff,0xffd6effe,0xffd3ebf5,0xffd0e9f4,0xffd1f2fe,0xff9ed5f6,0xc4296089,0x34001425,
1897 0xf1a3c3e6,0xffedd6da,0xffe7bec4,0xffe87881,0xffe2b0b7,0xffdaf1f9,0xffd6f1ff,0xffd3eaf5,0xffde8b98,0xffdd818b,0xffd5c8d5,0xffa0bee1,0xc4295f88,0x34001525, 1140 0xf1a3c3e6,0xffedd6da,0xffe7bec4,0xffe87881,0xffe2b0b7,0xffdaf1f9,0xffd6f1ff,0xffd3eaf5,0xffde8b98,0xffdd818b,0xffd5c8d5,0xffa0bee1,0xc4295f88,0x34001525,
1898 0xf1a3c4e8,0xffee7c81,0xffec3940,0xffea424b,0xffe0adb3,0xffd7eff8,0xffd3f0ff,0xffd0e8f4,0xffdd818b,0xffea3138,0xffec454e,0xffa88cae,0xc4295e88,0x34001626, 1141 0xf1a3c4e8,0xffee7c81,0xffec3940,0xffea424b,0xffe0adb3,0xffd7eff8,0xffd3f0ff,0xffd0e8f4,0xffdd818b,0xffea3138,0xffec454e,0xffa88cae,0xc4295e88,0x34001626,
1899 0xf1a6c5e9,0xfff2757b,0xfff31c21,0xffea747b,0xffdde4e8,0xffd8f4ff,0xffd5f1ff,0xffd0f2fe,0xffd5c8d4,0xffec464e,0xfff7272d,0xffac8bac,0xc429608a,0x34001626, 1142 0xf1a6c5e9,0xfff2757b,0xfff31c21,0xffea747b,0xffdde4e8,0xffd8f4ff,0xffd5f1ff,0xffd0f2fe,0xffd5c8d4,0xffec464e,0xfff7272d,0xffac8bac,0xc429608a,0x34001626,
1900 0xfa80b7e7,0xffb2aac7,0xffb186a4,0xffad9ebd,0xffa7ccea,0xffa3d7f7,0xffa1d5f7,0xff9ed5f6,0xffa0bde1,0xffa88dae,0xffad8cac,0xff81aadb,0xc7205f8d,0x34001728, 1143 0xfa80b7e7,0xffb2aac7,0xffb186a4,0xffad9ebd,0xffa7ccea,0xffa3d7f7,0xffa1d5f7,0xff9ed5f6,0xffa0bde1,0xffa88dae,0xffad8cac,0xff81aadb,0xc7205f8d,0x34001728,
1901 0xa628618e,0xc12e628a,0xc42c6089,0xc42c5f88,0xc42b6088,0xc42a6089,0xc42a6089,0xc4296089,0xc4295f88,0xc4295e88,0xc42a608a,0xc421608d,0x9e083655,0x30000d16, 1144 0xa628618e,0xc12e628a,0xc42c6089,0xc42c5f88,0xc42b6088,0xc42a6089,0xc42a6089,0xc4296089,0xc4295f88,0xc4295e88,0xc42a608a,0xc421608d,0x9e083655,0x30000d16,
1902 0x14002a4a,0x30001728,0x34001626,0x34001626,0x34001525,0x34001425,0x34001425,0x34001425,0x34001525,0x34001626,0x34001626,0x34001727,0x30000d16,0x16000204 1145 0x14002a4a,0x30001728,0x34001626,0x34001626,0x34001525,0x34001425,0x34001425,0x34001425,0x34001525,0x34001626,0x34001626,0x34001727,0x30000d16,0x16000204
1903}; 1146};
1904 1147
1148static const QRgb Games_data[] = {
1149 0x0,0x0,0x0,0x186b7bdd,0xd77387d0,0x25101320,0x0,0x65060a2,0x3e4e5d9f,0x4d495794,0x3273052,0x0,0x0,0x0,
1150 0x0,0x0,0x0,0x2e6778cf,0xdc7386c8,0x4c434f89,0x635a6ab2,0xd37989c5,0xfdaabbe0,0xfdacbbdc,0x93505c93,0x51d2348,0x0,0x0,
1151 0x0,0x0,0x0,0x286472d0,0xfa7184d4,0xff7a8cce,0xffaec4ee,0xff96a5ff,0xffc0d4fd,0xffb7dfd9,0xffbac6de,0x80424c80,0x1050509,0x0,
1152 0x0,0x6674d6,0x306472ce,0xc47485d6,0xffa6bdef,0xffcbe5ff,0xffcdd7ed,0xffb2b6f0,0xffb5dade,0xff79c382,0xfff0fbfd,0xfba3acc9,0x452e3668,0x0,
1153 0x56876dd,0x7c6b7adc,0xf58399e1,0xff9ab1d2,0xffb9d3f2,0xffcbe5ff,0xffed9172,0xffe0c3b3,0xfff1cf6b,0xffebf6f9,0xfff4fcff,0xfff7fbfd,0xd1656d97,0x90f1228,
1154 0x9a6e80e5,0xff8ca7df,0xff9a9ea4,0xff979797,0xff75797f,0xffcde5fd,0xffd6ebff,0xffddeefa,0xffe0eceb,0xffd9edff,0xfff5fdff,0xfffcffff,0xffc5c9db,0x5c2d3667,
1155 0xbf738deb,0xff899fbc,0xff959595,0xff717171,0xff7d8083,0xffd0e7fe,0xffd2e8ff,0xffbcdbff,0xffa0c0f3,0xf66f84ba,0xfeacbadb,0xfff6fbff,0xffedf6ff,0xc0515e8f,
1156 0xa86c7fe0,0xff9fc1ed,0xff959ea9,0xff98a1ab,0xffbdd5ef,0xffabd0ff,0xff96bef9,0xfa738fcc,0xb0404d80,0x3d191e3a,0x81384378,0xfa7f93c3,0xff9db5e1,0xb93e497a,
1157 0x7c6574d3,0xff9ec4fe,0xffbcdbff,0xffc4dfff,0xff92baf8,0xf96c88cf,0xbb475690,0x50242b4c,0xb000000,0x0,0x1000000,0x45272e5c,0x76272e5c,0x280f1225,
1158 0x4a616fc8,0xff8eaff4,0xffbddcff,0xffc6e0ff,0xf77992d4,0x5122294a,0xd020205,0x1000000,0x0,0x0,0x0,0x0,0x1000000,0x0,
1159 0x125767b0,0xfb7997e6,0xffbfdcff,0xffc5e0ff,0xf06e89cb,0x1705060c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
1160 0x14d5d9b,0xc56980d3,0xffb4d5ff,0xffb3d5ff,0xe05f77bc,0xf000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
1161 0x0,0x675969b7,0xff7ca1ed,0xff7ba4ee,0xba4c5c99,0x7000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
1162 0x0,0x6303c6d,0x72495694,0x813e4a7f,0x2715192e,0x1000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0
1163};
1164
1165static const QRgb Go_black_highlight_data[] = {
1166 0x28999b9c,0x2d949697,0x32959798,0x43868788,0x776f6f70,0x9a626263,0x93606060,0x60646565,0x31818384,0x22969899,0x1e939596,0x1b919394,0x2e9a9b9c,0x369c9d9f,
1167 0x6b7c7d7e,0xbc737474,0xe2696a6a,0xed656565,0xed616162,0xe35a5a5a,0xb24b4c4c,0x51555555,0x25818384,0x1c919394,0x34949697,0x6a848586,0xce7d7e7e,0xf97b7c7d,
1168 0xff767777,0xff767777,0xff727373,0xff5e5e5f,0xfa494a4a,0xcd393939,0x5b414243,0x237d7e7f,0x409c9e9f,0xb97f8080,0xf9838484,0xffaaabac,0xffa6a7a8,0xff9b9c9c,
1169 0xff717272,0xff5e5e5e,0xff505151,0xfc3f3f3f,0xb62e2f2f,0x46464748,0x68848585,0xde828283,0xffa0a1a2,0xffe5e6e6,0xffffffff,0xffa6a8a8,0xff7b7c7c,0xff666666,
1170 0xff545555,0xff434343,0xeb2d2d2e,0x7a2d2d2e,0x82777878,0xea757676,0xff919292,0xffbdbebe,0xffe6e6e7,0xffa2a3a4,0xff7f8080,0xff646565,0xff515152,0xff404040,
1171 0xfa2d2d2d,0xa3232324,0x766f7071,0xea6e6f6f,0xff787a7a,0xff7e8080,0xff949595,0xff757676,0xff646464,0xff575858,0xff4d4d4e,0xff404040,0xfc2d2d2d,0xb2202020,
1172 0x4a7c7e7e,0xda59595a,0xfe565757,0xff6c6d6d,0xff787878,0xff626262,0xff525354,0xff484849,0xff3c3c3c,0xff373838,0xfa242424,0xa91e1e1e,0x2e8d8f90,0x9b464747,
1173 0xf7484949,0xff5a5a5b,0xff636364,0xff515152,0xff454545,0xff3c3c3c,0xff373838,0xff2a2a2a,0xee191919,0x871e1f1f,0x26909293,0x4b585859,0xc0393939,0xfa414141,
1174 0xff4e4e4f,0xff434343,0xff3b3c3c,0xff333334,0xff2a2b2b,0xf81b1b1c,0xc0171717,0x572b2b2c,0x218e9091,0x28818384,0x5d444445,0xb52d2d2d,0xeb2e2f2f,0xfa2d2d2d,
1175 0xfd272728,0xfb1f2020,0xf1181818,0xc4171717,0x6f232424,0x2e4b4c4d,0x1e8e9091,0x1f929495,0x28787a7b,0x4b434445,0x842c2c2c,0xaf232323,0xc01c1d1d,0xb71a1a1b,
1176 0x931c1c1c,0x5c282929,0x2f4a4b4c,0x1b7c7e7e
1177};
1178
1179static const QRgb Go_black_data[] = {
1180 0x0,0x0,0x0,0x184a4a4a,0x664a4a4a,0x89454545,0x763c3c3c,0x302d2d2d,0x2000000,0x0,0x0,0x0,0x0,0x0,
1181 0x6d505050,0xf5535353,0xff525252,0xff4d4d4d,0xff454545,0xfd393939,0xb3272727,0x18080808,0x1000000,0x0,0x0,0x64505050,0xfe575757,0xff595959,
1182 0xff585858,0xff4d4d4d,0xff464646,0xff3d3d3d,0xff313131,0xce1a1a1a,0x1d000000,0x1000000,0xb474747,0xec525252,0xff575757,0xff989898,0xffa2a2a2,0xff4f4f4f,
1183 0xff434343,0xff3b3b3b,0xff313131,0xff212121,0x98090909,0x12000000,0x48474747,0xff515151,0xff545454,0xff888888,0xff787878,0xff474747,0xff3f3f3f,0xff373737,
1184 0xff2d2d2d,0xff212121,0xe80f0f0f,0x3f000000,0x64424242,0xff4b4b4b,0xff4c4c4c,0xff4c4c4c,0xff474747,0xff404040,0xff3a3a3a,0xff323232,0xff282828,0xff1e1e1e,
1185 0xf8111111,0x6e000000,0x4b363636,0xff434343,0xff444444,0xff424242,0xff3f3f3f,0xff3a3a3a,0xff333333,0xff2b2b2b,0xff222222,0xff1b1b1b,0xfa0e0e0e,0x82000000,
1186 0x101b1b1b,0xf1343434,0xff3b3b3b,0xff3a3a3a,0xff363636,0xff313131,0xff2b2b2b,0xff232323,0xff1c1c1c,0xff1a1a1a,0xf3050505,0x75000000,0x2000000,0x861d1d1d,
1187 0xff2d2d2d,0xff2f2f2f,0xff2c2c2c,0xff282828,0xff212121,0xff1c1c1c,0xff1b1b1b,0xfe0f0f0f,0xd8000000,0x4a000000,0x0,0x15000000,0xb4101010,0xfe1e1e1e,
1188 0xff1f1f1f,0xff1d1d1d,0xff1b1b1b,0xff1a1a1a,0xfe0e0e0e,0xed000000,0x8f000000,0x18000000,0x0,0x2000000,0x28000000,0x97020202,0xe90a0a0a,0xf90d0d0d,
1189 0xfb0a0a0a,0xf6030303,0xdf000000,0x95000000,0x2c000000,0x3000000,0x0,0x0,0x2000000,0x1b000000,0x55000000,0x89000000,0x9c000000,0x8b000000,
1190 0x58000000,0x1d000000,0x3000000,0x0
1191};
1192
1905static const QRgb go_data[] = { 1193static const QRgb go_data[] = {
1906 0xffdae3c0,0xffcfdeb7,0xffb2d0a0,0xffa8ca98,0xffa5c897,0xffa5c897,0xffa5c797,0xffa5c797,0xffa5c797,0xffa5c797,0xffa5c797,0xffa5c797,0xffa5c797,0xffa5c797, 1194 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x19000000,0x21000000,0x5000000,
1907 0xffa5c797,0xffa6c797,0xffabc998,0xffcdd9b8,0xffc0d9a6,0xffb1d399,0xff8ac379,0xff8dc47d,0xff8fc480,0xff90c482,0xff90c382,0xff90c382,0xff90c382,0xff90c382, 1195 0x0,0x0,0x0,0x0,0x0,0x0,0x2b488ed4,0x804a92d9,0xa64a92da,0x9f4a93db,0x764b95de,0x2d4488cb,0x4c000000,0x841f2123,
1908 0xff90c382,0xff90c382,0xff90c382,0xff90c382,0xff8fc380,0xff8cc17c,0xff84bc72,0xffaecc9b,0xff78bc5e,0xff61b54a,0xff26a319,0xff4eb83e,0xff5ebe4d,0xff62be52, 1196 0xb24a5b6c,0x42080b0f,0x5000000,0x0,0x0,0x0,0x43c77b1,0x944990d6,0xfe4a93db,0xff4a94dc,0xe7336597,0xda316191,0xff468bcf,0xfe316292,
1909 0xff61bc51,0xff60bb4f,0xff5fb94e,0xff5fb94e,0xff5fba4e,0xff61bb50,0xff62bd51,0xff62bd52,0xff5fbc4e,0xff4fb63e,0xff259e15,0xff5cab4e,0xff3aa528,0xff47b037, 1197 0xd6263c52,0xe3a0b0c1,0xffeef3f7,0xb37089a2,0x41010202,0x13000000,0x0,0x0,0x954990d7,0xff4c97e1,0xff4b96df,0xd94385c6,0xd060d13,0x1060d13,
1910 0xff6fce63,0xffb7e7ac,0xffcaedbf,0xffc7e7bb,0xffbadaae,0xffa5c298,0xff96b186,0xff92ae83,0xff9bb78d,0xffafcda2,0xffc2e2b6,0xffcaebbf,0xffcbedc0,0xffbce8b0, 1198 0xb42a557f,0xff254a6f,0xff7795b2,0xffe1eaf1,0xfbaacdee,0xffd9e4ec,0x98577ea4,0x34000000,0x0,0x324489cb,0xfe4d9ae5,0xff4d99e4,0xff4c98e2,0x6e4488cb,
1911 0xff81d272,0xff47aa3d,0xff33a121,0xff4db13b,0xff94de83,0xffcbf0bd,0xffc7dfb9,0xffa5b796,0xff77826a,0xff4e5446,0xff4b5440,0xff47503d,0xff495140,0xff5c6552, 1199 0x0,0x0,0x54152b40,0xff1e3c5b,0xff6990b5,0xff6b9ccb,0xcf102337,0xe779a8d3,0xbb6494c0,0x31000000,0x0,0x924b96e0,0xff4e9ce8,0xff4e9be7,
1912 0xff8b997e,0xffb6cfa7,0xffcfeec0,0xffcdf3bf,0xffa6e794,0xff48ad3c,0xff37a123,0xff52b33d,0xff99e083,0xffb6e1a3,0xff91aa80,0xff5e6d4f,0xff39452c,0xff344528, 1200 0xff4d98e3,0x32468cd0,0x0,0x0,0x27020507,0xff1b3753,0xff214971,0xff23486d,0xdb1a344e,0x70040f19,0x76122e4a,0x23000000,0x0,0xce4c97e1,
1913 0xff415a33,0xff3d5830,0xff2d4923,0xff1f3c16,0xff3b4c32,0xff668a5a,0xff84c377,0xff8ce37f,0xff85e471,0xff3aac2e,0xff34a120,0xff4bb236,0xff86db6d,0xff8bbb73, 1201 0xff4e9be7,0xff4e9ce8,0xff4c98e2,0x114890d6,0x0,0x0,0x4010304,0xf6326496,0xff336597,0xff3e7bb8,0xe43e7cb8,0x28000000,0x15000000,0x0,
1914 0xff4e663d,0xff2a3a1c,0xff385729,0xff6ea65a,0xff77c464,0xff6ec55c,0xff4faa41,0xff1b7514,0xff083306,0xff11410e,0xff1d7d18,0xff25c41e,0xff34d424,0xff18a610, 1202 0x0,0xe34b95dd,0xff4c97e1,0xff4c98e3,0xfa4c96e0,0x14a92da,0x0,0x0,0x0,0xe63f7dbb,0xff4991d8,0xff4a92da,0xf84a94dc,0x2000000,
1915 0xff32a01e,0xff44b02e,0xff70d355,0xff4b7636,0xff29411b,0xff356126,0xff62bb4c,0xff61dd50,0xff2ddb25,0xff10d70d,0xff05d004,0xff02bd01,0xff017a00,0xff013501, 1203 0x0,0x0,0x24d99e4,0xce4991d8,0xff4a93dc,0xff4a93db,0xe84b94dd,0x34d99e4,0x24c99e3,0x14d99e3,0x0,0xe04487c9,0xff4b95de,0xff4b95de,
1916 0xff024602,0xff029f02,0xff03ca02,0xff02a301,0xff2fa01c,0xff3bac26,0xff57c33d,0xff26481a,0xff1b4511,0xff248519,0xff30d224,0xff25db1e,0xff0ed90b,0xff02d802, 1204 0xfd4b96df,0x0,0x0,0x0,0x34d99e4,0xd74589cd,0xff4990d6,0xff488fd5,0xdd4a94dc,0x24d99e3,0x4d99e4,0x14d99e5,0x34d9ae5,0xdb4b95de,
1917 0xff00d600,0xff00cf00,0xff00a800,0xff005400,0xff004400,0xff008500,0xff00c800,0xff00a200,0xff2ba01a,0xff30a81d,0xff3cb525,0xff14370c,0xff11530a,0xff139c0c, 1205 0xff4c98e3,0xff4c97e1,0xf04b96e0,0x0,0x0,0x0,0x4c97e1,0xb14488ca,0xff478dd2,0xff478cd1,0xec4a94dc,0x44b96e0,0x4c99e3,0x4d99e4,
1918 0xff0fd80a,0xff07d805,0xff02d801,0xff00d800,0xff00d800,0xff00d500,0xff00bf00,0xff006900,0xff004400,0xff006e00,0xff00c700,0xff00a300,0xff279f17,0xff25a615, 1206 0xc4d9ae5,0xec4b97e0,0xff4e9be7,0xff4d99e5,0xcb4c96e0,0x0,0x0,0x0,0x0,0x4a4283c3,0xff478cd1,0xff468cd0,0xfd4992d9,0x274c97e1,
1919 0xff21b010,0xff0c3505,0xff095904,0xff07a203,0xff01d801,0xff00d800,0xff00d800,0xff00d800,0xff00d800,0xff00d700,0xff00c300,0xff006d00,0xff004400,0xff006900, 1207 0x4d9ae5,0x4c99e3,0xf4991d8,0xf54c98e3,0xff4e9ce8,0xff4e9be7,0x844b95de,0x0,0x0,0x0,0x0,0xe458acd,0xd94487c9,0xff468cd0,
1920 0xff00c800,0xff00a300,0xff239f15,0xff1ca810,0xff0bb704,0xff043501,0xff024b01,0xff019401,0xff00d500,0xff00d800,0xff00d800,0xff00d800,0xff00d800,0xff00d500, 1208 0xff488fd5,0x7b4d99e3,0x0,0x4d9ae5,0x584487ca,0xfe4d9ae5,0xff4e9ce8,0xf34d99e4,0x1a468ace,0x0,0x0,0x0,0x0,0x0,
1921 0xff00b200,0xff005c00,0xff004400,0xff007d00,0xff00cc00,0xff00a500,0xff22a015,0xff1aac10,0xff06c602,0xff046601,0xff024400,0xff016a00,0xff01bb00,0xff02d500, 1209 0x224284c5,0xc8458acd,0xff478cd1,0xf24c96e0,0x5b4d98e2,0x3c3f7ebc,0xde478ed3,0xff4d99e3,0xfb4d9ae6,0x554890d6,0x0,0x0,0x0,0x0,
1922 0xff00d800,0xff00d800,0xff00d400,0xff00c400,0xff006600,0xff012900,0xff024501,0xff04a202,0xff05d302,0xff03a801,0xff28a117,0xff24ae14,0xff19cf0c,0xff179e0b, 1210 0x0,0x0,0x0,0x183c78b3,0xa04488ca,0xe8468ace,0xff4992d9,0xff4a92d9,0xff4b95de,0xcd4c96e0,0x3e488fd5,0x0,0x0,0x0,
1923 0xff0d5406,0xff044102,0xff026e00,0xff06a402,0xff08b703,0xff08ba03,0xff06a902,0xff017d01,0xff004000,0xff013f00,0xff057301,0xff0cbf05,0xff15d90a,0xff0ca906, 1211 0x0,0x0,0x0,0x0,0x0,0x0,0x14d9ae5,0xc4488cb,0x453971a9,0x504180bf,0x273c77b1,0x0,0x0,0x0,
1924 0xff2ea11b,0xff2fb01b,0xff32d41b,0xff32c81c,0xff268615,0xff17500d,0xff0b4105,0xff095d04,0xff0b7005,0xff0c7405,0xff096304,0xff053e03,0xff044d02,0xff027901, 1212 0x0,0x0,0x0,0x0
1925 0xff04ab01,0xff0cd106,0xff1fdb10,0xff14aa0b,0xff34a21f,0xff39b022,0xff46d52a,0xff4ddd30,0xff48c82d,0xff399723,0xff245916,0xff16370d,0xff15360b,0xff15380c,
1926 0xff16380d,0xff173b0e,0xff16870e,0xff09bc06,0xff02d502,0xff0ad807,0xff25d816,0xff1eaa13,0xff3c9f20,0xff41ab25,0xff50cb33,0xff61df42,0xff64e245,0xff63dd44,
1927 0xff5ed040,0xff51af35,0xff47982d,0xff46972d,0xff4da833,0xff56c23a,0xff49d632,0xff20d917,0xff0cd909,0xff19d812,0xff3acd25,0xff32a625,0xff4a9319,0xff419519,
1928 0xff2b9c1a,0xff33ab23,0xff35ae25,0xff35ae26,0xff34ab25,0xff30a222,0xff2d9b1f,0xff2d9b1f,0xff2fa021,0xff32a823,0xff2bac1f,0xff15aa0f,0xff0aa907,0xff12a70c,
1929 0xff229b16,0xff56a54b
1930}; 1213};
1931 1214
1932static const QRgb h_src_data[] = { 1215static const QRgb Go_white_data[] = {
1933 0x0,0x0,0x14d3d3d4,0x2fcdcdd1,0x2fc8c8cf,0x2fc4c4cc,0x2fbfbfc9,0x2fbabac7,0x17adadbc,0x0,0x0,0x0,0x0,0x0, 1216 0x0,0x0,0x0,0x0,0x10d0d0d,0x730302c,0xb282825,0x7000000,0x2000000,0x0,0x0,0x0,0x0,0x0,
1934 0x0,0x0,0x7cd6d6d9,0xfff4f4f5,0xfff5f5f6,0xfff3f3f5,0xffeeeef2,0xffe6e6ed,0xe3bebecd,0x289393a5,0x0,0x0,0x0,0x0, 1217 0x1000000,0x50bdbdac,0xc7cecebb,0xf5d3d3c0,0xf8c3c3b1,0xde99998b,0x875b5b52,0x17030303,0x2000000,0x0,0x0,0x0,0x86cdcdba,0xfef7f7e2,
1935 0x0,0x0,0x7dd2d2d7,0xfffdfdfe,0xfff3f3f3,0xfffdfdfe,0xfff0f0f2,0xffececf1,0xffdedee7,0xddc9c9d7,0x2489899f,0x0,0x0,0x0, 1218 0xfffdfde8,0xfff8f8e1,0xffe7e7d2,0xffcdcdba,0xffa6a697,0xd355554d,0x2a020202,0x2000000,0x0,0x4dc5c5b2,0xfef7f7e2,0xfffffff0,0xfffffff1,0xfffdfde9,
1936 0x0,0x0,0x7dcdcdd5,0xfffdfdfe,0xfff4f4f4,0xfffefefe,0xfff4f4f5,0xfff1f1f6,0xffdddde6,0xfff3f3f7,0xdcbabace,0x207b7b94,0x0,0x0, 1219 0xffeeeed8,0xffd7d7c3,0xffb7b7a6,0xff87877a,0xbf2b2b27,0x1a000000,0x1000000,0xc4d1d1be,0xfffdfde8,0xfffffff1,0xfffffffd,0xfffffff7,0xffececd6,0xffd5d5c1,
1937 0x0,0x0,0x7dc8c8d2,0xfffdfdfd,0xffebebeb,0xfffcfcfd,0xffebebec,0xffececf1,0xffd3d3e0,0xffc9c9da,0xffc6c6d8,0x8d8d8da6,0x0,0x0, 1220 0xffb7b7a6,0xff8e8e81,0xfa474740,0x51000000,0x53e3e38,0xf4d4d4c0,0xfff8f8e1,0xfffdfde9,0xfffffff7,0xfffafaec,0xffe2e2cd,0xffcbcbb8,0xffafaf9e,0xff88887b,
1938 0x0,0x0,0x7dc3c3d0,0xfffdfdfd,0xfffcfcfc,0xffffffff,0xfff6f6f8,0xfff2f2f7,0xffe8e8f1,0xffe0e0ec,0xffdfdfec,0x938e8ea6,0x0,0x0, 1221 0xff4c4c45,0x8b070706,0x8383833,0xf7c3c3b2,0xffe7e7d2,0xffeeeed8,0xffececd6,0xffe2e2cd,0xffd1d1be,0xffbcbcaa,0xff9f9f90,0xff79796d,0xff40403a,0x9d070706,
1939 0x0,0x0,0x7dbebecd,0xfffdfdfd,0xffffffff,0xffffffff,0xffe8e8ea,0xffeaeaf0,0xffd9d9e1,0xffe0e0e9,0xffe1e1ed,0x938a8aa5,0x0,0x0, 1222 0x3000000,0xd89d9d8f,0xffcdcdba,0xffd7d7c3,0xffd5d5c1,0xffcbcbb8,0xffbcbcaa,0xffa6a697,0xff89897c,0xff616158,0xfe2c2c28,0x87010101,0x1000000,0x7a65655b,
1940 0x0,0x0,0x7db9b9cb,0xfffcfcfd,0xffececee,0xfff0f0f6,0xffe3e3e9,0xffe6e6ee,0xffe9e9f2,0xffe6e6f0,0xffe3e3ef,0x938888a3,0x0,0x0, 1223 0xffa6a697,0xffb7b7a6,0xffb7b7a6,0xffafaf9e,0xff9f9f90,0xff89897c,0xff6a6a60,0xff3f3f39,0xf2161613,0x5b000000,0x0,0xe060605,0xca585851,0xff87877a,
1941 0x0,0x0,0x7db4b4c8,0xfff8f8fa,0xffefeff1,0xfff3f3f7,0xffebebf0,0xffededf3,0xffebebf3,0xffe9e9f2,0xffe6e6f0,0x938585a2,0x0,0x0, 1224 0xff8e8e81,0xff88887b,0xff79796d,0xff616158,0xff3f3f39,0xfc1e1e1b,0xa7010101,0x23000000,0x0,0x1000000,0x1f030303,0xb62d2d29,0xfa474740,0xff4c4c45,
1942 0x0,0x0,0x7db5b5ca,0xffefe4d7,0xffe5cfb5,0xffdcc09d,0xffdcc09d,0xffcca26e,0xffc5965c,0xffc18e50,0xffcba77d,0x938282a1,0x0,0x0, 1225 0xff40403a,0xfe2c2c28,0xf2161613,0xa7010101,0x39000000,0x5000000,0x0,0x0,0x1000000,0x14000000,0x44010100,0x7e080807,0x8e080807,0x7a010101,
1943 0x0,0x0,0x7db2b2c9,0xffeddfcd,0xffe0c5a3,0xffd6b184,0xffe1c7a6,0xffdbbb94,0xffbc8139,0xffb47220,0xffc3945b,0x937f7f9f,0x0,0x0, 1226 0x55000000,0x22000000,0x5000000,0x0
1944 0x0,0x0,0x7daeaec6,0xffede0cf,0xffe1c6a5,0xffd8b58b,0xffddc09b,0xffd3ad7e,0xffc08945,0xffb77829,0xffc69862,0x937d7d9e,0x0,0x0, 1227};
1945 0x0,0x0,0x7ca5a5c1,0xffe5dfdd,0xffdfd3cb,0xffddcfc6,0xffd7c7bb,0xffd1bdad,0xffcab19a,0xffc5a991,0xffcab6a9,0x92747499,0x0,0x0, 1228
1946 0x0,0x0,0x1a6d6d8a,0x455b5b76,0x45585873,0x45545472,0x45515170,0x454d4d6e,0x454a4a6d,0x4547476b,0x45434369,0x2831314e,0x0,0x0 1229static const QRgb HelpButton_data[] = {
1230 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,
1231 0xffffff,0xffffff,0xffffff,0x3ed5d5d5,0x93d4d4d4,0xd5d8d8d8,0xfad5d5d5,0xd8c8c8c8,0x9ebebebe,0x508e8e8e,0xc000000,0x3000000,0xffffff,0xffffff,
1232 0xffffff,0xffffff,0x60d5d5d5,0xdbdddddd,0xffdcdcdc,0xffcbcbcb,0xffc5c5c5,0xffc4c4c4,0xffd0d0d0,0xe6bbbbbb,0x837d7d7d,0x18000000,0x4000000,0xffffff,
1233 0xffffff,0x3ed6d5d5,0xdbd3d3d3,0xffd1d1d1,0xff9c9b9b,0xff333333,0xff323132,0xff565556,0xffbababa,0xffb1b2b1,0xec8f8e8f,0x75474747,0x18000000,0x3000000,
1234 0xffffff,0x94cdcecd,0xffc8c7c7,0xffb2b2b2,0xff000000,0xff616161,0xffb2b2b2,0xff000000,0xff5f5f5f,0xffaaabaa,0xff9d9c9c,0xc84f4f4f,0x3d000000,0xc000000,
1235 0xffffff,0xd5c2c2c2,0xffafafaf,0xffa0a0a0,0xff5b5b5b,0xff757575,0xffa8a8a8,0xff000000,0xff585858,0xffa4a4a4,0xffa4a4a4,0xef4f4f4f,0x61000000,0x1a000000,
1236 0xffffff,0xfab4b4b4,0xff9d9d9d,0xff959595,0xffa5a5a5,0xff989898,0xff434343,0xff1d1d1d,0xff878787,0xffa1a1a1,0xff939393,0xfd4b4b4b,0x7c000000,0x25000000,
1237 0xffffff,0xd9a3a3a3,0xff919191,0xff989898,0xff909090,0xff4e4e4e,0xff000000,0xff919191,0xff989898,0xff949494,0xff7b7b7b,0xf2373737,0x85000000,0x2b000000,
1238 0xffffff,0xa0848484,0xff8c8c8b,0xff8a8b8b,0xff979797,0xff8e8e8e,0xff929291,0xff959595,0xff8c8c8c,0xff8b8c8b,0xff585758,0xdf272727,0x7c000000,0x25000000,
1239 0xffffff,0x515d5d5d,0xe7707070,0xff7c7c7c,0xff848484,0xff434343,0xff262626,0xff8f8f8f,0xff7f7f7f,0xff616061,0xf5313131,0xbb101010,0x61000000,0x1a000000,
1240 0xffffff,0xc000000,0x843f3f3f,0xed505050,0xff5d5c5c,0xff535353,0xff262626,0xff646364,0xff515051,0xf5313130,0xcd141414,0x83000000,0x3d000000,0xc000000,
1241 0xffffff,0x3000000,0x18000000,0x76212121,0xc92b2b2b,0xf0303030,0xfd353535,0xf32a2a2a,0xdf1d1d1d,0xbb0d0d0d,0x83000000,0x4b000000,0x18000000,0x3000000,
1242 0xffffff,0xffffff,0x4000000,0x18000000,0x3d000000,0x61000000,0x7c000000,0x85000000,0x7c000000,0x61000000,0x3d000000,0x18000000,0x4000000,0xffffff,
1243 0xffffff,0xffffff,0xffffff,0x3000000,0xc000000,0x1a000000,0x25000000,0x2b000000,0x25000000,0x1a000000,0xc000000,0x3000000,0xffffff,0xffffff
1947}; 1244};
1948 1245
1949static const QRgb help_icon_data[] = { 1246static const QRgb help_icon_data[] = {
1950 0x0,0x0,0x0,0x0,0x18fdb293,0x5ffdbba0,0x81fbc4ac,0x81fbba9e,0x60fa7a50,0x19ee662d,0x0,0x0,0x0,0x0, 1247 0x0,0x0,0x0,0x0,0x18fdb293,0x5ffdbba0,0x81fbc4ac,0x81fbba9e,0x60fa7a50,0x19ee662d,0x0,0x0,0x0,0x0,
1951 0x0,0x0,0x8fdbfa4,0x88fea391,0xf3fdeae2,0xfffdfaf9,0xfffdfdfd,0xfffdfdfd,0xffffbebc,0xf4fe8473,0x8cf64a1b,0xabe3700,0x0,0x0, 1248 0x0,0x0,0x8fdbfa4,0x88fea391,0xf3fdeae2,0xfffdfaf9,0xfffdfdfd,0xfffdfdfd,0xffffbebc,0xf4fe8473,0x8cf64a1b,0xabe3700,0x0,0x0,
1952 0x0,0x8fdbfa4,0xbaff9687,0xffffb7b6,0xfffdefef,0xfffcfcfc,0xfffbfbfb,0xfffbf5f5,0xfffdcdcd,0xfffecccc,0xffffb2af,0xbfee502d,0xc982900,0x0, 1249 0x0,0x8fdbfa4,0xbaff9687,0xffffb7b6,0xfffdefef,0xfffcfcfc,0xfffbfbfb,0xfffbf5f5,0xfffdcdcd,0xfffecccc,0xffffb2af,0xbfee502d,0xc982900,0x0,
1953 0x0,0x88fe8f7c,0xffffabaa,0xfffebfbf,0xfff9b6b5,0xf6eec9ba,0xcbdaa28a,0xc8dd7d62,0xf5ef604c,0xfff7a9a8,0xfffdbfbf,0xfffea9a7,0x93d25735,0x1000000, 1250 0x0,0x88fe8f7c,0xffffabaa,0xfffebfbf,0xfff9b6b5,0xf6eec9ba,0xcbdaa28a,0xc8dd7d62,0xf5ef604c,0xfff7a9a8,0xfffdbfbf,0xfffea9a7,0x93d25735,0x1000000,
1954 0x18fdb293,0xf3ff877f,0xfffeaaaa,0xfff79696,0xd6e0533a,0x3974381f,0x7000000,0x4000000,0x26aa3100,0xcae13a19,0xfff4bbba,0xfffbf2f2,0xf6ecc4b8,0x257e1d00, 1251 0x18fdb293,0xf3ff877f,0xfffeaaaa,0xfff79696,0xd6e0533a,0x3974381f,0x7000000,0x4000000,0x26aa3100,0xcae13a19,0xfff4bbba,0xfffbf2f2,0xf6ecc4b8,0x257e1d00,
1955 0x5ffdba9e,0xfffddcdb,0xfffac5c5,0xf6ed7061,0x3974381f,0x0,0x0,0x0,0x0,0x1ec23501,0xf2e5b9aa,0xfff8f8f8,0xfff9f4f2,0x70a6482f, 1252 0x5ffdba9e,0xfffddcdb,0xfffac5c5,0xf6ed7061,0x3974381f,0x0,0x0,0x0,0x0,0x1ec23501,0xf2e5b9aa,0xfff8f8f8,0xfff9f4f2,0x70a6482f,
1956 0x81fbc3ab,0xfffbfbfb,0xfff6f6f6,0xcbd9a189,0x7000000,0x0,0x0,0x0,0x0,0x0,0xb9d7947e,0xfff5f5f5,0xfffafafa,0x96ae6a5a, 1253 0x81fbc3ab,0xfffbfbfb,0xfff6f6f6,0xcbd9a189,0x7000000,0x0,0x0,0x0,0x0,0x0,0xb9d7947e,0xfff5f5f5,0xfffafafa,0x96ae6a5a,
1957 0x81fbba9e,0xfffafafa,0xfff4f4f4,0xc8dc9c82,0x4000000,0x0,0x0,0x0,0x0,0x0,0xb8d28470,0xfff3f0f0,0xfff9f9f9,0x98a66558, 1254 0x81fbba9e,0xfffafafa,0xfff4f4f4,0xc8dc9c82,0x4000000,0x0,0x0,0x0,0x0,0x0,0xb8d28470,0xfff3f0f0,0xfff9f9f9,0x98a66558,
1958 0x60fa966c,0xfffaf5f3,0xfff4f3f3,0xf5e9917e,0x26aa3100,0x0,0x0,0x0,0x0,0x1ab62700,0xf2d02c21,0xffee6868,0xfff68988,0x79852e20, 1255 0x60fa966c,0xfffaf5f3,0xfff4f3f3,0xf5e9917e,0x26aa3100,0x0,0x0,0x0,0x0,0x1ab62700,0xf2d02c21,0xffee6868,0xfff68988,0x79852e20,
1959 0x19ee662d,0xf4fbaf9e,0xfff76d6d,0xffe83838,0xcadb2908,0x1ec23400,0x0,0x0,0x1ab62700,0xc4c11c08,0xffe03837,0xfff14040,0xf7db2622,0x32430900, 1256 0x19ee662d,0xf4fbaf9e,0xfff76d6d,0xffe83838,0xcadb2908,0x1ec23400,0x0,0x0,0x1ab62700,0xc4c11c08,0xffe03837,0xfff14040,0xf7db2622,0x32430900,
1960 0x0,0x8cf6390b,0xfffc2926,0xfff12b2b,0xffe22525,0xf2da5748,0xb9d6937d,0xb8d2917d,0xf2d69c91,0xffdc2b2b,0xffea2b2b,0xfff32726,0xa5900d05,0x6000000, 1257 0x0,0x8cf6390b,0xfffc2926,0xfff12b2b,0xffe22525,0xf2da5748,0xb9d6937d,0xb8d2917d,0xf2d69c91,0xffdc2b2b,0xffea2b2b,0xfff32726,0xa5900d05,0x6000000,
1961 0x0,0xbc23800,0xbfed2a06,0xfff91614,0xfff01616,0xffedaaaa,0xffececec,0xffececec,0xffefeeee,0xffef7979,0xfff11514,0xcda80d06,0x1c230400,0x0, 1258 0x0,0xbc23800,0xbfed2a06,0xfff91614,0xfff01616,0xffedaaaa,0xffececec,0xffececec,0xffefeeee,0xffef7979,0xfff11514,0xcda80d06,0x1c230400,0x0,
1962 0x0,0x0,0xc932800,0x93d22301,0xf6eb1407,0xfff5e0df,0xfff6f6f6,0xfff6f6f6,0xfff3efee,0xf7d8a6a1,0xa5900c04,0x1c230400,0x0,0x0, 1259 0x0,0x0,0xc932800,0x93d22301,0xf6eb1407,0xfff5e0df,0xfff6f6f6,0xfff6f6f6,0xfff3efee,0xf7d8a6a1,0xa5900c04,0x1c230400,0x0,0x0,
1963 0x0,0x0,0x0,0x1000000,0x257e1d00,0x70a5482e,0x96ae6959,0x98a66658,0x7985392b,0x32430900,0x6000000,0x0,0x0,0x0 1260 0x0,0x0,0x0,0x1000000,0x257e1d00,0x70a5482e,0x96ae6959,0x98a66658,0x7985392b,0x32430900,0x6000000,0x0,0x0,0x0
1964}; 1261};
1965 1262
1966static const QRgb home_data[] = { 1263static const QRgb home_data[] = {
1967 0x0,0x8097dff,0x20097dff,0x11097bfa,0x10135ca5,0x47115ba4,0x891b61a7,0x7a1860a7,0x290754a0,0xb0855a0,0x0,0x0,0x0,0x0, 1264 0x0,0x8097dff,0x20097dff,0x11097bfa,0x10135ca5,0x47115ba4,0x891b61a7,0x7a1860a7,0x290754a0,0xb0855a0,0x0,0x0,0x0,0x0,
1968 0x0,0x40097dff,0xff097dff,0x9f0a76ed,0x982b6dae,0xea598cc0,0xfd92b3d6,0xfb81a8d1,0xe53876b4,0x791a61a8,0x150e59a3,0x0,0x0,0x0, 1265 0x0,0x40097dff,0xff097dff,0x9f0a76ed,0x982b6dae,0xea598cc0,0xfd92b3d6,0xfb81a8d1,0xe53876b4,0x791a61a8,0x150e59a3,0x0,0x0,0x0,
1969 0x0,0x40097dff,0xf90a79f4,0xe82174cb,0xf27aa3ce,0xfed8e4f4,0xffe7effb,0xffe0eafa,0xfdbed4ed,0xe45d8fc6,0x842368ad,0x190e59a4,0x0,0x0, 1266 0x0,0x40097dff,0xf90a79f4,0xe82174cb,0xf27aa3ce,0xfed8e4f4,0xffe7effb,0xffe0eafa,0xfdbed4ed,0xe45d8fc6,0x842368ad,0x190e59a4,0x0,0x0,
1970 0x0,0x360c6fd9,0xde2073cc,0xf174a0cd,0xfecadbf1,0xffdce8fa,0xffd5e3f9,0xffcedff7,0xffc6daf6,0xfda9c5eb,0xe6568bc6,0x84185ca7,0x15054a9b,0x0, 1267 0x0,0x360c6fd9,0xde2073cc,0xf174a0cd,0xfecadbf1,0xffdce8fa,0xffd5e3f9,0xffcedff7,0xffc6daf6,0xfda9c5eb,0xe6568bc6,0x84185ca7,0x15054a9b,0x0,
1971 0xb05539f,0x77175fa7,0xe76192c6,0xfebfd4ef,0xffd0e0f8,0xffc9dbf6,0xffc2d6f5,0xffb9d0f4,0xffb1ccf3,0xffa9c6f2,0xfd8ab0e5,0xe92f69ba,0x940245a7,0xf0044a9, 1268 0xb05539f,0x77175fa7,0xe76192c6,0xfebfd4ef,0xffd0e0f8,0xffc9dbf6,0xffc2d6f5,0xffb9d0f4,0xffb1ccf3,0xffa9c6f2,0xfd8ab0e5,0xe92f69ba,0x940245a7,0xf0044a9,
1972 0xc34878b0,0xe62d6eb1,0xfdacc7ea,0xffc3d7f5,0xffbbd2f4,0xffb4cdf3,0xffacc8f2,0xffa2c2f1,0xff9abcef,0xff90b6ed,0xff6696e1,0xff1a59c8,0xf2024ab7,0xc54777b3, 1269 0xc34878b0,0xe62d6eb1,0xfdacc7ea,0xffc3d7f5,0xffbbd2f4,0xffb4cdf3,0xffacc8f2,0xffa2c2f1,0xff9abcef,0xff90b6ed,0xff6696e1,0xff1a59c8,0xf2024ab7,0xc54777b3,
1973 0x3b497db7,0xf85e90c8,0xffb4cdf3,0xffadc9f2,0xffa5c4f1,0xffd8ebfa,0xffe9f8fd,0xffe7f7fd,0xffc1dbf7,0xff3e7be1,0xff115bdc,0xff0251dc,0xff0f5bd3,0x3c316ec2, 1270 0x3b497db7,0xf85e90c8,0xffb4cdf3,0xffadc9f2,0xffa5c4f1,0xffd8ebfa,0xffe9f8fd,0xffe7f7fd,0xffc1dbf7,0xff3e7be1,0xff115bdc,0xff0251dc,0xff0f5bd3,0x3c316ec2,
1974 0x1f4680c1,0xfa5d90cd,0xff99bcef,0xff80abed,0xff5089e8,0xffc5def9,0xfff2ffff,0xfff2ffff,0xffb6d6fb,0xff005aef,0xff015df2,0xff015ff4,0xff0e64e1,0x201365da, 1271 0x1f4680c1,0xfa5d90cd,0xff99bcef,0xff80abed,0xff5089e8,0xffc5def9,0xfff2ffff,0xfff2ffff,0xffb6d6fb,0xff005aef,0xff015df2,0xff015ff4,0xff0e64e1,0x201365da,
1975 0x1f3d7abf,0xfa4d86cb,0xff639aef,0xff1f70f1,0xff025ff3,0xffb6d7fc,0xfff2ffff,0xfff2ffff,0xffb7dafe,0xff066bfc,0xff096dfd,0xff0b6ffe,0xff126ce5,0x20146add, 1272 0x1f3d7abf,0xfa4d86cb,0xff639aef,0xff1f70f1,0xff025ff3,0xffb6d7fc,0xfff2ffff,0xfff2ffff,0xffb7dafe,0xff066bfc,0xff096dfd,0xff0b6ffe,0xff126ce5,0x20146add,
1976 0x1f3274bf,0xfa3278cd,0xff237af8,0xff096dfd,0xff0b6ffe,0xffb8dbff,0xfff2ffff,0xfff2ffff,0xffbcdeff,0xff197cff,0xff1d7fff,0xff2082ff,0xff1b75e4,0x201970dc, 1273 0x1f3274bf,0xfa3278cd,0xff237af8,0xff096dfd,0xff0b6ffe,0xffb8dbff,0xfff2ffff,0xfff2ffff,0xffbcdeff,0xff197cff,0xff1d7fff,0xff2082ff,0xff1b75e4,0x201970dc,
1977 0x1f2672cc,0xfb2374d9,0xff1a7dff,0xff1c7fff,0xff2082ff,0xffbee0ff,0xfff2ffff,0xfff2ffff,0xffc2e3ff,0xff3291ff,0xff3694ff,0xff3a97ff,0xff287fe4,0x202177db, 1274 0x1f2672cc,0xfb2374d9,0xff1a7dff,0xff1c7fff,0xff2082ff,0xffbee0ff,0xfff2ffff,0xfff2ffff,0xffc2e3ff,0xff3291ff,0xff3694ff,0xff3a97ff,0xff287fe4,0x202177db,
1978 0x20287cdf,0xfd2a81e7,0xff3291ff,0xff3694ff,0xff3997ff,0xffc4e5ff,0xfff2ffff,0xfff2ffff,0xffc9e9ff,0xff4ea8ff,0xff52aaff,0xff56adff,0xff378be3,0x202c7fda, 1275 0x20287cdf,0xfd2a81e7,0xff3291ff,0xff3694ff,0xff3997ff,0xffc4e5ff,0xfff2ffff,0xfff2ffff,0xffc9e9ff,0xff4ea8ff,0xff52aaff,0xff56adff,0xff378be3,0x202c7fda,
1979 0x1f267ad1,0xf92a7fd7,0xfa388fe7,0xfb3b91e8,0xfe3e93ea,0xff60a6eb,0xff6cadeb,0xff6daeeb,0xff64aaea,0xff499cea,0xff4b9eea,0xff4ea0ea,0xf93080ce,0x1f2675c4, 1276 0x1f267ad1,0xf92a7fd7,0xfa388fe7,0xfb3b91e8,0xfe3e93ea,0xff60a6eb,0xff6cadeb,0xff6daeeb,0xff64aaea,0xff499cea,0xff4b9eea,0xff4ea0ea,0xf93080ce,0x1f2675c4,
1980 0x42477cb,0x1f297cd0,0x1f378cdf,0x1f3a8ee1,0x203c8fe3,0x203e91e4,0x203f92e4,0x204093e4,0x204294e3,0x204495e3,0x204697e3,0x204899e3,0x1f2c7bc6,0x42271bc 1277 0x42477cb,0x1f297cd0,0x1f378cdf,0x1f3a8ee1,0x203c8fe3,0x203e91e4,0x203f92e4,0x204093e4,0x204294e3,0x204495e3,0x204697e3,0x204899e3,0x1f2c7bc6,0x42271bc
1981}; 1278};
1982 1279
1983static const QRgb install_data[] = { 1280static const QRgb h_src_data[] = {
1984 0x0,0x0,0x0,0x2fcac00,0x49feb50d,0xd2ffd436,0x68e2a50e,0x4f7a500,0x8afabb25,0x3edd9508,0x0,0x0,0x0,0x0, 1281 0x0,0x0,0x14d3d3d4,0x2fcdcdd1,0x2fc8c8cf,0x2fc4c4cc,0x2fbfbfc9,0x2fbabac7,0x17adadbc,0x0,0x0,0x0,0x0,0x0,
1985 0x0,0xfdad00,0x31feb007,0xb9ffd147,0xfdfff275,0xffffff72,0xe6f8d235,0xa0f5be35,0xfffff883,0xf3f9dc4d,0x53d6890a,0x301b00,0x0,0x0, 1282 0x0,0x0,0x7cd6d6d9,0xfff4f4f5,0xfff5f5f6,0xfff3f3f5,0xffeeeef2,0xffe6e6ed,0xe3bebecd,0x289393a5,0x0,0x0,0x0,0x0,
1986 0x2f3a600,0x97fec53f,0xfcffec94,0xffffffa4,0xffffff87,0xffffe951,0xfffed131,0xfffbc232,0xfffef974,0xfffff55e,0xfaf7cb35,0x6bd27f08,0x1522b00,0x0, 1283 0x0,0x0,0x7dd2d2d7,0xfffdfdfe,0xfff3f3f3,0xfffdfdfe,0xfff0f0f2,0xffececf1,0xffdedee7,0xddc9c9d7,0x2489899f,0x0,0x0,0x0,
1987 0x2e09900,0x97f9c240,0xfffffdba,0xfffff082,0xffffcf34,0xffffd534,0xffffed52,0xfffec724,0xfff6bd27,0xfffce047,0xffffd636,0xfdf8b418,0x77c56901,0x1000000, 1284 0x0,0x0,0x7dcdcdd5,0xfffdfdfe,0xfff4f4f4,0xfffefefe,0xfff4f4f5,0xfff1f1f6,0xffdddde6,0xfff3f3f7,0xdcbabace,0x207b7b94,0x0,0x0,
1988 0xa3f6ab09,0xbcfac646,0xffffc635,0xffffc01a,0xffffd332,0xffffe649,0xfffff761,0xffffd939,0xffffdd40,0xfff1b92b,0xfff9bd21,0xf1e6960c,0x517a3c00,0x1000000, 1285 0x0,0x0,0x7dc8c8d2,0xfffdfdfd,0xffebebeb,0xfffcfcfd,0xffebebec,0xffececf1,0xffd3d3e0,0xffc9c9da,0xffc6c6d8,0x8d8d8da6,0x0,0x0,
1989 0x12bb8001,0xbcf6c643,0xffffea66,0xfffdc421,0xffffde40,0xfffff057,0xfffffe79,0xffffe94e,0xffffef55,0xfffcea56,0xffe3981c,0xd3cd790b,0x84c75e02,0x279c3d00, 1286 0x0,0x0,0x7dc3c3d0,0xfffdfdfd,0xfffcfcfc,0xffffffff,0xfff6f6f8,0xfff2f2f7,0xffe8e8f1,0xffe0e0ec,0xffdfdfec,0x938e8ea6,0x0,0x0,
1990 0x0,0xdb57b00,0xe6f9bb1a,0xfffdd73b,0xfff8c52d,0xfffff865,0xfff8d75b,0xfff9d943,0xfff1cb44,0xffefc33b,0xfff9d03a,0xe7d78b14,0x76904202,0x11260f00, 1287 0x0,0x0,0x7dbebecd,0xfffdfdfd,0xffffffff,0xffffffff,0xffe8e8ea,0xffeaeaf0,0xffd9d9e1,0xffe0e0e9,0xffe1e1ed,0x938a8aa5,0x0,0x0,
1991 0x0,0x2e89700,0xdcfab310,0xfff8b417,0xfff5ac13,0xffea960a,0xffe88f05,0xffecb64c,0xfffaee74,0xffecbc39,0xfada7f0c,0x36512100,0x1000000,0x0, 1288 0x0,0x0,0x7db9b9cb,0xfffcfcfd,0xffececee,0xfff0f0f6,0xffe3e3e9,0xffe6e6ee,0xffe9e9f2,0xffe6e6f0,0xffe3e3ef,0x938888a3,0x0,0x0,
1992 0x0,0x2e28d00,0xdcf8bc20,0xffffd635,0xfffed334,0xfff8c631,0xfff2b630,0xffefb22e,0xffedad28,0xfffbc325,0xfae89e19,0x295c2200,0x0,0x0, 1289 0x0,0x0,0x7db4b4c8,0xfff8f8fa,0xffefeff1,0xfff3f3f7,0xffebebf0,0xffededf3,0xffebebf3,0xffe9e9f2,0xffe6e6f0,0x938585a2,0x0,0x0,
1993 0x0,0x1d88300,0xcdf0b124,0xffffe84e,0xffffeb50,0xffffec54,0xffffe552,0xffffe043,0xffffdf41,0xffffdd3f,0xfae7aa2a,0x295b2200,0x0,0x0, 1290 0x0,0x0,0x7db5b5ca,0xffefe4d7,0xffe5cfb5,0xffdcc09d,0xffdcc09d,0xffcca26e,0xffc5965c,0xffc18e50,0xffcba77d,0x938282a1,0x0,0x0,
1994 0x0,0x0,0x25bc6c02,0xd6e7ac2f,0xfffef667,0xfffffd70,0xfffff668,0xfffff35b,0xfffff158,0xfef5cf47,0xd0c1741d,0x1b3e1700,0x0,0x0, 1291 0x0,0x0,0x7db2b2c9,0xffeddfcd,0xffe0c5a3,0xffd6b184,0xffe1c7a6,0xffdbbb94,0xffbc8139,0xffb47220,0xffc3945b,0x937f7f9f,0x0,0x0,
1995 0x0,0x0,0x0,0x1aa65600,0xc9dc952f,0xfffdf18f,0xfffffe86,0xfff9e161,0xe1d08d2d,0x70883a06,0x11140700,0x0,0x0,0x0, 1292 0x0,0x0,0x7daeaec6,0xffede0cf,0xffe1c6a5,0xffd8b58b,0xffddc09b,0xffd3ad7e,0xffc08945,0xffb77829,0xffc69862,0x937d7d9e,0x0,0x0,
1996 0x0,0x0,0x0,0x0,0x10924200,0xb9cf7a2f,0xedd99445,0x8695420b,0x1b2c1000,0x1000000,0x0,0x0,0x0,0x0, 1293 0x0,0x0,0x7ca5a5c1,0xffe5dfdd,0xffdfd3cb,0xffddcfc6,0xffd7c7bb,0xffd1bdad,0xffcab19a,0xffc5a991,0xffcab6a9,0x92747499,0x0,0x0,
1997 0x0,0x0,0x0,0x0,0x0,0xa782e00,0x214b1c00,0x2000000,0x0,0x0,0x0,0x0,0x0,0x0 1294 0x0,0x0,0x1a6d6d8a,0x455b5b76,0x45585873,0x45545472,0x45515170,0x454d4d6e,0x454a4a6d,0x4547476b,0x45434369,0x2831314e,0x0,0x0
1998}; 1295};
1999 1296
2000static const QRgb installed_data[] = { 1297static const QRgb installed_data[] = {
2001 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 1298 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
2002 0x0,0x0,0x10000ff,0xd0303ff,0x370606ff,0x760808ff,0xa30808ff,0xa90505ff,0x820202ff,0x3e0101ff,0xf0000ff,0x10000ff,0x0,0x0, 1299 0x0,0x0,0x10000ff,0xd0303ff,0x370606ff,0x760808ff,0xa30808ff,0xa90505ff,0x820202ff,0x3e0101ff,0xf0000ff,0x10000ff,0x0,0x0,
2003 0x0,0x10000ff,0x1a0505ff,0x6b0f0fff,0xb72121ff,0xd73030ff,0xe52e2eff,0xee1e1eff,0xf10f0fff,0xde0505ff,0x830101ff,0x1d0000ff,0x10000ff,0x0, 1300 0x0,0x10000ff,0x1a0505ff,0x6b0f0fff,0xb72121ff,0xd73030ff,0xe52e2eff,0xee1e1eff,0xf10f0fff,0xde0505ff,0x830101ff,0x1d0000ff,0x10000ff,0x0,
2004 0x0,0xe0303ff,0x6c0f0fff,0xbe3434ff,0xdd6666ff,0xf07575ff,0xf96161ff,0xfb3e3eff,0xfb2323ff,0xfa0f0fff,0xee0404ff,0x820000ff,0xe0000ff,0x0, 1301 0x0,0xe0303ff,0x6c0f0fff,0xbe3434ff,0xdd6666ff,0xf07575ff,0xf96161ff,0xfb3e3eff,0xfb2323ff,0xfa0f0fff,0xee0404ff,0x820000ff,0xe0000ff,0x0,
2005 0x0,0x390606ff,0xb82121ff,0xdc6868ff,0xf4a7a7ff,0xfdaeaeff,0xfe8383ff,0xff4f4fff,0xfe2e2eff,0xfe1717ff,0xfd0808ff,0xe30101ff,0x3a0000ff,0x0, 1302 0x0,0x390606ff,0xb82121ff,0xdc6868ff,0xf4a7a7ff,0xfdaeaeff,0xfe8383ff,0xff4f4fff,0xfe2e2eff,0xfe1717ff,0xfd0808ff,0xe30101ff,0x3a0000ff,0x0,
2006 0x0,0x7b0707ff,0xd63131ff,0xf07878ff,0xfdb1b1ff,0xffb6b6ff,0xff8888ff,0xff5252ff,0xff3030ff,0xff1818ff,0xfe0909ff,0xfd0101ff,0x7f0000ff,0x0, 1303 0x0,0x7b0707ff,0xd63131ff,0xf07878ff,0xfdb1b1ff,0xffb6b6ff,0xff8888ff,0xff5252ff,0xff3030ff,0xff1818ff,0xfe0909ff,0xfd0101ff,0x7f0000ff,0x0,
2007 0x0,0xa90808ff,0xe53131ff,0xf96565ff,0xfe8686ff,0xff8a8aff,0xff6e6eff,0xff4646ff,0xff2929ff,0xff1515ff,0xff0808ff,0xfe0101ff,0xac0000ff,0x0, 1304 0x0,0xa90808ff,0xe53131ff,0xf96565ff,0xfe8686ff,0xff8a8aff,0xff6e6eff,0xff4646ff,0xff2929ff,0xff1515ff,0xff0808ff,0xfe0101ff,0xac0000ff,0x0,
2008 0x0,0xb20505ff,0xed1f1fff,0xfb4040ff,0xff5252ff,0xff5454ff,0xff4747ff,0xff2f2fff,0xff1d1dff,0xff0e0eff,0xff0505ff,0xff0101ff,0xad0000ff,0x0, 1305 0x0,0xb20505ff,0xed1f1fff,0xfb4040ff,0xff5252ff,0xff5454ff,0xff4747ff,0xff2f2fff,0xff1d1dff,0xff0e0eff,0xff0505ff,0xff0101ff,0xad0000ff,0x0,
2009 0x0,0x8e0202ff,0xf10f0fff,0xfa2424ff,0xfe3030ff,0xff3131ff,0xff2a2aff,0xff1d1dff,0xff1111ff,0xff0808ff,0xff0202ff,0xfe0000ff,0x7f0000ff,0x0, 1306 0x0,0x8e0202ff,0xf10f0fff,0xfa2424ff,0xfe3030ff,0xff3131ff,0xff2a2aff,0xff1d1dff,0xff1111ff,0xff0808ff,0xff0202ff,0xfe0000ff,0x7f0000ff,0x0,
2010 0x0,0x470101ff,0xe40505ff,0xf90f0fff,0xfd1717ff,0xff1919ff,0xff1616ff,0xff0f0fff,0xff0909ff,0xff0303ff,0xff0000ff,0xe50000ff,0x390000ff,0x0, 1307 0x0,0x470101ff,0xe40505ff,0xf90f0fff,0xfd1717ff,0xff1919ff,0xff1616ff,0xff0f0fff,0xff0909ff,0xff0303ff,0xff0000ff,0xe50000ff,0x390000ff,0x0,
2011 0x0,0x120000ff,0x900101ff,0xf20404ff,0xfd0808ff,0xfe0909ff,0xfe0808ff,0xff0606ff,0xff0202ff,0xff0000ff,0xf30000ff,0x830000ff,0xe0000ff,0x0, 1308 0x0,0x120000ff,0x900101ff,0xf20404ff,0xfd0808ff,0xfe0909ff,0xfe0808ff,0xff0606ff,0xff0202ff,0xff0000ff,0xf30000ff,0x830000ff,0xe0000ff,0x0,
2012 0x0,0x20000ff,0x240000ff,0x910000ff,0xeb0101ff,0xfe0101ff,0xfe0101ff,0xff0101ff,0xff0000ff,0xe80000ff,0x870000ff,0x1d0000ff,0x10000ff,0x0, 1309 0x0,0x20000ff,0x240000ff,0x910000ff,0xeb0101ff,0xfe0101ff,0xfe0101ff,0xff0101ff,0xff0000ff,0xe80000ff,0x870000ff,0x1d0000ff,0x10000ff,0x0,
2013 0x0,0x0,0x20000ff,0x120000ff,0x490000ff,0x950000ff,0xc00000ff,0xbf0000ff,0x8e0000ff,0x410000ff,0xf0000ff,0x10000ff,0x0,0x0, 1310 0x0,0x0,0x20000ff,0x120000ff,0x490000ff,0x950000ff,0xc00000ff,0xbf0000ff,0x8e0000ff,0x410000ff,0xf0000ff,0x10000ff,0x0,0x0,
2014 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0 1311 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0
2015}; 1312};
2016 1313
1314static const QRgb install_data[] = {
1315 0x0,0x0,0x0,0x2fcac00,0x49feb50d,0xd2ffd436,0x68e2a50e,0x4f7a500,0x8afabb25,0x3edd9508,0x0,0x0,0x0,0x0,
1316 0x0,0xfdad00,0x31feb007,0xb9ffd147,0xfdfff275,0xffffff72,0xe6f8d235,0xa0f5be35,0xfffff883,0xf3f9dc4d,0x53d6890a,0x301b00,0x0,0x0,
1317 0x2f3a600,0x97fec53f,0xfcffec94,0xffffffa4,0xffffff87,0xffffe951,0xfffed131,0xfffbc232,0xfffef974,0xfffff55e,0xfaf7cb35,0x6bd27f08,0x1522b00,0x0,
1318 0x2e09900,0x97f9c240,0xfffffdba,0xfffff082,0xffffcf34,0xffffd534,0xffffed52,0xfffec724,0xfff6bd27,0xfffce047,0xffffd636,0xfdf8b418,0x77c56901,0x1000000,
1319 0xa3f6ab09,0xbcfac646,0xffffc635,0xffffc01a,0xffffd332,0xffffe649,0xfffff761,0xffffd939,0xffffdd40,0xfff1b92b,0xfff9bd21,0xf1e6960c,0x517a3c00,0x1000000,
1320 0x12bb8001,0xbcf6c643,0xffffea66,0xfffdc421,0xffffde40,0xfffff057,0xfffffe79,0xffffe94e,0xffffef55,0xfffcea56,0xffe3981c,0xd3cd790b,0x84c75e02,0x279c3d00,
1321 0x0,0xdb57b00,0xe6f9bb1a,0xfffdd73b,0xfff8c52d,0xfffff865,0xfff8d75b,0xfff9d943,0xfff1cb44,0xffefc33b,0xfff9d03a,0xe7d78b14,0x76904202,0x11260f00,
1322 0x0,0x2e89700,0xdcfab310,0xfff8b417,0xfff5ac13,0xffea960a,0xffe88f05,0xffecb64c,0xfffaee74,0xffecbc39,0xfada7f0c,0x36512100,0x1000000,0x0,
1323 0x0,0x2e28d00,0xdcf8bc20,0xffffd635,0xfffed334,0xfff8c631,0xfff2b630,0xffefb22e,0xffedad28,0xfffbc325,0xfae89e19,0x295c2200,0x0,0x0,
1324 0x0,0x1d88300,0xcdf0b124,0xffffe84e,0xffffeb50,0xffffec54,0xffffe552,0xffffe043,0xffffdf41,0xffffdd3f,0xfae7aa2a,0x295b2200,0x0,0x0,
1325 0x0,0x0,0x25bc6c02,0xd6e7ac2f,0xfffef667,0xfffffd70,0xfffff668,0xfffff35b,0xfffff158,0xfef5cf47,0xd0c1741d,0x1b3e1700,0x0,0x0,
1326 0x0,0x0,0x0,0x1aa65600,0xc9dc952f,0xfffdf18f,0xfffffe86,0xfff9e161,0xe1d08d2d,0x70883a06,0x11140700,0x0,0x0,0x0,
1327 0x0,0x0,0x0,0x0,0x10924200,0xb9cf7a2f,0xedd99445,0x8695420b,0x1b2c1000,0x1000000,0x0,0x0,0x0,0x0,
1328 0x0,0x0,0x0,0x0,0x0,0xa782e00,0x214b1c00,0x2000000,0x0,0x0,0x0,0x0,0x0,0x0
1329};
1330
2017static const QRgb italic_data[] = { 1331static const QRgb italic_data[] = {
2018 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 1332 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
2019 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 1333 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
2020 0x0,0x0,0x0,0x0,0x0,0x0,0x54000000,0x60000000,0x60000000,0x3c000000,0x0,0x0,0x0,0x0, 1334 0x0,0x0,0x0,0x0,0x0,0x0,0x54000000,0x60000000,0x60000000,0x3c000000,0x0,0x0,0x0,0x0,
2021 0x0,0x0,0x0,0x0,0x0,0x0,0x70000000,0xff000000,0xdf000000,0x50000000,0x0,0x0,0x0,0x0, 1335 0x0,0x0,0x0,0x0,0x0,0x0,0x70000000,0xff000000,0xdf000000,0x50000000,0x0,0x0,0x0,0x0,
2022 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff000000,0xbf000000,0x0,0x0,0x0,0x0,0x0, 1336 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff000000,0xbf000000,0x0,0x0,0x0,0x0,0x0,
2023 0x0,0x0,0x0,0x0,0x0,0x0,0xa7000000,0xff000000,0xbf000000,0x0,0x0,0x0,0x0,0x0, 1337 0x0,0x0,0x0,0x0,0x0,0x0,0xa7000000,0xff000000,0xbf000000,0x0,0x0,0x0,0x0,0x0,
2024 0x0,0x0,0x0,0x0,0x0,0x0,0xdf000000,0xe3000000,0x18000000,0x0,0x0,0x0,0x0,0x0, 1338 0x0,0x0,0x0,0x0,0x0,0x0,0xdf000000,0xe3000000,0x18000000,0x0,0x0,0x0,0x0,0x0,
2025 0x0,0x0,0x0,0x0,0x0,0x0,0xdf000000,0xdf000000,0x0,0x0,0x0,0x0,0x0,0x0, 1339 0x0,0x0,0x0,0x0,0x0,0x0,0xdf000000,0xdf000000,0x0,0x0,0x0,0x0,0x0,0x0,
2026 0x0,0x0,0x0,0x0,0x0,0x30000000,0xe7000000,0xdf000000,0x0,0x0,0x0,0x0,0x0,0x0, 1340 0x0,0x0,0x0,0x0,0x0,0x30000000,0xe7000000,0xdf000000,0x0,0x0,0x0,0x0,0x0,0x0,
2027 0x0,0x0,0x0,0x0,0x0,0xbf000000,0xff000000,0x8b000000,0x0,0x0,0x0,0x0,0x0,0x0, 1341 0x0,0x0,0x0,0x0,0x0,0xbf000000,0xff000000,0x8b000000,0x0,0x0,0x0,0x0,0x0,0x0,
2028 0x0,0x0,0x0,0x0,0x0,0xbf000000,0xff000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 1342 0x0,0x0,0x0,0x0,0x0,0xbf000000,0xff000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
2029 0x0,0x0,0x0,0x0,0x64000000,0xe7000000,0xff000000,0x8b000000,0x0,0x0,0x0,0x0,0x0,0x0, 1343 0x0,0x0,0x0,0x0,0x64000000,0xe7000000,0xff000000,0x8b000000,0x0,0x0,0x0,0x0,0x0,0x0,
2030 0x0,0x0,0x0,0x0,0x28000000,0x40000000,0x40000000,0x38000000,0x0,0x0,0x0,0x0,0x0,0x0, 1344 0x0,0x0,0x0,0x0,0x28000000,0x40000000,0x40000000,0x38000000,0x0,0x0,0x0,0x0,0x0,0x0,
2031 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0 1345 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0
2032}; 1346};
2033 1347
2034static const QRgb konsole_data[] = { 1348static const QRgb konsole_data[] = {
2035 0x24dadae9,0xf5ddddeb,0xe6d8d8e8,0xe6cfcee3,0xe6c9c8e0,0xe6c2c0dc,0xe6b8b7d7,0xe6aeaed4,0xe6a4a5d0,0xe69b9dcc,0xed9c9dce,0xa08586c6,0x1b6263b6,0x0, 1349 0x24dadae9,0xf5ddddeb,0xe6d8d8e8,0xe6cfcee3,0xe6c9c8e0,0xe6c2c0dc,0xe6b8b7d7,0xe6aeaed4,0xe6a4a5d0,0xe69b9dcc,0xed9c9dce,0xa08586c6,0x1b6263b6,0x0,
2036 0x49e3e3f3,0xfff3f7fc,0xffd4e2f3,0xffdde4f2,0xffdce6f4,0xffdbe6f6,0xffd7e5f8,0xffd2e5fa,0xffcde3fa,0xffc6def7,0xffe0ebf8,0xe0a9aad3,0x33686ab2,0x0, 1350 0x49e3e3f3,0xfff3f7fc,0xffd4e2f3,0xffdde4f2,0xffdce6f4,0xffdbe6f6,0xffd7e5f8,0xffd2e5fa,0xffcde3fa,0xffc6def7,0xffe0ebf8,0xe0a9aad3,0x33686ab2,0x0,
2037 0x61e3e3fd,0xffcee1f6,0xff71a9e4,0xffb6d8f4,0xffa0d5f4,0xff8dd0f6,0xff76c2f6,0xff5db1f5,0xff429ef3,0xff2181e4,0xff83b1e7,0xebaeafdb,0x387778c3,0x0, 1351 0x61e3e3fd,0xffcee1f6,0xff71a9e4,0xffb6d8f4,0xffa0d5f4,0xff8dd0f6,0xff76c2f6,0xff5db1f5,0xff429ef3,0xff2181e4,0xff83b1e7,0xebaeafdb,0x387778c3,0x0,
2038 0x77d9d9f9,0xffcfe3f7,0xff83b5e7,0xffcddbef,0xffb9e3f6,0xfface5ff,0xff87d1ff,0xff61b9ff,0xff41a4fe,0xff1c7ce9,0xff81ace4,0xf8b3b4e2,0x3d8385d0,0x0, 1352 0x77d9d9f9,0xffcfe3f7,0xff83b5e7,0xffcddbef,0xffb9e3f6,0xfface5ff,0xff87d1ff,0xff61b9ff,0xff41a4fe,0xff1c7ce9,0xff81ace4,0xf8b3b4e2,0x3d8385d0,0x0,
2039 0x91d6d6f7,0xffd0e4f7,0xff7eb9ea,0xffc6e8f6,0xffa7dffa,0xff80c4f3,0xff99a075,0xff938f61,0xff6a7770,0xff275498,0xff80a3df,0xfeb7bae8,0x3f8c90da,0x0, 1353 0x91d6d6f7,0xffd0e4f7,0xff7eb9ea,0xffc6e8f6,0xffa7dffa,0xff80c4f3,0xff99a075,0xff938f61,0xff6a7770,0xff275498,0xff80a3df,0xfeb7bae8,0x3f8c90da,0x0,
2040 0xaed5d5f7,0xffd2e7f8,0xff78bdee,0xff94d3f7,0xff4ca7f3,0xff7e9282,0xffe3bf37,0xffefdeb5,0xffdabf96,0xff6d5a50,0xff809ddf,0xffbcc0ee,0x40949ae5,0x0, 1354 0xaed5d5f7,0xffd2e7f8,0xff78bdee,0xff94d3f7,0xff4ca7f3,0xff7e9282,0xffe3bf37,0xffefdeb5,0xffdabf96,0xff6d5a50,0xff809ddf,0xffbcc0ee,0x40949ae5,0x0,
2041 0xc7d3d3f7,0xffcee5f8,0xff3c97e5,0xff3396ef,0xff198afa,0xff517e9a,0xffecbc37,0xfffffae2,0xffe9d7bf,0xff694e4e,0xff7291e8,0xffbac5fa,0x409fa7f5,0x0, 1355 0xc7d3d3f7,0xffcee5f8,0xff3c97e5,0xff3396ef,0xff198afa,0xff517e9a,0xffecbc37,0xfffffae2,0xffe9d7bf,0xff694e4e,0xff7291e8,0xffbac5fa,0x409fa7f5,0x0,
2042 0xe1d5d5f6,0xffc7e0f7,0xff2289e7,0xff68949f,0xffd29e2d,0xffeeab29,0xfffdb818,0xfffffae2,0xffeddfc2,0xffb07818,0xff985e0a,0xff937878,0x507b76a0,0x308091f, 1356 0xe1d5d5f6,0xffc7e0f7,0xff2289e7,0xff68949f,0xffd29e2d,0xffeeab29,0xfffdb818,0xfffffae2,0xffeddfc2,0xffb07818,0xff985e0a,0xff937878,0x507b76a0,0x308091f,
2043 0xf3d5d4f7,0xffdae9f8,0xff61a5ea,0xff99a396,0xfff0cf81,0xfffef9e6,0xfffcb91f,0xfffff4c9,0xfff0e7b7,0xffd9c070,0xffd9b046,0xffa98f81,0x6471739e,0x61b1d4a, 1357 0xf3d5d4f7,0xffdae9f8,0xff61a5ea,0xff99a396,0xfff0cf81,0xfffef9e6,0xfffcb91f,0xfffff4c9,0xfff0e7b7,0xffd9c070,0xffd9b046,0xffa98f81,0x6471739e,0x61b1d4a,
2044 0xd2cbccf6,0xe6d4d4e8,0xede2d5c8,0xfff6d395,0xffeeb034,0xfffae7b8,0xfff9b625,0xfffee793,0xffeadba8,0xffd6be75,0xffbc9946,0xff9a836b,0x886c5b5f,0xc391f27, 1358 0xd2cbccf6,0xe6d4d4e8,0xede2d5c8,0xfff6d395,0xffeeb034,0xfffae7b8,0xfff9b625,0xfffee793,0xffeadba8,0xffd6be75,0xffbc9946,0xff9a836b,0x886c5b5f,0xc391f27,
2045 0x43a2a3e7,0x607575b0,0x9dc5943a,0xfefbc235,0xfff7d171,0xfff4d381,0xfff8c344,0xfffbdb70,0xffdfc890,0xffdcc280,0xffdab659,0xffc08c25,0xcf723b02,0x18582400, 1359 0x43a2a3e7,0x607575b0,0x9dc5943a,0xfefbc235,0xfff7d171,0xfff4d381,0xfff8c344,0xfffbdb70,0xffdfc890,0xffdcc280,0xffdab659,0xffc08c25,0xcf723b02,0x18582400,
2046 0x0,0x2f3a200,0x28febe00,0x98fec940,0xedfad06c,0xfff2c965,0xfff3ce6e,0xfff7cd57,0xffd9c28c,0xffdec688,0xffc4a057,0xbea4731b,0x6f703d03,0xc572600, 1360 0x0,0x2f3a200,0x28febe00,0x98fec940,0xedfad06c,0xfff2c965,0xfff3ce6e,0xfff7cd57,0xffd9c28c,0xffdec688,0xffc4a057,0xbea4731b,0x6f703d03,0xc572600,
2047 0x0,0x0,0x0,0x17fca300,0xb0fcb20a,0xfff8b41b,0xffe4ae3f,0xffe7b03e,0xffc99f56,0xffc99943,0xe4a26b1d,0x5a5c2700,0xa1e0a00,0x1000000, 1361 0x0,0x0,0x0,0x17fca300,0xb0fcb20a,0xfff8b41b,0xffe4ae3f,0xffe7b03e,0xffc99f56,0xffc99943,0xe4a26b1d,0x5a5c2700,0xa1e0a00,0x1000000,
2048 0x0,0x0,0x0,0x0,0x15ffb200,0x47a56e00,0x4e916312,0x568e6015,0x4e79531c,0x51724912,0x44573205,0x132a1100,0x0,0x0 1362 0x0,0x0,0x0,0x0,0x15ffb200,0x47a56e00,0x4e916312,0x568e6015,0x4e79531c,0x51724912,0x44573205,0x132a1100,0x0,0x0
2049}; 1363};
2050 1364
2051static const QRgb language_data[] = { 1365static const QRgb language_data[] = {
2052 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 1366 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
2053 0x0,0x0,0x0,0x7216ac7,0x2d2068c6,0x481d64c5,0x5d1a5ebf,0x4d1759bb,0x311454b7,0xd1048a4,0x0,0x0,0x0,0x0, 1367 0x0,0x0,0x0,0x7216ac7,0x2d2068c6,0x481d64c5,0x5d1a5ebf,0x4d1759bb,0x311454b7,0xd1048a4,0x0,0x0,0x0,0x0,
2054 0x0,0x82571cc,0x5e2773ce,0xca4684cd,0xf15078aa,0xfe89acd4,0xffafcdef,0xff7a9cc4,0xf473a0d7,0xd44c84d3,0x74154eb1,0xf083488,0x0,0x0, 1368 0x0,0x82571cc,0x5e2773ce,0xca4684cd,0xf15078aa,0xfe89acd4,0xffafcdef,0xff7a9cc4,0xf473a0d7,0xd44c84d3,0x74154eb1,0xf083488,0x0,0x0,
2055 0xe2773ce,0xab3983d8,0xfc8ac4f3,0xff7d8388,0xffe397a5,0xffa62927,0xffb6647a,0xffb3b3b4,0xffa4b7c0,0xffc4ecfe,0xfe8ec4f1,0xc4275fbc,0x20052e81,0x0, 1369 0xe2773ce,0xab3983d8,0xfc8ac4f3,0xff7d8388,0xffe397a5,0xffa62927,0xffb6647a,0xffb3b3b4,0xffa4b7c0,0xffc4ecfe,0xfe8ec4f1,0xc4275fbc,0x20052e81,0x0,
2056 0x8d317cd5,0xff7cbcf6,0xffb6eaff,0xff717676,0xffee9492,0xffb41815,0xffb90d0b,0xffdb9798,0xff666e72,0xffabd0df,0xffb2e9ff,0xff7fbdf5,0xb01a4eb0,0xd001442, 1370 0x8d317cd5,0xff7cbcf6,0xffb6eaff,0xff717676,0xffee9492,0xffb41815,0xffb90d0b,0xffdb9798,0xff666e72,0xffabd0df,0xffb2e9ff,0xff7fbdf5,0xb01a4eb0,0xd001442,
2057 0xed4990e2,0xff8dccff,0xffb0e8ff,0xff545959,0xff6e6b6a,0xff593932,0xff3a150e,0xff554e47,0xff282d25,0xff52656e,0xfface6ff,0xff8eccff,0xf53f79d4,0x32001b58, 1371 0xed4990e2,0xff8dccff,0xffb0e8ff,0xff545959,0xff6e6b6a,0xff593932,0xff3a150e,0xff554e47,0xff282d25,0xff52656e,0xfface6ff,0xff8eccff,0xf53f79d4,0x32001b58,
2058 0xfc5297e5,0xff8ac9ff,0xff9fdcff,0xff363d3c,0xff6e4749,0xffd00303,0xffab0e01,0xff7c1a14,0xffad130f,0xff733036,0xff99d5f8,0xff85c4ff,0xfd4e89de,0x40001850, 1372 0xfc5297e5,0xff8ac9ff,0xff9fdcff,0xff363d3c,0xff6e4749,0xffd00303,0xffab0e01,0xff7c1a14,0xffad130f,0xff733036,0xff99d5f8,0xff85c4ff,0xfd4e89de,0x40001850,
2059 0xbd3b80d3,0xff8dccfd,0xff9ddbff,0xff7aa2b4,0xff6f5956,0xffe28b00,0xffeed004,0xffb45e0f,0xfffa7900,0xffa96a30,0xff92cff7,0xff88c7fd,0xda3064bb,0x2c000f31, 1373 0xbd3b80d3,0xff8dccfd,0xff9ddbff,0xff7aa2b4,0xff6f5956,0xffe28b00,0xffeed004,0xffb45e0f,0xfffa7900,0xffa96a30,0xff92cff7,0xff88c7fd,0xda3064bb,0x2c000f31,
2060 0x3b1e5db3,0xec5596db,0xff9edbfc,0xffb5e8fd,0xff6b645a,0xffb18e4f,0xff998c6a,0xff967b2d,0xffb5ae2f,0xff98a082,0xff99d6fa,0xf25088d3,0x73062871,0xd000000, 1374 0x3b1e5db3,0xec5596db,0xff9edbfc,0xffb5e8fd,0xff6b645a,0xffb18e4f,0xff998c6a,0xff967b2d,0xffb5ae2f,0xff98a082,0xff99d6fa,0xf25088d3,0x73062871,0xd000000,
2061 0x20b2d5d,0x43174e9e,0xc8427cc6,0xfe88b9e7,0xff8a9eab,0xffc9d8e1,0xffcfdce4,0xffb9ccd6,0xffadccdf,0xff81b3e2,0xdb3a6cba,0x6d05256a,0x1900050f,0x1000000, 1375 0x20b2d5d,0x43174e9e,0xc8427cc6,0xfe88b9e7,0xff8a9eab,0xffc9d8e1,0xffcfdce4,0xffb9ccd6,0xffadccdf,0xff81b3e2,0xdb3a6cba,0x6d05256a,0x1900050f,0x1000000,
2062 0x0,0x1000000,0x11071e44,0x911a4fa7,0xffb2d1ef,0xfdb3caea,0xdc5e7fbf,0xc64166b0,0xa61a4295,0x6e082970,0x2c000a23,0xc000000,0x1000000,0x0, 1376 0x0,0x1000000,0x11071e44,0x911a4fa7,0xffb2d1ef,0xfdb3caea,0xdc5e7fbf,0xc64166b0,0xa61a4295,0x6e082970,0x2c000a23,0xc000000,0x1000000,0x0,
2063 0x0,0x0,0x10b45b0,0xbe2a61bd,0xe85c87c8,0x890e3683,0x29010716,0x13000000,0xe000000,0x6000000,0x1000000,0x0,0x0,0x0, 1377 0x0,0x0,0x10b45b0,0xbe2a61bd,0xe85c87c8,0x890e3683,0x29010716,0x13000000,0xe000000,0x6000000,0x1000000,0x0,0x0,0x0,
2064 0x0,0x0,0x170a41a9,0x9e0a3d9d,0x48041c4e,0x12000000,0x3000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 1378 0x0,0x0,0x170a41a9,0x9e0a3d9d,0x48041c4e,0x12000000,0x3000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
2065 0x0,0x0,0x1052259,0xc010a1b,0x6000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0 1379 0x0,0x0,0x1052259,0xc010a1b,0x6000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0
2066}; 1380};
2067 1381
1382static const QRgb Language_data[] = {
1383 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
1384 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
1385 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
1386 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
1387 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
1388 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
1389 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
1390 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x411d62c2,0x431b5ebb,0x441859b7,
1391 0x441858b5,0x4000000,0x1000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
1392 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x31216bc7,0x822069c7,0xc12068c6,0xf01f67c6,
1393 0xff1d65c6,0xff1c63c4,0xff1b60c2,0xff195ec1,0xff185cc0,0xff175abe,0xf01658bc,0xc31453b7,0x87124eb0,0x370f46a1,0x4000000,0x1000000,0x0,0x0,
1394 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x61246fcb,0xe0236ecb,
1395 0xff216cca,0xff387fda,0xff609de7,0xff85b7f1,0xffaad3ff,0xffacd4ff,0xffc4e2ff,0xffc3e2ff,0xffaad3ff,0xffa7d2ff,0xff80b2ee,0xff5993e1,0xff2e6ecf,0xff114fb7,
1396 0xe20f4cb4,0x6b0d42a2,0x8000000,0x2000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
1397 0x512571cc,0xe02471cc,0xff2c77d2,0xff68a6eb,0xff7c9ebc,0xff737b7f,0xff505052,0xff2c2c2c,0xffb6bec2,0xffe6eef3,0xffe6edf3,0xffe4ecf2,0xffa9b1b7,0xff4f5355,
1398 0xff6e7a7f,0xffd7f3ff,0xffc9edff,0xff9fd0fa,0xff5d98e3,0xff1855bc,0xe30c45ae,0x5c093b99,0x7000000,0x2000000,0x0,0x0,0x0,0x0,
1399 0x0,0x0,0x0,0x902572cd,0xff2471cd,0xff579be6,0xffacddff,0xff161616,0xffa8a8a8,0xffffffff,0xffc8b8b9,0xffef0030,0xff503020,0xff484849,
1400 0xff606060,0xff808080,0xffb0b0b0,0xff989899,0xff4d5254,0xffd9f4ff,0xffd1f2ff,0xffc9efff,0xffc1edff,0xffa5dbff,0xff4883d8,0xff0942af,0x9d073a9d,0xd000000,
1401 0x2000000,0x0,0x0,0x0,0x0,0x0,0xa02672cd,0xff2976d1,0xff72b2f6,0xffb4e7ff,0xffc0edff,0xff404040,0xffc8c8c9,0xffffffff,
1402 0xffe06090,0xffff0000,0xff923822,0xffff0000,0xffef3060,0xffef97da,0xffffffff,0xffc8c8c9,0xff404040,0xffc8dbe5,0xffd1f2ff,0xffc9efff,0xffc1edff,0xffb9ebff,
1403 0xffb1e8ff,0xff70adf0,0xff0d45b1,0xae05379b,0x10000000,0x3000000,0x0,0x0,0x0,0x812673cd,0xff2a76d1,0xff6aacf6,0xffabe4ff,0xffb7eaff,
1404 0xffbfecff,0xff363636,0xffa0a0a0,0xffffffff,0xffff6060,0xffff0000,0xffef0000,0xffbc220c,0xffff0000,0xffff0000,0xffffcad5,0xffe0e0e0,0xff8c8c8c,0xff59626a,
1405 0xffcbecfa,0xffc8efff,0xffc0edff,0xffb8eaff,0xffb0e8ff,0xffa5e2ff,0xff5f9eef,0xff0b41ae,0x87022f8c,0xf000000,0x2000000,0x0,0x21256fc9,0xff2572ce,
1406 0xff5fa3f3,0xff8bcaff,0xffade7ff,0xffb5eaff,0xffbdecff,0xff222222,0xffa0a0a0,0xffffffff,0xffff8a76,0xffff0000,0xffd51616,0xff661616,0xff961616,0xffff0000,
1407 0xffff0000,0xffffffff,0xffa0a0a2,0xff3d4147,0xff56636d,0xffc5eeff,0xffbdecff,0xffb6eaff,0xffaee8ff,0xffa7e4ff,0xff89c8ff,0xff5290e9,0xff0236a6,0x3f011b54,
1408 0xa000000,0x1000000,0x912470cb,0xff3882da,0xff76b7ff,0xff90cfff,0xffabe6ff,0xffb2e9ff,0xffbaebff,0xff0c1c0c,0xff989899,0xffffffff,0xff806070,0xff384848,
1409 0xff585858,0xff262616,0xff000000,0xff6c3c3c,0xff800000,0xffb0b0b0,0xff646455,0xff223232,0xff101000,0xff60767f,0xffbbebff,0xffb3e9ff,0xfface7ff,0xffa6e3ff,
1410 0xff8bcaff,0xff70b1ff,0xff1c53bc,0xa8002b8c,0x18000000,0x4000000,0xe02470cc,0xff5da1ef,0xff7bbbff,0xff8dccff,0xffa8e5ff,0xffafe8ff,0xffb6eaff,0xff000000,
1411 0xff7e7e7f,0xffe0e0e0,0xff000000,0xff324222,0xff585858,0xff3c3c2c,0xff000000,0xff202010,0xff324232,0xff585858,0xff4e4e4e,0xff102010,0xff000000,0xff000000,
1412 0xffb6eaff,0xffb0e8ff,0xffa9e5ff,0xffa4e1ff,0xff8ac9ff,0xff74b5ff,0xff4d8ae3,0xe800309e,0x28000000,0xa000000,0xff236fcc,0xff70b2f9,0xff7fbfff,0xff84c3ff,
1413 0xffa0deff,0xffabe6ff,0xffb1e8ff,0xff000000,0xff747475,0xffe0e0e0,0xff000000,0xff201010,0xff8c2c2c,0xffd00000,0xff900000,0xff3c1c0c,0xff183828,0xff525242,
1414 0xff585858,0xff262616,0xff000000,0xff100000,0xffb2e9ff,0xffabe7ff,0xffa6e3ff,0xff9cdaff,0xff7fbfff,0xff78b9ff,0xff65a4f4,0xff0032a4,0x33000000,0x10000000,
1415 0xff226dcb,0xff7ebeff,0xff83c3ff,0xff88c7ff,0xff8ecdff,0xffa3e1ff,0xfface7ff,0xff000000,0xff586859,0xffc8c8c9,0xff100000,0xff900000,0xffef0000,0xffff0000,
1416 0xffb00000,0xff700000,0xff501000,0xff7c2c2c,0xff7c422c,0xff961616,0xffa00000,0xff800000,0xff56737f,0xffa7e4ff,0xff9fddff,0xff87c7ff,0xff81c1ff,0xff7cbcff,
1417 0xff77b7ff,0xff0032a4,0x38000000,0x12000000,0xf0216bc8,0xff6aacf1,0xff87c6ff,0xff8ccbff,0xff91cfff,0xff95d4ff,0xffa0ddff,0xff000000,0xff2c2c2c,0xff9aa6b2,
1418 0xff400000,0xffa00000,0xffe00000,0xffff0000,0xffe02000,0xffa02000,0xff5c0c0c,0xffd00000,0xffff0000,0xffff0000,0xffc00000,0xff800000,0xff53717f,0xff9cdaff,
1419 0xff8fceff,0xff8ac9ff,0xff85c4ff,0xff7fbfff,0xff5c99e8,0xf40031a1,0x39000000,0x13000000,0xb41f66c3,0xff4c91df,0xff8acaff,0xff90ceff,0xff95d3ff,0xff9ad8ff,
1420 0xff9edcff,0xff000000,0xffa9e5ff,0xffb7d1e6,0xff200000,0xff900000,0xffd04600,0xffffdf00,0xffffff00,0xffefb000,0xff763c16,0xffd02c00,0xffff0000,0xffff0000,
1421 0xffd03600,0xffb02c00,0xff4d6c7f,0xff97d6ff,0xff92d1ff,0xff8dccff,0xff88c7ff,0xff83c2ff,0xff3770cc,0xc7002c90,0x35000000,0x11000000,0x491b5aaf,0xff246bc9,
1422 0xff87c6fb,0xff93d2ff,0xff98d7ff,0xff9ddbff,0xffa2e0ff,0xff53717f,0xffade7ff,0xffb8d0e6,0xff000000,0xffdf6000,0xffffa000,0xffffff00,0xffffff00,0xffffc000,
1423 0xff9c4c0c,0xffd0b020,0xffffc000,0xffffc000,0xffffc000,0xffff8000,0xff4f6e7f,0xff9bd9ff,0xff96d4ff,0xff91cfff,0xff8bcaff,0xff7dbcf9,0xff083baa,0x74001c5b,
1424 0x2c000000,0xc000000,0x5000000,0xc61b60bd,0xff397dd2,0xff96d5ff,0xff9cdaff,0xffa1dfff,0xffa6e3ff,0xfface7ff,0xffb3e9ff,0xffb9d0e6,0xff000000,0xffff8000,
1425 0xffefb000,0xffa08600,0xff707020,0xffa6602c,0xff7c480c,0xffb09020,0xffffff00,0xffffff00,0xffffdf00,0xffef7600,0xff51707f,0xff9fdcff,0xff99d7ff,0xff94d2ff,
1426 0xff8ecdff,0xff2258bb,0xd2002d95,0x3d000000,0x1d000000,0x5000000,0x1000000,0x1d0f366c,0xf21a5ebf,0xff498bd8,0xff9fdcff,0xffa4e2ff,0xffaae6ff,0xffb2e9ff,
1427 0xffbaebff,0xffbbd0e5,0xff000000,0xffdf8000,0xff705030,0xffa4a7ac,0xffadb2b9,0xff705600,0xff564626,0xffefb000,0xffb09000,0xff808000,0xff806000,0xff4b5a40,
1428 0xffa7e4ff,0xffa2dfff,0xff9cdaff,0xff96d5ff,0xff366dc6,0xe900309d,0x51000a20,0x2c000000,0xe000000,0x1000000,0x0,0x4000000,0x4311438a,0xe61658b9,
1429 0xff3072c9,0xff95d2f7,0xffafe8ff,0xffb7eaff,0xffbfedff,0xffbad0e4,0xff000000,0xff505356,0xffbfc9d9,0xffbdc7d8,0xffbbc6d7,0xffa9afba,0xff7d838e,0xff565c66,
1430 0xff838c9b,0xffb1bdd2,0xff8fabc1,0xffb3e9ff,0xffabe6ff,0xffa4e2ff,0xff8bc7f4,0xff1d51b5,0xdd002f9a,0x6900174b,0x33000000,0x16000000,0x4000000,0x0,
1431 0x0,0x0,0x7000000,0x2809244c,0xbf1350ad,0xff1d5dbf,0xff629ddc,0xffb1e2fb,0xffc4eeff,0xffc8ebfa,0xff000000,0xffb9ced8,0xffbed0d8,0xffc1d0d8,
1432 0xffc2d0d8,0xffbfd0d8,0xffbbcfd8,0xffb6cdd8,0xffb0ccd8,0xffaac9d8,0xffacd4e4,0xffb7eaff,0xffa3dcf9,0xff538bd2,0xff0a3daa,0xc7002c90,0x50000a21,0x32000000,
1433 0x19000000,0x6000000,0x0,0x0,0x0,0x0,0x1000000,0x6000000,0x16000000,0x600d377c,0xce104aaa,0xff104eb6,0xff5489d1,0xffa0c7ec,
1434 0xffd9f4ff,0xffe1f6ff,0xffe9f9ff,0xffeefaff,0xfff0fbff,0xffecfaff,0xffe6f8ff,0xffdef5ff,0xffd5f3ff,0xffc0e4f9,0xff86b3e3,0xff4677c6,0xff0032a4,0xd2002d95,
1435 0x75001b59,0x3d000000,0x2b000000,0x15000000,0x6000000,0x1000000,0x0,0x0,0x0,0x0,0x0,0x0,0x4000000,0xe000000,
1436 0x1e000000,0x56082a65,0xda0d46aa,0xff3f72c5,0xffdcf5ff,0xffe5f8ff,0xffeefaff,0xffe7f0fa,0xff8ea8da,0xff7b9ad4,0xff7698d3,0xff3965bc,0xff2957b6,0xff0032a4,
1437 0xe900309d,0xbb002b8c,0x6800174c,0x3c000000,0x2f000000,0x1e000000,0xe000000,0x4000000,0x0,0x0,0x0,0x0,0x0,0x0,
1438 0x0,0x0,0x0,0x1000000,0x6000000,0xf000000,0xe30c47af,0xff89b2e2,0xffddf5ff,0xffe6f8ff,0xffa6bfe5,0xff1548b0,0xdd05379f,0xa4032c83,
1439 0xa2022b84,0xa1012983,0x71001c5d,0x5700123c,0x3b000000,0x34000000,0x29000000,0x1b000000,0xf000000,0x6000000,0x1000000,0x0,0x0,0x0,
1440 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x410c46af,0xff1751b6,0xffc6e7fa,0xffc0def5,0xff3e6dc1,
1441 0xf4063ca8,0x99042b7d,0x41000000,0x33000000,0x29000000,0x26000000,0x24000000,0x1e000000,0x17000000,0x11000000,0xb000000,0x5000000,0x1000000,0x0,
1442 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xa10b45af,
1443 0xff5284ce,0xff6c99d6,0xff083fad,0xc7063697,0x5c02153c,0x38000000,0x24000000,0x13000000,0xb000000,0xa000000,0x8000000,0x5000000,0x2000000,0x1000000,
1444 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
1445 0x0,0x0,0x100b45b0,0xff0a44b0,0xff154db3,0xe8083da6,0x8104266b,0x3e000000,0x2c000000,0x19000000,0xa000000,0x2000000,0x0,0x0,
1446 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
1447 0x0,0x0,0x0,0x0,0x0,0x0,0x720a43ad,0xff0942af,0x9b073690,0x4d020d24,0x34000000,0x20000000,0xf000000,0x4000000,
1448 0x1000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
1449 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x15083385,0x35052869,0x2c000000,0x27000000,
1450 0x15000000,0x8000000,0x2000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
1451 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
1452 0x3000000,0xb000000,0x11000000,0xb000000,0x3000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
1453 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
1454 0x0,0x0,0x0,0x0,0x0,0x1000000,0x2000000,0x1000000,0x0,0x0,0x0,0x0,0x0,0x0,
1455 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
1456 0x0,0x0
1457};
1458
2068static const QRgb left_data[] = { 1459static const QRgb left_data[] = {
2069 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 1460 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
2070 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 1461 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
2071 0xc000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0xc000000, 1462 0xc000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0xc000000,
2072 0x10000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x10000000, 1463 0x10000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x10000000,
2073 0x14000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x64000000,0x0,0x0,0x0,0x0, 1464 0x14000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x64000000,0x0,0x0,0x0,0x0,
2074 0x8000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x28000000,0x0,0x0,0x0,0x0, 1465 0x8000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x28000000,0x0,0x0,0x0,0x0,
2075 0x1c000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0x1c000000, 1466 0x1c000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0x1c000000,
2076 0x4000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x14000000,0x0,0x0,0x0,0x0, 1467 0x4000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x14000000,0x0,0x0,0x0,0x0,
2077 0x18000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0x78000000,0x0,0x0,0x0,0x0, 1468 0x18000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0x78000000,0x0,0x0,0x0,0x0,
2078 0xc000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0xc000000, 1469 0xc000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0xc000000,
2079 0x10000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x10000000, 1470 0x10000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x10000000,
2080 0x14000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x64000000,0x0,0x0,0x0,0x0, 1471 0x14000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x64000000,0x0,0x0,0x0,0x0,
2081 0x8000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x28000000,0x0,0x0,0x0,0x0, 1472 0x8000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x28000000,0x0,0x0,0x0,0x0,
2082 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0 1473 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0
2083}; 1474};
2084 1475
2085static const QRgb library_data[] = { 1476static const QRgb library_data[] = {
2086 0x0,0x0,0x0,0x1fcfcfd1,0xbbe2e2e4,0xbbe3e3e6,0xbbe0e0e4,0xbbdcdce2,0xbbd6d6df,0xb3c3c3d0,0x218f8f9e,0x0,0x0,0x0, 1477 0x0,0x0,0x0,0x1fcfcfd1,0xbbe2e2e4,0xbbe3e3e6,0xbbe0e0e4,0xbbdcdce2,0xbbd6d6df,0xb3c3c3d0,0x218f8f9e,0x0,0x0,0x0,
2087 0x0,0x0,0x0,0x2dc8c8cd,0xfff6f6f7,0xffffffff,0xffffffff,0xfffcfcfd,0xfff5f5f9,0xffd9d9e4,0xdccbcbd8,0x1f828294,0x0,0x0, 1478 0x0,0x0,0x0,0x2dc8c8cd,0xfff6f6f7,0xffffffff,0xffffffff,0xfffcfcfd,0xfff5f5f9,0xffd9d9e4,0xdccbcbd8,0x1f828294,0x0,0x0,
2088 0x0,0x0,0x0,0x2dc3c3ca,0xfff5f5f6,0xffeef5fe,0xfffefeff,0xfffcfcfd,0xfff5f5f9,0xffd9d9e4,0xfffafafc,0xd8c4c4d4,0x1c78788e,0x0, 1479 0x0,0x0,0x0,0x2dc3c3ca,0xfff5f5f6,0xffeef5fe,0xfffefeff,0xfffcfcfd,0xfff5f5f9,0xffd9d9e4,0xfffafafc,0xd8c4c4d4,0x1c78788e,0x0,
2089 0x0,0x0,0x0,0x3193aed0,0xff7dd2f5,0xff10d2fc,0xff6bcdf8,0xfff9f9fd,0xfff5f5f9,0xffd4d4e1,0xffd5d5e0,0xffcdcddc,0xcea0a0bb,0x709090b, 1480 0x0,0x0,0x0,0x3193aed0,0xff7dd2f5,0xff10d2fc,0xff6bcdf8,0xfff9f9fd,0xfff5f5f9,0xffd4d4e1,0xffd5d5e0,0xffcdcddc,0xcea0a0bb,0x709090b,
2090 0x0,0x0,0x0,0x9e1bbff9,0xff05caff,0xff00c7ff,0xff01c6ff,0xff68baf2,0xfff4f4f8,0xffeeeef5,0xffe5e5ef,0xffdadbe8,0xf2c1c1d4,0x1108080b, 1481 0x0,0x0,0x0,0x9e1bbff9,0xff05caff,0xff00c7ff,0xff01c6ff,0xff68baf2,0xfff4f4f8,0xffeeeef5,0xffe5e5ef,0xffdadbe8,0xf2c1c1d4,0x1108080b,
2091 0x0,0x581e00,0x42fb761c,0xdd51b3c3,0xff06d2ff,0xff0ab0ff,0xff04adff,0xff32aaf0,0xfff1f1f6,0xffececf4,0xffe3e3ef,0xffdbdce9,0xf2bebfd3,0x1108080a, 1482 0x0,0x581e00,0x42fb761c,0xdd51b3c3,0xff06d2ff,0xff0ab0ff,0xff04adff,0xff32aaf0,0xfff1f1f6,0xffececf4,0xffe3e3ef,0xffdbdce9,0xf2bebfd3,0x1108080a,
2092 0x0,0x57fb862f,0xfeff9033,0xff839291,0xff01c1ff,0xff0bb1ff,0xff00b3ff,0xff30aaed,0xffeaeaf1,0xffe8e8f2,0xffe6e6f0,0xffdadbe8,0xf2bcbdd2,0x1108080a, 1483 0x0,0x57fb862f,0xfeff9033,0xff839291,0xff01c1ff,0xff0bb1ff,0xff00b3ff,0xff30aaed,0xffeaeaf1,0xffe8e8f2,0xffe6e6f0,0xffdadbe8,0xf2bcbdd2,0x1108080a,
2093 0x0,0x64f6812f,0xffff8931,0xfffd6f1f,0xff73869c,0xff0ea7f9,0xff01b49a,0xff05de22,0xff97e1a0,0xffebebf3,0xffe8e8f2,0xffdfe0eb,0xf2bdbed3,0x1107070a, 1484 0x0,0x64f6812f,0xffff8931,0xfffd6f1f,0xff73869c,0xff0ea7f9,0xff01b49a,0xff05de22,0xff97e1a0,0xffebebf3,0xffe8e8f2,0xffdfe0eb,0xf2bdbed3,0x1107070a,
2094 0x0,0x53e4641e,0xfffd7021,0xffff7427,0xffe27d2a,0xff0daf32,0xff02ce0d,0xff00cd0c,0xff07d011,0xffb8d9c1,0xffebebf3,0xffdcdde9,0xf2babbd1,0x1107070a, 1485 0x0,0x53e4641e,0xfffd7021,0xffff7427,0xffe27d2a,0xff0daf32,0xff02ce0d,0xff00cd0c,0xff07d011,0xffb8d9c1,0xffebebf3,0xffdcdde9,0xf2babbd1,0x1107070a,
2095 0x0,0x2160600,0x7bca4610,0xfdf95415,0xffcb6029,0xff02c110,0xff0fca1a,0xff04b015,0xff00da09,0xffa6d3ae,0xffededf5,0xffe2e3ed,0xf2bbbcd2,0x1107070a, 1486 0x0,0x2160600,0x7bca4610,0xfdf95415,0xffcb6029,0xff02c110,0xff0fca1a,0xff04b015,0xff00da09,0xffa6d3ae,0xffededf5,0xffe2e3ed,0xf2bbbcd2,0x1107070a,
2096 0x0,0x0,0x1000000,0x66884643,0xffd3d9d9,0xff32d43c,0xff0fe813,0xff00c80c,0xff04e707,0xffb2d4b9,0xfff0f0f6,0xffe3e5ef,0xf2babbd2,0x11060609, 1487 0x0,0x0,0x1000000,0x66884643,0xffd3d9d9,0xff32d43c,0xff0fe813,0xff00c80c,0xff04e707,0xffb2d4b9,0xfff0f0f6,0xffe3e5ef,0xf2babbd2,0x11060609,
2097 0x0,0x0,0x0,0x2d8f8fb0,0xffebebf2,0xffeef8ef,0xff4bde50,0xff44c74c,0xffbed8c4,0xfff0f0f5,0xfff2f2f8,0xffdfe1ec,0xf2b6b7d0,0x11060609, 1488 0x0,0x0,0x0,0x2d8f8fb0,0xffebebf2,0xffeef8ef,0xff4bde50,0xff44c74c,0xffbed8c4,0xfff0f0f5,0xfff2f2f8,0xffdfe1ec,0xf2b6b7d0,0x11060609,
2098 0x0,0x0,0x0,0x278888ab,0xe7c1c1d3,0xe8cacad9,0xe8c5c6d5,0xe8bebed0,0xe8c1c1d4,0xe8bebed3,0xe8bbbbd1,0xe8b3b3cc,0xdb9494b7,0x10050508, 1489 0x0,0x0,0x0,0x278888ab,0xe7c1c1d3,0xe8cacad9,0xe8c5c6d5,0xe8bebed0,0xe8c1c1d4,0xe8bebed3,0xe8bbbbd1,0xe8b3b3cc,0xdb9494b7,0x10050508,
2099 0x0,0x0,0x0,0x1000000,0xb000000,0xd000000,0xd000000,0xd000000,0xd000000,0xd000000,0xd000000,0xd000000,0xd000000,0x2000000 1490 0x0,0x0,0x0,0x1000000,0xb000000,0xd000000,0xd000000,0xd000000,0xd000000,0xd000000,0xd000000,0xd000000,0xd000000,0x2000000
2100}; 1491};
2101 1492
2102static const QRgb locked_data[] = {
2103 0x0,0x0,0x80d9d9db,0xbce4e4e6,0xbce2e2e5,0xbcdfdfe4,0xbcdcdce2,0xbcd7d7df,0xbcd1d1db,0x81aeaebe,0x5323237,0x0,0x0,0x0,
2104 0x0,0x0,0xb2dedee1,0xffffffff,0xffffffff,0xffffffff,0xfffdfdfe,0xfff7f7fa,0xffeeeef4,0xffd2d2de,0xa3b1b1c3,0x843434c,0x0,0x0,
2105 0x0,0x0,0xb2dbdbe0,0xffffffff,0xffffffff,0xffffffff,0xfffdfdfe,0xfff7f7fa,0xffededf4,0xffdfdfe8,0xffededf3,0xb1afafc3,0xd595969,0x0,
2106 0x0,0x0,0xb2d8d8de,0xffffffff,0xffffffff,0xffffffff,0xfffdfdfe,0xfff7f7fa,0xffededf4,0xffc9c9d8,0xffdbdbe6,0xffcdcddd,0xbf9898b5,0xb373743,
2107 0x0,0x0,0xb2d4d4dc,0xffffffff,0xffffffff,0xffffffff,0xfffdfdfe,0xfff7f7fa,0xfff1f1f6,0xffe5e5ed,0xffdcdce8,0xffd6d6e4,0xfcc2c2d6,0x26383845,
2108 0x0,0x1797994,0xbec1c1cf,0xffe4e4ea,0xffe1e1e7,0xffededf1,0xfffdfdfe,0xfff7f7fa,0xfff1f1f7,0xffe9e9f2,0xffe2e2ee,0xffd4d6e4,0xfcc3c4d8,0x27343442,
2109 0x0,0x5ba3a3b7,0xffe2e2e7,0xffd6d6dd,0xffcbcbd3,0xffcfcfd6,0xfff3f3f7,0xfff3f3f8,0xffececf4,0xffe6e6f0,0xffe4e4ef,0xffdadbe8,0xfcc3c3d8,0x27323241,
2110 0x0,0x9bbbbbc8,0xffc7c7d0,0xffffffff,0xffeaeaef,0xffbdbdc3,0xffd0d0dc,0xffededf4,0xffebebf3,0xffe9e9f2,0xffe6e6f0,0xffd9dbe8,0xfcc2c2d8,0x27303040,
2111 0x2ace9235,0xd0d5bf7e,0xffd7c68e,0xfff4e3a7,0xffead9a0,0xffd1c087,0xffd9c498,0xffefeef4,0xffededf4,0xffebebf3,0xffe9e9f2,0xffd8dae7,0xfcc1c2d7,0x272e2e3f,
2112 0x78bc9047,0xffffe83c,0xffffe836,0xffffe836,0xffffe836,0xffffe534,0xffe6ae26,0xffece8e9,0xfff0f0f6,0xffededf5,0xffebebf3,0xffdedfeb,0xfcc1c2d8,0x272c2c3e,
2113 0x789f7342,0xffffc728,0xffffc624,0xffffc422,0xffffbe1f,0xffffa914,0xffdb8715,0xffece8eb,0xfff2f2f7,0xfff0f0f6,0xffeeeef5,0xffd7d9e7,0xfcbfc0d7,0x272a2a3d,
2114 0x779b6b3e,0xffffb922,0xffffb118,0xffffa713,0xffff9d0e,0xffff9409,0xffd97a0f,0xffeeebec,0xfff4f4f9,0xfff2f2f7,0xfff0f0f6,0xffe0e2ed,0xfcbcbdd5,0x2728283c,
2115 0x1d764627,0x69976128,0xd2a98c77,0xffd5bca2,0xffd5bba2,0xffd5b9a1,0xffd4beae,0xfff8f8fb,0xfff7f7fa,0xfff5f5f9,0xfff2f2f8,0xffdadcea,0xfcb9bad4,0x2726263b,
2116 0x0,0x0,0x6e9292af,0xa8a6a6b9,0xa8a4a4b8,0xa8a1a1b7,0xa89e9eb6,0xa89b9bb4,0xa89898b2,0xa89696b1,0xa89393af,0xa89090ae,0xa67a7aa0,0x1b1a1a2a
2117};
2118
2119static const QRgb lockedfolder_data[] = { 1493static const QRgb lockedfolder_data[] = {
2120 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x121760ca,0xa1459c2,0x0,0x0,0x0, 1494 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x121760ca,0xa1459c2,0x0,0x0,0x0,
2121 0x0,0x0,0x0,0x0,0xbadb7db,0x11abb7de,0x0,0x262376d8,0x904f8cda,0xd15e95df,0x791656ba,0x0,0x0,0x0, 1495 0x0,0x0,0x0,0x0,0xbadb7db,0x11abb7de,0x0,0x262376d8,0x904f8cda,0xd15e95df,0x791656ba,0x0,0x0,0x0,
2122 0x0,0x0,0x0,0xea4acc6,0xc4c3c8db,0xf3d6dae9,0xa3adbadc,0xe66ba4e3,0xb65c9fe8,0xac0d6fe2,0xc41055be,0xb052564,0x0,0x0, 1496 0x0,0x0,0x0,0xea4acc6,0xc4c3c8db,0xf3d6dae9,0xa3adbadc,0xe66ba4e3,0xb65c9fe8,0xac0d6fe2,0xc41055be,0xb052564,0x0,0x0,
2123 0x0,0x0,0xcadb3c5,0xbfc6cad9,0xfff1f1f6,0xffe7e9f3,0xffa4c3e9,0xfe8cbaee,0xee65a5f0,0xcd2578e2,0xcd1056b8,0x570539a1,0x0,0x0, 1497 0x0,0x0,0xcadb3c5,0xbfc6cad9,0xfff1f1f6,0xffe7e9f3,0xffa4c3e9,0xfe8cbaee,0xee65a5f0,0xcd2578e2,0xcd1056b8,0x570539a1,0x0,0x0,
2124 0x0,0xab6b9c5,0xbac9ccd7,0xffedf1f7,0xffa9ccee,0xff98c4ed,0xffb2d6f7,0xff91c3f7,0xff77b2f8,0xff5996e4,0xe72462b8,0xab02399f,0x2000c27,0x0, 1498 0x0,0xab6b9c5,0xbac9ccd7,0xffedf1f7,0xffa9ccee,0xff98c4ed,0xffb2d6f7,0xff91c3f7,0xff77b2f8,0xff5996e4,0xe72462b8,0xab02399f,0x2000c27,0x0,
2125 0x9d4d7dc,0xb2d1d2d9,0xffcae1f5,0xffa7cff3,0xffddf2fa,0xffc7e7fa,0xffaad4f9,0xff8cc0f6,0xff6aa2e9,0xff3c78ca,0xd0084ba0,0xd2003c95,0x2e002a8e,0x0, 1499 0x9d4d7dc,0xb2d1d2d9,0xffcae1f5,0xffa7cff3,0xffddf2fa,0xffc7e7fa,0xffaad4f9,0xff8cc0f6,0xff6aa2e9,0xff3c78ca,0xd0084ba0,0xd2003c95,0x2e002a8e,0x0,
2126 0xa6d7d7d9,0xfff4f4f4,0xffe0e7ed,0xffd2dee7,0xffdbf0f5,0xffc3e5fa,0xffa5d0f8,0xff7bade9,0xff568dd5,0xff2c70c3,0xf81757aa,0xd2154b95,0x901f45a4,0x0, 1500 0xa6d7d7d9,0xfff4f4f4,0xffe0e7ed,0xffd2dee7,0xffdbf0f5,0xffc3e5fa,0xffa5d0f8,0xff7bade9,0xff568dd5,0xff2c70c3,0xf81757aa,0xd2154b95,0x901f45a4,0x0,
2127 0x64c8c9cb,0xf5eaeaea,0xfddcdde0,0xffc5d2dd,0xffcbd3d5,0xffbfe2f9,0xff95c2f0,0xff6e9fdf,0xff3c7bc9,0xff3b7ac4,0xff7f9ec9,0xffb6b8cc,0xed6c7cb8,0x13002275, 1501 0x64c8c9cb,0xf5eaeaea,0xfddcdde0,0xffc5d2dd,0xffcbd3d5,0xffbfe2f9,0xff95c2f0,0xff6e9fdf,0xff3c7bc9,0xff3b7ac4,0xff7f9ec9,0xffb6b8cc,0xed6c7cb8,0x13002275,
2128 0x57ebebeb,0xeaabc9e2,0xfdaecde6,0xff93b4d8,0xffacb8c4,0xffb4d8f3,0xff88b5e8,0xff6093d3,0xff99b8de,0xffd1d4e1,0xffcbcbd8,0xffbfbfd0,0xff8b93ba,0x5d032d97, 1502 0x57ebebeb,0xeaabc9e2,0xfdaecde6,0xff93b4d8,0xffacb8c4,0xffb4d8f3,0xff88b5e8,0xff6093d3,0xff99b8de,0xffd1d4e1,0xffcbcbd8,0xffbfbfd0,0xff8b93ba,0x5d032d97,
2129 0x89e8cfa2,0xe4b9bfb1,0xfed8d7bf,0xffd1d3bc,0xffbeb7a4,0xffa2b7c7,0xffbdd3ee,0xffeff2f7,0xffe9e9ef,0xffdddde6,0xffbabcd1,0xed5a6fb2,0x860e3292,0x21000d2b, 1503 0x89e8cfa2,0xe4b9bfb1,0xfed8d7bf,0xffd1d3bc,0xffbeb7a4,0xffa2b7c7,0xffbdd3ee,0xffeff2f7,0xffe9e9ef,0xffdddde6,0xffbabcd1,0xed5a6fb2,0x860e3292,0x21000d2b,
2130 0xf8ffdb8b,0xffffe193,0xffaa945f,0xffddae5d,0xfffec15a,0xffe6bb7e,0xffffffff,0xfffbfbfc,0xffebecf2,0xf68595c9,0x9b1e409e,0x30001547,0xa000000,0x0, 1504 0xf8ffdb8b,0xffffe193,0xffaa945f,0xffddae5d,0xfffec15a,0xffe6bb7e,0xffffffff,0xfffbfbfc,0xffebecf2,0xf68595c9,0x9b1e409e,0x30001547,0xa000000,0x0,
2131 0xf8fed989,0xffffd883,0xff94753e,0xffd4953c,0xffeb9f33,0xffdbab6f,0xffffffff,0xfcafc0e5,0xaf3b5db2,0x3e001a5d,0xe000000,0x0,0x0,0x0, 1505 0xf8fed989,0xffffd883,0xff94753e,0xffd4953c,0xffeb9f33,0xffdbab6f,0xffffffff,0xfcafc0e5,0xaf3b5db2,0x3e001a5d,0xe000000,0x0,0x0,0x0,
2132 0xf8f9c871,0xfff6b952,0xff835c26,0xffc17c28,0xffdc8c23,0xfba18161,0xc2537cc6,0x4d052c77,0x12000103,0x0,0x0,0x0,0x0,0x0, 1506 0xf8f9c871,0xfff6b952,0xff835c26,0xffc17c28,0xffdc8c23,0xfba18161,0xc2537cc6,0x4d052c77,0x12000103,0x0,0x0,0x0,0x0,0x0,
2133 0xaaedad4f,0xc7e79e36,0xc7be7b25,0xc7ca8026,0xc7c87d25,0x71b1702c,0x14010409,0x2000000,0x0,0x0,0x0,0x0,0x0,0x0 1507 0xaaedad4f,0xc7e79e36,0xc7be7b25,0xc7ca8026,0xc7c87d25,0x71b1702c,0x14010409,0x2000000,0x0,0x0,0x0,0x0,0x0,0x0
2134}; 1508};
2135 1509
1510static const QRgb locked_data[] = {
1511 0x0,0x0,0x80d9d9db,0xbce4e4e6,0xbce2e2e5,0xbcdfdfe4,0xbcdcdce2,0xbcd7d7df,0xbcd1d1db,0x81aeaebe,0x5323237,0x0,0x0,0x0,
1512 0x0,0x0,0xb2dedee1,0xffffffff,0xffffffff,0xffffffff,0xfffdfdfe,0xfff7f7fa,0xffeeeef4,0xffd2d2de,0xa3b1b1c3,0x843434c,0x0,0x0,
1513 0x0,0x0,0xb2dbdbe0,0xffffffff,0xffffffff,0xffffffff,0xfffdfdfe,0xfff7f7fa,0xffededf4,0xffdfdfe8,0xffededf3,0xb1afafc3,0xd595969,0x0,
1514 0x0,0x0,0xb2d8d8de,0xffffffff,0xffffffff,0xffffffff,0xfffdfdfe,0xfff7f7fa,0xffededf4,0xffc9c9d8,0xffdbdbe6,0xffcdcddd,0xbf9898b5,0xb373743,
1515 0x0,0x0,0xb2d4d4dc,0xffffffff,0xffffffff,0xffffffff,0xfffdfdfe,0xfff7f7fa,0xfff1f1f6,0xffe5e5ed,0xffdcdce8,0xffd6d6e4,0xfcc2c2d6,0x26383845,
1516 0x0,0x1797994,0xbec1c1cf,0xffe4e4ea,0xffe1e1e7,0xffededf1,0xfffdfdfe,0xfff7f7fa,0xfff1f1f7,0xffe9e9f2,0xffe2e2ee,0xffd4d6e4,0xfcc3c4d8,0x27343442,
1517 0x0,0x5ba3a3b7,0xffe2e2e7,0xffd6d6dd,0xffcbcbd3,0xffcfcfd6,0xfff3f3f7,0xfff3f3f8,0xffececf4,0xffe6e6f0,0xffe4e4ef,0xffdadbe8,0xfcc3c3d8,0x27323241,
1518 0x0,0x9bbbbbc8,0xffc7c7d0,0xffffffff,0xffeaeaef,0xffbdbdc3,0xffd0d0dc,0xffededf4,0xffebebf3,0xffe9e9f2,0xffe6e6f0,0xffd9dbe8,0xfcc2c2d8,0x27303040,
1519 0x2ace9235,0xd0d5bf7e,0xffd7c68e,0xfff4e3a7,0xffead9a0,0xffd1c087,0xffd9c498,0xffefeef4,0xffededf4,0xffebebf3,0xffe9e9f2,0xffd8dae7,0xfcc1c2d7,0x272e2e3f,
1520 0x78bc9047,0xffffe83c,0xffffe836,0xffffe836,0xffffe836,0xffffe534,0xffe6ae26,0xffece8e9,0xfff0f0f6,0xffededf5,0xffebebf3,0xffdedfeb,0xfcc1c2d8,0x272c2c3e,
1521 0x789f7342,0xffffc728,0xffffc624,0xffffc422,0xffffbe1f,0xffffa914,0xffdb8715,0xffece8eb,0xfff2f2f7,0xfff0f0f6,0xffeeeef5,0xffd7d9e7,0xfcbfc0d7,0x272a2a3d,
1522 0x779b6b3e,0xffffb922,0xffffb118,0xffffa713,0xffff9d0e,0xffff9409,0xffd97a0f,0xffeeebec,0xfff4f4f9,0xfff2f2f7,0xfff0f0f6,0xffe0e2ed,0xfcbcbdd5,0x2728283c,
1523 0x1d764627,0x69976128,0xd2a98c77,0xffd5bca2,0xffd5bba2,0xffd5b9a1,0xffd4beae,0xfff8f8fb,0xfff7f7fa,0xfff5f5f9,0xfff2f2f8,0xffdadcea,0xfcb9bad4,0x2726263b,
1524 0x0,0x0,0x6e9292af,0xa8a6a6b9,0xa8a4a4b8,0xa8a1a1b7,0xa89e9eb6,0xa89b9bb4,0xa89898b2,0xa89696b1,0xa89393af,0xa89090ae,0xa67a7aa0,0x1b1a1a2a
1525};
1526
2136static const QRgb logout_data[] = { 1527static const QRgb logout_data[] = {
2137 0x1aa31c0d,0x9aa62213,0xffac3222,0xffb34331,0xffb2402e,0xffb23f2d,0xffb03e2b,0xffb03d2a,0xffb03c29,0xffaf3b28,0xffaf3c28,0xffaa2d1b,0x9aa52011,0x1aa41c0e, 1528 0x1aa31c0d,0x9aa62213,0xffac3222,0xffb34331,0xffb2402e,0xffb23f2d,0xffb03e2b,0xffb03d2a,0xffb03c29,0xffaf3b28,0xffaf3c28,0xffaa2d1b,0x9aa52011,0x1aa41c0e,
2138 0x9aa62213,0xffc06750,0xffcc8662,0xffc36d48,0xffc4734c,0xffc5764f,0xffcb835d,0xffcc855f,0xffc97f55,0xffc88258,0xffca865c,0xffcf9367,0xffba5a3e,0x9aa52011, 1529 0x9aa62213,0xffc06750,0xffcc8662,0xffc36d48,0xffc4734c,0xffc5764f,0xffcb835d,0xffcc855f,0xffc97f55,0xffc88258,0xffca865c,0xffcf9367,0xffba5a3e,0x9aa52011,
2139 0xffac3222,0xffcc8965,0xffb64c26,0xffbb5b36,0xffca7959,0xffd5977d,0xffe2b6a3,0xffe3b8a5,0xffd79f84,0xffcf8968,0xffc67751,0xffc67a53,0xffcf9268,0xffa92b19, 1530 0xffac3222,0xffcc8965,0xffb64c26,0xffbb5b36,0xffca7959,0xffd5977d,0xffe2b6a3,0xffe3b8a5,0xffd79f84,0xffcf8968,0xffc67751,0xffc67a53,0xffcf9268,0xffa92b19,
2140 0xffb34331,0xffc4704b,0xffbb5b35,0xffd18d72,0xfff1d6cb,0xfffbebe3,0xffefd4c8,0xfff3dbd0,0xfffef3ed,0xfff1d8ca,0xffd7a082,0xffc8815a,0xffce8f65,0xffad3520, 1531 0xffb34331,0xffc4704b,0xffbb5b35,0xffd18d72,0xfff1d6cb,0xfffbebe3,0xffefd4c8,0xfff3dbd0,0xfffef3ed,0xfff1d8ca,0xffd7a082,0xffc8815a,0xffce8f65,0xffad3520,
2141 0xffb2402e,0xffc4724c,0xffca7959,0xfff1d6cb,0xfff4ded5,0xffdca288,0xffe7b9a3,0xffe8bba4,0xffe0af97,0xfff5e1d7,0xfff1d8ca,0xffd29675,0xffce9167,0xffac321d, 1532 0xffb2402e,0xffc4724c,0xffca7959,0xfff1d6cb,0xfff4ded5,0xffdca288,0xffe7b9a3,0xffe8bba4,0xffe0af97,0xfff5e1d7,0xfff1d8ca,0xffd29675,0xffce9167,0xffac321d,
2142 0xffb23f2d,0xffc77a54,0xffdaa28a,0xfffbebe3,0xffdca288,0xffc5734d,0xfff5d8c9,0xfff4d8c8,0xffc87e58,0xffe1b39b,0xfffdf4ee,0xffdcb097,0xffcf936a,0xffab301c, 1533 0xffb23f2d,0xffc77a54,0xffdaa28a,0xfffbebe3,0xffdca288,0xffc5734d,0xfff5d8c9,0xfff4d8c8,0xffc87e58,0xffe1b39b,0xfffdf4ee,0xffdcb097,0xffcf936a,0xffab301c,
2143 0xffb03e2b,0xffcc845e,0xffe3b8a5,0xffeed0c2,0xffcc8360,0xffc4734c,0xfff8e0d3,0xfff8e2d5,0xffc77e57,0xffd69c7d,0xfff7e5db,0xffe5c2ad,0xffd29b74,0xffaa2f1b, 1534 0xffb03e2b,0xffcc845e,0xffe3b8a5,0xffeed0c2,0xffcc8360,0xffc4734c,0xfff8e0d3,0xfff8e2d5,0xffc77e57,0xffd69c7d,0xfff7e5db,0xffe5c2ad,0xffd29b74,0xffaa2f1b,
2144 0xffb03d2a,0xffcc8560,0xffe4baa8,0xffedd0c3,0xffcd8563,0xffc57750,0xfff8e1d4,0xfff8e3d6,0xffc8825c,0xffd7a082,0xfff7e6dc,0xffe8cab8,0xffd5a07c,0xffaa2d19, 1535 0xffb03d2a,0xffcc8560,0xffe4baa8,0xffedd0c3,0xffcd8563,0xffc57750,0xfff8e1d4,0xfff8e3d6,0xffc8825c,0xffd7a082,0xfff7e6dc,0xffe8cab8,0xffd5a07c,0xffaa2d19,
2145 0xffb03c29,0xffcb835a,0xffdeac95,0xfffbebe4,0xffdba488,0xffc77d57,0xfff7ded0,0xfff5ddcd,0xffcb8a65,0xffe3bba3,0xfffef7f2,0xffe3bda7,0xffd69e7a,0xffa92b17, 1536 0xffb03c29,0xffcb835a,0xffdeac95,0xfffbebe4,0xffdba488,0xffc77d57,0xfff7ded0,0xfff5ddcd,0xffcb8a65,0xffe3bba3,0xfffef7f2,0xffe3bda7,0xffd69e7a,0xffa92b17,
2146 0xffaf3b28,0xffc88258,0xffd39172,0xfff6e4db,0xfff1dbcf,0xffdeab90,0xffeec9b5,0xffeac2ab,0xffe2b69c,0xfff6e6dd,0xfff6e3d8,0xffdeae94,0xffd5a280,0xffa82a15, 1537 0xffaf3b28,0xffc88258,0xffd39172,0xfff6e4db,0xfff1dbcf,0xffdeab90,0xffeec9b5,0xffeac2ab,0xffe2b69c,0xfff6e6dd,0xfff6e3d8,0xffdeae94,0xffd5a280,0xffa82a15,
2147 0xffaf3c29,0xffc9855b,0xffc77a54,0xffd8a388,0xfff4dfd3,0xfffdefe8,0xfff2dcd0,0xfff3ddd1,0xfffef2eb,0xfff7e6db,0xffe1b8a1,0xffd7a386,0xffd7a686,0xffa92a15, 1538 0xffaf3c29,0xffc9855b,0xffc77a54,0xffd8a388,0xfff4dfd3,0xfffdefe8,0xfff2dcd0,0xfff3ddd1,0xfffef2eb,0xfff7e6db,0xffe1b8a1,0xffd7a386,0xffd7a686,0xffa92a15,
2148 0xffaa2d1c,0xffcf9367,0xffc67a53,0xffc8815a,0xffd59a7a,0xffe0b69e,0xffebccba,0xffebcfbd,0xffe4bea8,0xffdfb096,0xffd7a385,0xffddb397,0xffd29877,0xffa62311, 1539 0xffaa2d1c,0xffcf9367,0xffc67a53,0xffc8815a,0xffd59a7a,0xffe0b69e,0xffebccba,0xffebcfbd,0xffe4bea8,0xffdfb096,0xffd7a385,0xffddb397,0xffd29877,0xffa62311,
2149 0x9aa52011,0xffba5a3e,0xffcf9268,0xffce8f65,0xffce9167,0xffd0956c,0xffd49f79,0xffd6a27e,0xffd69e7a,0xffd5a27f,0xffd9a989,0xffd39979,0xffb3452c,0x9aa41d0d, 1540 0x9aa52011,0xffba5a3e,0xffcf9268,0xffce8f65,0xffce9167,0xffd0956c,0xffd49f79,0xffd6a27e,0xffd69e7a,0xffd5a27f,0xffd9a989,0xffd39979,0xffb3452c,0x9aa41d0d,
2150 0x1aa41c0e,0x9aa52011,0xffa92b19,0xffad3520,0xffac321d,0xffab301c,0xffaa2f1b,0xffaa2d19,0xffa92b17,0xffa82a15,0xffa82915,0xffa62311,0x9aa41d0d,0x1aa41d0e 1541 0x1aa41c0e,0x9aa52011,0xffa92b19,0xffad3520,0xffac321d,0xffab301c,0xffaa2f1b,0xffaa2d19,0xffa92b17,0xffa82a15,0xffa82915,0xffa62311,0x9aa41d0d,0x1aa41d0e
2151}; 1542};
2152 1543
2153static const QRgb mag_data[] = { 1544static const QRgb mag_data[] = {
2154 0x0,0x0,0x1c9191aa,0x7daeaec1,0xaabfbfcd,0xa3c5c5d3,0x63bfbfce,0x8b6b6c7,0x0,0x0,0x0,0x0,0x0,0x0, 1545 0x0,0x0,0x1c9191aa,0x7daeaec1,0xaabfbfcd,0xa3c5c5d3,0x63bfbfce,0x8b6b6c7,0x0,0x0,0x0,0x0,0x0,0x0,
2155 0x0,0x478c8ca6,0xeca3a9c1,0xf9bbd1e5,0xf7d0e5f5,0xf8d9e7f4,0xfbccd9ea,0xccc9cad8,0x19babaca,0x0,0x0,0x0,0x0,0x0, 1546 0x0,0x478c8ca6,0xeca3a9c1,0xf9bbd1e5,0xf7d0e5f5,0xf8d9e7f4,0xfbccd9ea,0xccc9cad8,0x19babaca,0x0,0x0,0x0,0x0,0x0,
2156 0x1c747493,0xea8f95b4,0xf4a3d0f4,0xf5c6efff,0xf5d6f4ff,0xf5dbf5ff,0xf5d2f3ff,0xf5b9d8f2,0xbbc9cad8,0x1b8b8c9,0x0,0x0,0x0,0x0, 1547 0x1c747493,0xea8f95b4,0xf4a3d0f4,0xf5c6efff,0xf5d6f4ff,0xf5dbf5ff,0xf5d2f3ff,0xf5b9d8f2,0xbbc9cad8,0x1b8b8c9,0x0,0x0,0x0,0x0,
2157 0x7d7e7e9a,0xf07a9ed4,0xf59cd1ff,0xf5b3e3ff,0xf5c2edff,0xf5c6efff,0xf5bfebff,0xf4abddff,0xf5b7c7e4,0x31b5b5c6,0x0,0x0,0x0,0x0, 1548 0x7d7e7e9a,0xf07a9ed4,0xf59cd1ff,0xf5b3e3ff,0xf5c2edff,0xf5c6efff,0xf5bfebff,0xf4abddff,0xf5b7c7e4,0x31b5b5c6,0x0,0x0,0x0,0x0,
2158 0xab7b7b98,0xb62f70db,0xc766a9fb,0xdf92cafe,0xdea0d4ff,0xd19bd1fe,0xde9ad0fe,0xf494ccff,0xee9dbdeb,0x60b9b9c9,0x0,0x0,0x0,0x0, 1549 0xab7b7b98,0xb62f70db,0xc766a9fb,0xdf92cafe,0xdea0d4ff,0xd19bd1fe,0xde9ad0fe,0xf494ccff,0xee9dbdeb,0x60b9b9c9,0x0,0x0,0x0,0x0,
2159 0xa3717190,0xb33973d3,0x994e96f8,0x9974b3fd,0x998bc5ff,0x998cc5ff,0x9977b6fd,0xaa62a6fb,0xe299b7e6,0x56afafc2,0x0,0x0,0x0,0x0, 1550 0xa3717190,0xb33973d3,0x994e96f8,0x9974b3fd,0x998bc5ff,0x998cc5ff,0x9977b6fd,0xaa62a6fb,0xe299b7e6,0x56afafc2,0x0,0x0,0x0,0x0,
2160 0x61636385,0xd66079b1,0x9973b3fd,0x99a4d7ff,0x99c4efff,0x99c6efff,0x99a8daff,0x9d7ab6fb,0xebadb6d0,0x1aa3a3b8,0x0,0x0,0x0,0x0, 1551 0x61636385,0xd66079b1,0x9973b3fd,0x99a4d7ff,0x99c4efff,0x99c6efff,0x99a8daff,0x9d7ab6fb,0xebadb6d0,0x1aa3a3b8,0x0,0x0,0x0,0x0,
2161 0x857577b,0xc966678a,0xc07d9dca,0x9ac3edfe,0x99eafeff,0x99ecfeff,0x9dc6edfc,0xdca5b5d2,0xdfb2b2c4,0x3b7b7c8,0x0,0x0,0x0,0x0, 1552 0x857577b,0xc966678a,0xc07d9dca,0x9ac3edfe,0x99eafeff,0x99ecfeff,0x9dc6edfc,0xdca5b5d2,0xdfb2b2c4,0x3b7b7c8,0x0,0x0,0x0,0x0,
2162 0x0,0x1958587c,0xb8696a8b,0xe5878faa,0xceb0b7c8,0xd3b6bbcb,0xeb9ea2b9,0xcd9595ad,0xeea3a3b7,0xb1cb9f58,0x4ee4991e,0x0,0x0,0x0, 1553 0x0,0x1958587c,0xb8696a8b,0xe5878faa,0xceb0b7c8,0xd3b6bbcb,0xeb9ea2b9,0xcd9595ad,0xeea3a3b7,0xb1cb9f58,0x4ee4991e,0x0,0x0,0x0,
2163 0x0,0x0,0x5b5b7e,0x2f606083,0x5e6e6e8e,0x54747493,0x1a777795,0x0,0xb1a57239,0xfff7d37d,0xf7f7d46f,0x4fe4991e,0x0,0x0, 1554 0x0,0x0,0x5b5b7e,0x2f606083,0x5e6e6e8e,0x54747493,0x1a777795,0x0,0xb1a57239,0xfff7d37d,0xf7f7d46f,0x4fe4991e,0x0,0x0,
2164 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x449f5b0e,0xf3dd921d,0xfffddc87,0xf7f7d36f,0x4fe4991e,0x0, 1555 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x449f5b0e,0xf3dd921d,0xfffddc87,0xf7f7d36f,0x4fe4991e,0x0,
2165 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x459f5b0e,0xf3dd921d,0xfffddc87,0xf6f7d36f,0x4de4991e, 1556 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x459f5b0e,0xf3dd921d,0xfffddc87,0xf6f7d36f,0x4de4991e,
2166 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x459f5b0e,0xf3dd921c,0xfff0c975,0xa8cdab7a, 1557 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x459f5b0e,0xf3dd921c,0xfff0c975,0xa8cdab7a,
2167 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x449f5b0e,0xaa977354,0x4a8787a1 1558 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x449f5b0e,0xaa977354,0x4a8787a1
2168}; 1559};
2169 1560
2170static const QRgb month_data[] = { 1561static const QRgb month_data[] = {
2171 0xe483addd,0xf18cb5e6,0xf181b0e6,0xf175aae6,0xf169a4e6,0xf15c9ee6,0xf1549ae6,0xf15297e6,0xf15298e6,0xf15298e6,0xf15599e7,0xf14597e8,0xa315588d,0x17002741, 1562 0x343b98e5,0x7254a9e9,0x7b52a5e3,0x7b50a4e3,0x7b4fa4e3,0x7b4ea3e2,0x7b4da3e2,0x7b4ba2e2,0x7b4aa1e2,0x7b49a1e2,0x7b47a0e1,0x7a479fe1,0x492c7cbc,0xe00162b,
2172 0xf592b8e5,0xffafd4fd,0xff90c6fd,0xff70b6fd,0xff57a9fd,0xff3499fc,0xff258efd,0xff2388fd,0xff2189fc,0xff2388fd,0xff2389fe,0xff1d8afb,0xc208518c,0x30001827, 1563 0xc767bcf7,0xf766bef6,0xf94fb5f3,0xf94eb5f3,0xf94cb5f3,0xf94bb5f2,0xf94ab4f3,0xf948b4f3,0xf947b4f3,0xf946b4f3,0xf944b3f3,0xf94bb5f4,0xd352aae5,0x4b033c65,
2173 0xf19fbfe5,0xffddebfa,0xffb7daf7,0xffa6d3f6,0xffc5dffa,0xff93cbf4,0xffb0d7f9,0xffadd5f9,0xff8ec9f4,0xffaed6fa,0xffb1d7fb,0xff8bc6f6,0xc4255e89,0x34001525, 1564 0xe94db4f6,0xff16a6e9,0xff04a1e4,0xff05a2e4,0xff07a3e5,0xff09a4e5,0xff0ba5e5,0xff0da6e6,0xff0fa8e6,0xff12a8e7,0xff14a9e7,0xff15a9e9,0xef34a1e4,0x74083858,
2174 0xf1a9c5e6,0xfffbfefe,0xffcbe6fa,0xffbbdff8,0xfff2fafe,0xff9fd1f5,0xffe0f3fd,0xffdef1fd,0xff9bd0f5,0xffe4f5fe,0xffe6f6fe,0xffadd9f6,0xc42d6189,0x34001425, 1565 0xe96dbff5,0xff86cdf4,0xff72c6f2,0xff72c6f2,0xff71c5f2,0xff71c4f2,0xff70c3f2,0xff70c2f2,0xff70c2f2,0xff70c2f2,0xff6fc2f2,0xff72c2f3,0xf060afe4,0x79013455,
2175 0xfa91c4ee,0xffb0daf7,0xff9ed1f5,0xff97cef4,0xffabd8f7,0xff8dc9f3,0xffa4d5f6,0xffa3d4f6,0xff8cc8f3,0xffa5d5f7,0xffa6d6f7,0xff91cbf4,0xc42b6089,0x34001425, 1566 0xe97cb5c6,0xfff0d662,0xfff3c95e,0xfff2ce5a,0xfff1cd5c,0xffefc85c,0xffeed358,0xffedc45e,0xffedd258,0xffebc45e,0xffead157,0xffeac75c,0xf089abaf,0x79003453,
2176 0xf49dc5e9,0xffd9effc,0xffb6ddf8,0xffa9d7f7,0xffceeafc,0xff96cdf4,0xffc0e4fb,0xffbfe2fb,0xff93ccf4,0xffc1e5fc,0xffc2e6fc,0xff9bd1f6,0xc42a6089,0x34001425, 1567 0xe97bafb2,0xfff8ca28,0xffffb129,0xffffc21f,0xffffb925,0xffffb924,0xffffc71e,0xffffb228,0xffffc81d,0xffffb029,0xffffcb1b,0xffffb426,0xf091a49c,0x79003554,
2177 0xf1a6c4e6,0xfff2fcff,0xffc5e5fa,0xffb5def9,0xffe5f6ff,0xff9bd0f5,0xffd2edfd,0xffd0ebfd,0xff97cff5,0xffd3efff,0xffd5f1ff,0xffa1d5f7,0xc42a6089,0x34001425, 1568 0xe979acb2,0xfff7bd2e,0xffffab2c,0xffffb625,0xffffb02a,0xffffb029,0xffffba25,0xffffab2c,0xffffbb23,0xffffaa2d,0xffffbd22,0xffffad29,0xf093a49b,0x79003554,
2178 0xf3a0c4e7,0xffe2f3fd,0xffbbe0f9,0xffadd9f8,0xffd6eefd,0xff98cef5,0xffc6e6fc,0xffc3e5fc,0xff94cdf5,0xffc7e8fd,0xffc8e9fd,0xff9bd1f6,0xc4296089,0x34001425, 1569 0xe976afb2,0xfff7cf26,0xffffb628,0xffffc71d,0xffffbe24,0xffffbe22,0xffffcd1c,0xffffb727,0xffffce1a,0xffffb428,0xffffd218,0xffffb924,0xf096a79d,0x79003554,
2179 0xfc8bc4ef,0xff9cd1f5,0xff92ccf4,0xff8ecaf4,0xff99cff5,0xff88c7f3,0xff94cef5,0xff94cdf5,0xff87c7f3,0xff95cef5,0xff95cef5,0xff86c7f3,0xc4285f89,0x34001425, 1570 0xe975a9b1,0xfff6b732,0xffffa331,0xffffb128,0xffffa92e,0xffffab2b,0xffffb328,0xffffa62f,0xffffb527,0xffffa430,0xffffb825,0xffffa62d,0xf098a59c,0x79003554,
2180 0xf1a3c3e6,0xffe8f8ff,0xffbfe2fa,0xffb0dbf9,0xffdaf1ff,0xff99cff5,0xffc9eafd,0xffc6e8fd,0xff95cef5,0xffc9ecff,0xffcbedff,0xff9ad2f7,0xc4285f89,0x34001525, 1571 0xe973acb0,0xfff6d124,0xffffbc24,0xffffca1b,0xffffc420,0xffffc021,0xffffd119,0xffffbb24,0xffffd118,0xffffb924,0xffffd316,0xffffbe20,0xf09aaa9c,0x79003554,
2181 0xf1a6c5e7,0xffeaf9ff,0xffc0e3fa,0xffb1dcf9,0xffdcf3ff,0xff99d0f5,0xffcbebfd,0xffc8e9fd,0xff95cef5,0xffcbedff,0xffcdeeff,0xff9dd3f8,0xc4296089,0x34001525, 1572 0xea6ea8ba,0xffeeb649,0xfff7a449,0xfff8b340,0xfff9a947,0xfff9ad43,0xfffab342,0xfffba947,0xfffcb641,0xfffda749,0xfffeba3e,0xffffaa47,0xf09caaa7,0x78003554,
2182 0xfa80b6e6,0xffafdbf7,0xff9cd1f5,0xff95cdf4,0xffa6d6f7,0xff8bc8f3,0xff9dd2f6,0xff9bd1f6,0xff89c8f3,0xff9ad2f7,0xff9dd4f8,0xff7bc4f7,0xc7205f8d,0x34001728, 1573 0xbb469ed9,0xf882bcdf,0xfd88bedf,0xfd8cc0df,0xfd8fc2e0,0xfd93c3e1,0xfd97c5e1,0xfd9ec8e2,0xfda2cae2,0xfda7cce2,0xfdabcfe2,0xfcafd1e2,0xdc669bbe,0x63001f36,
2183 0xa628618e,0xc12e628a,0xc42b6089,0xc42b6089,0xc42b6089,0xc42a6089,0xc42a6089,0xc4296089,0xc42a6089,0xc4285f89,0xc4296089,0xc421608d,0x9e083656,0x30000d16, 1574 0x360f466e,0x75164e75,0x89144769,0x8a154768,0x8a154768,0x8a164869,0x8a174869,0x8a184869,0x8a194969,0x8a1a4969,0x8a1b4969,0x891b4a68,0x6a0e2b41,0x28000306,
2184 0x14002b4a,0x30001627,0x34001424,0x34001425,0x34001425,0x34001425,0x34001425,0x34001425,0x34001425,0x34001425,0x34001425,0x34001626,0x30000d16,0x16000204 1575 0x4000000,0xf000000,0x15000000,0x15000000,0x15000000,0x15000000,0x15000000,0x15000000,0x15000000,0x15000000,0x15000000,0x15000000,0xf000000,0x4000000
1576};
1577
1578static const QRgb MPEGPlayer_data[] = {
1579 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2a4a6dc,
1580 0xfa4a6dc,0x18a4a6dc,0x18a4a6dc,0x26a4a6dc,0x27a4a6dc,0x14a4a6dc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
1581 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
1582 0x2a0a1b6,0x1fa3a4bb,0x579d9fba,0x979a9bbc,0xb6989ac1,0xc29698c3,0xc29698c4,0xd09698c8,0xd0989acb,0xb18f91bc,0x708486a5,0x2885869e,0x8727496,0x0,
1583 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
1584 0x0,0x0,0x6a5a6b6,0x419e9fbd,0x95a9aac6,0xefb8b9d1,0xfecbcce0,0xffe4e5f1,0xffefeff9,0xfff4f5ff,0xfff3f3ff,0xffefeffe,0xffe5e6f7,0xffd2d3ec,
1585 0xffb9bbdf,0xf59c9ec7,0xb98688b3,0x5174779f,0x156b6d91,0x1000000,0x0,0x0,0x0,0x0,0x0,0x0,0xcc917107,0xcd876b09,
1586 0xf4a5a293,0xffb1b1b1,0xffcbcbcb,0xf4a4a4a4,0x339e9e9e,0x11a7a7b5,0x70a3a3bc,0xe0bebfd4,0xfce0e0eb,0xfff6f6fa,0xfffcfcfe,0xfff9f9ff,0xfff6f7ff,0xfff3f4ff,
1587 0xfff1f1ff,0xffedeeff,0xffebecff,0xffe8e9ff,0xffe6e7fe,0xffd9dbf6,0xffc3c5e7,0xea989ac4,0xa27c7fac,0x1f66678b,0x320212f,0x0,0x0,0x0,
1588 0x0,0x0,0xcc6b5803,0xcc5f5103,0xd25c541a,0xf497968b,0xffa4a4a4,0xffcacaca,0xe39a9a9a,0xc9ababb7,0xfcd5d6e3,0xfffcfcff,0xfffefeff,0xffffffff,
1589 0xfffdfdff,0xfff9faff,0xfff7f7ff,0xfff4f4ff,0xfff1f1ff,0xffedeeff,0xffebecff,0xffe7e9ff,0xffe5e6ff,0xffe2e3ff,0xffdfe1ff,0xffd7d9fa,0xffaaaddf,0xd77e7fb3,
1590 0x576b6c99,0x6222332,0x1000000,0x0,0x0,0x0,0xcc413f01,0xcc474201,0xcc514903,0xcd74600b,0xf4a19a84,0xff9a9a9a,0xffa5a5a5,0xff9e9e9e,
1591 0xffe0e1e5,0xfffbfbff,0xfffdfdff,0xffffffff,0xfffefeff,0xfffbfbff,0xfff8f8ff,0xfff4f5ff,0xfff2f2ff,0xffedeeff,0xffeaebff,0xffe6e8ff,0xffe4e5ff,0xffe1e2ff,
1592 0xffdee0ff,0xffd3d5ff,0xffbbbef6,0xfe9396cf,0xe07274aa,0x425c5d88,0x71b1b27,0x0,0x0,0x0,0xcc756006,0xcc8d720a,0xcca5850f,0xccb59415,
1593 0xd5bda42f,0xfca09b81,0xff9d9d9d,0xff949494,0xff979798,0xffe3e3e7,0xfffbfbff,0xfffefeff,0xfffefeff,0xfffcfcff,0xfff9f9ff,0xfff4f5ff,0xfff2f2ff,0xffedeeff,
1594 0xffeaebff,0xffe5e6ff,0xffe3e4ff,0xffdfe1ff,0xffd8daff,0xffbec1f7,0xffa7aae4,0xff8f92cc,0xff787bb4,0xdb5f6197,0x4c53547e,0x5000000,0x0,0x0,
1595 0xccbe9f19,0xcccaac1f,0xccd2b726,0xcdd6be2b,0xe1d6c23a,0xfed8c955,0xff9e9a80,0xff8c8c8c,0xffababab,0xff838384,0xffdddde1,0xfffdfdff,0xfffefeff,0xfffdfdff,
1596 0xfffafaff,0xfff4f5ff,0xfff2f2ff,0xffecedff,0xffe9eaff,0xffe4e5ff,0xffe1e3ff,0xffdcdeff,0xffc9cbfc,0xffa9ace6,0xff9598d2,0xff7e81bb,0xff6f72ac,0xfd6567a0,
1597 0xbd5b5d8f,0x17242534,0x3000000,0x0,0xccd8c12d,0xccdbc630,0xccdfcb35,0xd8dbc738,0xf8d5c247,0xffdbc556,0xffcbb757,0xff8e8976,0xff7b7b7b,0xffb2b2b2,
1598 0xff808081,0xffdedfe2,0xfffdfdff,0xfffefeff,0xfffbfbff,0xfff5f5ff,0xfff0f1ff,0xffebecff,0xffe7e8ff,0xffe2e4ff,0xffdee0ff,0xffcbcdfd,0xffadb0ea,0xff8f92cc,
1599 0xff7b7eb8,0xff6d70aa,0xff7174ae,0xff777ab4,0xfe686aa3,0x764f517a,0x12181924,0x1000000,0xccddc834,0xccdac130,0xccd3b728,0xe8c8ad30,0xfec5ad41,0xffc7af47,
1600 0xffb7a34d,0xff878370,0xff85826c,0xff707070,0xff878787,0xff7e7e7f,0xffd9d9dc,0xfffefeff,0xfffcfcff,0xfff8f8ff,0xfff3f4ff,0xffeeeeff,0xffe7e8ff,0xffe0e2ff,
1601 0xffd7daff,0xffb1b4ed,0xff9497d1,0xff787bb5,0xff6e71ab,0xff7477b1,0xff7d80ba,0xff8588c2,0xff7c7fb9,0xc7575a8d,0x3434364f,0x4000000,0xccc9ac23,0xccc3a51e,
1602 0xd1bb9e1a,0xfbbda433,0xffc6ae45,0xffc2ac4d,0xff898571,0xffb2a863,0xffc7be5e,0xff89866a,0xff777777,0xff6b6b6b,0xff757576,0xffd9d9de,0xffeeefff,0xffd6d8fe,
1603 0xffcccefb,0xffc9ccf7,0xffd4d6fa,0xffd9dbff,0xffbbbef3,0xff8e91cb,0xff7679b3,0xff6f72ac,0xff7a7db7,0xff8588c2,0xff8c8fc9,0xff9396d0,0xff9295cf,0xf56a6da4,
1604 0x7945476e,0xd000000,0xccbd9c17,0xccc2a31a,0xdbc7aa24,0xffceb843,0xffc8b85b,0xff8c8874,0xffc3bb6c,0xffe8dc65,0xffe5e16e,0xffece26f,0xff848165,0xff686868,
1605 0xff878787,0xff5d5d60,0xffb6b8d8,0xffc7c9fe,0xffbabdf7,0xffabaee8,0xffaeb1eb,0xffb2b5ec,0xff9497d1,0xff7376b0,0xff7275af,0xff8083bd,0xff8a8dc7,0xff9396d0,
1606 0xff989bd5,0xff9da0da,0xff9fa2dc,0xff7a7db6,0xae4d4f7e,0x18000000,0xd0cbb130,0xccd9c22e,0xe7dac83d,0xffd6cb5e,0xff8e8b76,0xffc2bd74,0xfff2e971,0xffede46e,
1607 0xffe6e06f,0xfff2e46c,0xffdbcd65,0xff767257,0xff515151,0xff9a9a9a,0xff59595b,0xffb5b8d9,0xffbbbef5,0xffacafe9,0xffb5b8f2,0xffb7baf4,0xff8c8fc9,0xff7a7db7,
1608 0xff8b8ec8,0xff9699d3,0xff9c9fd9,0xffa1a4de,0xffa5a8e2,0xffa9ace6,0xffabaee8,0xff9294ce,0xe1525588,0x27000000,0xf699967e,0xd3ded251,0xeed6cc58,0xff8f8d77,
1609 0xffc7bf72,0xffeee26e,0xffe9db69,0xffe1d262,0xffd3c65c,0xffd8c556,0xffceb94e,0xffbca848,0xff645f48,0xff474747,0xff6d6d6d,0xff55555a,0xff72749f,0xff9294ca,
1610 0xffb8bbf4,0xffc5c8fe,0xffbbbef5,0xff9295cf,0xff9ea1db,0xffa5a8e2,0xffa9ace6,0xffaeb1eb,0xffb1b4ee,0xffb3b6f0,0xffb5b8f2,0xffa1a4dd,0xf551538a,0x30000000,
1611 0xff909090,0xf88e8d7b,0xfc8c8a72,0xffbaaf6c,0xffe0d061,0xffdac85b,0xffd0bc53,0xffc4b04a,0xffb5a546,0xffbca441,0xffb1993d,0xffa8903a,0xff94803a,0xff534f3f,
1612 0xff505050,0xff424242,0xf63e3e40,0xbf3f3f51,0xf29798c2,0xffd3d5ff,0xffd4d6ff,0xffb0b3ed,0xffb5b8f2,0xffb9bcf6,0xffbbbef7,0xffbec1f9,0xffc0c3fb,0xffc1c4fc,
1613 0xffc2c5fd,0xffafb2e9,0xff4e518a,0x39000000,0xffababab,0xff7b7b7b,0xfc86826b,0xffbdab55,0xffbea848,0xffb69f43,0xffac953e,0xffa28a39,0xff988639,0xff9d8737,
1614 0xff917f36,0xff867836,0xff7b7135,0xff6b6635,0xff3f4036,0xff454545,0xff606060,0xec262627,0xd76a6a82,0xffe1e2ff,0xffe0e1ff,0xffc2c5fc,0xffcbcdfe,0xffcccfff,
1615 0xffcdd0ff,0xffcdd0ff,0xffcdd0ff,0xffced1ff,0xffced1ff,0xffb7baea,0xff4d5088,0x3e000000,0xe47b7b7b,0xffb2b2b2,0xff707070,0xff767263,0xff978039,0xff927a31,
1616 0xff86722f,0xff7a6a2b,0xff766f35,0xff797035,0xff6e6934,0xff686534,0xff626234,0xff6b6734,0xff4d4a32,0xff3c392f,0xff272727,0xff828282,0xfc2a2a2c,0xffc1c3ce,
1617 0xffebecfe,0xffced0ff,0xffdee0ff,0xffdddfff,0xffdddeff,0xffdcddff,0xffdbddff,0xffdadcff,0xffd9dbff,0xffc0c2ea,0xfe4f5187,0x3f000000,0x2b757575,0xd6707070,
1618 0xff878787,0xff7d7d7d,0xff666256,0xff695d2f,0xff5d5526,0xff504c24,0xff565a34,0xff6b6734,0xff736c35,0xff887a37,0xff9d8a3b,0xff695e35,0xff555035,0xffac9a44,
1619 0xff4b472d,0xff1d1d1d,0xff585858,0xff383839,0xffb6b8c7,0xffd3d5fe,0xffe4e5ff,0xffe2e3ff,0xffe1e3ff,0xffdfe1ff,0xffdfe1ff,0xffdee0ff,0xffdee0ff,0xffbbbee6,
1620 0xf64e5186,0x3f000000,0x0,0x1f6d6d6d,0xef706f6f,0xff6a6a6a,0xff6e6e6e,0xff54544e,0xff4a4928,0xff655b26,0xff867a39,0xffa6903c,0xffb59d40,0xffbda644,
1621 0xff7a6e3b,0xff5d5938,0xffc9ba52,0xffd6c858,0xffc8bc56,0xff444127,0xff272727,0xff1b1b1b,0xff2d2e30,0xffb7bacb,0xffe8eafe,0xffe7e8ff,0xffe5e6ff,0xffe4e5ff,
1622 0xffe3e4ff,0xffe1e3ff,0xffe1e3ff,0xffaaacd7,0xe24a4c7c,0x3b000000,0x0,0x0,0x6371625c,0xff636166,0xff878787,0xff515151,0xff575245,0xff978137,
1623 0xffbaa747,0xffcfb84c,0xffd6c251,0xff867b41,0xff5a573a,0xffcec359,0xffd9cc5c,0xffd7c95b,0xffd2c157,0xffb9a94c,0xff38331c,0xff232323,0xff363636,0xff1b1c1e,
1624 0xffb5b7c6,0xffeaebfe,0xffe9eaff,0xffe6e8ff,0xffe6e7ff,0xffe4e5ff,0xffe2e3fe,0xff9193c1,0xc33d3f67,0x35000000,0x0,0x0,0xf735b4c,0xda796d76,
1625 0xff57575d,0xff9a9a9a,0xff464646,0xff555242,0xffc0b453,0xffdccc59,0xff877f45,0xff5e5939,0xffcfbf56,0xffd3c155,0xffccb951,0xffc5b24c,0xffbfac48,0xffbba746,
1626 0xffb09e42,0xff302c14,0xff000000,0xff6f6f6f,0xff121213,0xffbcbecc,0xffebecfe,0xffeaebff,0xffe8eaff,0xffe7e9ff,0xffd1d2ef,0xf46b6da1,0x9123243f,0x2a000000,
1627 0x0,0x0,0x24f3f2f,0x83816f6e,0xfc7f7a96,0xff52525b,0xff6c6c6c,0xff575757,0xff59573f,0xff787243,0xff555035,0xffc1ac4b,0xffc7b14a,0xffc1ac48,
1628 0xffbfaa46,0xffc0aa46,0xffc4b049,0xffc9b54d,0xffcebd53,0xffbeb350,0xff343217,0xff000000,0xff525252,0xff262628,0xffb6b8c7,0xffecedfe,0xffebecff,0xffe7e8fd,
1629 0xffb2b4dc,0xd8444674,0x6510111d,0x1e000000,0x0,0x0,0x0,0x2b796651,0xc68c7e80,0xff9192be,0xff53535b,0xff414141,0xff4c4c4c,0xff38362e,
1630 0xffa69440,0xffc6ae46,0xffc5af48,0xffc9b34b,0xffcdbb50,0xffd2c456,0xffd7cc5c,0xffddd362,0xffe2da67,0xffe6df6c,0xffdad569,0xff35341a,0xff111111,0xff121212,
1631 0xff262628,0xffbbbdcc,0xffecedfe,0xffd0d2ed,0xfa777bad,0x951b1d35,0x3e030304,0x10000000,0x0,0x0,0x0,0x73f3427,0x6082715e,0xfc9793ae,
1632 0xff9497c4,0xff4b4c54,0xff5f5f5f,0xff272727,0xff433e29,0xffbeac4b,0xffd6c657,0xffdbce5c,0xffe0d663,0xffe4dc69,0xffe9e36e,0xffebe470,0xffebe571,0xffeae370,
1633 0xffe5dd6e,0xffa8a14f,0xff000000,0xff1e1e1e,0xff2b2b2b,0xff1c1d1f,0xffafb3c3,0xfe989cc7,0xd740446e,0x5a07070c,0x28000000,0x7000000,0x0,0x0,
1634 0x0,0x1000000,0x91a170d,0x9a8b8073,0xf6a3a1bc,0xffa6a9da,0xff3c3d45,0xff828282,0xff1d1d1d,0xff383623,0xffcbc55e,0xffebe46e,0xffeee772,0xffece571,
1635 0xffe9e16d,0xffe5db6b,0xffdfd365,0xffd6c95e,0xffb4a74d,0xff262310,0xff73682c,0xff26220e,0xff000000,0xff6f6f6f,0xff0a0a0d,0xe743476a,0x8116182b,0x31000000,
1636 0x12000000,0x2000000,0x0,0x0,0x0,0x0,0x2000000,0x285e5542,0xa88d8579,0xfeafaed2,0xffa2a9d5,0xff35353b,0xff575757,0xff2f2f2f,
1637 0xff3a3821,0xffd3cb64,0xffe6db6a,0xffe0d364,0xffd7ca5e,0xffcebf56,0xffc4b44e,0xffa3943f,0xff221f0e,0xff675a26,0xff9f8b3b,0xff837333,0xff1f1c0c,0xff000000,
1638 0xff606060,0xf308090c,0x7c0c1422,0x1b000000,0x7000000,0x0,0x0,0x0,0x0,0x0,0x0,0x4000000,0x171f1c12,0x9f837e71,
1639 0xefa3a3b6,0xffb7b8d3,0xff37373c,0xff191919,0xff2b2b2b,0xff252312,0xffb1a248,0xffc1af4b,0xffb7a545,0xffae9a40,0xff8f7e34,0xff1e1b0b,0xff5a4f24,0xff857736,
1640 0xff7c7136,0xff706a35,0xff5f5e32,0xff11120b,0xff0b0b0b,0xff171717,0xf6181819,0x7000000,0x1000000,0x0,0x0,0x0,0x0,0x0,
1641 0x0,0x1000000,0x5000000,0x25373426,0x7a6a685e,0xe89999a2,0xfe999ab0,0xff2e2f32,0xff353535,0xff000000,0xff231f0d,0xff958236,0xff9c873a,0xff827231,
1642 0xff1b170a,0xff4a4522,0xff716b35,0xff656334,0xff5a5c34,0xff525833,0xff5f6034,0xff645f30,0xff201c0d,0xff1f1f1f,0xff222222,0x1000000,0x0,0x0,
1643 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x5000000,0x11000000,0x3f2b2b24,0x8d5e5e5b,0xdc717282,0xfd16171a,0xff6f6f6f,
1644 0xff000000,0xff151309,0xff595126,0xff15140a,0xff3b3d22,0xff5b5d33,0xff5c5d34,0xff656335,0xff7d7337,0xff91823b,0xffa18f3e,0xffb09c43,0xffb5a446,0xff2c2912,
1645 0xff000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3000000,0xe010101,
1646 0x21090909,0x5031312f,0x922f2f35,0xf4050607,0xff515151,0xff1a1a1a,0xff000000,0xff3d3d21,0xff6c6835,0xff7f7437,0xff93833a,0xffa5923f,0xffb39f43,0xffbdaa48,
1647 0xffc4b44d,0xffcabc52,0xffcec257,0xffb9b051,0xff7c7b3b,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
1648 0x0,0x0,0x0,0x1000000,0x4000000,0xd000000,0x18000000,0x40000000,0xde020202,0xf3000000,0xe1000000,0xff181509,0xff8f7e36,0xffb2a044,
1649 0xffbbab49,0xffc1b44f,0xffc5bb53,0xffc9c058,0xffcbc359,0xffcac25b,0xffcac05a,0xffc4b855,0xffb4a94e,0x0,0x0,0x0,0x0,0x0,
1650 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1000000,0x4000000,0x21000000,0x50000000,0x6e000000,
1651 0x57000000,0x7f000000,0x7f3f3a19,0x7d777131,0x7c7c7735,0x7983803a,0x7688863e,0x748c8b42,0x748c8a41,0x738a853e,0x7388803c,0x73827a37,0x668c843b,0x0,
1652 0x0,0x0
2185}; 1653};
2186 1654
2187static const QRgb mute_data[] = { 1655static const QRgb mute_data[] = {
2188 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0x20202,0xd000000,0x7000000,0xffffff,0xffffff,0xffffff,0xffffff, 1656 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0x20202,0xd000000,0x7000000,0xffffff,0xffffff,0xffffff,0xffffff,
2189 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xff000000,0xff000000,0x3f000000,0x19000000,0xffffff,0xffffff,0xffffff,0xffffff, 1657 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xff000000,0xff000000,0x3f000000,0x19000000,0xffffff,0xffffff,0xffffff,0xffffff,
2190 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xff000000,0xffffffff,0xff000000,0x79000000,0x2b000000,0xffffff,0xffffff,0xffffff,0xffffff, 1658 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xff000000,0xffffffff,0xff000000,0x79000000,0x2b000000,0xffffff,0xffffff,0xffffff,0xffffff,
2191 0xffffff,0xffffff,0xffffff,0xffffff,0xff000000,0xffffffff,0xffffffff,0xff000000,0xe3020202,0xcb020202,0x2f020202,0xbf020202,0xbf020202,0xbf020202, 1659 0xffffff,0xffffff,0xffffff,0xffffff,0xff000000,0xffffffff,0xffffffff,0xff000000,0xe3020202,0xcb020202,0x2f020202,0xbf020202,0xbf020202,0xbf020202,
2192 0xff000000,0xff000000,0xff000000,0xff000000,0xffffffff,0xffffffff,0xffffffff,0xff000000,0xffffffff,0xbb575757,0xbf020202,0xab5f5f5f,0xffffffff,0xbf020202, 1660 0xff000000,0xff000000,0xff000000,0xff000000,0xffffffff,0xffffffff,0xffffffff,0xff000000,0xffffffff,0xbb575757,0xbf020202,0xab5f5f5f,0xffffffff,0xbf020202,
2193 0xff000000,0xffcde6ff,0xffcee6ff,0xffcee6ff,0xffcde5ff,0xffcee5ff,0xffcee5ff,0xff000000,0xda4b4b4b,0xffffffff,0xab5f5f5f,0xffffffff,0xab5f5f5f,0xbf020202, 1661 0xff000000,0xffcde6ff,0xffcee6ff,0xffcee6ff,0xffcde5ff,0xffcee5ff,0xffcee5ff,0xff000000,0xda4b4b4b,0xffffffff,0xab5f5f5f,0xffffffff,0xab5f5f5f,0xbf020202,
2194 0xff000000,0xff8ec5ff,0xff8ec5ff,0xff8ec5ff,0xff8ec5ff,0xff8ec4ff,0xff8ec4ff,0xff000000,0xe3020202,0xbb575757,0xffffffff,0xab5f5f5f,0xbf020202,0x2f020202, 1662 0xff000000,0xff8ec5ff,0xff8ec5ff,0xff8ec5ff,0xff8ec5ff,0xff8ec4ff,0xff8ec4ff,0xff000000,0xe3020202,0xbb575757,0xffffffff,0xab5f5f5f,0xbf020202,0x2f020202,
2195 0xff000000,0xff4ea3ff,0xff4ea4ff,0xff4ea3ff,0xff4fa4ff,0xff4ea4ff,0xff4ea4ff,0xff000000,0xda4b4b4b,0xffffffff,0xab5f5f5f,0xffffffff,0xab5f5f5f,0xbf020202, 1663 0xff000000,0xff4ea3ff,0xff4ea4ff,0xff4ea3ff,0xff4fa4ff,0xff4ea4ff,0xff4ea4ff,0xff000000,0xda4b4b4b,0xffffffff,0xab5f5f5f,0xffffffff,0xab5f5f5f,0xbf020202,
2196 0xff000000,0xff000000,0xff000000,0xff000000,0xff1d8aff,0xff1d8aff,0xff1d8aff,0xff000000,0xffffffff,0xbb575757,0xbf020202,0xab5f5f5f,0xffffffff,0xbf020202, 1664 0xff000000,0xff000000,0xff000000,0xff000000,0xff1d8aff,0xff1d8aff,0xff1d8aff,0xff000000,0xffffffff,0xbb575757,0xbf020202,0xab5f5f5f,0xffffffff,0xbf020202,
2197 0x26000000,0x6b000000,0x8f000000,0x8f000000,0xff000000,0xff1d8aff,0xff1d8aff,0xff000000,0xe3020202,0xcb020202,0x2f020202,0xbf020202,0xbf020202,0xbf020202, 1665 0x26000000,0x6b000000,0x8f000000,0x8f000000,0xff000000,0xff1d8aff,0xff1d8aff,0xff000000,0xe3020202,0xcb020202,0x2f020202,0xbf020202,0xbf020202,0xbf020202,
2198 0x16000000,0x24000000,0x30000000,0x32000000,0x48000000,0xff000000,0xff1d8aff,0xff000000,0x8f000000,0x30000000,0xffffff,0xffffff,0xffffff,0xffffff, 1666 0x16000000,0x24000000,0x30000000,0x32000000,0x48000000,0xff000000,0xff1d8aff,0xff000000,0x8f000000,0x30000000,0xffffff,0xffffff,0xffffff,0xffffff,
2199 0xffffff,0xffffff,0xffffff,0xffffff,0xd000000,0x3c000000,0xff000000,0xff000000,0x8f000000,0x30000000,0xffffff,0xffffff,0xffffff,0xffffff, 1667 0xffffff,0xffffff,0xffffff,0xffffff,0xd000000,0x3c000000,0xff000000,0xff000000,0x8f000000,0x30000000,0xffffff,0xffffff,0xffffff,0xffffff,
2200 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xc000000,0x3c000000,0x78000000,0x79000000,0x2b000000,0xffffff,0xffffff,0xffffff,0xffffff, 1668 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xc000000,0x3c000000,0x78000000,0x79000000,0x2b000000,0xffffff,0xffffff,0xffffff,0xffffff,
2201 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xc000000,0x34000000,0x3f000000,0x19000000,0xffffff,0xffffff,0xffffff,0xffffff 1669 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xc000000,0x34000000,0x3f000000,0x19000000,0xffffff,0xffffff,0xffffff,0xffffff
2202}; 1670};
2203 1671
2204static const QRgb new_data[] = {
2205 0x0,0x0,0x0,0xefcbd5e6,0xffe1e6ef,0xffe1e6ef,0xffe0e6ef,0xffdbe2ee,0xffd1dae9,0xfabcc7dc,0x5e9ba5b6,0x2191a1c,0x0,0x0,
2206 0x0,0x0,0x0,0xefd9e1ee,0xffffffff,0xffffffff,0xfffdffff,0xfff2f7fe,0xffe4eaf5,0xffc8d2e4,0xf6d3dceb,0x6199a3b6,0x219191c,0x0,
2207 0x0,0x0,0x0,0xefd9e1ee,0xffffffff,0xffffffff,0xfffeffff,0xfff7faff,0xffeaeef8,0xffcdd6e7,0xffeaeef5,0xf2ccd5e5,0x63949fb2,0x2212225,
2208 0x0,0x0,0x0,0xefd9e1ee,0xffffffff,0xffffffff,0xffffffff,0xfff9fcff,0xffedf2fb,0xffd9e1ef,0xffb6c2d6,0xffa3b2cb,0xfa94a5c0,0x23728097,
2209 0x0,0x0,0x0,0xefd9e1ee,0xffffffff,0xffffffff,0xffffffff,0xfffafdff,0xfff0f4fb,0xffeac99f,0xffc7c9d0,0xffb7c4da,0xffa1b0ca,0x2f566274,
2210 0x0,0x0,0x0,0xefd9e1ee,0xffffffff,0xffffffff,0xfffeffff,0xfff8fbff,0xffece6e2,0xfff7c05d,0xffd2ae82,0xffc2cde0,0xffaab8cf,0x2f566173,
2211 0x0,0x0,0x0,0xefd9e1ee,0xffffffff,0xfffeffff,0xfffafdff,0xffe9eff8,0xffe8c9a0,0xfffdea5a,0xffeaba5d,0xffcaced8,0xffb1bdd3,0x2f566173,
2212 0x0,0x0,0x0,0xefd9e1ee,0xfffffaf3,0xfffee0af,0xfff5d39f,0xfff1ca86,0xfff7cb5d,0xfffffe4c,0xfffae75a,0xffe1ae69,0xffcba57c,0x7dc0702c,
2213 0x0,0x0,0x0,0xefd9e1ee,0xfffffaf2,0xfff9c671,0xfffedf57,0xfffff24a,0xfffff643,0xfffff838,0xfffff83d,0xfffef247,0xfffbe248,0xe9e19226,
2214 0x0,0x0,0x0,0xefd9e1ee,0xfffefeff,0xfff2f1f0,0xfff0c47a,0xfffbcf23,0xffffe324,0xffffe324,0xffffe324,0xfffdd426,0xffd6932b,0x64874714,
2215 0x0,0x0,0x0,0xefd9e1ee,0xfffdfeff,0xfff1f5fd,0xffecf0f6,0xfff3ab31,0xffffcc10,0xffffcb10,0xffffcc10,0xfff6ad11,0xffac8c77,0x3050596a,
2216 0x0,0x0,0x0,0xefd9e1ee,0xfffafcfe,0xffeff4fc,0xffece9e9,0xfff6a113,0xfffda902,0xfff2960b,0xfff8a403,0xfffaa402,0xffb2805c,0x2f535e70,
2217 0x0,0x0,0x0,0xefc3cee0,0xffd1d8e3,0xffcad3e1,0xffd1beb1,0xffee8208,0xffc77d33,0xffaf9a8f,0xffb98b69,0xffda7614,0xffb96730,0x3050525c,
2218 0x0,0x0,0x0,0x28747e91,0x40444c59,0x41434b58,0x62945c29,0x77964a05,0x48453932,0x41404854,0x41434853,0x50723b1a,0x80983c0a,0x1b3e2317
2219};
2220
2221static const QRgb newfolder_data[] = { 1672static const QRgb newfolder_data[] = {
2222 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4fdbe1f9,0x49d3daf4,0x0,0x0,0x0,0x0,0x0, 1673 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4fdbe1f9,0x49d3daf4,0x0,0x0,0x0,0x0,0x0,
2223 0x0,0x0,0x0,0x0,0x0,0x4dae1f9,0x3fe1e5f9,0xe3eff0f9,0xcce5e8f3,0x268d9bc8,0x34bc,0x0,0x0,0x0, 1674 0x0,0x0,0x0,0x0,0x0,0x4dae1f9,0x3fe1e5f9,0xe3eff0f9,0xcce5e8f3,0x268d9bc8,0x34bc,0x0,0x0,0x0,
2224 0x0,0x0,0x240a0fe,0xb6bb7ff,0x48ac3fe,0x46eaedfb,0xd8f3f5fa,0xffeeeef4,0xfce8e9f3,0xa5abbbe1,0xa3460bf,0x92e63d5,0x4255dd4,0x0, 1675 0x0,0x0,0x240a0fe,0xb6bb7ff,0x48ac3fe,0x46eaedfb,0xd8f3f5fa,0xffeeeef4,0xfce8e9f3,0xa5abbbe1,0xa3460bf,0x92e63d5,0x4255dd4,0x0,
2225 0xc6bbef8,0x368dc8f9,0x7fa1cdf8,0xc4afd5fe,0x95afcef4,0xdcf4f6fb,0xfff4f4f8,0xffededf3,0xffe7e7f0,0xf2c7d1eb,0x806891db,0xa44d80de,0x362158c8,0x1000000, 1676 0xc6bbef8,0x368dc8f9,0x7fa1cdf8,0xc4afd5fe,0x95afcef4,0xdcf4f6fb,0xfff4f4f8,0xffededf3,0xffe7e7f0,0xf2c7d1eb,0x806891db,0xa44d80de,0x362158c8,0x1000000,
2226 0x5395d1fc,0xe7cde5fc,0xfdd1e5fe,0xffc9ddf7,0xfeecf0f7,0xfff8f8fb,0xfff5f4f8,0xffc1d3ed,0xff9fbee9,0xff87a6d3,0xde5897e8,0xc30b4bca,0x45022c90,0x1000000, 1677 0x5395d1fc,0xe7cde5fc,0xfdd1e5fe,0xffc9ddf7,0xfeecf0f7,0xfff8f8fb,0xfff5f4f8,0xffc1d3ed,0xff9fbee9,0xff87a6d3,0xde5897e8,0xc30b4bca,0x45022c90,0x1000000,
2227 0x2e81c8fe,0xdfd2e8fe,0xffcce2fd,0xffdde3ee,0xfffdfdfd,0xfff0f4f9,0xffc2d8f0,0xff9bc7f6,0xff78aae6,0xffbca173,0xf26d7ba0,0xc80331b2,0x37002478,0x0, 1678 0x2e81c8fe,0xdfd2e8fe,0xffcce2fd,0xffdde3ee,0xfffdfdfd,0xfff0f4f9,0xffc2d8f0,0xff9bc7f6,0xff78aae6,0xffbca173,0xf26d7ba0,0xc80331b2,0x37002478,0x0,
2228 0x952b2ff,0xb6b5d6f7,0xffcae1fe,0xffbfd1eb,0xffcbe1f4,0xffbcdaf5,0xffa7cff7,0xff7cb8fa,0xff85a5c7,0xffefcc5f,0xf6a07f62,0xb70c30a7,0x23001d60,0x0, 1679 0x952b2ff,0xb6b5d6f7,0xffcae1fe,0xffbfd1eb,0xffcbe1f4,0xffbcdaf5,0xffa7cff7,0xff7cb8fa,0xff85a5c7,0xffefcc5f,0xf6a07f62,0xb70c30a7,0x23001d60,0x0,
2229 0x0,0x6c9acafa,0xfec3dcfd,0xffa4cbf8,0xffc4e0f2,0xffbed7e3,0xffa1bdd4,0xff829abd,0xffbca36e,0xfffff753,0xfff0d05a,0xcd8e7471,0x44a45c25,0x21d65b00, 1680 0x0,0x6c9acafa,0xfec3dcfd,0xffa4cbf8,0xffc4e0f2,0xffbed7e3,0xffa1bdd4,0xff829abd,0xffbca36e,0xfffff753,0xfff0d05a,0xcd8e7471,0x44a45c25,0x21d65b00,
2230 0x0,0x348dbff5,0xedb4d4fb,0xff9ecaf9,0xffb8d1dd,0xffdaba72,0xffeacf73,0xffead461,0xfff7e554,0xfffffd43,0xfffdf44d,0xf7efd251,0xdef2c74c,0xcae89932, 1681 0x0,0x348dbff5,0xedb4d4fb,0xff9ecaf9,0xffb8d1dd,0xffdaba72,0xffeacf73,0xffead461,0xfff7e554,0xfffffd43,0xfffdf44d,0xf7efd251,0xdef2c74c,0xcae89932,
2231 0x0,0x137db2f0,0xbca4caf7,0xff98c7f8,0xff9accfa,0xffa7b6bb,0xfff0c650,0xfffee82d,0xffffed2d,0xffffed2d,0xffffed2d,0xffffe82e,0xeff5c125,0x91e1800e, 1682 0x0,0x137db2f0,0xbca4caf7,0xff98c7f8,0xff9accfa,0xffa7b6bb,0xfff0c650,0xfffee82d,0xffffed2d,0xffffed2d,0xffffed2d,0xffffe82e,0xeff5c125,0x91e1800e,
2232 0x0,0x54995f0,0x799ac2f3,0xfe94c3f5,0xffbeddfa,0xffdde4f0,0xffe7d7c8,0xfff1b227,0xfffed218,0xffffd519,0xffffd519,0xfbf7b616,0x80e27b09,0xbd55a01, 1683 0x0,0x54995f0,0x799ac2f3,0xfe94c3f5,0xffbeddfa,0xffdde4f0,0xffe7d7c8,0xfff1b227,0xfffed218,0xffffd519,0xffffd519,0xfbf7b616,0x80e27b09,0xbd55a01,
2233 0x0,0x0,0x3d71a7ee,0xf1a2c9f2,0xfff2f6f9,0xfaccdaef,0xd287a4d3,0xf2e79a13,0xfffeb906,0xfffdb208,0xfffeba07,0xfdf7a506,0x65e06e02,0x0, 1684 0x0,0x0,0x3d71a7ee,0xf1a2c9f2,0xfff2f6f9,0xfaccdaef,0xd287a4d3,0xf2e79a13,0xfffeb906,0xfffdb208,0xfffeba07,0xfdf7a506,0x65e06e02,0x0,
2234 0x0,0x0,0x1267a1ef,0xce8dbbf1,0xd098bdeb,0x6f5480bf,0x517a5843,0xf3f68e00,0xe0f68d00,0xa2e97a01,0xc3ec8200,0xf4f48c00,0x97dd6500,0x1c54300, 1685 0x0,0x0,0x1267a1ef,0xce8dbbf1,0xd098bdeb,0x6f5480bf,0x517a5843,0xf3f68e00,0xe0f68d00,0xa2e97a01,0xc3ec8200,0xf4f48c00,0x97dd6500,0x1c54300,
2235 0x0,0x0,0x4529af8,0x404b90e5,0x2d164682,0xc1d1209,0x4ee26e00,0xb0ec7400,0x45e66c00,0x7dd6200,0x1cd45600,0x7ddb5d00,0xa4cf4e00,0xdc34100 1686 0x0,0x0,0x4529af8,0x404b90e5,0x2d164682,0xc1d1209,0x4ee26e00,0xb0ec7400,0x45e66c00,0x7dd6200,0x1cd45600,0x7ddb5d00,0xa4cf4e00,0xdc34100
2236}; 1687};
2237 1688
1689static const QRgb new_data[] = {
1690 0x0,0x0,0x0,0xefcbd5e6,0xffe1e6ef,0xffe1e6ef,0xffe0e6ef,0xffdbe2ee,0xffd1dae9,0xfabcc7dc,0x5e9ba5b6,0x2191a1c,0x0,0x0,
1691 0x0,0x0,0x0,0xefd9e1ee,0xffffffff,0xffffffff,0xfffdffff,0xfff2f7fe,0xffe4eaf5,0xffc8d2e4,0xf6d3dceb,0x6199a3b6,0x219191c,0x0,
1692 0x0,0x0,0x0,0xefd9e1ee,0xffffffff,0xffffffff,0xfffeffff,0xfff7faff,0xffeaeef8,0xffcdd6e7,0xffeaeef5,0xf2ccd5e5,0x63949fb2,0x2212225,
1693 0x0,0x0,0x0,0xefd9e1ee,0xffffffff,0xffffffff,0xffffffff,0xfff9fcff,0xffedf2fb,0xffd9e1ef,0xffb6c2d6,0xffa3b2cb,0xfa94a5c0,0x23728097,
1694 0x0,0x0,0x0,0xefd9e1ee,0xffffffff,0xffffffff,0xffffffff,0xfffafdff,0xfff0f4fb,0xffeac99f,0xffc7c9d0,0xffb7c4da,0xffa1b0ca,0x2f566274,
1695 0x0,0x0,0x0,0xefd9e1ee,0xffffffff,0xffffffff,0xfffeffff,0xfff8fbff,0xffece6e2,0xfff7c05d,0xffd2ae82,0xffc2cde0,0xffaab8cf,0x2f566173,
1696 0x0,0x0,0x0,0xefd9e1ee,0xffffffff,0xfffeffff,0xfffafdff,0xffe9eff8,0xffe8c9a0,0xfffdea5a,0xffeaba5d,0xffcaced8,0xffb1bdd3,0x2f566173,
1697 0x0,0x0,0x0,0xefd9e1ee,0xfffffaf3,0xfffee0af,0xfff5d39f,0xfff1ca86,0xfff7cb5d,0xfffffe4c,0xfffae75a,0xffe1ae69,0xffcba57c,0x7dc0702c,
1698 0x0,0x0,0x0,0xefd9e1ee,0xfffffaf2,0xfff9c671,0xfffedf57,0xfffff24a,0xfffff643,0xfffff838,0xfffff83d,0xfffef247,0xfffbe248,0xe9e19226,
1699 0x0,0x0,0x0,0xefd9e1ee,0xfffefeff,0xfff2f1f0,0xfff0c47a,0xfffbcf23,0xffffe324,0xffffe324,0xffffe324,0xfffdd426,0xffd6932b,0x64874714,
1700 0x0,0x0,0x0,0xefd9e1ee,0xfffdfeff,0xfff1f5fd,0xffecf0f6,0xfff3ab31,0xffffcc10,0xffffcb10,0xffffcc10,0xfff6ad11,0xffac8c77,0x3050596a,
1701 0x0,0x0,0x0,0xefd9e1ee,0xfffafcfe,0xffeff4fc,0xffece9e9,0xfff6a113,0xfffda902,0xfff2960b,0xfff8a403,0xfffaa402,0xffb2805c,0x2f535e70,
1702 0x0,0x0,0x0,0xefc3cee0,0xffd1d8e3,0xffcad3e1,0xffd1beb1,0xffee8208,0xffc77d33,0xffaf9a8f,0xffb98b69,0xffda7614,0xffb96730,0x3050525c,
1703 0x0,0x0,0x0,0x28747e91,0x40444c59,0x41434b58,0x62945c29,0x77964a05,0x48453932,0x41404854,0x41434853,0x50723b1a,0x80983c0a,0x1b3e2317
1704};
1705
2238static const QRgb next_data[] = { 1706static const QRgb next_data[] = {
2239 0x0,0x0,0xffffff,0x2ffffff,0x10f5faff,0x2fd4e9ff,0x3dc1e0ff,0x38b6daff,0x21b4d9ff,0x5d7ebff,0xffffff,0x0,0x0,0x0, 1707 0x0,0x0,0xffffff,0x2ffffff,0x10f5faff,0x2fd4e9ff,0x3dc1e0ff,0x38b6daff,0x21b4d9ff,0x5d7ebff,0xffffff,0x0,0x0,0x0,
2240 0x0,0x0,0x9ffffff,0x4fd6eaff,0xbbacd5ff,0xe9aad4ff,0xfab2d8ff,0xf9afd7ff,0xe49ecfff,0xa382c0ff,0x287dbcfc,0x0,0x0,0x0, 1708 0x0,0x0,0x9ffffff,0x4fd6eaff,0xbbacd5ff,0xe9aad4ff,0xfab2d8ff,0xf9afd7ff,0xe49ecfff,0xa382c0ff,0x287dbcfc,0x0,0x0,0x0,
2241 0xffffff,0x9ffffff,0x6ecee6ff,0xeeaad4ff,0xffdeeefe,0xfff9fcfe,0xfffdfdfe,0xfffdfdfe,0xfffafcfe,0xffdbedfe,0xe590c7fe,0x3e72b3f4,0x0,0x0, 1709 0xffffff,0x9ffffff,0x6ecee6ff,0xeeaad4ff,0xffdeeefe,0xfff9fcfe,0xfffdfdfe,0xfffdfdfe,0xfffafcfe,0xffdbedfe,0xe590c7fe,0x3e72b3f4,0x0,0x0,
2242 0x2ffffff,0x51d5eaff,0xefa6d2fe,0xffe8f2fc,0xfff9fbfc,0xfff9fbfc,0xfff3f9fd,0xff9dd1fb,0xffd4ebfe,0xfffbfcfd,0xffe7f2fc,0xe689c3fd,0x2a68abed,0x0, 1710 0x2ffffff,0x51d5eaff,0xefa6d2fe,0xffe8f2fc,0xfff9fbfc,0xfff9fbfc,0xfff3f9fd,0xff9dd1fb,0xffd4ebfe,0xfffbfcfd,0xffe7f2fc,0xe689c3fd,0x2a68abed,0x0,
2243 0x12f5faff,0xbea6d2ff,0xffd4e8fb,0xfff5f8f9,0xfff5f8f9,0xfff5f8f9,0xfff6f9fb,0xff72befc,0xff299efe,0xffe3f1fd,0xfff6f9fa,0xffd1e6fb,0xa568b0f8,0x33c6a98, 1711 0x12f5faff,0xbea6d2ff,0xffd4e8fb,0xfff5f8f9,0xfff5f8f9,0xfff5f8f9,0xfff6f9fb,0xff72befc,0xff299efe,0xffe3f1fd,0xfff6f9fa,0xffd1e6fb,0xa568b0f8,0x33c6a98,
2244 0x34d4e9ff,0xec9accfd,0xffecf3f7,0xffeaedef,0xffe6eaec,0xffe7ebed,0xffe8ebed,0xffdde6ec,0xff49a9f7,0xff48acfe,0xffedf5fb,0xffecf3f7,0xe57bbaf9,0x1c4c8aca, 1712 0x34d4e9ff,0xec9accfd,0xffecf3f7,0xffeaedef,0xffe6eaec,0xffe7ebed,0xffe8ebed,0xffdde6ec,0xff49a9f7,0xff48acfe,0xffedf5fb,0xffecf3f7,0xe57bbaf9,0x1c4c8aca,
2245 0x45c1e0ff,0xfb99cafb,0xffeaf0f3,0xff58acef,0xff2296f4,0xff2397f5,0xff2397f5,0xff2296f4,0xff1895fa,0xff028dfe,0xff78c2fe,0xffeef3f6,0xfa85c0f9,0x31478cd0, 1713 0x45c1e0ff,0xfb99cafb,0xffeaf0f3,0xff58acef,0xff2296f4,0xff2397f5,0xff2397f5,0xff2296f4,0xff1895fa,0xff028dfe,0xff78c2fe,0xffeef3f6,0xfa85c0f9,0x31478cd0,
2246 0x41b4daff,0xfa8ec5fa,0xffe8eff2,0xff9fd2fb,0xff7fc5fd,0xff7fc5fd,0xff7fc5fd,0xff7cc3fc,0xff45aafc,0xff0c91fe,0xffb0dafd,0xffe8eff3,0xfa7cbbf8,0x333c82c7, 1714 0x41b4daff,0xfa8ec5fa,0xffe8eff2,0xff9fd2fb,0xff7fc5fd,0xff7fc5fd,0xff7fc5fd,0xff7cc3fc,0xff45aafc,0xff0c91fe,0xffb0dafd,0xffe8eff3,0xfa7cbbf8,0x333c82c7,
2247 0x2bb6dbff,0xe778bbfb,0xffdbe6ed,0xffe4ecef,0xffe6eef1,0xffe7eef1,0xffe9f0f3,0xffb3cbdd,0xff1f98fa,0xff85c8fe,0xffedf2f5,0xffdae6ed,0xe860aaf4,0x232c69a5, 1715 0x2bb6dbff,0xe778bbfb,0xffdbe6ed,0xffe4ecef,0xffe6eef1,0xffe7eef1,0xffe9f0f3,0xffb3cbdd,0xff1f98fa,0xff85c8fe,0xffedf2f5,0xffdae6ed,0xe860aaf4,0x232c69a5,
2248 0xbe5f2ff,0xac5daeff,0xffb1d2ee,0xffd8e3e8,0xffd8e3e8,0xffd9e4e9,0xffdee9ef,0xff3ca1f2,0xff5eb6fe,0xffebf3f7,0xffdae4e9,0xffafd1ee,0xb03890e9,0x90d2134, 1716 0xbe5f2ff,0xac5daeff,0xffb1d2ee,0xffd8e3e8,0xffd8e3e8,0xffd9e4e9,0xffdee9ef,0xff3ca1f2,0xff5eb6fe,0xffebf3f7,0xffdae4e9,0xffafd1ee,0xb03890e9,0x90d2134,
2249 0x1ffffff,0x3371b6fd,0xe653a7fa,0xffbdd6ea,0xffd3e0e6,0xffd4e0e6,0xffdbe7ee,0xffd2e7f6,0xffe4eef4,0xffd7e3e8,0xffbdd6ea,0xeb4da1f4,0x3d2264a5,0x1000000, 1717 0x1ffffff,0x3371b6fd,0xe653a7fa,0xffbdd6ea,0xffd3e0e6,0xffd4e0e6,0xffdbe7ee,0xffd2e7f6,0xffe4eef4,0xffd7e3e8,0xffbdd6ea,0xeb4da1f4,0x3d2264a5,0x1000000,
2250 0xffffff,0x3ffffff,0x403394f5,0xe649a2f9,0xffa5caeb,0xffcadbe4,0xffcfdde4,0xffd0dde5,0xffcbdbe5,0xffa4caeb,0xeb469ef3,0x591f66ad,0x5000000,0x0, 1718 0xffffff,0x3ffffff,0x403394f5,0xe649a2f9,0xffa5caeb,0xffcadbe4,0xffcfdde4,0xffd0dde5,0xffcbdbe5,0xffa4caeb,0xeb469ef3,0x591f66ad,0x5000000,0x0,
2251 0x0,0x0,0xa2a2a2,0x2a268aed,0xa52890f8,0xe5469ff5,0xfa5ba9f4,0xfa5ba8f4,0xe8459df2,0xb02588e9,0x3d1a60a5,0x5000000,0x0,0x0, 1719 0x0,0x0,0xa2a2a2,0x2a268aed,0xa52890f8,0xe5469ff5,0xfa5ba9f4,0xfa5ba8f4,0xe8459df2,0xb02588e9,0x3d1a60a5,0x5000000,0x0,0x0,
2252 0x0,0x0,0x0,0x0,0x3165798,0x1c1d74ca,0x311e77d0,0x331c72c7,0x23185ea5,0x9081e34,0x1000000,0x0,0x0,0x0 1720 0x0,0x0,0x0,0x0,0x3165798,0x1c1d74ca,0x311e77d0,0x331c72c7,0x23185ea5,0x9081e34,0x1000000,0x0,0x0,0x0
2253}; 1721};
2254 1722
1723static const QRgb OKButton_data[] = {
1724 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,
1725 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,
1726 0xffffff,0xffffff,0xffffff,0xffffff,0x3ed5d5d5,0x93d4d4d4,0xd5d9d9d9,0xfed8d8d8,0xf8d2d2d2,0xeed5d5d5,0xe1d1d1d1,0xdcd3d3d3,0xe1d3d3d3,0xe6d4d4d4,
1727 0xecd6d6d6,0xf1d5d5d5,0xf6d5d5d5,0xfbd6d6d6,0xfed7d7d7,0xffd8d8d8,0xffd6d6d6,0xd9cacaca,0xa1bebebe,0x518f8f8f,0xc000000,0x3000000,0xffffff,0xffffff,
1728 0xffffff,0xffffff,0xffffff,0x5fd5d5d5,0xdbdddddd,0xffdcdcdc,0xffcbcbcb,0xffc5c5c5,0xffc3c3c3,0xffcdcdcd,0xffc7c7c7,0xffc4c4c4,0xffc5c5c5,0xffc5c5c5,
1729 0xffc4c4c4,0xffc3c3c3,0xffc4c4c4,0xffc5c5c5,0xffc8c8c8,0xffcacaca,0xffcbcbcb,0xffcccccc,0xffd5d5d5,0xe7bdbdbd,0x847e7e7e,0x18000000,0x4000000,0xffffff,
1730 0xffffff,0xffffff,0x3ed6d5d5,0xdbd3d3d3,0xffd1d1d1,0xffc0bfbf,0xffbcbcbc,0xffb7b6b7,0xffb9b8b9,0xff989898,0xff313131,0xff323232,0xff555555,0xffbababa,
1731 0xff969696,0xff323232,0xff989798,0xffc1c0c1,0xff797879,0xffa6a5a6,0xffcecdce,0xffcecdce,0xffcbcbcb,0xffbbbcbb,0xed939293,0x76484848,0x18000000,0x3000000,
1732 0xffffff,0xffffff,0x93cccdcc,0xffc8c7c7,0xffb0b0b0,0xffaeadad,0xffb2b2b2,0xffb0b0b0,0xffafaeae,0xff000000,0xff5b5c5b,0xffb2b1b1,0xff000000,0xff606060,
1733 0xff828282,0xff000000,0xff878787,0xff6a6a6a,0xff1a1a1a,0xffa4a4a4,0xffc8c8c8,0xffc9c8c8,0xffc7c7c7,0xffbdbebd,0xffa6a5a5,0xc9505050,0x3d000000,0xc000000,
1734 0xffffff,0xffffff,0xd5c1c1c1,0xffacacac,0xff999999,0xffa1a1a1,0xff9b9a9a,0xffa4a4a4,0xff989898,0xff000000,0xff565656,0xffa9a9a9,0xff000000,0xff565656,
1735 0xff757575,0xff000000,0xff474747,0xff191919,0xff8e8e8e,0xffbababa,0xffb5b5b5,0xffb0b0b0,0xffbcbcbc,0xffbbbbbb,0xffafafaf,0xf0545454,0x61000000,0x1a000000,
1736 0xffffff,0xffffff,0xfab3b3b3,0xff969696,0xff878787,0xff9a9a9a,0xff919191,0xff8c8c8c,0xff929292,0xff000000,0xff515151,0xff959595,0xff000000,0xff4d4d4d,
1737 0xff686868,0xff000000,0xff000000,0xff909090,0xffafafaf,0xff9f9f9f,0xff999999,0xffa5a5a5,0xffb0b0b0,0xffb7b7b7,0xff9f9f9f,0xfd505050,0x7c000000,0x25000000,
1738 0xffffff,0xffffff,0xd8a0a0a0,0xff888888,0xff858585,0xff7a7a7a,0xff838383,0xff8a8a8a,0xff838383,0xff000000,0xff464646,0xff878787,0xff000000,0xff494949,
1739 0xff636363,0xff000000,0xff1e1e1e,0xff212121,0xff9b9b9b,0xffa6a6a6,0xff9f9f9f,0xffa0a0a0,0xffacacac,0xffa7a7a7,0xff858585,0xf2393939,0x85000000,0x2b000000,
1740 0xffffff,0xffffff,0x9e818181,0xff848483,0xff757676,0xff7b7b7b,0xff707070,0xff777776,0xff797979,0xff000000,0xff434443,0xff737273,0xff000000,0xff3e3e3e,
1741 0xff555554,0xff000000,0xff616160,0xff3d3d3c,0xff2c2c2c,0xff8f8f8f,0xffa1a1a1,0xffa5a5a5,0xff9e9e9e,0xff979897,0xff5e5d5e,0xdf282828,0x7c000000,0x25000000,
1742 0xffffff,0xffffff,0x505b5b5b,0xe66a6a6a,0xff6c6c6c,0xff686868,0xff656666,0xff656565,0xff6c6d6c,0xff373737,0xff0d0d0d,0xff1c1c1c,0xff131414,0xff585959,
1743 0xff4a4a4a,0xff000000,0xff4f4f4f,0xff727272,0xff373737,0xff6d6d6d,0xff979797,0xff989998,0xff878787,0xff666566,0xf5333333,0xbb101010,0x61000000,0x1a000000,
1744 0xffffff,0xffffff,0xc000000,0x833c3c3c,0xec474747,0xff4c4b4b,0xff535352,0xff575757,0xff575657,0xff595859,0xff585857,0xff545453,0xff525251,0xff535352,
1745 0xff545454,0xff565656,0xff5a5a5a,0xff606060,0xff696969,0xff717171,0xff707070,0xff666566,0xff535253,0xf5323231,0xce161616,0x83000000,0x3d000000,0xc000000,
1746 0xffffff,0xffffff,0x3000000,0x18000000,0x751f1f1f,0xc8262626,0xef272727,0xff2e2e2e,0xfd282828,0xfa262626,0xf5242424,0xf3232323,0xf5262626,0xf7262626,
1747 0xf9282828,0xfa292929,0xfc2c2c2c,0xfe2d2d2d,0xff323232,0xff343434,0xff343434,0xf3292929,0xdf1d1d1d,0xbb0d0d0d,0x83000000,0x4b000000,0x18000000,0x3000000,
1748 0xffffff,0xffffff,0xffffff,0x4000000,0x18000000,0x3d000000,0x61000000,0x7c000000,0x8a000000,0x8b000000,0x87000000,0x82000000,0x81000000,0x82000000,
1749 0x84000000,0x87000000,0x89000000,0x8b000000,0x8e000000,0x8e000000,0x8f000000,0x8b000000,0x7c000000,0x61000000,0x3d000000,0x18000000,0x4000000,0xffffff,
1750 0xffffff,0xffffff,0xffffff,0xffffff,0x3000000,0xc000000,0x1a000000,0x26000000,0x2d000000,0x2e000000,0x2b000000,0x29000000,0x28000000,0x29000000,
1751 0x2a000000,0x2b000000,0x2d000000,0x2e000000,0x2e000000,0x2f000000,0x30000000,0x2e000000,0x26000000,0x1a000000,0xc000000,0x3000000,0xffffff,0xffffff
1752};
1753
2255static const unsigned char oneoverx_data[] = { 1754static const unsigned char oneoverx_data[] = {
2256 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1755 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2257 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00, 1756 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,
2258 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, 1757 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
2259 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01, 1758 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,
2260 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1759 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2261 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01, 1760 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,
2262 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1761 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2263 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1762 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2264 0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00, 1763 0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,
2265 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00, 1764 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
2266 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, 1765 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
2267 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x01, 1766 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x01,
2268 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00 1767 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00
2269}; 1768};
2270 1769
2271static const QRgb oneoverx_ctable[] = { 1770static const QRgb oneoverx_ctable[] = {
2272 0xc6c6c6,0xff000000 1771 0xc6c6c6,0xff000000
2273}; 1772};
2274 1773
2275static const unsigned char pass_data[] = { 1774static const unsigned char pass_data[] = {
2276 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1775 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2277 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1776 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2278 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00, 1777 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,
2279 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x01,0x00, 1778 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x01,0x00,
2280 0x00,0x00,0x01,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x02, 1779 0x00,0x00,0x01,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x02,
2281 0x01,0x00,0x00,0x01,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x01,0x02, 1780 0x01,0x00,0x00,0x01,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x01,0x02,
2282 0x02,0x02,0x01,0x00,0x01,0x02,0x02,0x02,0x02,0x02,0x01,0x00,0x00,0x00, 1781 0x02,0x02,0x01,0x00,0x01,0x02,0x02,0x02,0x02,0x02,0x01,0x00,0x00,0x00,
2283 0x01,0x02,0x02,0x02,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x01, 1782 0x01,0x02,0x02,0x02,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x01,
2284 0x01,0x01,0x01,0x02,0x02,0x02,0x01,0x01,0x01,0x01,0x02,0x02,0x02,0x01, 1783 0x01,0x01,0x01,0x02,0x02,0x02,0x01,0x01,0x01,0x01,0x02,0x02,0x02,0x01,
2285 0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x01,0x01,0x02,0x02, 1784 0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x01,0x01,0x02,0x02,
2286 0x02,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x02,0x02,0x01,0x00,0x01, 1785 0x02,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x02,0x02,0x01,0x00,0x01,
2287 0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x01,0x00, 1786 0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x01,0x00,
2288 0x00,0x01,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x01, 1787 0x00,0x01,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x01,
2289 0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00, 1788 0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
2290 0x01,0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x00, 1789 0x01,0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x00,
2291 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x00,0x00 1790 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x00,0x00
2292}; 1791};
2293 1792
2294static const QRgb pass_ctable[] = { 1793static const QRgb pass_ctable[] = {
2295 0xc6c6c6,0xff000000,0xffffff00 1794 0xc6c6c6,0xff000000,0xffffff00
2296}; 1795};
2297 1796
2298static const QRgb paste_data[] = {
2299 0x27efb54a,0x61efb649,0x61f1b645,0x61e0ae4e,0x8a96a0ac,0xe29bb0d4,0xcf5e7095,0x615e4f33,0x61e8a933,0x45e5a732,0x1168440f,0x4240c00,0x0,0x0,
2300 0xd1efbe61,0xfff2d797,0xffedcf86,0xffbaaf8f,0xffa7b4c7,0xffc9d6eb,0xffc0d1eb,0xff7e8289,0xffc39033,0xead58c1d,0x9c7e440b,0x2d2c0f00,0x1000000,0x0,
2301 0xfcf0c470,0xfff5f0d4,0xffddd6b5,0xff8695a8,0xff7285a7,0xff7786a1,0xff7a879c,0xff69748e,0xff946339,0xfff67202,0xdaa44102,0x52311100,0x6000000,0x0,
2302 0xf7f0c36e,0xfff4ebcc,0xffecdcaf,0xffcdc29b,0xffc1b486,0xffc3a86b,0xffb8924a,0xffb17b31,0xffc66c1c,0xffde6610,0xde944311,0x5830170e,0x7020000,0x0,
2303 0xf7f0c36e,0xfff3e7c5,0xfff4e1aa,0xfff7df9b,0xfff8d781,0xfff7c353,0xffcfa555,0xffb8b7ac,0xffc2b1aa,0xffb7aaac,0xf49ba0b2,0x9755739a,0x19154070,0x0,
2304 0xf7f0c36e,0xfff3e3b5,0xfff3d893,0xfff3d485,0xfff4c663,0xfff3aa27,0xffbc9656,0xffc5e2ff,0xffbfdafb,0xffadcffc,0xffa9ccfd,0xee6eabf2,0x832061a8,0xf002f61,
2305 0xf7f0c36d,0xfff3e2ad,0xfff3d890,0xfff3cc73,0xfff4b63e,0xfff3a216,0xffbc9859,0xffcde6fe,0xffc8dffb,0xffbad6fb,0xffa8ccfb,0xff5da3f8,0xf3218af6,0x5e07427d,
2306 0xf7f0c36d,0xfff3e0af,0xfff3d181,0xfff3c056,0xfff4b539,0xfff2ab22,0xffbc9c60,0xffcce5fe,0xffc7defb,0xffb8d5fb,0xffbbd5fd,0xffabcafe,0xff6cb0ff,0x73194579,
2307 0xf7f0c36e,0xfff3dda7,0xfff3c564,0xfff3bc4c,0xfff4b63c,0xfff3ac26,0xffbc9e63,0xffcae4ff,0xffbcd7fb,0xffa4c8fb,0xff92bbfb,0xff8eb7fb,0xff72b3fe,0x741d4678,
2308 0xf7f0c36d,0xfff3d99a,0xfff3bd50,0xfff3ba45,0xfff4b53b,0xfff3ac25,0xffbc9d63,0xffcae5ff,0xffbbd6fb,0xffa1c5fb,0xff99c1fb,0xff9cc1fc,0xff7cb9fe,0x741f4678,
2309 0xfbf5c870,0xfff8dc9b,0xfff8c65c,0xfff8c252,0xfff8be49,0xfff7b534,0xffbfa46c,0xffcbe4ff,0xffb7d3fb,0xffa4c6fb,0xffa0c4fb,0xffa2c4fc,0xff80bdff,0x74204778,
2310 0xb2b08749,0xf6b78958,0xf8b48041,0xf8b47d3a,0xf8b47c36,0xf8b3742b,0xfe927d68,0xffc4e7ff,0xffc1defe,0xffb4d6fe,0xffaed3fe,0xffaed2fe,0xff7dc1ff,0x761d487a,
2311 0x274d2f15,0x64533018,0x73482912,0x73482810,0x73482810,0x7048250e,0x9b303341,0xd43a7cba,0xd53c78b3,0xd53975b3,0xd53774b3,0xd53674b3,0xd32570b9,0x61083059,
2312 0x1000000,0x8000000,0xd000000,0xd000000,0xd000000,0xd000000,0x1d000a17,0x38002245,0x3b001e3e,0x3a001f3f,0x3a001f3f,0x3b001f3e,0x37002245,0x1a001020
2313};
2314
2315static const QRgb paste_inactive_data[] = { 1797static const QRgb paste_inactive_data[] = {
2316 0x1bbbbbbb,0x45bababa,0x45bababa,0x45b2b2b2,0x619e9e9e,0x9fadadad,0x916e6e6e,0x45505050,0x45afafaf,0x31acacac,0xc484848,0x3111111,0x0,0x0, 1798 0x1bbbbbbb,0x45bababa,0x45bababa,0x45b2b2b2,0x619e9e9e,0x9fadadad,0x916e6e6e,0x45505050,0x45afafaf,0x31acacac,0xc484848,0x3111111,0x0,0x0,
2317 0x93c3c3c3,0xb3d8d8d8,0xb3cfcfcf,0xb3aeaeae,0xb3b2b2b2,0xb3d4d4d4,0xb3cecece,0xb3828282,0xb3949494,0xa4959595,0x6d4f4f4f,0x1f151515,0x1000000,0x0, 1799 0x93c3c3c3,0xb3d8d8d8,0xb3cfcfcf,0xb3aeaeae,0xb3b2b2b2,0xb3d4d4d4,0xb3cecece,0xb3828282,0xb3949494,0xa4959595,0x6d4f4f4f,0x1f151515,0x1000000,0x0,
2318 0xb1c7c7c7,0xb3eeeeee,0xb3d4d4d4,0xb3929292,0xb3838383,0xb3848484,0xb3858585,0xb3737373,0xb36d6d6d,0xb38d8d8d,0x99575757,0x3a181818,0x4000000,0x0, 1800 0xb1c7c7c7,0xb3eeeeee,0xb3d4d4d4,0xb3929292,0xb3838383,0xb3848484,0xb3858585,0xb3737373,0xb36d6d6d,0xb38d8d8d,0x99575757,0x3a181818,0x4000000,0x0,
2319 0xaec6c6c6,0xb3eaeaea,0xb3dbdbdb,0xb3c0c0c0,0xb3b2b2b2,0xb3a9a9a9,0xb3959595,0xb3828282,0xb37d7d7d,0xb3808080,0x9c555555,0x3e1d1d1d,0x5000000,0x0, 1801 0xaec6c6c6,0xb3eaeaea,0xb3dbdbdb,0xb3c0c0c0,0xb3b2b2b2,0xb3a9a9a9,0xb3959595,0xb3828282,0xb37d7d7d,0xb3808080,0x9c555555,0x3e1d1d1d,0x5000000,0x0,
2320 0xaec6c6c6,0xb3e6e6e6,0xb3e0e0e0,0xb3dedede,0xb3d7d7d7,0xb3c6c6c6,0xb3a8a8a8,0xb3b5b5b5,0xb3b5b5b5,0xb3adadad,0xaba0a0a0,0x6a6e6e6e,0x12383838,0x0, 1802 0xaec6c6c6,0xb3e6e6e6,0xb3e0e0e0,0xb3dedede,0xb3d7d7d7,0xb3c6c6c6,0xb3a8a8a8,0xb3b5b5b5,0xb3b5b5b5,0xb3adadad,0xaba0a0a0,0x6a6e6e6e,0x12383838,0x0,
2321 0xaec6c6c6,0xb3e3e3e3,0xb3d8d8d8,0xb3d4d4d4,0xb3c8c8c8,0xb3b0b0b0,0xb3999999,0xb3dcdcdc,0xb3d5d5d5,0xb3c9c9c9,0xb3c6c6c6,0xa7a0a0a0,0x5c555555,0xb252525, 1803 0xaec6c6c6,0xb3e3e3e3,0xb3d8d8d8,0xb3d4d4d4,0xb3c8c8c8,0xb3b0b0b0,0xb3999999,0xb3dcdcdc,0xb3d5d5d5,0xb3c9c9c9,0xb3c6c6c6,0xa7a0a0a0,0x5c555555,0xb252525,
2322 0xaec6c6c6,0xb3e1e1e1,0xb3d8d8d8,0xb3cdcdcd,0xb3bbbbbb,0xb3aaaaaa,0xb39b9b9b,0xb3e0e0e0,0xb3dbdbdb,0xb3d1d1d1,0xb3c6c6c6,0xb3979797,0xab767676,0x42373737, 1804 0xaec6c6c6,0xb3e1e1e1,0xb3d8d8d8,0xb3cdcdcd,0xb3bbbbbb,0xb3aaaaaa,0xb39b9b9b,0xb3e0e0e0,0xb3dbdbdb,0xb3d1d1d1,0xb3c6c6c6,0xb3979797,0xab767676,0x42373737,
2323 0xaec6c6c6,0xb3e0e0e0,0xb3d2d2d2,0xb3c3c3c3,0xb3bababa,0xb3b1b1b1,0xb39e9e9e,0xb3e0e0e0,0xb3dadada,0xb3d0d0d0,0xb3d1d1d1,0xb3c6c6c6,0xb3a4a4a4,0x513d3d3d, 1805 0xaec6c6c6,0xb3e0e0e0,0xb3d2d2d2,0xb3c3c3c3,0xb3bababa,0xb3b1b1b1,0xb39e9e9e,0xb3e0e0e0,0xb3dadada,0xb3d0d0d0,0xb3d1d1d1,0xb3c6c6c6,0xb3a4a4a4,0x513d3d3d,
2324 0xaec6c6c6,0xb3dddddd,0xb3c8c8c8,0xb3c0c0c0,0xb3bababa,0xb3b2b2b2,0xb3a0a0a0,0xb3dfdfdf,0xb3d3d3d3,0xb3c2c2c2,0xb3b5b5b5,0xb3b1b1b1,0xb3a8a8a8,0x513f3f3f, 1806 0xaec6c6c6,0xb3dddddd,0xb3c8c8c8,0xb3c0c0c0,0xb3bababa,0xb3b2b2b2,0xb3a0a0a0,0xb3dfdfdf,0xb3d3d3d3,0xb3c2c2c2,0xb3b5b5b5,0xb3b1b1b1,0xb3a8a8a8,0x513f3f3f,
2325 0xaec6c6c6,0xb3d9d9d9,0xb3c1c1c1,0xb3bebebe,0xb3bababa,0xb3b2b2b2,0xb3a0a0a0,0xb3dfdfdf,0xb3d2d2d2,0xb3c0c0c0,0xb3bbbbbb,0xb3bcbcbc,0xb3aeaeae,0x51404040, 1807 0xaec6c6c6,0xb3d9d9d9,0xb3c1c1c1,0xb3bebebe,0xb3bababa,0xb3b2b2b2,0xb3a0a0a0,0xb3dfdfdf,0xb3d2d2d2,0xb3c0c0c0,0xb3bbbbbb,0xb3bcbcbc,0xb3aeaeae,0x51404040,
2326 0xb3cbcbcb,0xb6dddddd,0xb5c9c9c9,0xb4c6c6c6,0xb4c2c2c2,0xb4bababa,0xb4a5a5a5,0xb3dfdfdf,0xb3cecece,0xb3c1c1c1,0xb3bebebe,0xb3bfbfbf,0xb3b1b1b1,0x51414141, 1808 0xb3cbcbcb,0xb6dddddd,0xb5c9c9c9,0xb4c6c6c6,0xb4c2c2c2,0xb4bababa,0xb4a5a5a5,0xb3dfdfdf,0xb3cecece,0xb3c1c1c1,0xb3bebebe,0xb3bfbfbf,0xb3b1b1b1,0x51414141,
2327 0x828c8c8c,0xb2909090,0xb2888888,0xb1868686,0xb0848484,0xaf7e7e7e,0xb4808080,0xb4dfdfdf,0xb4d8d8d8,0xb4d0d0d0,0xb4cccccc,0xb4cbcbcb,0xb4b3b3b3,0x53414141, 1809 0x828c8c8c,0xb2909090,0xb2888888,0xb1868686,0xb0848484,0xaf7e7e7e,0xb4808080,0xb4dfdfdf,0xb4d8d8d8,0xb4d0d0d0,0xb4cccccc,0xb4cbcbcb,0xb4b3b3b3,0x53414141,
2328 0x1c353535,0x49383838,0x532f2f2f,0x532e2e2e,0x522e2e2e,0x502d2d2d,0x6e333333,0x966e6e6e,0x976c6c6c,0x97696969,0x98686868,0x98676767,0x97606060,0x45282828, 1810 0x1c353535,0x49383838,0x532f2f2f,0x532e2e2e,0x522e2e2e,0x502d2d2d,0x6e333333,0x966e6e6e,0x976c6c6c,0x97696969,0x98686868,0x98676767,0x97606060,0x45282828,
2329 0x1000000,0x6000000,0x9000000,0x9000000,0x9000000,0x9000000,0x14080808,0x281c1c1c,0x2a181818,0x2a181818,0x29191919,0x2a191919,0x281b1b1b,0x120d0d0d 1811 0x1000000,0x6000000,0x9000000,0x9000000,0x9000000,0x9000000,0x14080808,0x281c1c1c,0x2a181818,0x2a181818,0x29191919,0x2a191919,0x281b1b1b,0x120d0d0d
2330}; 1812};
2331 1813
1814static const QRgb paste_data[] = {
1815 0x27efb54a,0x61efb649,0x61f1b645,0x61e0ae4e,0x8a96a0ac,0xe29bb0d4,0xcf5e7095,0x615e4f33,0x61e8a933,0x45e5a732,0x1168440f,0x4240c00,0x0,0x0,
1816 0xd1efbe61,0xfff2d797,0xffedcf86,0xffbaaf8f,0xffa7b4c7,0xffc9d6eb,0xffc0d1eb,0xff7e8289,0xffc39033,0xead58c1d,0x9c7e440b,0x2d2c0f00,0x1000000,0x0,
1817 0xfcf0c470,0xfff5f0d4,0xffddd6b5,0xff8695a8,0xff7285a7,0xff7786a1,0xff7a879c,0xff69748e,0xff946339,0xfff67202,0xdaa44102,0x52311100,0x6000000,0x0,
1818 0xf7f0c36e,0xfff4ebcc,0xffecdcaf,0xffcdc29b,0xffc1b486,0xffc3a86b,0xffb8924a,0xffb17b31,0xffc66c1c,0xffde6610,0xde944311,0x5830170e,0x7020000,0x0,
1819 0xf7f0c36e,0xfff3e7c5,0xfff4e1aa,0xfff7df9b,0xfff8d781,0xfff7c353,0xffcfa555,0xffb8b7ac,0xffc2b1aa,0xffb7aaac,0xf49ba0b2,0x9755739a,0x19154070,0x0,
1820 0xf7f0c36e,0xfff3e3b5,0xfff3d893,0xfff3d485,0xfff4c663,0xfff3aa27,0xffbc9656,0xffc5e2ff,0xffbfdafb,0xffadcffc,0xffa9ccfd,0xee6eabf2,0x832061a8,0xf002f61,
1821 0xf7f0c36d,0xfff3e2ad,0xfff3d890,0xfff3cc73,0xfff4b63e,0xfff3a216,0xffbc9859,0xffcde6fe,0xffc8dffb,0xffbad6fb,0xffa8ccfb,0xff5da3f8,0xf3218af6,0x5e07427d,
1822 0xf7f0c36d,0xfff3e0af,0xfff3d181,0xfff3c056,0xfff4b539,0xfff2ab22,0xffbc9c60,0xffcce5fe,0xffc7defb,0xffb8d5fb,0xffbbd5fd,0xffabcafe,0xff6cb0ff,0x73194579,
1823 0xf7f0c36e,0xfff3dda7,0xfff3c564,0xfff3bc4c,0xfff4b63c,0xfff3ac26,0xffbc9e63,0xffcae4ff,0xffbcd7fb,0xffa4c8fb,0xff92bbfb,0xff8eb7fb,0xff72b3fe,0x741d4678,
1824 0xf7f0c36d,0xfff3d99a,0xfff3bd50,0xfff3ba45,0xfff4b53b,0xfff3ac25,0xffbc9d63,0xffcae5ff,0xffbbd6fb,0xffa1c5fb,0xff99c1fb,0xff9cc1fc,0xff7cb9fe,0x741f4678,
1825 0xfbf5c870,0xfff8dc9b,0xfff8c65c,0xfff8c252,0xfff8be49,0xfff7b534,0xffbfa46c,0xffcbe4ff,0xffb7d3fb,0xffa4c6fb,0xffa0c4fb,0xffa2c4fc,0xff80bdff,0x74204778,
1826 0xb2b08749,0xf6b78958,0xf8b48041,0xf8b47d3a,0xf8b47c36,0xf8b3742b,0xfe927d68,0xffc4e7ff,0xffc1defe,0xffb4d6fe,0xffaed3fe,0xffaed2fe,0xff7dc1ff,0x761d487a,
1827 0x274d2f15,0x64533018,0x73482912,0x73482810,0x73482810,0x7048250e,0x9b303341,0xd43a7cba,0xd53c78b3,0xd53975b3,0xd53774b3,0xd53674b3,0xd32570b9,0x61083059,
1828 0x1000000,0x8000000,0xd000000,0xd000000,0xd000000,0xd000000,0x1d000a17,0x38002245,0x3b001e3e,0x3a001f3f,0x3a001f3f,0x3b001f3e,0x37002245,0x1a001020
1829};
1830
2332static const QRgb pixmap_data[] = { 1831static const QRgb pixmap_data[] = {
2333 0x9377b7fe,0xc277b7fe,0xc264aefe,0xc251a5fe,0xc23e9cfe,0xc22f94fe,0xc22890fe,0xc22890fe,0xc22890fe,0xc22890fe,0xc2258cf8,0x2a0449a2,0x0,0x0, 1832 0x9377b7fe,0xc277b7fe,0xc264aefe,0xc251a5fe,0xc23e9cfe,0xc22f94fe,0xc22890fe,0xc22890fe,0xc22890fe,0xc22890fe,0xc2258cf8,0x2a0449a2,0x0,0x0,
2334 0xc28fc3fd,0xff90c3fc,0xff71b4fc,0xff50a4fc,0xff3194fc,0xff1788fc,0xff0b81fc,0xff0b81fc,0xff0b80fc,0xff0a80fc,0xff0a7df5,0x3e034391,0x0,0x0, 1833 0xc28fc3fd,0xff90c3fc,0xff71b4fc,0xff50a4fc,0xff3194fc,0xff1788fc,0xff0b81fc,0xff0b81fc,0xff0b80fc,0xff0a80fc,0xff0a7df5,0x3e034391,0x0,0x0,
2335 0xc2cae2fa,0xfff7f8f9,0xfff4f7f9,0xfff0f6f9,0xffecf4f9,0xffe8f3f9,0xffdfecf7,0xffc9d8f0,0xffc3d3ed,0xffc2d6ed,0xffc4ddf1,0x3e1b4f91,0x0,0x0, 1834 0xc2cae2fa,0xfff7f8f9,0xfff4f7f9,0xfff0f6f9,0xffecf4f9,0xffe8f3f9,0xffdfecf7,0xffc9d8f0,0xffc3d3ed,0xffc2d6ed,0xffc4ddf1,0x3e1b4f91,0x0,0x0,
2336 0xc2cee6fe,0xfffafdff,0xfff7fcff,0xfff3fbff,0xffeef8ff,0xffd1def9,0xffd4dcf7,0xffe4e9fd,0xffd7e0fe,0xffc1cdf9,0xffaebbe6,0x61576ba2,0x1a1c2b,0x0, 1835 0xc2cee6fe,0xfffafdff,0xfff7fcff,0xfff3fbff,0xffeef8ff,0xffd1def9,0xffd4dcf7,0xffe4e9fd,0xffd7e0fe,0xffc1cdf9,0xffaebbe6,0x61576ba2,0x1a1c2b,0x0,
2337 0xc2cde6fe,0xfff8fdff,0xfff4fbff,0xfff0f9ff,0xffd3dffb,0xfff1f4fe,0xfff5f7ff,0xffeff3ff,0xffdce5ff,0xffd1ddff,0xffe2e9ff,0xf6d2d6ef,0x476971a4,0x0, 1836 0xc2cde6fe,0xfff8fdff,0xfff4fbff,0xfff0f9ff,0xffd3dffb,0xfff1f4fe,0xfff5f7ff,0xffeff3ff,0xffdce5ff,0xffd1ddff,0xffe2e9ff,0xf6d2d6ef,0x476971a4,0x0,
2338 0xc2cce5fe,0xfff6fbff,0xfff2faff,0xffe0ecfe,0xffdfe8fe,0xfff5f8ff,0xfffbfcff,0xfff5f7ff,0xffe2eaff,0xffe0e8ff,0xfff6f8ff,0xfff7f9ff,0xdeb3b8db,0x10323756, 1837 0xc2cce5fe,0xfff6fbff,0xfff2faff,0xffe0ecfe,0xffdfe8fe,0xfff5f8ff,0xfffbfcff,0xfff5f7ff,0xffe2eaff,0xffe0e8ff,0xfff6f8ff,0xfff7f9ff,0xdeb3b8db,0x10323756,
2339 0xc2cbe5fe,0xfff3faff,0xffeff9ff,0xffd3e1fe,0xffdbe6ff,0xffe7efff,0xfff6f9ff,0xfff7f8fe,0xffe5ebfb,0xfff2f5fe,0xfff8faff,0xfff5f8ff,0xffe0e4f9,0x575b608f, 1838 0xc2cbe5fe,0xfff3faff,0xffeff9ff,0xffd3e1fe,0xffdbe6ff,0xffe7efff,0xfff6f9ff,0xfff7f8fe,0xffe5ebfb,0xfff2f5fe,0xfff8faff,0xfff5f8ff,0xffe0e4f9,0x575b608f,
2340 0xc2c8e4fe,0xfff0f9ff,0xffebf8ff,0xffd1dffe,0xffcedeff,0xffdae6ff,0xffe6eeff,0xffd7dff7,0xffa8b7d4,0xffe2e5f4,0xffe7edff,0xffd6e1ff,0xffc9d7ff,0x8b7176a6, 1839 0xc2c8e4fe,0xfff0f9ff,0xffebf8ff,0xffd1dffe,0xffcedeff,0xffdae6ff,0xffe6eeff,0xffd7dff7,0xffa8b7d4,0xffe2e5f4,0xffe7edff,0xffd6e1ff,0xffc9d7ff,0x8b7176a6,
2341 0xc2c6e3fe,0xffedf8ff,0xffe8f6ff,0xffd1e0fe,0xffd8e5ff,0xffe8efff,0xfff3f7ff,0xffd9e0f7,0xffb1c2e2,0xffe3e6f4,0xffe9efff,0xffdce6ff,0xffd1ddff,0x8f6e74a1, 1840 0xc2c6e3fe,0xffedf8ff,0xffe8f6ff,0xffd1e0fe,0xffd8e5ff,0xffe8efff,0xfff3f7ff,0xffd9e0f7,0xffb1c2e2,0xffe3e6f4,0xffe9efff,0xffdce6ff,0xffd1ddff,0x8f6e74a1,
2342 0xc1beddfa,0xfce2f0f8,0xfcddeef8,0xfdcddcf9,0xfff3f7ff,0xfff6f9ff,0xfff8faff,0xffe6edfe,0xffebeffc,0xfff6f8fd,0xfff7f9ff,0xffe9efff,0xffd3dbfa,0x684d5279, 1841 0xc1beddfa,0xfce2f0f8,0xfcddeef8,0xfdcddcf9,0xfff3f7ff,0xfff6f9ff,0xfff8faff,0xffe6edfe,0xffebeffc,0xfff6f8fd,0xfff7f9ff,0xffe9efff,0xffd3dbfa,0x684d5279,
2343 0x603277cb,0x7f175ab4,0x7f175ab4,0x8e4676c5,0xfbe8edfd,0xfff6f9ff,0xffebf1ff,0xffd7e4ff,0xffeef3ff,0xfff4f7ff,0xfff8faff,0xfff7f9ff,0xe9acb1d5,0x21161825, 1842 0x603277cb,0x7f175ab4,0x7f175ab4,0x8e4676c5,0xfbe8edfd,0xfff6f9ff,0xffebf1ff,0xffd7e4ff,0xffeef3ff,0xfff4f7ff,0xfff8faff,0xfff7f9ff,0xe9acb1d5,0x21161825,
2344 0x0,0x0,0x0,0x15a6796,0x8db1beec,0xffeaf0fe,0xffd3e1ff,0xffcbdcff,0xffe9f0ff,0xffeef3ff,0xfff3f7ff,0xfbd4d8ef,0x6d4e5276,0x2000000, 1843 0x0,0x0,0x0,0x15a6796,0x8db1beec,0xffeaf0fe,0xffd3e1ff,0xffcbdcff,0xffe9f0ff,0xffeef3ff,0xfff3f7ff,0xfbd4d8ef,0x6d4e5276,0x2000000,
2345 0x0,0x0,0x0,0x0,0x44b5780,0x809caadb,0xf2bccaf4,0xffc8d7fd,0xffe2ebfe,0xffdde3fa,0xe7b1b8da,0x6b52577a,0x6010102,0x0, 1844 0x0,0x0,0x0,0x0,0x44b5780,0x809caadb,0xf2bccaf4,0xffc8d7fd,0xffe2ebfe,0xffdde3fa,0xe7b1b8da,0x6b52577a,0x6010102,0x0,
2346 0x0,0x0,0x0,0x0,0x0,0x1000000,0x1e515c87,0x5b7580af,0x6a7982af,0x575b628a,0x1d1e212e,0x2000000,0x0,0x0 1845 0x0,0x0,0x0,0x0,0x0,0x1000000,0x1e515c87,0x5b7580af,0x6a7982af,0x575b628a,0x1d1e212e,0x2000000,0x0,0x0
2347}; 1846};
2348 1847
2349static const QRgb play_data[] = {
2350 0xc6000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xc6000000,
2351 0xff000000,0xffdddddd,0xffe6e6e6,0xffe2e2e2,0xffd7d7d7,0xffd4d4d4,0xffd3d3d3,0xffd3d3d3,0xffcccccc,0xffbababa,0xffa2a2a2,0xff818181,0xff525252,0xff000000,
2352 0xff000000,0xffd1d1d1,0xffdddddd,0xffcacaca,0xffa7a7a7,0xffafafaf,0xffc3c3c3,0xffc8c8c8,0xffbdbdbd,0xffa4a4a4,0xff818181,0xff525252,0xff3c3c3c,0xff000000,
2353 0xff000000,0xffbebebe,0xffcbcbcb,0xffaaaaaa,0xff686868,0xffb8b8b8,0xff979797,0xffaeaeae,0xffa6a6a6,0xff828282,0xff585858,0xff3d3d3d,0xff313131,0xff000000,
2354 0xff000000,0xffa9a9a9,0xffb3b3b3,0xff909090,0xff3f3f3f,0xffffffff,0xffadadad,0xff7b7b7b,0xff7e7e7e,0xff5a5a5a,0xff3e3e3e,0xff343434,0xff292929,0xff000000,
2355 0xff000000,0xff919191,0xff969696,0xff747474,0xff2b2b2b,0xffffffff,0xffffffff,0xffa3a3a3,0xff424242,0xff3c3c3c,0xff343434,0xff2a2a2a,0xff222222,0xff000000,
2356 0xff000000,0xff868686,0xff848484,0xff646464,0xff242424,0xffffffff,0xffffffff,0xffffffff,0xff9e9e9e,0xff343434,0xff2e2e2e,0xff252525,0xff1e1e1e,0xff000000,
2357 0xff000000,0xff868686,0xff848484,0xff646464,0xff242424,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffa2a2a2,0xff2e2e2e,0xff252525,0xff1e1e1e,0xff000000,
2358 0xff000000,0xff7a7a7a,0xff727272,0xff515151,0xff1d1d1d,0xffffffff,0xffffffff,0xffffffff,0xffa3a3a3,0xff313131,0xff292929,0xff222222,0xff1b1b1b,0xff000000,
2359 0xff000000,0xff5b5b5b,0xff474747,0xff343434,0xff1d1d1d,0xffffffff,0xffffffff,0xff9e9e9e,0xff2b2b2b,0xff242424,0xff1f1f1f,0xff1a1a1a,0xff161616,0xff000000,
2360 0xff000000,0xff414141,0xff3b3b3b,0xff2d2d2d,0xff222222,0xffffffff,0xff999999,0xff202020,0xff1e1e1e,0xff191919,0xff161616,0xff161616,0xff161616,0xff000000,
2361 0xff000000,0xff383838,0xff2f2f2f,0xff252525,0xff1d1d1d,0xff969696,0xff161616,0xff161616,0xff161616,0xff161616,0xff161616,0xff161616,0xff161616,0xff000000,
2362 0xff000000,0xff2f2f2f,0xff232323,0xff191919,0xff161616,0xff161616,0xff161616,0xff161616,0xff161616,0xff161616,0xff161616,0xff161616,0xff161616,0xff000000,
2363 0xc6000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xc6000000
2364};
2365
2366static const QRgb play2_data[] = { 1848static const QRgb play2_data[] = {
2367 0xffffff,0x3000000,0x8000000,0x11000000,0x1a000000,0x1b000000,0x16000000,0x12000000,0xd000000,0x8000000,0x2000000,0xffffff,0xffffff,0xffffff, 1849 0xffffff,0x3000000,0x8000000,0x11000000,0x1a000000,0x1b000000,0x16000000,0x12000000,0xd000000,0x8000000,0x2000000,0xffffff,0xffffff,0xffffff,
2368 0xffffff,0x6000000,0xf000000,0x33000000,0x86898989,0x57000000,0x38000000,0x2a000000,0x1f000000,0x14000000,0x8000000,0x2000000,0xffffff,0xffffff, 1850 0xffffff,0x6000000,0xf000000,0x33000000,0x86787878,0x57000000,0x38000000,0x2a000000,0x1f000000,0x14000000,0x8000000,0x2000000,0xffffff,0xffffff,
2369 0xffffff,0x9000000,0x19000000,0x5f000000,0xffffffff,0xdca2a2a2,0x7f000000,0x56000000,0x3e000000,0x2a000000,0x14000000,0x8000000,0x2000000,0xffffff, 1851 0xffffff,0x9000000,0x19000000,0x5f000000,0xffffffff,0xdc939393,0x7f000000,0x56000000,0x3e000000,0x2a000000,0x14000000,0x8000000,0x2000000,0xffffff,
2370 0xffffff,0xd000000,0x24000000,0x7a000000,0xffffffff,0xffffffff,0xe99a9a9a,0xa0000000,0x72000000,0x4d000000,0x2b000000,0x14000000,0x8000000,0x2000000, 1852 0xffffff,0xd000000,0x24000000,0x7a000000,0xffffffff,0xffffffff,0xe98b8b8b,0xa0000000,0x72000000,0x4d000000,0x2b000000,0x14000000,0x8000000,0x2000000,
2371 0xffffff,0x10000000,0x2e000000,0x88000000,0xffffffff,0xffffffff,0xffffffff,0xf2969696,0xb8000000,0x7d000000,0x47000000,0x24000000,0xf000000,0x5000000, 1853 0xffffff,0x10000000,0x2e000000,0x88000000,0xffffffff,0xffffffff,0xffffffff,0xf2868686,0xb8000000,0x7d000000,0x47000000,0x24000000,0xf000000,0x5000000,
2372 0xffffff,0x12000000,0x35000000,0x94000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xf7939393,0xb7000000,0x69000000,0x35000000,0x17000000,0x7000000, 1854 0xffffff,0x12000000,0x35000000,0x94000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xf7838383,0xb7000000,0x69000000,0x35000000,0x17000000,0x7000000,
2373 0xffffff,0x14000000,0x3a000000,0x9b000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xec999999,0x84000000,0x43000000,0x1e000000,0xa000000, 1855 0xffffff,0x14000000,0x3a000000,0x9b000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xec898989,0x84000000,0x43000000,0x1e000000,0xa000000,
2374 0xffffff,0x14000000,0x3c000000,0x9e000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xff8f8f8f,0xdb000000,0x88000000,0x49000000,0x22000000,0xb000000, 1856 0xffffff,0x14000000,0x3c000000,0x9e000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xff7f7f7f,0xdb000000,0x88000000,0x49000000,0x22000000,0xb000000,
2375 0xffffff,0x14000000,0x3a000000,0x9b000000,0xffffffff,0xffffffff,0xffffffff,0xff8f8f8f,0xfd000000,0xc4000000,0x7a000000,0x43000000,0x1e000000,0xa000000, 1857 0xffffff,0x14000000,0x3a000000,0x9b000000,0xffffffff,0xffffffff,0xffffffff,0xff7f7f7f,0xfd000000,0xc4000000,0x7a000000,0x43000000,0x1e000000,0xa000000,
2376 0xffffff,0x12000000,0x35000000,0x94000000,0xffffffff,0xffffffff,0xfe909090,0xf9000000,0xd7000000,0xa2000000,0x63000000,0x35000000,0x17000000,0x7000000, 1858 0xffffff,0x12000000,0x35000000,0x94000000,0xffffffff,0xffffffff,0xfe808080,0xf9000000,0xd7000000,0xa2000000,0x63000000,0x35000000,0x17000000,0x7000000,
2377 0xffffff,0x10000000,0x2e000000,0x7f000000,0xffffffff,0xf0979797,0xd5000000,0xc2000000,0xa3000000,0x78000000,0x47000000,0x24000000,0xf000000,0x5000000, 1859 0xffffff,0x10000000,0x2e000000,0x7f000000,0xffffffff,0xf0878787,0xd5000000,0xc2000000,0xa3000000,0x78000000,0x47000000,0x24000000,0xf000000,0x5000000,
2378 0xffffff,0xd000000,0x24000000,0x57000000,0xa8727272,0x9c000000,0x94000000,0x85000000,0x6d000000,0x4d000000,0x2b000000,0x14000000,0x8000000,0x2000000, 1860 0xffffff,0xd000000,0x24000000,0x57000000,0xa8606060,0x9c000000,0x94000000,0x85000000,0x6d000000,0x4d000000,0x2b000000,0x14000000,0x8000000,0x2000000,
2379 0xffffff,0x9000000,0x19000000,0x2f000000,0x48000000,0x5a000000,0x5a000000,0x50000000,0x3e000000,0x2a000000,0x14000000,0x8000000,0x2000000,0xffffff, 1861 0xffffff,0x9000000,0x19000000,0x2f000000,0x48000000,0x5a000000,0x5a000000,0x50000000,0x3e000000,0x2a000000,0x14000000,0x8000000,0x2000000,0xffffff,
2380 0xffffff,0x6000000,0xf000000,0x1a000000,0x25000000,0x31000000,0x31000000,0x2a000000,0x1f000000,0x14000000,0x8000000,0x2000000,0xffffff,0xffffff 1862 0xffffff,0x6000000,0xf000000,0x1a000000,0x25000000,0x31000000,0x31000000,0x2a000000,0x1f000000,0x14000000,0x8000000,0x2000000,0xffffff,0xffffff
2381}; 1863};
2382 1864
1865static const QRgb play_data[] = {
1866 0xc6000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xc6000000,
1867 0xff000000,0xffd6d6d6,0xffe1e1e1,0xffdcdcdc,0xffcfcfcf,0xffcccccc,0xffcbcbcb,0xffcbcbcb,0xffc3c3c3,0xffaeaeae,0xff939393,0xff707070,0xff414141,0xff000000,
1868 0xff000000,0xffc8c8c8,0xffd6d6d6,0xffc0c0c0,0xff999999,0xffa2a2a2,0xffb8b8b8,0xffbebebe,0xffb1b1b1,0xff959595,0xff707070,0xff414141,0xff2c2c2c,0xff000000,
1869 0xff000000,0xffb3b3b3,0xffc1c1c1,0xff9c9c9c,0xff565656,0xffacacac,0xff878787,0xffa1a1a1,0xff989898,0xff717171,0xff464646,0xff2d2d2d,0xff232323,0xff000000,
1870 0xff000000,0xff9b9b9b,0xffa6a6a6,0xff808080,0xff2f2f2f,0xffffffff,0xffa0a0a0,0xff6a6a6a,0xff6d6d6d,0xff484848,0xff2e2e2e,0xff252525,0xff1c1c1c,0xff000000,
1871 0xff000000,0xff818181,0xff868686,0xff626262,0xff1e1e1e,0xffffffff,0xffffffff,0xff949494,0xff323232,0xff2c2c2c,0xff252525,0xff1d1d1d,0xff161616,0xff000000,
1872 0xff000000,0xff757575,0xff737373,0xff525252,0xff181818,0xffffffff,0xffffffff,0xffffffff,0xff8f8f8f,0xff252525,0xff202020,0xff191919,0xff131313,0xff000000,
1873 0xff000000,0xff757575,0xff737373,0xff525252,0xff181818,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xff939393,0xff202020,0xff191919,0xff131313,0xff000000,
1874 0xff000000,0xff686868,0xff606060,0xff404040,0xff121212,0xffffffff,0xffffffff,0xffffffff,0xff949494,0xff232323,0xff1c1c1c,0xff161616,0xff111111,0xff000000,
1875 0xff000000,0xff494949,0xff363636,0xff252525,0xff121212,0xffffffff,0xffffffff,0xff8f8f8f,0xff1e1e1e,0xff181818,0xff141414,0xff101010,0xff0d0d0d,0xff000000,
1876 0xff000000,0xff313131,0xff2b2b2b,0xff1f1f1f,0xff161616,0xffffffff,0xff898989,0xff151515,0xff131313,0xff0f0f0f,0xff0d0d0d,0xff0d0d0d,0xff0d0d0d,0xff000000,
1877 0xff000000,0xff292929,0xff212121,0xff191919,0xff121212,0xff868686,0xff0d0d0d,0xff0d0d0d,0xff0d0d0d,0xff0d0d0d,0xff0d0d0d,0xff0d0d0d,0xff0d0d0d,0xff000000,
1878 0xff000000,0xff212121,0xff171717,0xff0f0f0f,0xff0d0d0d,0xff0d0d0d,0xff0d0d0d,0xff0d0d0d,0xff0d0d0d,0xff0d0d0d,0xff0d0d0d,0xff0d0d0d,0xff0d0d0d,0xff000000,
1879 0xc6000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xc6000000
1880};
1881
2383static const QRgb programs_data[] = { 1882static const QRgb programs_data[] = {
2384 0xd778b7fd,0xeb77b7fd,0xea5daafd,0xea479ffd,0xea3295fd,0xea238efd,0xea1e8bfd,0xea1e8bfd,0xea1d8bfd,0xec1d8dfe,0xbf166ec7,0x3c072f5e,0x3000000,0x0, 1883 0xd778b7fd,0xeb77b7fd,0xea5daafd,0xea479ffd,0xea3295fd,0xea238efd,0xea1e8bfd,0xea1e8bfd,0xea1d8bfd,0xec1d8dfe,0xbf166ec7,0x3c072f5e,0x3000000,0x0,
2385 0xed9cc9fb,0xffa8d0fb,0xff89c0fb,0xff6eb2fb,0xff53a6fb,0xff409cfa,0xff3595fa,0xff3493f9,0xff3393f9,0xff3294fa,0xde246ebb,0x5b0c2b4d,0x8000000,0x0, 1884 0xed9cc9fb,0xffa8d0fb,0xff89c0fb,0xff6eb2fb,0xff53a6fb,0xff409cfa,0xff3595fa,0xff3493f9,0xff3393f9,0xff3294fa,0xde246ebb,0x5b0c2b4d,0x8000000,0x0,
2386 0xeac7e0fb,0xfff5f8fb,0xffeff6fb,0xffeaf5fb,0xffe2f0fb,0xffd3e5f8,0xffc2d3f2,0xffc3d2f2,0xffb8cbf0,0xffaec6ed,0xdf7c94b4,0x5d29384c,0x9000000,0x0, 1885 0xeac7e0fb,0xfff5f8fb,0xffeff6fb,0xffeaf5fb,0xffe2f0fb,0xffd3e5f8,0xffc2d3f2,0xffc3d2f2,0xffb8cbf0,0xffaec6ed,0xdf7c94b4,0x5d29384c,0x9000000,0x0,
2387 0xeacde4fd,0xfffeffff,0xfff8fdff,0xfff2fafe,0xffe3ecfc,0xffe2e8fa,0xffe7ebfa,0xffe7ecfd,0xffd1dbfc,0xffc9d4f7,0xf0adb6d3,0x89626882,0x16222539,0x0, 1886 0xeacde4fd,0xfffeffff,0xfff8fdff,0xfff2fafe,0xffe3ecfc,0xffe2e8fa,0xffe7ebfa,0xffe7ecfd,0xffd1dbfc,0xffc9d4f7,0xf0adb6d3,0x89626882,0x16222539,0x0,
2388 0xeacbe3fd,0xfffcfeff,0xfff2faff,0xffe3edfd,0xffe3eafc,0xfff6f9fe,0xfff8f9ff,0xffeef3ff,0xffd8e2ff,0xffdfe7ff,0xfeeceffa,0xdeb9bbd1,0x5b585b71,0x70d0e19, 1887 0xeacbe3fd,0xfffcfeff,0xfff2faff,0xffe3edfd,0xffe3eafc,0xfff6f9fe,0xfff8f9ff,0xffeef3ff,0xffd8e2ff,0xffdfe7ff,0xfeeceffa,0xdeb9bbd1,0x5b585b71,0x70d0e19,
2389 0xeacbe3fd,0xfffbfeff,0xffebf5fe,0xffdbe6fd,0xffe4ecfe,0xfff4f8ff,0xfffcfcff,0xfff4f7ff,0xffe5ecff,0xfff0f4ff,0xfffbfcff,0xfef1f3f9,0xb77e8196,0x22292b3b, 1888 0xeacbe3fd,0xfffbfeff,0xffebf5fe,0xffdbe6fd,0xffe4ecfe,0xfff4f8ff,0xfffcfcff,0xfff4f7ff,0xffe5ecff,0xfff0f4ff,0xfffbfcff,0xfef1f3f9,0xb77e8196,0x22292b3b,
2390 0xeacae3fd,0xfff9feff,0xffe6f2ff,0xffd3e2fe,0xffd8e4ff,0xffe6eeff,0xfff4f7ff,0xffe4e7f7,0xffdbe1f2,0xfff3f6fd,0xfff1f4ff,0xffebf2ff,0xe9969ebb,0x51292c38, 1889 0xeacae3fd,0xfff9feff,0xffe6f2ff,0xffd3e2fe,0xffd8e4ff,0xffe6eeff,0xfff4f7ff,0xffe4e7f7,0xffdbe1f2,0xfff3f6fd,0xfff1f4ff,0xffebf2ff,0xe9969ebb,0x51292c38,
2391 0xeac7e2fd,0xfff6fdff,0xffe3f1ff,0xffcbddff,0xffcedeff,0xffdeeaff,0xffedf3ff,0xffa9b8d6,0xffa0aeca,0xffe0e6f8,0xffdde7ff,0xffd6e4ff,0xf99da8cd,0x73252833, 1890 0xeac7e2fd,0xfff6fdff,0xffe3f1ff,0xffcbddff,0xffcedeff,0xffdeeaff,0xffedf3ff,0xffa9b8d6,0xffa0aeca,0xffe0e6f8,0xffdde7ff,0xffd6e4ff,0xf99da8cd,0x73252833,
2392 0xecc6e3fe,0xfff3fdff,0xffe1f2ff,0xffdae8ff,0xffebf1ff,0xfff6f8ff,0xfff8fbff,0xffd3dbf2,0xffd4dbed,0xfff1f4fb,0xffecf1ff,0xffe5efff,0xf3959ebb,0x7120222b, 1891 0xecc6e3fe,0xfff3fdff,0xffe1f2ff,0xffdae8ff,0xffebf1ff,0xfff6f8ff,0xfff8fbff,0xffd3dbf2,0xffd4dbed,0xfff1f4fb,0xffecf1ff,0xffe5efff,0xf3959ebb,0x7120222b,
2393 0xcc9dbdd8,0xe4b3c3ce,0xe4a7bccf,0xf0c0cde3,0xfdf1f3fb,0xfff9fbff,0xffedf3ff,0xffe3ecff,0xfff3f7ff,0xfff8faff,0xfff7faff,0xffe9effb,0xda71758a,0x5514151c, 1892 0xcc9dbdd8,0xe4b3c3ce,0xe4a7bccf,0xf0c0cde3,0xfdf1f3fb,0xfff9fbff,0xffedf3ff,0xffe3ecff,0xfff3f7ff,0xfff8faff,0xfff7faff,0xffe9effb,0xda71758a,0x5514151c,
2394 0x4a334a63,0x6b2f3e4f,0x6a2d3d51,0x8f6e7a94,0xe3d6dbea,0xfff2f7ff,0xffd6e4ff,0xffdae6ff,0xfff0f5ff,0xfff6f9ff,0xfff9faff,0xf5b9bccf,0xa53c3f4d,0x2d050508, 1893 0x4a334a63,0x6b2f3e4f,0x6a2d3d51,0x8f6e7a94,0xe3d6dbea,0xfff2f7ff,0xffd6e4ff,0xffdae6ff,0xfff0f5ff,0xfff6f9ff,0xfff9faff,0xf5b9bccf,0xa53c3f4d,0x2d050508,
2395 0x3000000,0xb000000,0xb000000,0x1b343a51,0x7d9097ae,0xe5c0cbe5,0xfecadcfd,0xffdeecff,0xfff2f9ff,0xffeaf0fa,0xf3b7bbcd,0xbb56596a,0x56121319,0xe000000, 1894 0x3000000,0xb000000,0xb000000,0x1b343a51,0x7d9097ae,0xe5c0cbe5,0xfecadcfd,0xffdeecff,0xfff2f9ff,0xffeaf0fa,0xf3b7bbcd,0xbb56596a,0x56121319,0xe000000,
2396 0x0,0x0,0x0,0x0,0x133f4764,0x62606881,0xb6717b97,0xd5868ea0,0xd78a8f9d,0xcb6f7485,0x9e3e404f,0x53111319,0x16000000,0x2000000, 1895 0x0,0x0,0x0,0x0,0x133f4764,0x62606881,0xb6717b97,0xd5868ea0,0xd78a8f9d,0xcb6f7485,0x9e3e404f,0x53111319,0x16000000,0x2000000,
2397 0x0,0x0,0x0,0x0,0x0,0x7121421,0x1f2a2e3e,0x39292c35,0x3d272830,0x39181921,0x2506070b,0xc000000,0x2000000,0x0 1896 0x0,0x0,0x0,0x0,0x0,0x7121421,0x1f2a2e3e,0x39292c35,0x3d272830,0x39181921,0x2506070b,0xc000000,0x2000000,0x0
2398}; 1897};
2399 1898
2400static const QRgb quit_icon_data[] = { 1899static const QRgb quit_icon_data[] = {
2401 0x0,0x0,0x0,0x2c90000,0x1fc80000,0x5bc60000,0x83c50000,0x83c20000,0x5bbb0000,0x1fb70000,0x2b50000,0x0,0x0,0x0, 1900 0x0,0x0,0x0,0x2c90000,0x1fc80000,0x5bc60000,0x83c50000,0x83c20000,0x5bbb0000,0x1fb70000,0x2b50000,0x0,0x0,0x0,
2402 0x0,0x0,0xdcb0000,0x87cb0000,0xecd51313,0xffe44a4a,0xffed6f6f,0xffec7070,0xffe05050,0xecc91a1a,0x87b30000,0xdad0000,0x0,0x0, 1901 0x0,0x0,0xdcb0000,0x87cb0000,0xecd51313,0xffe44a4a,0xffed6f6f,0xffec7070,0xffe05050,0xecc91a1a,0x87b30000,0xdad0000,0x0,0x0,
2403 0x0,0xdca0000,0xaacd0000,0xfee53b3b,0xfffbb1b1,0xffffd6d6,0xffffd9d9,0xffffd9d9,0xffffd7d7,0xfffbbcbc,0xfedb4c4c,0xaab00000,0xda70000,0x0, 1902 0x0,0xdca0000,0xaacd0000,0xfee53b3b,0xfffbb1b1,0xffffd6d6,0xffffd9d9,0xffffd9d9,0xffffd7d7,0xfffbbcbc,0xfedb4c4c,0xaab00000,0xda70000,0x0,
2404 0x2c90000,0x87ca0000,0xfee52f2f,0xfffeadad,0xffffd6d6,0xffffbdbd,0xffffb3b3,0xffffb3b3,0xffffbdbd,0xffffd6d6,0xfffeb1b1,0xfed84343,0x87a60000,0x2a00000, 1903 0x2c90000,0x87ca0000,0xfee52f2f,0xfffeadad,0xffffd6d6,0xffffbdbd,0xffffb3b3,0xffffb3b3,0xffffbdbd,0xffffd6d6,0xfffeb1b1,0xfed84343,0x87a60000,0x2a00000,
2405 0x1fc80000,0xecd50808,0xfffb7272,0xffffbcbc,0xffffffff,0xffffe7e7,0xffff9b9b,0xffff9b9b,0xffffe7e7,0xffffffff,0xffffbbbb,0xfffa7171,0xecb90c0c,0x1f9d0000, 1904 0x1fc80000,0xecd50808,0xfffb7272,0xffffbcbc,0xffffffff,0xffffe7e7,0xffff9b9b,0xffff9b9b,0xffffe7e7,0xffffffff,0xffffbbbb,0xfffa7171,0xecb90c0c,0x1f9d0000,
2406 0x5bc50000,0xffe41b1b,0xffff6464,0xffff7474,0xffffd9d9,0xffffffff,0xffffe0e0,0xffffe0e0,0xffffffff,0xfffcc6c6,0xfff63535,0xfff30e0e,0xffd00202,0x5b9a0000, 1905 0x5bc50000,0xffe41b1b,0xffff6464,0xffff7474,0xffffd9d9,0xffffffff,0xffffe0e0,0xffffe0e0,0xffffffff,0xfffcc6c6,0xfff63535,0xfff30e0e,0xffd00202,0x5b9a0000,
2407 0x83c50000,0xffec1c1c,0xffff3f3f,0xffff3f3f,0xffff5252,0xffffd2d2,0xffffffff,0xffffffff,0xfffcc6c6,0xfff31c1c,0xfff20000,0xfff20000,0xffdc0000,0x839b0000, 1906 0x83c50000,0xffec1c1c,0xffff3f3f,0xffff3f3f,0xffff5252,0xffffd2d2,0xffffffff,0xffffffff,0xfffcc6c6,0xfff31c1c,0xfff20000,0xfff20000,0xffdc0000,0x839b0000,
2408 0x83c10000,0xffec0a0a,0xffff1616,0xffff1616,0xffff3131,0xffffcece,0xffffffff,0xffffffff,0xfffcc6c6,0xfff41c1c,0xfff40000,0xfff40000,0xffdc0000,0x83970000, 1907 0x83c10000,0xffec0a0a,0xffff1616,0xffff1616,0xffff3131,0xffffcece,0xffffffff,0xffffffff,0xfffcc6c6,0xfff41c1c,0xfff40000,0xfff40000,0xffdc0000,0x83970000,
2409 0x5bbb0000,0xffe10000,0xfffe0101,0xfffe1b1b,0xffffc5c5,0xffffffff,0xffffc6c6,0xffffc6c6,0xffffffff,0xfffdc4c4,0xfffa1a1a,0xfffa0000,0xffcf0000,0x5b900000, 1908 0x5bbb0000,0xffe10000,0xfffe0101,0xfffe1b1b,0xffffc5c5,0xffffffff,0xffffc6c6,0xffffc6c6,0xffffffff,0xfffdc4c4,0xfffa1a1a,0xfffa0000,0xffcf0000,0x5b900000,
2410 0x1fb70000,0xeccb0202,0xfffc0909,0xffff6d6d,0xffffffff,0xffffc8c8,0xffff2525,0xffff2525,0xffffc8c8,0xffffffff,0xffff6d6d,0xfffb0909,0xecae0202,0x1f8c0000, 1909 0x1fb70000,0xeccb0202,0xfffc0909,0xffff6d6d,0xffffffff,0xffffc8c8,0xffff2525,0xffff2525,0xffffc8c8,0xffffffff,0xffff6d6d,0xfffb0909,0xecae0202,0x1f8c0000,
2411 0x2b40000,0x87b30101,0xfede1313,0xffff2828,0xffff7e7e,0xffff3a3a,0xffff2323,0xffff2323,0xffff3a3a,0xffff7e7e,0xfffe2828,0xfed01313,0x878e0101,0x28b0000, 1910 0x2b40000,0x87b30101,0xfede1313,0xffff2828,0xffff7e7e,0xffff3a3a,0xffff2323,0xffff2323,0xffff3a3a,0xffff7e7e,0xfffe2828,0xfed01313,0x878e0101,0x28b0000,
2412 0x0,0xdac0000,0xaab00404,0xfedb2121,0xfffc3b3b,0xffff3d3d,0xffff3d3d,0xffff3d3d,0xffff3d3d,0xfffb3b3b,0xfed02121,0xaa930404,0xd890000,0x0, 1911 0x0,0xdac0000,0xaab00404,0xfedb2121,0xfffc3b3b,0xffff3d3d,0xffff3d3d,0xffff3d3d,0xffff3d3d,0xfffb3b3b,0xfed02121,0xaa930404,0xd890000,0x0,
2413 0x0,0x0,0xda60000,0x87a50202,0xecbb1616,0xffd73131,0xffe63f3f,0xffe53f3f,0xffd33131,0xecaf1616,0x878e0202,0xd890000,0x0,0x0, 1912 0x0,0x0,0xda60000,0x87a50202,0xecbb1616,0xffd73131,0xffe63f3f,0xffe53f3f,0xffd33131,0xecaf1616,0x878e0202,0xd890000,0x0,0x0,
2414 0x0,0x0,0x0,0x29f0000,0x1d9c0000,0x59990101,0x839b0505,0x83970505,0x5b8f0101,0x1f8c0000,0x28a0000,0x0,0x0,0x0 1913 0x0,0x0,0x0,0x29f0000,0x1d9c0000,0x59990101,0x839b0505,0x83970505,0x5b8f0101,0x1f8c0000,0x28a0000,0x0,0x0,0x0
2415}; 1914};
2416 1915
2417static const QRgb redo_data[] = { 1916static const QRgb redo_data[] = {
2418 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 1917 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
2419 0x0,0x0,0x0,0x1000000,0x4000000,0x5000000,0x5000000,0x3000000,0x0,0x0,0x0,0x0,0x0,0x0, 1918 0x0,0x0,0x0,0x1000000,0x4000000,0x5000000,0x5000000,0x3000000,0x0,0x0,0x0,0x0,0x0,0x0,
2420 0x0,0x1000000,0xc000000,0x26000c00,0x5f003900,0x7b004500,0x7c004600,0x69004700,0x26003100,0x3000000,0x0,0x0,0x0,0x0, 1919 0x0,0x1000000,0xc000000,0x26000c00,0x5f003900,0x7b004500,0x7c004600,0x69004700,0x26003100,0x3000000,0x0,0x0,0x0,0x0,
2421 0x3000000,0x1e000800,0x71003c00,0xdb006b00,0xfb009200,0xff00a600,0xff00a800,0xfd009d00,0xec007b00,0x74005500,0x6003300,0x0,0x0,0x0, 1920 0x3000000,0x1e000800,0x71003c00,0xdb006b00,0xfb009200,0xff00a600,0xff00a800,0xfd009d00,0xec007b00,0x74005500,0x6003300,0x0,0x0,0x0,
2422 0x23000e00,0xa0004f00,0xfa008100,0xf9009a00,0xef009200,0xfa009d00,0xff00b700,0xff00c700,0xff00c600,0xfd009a00,0x6d005d00,0x0,0x0,0x0, 1921 0x23000e00,0xa0004f00,0xfa008100,0xf9009a00,0xef009200,0xfa009d00,0xff00b700,0xff00c700,0xff00c600,0xfd009a00,0x6d005d00,0x0,0x0,0x0,
2423 0x86004e00,0xe1006900,0x83006b00,0x3a005f00,0x2a005c00,0x43005a00,0xa1006d00,0xfd00a800,0xff00d700,0xff00d600,0xe7008a00,0x13005600,0x2000000,0x1000000, 1922 0x86004e00,0xe1006900,0x83006b00,0x3a005f00,0x2a005c00,0x43005a00,0xa1006d00,0xfd00a800,0xff00d700,0xff00d600,0xe7008a00,0x13005600,0x2000000,0x1000000,
2424 0xb6006f00,0x27006c00,0x1006600,0x0,0x3000000,0x24001d00,0x44003500,0xb1006600,0xff00c200,0xff00e800,0xfc00c000,0x75005c00,0x3d003600,0x2a004700, 1923 0xb6006f00,0x27006c00,0x1006600,0x0,0x3000000,0x24001d00,0x44003500,0xb1006600,0xff00c200,0xff00e800,0xfc00c000,0x75005c00,0x3d003600,0x2a004700,
2425 0x0,0x0,0x0,0x0,0x2000000,0x53006700,0xf3008c00,0xff02c102,0xff03d803,0xff03f903,0xff03f003,0xff03c403,0xff01b001,0xca007f00, 1924 0x0,0x0,0x0,0x0,0x2000000,0x53006700,0xf3008c00,0xff02c102,0xff03d803,0xff03f903,0xff03f003,0xff03c403,0xff01b001,0xca007f00,
2426 0x0,0x0,0x0,0x0,0x0,0x2000000,0x63007600,0xf611c111,0xff36fc36,0xff39ff39,0xff39ff39,0xff2aec2a,0xc406a306,0x1d008300, 1925 0x0,0x0,0x0,0x0,0x0,0x2000000,0x63007600,0xf611c111,0xff36fc36,0xff39ff39,0xff39ff39,0xff2aec2a,0xc406a306,0x1d008300,
2427 0x0,0x0,0x0,0x0,0x0,0x0,0x2000000,0x67038503,0xf63ac63a,0xff89fc89,0xff75f075,0xc616ab16,0x1f008f00,0x0, 1926 0x0,0x0,0x0,0x0,0x0,0x0,0x2000000,0x67038503,0xf63ac63a,0xff89fc89,0xff75f075,0xc616ab16,0x1f008f00,0x0,
2428 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4003500,0x65058f04,0xf356c852,0xc927b325,0x19009a00,0x0,0x0, 1927 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4003500,0x65058f04,0xf356c852,0xc927b325,0x19009a00,0x0,0x0,
2429 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2000000,0x4018ab00,0x1616ad00,0x0,0x0,0x0, 1928 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2000000,0x4018ab00,0x1616ad00,0x0,0x0,0x0,
2430 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 1929 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
2431 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0 1930 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0
2432}; 1931};
2433 1932
2434static const QRgb repeat_data[] = { 1933static const QRgb repeat_data[] = {
2435 0x0,0x0,0x313131,0x8313131,0x1b343434,0x46363636,0x70373737,0x71373737,0x47333333,0x1c2e2e2e,0x92a2a2a,0x11c1c1c,0x0,0x0, 1934 0x0,0x0,0x313131,0x8313131,0x1b343434,0x46363636,0x70373737,0x71373737,0x47333333,0x1c2e2e2e,0x92a2a2a,0x11c1c1c,0x0,0x0,
2436 0x0,0x1313131,0x1a323232,0x6d3b3b3b,0xd24e4e4e,0xfb656565,0xff797979,0xff7a7a7a,0xfc666666,0xd44e4e4e,0x72383838,0x1d282828,0x21f1f1f,0x0, 1935 0x0,0x1313131,0x1a323232,0x6d3b3b3b,0xd24e4e4e,0xfb656565,0xff797979,0xff7a7a7a,0xfc666666,0xd44e4e4e,0x72383838,0x1d282828,0x21f1f1f,0x0,
2437 0x2f2f2f,0x1a313131,0x91404040,0xf2696969,0xffa9a9a9,0xffd7d7d7,0xffe4e4e4,0xffe9e9e9,0xffdedede,0xffafafaf,0xf36d6d6d,0x973e3e3e,0x20252525,0x1111111, 1936 0x2f2f2f,0x1a313131,0x91404040,0xf2696969,0xffa9a9a9,0xffd7d7d7,0xffe4e4e4,0xffe9e9e9,0xffdedede,0xffafafaf,0xf36d6d6d,0x973e3e3e,0x20252525,0x1111111,
2438 0x82e2e2e,0x6d3a3a3a,0xf2656565,0xffb2b2b2,0xffd1d1d1,0xffdcdcdc,0xffe5e5e5,0xffe2e2e2,0xffdcdcdc,0xffd6d6d6,0xffbbbbbb,0xf36a6a6a,0x7a353535,0xd1e1e1e, 1937 0x82e2e2e,0x6d3a3a3a,0xf2656565,0xffb2b2b2,0xffd1d1d1,0xffdcdcdc,0xffe5e5e5,0xffe2e2e2,0xffdcdcdc,0xffd6d6d6,0xffbbbbbb,0xf36a6a6a,0x7a353535,0xd1e1e1e,
2439 0x1b313131,0xd2474747,0xff939393,0xffc0c0c0,0xffdcdcdc,0xfff2f2f2,0xfffefefe,0xfff5f5f5,0xffd7d7d7,0xffc0c0c0,0xffc0c0c0,0xff949494,0xd9454545,0x291f1f1f, 1938 0x1b313131,0xd2474747,0xff939393,0xffc0c0c0,0xffdcdcdc,0xfff2f2f2,0xfffefefe,0xfff5f5f5,0xffd7d7d7,0xffc0c0c0,0xffc0c0c0,0xff949494,0xd9454545,0x291f1f1f,
2440 0x46343434,0xfb565656,0xffa1a1a1,0xffcdcdcd,0xfff9f9f9,0xffdbdbdb,0xffbdbdbd,0xffbfbfbf,0xffafafaf,0xff979797,0xff808080,0xff707070,0xfc494949,0x5e262626, 1939 0x46343434,0xfb565656,0xffa1a1a1,0xffcdcdcd,0xfff9f9f9,0xffdbdbdb,0xffbdbdbd,0xffbfbfbf,0xffafafaf,0xff979797,0xff808080,0xff707070,0xfc494949,0x5e262626,
2441 0x70363636,0xff5e5e5e,0xff9d9d9d,0xffdadada,0xffe6e6e6,0xffa4a4a4,0xff8f8f8f,0xffa5a5a5,0xffc2c2c2,0xffdddddd,0xffc1c1c1,0xff727272,0xff4e4e4e,0x8a2a2a2a, 1940 0x70363636,0xff5e5e5e,0xff9d9d9d,0xffdadada,0xffe6e6e6,0xffa4a4a4,0xff8f8f8f,0xffa5a5a5,0xffc2c2c2,0xffdddddd,0xffc1c1c1,0xff727272,0xff4e4e4e,0x8a2a2a2a,
2442 0x71353535,0xff565656,0xff898989,0xffd6d6d6,0xffdfdfdf,0xff8d8d8d,0xff939393,0xfffdfdfd,0xffffffff,0xffffffff,0xffd4d4d4,0xff7b7b7b,0xff4e4e4e,0x8c292929, 1941 0x71353535,0xff565656,0xff898989,0xffd6d6d6,0xffdfdfdf,0xff8d8d8d,0xff939393,0xfffdfdfd,0xffffffff,0xffffffff,0xffd4d4d4,0xff7b7b7b,0xff4e4e4e,0x8c292929,
2443 0x47343434,0xfc484848,0xff6e6e6e,0xffb8b8b8,0xfff6f6f6,0xffb9b9b9,0xff959595,0xfff4f4f4,0xffffffff,0xffffffff,0xffcbcbcb,0xff767676,0xfc474747,0x69232323, 1942 0x47343434,0xfc484848,0xff6e6e6e,0xffb8b8b8,0xfff6f6f6,0xffb9b9b9,0xff959595,0xfff4f4f4,0xffffffff,0xffffffff,0xffcbcbcb,0xff767676,0xfc474747,0x69232323,
2444 0x1c2e2e2e,0xd43e3e3e,0xff646464,0xff8b8b8b,0xffd0d0d0,0xfff7f7f7,0xfff2f2f2,0xfffbfbfb,0xffefefef,0xfff9f9f9,0xffc2c2c2,0xff6e6e6e,0xde3c3c3c,0x3c161616, 1943 0x1c2e2e2e,0xd43e3e3e,0xff646464,0xff8b8b8b,0xffd0d0d0,0xfff7f7f7,0xfff2f2f2,0xfffbfbfb,0xffefefef,0xfff9f9f9,0xffc2c2c2,0xff6e6e6e,0xde3c3c3c,0x3c161616,
2445 0x92a2a2a,0x72363636,0xf3545454,0xff767676,0xff939393,0xffb6b6b6,0xffc7c7c7,0xffbcbcbc,0xffababab,0xffbcbcbc,0xff9c9c9c,0xf5555555,0x8c2c2c2c,0x1a0f0f0f, 1944 0x92a2a2a,0x72363636,0xf3545454,0xff767676,0xff939393,0xffb6b6b6,0xffc7c7c7,0xffbcbcbc,0xffababab,0xffbcbcbc,0xff9c9c9c,0xf5555555,0x8c2c2c2c,0x1a0f0f0f,
2446 0x11c1c1c,0x1d292929,0x973c3c3c,0xf35b5b5b,0xff7e7e7e,0xff8a8a8a,0xff909090,0xff8b8b8b,0xff8a8a8a,0xff808080,0xf55c5c5c,0xaa343434,0x36161616,0x5030303, 1945 0x11c1c1c,0x1d292929,0x973c3c3c,0xf35b5b5b,0xff7e7e7e,0xff8a8a8a,0xff909090,0xff8b8b8b,0xff8a8a8a,0xff808080,0xf55c5c5c,0xaa343434,0x36161616,0x5030303,
2447 0x0,0x21f1f1f,0x20262626,0x7a363636,0xd9484848,0xfc616161,0xff727272,0xff727272,0xfc616161,0xde474747,0x8c2f2f2f,0x36161616,0xa070707,0x0, 1946 0x0,0x21f1f1f,0x20262626,0x7a363636,0xd9484848,0xfc616161,0xff727272,0xff727272,0xfc616161,0xde474747,0x8c2f2f2f,0x36161616,0xa070707,0x0,
2448 0x0,0x0,0x1111111,0xd1e1e1e,0x29222222,0x5e2d2d2d,0x8a323232,0x8c313131,0x69282828,0x3c181818,0x1a0f0f0f,0x5030303,0x0,0x0 1947 0x0,0x0,0x1111111,0xd1e1e1e,0x29222222,0x5e2d2d2d,0x8a323232,0x8c313131,0x69282828,0x3c181818,0x1a0f0f0f,0x5030303,0x0,0x0
2449}; 1948};
2450 1949
2451static const unsigned char reset_data[] = { 1950static const unsigned char reset_data[] = {
2452 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1951 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2453 0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01, 1952 0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
2454 0x01,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x01, 1953 0x01,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x01,
2455 0x01,0x02,0x02,0x01,0x00,0x00,0x01,0x02,0x02,0x02,0x02,0x01,0x00,0x01, 1954 0x01,0x02,0x02,0x01,0x00,0x00,0x01,0x02,0x02,0x02,0x02,0x01,0x00,0x01,
2456 0x01,0x02,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x01,0x02,0x02,0x02, 1955 0x01,0x02,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x01,0x02,0x02,0x02,
2457 0x01,0x02,0x02,0x02,0x02,0x02,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x01, 1956 0x01,0x02,0x02,0x02,0x02,0x02,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x01,
2458 0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00, 1957 0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
2459 0x00,0x00,0x01,0x02,0x02,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00, 1958 0x00,0x00,0x01,0x02,0x02,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,
2460 0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x00, 1959 0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x00,
2461 0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x01,0x00, 1960 0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x01,0x00,
2462 0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02, 1961 0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,
2463 0x02,0x01,0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x02,0x01,0x01,0x01, 1962 0x02,0x01,0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x02,0x01,0x01,0x01,
2464 0x02,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x01,0x00, 1963 0x02,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x01,0x00,
2465 0x00,0x01,0x01,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02, 1964 0x00,0x01,0x01,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,
2466 0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x01, 1965 0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x01,
2467 0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00 1966 0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00
2468}; 1967};
2469 1968
2470static const QRgb reset_ctable[] = { 1969static const QRgb reset_ctable[] = {
2471 0xc6c6c6,0xff000000,0xffff0000 1970 0xc6c6c6,0xff000000,0xffff0000
2472}; 1971};
2473 1972
2474static const QRgb right_data[] = { 1973static const QRgb right_data[] = {
2475 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 1974 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
2476 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 1975 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
2477 0xc000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0xc000000, 1976 0xc000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0xc000000,
2478 0x10000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x10000000, 1977 0x10000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x10000000,
2479 0x0,0x0,0x0,0x0,0x64000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x14000000, 1978 0x0,0x0,0x0,0x0,0x64000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x14000000,
2480 0x0,0x0,0x0,0x0,0x28000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x8000000, 1979 0x0,0x0,0x0,0x0,0x28000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x8000000,
2481 0x1c000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0x1c000000, 1980 0x1c000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0x1c000000,
2482 0x0,0x0,0x0,0x0,0x14000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x4000000, 1981 0x0,0x0,0x0,0x0,0x14000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x4000000,
2483 0x0,0x0,0x0,0x0,0x78000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0x18000000, 1982 0x0,0x0,0x0,0x0,0x78000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0x18000000,
2484 0xc000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0xc000000, 1983 0xc000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0xc000000,
2485 0x10000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x10000000, 1984 0x10000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x10000000,
2486 0x0,0x0,0x0,0x0,0x64000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x14000000, 1985 0x0,0x0,0x0,0x0,0x64000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x14000000,
2487 0x0,0x0,0x0,0x0,0x28000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x8000000, 1986 0x0,0x0,0x0,0x0,0x28000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x8000000,
2488 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0 1987 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0
2489}; 1988};
2490 1989
2491static const QRgb rotate_data[] = { 1990static const QRgb rotate_data[] = {
2492 0x0,0x0,0xffffff,0x2ffffff,0x10f5faff,0x2fd4e9ff,0x3dc1e0ff,0x38b6daff,0x21b4d9ff,0x5d7ebff,0xffffff,0x0,0x0,0x0, 1991 0x0,0x0,0xffffff,0x2ffffff,0x10f5faff,0x2fd4e9ff,0x3dc1e0ff,0x38b6daff,0x21b4d9ff,0x5d7ebff,0xffffff,0x0,0x0,0x0,
2493 0x0,0x0,0x9ffffff,0x4fd6eaff,0xbbacd5ff,0xe9aad4ff,0xfab2d8ff,0xf9afd7ff,0xe49ecfff,0xa382c0ff,0x287dbcfc,0x0,0x0,0x0, 1992 0x0,0x0,0x9ffffff,0x4fd6eaff,0xbbacd5ff,0xe9aad4ff,0xfab2d8ff,0xf9afd7ff,0xe49ecfff,0xa382c0ff,0x287dbcfc,0x0,0x0,0x0,
2494 0xffffff,0x9ffffff,0x6ecee6ff,0xeeaad4ff,0xffdeeefe,0xfffafcfe,0xfffdfdfe,0xfffdfdfe,0xfffafcfe,0xffdbedfe,0xe590c7fe,0x3e72b3f4,0x0,0x0, 1993 0xffffff,0x9ffffff,0x6ecee6ff,0xeeaad4ff,0xffdeeefe,0xfffafcfe,0xfffdfdfe,0xfffdfdfe,0xfffafcfe,0xffdbedfe,0xe590c7fe,0x3e72b3f4,0x0,0x0,
2495 0x2ffffff,0x51d5eaff,0xefa6d2fe,0xffe8f2fc,0xfff9fbfc,0xffe6eef4,0xffc0e1f7,0xffcae9fd,0xfff4f9fd,0xfffafcfd,0xffe8f2fd,0xe689c3fd,0x2a68abed,0x0, 1994 0x2ffffff,0x51d5eaff,0xefa6d2fe,0xffe8f2fc,0xfff9fbfc,0xffe6eef4,0xffc0e1f7,0xffcae9fd,0xfff4f9fd,0xfffafcfd,0xffe8f2fd,0xe689c3fd,0x2a68abed,0x0,
2496 0x12f5faff,0xbea6d2ff,0xffd4e8fb,0xfff4f6f7,0xffaed1e9,0xff29a5f8,0xff12a0fe,0xff13a1ff,0xff3fb2fe,0xffb9e1fc,0xffd1ebfd,0xffd2e7fb,0xa568b0f8,0x33c6a98, 1995 0x12f5faff,0xbea6d2ff,0xffd4e8fb,0xfff4f6f7,0xffaed1e9,0xff29a5f8,0xff12a0fe,0xff13a1ff,0xff3fb2fe,0xffb9e1fc,0xffd1ebfd,0xffd2e7fb,0xa568b0f8,0x33c6a98,
2497 0x34d4e9ff,0xec9accfd,0xffecf2f6,0xffc9ddea,0xff19a0fa,0xff76c8ff,0xffe1f2fd,0xffd7edfc,0xff51b8fd,0xff049bff,0xff8ed1fe,0xffeff4f8,0xe57bbaf9,0x1c4c8aca, 1996 0x34d4e9ff,0xec9accfd,0xffecf2f6,0xffc9ddea,0xff19a0fa,0xff76c8ff,0xffe1f2fd,0xffd7edfc,0xff51b8fd,0xff049bff,0xff8ed1fe,0xffeff4f8,0xe57bbaf9,0x1c4c8aca,
2498 0x45c1e0ff,0xfb99cafb,0xffeaf0f4,0xff8ac6ed,0xff28a9ff,0xfff4f9fc,0xffecf1f4,0xffecf3f7,0xff7ecafc,0xff33adff,0xff7fcbff,0xffeff4f6,0xfa85c0f9,0x31478cd0, 1997 0x45c1e0ff,0xfb99cafb,0xffeaf0f4,0xff8ac6ed,0xff28a9ff,0xfff4f9fc,0xffecf1f4,0xffecf3f7,0xff7ecafc,0xff33adff,0xff7fcbff,0xffeff4f6,0xfa85c0f9,0x31478cd0,
2499 0x41b4daff,0xfa8ec5fa,0xffe6edf1,0xff82c6f2,0xff37afff,0xfff4f7f9,0xffe4ecef,0xffe7eef1,0xffeef3f5,0xfff2f6f7,0xfff0f5f6,0xffe5ecf0,0xfa7cbbf8,0x333c82c7, 1998 0x41b4daff,0xfa8ec5fa,0xffe6edf1,0xff82c6f2,0xff37afff,0xfff4f7f9,0xffe4ecef,0xffe7eef1,0xffeef3f5,0xfff2f6f7,0xfff0f5f6,0xffe5ecf0,0xfa7cbbf8,0x333c82c7,
2500 0x2bb6dbff,0xe778bbfb,0xffdce7ee,0xffb6dcf3,0xff12a0fe,0xffafdcfa,0xffe7eef1,0xffdde6eb,0xffd4e7f2,0xffe7eef1,0xffdee8ec,0xffd9e5ec,0xe860aaf4,0x232c69a5, 1999 0x2bb6dbff,0xe778bbfb,0xffdce7ee,0xffb6dcf3,0xff12a0fe,0xffafdcfa,0xffe7eef1,0xffdde6eb,0xffd4e7f2,0xffe7eef1,0xffdee8ec,0xffd9e5ec,0xe860aaf4,0x232c69a5,
2501 0xbe5f2ff,0xac5daeff,0xffb1d2ef,0xffe3ebf0,0xff7cc8f9,0xff14a0fe,0xff44b1f9,0xff38aaf5,0xff24a7fe,0xffdcecf7,0xffd9e4e9,0xffafd1ee,0xb03890e9,0x90d2134, 2000 0xbe5f2ff,0xac5daeff,0xffb1d2ef,0xffe3ebf0,0xff7cc8f9,0xff14a0fe,0xff44b1f9,0xff38aaf5,0xff24a7fe,0xffdcecf7,0xffd9e4e9,0xffafd1ee,0xb03890e9,0x90d2134,
2502 0x1ffffff,0x3371b6fd,0xe653a7fa,0xffbfd8eb,0xffe3ecf0,0xffb9e0f9,0xff79c8fd,0xff80cbfe,0xffc9e8fb,0xffe1eaee,0xffbdd6ea,0xeb4da1f4,0x3d2264a5,0x1000000, 2001 0x1ffffff,0x3371b6fd,0xe653a7fa,0xffbfd8eb,0xffe3ecf0,0xffb9e0f9,0xff79c8fd,0xff80cbfe,0xffc9e8fb,0xffe1eaee,0xffbdd6ea,0xeb4da1f4,0x3d2264a5,0x1000000,
2503 0xffffff,0x3ffffff,0x403394f5,0xe649a2f9,0xffa5cbeb,0xffd0dfe8,0xffdbe5eb,0xffdae5eb,0xffcfdee7,0xffa5caeb,0xeb469ef3,0x591f66ad,0x5000000,0x0, 2002 0xffffff,0x3ffffff,0x403394f5,0xe649a2f9,0xffa5cbeb,0xffd0dfe8,0xffdbe5eb,0xffdae5eb,0xffcfdee7,0xffa5caeb,0xeb469ef3,0x591f66ad,0x5000000,0x0,
2504 0x0,0x0,0xa2a2a2,0x2a268aed,0xa52890f8,0xe5469ff5,0xfa5ba9f4,0xfa5ba8f4,0xe8459df2,0xb02588e9,0x3d1a60a5,0x5000000,0x0,0x0, 2003 0x0,0x0,0xa2a2a2,0x2a268aed,0xa52890f8,0xe5469ff5,0xfa5ba9f4,0xfa5ba8f4,0xe8459df2,0xb02588e9,0x3d1a60a5,0x5000000,0x0,0x0,
2505 0x0,0x0,0x0,0x0,0x3165798,0x1c1d74ca,0x311e77d0,0x331c72c7,0x23185ea5,0x9081e34,0x1000000,0x0,0x0,0x0 2004 0x0,0x0,0x0,0x0,0x3165798,0x1c1d74ca,0x311e77d0,0x331c72c7,0x23185ea5,0x9081e34,0x1000000,0x0,0x0,0x0
2506}; 2005};
2507 2006
2007static const QRgb Rotation_data[] = {
2008 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0x1000000,0x3000000,0x6000000,0xb000000,0x12000000,0x19000000,0x21000000,0x29000000,0x2f000000,
2009 0x35000000,0x38000000,0x3b040404,0x4d535353,0x5a828282,0x3d3f3f3f,0x2d060606,0x24070707,0x1b090909,0x140d0d0d,0xc151515,0x7242424,0x3000000,0x1000000,
2010 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0x1000000,0x2000000,0x5000000,0xa000000,0x11000000,0x1b000000,0x26000000,
2011 0x6e647e80,0xab7da6a7,0xd387b7b9,0xeb8bc0c2,0xf98dc6c8,0xfe8ac8ca,0xf97ec0c2,0xed6fb6b7,0xd8629ea2,0xcc90aeb0,0xa1849698,0x460b0b0b,0x390d0d0d,0x2b0c0c0c,
2012 0x1f101010,0x130d0d0d,0xb171717,0x5000000,0x2000000,0x1000000,0xffffff,0xffffff,0xffffff,0xffffff,0x1000000,0x2000000,0x6000000,0xd000000,
2013 0x16000000,0x23000000,0x84759496,0xd091b9bb,0xfaabcecf,0xffa9d0d2,0xffa1ccce,0xff9acacc,0xff90c6c8,0xff89c4c6,0xff7fc1c3,0xff74bfc1,0xff69bcbe,0xff60b9bc,
2014 0xfd88c1c4,0xe78bb4b7,0xa0395f62,0x4f101010,0x3a121212,0x28131313,0x19141414,0xe121212,0x6000000,0x2000000,0x1000000,0xffffff,0xffffff,0x1000000,
2015 0x2000000,0x7000000,0xe000000,0x1a000000,0x545f7474,0xc08eb5b6,0xfaafcfd1,0xffafcfd0,0xffadcccd,0xffa3c8ca,0xff9ac4c6,0xff93c0c2,0xff8abfbf,0xff80bbbd,
2016 0xff79babc,0xff6fb8bb,0xff65b8ba,0xff5cb6b9,0xff50b2b5,0xff69a2a7,0xfe76b0b5,0xd2377579,0x7f293d3d,0x47121212,0x2f101010,0x1d121212,0xf111111,0x7000000,
2017 0x2000000,0x1000000,0xffffff,0x2000000,0x6000000,0xe000000,0x1b000000,0x73728f8f,0xda9fc1c3,0xffb6d1d3,0xffb0cdce,0xffaac6c8,0xffa2bfc1,0xff96b8b9,
2018 0xff8db3b5,0xff84adaf,0xff7cabac,0xff76aaac,0xff6fadae,0xff6ab1b3,0xff63b4b5,0xff58b4b6,0xff4eadb3,0xff61a1a6,0xff4f8a8f,0xff5f9ea3,0xe82d777c,0x9d2a4a4c,
2019 0x50131313,0x33141414,0x1e111111,0xf111111,0x7242424,0x2000000,0x1000000,0x5000000,0xd000000,0x1a000000,0x736f8f8f,0xe2a1c3c5,0xffb5cfd1,0xffaec9cb,
2020 0xffa2bec0,0xff98b4b5,0xff8ba6a8,0xff7e9a9d,0xff739395,0xff6b8c8e,0xff658c8d,0xff639092,0xff70a1a4,0xff88b3b6,0xff5aadaf,0xff53adb3,0xff4ba9b2,0xff40a0a8,
2021 0xff5c9398,0xff4a8488,0xff418d95,0xef2b7378,0xa2294449,0x53161616,0x33141414,0x1e1a1a1a,0xe121212,0x62b2b2b,0x3000000,0xa000000,0x16000000,0x545c7174,
2022 0xda9abec2,0xffb2cfd2,0xffacc8cb,0xffa2bdc0,0xff91abae,0xff80989b,0xff788e90,0xff9dadae,0xffa9babb,0xffb6c9ca,0xffc0d5d7,0xffb9d2d4,0xffb3cdce,0xff8fb4b7,
2023 0xff52a4a7,0xff4da8b1,0xff45a6ad,0xff3b9da6,0xff6fa2a7,0xff5b9095,0xff498086,0xff297e86,0xec2a676e,0x91243537,0x4e141414,0x2f161616,0x18151515,0xb171717,
2024 0x6000000,0x11000000,0x23000000,0xbf88b0b4,0xffafced2,0xffaac9cd,0xffa2bfc3,0xff92adb0,0xffb0c7c9,0xffc0d5d6,0xffcadcde,0xffd1e1e1,0xffd4e3e4,0xffd2e3e4,
2025 0xffcedfe1,0xffc7dcdd,0xffbfd6d7,0xff4c8b8f,0xff4c9ca2,0xff47a2ab,0xff40a0ab,0xff399aa4,0xff6aa2a9,0xff6b9da1,0xff598c91,0xff427d83,0xff28767e,0xdd2a585d,
2026 0x6c151515,0x45161616,0x27141414,0x120e0e0e,0xb000000,0x1b000000,0x846f8e93,0xfaa3c7cd,0xffa5c9cd,0xff9fc2c6,0xff92b2b6,0xff7f9a9e,0xff667e80,0xffd0dfe0,
2027 0xffd9e6e6,0xffe0eaea,0xffe2eced,0xffe0eced,0xffdbe8e9,0xffd3e3e3,0xffa4bcbe,0xff43868c,0xff44969f,0xff429da8,0xff3a9ea8,0xff3796a1,0xff45949c,0xff77a6a9,
2028 0xff65979b,0xff5c888b,0xff296c73,0xfc276b74,0xbb284146,0x5f151515,0x39161616,0x1d121212,0x12000000,0x26000000,0xd085afb6,0xff9dc7cd,0xff9dc3c9,0xff94b8be,
2029 0xff84a4aa,0xff6d898d,0xff687b7e,0xffd9e6e8,0xffe4eded,0xffecf2f3,0xffeef3f4,0xffebf3f3,0xffe4eef0,0xffdbe8ea,0xff628a8e,0xff3f848c,0xff3c919d,0xff3796a2,
2030 0xff3396a2,0xff36929d,0xff45919a,0xff7eabaf,0xff6e9ea2,0xff5c8e92,0xff2b646c,0xff28676e,0xe9285659,0x79171717,0x4b141414,0x2a121212,0x19000000,0x6e59747b,
2031 0xfa93c0c7,0xff98c2ca,0xff92bbc3,0xff87acb3,0xff73959b,0xff5c767b,0xffd2e2e2,0xffdfeaeb,0xffebf2f3,0xfff4f7f8,0xfff8fafb,0xfff4f8f8,0xffebf2f3,0xffe1ebec,
2032 0xff356f76,0xff37848e,0xff348e99,0xff2c909d,0xff308f9c,0xff328c98,0xff72a3a9,0xff83aeb2,0xff75a4a8,0xff639598,0xff2e5e65,0xff295f66,0xfc266069,0xb0233437,
2033 0x5e161616,0x37131313,0x21000000,0xab6b969e,0xff8ebec7,0xff8bbbc3,0xff84b1ba,0xff779fa7,0xff62858c,0xffaabcbe,0xffd5e4e5,0xffe3eded,0xffedf4f4,0xfff7fafa,
2034 0xffffffff,0xfff8fafa,0xffedf4f4,0xff8fa8ab,0xff30727c,0xff2e808e,0xff288795,0xff278795,0xff2b8795,0xff2f8491,0xff88aeb2,0xff85b0b3,0xff7aa7ab,0xff69999e,
2035 0xff305960,0xff2b5a61,0xff265e66,0xd6264448,0x71171717,0x45121212,0x29000000,0xd370a1ac,0xff83b9c4,0xff80b4be,0xff78a8b2,0xff68939c,0xff54767d,0xffc4d8da,
2036 0xffd3e2e3,0xffe0ecec,0xffebf2f2,0xfff3f8f8,0xfff7fafb,0xfff4f8f8,0xffebf2f3,0xff2b656f,0xff2a7481,0xff257d8e,0xff1f808e,0xff23818e,0xff277e8d,0xff2c7c87,
2037 0xff8fb6ba,0xff86b1b4,0xff7aa8ab,0xff6c9b9f,0xff32545a,0xff2e545b,0xff285961,0xed264d51,0x80181818,0x4f131313,0x2f000000,0xeb70a7b3,0xff79b3bf,0xff75aeb9,
2038 0xff6c9fa9,0xff5b858f,0xff81989c,0xffc1d7d8,0xffd0e1e1,0xffdbe8e9,0xffe5eeef,0xffebf2f3,0xff98a8ab,0xffd7e1e3,0xffe4edee,0xff276c7a,0xff237585,0xff1b7787,
2039 0xff1e7888,0xff1e7585,0xff227382,0xff5c8f98,0xff8db6b8,0xff84b0b3,0xff7aa8ac,0xff6d9da2,0xff345056,0xff2f5056,0xff2a555c,0xf7264f57,0x8d191919,0x5a141414,
2040 0x34000000,0xf96da9b8,0xff6dacba,0xff69a5b3,0xff5f95a1,0xff507b85,0xffa7c1c3,0xffbcd3d6,0xffc9dbdd,0xffd2e3e4,0xffdbe8e9,0xffb3c2c5,0xff28525c,0xff29606c,
2041 0xff64929d,0xff206f7f,0xff187283,0xff1a7183,0xff1a6f81,0xff1a6b7c,0xff1f6978,0xff92b9bb,0xff8ab3b7,0xff82afb2,0xff79a8ab,0xff6e9ea2,0xff364c51,0xff324d53,
2042 0xff2b5157,0xfc265259,0x961a1a1a,0x61181818,0x37000000,0xfe65a7b7,0xff64a6b6,0xff5f9ead,0xff558d9b,0xff47737e,0xffa7c5c7,0xffb4ced0,0xffc0d6d9,0xffc9dbdd,
2043 0xffcfe1e2,0xff26535e,0xff28616e,0xff266a7a,0xff1f6e7f,0xff166e80,0xff166e80,0xff548d9a,0xff186677,0xff196071,0xff87abae,0xff8db6b9,0xff87b2b4,0xff7facb0,
2044 0xff77a6a9,0xff749c9f,0xff36494d,0xff324b50,0xff2c4e56,0xfe25515b,0x9a1a1a1a,0x66171717,0x39040404,0xf9599daf,0xff5a9fb1,0xff5596a8,0xff4c8795,0xff3e6d78,
2045 0xffa0c0c3,0xffabc8ca,0xffb6cfd2,0xffbdd5d7,0xff5c7b82,0xff265d6b,0xff25687a,0xff206d81,0xff176e81,0xff166c7f,0xff166a7d,0xffa9c7c9,0xff9ab9be,0xff769aa1,
2046 0xff8fb7ba,0xff88b3b6,0xff83afb2,0xff7babae,0xff74a5a8,0xff6d7e80,0xff37484c,0xff334a4f,0xff2c4c52,0xfc244a53,0x9c1a1a1a,0x66171717,0x38050505,0xed4d8fa2,
2047 0xff5099ac,0xff4c91a4,0xff448091,0xff396a77,0xff97bbbd,0xffa3c2c5,0xffabc8cb,0xffb1cccf,0xff235362,0xff216172,0xff1e687e,0xff176a80,0xff166a7e,0xff15667b,
2048 0xff156175,0xff9fc1c4,0xff97bcbf,0xff90b8bb,0xff8ab4b7,0xff83afb3,0xff7eacb0,0xff79a9ab,0xff71a3a7,0xff394649,0xff39484c,0xff32494e,0xff2c4c53,0xf924444b,
2049 0x98191919,0x64141414,0x35050505,0xd7447d90,0xff4691a7,0xff428a9f,0xff3d7b8e,0xff336675,0xff8fb4b8,0xff99bec1,0xffa0c1c3,0xff8ca6ab,0xff215667,0xff1c6274,
2050 0xff19667b,0xff19677d,0xff16637b,0xff166074,0xff7097a1,0xff96bbbe,0xff8fb7ba,0xff88b4b7,0xff84b1b3,0xff7eadaf,0xff7aa9ac,0xff75a6a9,0xff7a9799,0xff3b4649,
2051 0xff38474c,0xff32494f,0xff294851,0xf1233d44,0x931a1a1a,0x5f151515,0x30050505,0xb5366775,0xff3d88a2,0xff39829a,0xff36778c,0xff2e6376,0xff85aeb1,0xff8fb7b9,
2052 0xff96bcbe,0xff6a878f,0xff1e5769,0xff1c6073,0xff1b6478,0xff196378,0xff185f74,0xff175a6e,0xff92b9bb,0xff8db6b8,0xff87b3b6,0xff82afb2,0xff7eadb0,0xff7aa9ad,
2053 0xff77a6aa,0xff71a2a6,0xff3c4346,0xff3c4649,0xff37474c,0xff30474e,0xff274650,0xe121353b,0x89181818,0x59141414,0x2a060606,0x81294953,0xfb357e99,0xff337c97,
2054 0xff30738b,0xff2c6377,0xff79a6aa,0xff85afb3,0xff8cb6b8,0xff315966,0xff225869,0xff215e72,0xff206177,0xff1c5f74,0xff1b5c72,0xff467483,0xff89b4b7,0xff85b1b4,
2055 0xff81afb2,0xff7eacaf,0xff7aaaad,0xff76a7a9,0xff73a4a7,0xff545a5b,0xff3e4447,0xff3b464a,0xff36474d,0xff2d464f,0xfd25434c,0xc51f2a2d,0x7d181818,0x4f131313,
2056 0x22080808,0x420c0c0c,0xd92c647a,0xff2d7593,0xff2a6d88,0xff276177,0xff6f9399,0xff78a6aa,0xff82adb2,0xff365b69,0xff265769,0xff265d72,0xff256074,0xff245e73,
2057 0xff225a6f,0xff7e9fa5,0xff82afb2,0xff7fadb0,0xff7cabaf,0xff79a8ac,0xff75a6aa,0xff72a3a7,0xff6ea0a4,0xff3f4446,0xff3e4649,0xff3a474b,0xff33464c,0xff2a444c,
2058 0xf2223940,0x9d1a1a1a,0x6d151515,0x420f0f0f,0x1a0a0a0a,0x350e0e0e,0x9d244b57,0xfb256b88,0xff246985,0xff236078,0xff456d7c,0xff6c9b9f,0xff76a5a8,0xff69858d,
2059 0xff2b5769,0xff2a5d70,0xff295e73,0xff295d72,0xff295a6e,0xff7eacb0,0xff7cabaf,0xff78a9ad,0xff76a6a9,0xff74a5a9,0xff71a2a6,0xff6ca0a4,0xff689b9e,0xff6b9395,
2060 0xff3b4549,0xff36454c,0xff2d434c,0xfd254049,0xd31f2c30,0x89181818,0x5c131313,0x350e0e0e,0x130d0d0d,0x280d0d0d,0x490e0e0e,0xd1215669,0xff1e6581,0xff1e5e7a,
2061 0xff21576d,0xff5c8e93,0xff68999e,0xff74949a,0xff2e5768,0xff2f5c6d,0xff305e72,0xff2f5d71,0xff77959d,0xff76a7ab,0xff75a6a9,0xff73a5a8,0xff7a9fa3,0xff7b969a,
2062 0xff788a8d,0xff4e5558,0xff3f474a,0xff3d474b,0xff36454b,0xff30434b,0xff28404b,0xec20343a,0x9e1b1b1b,0x73161616,0x49111111,0x280d0d0d,0xc151515,0x1d121212,
2063 0x36131313,0x7b193339,0xe71a556a,0xff1c5b77,0xff20576f,0xff486b7a,0xff588a8f,0xff619497,0xff2e5465,0xff30596a,0xff325c6e,0xff335d6f,0xff718d95,0xff516d7b,
2064 0xff375663,0xff39515c,0xff3b4e56,0xff3d4b52,0xff3e4b50,0xff3e4a4e,0xff3b484d,0xff38464e,0xff32434c,0xff29404b,0xf522383f,0xbe1e2528,0x83171717,0x5b141414,
2065 0x350e0e0e,0x1c090909,0x7242424,0x120e0e0e,0x26141414,0x43131313,0x97173a46,0xee1a5167,0xff1c5670,0xff21526a,0xff507981,0xff508389,0xff638089,0xff315567,
2066 0xff335a6b,0xff355b6c,0xff385b6c,0xff395a69,0xff3b5765,0xff3c555f,0xff3d515b,0xff3d4e56,0xff3c4c53,0xff394951,0xff364850,0xff2f434c,0xff29404b,0xf8233841,
2067 0xcc1e282c,0x8e191919,0x66141414,0x42131313,0x250e0e0e,0x120e0e0e,0x3000000,0xb171717,0x18151515,0x2d111111,0x4b141414,0x9e193642,0xea1a4a5f,0xff1c4f6a,
2068 0xff1f4e64,0xff3c6e75,0xff46787e,0xff2d5164,0xff315365,0xff345668,0xff365868,0xff375666,0xff395563,0xff3a5360,0xff3a505d,0xff384d57,0xff354a55,0xff324750,
2069 0xff2d444f,0xff273f4b,0xf521363f,0xcc1e282c,0x921a1a1a,0x6c151515,0x4b111111,0x2d111111,0x170b0b0b,0xa000000,0x1000000,0x5000000,0xe121212,0x1c121212,
2070 0x31151515,0x4e171717,0x8b182c33,0xdb194251,0xfc1c4b64,0xff1f4a62,0xff39666d,0xff386a70,0xff2b4e60,0xff2d4f61,0xff305062,0xff325161,0xff33505e,0xff324d5c,
2071 0xff324b59,0xff2f4855,0xff2c4653,0xff28414e,0xfd243d49,0xeb1f323a,0xbc1e2526,0x8e191919,0x6c151515,0x4d111111,0x30101010,0x1b090909,0xd000000,0x5000000,
2072 0xffffff,0x2000000,0x6000000,0xf111111,0x1d121212,0x31151515,0x4b141414,0x68161616,0xb719333e,0xe81c404f,0xfc1c465b,0xff5b7984,0xff50727b,0xff25485c,
2073 0xff27495a,0xff29495a,0xff294658,0xff294757,0xff274252,0xff264251,0xfd223f4c,0xf1213640,0xd11e2b30,0x9d1c1c1c,0x82181818,0x66141414,0x4a111111,0x30101010,
2074 0x1c090909,0xe000000,0x6000000,0x2000000,0xffffff,0x1000000,0x2000000,0x7000000,0x10202020,0x1d1a1a1a,0x2d171717,0x44171717,0x5c161616,0x75181818,
2075 0xad192b32,0xd41a3841,0xed39555f,0xfa6f858f,0xfd466371,0xfe214253,0xfc20404f,0xf81f3c4a,0xef1f3842,0xde1e3139,0xc31c282e,0x9b1a1a1a,0x87191919,0x73161616,
2076 0x5a141414,0x42131313,0x2d111111,0x1b090909,0xe000000,0x7000000,0x2000000,0x1000000,0xffffff,0xffffff,0x1000000,0x2000000,0x7242424,0xe121212,
2077 0x18151515,0x26141414,0x38171717,0x4a151515,0x5d161616,0x6f171717,0x7e181818,0x8b1a1a1a,0x9c3a3a3a,0xa9575757,0xa74c4c4c,0x9f3a3a3a,0x98353535,0x8a252525,
2078 0x7d181818,0x6c151515,0x5b141414,0x49111111,0x350e0e0e,0x250e0e0e,0x170b0b0b,0xd000000,0x6000000,0x2000000,0x1000000,0xffffff,0xffffff,0xffffff,
2079 0xffffff,0x1000000,0x2000000,0x62b2b2b,0xb171717,0x120e0e0e,0x1d121212,0x29131313,0x37131313,0x44131313,0x4f131313,0x59141414,0x60181818,0x65171717,
2080 0x66171717,0x64141414,0x5f151515,0x58141414,0x4e141414,0x420f0f0f,0x350e0e0e,0x280d0d0d,0x1c090909,0x120e0e0e,0xa000000,0x5000000,0x2000000,0x1000000,
2081 0xffffff,0xffffff
2082};
2083
2508static const QRgb save_data[] = { 2084static const QRgb save_data[] = {
2509 0x0,0x1000000,0x3000000,0x4000000,0x4000000,0x4000000,0x4000000,0x4000000,0x4000000,0x4000000,0x4000000,0x4000000,0x2000000,0x0, 2085 0x0,0x1000000,0x3000000,0x4000000,0x4000000,0x4000000,0x4000000,0x4000000,0x4000000,0x4000000,0x4000000,0x4000000,0x2000000,0x0,
2510 0x0,0x75939393,0xd7788f79,0xd736b43e,0xd736b43e,0xd736b43e,0xd736b43e,0xd736b43e,0xd736b43e,0xd736b43e,0xd752a357,0xc95e5e5e,0x1c000000,0x3000000, 2086 0x0,0x75939393,0xd7788f79,0xd736b43e,0xd736b43e,0xd736b43e,0xd736b43e,0xd736b43e,0xd736b43e,0xd736b43e,0xd752a357,0xc95e5e5e,0x1c000000,0x3000000,
2511 0x1000000,0x8f949494,0xff9d9e9d,0xffe9f8e9,0xffe6f4e6,0xffe6f5e6,0xffe6f5e6,0xffe6f5e6,0xffe5f4e5,0xffe4f3e4,0xffc3cbc3,0xf9595959,0x4a000000,0xa000000, 2087 0x1000000,0x8f949494,0xff9d9e9d,0xffe9f8e9,0xffe6f4e6,0xffe6f5e6,0xffe6f5e6,0xffe6f5e6,0xffe5f4e5,0xffe4f3e4,0xffc3cbc3,0xf9595959,0x4a000000,0xa000000,
2512 0x1000000,0x908f8f8f,0xff999999,0xfffafafa,0xfff6f6f6,0xfff5f5f5,0xfff4f4f4,0xfff2f2f2,0xffeeeeee,0xffeaeaea,0xffbebebe,0xfa575757,0x56000000,0xb000000, 2088 0x1000000,0x908f8f8f,0xff999999,0xfffafafa,0xfff6f6f6,0xfff5f5f5,0xfff4f4f4,0xfff2f2f2,0xffeeeeee,0xffeaeaea,0xffbebebe,0xfa575757,0x56000000,0xb000000,
2513 0x1000000,0x908e8e8e,0xff9b9b9b,0xfff8f8f8,0xfff3f3f3,0xfff1f1f1,0xffebebeb,0xffe5e5e5,0xffdfdfdf,0xffdbdbdb,0xffaeaeae,0xfa4d4d4d,0x57000000,0xc000000, 2089 0x1000000,0x908e8e8e,0xff9b9b9b,0xfff8f8f8,0xfff3f3f3,0xfff1f1f1,0xffebebeb,0xffe5e5e5,0xffdfdfdf,0xffdbdbdb,0xffaeaeae,0xfa4d4d4d,0x57000000,0xc000000,
2514 0x1000000,0x908f8f8f,0xff9d9d9d,0xfff2f2f2,0xffe7e7e7,0xffe1e1e1,0xffdadada,0xffd4d4d4,0xffcecece,0xffc9c9c9,0xff9b9b9b,0xfa484848,0x57000000,0xc000000, 2090 0x1000000,0x908f8f8f,0xff9d9d9d,0xfff2f2f2,0xffe7e7e7,0xffe1e1e1,0xffdadada,0xffd4d4d4,0xffcecece,0xffc9c9c9,0xff9b9b9b,0xfa484848,0x57000000,0xc000000,
2515 0x1000000,0x90909090,0xff8c8c8c,0xffc4c4c4,0xffbdbdbd,0xffb5b5b5,0xffafafaf,0xffaaaaaa,0xffa4a4a4,0xff9c9c9c,0xff797979,0xf9444444,0x57000000,0xc000000, 2091 0x1000000,0x90909090,0xff8c8c8c,0xffc4c4c4,0xffbdbdbd,0xffb5b5b5,0xffafafaf,0xffaaaaaa,0xffa4a4a4,0xff9c9c9c,0xff797979,0xf9444444,0x57000000,0xc000000,
2516 0x1000000,0x908f8f8f,0xff7d7d7d,0xff767676,0xff6e6e6e,0xff656565,0xff5d5d5d,0xff5c5c5c,0xff5c5c5c,0xff585858,0xff515151,0xf93b3b3b,0x57000000,0xc000000, 2092 0x1000000,0x908f8f8f,0xff7d7d7d,0xff767676,0xff6e6e6e,0xff656565,0xff5d5d5d,0xff5c5c5c,0xff5c5c5c,0xff585858,0xff515151,0xf93b3b3b,0x57000000,0xc000000,
2517 0x1000000,0x90888888,0xff737373,0xffc4c4c4,0xffc2c2c2,0xffc7c7c7,0xffc7c7c7,0xffc2c2c2,0xffababab,0xff606060,0xff484848,0xfa353535,0x57000000,0xc000000, 2093 0x1000000,0x90888888,0xff737373,0xffc4c4c4,0xffc2c2c2,0xffc7c7c7,0xffc7c7c7,0xffc2c2c2,0xffababab,0xff606060,0xff484848,0xfa353535,0x57000000,0xc000000,
2518 0x1000000,0x90828282,0xff6d6d6d,0xffd9d9d9,0xff797979,0xffa9a9a9,0xffbfbfbf,0xffb3b3b3,0xff9d9d9d,0xff575757,0xff424242,0xfa313131,0x57000000,0xc000000, 2094 0x1000000,0x90828282,0xff6d6d6d,0xffd9d9d9,0xff797979,0xffa9a9a9,0xffbfbfbf,0xffb3b3b3,0xff9d9d9d,0xff575757,0xff424242,0xfa313131,0x57000000,0xc000000,
2519 0x1000000,0x907e7e7e,0xff6b6b6b,0xffc7c7c7,0xff747474,0xff979797,0xffa0a0a0,0xff9e9e9e,0xffa2a2a2,0xff575757,0xff404040,0xfa2f2f2f,0x57000000,0xc000000, 2095 0x1000000,0x907e7e7e,0xff6b6b6b,0xffc7c7c7,0xff747474,0xff979797,0xffa0a0a0,0xff9e9e9e,0xffa2a2a2,0xff575757,0xff404040,0xfa2f2f2f,0x57000000,0xc000000,
2520 0x1000000,0x65565656,0xfc636363,0xffb0b0b0,0xff929292,0xff8e8e8e,0xff9b9b9b,0xffa9a9a9,0xffb8b8b8,0xff595959,0xff3c3c3c,0xf8252525,0x55000000,0xb000000, 2096 0x1000000,0x65565656,0xfc636363,0xffb0b0b0,0xff929292,0xff8e8e8e,0xff9b9b9b,0xffa9a9a9,0xffb8b8b8,0xff595959,0xff3c3c3c,0xf8252525,0x55000000,0xb000000,
2521 0x0,0x10000000,0x61181818,0x8b191919,0x8e1f1f1f,0x8e292929,0x8f292929,0x8f292929,0x8e292929,0x8d282828,0x8b1a1a1a,0x7f101010,0x38000000,0x7000000, 2097 0x0,0x10000000,0x61181818,0x8b191919,0x8e1f1f1f,0x8e292929,0x8f292929,0x8f292929,0x8e292929,0x8d282828,0x8b1a1a1a,0x7f101010,0x38000000,0x7000000,
2522 0x0,0x1000000,0xc000000,0x19000000,0x1a000000,0x1a000000,0x1b000000,0x1b000000,0x1a000000,0x1a000000,0x19000000,0x17000000,0xb000000,0x1000000 2098 0x0,0x1000000,0xc000000,0x19000000,0x1a000000,0x1a000000,0x1b000000,0x1b000000,0x1a000000,0x1a000000,0x19000000,0x17000000,0xb000000,0x1000000
2523}; 2099};
2524 2100
2101static const QRgb SettingsIcon_data[] = {
2102 0x0,0x0,0x67bbbbc8,0xc6e3e3e9,0xbddfdfe6,0x61bdbdc8,0x36f6f78,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
2103 0x0,0x0,0x1b91919e,0xd2d0d0d8,0xfffefefe,0xfef6f6f7,0x85b2b2be,0x1000000,0x0,0x0,0x0,0x0,0x0,0x0,
2104 0x429494a9,0x661616f,0x0,0x1d858594,0xedd1d1da,0xfffefeff,0xf9d8d8e0,0x1a474750,0x0,0x0,0x0,0x0,0x0,0x0,
2105 0xc5c1c1ce,0xa1a6a6b6,0x8626274,0x92a9a9bb,0xffe9e9ee,0xfff5f5f7,0xffdfdfe6,0x405c5c6b,0x0,0x0,0x0,0x0,0x0,0x0,
2106 0xbab5b5c4,0xffe0e0e7,0xd8a8a8b9,0xffdddde4,0xffe9e9ee,0xffe9e9ee,0xffc5c5d1,0x303d3d4a,0x0,0x0,0x0,0x0,0x0,0x0,
2107 0x5c818198,0xfecacad5,0xffdddde4,0xffdedee5,0xffdddde5,0xffd4d4dd,0xffc1c1cd,0xb7a39388,0x8fd79c2d,0x7895d1c,0x0,0x0,0x0,0x0,
2108 0x33f3f51,0x7f74748c,0xf7a0a0b3,0xffb4b4c3,0xffafafbf,0xffcacad5,0xffcfc4bc,0xffe0ab39,0xffeeb524,0xa7d09b2c,0x67a521a,0x0,0x0,0x0,
2109 0x0,0x1000000,0x192a2a39,0x403b3b50,0x3d39394d,0xd59a8c8b,0xffdea939,0xfff6a014,0xfffd9f12,0xfff1b523,0xa8c8922a,0x87e541b,0x0,0x0,
2110 0x0,0x0,0x0,0x0,0x0,0x87ba8128,0xfff1b423,0xffffb71f,0xffffb71f,0xfffdb51f,0xfff2b824,0xa7c08827,0x76f4919,0x0,
2111 0x0,0x0,0x0,0x0,0x0,0x5644217,0x9bb57e26,0xfff3bb27,0xffffcd2d,0xffffcb2b,0xfffebe24,0xfff5b622,0xa5b87d25,0x5533614,
2112 0x0,0x0,0x0,0x0,0x0,0x0,0x4563814,0x9dae7524,0xfff1be2b,0xffffc528,0xffffa515,0xffff9c0f,0xfeeca21d,0x50825420,
2113 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x55b3a17,0x9ca56b22,0xfff3a018,0xffffad1a,0xffff9a0e,0xfff49b14,0x69794d1e,
2114 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x54e3115,0x9ba1631e,0xfee68912,0xfff28f0e,0xe2b06b1a,0x2637230f,
2115 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x5472c15,0x4f6c421f,0x696b411d,0x2634200f,0x1000000
2116};
2117
2118static const QRgb Shutdown_data[] = {
2119 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0x1000000,0x3000000,0x6000000,0xb000000,0x12000000,0x19000000,0x21000000,0x29000000,0x2f000000,
2120 0x34000000,0x37000000,0x38000000,0x37000000,0x34000000,0x2f000000,0x29000000,0x21000000,0x19000000,0x12000000,0xb000000,0x6000000,0x3000000,0x1000000,
2121 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0x1000000,0x2000000,0x5000000,0xa000000,0x11000000,0x1b000000,0x26000000,
2122 0x5d8b4143,0x93b85357,0xbed15b5f,0xdedf5f63,0xf3e85e63,0xfeee5d61,0xf3e75457,0xe0dc4b4d,0xc4c73e42,0x9fa73032,0x70721d20,0x3f000000,0x33000000,0x26000000,
2123 0x1b000000,0x11000000,0xa000000,0x5000000,0x2000000,0x1000000,0xffffff,0xffffff,0xffffff,0xffffff,0x1000000,0x2000000,0x6000000,0xd000000,
2124 0x16000000,0x23000000,0x6fa55154,0xbad2666a,0xf5ee7277,0xfff17275,0xffef6d71,0xffeb676a,0xffe96064,0xffe85b5e,0xffe85358,0xffe94e53,0xffec484c,0xffed4146,
2125 0xf7e8393e,0xc6c12a2e,0x8884191c,0x45000000,0x33000000,0x23000000,0x16000000,0xd000000,0x6000000,0x2000000,0x1000000,0xffffff,0xffffff,0x1000000,
2126 0x2000000,0x7000000,0xe000000,0x1a000000,0x47793d3e,0xa7cc6669,0xf5f0797c,0xfff4787c,0xfff3777b,0xffef7174,0xffe96a6e,0xffe46366,0xffde5b5f,0xffdb5458,
2127 0xffdd4f53,0xffe2494e,0xffe74348,0xffeb3d42,0xffee373c,0xffef3036,0xf8e7282e,0xbcb01a1e,0x6c4d090b,0x3e000000,0x2a000000,0x1a000000,0xe000000,0x7000000,
2128 0x2000000,0x1000000,0xffffff,0x2000000,0x6000000,0xe000000,0x1b000000,0x5f9b4f51,0xc6db7072,0xfff57d80,0xfff57b7e,0xfff47a7d,0xfff07579,0xffea6e71,
2129 0xffe2676a,0xffd85e61,0xffd05457,0xffcc4e51,0xffcf484b,0xffd74447,0xffde3e43,0xffe7393d,0xffeb3237,0xffed2b31,0xffee2429,0xffed1d23,0xd7c11419,0x85670a0d,
2130 0x46000000,0x2e000000,0x1b000000,0xe000000,0x6000000,0x2000000,0x1000000,0x5000000,0xd000000,0x1a000000,0x5f9b4f51,0xd0e07276,0xfff57d81,0xfff47d7f,
2131 0xfff47b7e,0xfff2797c,0xffec7377,0xffe36b6e,0xffd55f63,0xffc85659,0xffffffff,0xffffffff,0xffffffff,0xffc63c40,0xffd2373b,0xffde3237,0xffe82d31,0xffeb262a,
2132 0xffec1e24,0xffeb181e,0xffe5171d,0xe0bd1318,0x8a5e0a0c,0x48000000,0x2e000000,0x1a000000,0xd000000,0x5000000,0x3000000,0xa000000,0x16000000,0x47793d3e,
2133 0xc6db7072,0xfff57d81,0xfff47d80,0xfff37c7f,0xfff0797c,0xffed7679,0xffe46d71,0xffd76567,0xffc7585b,0xffb94e51,0xffffffff,0xffffffff,0xffffffff,0xffb73438,
2134 0xffc43034,0xffd32b31,0xffde252b,0xffe71f25,0xffe8191e,0xffe4171d,0xffde171c,0xffd9161b,0xdbaa1116,0x7b3b0607,0x46000000,0x2a000000,0x16000000,0xa000000,
2135 0x6000000,0x11000000,0x23000000,0xa7cc6669,0xfff57d80,0xfff47d7f,0xfff27c7e,0xffee7a7c,0xffe97477,0xffe26f73,0xffd7666a,0xffc85c5f,0xffb64f52,0xffa84548,
2136 0xffffffff,0xffffffff,0xffffffff,0xffa62d30,0xffb3282c,0xffc42428,0xffd21f24,0xffdb191f,0xffda161c,0xffd9161b,0xffd6161b,0xffd2151b,0xffcd151a,0xc88b0e11,
2137 0x60000000,0x3e000000,0x23000000,0x11000000,0xb000000,0x1b000000,0x6fa55154,0xf5f0797c,0xfff47b7e,0xfff37a7d,0xffee787b,0xffe87376,0xffdc6c70,0xffd36569,
2138 0xffc65d60,0xffc26e71,0xffcd999a,0xff993d40,0xffffffff,0xffffffff,0xffffffff,0xff982528,0xffcb8486,0xffbe4044,0xffc0181c,0xffca151a,0xffcb1519,0xffcd151a,
2139 0xffcb1419,0xffca151a,0xffc41419,0xf9b91217,0xa257090b,0x55000000,0x33000000,0x1b000000,0x12000000,0x26000000,0xbad2666a,0xfff4787c,0xfff47a7d,0xfff0787b,
2140 0xffe97477,0xffdc6c70,0xffce6366,0xffc25c5e,0xffd2999a,0xffeddcdc,0xffffffff,0xff8c3638,0xffffffff,0xffffffff,0xffffffff,0xff8b2023,0xffffffff,0xffedd2d3,
2141 0xffce7375,0xffb41217,0xffb71318,0xffbe1318,0xffc11419,0xffc11419,0xffbd1318,0xffb81317,0xd7860d11,0x6c000000,0x45000000,0x26000000,0x19000000,0x5d8b4143,
2142 0xf5ef7377,0xfff3777b,0xfff07579,0xffea7276,0xffdf6b6f,0xffd16367,0xffbe5a5c,0xffd7a6a8,0xfffefefe,0xffffffff,0xffffffff,0xff873234,0xffffffff,0xffffffff,
2143 0xffffffff,0xff851b1e,0xffffffff,0xffffffff,0xfffefdfd,0xffce8587,0xffa51015,0xffae1216,0xffb21217,0xffb61217,0xffb41317,0xffb11216,0xfaa61115,0x9b3b0608,
2144 0x56000000,0x33000000,0x21000000,0x93ba5558,0xfff47376,0xfff37376,0xffee7073,0xffe56c6f,0xffd66467,0xffc35a5d,0xffcf9799,0xfffefefe,0xffffffff,0xffffffff,
2145 0xffecdfdf,0xff862e31,0xffffffff,0xffffffff,0xffffffff,0xff84171a,0xffecdada,0xffffffff,0xffffffff,0xfffefdfd,0xffbe7173,0xff9b1014,0xffa41115,0xffa91116,
2146 0xffab1215,0xffa81115,0xffa51115,0xc25f0a0c,0x67000000,0x3f000000,0x29000000,0xbed35d61,0xfff46f73,0xfff26e72,0xffeb6b6f,0xffdf6467,0xffcd5b5e,0xffc16b6d,
2147 0xffeddbdc,0xffffffff,0xffffffff,0xffd1adae,0xffa1595a,0xff8c2c2e,0xffffffff,0xffffffff,0xffffffff,0xff8a1317,0xff9c3c3f,0xffcc9c9e,0xffffffff,0xffffffff,
2148 0xffe7d0d1,0xff9d3437,0xff950f13,0xff9d1014,0xffa01014,0xffa01014,0xff9e1014,0xde730c0f,0x75000000,0x4a000000,0x2f000000,0xdee26164,0xfff36a6d,0xffef686b,
2149 0xffe76567,0xffd75c60,0xffc25256,0xffd1999a,0xffffffff,0xffffffff,0xffeedfe0,0xffa85a5c,0xff952f32,0xff982a2d,0xffffffff,0xffffffff,0xffffffff,0xff940f13,
2150 0xff8a0e11,0xff983c3e,0xffead9d9,0xffffffff,0xffffffff,0xffb7797b,0xff870e11,0xff910f13,0xff960f13,0xff960f13,0xff960f13,0xef810d10,0x81000000,0x53000000,
2151 0x34000000,0xf3ec6165,0xfff36468,0xffef6266,0xffe45c60,0xffd35458,0xffbc494c,0xffe2c3c4,0xffffffff,0xffffffff,0xffd0a3a4,0xff9e3034,0xffa32d30,0xffa7282b,
2152 0xffffffff,0xffffffff,0xffffffff,0xff9b1013,0xff8f0e12,0xff830d10,0xffc29294,0xffffffff,0xffffffff,0xffd3b3b4,0xff7b0c0f,0xff850e10,0xff8d0e12,0xff8f0f12,
2153 0xff8e0e12,0xf9870d11,0x89000000,0x59000000,0x37000000,0xfef25f63,0xfff35f63,0xffed5b5f,0xffe15659,0xffce4c50,0xffb74245,0xfff3e7e7,0xffffffff,0xffffffff,
2154 0xffba6e70,0xffa72c2f,0xffb0292c,0xffb62327,0xffffffff,0xffffffff,0xffffffff,0xffa11015,0xff930f12,0xff830d11,0xff9e5759,0xffffffff,0xffffffff,0xffede1e2,
2155 0xff720b0e,0xff7b0d0f,0xff830d11,0xff870e12,0xff880e11,0xfe870e11,0x8e000000,0x5e000000,0x38000000,0xf3eb5559,0xfff2575c,0xffed5559,0xffe04e51,0xffcb4449,
2156 0xffb53a3e,0xfffefdfd,0xffffffff,0xffffffff,0xffa94144,0xffad2629,0xffbb2326,0xffc41d22,0xffc51419,0xffbd1317,0xffb31217,0xffa61015,0xff940f13,0xff810d10,
2157 0xff81292b,0xffffffff,0xffffffff,0xfffdfcfc,0xff6a0a0d,0xff740c0f,0xff7c0d10,0xff800d11,0xff820d10,0xfa7b0c0f,0x90000000,0x5f000000,0x37000000,0xe0df4c4f,
2158 0xfff15156,0xffec4c51,0xffe0474a,0xffcd3e42,0xffb63337,0xfff3e5e6,0xffffffff,0xffffffff,0xffbb6467,0xffad1e22,0xffbd1a1f,0xffc8151a,0xffc41419,0xffbc1318,
2159 0xffb11216,0xffa21015,0xff8e0e12,0xff790c0f,0xff975658,0xffffffff,0xffffffff,0xffebe1e1,0xff650b0d,0xff6f0b0e,0xff760c0f,0xff7b0d10,0xff7d0d10,0xf26a0b0e,
2160 0x8e000000,0x5e000000,0x34000000,0xc4c93f43,0xfff1494e,0xffed454a,0xffe13f43,0xffd0373b,0xffb92e31,0xffe2bbbc,0xffffffff,0xffffffff,0xffd09899,0xffa51418,
2161 0xffb21216,0xffb91217,0xffb91218,0xffb11216,0xffa51115,0xff950f12,0xff800d10,0xff6d0b0e,0xffb79192,0xffffffff,0xffffffff,0xffcbb3b3,0xff620a0c,0xff6c0b0e,
2162 0xff720b0e,0xff760c0f,0xff770c0f,0xe558090b,0x89000000,0x59000000,0x2f000000,0x9fa93034,0xfff04247,0xffec3d42,0xffe4383d,0xffd43034,0xffbf272c,0xffcf8385,
2163 0xffffffff,0xffffffff,0xffeed9da,0xffab3d40,0xff9f1014,0xffa41014,0xffa51115,0xff9f1014,0xff930f12,0xff830d10,0xff710c0e,0xff7f393b,0xffe4d8d9,0xffffffff,
2164 0xffffffff,0xffa37778,0xff600a0c,0xff680b0d,0xff6e0b0e,0xff700c0e,0xff740c0f,0xd1400608,0x81000000,0x53000000,0x29000000,0x70721d20,0xf7e9393e,0xffed373c,
2165 0xffe73136,0xffda2a2f,0xffc82227,0xffbe3e42,0xffecd2d2,0xffffffff,0xffffffff,0xffce9d9e,0xffa13c40,0xff8e0e12,0xff8e0e12,0xff870e11,0xff7e0d10,0xff710b0e,
2166 0xff80393c,0xffba9b9b,0xffffffff,0xffffffff,0xffded0d0,0xff733031,0xff610a0d,0xff670a0d,0xff6c0b0e,0xff6f0b0e,0xfc6c0a0d,0xb5220404,0x75000000,0x4a000000,
2167 0x21000000,0x3f000000,0xc6c12a2e,0xffee3036,0xffe82a30,0xffdf2428,0xffd11c21,0xffbe161a,0xffca7274,0xfffefdfd,0xffffffff,0xffffffff,0xffead9d9,0xffc39294,
2168 0xffa15759,0xff82292c,0xff975658,0xffb79192,0xffe4d8d9,0xffffffff,0xffffffff,0xfffefdfd,0xff9a6d6f,0xff5b0a0b,0xff620a0c,0xff680a0d,0xff6a0b0e,0xff6d0b0e,
2169 0xe64e080a,0x93000000,0x67000000,0x3f000000,0x19000000,0x33000000,0x8884191c,0xf8e6282e,0xffea2328,0xffe41d23,0xffd9171c,0xffc51419,0xffb01216,0xffcb8587,
2170 0xfffefdfd,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffefdfd,0xffa78183,0xff59090b,0xff60090c,
2171 0xff640a0d,0xff680b0d,0xff6a0b0e,0xfc680a0d,0xc32b0405,0x81000000,0x56000000,0x33000000,0x12000000,0x26000000,0x45000000,0xbcb01a1e,0xffec1d23,0xffe7181d,
2172 0xffda161c,0xffc91519,0xffb71318,0xffa51015,0xffbe7173,0xffe7d0d1,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffded0d0,
2173 0xff9a6d6f,0xff59090b,0xff5e090c,0xff620a0d,0xff660a0d,0xff680b0d,0xff6a0b0d,0xdf430709,0x94000000,0x6c000000,0x45000000,0x26000000,0xb000000,0x1b000000,
2174 0x33000000,0x6c4d090b,0xd7c01419,0xffe3171d,0xffd9161b,0xffcd151a,0xffbd1317,0xffae1216,0xff9c1014,0xff9e3437,0xffb8797b,0xffd3b3b4,0xffede1e2,0xfffdfcfc,
2175 0xffebe1e1,0xffccb3b3,0xffa47778,0xff743031,0xff5d0a0c,0xff60090c,0xff620a0d,0xff660a0d,0xff670b0d,0xff690b0d,0xed50080a,0xae160203,0x7b000000,0x55000000,
2176 0x33000000,0x1b000000,0x6000000,0x11000000,0x23000000,0x3e000000,0x85670a0d,0xe0bc1318,0xffd6161b,0xffcd141a,0xffc21419,0xffb41217,0xffa61115,0xff970f13,
2177 0xff8a0e12,0xff7f0d10,0xff740c0e,0xff6d0b0d,0xff680b0e,0xff650a0d,0xff640a0d,0xff620a0d,0xff630a0c,0xff650a0d,0xff660a0d,0xff670b0d,0xff690b0d,0xf054080a,
2178 0xbc220304,0x85000000,0x60000000,0x3e000000,0x23000000,0x11000000,0x3000000,0xa000000,0x16000000,0x2a000000,0x46000000,0x8a5e0a0c,0xdba91116,0xffca151a,
2179 0xffc11419,0xffb71217,0xffac1216,0xffa01014,0xff930f13,0xff890e11,0xff800d10,0xff770c0f,0xff720c0e,0xff6e0b0e,0xff6c0b0d,0xff6a0b0e,0xff690a0d,0xff690b0d,
2180 0xff6a0b0e,0xff690b0d,0xed50080a,0xbc220304,0x88000000,0x66000000,0x46000000,0x2a000000,0x16000000,0xa000000,0x1000000,0x5000000,0xd000000,0x1a000000,
2181 0x2e000000,0x48000000,0x7b3b0607,0xc88a0e11,0xf9b81217,0xffb51317,0xffae1215,0xffa31014,0xff990f13,0xff8e0e12,0xff870e11,0xff800d11,0xff7a0c10,0xff750c0f,
2182 0xff720b0e,0xff6e0c0e,0xff6d0b0e,0xff6b0b0e,0xfc680a0d,0xdf430709,0xae160203,0x85000000,0x66000000,0x48000000,0x2e000000,0x1a000000,0xd000000,0x5000000,
2183 0xffffff,0x2000000,0x6000000,0xe000000,0x1b000000,0x2e000000,0x46000000,0x60000000,0xa257090b,0xd7850d11,0xfaa51115,0xffa41115,0xff9c1014,0xff940f13,
2184 0xff8b0e12,0xff850e11,0xff7f0d10,0xff7b0d10,0xff750c0f,0xff730c0f,0xfc6c0a0d,0xe64e080a,0xc32b0405,0x94000000,0x7b000000,0x60000000,0x46000000,0x2e000000,
2185 0x1b000000,0xe000000,0x6000000,0x2000000,0xffffff,0x1000000,0x2000000,0x7000000,0xe000000,0x1a000000,0x2a000000,0x3e000000,0x55000000,0x6c000000,
2186 0x9b3b0608,0xc25f0a0c,0xde730c0f,0xef810d10,0xf9870d11,0xfe870e11,0xfa7b0c0f,0xf26a0b0e,0xe558090b,0xd1400608,0xb5220404,0x93000000,0x81000000,0x6c000000,
2187 0x55000000,0x3e000000,0x2a000000,0x1a000000,0xe000000,0x7000000,0x2000000,0x1000000,0xffffff,0xffffff,0x1000000,0x2000000,0x6000000,0xd000000,
2188 0x16000000,0x23000000,0x33000000,0x45000000,0x56000000,0x67000000,0x75000000,0x81000000,0x89000000,0x8e000000,0x90000000,0x8e000000,0x89000000,0x81000000,
2189 0x75000000,0x67000000,0x56000000,0x45000000,0x33000000,0x23000000,0x16000000,0xd000000,0x6000000,0x2000000,0x1000000,0xffffff,0xffffff,0xffffff,
2190 0xffffff,0x1000000,0x2000000,0x5000000,0xa000000,0x11000000,0x1b000000,0x26000000,0x33000000,0x3f000000,0x4a000000,0x53000000,0x59000000,0x5e000000,
2191 0x5f000000,0x5e000000,0x59000000,0x53000000,0x4a000000,0x3f000000,0x33000000,0x26000000,0x1b000000,0x11000000,0xa000000,0x5000000,0x2000000,0x1000000,
2192 0xffffff,0xffffff
2193};
2194
2195static const QRgb SoundPlayer_data[] = {
2196 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x318192d7,0x537d8ed0,0x847d8bce,
2197 0x867a88c9,0x867885c6,0x586f7dba,0x27636fa5,0x4000000,0x1000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
2198 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x218698de,0xa18699df,
2199 0xf08597de,0xff96a5e2,0xffa6b1e7,0xffb0b8ea,0xffadb6e9,0xffabb3e7,0xff9da7df,0xff8490cf,0xe37482c2,0x8b6c78b3,0x2a576192,0x5000000,0x1000000,0x0,
2200 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
2201 0x108ea1eb,0xa18a9ee6,0xff91a2e7,0xffb9c3f1,0xffdde1fb,0xffe9edff,0xffe8edff,0xffe8eeff,0xffe6edff,0xffc7d6ff,0xffc7d4ff,0xffc9d4ff,0xffc2cbf8,0xff9ca4dc,
2202 0xff7884c2,0x90646ea7,0x1d3d4466,0x4000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
2203 0x0,0x0,0x0,0x318da1e9,0xf08da1eb,0xffb7c3f3,0xffe9ecfe,0xfff0f3ff,0xffeef3ff,0xffedf1ff,0xffebf0ff,0xffe9efff,0xffe8eeff,0xffc9d8ff,
2204 0xffc7d6ff,0xffc4d4ff,0xffcfdbff,0xffd4deff,0xffc9d0fb,0xff8c95d0,0xd96974af,0x454c537e,0x8000000,0x1000000,0x0,0x0,0x0,0x0,
2205 0x0,0x0,0x0,0x0,0x0,0x0,0x318fa3ec,0xf096a9f0,0xffd4dbf9,0xfff5f7ff,0xfff5f7ff,0xfff3f6ff,0xfff0f4ff,0xffeef3ff,
2206 0xffedf1ff,0xffebf0ff,0xffe4ebff,0xffccdaff,0xffc9d8ff,0xffc8d7ff,0xffd6e1ff,0xffd6e0ff,0xffd4e0ff,0xffe6eaff,0xffa9aee4,0xf36a75b2,0x4c444a71,0xa000000,
2207 0x1000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3191a6f0,0xf098acf2,0xffe3e7fc,0xfff9fbff,0xfff9fbff,
2208 0xfff7f9ff,0xfff5f7ff,0xfff3f6ff,0xfff0f4ff,0xffeef3ff,0xffedf1ff,0xffe4ebff,0xffcfdcff,0xffccdaff,0xffd0dcff,0xffd9e3ff,0xffd7e2ff,0xffe7edff,0xfff6f9ff,
2209 0xfff0f3ff,0xffacb2e3,0xf46872af,0x40353a58,0xa000000,0x1000000,0x0,0x0,0x0,0x0,0x0,0x0,0x1096abf8,0xe093a9f5,
2210 0xffd1d9fb,0xfff9fbff,0xfffdfeff,0xfffafcff,0xfff9fbff,0xfff7f9ff,0xfff5f7ff,0xfff3f6ff,0xfff0f4ff,0xffeef3ff,0xffe7edff,0xffd3dfff,0xffcfdcff,0xffd8e3ff,
2211 0xffdbe4ff,0xffdfe7ff,0xfff7f9ff,0xfff7f9ff,0xfff6f9ff,0xffedefff,0xff9fa5dd,0xdc626ba4,0x21000000,0x6000000,0x0,0x0,0x0,0x0,
2212 0x0,0x0,0x9194a9f5,0xffbac8fa,0xffeff4ff,0xfff3f7ff,0xfff9fbff,0xfffdfeff,0xfffbfcff,0xfffafbff,0xfff7f9ff,0xfff5f7ff,0xfff3f6ff,0xfff0f4ff,
2213 0xffe4ebff,0xffd7e1ff,0xffd5e0ff,0xffdee7ff,0xffdce6ff,0xfff2f5ff,0xfff8f9ff,0xfff7f9ff,0xfff7f9ff,0xfff6f9ff,0xffe5e8ff,0xff7e86c2,0x934e5582,0x17000000,
2214 0x3000000,0x0,0x0,0x0,0x0,0x2193a9f3,0xff9db1fa,0xffeaefff,0xffe8efff,0xffedf3ff,0xfff3f7ff,0xfff9fbff,0xfffdfeff,0xfffcfdff,
2215 0xfffafbff,0xfff7f9ff,0xfff5f7ff,0xfff3f6ff,0xffe7eeff,0xffdbe4ff,0xffdee6ff,0xffe1e9ff,0xffedf2ff,0xfff8faff,0xfff8f9ff,0xfff8f9ff,0xfff7f9ff,0xfff7f9ff,
2216 0xfff6f9ff,0xffc5c9f5,0xf4646da8,0x3d1b1d2c,0xc000000,0x0,0x0,0x0,0x0,0x8296acf8,0xffc3cffc,0xffe0eaff,0xffe3ecff,0xffe8efff,
2217 0xffedf3ff,0xfff3f7ff,0xfff9fbff,0xfffdfeff,0xfffcfdff,0xfffafbff,0xfff7f9ff,0xfff5f7ff,0xffebf0ff,0xffdfe8ff,0xffe5ecff,0xffe9efff,0xfff9fbff,0xfff9faff,
2218 0xfff8faff,0xfff8f9ff,0xfff8f9ff,0xfff7f9ff,0xfff5f7ff,0xffecefff,0xff878dca,0x8c454b74,0x1b000000,0x3000000,0x0,0x0,0x0,0xe197aefa,
2219 0xffe1e9fe,0xffd9e5ff,0xffdee9ff,0xffe3ecff,0xffe8efff,0xffedf3ff,0xfff3f7ff,0xfff8fbff,0xfffdfeff,0xfffdfdff,0xfffafbff,0xfff3f5fe,0xffe8edfd,0xffe2e9fd,
2220 0xffeaf0ff,0xfff7faff,0xfff9fbff,0xffabe0af,0xff7cdb7f,0xff7ce37f,0xff7bdb7f,0xffc6eccf,0xfff3f6ff,0xfff3f6ff,0xffacb0e4,0xca575e92,0x2c000000,0x9000000,
2221 0x0,0x0,0x2195abf7,0xffabbefd,0xffdfe9ff,0xffd5e2ff,0xffd9e5ff,0xffdee9ff,0xffe3ecff,0xffe8efff,0xffedf3ff,0xfff3f7ff,0xfff8fbff,0xfffafcff,
2222 0xffeef1fc,0xffe8ecfa,0xffdfe5f9,0xffdce2f7,0xffe5e9f7,0xffe8f3ed,0xff3fbb40,0xff5ec660,0xff7bdf7f,0xff5dd560,0xff1fd020,0xff00e300,0xff1fe020,0xff98ea9f,
2223 0xffdbdeff,0xff6a72ad,0x3e000000,0x12000000,0x0,0x0,0x5395abf6,0xffbfcdfe,0xffd0dfff,0xffd1e0ff,0xffd5e2ff,0xffd9e5ff,0xffdee9ff,0xffe3ecff,
2224 0xffe8efff,0xffedf3ff,0xfff1f6ff,0xffeaeffe,0xffeef1fc,0xffe7ebfa,0xffd3d9f2,0xffdde1f3,0xffe9ebf6,0xffbcd2c7,0xffe8efee,0xfff8faff,0xfff7f9ff,0xfff6f9ff,
2225 0xffecf1ff,0xffa9dcbf,0xff36db40,0xff00ee00,0xff31e440,0xff6b8da5,0x77353959,0x1b000000,0x2000000,0x0,0x8495abf7,0xffcbd7fe,0xffc9daff,0xffcdddff,
2226 0xffd1dfff,0xffd5e2ff,0xffd9e5ff,0xffdee9ff,0xffe3ecff,0xffe8efff,0xffe6edff,0xffe5ebfe,0xffd5dffc,0xf7899ce3,0xc96976ac,0xf57884bd,0xffd1d4e8,0xffe3e6f4,
2227 0xffe9ecf9,0xffe9efff,0xffe1e9ff,0xffd7e2ff,0xffd3dfff,0xffd0dcff,0xffccdaff,0xff8ad5af,0xff0cea10,0xff09ef0d,0x9b216f37,0x24000000,0x5000000,0x0,
2228 0x8693a9f4,0xffc0cffe,0xffc5d8ff,0xffc9daff,0xffcdddff,0xffd1dfff,0xffd5e2ff,0xffd9e5ff,0xffdee9ff,0xffe3ecff,0xffdfe8ff,0xffe6ecfe,0xffafc0fc,0x914c5576,
2229 0x51000000,0x8c4b537e,0xff929ac6,0xffdce1f4,0xffdde3f7,0xffe4ebff,0xffdfe8ff,0xffdbe5ff,0xffd7e2ff,0xffd3dfff,0xffd0dcff,0xffccdaff,0xffa4d3cf,0xff1bd528,
2230 0xfa03f605,0x52009100,0x8000000,0x0,0x8693a9f4,0xffc0cffe,0xffc2d6ff,0xffc5d8ff,0xffc9daff,0xffcdddff,0xffd6e3ff,0xffe2ebff,0xffebf1ff,0xfff2f6ff,
2231 0xffeff3ff,0xffeff2fe,0xffb0c2fc,0x84495376,0x35000000,0x755a6397,0xff6fa094,0xff38c13d,0xff00bb00,0xff1dd120,0xff48dd50,0xff8bdd9f,0xffdbe5ff,0xffd7e2ff,
2232 0xffd3dfff,0xffd0dcff,0xffccdaff,0xff7d95b9,0xfa03df05,0xe500ec00,0x1a008a00,0x0,0x8693a9f4,0xffcbd7fe,0xffccdcff,0xffdbe6ff,0xffe8efff,0xfff2f6ff,
2233 0xfff5f8ff,0xfff6f9ff,0xfff7f9ff,0xfff8fbff,0xfff2f5ff,0xffecf0fe,0xffd8e0fc,0xf5899ce4,0xcc7786c6,0xff6c7eaa,0xff87ca93,0xffd6dee5,0xffeceffa,0xffc1e4cf,
2234 0xff66db70,0xff0ee810,0xff2ae830,0xffb2e4cf,0xffd7e2ff,0xffd3dfff,0xffd0dcff,0xff8a90cd,0xa0205736,0xff00e100,0xa300dc00,0x0,0x588ca1e8,0xffbfcdfe,
2235 0xfff2f6ff,0xfff2f6ff,0xfff3f7ff,0xfff3f7ff,0xfff4f8ff,0xfff7f9ff,0xfff8fbff,0xfff9fbff,0xfff8fbff,0xffecf0fe,0xffe0e3f3,0xffa3a4b1,0xff8c8b94,0xff959399,
2236 0xffa8a7ae,0xffcfd0d7,0xfff8fafe,0xfff4f7ff,0xffeef3ff,0xffdaecef,0xff48e450,0xff00f400,0xff89eb9f,0xffd7e2ff,0xffcdd7ff,0xff7a81bd,0x84303450,0x95009600,
2237 0xff00de00,0x2000cb00,0x277e91d1,0xffa5b9fd,0xfff5f8ff,0xfff2f6ff,0xfff2f6ff,0xfff5f8ff,0xfff7f9ff,0xfff8faff,0xfff8faff,0xfff9fbff,0xfff9fbff,0xfff5f9ff,
2238 0xff7c7981,0xff746f74,0xff6b666b,0xff696469,0xff716d71,0xff797479,0xffa39fa4,0xffdedee2,0xfff4f7ff,0xffeef3ff,0xffe9efff,0xff72e77f,0xff00fc00,0xff96ecaf,
2239 0xffcbd3ff,0xff646da8,0x59010101,0x33002400,0xef00c300,0x9f00c300,0x4000000,0xe396acf8,0xffecf0fe,0xfff3f7ff,0xfff5f9ff,0xfff6f9ff,0xfff7f9ff,0xfff7f9ff,
2240 0xfff8faff,0xfff8faff,0xfff9fbff,0xff9498a1,0xff757075,0xff696469,0xff696469,0xff696469,0xff696469,0xff696469,0xff6d686d,0xff847f84,0xffc8c6ca,0xfff4f7ff,
2241 0xffeef3ff,0xffe9efff,0xff64df70,0xff0ef110,0xff92b4c7,0xd6535a8a,0x4b000000,0x1c000000,0x8100a700,0xdf00bf00,0x1000000,0x8b8ca1e8,0xffc3cffc,0xfff6f8ff,
2242 0xfff5f9ff,0xfff6f9ff,0xfff6f9ff,0xfff7f9ff,0xfff7f9ff,0xfff8faff,0xffeef3ff,0xff828692,0xff787478,0xff696469,0xff696469,0xff696469,0xff696469,0xff696469,
2243 0xff696469,0xff696469,0xff837f83,0xffc1c0c3,0xfff4f7ff,0xffeef3ff,0xffe9efff,0xff37d440,0xff28c13e,0xa33c4163,0x3e000000,0x13000000,0x30006400,0xff00bc00,
2244 0x0,0x1b5a6795,0xf29bb0f7,0xfff1f4ff,0xfff5f8ff,0xfff5f9ff,0xfff6f9ff,0xfff6f9ff,0xfff7f9ff,0xfff3f6ff,0xffdce7ff,0xff767c88,0xff7c787c,0xff696469,
2245 0xff6a656a,0xff7c787c,0xff8e8a8e,0xff7f7b7f,0xff6a656a,0xff6a656a,0xff6c676c,0xff848084,0xffc7c6c9,0xfff4f7ff,0xffeff3ff,0xff96b7c3,0xff00cf00,0x73013601,
2246 0x2e000000,0xa000000,0x0,0xff00a500,0x0,0x4000000,0x8e879be1,0xffb4c3f9,0xfff6f8ff,0xfff5f8ff,0xfff5f9ff,0xfff6f9ff,0xfff6f9ff,0xffdee9ff,
2247 0xffd7e4ff,0xff8d96a8,0xff666366,0xff6d686d,0xff645f64,0xff5a545a,0xff7f7b7f,0xffbab7ba,0xffb0adb0,0xff7f7b7f,0xff797579,0xff7b777b,0xffa19da1,0xffdedee1,
2248 0xffe4e7ff,0xff7e86c2,0xe90ba612,0x98008800,0x1c000000,0x3000000,0x0,0xff009c00,0x0,0x0,0x1c56628e,0xd88ea3eb,0xffd1d9fb,0xfff5f8ff,
2249 0xfff5f8ff,0xfff5f9ff,0xffe6eeff,0xffd3e1ff,0xffd5e3ff,0xffbfcef1,0xff5a585e,0xff848084,0xff646064,0xff433d43,0xff585358,0xff908b90,0xffbfbcbf,0xffc6c4c6,
2250 0xff888488,0xff8a868a,0xff8c888c,0xffb8b5b9,0xff9ba1d6,0xde5b6498,0xa2017301,0x98009c00,0xc000000,0x0,0x20008900,0xbf00a100,0x0,0x0,
2251 0x4000000,0x456775aa,0xf390a4ee,0xffdbe1fb,0xfff5f8ff,0xffeef3ff,0xffd0dfff,0xffd2e0ff,0xffd1e0ff,0xffc2d5ff,0xff5e5d6b,0xff878387,0xff7a757a,0xff474147,
2252 0xff433d43,0xff595359,0xff827d82,0xffb6b4b6,0xffb3b0b3,0xff9a969a,0xff9c989c,0xffa7a4a7,0xfb9296b5,0x7113151d,0x6f006900,0x8b00a200,0x3000000,0x0,
2253 0x7000ac00,0x30009500,0x0,0x0,0x0,0x8000000,0x4c5c6998,0xf48da2ea,0xffcdd5f8,0xffdbe6ff,0xffceddff,0xffd0dfff,0xffc6d8ff,0xffbfd3ff,
2254 0xff6d6d7a,0xff544f54,0xffa19ea1,0xff5b565b,0xff433d43,0xff433d43,0xff565056,0xff868186,0xffb6b4b6,0xffa9a6a9,0xffaba8ab,0xffadaaad,0xf7b9b8ba,0x48000000,
2255 0x75008500,0x64009a00,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1000000,0xa000000,0x4e596593,0xe8889ce3,0xffabb9f0,
2256 0xffdae2fe,0xffd2dfff,0xffbcd2ff,0xffbcd1ff,0xff808395,0xff504b50,0xff6f6b6f,0xffa4a1a4,0xff585358,0xff453f45,0xff474147,0xff5e595e,0xff918e91,0xffb8b5b8,
2257 0xffbab8ba,0xffbcb9bc,0xffc0bec0,0x4f777577,0xa3009a00,0x1000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
2258 0x1000000,0xa000000,0x322e344c,0xac7485c2,0xff91a2e7,0xffb3bdef,0xffccd6fb,0xffcad8ff,0xffc2cdea,0xff625e64,0xff4e484e,0xff7b767b,0xffb8b5b8,0xff726e72,
2259 0xff4e484e,0xff4f4a4f,0xff837f83,0xffc7c5c7,0xffc9c7c9,0xffcbc9cb,0xffc7c5c7,0x48b1afb1,0x1000000,0x0,0x0,0x0,0x0,0x0,
2260 0x0,0x0,0x0,0x0,0x0,0x1000000,0x8000000,0x1b000000,0x4e39415e,0xa66978af,0xea8091d5,0xff90a0e0,0xffa0ace5,0xff9395b7,
2261 0xff635d63,0xff635e63,0xff7f7b7f,0xffcdcbcd,0xffc7c5c7,0xffb5b2b5,0xffd4d2d4,0xffd6d5d6,0xffd8d7d8,0xffdbd9db,0xffcdcbcd,0x31c5c3c5,0x0,0x0,
2262 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4000000,0xf000000,0x20000000,
2263 0x33000000,0x5b2f354d,0x7a444d72,0x9f5a6696,0xbb626990,0xf36e6a73,0xff777277,0xff716c71,0xffb2afb2,0xffe1e0e1,0xffe0dfe0,0xffe3e2e3,0xffe2e1e2,0xffd8d6d8,
2264 0xcfcdcbcd,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
2265 0x0,0x0,0x1000000,0x5000000,0xc000000,0x16000000,0x1f000000,0x27000000,0x2e000000,0x32000000,0x634c484c,0x5d514e51,0x735d595d,0xd37f7c7f,
2266 0xffa19ea1,0xffb9b7b9,0xffbcb9bc,0xbfb1aeb1,0x10d1cfd1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
2267 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1000000,0x3000000,0x7000000,0xa000000,0xc000000,
2268 0xa000000,0x7000000,0x3000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
2269 0x0,0x0
2270};
2271
2272static const QRgb Sound_data[] = {
2273 0xffffff,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3c00c600,0xaf00cc00,0xe600d400,0xf600dc00,0xff00e400,
2274 0xff00ec00,0xff00f400,0xff00fc00,0xff00f800,0xff00ee00,0xfe00e300,0xef00d800,0xc000ce00,0x5700c400,0x0,0x0,0x0,0x0,0x0,
2275 0x0,0x0,0x0,0x0,0xffffff,0xffffff,0x0,0x0,0x0,0x0,0x0,0x9c00b500,0xef00bd00,0xff00c400,
2276 0xff00cc00,0xff00d400,0xff00dc00,0xff00d400,0xff00d900,0xff00d700,0xff00db00,0xff00dd00,0xff00d300,0xff00d600,0xff00d800,0xff00ce00,0xff00c300,0xfc00b701,
2277 0xc200ac01,0x23009106,0x0,0x0,0x0,0x0,0x0,0x0,0xffffff,0xffffff,0x0,0x0,0x0,0x5700a600,
2278 0xf600ad00,0xff00b400,0xff00bc00,0xff00bd00,0xf100b303,0xcd009c06,0x9d007808,0x6000350d,0x4300000e,0x4300000e,0x4300000e,0x4300000e,0x4300000e,0x8d006400,
2279 0xb4007302,0xe2009b00,0xfc00a900,0xff00b300,0xff00ae00,0xfe00a200,0xa9008904,0x4000030,0x0,0x0,0x0,0x0,0xffffff,0xffffff,
2280 0x0,0x0,0x9c009e00,0xff00a400,0xff00aa00,0xfd00a401,0xc3008108,0x67003110,0x3b000008,0x2f000000,0x26000000,0x1a000000,0xb000000,0x4000000,
2281 0x4000000,0x4000000,0x4000000,0x4000000,0x16000000,0x20000000,0x2c000000,0x8c005400,0xeb008900,0xff009b00,0xff009800,0xe7008303,0xf00002d,0x0,
2282 0x0,0x0,0xffffff,0xffffff,0x0,0x9c009600,0xff009c00,0xfe009c00,0xc3007108,0x51000016,0x35000004,0x24000000,0xd000000,0x2000000,
2283 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x16000000,0x8a005d00,
2284 0xf8008500,0xff008e00,0xea007704,0x1700002a,0x0,0x0,0xffffff,0xffffff,0x3c008e00,0xff009400,0xf9008d02,0x85003511,0x3e00000b,0x24000000,
2285 0x7000000,0x1000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
2286 0x0,0x0,0x0,0x0,0x16000000,0xe2007600,0xff008300,0xce006307,0x8000018,0x0,0xffffff,0xffffff,0xdb008d00,0xf8008402,
2287 0x73001c16,0x35000004,0x15000000,0x3000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
2288 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe1007000,0xfd007601,0x4e00001c,0x1000000,
2289 0xffffff,0xffffff,0xff008900,0x97003c0f,0x3a000008,0x10000000,0x1000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
2290 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
2291 0x1f006000,0xfc007400,0xa900460c,0x9000000,0xffffff,0xffffff,0xe2007803,0x51000016,0x1a000000,0x2000000,0x0,0x0,0x0,0x0,
2292 0x0,0x0,0x5700d500,0x9c00de00,0xc000e800,0xc000f200,0xc000fc00,0xc000f700,0xc000e900,0x7000dc00,0x1f00d400,0x0,0x0,0x0,
2293 0x0,0x0,0x0,0x0,0x0,0x9e006f00,0xa900460c,0x1e000000,0xffffff,0xffffff,0x93006505,0x35000009,0x7000000,0x0,
2294 0x0,0x0,0x0,0x7000b800,0xdb00c100,0xfe00ca00,0xff00d400,0xff00de00,0xff00e800,0xff00f200,0xff00fc00,0xff00f700,0xff00e900,0xff00dc00,
2295 0xff00cf00,0xf600c200,0xaf00b500,0x23009606,0x0,0x0,0x0,0x0,0x0,0x1f006700,0x90005407,0x1e000000,0xffffff,0xffffff,
2296 0x4000030,0x1d000000,0x2000000,0x0,0x0,0x3c00a500,0xef00ad00,0xff00b600,0xff00bf00,0xf900bd02,0xe300ac05,0xbd009605,0x9a007307,0x97006f05,
2297 0x97006905,0x97006205,0x97005d05,0xcd00a000,0xed00a801,0xfe00a900,0xff00b500,0xfe00a600,0xb8009103,0xa000030,0x0,0x0,0x0,0x0,
2298 0xa000013,0x1a000000,0xffffff,0xffffff,0x0,0x1000000,0x0,0x0,0x87009a00,0xfe00a200,0xff00a800,0xea009a04,0x8300490f,0x45000010,
2299 0x32000000,0x2c000000,0x23000000,0x1a000000,0x19000000,0x19000000,0x19000000,0x19000000,0x26000000,0x2e000000,0xb0007200,0xfc009300,0xff009a00,0xe7008303,
2300 0x32005011,0x0,0x0,0x0,0x0,0x1000000,0xffffff,0xffffff,0x0,0x0,0x0,0x57009100,0xff009800,0xf9009102,
2301 0x85003b11,0x4300000e,0x2e000000,0x14000000,0x5000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
2302 0x0,0x1f000000,0xbf006e00,0xff008700,0xea007504,0x1d000021,0x0,0x0,0x0,0x0,0xffffff,0xffffff,0x0,0x0,
2303 0x0,0xf6008f00,0xe7007e04,0x58000019,0x35000004,0x15000000,0x4000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
2304 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x6e005600,0xfe007d00,0xa6004c0b,0x8000018,0x0,0x0,0x0,
2305 0xffffff,0xffffff,0x0,0x0,0x57008b00,0xf8008202,0x72001a16,0x2e000000,0x9000000,0x1000000,0x0,0x0,0x0,0x70bababa,
2306 0x70bcbcbc,0x70bebebe,0x70c0c0c0,0x70c3c3c3,0x70c5c5c5,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xb4006d00,0xea006904,
2307 0x35000018,0x1000000,0x0,0x0,0xffffff,0xffffff,0x0,0x0,0x70008b00,0xa6005b09,0x3a000008,0x10000000,0x1fb4b4b4,0x9cababab,
2308 0xe69f9f9f,0xfb959595,0xff8f8f8f,0xff959595,0xff9b9b9b,0xffa2a2a2,0xffa7a7a7,0xffacacac,0xffafafaf,0xffb1b1b1,0xfbb8b8b8,0xe6c0c0c0,0x9cc9c9c9,0x23b4b4ba,
2309 0x0,0x0,0x0,0xe3006c01,0x4c000017,0x5000000,0x0,0x0,0xffffff,0xffffff,0x0,0x0,0x57007400,0x2b00001a,
2310 0x547d7d7d,0xdb999999,0xff7d7d7d,0xff7f7f7f,0xff767676,0xff6e6e6e,0xff686868,0xff626262,0xff626262,0xff636363,0xff6a6a6a,0xff737373,0xff7b7b7b,0xff8a8a8a,
2311 0xff9c9c9c,0xffababab,0xffb8b8b8,0xffbcbcbc,0xe0c1c1c3,0x45b5b5bb,0x0,0x70006e00,0x40000011,0x7000000,0x0,0x0,0xffffff,0xffffff,
2312 0x0,0x0,0x0,0xc4969696,0xff747474,0xff797979,0xff6b6b6b,0xff626262,0xff626262,0xff626262,0xff626262,0xff626262,0xff626262,0xff686868,
2313 0xff707070,0xff797979,0xff818181,0xff8a8a8a,0xff929292,0xff9a9a9a,0xffa3a3a3,0xffb0b0b0,0xffbababa,0xffc0c0c0,0xcbbcbcbf,0xa000030,0x16000000,0x5000000,
2314 0x0,0x0,0xffffff,0xffffff,0x0,0x0,0xdb8f8f8f,0xff737373,0xff6c6c6c,0xff626262,0xff626262,0xff626262,0xff626262,0xff626262,
2315 0xff626262,0xff626262,0xff666666,0xff6e6e6e,0xff777777,0xff7f7f7f,0xff888888,0xff909090,0xff989898,0xffa1a1a1,0xffa9a9a9,0xffb1b1b1,0xffb9b9b9,0xffbfbfbf,
2316 0xffc1c1c1,0xe7bcbcbf,0x1000002a,0x0,0x0,0x0,0xffffff,0xffffff,0x0,0x9c9c9c9c,0xff6f6f6f,0xff696969,0xff626262,0xff626262,
2317 0xff626262,0xff626262,0xff626262,0xff626262,0xff626262,0xff646464,0xff6c6c6c,0xff757575,0xff7d7d7d,0xff868686,0xff8e8e8e,0xff969696,0xff9f9f9f,0xffa7a7a7,
2318 0xffb0b0b0,0xffb7b7b7,0xffbfbfbf,0xffc8c8c8,0xffcbcbcb,0xffc3c3c3,0xc1a0a0a7,0x700001b,0x0,0x0,0xffffff,0xffffff,0x0,0xf67b7b7b,
2319 0xff717171,0xff626262,0xff626262,0xff626262,0xff626262,0xff626262,0xff626262,0xff626262,0xff909090,0xffc0c0c0,0xffd7d7d7,0xffe7e7e7,0xffeeeeee,0xffdcdcdc,
2320 0xffc7c7c7,0xffb4b4b4,0xffa5a5a5,0xffaeaeae,0xffb5b5b5,0xffbdbdbd,0xffc6c6c6,0xffcecece,0xffd6d6d6,0xffcacaca,0xf9c6c6c8,0x40000019,0x1000000,0x0,
2321 0xffffff,0xffffff,0x0,0xff646464,0xff747474,0xff626262,0xff626262,0xff626262,0xff626262,0xff626262,0xff737373,0xffaaaaaa,0xffc1c1c1,0xffc6c6c6,
2322 0xffbdbdbd,0xffb4b4b4,0xffaaaaaa,0xffb9b9b9,0xffd7d7d7,0xffcfcfcf,0xffbababa,0xffb5b5b5,0xffbbbbbb,0xffc4c4c4,0xffcccccc,0xffd4d4d4,0xffdcdcdc,0xffcccccc,
2323 0xffcecece,0x5e00001c,0x7000000,0x0,0xffffff,0xffffff,0x0,0xff5f5f5f,0xff727272,0xff626262,0xff626262,0xff626262,0xff626262,0xff656565,
2324 0xff929292,0xff787878,0xff868686,0xff919191,0xff8b8b8b,0xff808080,0xff787878,0xff787878,0xff7b7b7b,0xff9c9c9c,0xffa1a1a1,0xff989898,0xffbfbfbf,0xffcacaca,
2325 0xffd2d2d2,0xffdadada,0xffe3e3e3,0xffd0d0d0,0xffc2c2c2,0x5f00001c,0xb000000,0x0,0xffffff,0xffffff,0x0,0xfe4d4d4d,0xff747474,0xff646464,
2326 0xff626262,0xff626262,0xff626262,0xff686868,0xff656565,0xff505050,0xff505050,0xff505050,0xff505050,0xff505050,0xff505050,0xff505050,0xff505050,0xff5d5d5d,
2327 0xff6a6a6a,0xff656565,0xffb5b5b5,0xffd0d0d0,0xffd8d8d8,0xffe1e1e1,0xffe6e6e6,0xffcccccc,0xf9acacad,0x5a00001a,0xb000000,0x0,0xffffff,0xffffff,
2328 0x0,0xdb3c3c3c,0xff686868,0xff757575,0xff626262,0xff626262,0xff626262,0xff616161,0xff505050,0xff373737,0xff353535,0xff353535,0xff353535,0xff353535,
2329 0xff353535,0xff373737,0xff3e3e3e,0xff474747,0xff3d3d3d,0xff505050,0xffc0c0c0,0xffd6d6d6,0xffdfdfdf,0xffe5e5e5,0xffd4d4d4,0xffc2c2c2,0xd1606068,0x48000012,
2330 0xa000000,0x0,0xffffff,0xffffff,0x0,0x1f424242,0xfc2a2a2a,0xff696969,0xff7a7a7a,0xff6b6b6b,0xff626262,0xff686868,0xff5c5c5c,0xff494949,
2331 0xff3d3d3d,0xff353535,0xff353535,0xff353535,0xff353535,0xff3a3a3a,0xff393939,0xff3d3d3d,0xff4a4a4a,0xff9e9e9e,0xffd4d4d4,0xffdddddd,0xffe1e1e1,0xffd9d9d9,
2332 0xffc5c5c5,0xf9767678,0x6100001d,0x27000000,0x5000000,0x0,0xffffff,0xffffff,0x0,0x0,0x5b3b3b3b,0xf8252525,0xff4c4c4c,0xff838383,
2333 0xff7f7f7f,0xff787878,0xff7b7b7b,0xff737373,0xff606060,0xff4c4c4c,0xff474747,0xff474747,0xff474747,0xff474747,0xff4c4c4c,0xff727272,0xffacacac,0xffd6d6d6,
2334 0xffe1e1e1,0xffe0e0e0,0xffd5d5d5,0xffa3a3a3,0xf66f6f72,0x731b1b31,0x35000004,0xc000000,0x0,0x0,0xffffff,0xffffff,0x0,0x0,
2335 0x0,0x2e2f2f2f,0xcc343434,0xff242424,0xff535353,0xff818181,0xff959595,0xff999999,0xff9f9f9f,0xffa2a2a2,0xff989898,0xffa0a0a0,0xffa7a7a7,0xffaeaeae,
2336 0xffc9c9c9,0xffdadada,0xffdcdcdc,0xffdcdcdc,0xffc1c1c1,0xff9a9a9a,0xfe727273,0xd158585f,0x53000017,0x34000004,0x10000000,0x1000000,0x0,0x0,
2337 0xffffff,0xffffff,0x0,0x0,0x0,0x0,0x6000000,0x40252525,0xbf3c3c3c,0xf9313131,0xff373737,0xff515151,0xff6b6b6b,0xff7f7f7f,
2338 0xff939393,0xff989898,0xff9e9e9e,0xffa4a4a4,0xff949494,0xff929292,0xff828282,0xff6a6a6a,0xf6646466,0xc352525a,0x6a1f1f31,0x3b000008,0x27000000,0x8000000,
2339 0x1000000,0x0,0x0,0x0,0xffffff,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x6000000,0x57262626,
2340 0xff393939,0xff505050,0xff444444,0xff3e3e3e,0xff404040,0xff454545,0xff4d4d4d,0xff565656,0xff696969,0xff7e7e7e,0xff737373,0xf95f5f60,0x5f00001c,0x31000000,
2341 0x24000000,0xe000000,0x2000000,0x0,0x0,0x0,0x0,0x0,0xffffff,0xffffff,0x0,0x0,0x0,0x0,
2342 0x0,0x0,0x0,0x0,0xa13d3d3d,0xfe444444,0xff4b4b4b,0xff464646,0xff434343,0xff444444,0xff535353,0xff646464,0xff737373,0xff6e6e6e,
2343 0xf9646466,0x99373745,0x3a000008,0xb000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffffff,0xffffff,
2344 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3a272727,0xbf474747,0xeb515151,0xf6535356,0xff5e5e5e,
2345 0xfe626262,0xf6616163,0xea5f5f63,0xb04f4f56,0x4d000015,0x35000004,0x19000000,0x2000000,0x0,0x0,0x0,0x0,0x0,0x0,
2346 0x0,0x0
2347};
2348
2349static const QRgb Spreadsheet_data[] = {
2350 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,
2351 0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xde9daac1,0x0,0x0,0x0,0x0,0x0,
2352 0x0,0x0,0x0,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,0xfffbffff,0xffffffff,
2353 0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffeffff,0xfff5faff,0xffedf3fe,0xffe4ebf9,0xffd8e1f2,0xffc2d0e9,0xe0a7b2c4,
2354 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,
2355 0x0,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfff8fdff,0xfff2f7ff,0xffeaf1fd,
2356 0xffe1e9f7,0xffd5dff0,0xffbfcce3,0xffebf4ff,0xe6a2aec1,0x0,0x0,0x0,0x0,0x0,0x0,0xffffff,0x0,0x0,
2357 0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,0xfffcffff,0xffe5e5e5,0xffdcdcdc,0xffdcdcdc,0xffdcdcdc,0xffdcdcdc,0xffdcdcdc,0xffdcdcdc,
2358 0xffdcdcdc,0xffd8dcdc,0xffc6cace,0xffedf4fe,0xffe6edfa,0xffd9e2f2,0xffc2cee5,0xfff0f6ff,0xffdce7f9,0xe3a1adc3,0x0,0x0,0x0,0x0,
2359 0x0,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,0xfffcffff,0xffdcdcdc,0xffffffff,0xffffffff,
2360 0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffeffff,0xffc4c7ca,0xfff1f7ff,0xffe9effc,0xffdce5f4,0xffc4d0e6,0xffffffff,0xffe8eefb,0xffdbe5f9,
2361 0xe8a4afc5,0x0,0x0,0x0,0x0,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,
2362 0xfffcffff,0xffdcdcdc,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffc5c9ca,0xfff3f9ff,0xffebf1fd,0xffdfe7f6,
2363 0xffc6d1e5,0xffffffff,0xfffdffff,0xffecf2fd,0xffdee9fb,0xe3a4b0c4,0x0,0x0,0x0,0xffffff,0x0,0x0,0x0,0x0,
2364 0x0,0x0,0x0,0xffc4d0e5,0xfffcffff,0xffdcdcdc,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,
2365 0xffc7caca,0xfff5f9ff,0xffedf3fe,0xffe3ebf9,0xffbecbe1,0xfff3f5fb,0xffecf2f9,0xffe4ebf7,0xffd8e1f0,0xffd0dcf1,0xe99eabc1,0x0,0x0,0xffffff,
2366 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,0xfffcffff,0xffdcdcdc,0xffdcdcdc,0xffdcdcdc,0xffdcdcdc,0xffdcdcdc,
2367 0xffdcdcdc,0xffdcdcdc,0xffdcdcdc,0xffdcdcdc,0xffbfc1c1,0xffc3c6ca,0xffbec2ca,0xffb7bdc7,0xff9ea8b7,0xff78869c,0xff78869c,0xff78869c,0xff78869c,0xff808fa6,
2368 0xff98a9c5,0xff98a9c5,0x0,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,0xfffcffff,0xffdcdcdc,
2369 0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffc3c8cc,0xffccd4e0,0xffc6d0e0,0xffc1cbdf,0xffbcc8dc,0xffb9c5d9,
2370 0xffb1bdd4,0xff9faec8,0xff96a5c2,0xff93a0b7,0xffaebedb,0xff8495b1,0x33000000,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,
2371 0x0,0xffc4d0e5,0xfffcffff,0xffdcdcdc,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffc5c8cc,0xffccd5e0,
2372 0xffc7d2e0,0xffc2cddf,0xffbcc8dc,0xffb7c3d8,0xffa8b4ce,0xff9caac7,0xff99a9c5,0xff97a3b9,0xffb5c5e0,0xff8495b1,0x33000000,0xffffff,0x0,0x0,
2373 0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,0xfffcffff,0xffdcdcdc,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,
2374 0xffd1d7e0,0xffd1d7e0,0xffc5c8cc,0xffcdd7e0,0xffc7d2e0,0xffc4cfe0,0xffbec9dd,0xffafbcd2,0xffa3b2cc,0xffa2b0ca,0xff9fafc9,0xff9da8bd,0xffbdcbe5,0xff8495b1,
2375 0x33000000,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,0xfffcffff,0xffdcdcdc,0xffc5c8cc,0xffc5c8cc,
2376 0xffc5c8cc,0xffc5c8cc,0xffc5c8cc,0xffc5c8cc,0xffc5c8cc,0xffc5c8cc,0xffbfc0c2,0xffc3c8cc,0xffbdc4cc,0xffb4bcca,0xffa8b1c2,0xffa1abbe,0xff9ea9bb,0xff9ba6bb,
2377 0xff9aa4b9,0xff9fa9bb,0xffc3d0e8,0xff8495b1,0x33000000,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,
2378 0xfffcffff,0xffdcdcdc,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffdadcdc,0xfff5faff,0xffeaf0fd,0xffdce5f5,
2379 0xffd6e0f1,0xffd3ddee,0xffd0dbed,0xffced9ec,0xffccd7ea,0xffafb9ca,0xffc8d5ec,0xff8495b1,0x33000000,0xffffff,0x0,0x0,0x0,0x0,
2380 0x0,0x506ab5e6,0x8f52b2ec,0xff66baec,0xff60c5f8,0xff1bb1f9,0xff3abdf9,0xff54cafb,0xff50ceff,0xff7fdeff,0xffcff3ff,0xffffffff,0xffffffff,0xfffcffff,
2381 0xffd1d6dc,0xffe9effc,0xffdfe8f6,0xffdbe4f3,0xffdae3f3,0xffd7e0f1,0xffd5dff0,0xffd2dcef,0xffd0dbed,0xffb3bdcc,0xffcedaf0,0xff8495b1,0x33000000,0xffffff,
2382 0x0,0x0,0x106ab0e6,0x806ab2e6,0xef40aaf0,0xff21a7f7,0xff00a4ff,0xff00a8ff,0xff00acff,0xff00afff,0xff00b3ff,0xff00b7ff,0xff00bbff,0xff00beff,
2383 0xff00c2ff,0xff30d1ff,0xffbceffc,0xfff4f9ff,0xffc9cfd9,0xffe4ecf9,0xffe1e9f7,0xffdfe7f6,0xffdde5f4,0xffdbe4f3,0xffd9e2f3,0xffd7e1f2,0xffd4def0,0xffb7bece,
2384 0xffd2def2,0xff8495b1,0x33000000,0xffffff,0x0,0x306aafe6,0xdf53aceb,0xff14a0fa,0xff009fff,0xff00a3ff,0xff00a7ff,0xff00aaff,0xff00aeff,0xff00b2ff,
2385 0xff00b6ff,0xff00b9ff,0xff00bdff,0xff00c1ff,0xff00c5ff,0xff00c8ff,0xff14ccfa,0xff74d0e7,0xffb2bec9,0xffc6ccd7,0xffc5ccd7,0xffc3cad6,0xffc2c9d5,0xffbfc6d3,
2386 0xffbec5d2,0xffbdc4d1,0xffbac2d0,0xffb2bac7,0xffd5e0f4,0xff8495b1,0x33000000,0xffffff,0x3047a6ee,0xef55abeb,0xff079bfd,0xff009eff,0xff00a1ff,0xff00a5ff,
2387 0xff00a9ff,0xff00adff,0xff00b0ff,0xff00b4ff,0xff00b8ff,0xff00bcff,0xff00c0ff,0xff00c3ff,0xff00c7ff,0xff00cbff,0xff00cfff,0xff07d2fd,0xff7cd2e5,0xffeaf1fc,
2388 0xffe7eefb,0xffe4ecf9,0xffe2eaf8,0xffe1e9f8,0xffdee6f5,0xffdde6f4,0xffdce5f4,0xffbcc4d1,0xffd9e3f6,0xff8495b1,0x33000000,0xffffff,0xbf6aafe6,0xff0d9cfc,
2389 0xff009cff,0xff00a0ff,0xff00a4ff,0xff00a8ff,0xff00abff,0xff00afff,0xff00b3ff,0xff00b7ff,0xff00bbff,0xff00beff,0xff00c2ff,0xff00c6ff,0xff00caff,0xff00cdff,
2390 0xff00d1ff,0xff00d5ff,0xff28d7f6,0xffbbe7f4,0xffe9f0fc,0xffe7eefb,0xffe4ebf9,0xffe4ebf8,0xffe2eaf8,0xffdfe7f7,0xffdee6f5,0xffbec6d2,0xffdbe5f7,0xff8495b1,
2391 0x33000000,0xffffff,0xff42a7ef,0xff009bff,0xff009fff,0xff00a3ff,0xff00a6ff,0xff00aaff,0xff00aeff,0xff00b2ff,0xff00b5ff,0xff00b9ff,0xff00bdff,0xff00c1ff,
2392 0xff00c4ff,0xff00c8ff,0xff00ccff,0xff00d0ff,0xff00d4ff,0xff00d7ff,0xff00dbff,0xff93dfec,0xffebf1fd,0xffe8effc,0xffe7eefb,0xffe5ecf9,0xffe3ebf9,0xffe2eaf8,
2393 0xffe0e7f6,0xffc0c7d4,0xffdce6f8,0xff8495b1,0x33000000,0xffffff,0xff3ca7f1,0xff009dff,0xff00a1ff,0xff00a5ff,0xff00a9ff,0xff00adff,0xff00b0ff,0xff00b4ff,
2394 0xff00b8ff,0xff00d0af,0xff9f7751,0xffbf5d53,0xffbf5951,0xffbf554f,0xffbf524d,0xffbf4e4b,0xffbf4b49,0xffbf4747,0xffbf4345,0xffd19596,0xffcad1db,0xffcacfd9,
2395 0xffc8ced8,0xffc6ccd8,0xffc4cbd6,0xffc3c9d5,0xffc1c8d5,0xffb9c0cb,0xffdee8fa,0xff8495b1,0x33000000,0xffffff,0xff5ab0e8,0xff00a0ff,0xff00a4ff,0xff00a8ff,
2396 0xff00abff,0xff00afff,0xff00b3ff,0xff00b7ff,0xff00baff,0xff00ee40,0xff40d208,0xffff4d21,0xffff471f,0xffff411c,0xffff3b19,0xffff3517,0xffff2e14,0xffff2812,
2397 0xfffd3523,0xffde8179,0xffc4cee0,0xffc1cbdf,0xffbfc9de,0xffbdc8dc,0xffbbc7db,0xffbbc6db,0xffb8c4d9,0xffb6becd,0xffdfe9fa,0xff8495b1,0x33000000,0xffffff,
2398 0xff53acd7,0xff2eabf4,0xff00a6ff,0xff00aaff,0xff00aeff,0xff00b1ff,0xff00b5ff,0xff00b9ff,0xff00c5df,0xff00fe00,0xff00fe00,0xffbf871f,0xffff5c28,0xffff5625,
2399 0xffff4f22,0xffff4920,0xffff431d,0xfffe411f,0xfff86a53,0xffb77064,0xffc3cddf,0xffc1ccdf,0xffbfcade,0xffbec9dc,0xffbdc8dc,0xffbbc6da,0xffbac5da,0xffb7bfce,
2400 0xffdfe9fa,0xff8495b1,0x33000000,0xffffff,0xcc3495b9,0xff53b0e2,0xff28aff6,0xff00acff,0xff00b0ff,0xff00b4ff,0xff00b8ff,0xff00bbff,0xff00d790,0xff00f802,
2401 0xff00f702,0xff20e308,0xffff7031,0xffff6a2e,0xffff642b,0xffff5e29,0xfffe5b2b,0xfff87f5f,0xffbb5c45,0xffa38486,0xffc4cfe0,0xffc2ccdf,0xffbfcade,0xffbec9de,
2402 0xffbdc8dc,0xffbbc7db,0xffb9c5d9,0xffb8c0ce,0xffe0e9fb,0xff8495b1,0x33000000,0xffffff,0x5c236a91,0xff3097b8,0xff4faad0,0xff35b6f3,0xff00b3ff,0xff00b6ff,
2403 0xff00baff,0xff00beff,0xff00d137,0xff00d50a,0xff00d30a,0xff00d10a,0xff80a722,0xffff7f37,0xffff7934,0xfffc814a,0xfff1906b,0xffb15b41,0xff8b4d40,0xff9eabb9,
2404 0xffb8bfcc,0xffb6becb,0xffb4bcca,0xffb3bac8,0xffb2bac8,0xffafb7c7,0xffaeb7c6,0xffb6bdc9,0xffe0e9fb,0xff8495b1,0x33000000,0xffffff,0xd000030,0x891f6788,
2405 0xff288fae,0xff2e93b1,0xff41aad1,0xff2ab9f0,0xff0dbefc,0xff00bde2,0xff00b112,0xff00af12,0xff00ad13,0xff07ad18,0xff31ae2f,0xfff1a160,0xffed9a6a,0xffc77453,
2406 0xff95452f,0xff8f5548,0xffa298a0,0xffedf3fd,0xffeff5ff,0xffebf2fd,0xffeaf1fd,0xffe7eefa,0xffe6edfa,0xffe3eaf8,0xffe2eaf8,0xffc3cad6,0xffdfe9fa,0xff8495b1,
2407 0x33000000,0xffffff,0x0,0x16000029,0x6a103f5f,0xd61e7a96,0xff1d85a0,0xff1a829c,0xff208ca8,0xff279797,0xff3c9d40,0xff429c48,0xff489b51,0xff41974f,
2408 0xff2f8d48,0xff8a623e,0xff97432d,0xff893d29,0xff9e7773,0xffc4c3d0,0xffc8cdd5,0xfff0f6ff,0xffedf3fe,0xffebf2fd,0xffe9f0fc,0xffe7eefa,0xffe6edfa,0xffe3ebf8,
2409 0xffe2eaf8,0xffc2c9d5,0xffe0e9fb,0xff8495b1,0x33000000,0xffffff,0x0,0x0,0xe000022,0x35000022,0x740b3551,0xb812627c,0xe1117189,0xff1d807b,
2410 0xff3d9540,0xff2f8e3c,0xff218739,0xff147f36,0xff0b7a34,0xff866e58,0xffab8c8a,0xffb2b8c4,0xffd5dae5,0xffeff5fd,0xffd0d5dc,0xfff0f6ff,0xffedf3fe,0xffeaf1fd,
2411 0xffe9f0fc,0xffe6edfa,0xffe4ecf9,0xffe2eaf8,0xffe2eaf8,0xffc2c8d5,0xffe0eafc,0xff8495b1,0x33000000,0xffffff,0x0,0x0,0x0,0x2000000,
2412 0x1200001b,0x2d00001f,0x4200001c,0xff9da6c1,0xffafc1ba,0xff94ac9f,0xff8ba599,0xff8ea6a1,0xffaeb2bc,0xffb6bac2,0xffc3c6cd,0xffcdd1d8,0xffd2d6dc,0xffd0d6dc,
2413 0xffc7ccd3,0xffcfd4dc,0xffccd1db,0xffcad0da,0xffc9cfd9,0xffc6ccd7,0xffc4cbd6,0xffc3cad6,0xffc3cad6,0xffc2c8d5,0xffe0eafc,0xff8495b1,0x33000000,0xffffff,
2414 0x0,0x0,0x0,0x0,0x0,0x2000000,0x6000000,0xffc4d0e5,0xfff4fdff,0xffffffff,0xffffffff,0xfff9feff,0xfff9feff,0xfff8fdff,
2415 0xfff7fcff,0xfff4f9ff,0xfff4f9ff,0xfff2f8ff,0xfff1f7ff,0xfff0f6ff,0xffedf3fe,0xffeaf1fd,0xffe9f0fc,0xffe6edfa,0xffe4ecf9,0xffe2eaf8,0xffe2eaf8,0xffe1e8f7,
2416 0xffe0eafc,0xff8495b1,0x33000000,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,0xff8495b1,0xff8495b1,
2417 0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,
2418 0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0x33000000,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,
2419 0x0,0x0,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,
2420 0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0xffffff,0xffffff,0xffffff,
2421 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,
2422 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,
2423 0xffffff,0xffffff
2424};
2425
2525static const QRgb start_data[] = { 2426static const QRgb start_data[] = {
2526 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 2427 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
2527 0x0,0x0,0x3f8fbff,0x11eff7ff,0x2ae0efff,0x3ad3e9ff,0x33c4e1ff,0x26c4e1ff,0x23e8f3fe,0x35d8ebff,0x37c9e4ff,0x28b1d8ff,0xb9bcbfc,0x0, 2428 0x0,0x0,0x3f8fbff,0x11eff7ff,0x2ae0efff,0x3ad3e9ff,0x33c4e1ff,0x26c4e1ff,0x23e8f3fe,0x35d8ebff,0x37c9e4ff,0x28b1d8ff,0xb9bcbfc,0x0,
2528 0x0,0x3fafdff,0x1be9f4ff,0x59d6eaff,0x9ecde6ff,0xbac6e3ff,0xb6badcff,0x9baed6ff,0x7ec5e1fd,0xb2c7e3ff,0xb9bedeff,0xacabd4ff,0x498fc2f6,0x0, 2429 0x0,0x3fafdff,0x1be9f4ff,0x59d6eaff,0x9ecde6ff,0xbac6e3ff,0xb6badcff,0x9baed6ff,0x7ec5e1fd,0xb2c7e3ff,0xb9bedeff,0xacabd4ff,0x498fc2f6,0x0,
2529 0x0,0x14f5f9ff,0x54dcedff,0xb9d0e7ff,0xf6ddeeff,0xffe8f4ff,0xffd7eaff,0xebacd4fb,0xe7c9e3fe,0xffe3f1ff,0xffe0efff,0xf6b7d9fc,0x7386b4e4,0x0, 2430 0x0,0x14f5f9ff,0x54dcedff,0xb9d0e7ff,0xf6ddeeff,0xffe8f4ff,0xffd7eaff,0xebacd4fb,0xe7c9e3fe,0xffe3f1ff,0xffe0efff,0xf6b7d9fc,0x7386b4e4,0x0,
2530 0x0,0x43e9f4ff,0xa4d3e9ff,0xebe0effe,0xfff5fafe,0xffeff7fe,0xecb9d7f6,0xeab8d7f7,0xffe9f3fe,0xfff6fafe,0xf6d4e7fa,0xbb97bee5,0x415e84aa,0x0, 2431 0x0,0x43e9f4ff,0xa4d3e9ff,0xebe0effe,0xfff5fafe,0xffeff7fe,0xecb9d7f6,0xeab8d7f7,0xffe9f3fe,0xfff6fafe,0xf6d4e7fa,0xbb97bee5,0x415e84aa,0x0,
2531 0x0,0x9bc8e3ff,0xe8d6e9fd,0xfdf0f6fb,0xffecf4fc,0xebb8d5f3,0xe498c3f0,0xfae2eef9,0xfff3f7fb,0xf7d7e8f8,0xc198bce2,0x5c5b83ab,0x14273c51,0x0, 2432 0x0,0x9bc8e3ff,0xe8d6e9fd,0xfdf0f6fb,0xffecf4fc,0xebb8d5f3,0xe498c3f0,0xfae2eef9,0xfff3f7fb,0xf7d7e8f8,0xc198bce2,0x5c5b83ab,0x14273c51,0x0,
2532 0x0,0xeebbdbfb,0xfee7f0f7,0xffe8f0f7,0xffb7d8fa,0xf783bef9,0xfac3ddf6,0xffedf3f7,0xffd6e8f8,0xe195c4f2,0x75588ec4,0x1d294562,0x4090f15,0x0, 2433 0x0,0xeebbdbfb,0xfee7f0f7,0xffe8f0f7,0xffb7d8fa,0xf783bef9,0xfac3ddf6,0xffedf3f7,0xffd6e8f8,0xe195c4f2,0x75588ec4,0x1d294562,0x4090f15,0x0,
2533 0x0,0xe592c7fa,0xfdcee2f2,0xffdde8f0,0xffb3d5f4,0xff75b9fb,0xfda9d1f6,0xffdfe9f0,0xffd0e3f1,0xe693c5f4,0x7b5ca5ed,0x184591dd,0x13785d2,0x0, 2434 0x0,0xe592c7fa,0xfdcee2f2,0xffdde8f0,0xffb3d5f4,0xff75b9fb,0xfda9d1f6,0xffdfe9f0,0xffd0e3f1,0xe693c5f4,0x7b5ca5ed,0x184591dd,0x13785d2,0x0,
2534 0x0,0x6c6fb5fa,0xd789c1f5,0xfbc1d9ed,0xffd0e0eb,0xff9ecaf2,0xea6db2f7,0xf8accff0,0xffd1e0eb,0xffbcd7ee,0xd083bcf2,0x5757a5f1,0xb3e93e7,0x0, 2435 0x0,0x6c6fb5fa,0xd789c1f5,0xfbc1d9ed,0xffd0e0eb,0xff9ecaf2,0xea6db2f7,0xf8accff0,0xffd1e0eb,0xffbcd7ee,0xd083bcf2,0x5757a5f1,0xb3e93e7,0x0,
2535 0x0,0x1675b8f9,0x6e5dabf6,0xd289bff0,0xfabbd5e9,0xffc5dae7,0xea93c2eb,0xdd67adf1,0xf5a6cbeb,0xffc7dae7,0xf5afcfe9,0xb476b3ee,0x394899e9,0x0, 2436 0x0,0x1675b8f9,0x6e5dabf6,0xd289bff0,0xfabbd5e9,0xffc5dae7,0xea93c2eb,0xdd67adf1,0xf5a6cbeb,0xffc7dae7,0xf5afcfe9,0xb476b3ee,0x394899e9,0x0,
2536 0x0,0x4bcdaf7,0x1c51a3f2,0x725aa7f1,0xd57db8ef,0xfb90c1ed,0xff86bdef,0xc04d9ce9,0xb565a8e8,0xf38abeed,0xff8dc0ee,0xe46baeee,0x623f8dd9,0x0, 2437 0x0,0x4bcdaf7,0x1c51a3f2,0x725aa7f1,0xd57db8ef,0xfb90c1ed,0xff86bdef,0xc04d9ce9,0xb565a8e8,0xf38abeed,0xff8dc0ee,0xe46baeee,0x623f8dd9,0x0,
2537 0x0,0x1fbfbfb,0x475b3f0,0x1c3995ee,0x564399ed,0x7b4798e6,0x834694e0,0x57317bc4,0x423480cb,0x714597e8,0x824696e3,0x733d8ad5,0x2f27639f,0x0, 2438 0x0,0x1fbfbfb,0x475b3f0,0x1c3995ee,0x564399ed,0x7b4798e6,0x834694e0,0x57317bc4,0x423480cb,0x714597e8,0x824696e3,0x733d8ad5,0x2f27639f,0x0,
2538 0x0,0x0,0x0,0x22787e6,0x72079d2,0xc1c6bb9,0xe195fa5,0xa124274,0x616528e,0xa1e6ebf,0xe1a63ac,0xd165390,0x60a2641,0x0, 2439 0x0,0x0,0x0,0x22787e6,0x72079d2,0xc1c6bb9,0xe195fa5,0xa124274,0x616528e,0xa1e6ebf,0xe1a63ac,0xd165390,0x60a2641,0x0,
2539 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0 2440 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0
2540}; 2441};
2541 2442
2542static const QRgb stop_data[] = { 2443static const QRgb stop_data[] = {
2543 0x7000000,0xf000000,0x18000000,0x25000000,0x2e000000,0x36000000,0x3b000000,0x3d000000,0x3b000000,0x36000000,0x2e000000,0x25000000,0x18000000,0xf000000, 2444 0x7000000,0xf000000,0x18000000,0x25000000,0x2e000000,0x36000000,0x3b000000,0x3d000000,0x3b000000,0x36000000,0x2e000000,0x25000000,0x18000000,0xf000000,
2544 0xf000000,0x2e000000,0x5f000000,0x7f000000,0x8d000000,0x98000000,0x9e000000,0xa2000000,0x9e000000,0x98000000,0x81000000,0x57000000,0x31000000,0x1d000000, 2445 0xf000000,0x2e000000,0x5f000000,0x7f000000,0x8d000000,0x98000000,0x9e000000,0xa2000000,0x9e000000,0x98000000,0x81000000,0x57000000,0x31000000,0x1d000000,
2545 0x18000000,0x5f000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0x98000000,0x52000000,0x31000000, 2446 0x18000000,0x5f000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0x98000000,0x52000000,0x31000000,
2546 0x25000000,0x7f000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xcd000000,0x7a000000,0x49000000, 2447 0x25000000,0x7f000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xcd000000,0x7a000000,0x49000000,
2547 0x2e000000,0x8d000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xf0000000,0x9b000000,0x5d000000, 2448 0x2e000000,0x8d000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xf0000000,0x9b000000,0x5d000000,
2548 0x36000000,0x98000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xff000000,0xb4000000,0x6c000000, 2449 0x36000000,0x98000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xff000000,0xb4000000,0x6c000000,
2549 0x3b000000,0x9e000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xff000000,0xc4000000,0x75000000, 2450 0x3b000000,0x9e000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xff000000,0xc4000000,0x75000000,
2550 0x3d000000,0xa2000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xff000000,0xcc000000,0x7a000000, 2451 0x3d000000,0xa2000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xff000000,0xcc000000,0x7a000000,
2551 0x3b000000,0x9e000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xff000000,0xc4000000,0x75000000, 2452 0x3b000000,0x9e000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xff000000,0xc4000000,0x75000000,
2552 0x36000000,0x98000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xff000000,0xb4000000,0x6c000000, 2453 0x36000000,0x98000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xff000000,0xb4000000,0x6c000000,
2553 0x2e000000,0x81000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xee000000,0x9b000000,0x5d000000, 2454 0x2e000000,0x81000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xee000000,0x9b000000,0x5d000000,
2554 0x25000000,0x57000000,0x98000000,0xcd000000,0xef000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xed000000,0xbd000000,0x7a000000,0x49000000, 2455 0x25000000,0x57000000,0x98000000,0xcd000000,0xef000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xed000000,0xbd000000,0x7a000000,0x49000000,
2555 0x18000000,0x31000000,0x52000000,0x7a000000,0x9b000000,0xb3000000,0xc4000000,0xcc000000,0xc4000000,0xb3000000,0x9b000000,0x7a000000,0x52000000,0x31000000, 2456 0x18000000,0x31000000,0x52000000,0x7a000000,0x9b000000,0xb3000000,0xc4000000,0xcc000000,0xc4000000,0xb3000000,0x9b000000,0x7a000000,0x52000000,0x31000000,
2556 0xf000000,0x1d000000,0x31000000,0x49000000,0x5d000000,0x6c000000,0x75000000,0x7a000000,0x75000000,0x6c000000,0x5d000000,0x49000000,0x31000000,0x1d000000 2457 0xf000000,0x1d000000,0x31000000,0x49000000,0x5d000000,0x6c000000,0x75000000,0x7a000000,0x75000000,0x6c000000,0x5d000000,0x49000000,0x31000000,0x1d000000
2557}; 2458};
2558 2459
2559static const QRgb style_data[] = { 2460static const QRgb style_data[] = {
2560 0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20c0c0c0, 2461 0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20c0c0c0,
2561 0xff000000,0xff0e0e0e,0xe7262626,0xbf000000,0xbf000000,0xef000000,0xff000000,0xff070707,0xef2c2c2c,0xbf000000,0xbf000000,0xe7000000,0xff000000,0xffc1c1c1, 2462 0xff000000,0xff0e0e0e,0xe7262626,0xbf000000,0xbf000000,0xef000000,0xff000000,0xff070707,0xef2c2c2c,0xbf000000,0xbf000000,0xe7000000,0xff000000,0xffc1c1c1,
2562 0xff0a0a0a,0xe76a6a6a,0x64dcdcdc,0x0,0x0,0xbf000000,0xff000000,0xff1c1c1c,0xbfdcdcdc,0x0,0x0,0x64000000,0xe7000000,0xffc1c1c1, 2463 0xff0a0a0a,0xe76a6a6a,0x64dcdcdc,0x0,0x0,0xbf000000,0xff000000,0xff1c1c1c,0xbfdcdcdc,0x0,0x0,0x64000000,0xe7000000,0xffc1c1c1,
2563 0xff1c1c1c,0xbfdcdcdc,0x0,0x0,0x0,0xbf000000,0xff000000,0xff1c1c1c,0xbfdcdcdc,0x0,0x0,0x0,0xbf000000,0xffc1c1c1, 2464 0xff1c1c1c,0xbfdcdcdc,0x0,0x0,0x0,0xbf000000,0xff000000,0xff1c1c1c,0xbfdcdcdc,0x0,0x0,0x0,0xbf000000,0xffc1c1c1,
2564 0x601c1c1c,0x48dcdcdc,0x0,0x0,0x64000000,0xe7000000,0xff000000,0xeb8e8e8e,0x48dcdcdc,0x0,0x0,0x0,0x48000000,0x60c0c0c0, 2465 0x601c1c1c,0x48dcdcdc,0x0,0x0,0x64000000,0xe7000000,0xff000000,0xeb8e8e8e,0x48dcdcdc,0x0,0x0,0x0,0x48000000,0x60c0c0c0,
2565 0x0,0x0,0x0,0x0,0x9f000000,0xff000000,0xff000000,0xdfdcdcdc,0x0,0x0,0x0,0x0,0x0,0x0, 2466 0x0,0x0,0x0,0x0,0x9f000000,0xff000000,0xff000000,0xdfdcdcdc,0x0,0x0,0x0,0x0,0x0,0x0,
2566 0x0,0x0,0x0,0x0,0x9f000000,0xff000000,0xff000000,0xdfdcdcdc,0x0,0x0,0x0,0x0,0x0,0x0, 2467 0x0,0x0,0x0,0x0,0x9f000000,0xff000000,0xff000000,0xdfdcdcdc,0x0,0x0,0x0,0x0,0x0,0x0,
2567 0x0,0x0,0x0,0x10000000,0xab000000,0xff000000,0xff181818,0xc3dcdcdc,0x0,0x0,0x0,0x0,0x0,0x0, 2468 0x0,0x0,0x0,0x10000000,0xab000000,0xff000000,0xff181818,0xc3dcdcdc,0x0,0x0,0x0,0x0,0x0,0x0,
2568 0x0,0x0,0x0,0x7f000000,0xff000000,0xff000000,0xffc1c1c1,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 2469 0x0,0x0,0x0,0x7f000000,0xff000000,0xff000000,0xffc1c1c1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
2569 0x0,0x0,0x0,0x7f000000,0xff000000,0xff000000,0xffc1c1c1,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 2470 0x0,0x0,0x0,0x7f000000,0xff000000,0xff000000,0xffc1c1c1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
2570 0x0,0x0,0x0,0x7f000000,0xff000000,0xff000000,0xffc1c1c1,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 2471 0x0,0x0,0x0,0x7f000000,0xff000000,0xff000000,0xffc1c1c1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
2571 0x0,0x0,0x3c000000,0xcf000000,0xff000000,0xff676767,0x74c5c5c5,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 2472 0x0,0x0,0x3c000000,0xcf000000,0xff000000,0xff676767,0x74c5c5c5,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
2572 0x0,0x0,0x60000000,0xff000000,0xff000000,0xffa5a5a5,0x20dcdcdc,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 2473 0x0,0x0,0x60000000,0xff000000,0xff000000,0xffa5a5a5,0x20dcdcdc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
2573 0x1c000000,0xdf000000,0xeb000000,0xff000000,0xff000000,0xff151515,0xe3040404,0xc3dcdcdc,0x0,0x0,0x0,0x0,0x0,0x0 2474 0x1c000000,0xdf000000,0xeb000000,0xff000000,0xff000000,0xff151515,0xe3040404,0xc3dcdcdc,0x0,0x0,0x0,0x0,0x0,0x0
2574}; 2475};
2575 2476
2576static const QRgb suspend_data[] = { 2477static const QRgb suspend_data[] = {
2577 0x1a056999,0x9a0d6d9c,0xff1d77a3,0xff2981aa,0xff267fa9,0xff247ea8,0xff227ea7,0xff1f7ba8,0xff1e7ba6,0xff1d7ba5,0xff1e7ba5,0xff17729f,0x9a096b9b,0x1a016a9b, 2478 0x1a056999,0x9a0d6d9c,0xff1d77a3,0xff2981aa,0xff267fa9,0xff247ea8,0xff227ea7,0xff1f7ba8,0xff1e7ba6,0xff1d7ba5,0xff1e7ba5,0xff17729f,0x9a096b9b,0x1a016a9b,
2578 0x9a0d6d9c,0xff4e95b9,0xff549fc3,0xff1e8bb7,0xff228db9,0xff2491bc,0xff3c96c1,0xff4d99c1,0xff4e94be,0xff5495bd,0xff5e97c0,0xff76a0c4,0xff3e87b0,0x9a086b9c, 2479 0x9a0d6d9c,0xff4e95b9,0xff549fc3,0xff1e8bb7,0xff228db9,0xff2491bc,0xff3c96c1,0xff4d99c1,0xff4e94be,0xff5495bd,0xff5e97c0,0xff76a0c4,0xff3e87b0,0x9a086b9c,
2579 0xff1d77a3,0xff59a0c4,0xff0074a9,0xff007bae,0xff1a8bb9,0xff63b0d0,0xff93c6de,0xff9bc7de,0xff79b0cf,0xff4d92bb,0xff4d8fb9,0xff5691bb,0xff76a0c4,0xff12709f, 2480 0xff1d77a3,0xff59a0c4,0xff0074a9,0xff007bae,0xff1a8bb9,0xff63b0d0,0xff93c6de,0xff9bc7de,0xff79b0cf,0xff4d92bb,0xff4d8fb9,0xff5691bb,0xff76a0c4,0xff12709f,
2580 0xff2981ab,0xff258eb9,0xff007bae,0xff0b84b5,0xff7bbdd9,0xffe6f5fa,0xffc5deec,0xffcadfed,0xffedf4f8,0xff95bcd6,0xff5b95bd,0xff6196bc,0xff759ec3,0xff1275a3, 2481 0xff2981ab,0xff258eb9,0xff007bae,0xff0b84b5,0xff7bbdd9,0xffe6f5fa,0xffc5deec,0xffcadfed,0xffedf4f8,0xff95bcd6,0xff5b95bd,0xff6196bc,0xff759ec3,0xff1275a3,
2581 0xff267fa9,0xff228db9,0xff037db0,0xff3d9cc5,0xffcbe4f0,0xffa9cfe2,0xff5e9fc4,0xff6ba4c7,0xffcbdfed,0xffd1e2ed,0xff74a5c6,0xff6a9abf,0xff79a0c3,0xff1072a2, 2482 0xff267fa9,0xff228db9,0xff037db0,0xff3d9cc5,0xffcbe4f0,0xffa9cfe2,0xff5e9fc4,0xff6ba4c7,0xffcbdfed,0xffd1e2ed,0xff74a5c6,0xff6a9abf,0xff79a0c3,0xff1072a2,
2582 0xff247ea8,0xff1e8dba,0xff0c7fb1,0xff499bc3,0xffa2cde4,0xff63a1c6,0xff478eb8,0xff5291bb,0xff80adce,0xffb7d3e6,0xff80abca,0xff729cbf,0xff7ca2c4,0xff1072a1, 2483 0xff247ea8,0xff1e8dba,0xff0c7fb1,0xff499bc3,0xffa2cde4,0xff63a1c6,0xff478eb8,0xff5291bb,0xff80adce,0xffb7d3e6,0xff80abca,0xff729cbf,0xff7ca2c4,0xff1072a1,
2583 0xff227ea7,0xff2d8dbb,0xff2385b5,0xff90c1d9,0xfff0f7fb,0xffeaf3f7,0xffe8f1f6,0xffe9f1f7,0xffedf4f8,0xffeff7fb,0xffaac7dc,0xff7aa0c2,0xff7fa5c6,0xff1071a1, 2484 0xff227ea7,0xff2d8dbb,0xff2385b5,0xff90c1d9,0xfff0f7fb,0xffeaf3f7,0xffe8f1f6,0xffe9f1f7,0xffedf4f8,0xffeff7fb,0xffaac7dc,0xff7aa0c2,0xff7fa5c6,0xff1071a1,
2584 0xff1f7ba8,0xff3f90bb,0xff4293bd,0xffb7d6e7,0xffd8eaf5,0xffafd0e6,0xffadcde3,0xffb2d0e5,0xffc2daeb,0xfff1f9fe,0xffbdd0e2,0xff82a6c6,0xff85abc9,0xff116f9f, 2485 0xff1f7ba8,0xff3f90bb,0xff4293bd,0xffb7d6e7,0xffd8eaf5,0xffafd0e6,0xffadcde3,0xffb2d0e5,0xffc2daeb,0xfff1f9fe,0xffbdd0e2,0xff82a6c6,0xff85abc9,0xff116f9f,
2585 0xff1e7ba6,0xff4c92bd,0xff4d96be,0xffbcd7e7,0xffb2cfe3,0xff659bc1,0xff6096bc,0xff689abe,0xff85abcb,0xffdce8f3,0xffc0d3e3,0xff8bacc9,0xff84aecc,0xff106d9f, 2486 0xff1e7ba6,0xff4c92bd,0xff4d96be,0xffbcd7e7,0xffb2cfe3,0xff659bc1,0xff6096bc,0xff689abe,0xff85abcb,0xffdce8f3,0xffc0d3e3,0xff8bacc9,0xff84aecc,0xff106d9f,
2586 0xff1d7ba5,0xff5495bd,0xff5798c0,0xffbfd8e8,0xffcfe1ed,0xff9bbfd9,0xff98bdd6,0xff9fbed7,0xffb1cade,0xffeaf2f8,0xffc4d5e4,0xff93b1cc,0xff89b3cf,0xff106d9f, 2487 0xff1d7ba5,0xff5495bd,0xff5798c0,0xffbfd8e8,0xffcfe1ed,0xff9bbfd9,0xff98bdd6,0xff9fbed7,0xffb1cade,0xffeaf2f8,0xffc4d5e4,0xff93b1cc,0xff89b3cf,0xff106d9f,
2587 0xff1d7aa5,0xff5b97bf,0xff5997be,0xffb1cfe3,0xfff0fafe,0xffeef9ff,0xffeef9ff,0xfff0faff,0xfff3fbff,0xfff5fafd,0xffbed3e3,0xff9bb7d0,0xff8fb7d2,0xff116d9e, 2488 0xff1d7aa5,0xff5b97bf,0xff5997be,0xffb1cfe3,0xfff0fafe,0xffeef9ff,0xffeef9ff,0xfff0faff,0xfff3fbff,0xfff5fafd,0xffbed3e3,0xff9bb7d0,0xff8fb7d2,0xff116d9e,
2588 0xff17729f,0xff759fc3,0xff5892bc,0xff7ba9c9,0xff9bbdd7,0xffa2c0d7,0xffa8c3da,0xffaec7dc,0xffb6ccde,0xffb7ccdf,0xffa9c1d8,0xffb5c5d9,0xff71adcc,0xff0b6b9c, 2489 0xff17729f,0xff759fc3,0xff5892bc,0xff7ba9c9,0xff9bbdd7,0xffa2c0d7,0xffa8c3da,0xffaec7dc,0xffb6ccde,0xffb7ccdf,0xffa9c1d8,0xffb5c5d9,0xff71adcc,0xff0b6b9c,
2589 0x9a096b9b,0xff3e87b0,0xff76a0c4,0xff759ec3,0xff79a0c3,0xff7ca2c4,0xff7fa5c6,0xff85abc9,0xff84aecc,0xff88b3cf,0xff96bad4,0xff76afce,0xff227baa,0x9a03699a, 2490 0x9a096b9b,0xff3e87b0,0xff76a0c4,0xff759ec3,0xff79a0c3,0xff7ca2c4,0xff7fa5c6,0xff85abc9,0xff84aecc,0xff88b3cf,0xff96bad4,0xff76afce,0xff227baa,0x9a03699a,
2590 0x1a016a9b,0x9a086b9c,0xff12709f,0xff1275a3,0xff1072a2,0xff1072a1,0xff1071a1,0xff116f9f,0xff106d9f,0xff106d9f,0xff126d9e,0xff0c6b9c,0x9a03689a,0x1a00699a 2491 0x1a016a9b,0x9a086b9c,0xff12709f,0xff1275a3,0xff1072a2,0xff1072a1,0xff1071a1,0xff116f9f,0xff106d9f,0xff106d9f,0xff126d9e,0xff0c6b9c,0x9a03689a,0x1a00699a
2591}; 2492};
2592 2493
2593static const QRgb table_pattern_data[] = { 2494static const QRgb table_pattern_data[] = {
2594 0xff598076,0xff5c857b,0xff5c857b,0xff567b72,0xff51756c,0xff577e74,0xff5d867c,0xff598076,0xff52766d,0xff51756c,0xff5a8177,0xff5f897e,0xff598076,0xff50736a, 2495 0xff598076,0xff5c857b,0xff5c857b,0xff567b72,0xff51756c,0xff577e74,0xff5d867c,0xff598076,0xff52766d,0xff51756c,0xff5a8177,0xff5f897e,0xff598076,0xff50736a,
2595 0xff4f7269,0xff557b71,0xff5b847a,0xff5a8177,0xff588076,0xff54786f,0xff51756c,0xff577d73,0xff598076,0xff547970,0xff51746b,0xff53786e,0xff598076,0xff5d857b, 2496 0xff4f7269,0xff557b71,0xff5b847a,0xff5a8177,0xff588076,0xff54786f,0xff51756c,0xff577d73,0xff598076,0xff547970,0xff51746b,0xff53786e,0xff598076,0xff5d857b,
2596 0xff577d74,0xff52766d,0xff587e74,0xff5d867b,0xff5c847a,0xff598076,0xff587f75,0xff557b71,0xff547a71,0xff587f75,0xff5a8278,0xff598177,0xff587f75,0xff587f75, 2497 0xff577d74,0xff52766d,0xff587e74,0xff5d867b,0xff5c847a,0xff598076,0xff587f75,0xff557b71,0xff547a71,0xff587f75,0xff5a8278,0xff598177,0xff587f75,0xff587f75,
2597 0xff598076,0xff5b8278,0xff598076,0xff587f75,0xff5f887d,0xff608b80,0xff567c73,0xff547970,0xff567c72,0xff577e74,0xff587f75,0xff5c857a,0xff608b80,0xff608b80, 2498 0xff598076,0xff5b8278,0xff598076,0xff587f75,0xff5f887d,0xff608b80,0xff567c73,0xff547970,0xff567c72,0xff577e74,0xff587f75,0xff5c857a,0xff608b80,0xff608b80,
2598 0xff5e887e,0xff5c857a,0xff5a8278,0xff5a8177,0xff598076,0xff598076,0xff5b8379,0xff5a8278,0xff51746b,0xff51746b,0xff557a71,0xff587f75,0xff5a8177,0xff5d867c, 2499 0xff5e887e,0xff5c857a,0xff5a8278,0xff5a8177,0xff598076,0xff598076,0xff5b8379,0xff5a8278,0xff51746b,0xff51746b,0xff557a71,0xff587f75,0xff5a8177,0xff5d867c,
2599 0xff608b80,0xff5d877c,0xff597f76,0xff577d74,0xff598076,0xff598076,0xff587f75,0xff577d74,0xff557a71,0xff53776e,0xff567c72,0xff567c72,0xff587f75,0xff5c847a, 2500 0xff608b80,0xff5d877c,0xff597f76,0xff577d74,0xff598076,0xff598076,0xff587f75,0xff577d74,0xff557a71,0xff53776e,0xff567c72,0xff567c72,0xff587f75,0xff5c847a,
2600 0xff5c857b,0xff5f897e,0xff5f897e,0xff577c73,0xff4f726a,0xff53776e,0xff598076,0xff587f75,0xff577e74,0xff587f75,0xff587e74,0xff577d73,0xff5d867b,0xff598076, 2501 0xff5c857b,0xff5f897e,0xff5f897e,0xff577c73,0xff4f726a,0xff53776e,0xff598076,0xff587f75,0xff577e74,0xff587f75,0xff587e74,0xff577d73,0xff5d867b,0xff598076,
2601 0xff5a8278,0xff608a7f,0xff608a80,0xff608a7f,0xff5a8278,0xff50736b,0xff50736a,0xff598076,0xff5f897e,0xff5a8178,0xff557b71,0xff598076,0xff5e877c,0xff5f897e, 2502 0xff5a8278,0xff608a7f,0xff608a80,0xff608a7f,0xff5a8278,0xff50736b,0xff50736a,0xff598076,0xff5f897e,0xff5a8178,0xff557b71,0xff598076,0xff5e877c,0xff5f897e,
2602 0xff5a8278,0xff557b71,0xff5a8278,0xff608b80,0xff5e877d,0xff577d74,0xff50746b,0xff50736a,0xff567d73,0xff5e887d,0xff608b80,0xff587f75,0xff53776e,0xff598076, 2503 0xff5a8278,0xff557b71,0xff5a8278,0xff608b80,0xff5e877d,0xff577d74,0xff50746b,0xff50736a,0xff567d73,0xff5e887d,0xff608b80,0xff587f75,0xff53776e,0xff598076,
2603 0xff618b80,0xff5f8a7f,0xff53776e,0xff51756c,0xff598076,0xff5f887e,0xff598076,0xff50736a,0xff50736b,0xff567d73,0xff5a8177,0xff5c847a,0xff5b8379,0xff547a70, 2504 0xff618b80,0xff5f8a7f,0xff53776e,0xff51756c,0xff598076,0xff5f887e,0xff598076,0xff50736a,0xff50736b,0xff567d73,0xff5a8177,0xff5c847a,0xff5b8379,0xff547a70,
2604 0xff51746b,0xff587f75,0xff5e877d,0xff598076,0xff51746b,0xff52766d,0xff587f75,0xff5d857b,0xff587e75,0xff53786e,0xff598076,0xff5e887d,0xff5c847a,0xff598076, 2505 0xff51746b,0xff587f75,0xff5e877d,0xff598076,0xff51746b,0xff52766d,0xff587f75,0xff5d857b,0xff587e75,0xff53786e,0xff598076,0xff5e887d,0xff5c847a,0xff598076,
2605 0xff587f75,0xff53786f,0xff52766c,0xff587e74,0xff598076,0xff547970,0xff587e74,0xff577e75,0xff598076,0xff5a8278,0xff598076,0xff598076,0xff5e887e,0xff608b80, 2506 0xff587f75,0xff53786f,0xff52766c,0xff587e74,0xff598076,0xff547970,0xff587e74,0xff577e75,0xff598076,0xff5a8278,0xff598076,0xff598076,0xff5e887e,0xff608b80,
2606 0xff5b8379,0xff587f75,0xff577e74,0xff567b72,0xff557b72,0xff598076,0xff598177,0xff598076,0xff5e887e,0xff5c857a,0xff5a8278,0xff598076,0xff587f75,0xff587f75, 2507 0xff5b8379,0xff587f75,0xff577e74,0xff567b72,0xff557b72,0xff598076,0xff598177,0xff598076,0xff5e887e,0xff5c857a,0xff5a8278,0xff598076,0xff587f75,0xff587f75,
2607 0xff598177,0xff587f75,0xff547a71,0xff53786f,0xff567b72,0xff587f75,0xff5b8278,0xff5e887d,0xff618b80,0xff608a7f,0xff598177,0xff587e74,0xff598076,0xff598076, 2508 0xff598177,0xff587f75,0xff547a71,0xff53786f,0xff567b72,0xff587f75,0xff5b8278,0xff5e887d,0xff618b80,0xff608a7f,0xff598177,0xff587e74,0xff598076,0xff598076,
2608 0xff587f75,0xff577d74,0xff557a71,0xff53776e,0xff51746b,0xff52756c,0xff557b72,0xff5b8379,0xff608b80,0xff638e83,0xff608b80,0xff5d867c,0xff50736b,0xff52766d, 2509 0xff587f75,0xff577d74,0xff557a71,0xff53776e,0xff51746b,0xff52756c,0xff557b72,0xff5b8379,0xff608b80,0xff638e83,0xff608b80,0xff5d867c,0xff50736b,0xff52766d,
2609 0xff587f75,0xff587f75,0xff577e74,0xff587f75,0xff598076,0xff598076,0xff577e74,0xff577e74,0xff598076,0xff5f887e,0xff638e83,0xff5e887e,0xff5a8177,0xff547a71, 2510 0xff587f75,0xff587f75,0xff577e74,0xff587f75,0xff598076,0xff598076,0xff577e74,0xff577e74,0xff598076,0xff5f887e,0xff638e83,0xff5e887e,0xff5a8177,0xff547a71,
2610 0xff4f7269,0xff587e74,0xff5e887d,0xff5a8278,0xff557b72,0xff598076,0xff5e887e,0xff608a80,0xff5d867b,0xff587f75,0xff5b8278,0xff618c81,0xff608a7f,0xff598177, 2511 0xff4f7269,0xff587e74,0xff5e887d,0xff5a8278,0xff557b72,0xff598076,0xff5e887e,0xff608a80,0xff5d867b,0xff587f75,0xff5b8278,0xff618c81,0xff608a7f,0xff598177,
2611 0xff547970,0xff4f7169,0xff557b71,0xff5e877d,0xff618c81,0xff598076,0xff53776e,0xff587f75,0xff608a80,0xff5f897e,0xff587f75,0xff547970,0xff5a8278,0xff608b80, 2512 0xff547970,0xff4f7169,0xff557b71,0xff5e877d,0xff618c81,0xff598076,0xff53776e,0xff587f75,0xff608a80,0xff5f897e,0xff587f75,0xff547970,0xff5a8278,0xff608b80,
2612 0xff5c857b,0xff547970,0xff4f7169,0xff50726a 2513 0xff5c857b,0xff547970,0xff4f7169,0xff50726a
2613}; 2514};
2614 2515
2615static const QRgb tgz_data[] = { 2516static const QRgb tgz_data[] = {
2616 0x0,0x100b200,0x791fd11e,0x4611ca0a,0x1cd3d3d5,0x3dcdcdd1,0x3dc8c8ce,0x3dc3c3cb,0x3dbebec9,0x3db9b9c7,0x1baaaab9,0x0,0x0,0x0, 2517 0x0,0x100b200,0x791fd11e,0x4611ca0a,0x1cd3d3d5,0x3dcdcdd1,0x3dc8c8ce,0x3dc3c3cb,0x3dbebec9,0x3db9b9c7,0x1baaaab9,0x0,0x0,0x0,
2617 0x1008800,0x7700b300,0xfd08e808,0x4802ae02,0x85dadadd,0xfff5f5f6,0xfff4f4f6,0xfff2f0ef,0xffeeeef2,0xffe6e6ed,0xdfbdbdcc,0x269494a6,0x0,0x0, 2518 0x1008800,0x7700b300,0xfd08e808,0x4802ae02,0x85dadadd,0xfff5f5f6,0xfff4f4f6,0xfff2f0ef,0xffeeeef2,0xffe6e6ed,0xdfbdbdcc,0x269494a6,0x0,0x0,
2618 0x79008c00,0xfd00be00,0xff00c500,0x48008900,0x85d8d8dd,0xfffbf4e8,0xfff3dcaf,0xffeed399,0xffede0cf,0xfff0f0f6,0xffdfdfe8,0xe0c8c8d6,0x2387879c,0x0, 2519 0x79008c00,0xfd00be00,0xff00c500,0x48008900,0x85d8d8dd,0xfffbf4e8,0xfff3dcaf,0xffeed399,0xffede0cf,0xfff0f0f6,0xffdfdfe8,0xe0c8c8d6,0x2387879c,0x0,
2619 0x46007c00,0x48008200,0x52008000,0x26568512,0xb1e3c085,0xfff7e4af,0xfffffbd4,0xfff9eebf,0xfff1e0b1,0xffe0d1c0,0xffdddde7,0xfff4f4f8,0xd8babacd,0x1f7d7d97, 2520 0x46007c00,0x48008200,0x52008000,0x26568512,0xb1e3c085,0xfff7e4af,0xfffffbd4,0xfff9eebf,0xfff1e0b1,0xffe0d1c0,0xffdddde7,0xfff4f4f8,0xd8babacd,0x1f7d7d97,
2620 0x0,0x0,0xddc962a,0xdff0c97c,0xfffce4a6,0xfffce3a5,0xfffae09f,0xffecc377,0xffedcf90,0xffe9cc90,0xffbfac9e,0xffc9c9da,0xffc6c6d8,0x878989a2, 2521 0x0,0x0,0xddc962a,0xdff0c97c,0xfffce4a6,0xfffce3a5,0xfffae09f,0xffecc377,0xffedcf90,0xffe9cc90,0xffbfac9e,0xffc9c9da,0xffc6c6d8,0x878989a2,
2621 0x0,0x0,0x14db952a,0xf7f8de9a,0xffffe5a1,0xffffd98b,0xfffdd688,0xfff5c774,0xfff5cb7c,0xffeec377,0xffdbaf68,0xffd6d2d9,0xffdfdfec,0x8b8989a2, 2522 0x0,0x0,0x14db952a,0xf7f8de9a,0xffffe5a1,0xffffd98b,0xfffdd688,0xfff5c774,0xfff5cb7c,0xffeec377,0xffdbaf68,0xffd6d2d9,0xffdfdfec,0x8b8989a2,
2622 0x0,0x0,0x14d5902a,0xf7f7d78c,0xffffe59c,0xffffd986,0xfff7be5e,0xfffec664,0xffffc766,0xffffcc6d,0xffe7bc6e,0xffd5d1d8,0xffe1e1ed,0x8b8585a0, 2523 0x0,0x0,0x14d5902a,0xf7f7d78c,0xffffe59c,0xffffd986,0xfff7be5e,0xfffec664,0xffffc766,0xffffcc6d,0xffe7bc6e,0xffd5d1d8,0xffe1e1ed,0x8b8585a0,
2623 0x0,0x0,0x14cb8929,0xf7f5cf7d,0xffffdd88,0xffffda82,0xfffdcd6f,0xffffbe52,0xffffc763,0xffffd276,0xffe5bf76,0xffd7d3d9,0xffe3e3ef,0x8b82829f, 2524 0x0,0x0,0x14cb8929,0xf7f5cf7d,0xffffdd88,0xffffda82,0xfffdcd6f,0xffffbe52,0xffffc763,0xffffd276,0xffe5bf76,0xffd7d3d9,0xffe3e3ef,0x8b82829f,
2624 0x0,0x0,0xfc18129,0xeeecbe65,0xffffd575,0xffffd36f,0xffffcd69,0xffffc35c,0xffffcd6f,0xffffd882,0xffe3c27d,0xffd8d5da,0xffe6e6f0,0x8b7f7f9d, 2525 0x0,0x0,0xfc18129,0xeeecbe65,0xffffd575,0xffffd36f,0xffffcd69,0xffffc35c,0xffffcd6f,0xffffd882,0xffe3c27d,0xffd8d5da,0xffe6e6f0,0x8b7f7f9d,
2625 0x0,0x0,0x0,0x3fb98134,0xece7b557,0xffffcb5c,0xffffcb61,0xffffc967,0xffffd47a,0xfff1cd81,0xffc2a680,0xffe1dfe6,0xffe8e8f2,0x8b7c7c9c, 2526 0x0,0x0,0x0,0x3fb98134,0xece7b557,0xffffcb5c,0xffffcb61,0xffffc967,0xffffd47a,0xfff1cd81,0xffc2a680,0xffe1dfe6,0xffe8e8f2,0x8b7c7c9c,
2626 0x0,0x0,0x0,0x0,0x89ab9992,0xffdfaf5b,0xffffc85a,0xfff7c76d,0xffceab76,0xffccbfb6,0xffd7e7d9,0xffb5e6b1,0xffbbe6ba,0xaa599e62, 2527 0x0,0x0,0x0,0x0,0x89ab9992,0xffdfaf5b,0xffffc85a,0xfff7c76d,0xffceab76,0xffccbfb6,0xffd7e7d9,0xffb5e6b1,0xffbbe6ba,0xaa599e62,
2627 0x0,0x0,0x0,0x0,0x85b1b1c9,0xffefe8e2,0xffceab77,0xffcebcaa,0xffefeef0,0xfff5f5f9,0xffb5e6b8,0xff75fb74,0xff75f475,0xa73dac46, 2528 0x0,0x0,0x0,0x0,0x85b1b1c9,0xffefe8e2,0xffceab77,0xffcebcaa,0xffefeef0,0xfff5f5f9,0xffb5e6b8,0xff75fb74,0xff75f475,0xa73dac46,
2628 0x0,0x0,0x0,0x0,0x85aaaac5,0xfff3f3f7,0xfff1f1f5,0xfff1f1f6,0xffeeeef5,0xffececf3,0xffa8d5ae,0xff02dd02,0xff74c97c,0x8b6f7094, 2529 0x0,0x0,0x0,0x0,0x85aaaac5,0xfff3f3f7,0xfff1f1f5,0xfff1f1f6,0xffeeeef5,0xffececf3,0xffa8d5ae,0xff02dd02,0xff74c97c,0x8b6f7094,
2629 0x0,0x0,0x0,0x0,0x22717190,0x5362627f,0x545e5e7c,0x545b5b7b,0x54575779,0x54535377,0x82256936,0x8d07830b,0x54484970,0x2d343454 2530 0x0,0x0,0x0,0x0,0x22717190,0x5362627f,0x545e5e7c,0x545b5b7b,0x54575779,0x54535377,0x82256936,0x8d07830b,0x54484970,0x2d343454
2630}; 2531};
2631 2532
2632static const QRgb toys_data[] = { 2533static const QRgb toys_data[] = {
2633 0x0,0x0,0x0,0x1d8c8c00,0x87a9a83a,0xcdc48877,0xe2cf8d8d,0xdfcd8989,0xbabea56c,0x639a9a23,0x7717100,0x0,0x0,0x0, 2534 0x0,0x0,0x0,0x1d8c8c00,0x87a9a83a,0xcdc48877,0xe2cf8d8d,0xdfcd8989,0xbabea56c,0x639a9a23,0x7717100,0x0,0x0,0x0,
2634 0x0,0x8a0000,0x619b821c,0xf3cdcd87,0xfff1eece,0xfff4d2d2,0xfff6d3d3,0xfff6d3d3,0xfff3dfcf,0xffebebc6,0xd6bcbb68,0x2d7d5104,0x0,0x0, 2535 0x0,0x8a0000,0x619b821c,0xf3cdcd87,0xfff1eece,0xfff4d2d2,0xfff6d3d3,0xfff6d3d3,0xfff3dfcf,0xffebebc6,0xd6bcbb68,0x2d7d5104,0x0,0x0,
2635 0x0,0x61982416,0xfdd8d099,0xfff2f2c4,0xfff6ebc2,0xfff9c4c4,0xfffac4c4,0xfffac5c5,0xfff8d4c2,0xfff5f5c4,0xffefefc5,0xecbe926b,0x286c0000,0x0, 2536 0x0,0x61982416,0xfdd8d099,0xfff2f2c4,0xfff6ebc2,0xfff9c4c4,0xfffac4c4,0xfffac5c5,0xfff8d4c2,0xfff5f5c4,0xffefefc5,0xecbe926b,0x286c0000,0x0,
2636 0x1d8c0000,0xf3c37e6a,0xffeeeeb3,0xfff7f7b4,0xfffbe5b1,0xfffdb4b4,0xfffeb4b4,0xfffeb4b4,0xfffcc5b2,0xfffafab4,0xfff4f4b5,0xffe7e0ab,0xc58c0806,0x4080000, 2537 0x1d8c0000,0xf3c37e6a,0xffeeeeb3,0xfff7f7b4,0xfffbe5b1,0xfffdb4b4,0xfffeb4b4,0xfffeb4b4,0xfffcc5b2,0xfffafab4,0xfff4f4b5,0xffe7e0ab,0xc58c0806,0x4080000,
2637 0x889e2121,0xffe2c69e,0xfff2f2a4,0xfffafaa4,0xfffedea2,0xffffa4a4,0xffffa4a4,0xffffa3a3,0xfffe9b7f,0xfffcfc6d,0xfff5f56c,0xffdbdb42,0xffa61d06,0x46620101, 2538 0x889e2121,0xffe2c69e,0xfff2f2a4,0xfffafaa4,0xfffedea2,0xffffa4a4,0xffffa4a4,0xffffa3a3,0xfffe9b7f,0xfffcfc6d,0xfff5f56c,0xffdbdb42,0xffa61d06,0x46620101,
2638 0xcdb44a4a,0xffe6cf96,0xfff5f598,0xfffdfd98,0xffffd796,0xffff9898,0xffff9797,0xffff4343,0xfffe3e15,0xfffdfd15,0xfff5f515,0xffdfdf15,0xffba4114,0x937a0707, 2539 0xcdb44a4a,0xffe6cf96,0xfff5f598,0xfffdfd98,0xffffd796,0xffff9898,0xffff9797,0xffff4343,0xfffe3e15,0xfffdfd15,0xfff5f515,0xffdfdf15,0xffba4114,0x937a0707,
2639 0xe2b74a4a,0xffe7d28e,0xfff6f690,0xfffdfd90,0xfffed28e,0xffff9090,0xffff5c5c,0xffff2929,0xfffe4b28,0xfffefe29,0xfff9f929,0xffe6e629,0xffc65827,0xb17f0f0f, 2540 0xe2b74a4a,0xffe7d28e,0xfff6f690,0xfffdfd90,0xfffed28e,0xffff9090,0xffff5c5c,0xffff2929,0xfffe4b28,0xfffefe29,0xfff9f929,0xffe6e629,0xffc65827,0xb17f0f0f,
2640 0xdfac2c2c,0xffe0c373,0xfff5f588,0xfffdfd8c,0xfffecb81,0xffff6060,0xffff4040,0xffff4040,0xffff6040,0xfffefe40,0xfff9f940,0xffe8e840,0xffca673d,0xb1811717, 2541 0xdfac2c2c,0xffe0c373,0xfff5f588,0xfffdfd8c,0xfffecb81,0xffff6060,0xffff4040,0xffff4040,0xffff6040,0xfffefe40,0xfff9f940,0xffe8e840,0xffca673d,0xb1811717,
2641 0xbaa72c2c,0xffd4ac56,0xffeded5a,0xfffafa5b,0xfffec059,0xffff5a5a,0xffff5a5a,0xffff5a5a,0xfffe7759,0xfffefe59,0xfff7f75a,0xffe6e659,0xffc96d51,0x916e1010, 2542 0xbaa72c2c,0xffd4ac56,0xffeded5a,0xfffafa5b,0xfffec059,0xffff5a5a,0xffff5a5a,0xffff5a5a,0xfffe7759,0xfffefe59,0xfff7f75a,0xffe6e659,0xffc96d51,0x916e1010,
2642 0x63961a1a,0xffcc9a63,0xffe8e873,0xfff6f674,0xfffccf72,0xfffe7373,0xfffe7474,0xfffe7474,0xfffd9172,0xfffbfb73,0xfff2f274,0xffe1e172,0xfbb7554b,0x43340101, 2543 0x63961a1a,0xffcc9a63,0xffe8e873,0xfff6f674,0xfffccf72,0xfffe7373,0xfffe7474,0xfffe7474,0xfffd9172,0xfffbfb73,0xfff2f274,0xffe1e172,0xfbb7554b,0x43340101,
2643 0x7710000,0xd7b06447,0xffdede86,0xffeeee8d,0xfff6d98b,0xfffa8c8c,0xfffc8d8d,0xfffb8d8d,0xfff9a98b,0xfff5f58c,0xffeaea8c,0xffd6c97d,0xb87c2424,0x6000000, 2544 0x7710000,0xd7b06447,0xffdede86,0xffeeee8d,0xfff6d98b,0xfffa8c8c,0xfffc8d8d,0xfffb8d8d,0xfff9a98b,0xfff5f58c,0xffeaea8c,0xffd6c97d,0xb87c2424,0x6000000,
2644 0x0,0x2e82190e,0xedbdb262,0xffe3e39b,0xffede0a2,0xfff2a3a3,0xfff5a4a4,0xfff4a4a4,0xfff1bea2,0xffebeba2,0xffdcdc93,0xde98703e,0x27160000,0x0, 2545 0x0,0x2e82190e,0xedbdb262,0xffe3e39b,0xffede0a2,0xfff2a3a3,0xfff5a4a4,0xfff4a4a4,0xfff1bea2,0xffebeba2,0xffdcdc93,0xde98703e,0x27160000,0x0,
2645 0x0,0x0,0x2970690b,0xc5a8a84d,0xffd4d18c,0xffe5aba9,0xffe9afaf,0xffe9aeae,0xffe2c3a4,0xfbc8c87a,0xba828230,0x27181600,0x0,0x0, 2546 0x0,0x0,0x2970690b,0xc5a8a84d,0xffd4d18c,0xffe5aba9,0xffe9afaf,0xffe9aeae,0xffe2c3a4,0xfbc8c87a,0xba828230,0x27181600,0x0,0x0,
2646 0x0,0x0,0x0,0x4090900,0x4666660a,0x938e4637,0xb1954747,0xb1944646,0x91765925,0x44353501,0x7000000,0x0,0x0,0x0 2547 0x0,0x0,0x0,0x4090900,0x4666660a,0x938e4637,0xb1954747,0xb1944646,0x91765925,0x44353501,0x7000000,0x0,0x0,0x0
2647}; 2548};
2648 2549
2649static const QRgb trash_data[] = { 2550static const QRgb trash_data[] = {
2650 0x3d3d5d5,0x19d7d9d9,0x45cbcbcb,0x9cbebebd,0xdab2b2b2,0xf7a5a5a6,0xcc979797,0x948b8b8c,0x67848485,0x40838384,0x5838384,0x0,0x0,0x0, 2551 0x3d3d5d5,0x19d7d9d9,0x45cbcbcb,0x9cbebebd,0xdab2b2b2,0xf7a5a5a6,0xcc979797,0x948b8b8c,0x67848485,0x40838384,0x5838384,0x0,0x0,0x0,
2651 0x51d5d5d5,0xd8dcdddd,0xffd4d4d4,0xffc2c3c3,0xffb4b5b4,0xffa5a5a5,0xff969698,0xff8c8c8d,0xfb7d7e7e,0xc5717071,0x5f676767,0x18555556,0x0,0x0, 2552 0x51d5d5d5,0xd8dcdddd,0xffd4d4d4,0xffc2c3c3,0xffb4b5b4,0xffa5a5a5,0xff969698,0xff8c8c8d,0xfb7d7e7e,0xc5717071,0x5f676767,0x18555556,0x0,0x0,
2652 0xffc8c8c8,0xffeaeaea,0xffc3c4c3,0xffb9baba,0xffafafb0,0xffa2a2a2,0xff959495,0xff8c8c8c,0xff7b7c7c,0xff676767,0xff535353,0x604e4e4e,0x0,0x0, 2553 0xffc8c8c8,0xffeaeaea,0xffc3c4c3,0xffb9baba,0xffafafb0,0xffa2a2a2,0xff959495,0xff8c8c8c,0xff7b7c7c,0xff676767,0xff535353,0x604e4e4e,0x0,0x0,
2653 0xfeabacac,0xffdbdbda,0xffd1d1d1,0xffd1d1d1,0xffc5c5c5,0xffb5b5b5,0xffa3a3a4,0xff9a999a,0xff848484,0xff626262,0xff474747,0x60414141,0x0,0x0, 2554 0xfeabacac,0xffdbdbda,0xffd1d1d1,0xffd1d1d1,0xffc5c5c5,0xffb5b5b5,0xffa3a3a4,0xff9a999a,0xff848484,0xff626262,0xff474747,0x60414141,0x0,0x0,
2654 0xd9a4a5a5,0xffc2c2c2,0xffc5c5c5,0xffc6c6c5,0xffbbbbbb,0xffaeaeae,0xff9d9d9d,0xff939393,0xff7b7b7c,0xff595959,0xff494949,0x604d4d4e,0x0,0x0, 2555 0xd9a4a5a5,0xffc2c2c2,0xffc5c5c5,0xffc6c6c5,0xffbbbbbb,0xffaeaeae,0xff9d9d9d,0xff939393,0xff7b7b7c,0xff595959,0xff494949,0x604d4d4e,0x0,0x0,
2655 0x499c9d9d,0xffa1a1a1,0xffb6b6b6,0xffb5b5b5,0xffa9aaa9,0xff9b9b9b,0xff8b8b8c,0xff7f7f7f,0xff686868,0xff4e4e4e,0x9f4b4a4b,0x18555556,0x0,0x0, 2556 0x499c9d9d,0xffa1a1a1,0xffb6b6b6,0xffb5b5b5,0xffa9aaa9,0xff9b9b9b,0xff8b8b8c,0xff7f7f7f,0xff686868,0xff4e4e4e,0x9f4b4a4b,0x18555556,0x0,0x0,
2656 0x20aeaeae,0xffbebebe,0xffededed,0xffcfcfcf,0xffababab,0xffa0a0a0,0xff939394,0xff888889,0xff696969,0xff4d4d4d,0x7f484848,0x0,0x0,0x0, 2557 0x20aeaeae,0xffbebebe,0xffededed,0xffcfcfcf,0xffababab,0xffa0a0a0,0xff939394,0xff888889,0xff696969,0xff4d4d4d,0x7f484848,0x0,0x0,0x0,
2657 0x20b1b1b1,0xffc0c0c0,0xffececec,0xffcdcdcd,0xffaaaaaa,0xff9f9f9f,0xff929393,0xff8a8a8a,0xff7a7a7a,0xff5e5e5e,0x80494949,0x0,0x0,0x0, 2558 0x20b1b1b1,0xffc0c0c0,0xffececec,0xffcdcdcd,0xffaaaaaa,0xff9f9f9f,0xff929393,0xff8a8a8a,0xff7a7a7a,0xff5e5e5e,0x80494949,0x0,0x0,0x0,
2658 0x20b0b0b0,0xffbcbcbc,0xffe0e0e0,0xffc6c6c6,0xffa9a9a9,0xff9e9e9d,0xff909190,0xff868687,0xff757575,0xff5c5c5c,0x7f4e4e4e,0x0,0x0,0x0, 2559 0x20b0b0b0,0xffbcbcbc,0xffe0e0e0,0xffc6c6c6,0xffa9a9a9,0xff9e9e9d,0xff909190,0xff868687,0xff757575,0xff5c5c5c,0x7f4e4e4e,0x0,0x0,0x0,
2659 0x20afb0af,0xffb9b9b9,0xffd4d4d4,0xffc0c0c0,0xffa8a8a8,0xff9d9d9d,0xff8f8f8e,0xff848484,0xff707070,0xff575757,0x80494949,0x1000000,0x0,0x0, 2560 0x20afb0af,0xffb9b9b9,0xffd4d4d4,0xffc0c0c0,0xffa8a8a8,0xff9d9d9d,0xff8f8f8e,0xff848484,0xff707070,0xff575757,0x80494949,0x1000000,0x0,0x0,
2660 0x20afafaf,0xffb6b6b6,0xffc9c9c9,0xffbababa,0xffa7a8a8,0xff9c9c9c,0xff8e8d8c,0xff828281,0xff6c6c6c,0xff525252,0x963c3c3c,0x26000000,0x15000000,0x4000000, 2561 0x20afafaf,0xffb6b6b6,0xffc9c9c9,0xffbababa,0xffa7a8a8,0xff9c9c9c,0xff8e8d8c,0xff828281,0xff6c6c6c,0xff525252,0x963c3c3c,0x26000000,0x15000000,0x4000000,
2661 0x20aeaeae,0xffb2b2b2,0xffbbbabb,0xffb2b2b2,0xffa7a7a7,0xff9a9a9a,0xff8b8b8b,0xff7e7e7e,0xff676767,0xff4c4c4c,0xb0302f2f,0x5c000000,0x4f000000,0x21000000, 2562 0x20aeaeae,0xffb2b2b2,0xffbbbabb,0xffb2b2b2,0xffa7a7a7,0xff9a9a9a,0xff8b8b8b,0xff7e7e7e,0xff676767,0xff4c4c4c,0xb0302f2f,0x5c000000,0x4f000000,0x21000000,
2662 0x11b0b0b0,0xa7acacac,0xffa7a7a7,0xffa9a9a9,0xffa3a3a3,0xff979798,0xff868686,0xff777777,0xff595959,0xdd3e3e3e,0x85212121,0x60000000,0x4f000000,0x1b000000, 2563 0x11b0b0b0,0xa7acacac,0xffa7a7a7,0xffa9a9a9,0xffa3a3a3,0xff979798,0xff868686,0xff777777,0xff595959,0xdd3e3e3e,0x85212121,0x60000000,0x4f000000,0x1b000000,
2663 0x2b1b2b2,0x11a9a9a9,0x219b9b9c,0x268d8d8e,0x2f6e6e6e,0x3a525252,0x433f3f3f,0x45363737,0x44282828,0x381b1b1b,0x250b0b0b,0x18000000,0xc000000,0x3000000 2564 0x2b1b2b2,0x11a9a9a9,0x219b9b9c,0x268d8d8e,0x2f6e6e6e,0x3a525252,0x433f3f3f,0x45363737,0x44282828,0x381b1b1b,0x250b0b0b,0x18000000,0xc000000,0x3000000
2664}; 2565};
2665 2566
2567static const QRgb Tux_data[] = {
2568 0x4000000,0x7000000,0xc000000,0x12000000,0x17000000,0x1b000000,0x1d000000,0x1f000000,0x1f000000,0x1f000000,0x1f000000,0x1f000000,0x1f000000,0x1f000000,
2569 0x1f000000,0x1f000000,0x1f000000,0x1f000000,0x1f000000,0x1f000000,0x1f000000,0x1f000000,0x1f000000,0x1f000000,0x1f000000,0x1f000000,0x1d000000,0x1b000000,
2570 0x17000000,0x12000000,0xc000000,0x7000000,0x7000000,0xf000000,0x18000000,0x25000000,0x2e000000,0x36000000,0x3b000000,0x3d000000,0x3d000000,0x3d000000,
2571 0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,
2572 0x3d000000,0x3d000000,0x3b000000,0x36000000,0x2e000000,0x25000000,0x18000000,0xf000000,0xc000000,0x18000000,0xff090684,0xff090682,0xff090680,0xff090680,
2573 0xff090681,0xff090681,0xff090682,0xff090683,0xff060456,0xff060454,0xff060454,0xff060454,0xff060454,0xff060454,0xff060454,0xff060454,0xff060454,0xff060454,
2574 0xff060454,0xff060454,0xff060454,0xff060457,0xff070465,0xff070467,0xff060456,0xff06034d,0xff04033a,0x3d000000,0x29000000,0x18000000,0x12000000,0x25000000,
2575 0xff090682,0xffe4f8f0,0xffd2f3e7,0xffccf1e2,0xffcdf1e2,0xffd2f3e4,0xffd9f4e7,0xffafafae,0xff9b9b9b,0xff9c9c9c,0xff9c9c9c,0xff9c9c9c,0xff9c9c9c,0xff9c9c9c,
2576 0xff9c9c9c,0xff9c9c9c,0xff9c9c9c,0xff9c9c9c,0xff9c9c9c,0xff9c9c9c,0xff9c9c9c,0xff9d9d9d,0xffb1b1b1,0xffb4b4b5,0xffa1a1a1,0xff8f8f8f,0xff04033a,0x5c000000,
2577 0x3d000000,0x25000000,0x17000000,0x2e000000,0xff08067f,0xffcff2e5,0xff97e3c7,0xff7ddcb8,0xff7fdcb7,0xff8ee0bc,0xffa1e5c3,0xff565656,0xff4f4f4f,0xff4f4f4f,
2578 0xff4f4f4f,0xff4f4f4f,0xff4f4f4f,0xff4f4f4f,0xff4f4f4f,0xff4f4f4f,0xff4f4f4f,0xff4f4f4f,0xff4f4f4f,0xff4f4f4f,0xff4f4f4f,0xff505050,0xff595858,0xff525253,
2579 0xff4e4e4e,0xff494949,0xff02011d,0x74000000,0x4e000000,0x2e000000,0x1b000000,0x36000000,0xff08067e,0xffc4efdf,0xff76d9b5,0xff50cfa0,0xff53d09f,0xff69d6a7,
2580 0xff605f5c,0xff161616,0xff161616,0xff161616,0xff161616,0xff161616,0xff161616,0xff161616,0xff161616,0xff161616,0xff161616,0xff161616,0xff161616,0xff161616,
2581 0xff161616,0xff161616,0xff161616,0xff161616,0xff151515,0xff131313,0xff010008,0x87000000,0x5a000000,0x36000000,0x1d000000,0x3b000000,0xff08067e,0xffc0eede,
2582 0xff6ad6af,0xff43cc99,0xff46cd98,0xff5fd3a0,0xff3a3937,0xff030303,0xff040404,0xff040404,0xff040404,0xff040404,0xff040404,0xff040404,0xff040404,0xff040404,
2583 0xff040404,0xff040404,0xff040404,0xff040404,0xff040404,0xff040404,0xff030303,0xff040404,0xff030303,0xff030303,0xff000001,0x93000000,0x62000000,0x3b000000,
2584 0x1f000000,0x3d000000,0xff08067e,0xffbfeedd,0xff69d6ae,0xff41cb98,0xff46cc97,0xff61d4a1,0xff2a2928,0xff000000,0xff020202,0xff020202,0xff020202,0xff020202,
2585 0xff010101,0xff000201,0xff020202,0xff020202,0xff020202,0xff020202,0xff020202,0xff020202,0xff010101,0xff050505,0xff0f0e0e,0xff060606,0xff010101,0xff010101,
2586 0xff000001,0x99000000,0x66000000,0x3d000000,0x1f000000,0x3d000000,0xff08067e,0xffbfeedd,0xff69d6ae,0xff41cb98,0xff47cc97,0xff63d4a1,0xff242523,0xff000000,
2587 0xff020202,0xff010101,0xff020202,0xff131111,0xff171515,0xff020202,0xff000201,0xff020202,0xff020202,0xff020202,0xff010101,0xff030303,0xff060606,0xff060606,
2588 0xff161615,0xff383535,0xff050505,0xff010101,0xff000001,0x99000000,0x66000000,0x3d000000,0x1f000000,0x3d000000,0xff08067e,0xffbfeedd,0xff69d6ae,0xff42cb98,
2589 0xff48cd98,0xff64d5a1,0xff20201f,0xff000000,0xff010101,0xff090909,0xff1b1918,0xff0e0e0d,0xff141414,0xff100f0f,0xff020202,0xff020202,0xff020202,0xff010101,
2590 0xff252220,0xff716d6c,0xff73706f,0xff565352,0xff1b1b1b,0xff090908,0xff0c0c0c,0xff010101,0xff000001,0x99000000,0x66000000,0x3d000000,0x1f000000,0x3d000000,
2591 0xff08067e,0xffbfeedd,0xff69d6ae,0xff42cb98,0xff48cd98,0xff64d5a2,0xff20201f,0xff000000,0xff090909,0xff7f7c7b,0xff888888,0xff797979,0xff2f2d2b,0xff020202,
2592 0xff020202,0xff020202,0xff010101,0xff181717,0xffb2b2b2,0xffa9a9a9,0xffa4a4a4,0xff9a9a9a,0xff9e9e9e,0xff383534,0xff010101,0xff010101,0xff000001,0x99000000,
2593 0x66000000,0x3d000000,0x1f000000,0x3d000000,0xff08067e,0xffbfeedd,0xff69d6ae,0xff42cb98,0xff48cd98,0xff64d5a2,0xff252423,0xff000000,0xff2e2c2a,0xffdddddd,
2594 0xffefefef,0xfff3f3f3,0xffe1e1e1,0xff1e1c1b,0xff000101,0xff020202,0xff010101,0xff6f6866,0xfff3f3f3,0xffeaeaea,0xff7d7d7d,0xff8a8a8a,0xffdcdcdc,0xffbcbcbe,
2595 0xff0d0c0c,0xff000000,0xff000001,0x99000000,0x66000000,0x3d000000,0x1f000000,0x3d000000,0xff08067e,0xffbfeedd,0xff69d6ae,0xff42cb98,0xff48cd98,0xff64d5a2,
2596 0xff252624,0xff000000,0xff5f5856,0xfff3f3f3,0xff868686,0xff8b8b8b,0xfffefefe,0xff6a6663,0xff010101,0xff010101,0xff030303,0xffb9b3b0,0xffffffff,0xff595959,
2597 0xff000000,0xff050505,0xff949494,0xffebebee,0xff2f2c2d,0xff000000,0xff000001,0x99000000,0x66000000,0x3d000000,0x1f000000,0x3d000000,0xff08067e,0xffbfeedd,
2598 0xff69d6ae,0xff42cb98,0xff48cd98,0xff64d5a2,0xff282826,0xff000000,0xff837c78,0xff6d6d6d,0xff050505,0xff202020,0xff868686,0xff908c88,0xff020202,0xff060606,
2599 0xff0b0a09,0xffbfbab8,0xffd4d4d4,0xff070707,0xff030303,0xff282828,0xff3f3f3f,0xffebebee,0xff504c4e,0xff000000,0xff000001,0x99000000,0x66000000,0x3d000000,
2600 0x1f000000,0x3d000000,0xff08067e,0xffbfeedd,0xff69d6ae,0xff42cb98,0xff48cd98,0xff64d5a2,0xff2b2c2a,0xff000000,0xff837c7a,0xff484848,0xff020202,0xff1b1b1b,
2601 0xff525252,0xff757072,0xff020202,0xff050505,0xff070707,0xff837d7f,0xffc7c7c7,0xff090909,0xff080808,0xff0b0b0b,0xff1c1c1c,0xffeaeaed,0xff575255,0xff000000,
2602 0xff000001,0x99000000,0x66000000,0x3d000000,0x1f000000,0x3d000000,0xff08067e,0xffbfeedd,0xff69d6ae,0xff42cb98,0xff48cd98,0xff64d5a2,0xff31302f,0xff000000,
2603 0xff6d6765,0xff636363,0xff020202,0xff000000,0xff524f47,0xff9f8948,0xff7e6717,0xff8b741b,0xff5f4f20,0xff968343,0xffddd3a1,0xff101010,0xff050505,0xff020202,
2604 0xff383838,0xffebebee,0xff443f42,0xff000000,0xff000001,0x99000000,0x66000000,0x3d000000,0x1f000000,0x3d000000,0xff08067e,0xffbfeedd,0xff69d6ae,0xff42cb98,
2605 0xff48cd98,0xff64d5a2,0xff363634,0xff000000,0xff44403e,0xffa1a1a1,0xff020202,0xff39362b,0xffb89421,0xffc7a21f,0xfff2c711,0xfff0c915,0xffd1b333,0xffc2a228,
2606 0xffe8bf12,0xff97833d,0xff353229,0xff0e0e0e,0xffa8a8a8,0xffebebee,0xff1d1b1c,0xff000000,0xff000001,0x99000000,0x66000000,0x3d000000,0x1f000000,0x3d000000,
2607 0xff08067e,0xffbfeedd,0xff69d6ae,0xff42cb98,0xff48cd98,0xff64d5a2,0xff3a3937,0xff000000,0xff0b0b0b,0xffc6c7cd,0xffa28f5a,0xffd3a200,0xffe4b200,0xffe7bb10,
2608 0xffe9c51f,0xffeac827,0xffedcc2c,0xffefcd2e,0xffedcc2c,0xffe9bf0c,0xffe2b70b,0xffcda833,0xffeccd91,0xff938577,0xff030304,0xff000000,0xff000001,0x99000000,
2609 0x66000000,0x3d000000,0x1f000000,0x3d000000,0xff08067e,0xffbfeedd,0xff69d6ae,0xff42cb98,0xff48cd98,0xff64d5a1,0xff42413e,0xff000101,0xff000000,0xff564a2d,
2610 0xffd6a200,0xffdca900,0xffe4b600,0xffe6be14,0xffe9c521,0xffedcc2d,0xffeed436,0xfff2d949,0xfff5e164,0xfff3dc51,0xffeecc27,0xffe6b700,0xffd5a200,0xff9d6d05,
2611 0xff241c0f,0xff000000,0xff000001,0x99000000,0x66000000,0x3d000000,0x1f000000,0x3d000000,0xff08067e,0xffbfeedd,0xff69d6ae,0xff42cb98,0xff47cc98,0xff64d5a1,
2612 0xff474642,0xff000000,0xff14110d,0xffa07300,0xffcd9800,0xffddaa00,0xffe6b300,0xffe7bb10,0xffe9c51f,0xffecca28,0xffedce2e,0xfff4db58,0xfffae97f,0xfff0d547,
2613 0xffeec310,0xffae8a0e,0xff564214,0xffa37605,0xff3c2f11,0xff000000,0xff000001,0x99000000,0x66000000,0x3d000000,0x1f000000,0x3d000000,0xff08067e,0xffbfeedd,
2614 0xff69d6ae,0xff41cb98,0xff47cc97,0xff62d4a1,0xff4b4a47,0xff000000,0xff3c2e17,0xffbe8600,0xffc79400,0xffd9a700,0xffe3b200,0xffe6b90d,0xffe9c018,0xffe9c51f,
2615 0xffefd135,0xfff5e462,0xfff3d644,0xffeec30c,0xffb08c14,0xff624e17,0xffa2780b,0xffb68400,0xff2e2411,0xff000000,0xff000001,0x99000000,0x66000000,0x3d000000,
2616 0x1f000000,0x3d000000,0xff08067e,0xffbfeedd,0xff69d6ae,0xff41cb98,0xff46cc97,0xff62d4a1,0xff504f4c,0xff010101,0xff2d2414,0xff815c0e,0xffb68700,0xffd5a100,
2617 0xffe2b100,0xffe7b700,0xffe9bc0f,0xffecc214,0xfff8d625,0xfff2cf26,0xffb6941c,0xff6e561b,0xff785d18,0xffd3a100,0xffcb9700,0xffaf7b00,0xff1f1a0e,0xff000000,
2618 0xff000001,0x99000000,0x66000000,0x3d000000,0x1f000000,0x3d000000,0xff08067e,0xffbfeedd,0xff69d6ae,0xff41cb98,0xff46cc98,0xff61d4a1,0xff595854,0xff020202,
2619 0xff070706,0xff523f20,0xff755414,0xff7f6213,0xffac8408,0xffbf9500,0xffc09809,0xffba9413,0xff886d1b,0xff5c4b1a,0xff5f4918,0xff9d7610,0xffe2ae00,0xffce9d00,
2620 0xffc6992b,0xffbfa262,0xff242120,0xff000000,0xff000001,0x99000000,0x66000000,0x3d000000,0x1f000000,0x3d000000,0xff08067e,0xffc0eedd,0xff6ad7ae,0xff44cc99,
2621 0xff48cd98,0xff64d5a1,0xff82ddad,0xff030303,0xff020202,0xff96928d,0xffbe9643,0xff926407,0xff795d15,0xff7b6820,0xff7c661f,0xff7e681f,0xff957819,0xffbc920e,
2622 0xffe3af00,0xffe0ac00,0xffcf9d00,0xffd0b262,0xffcecbc3,0xffc3c3c6,0xff716f77,0xff020203,0xff000000,0x99000000,0x66000000,0x3d000000,0x1f000000,0x3d000000,
2623 0xff08067e,0xffc0eddd,0xff6cd5af,0xff49cb99,0xff4ecd9a,0xff69d4a3,0xff494845,0xff010101,0xff090908,0xffcbcbce,0xffdad2c5,0xffba8d2a,0xffb77f00,0xffd8a90b,
2624 0xffecc110,0xffeaba00,0xffdcad00,0xffd3a100,0xffcc9800,0xffcb9b15,0xffd4bf87,0xffd2d2d2,0xffd3d3d3,0xffc9c9cc,0xff9696a0,0xff08080a,0xff000000,0x99000000,
2625 0x66000000,0x3d000000,0x1f000000,0x3d000000,0xff08067c,0xffbee8da,0xff6dcdaa,0xff4bc094,0xff53c293,0xff6cc89d,0xff0f0f0f,0xff000000,0xff060606,0xffbab6b8,
2626 0xffd0d0d3,0xffcbc3ba,0xffaf8735,0xffa07100,0xffaa7a00,0xffad7e00,0xffb08000,0xffb88d22,0xffcaaf71,0xffcfc8be,0xffcbcbcd,0xffcdcdcf,0xffdedee1,0xffd8d8de,
2627 0xffa0a0ac,0xff1d1c21,0xff000000,0x99000000,0x66000000,0x3d000000,0x1d000000,0x3b000000,0xff080577,0xffb7d6cd,0xff69af98,0xff45987c,0xff489579,0xff1a1a1b,
2628 0xff000000,0xff010101,0xff080707,0xffa0a0a9,0xffababb5,0xff9e9ea7,0xffa0a0a9,0xff95866e,0xff907b52,0xff927d55,0xff9a8c75,0xff9e9da2,0xff9e9ea7,0xff9e9ea7,
2629 0xffa2a2ac,0xffacacb7,0xffafafba,0xffa3a3b0,0xff7c7c8f,0xff3e3d4f,0xff000002,0x93000000,0x62000000,0x3b000000,0x1b000000,0x36000000,0xff070568,0xff98b4ae,
2630 0xff59736d,0xff314e48,0xff202025,0xff010101,0xff000000,0xff000000,0xff232227,0xff65657a,0xff65657a,0xff616174,0xff5f5f72,0xff5e5e71,0xff5e5e71,0xff5e5e71,
2631 0xff5e5e71,0xff5f5f72,0xff5f5f72,0xff616174,0xff646478,0xff656579,0xff646479,0xff5e5e74,0xff4d4d65,0xff40405a,0xff01000c,0x87000000,0x5a000000,0x36000000,
2632 0x17000000,0x2e000000,0xff050451,0xff050343,0xff030226,0xff020117,0xff000005,0xff000000,0xff000000,0xff000002,0xff030238,0xff040242,0xff040241,0xff040241,
2633 0xff040240,0xff040240,0xff040240,0xff040240,0xff040240,0xff040240,0xff040241,0xff040241,0xff040241,0xff040241,0xff040241,0xff040241,0xff040240,0xff040242,
2634 0xff03022c,0x74000000,0x4e000000,0x2e000000,0x12000000,0x25000000,0x3d000000,0x5c000000,0x74000000,0x87000000,0x93000000,0x99000000,0x99000000,0x99000000,
2635 0x99000000,0x99000000,0x99000000,0x99000000,0x99000000,0x99000000,0x99000000,0x99000000,0x99000000,0x99000000,0x99000000,0x99000000,0x99000000,0x99000000,
2636 0x99000000,0x99000000,0x93000000,0x87000000,0x74000000,0x5c000000,0x3d000000,0x25000000,0xc000000,0x18000000,0x29000000,0x3d000000,0x4d000000,0x5a000000,
2637 0x62000000,0x66000000,0x66000000,0x66000000,0x66000000,0x66000000,0x66000000,0x66000000,0x66000000,0x66000000,0x66000000,0x66000000,0x66000000,0x66000000,
2638 0x66000000,0x66000000,0x66000000,0x66000000,0x66000000,0x66000000,0x62000000,0x5a000000,0x4d000000,0x3d000000,0x29000000,0x18000000,0x7000000,0xf000000,
2639 0x18000000,0x25000000,0x2e000000,0x36000000,0x3b000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,
2640 0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3b000000,0x36000000,0x2e000000,0x25000000,
2641 0x18000000,0xf000000
2642};
2643
2666static const QRgb txt_data[] = { 2644static const QRgb txt_data[] = {
2667 0xffd6dfed,0xffe5eaf4,0xffe5eaf4,0xffe5eaf4,0xffe3eaf4,0xffdae3f2,0xf9c5cedc,0x49c3b4a9,0x8d28357,0x0,0x0,0x0,0x0,0x0, 2645 0xffd6dfed,0xffe5eaf4,0xffe5eaf4,0xffe5eaf4,0xffe3eaf4,0xffdae3f2,0xf9c5cedc,0x49c3b4a9,0x8d28357,0x0,0x0,0x0,0x0,0x0,
2668 0xffe4eaf4,0xffffffff,0xffffffff,0xffffffff,0xfffbfeff,0xffedf3fd,0xffe5ce80,0xfbf8cf69,0xafebb785,0x14a74a17,0x0,0x0,0x0,0x0, 2646 0xffe4eaf4,0xffffffff,0xffffffff,0xffffffff,0xfffbfeff,0xffedf3fd,0xffe5ce80,0xfbf8cf69,0xafebb785,0x14a74a17,0x0,0x0,0x0,0x0,
2669 0xffe4eaf4,0xffffffff,0xffffffff,0xffffffff,0xfffeffff,0xfff3f1ed,0xfff8d625,0xfffeb006,0xfbe99141,0x5c9f8f93,0x0,0x0,0x0,0x0, 2647 0xffe4eaf4,0xffffffff,0xffffffff,0xffffffff,0xfffeffff,0xfff3f1ed,0xfff8d625,0xfffeb006,0xfbe99141,0x5c9f8f93,0x0,0x0,0x0,0x0,
2670 0xffe4eaf4,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfff8e59f,0xfffdcd09,0xfffc9e10,0xffc49277,0xf89dadc9,0x1a515b6b,0x0,0x0,0x0, 2648 0xffe4eaf4,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfff8e59f,0xfffdcd09,0xfffc9e10,0xffc49277,0xf89dadc9,0x1a515b6b,0x0,0x0,0x0,
2671 0xffe4eaf4,0xffffffff,0xffffffff,0xffffffff,0xfffefaf3,0xfffcdb44,0xfffec219,0xffef9234,0xffc1bfcc,0xffa7b6d0,0x26373e4a,0x0,0x0,0x0, 2649 0xffe4eaf4,0xffffffff,0xffffffff,0xffffffff,0xfffefaf3,0xfffcdb44,0xfffec219,0xffef9234,0xffc1bfcc,0xffa7b6d0,0x26373e4a,0x0,0x0,0x0,
2672 0xffe4eaf4,0xffffffff,0xffffffff,0xffffffff,0xfffdedbb,0xfffdd82e,0xfffeb832,0xffdaa27b,0xffccd8eb,0xffafbed6,0x26373e4a,0x0,0x0,0x0, 2650 0xffe4eaf4,0xffffffff,0xffffffff,0xffffffff,0xfffdedbb,0xfffdd82e,0xfffeb832,0xffdaa27b,0xffccd8eb,0xffafbed6,0x26373e4a,0x0,0x0,0x0,
2673 0xffe4eaf4,0xffffffff,0xffffffff,0xfffefdfb,0xfffbe072,0xfffed342,0xfff6a845,0xffd7d0d7,0xffd6e0f1,0xffb6c3d9,0x26373e4a,0x100001f,0x800001f,0x600001e, 2651 0xffe4eaf4,0xffffffff,0xffffffff,0xfffefdfb,0xfffbe072,0xfffed342,0xfff6a845,0xffd7d0d7,0xffd6e0f1,0xffb6c3d9,0x26373e4a,0x100001f,0x800001f,0x600001e,
2674 0xffe4eaf4,0xffffffff,0xffffffff,0xfff7eed3,0xfffde35e,0xfffecd5c,0xffe4b184,0xffe1e9f7,0xffdce4f3,0xffb5c1d7,0x35262b3d,0x1a00001d,0x1d00001b,0x1b00001a, 2652 0xffe4eaf4,0xffffffff,0xffffffff,0xfff7eed3,0xfffde35e,0xfffecd5c,0xffe4b184,0xffe1e9f7,0xffdce4f3,0xffb5c1d7,0x35262b3d,0x1a00001d,0x1d00001b,0x1b00001a,
2675 0xffe4eaf4,0xffffffff,0xfffcfeff,0xfff7dead,0xfffee483,0xfff6c471,0xffdecdc9,0xffd7deec,0xffcdd4e5,0xffaab5cb,0x3e1f2236,0x1e00001a,0x1e00001a,0x1c00001a, 2653 0xffe4eaf4,0xffffffff,0xfffcfeff,0xfff7dead,0xfffee483,0xfff6c471,0xffdecdc9,0xffd7deec,0xffcdd4e5,0xffaab5cb,0x3e1f2236,0x1e00001a,0x1e00001a,0x1c00001a,
2676 0xffe4eaf4,0xffffffff,0xfffbffff,0xffecd3b7,0xfff7dfc0,0xffd6baa9,0xffd3d7e4,0xffcfd6e5,0xffccd3e3,0xffabb6cc,0x3d1f2336,0x17000018,0xf000016,0x7000010, 2654 0xffe4eaf4,0xffffffff,0xfffbffff,0xffecd3b7,0xfff7dfc0,0xffd6baa9,0xffd3d7e4,0xffcfd6e5,0xffccd3e3,0xffabb6cc,0x3d1f2336,0x17000018,0xf000016,0x7000010,
2677 0xffe4eaf4,0xffffffff,0xfffafeff,0xffc8b7af,0xffc2aea9,0xffd7dce6,0xffd4dae7,0xffd0d7e6,0xffd1d8e7,0xffb5c0d6,0x2a303643,0x2000007,0x0,0x0, 2655 0xffe4eaf4,0xffffffff,0xfffafeff,0xffc8b7af,0xffc2aea9,0xffd7dce6,0xffd4dae7,0xffd0d7e6,0xffd1d8e7,0xffb5c0d6,0x2a303643,0x2000007,0x0,0x0,
2678 0xffe4eaf4,0xfffeffff,0xfff9feff,0xffece9eb,0xffeaf0f7,0xffe6ecf6,0xffe0e6f3,0xffe2e9f6,0xffe2eaf8,0xffbecadf,0x26373e4a,0x0,0x0,0x0, 2656 0xffe4eaf4,0xfffeffff,0xfff9feff,0xffece9eb,0xffeaf0f7,0xffe6ecf6,0xffe0e6f3,0xffe2e9f6,0xffe2eaf8,0xffbecadf,0x26373e4a,0x0,0x0,0x0,
2679 0xffcdd7e6,0xffd8dee7,0xffd4dde7,0xffd2dbe7,0xffd0d9e7,0xffced7e6,0xffcad4e5,0xffc6d1e3,0xffc4cfe2,0xffacb9d1,0x26373e4a,0x0,0x0,0x0, 2657 0xffcdd7e6,0xffd8dee7,0xffd4dde7,0xffd2dbe7,0xffd0d9e7,0xffced7e6,0xffcad4e5,0xffc6d1e3,0xffc4cfe2,0xffacb9d1,0x26373e4a,0x0,0x0,0x0,
2680 0x2c737d8f,0x364e5868,0x364e5868,0x364e5868,0x364e5868,0x364e5868,0x364e5868,0x364e5868,0x364e5868,0x364e5868,0x10111316,0x0,0x0,0x0 2658 0x2c737d8f,0x364e5868,0x364e5868,0x364e5868,0x364e5868,0x364e5868,0x364e5868,0x364e5868,0x364e5868,0x364e5868,0x10111316,0x0,0x0,0x0
2681}; 2659};
2682 2660
2683static const QRgb underline_data[] = { 2661static const QRgb underline_data[] = {
2684 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 2662 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
2685 0x0,0x0,0x18000000,0x40000000,0x40000000,0x40000000,0x8000000,0x0,0x10000000,0x40000000,0x40000000,0x18000000,0x0,0x0, 2663 0x0,0x0,0x18000000,0x40000000,0x40000000,0x40000000,0x8000000,0x0,0x10000000,0x40000000,0x40000000,0x18000000,0x0,0x0,
2686 0x0,0x0,0x3c000000,0xcf000000,0xff000000,0xb7000000,0x14000000,0x0,0x28000000,0xc3000000,0xcf000000,0x3c000000,0x0,0x0, 2664 0x0,0x0,0x3c000000,0xcf000000,0xff000000,0xb7000000,0x14000000,0x0,0x28000000,0xc3000000,0xcf000000,0x3c000000,0x0,0x0,
2687 0x0,0x0,0x0,0x7f000000,0xff000000,0x40000000,0x0,0x0,0x0,0x60000000,0x7f000000,0x0,0x0,0x0, 2665 0x0,0x0,0x0,0x7f000000,0xff000000,0x40000000,0x0,0x0,0x0,0x60000000,0x7f000000,0x0,0x0,0x0,
2688 0x0,0x0,0x0,0x7f000000,0xff000000,0x40000000,0x0,0x0,0x0,0x60000000,0x7f000000,0x0,0x0,0x0, 2666 0x0,0x0,0x0,0x7f000000,0xff000000,0x40000000,0x0,0x0,0x0,0x60000000,0x7f000000,0x0,0x0,0x0,
2689 0x0,0x0,0x0,0x7f000000,0xff000000,0x40000000,0x0,0x0,0x0,0x60000000,0x7f000000,0x0,0x0,0x0, 2667 0x0,0x0,0x0,0x7f000000,0xff000000,0x40000000,0x0,0x0,0x0,0x60000000,0x7f000000,0x0,0x0,0x0,
2690 0x0,0x0,0x0,0x7f000000,0xff000000,0x40000000,0x0,0x0,0x0,0x60000000,0x7f000000,0x0,0x0,0x0, 2668 0x0,0x0,0x0,0x7f000000,0xff000000,0x40000000,0x0,0x0,0x0,0x60000000,0x7f000000,0x0,0x0,0x0,
2691 0x0,0x0,0x0,0x80000000,0xff000000,0x40000000,0x0,0x0,0x0,0x60000000,0x80000000,0x0,0x0,0x0, 2669 0x0,0x0,0x0,0x80000000,0xff000000,0x40000000,0x0,0x0,0x0,0x60000000,0x80000000,0x0,0x0,0x0,
2692 0x0,0x0,0x0,0x7f000000,0xff000000,0x40000000,0x0,0x0,0x0,0x60000000,0x7f000000,0x0,0x0,0x0, 2670 0x0,0x0,0x0,0x7f000000,0xff000000,0x40000000,0x0,0x0,0x0,0x60000000,0x7f000000,0x0,0x0,0x0,
2693 0x0,0x0,0x0,0x50000000,0xdb000000,0x87000000,0xc000000,0x0,0x18000000,0x78000000,0x50000000,0x0,0x0,0x0, 2671 0x0,0x0,0x0,0x50000000,0xdb000000,0x87000000,0xc000000,0x0,0x18000000,0x78000000,0x50000000,0x0,0x0,0x0,
2694 0x0,0x0,0x0,0x0,0x50000000,0xdf000000,0x8f000000,0x7f000000,0x7f000000,0x50000000,0x0,0x0,0x0,0x0, 2672 0x0,0x0,0x0,0x0,0x50000000,0xdf000000,0x8f000000,0x7f000000,0x7f000000,0x50000000,0x0,0x0,0x0,0x0,
2695 0x0,0x0,0x0,0x0,0x0,0x48000000,0x60000000,0x60000000,0x48000000,0x0,0x0,0x0,0x0,0x0, 2673 0x0,0x0,0x0,0x0,0x0,0x48000000,0x60000000,0x60000000,0x48000000,0x0,0x0,0x0,0x0,0x0,
2696 0x0,0x0,0x48000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0x48000000,0x0,0x0, 2674 0x0,0x0,0x48000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0x48000000,0x0,0x0,
2697 0x0,0x0,0xc000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0xc000000,0x0,0x0 2675 0x0,0x0,0xc000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0xc000000,0x0,0x0
2698}; 2676};
2699 2677
2700static const QRgb undo_data[] = { 2678static const QRgb undo_data[] = {
2701 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 2679 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
2702 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 2680 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
2703 0x0,0x0,0x0,0x1616ad00,0x4018ab00,0x2000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 2681 0x0,0x0,0x0,0x1616ad00,0x4018ab00,0x2000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
2704 0x0,0x0,0x19009a00,0xc927b325,0xf356c852,0x65058f04,0x4003500,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 2682 0x0,0x0,0x19009a00,0xc927b325,0xf356c852,0x65058f04,0x4003500,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
2705 0x0,0x1f008f00,0xc616ab16,0xff75f075,0xff89fc89,0xf63ac63a,0x67038503,0x2000000,0x0,0x0,0x0,0x0,0x0,0x0, 2683 0x0,0x1f008f00,0xc616ab16,0xff75f075,0xff89fc89,0xf63ac63a,0x67038503,0x2000000,0x0,0x0,0x0,0x0,0x0,0x0,
2706 0x1d008300,0xc406a306,0xff2aec2a,0xff39ff39,0xff39ff39,0xff36fc36,0xf611c111,0x63007600,0x2000000,0x0,0x0,0x0,0x0,0x0, 2684 0x1d008300,0xc406a306,0xff2aec2a,0xff39ff39,0xff39ff39,0xff36fc36,0xf611c111,0x63007600,0x2000000,0x0,0x0,0x0,0x0,0x0,
2707 0xca007f00,0xff01b001,0xff03c403,0xff03f003,0xff03f903,0xff03d803,0xff02c102,0xf3008c00,0x53006700,0x2000000,0x0,0x0,0x0,0x0, 2685 0xca007f00,0xff01b001,0xff03c403,0xff03f003,0xff03f903,0xff03d803,0xff02c102,0xf3008c00,0x53006700,0x2000000,0x0,0x0,0x0,0x0,
2708 0x2a004700,0x3d003600,0x75005c00,0xfc00c000,0xff00e800,0xff00c200,0xb1006600,0x44003500,0x24001d00,0x3000000,0x0,0x1006600,0x27006c00,0xb6006f00, 2686 0x2a004700,0x3d003600,0x75005c00,0xfc00c000,0xff00e800,0xff00c200,0xb1006600,0x44003500,0x24001d00,0x3000000,0x0,0x1006600,0x27006c00,0xb6006f00,
2709 0x1000000,0x2000000,0x13005600,0xe7008a00,0xff00d600,0xff00d700,0xfd00a800,0xa1006d00,0x43005a00,0x2a005c00,0x3a005f00,0x83006b00,0xe1006900,0x86004e00, 2687 0x1000000,0x2000000,0x13005600,0xe7008a00,0xff00d600,0xff00d700,0xfd00a800,0xa1006d00,0x43005a00,0x2a005c00,0x3a005f00,0x83006b00,0xe1006900,0x86004e00,
2710 0x0,0x0,0x0,0x6d005d00,0xfd009a00,0xff00c600,0xff00c700,0xff00b700,0xfa009d00,0xef009200,0xf9009a00,0xfa008100,0xa0004f00,0x23000e00, 2688 0x0,0x0,0x0,0x6d005d00,0xfd009a00,0xff00c600,0xff00c700,0xff00b700,0xfa009d00,0xef009200,0xf9009a00,0xfa008100,0xa0004f00,0x23000e00,
2711 0x0,0x0,0x0,0x6003300,0x74005500,0xec007b00,0xfd009d00,0xff00a800,0xff00a600,0xfb009200,0xdb006b00,0x71003c00,0x1e000800,0x3000000, 2689 0x0,0x0,0x0,0x6003300,0x74005500,0xec007b00,0xfd009d00,0xff00a800,0xff00a600,0xfb009200,0xdb006b00,0x71003c00,0x1e000800,0x3000000,
2712 0x0,0x0,0x0,0x0,0x3000000,0x26003100,0x69004700,0x7c004600,0x7b004500,0x5f003900,0x26000c00,0xc000000,0x1000000,0x0, 2690 0x0,0x0,0x0,0x0,0x3000000,0x26003100,0x69004700,0x7c004600,0x7b004500,0x5f003900,0x26000c00,0xc000000,0x1000000,0x0,
2713 0x0,0x0,0x0,0x0,0x0,0x0,0x3000000,0x5000000,0x5000000,0x4000000,0x1000000,0x0,0x0,0x0, 2691 0x0,0x0,0x0,0x0,0x0,0x0,0x3000000,0x5000000,0x5000000,0x4000000,0x1000000,0x0,0x0,0x0,
2714 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0 2692 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0
2715}; 2693};
2716 2694
2717static const QRgb uninstall_data[] = {
2718 0x0,0x0,0x0,0xdffae00,0x55ffbd19,0xc3ffcf30,0x9df7bc1b,0xce89a00,0x74fbb81d,0x76f6b41f,0xbe79100,0x0,0x0,0x0,
2719 0xffae00,0xcffb30b,0x3fffbf27,0xa9ffd045,0xedffeb6a,0xfefff86c,0xf3fdd83b,0x98f1b21f,0xeefee567,0xf1fbe459,0x86edab1c,0x13db8405,0xcb7100,0x0,
2720 0xbffae00,0x84ffc43a,0xebffe37f,0xfffffa9d,0xfffffc86,0xffffe957,0xfffed333,0xfffbbe27,0xfffce967,0xfffff865,0xfaf9d43d,0x9ae69813,0x1bd47704,0xd26800,
2721 0x15ffae00,0x95fec845,0xfefff4a6,0xffffee82,0xffffd33c,0xffffd231,0xffffe549,0xfffec927,0xfff8bf27,0xfff9d43f,0xffffdb3d,0xfcf9bc20,0xa7dc8207,0x15ad5300,
2722 0x93fdb00a,0xc1fec233,0xfcffc739,0xffffc120,0xffffcf2d,0xffffe245,0xfffff25a,0xfffbce39,0xfff5b731,0xffeba025,0xfff0ab21,0xf7efa513,0x91ba6704,0x164f2500,
2723 0x2df0a80c,0xb3fac63d,0xfbffda50,0xfffec523,0xfffed839,0xfffee851,0xfff4c253,0xffe76c3b,0xffe97158,0xffe7725c,0xffd95932,0xeecf5e0d,0x9dbe5a03,0x45af4600,
2724 0x0,0x29f2aa0a,0xd3fbc021,0xfffcd236,0xfff9c62c,0xfff3b844,0xffe65745,0xfffcb3b3,0xffffcaca,0xffffcbcb,0xfffbbcbc,0xfedc5e50,0xc2b63e09,0x487b3000,
2725 0x0,0x10f9a806,0xbffbb20f,0xfff9b416,0xfff2a414,0xffe14617,0xfffb7e7e,0xffffeaea,0xffffc3c3,0xffffbdbd,0xffffe8e8,0xfff97b7b,0xc1c71c1c,0x14980000,
2726 0x0,0x10f4a50c,0xbffabc1f,0xfffed131,0xfff3ac27,0xffe8361d,0xffff4e4e,0xffff9393,0xffffecec,0xffffeded,0xfff87b7b,0xfff31212,0xe2d50202,0x2f9c0000,
2727 0x0,0xeed990a,0xb3f3b324,0xfefedf47,0xfff5c441,0xffe72a13,0xffff1616,0xffff7070,0xffffe8e8,0xfffeebeb,0xfff86b6b,0xfff50606,0xe4d60000,0x31980000,
2728 0x0,0x2e78800,0x38de890b,0xcfeaae2d,0xfef7db56,0xffe14e22,0xfffc1f1f,0xffffd1d1,0xffff8181,0xffff7373,0xffffd4d4,0xfffa2f2f,0xc2c30303,0x158e0000,
2729 0x0,0x0,0x1be6800,0x2ccc7308,0xbfe09c31,0xfce69d52,0xffdf3127,0xfffc5050,0xffff3737,0xffff3434,0xfffc5151,0xe9d51f1f,0x57a50606,0x18c0000,
2730 0x0,0x0,0x0,0x1b55a00,0x26c2640c,0xacd58030,0xebd06731,0xdbc5231c,0xe4dc3232,0xe4dd3434,0xc2c42222,0x57a50d0d,0x98e0202,0x0,
2731 0x0,0x0,0x0,0x0,0x0,0x1bae4501,0x4e933902,0x27650900,0x31940505,0x30980606,0x158d0000,0x18b0000,0x0,0x0
2732};
2733
2734static const QRgb uninstalled_data[] = { 2695static const QRgb uninstalled_data[] = {
2735 0x0,0x0,0x0,0x0,0xffae00,0x18fdaf06,0x84febf2b,0xebfdce4b,0x6cefb119,0x6966500,0x0,0x0,0x0,0x0, 2696 0x0,0x0,0x0,0x0,0xffae00,0x18fdaf06,0x84febf2b,0xebfdce4b,0x6cefb119,0x6966500,0x0,0x0,0x0,0x0,
2736 0x0,0x0,0x0,0xffdad00,0x6efebe30,0xdeffda77,0xfffff7aa,0xfffbf087,0xf8fde757,0x83eaa914,0x9976000,0x0,0x0,0x0, 2697 0x0,0x0,0x0,0xffdad00,0x6efebe30,0xdeffda77,0xfffff7aa,0xfffbf087,0xf8fde757,0x83eaa914,0x9976000,0x0,0x0,0x0,
2737 0x0,0x6fbab00,0x53feb10e,0xcfffd478,0xfefff3c3,0xffffffc3,0xffffff9f,0xfff5e265,0xfffff660,0xfcfcd539,0x93e3960a,0xa955800,0x0,0x0, 2698 0x0,0x6fbab00,0x53feb10e,0xcfffd478,0xfefff3c3,0xffffffc3,0xffffff9f,0xfff5e265,0xfffff660,0xfcfcd539,0x93e3960a,0xa955800,0x0,0x0,
2738 0x0,0x93ffbe2f,0xfbffe4a8,0xfffff7d9,0xfffdf3b3,0xfffaed8e,0xfff5e36a,0xfff8d542,0xffffde40,0xfffed233,0xfdfbba1a,0xa5dd8502,0x139f5600,0x0, 2699 0x0,0x93ffbe2f,0xfbffe4a8,0xfffff7d9,0xfffdf3b3,0xfffaed8e,0xfff5e36a,0xfff8d542,0xffffde40,0xfffed233,0xfdfbba1a,0xa5dd8502,0x139f5600,0x0,
2739 0x0,0xafffba23,0xffffc850,0xfffff9be,0xffffffa7,0xffffff83,0xfffffa66,0xffffd534,0xfffdca28,0xfff8b417,0xfff6a408,0xfff29900,0x9fd27500,0x6000000, 2700 0x0,0xafffba23,0xffffc850,0xfffff9be,0xffffffa7,0xffffff83,0xfffffa66,0xffffd534,0xfffdca28,0xfff8b417,0xfff6a408,0xfff29900,0x9fd27500,0x6000000,
2740 0x0,0xafffbc25,0xffffb106,0xffffc736,0xfffff77b,0xfffffb6a,0xffffe84d,0xffffd434,0xffffc824,0xffffb70e,0xffffad01,0xffffac00,0xbed67e00,0xd000000, 2701 0x0,0xafffbc25,0xffffb106,0xffffc736,0xfffff77b,0xfffffb6a,0xffffe84d,0xffffd434,0xffffc824,0xffffb70e,0xffffad01,0xffffac00,0xbed67e00,0xd000000,
2741 0x0,0xafffc12b,0xffffbf19,0xffffc01a,0xffffcd2e,0xffffe84f,0xfffdd538,0xffffca27,0xffffbd15,0xffffb60d,0xffffb40b,0xffffb309,0xbed37d04,0xd000000, 2702 0x0,0xafffc12b,0xffffbf19,0xffffc01a,0xffffcd2e,0xffffe84f,0xfffdd538,0xffffca27,0xffffbd15,0xffffb60d,0xffffb40b,0xffffb309,0xbed37d04,0xd000000,
2742 0x0,0xafffc732,0xffffd02e,0xffffd02e,0xffffd12f,0xffffd435,0xfffed03c,0xffffc823,0xffffc621,0xffffc520,0xffffc41e,0xffffc21d,0xbed0800e,0xd000000, 2703 0x0,0xafffc732,0xffffd02e,0xffffd02e,0xffffd12f,0xffffd435,0xfffed03c,0xffffc823,0xffffc621,0xffffc520,0xffffc41e,0xffffc21d,0xbed0800e,0xd000000,
2743 0x0,0xaffdc938,0xffffdf41,0xffffe042,0xffffe143,0xffffe144,0xffffde4a,0xffffd635,0xffffd534,0xffffd433,0xffffd231,0xffffd12f,0xbece8417,0xd000000, 2704 0x0,0xaffdc938,0xffffdf41,0xffffe042,0xffffe143,0xffffe144,0xffffde4a,0xffffd635,0xffffd534,0xffffd433,0xffffd231,0xffffd12f,0xbece8417,0xd000000,
2744 0x0,0x97f6b51f,0xfffee44b,0xffffef56,0xfffff057,0xfffff157,0xffffeb5a,0xffffe548,0xffffe347,0xffffe245,0xffffe144,0xffffe042,0xbecd891f,0xd000000, 2705 0x0,0x97f6b51f,0xfffee44b,0xffffef56,0xfffff057,0xfffff157,0xffffeb5a,0xffffe548,0xffffe347,0xffffe245,0xffffe144,0xffffe042,0xbecd891f,0xd000000,
2745 0x0,0x16bb7601,0xafe5a218,0xfefbeb5b,0xfffffd6d,0xfffffe6e,0xfffff76b,0xfffff45b,0xfffff35a,0xfffff158,0xfffeee56,0xfcf1cd44,0xa7b76916,0xc000000, 2706 0x0,0x16bb7601,0xafe5a218,0xfefbeb5b,0xfffffd6d,0xfffffe6e,0xfffff76b,0xfffff45b,0xfffff35a,0xfffff158,0xfffeee56,0xfcf1cd44,0xa7b76916,0xc000000,
2746 0x0,0x0,0xd784600,0xa2db911d,0xfcf6e06f,0xffffff94,0xfffffd85,0xfffffe73,0xfffffd6f,0xfdf4e15b,0xd7d0942e,0x708c3f08,0x201b0a00,0x4000000, 2707 0x0,0x0,0xd784600,0xa2db911d,0xfcf6e06f,0xffffff94,0xfffffd85,0xfffffe73,0xfffffd6f,0xfdf4e15b,0xd7d0942e,0x708c3f08,0x201b0a00,0x4000000,
2747 0x0,0x0,0x0,0xb6e3a00,0x90cf8122,0xfaf1d387,0xfffffca7,0xfff7ea83,0xe2d6a045,0x869e5313,0x2c3c1600,0xb000000,0x1000000,0x0, 2708 0x0,0x0,0x0,0xb6e3a00,0x90cf8122,0xfaf1d387,0xfffffca7,0xfff7ea83,0xe2d6a045,0x869e5313,0x2c3c1600,0xb000000,0x1000000,0x0,
2748 0x0,0x0,0x0,0x0,0x9743700,0x7ec0681c,0xf1d99750,0x93a4571b,0x364c1e02,0xe050200,0x2000000,0x0,0x0,0x0 2709 0x0,0x0,0x0,0x0,0x9743700,0x7ec0681c,0xf1d99750,0x93a4571b,0x364c1e02,0xe050200,0x2000000,0x0,0x0,0x0
2749}; 2710};
2750 2711
2712static const QRgb uninstall_data[] = {
2713 0x0,0x0,0x0,0xdffae00,0x55ffbd19,0xc3ffcf30,0x9df7bc1b,0xce89a00,0x74fbb81d,0x76f6b41f,0xbe79100,0x0,0x0,0x0,
2714 0xffae00,0xcffb30b,0x3fffbf27,0xa9ffd045,0xedffeb6a,0xfefff86c,0xf3fdd83b,0x98f1b21f,0xeefee567,0xf1fbe459,0x86edab1c,0x13db8405,0xcb7100,0x0,
2715 0xbffae00,0x84ffc43a,0xebffe37f,0xfffffa9d,0xfffffc86,0xffffe957,0xfffed333,0xfffbbe27,0xfffce967,0xfffff865,0xfaf9d43d,0x9ae69813,0x1bd47704,0xd26800,
2716 0x15ffae00,0x95fec845,0xfefff4a6,0xffffee82,0xffffd33c,0xffffd231,0xffffe549,0xfffec927,0xfff8bf27,0xfff9d43f,0xffffdb3d,0xfcf9bc20,0xa7dc8207,0x15ad5300,
2717 0x93fdb00a,0xc1fec233,0xfcffc739,0xffffc120,0xffffcf2d,0xffffe245,0xfffff25a,0xfffbce39,0xfff5b731,0xffeba025,0xfff0ab21,0xf7efa513,0x91ba6704,0x164f2500,
2718 0x2df0a80c,0xb3fac63d,0xfbffda50,0xfffec523,0xfffed839,0xfffee851,0xfff4c253,0xffe76c3b,0xffe97158,0xffe7725c,0xffd95932,0xeecf5e0d,0x9dbe5a03,0x45af4600,
2719 0x0,0x29f2aa0a,0xd3fbc021,0xfffcd236,0xfff9c62c,0xfff3b844,0xffe65745,0xfffcb3b3,0xffffcaca,0xffffcbcb,0xfffbbcbc,0xfedc5e50,0xc2b63e09,0x487b3000,
2720 0x0,0x10f9a806,0xbffbb20f,0xfff9b416,0xfff2a414,0xffe14617,0xfffb7e7e,0xffffeaea,0xffffc3c3,0xffffbdbd,0xffffe8e8,0xfff97b7b,0xc1c71c1c,0x14980000,
2721 0x0,0x10f4a50c,0xbffabc1f,0xfffed131,0xfff3ac27,0xffe8361d,0xffff4e4e,0xffff9393,0xffffecec,0xffffeded,0xfff87b7b,0xfff31212,0xe2d50202,0x2f9c0000,
2722 0x0,0xeed990a,0xb3f3b324,0xfefedf47,0xfff5c441,0xffe72a13,0xffff1616,0xffff7070,0xffffe8e8,0xfffeebeb,0xfff86b6b,0xfff50606,0xe4d60000,0x31980000,
2723 0x0,0x2e78800,0x38de890b,0xcfeaae2d,0xfef7db56,0xffe14e22,0xfffc1f1f,0xffffd1d1,0xffff8181,0xffff7373,0xffffd4d4,0xfffa2f2f,0xc2c30303,0x158e0000,
2724 0x0,0x0,0x1be6800,0x2ccc7308,0xbfe09c31,0xfce69d52,0xffdf3127,0xfffc5050,0xffff3737,0xffff3434,0xfffc5151,0xe9d51f1f,0x57a50606,0x18c0000,
2725 0x0,0x0,0x0,0x1b55a00,0x26c2640c,0xacd58030,0xebd06731,0xdbc5231c,0xe4dc3232,0xe4dd3434,0xc2c42222,0x57a50d0d,0x98e0202,0x0,
2726 0x0,0x0,0x0,0x0,0x0,0x1bae4501,0x4e933902,0x27650900,0x31940505,0x30980606,0x158d0000,0x18b0000,0x0,0x0
2727};
2728
2751static const QRgb up_data[] = { 2729static const QRgb up_data[] = {
2752 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 2730 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
2753 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 2731 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
2754 0x0,0x0,0x0,0x0,0xfefefe,0xefefefe,0x486faefe,0x144391fe,0x0,0x0,0x0,0x0,0x0,0x0, 2732 0x0,0x0,0x0,0x0,0xfefefe,0xefefefe,0x486faefe,0x144391fe,0x0,0x0,0x0,0x0,0x0,0x0,
2755 0x0,0x0,0x0,0x1fefefe,0x18eaf4fe,0x8c98cafe,0xf5bdddfd,0xc867a4fb,0x1f1c62e9,0x134cd5,0x0,0x0,0x0,0x0, 2733 0x0,0x0,0x0,0x1fefefe,0x18eaf4fe,0x8c98cafe,0xf5bdddfd,0xc867a4fb,0x1f1c62e9,0x134cd5,0x0,0x0,0x0,0x0,
2756 0x0,0x0,0x1fefefe,0x26c1dffe,0xa792c7fc,0xf9cce3f8,0xfff1f5f7,0xffe7f0f7,0xd07aacf4,0x402064f2,0x11050eb,0x0,0x0,0x0, 2734 0x0,0x0,0x1fefefe,0x26c1dffe,0xa792c7fc,0xf9cce3f8,0xfff1f5f7,0xffe7f0f7,0xd07aacf4,0x402064f2,0x11050eb,0x0,0x0,0x0,
2757 0x0,0x2fefefe,0x31bfddfe,0xc27ab6fa,0xffc1daef,0xffdee8ed,0xffdee8ed,0xffdee8ed,0xffd7e5ed,0xef7caaf3,0x561959f4,0x0,0x0,0x0, 2735 0x0,0x2fefefe,0x31bfddfe,0xc27ab6fa,0xffc1daef,0xffdee8ed,0xffdee8ed,0xffdee8ed,0xffd7e5ed,0xef7caaf3,0x561959f4,0x0,0x0,0x0,
2758 0x1fefefe,0x34badafe,0xca73b1f5,0xfeb8d2e4,0xffc9dae1,0xffc9dae1,0xffa8c7e6,0xffc5d8e2,0xffc9dae1,0xffc6d8e1,0xf37fa9e9,0x5e1150f0,0x0,0x0, 2736 0x1fefefe,0x34badafe,0xca73b1f5,0xfeb8d2e4,0xffc9dae1,0xffc9dae1,0xffa8c7e6,0xffc5d8e2,0xffc9dae1,0xffc6d8e1,0xf37fa9e9,0x5e1150f0,0x0,0x0,
2759 0x6fefefe,0x9962a7f6,0xffa3c2d9,0xffb4c9d5,0xffb2c8d5,0xfb7da3dd,0x98173fb1,0xd23f71e9,0xffa1bed8,0xffb4c9d5,0xffb3c9d5,0xe95e91dd,0x250727b8,0x0, 2737 0x6fefefe,0x9962a7f6,0xffa3c2d9,0xffb4c9d5,0xffb2c8d5,0xfb7da3dd,0x98173fb1,0xd23f71e9,0xffa1bed8,0xffb4c9d5,0xffb3c9d5,0xe95e91dd,0x250727b8,0x0,
2760 0x7fefefe,0xa25097f2,0xff91b5cd,0xff9dbaca,0xf05b89cf,0x851238b0,0xe020927,0x1e0833e9,0xbb2e62e7,0xfb84a9cf,0xff9fbcc9,0xf05689d0,0x32051d9d,0x0, 2738 0x7fefefe,0xa25097f2,0xff91b5cd,0xff9dbaca,0xf05b89cf,0x851238b0,0xe020927,0x1e0833e9,0xbb2e62e7,0xfb84a9cf,0xff9fbcc9,0xf05689d0,0x32051d9d,0x0,
2761 0x6fefefe,0x9e3e85ef,0xff7da7c5,0xeb4671ca,0x5908227a,0xa02040d,0x0,0xfefefe,0x100b29cf,0x8c1f4fdf,0xfd7098cb,0xf04c7fca,0x32041a9c,0x0, 2739 0x6fefefe,0x9e3e85ef,0xff7da7c5,0xeb4671ca,0x5908227a,0xa02040d,0x0,0xfefefe,0x100b29cf,0x8c1f4fdf,0xfd7098cb,0xf04c7fca,0x32041a9c,0x0,
2762 0x3fefefe,0x80215aee,0xe22655d5,0x4a061a7c,0x5000000,0x0,0x0,0x0,0xfefefe,0x41631d0,0x83133be6,0xe22459d4,0x2b031589,0x0, 2740 0x3fefefe,0x80215aee,0xe22655d5,0x4a061a7c,0x5000000,0x0,0x0,0x0,0xfefefe,0x41631d0,0x83133be6,0xe22459d4,0x2b031589,0x0,
2763 0xfefefe,0xc132ee4,0x15031063,0x2000000,0x0,0x0,0x0,0x0,0x0,0xfefefe,0x1081568,0x1c031799,0x5010102,0x0, 2741 0xfefefe,0xc132ee4,0x15031063,0x2000000,0x0,0x0,0x0,0x0,0x0,0xfefefe,0x1081568,0x1c031799,0x5010102,0x0,
2764 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 2742 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
2765 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0 2743 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0
2766}; 2744};
2767 2745
2746static const QRgb UtilsIcon_data[] = {
2747 0x0,0xf0f0f0,0x42f7eb5,0x1c3889c3,0x4c3988ca,0x7a3a8cd4,0xa43995e3,0x9d1e93ed,0x721290f2,0x430888f5,0x120162d6,0x20a162b,0xa0a0a,0xa0a0a,
2748 0xf0f0f0,0x82e85c2,0x453994d2,0xa53fa8e9,0xea63c1fc,0xff8bd2ff,0xff96d4ff,0xff75c3ff,0xf94eb0ff,0xd6228ef6,0x700558bd,0x21031d43,0x7050b17,0x10a0a0a,
2749 0x43b79af,0x444594d0,0xcc61b5f0,0xff91d7ff,0xffb8e7ff,0xffbde7ff,0xffabdfff,0xff8cceff,0xff6eb9ff,0xff3f9aff,0xdc0d65d4,0x7c002e77,0x24011235,0x607090d,
2750 0x1c4587bb,0xa050a4e5,0xff9fd8ff,0xffd4f0ff,0xffdcf3ff,0xffc2eaff,0xffc9ebfe,0xffb2ddfe,0xff52a9ff,0xff3691ff,0xfa0c6bef,0xcd0041ad,0x62001e59,0x19070c18,
2751 0x4c418cc4,0xe36bc1fa,0xffc2e9ff,0xffe4f5ff,0xffe9f7ff,0xffceeeff,0xfff6fbfd,0xffe5f1fd,0xff3397ff,0xfe177bfd,0xfe035eec,0xef0043bb,0xa7002570,0x3b070f22,
2752 0x9f1e96ea,0xfd87d1ff,0xffc6ecff,0xffd0efff,0xffd9f2ff,0xffc9eaff,0xffb5e0ff,0xff85c2ff,0xff338dfe,0xfe0e6bf6,0xfe0050e0,0xfc003fb6,0xd600287e,0x69081022,
2753 0xf317a4fe,0xff88d1ff,0xffb0e3ff,0xff9bdeff,0xffaae1ff,0xffe3f4fe,0xfff1f8fd,0xffd4e7fd,0xff2c82fc,0xfe0c5eed,0xfe0047d7,0xfe003bb4,0xf1002986,0x85081023,
2754 0xda0d96e0,0xff6ec3ff,0xff8dd3ff,0xff61c4ff,0xff6dc3ff,0xff6ebcff,0xffebf5fd,0xffe0ebfc,0xff186af8,0xfe014fe9,0xfe003dc8,0xff0034ac,0xf4002683,0x87080f23,
2755 0x860b81c1,0xfe3ba8fc,0xff60bcff,0xff3cacff,0xff3ba4ff,0xff3b9afe,0xffe4effc,0xffdee8fb,0xff0857ec,0xfe0045d3,0xfe0037b7,0xff002e9c,0xd0001e6b,0x6e080d1b,
2756 0x330c70ae,0xda0e87e1,0xfd2b9ffc,0xff1a93ff,0xff2e91f4,0xff64a8f7,0xffebf2fc,0xffe8effa,0xff4c7fe4,0xfe0d43be,0xfe0030a3,0xf0002588,0x9a021547,0x4b080b11,
2757 0x904507e,0x700265a5,0xec037ad9,0xff0474ec,0xff2675db,0xff6e9ae1,0xff7ea2e2,0xff7e9ddd,0xff6586ce,0xfe113fab,0xf2002788,0xbd00175b,0x6a060c21,0x2b0a0a0a,
2758 0x2121a20,0x23073d63,0x81014c8f,0xd100479f,0xf40046a9,0xfe0045b4,0xff003eb6,0xff0039ae,0xff00329b,0xf500298a,0xbe001b63,0x79030d2d,0x42080a12,0x120a0a0a,
2759 0xa0a0a,0x60a0a0a,0x2006172c,0x64011f4b,0xa9002663,0xd5002c7a,0xfa002f8a,0xe700297e,0xc9001f66,0xa7001851,0x71000d31,0x3f050712,0x1b0a0a0a,0x30a0a0a,
2760 0xa0a0a,0x10a0a0a,0x60a0a0a,0x19070c17,0x39070f1f,0x67081021,0x87081225,0x89080f1f,0x78070b19,0x4f02061a,0x24070911,0xb07070d,0x40a0a0a,0xa0a0a
2761};
2762
2768static const QRgb volume_data[] = { 2763static const QRgb volume_data[] = {
2769 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, 2764 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,
2770 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xff000000,0xff000000,0x24000000,0xc000000,0xffffff,0xffffff,0xffffff,0xffffff, 2765 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xff000000,0xff000000,0x24000000,0xc000000,0xffffff,0xffffff,0xffffff,0xffffff,
2771 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xff000000,0xffffffff,0xff000000,0x6b000000,0x24000000,0xff000000,0x18000000,0xc000000,0xffffff, 2766 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xff000000,0xffffffff,0xff000000,0x6b000000,0x24000000,0xff000000,0x18000000,0xc000000,0xffffff,
2772 0xffffff,0xffffff,0xffffff,0xffffff,0xff000000,0xffffffff,0xffffffff,0xff000000,0x8f000000,0x30000000,0x18000000,0xff000000,0x30000000,0xc000000, 2767 0xffffff,0xffffff,0xffffff,0xffffff,0xff000000,0xffffffff,0xffffffff,0xff000000,0x8f000000,0x30000000,0x18000000,0xff000000,0x30000000,0xc000000,
2773 0xff000000,0xff000000,0xff000000,0xff000000,0xffffffff,0xffffffff,0xffffffff,0xff000000,0x8f000000,0xff000000,0x24000000,0x3c000000,0xff000000,0x30000000, 2768 0xff000000,0xff000000,0xff000000,0xff000000,0xffffffff,0xffffffff,0xffffffff,0xff000000,0x8f000000,0xff000000,0x24000000,0x3c000000,0xff000000,0x30000000,
2774 0xff000000,0xffd5eaff,0xffd6eaff,0xffd6eaff,0xffd5e9ff,0xffd6e9ff,0xffd6e9ff,0xff000000,0x8f000000,0x48000000,0xff000000,0x3c000000,0xff000000,0x54000000, 2769 0xff000000,0xffcde6ff,0xffcee6ff,0xffcee6ff,0xffcde5ff,0xffcee5ff,0xffcee5ff,0xff000000,0x8f000000,0x48000000,0xff000000,0x3c000000,0xff000000,0x54000000,
2775 0xff000000,0xff9dceff,0xff9dceff,0xff9dceff,0xff9dceff,0xff9dcdff,0xff9dcdff,0xff000000,0x8f000000,0x3c000000,0xff000000,0x54000000,0xff000000,0x60000000, 2770 0xff000000,0xff8ec5ff,0xff8ec5ff,0xff8ec5ff,0xff8ec5ff,0xff8ec4ff,0xff8ec4ff,0xff000000,0x8f000000,0x3c000000,0xff000000,0x54000000,0xff000000,0x60000000,
2776 0xff000000,0xff60b0ff,0xff60b1ff,0xff60b0ff,0xff61b1ff,0xff60b1ff,0xff60b1ff,0xff000000,0x8f000000,0x30000000,0xff000000,0x60000000,0xff000000,0x60000000, 2771 0xff000000,0xff4ea3ff,0xff4ea4ff,0xff4ea3ff,0xff4fa4ff,0xff4ea4ff,0xff4ea4ff,0xff000000,0x8f000000,0x30000000,0xff000000,0x60000000,0xff000000,0x60000000,
2777 0xff000000,0xff000000,0xff000000,0xff000000,0xff2a9aff,0xff2a9aff,0xff2a9aff,0xff000000,0x8f000000,0xff000000,0x3c000000,0x54000000,0xff000000,0x60000000, 2772 0xff000000,0xff000000,0xff000000,0xff000000,0xff1d8aff,0xff1d8aff,0xff1d8aff,0xff000000,0x8f000000,0xff000000,0x3c000000,0x54000000,0xff000000,0x60000000,
2778 0x24000000,0x6b000000,0x8f000000,0x8f000000,0xff000000,0xff2a9aff,0xff2a9aff,0xff000000,0x8f000000,0x48000000,0x3c000000,0xff000000,0x48000000,0x54000000, 2773 0x24000000,0x6b000000,0x8f000000,0x8f000000,0xff000000,0xff1d8aff,0xff1d8aff,0xff000000,0x8f000000,0x48000000,0x3c000000,0xff000000,0x48000000,0x54000000,
2779 0xc000000,0x24000000,0x30000000,0x30000000,0x48000000,0xff000000,0xff2a9aff,0xff000000,0x8f000000,0x3c000000,0xff000000,0x3c000000,0x48000000,0x30000000, 2774 0xc000000,0x24000000,0x30000000,0x30000000,0x48000000,0xff000000,0xff1d8aff,0xff000000,0x8f000000,0x3c000000,0xff000000,0x3c000000,0x48000000,0x30000000,
2780 0xffffff,0xffffff,0xffffff,0xffffff,0xc000000,0x3c000000,0xff000000,0xff000000,0x8f000000,0x30000000,0x18000000,0x3c000000,0x30000000,0xc000000, 2775 0xffffff,0xffffff,0xffffff,0xffffff,0xc000000,0x3c000000,0xff000000,0xff000000,0x8f000000,0x30000000,0x18000000,0x3c000000,0x30000000,0xc000000,
2781 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xc000000,0x3c000000,0x77000000,0x6b000000,0x24000000,0xc000000,0x18000000,0xc000000,0xffffff, 2776 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xc000000,0x3c000000,0x77000000,0x6b000000,0x24000000,0xc000000,0x18000000,0xc000000,0xffffff,
2782 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xc000000,0x24000000,0x24000000,0xc000000,0xffffff,0xffffff,0xffffff,0xffffff 2777 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xc000000,0x24000000,0x24000000,0xc000000,0xffffff,0xffffff,0xffffff,0xffffff
2783}; 2778};
2784 2779
2785static const QRgb wait_data[] = { 2780static const QRgb wait_data[] = {
2786 0x1000000,0x1d000000,0xffa77843,0xffa77843,0xffa77843,0xffa77843,0xffa77843,0xffa77843,0xffa77843,0xffa77843,0xffa77843,0x28000000,0xb000000,0x5000000, 2781 0x1000000,0x1d000000,0xff996633,0xff996633,0xff996633,0xff996633,0xff996633,0xff996633,0xff996633,0xff996633,0xff996633,0x28000000,0xb000000,0x5000000,
2787 0x3000000,0x15000000,0x33000000,0xff888888,0xff8e8e8e,0xff949494,0xff9b9b9b,0xffa1a1a1,0xffa6a6a6,0xffababab,0x4b000000,0x29000000,0x12000000,0x9000000, 2782 0x3000000,0x15000000,0x33000000,0xff777777,0xff7e7e7e,0xff848484,0xff8c8c8c,0xff929292,0xff989898,0xff9d9d9d,0x4b000000,0x29000000,0x12000000,0x9000000,
2788 0x4000000,0xc000000,0x19000000,0xff9a9a9a,0xffa1a1a1,0xffa6a6a6,0xffadadad,0xffb3b3b3,0xffb7b7b7,0xffbbbbbb,0x41000000,0x2b000000,0x19000000,0xc000000, 2783 0x4000000,0xc000000,0x19000000,0xff8a8a8a,0xff929292,0xff989898,0xff9f9f9f,0xffa6a6a6,0xffababab,0xffafafaf,0x41000000,0x2b000000,0x19000000,0xc000000,
2789 0x4000000,0xe000000,0x1d000000,0xff888888,0xff8b8b8b,0xff8e8e8e,0xff919191,0xff929292,0xff949494,0xff929292,0x4d000000,0x32000000,0x1d000000,0xe000000, 2784 0x4000000,0xe000000,0x1d000000,0xff777777,0xff7a7a7a,0xff7e7e7e,0xff818181,0xff828282,0xff848484,0xff828282,0x4d000000,0x32000000,0x1d000000,0xe000000,
2790 0x4000000,0xe000000,0x1e000000,0xcc515151,0xff7a7a7a,0xff7b7b7b,0xff7c7c7c,0xff7c7c7c,0xff7b7b7b,0xda4d4d4d,0x51000000,0x34000000,0x1e000000,0xe000000, 2785 0x4000000,0xe000000,0x1e000000,0xcc404040,0xff696969,0xff6a6a6a,0xff6b6b6b,0xff6b6b6b,0xff6a6a6a,0xda3c3c3c,0x51000000,0x34000000,0x1e000000,0xe000000,
2791 0x4000000,0xc000000,0x1b000000,0x31000000,0xd24e4e4e,0xff7a7a7a,0xff7a7a7a,0xff7a7a7a,0xde4b4b4b,0x6a000000,0x4f000000,0x31000000,0x1b000000,0xc000000, 2786 0x4000000,0xc000000,0x1b000000,0x31000000,0xd23d3d3d,0xff686868,0xff686868,0xff686868,0xde3a3a3a,0x6a000000,0x4f000000,0x31000000,0x1b000000,0xc000000,
2792 0x2000000,0xa000000,0x17000000,0x2c000000,0x48000000,0xd74f4f4f,0xff838383,0xde4e4e4e,0x78000000,0x63000000,0x48000000,0x2c000000,0x17000000,0xa000000, 2787 0x2000000,0xa000000,0x17000000,0x2c000000,0x48000000,0xd73e3e3e,0xff727272,0xde3d3d3d,0x78000000,0x63000000,0x48000000,0x2c000000,0x17000000,0xa000000,
2793 0x2000000,0x7000000,0x13000000,0x28000000,0x41000000,0xd5595959,0xffa1a1a1,0xdc5b5b5b,0x70000000,0x5b000000,0x41000000,0x28000000,0x13000000,0x7000000, 2788 0x2000000,0x7000000,0x13000000,0x28000000,0x41000000,0xd5474747,0xff929292,0xdc494949,0x70000000,0x5b000000,0x41000000,0x28000000,0x13000000,0x7000000,
2794 0x2000000,0x7000000,0x13000000,0x28000000,0xce636363,0xffadadad,0xffb6b6b6,0xffbdbdbd,0xdb6f6f6f,0x5b000000,0x41000000,0x28000000,0x13000000,0x7000000, 2789 0x2000000,0x7000000,0x13000000,0x28000000,0xce515151,0xffa0a0a0,0xffa9a9a9,0xffb1b1b1,0xdb5d5d5d,0x5b000000,0x41000000,0x28000000,0x13000000,0x7000000,
2795 0x2000000,0xa000000,0x17000000,0xca646464,0xffababab,0xffaeaeae,0xffadadad,0xffc2c2c2,0xffc7c7c7,0xd87b7b7b,0x48000000,0x2c000000,0x17000000,0xa000000, 2790 0x2000000,0xa000000,0x17000000,0xca525252,0xff9d9d9d,0xffa1a1a1,0xffa0a0a0,0xffb7b7b7,0xffbdbdbd,0xd86a6a6a,0x48000000,0x2c000000,0x17000000,0xa000000,
2796 0x4000000,0xc000000,0x1b000000,0xffa3a3a3,0xffababab,0xffa4a4a4,0xff909090,0xffc2c2c2,0xffc8c8c8,0xffcecece,0x4f000000,0x31000000,0x1b000000,0xc000000, 2791 0x4000000,0xc000000,0x1b000000,0xff949494,0xff9d9d9d,0xff969696,0xff808080,0xffb7b7b7,0xffbebebe,0xffc5c5c5,0x4f000000,0x31000000,0x1b000000,0xc000000,
2797 0x4000000,0xe000000,0x1e000000,0xffa0a0a0,0xff999999,0xff848484,0xff7b7b7b,0xff888888,0xff8e8e8e,0xff8d8d8d,0x51000000,0x34000000,0x1e000000,0xe000000, 2792 0x4000000,0xe000000,0x1e000000,0xff919191,0xff898989,0xff737373,0xff6a6a6a,0xff777777,0xff7e7e7e,0xff7c7c7c,0x51000000,0x34000000,0x1e000000,0xe000000,
2798 0x4000000,0x19000000,0x3d000000,0xff707070,0xff696969,0xff656565,0xff656565,0xff656565,0xff656565,0xff656565,0x66000000,0x3c000000,0x1d000000,0xe000000, 2793 0x4000000,0x19000000,0x3d000000,0xff5e5e5e,0xff575757,0xff535353,0xff535353,0xff535353,0xff535353,0xff535353,0x66000000,0x3c000000,0x1d000000,0xe000000,
2799 0x4000000,0x23000000,0xffa77843,0xffa77843,0xffa77843,0xffa77843,0xffa77843,0xffa77843,0xffa77843,0xffa77843,0xffa77843,0x3f000000,0x19000000,0xc000000 2794 0x4000000,0x23000000,0xff996633,0xff996633,0xff996633,0xff996633,0xff996633,0xff996633,0xff996633,0xff996633,0xff996633,0x3f000000,0x19000000,0xc000000
2800}; 2795};
2801 2796
2802static const QRgb week_data[] = { 2797static const QRgb week_data[] = {
2803 0xe483addd,0xf18cb5e6,0xf181b0e6,0xf175aae6,0xf169a4e6,0xf15c9ee6,0xf1549ae6,0xf15297e6,0xf15298e6,0xf15298e6,0xf15599e7,0xf14597e8,0xa315588d,0x17002741, 2798 0x343b98e5,0x7254a9e9,0x7b52a5e3,0x7b50a4e3,0x7b4fa4e3,0x7b4ea3e2,0x7b4da3e2,0x7b4ba2e2,0x7b4aa1e2,0x7b49a1e2,0x7b47a0e1,0x7a479fe1,0x492c7cbc,0xe00162b,
2804 0xf592b8e5,0xffafd4fd,0xff95c7fd,0xff77b9fd,0xff57a9fd,0xff389afd,0xff268efd,0xff2188fc,0xff2388fd,0xff2388fd,0xff2389fe,0xff1d8afb,0xc208518c,0x30001827, 2799 0xc767bcf7,0xf766bef6,0xf94fb5f3,0xf94eb5f3,0xf94cb5f3,0xf94bb5f2,0xf94ab4f3,0xf948b4f3,0xf947b4f3,0xf946b4f3,0xf944b3f3,0xf94bb5f4,0xd352aae5,0x4b033c65,
2805 0xf19fbfe5,0xffd2e5f9,0xffb8d9f7,0xffb7d8f8,0xffb5d8f8,0xff9dccf7,0xffb2d7f9,0xff87c5f3,0xffa7d2f9,0xff96c9f7,0xffb1d7fb,0xff8bc6f6,0xc4255e89,0x34001525, 2800 0xe94db4f6,0xff16a6e9,0xff04a1e4,0xff05a2e4,0xff07a3e5,0xff09a4e5,0xff0ba5e5,0xff0da6e6,0xff0fa8e6,0xff12a8e7,0xff14a9e7,0xff15a9e9,0xef34a1e4,0x74083858,
2806 0xf1a9c5e6,0xffdef0fb,0xffacd8f7,0xffbbdff8,0xffc7e5fa,0xff9dd1f5,0xffe0f3fd,0xff8ec9f4,0xffceeafb,0xffa6d6f7,0xffe6f6fe,0xffadd9f6,0xc42d6189,0x34001425, 2801 0xe96cbff6,0xff84cdf6,0xff71c6f4,0xff71c6f5,0xff70c5f5,0xff6fc4f5,0xff6ec3f4,0xff6ec3f4,0xff6ec2f5,0xff6ec2f5,0xff6dc2f4,0xff71c2f5,0xf05fafe4,0x79013455,
2807 0xf1a8c5e6,0xffddf0fc,0xffabd8f7,0xffb9def9,0xffc3e4fa,0xff9bd0f5,0xffd8effd,0xff8dc9f4,0xffc7e7fc,0xffa2d4f7,0xffddf3ff,0xffa6d6f7,0xc42b6089,0x34001425, 2802 0xe96eb7e7,0xffd8dee3,0xffdbe0e4,0xffd3d8dd,0xffdae1e6,0xffced5da,0xffd8e0e6,0xffced6dc,0xffd4dde3,0xffced7de,0xffcfd8df,0xffd3dbe1,0xf07ab1d5,0x79003453,
2808 0xf1a7c5e6,0xffdaeffc,0xffaad7f7,0xffb7def9,0xffc1e3fa,0xff9ad0f5,0xffd5eefd,0xff8cc9f4,0xffc4e6fc,0xffa1d4f7,0xffd8f2ff,0xffa3d5f7,0xc42a6089,0x34001425, 2803 0xe96bb4e2,0xffeaeaea,0xfff2f0ee,0xffe5e3e1,0xfff7f5f3,0xffe1dfdd,0xfff7f6f3,0xffe6e4e2,0xfff2f0ee,0xffeae7e5,0xffeceae8,0xfff3efec,0xf080b3d2,0x79013454,
2809 0xf1a6c4e6,0xffd8effc,0xffa8d7f7,0xffb5ddf9,0xffbee2fa,0xff9ad0f5,0xffd2edfd,0xff8cc9f4,0xffc1e5fc,0xffa0d4f7,0xffd5f1ff,0xffa1d5f7,0xc42a6089,0x34001425, 2804 0xe971afc7,0xffefd37b,0xfff7cd79,0xfff1cb71,0xfff9d379,0xfff0c772,0xfff9d777,0xfff2c774,0xfff6d475,0xfff3c876,0xfff4d272,0xfff8ce77,0xf08babb2,0x79003554,
2810 0xf1a4c3e6,0xffd5edfc,0xffa7d6f7,0xffb4dcf8,0xffbde1fa,0xff99cff5,0xffcfebfd,0xff8bc8f4,0xffbee4fc,0xff9ed3f7,0xffd2eeff,0xff9ed3f7,0xc4296089,0x34001425, 2805 0xe976afb1,0xfff7cf26,0xffffb628,0xffffc71d,0xffffbe23,0xffffbe22,0xffffcd1b,0xffffb726,0xffffce1a,0xffffb428,0xffffd218,0xffffb924,0xf096a79d,0x79003554,
2811 0xf1a3c3e6,0xffd2edfc,0xffa5d6f7,0xffb2dcf9,0xffbae0fa,0xff98cff5,0xffcbebfd,0xff8bc8f4,0xffbce3fc,0xff9dd2f7,0xffceeeff,0xff9cd3f7,0xc4285f89,0x34001425, 2806 0xe972aabc,0xfff3ba5b,0xfffbab5a,0xfff9b451,0xfffcb059,0xfff8af52,0xfffdb755,0xfff9ab56,0xfffbb853,0xfffaaa58,0xfffab950,0xfffbad58,0xf094a7a8,0x79003554,
2812 0xf1a3c3e6,0xffd0ecfc,0xffa4d5f7,0xffb0dbf9,0xffb8e0fa,0xff97cef5,0xffc8eafd,0xff8ac8f4,0xffb9e2fc,0xff9bd2f7,0xffcbedff,0xff9ad2f7,0xc4285f89,0x34001525, 2807 0xe963afe0,0xffeae9e7,0xfff3efea,0xffe7e3de,0xfff9f5f0,0xffe4dfdb,0xfff9f5f0,0xffe8e4df,0xfff3f0eb,0xffebe7e2,0xffede9e6,0xfff5efe9,0xf08ab7d2,0x79023554,
2813 0xf1a6c5e7,0xffd1edfc,0xffa5d6f7,0xffb1dcf9,0xffb9e0fa,0xff98cff5,0xffcbebfd,0xff8bc8f4,0xffbbe3fc,0xff9cd3f7,0xffcdeeff,0xff9dd3f8,0xc4296089,0x34001525, 2808 0xea5eaee2,0xffd5dce1,0xffdde0e3,0xffd5d8da,0xffe2e5e7,0xffd3d6d8,0xffe4e6e7,0xffd9dadb,0xffe2e3e4,0xffdcddde,0xffdfdfe0,0xffe6e4e3,0xf08cb8d4,0x78023554,
2814 0xfa80b6e6,0xffa6d6f6,0xff92ccf4,0xff96cef4,0xff98cff5,0xff8ac8f3,0xff9dd2f6,0xff83c4f3,0xff95cef6,0xff8ac9f4,0xff9dd4f8,0xff7bc4f7,0xc7205f8d,0x34001728, 2809 0xbb449edd,0xf87cbde9,0xfd81c0ea,0xfd84c2eb,0xfd88c3eb,0xfd8bc5ec,0xfd90c7ec,0xfd96caed,0xfd9acced,0xfd9fceee,0xfda4d0ee,0xfca8d2ee,0xdc649cc3,0x63001f36,
2815 0xa628618e,0xc12e628a,0xc42c6189,0xc42b6089,0xc42b6089,0xc42a6089,0xc42a6089,0xc4296089,0xc4295f89,0xc4296089,0xc4296089,0xc421608d,0x9e083656,0x30000d16, 2810 0x360f466e,0x75164e74,0x89154769,0x8a154768,0x8a164768,0x8a164868,0x8a174868,0x8a184868,0x8a194968,0x8a1a4969,0x8a1b4969,0x891b4a68,0x6a0e2b41,0x28000306,
2816 0x14002b4a,0x30001627,0x34001424,0x34001425,0x34001425,0x34001425,0x34001425,0x34001425,0x34001425,0x34001425,0x34001425,0x34001626,0x30000d16,0x16000204 2811 0x4000000,0xf000000,0x15000000,0x15000000,0x15000000,0x15000000,0x15000000,0x15000000,0x15000000,0x15000000,0x15000000,0x15000000,0xf000000,0x4000000
2817}; 2812};
2818 2813
2819static const QRgb wordgame_data[] = { 2814static const QRgb wordgame_data[] = {
2820 0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xffffff, 2815 0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xffffff,
2821 0xff000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xff000000,0xff000000, 2816 0xff000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xff000000,0xff000000,
2822 0xff000000,0xffffffff,0xffffffff,0xffaaaaaa,0xff727272,0xffaaaaaa,0xff8e8e8e,0xff555555,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xff000000,0xff000000, 2817 0xff000000,0xffffffff,0xffffffff,0xffaaaaaa,0xff727272,0xffaaaaaa,0xff8e8e8e,0xff555555,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xff000000,0xff000000,
2823 0xff000000,0xffffffff,0xffaaaaaa,0xff555555,0xffffffff,0xffffffff,0xffffffff,0xffaaaaaa,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xff000000,0xff000000, 2818 0xff000000,0xffffffff,0xffaaaaaa,0xff555555,0xffffffff,0xffffffff,0xffffffff,0xffaaaaaa,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xff000000,0xff000000,
2824 0xff000000,0xffffffff,0xff555555,0xffaaaaaa,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xff000000,0xff000000, 2819 0xff000000,0xffffffff,0xff555555,0xffaaaaaa,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xff000000,0xff000000,
2825 0xff000000,0xffffffff,0xff555555,0xffaaaaaa,0xffffffff,0xffffffff,0xff8e8e8e,0xff555555,0xff8e8e8e,0xffffffff,0xffffffff,0xffffffff,0xff000000,0xff000000, 2820 0xff000000,0xffffffff,0xff555555,0xffaaaaaa,0xffffffff,0xffffffff,0xff8e8e8e,0xff555555,0xff8e8e8e,0xffffffff,0xffffffff,0xffffffff,0xff000000,0xff000000,
2826 0xff000000,0xffffffff,0xff727272,0xff8e8e8e,0xffffffff,0xffffffff,0xffffffff,0xff555555,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xff000000,0xff000000, 2821 0xff000000,0xffffffff,0xff727272,0xff8e8e8e,0xffffffff,0xffffffff,0xffffffff,0xff555555,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xff000000,0xff000000,
2827 0xff000000,0xffffffff,0xffe3e3e3,0xff555555,0xffc7c7c7,0xffffffff,0xffc7c7c7,0xff1d1d1d,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xff000000,0xff000000, 2822 0xff000000,0xffffffff,0xffe3e3e3,0xff555555,0xffc7c7c7,0xffffffff,0xffc7c7c7,0xff1d1d1d,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xff000000,0xff000000,
2828 0xff000000,0xffffffff,0xffffffff,0xffe3e3e3,0xff727272,0xff8e8e8e,0xff8e8e8e,0xffc7c7c7,0xffffffff,0xff737373,0xffb6b6b6,0xffffffff,0xff000000,0xff000000, 2823 0xff000000,0xffffffff,0xffffffff,0xffe3e3e3,0xff727272,0xff8e8e8e,0xff8e8e8e,0xffc7c7c7,0xffffffff,0xff737373,0xffb6b6b6,0xffffffff,0xff000000,0xff000000,
2829 0xff000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xff747474,0xff525252,0xffffffff,0xff000000,0xff000000, 2824 0xff000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xff747474,0xff525252,0xffffffff,0xff000000,0xff000000,
2830 0xff000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffc7c7c7,0xff909090,0xffffffff,0xff000000,0xff000000, 2825 0xff000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffc7c7c7,0xff909090,0xffffffff,0xff000000,0xff000000,
2831 0xff000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xff000000,0xff000000, 2826 0xff000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xff000000,0xff000000,
2832 0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000, 2827 0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,
2833 0x0,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000 2828 0x0,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000
2834}; 2829};
2835 2830
2836static const unsigned char xtopowerofy_data[] = { 2831static const unsigned char xtopowerofy_data[] = {
2837 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00, 2832 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
2838 0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 2833 0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2839 0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00, 2834 0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,
2840 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0x01,0x01, 2835 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0x01,0x01,
2841 0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 2836 0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2842 0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 2837 0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2843 0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00 2838 0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00
2844}; 2839};
2845 2840
2846static const QRgb xtopowerofy_ctable[] = { 2841static const QRgb xtopowerofy_ctable[] = {
2847 0xc6c6c6,0xff000000 2842 0xc6c6c6,0xff000000
2848}; 2843};
2849 2844
2850static const unsigned char ythrootofx_data[] = { 2845static const unsigned char ythrootofx_data[] = {
2851 0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 2846 0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2852 0x00,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 2847 0x00,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2853 0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x01,0x01, 2848 0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x01,0x01,
2854 0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x00, 2849 0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x00,
2855 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x01, 2850 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x01,
2856 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 2851 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2857 0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x01, 2852 0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x01,
2858 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00, 2853 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
2859 0x01,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00, 2854 0x01,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
2860 0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x01,0x00, 2855 0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x01,0x00,
2861 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00, 2856 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
2862 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00, 2857 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
2863 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 2858 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
2864}; 2859};
2865 2860
2866static const QRgb ythrootofx_ctable[] = { 2861static const QRgb ythrootofx_ctable[] = {
2867 0xc6c6c6,0xff000000 2862 0xc6c6c6,0xff000000
2868}; 2863};
2869 2864
2870static const QRgb zoom_data[] = { 2865static const QRgb zoom_data[] = {
2871 0x0,0x0,0x1c9191aa,0x7daeaec1,0xaabfbfcd,0xa3c5c5d3,0x63bfbfce,0x8b6b6c7,0x0,0x0,0x0,0x0,0x0,0x0, 2866 0x0,0x0,0x1c9191aa,0x7daeaec1,0xaabfbfcd,0xa3c5c5d3,0x63bfbfce,0x8b6b6c7,0x0,0x0,0x0,0x0,0x0,0x0,
2872 0x0,0x478c8ca6,0xeca3a9c1,0xf9bbd1e5,0xf7d0e5f5,0xf8d9e7f4,0xfbccd9ea,0xccc9cad8,0x19babaca,0x0,0x0,0x0,0x0,0x0, 2867 0x0,0x478c8ca6,0xeca3a9c1,0xf9bbd1e5,0xf7d0e5f5,0xf8d9e7f4,0xfbccd9ea,0xccc9cad8,0x19babaca,0x0,0x0,0x0,0x0,0x0,
2873 0x1c747493,0xea8f95b4,0xf4a3d0f4,0xf5c6efff,0xf5d6f4ff,0xf5dbf5ff,0xf5d2f3ff,0xf5b9d8f2,0xbbc9cad8,0x1b8b8c9,0x0,0x0,0x0,0x0, 2868 0x1c747493,0xea8f95b4,0xf4a3d0f4,0xf5c6efff,0xf5d6f4ff,0xf5dbf5ff,0xf5d2f3ff,0xf5b9d8f2,0xbbc9cad8,0x1b8b8c9,0x0,0x0,0x0,0x0,
2874 0x7d7e7e9a,0xf07a9ed4,0xf59cd1ff,0xf5b3e3ff,0xf5c2edff,0xf5c6efff,0xf5bfebff,0xf4abddff,0xf5b7c7e4,0x31b5b5c6,0x0,0x0,0x0,0x0, 2869 0x7d7e7e9a,0xf07a9ed4,0xf59cd1ff,0xf5b3e3ff,0xf5c2edff,0xf5c6efff,0xf5bfebff,0xf4abddff,0xf5b7c7e4,0x31b5b5c6,0x0,0x0,0x0,0x0,
2875 0xab7b7b98,0xb62f70db,0xc766a9fb,0xdf92cafe,0xdea0d4ff,0xd19bd1fe,0xde9ad0fe,0xf494ccff,0xee9dbdeb,0x60b9b9c9,0x0,0x0,0x0,0x0, 2870 0xab7b7b98,0xb62f70db,0xc766a9fb,0xdf92cafe,0xdea0d4ff,0xd19bd1fe,0xde9ad0fe,0xf494ccff,0xee9dbdeb,0x60b9b9c9,0x0,0x0,0x0,0x0,
2876 0xa3717190,0xb33973d3,0x994e96f8,0x9974b3fd,0x998bc5ff,0x998cc5ff,0x9977b6fd,0xaa62a6fb,0xe299b7e6,0x56afafc2,0x0,0x0,0x0,0x0, 2871 0xa3717190,0xb33973d3,0x994e96f8,0x9974b3fd,0x998bc5ff,0x998cc5ff,0x9977b6fd,0xaa62a6fb,0xe299b7e6,0x56afafc2,0x0,0x0,0x0,0x0,
2877 0x61636385,0xd66079b1,0x9973b3fd,0x99a4d7ff,0x99c4efff,0x99c6efff,0x99a8daff,0x9d7ab6fb,0xebadb6d0,0x1aa3a3b8,0x0,0x0,0x0,0x0, 2872 0x61636385,0xd66079b1,0x9973b3fd,0x99a4d7ff,0x99c4efff,0x99c6efff,0x99a8daff,0x9d7ab6fb,0xebadb6d0,0x1aa3a3b8,0x0,0x0,0x0,0x0,
2878 0x857577b,0xc966678a,0xc07d9dca,0x9ac3edfe,0x99eafeff,0x99ecfeff,0x9dc6edfc,0xdca5b5d2,0xdfb2b2c4,0x3b7b7c8,0x0,0x0,0x0,0x0, 2873 0x857577b,0xc966678a,0xc07d9dca,0x9ac3edfe,0x99eafeff,0x99ecfeff,0x9dc6edfc,0xdca5b5d2,0xdfb2b2c4,0x3b7b7c8,0x0,0x0,0x0,0x0,
2879 0x0,0x1958587c,0xb8696a8b,0xe5878faa,0xceb0b7c8,0xd3b6bbcb,0xeb9ea2b9,0xcd9595ad,0xeea3a3b7,0xb1cb9f58,0x4ee4991e,0x0,0x0,0x0, 2874 0x0,0x1958587c,0xb8696a8b,0xe5878faa,0xceb0b7c8,0xd3b6bbcb,0xeb9ea2b9,0xcd9595ad,0xeea3a3b7,0xb1cb9f58,0x4ee4991e,0x0,0x0,0x0,
2880 0x0,0x0,0x5b5b7e,0x2f606083,0x5e6e6e8e,0x54747493,0x1a777795,0x0,0xb1a57239,0xfff7d37d,0xf7f7d46f,0x4fe4991e,0x0,0x0, 2875 0x0,0x0,0x5b5b7e,0x2f606083,0x5e6e6e8e,0x54747493,0x1a777795,0x0,0xb1a57239,0xfff7d37d,0xf7f7d46f,0x4fe4991e,0x0,0x0,
2881 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x449f5b0e,0xf3dd921d,0xfffddc87,0xf7f7d36f,0x4fe4991e,0x0, 2876 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x449f5b0e,0xf3dd921d,0xfffddc87,0xf7f7d36f,0x4fe4991e,0x0,
2882 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x459f5b0e,0xf3dd921d,0xfffddc87,0xf6f7d36f,0x4de4991e, 2877 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x459f5b0e,0xf3dd921d,0xfffddc87,0xf6f7d36f,0x4de4991e,
2883 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x459f5b0e,0xf3dd921c,0xfff0c975,0xa8cdab7a, 2878 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x459f5b0e,0xf3dd921c,0xfff0c975,0xa8cdab7a,
2884 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x449f5b0e,0xaa977354,0x4a8787a1 2879 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x449f5b0e,0xaa977354,0x4a8787a1
2885}; 2880};
2886 2881
2887static struct EmbedImage { 2882static struct EmbedImage {
2888 int width, height, depth; 2883 int width, height, depth;
2889 const unsigned char *data; 2884 const unsigned char *data;
2890 int numColors; 2885 int numColors;
2891 const QRgb *colorTable; 2886 const QRgb *colorTable;
2892 bool alpha; 2887 bool alpha;
2893 const char *name; 2888 const char *name;
2894} embed_image_vec[] = { 2889} embed_image_vec[] = {
2895 { 14, 14, 32, (const unsigned char*)_to1_data, 0, 0, TRUE, "1to1" }, 2890 { 14, 14, 32, (const unsigned char*)_to1_data, 0, 0, TRUE, "1to1" },
2896 { 14, 14, 32, (const unsigned char*)AppsIcon_data, 0, 0, TRUE, "AppsIcon" },
2897 { 32, 32, 32, (const unsigned char*)Calibrate_data, 0, 0, TRUE, "Calibrate" },
2898 { 32, 32, 32, (const unsigned char*)Clock_data, 0, 0, TRUE, "Clock" },
2899 { 14, 14, 32, (const unsigned char*)CloseButton_data, 0, 0, TRUE, "CloseButton" },
2900 { 14, 14, 32, (const unsigned char*)DocsIcon_data, 0, 0, TRUE, "DocsIcon" },
2901 { 32, 32, 32, (const unsigned char*)DocumentTypeExcel_data, 0, 0, TRUE, "DocumentTypeExcel" },
2902 { 32, 32, 32, (const unsigned char*)DocumentTypeNone_data, 0, 0, TRUE, "DocumentTypeNone" },
2903 { 32, 32, 32, (const unsigned char*)DocumentTypePowerPoint_data, 0, 0, TRUE, "DocumentTypePowerPoint" },
2904 { 32, 32, 32, (const unsigned char*)DocumentTypeWord_data, 0, 0, TRUE, "DocumentTypeWord" },
2905 { 14, 14, 32, (const unsigned char*)Games_data, 0, 0, TRUE, "Games" },
2906 { 12, 12, 32, (const unsigned char*)Go_black_data, 0, 0, TRUE, "Go-black" },
2907 { 12, 12, 32, (const unsigned char*)Go_black_highlight_data, 0, 0, TRUE, "Go-black-highlight" },
2908 { 12, 12, 32, (const unsigned char*)Go_white_data, 0, 0, TRUE, "Go-white" },
2909 { 14, 14, 32, (const unsigned char*)HelpButton_data, 0, 0, TRUE, "HelpButton" },
2910 { 32, 32, 32, (const unsigned char*)Language_data, 0, 0, TRUE, "Language" },
2911 { 32, 32, 32, (const unsigned char*)MPEGPlayer_data, 0, 0, TRUE, "MPEGPlayer" },
2912 { 28, 14, 32, (const unsigned char*)OKButton_data, 0, 0, TRUE, "OKButton" },
2913 { 32, 32, 32, (const unsigned char*)Rotation_data, 0, 0, TRUE, "Rotation" },
2914 { 14, 14, 32, (const unsigned char*)SettingsIcon_data, 0, 0, TRUE, "SettingsIcon" },
2915 { 32, 32, 32, (const unsigned char*)Shutdown_data, 0, 0, TRUE, "Shutdown" },
2916 { 32, 32, 32, (const unsigned char*)Sound_data, 0, 0, TRUE, "Sound" },
2917 { 32, 32, 32, (const unsigned char*)SoundPlayer_data, 0, 0, TRUE, "SoundPlayer" },
2918 { 32, 32, 32, (const unsigned char*)Spreadsheet_data, 0, 0, TRUE, "Spreadsheet" },
2919 { 32, 32, 32, (const unsigned char*)Tux_data, 0, 0, TRUE, "Tux" },
2920 { 14, 14, 32, (const unsigned char*)UtilsIcon_data, 0, 0, TRUE, "UtilsIcon" },
2921 { 14, 14, 32, (const unsigned char*)accessories_data, 0, 0, TRUE, "accessories" }, 2891 { 14, 14, 32, (const unsigned char*)accessories_data, 0, 0, TRUE, "accessories" },
2922 { 14, 14, 32, (const unsigned char*)appearance_data, 0, 0, TRUE, "appearance" }, 2892 { 14, 14, 32, (const unsigned char*)appearance_data, 0, 0, TRUE, "appearance" },
2923 { 14, 14, 32, (const unsigned char*)back_data, 0, 0, TRUE, "back" }, 2893 { 14, 14, 32, (const unsigned char*)AppsIcon_data, 0, 0, TRUE, "AppsIcon" },
2924 { 14, 14, 32, (const unsigned char*)back_inactive_data, 0, 0, TRUE, "back_inactive" }, 2894 { 14, 14, 32, (const unsigned char*)back_inactive_data, 0, 0, TRUE, "back_inactive" },
2895 { 14, 14, 32, (const unsigned char*)back_data, 0, 0, TRUE, "back" },
2925 { 14, 14, 32, (const unsigned char*)beam_data, 0, 0, TRUE, "beam" }, 2896 { 14, 14, 32, (const unsigned char*)beam_data, 0, 0, TRUE, "beam" },
2926 { 14, 14, 32, (const unsigned char*)bell_data, 0, 0, TRUE, "bell" }, 2897 { 14, 14, 32, (const unsigned char*)bell_data, 0, 0, TRUE, "bell" },
2927 { 14, 14, 32, (const unsigned char*)binary_data, 0, 0, TRUE, "binary" }, 2898 { 14, 14, 32, (const unsigned char*)binary_data, 0, 0, TRUE, "binary" },
2928 { 14, 14, 32, (const unsigned char*)bold_data, 0, 0, TRUE, "bold" }, 2899 { 14, 14, 32, (const unsigned char*)bold_data, 0, 0, TRUE, "bold" },
2929 { 14, 14, 32, (const unsigned char*)c_src_data, 0, 0, TRUE, "c_src" },
2930 { 14, 14, 32, (const unsigned char*)calculator_data, 0, 0, TRUE, "calculator" }, 2900 { 14, 14, 32, (const unsigned char*)calculator_data, 0, 0, TRUE, "calculator" },
2901 { 32, 32, 32, (const unsigned char*)Calibrate_data, 0, 0, TRUE, "Calibrate" },
2931 { 14, 14, 32, (const unsigned char*)center_data, 0, 0, TRUE, "center" }, 2902 { 14, 14, 32, (const unsigned char*)center_data, 0, 0, TRUE, "center" },
2932 { 14, 14, 32, (const unsigned char*)citytime_icon_data, 0, 0, TRUE, "citytime_icon" }, 2903 { 14, 14, 32, (const unsigned char*)citytime_icon_data, 0, 0, TRUE, "citytime_icon" },
2904 { 32, 32, 32, (const unsigned char*)Clock_data, 0, 0, TRUE, "Clock" },
2905 { 14, 14, 32, (const unsigned char*)CloseButton_data, 0, 0, TRUE, "CloseButton" },
2933 { 14, 14, 32, (const unsigned char*)close_data, 0, 0, TRUE, "close" }, 2906 { 14, 14, 32, (const unsigned char*)close_data, 0, 0, TRUE, "close" },
2934 { 14, 14, 32, (const unsigned char*)copy_data, 0, 0, TRUE, "copy" },
2935 { 14, 14, 32, (const unsigned char*)copy_inactive_data, 0, 0, TRUE, "copy_inactive" }, 2907 { 14, 14, 32, (const unsigned char*)copy_inactive_data, 0, 0, TRUE, "copy_inactive" },
2936 { 14, 14, 32, (const unsigned char*)cut_data, 0, 0, TRUE, "cut" }, 2908 { 14, 14, 32, (const unsigned char*)copy_data, 0, 0, TRUE, "copy" },
2909 { 14, 14, 32, (const unsigned char*)c_src_data, 0, 0, TRUE, "c_src" },
2937 { 14, 14, 32, (const unsigned char*)cut_inactive_data, 0, 0, TRUE, "cut_inactive" }, 2910 { 14, 14, 32, (const unsigned char*)cut_inactive_data, 0, 0, TRUE, "cut_inactive" },
2911 { 14, 14, 32, (const unsigned char*)cut_data, 0, 0, TRUE, "cut" },
2938 { 14, 14, 32, (const unsigned char*)datebook_icon_data, 0, 0, TRUE, "datebook_icon" }, 2912 { 14, 14, 32, (const unsigned char*)datebook_icon_data, 0, 0, TRUE, "datebook_icon" },
2939 { 14, 14, 32, (const unsigned char*)day_data, 0, 0, TRUE, "day" }, 2913 { 14, 14, 32, (const unsigned char*)day_data, 0, 0, TRUE, "day" },
2914 { 14, 14, 32, (const unsigned char*)DocsIcon_data, 0, 0, TRUE, "DocsIcon" },
2915 { 32, 32, 32, (const unsigned char*)DocumentTypeExcel_data, 0, 0, TRUE, "DocumentTypeExcel" },
2916 { 32, 32, 32, (const unsigned char*)DocumentTypeNone_data, 0, 0, TRUE, "DocumentTypeNone" },
2917 { 32, 32, 32, (const unsigned char*)DocumentTypePowerPoint_data, 0, 0, TRUE, "DocumentTypePowerPoint" },
2918 { 32, 32, 32, (const unsigned char*)DocumentTypeWord_data, 0, 0, TRUE, "DocumentTypeWord" },
2940 { 14, 14, 32, (const unsigned char*)done_data, 0, 0, TRUE, "done" }, 2919 { 14, 14, 32, (const unsigned char*)done_data, 0, 0, TRUE, "done" },
2941 { 14, 14, 32, (const unsigned char*)down_data, 0, 0, TRUE, "down" }, 2920 { 14, 14, 32, (const unsigned char*)down_data, 0, 0, TRUE, "down" },
2942 { 14, 14, 32, (const unsigned char*)edit_data, 0, 0, TRUE, "edit" },
2943 { 14, 14, 32, (const unsigned char*)editdelete_data, 0, 0, TRUE, "editdelete" }, 2921 { 14, 14, 32, (const unsigned char*)editdelete_data, 0, 0, TRUE, "editdelete" },
2922 { 14, 14, 32, (const unsigned char*)edit_data, 0, 0, TRUE, "edit" },
2944 { 14, 14, 32, (const unsigned char*)enter_data, 0, 0, TRUE, "enter" }, 2923 { 14, 14, 32, (const unsigned char*)enter_data, 0, 0, TRUE, "enter" },
2945 { 14, 14, 32, (const unsigned char*)exec_data, 0, 0, TRUE, "exec" }, 2924 { 14, 14, 32, (const unsigned char*)exec_data, 0, 0, TRUE, "exec" },
2946 { 14, 14, 32, (const unsigned char*)fastback_data, 0, 0, TRUE, "fastback" }, 2925 { 14, 14, 32, (const unsigned char*)fastback_data, 0, 0, TRUE, "fastback" },
2947 { 14, 14, 32, (const unsigned char*)fastforward_data, 0, 0, TRUE, "fastforward" }, 2926 { 14, 14, 32, (const unsigned char*)fastforward_data, 0, 0, TRUE, "fastforward" },
2948 { 14, 14, 32, (const unsigned char*)fileopen_data, 0, 0, TRUE, "fileopen" }, 2927 { 14, 14, 32, (const unsigned char*)fileopen_data, 0, 0, TRUE, "fileopen" },
2949 { 14, 14, 32, (const unsigned char*)find_data, 0, 0, TRUE, "find" }, 2928 { 14, 14, 32, (const unsigned char*)find_data, 0, 0, TRUE, "find" },
2950 { 14, 14, 32, (const unsigned char*)finish_data, 0, 0, TRUE, "finish" }, 2929 { 14, 14, 32, (const unsigned char*)finish_data, 0, 0, TRUE, "finish" },
2951 { 14, 14, 32, (const unsigned char*)folder_data, 0, 0, TRUE, "folder" },
2952 { 14, 14, 32, (const unsigned char*)folder_open_data, 0, 0, TRUE, "folder_open" }, 2930 { 14, 14, 32, (const unsigned char*)folder_open_data, 0, 0, TRUE, "folder_open" },
2931 { 14, 14, 32, (const unsigned char*)folder_data, 0, 0, TRUE, "folder" },
2953 { 14, 14, 32, (const unsigned char*)font_data, 0, 0, TRUE, "font" }, 2932 { 14, 14, 32, (const unsigned char*)font_data, 0, 0, TRUE, "font" },
2954 { 14, 14, 32, (const unsigned char*)forward_data, 0, 0, TRUE, "forward" },
2955 { 14, 14, 32, (const unsigned char*)forward_inactive_data, 0, 0, TRUE, "forward_inactive" }, 2933 { 14, 14, 32, (const unsigned char*)forward_inactive_data, 0, 0, TRUE, "forward_inactive" },
2934 { 14, 14, 32, (const unsigned char*)forward_data, 0, 0, TRUE, "forward" },
2956 { 14, 14, 32, (const unsigned char*)fullscreen_data, 0, 0, TRUE, "fullscreen" }, 2935 { 14, 14, 32, (const unsigned char*)fullscreen_data, 0, 0, TRUE, "fullscreen" },
2957 { 18, 18, 32, (const unsigned char*)go_data, 0, 0, TRUE, "go" }, 2936 { 14, 14, 32, (const unsigned char*)Games_data, 0, 0, TRUE, "Games" },
2958 { 14, 14, 32, (const unsigned char*)h_src_data, 0, 0, TRUE, "h_src" }, 2937 { 12, 12, 32, (const unsigned char*)Go_black_highlight_data, 0, 0, TRUE, "Go-black-highlight" },
2938 { 12, 12, 32, (const unsigned char*)Go_black_data, 0, 0, TRUE, "Go-black" },
2939 { 16, 16, 32, (const unsigned char*)go_data, 0, 0, TRUE, "go" },
2940 { 12, 12, 32, (const unsigned char*)Go_white_data, 0, 0, TRUE, "Go-white" },
2941 { 14, 14, 32, (const unsigned char*)HelpButton_data, 0, 0, TRUE, "HelpButton" },
2959 { 14, 14, 32, (const unsigned char*)help_icon_data, 0, 0, TRUE, "help_icon" }, 2942 { 14, 14, 32, (const unsigned char*)help_icon_data, 0, 0, TRUE, "help_icon" },
2960 { 14, 14, 32, (const unsigned char*)home_data, 0, 0, TRUE, "home" }, 2943 { 14, 14, 32, (const unsigned char*)home_data, 0, 0, TRUE, "home" },
2961 { 14, 14, 32, (const unsigned char*)install_data, 0, 0, TRUE, "install" }, 2944 { 14, 14, 32, (const unsigned char*)h_src_data, 0, 0, TRUE, "h_src" },
2962 { 14, 14, 32, (const unsigned char*)installed_data, 0, 0, TRUE, "installed" }, 2945 { 14, 14, 32, (const unsigned char*)installed_data, 0, 0, TRUE, "installed" },
2946 { 14, 14, 32, (const unsigned char*)install_data, 0, 0, TRUE, "install" },
2963 { 14, 14, 32, (const unsigned char*)italic_data, 0, 0, TRUE, "italic" }, 2947 { 14, 14, 32, (const unsigned char*)italic_data, 0, 0, TRUE, "italic" },
2964 { 14, 14, 32, (const unsigned char*)konsole_data, 0, 0, TRUE, "konsole" }, 2948 { 14, 14, 32, (const unsigned char*)konsole_data, 0, 0, TRUE, "konsole" },
2965 { 14, 14, 32, (const unsigned char*)language_data, 0, 0, TRUE, "language" }, 2949 { 14, 14, 32, (const unsigned char*)language_data, 0, 0, TRUE, "language" },
2950 { 32, 32, 32, (const unsigned char*)Language_data, 0, 0, TRUE, "Language" },
2966 { 14, 14, 32, (const unsigned char*)left_data, 0, 0, TRUE, "left" }, 2951 { 14, 14, 32, (const unsigned char*)left_data, 0, 0, TRUE, "left" },
2967 { 14, 14, 32, (const unsigned char*)library_data, 0, 0, TRUE, "library" }, 2952 { 14, 14, 32, (const unsigned char*)library_data, 0, 0, TRUE, "library" },
2968 { 14, 14, 32, (const unsigned char*)locked_data, 0, 0, TRUE, "locked" },
2969 { 14, 14, 32, (const unsigned char*)lockedfolder_data, 0, 0, TRUE, "lockedfolder" }, 2953 { 14, 14, 32, (const unsigned char*)lockedfolder_data, 0, 0, TRUE, "lockedfolder" },
2954 { 14, 14, 32, (const unsigned char*)locked_data, 0, 0, TRUE, "locked" },
2970 { 14, 14, 32, (const unsigned char*)logout_data, 0, 0, TRUE, "logout" }, 2955 { 14, 14, 32, (const unsigned char*)logout_data, 0, 0, TRUE, "logout" },
2971 { 14, 14, 32, (const unsigned char*)mag_data, 0, 0, TRUE, "mag" }, 2956 { 14, 14, 32, (const unsigned char*)mag_data, 0, 0, TRUE, "mag" },
2972 { 14, 14, 32, (const unsigned char*)month_data, 0, 0, TRUE, "month" }, 2957 { 14, 14, 32, (const unsigned char*)month_data, 0, 0, TRUE, "month" },
2958 { 32, 32, 32, (const unsigned char*)MPEGPlayer_data, 0, 0, TRUE, "MPEGPlayer" },
2973 { 14, 14, 32, (const unsigned char*)mute_data, 0, 0, TRUE, "mute" }, 2959 { 14, 14, 32, (const unsigned char*)mute_data, 0, 0, TRUE, "mute" },
2974 { 14, 14, 32, (const unsigned char*)new_data, 0, 0, TRUE, "new" },
2975 { 14, 14, 32, (const unsigned char*)newfolder_data, 0, 0, TRUE, "newfolder" }, 2960 { 14, 14, 32, (const unsigned char*)newfolder_data, 0, 0, TRUE, "newfolder" },
2961 { 14, 14, 32, (const unsigned char*)new_data, 0, 0, TRUE, "new" },
2976 { 14, 14, 32, (const unsigned char*)next_data, 0, 0, TRUE, "next" }, 2962 { 14, 14, 32, (const unsigned char*)next_data, 0, 0, TRUE, "next" },
2963 { 28, 14, 32, (const unsigned char*)OKButton_data, 0, 0, TRUE, "OKButton" },
2977 { 13, 11, 8, (const unsigned char*)oneoverx_data, 2, oneoverx_ctable, TRUE, "oneoverx" }, 2964 { 13, 11, 8, (const unsigned char*)oneoverx_data, 2, oneoverx_ctable, TRUE, "oneoverx" },
2978 { 16, 14, 8, (const unsigned char*)pass_data, 3, pass_ctable, TRUE, "pass" }, 2965 { 16, 14, 8, (const unsigned char*)pass_data, 3, pass_ctable, TRUE, "pass" },
2979 { 14, 14, 32, (const unsigned char*)paste_data, 0, 0, TRUE, "paste" },
2980 { 14, 14, 32, (const unsigned char*)paste_inactive_data, 0, 0, TRUE, "paste_inactive" }, 2966 { 14, 14, 32, (const unsigned char*)paste_inactive_data, 0, 0, TRUE, "paste_inactive" },
2967 { 14, 14, 32, (const unsigned char*)paste_data, 0, 0, TRUE, "paste" },
2981 { 14, 14, 32, (const unsigned char*)pixmap_data, 0, 0, TRUE, "pixmap" }, 2968 { 14, 14, 32, (const unsigned char*)pixmap_data, 0, 0, TRUE, "pixmap" },
2982 { 14, 14, 32, (const unsigned char*)play_data, 0, 0, TRUE, "play" },
2983 { 14, 14, 32, (const unsigned char*)play2_data, 0, 0, TRUE, "play2" }, 2969 { 14, 14, 32, (const unsigned char*)play2_data, 0, 0, TRUE, "play2" },
2970 { 14, 14, 32, (const unsigned char*)play_data, 0, 0, TRUE, "play" },
2984 { 14, 14, 32, (const unsigned char*)programs_data, 0, 0, TRUE, "programs" }, 2971 { 14, 14, 32, (const unsigned char*)programs_data, 0, 0, TRUE, "programs" },
2985 { 14, 14, 32, (const unsigned char*)quit_icon_data, 0, 0, TRUE, "quit_icon" }, 2972 { 14, 14, 32, (const unsigned char*)quit_icon_data, 0, 0, TRUE, "quit_icon" },
2986 { 14, 14, 32, (const unsigned char*)redo_data, 0, 0, TRUE, "redo" }, 2973 { 14, 14, 32, (const unsigned char*)redo_data, 0, 0, TRUE, "redo" },
2987 { 14, 14, 32, (const unsigned char*)repeat_data, 0, 0, TRUE, "repeat" }, 2974 { 14, 14, 32, (const unsigned char*)repeat_data, 0, 0, TRUE, "repeat" },
2988 { 14, 14, 8, (const unsigned char*)reset_data, 3, reset_ctable, TRUE, "reset" }, 2975 { 14, 14, 8, (const unsigned char*)reset_data, 3, reset_ctable, TRUE, "reset" },
2989 { 14, 14, 32, (const unsigned char*)right_data, 0, 0, TRUE, "right" }, 2976 { 14, 14, 32, (const unsigned char*)right_data, 0, 0, TRUE, "right" },
2990 { 14, 14, 32, (const unsigned char*)rotate_data, 0, 0, TRUE, "rotate" }, 2977 { 14, 14, 32, (const unsigned char*)rotate_data, 0, 0, TRUE, "rotate" },
2978 { 32, 32, 32, (const unsigned char*)Rotation_data, 0, 0, TRUE, "Rotation" },
2991 { 14, 14, 32, (const unsigned char*)save_data, 0, 0, TRUE, "save" }, 2979 { 14, 14, 32, (const unsigned char*)save_data, 0, 0, TRUE, "save" },
2980 { 14, 14, 32, (const unsigned char*)SettingsIcon_data, 0, 0, TRUE, "SettingsIcon" },
2981 { 32, 32, 32, (const unsigned char*)Shutdown_data, 0, 0, TRUE, "Shutdown" },
2982 { 32, 32, 32, (const unsigned char*)SoundPlayer_data, 0, 0, TRUE, "SoundPlayer" },
2983 { 32, 32, 32, (const unsigned char*)Sound_data, 0, 0, TRUE, "Sound" },
2984 { 32, 32, 32, (const unsigned char*)Spreadsheet_data, 0, 0, TRUE, "Spreadsheet" },
2992 { 14, 14, 32, (const unsigned char*)start_data, 0, 0, TRUE, "start" }, 2985 { 14, 14, 32, (const unsigned char*)start_data, 0, 0, TRUE, "start" },
2993 { 14, 14, 32, (const unsigned char*)stop_data, 0, 0, TRUE, "stop" }, 2986 { 14, 14, 32, (const unsigned char*)stop_data, 0, 0, TRUE, "stop" },
2994 { 14, 14, 32, (const unsigned char*)style_data, 0, 0, TRUE, "style" }, 2987 { 14, 14, 32, (const unsigned char*)style_data, 0, 0, TRUE, "style" },
2995 { 14, 14, 32, (const unsigned char*)suspend_data, 0, 0, TRUE, "suspend" }, 2988 { 14, 14, 32, (const unsigned char*)suspend_data, 0, 0, TRUE, "suspend" },
2996 { 16, 16, 32, (const unsigned char*)table_pattern_data, 0, 0, TRUE, "table_pattern" }, 2989 { 16, 16, 32, (const unsigned char*)table_pattern_data, 0, 0, FALSE, "table_pattern" },
2997 { 14, 14, 32, (const unsigned char*)tgz_data, 0, 0, TRUE, "tgz" }, 2990 { 14, 14, 32, (const unsigned char*)tgz_data, 0, 0, TRUE, "tgz" },
2998 { 14, 14, 32, (const unsigned char*)toys_data, 0, 0, TRUE, "toys" }, 2991 { 14, 14, 32, (const unsigned char*)toys_data, 0, 0, TRUE, "toys" },
2999 { 14, 14, 32, (const unsigned char*)trash_data, 0, 0, TRUE, "trash" }, 2992 { 14, 14, 32, (const unsigned char*)trash_data, 0, 0, TRUE, "trash" },
2993 { 32, 32, 32, (const unsigned char*)Tux_data, 0, 0, TRUE, "Tux" },
3000 { 14, 14, 32, (const unsigned char*)txt_data, 0, 0, TRUE, "txt" }, 2994 { 14, 14, 32, (const unsigned char*)txt_data, 0, 0, TRUE, "txt" },
3001 { 14, 14, 32, (const unsigned char*)underline_data, 0, 0, TRUE, "underline" }, 2995 { 14, 14, 32, (const unsigned char*)underline_data, 0, 0, TRUE, "underline" },
3002 { 14, 14, 32, (const unsigned char*)undo_data, 0, 0, TRUE, "undo" }, 2996 { 14, 14, 32, (const unsigned char*)undo_data, 0, 0, TRUE, "undo" },
3003 { 14, 14, 32, (const unsigned char*)uninstall_data, 0, 0, TRUE, "uninstall" },
3004 { 14, 14, 32, (const unsigned char*)uninstalled_data, 0, 0, TRUE, "uninstalled" }, 2997 { 14, 14, 32, (const unsigned char*)uninstalled_data, 0, 0, TRUE, "uninstalled" },
2998 { 14, 14, 32, (const unsigned char*)uninstall_data, 0, 0, TRUE, "uninstall" },
3005 { 14, 14, 32, (const unsigned char*)up_data, 0, 0, TRUE, "up" }, 2999 { 14, 14, 32, (const unsigned char*)up_data, 0, 0, TRUE, "up" },
3000 { 14, 14, 32, (const unsigned char*)UtilsIcon_data, 0, 0, TRUE, "UtilsIcon" },
3006 { 14, 14, 32, (const unsigned char*)volume_data, 0, 0, TRUE, "volume" }, 3001 { 14, 14, 32, (const unsigned char*)volume_data, 0, 0, TRUE, "volume" },
3007 { 14, 14, 32, (const unsigned char*)wait_data, 0, 0, TRUE, "wait" }, 3002 { 14, 14, 32, (const unsigned char*)wait_data, 0, 0, TRUE, "wait" },
3008 { 14, 14, 32, (const unsigned char*)week_data, 0, 0, TRUE, "week" }, 3003 { 14, 14, 32, (const unsigned char*)week_data, 0, 0, TRUE, "week" },
3009 { 14, 14, 32, (const unsigned char*)wordgame_data, 0, 0, TRUE, "wordgame" }, 3004 { 14, 14, 32, (const unsigned char*)wordgame_data, 0, 0, TRUE, "wordgame" },
3010 { 9, 8, 8, (const unsigned char*)xtopowerofy_data, 2, xtopowerofy_ctable, TRUE, "xtopowerofy" }, 3005 { 9, 8, 8, (const unsigned char*)xtopowerofy_data, 2, xtopowerofy_ctable, TRUE, "xtopowerofy" },
3011 { 13, 11, 8, (const unsigned char*)ythrootofx_data, 2, ythrootofx_ctable, TRUE, "ythrootofx" }, 3006 { 13, 11, 8, (const unsigned char*)ythrootofx_data, 2, ythrootofx_ctable, TRUE, "ythrootofx" },
3012 { 14, 14, 32, (const unsigned char*)zoom_data, 0, 0, TRUE, "zoom" }, 3007 { 14, 14, 32, (const unsigned char*)zoom_data, 0, 0, TRUE, "zoom" },
3008 { 0, 0, 0, 0, 0, 0, 0, 0 }
3013}; 3009};
3014 3010
3015static int cmpEmbedImage(const void *a, const void *b) 3011static const QImage& qembed_findImage( const QString& name )
3016{
3017 const EmbedImage* ea = (const EmbedImage*)a;
3018 const EmbedImage* eb = (const EmbedImage*)b;
3019 return strcmp(ea->name,eb->name);
3020}
3021inline const QImage& qembed_findImage(const char* name)
3022{ 3012{
3023 EmbedImage key; key.name = name; 3013 static QDict<QImage> dict;
3024 EmbedImage* r = (EmbedImage*)bsearch( &key, embed_image_vec, 3014 QImage* img = dict.find( name );
3025 sizeof(embed_image_vec)/sizeof(EmbedImage), sizeof(EmbedImage), cmpEmbedImage ); 3015 if ( !img ) {
3026 QImage* img; 3016 for ( int i = 0; embed_image_vec[i].data; i++ ) {
3027 if ( r ) { 3017 if ( strcmp(embed_image_vec[i].name, name.latin1()) == 0 ) {
3028 img = new QImage((uchar*)r->data, 3018 img = new QImage((uchar*)embed_image_vec[i].data,
3029 r->width, 3019 embed_image_vec[i].width,
3030 r->height, 3020 embed_image_vec[i].height,
3031 r->depth, 3021 embed_image_vec[i].depth,
3032#ifdef _WS_QWS_ 3022 (QRgb*)embed_image_vec[i].colorTable,
3033 (r->width*r->depth+31)/32*4, 3023 embed_image_vec[i].numColors,
3034#endif 3024 QImage::BigEndian );
3035 (QRgb*)r->colorTable, 3025 if ( embed_image_vec[i].alpha )
3036 r->numColors, 3026 img->setAlphaBuffer( TRUE );
3037 QImage::BigEndian 3027 dict.insert( name, img );
3038 ); 3028 break;
3039 if ( r->alpha ) 3029 }
3040 img->setAlphaBuffer(TRUE); 3030 }
3041 } else { 3031 if ( !img ) {
3042 static QImage dummy; 3032 static QImage dummy;
3043 img = &dummy; 3033 return dummy;
3034 }
3044 } 3035 }
3045 return *img; 3036 return *img;
3046} 3037}
3047 3038
3048#endif 3039#endif
diff --git a/library/libqpe1.control b/library/libqpe1.control
index 8aab9be..16fca0a 100644
--- a/library/libqpe1.control
+++ b/library/libqpe1.control
@@ -1,9 +1,9 @@
1Package: libqpe1 1Package: libqpe1
2Files: $OPIEDIR/lib/libqpe.so.1 $OPIEDIR/lib/libqpe.so.1.5 $OPIEDIR/lib/libqpe.so.1.5.0 2Files: $OPIEDIR/lib/libqpe.so.1 $OPIEDIR/lib/libqpe.so.1.5 $OPIEDIR/lib/libqpe.so.1.5.0
3Priority: required 3Priority: required
4Section: opie/system 4Section: opie/system
5Maintainer: Project Opie <opie@handhelds.org> 5Maintainer: Project Opie <opie@handhelds.org>
6Architecture: arm 6Architecture: arm
7Version: $QPE_VERSION-$SUB_VERSION.1
8Depends: libqte2 (>=2.3.4-beta4), qte-fonts (>=$QTE_VERSION) 7Depends: libqte2 (>=2.3.4-beta4), qte-fonts (>=$QTE_VERSION)
9Description: libqpe, base qtopia/opie library. 8Description: libqpe, base qtopia/opie library.
9Version: $QPE_VERSION$EXTRAVERSION
diff --git a/library/lnkpropertiesbase_p.ui b/library/lnkpropertiesbase_p.ui
index c2271f1..1bafab6 100644
--- a/library/lnkpropertiesbase_p.ui
+++ b/library/lnkpropertiesbase_p.ui
@@ -1,681 +1,689 @@
1<!DOCTYPE UI><UI> 1<!DOCTYPE UI><UI>
2<class>LnkPropertiesBase</class> 2<class>LnkPropertiesBase</class>
3<widget> 3<widget>
4 <class>QWidget</class> 4 <class>QWidget</class>
5 <property stdset="1"> 5 <property stdset="1">
6 <name>name</name> 6 <name>name</name>
7 <cstring>Form1</cstring> 7 <cstring>Form1</cstring>
8 </property> 8 </property>
9 <property stdset="1"> 9 <property stdset="1">
10 <name>geometry</name> 10 <name>geometry</name>
11 <rect> 11 <rect>
12 <x>0</x> 12 <x>0</x>
13 <y>0</y> 13 <y>0</y>
14 <width>267</width> 14 <width>263</width>
15 <height>450</height> 15 <height>450</height>
16 </rect> 16 </rect>
17 </property> 17 </property>
18 <property stdset="1"> 18 <property stdset="1">
19 <name>sizePolicy</name> 19 <name>sizePolicy</name>
20 <sizepolicy> 20 <sizepolicy>
21 <hsizetype>5</hsizetype> 21 <hsizetype>5</hsizetype>
22 <vsizetype>5</vsizetype> 22 <vsizetype>5</vsizetype>
23 </sizepolicy> 23 </sizepolicy>
24 </property> 24 </property>
25 <property stdset="1"> 25 <property stdset="1">
26 <name>font</name> 26 <name>font</name>
27 <font> 27 <font>
28 </font> 28 </font>
29 </property> 29 </property>
30 <property stdset="1"> 30 <property stdset="1">
31 <name>caption</name> 31 <name>caption</name>
32 <string>Details</string> 32 <string>Details</string>
33 </property> 33 </property>
34 <property stdset="1"> 34 <property stdset="1">
35 <name>icon</name> 35 <name>icon</name>
36 <pixmap>image0</pixmap> 36 <pixmap>image0</pixmap>
37 </property> 37 </property>
38 <property> 38 <property>
39 <name>layoutMargin</name> 39 <name>layoutMargin</name>
40 </property> 40 </property>
41 <property> 41 <property>
42 <name>layoutSpacing</name> 42 <name>layoutSpacing</name>
43 </property> 43 </property>
44 <vbox> 44 <vbox>
45 <property stdset="1"> 45 <property stdset="1">
46 <name>margin</name> 46 <name>margin</name>
47 <number>0</number> 47 <number>0</number>
48 </property> 48 </property>
49 <property stdset="1"> 49 <property stdset="1">
50 <name>spacing</name> 50 <name>spacing</name>
51 <number>0</number> 51 <number>0</number>
52 </property> 52 </property>
53 <widget> 53 <widget>
54 <class>QFrame</class> 54 <class>QFrame</class>
55 <property stdset="1"> 55 <property stdset="1">
56 <name>name</name> 56 <name>name</name>
57 <cstring>Frame8</cstring> 57 <cstring>Frame8</cstring>
58 </property> 58 </property>
59 <property stdset="1"> 59 <property stdset="1">
60 <name>focusPolicy</name> 60 <name>focusPolicy</name>
61 <enum>NoFocus</enum> 61 <enum>NoFocus</enum>
62 </property> 62 </property>
63 <property stdset="1"> 63 <property stdset="1">
64 <name>frameShape</name> 64 <name>frameShape</name>
65 <enum>NoFrame</enum> 65 <enum>NoFrame</enum>
66 </property> 66 </property>
67 <property stdset="1"> 67 <property stdset="1">
68 <name>frameShadow</name> 68 <name>frameShadow</name>
69 <enum>Plain</enum> 69 <enum>Plain</enum>
70 </property> 70 </property>
71 <property> 71 <property>
72 <name>layoutMargin</name> 72 <name>layoutMargin</name>
73 </property> 73 </property>
74 <property> 74 <property>
75 <name>layoutSpacing</name> 75 <name>layoutSpacing</name>
76 </property> 76 </property>
77 <grid> 77 <grid>
78 <property stdset="1"> 78 <property stdset="1">
79 <name>margin</name> 79 <name>margin</name>
80 <number>3</number> 80 <number>3</number>
81 </property> 81 </property>
82 <property stdset="1"> 82 <property stdset="1">
83 <name>spacing</name> 83 <name>spacing</name>
84 <number>3</number> 84 <number>3</number>
85 </property> 85 </property>
86 <widget row="8" column="0" rowspan="1" colspan="2" > 86 <widget row="8" column="0" rowspan="1" colspan="2" >
87 <class>CategoryWidget</class> 87 <class>CategoryWidget</class>
88 <property stdset="1"> 88 <property stdset="1">
89 <name>name</name> 89 <name>name</name>
90 <cstring>categoryEdit</cstring> 90 <cstring>categoryEdit</cstring>
91 </property> 91 </property>
92 <property stdset="1"> 92 <property stdset="1">
93 <name>sizePolicy</name> 93 <name>sizePolicy</name>
94 <sizepolicy> 94 <sizepolicy>
95 <hsizetype>1</hsizetype> 95 <hsizetype>1</hsizetype>
96 <vsizetype>7</vsizetype> 96 <vsizetype>7</vsizetype>
97 </sizepolicy> 97 </sizepolicy>
98 </property> 98 </property>
99 </widget> 99 </widget>
100 <widget row="5" column="0" rowspan="1" colspan="2" > 100 <widget row="5" column="0" rowspan="1" colspan="2" >
101 <class>QCheckBox</class> 101 <class>QCheckBox</class>
102 <property stdset="1"> 102 <property stdset="1">
103 <name>name</name> 103 <name>name</name>
104 <cstring>rotate</cstring> 104 <cstring>rotate</cstring>
105 </property> 105 </property>
106 <property stdset="1"> 106 <property stdset="1">
107 <name>text</name> 107 <name>text</name>
108 <string>Use custom rotation</string> 108 <string>Use custom rotation</string>
109 </property> 109 </property>
110 <property> 110 <property>
111 <name>layoutMargin</name> 111 <name>layoutMargin</name>
112 </property> 112 </property>
113 <property> 113 <property>
114 <name>layoutSpacing</name> 114 <name>layoutSpacing</name>
115 </property> 115 </property>
116 <property> 116 <property>
117 <name>whatsThis</name> 117 <name>whatsThis</name>
118 <string>Preload this application so that it is available instantly.</string> 118 <string>Preload this application so that it is available instantly.</string>
119 </property> 119 </property>
120 </widget> 120 </widget>
121 <widget row="0" column="1" > 121 <widget row="0" column="1" >
122 <class>QLineEdit</class> 122 <class>QLineEdit</class>
123 <property stdset="1"> 123 <property stdset="1">
124 <name>name</name> 124 <name>name</name>
125 <cstring>docname</cstring> 125 <cstring>docname</cstring>
126 </property> 126 </property>
127 <property stdset="1"> 127 <property stdset="1">
128 <name>sizePolicy</name> 128 <name>sizePolicy</name>
129 <sizepolicy> 129 <sizepolicy>
130 <hsizetype>7</hsizetype> 130 <hsizetype>7</hsizetype>
131 <vsizetype>0</vsizetype> 131 <vsizetype>0</vsizetype>
132 </sizepolicy> 132 </sizepolicy>
133 </property> 133 </property>
134 <property stdset="1"> 134 <property stdset="1">
135 <name>text</name> 135 <name>text</name>
136 <string></string> 136 <string></string>
137 </property> 137 </property>
138 <property> 138 <property>
139 <name>whatsThis</name> 139 <name>whatsThis</name>
140 <string>The name of this document.</string> 140 <string>The name of this document.</string>
141 </property> 141 </property>
142 </widget> 142 </widget>
143 <widget row="1" column="1" > 143 <widget row="1" column="1" >
144 <class>QComboBox</class> 144 <class>QComboBox</class>
145 <property stdset="1"> 145 <property stdset="1">
146 <name>name</name> 146 <name>name</name>
147 <cstring>locationCombo</cstring> 147 <cstring>locationCombo</cstring>
148 </property> 148 </property>
149 <property stdset="1"> 149 <property stdset="1">
150 <name>sizePolicy</name> 150 <name>sizePolicy</name>
151 <sizepolicy> 151 <sizepolicy>
152 <hsizetype>7</hsizetype> 152 <hsizetype>7</hsizetype>
153 <vsizetype>0</vsizetype> 153 <vsizetype>0</vsizetype>
154 </sizepolicy> 154 </sizepolicy>
155 </property> 155 </property>
156 <property> 156 <property>
157 <name>whatsThis</name> 157 <name>whatsThis</name>
158 <string>The media the document resides on.</string> 158 <string>The media the document resides on.</string>
159 </property> 159 </property>
160 </widget> 160 </widget>
161 <widget row="2" column="0" > 161 <widget row="2" column="0" >
162 <class>QLabel</class> 162 <class>QLabel</class>
163 <property stdset="1"> 163 <property stdset="1">
164 <name>name</name> 164 <name>name</name>
165 <cstring>typeLabel</cstring> 165 <cstring>typeLabel</cstring>
166 </property> 166 </property>
167 <property stdset="1"> 167 <property stdset="1">
168 <name>focusPolicy</name> 168 <name>focusPolicy</name>
169 <enum>NoFocus</enum> 169 <enum>NoFocus</enum>
170 </property> 170 </property>
171 <property stdset="1"> 171 <property stdset="1">
172 <name>text</name> 172 <name>text</name>
173 <string>Type:</string> 173 <string>Type:</string>
174 </property> 174 </property>
175 <property stdset="1">
176 <name>textFormat</name>
177 <enum>RichText</enum>
178 </property>
175 <property> 179 <property>
176 <name>layoutMargin</name> 180 <name>layoutMargin</name>
177 </property> 181 </property>
178 <property> 182 <property>
179 <name>layoutSpacing</name> 183 <name>layoutSpacing</name>
180 </property> 184 </property>
181 </widget> 185 </widget>
182 <widget row="2" column="1" > 186 <widget row="2" column="1" >
183 <class>QLabel</class> 187 <class>QLabel</class>
184 <property stdset="1"> 188 <property stdset="1">
185 <name>name</name> 189 <name>name</name>
186 <cstring>type</cstring> 190 <cstring>type</cstring>
187 </property> 191 </property>
188 <property stdset="1"> 192 <property stdset="1">
189 <name>text</name> 193 <name>text</name>
190 <string></string> 194 <string></string>
191 </property> 195 </property>
192 </widget> 196 </widget>
193 <widget row="1" column="0" > 197 <widget row="1" column="0" >
194 <class>QLabel</class> 198 <class>QLabel</class>
195 <property stdset="1"> 199 <property stdset="1">
196 <name>name</name> 200 <name>name</name>
197 <cstring>locationLabel</cstring> 201 <cstring>locationLabel</cstring>
198 </property> 202 </property>
199 <property stdset="1"> 203 <property stdset="1">
200 <name>sizePolicy</name> 204 <name>sizePolicy</name>
201 <sizepolicy> 205 <sizepolicy>
202 <hsizetype>1</hsizetype> 206 <hsizetype>1</hsizetype>
203 <vsizetype>1</vsizetype> 207 <vsizetype>1</vsizetype>
204 </sizepolicy> 208 </sizepolicy>
205 </property> 209 </property>
206 <property stdset="1"> 210 <property stdset="1">
207 <name>caption</name> 211 <name>caption</name>
208 <string></string> 212 <string></string>
209 </property> 213 </property>
210 <property stdset="1"> 214 <property stdset="1">
211 <name>text</name> 215 <name>text</name>
212 <string>Location:</string> 216 <string>Location:</string>
213 </property> 217 </property>
214 <property> 218 <property>
215 <name>layoutMargin</name> 219 <name>layoutMargin</name>
216 </property> 220 </property>
217 <property> 221 <property>
218 <name>layoutSpacing</name> 222 <name>layoutSpacing</name>
219 </property> 223 </property>
220 </widget> 224 </widget>
221 <widget row="0" column="0" > 225 <widget row="0" column="0" >
222 <class>QLabel</class> 226 <class>QLabel</class>
223 <property stdset="1"> 227 <property stdset="1">
224 <name>name</name> 228 <name>name</name>
225 <cstring>TextLabel1</cstring> 229 <cstring>TextLabel1</cstring>
226 </property> 230 </property>
227 <property stdset="1"> 231 <property stdset="1">
228 <name>frameShadow</name> 232 <name>frameShadow</name>
229 <enum>MShadow</enum> 233 <enum>MShadow</enum>
230 </property> 234 </property>
231 <property stdset="1"> 235 <property stdset="1">
232 <name>text</name> 236 <name>text</name>
233 <string>Name:</string> 237 <string>Name:</string>
234 </property> 238 </property>
235 </widget> 239 </widget>
236 <widget row="3" column="1" > 240 <widget row="3" column="1" >
237 <class>QLabel</class> 241 <class>QLabel</class>
238 <property stdset="1"> 242 <property stdset="1">
239 <name>name</name> 243 <name>name</name>
240 <cstring>comment</cstring> 244 <cstring>comment</cstring>
241 </property> 245 </property>
242 <property stdset="1"> 246 <property stdset="1">
243 <name>text</name> 247 <name>text</name>
244 <string></string> 248 <string></string>
245 </property> 249 </property>
246 </widget> 250 </widget>
247 <widget row="6" column="0" rowspan="1" colspan="2" > 251 <widget row="6" column="0" rowspan="1" colspan="2" >
248 <class>QButtonGroup</class> 252 <class>QButtonGroup</class>
249 <property stdset="1"> 253 <property stdset="1">
250 <name>name</name> 254 <name>name</name>
251 <cstring>rotateButtons</cstring> 255 <cstring>rotateButtons</cstring>
252 </property> 256 </property>
253 <property stdset="1"> 257 <property stdset="1">
254 <name>frameShape</name> 258 <name>frameShape</name>
255 <enum>NoFrame</enum> 259 <enum>NoFrame</enum>
256 </property> 260 </property>
257 <property stdset="1"> 261 <property stdset="1">
258 <name>title</name> 262 <name>title</name>
259 <string></string> 263 <string></string>
260 </property> 264 </property>
261 <property stdset="1"> 265 <property stdset="1">
262 <name>exclusive</name> 266 <name>exclusive</name>
263 <bool>true</bool> 267 <bool>true</bool>
264 </property> 268 </property>
265 <property> 269 <property>
266 <name>layoutMargin</name> 270 <name>layoutMargin</name>
267 </property> 271 </property>
268 <property> 272 <property>
269 <name>layoutSpacing</name> 273 <name>layoutSpacing</name>
270 </property> 274 </property>
271 <hbox> 275 <hbox>
272 <property stdset="1"> 276 <property stdset="1">
273 <name>margin</name> 277 <name>margin</name>
274 <number>0</number> 278 <number>0</number>
275 </property> 279 </property>
276 <property stdset="1"> 280 <property stdset="1">
277 <name>spacing</name> 281 <name>spacing</name>
278 <number>3</number> 282 <number>3</number>
279 </property> 283 </property>
280 <spacer> 284 <spacer>
281 <property> 285 <property>
282 <name>name</name> 286 <name>name</name>
283 <cstring>s1</cstring> 287 <cstring>s1</cstring>
284 </property> 288 </property>
285 <property stdset="1"> 289 <property stdset="1">
286 <name>orientation</name> 290 <name>orientation</name>
287 <enum>Horizontal</enum> 291 <enum>Horizontal</enum>
288 </property> 292 </property>
289 <property stdset="1"> 293 <property stdset="1">
290 <name>sizeType</name> 294 <name>sizeType</name>
291 <enum>Fixed</enum> 295 <enum>Fixed</enum>
292 </property> 296 </property>
293 <property> 297 <property>
294 <name>sizeHint</name> 298 <name>sizeHint</name>
295 <size> 299 <size>
296 <width>20</width> 300 <width>20</width>
297 <height>28</height> 301 <height>28</height>
298 </size> 302 </size>
299 </property> 303 </property>
300 </spacer> 304 </spacer>
301 <widget> 305 <widget>
302 <class>QToolButton</class> 306 <class>QToolButton</class>
303 <property stdset="1"> 307 <property stdset="1">
304 <name>name</name> 308 <name>name</name>
305 <cstring>ToolButton1</cstring> 309 <cstring>ToolButton1</cstring>
306 </property> 310 </property>
307 <property stdset="1"> 311 <property stdset="1">
308 <name>text</name> 312 <name>text</name>
309 <string></string> 313 <string></string>
310 </property> 314 </property>
311 <property stdset="1"> 315 <property stdset="1">
312 <name>pixmap</name> 316 <name>pixmap</name>
313 <pixmap>image0</pixmap> 317 <pixmap>image0</pixmap>
314 </property> 318 </property>
315 <property stdset="1"> 319 <property stdset="1">
316 <name>toggleButton</name> 320 <name>toggleButton</name>
317 <bool>true</bool> 321 <bool>true</bool>
318 </property> 322 </property>
319 <property stdset="1"> 323 <property stdset="1">
320 <name>on</name> 324 <name>on</name>
321 <bool>false</bool> 325 <bool>false</bool>
322 </property> 326 </property>
323 <property stdset="1"> 327 <property stdset="1">
324 <name>usesBigPixmap</name> 328 <name>usesBigPixmap</name>
325 <bool>true</bool> 329 <bool>true</bool>
326 </property> 330 </property>
327 <property stdset="1"> 331 <property stdset="1">
328 <name>toggleButton</name> 332 <name>toggleButton</name>
329 <bool>true</bool> 333 <bool>true</bool>
330 </property> 334 </property>
331 <property stdset="1"> 335 <property stdset="1">
332 <name>on</name> 336 <name>on</name>
333 <bool>false</bool> 337 <bool>false</bool>
334 </property> 338 </property>
335 <property stdset="1"> 339 <property stdset="1">
336 <name>buttonGroupId</name> 340 <name>buttonGroupId</name>
337 <number>0</number> 341 <number>0</number>
338 </property> 342 </property>
339 </widget> 343 </widget>
340 <widget> 344 <widget>
341 <class>QToolButton</class> 345 <class>QToolButton</class>
342 <property stdset="1"> 346 <property stdset="1">
343 <name>name</name> 347 <name>name</name>
344 <cstring>ToolButton2</cstring> 348 <cstring>ToolButton2</cstring>
345 </property> 349 </property>
346 <property stdset="1"> 350 <property stdset="1">
347 <name>text</name> 351 <name>text</name>
348 <string></string> 352 <string></string>
349 </property> 353 </property>
350 <property stdset="1"> 354 <property stdset="1">
351 <name>pixmap</name> 355 <name>pixmap</name>
352 <pixmap>image1</pixmap> 356 <pixmap>image1</pixmap>
353 </property> 357 </property>
354 <property stdset="1"> 358 <property stdset="1">
355 <name>toggleButton</name> 359 <name>toggleButton</name>
356 <bool>true</bool> 360 <bool>true</bool>
357 </property> 361 </property>
358 <property stdset="1"> 362 <property stdset="1">
359 <name>usesBigPixmap</name> 363 <name>usesBigPixmap</name>
360 <bool>true</bool> 364 <bool>true</bool>
361 </property> 365 </property>
362 <property stdset="1"> 366 <property stdset="1">
363 <name>toggleButton</name> 367 <name>toggleButton</name>
364 <bool>true</bool> 368 <bool>true</bool>
365 </property> 369 </property>
366 <property stdset="1"> 370 <property stdset="1">
367 <name>buttonGroupId</name> 371 <name>buttonGroupId</name>
368 <number>1</number> 372 <number>1</number>
369 </property> 373 </property>
370 </widget> 374 </widget>
371 <widget> 375 <widget>
372 <class>QToolButton</class> 376 <class>QToolButton</class>
373 <property stdset="1"> 377 <property stdset="1">
374 <name>name</name> 378 <name>name</name>
375 <cstring>ToolButton3</cstring> 379 <cstring>ToolButton3</cstring>
376 </property> 380 </property>
377 <property stdset="1"> 381 <property stdset="1">
378 <name>text</name> 382 <name>text</name>
379 <string></string> 383 <string></string>
380 </property> 384 </property>
381 <property stdset="1"> 385 <property stdset="1">
382 <name>pixmap</name> 386 <name>pixmap</name>
383 <pixmap>image2</pixmap> 387 <pixmap>image2</pixmap>
384 </property> 388 </property>
385 <property stdset="1"> 389 <property stdset="1">
386 <name>toggleButton</name> 390 <name>toggleButton</name>
387 <bool>true</bool> 391 <bool>true</bool>
388 </property> 392 </property>
389 <property stdset="1"> 393 <property stdset="1">
390 <name>usesBigPixmap</name> 394 <name>usesBigPixmap</name>
391 <bool>true</bool> 395 <bool>true</bool>
392 </property> 396 </property>
393 <property stdset="1"> 397 <property stdset="1">
394 <name>toggleButton</name> 398 <name>toggleButton</name>
395 <bool>true</bool> 399 <bool>true</bool>
396 </property> 400 </property>
397 <property stdset="1"> 401 <property stdset="1">
398 <name>buttonGroupId</name> 402 <name>buttonGroupId</name>
399 <number>2</number> 403 <number>2</number>
400 </property> 404 </property>
401 </widget> 405 </widget>
402 <widget> 406 <widget>
403 <class>QToolButton</class> 407 <class>QToolButton</class>
404 <property stdset="1"> 408 <property stdset="1">
405 <name>name</name> 409 <name>name</name>
406 <cstring>ToolButton4</cstring> 410 <cstring>ToolButton4</cstring>
407 </property> 411 </property>
408 <property stdset="1"> 412 <property stdset="1">
409 <name>text</name> 413 <name>text</name>
410 <string></string> 414 <string></string>
411 </property> 415 </property>
412 <property stdset="1"> 416 <property stdset="1">
413 <name>pixmap</name> 417 <name>pixmap</name>
414 <pixmap>image3</pixmap> 418 <pixmap>image3</pixmap>
415 </property> 419 </property>
416 <property stdset="1"> 420 <property stdset="1">
417 <name>toggleButton</name> 421 <name>toggleButton</name>
418 <bool>true</bool> 422 <bool>true</bool>
419 </property> 423 </property>
420 <property stdset="1"> 424 <property stdset="1">
421 <name>usesBigPixmap</name> 425 <name>usesBigPixmap</name>
422 <bool>true</bool> 426 <bool>true</bool>
423 </property> 427 </property>
424 <property stdset="1"> 428 <property stdset="1">
425 <name>toggleButton</name> 429 <name>toggleButton</name>
426 <bool>true</bool> 430 <bool>true</bool>
427 </property> 431 </property>
428 <property stdset="1"> 432 <property stdset="1">
429 <name>buttonGroupId</name> 433 <name>buttonGroupId</name>
430 <number>3</number> 434 <number>3</number>
431 </property> 435 </property>
432 </widget> 436 </widget>
433 <spacer> 437 <spacer>
434 <property> 438 <property>
435 <name>name</name> 439 <name>name</name>
436 <cstring>s4</cstring> 440 <cstring>s4</cstring>
437 </property> 441 </property>
438 <property stdset="1"> 442 <property stdset="1">
439 <name>orientation</name> 443 <name>orientation</name>
440 <enum>Horizontal</enum> 444 <enum>Horizontal</enum>
441 </property> 445 </property>
442 <property stdset="1"> 446 <property stdset="1">
443 <name>sizeType</name> 447 <name>sizeType</name>
444 <enum>MinimumExpanding</enum> 448 <enum>MinimumExpanding</enum>
445 </property> 449 </property>
446 <property> 450 <property>
447 <name>sizeHint</name> 451 <name>sizeHint</name>
448 <size> 452 <size>
449 <width>20</width> 453 <width>20</width>
450 <height>20</height> 454 <height>20</height>
451 </size> 455 </size>
452 </property> 456 </property>
453 </spacer> 457 </spacer>
454 </hbox> 458 </hbox>
455 </widget> 459 </widget>
456 <widget row="7" column="0" rowspan="1" colspan="2" > 460 <widget row="7" column="0" rowspan="1" colspan="2" >
457 <class>QLabel</class> 461 <class>QLabel</class>
458 <property stdset="1"> 462 <property stdset="1">
459 <name>name</name> 463 <name>name</name>
460 <cstring>labelspacer</cstring> 464 <cstring>labelspacer</cstring>
461 </property> 465 </property>
462 <property stdset="1"> 466 <property stdset="1">
463 <name>sizePolicy</name> 467 <name>sizePolicy</name>
464 <sizepolicy> 468 <sizepolicy>
465 <hsizetype>1</hsizetype> 469 <hsizetype>1</hsizetype>
466 <vsizetype>7</vsizetype> 470 <vsizetype>7</vsizetype>
467 </sizepolicy> 471 </sizepolicy>
468 </property> 472 </property>
469 <property stdset="1"> 473 <property stdset="1">
470 <name>text</name> 474 <name>text</name>
471 <string></string> 475 <string></string>
472 </property> 476 </property>
473 </widget> 477 </widget>
474 <widget row="4" column="0" rowspan="1" colspan="2" > 478 <widget row="4" column="0" rowspan="1" colspan="2" >
475 <class>QCheckBox</class> 479 <class>QCheckBox</class>
476 <property stdset="1"> 480 <property stdset="1">
477 <name>name</name> 481 <name>name</name>
478 <cstring>preload</cstring> 482 <cstring>preload</cstring>
479 </property> 483 </property>
480 <property stdset="1"> 484 <property stdset="1">
481 <name>text</name> 485 <name>text</name>
482 <string>Fast load (consumes memory)</string> 486 <string>Fast load (consumes memory)</string>
483 </property> 487 </property>
484 <property> 488 <property>
485 <name>layoutMargin</name> 489 <name>layoutMargin</name>
486 </property> 490 </property>
487 <property> 491 <property>
488 <name>layoutSpacing</name> 492 <name>layoutSpacing</name>
489 </property> 493 </property>
490 <property> 494 <property>
491 <name>whatsThis</name> 495 <name>whatsThis</name>
492 <string>Preload this application so that it is available instantly.</string> 496 <string>Preload this application so that it is available instantly.</string>
493 </property> 497 </property>
494 </widget> 498 </widget>
495 <widget row="3" column="0" > 499 <widget row="3" column="0" >
496 <class>QLabel</class> 500 <class>QLabel</class>
497 <property stdset="1"> 501 <property stdset="1">
498 <name>name</name> 502 <name>name</name>
499 <cstring>commentLabel</cstring> 503 <cstring>commentLabel</cstring>
500 </property> 504 </property>
501 <property stdset="1"> 505 <property stdset="1">
502 <name>text</name> 506 <name>text</name>
503 <string>Comment:</string> 507 <string>Comment:</string>
504 </property> 508 </property>
509 <property stdset="1">
510 <name>textFormat</name>
511 <enum>RichText</enum>
512 </property>
505 </widget> 513 </widget>
506 </grid> 514 </grid>
507 </widget> 515 </widget>
508 <widget> 516 <widget>
509 <class>Line</class> 517 <class>Line</class>
510 <property stdset="1"> 518 <property stdset="1">
511 <name>name</name> 519 <name>name</name>
512 <cstring>hline</cstring> 520 <cstring>hline</cstring>
513 </property> 521 </property>
514 <property stdset="1"> 522 <property stdset="1">
515 <name>frameShadow</name> 523 <name>frameShadow</name>
516 <enum>Sunken</enum> 524 <enum>Sunken</enum>
517 </property> 525 </property>
518 <property stdset="1"> 526 <property stdset="1">
519 <name>orientation</name> 527 <name>orientation</name>
520 <enum>Horizontal</enum> 528 <enum>Horizontal</enum>
521 </property> 529 </property>
522 <property> 530 <property>
523 <name>layoutMargin</name> 531 <name>layoutMargin</name>
524 </property> 532 </property>
525 <property> 533 <property>
526 <name>layoutSpacing</name> 534 <name>layoutSpacing</name>
527 </property> 535 </property>
528 </widget> 536 </widget>
529 <widget> 537 <widget>
530 <class>QFrame</class> 538 <class>QFrame</class>
531 <property stdset="1"> 539 <property stdset="1">
532 <name>name</name> 540 <name>name</name>
533 <cstring>Frame9</cstring> 541 <cstring>Frame9</cstring>
534 </property> 542 </property>
535 <property stdset="1"> 543 <property stdset="1">
536 <name>frameShape</name> 544 <name>frameShape</name>
537 <enum>NoFrame</enum> 545 <enum>NoFrame</enum>
538 </property> 546 </property>
539 <property stdset="1"> 547 <property stdset="1">
540 <name>frameShadow</name> 548 <name>frameShadow</name>
541 <enum>Plain</enum> 549 <enum>Plain</enum>
542 </property> 550 </property>
543 <property> 551 <property>
544 <name>layoutMargin</name> 552 <name>layoutMargin</name>
545 </property> 553 </property>
546 <property> 554 <property>
547 <name>layoutSpacing</name> 555 <name>layoutSpacing</name>
548 </property> 556 </property>
549 <hbox> 557 <hbox>
550 <property stdset="1"> 558 <property stdset="1">
551 <name>margin</name> 559 <name>margin</name>
552 <number>3</number> 560 <number>3</number>
553 </property> 561 </property>
554 <property stdset="1"> 562 <property stdset="1">
555 <name>spacing</name> 563 <name>spacing</name>
556 <number>5</number> 564 <number>5</number>
557 </property> 565 </property>
558 <widget> 566 <widget>
559 <class>QPushButton</class> 567 <class>QPushButton</class>
560 <property stdset="1"> 568 <property stdset="1">
561 <name>name</name> 569 <name>name</name>
562 <cstring>unlink</cstring> 570 <cstring>unlink</cstring>
563 </property> 571 </property>
564 <property stdset="1"> 572 <property stdset="1">
565 <name>focusPolicy</name> 573 <name>focusPolicy</name>
566 <enum>TabFocus</enum> 574 <enum>TabFocus</enum>
567 </property> 575 </property>
568 <property stdset="1"> 576 <property stdset="1">
569 <name>text</name> 577 <name>text</name>
570 <string>Delete</string> 578 <string>Delete</string>
571 </property> 579 </property>
572 <property stdset="1"> 580 <property stdset="1">
573 <name>autoDefault</name> 581 <name>autoDefault</name>
574 <bool>false</bool> 582 <bool>false</bool>
575 </property> 583 </property>
576 <property> 584 <property>
577 <name>whatsThis</name> 585 <name>whatsThis</name>
578 <string>Delete this document.</string> 586 <string>Delete this document.</string>
579 </property> 587 </property>
580 </widget> 588 </widget>
581 <widget> 589 <widget>
582 <class>QPushButton</class> 590 <class>QPushButton</class>
583 <property stdset="1"> 591 <property stdset="1">
584 <name>name</name> 592 <name>name</name>
585 <cstring>duplicate</cstring> 593 <cstring>duplicate</cstring>
586 </property> 594 </property>
587 <property stdset="1"> 595 <property stdset="1">
588 <name>text</name> 596 <name>text</name>
589 <string>Copy</string> 597 <string>Copy</string>
590 </property> 598 </property>
591 <property stdset="1"> 599 <property stdset="1">
592 <name>autoDefault</name> 600 <name>autoDefault</name>
593 <bool>false</bool> 601 <bool>false</bool>
594 </property> 602 </property>
595 <property> 603 <property>
596 <name>whatsThis</name> 604 <name>whatsThis</name>
597 <string>Make a copy of this document.</string> 605 <string>Make a copy of this document.</string>
598 </property> 606 </property>
599 </widget> 607 </widget>
600 <widget> 608 <widget>
601 <class>QPushButton</class> 609 <class>QPushButton</class>
602 <property stdset="1"> 610 <property stdset="1">
603 <name>name</name> 611 <name>name</name>
604 <cstring>beam</cstring> 612 <cstring>beam</cstring>
605 </property> 613 </property>
606 <property stdset="1"> 614 <property stdset="1">
607 <name>focusPolicy</name> 615 <name>focusPolicy</name>
608 <enum>TabFocus</enum> 616 <enum>TabFocus</enum>
609 </property> 617 </property>
610 <property stdset="1"> 618 <property stdset="1">
611 <name>text</name> 619 <name>text</name>
612 <string>Beam</string> 620 <string>Beam</string>
613 </property> 621 </property>
614 <property stdset="1"> 622 <property stdset="1">
615 <name>autoDefault</name> 623 <name>autoDefault</name>
616 <bool>false</bool> 624 <bool>false</bool>
617 </property> 625 </property>
618 <property> 626 <property>
619 <name>whatsThis</name> 627 <name>whatsThis</name>
620 <string>Beam this document to another device.</string> 628 <string>Beam this document to another device.</string>
621 </property> 629 </property>
622 </widget> 630 </widget>
623 </hbox> 631 </hbox>
624 </widget> 632 </widget>
625 </vbox> 633 </vbox>
626</widget> 634</widget>
627<customwidgets> 635<customwidgets>
628 <customwidget> 636 <customwidget>
629 <class>CategoryWidget</class> 637 <class>CategoryWidget</class>
630 <header location="global">qpe/categorywidget.h</header> 638 <header location="global">qpe/categorywidget.h</header>
631 <sizehint> 639 <sizehint>
632 <width>-1</width> 640 <width>-1</width>
633 <height>-1</height> 641 <height>-1</height>
634 </sizehint> 642 </sizehint>
635 <container>0</container> 643 <container>0</container>
636 <sizepolicy> 644 <sizepolicy>
637 <hordata>7</hordata> 645 <hordata>7</hordata>
638 <verdata>7</verdata> 646 <verdata>7</verdata>
639 </sizepolicy> 647 </sizepolicy>
640 <pixmap>image4</pixmap> 648 <pixmap>image4</pixmap>
641 </customwidget> 649 </customwidget>
642</customwidgets> 650</customwidgets>
643<images> 651<images>
644 <image> 652 <image>
645 <name>image0</name> 653 <name>image0</name>
646 <data format="XPM.GZ" length="1226">789cd3d7528808f055d0d2e72a2e492cc94c5648ce482c52d04a29cdcdad8c8eb5ade6523236520022230543251d2e253d856405bffcbc54105b19c856360003b014013032d4282b2b13366708a951067908240fa6a00a95612cb01a6528d04362e92158e0a40213830510c4546598dd103570b72098482ea3ae1ac2eec1ef2f6565d4f051c6123e3035f8c1a81a2aa8a9b5e60200f6abd263</data> 654 <data format="XPM.GZ" length="1226">789cd3d7528808f055d0d2e72a2e492cc94c5648ce482c52d04a29cdcdad8c8eb5ade6523236520022230543251d2e253d856405bffcbc54105b19c856360003b014013032d4282b2b13366708a951067908240fa6a00a95612cb01a6528d04362e92158e0a40213830510c4546598dd103570b72098482ea3ae1ac2eec1ef2f6565d4f051c6123e3035f8c1a81a2aa8a9b5e60200f6abd263</data>
647 </image> 655 </image>
648 <image> 656 <image>
649 <name>image1</name> 657 <name>image1</name>
650 <data format="XPM.GZ" length="1226">789cd3d7528808f055d0d2e72a2e492cc94c5648ce482c52d04a29cdcdad8c8eb5ade6523236520022230543251d2e253d856405bffcbc54105b19c856360003b01416a0ac8c6053a2061960aa019b806c0ca61a65a81a7c764125e9a486b07b40d2cacaf8fd0555a4875f0d0620cf1c22dc33d8c2197fda504605e4ab41b5129f7b3001b630c46317f16a88cb17c814add5d02ecdd75a730100b509d263</data> 658 <data format="XPM.GZ" length="1226">789cd3d7528808f055d0d2e72a2e492cc94c5648ce482c52d04a29cdcdad8c8eb5ade6523236520022230543251d2e253d856405bffcbc54105b19c856360003b01416a0ac8c6053a2061960aa019b806c0ca61a65a81a7c764125e9a486b07b40d2cacaf8fd0555a4875f0d0620cf1c22dc33d8c2197fda504605e4ab41b5129f7b3001b630c46317f16a88cb17c814add5d02ecdd75a730100b509d263</data>
651 </image> 659 </image>
652 <image> 660 <image>
653 <name>image2</name> 661 <name>image2</name>
654 <data format="XPM.GZ" length="1226">789cd3d7528808f055d0d2e72a2e492cc94c5648ce482c52d04a29cdcdad8c8eb5ade6523236520022230543251d2e253d856405bffcbc54105b19c856360003b0140130aa863a6a9495f5f49441002c02664030840d53a3ac0c53a40c67c25950bb60d27a70857a08268a7b20164059082695d510e31e62fc85193e7aa8e1832568a1eaf1c6c5e053a34c500d0a18b66a6aadb9001be4d263</data> 662 <data format="XPM.GZ" length="1226">789cd3d7528808f055d0d2e72a2e492cc94c5648ce482c52d04a29cdcdad8c8eb5ade6523236520022230543251d2e253d856405bffcbc54105b19c856360003b0140130aa863a6a9495f5f49441002c02664030840d53a3ac0c53a40c67c25950bb60d27a70857a08268a7b20164059082695d510e31e62fc85193e7aa8e1832568a1eaf1c6c5e053a34c500d0a18b66a6aadb9001be4d263</data>
655 </image> 663 </image>
656 <image> 664 <image>
657 <name>image3</name> 665 <name>image3</name>
658 <data format="XPM.GZ" length="1226">789cd3d7528808f055d0d2e72a2e492cc94c5648ce482c52d04a29cdcdad8c8eb5ade6523236520022230543251d2e253d856405bffcbc54105b19c856360003b014125006013d5480a64659198b22543510697445e86a9029daaad183ba87809bb1788c7435d8019a392872cad8d5a002b2d510e777648ad66a08a70d62d2185169152b1819699ec870c634869cf48c1e7cc4aba9b5e602005d86d263</data> 666 <data format="XPM.GZ" length="1226">789cd3d7528808f055d0d2e72a2e492cc94c5648ce482c52d04a29cdcdad8c8eb5ade6523236520022230543251d2e253d856405bffcbc54105b19c856360003b014125006013d5480a64659198b22543510697445e86a9029daaad183ba87809bb1788c7435d8019a392872cad8d5a002b2d510e777648ad66a08a70d62d2185169152b1819699ec870c634869cf48c1e7cc4aba9b5e602005d86d263</data>
659 </image> 667 </image>
660 <image> 668 <image>
661 <name>image4</name> 669 <name>image4</name>
662 <data format="XPM.GZ" length="646">789c6dd2c10ac2300c00d07bbf2234b7229d1be245fc04c5a3201e4615f430059d0711ff5ddb2e6bb236ec90eed134cb5a19d8ef36602af5ecdbfeeac05dda0798d3abebde87e3faa374d3807fa0d633a52d38d8de6f679fe33fc776e196f53cd010188256a3600a292882096246517815ca99884606e18044a3a40d91824820924265a7923a2e8bcd05f33db1173e002913175f2a6be6d3294871a2d95fa00e8a94ee017b69d339d90df1e77c57ea072ede6758</data> 670 <data format="XPM.GZ" length="646">789c6dd2c10ac2300c00d07bbf2234b7229d1be245fc04c5a3201e4615f430059d0711ff5ddb2e6bb236ec90eed134cb5a19d8ef36602af5ecdbfeeac05dda0798d3abebde87e3faa374d3807fa0d633a52d38d8de6f679fe33fc776e196f53cd010188256a3600a292882096246517815ca99884606e18044a3a40d91824820924265a7923a2e8bcd05f33db1173e002913175f2a6be6d3294871a2d95fa00e8a94ee017b69d339d90df1e77c57ea072ede6758</data>
663 </image> 671 </image>
664</images> 672</images>
665<connections> 673<connections>
666 <connection> 674 <connection>
667 <sender>rotate</sender> 675 <sender>rotate</sender>
668 <signal>toggled(bool)</signal> 676 <signal>toggled(bool)</signal>
669 <receiver>rotateButtons</receiver> 677 <receiver>rotateButtons</receiver>
670 <slot>setEnabled(bool)</slot> 678 <slot>setEnabled(bool)</slot>
671 </connection> 679 </connection>
672</connections> 680</connections>
673<tabstops> 681<tabstops>
674 <tabstop>docname</tabstop> 682 <tabstop>docname</tabstop>
675 <tabstop>preload</tabstop> 683 <tabstop>preload</tabstop>
676 <tabstop>locationCombo</tabstop> 684 <tabstop>locationCombo</tabstop>
677 <tabstop>unlink</tabstop> 685 <tabstop>unlink</tabstop>
678 <tabstop>duplicate</tabstop> 686 <tabstop>duplicate</tabstop>
679 <tabstop>beam</tabstop> 687 <tabstop>beam</tabstop>
680</tabstops> 688</tabstops>
681</UI> 689</UI>
diff --git a/library/mimetype.cpp b/library/mimetype.cpp
index ef5d619..d0a578e 100644
--- a/library/mimetype.cpp
+++ b/library/mimetype.cpp
@@ -1,306 +1,370 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. 2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of the Qtopia Environment. 4** This file is part of the Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20 20
21#define QTOPIA_INTERNAL_MIMEEXT 21#define QTOPIA_INTERNAL_MIMEEXT
22#include "mimetype.h" 22#include "mimetype.h"
23#include "applnk.h" 23#include "applnk.h"
24#include "resource.h" 24#include "resource.h"
25#include <qpe/qpeapplication.h> 25#include <qpe/qpeapplication.h>
26#include "config.h" 26#include "config.h"
27 27
28#include <qfile.h> 28#include <qfile.h>
29#include <qdict.h> 29#include <qdict.h>
30#include <qregexp.h> 30#include <qregexp.h>
31#include <qstringlist.h> 31#include <qstringlist.h>
32#include <qtextstream.h> 32#include <qtextstream.h>
33#include <qmap.h> 33#include <qmap.h>
34 34
35 35
36static void cleanupMime() 36static void cleanupMime()
37{ 37{
38 MimeType::clear(); 38 MimeType::clear();
39} 39}
40 40
41class MimeTypeData { 41class MimeTypeData {
42public: 42public:
43 MimeTypeData(const QString& i) : 43 MimeTypeData(const QString& i) :
44 id(i) 44 id(i)
45 { 45 {
46 apps.setAutoDelete(TRUE); 46 apps.setAutoDelete(TRUE);
47 } 47 }
48 QString id; 48 QString id;
49 QString extension; 49 QString extension;
50 QList<AppLnk> apps; 50 QList<AppLnk> apps;
51 51
52 QString description() 52 QString description()
53 { 53 {
54 if ( desc.isEmpty() ) 54 if ( desc.isEmpty() )
55 desc = QPEApplication::tr("%1 document").arg(apps.first()->name()); 55 desc = QPEApplication::tr("%1 document").arg(apps.first()->name());
56 return desc; 56 return desc;
57 } 57 }
58 58
59 QPixmap regIcon() 59 QPixmap regIcon()
60 { 60 {
61 if ( regicon.isNull() ) 61 if ( regicon.isNull() )
62 loadPixmaps(); 62 loadPixmaps();
63 return regicon; 63 return regicon;
64 } 64 }
65 65
66 QPixmap bigIcon() 66 QPixmap bigIcon()
67 { 67 {
68 if ( bigicon.isNull() ) 68 if ( bigicon.isNull() )
69 loadPixmaps(); 69 loadPixmaps();
70 return bigicon; 70 return bigicon;
71 } 71 }
72 72
73private: 73private:
74 void loadPixmaps() 74 void loadPixmaps()
75 { 75 {
76 if ( apps.count() ) { 76 if ( apps.count() ) {
77 QString icon; 77 QString icon;
78 for (AppLnk* lnk = apps.first(); icon.isNull() && lnk; lnk=apps.next()) { 78 for (AppLnk* lnk = apps.first(); icon.isNull() && lnk; lnk=apps.next()) {
79 QStringList icons = lnk->mimeTypeIcons(); 79 QStringList icons = lnk->mimeTypeIcons();
80 if ( icons.count() ) { 80 if ( icons.count() ) {
81 QStringList types = lnk->mimeTypes(); 81 QStringList types = lnk->mimeTypes();
82 for (QStringList::ConstIterator t=types.begin(),i=icons.begin(); t!=types.end() && i!=icons.end(); ++i,++t) { 82 for (QStringList::ConstIterator t=types.begin(),i=icons.begin(); t!=types.end() && i!=icons.end(); ++i,++t) {
83 if ( *t == id ) { 83 if ( *t == id ) {
84 icon = *i; 84 icon = *i;
85 break; 85 break;
86 } 86 }
87 } 87 }
88 } 88 }
89 } 89 }
90 if ( icon.isNull() ) { 90 if ( icon.isNull() ) {
91 AppLnk* lnk = apps.first(); 91 AppLnk* lnk = apps.first();
92 regicon = lnk->pixmap(); 92 regicon = lnk->pixmap();
93 bigicon = lnk->bigPixmap(); 93 bigicon = lnk->bigPixmap();
94 } else { 94 } else {
95 QImage unscaledIcon = Resource::loadImage( icon ); 95 QImage unscaledIcon = Resource::loadImage( icon );
96 regicon.convertFromImage( unscaledIcon.smoothScale( AppLnk::smallIconSize(), AppLnk::smallIconSize() ) ); 96 regicon.convertFromImage( unscaledIcon.smoothScale( AppLnk::smallIconSize(), AppLnk::smallIconSize() ) );
97 bigicon.convertFromImage( unscaledIcon.smoothScale( AppLnk::bigIconSize(), AppLnk::bigIconSize() ) ); 97 bigicon.convertFromImage( unscaledIcon.smoothScale( AppLnk::bigIconSize(), AppLnk::bigIconSize() ) );
98 } 98 }
99 } 99 }
100 } 100 }
101 101
102 QPixmap regicon; 102 QPixmap regicon;
103 QPixmap bigicon; 103 QPixmap bigicon;
104 QString desc; 104 QString desc;
105}; 105};
106 106
107class MimeType::Private : public QDict<MimeTypeData> { 107class MimeType::Private : public QDict<MimeTypeData> {
108public: 108public:
109 Private() {} 109 Private() {}
110 ~Private() {} 110 ~Private() {}
111 111
112 // ... 112 // ...
113}; 113};
114 114
115MimeType::Private* MimeType::d=0; 115MimeType::Private* MimeType::d=0;
116static QMap<QString,QString> *typeFor = 0; 116static QMap<QString,QString> *typeFor = 0;
117static QMap<QString,QStringList> *extFor = 0; 117static QMap<QString,QStringList> *extFor = 0;
118 118
119MimeType::Private& MimeType::data() 119MimeType::Private& MimeType::data()
120{ 120{
121 if ( !d ) { 121 if ( !d ) {
122 d = new Private; 122 d = new Private;
123 d->setAutoDelete(TRUE); 123 d->setAutoDelete(TRUE);
124 static bool setCleanup = FALSE; 124 static bool setCleanup = FALSE;
125 if ( !setCleanup ) { 125 if ( !setCleanup ) {
126 qAddPostRoutine( cleanupMime ); 126 qAddPostRoutine( cleanupMime );
127 setCleanup = TRUE; 127 setCleanup = TRUE;
128 } 128 }
129 } 129 }
130 return *d; 130 return *d;
131} 131}
132 132
133/*!
134 \class MimeType mimetype.h
135 \brief The MimeType class provides MIME type information.
136
137 A MimeType object is a light-weight value which
138 provides information about a MIME type.
139
140 \ingroup qtopiaemb
141*/
142
143/*!
144 Constructs a MimeType.
145 Normally, \a ext_or_id is a MIME type,
146 but if \a ext_or_id starts with / or contains no /,
147 it is interpretted as a filename and the
148 extension (eg. .txt) is used as the
149 MIME type.
150*/
133MimeType::MimeType( const QString& ext_or_id ) 151MimeType::MimeType( const QString& ext_or_id )
134{ 152{
135 init(ext_or_id); 153 init(ext_or_id);
136} 154}
137 155
156/*!
157 Constructs a MimeType from the type() of \a lnk.
158*/
138MimeType::MimeType( const DocLnk& lnk ) 159MimeType::MimeType( const DocLnk& lnk )
139{ 160{
140 init(lnk.type()); 161 init(lnk.type());
141} 162}
142 163
164/*!
165 Returns the MIME type identifier.
166*/
143QString MimeType::id() const 167QString MimeType::id() const
144{ 168{
145 return i; 169 return i;
146} 170}
147 171
172/*!
173 Returns a description of the MIME Type. This is usually based
174 on the application() associated with the type.
175*/
148QString MimeType::description() const 176QString MimeType::description() const
149{ 177{
150 MimeTypeData* d = data(i); 178 MimeTypeData* d = data(i);
151 return d ? d->description() : QString::null; 179 return d ? d->description() : QString::null;
152} 180}
153 181
182/*!
183 Returns a small QPixmap appropriate for the MIME type.
184*/
154QPixmap MimeType::pixmap() const 185QPixmap MimeType::pixmap() const
155{ 186{
156 MimeTypeData* d = data(i); 187 MimeTypeData* d = data(i);
157 return d ? d->regIcon() : QPixmap(); 188 return d ? d->regIcon() : QPixmap();
158} 189}
159 190
191/*!
192 \internal
193 This function is not generally available.
194*/
160QString MimeType::extension() const 195QString MimeType::extension() const
161{ 196{
162 return extensions().first(); 197 return extensions().first();
163} 198}
164 199
200
201/*!
202 \internal
203 This function is not generally available.
204*/
165QStringList MimeType::extensions() const 205QStringList MimeType::extensions() const
166{ 206{
167 loadExtensions(); 207 loadExtensions();
168 return *(*extFor).find(i); 208 return *(*extFor).find(i);
169} 209}
170 210
211/*!
212 Returns a larger QPixmap appropriate for the MIME type.
213*/
171QPixmap MimeType::bigPixmap() const 214QPixmap MimeType::bigPixmap() const
172{ 215{
173 MimeTypeData* d = data(i); 216 MimeTypeData* d = data(i);
174 return d ? d->bigIcon() : QPixmap(); 217 return d ? d->bigIcon() : QPixmap();
175} 218}
176 219
220/*!
221 Returns the AppLnk defining the application associated
222 with this MIME type, or 0 if none is associated.
223
224 The caller must not retain the pointer,
225 but of course you can dereference it to take a copy if needed.
226
227 \sa Service::binding()
228*/
177const AppLnk* MimeType::application() const 229const AppLnk* MimeType::application() const
178{ 230{
179 MimeTypeData* d = data(i); 231 MimeTypeData* d = data(i);
180 return d ? d->apps.first() : 0; 232 return d ? d->apps.first() : 0;
181} 233}
182 234
183static QString serviceBinding(const QString& service) 235static QString serviceBinding(const QString& service)
184{ 236{
185 // Copied from qtopiaservices 237 // Copied from qtopiaservices
186 QString svrc = service; 238 QString svrc = service;
187 for (int i=0; i<(int)svrc.length(); i++) 239 for (int i=0; i<(int)svrc.length(); i++)
188 if ( svrc[i]=='/' ) svrc[i] = '-'; 240 if ( svrc[i]=='/' ) svrc[i] = '-';
189 return "Service-"+svrc; 241 return "Service-"+svrc;
190} 242}
191 243
244/*!
245 \internal
246*/
192void MimeType::registerApp( const AppLnk& lnk ) 247void MimeType::registerApp( const AppLnk& lnk )
193{ 248{
194 QStringList list = lnk.mimeTypes(); 249 QStringList list = lnk.mimeTypes();
195 for (QStringList::ConstIterator it = list.begin(); it != list.end(); ++it) { 250 for (QStringList::ConstIterator it = list.begin(); it != list.end(); ++it) {
196 MimeTypeData* cur = data()[*it]; 251 MimeTypeData* cur = data()[*it];
197 AppLnk* l = new AppLnk(lnk); 252 AppLnk* l = new AppLnk(lnk);
198 if ( !cur ) { 253 if ( !cur ) {
199 cur = new MimeTypeData( *it ); 254 cur = new MimeTypeData( *it );
200 data().insert( *it, cur ); 255 data().insert( *it, cur );
201 cur->apps.append(l); 256 cur->apps.append(l);
202 } else if ( cur->apps.count() ) { 257 } else if ( cur->apps.count() ) {
203 Config binding(serviceBinding("Open/"+*it)); 258 Config binding(serviceBinding("Open/"+*it));
204 binding.setGroup("Service"); 259 binding.setGroup("Service");
205 QString def = binding.readEntry("default"); 260 QString def = binding.readEntry("default");
206 if ( l->exec() == def ) 261 if ( l->exec() == def )
207 cur->apps.prepend(l); 262 cur->apps.prepend(l);
208 else 263 else
209 cur->apps.append(l); 264 cur->apps.append(l);
210 } else { 265 } else {
211 cur->apps.append(l); 266 cur->apps.append(l);
212 } 267 }
213 } 268 }
214} 269}
215 270
271/*!
272 \internal
273*/
216void MimeType::clear() 274void MimeType::clear()
217{ 275{
218 delete d; 276 delete d;
219 d = 0; 277 d = 0;
220} 278}
221 279
222void MimeType::loadExtensions() 280void MimeType::loadExtensions()
223{ 281{
224 if ( !typeFor ) { 282 if ( !typeFor ) {
225 extFor = new QMap<QString,QStringList>; 283 extFor = new QMap<QString,QStringList>;
226 typeFor = new QMap<QString,QString>; 284 typeFor = new QMap<QString,QString>;
227 loadExtensions("/etc/mime.types"); 285 loadExtensions("/etc/mime.types");
228 loadExtensions(QPEApplication::qpeDir()+"etc/mime.types"); 286 loadExtensions(QPEApplication::qpeDir()+"etc/mime.types");
229 } 287 }
230} 288}
231 289
232void MimeType::loadExtensions(const QString& filename) 290void MimeType::loadExtensions(const QString& filename)
233{ 291{
234 QFile file(filename); 292 QFile file(filename);
235 if ( file.open(IO_ReadOnly) ) { 293 if ( file.open(IO_ReadOnly) ) {
236 QTextStream in(&file); 294 QTextStream in(&file);
237 QRegExp space("[ \t]+"); 295 QRegExp space("[ \t]+");
238 while (!in.atEnd()) { 296 while (!in.atEnd()) {
239 QStringList tokens = QStringList::split(space, in.readLine()); 297 QStringList tokens = QStringList::split(space, in.readLine());
240 QStringList::ConstIterator it = tokens.begin(); 298 QStringList::ConstIterator it = tokens.begin();
241 if ( it != tokens.end() ) { 299 if ( it != tokens.end() ) {
242 QString id = *it; ++it; 300 QString id = *it; ++it;
243 // new override old (though left overrides right) 301 // new override old (though left overrides right)
244 QStringList exts = (*extFor)[id]; 302 QStringList exts = (*extFor)[id];
245 QStringList newexts; 303 QStringList newexts;
246 while ( it != tokens.end() ) { 304 while ( it != tokens.end() ) {
247 exts.remove(*it); 305 exts.remove(*it);
248 if ( !newexts.contains(*it) ) 306 if ( !newexts.contains(*it) )
249 newexts.append(*it); 307 newexts.append(*it);
250 (*typeFor)[*it] = id; 308 (*typeFor)[*it] = id;
251 ++it; 309 ++it;
252 } 310 }
253 (*extFor)[id] = newexts + exts; 311 (*extFor)[id] = newexts + exts;
254 } 312 }
255 } 313 }
256 } 314 }
257} 315}
258 316
259void MimeType::init( const QString& ext_or_id ) 317void MimeType::init( const QString& ext_or_id )
260{ 318{
261 if ( ext_or_id[0] != '/' && ext_or_id.contains('/') ) { 319 if ( ext_or_id[0] != '/' && ext_or_id.contains('/') ) {
262 i = ext_or_id.lower(); 320 i = ext_or_id.lower();
263 } else { 321 } else {
264 loadExtensions(); 322 loadExtensions();
265 int dot = ext_or_id.findRev('.'); 323 int dot = ext_or_id.findRev('.');
266 QString ext = dot >= 0 ? ext_or_id.mid(dot+1) : ext_or_id; 324 QString ext = dot >= 0 ? ext_or_id.mid(dot+1) : ext_or_id;
267 i = (*typeFor)[ext.lower()]; 325 i = (*typeFor)[ext.lower()];
268 if ( i.isNull() ) 326 if ( i.isNull() )
269 i = "application/octet-stream"; 327 i = "application/octet-stream";
270 } 328 }
271 static bool appsUpdated = FALSE; 329 static bool appsUpdated = FALSE;
272 if ( !appsUpdated ) { 330 if ( !appsUpdated ) {
273 appsUpdated = TRUE; 331 appsUpdated = TRUE;
274 updateApplications(); 332 updateApplications();
275 } 333 }
276} 334}
277 335
278MimeTypeData* MimeType::data(const QString& id) 336MimeTypeData* MimeType::data(const QString& id)
279{ 337{
280 MimeTypeData* d = data()[id]; 338 MimeTypeData* d = data()[id];
281 if ( !d ) { 339 if ( !d ) {
282 int s = id.find('/'); 340 int s = id.find('/');
283 QString idw = id.left(s)+"/*"; 341 QString idw = id.left(s)+"/*";
284 d = data()[idw]; 342 d = data()[idw];
285 } 343 }
286 return d; 344 return d;
287} 345}
288 346
347/*!
348 Returns a Qtopia folder containing application definitions.
349*/
289QString MimeType::appsFolderName() 350QString MimeType::appsFolderName()
290{ 351{
291 return QPEApplication::qpeDir() + "apps"; 352 return QPEApplication::qpeDir() + "apps";
292} 353}
293 354
355/*!
356 Reloads application definitions.
357*/
294void MimeType::updateApplications() 358void MimeType::updateApplications()
295{ 359{
296 clear(); 360 clear();
297 AppLnkSet apps( appsFolderName() ); 361 AppLnkSet apps( appsFolderName() );
298 updateApplications(&apps); 362 updateApplications(&apps);
299} 363}
300 364
301void MimeType::updateApplications(AppLnkSet* folder) 365void MimeType::updateApplications(AppLnkSet* folder)
302{ 366{
303 for ( QListIterator<AppLnk> it( folder->children() ); it.current(); ++it ) { 367 for ( QListIterator<AppLnk> it( folder->children() ); it.current(); ++it ) {
304 registerApp(*it.current()); 368 registerApp(*it.current());
305 } 369 }
306} 370}
diff --git a/library/opie-bootsplash.control b/library/opie-bootsplash.control
index 838224d..fc03ecc 100644
--- a/library/opie-bootsplash.control
+++ b/library/opie-bootsplash.control
@@ -1,8 +1,8 @@
1Package: opie-bootsplash 1Package: opie-bootsplash
2Files: etc/init.d/bootsplash etc/rcS.d/S01bootsplash pics/bootsplash/bootlogo 2Files: etc/init.d/bootsplash etc/rcS.d/S01bootsplash pics/bootsplash/bootlogo
3Priority: optinal 3Priority: optinal
4Section: opie/system 4Section: opie/system
5Maintainer: Project Opie <opie@handhelds.org> 5Maintainer: Project Opie <opie@handhelds.org>
6Architecture: arm 6Architecture: arm
7Version: $QPE_VERSION-$SUB_VERSION.2
8Description: Splash screen aptempt 7Description: Splash screen aptempt
8Version: $QPE_VERSION$EXTRAVERSION
diff --git a/library/opie-common.control b/library/opie-common.control
index 3330319..052d368 100644
--- a/library/opie-common.control
+++ b/library/opie-common.control
@@ -1,10 +1,10 @@
1Package: opie-common 1Package: opie-common
2Files: etc/colors bin/opie-reorgfiles apps/*/.directory etc/mime.types apps/Settings/quit.desktop pics/logo/* pics/opie-sh/opie-sh.png 2Files: etc/colors bin/opie-reorgfiles apps/*/.directory etc/mime.types apps/Settings/quit.desktop pics/logo/* pics/opie-sh/opie-sh.png
3Priority: required 3Priority: required
4Section: opie/system 4Section: opie/system
5Maintainer: Project Opie <opie@handhelds.org> 5Maintainer: Project Opie <opie@handhelds.org>
6Architecture: arm 6Architecture: arm
7Version: $QPE_VERSION-$SUB_VERSION.3
8Depends: libqpe1, qte-fonts, qpf-bitstream-vera 7Depends: libqpe1, qte-fonts, qpf-bitstream-vera
9Replaces: opie-base 8Replaces: opie-base
10Description: Core opie files 9Description: Core opie files
10Version: $QPE_VERSION$EXTRAVERSION
diff --git a/library/opie-common.postinst b/library/opie-common.postinst
index b049efc..1c0d5b2 100755
--- a/library/opie-common.postinst
+++ b/library/opie-common.postinst
@@ -1,5 +1,6 @@
1#!/bin/sh 1#!/bin/sh
2 2
3[ "$1" = "configure" ] || exit 1 3[ "$1" = "configure" ] || exit 1
4 4
5ln -sf /opt/QtPalmtop /home/QtPalmtop 5ln -sf /opt/QtPalmtop /home/QtPalmtop
6ln -sf /opt/QtPalmtop /opt/Qtopia \ No newline at end of file
diff --git a/library/password.cpp b/library/password.cpp
index 6d126c4..25fb1b8 100644
--- a/library/password.cpp
+++ b/library/password.cpp
@@ -1,353 +1,354 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. 2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of the Qtopia Environment. 4** This file is part of the Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20#include "password.h" 20#include "password.h"
21#include "config.h" 21#include "config.h"
22#include "global.h" 22#include "global.h"
23#include "backend/contact.h" 23#include "backend/contact.h"
24#include <qlabel.h> 24#include <qlabel.h>
25#include <qlineedit.h> 25#include <qlineedit.h>
26#include <qtextview.h> 26#include <qtextview.h>
27#include <qstring.h> 27#include <qstring.h>
28#include <qapplication.h> 28#include <qapplication.h>
29#include <qfile.h> 29#include <qfile.h>
30//#include <qwindowsystem_qws.h> 30//#include <qwindowsystem_qws.h>
31 31
32#include <qdialog.h> 32#include <qdialog.h>
33 33
34#include <unistd.h> //for sleep 34#include <unistd.h> //for sleep
35#include "passwordbase_p.h" 35#include "passwordbase_p.h"
36 36
37class PasswordDialog : public PasswordBase 37class PasswordDialog : public PasswordBase
38{ 38{
39 Q_OBJECT 39 Q_OBJECT
40 40
41public: 41public:
42 PasswordDialog( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); 42 PasswordDialog( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
43 ~PasswordDialog(); 43 ~PasswordDialog();
44 44
45 void clear(); 45 void clear();
46 void setPrompt( const QString& ); 46 void setPrompt( const QString& );
47 47
48signals: 48signals:
49 void passwordEntered( const QString& ); 49 void passwordEntered( const QString& );
50 50
51protected: 51protected:
52 bool eventFilter( QObject*, QEvent* ); 52 bool eventFilter( QObject*, QEvent* );
53 void keyPressEvent( QKeyEvent * ); 53 void keyPressEvent( QKeyEvent * );
54 54
55private: 55private:
56 void input( QString ); 56 void input( QString );
57 friend class Password; 57 friend class Password;
58 QString text; 58 QString text;
59}; 59};
60 60
61 61
62extern "C" char *crypt(const char *key, const char *salt); 62extern "C" char *crypt(const char *key, const char *salt);
63static QString qcrypt(const QString& k, const char *salt) 63static QString qcrypt(const QString& k, const char *salt)
64{ 64{
65 return QString::fromUtf8(crypt(k.utf8(),salt)); 65 return QString::fromUtf8(crypt(k.utf8(),salt));
66} 66}
67 67
68/* 68/*
69 * Constructs a PasswordDialog which is a child of 'parent', with the 69 * Constructs a PasswordDialog which is a child of 'parent', with the
70 * name 'name' and widget flags set to 'f' 70 * name 'name' and widget flags set to 'f'
71 */ 71 */
72PasswordDialog::PasswordDialog( QWidget* parent, const char* name, WFlags fl ) 72PasswordDialog::PasswordDialog( QWidget* parent, const char* name, WFlags fl )
73 : PasswordBase( parent, name, fl ) 73 : PasswordBase( parent, name, fl )
74{ 74{
75 QRect desk = qApp->desktop()->geometry(); 75 QRect desk = qApp->desktop()->geometry();
76 76
77 if ( desk.width() < 220 ) { 77 if ( desk.width() < 220 ) {
78 QFont f( font() ); 78 QFont f( font() );
79 f.setPointSize( 18 ); 79 f.setPointSize( 18 );
80 setFont( f ); 80 setFont( f );
81 f.setPointSize( 12 ); 81 f.setPointSize( 12 );
82 prompt->setFont( f ); 82 prompt->setFont( f );
83 } 83 }
84 84
85 button_0->installEventFilter( this ); 85 button_0->installEventFilter( this );
86 button_1->installEventFilter( this ); 86 button_1->installEventFilter( this );
87 button_2->installEventFilter( this ); 87 button_2->installEventFilter( this );
88 button_3->installEventFilter( this ); 88 button_3->installEventFilter( this );
89 button_4->installEventFilter( this ); 89 button_4->installEventFilter( this );
90 button_5->installEventFilter( this ); 90 button_5->installEventFilter( this );
91 button_6->installEventFilter( this ); 91 button_6->installEventFilter( this );
92 button_7->installEventFilter( this ); 92 button_7->installEventFilter( this );
93 button_8->installEventFilter( this ); 93 button_8->installEventFilter( this );
94 button_9->installEventFilter( this ); 94 button_9->installEventFilter( this );
95 button_OK->installEventFilter( this ); 95 button_OK->installEventFilter( this );
96 setFocus(); 96 setFocus();
97} 97}
98 98
99/* 99/*
100 * Destroys the object and frees any allocated resources 100 * Destroys the object and frees any allocated resources
101 */ 101 */
102PasswordDialog::~PasswordDialog() 102PasswordDialog::~PasswordDialog()
103{ 103{
104 // no need to delete child widgets, Qt does it all for us 104 // no need to delete child widgets, Qt does it all for us
105} 105}
106 106
107 107
108 108
109/*! 109/*!
110 \reimp 110 \reimp
111*/ 111*/
112 112
113bool PasswordDialog::eventFilter( QObject*o, QEvent*e ) 113bool PasswordDialog::eventFilter( QObject*o, QEvent*e )
114{ 114{
115 if ( e->type() == QEvent::MouseButtonRelease ) { 115 if ( e->type() == QEvent::MouseButtonRelease ) {
116 if ( o == button_OK ) { 116 if ( o == button_OK ) {
117 emit passwordEntered( text ); 117 emit passwordEntered( text );
118 } else { 118 } else {
119 QLabel *l = (QLabel*)o; 119 QLabel *l = (QLabel*)o;
120 input(l->text()); 120 input(l->text());
121 } 121 }
122 } 122 }
123 return FALSE; 123 return FALSE;
124} 124}
125 125
126 126
127/*! 127/*!
128 \reimp 128 \reimp
129*/ 129*/
130 130
131void PasswordDialog::keyPressEvent( QKeyEvent * ) 131void PasswordDialog::keyPressEvent( QKeyEvent * )
132{ 132{
133#if 0 133#if 0
134 if ( e->key() == Key_Enter || e->key() == Key_Return ) 134 if ( e->key() == Key_Enter || e->key() == Key_Return )
135 emit passwordEntered( text ); 135 emit passwordEntered( text );
136 else 136 else
137 input( e->text() ); 137 input( e->text() );
138#endif 138#endif
139} 139}
140 140
141 141
142/*! 142/*!
143 143
144*/ 144*/
145 145
146void PasswordDialog::input( QString c ) 146void PasswordDialog::input( QString c )
147{ 147{
148 text += c; 148 text += c;
149 display->setText( text ); 149 display->setText( text );
150} 150}
151 151
152/*! 152/*!
153 153
154*/ 154*/
155 155
156void PasswordDialog::setPrompt( const QString& s ) 156void PasswordDialog::setPrompt( const QString& s )
157{ 157{
158 prompt->setText( s ); 158 prompt->setText( s );
159} 159}
160 160
161void PasswordDialog::clear() 161void PasswordDialog::clear()
162{ 162{
163 text = ""; 163 text = "";
164 input(""); 164 input("");
165} 165}
166 166
167class PasswdDlg : public QDialog 167class PasswdDlg : public QDialog
168{ 168{
169public: 169public:
170 PasswdDlg( QWidget *parent, const char * name, bool modal, bool fullscreen = FALSE ) 170 PasswdDlg( QWidget *parent, const char * name, bool modal, bool fullscreen = FALSE )
171 : QDialog( parent, name, modal, fullscreen ? WStyle_NoBorder | WStyle_Customize | WStyle_StaysOnTop : 0 ), 171 : QDialog( parent, name, modal, fullscreen ? WStyle_NoBorder | WStyle_Customize | WStyle_StaysOnTop : 0 ),
172 modl(modal) 172 modl(modal)
173 { 173 {
174 passw = new PasswordDialog( this ); 174 passw = new PasswordDialog( this );
175 175
176 if ( fullscreen ) { 176 if ( fullscreen ) {
177 QRect desk = qApp->desktop()->geometry(); 177 QRect desk = qApp->desktop()->geometry();
178 setGeometry( 0, 0, desk.width(), desk.height() ); 178 setGeometry( 0, 0, desk.width(), desk.height() );
179 } 179 }
180 180
181 connect( passw, SIGNAL(passwordEntered(const QString&)), 181 connect( passw, SIGNAL(passwordEntered(const QString&)),
182 this, SLOT(accept()) ); 182 this, SLOT(accept()) );
183 } 183 }
184 184
185 void resizeEvent( QResizeEvent * ) 185 void resizeEvent( QResizeEvent * )
186 { 186 {
187 passw->resize( size() ); 187 passw->resize( size() );
188 } 188 }
189 189
190 void reset() 190 void reset()
191 { 191 {
192 passw->clear(); 192 passw->clear();
193 } 193 }
194 194
195 void execNonModal() 195 void execNonModal()
196 { 196 {
197 if ( !modl ) { 197 if ( !modl ) {
198 reset(); 198 reset();
199 showFullScreen(); 199 showFullScreen();
200 do { 200 do {
201 qApp->enter_loop(); 201 qApp->enter_loop();
202 } while (result()!=1); 202 } while (result()!=1);
203 } 203 }
204 } 204 }
205 205
206 void accept() 206 void accept()
207 { 207 {
208 if ( !modl ) 208 if ( !modl )
209 qApp->exit_loop(); 209 qApp->exit_loop();
210 QDialog::accept(); 210 QDialog::accept();
211 } 211 }
212 212
213 PasswordDialog *passw; 213 PasswordDialog *passw;
214 bool modl; 214 bool modl;
215}; 215};
216 216
217class OwnerDlg : public QDialog 217class OwnerDlg : public QDialog
218{ 218{
219 Q_OBJECT
219public: 220public:
220 221
221 OwnerDlg( QWidget *parent, const char * name, Contact c, 222 OwnerDlg( QWidget *parent, const char * name, Contact c,
222 bool modal, bool fullscreen = FALSE ) 223 bool modal, bool fullscreen = FALSE )
223 : QDialog( parent, name, modal, 224 : QDialog( parent, name, modal,
224 fullscreen ? 225 fullscreen ?
225 WStyle_NoBorder | WStyle_Customize | WStyle_StaysOnTop : 0 ) 226 WStyle_NoBorder | WStyle_Customize | WStyle_StaysOnTop : 0 )
226 { 227 {
227 if ( fullscreen ) { 228 if ( fullscreen ) {
228 QRect desk = qApp->desktop()->geometry(); 229 QRect desk = qApp->desktop()->geometry();
229 setGeometry( 0, 0, desk.width(), desk.height() ); 230 setGeometry( 0, 0, desk.width(), desk.height() );
230 } 231 }
231 232
232 // set up contents. 233 // set up contents.
233 QString text = "<H1>" + tr("Owner Information") + "</H1>"; 234 QString text = "<H1>" + tr("Owner Information") + "</H1>";
234 text += c.toRichText(); 235 text += c.toRichText();
235 tv = new QTextView(this); 236 tv = new QTextView(this);
236 tv->setText(text); 237 tv->setText(text);
237 238
238 tv->viewport()->installEventFilter(this); 239 tv->viewport()->installEventFilter(this);
239 } 240 }
240 241
241 void resizeEvent( QResizeEvent * ) 242 void resizeEvent( QResizeEvent * )
242 { 243 {
243 tv->resize( size() ); 244 tv->resize( size() );
244 } 245 }
245 246
246 bool eventFilter(QObject *o, QEvent *e) 247 bool eventFilter(QObject *o, QEvent *e)
247 { 248 {
248 if (e->type() == QEvent::KeyPress || e->type() == QEvent::MouseButtonPress ) { 249 if (e->type() == QEvent::KeyPress || e->type() == QEvent::MouseButtonPress ) {
249 accept(); 250 accept();
250 return TRUE; 251 return TRUE;
251 } 252 }
252 return QWidget::eventFilter(o, e); 253 return QWidget::eventFilter(o, e);
253 } 254 }
254 255
255 void mousePressEvent( QMouseEvent * ) { accept(); } 256 void mousePressEvent( QMouseEvent * ) { accept(); }
256 257
257private: 258private:
258 QTextView *tv; 259 QTextView *tv;
259}; 260};
260 261
261/*! 262/*!
262 Returns a crypted password entered by the user when prompted with \a prompt 263 Returns a crypted password entered by the user when prompted with \a prompt
263 The returned value is QString::null if the user cancels the operation, 264 The returned value is QString::null if the user cancels the operation,
264 or the empty string if the user enters no password (but confirms the 265 or the empty string if the user enters no password (but confirms the
265 dialog). 266 dialog).
266*/ 267*/
267 268
268QString Password::getPassword( const QString& prompt ) 269QString Password::getPassword( const QString& prompt )
269{ 270{
270 PasswdDlg pd(0,0,TRUE); 271 PasswdDlg pd(0,0,TRUE);
271 pd.passw->setPrompt( prompt ); 272 pd.passw->setPrompt( prompt );
272 273
273 pd.showMaximized(); 274 pd.showMaximized();
274 int r = pd.exec(); 275 int r = pd.exec();
275 276
276 if ( r == QDialog::Accepted ) { 277 if ( r == QDialog::Accepted ) {
277 if (pd.passw->text.isEmpty()) 278 if (pd.passw->text.isEmpty())
278 return ""; 279 return "";
279 else 280 else
280 return qcrypt(pd.passw->text,"a0"); 281 return qcrypt(pd.passw->text,"a0");
281 } else { 282 } else {
282 return QString::null; 283 return QString::null;
283 } 284 }
284} 285}
285 286
286 287
287/*! 288/*!
288 Return if a prompt for the user's passcode is needed. 289 Return if a prompt for the user's passcode is needed.
289 290
290 If \a at_poweron is TRUE, the dialog is only used if the user's 291 If \a at_poweron is TRUE, the dialog is only used if the user's
291 preference request it at poweron 292 preference request it at poweron
292 293
293 Opie extension to speed up suspend/resume. 294 Opie extension to speed up suspend/resume.
294*/ 295*/
295 296
296bool Password::needToAuthenticate(bool at_poweron) 297bool Password::needToAuthenticate(bool at_poweron)
297{ 298{
298 Config cfg("Security"); 299 Config cfg("Security");
299 cfg.setGroup("Passcode"); 300 cfg.setGroup("Passcode");
300 QString passcode = cfg.readEntry("passcode"); 301 QString passcode = cfg.readEntry("passcode");
301 302
302 return ( !passcode.isEmpty() 303 return ( !passcode.isEmpty()
303 && (!at_poweron || cfg.readNumEntry("passcode_poweron",0)) ); 304 && (!at_poweron || cfg.readNumEntry("passcode_poweron",0)) );
304} 305}
305 306
306/*! 307/*!
307 Prompt, fullscreen, for the user's passcode until they get it right. 308 Prompt, fullscreen, for the user's passcode until they get it right.
308 309
309 If \a at_poweron is TRUE, the dialog is only used if the user's 310 If \a at_poweron is TRUE, the dialog is only used if the user's
310 preference request it at poweron; either way, the screen is always repainted 311 preference request it at poweron; either way, the screen is always repainted
311 by this function. (this functionality may move to the caller of this function). 312 by this function. (this functionality may move to the caller of this function).
312*/ 313*/
313 314
314void Password::authenticate(bool at_poweron) 315void Password::authenticate(bool at_poweron)
315{ 316{
316 Config cfg("Security"); 317 Config cfg("Security");
317 cfg.setGroup("Passcode"); 318 cfg.setGroup("Passcode");
318 QString passcode = cfg.readEntry("passcode"); 319 QString passcode = cfg.readEntry("passcode");
319 if ( !passcode.isEmpty() 320 if ( !passcode.isEmpty()
320 && (!at_poweron || cfg.readNumEntry("passcode_poweron",0)) ) 321 && (!at_poweron || cfg.readNumEntry("passcode_poweron",0)) )
321 { 322 {
322 // Do it as a fullscreen modal dialog 323 // Do it as a fullscreen modal dialog
323 PasswdDlg pd(0,0,TRUE,TRUE); 324 PasswdDlg pd(0,0,TRUE,TRUE);
324 325
325 // see if there is contact information. 326 // see if there is contact information.
326 OwnerDlg *oi = 0; 327 OwnerDlg *oi = 0;
327 QString vfilename = Global::applicationFileName("addressbook", 328 QString vfilename = Global::applicationFileName("addressbook",
328 "businesscard.vcf"); 329 "businesscard.vcf");
329 if (QFile::exists(vfilename)) { 330 if (QFile::exists(vfilename)) {
330 Contact c; 331 Contact c;
331 c = Contact::readVCard( vfilename )[0]; 332 c = Contact::readVCard( vfilename )[0];
332 333
333 oi = new OwnerDlg(0, 0, c, TRUE, TRUE); 334 oi = new OwnerDlg(0, 0, c, TRUE, TRUE);
334 } 335 }
335 336
336 pd.reset(); 337 pd.reset();
337 pd.exec(); 338 pd.exec();
338 while (qcrypt(pd.passw->text, "a0") != passcode) { 339 while (qcrypt(pd.passw->text, "a0") != passcode) {
339 if (oi) 340 if (oi)
340 oi->exec(); 341 oi->exec();
341 pd.reset(); 342 pd.reset();
342 pd.exec(); 343 pd.exec();
343 } 344 }
344 } else if ( at_poweron ) { 345 } else if ( at_poweron ) {
345 // refresh screen #### should probably be in caller 346 // refresh screen #### should probably be in caller
346 // Not needed (we took away the screen blacking) TT 347 // Not needed (we took away the screen blacking) TT
347 // Not needed (we have intelligent screen blacking) sandman 348 // Not needed (we have intelligent screen blacking) sandman
348 //if ( qwsServer ) 349 //if ( qwsServer )
349 //qwsServer->refresh(); 350 //qwsServer->refresh();
350 } 351 }
351} 352}
352 353
353#include "password.moc" 354#include "password.moc"
diff --git a/library/qpeapplication.cpp b/library/qpeapplication.cpp
index 619b4cb..4e08a1f 100644
--- a/library/qpeapplication.cpp
+++ b/library/qpeapplication.cpp
@@ -1,1825 +1,1839 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. 2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of the Qtopia Environment. 4** This file is part of the Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19** $Id$ 19** $Id$
20** 20**
21**********************************************************************/ 21**********************************************************************/
22#define QTOPIA_INTERNAL_LANGLIST 22#define QTOPIA_INTERNAL_LANGLIST
23#include <stdlib.h> 23#include <stdlib.h>
24#include <unistd.h> 24#include <unistd.h>
25#include <linux/limits.h> // needed for some toolchains (PATH_MAX) 25#include <linux/limits.h> // needed for some toolchains (PATH_MAX)
26#include <qfile.h> 26#include <qfile.h>
27#ifdef Q_WS_QWS 27#ifdef Q_WS_QWS
28#ifndef QT_NO_COP 28#ifndef QT_NO_COP
29#if QT_VERSION <= 231 29#if QT_VERSION <= 231
30#define private public 30#define private public
31#define sendLocally processEvent 31#define sendLocally processEvent
32#include "qcopenvelope_qws.h" 32#include "qcopenvelope_qws.h"
33#undef private 33#undef private
34#else 34#else
35#include "qcopenvelope_qws.h" 35#include "qcopenvelope_qws.h"
36#endif 36#endif
37#endif 37#endif
38#include <qwindowsystem_qws.h> 38#include <qwindowsystem_qws.h>
39#endif 39#endif
40#include <qtextstream.h> 40#include <qtextstream.h>
41#include <qpalette.h> 41#include <qpalette.h>
42#include <qbuffer.h> 42#include <qbuffer.h>
43#include <qptrdict.h> 43#include <qptrdict.h>
44#include <qregexp.h> 44#include <qregexp.h>
45#include <qdir.h> 45#include <qdir.h>
46#include <qlabel.h> 46#include <qlabel.h>
47#include <qdialog.h> 47#include <qdialog.h>
48#include <qdragobject.h> 48#include <qdragobject.h>
49#include <qtextcodec.h> 49#include <qtextcodec.h>
50#include <qevent.h> 50#include <qevent.h>
51#include <qtooltip.h> 51#include <qtooltip.h>
52#include <qsignal.h> 52#include <qsignal.h>
53#include <qmainwindow.h> 53#include <qmainwindow.h>
54#include "qpeapplication.h" 54#include "qpeapplication.h"
55#include "qpestyle.h" 55#include "qpestyle.h"
56#include "styleinterface.h" 56#include "styleinterface.h"
57#if QT_VERSION >= 300 57#if QT_VERSION >= 300
58#include <qstylefactory.h> 58#include <qstylefactory.h>
59#else 59#else
60#include <qplatinumstyle.h> 60#include <qplatinumstyle.h>
61#include <qwindowsstyle.h> 61#include <qwindowsstyle.h>
62#include <qmotifstyle.h> 62#include <qmotifstyle.h>
63#include <qmotifplusstyle.h> 63#include <qmotifplusstyle.h>
64#include "lightstyle.h" 64#include "lightstyle.h"
65 65
66#include <qpe/qlibrary.h> 66#include <qpe/qlibrary.h>
67#endif 67#endif
68#include "global.h" 68#include "global.h"
69#include "resource.h" 69#include "resource.h"
70#if QT_VERSION <= 230 && defined(QT_NO_CODECS) 70#if QT_VERSION <= 230 && defined(QT_NO_CODECS)
71#include "qutfcodec.h" 71#include "qutfcodec.h"
72#endif 72#endif
73#include "config.h" 73#include "config.h"
74#include "network.h" 74#include "network.h"
75#ifdef QWS 75#ifdef QWS
76#include "fontmanager.h" 76#include "fontmanager.h"
77#endif 77#endif
78 78
79#include "alarmserver.h" 79#include "alarmserver.h"
80#include "applnk.h" 80#include "applnk.h"
81#include "qpemenubar.h" 81#include "qpemenubar.h"
82#include "textcodecinterface.h" 82#include "textcodecinterface.h"
83#include "imagecodecinterface.h" 83#include "imagecodecinterface.h"
84 84
85#include <unistd.h> 85#include <unistd.h>
86#include <sys/file.h> 86#include <sys/file.h>
87#include <sys/ioctl.h> 87#include <sys/ioctl.h>
88#include <sys/soundcard.h> 88#include <sys/soundcard.h>
89 89
90#include "qt_override_p.h" 90#include "qt_override_p.h"
91 91
92 92
93class QPEApplicationData 93class QPEApplicationData
94{ 94{
95public: 95public:
96 QPEApplicationData ( ) 96 QPEApplicationData ( )
97 : presstimer( 0 ), presswidget( 0 ), rightpressed( false ), kbgrabbed( false ), 97 : presstimer( 0 ), presswidget( 0 ), rightpressed( false ), kbgrabbed( false ),
98 notbusysent( false ), preloaded( false ), forceshow( false ), nomaximize( false ), 98 notbusysent( false ), preloaded( false ), forceshow( false ), nomaximize( false ),
99 keep_running( true ), qpe_main_widget( 0 ) 99 keep_running( true ), qpe_main_widget( 0 )
100 100
101 { 101 {
102 qcopq.setAutoDelete( TRUE ); 102 qcopq.setAutoDelete( TRUE );
103 } 103 }
104 104
105 int presstimer; 105 int presstimer;
106 QWidget* presswidget; 106 QWidget* presswidget;
107 QPoint presspos; 107 QPoint presspos;
108 108
109 bool rightpressed : 1; 109 bool rightpressed : 1;
110 bool kbgrabbed : 1; 110 bool kbgrabbed : 1;
111 bool notbusysent : 1; 111 bool notbusysent : 1;
112 bool preloaded : 1; 112 bool preloaded : 1;
113 bool forceshow : 1; 113 bool forceshow : 1;
114 bool nomaximize : 1; 114 bool nomaximize : 1;
115 bool keep_running : 1; 115 bool keep_running : 1;
116 116
117 QString appName; 117 QString appName;
118 struct QCopRec 118 struct QCopRec
119 { 119 {
120 QCopRec( const QCString &ch, const QCString &msg, 120 QCopRec( const QCString &ch, const QCString &msg,
121 const QByteArray &d ) : 121 const QByteArray &d ) :
122 channel( ch ), message( msg ), data( d ) 122 channel( ch ), message( msg ), data( d )
123 { } 123 { }
124 124
125 QCString channel; 125 QCString channel;
126 QCString message; 126 QCString message;
127 QByteArray data; 127 QByteArray data;
128 }; 128 };
129 QWidget* qpe_main_widget; 129 QWidget* qpe_main_widget;
130 QList<QCopRec> qcopq; 130 QList<QCopRec> qcopq;
131 131
132 void enqueueQCop( const QCString &ch, const QCString &msg, 132 void enqueueQCop( const QCString &ch, const QCString &msg,
133 const QByteArray &data ) 133 const QByteArray &data )
134 { 134 {
135 qcopq.append( new QCopRec( ch, msg, data ) ); 135 qcopq.append( new QCopRec( ch, msg, data ) );
136 } 136 }
137 void sendQCopQ() 137 void sendQCopQ()
138 { 138 {
139 QCopRec * r; 139 QCopRec * r;
140#ifndef QT_NO_COP 140#ifndef QT_NO_COP
141 141
142 for ( QListIterator<QCopRec> it( qcopq ); ( r = it.current() ); ++it ) 142 for ( QListIterator<QCopRec> it( qcopq ); ( r = it.current() ); ++it )
143 QCopChannel::sendLocally( r->channel, r->message, r->data ); 143 QCopChannel::sendLocally( r->channel, r->message, r->data );
144#endif 144#endif
145 145
146 qcopq.clear(); 146 qcopq.clear();
147 } 147 }
148 static void show_mx(QWidget* mw, bool nomaximize) 148 static void show_mx(QWidget* mw, bool nomaximize)
149 { 149 {
150 150
151 // ugly hack, remove that later after finding a sane solution 151 // ugly hack, remove that later after finding a sane solution
152 // Addendum: Only Sharp currently has models with high resolution but (physically) small displays, 152 // Addendum: Only Sharp currently has models with high resolution but (physically) small displays,
153 // so this is only useful if QT_QWS_SIMPAD is NOT defined. E.g. SIMpad has 800x600 but has 153 // so this is only useful if QT_QWS_SIMPAD is NOT defined. E.g. SIMpad has 800x600 but has
154 // a (physically) large enough display to use the small icons 154 // a (physically) large enough display to use the small icons
155#ifndef QT_QWS_SIMPAD 155#ifndef QT_QWS_SIMPAD
156 if ( QPEApplication::desktop() ->width() >= 600 && ( mw->inherits("QMainWindow") || mw->isA("QMainWindow") ) ) { 156 if ( QPEApplication::desktop() ->width() >= 600 && ( mw->inherits("QMainWindow") || mw->isA("QMainWindow") ) ) {
157 ( ( QMainWindow* ) mw )->setUsesBigPixmaps( true ); 157 ( ( QMainWindow* ) mw )->setUsesBigPixmaps( true );
158 } 158 }
159#endif 159#endif
160 160
161 if ( mw->layout() && mw->inherits("QDialog") ) { 161 if ( mw->layout() && mw->inherits("QDialog") ) {
162 QPEApplication::showDialog((QDialog*)mw, nomaximize); 162 QPEApplication::showDialog((QDialog*)mw, nomaximize);
163 } 163 }
164 else { 164 else {
165#ifdef Q_WS_QWS 165#ifdef Q_WS_QWS
166 if ( !nomaximize ) 166 if ( !nomaximize )
167 mw->showMaximized(); 167 mw->showMaximized();
168 else 168 else
169#endif 169#endif
170 170
171 mw->show(); 171 mw->show();
172 } 172 }
173 } 173 }
174 static bool setWidgetCaptionFromAppName( QWidget* /*mw*/, const QString& /*appName*/, const QString& /*appsPath*/ ) 174 static bool setWidgetCaptionFromAppName( QWidget* /*mw*/, const QString& /*appName*/, const QString& /*appsPath*/ )
175 { 175 {
176 /* 176 /*
177 // This works but disable it for now until it is safe to apply 177 // This works but disable it for now until it is safe to apply
178 // What is does is scan the .desktop files of all the apps for 178 // What is does is scan the .desktop files of all the apps for
179 // the applnk that has the corresponding argv[0] as this program 179 // the applnk that has the corresponding argv[0] as this program
180 // then it uses the name stored in the .desktop file as the caption 180 // then it uses the name stored in the .desktop file as the caption
181 // for the main widget. This saves duplicating translations for 181 // for the main widget. This saves duplicating translations for
182 // the app name in the program and in the .desktop files. 182 // the app name in the program and in the .desktop files.
183 183
184 AppLnkSet apps( appsPath ); 184 AppLnkSet apps( appsPath );
185 185
186 QList<AppLnk> appsList = apps.children(); 186 QList<AppLnk> appsList = apps.children();
187 for ( QListIterator<AppLnk> it(appsList); it.current(); ++it ) { 187 for ( QListIterator<AppLnk> it(appsList); it.current(); ++it ) {
188 if ( (*it)->exec() == appName ) { 188 if ( (*it)->exec() == appName ) {
189 mw->setCaption( (*it)->name() ); 189 mw->setCaption( (*it)->name() );
190 return TRUE; 190 return TRUE;
191 } 191 }
192 } 192 }
193 */ 193 */
194 return FALSE; 194 return FALSE;
195 } 195 }
196 196
197 197
198 void show(QWidget* mw, bool nomax) 198 void show(QWidget* mw, bool nomax)
199 { 199 {
200 setWidgetCaptionFromAppName( mw, appName, QPEApplication::qpeDir() + "apps" ); 200 setWidgetCaptionFromAppName( mw, appName, QPEApplication::qpeDir() + "apps" );
201 nomaximize = nomax; 201 nomaximize = nomax;
202 qpe_main_widget = mw; 202 qpe_main_widget = mw;
203#ifndef QT_NO_COP 203#ifndef QT_NO_COP
204 204
205 sendQCopQ(); 205 sendQCopQ();
206#endif 206#endif
207 207
208 if ( preloaded ) { 208 if ( preloaded ) {
209 if (forceshow) 209 if (forceshow)
210 show_mx(mw, nomax); 210 show_mx(mw, nomax);
211 } 211 }
212 else if ( keep_running ) { 212 else if ( keep_running ) {
213 show_mx(mw, nomax); 213 show_mx(mw, nomax);
214 } 214 }
215 } 215 }
216 216
217 void loadTextCodecs() 217 void loadTextCodecs()
218 { 218 {
219 QString path = QPEApplication::qpeDir() + "/plugins/textcodecs"; 219 QString path = QPEApplication::qpeDir() + "/plugins/textcodecs";
220 QDir dir( path, "lib*.so" ); 220 QDir dir( path, "lib*.so" );
221 QStringList list; 221 QStringList list;
222 if ( dir. exists ( )) 222 if ( dir. exists ( ))
223 list = dir.entryList(); 223 list = dir.entryList();
224 QStringList::Iterator it; 224 QStringList::Iterator it;
225 for ( it = list.begin(); it != list.end(); ++it ) { 225 for ( it = list.begin(); it != list.end(); ++it ) {
226 TextCodecInterface *iface = 0; 226 TextCodecInterface *iface = 0;
227 QLibrary *lib = new QLibrary( path + "/" + *it ); 227 QLibrary *lib = new QLibrary( path + "/" + *it );
228 if ( lib->queryInterface( IID_QtopiaTextCodec, (QUnknownInterface**)&iface ) == QS_OK && iface ) { 228 if ( lib->queryInterface( IID_QtopiaTextCodec, (QUnknownInterface**)&iface ) == QS_OK && iface ) {
229 QValueList<int> mibs = iface->mibEnums(); 229 QValueList<int> mibs = iface->mibEnums();
230 for (QValueList<int>::ConstIterator i = mibs.begin(); i != mibs.end(); ++i) { 230 for (QValueList<int>::ConstIterator i = mibs.begin(); i != mibs.end(); ++i) {
231 (void)iface->createForMib(*i); 231 (void)iface->createForMib(*i);
232 // ### it exists now; need to remember if we can delete it 232 // ### it exists now; need to remember if we can delete it
233 } 233 }
234 } 234 }
235 else { 235 else {
236 lib->unload(); 236 lib->unload();
237 delete lib; 237 delete lib;
238 } 238 }
239 } 239 }
240 } 240 }
241 241
242 void loadImageCodecs() 242 void loadImageCodecs()
243 { 243 {
244 QString path = QPEApplication::qpeDir() + "/plugins/imagecodecs"; 244 QString path = QPEApplication::qpeDir() + "/plugins/imagecodecs";
245 QDir dir( path, "lib*.so" ); 245 QDir dir( path, "lib*.so" );
246 QStringList list; 246 QStringList list;
247 if ( dir. exists ( )) 247 if ( dir. exists ( ))
248 list = dir.entryList(); 248 list = dir.entryList();
249 QStringList::Iterator it; 249 QStringList::Iterator it;
250 for ( it = list.begin(); it != list.end(); ++it ) { 250 for ( it = list.begin(); it != list.end(); ++it ) {
251 ImageCodecInterface *iface = 0; 251 ImageCodecInterface *iface = 0;
252 QLibrary *lib = new QLibrary( path + "/" + *it ); 252 QLibrary *lib = new QLibrary( path + "/" + *it );
253 if ( lib->queryInterface( IID_QtopiaImageCodec, (QUnknownInterface**)&iface ) == QS_OK && iface ) { 253 if ( lib->queryInterface( IID_QtopiaImageCodec, (QUnknownInterface**)&iface ) == QS_OK && iface ) {
254 QStringList formats = iface->keys(); 254 QStringList formats = iface->keys();
255 for (QStringList::ConstIterator i = formats.begin(); i != formats.end(); ++i) { 255 for (QStringList::ConstIterator i = formats.begin(); i != formats.end(); ++i) {
256 (void)iface->installIOHandler(*i); 256 (void)iface->installIOHandler(*i);
257 // ### it exists now; need to remember if we can delete it 257 // ### it exists now; need to remember if we can delete it
258 } 258 }
259 } 259 }
260 else { 260 else {
261 lib->unload(); 261 lib->unload();
262 delete lib; 262 delete lib;
263 } 263 }
264 } 264 }
265 } 265 }
266 QString styleName; 266 QString styleName;
267 QString decorationName; 267 QString decorationName;
268}; 268};
269 269
270class ResourceMimeFactory : public QMimeSourceFactory 270class ResourceMimeFactory : public QMimeSourceFactory
271{ 271{
272public: 272public:
273 ResourceMimeFactory() 273 ResourceMimeFactory() : resImage( 0 )
274 { 274 {
275 setFilePath( Global::helpPath() ); 275 setFilePath( Global::helpPath() );
276 setExtensionType( "html", "text/html;charset=UTF-8" ); 276 setExtensionType( "html", "text/html;charset=UTF-8" );
277 } 277 }
278 ~ResourceMimeFactory() {
279 delete resImage;
280 }
278 281
279 const QMimeSource* data( const QString& abs_name ) const 282 const QMimeSource* data( const QString& abs_name ) const
280 { 283 {
281 const QMimeSource * r = QMimeSourceFactory::data( abs_name ); 284 const QMimeSource * r = QMimeSourceFactory::data( abs_name );
282 if ( !r ) { 285 if ( !r ) {
283 int sl = abs_name.length(); 286 int sl = abs_name.length();
284 do { 287 do {
285 sl = abs_name.findRev( '/', sl - 1 ); 288 sl = abs_name.findRev( '/', sl - 1 );
286 QString name = sl >= 0 ? abs_name.mid( sl + 1 ) : abs_name; 289 QString name = sl >= 0 ? abs_name.mid( sl + 1 ) : abs_name;
287 int dot = name.findRev( '.' ); 290 int dot = name.findRev( '.' );
288 if ( dot >= 0 ) 291 if ( dot >= 0 )
289 name = name.left( dot ); 292 name = name.left( dot );
290 QImage img = Resource::loadImage( name ); 293 QImage img = Resource::loadImage( name );
291 if ( !img.isNull() ) 294 if ( !img.isNull() ) {
292 r = new QImageDrag( img ); 295 delete resImage;
296 resImage = new QImageDrag( img );
297 r = resImage;
298 }
293 } 299 }
294 while ( !r && sl > 0 ); 300 while ( !r && sl > 0 );
295 } 301 }
296 return r; 302 return r;
297 } 303 }
304private:
305 mutable QImageDrag *resImage;
298}; 306};
299 307
300static int muted = 0; 308static int muted = 0;
301static int micMuted = 0; 309static int micMuted = 0;
302 310
303static void setVolume( int t = 0, int percent = -1 ) 311static void setVolume( int t = 0, int percent = -1 )
304{ 312{
305 switch ( t ) { 313 switch ( t ) {
306 case 0: { 314 case 0: {
307 Config cfg( "qpe" ); 315 Config cfg( "qpe" );
308 cfg.setGroup( "Volume" ); 316 cfg.setGroup( "Volume" );
309 if ( percent < 0 ) 317 if ( percent < 0 )
310 percent = cfg.readNumEntry( "VolumePercent", 50 ); 318 percent = cfg.readNumEntry( "VolumePercent", 50 );
311 int fd = 0; 319 int fd = 0;
312 if ( ( fd = open( "/dev/mixer", O_RDWR ) ) >= 0 ) { 320 if ( ( fd = open( "/dev/mixer", O_RDWR ) ) >= 0 ) {
313 int vol = muted ? 0 : percent; 321 int vol = muted ? 0 : percent;
314 // set both channels to same volume 322 // set both channels to same volume
315 vol |= vol << 8; 323 vol |= vol << 8;
316 ioctl( fd, MIXER_WRITE( 0 ), &vol ); 324 ioctl( fd, MIXER_WRITE( 0 ), &vol );
317 ::close( fd ); 325 ::close( fd );
318 } 326 }
319 } 327 }
320 break; 328 break;
321 } 329 }
322} 330}
323 331
324static void setMic( int t = 0, int percent = -1 ) 332static void setMic( int t = 0, int percent = -1 )
325{ 333{
326 switch ( t ) { 334 switch ( t ) {
327 case 0: { 335 case 0: {
328 Config cfg( "qpe" ); 336 Config cfg( "qpe" );
329 cfg.setGroup( "Volume" ); 337 cfg.setGroup( "Volume" );
330 if ( percent < 0 ) 338 if ( percent < 0 )
331 percent = cfg.readNumEntry( "Mic", 50 ); 339 percent = cfg.readNumEntry( "Mic", 50 );
332 340
333 int fd = 0; 341 int fd = 0;
334 int mic = micMuted ? 0 : percent; 342 int mic = micMuted ? 0 : percent;
335 if ( ( fd = open( "/dev/mixer", O_RDWR ) ) >= 0 ) { 343 if ( ( fd = open( "/dev/mixer", O_RDWR ) ) >= 0 ) {
336 ioctl( fd, MIXER_WRITE( SOUND_MIXER_MIC ), &mic ); 344 ioctl( fd, MIXER_WRITE( SOUND_MIXER_MIC ), &mic );
337 ::close( fd ); 345 ::close( fd );
338 } 346 }
339 } 347 }
340 break; 348 break;
341 } 349 }
342} 350}
343 351
344 352
345static void setBass( int t = 0, int percent = -1 ) 353static void setBass( int t = 0, int percent = -1 )
346{ 354{
347 switch ( t ) { 355 switch ( t ) {
348 case 0: { 356 case 0: {
349 Config cfg( "qpe" ); 357 Config cfg( "qpe" );
350 cfg.setGroup( "Volume" ); 358 cfg.setGroup( "Volume" );
351 if ( percent < 0 ) 359 if ( percent < 0 )
352 percent = cfg.readNumEntry( "BassPercent", 50 ); 360 percent = cfg.readNumEntry( "BassPercent", 50 );
353 361
354 int fd = 0; 362 int fd = 0;
355 int bass = percent; 363 int bass = percent;
356 if ( ( fd = open( "/dev/mixer", O_RDWR ) ) >= 0 ) { 364 if ( ( fd = open( "/dev/mixer", O_RDWR ) ) >= 0 ) {
357 ioctl( fd, MIXER_WRITE( SOUND_MIXER_BASS ), &bass ); 365 ioctl( fd, MIXER_WRITE( SOUND_MIXER_BASS ), &bass );
358 ::close( fd ); 366 ::close( fd );
359 } 367 }
360 } 368 }
361 break; 369 break;
362 } 370 }
363} 371}
364 372
365 373
366static void setTreble( int t = 0, int percent = -1 ) 374static void setTreble( int t = 0, int percent = -1 )
367{ 375{
368 switch ( t ) { 376 switch ( t ) {
369 case 0: { 377 case 0: {
370 Config cfg( "qpe" ); 378 Config cfg( "qpe" );
371 cfg.setGroup( "Volume" ); 379 cfg.setGroup( "Volume" );
372 if ( percent < 0 ) 380 if ( percent < 0 )
373 percent = cfg.readNumEntry( "TreblePercent", 50 ); 381 percent = cfg.readNumEntry( "TreblePercent", 50 );
374 382
375 int fd = 0; 383 int fd = 0;
376 int treble = percent; 384 int treble = percent;
377 if ( ( fd = open( "/dev/mixer", O_RDWR ) ) >= 0 ) { 385 if ( ( fd = open( "/dev/mixer", O_RDWR ) ) >= 0 ) {
378 ioctl( fd, MIXER_WRITE( SOUND_MIXER_TREBLE ), &treble ); 386 ioctl( fd, MIXER_WRITE( SOUND_MIXER_TREBLE ), &treble );
379 ::close( fd ); 387 ::close( fd );
380 } 388 }
381 } 389 }
382 break; 390 break;
383 } 391 }
384} 392}
385 393
386 394
387/*! 395/*!
388 \class QPEApplication qpeapplication.h 396 \class QPEApplication qpeapplication.h
389 \brief The QPEApplication class implements various system services 397 \brief The QPEApplication class implements various system services
390 that are available to all Qtopia applications. 398 that are available to all Qtopia applications.
391 399
392 Simply by using QPEApplication instead of QApplication, a standard Qt 400 Simply by using QPEApplication instead of QApplication, a standard Qt
393 application becomes a Qtopia application. It automatically follows 401 application becomes a Qtopia application. It automatically follows
394 style changes, quits and raises, and in the 402 style changes, quits and raises, and in the
395 case of \link docwidget.html document-oriented\endlink applications, 403 case of \link docwidget.html document-oriented\endlink applications,
396 changes the currently displayed document in response to the environment. 404 changes the currently displayed document in response to the environment.
397 405
398 To create a \link docwidget.html document-oriented\endlink 406 To create a \link docwidget.html document-oriented\endlink
399 application use showMainDocumentWidget(); to create a 407 application use showMainDocumentWidget(); to create a
400 non-document-oriented application use showMainWidget(). The 408 non-document-oriented application use showMainWidget(). The
401 keepRunning() function indicates whether the application will 409 keepRunning() function indicates whether the application will
402 continue running after it's processed the last \link qcop.html 410 continue running after it's processed the last \link qcop.html
403 QCop\endlink message. This can be changed using setKeepRunning(). 411 QCop\endlink message. This can be changed using setKeepRunning().
404 412
405 A variety of signals are emitted when certain events occur, for 413 A variety of signals are emitted when certain events occur, for
406 example, timeChanged(), clockChanged(), weekChanged(), 414 example, timeChanged(), clockChanged(), weekChanged(),
407 dateFormatChanged() and volumeChanged(). If the application receives 415 dateFormatChanged() and volumeChanged(). If the application receives
408 a \link qcop.html QCop\endlink message on the application's 416 a \link qcop.html QCop\endlink message on the application's
409 QPE/Application/\e{appname} channel, the appMessage() signal is 417 QPE/Application/\e{appname} channel, the appMessage() signal is
410 emitted. There are also flush() and reload() signals, which 418 emitted. There are also flush() and reload() signals, which
411 are emitted when synching begins and ends respectively - upon these 419 are emitted when synching begins and ends respectively - upon these
412 signals, the application should save and reload any data 420 signals, the application should save and reload any data
413 files that are involved in synching. Most of these signals will initially 421 files that are involved in synching. Most of these signals will initially
414 be received and unfiltered through the appMessage() signal. 422 be received and unfiltered through the appMessage() signal.
415 423
416 This class also provides a set of useful static functions. The 424 This class also provides a set of useful static functions. The
417 qpeDir() and documentDir() functions return the respective paths. 425 qpeDir() and documentDir() functions return the respective paths.
418 The grabKeyboard() and ungrabKeyboard() functions are used to 426 The grabKeyboard() and ungrabKeyboard() functions are used to
419 control whether the application takes control of the device's 427 control whether the application takes control of the device's
420 physical buttons (e.g. application launch keys). The stylus' mode of 428 physical buttons (e.g. application launch keys). The stylus' mode of
421 operation is set with setStylusOperation() and retrieved with 429 operation is set with setStylusOperation() and retrieved with
422 stylusOperation(). There are also setInputMethodHint() and 430 stylusOperation(). There are also setInputMethodHint() and
423 inputMethodHint() functions. 431 inputMethodHint() functions.
424 432
425 \ingroup qtopiaemb 433 \ingroup qtopiaemb
426*/ 434*/
427 435
428/*! 436/*!
429 \fn void QPEApplication::clientMoused() 437 \fn void QPEApplication::clientMoused()
430 438
431 \internal 439 \internal
432*/ 440*/
433 441
434/*! 442/*!
435 \fn void QPEApplication::timeChanged(); 443 \fn void QPEApplication::timeChanged();
436 This signal is emitted when the time changes outside the normal 444 This signal is emitted when the time changes outside the normal
437 passage of time, i.e. if the time is set backwards or forwards. 445 passage of time, i.e. if the time is set backwards or forwards.
438*/ 446*/
439 447
440/*! 448/*!
441 \fn void QPEApplication::clockChanged( bool ampm ); 449 \fn void QPEApplication::clockChanged( bool ampm );
442 450
443 This signal is emitted when the user changes the clock's style. If 451 This signal is emitted when the user changes the clock's style. If
444 \a ampm is TRUE, the user wants a 12-hour AM/PM clock, otherwise, 452 \a ampm is TRUE, the user wants a 12-hour AM/PM clock, otherwise,
445 they want a 24-hour clock. 453 they want a 24-hour clock.
446*/ 454*/
447 455
448/*! 456/*!
449 \fn void QPEApplication::volumeChanged( bool muted ) 457 \fn void QPEApplication::volumeChanged( bool muted )
450 458
451 This signal is emitted whenever the mute state is changed. If \a 459 This signal is emitted whenever the mute state is changed. If \a
452 muted is TRUE, then sound output has been muted. 460 muted is TRUE, then sound output has been muted.
453*/ 461*/
454 462
455/*! 463/*!
456 \fn void QPEApplication::weekChanged( bool startOnMonday ) 464 \fn void QPEApplication::weekChanged( bool startOnMonday )
457 465
458 This signal is emitted if the week start day is changed. If \a 466 This signal is emitted if the week start day is changed. If \a
459 startOnMonday is TRUE then the first day of the week is Monday; if 467 startOnMonday is TRUE then the first day of the week is Monday; if
460 \a startOnMonday is FALSE then the first day of the week is 468 \a startOnMonday is FALSE then the first day of the week is
461 Sunday. 469 Sunday.
462*/ 470*/
463 471
464/*! 472/*!
465 \fn void QPEApplication::dateFormatChanged(DateFormat) 473 \fn void QPEApplication::dateFormatChanged(DateFormat)
466 474
467 This signal is emitted whenever the date format is changed. 475 This signal is emitted whenever the date format is changed.
468*/ 476*/
469 477
470/*! 478/*!
471 \fn void QPEApplication::flush() 479 \fn void QPEApplication::flush()
472 480
473 ### 481 ###
474*/ 482*/
475 483
476/*! 484/*!
477 \fn void QPEApplication::reload() 485 \fn void QPEApplication::reload()
478 486
479*/ 487*/
480 488
481/*! 489/*!
482 \fn void QPEApplication::appMessage( const QCString& msg, const QByteArray& data ) 490 \fn void QPEApplication::appMessage( const QCString& msg, const QByteArray& data )
483 491
484 This signal is emitted when a message is received on this 492 This signal is emitted when a message is received on this
485 application's QPE/Application/<i>appname</i> \link qcop.html 493 application's QPE/Application/<i>appname</i> \link qcop.html
486 QCop\endlink channel. 494 QCop\endlink channel.
487 495
488 The slot to which you connect this signal uses \a msg and \a data 496 The slot to which you connect this signal uses \a msg and \a data
489 in the following way: 497 in the following way:
490 498
491\code 499\code
492 void MyWidget::receive( const QCString& msg, const QByteArray& data ) 500 void MyWidget::receive( const QCString& msg, const QByteArray& data )
493 { 501 {
494 QDataStream stream( data, IO_ReadOnly ); 502 QDataStream stream( data, IO_ReadOnly );
495 if ( msg == "someMessage(int,int,int)" ) { 503 if ( msg == "someMessage(int,int,int)" ) {
496 int a,b,c; 504 int a,b,c;
497 stream >> a >> b >> c; 505 stream >> a >> b >> c;
498 ... 506 ...
499 } else if ( msg == "otherMessage(QString)" ) { 507 } else if ( msg == "otherMessage(QString)" ) {
500 ... 508 ...
501 } 509 }
502 } 510 }
503\endcode 511\endcode
504 512
505 \sa qcop.html 513 \sa qcop.html
506 Note that messages received here may be processed by qpe application 514 Note that messages received here may be processed by qpe application
507 and emitted as signals, such as flush() and reload(). 515 and emitted as signals, such as flush() and reload().
508*/ 516*/
509 517
510/*! 518/*!
511 Constructs a QPEApplication just as you would construct 519 Constructs a QPEApplication just as you would construct
512 a QApplication, passing \a argc, \a argv, and \a t. 520 a QApplication, passing \a argc, \a argv, and \a t.
513 521
514 For applications, \a t should be the default, GuiClient. Only 522 For applications, \a t should be the default, GuiClient. Only
515 the Qtopia server passes GuiServer. 523 the Qtopia server passes GuiServer.
516*/ 524*/
517QPEApplication::QPEApplication( int & argc, char **argv, Type t ) 525QPEApplication::QPEApplication( int & argc, char **argv, Type t )
518 : QApplication( argc, argv, t ) 526 : QApplication( argc, argv, t )
519{ 527{
520 d = new QPEApplicationData; 528 d = new QPEApplicationData;
521 d->loadTextCodecs(); 529 d->loadTextCodecs();
522 d->loadImageCodecs(); 530 d->loadImageCodecs();
523 int dw = desktop() ->width(); 531 int dw = desktop() ->width();
524 532
525 if ( dw < 200 ) { 533 if ( dw < 200 ) {
526 setFont( QFont( "vera", 8 ) ); 534 setFont( QFont( "vera", 8 ) );
527 AppLnk::setSmallIconSize( 10 ); 535 AppLnk::setSmallIconSize( 10 );
528 AppLnk::setBigIconSize( 28 ); 536 AppLnk::setBigIconSize( 28 );
529 } 537 }
530#ifndef QT_QWS_SIMPAD 538#ifndef QT_QWS_SIMPAD
531 else if ( dw > 600 ) { 539 else if ( dw > 600 ) {
532 setFont( QFont( "vera", 16 ) ); 540 setFont( QFont( "vera", 16 ) );
533 AppLnk::setSmallIconSize( 24 ); 541 AppLnk::setSmallIconSize( 24 );
534 AppLnk::setBigIconSize( 48 ); 542 AppLnk::setBigIconSize( 48 );
535 } 543 }
536#endif 544#endif
537 else if ( dw > 200 ) { 545 else if ( dw > 200 ) {
538 setFont( QFont( "vera", 10 ) ); 546 setFont( QFont( "vera", 10 ) );
539 AppLnk::setSmallIconSize( 14 ); 547 AppLnk::setSmallIconSize( 14 );
540 AppLnk::setBigIconSize( 32 ); 548 AppLnk::setBigIconSize( 32 );
541 } 549 }
542 550
543 QMimeSourceFactory::setDefaultFactory( new ResourceMimeFactory ); 551 QMimeSourceFactory::setDefaultFactory( new ResourceMimeFactory );
544 552
545 connect( this, SIGNAL( lastWindowClosed() ), this, SLOT( hideOrQuit() ) ); 553 connect( this, SIGNAL( lastWindowClosed() ), this, SLOT( hideOrQuit() ) );
546#if defined(Q_WS_QWS) && !defined(QT_NO_COP) 554#if defined(Q_WS_QWS) && !defined(QT_NO_COP)
547 555
548 QString qcopfn( "/tmp/qcop-msg-" ); 556 QString qcopfn( "/tmp/qcop-msg-" );
549 qcopfn += QString( argv[ 0 ] ); // append command name 557 qcopfn += QString( argv[ 0 ] ); // append command name
550 558
551 QFile f( qcopfn ); 559 QFile f( qcopfn );
552 if ( f.open( IO_ReadOnly ) ) { 560 if ( f.open( IO_ReadOnly ) ) {
553 flock( f.handle(), LOCK_EX ); 561 flock( f.handle(), LOCK_EX );
554 } 562 }
555 563
556 sysChannel = new QCopChannel( "QPE/System", this ); 564 sysChannel = new QCopChannel( "QPE/System", this );
557 connect( sysChannel, SIGNAL( received( const QCString &, const QByteArray & ) ), 565 connect( sysChannel, SIGNAL( received( const QCString &, const QByteArray & ) ),
558 this, SLOT( systemMessage( const QCString &, const QByteArray & ) ) ); 566 this, SLOT( systemMessage( const QCString &, const QByteArray & ) ) );
559 567
560 QCString channel = QCString( argv[ 0 ] ); 568 QCString channel = QCString( argv[ 0 ] );
561 channel.replace( QRegExp( ".*/" ), "" ); 569 channel.replace( QRegExp( ".*/" ), "" );
562 d->appName = channel; 570 d->appName = channel;
563 channel = "QPE/Application/" + channel; 571 channel = "QPE/Application/" + channel;
564 pidChannel = new QCopChannel( channel, this ); 572 pidChannel = new QCopChannel( channel, this );
565 connect( pidChannel, SIGNAL( received( const QCString &, const QByteArray & ) ), 573 connect( pidChannel, SIGNAL( received( const QCString &, const QByteArray & ) ),
566 this, SLOT( pidMessage( const QCString &, const QByteArray & ) ) ); 574 this, SLOT( pidMessage( const QCString &, const QByteArray & ) ) );
567 575
568 if ( f.isOpen() ) { 576 if ( f.isOpen() ) {
569 d->keep_running = FALSE; 577 d->keep_running = FALSE;
570 QDataStream ds( &f ); 578 QDataStream ds( &f );
571 QCString channel, message; 579 QCString channel, message;
572 QByteArray data; 580 QByteArray data;
573 while ( !ds.atEnd() ) { 581 while ( !ds.atEnd() ) {
574 ds >> channel >> message >> data; 582 ds >> channel >> message >> data;
575 d->enqueueQCop( channel, message, data ); 583 d->enqueueQCop( channel, message, data );
576 } 584 }
577 585
578 flock( f.handle(), LOCK_UN ); 586 flock( f.handle(), LOCK_UN );
579 f.close(); 587 f.close();
580 f.remove(); 588 f.remove();
581 } 589 }
582 590
583 for ( int a = 0; a < argc; a++ ) { 591 for ( int a = 0; a < argc; a++ ) {
584 if ( qstrcmp( argv[ a ], "-preload" ) == 0 ) { 592 if ( qstrcmp( argv[ a ], "-preload" ) == 0 ) {
585 argv[ a ] = argv[ a + 1 ]; 593 argv[ a ] = argv[ a + 1 ];
586 a++; 594 a++;
587 d->preloaded = TRUE; 595 d->preloaded = TRUE;
588 argc -= 1; 596 argc -= 1;
589 } 597 }
590 else if ( qstrcmp( argv[ a ], "-preload-show" ) == 0 ) { 598 else if ( qstrcmp( argv[ a ], "-preload-show" ) == 0 ) {
591 argv[ a ] = argv[ a + 1 ]; 599 argv[ a ] = argv[ a + 1 ];
592 a++; 600 a++;
593 d->preloaded = TRUE; 601 d->preloaded = TRUE;
594 d->forceshow = TRUE; 602 d->forceshow = TRUE;
595 argc -= 1; 603 argc -= 1;
596 } 604 }
597 } 605 }
598 606
599 /* overide stored arguments */ 607 /* overide stored arguments */
600 setArgs( argc, argv ); 608 setArgs( argc, argv );
601 609
602#endif 610#endif
603 611
604 // qwsSetDecoration( new QPEDecoration() ); 612 // qwsSetDecoration( new QPEDecoration() );
605 613
606#ifndef QT_NO_TRANSLATION 614#ifndef QT_NO_TRANSLATION
607 615
608 QStringList langs = Global::languageList(); 616 QStringList langs = Global::languageList();
609 for ( QStringList::ConstIterator it = langs.begin(); it != langs.end(); ++it ) { 617 for ( QStringList::ConstIterator it = langs.begin(); it != langs.end(); ++it ) {
610 QString lang = *it; 618 QString lang = *it;
611 619
612 installTranslation( lang + "/libopie.qm"); 620 installTranslation( lang + "/libopie.qm");
613 installTranslation( lang + "/libqpe.qm" ); 621 installTranslation( lang + "/libqpe.qm" );
614 installTranslation( lang + "/" + d->appName + ".qm" ); 622 installTranslation( lang + "/" + d->appName + ".qm" );
615 623
616 624
617 //###language/font hack; should look it up somewhere 625 //###language/font hack; should look it up somewhere
618#ifdef QWS 626#ifdef QWS
619 627
620 if ( lang == "ja" || lang == "zh_CN" || lang == "zh_TW" || lang == "ko" ) { 628 if ( lang == "ja" || lang == "zh_CN" || lang == "zh_TW" || lang == "ko" ) {
621 QFont fn = FontManager::unicodeFont( FontManager::Proportional ); 629 QFont fn = FontManager::unicodeFont( FontManager::Proportional );
622 setFont( fn ); 630 setFont( fn );
623 } 631 }
624#endif 632#endif
625 633
626 } 634 }
627#endif 635#endif
628 636
629 applyStyle(); 637 applyStyle();
630 638
631 if ( type() == GuiServer ) { 639 if ( type() == GuiServer ) {
632 setVolume(); 640 setVolume();
633 } 641 }
634 642
635 installEventFilter( this ); 643 installEventFilter( this );
636 644
637 QPEMenuToolFocusManager::initialize(); 645 QPEMenuToolFocusManager::initialize();
638 646
639#ifdef QT_NO_QWS_CURSOR 647#ifdef QT_NO_QWS_CURSOR
640 // if we have no cursor, probably don't want tooltips 648 // if we have no cursor, probably don't want tooltips
641 QToolTip::setEnabled( FALSE ); 649 QToolTip::setEnabled( FALSE );
642#endif 650#endif
643} 651}
644 652
645static QPtrDict<void>* inputMethodDict = 0; 653static QPtrDict<void>* inputMethodDict = 0;
646static void createInputMethodDict() 654static void createInputMethodDict()
647{ 655{
648 if ( !inputMethodDict ) 656 if ( !inputMethodDict )
649 inputMethodDict = new QPtrDict<void>; 657 inputMethodDict = new QPtrDict<void>;
650} 658}
651 659
652/*! 660/*!
653 Returns the currently set hint to the system as to whether 661 Returns the currently set hint to the system as to whether
654 widget \a w has any use for text input methods. 662 widget \a w has any use for text input methods.
655 663
656 664
657 \sa setInputMethodHint() InputMethodHint 665 \sa setInputMethodHint() InputMethodHint
658*/ 666*/
659QPEApplication::InputMethodHint QPEApplication::inputMethodHint( QWidget * w ) 667QPEApplication::InputMethodHint QPEApplication::inputMethodHint( QWidget * w )
660{ 668{
661 if ( inputMethodDict && w ) 669 if ( inputMethodDict && w )
662 return ( InputMethodHint ) ( int ) inputMethodDict->find( w ); 670 return ( InputMethodHint ) ( int ) inputMethodDict->find( w );
663 return Normal; 671 return Normal;
664} 672}
665 673
666/*! 674/*!
667 \enum QPEApplication::InputMethodHint 675 \enum QPEApplication::InputMethodHint
668 676
669 \value Normal the application sometimes needs text input (the default). 677 \value Normal the application sometimes needs text input (the default).
670 \value AlwaysOff the application never needs text input. 678 \value AlwaysOff the application never needs text input.
671 \value AlwaysOn the application always needs text input. 679 \value AlwaysOn the application always needs text input.
672*/ 680*/
673 681
674/*! 682/*!
675 Hints to the system that widget \a w has use for text input methods 683 Hints to the system that widget \a w has use for text input methods
676 as specified by \a mode. 684 as specified by \a mode.
677 685
678 \sa inputMethodHint() InputMethodHint 686 \sa inputMethodHint() InputMethodHint
679*/ 687*/
680void QPEApplication::setInputMethodHint( QWidget * w, InputMethodHint mode ) 688void QPEApplication::setInputMethodHint( QWidget * w, InputMethodHint mode )
681{ 689{
682 createInputMethodDict(); 690 createInputMethodDict();
683 if ( mode == Normal ) { 691 if ( mode == Normal ) {
684 inputMethodDict->remove 692 inputMethodDict->remove
685 ( w ); 693 ( w );
686 } 694 }
687 else { 695 else {
688 inputMethodDict->insert( w, ( void* ) mode ); 696 inputMethodDict->insert( w, ( void* ) mode );
689 } 697 }
690} 698}
691 699
692class HackDialog : public QDialog 700class HackDialog : public QDialog
693{ 701{
694public: 702public:
695 void acceptIt() 703 void acceptIt()
696 { 704 {
697 accept(); 705 accept();
698 } 706 }
699 void rejectIt() 707 void rejectIt()
700 { 708 {
701 reject(); 709 reject();
702 } 710 }
703}; 711};
704 712
705 713
706void QPEApplication::mapToDefaultAction( QWSKeyEvent * ke, int key ) 714void QPEApplication::mapToDefaultAction( QWSKeyEvent * ke, int key )
707{ 715{
708 // specialised actions for certain widgets. May want to 716 // specialised actions for certain widgets. May want to
709 // add more stuff here. 717 // add more stuff here.
710 if ( activePopupWidget() && activePopupWidget() ->inherits( "QListBox" ) 718 if ( activePopupWidget() && activePopupWidget() ->inherits( "QListBox" )
711 && activePopupWidget() ->parentWidget() 719 && activePopupWidget() ->parentWidget()
712 && activePopupWidget() ->parentWidget() ->inherits( "QComboBox" ) ) 720 && activePopupWidget() ->parentWidget() ->inherits( "QComboBox" ) )
713 key = Qt::Key_Return; 721 key = Qt::Key_Return;
714 722
715 if ( activePopupWidget() && activePopupWidget() ->inherits( "QPopupMenu" ) ) 723 if ( activePopupWidget() && activePopupWidget() ->inherits( "QPopupMenu" ) )
716 key = Qt::Key_Return; 724 key = Qt::Key_Return;
717 725
718#ifdef QWS 726#ifdef QWS
719 727
720 ke->simpleData.keycode = key; 728 ke->simpleData.keycode = key;
721#endif 729#endif
722} 730}
723 731
724class HackWidget : public QWidget 732class HackWidget : public QWidget
725{ 733{
726public: 734public:
727 bool needsOk() 735 bool needsOk()
728 { 736 {
729 return ( getWState() & WState_Reserved1 ); 737 return ( getWState() & WState_Reserved1 );
730 } 738 }
731}; 739};
732 740
733/*! 741/*!
734 \internal 742 \internal
735*/ 743*/
736 744
737#ifdef QWS 745#ifdef QWS
738bool QPEApplication::qwsEventFilter( QWSEvent * e ) 746bool QPEApplication::qwsEventFilter( QWSEvent * e )
739{ 747{
740 if ( !d->notbusysent && e->type == QWSEvent::Focus ) { 748 if ( !d->notbusysent && e->type == QWSEvent::Focus ) {
741 if ( qApp->type() != QApplication::GuiServer ) { 749 if ( qApp->type() != QApplication::GuiServer ) {
742 QCopEnvelope e( "QPE/System", "notBusy(QString)" ); 750 QCopEnvelope e( "QPE/System", "notBusy(QString)" );
743 e << d->appName; 751 e << d->appName;
744 } 752 }
745 d->notbusysent = TRUE; 753 d->notbusysent = TRUE;
746 } 754 }
747 if ( type() == GuiServer ) { 755 if ( type() == GuiServer ) {
748 switch ( e->type ) { 756 switch ( e->type ) {
749 case QWSEvent::Mouse: 757 case QWSEvent::Mouse:
750 if ( e->asMouse() ->simpleData.state && !QWidget::find( e->window() ) ) 758 if ( e->asMouse() ->simpleData.state && !QWidget::find( e->window() ) )
751 emit clientMoused(); 759 emit clientMoused();
752 break; 760 break;
753 default: 761 default:
754 break; 762 break;
755 } 763 }
756 } 764 }
757 if ( e->type == QWSEvent::Key ) { 765 if ( e->type == QWSEvent::Key ) {
758 QWSKeyEvent *ke = ( QWSKeyEvent * ) e; 766 QWSKeyEvent *ke = ( QWSKeyEvent * ) e;
759 if ( ke->simpleData.keycode == Qt::Key_F33 ) { 767 if ( ke->simpleData.keycode == Qt::Key_F33 ) {
760 // Use special "OK" key to press "OK" on top level widgets 768 // Use special "OK" key to press "OK" on top level widgets
761 QWidget * active = activeWindow(); 769 QWidget * active = activeWindow();
762 QWidget *popup = 0; 770 QWidget *popup = 0;
763 if ( active && active->isPopup() ) { 771 if ( active && active->isPopup() ) {
764 popup = active; 772 popup = active;
765 active = active->parentWidget(); 773 active = active->parentWidget();
766 } 774 }
767 if ( active && ( int ) active->winId() == ke->simpleData.window && 775 if ( active && ( int ) active->winId() == ke->simpleData.window &&
768 !active->testWFlags( WStyle_Customize | WType_Popup | WType_Desktop ) ) { 776 !active->testWFlags( WStyle_Customize | WType_Popup | WType_Desktop ) ) {
769 if ( ke->simpleData.is_press ) { 777 if ( ke->simpleData.is_press ) {
770 if ( popup ) 778 if ( popup )
771 popup->close(); 779 popup->close();
772 if ( active->inherits( "QDialog" ) ) { 780 if ( active->inherits( "QDialog" ) ) {
773 HackDialog * d = ( HackDialog * ) active; 781 HackDialog * d = ( HackDialog * ) active;
774 d->acceptIt(); 782 d->acceptIt();
775 return TRUE; 783 return TRUE;
776 } 784 }
777 else if ( ( ( HackWidget * ) active ) ->needsOk() ) { 785 else if ( ( ( HackWidget * ) active ) ->needsOk() ) {
778 QSignal s; 786 QSignal s;
779 s.connect( active, SLOT( accept() ) ); 787 s.connect( active, SLOT( accept() ) );
780 s.activate(); 788 s.activate();
781 } 789 }
782 else { 790 else {
783 // do the same as with the select key: Map to the default action of the widget: 791 // do the same as with the select key: Map to the default action of the widget:
784 mapToDefaultAction( ke, Qt::Key_Return ); 792 mapToDefaultAction( ke, Qt::Key_Return );
785 } 793 }
786 } 794 }
787 } 795 }
788 } 796 }
789 else if ( ke->simpleData.keycode == Qt::Key_F30 ) { 797 else if ( ke->simpleData.keycode == Qt::Key_F30 ) {
790 // Use special "select" key to do whatever default action a widget has 798 // Use special "select" key to do whatever default action a widget has
791 mapToDefaultAction( ke, Qt::Key_Space ); 799 mapToDefaultAction( ke, Qt::Key_Space );
792 } 800 }
793 else if ( ke->simpleData.keycode == Qt::Key_Escape && 801 else if ( ke->simpleData.keycode == Qt::Key_Escape &&
794 ke->simpleData.is_press ) { 802 ke->simpleData.is_press ) {
795 // Escape key closes app if focus on toplevel 803 // Escape key closes app if focus on toplevel
796 QWidget * active = activeWindow(); 804 QWidget * active = activeWindow();
797 if ( active && active->testWFlags( WType_TopLevel ) && 805 if ( active && active->testWFlags( WType_TopLevel ) &&
798 ( int ) active->winId() == ke->simpleData.window && 806 ( int ) active->winId() == ke->simpleData.window &&
799 !active->testWFlags( WStyle_Dialog | WStyle_Customize | WType_Popup | WType_Desktop ) ) { 807 !active->testWFlags( WStyle_Dialog | WStyle_Customize | WType_Popup | WType_Desktop ) ) {
800 if ( active->inherits( "QDialog" ) ) { 808 if ( active->inherits( "QDialog" ) ) {
801 HackDialog * d = ( HackDialog * ) active; 809 HackDialog * d = ( HackDialog * ) active;
802 d->rejectIt(); 810 d->rejectIt();
803 return TRUE; 811 return TRUE;
804 } 812 }
805 else if ( strcmp( argv() [ 0 ], "embeddedkonsole" ) != 0 ) { 813 else if ( strcmp( argv() [ 0 ], "embeddedkonsole" ) != 0 ) {
806 active->close(); 814 active->close();
807 } 815 }
808 } 816 }
809 } 817 }
810 else if ( ke->simpleData.keycode >= Qt::Key_F1 && ke->simpleData.keycode <= Qt::Key_F29 ) { 818 else if ( ke->simpleData.keycode >= Qt::Key_F1 && ke->simpleData.keycode <= Qt::Key_F29 ) {
811 // this should be if ( ODevice::inst ( )-> buttonForKeycode ( ... )) 819 // this should be if ( ODevice::inst ( )-> buttonForKeycode ( ... ))
812 // but we cannot access libopie function within libqpe :( 820 // but we cannot access libopie function within libqpe :(
813 821
814 QWidget * active = activeWindow ( ); 822 QWidget * active = activeWindow ( );
815 if ( active && ((int) active-> winId ( ) == ke-> simpleData.window )) { 823 if ( active && ((int) active-> winId ( ) == ke-> simpleData.window )) {
816 if ( d-> kbgrabbed ) { // we grabbed the keyboard 824 if ( d-> kbgrabbed ) { // we grabbed the keyboard
817 QChar ch ( ke-> simpleData.unicode ); 825 QChar ch ( ke-> simpleData.unicode );
818 QKeyEvent qke ( ke-> simpleData. is_press ? QEvent::KeyPress : QEvent::KeyRelease, 826 QKeyEvent qke ( ke-> simpleData. is_press ? QEvent::KeyPress : QEvent::KeyRelease,
819 ke-> simpleData.keycode, 827 ke-> simpleData.keycode,
820 ch. latin1 ( ), 828 ch. latin1 ( ),
821 ke-> simpleData.modifiers, 829 ke-> simpleData.modifiers,
822 QString ( ch ), 830 QString ( ch ),
823 ke-> simpleData.is_auto_repeat, 1 ); 831 ke-> simpleData.is_auto_repeat, 1 );
824 832
825 QObject *which = QWidget::keyboardGrabber ( ); 833 QObject *which = QWidget::keyboardGrabber ( );
826 if ( !which ) 834 if ( !which )
827 which = QApplication::focusWidget ( ); 835 which = QApplication::focusWidget ( );
828 if ( !which ) 836 if ( !which )
829 which = QApplication::activeWindow ( ); 837 which = QApplication::activeWindow ( );
830 if ( !which ) 838 if ( !which )
831 which = qApp; 839 which = qApp;
832 840
833 QApplication::sendEvent ( which, &qke ); 841 QApplication::sendEvent ( which, &qke );
834 } 842 }
835 else { // we didn't grab the keyboard, so send the event to the launcher 843 else { // we didn't grab the keyboard, so send the event to the launcher
836 QCopEnvelope e ( "QPE/Launcher", "deviceButton(int,int,int)" ); 844 QCopEnvelope e ( "QPE/Launcher", "deviceButton(int,int,int)" );
837 e << int( ke-> simpleData.keycode ) << int( ke-> simpleData. is_press ) << int( ke-> simpleData.is_auto_repeat ); 845 e << int( ke-> simpleData.keycode ) << int( ke-> simpleData. is_press ) << int( ke-> simpleData.is_auto_repeat );
838 } 846 }
839 } 847 }
840 return true; 848 return true;
841 } 849 }
842 } 850 }
843 if ( e->type == QWSEvent::Focus ) { 851 if ( e->type == QWSEvent::Focus ) {
844 QWSFocusEvent * fe = ( QWSFocusEvent* ) e; 852 QWSFocusEvent * fe = ( QWSFocusEvent* ) e;
845 if ( !fe->simpleData.get_focus ) { 853 if ( !fe->simpleData.get_focus ) {
846 QWidget * active = activeWindow(); 854 QWidget * active = activeWindow();
847 while ( active && active->isPopup() ) { 855 while ( active && active->isPopup() ) {
848 active->close(); 856 active->close();
849 active = activeWindow(); 857 active = activeWindow();
850 } 858 }
851 } 859 }
852 else { 860 else {
853 // make sure our modal widget is ALWAYS on top 861 // make sure our modal widget is ALWAYS on top
854 QWidget *topm = activeModalWidget(); 862 QWidget *topm = activeModalWidget();
855 if ( topm ) { 863 if ( topm ) {
856 topm->raise(); 864 topm->raise();
857 } 865 }
858 } 866 }
859 if ( fe->simpleData.get_focus && inputMethodDict ) { 867 if ( fe->simpleData.get_focus && inputMethodDict ) {
860 InputMethodHint m = inputMethodHint( QWidget::find( e->window() ) ); 868 InputMethodHint m = inputMethodHint( QWidget::find( e->window() ) );
861 if ( m == AlwaysOff ) 869 if ( m == AlwaysOff )
862 Global::hideInputMethod(); 870 Global::hideInputMethod();
863 if ( m == AlwaysOn ) 871 if ( m == AlwaysOn )
864 Global::showInputMethod(); 872 Global::showInputMethod();
865 } 873 }
866 } 874 }
867 875
868 876
869 return QApplication::qwsEventFilter( e ); 877 return QApplication::qwsEventFilter( e );
870} 878}
871#endif 879#endif
872 880
873/*! 881/*!
874 Destroys the QPEApplication. 882 Destroys the QPEApplication.
875*/ 883*/
876QPEApplication::~QPEApplication() 884QPEApplication::~QPEApplication()
877{ 885{
878 ungrabKeyboard(); 886 ungrabKeyboard();
879#if defined(Q_WS_QWS) && !defined(QT_NO_COP) 887#if defined(Q_WS_QWS) && !defined(QT_NO_COP)
880 // Need to delete QCopChannels early, since the display will 888 // Need to delete QCopChannels early, since the display will
881 // be gone by the time we get to ~QObject(). 889 // be gone by the time we get to ~QObject().
882 delete sysChannel; 890 delete sysChannel;
883 delete pidChannel; 891 delete pidChannel;
884#endif 892#endif
885 893
886 delete d; 894 delete d;
887} 895}
888 896
889/*! 897/*!
890 Returns <tt>$OPIEDIR/</tt>. 898 Returns <tt>$OPIEDIR/</tt>.
891*/ 899*/
892QString QPEApplication::qpeDir() 900QString QPEApplication::qpeDir()
893{ 901{
894 const char * base = getenv( "OPIEDIR" ); 902 const char * base = getenv( "OPIEDIR" );
895 if ( base ) 903 if ( base )
896 return QString( base ) + "/"; 904 return QString( base ) + "/";
897 905
898 return QString( "../" ); 906 return QString( "../" );
899} 907}
900 908
901/*! 909/*!
902 Returns the user's current Document directory. There is a trailing "/". 910 Returns the user's current Document directory. There is a trailing "/".
903 .. well, it does now,, and there's no trailing '/' 911 .. well, it does now,, and there's no trailing '/'
904*/ 912*/
905QString QPEApplication::documentDir() 913QString QPEApplication::documentDir()
906{ 914{
907 const char* base = getenv( "HOME"); 915 const char* base = getenv( "HOME");
908 if ( base ) 916 if ( base )
909 return QString( base ) + "/Documents"; 917 return QString( base ) + "/Documents";
910 918
911 return QString( "../Documents" ); 919 return QString( "../Documents" );
912} 920}
913 921
914static int deforient = -1; 922static int deforient = -1;
915 923
916/*! 924/*!
917 \internal 925 \internal
918*/ 926*/
919int QPEApplication::defaultRotation() 927int QPEApplication::defaultRotation()
920{ 928{
921 if ( deforient < 0 ) { 929 if ( deforient < 0 ) {
922 QString d = getenv( "QWS_DISPLAY" ); 930 QString d = getenv( "QWS_DISPLAY" );
923 if ( d.contains( "Rot90" ) ) { 931 if ( d.contains( "Rot90" ) ) {
924 deforient = 90; 932 deforient = 90;
925 } 933 }
926 else if ( d.contains( "Rot180" ) ) { 934 else if ( d.contains( "Rot180" ) ) {
927 deforient = 180; 935 deforient = 180;
928 } 936 }
929 else if ( d.contains( "Rot270" ) ) { 937 else if ( d.contains( "Rot270" ) ) {
930 deforient = 270; 938 deforient = 270;
931 } 939 }
932 else { 940 else {
933 deforient = 0; 941 deforient = 0;
934 } 942 }
935 } 943 }
936 return deforient; 944 return deforient;
937} 945}
938 946
939/*! 947/*!
940 \internal 948 \internal
941*/ 949*/
942void QPEApplication::setDefaultRotation( int r ) 950void QPEApplication::setDefaultRotation( int r )
943{ 951{
944 if ( qApp->type() == GuiServer ) { 952 if ( qApp->type() == GuiServer ) {
945 deforient = r; 953 deforient = r;
946 setenv( "QWS_DISPLAY", QString( "Transformed:Rot%1:0" ).arg( r ).latin1(), 1 ); 954 setenv( "QWS_DISPLAY", QString( "Transformed:Rot%1:0" ).arg( r ).latin1(), 1 );
947 Config config("qpe"); 955 Config config("qpe");
948 config.setGroup( "Rotation" ); 956 config.setGroup( "Rotation" );
949 config.writeEntry( "Rot", r ); 957 config.writeEntry( "Rot", r );
950 } 958 }
951 else { 959 else {
952#ifndef QT_NO_COP 960#ifndef QT_NO_COP
953 { QCopEnvelope e( "QPE/System", "setDefaultRotation(int)" ); 961 { QCopEnvelope e( "QPE/System", "setDefaultRotation(int)" );
954 e << r; 962 e << r;
955 } 963 }
956#endif 964#endif
957 965
958 } 966 }
959} 967}
960 968
961 969
962/*! 970/*!
963 \internal 971 \internal
964*/ 972*/
965void QPEApplication::applyStyle() 973void QPEApplication::applyStyle()
966{ 974{
967 Config config( "qpe" ); 975 Config config( "qpe" );
968 config.setGroup( "Appearance" ); 976 config.setGroup( "Appearance" );
969 977
970 #if QT_VERSION > 233 978 #if QT_VERSION > 233
971 // don't block ourselves ... 979 // don't block ourselves ...
972 Opie::force_appearance = 0; 980 Opie::force_appearance = 0;
973 981
974 static QString appname = Opie::binaryName ( ); 982 static QString appname = Opie::binaryName ( );
975 983
976 QStringList ex = config. readListEntry ( "NoStyle", ';' ); 984 QStringList ex = config. readListEntry ( "NoStyle", ';' );
977 int nostyle = 0; 985 int nostyle = 0;
978 for ( QStringList::Iterator it = ex. begin ( ); it != ex. end ( ); ++it ) { 986 for ( QStringList::Iterator it = ex. begin ( ); it != ex. end ( ); ++it ) {
979 if ( QRegExp (( *it ). mid ( 1 ), false, true ). find ( appname, 0 ) >= 0 ) { 987 if ( QRegExp (( *it ). mid ( 1 ), false, true ). find ( appname, 0 ) >= 0 ) {
980 nostyle = ( *it ). left ( 1 ). toInt ( 0, 32 ); 988 nostyle = ( *it ). left ( 1 ). toInt ( 0, 32 );
981 break; 989 break;
982 } 990 }
983 } 991 }
984 992
985 // Widget style 993 // Widget style
986 QString style = config.readEntry( "Style", "Light" ); 994 QString style = config.readEntry( "Style", "FlatStyle" );
987 995
988 // don't set a custom style 996 // don't set a custom style
989 if ( nostyle & Opie::Force_Style ) 997 if ( nostyle & Opie::Force_Style )
990 style = "Light"; 998 style = "FlatStyle";
991 999
992 internalSetStyle ( style ); 1000 internalSetStyle ( style );
993 1001
994 // Colors 1002 // Colors - from /etc/colors/Liquid.scheme
995 QColor bgcolor( config.readEntry( "Background", "#E5E1D5" ) ); 1003 QColor bgcolor( config.readEntry( "Background", "#E0E0E0" ) );
996 QColor btncolor( config.readEntry( "Button", "#D6CDBB" ) ); 1004 QColor btncolor( config.readEntry( "Button", "#96c8fa" ) );
997 QPalette pal( btncolor, bgcolor ); 1005 QPalette pal( btncolor, bgcolor );
998 QString color = config.readEntry( "Highlight", "#800000" ); 1006 QString color = config.readEntry( "Highlight", "#73adef" );
999 pal.setColor( QColorGroup::Highlight, QColor( color ) ); 1007 pal.setColor( QColorGroup::Highlight, QColor( color ) );
1000 color = config.readEntry( "HighlightedText", "#FFFFFF" ); 1008 color = config.readEntry( "HighlightedText", "#FFFFFF" );
1001 pal.setColor( QColorGroup::HighlightedText, QColor( color ) ); 1009 pal.setColor( QColorGroup::HighlightedText, QColor( color ) );
1002 color = config.readEntry( "Text", "#000000" ); 1010 color = config.readEntry( "Text", "#000000" );
1003 pal.setColor( QColorGroup::Text, QColor( color ) ); 1011 pal.setColor( QColorGroup::Text, QColor( color ) );
1004 color = config.readEntry( "ButtonText", "#000000" ); 1012 color = config.readEntry( "ButtonText", "#000000" );
1005 pal.setColor( QPalette::Active, QColorGroup::ButtonText, QColor( color ) ); 1013 pal.setColor( QPalette::Active, QColorGroup::ButtonText, QColor( color ) );
1006 color = config.readEntry( "Base", "#FFFFFF" ); 1014 color = config.readEntry( "Base", "#FFFFFF" );
1007 pal.setColor( QColorGroup::Base, QColor( color ) ); 1015 pal.setColor( QColorGroup::Base, QColor( color ) );
1008 1016
1009 pal.setColor( QPalette::Disabled, QColorGroup::Text, 1017 pal.setColor( QPalette::Disabled, QColorGroup::Text,
1010 pal.color( QPalette::Active, QColorGroup::Background ).dark() ); 1018 pal.color( QPalette::Active, QColorGroup::Background ).dark() );
1011 1019
1012 setPalette( pal, TRUE ); 1020 setPalette( pal, TRUE );
1013 1021
1014 // Window Decoration 1022 // Window Decoration
1015 QString dec = config.readEntry( "Decoration", "Qtopia" ); 1023 QString dec = config.readEntry( "Decoration", "Flat" );
1016 1024
1017 // don't set a custom deco 1025 // don't set a custom deco
1018 if ( nostyle & Opie::Force_Decoration ) 1026 if ( nostyle & Opie::Force_Decoration )
1019 dec = ""; 1027 dec = "";
1020 1028
1021 //qDebug ( "Setting Deco: %s -- old %s (%d)", dec.latin1(), d-> decorationName.latin1(), nostyle); 1029 //qDebug ( "Setting Deco: %s -- old %s (%d)", dec.latin1(), d-> decorationName.latin1(), nostyle);
1022 1030
1023 if ( dec != d->decorationName ) { 1031 if ( dec != d->decorationName ) {
1024 qwsSetDecoration( new QPEDecoration( dec ) ); 1032 qwsSetDecoration( new QPEDecoration( dec ) );
1025 d->decorationName = dec; 1033 d->decorationName = dec;
1026 } 1034 }
1027 1035
1028 // Font 1036 // Font
1029 QString ff = config.readEntry( "FontFamily", font().family() ); 1037 QString ff = config.readEntry( "FontFamily", font().family() );
1030 int fs = config.readNumEntry( "FontSize", font().pointSize() ); 1038 int fs = config.readNumEntry( "FontSize", font().pointSize() );
1031 1039
1032 // don't set a custom font 1040 // don't set a custom font
1033 if ( nostyle & Opie::Force_Font ) { 1041 if ( nostyle & Opie::Force_Font ) {
1034 ff = "Vera"; 1042 ff = "Vera";
1035 fs = 10; 1043 fs = 10;
1036 } 1044 }
1037 1045
1038 setFont ( QFont ( ff, fs ), true ); 1046 setFont ( QFont ( ff, fs ), true );
1039 1047
1040 // revert to global blocking policy ... 1048 // revert to global blocking policy ...
1041 Opie::force_appearance = config. readBoolEntry ( "ForceStyle", false ) ? Opie::Force_All : Opie::Force_None; 1049 Opie::force_appearance = config. readBoolEntry ( "ForceStyle", false ) ? Opie::Force_All : Opie::Force_None;
1042 Opie::force_appearance &= ~nostyle; 1050 Opie::force_appearance &= ~nostyle;
1043 #endif 1051 #endif
1044} 1052}
1045 1053
1046void QPEApplication::systemMessage( const QCString& msg, const QByteArray& data ) 1054void QPEApplication::systemMessage( const QCString& msg, const QByteArray& data )
1047{ 1055{
1048#ifdef Q_WS_QWS 1056#ifdef Q_WS_QWS
1049 QDataStream stream( data, IO_ReadOnly ); 1057 QDataStream stream( data, IO_ReadOnly );
1050 if ( msg == "applyStyle()" ) { 1058 if ( msg == "applyStyle()" ) {
1051 applyStyle(); 1059 applyStyle();
1052 } 1060 }
1053 else if ( msg == "toggleApplicationMenu()" ) { 1061 else if ( msg == "toggleApplicationMenu()" ) {
1054 QWidget *active = activeWindow ( ); 1062 QWidget *active = activeWindow ( );
1055 1063
1056 if ( active ) { 1064 if ( active ) {
1057 QPEMenuToolFocusManager *man = QPEMenuToolFocusManager::manager ( ); 1065 QPEMenuToolFocusManager *man = QPEMenuToolFocusManager::manager ( );
1058 bool oldactive = man-> isActive ( ); 1066 bool oldactive = man-> isActive ( );
1059 1067
1060 man-> setActive( !man-> isActive() ); 1068 man-> setActive( !man-> isActive() );
1061 1069
1062 if ( !oldactive && !man-> isActive ( )) { // no menubar to toggle -> try O-Menu 1070 if ( !oldactive && !man-> isActive ( )) { // no menubar to toggle -> try O-Menu
1063 QCopEnvelope e ( "QPE/TaskBar", "toggleStartMenu()" ); 1071 QCopEnvelope e ( "QPE/TaskBar", "toggleStartMenu()" );
1064 } 1072 }
1065 } 1073 }
1066 } 1074 }
1067 else if ( msg == "setDefaultRotation(int)" ) { 1075 else if ( msg == "setDefaultRotation(int)" ) {
1068 if ( type() == GuiServer ) { 1076 if ( type() == GuiServer ) {
1069 int r; 1077 int r;
1070 stream >> r; 1078 stream >> r;
1071 setDefaultRotation( r ); 1079 setDefaultRotation( r );
1072 } 1080 }
1073 } 1081 }
1074 else if ( msg == "setCurrentRotation(int)" ) { 1082 else if ( msg == "setCurrentRotation(int)" ) {
1075 int r; 1083 int r;
1076 stream >> r; 1084 stream >> r;
1077 setCurrentRotation( r ); 1085 setCurrentRotation( r );
1078 } 1086 }
1079 else if ( msg == "shutdown()" ) { 1087 else if ( msg == "shutdown()" ) {
1080 if ( type() == GuiServer ) 1088 if ( type() == GuiServer )
1081 shutdown(); 1089 shutdown();
1082 } 1090 }
1083 else if ( msg == "quit()" ) { 1091 else if ( msg == "quit()" ) {
1084 if ( type() != GuiServer ) 1092 if ( type() != GuiServer )
1085 tryQuit(); 1093 tryQuit();
1086 } 1094 }
1087 else if ( msg == "forceQuit()" ) { 1095 else if ( msg == "forceQuit()" ) {
1088 if ( type() != GuiServer ) 1096 if ( type() != GuiServer )
1089 quit(); 1097 quit();
1090 } 1098 }
1091 else if ( msg == "restart()" ) { 1099 else if ( msg == "restart()" ) {
1092 if ( type() == GuiServer ) 1100 if ( type() == GuiServer )
1093 restart(); 1101 restart();
1094 } 1102 }
1095 else if ( msg == "language(QString)" ) { 1103 else if ( msg == "language(QString)" ) {
1096 if ( type() == GuiServer ) { 1104 if ( type() == GuiServer ) {
1097 QString l; 1105 QString l;
1098 stream >> l; 1106 stream >> l;
1099 QString cl = getenv( "LANG" ); 1107 QString cl = getenv( "LANG" );
1100 if ( cl != l ) { 1108 if ( cl != l ) {
1101 if ( l.isNull() ) 1109 if ( l.isNull() )
1102 unsetenv( "LANG" ); 1110 unsetenv( "LANG" );
1103 else 1111 else
1104 setenv( "LANG", l.latin1(), 1 ); 1112 setenv( "LANG", l.latin1(), 1 );
1105 restart(); 1113 restart();
1106 } 1114 }
1107 } 1115 }
1108 } 1116 }
1109 else if ( msg == "timeChange(QString)" ) { 1117 else if ( msg == "timeChange(QString)" ) {
1110 QString t; 1118 QString t;
1111 stream >> t; 1119 stream >> t;
1112 if ( t.isNull() ) 1120 if ( t.isNull() )
1113 unsetenv( "TZ" ); 1121 unsetenv( "TZ" );
1114 else 1122 else
1115 setenv( "TZ", t.latin1(), 1 ); 1123 setenv( "TZ", t.latin1(), 1 );
1116 // emit the signal so everyone else knows... 1124 // emit the signal so everyone else knows...
1117 emit timeChanged(); 1125 emit timeChanged();
1118 } 1126 }
1119 else if ( msg == "execute(QString)" ) { 1127 else if ( msg == "execute(QString)" ) {
1120 if ( type() == GuiServer ) { 1128 if ( type() == GuiServer ) {
1121 QString t; 1129 QString t;
1122 stream >> t; 1130 stream >> t;
1123 Global::execute( t ); 1131 Global::execute( t );
1124 } 1132 }
1125 } 1133 }
1126 else if ( msg == "execute(QString,QString)" ) { 1134 else if ( msg == "execute(QString,QString)" ) {
1127 if ( type() == GuiServer ) { 1135 if ( type() == GuiServer ) {
1128 QString t, d; 1136 QString t, d;
1129 stream >> t >> d; 1137 stream >> t >> d;
1130 Global::execute( t, d ); 1138 Global::execute( t, d );
1131 } 1139 }
1132 } 1140 }
1133 else if ( msg == "addAlarm(QDateTime,QCString,QCString,int)" ) { 1141 else if ( msg == "addAlarm(QDateTime,QCString,QCString,int)" ) {
1134 if ( type() == GuiServer ) { 1142 if ( type() == GuiServer ) {
1135 QDateTime when; 1143 QDateTime when;
1136 QCString channel, message; 1144 QCString channel, message;
1137 int data; 1145 int data;
1138 stream >> when >> channel >> message >> data; 1146 stream >> when >> channel >> message >> data;
1139 AlarmServer::addAlarm( when, channel, message, data ); 1147 AlarmServer::addAlarm( when, channel, message, data );
1140 } 1148 }
1141 } 1149 }
1142 else if ( msg == "deleteAlarm(QDateTime,QCString,QCString,int)" ) { 1150 else if ( msg == "deleteAlarm(QDateTime,QCString,QCString,int)" ) {
1143 if ( type() == GuiServer ) { 1151 if ( type() == GuiServer ) {
1144 QDateTime when; 1152 QDateTime when;
1145 QCString channel, message; 1153 QCString channel, message;
1146 int data; 1154 int data;
1147 stream >> when >> channel >> message >> data; 1155 stream >> when >> channel >> message >> data;
1148 AlarmServer::deleteAlarm( when, channel, message, data ); 1156 AlarmServer::deleteAlarm( when, channel, message, data );
1149 } 1157 }
1150 } 1158 }
1151 else if ( msg == "clockChange(bool)" ) { 1159 else if ( msg == "clockChange(bool)" ) {
1152 int tmp; 1160 int tmp;
1153 stream >> tmp; 1161 stream >> tmp;
1154 emit clockChanged( tmp ); 1162 emit clockChanged( tmp );
1155 } 1163 }
1156 else if ( msg == "weekChange(bool)" ) { 1164 else if ( msg == "weekChange(bool)" ) {
1157 int tmp; 1165 int tmp;
1158 stream >> tmp; 1166 stream >> tmp;
1159 emit weekChanged( tmp ); 1167 emit weekChanged( tmp );
1160 } 1168 }
1161 else if ( msg == "setDateFormat(DateFormat)" ) { 1169 else if ( msg == "setDateFormat(DateFormat)" ) {
1162 DateFormat tmp; 1170 DateFormat tmp;
1163 stream >> tmp; 1171 stream >> tmp;
1164 emit dateFormatChanged( tmp ); 1172 emit dateFormatChanged( tmp );
1165 } 1173 }
1166 else if ( msg == "setVolume(int,int)" ) { 1174 else if ( msg == "setVolume(int,int)" ) {
1167 int t, v; 1175 int t, v;
1168 stream >> t >> v; 1176 stream >> t >> v;
1169 setVolume( t, v ); 1177 setVolume( t, v );
1170 emit volumeChanged( muted ); 1178 emit volumeChanged( muted );
1171 } 1179 }
1172 else if ( msg == "volumeChange(bool)" ) { 1180 else if ( msg == "volumeChange(bool)" ) {
1173 stream >> muted; 1181 stream >> muted;
1174 setVolume(); 1182 setVolume();
1175 emit volumeChanged( muted ); 1183 emit volumeChanged( muted );
1176 } 1184 }
1177 else if ( msg == "setMic(int,int)" ) { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com> 1185 else if ( msg == "setMic(int,int)" ) { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com>
1178 int t, v; 1186 int t, v;
1179 stream >> t >> v; 1187 stream >> t >> v;
1180 setMic( t, v ); 1188 setMic( t, v );
1181 emit micChanged( micMuted ); 1189 emit micChanged( micMuted );
1182 } 1190 }
1183 else if ( msg == "micChange(bool)" ) { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com> 1191 else if ( msg == "micChange(bool)" ) { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com>
1184 stream >> micMuted; 1192 stream >> micMuted;
1185 setMic(); 1193 setMic();
1186 emit micChanged( micMuted ); 1194 emit micChanged( micMuted );
1187 } 1195 }
1188 else if ( msg == "setBass(int,int)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org> 1196 else if ( msg == "setBass(int,int)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org>
1189 int t, v; 1197 int t, v;
1190 stream >> t >> v; 1198 stream >> t >> v;
1191 setBass( t, v ); 1199 setBass( t, v );
1192 } 1200 }
1193 else if ( msg == "bassChange(bool)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org> 1201 else if ( msg == "bassChange(bool)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org>
1194 setBass(); 1202 setBass();
1195 } 1203 }
1196 else if ( msg == "setTreble(int,int)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org> 1204 else if ( msg == "setTreble(int,int)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org>
1197 int t, v; 1205 int t, v;
1198 stream >> t >> v; 1206 stream >> t >> v;
1199 setTreble( t, v ); 1207 setTreble( t, v );
1200 } 1208 }
1201 else if ( msg == "trebleChange(bool)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org> 1209 else if ( msg == "trebleChange(bool)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org>
1202 setTreble(); 1210 setTreble();
1203 } 1211 }
1204 1212
1205 1213
1206 1214
1207#endif 1215#endif
1208} 1216}
1209 1217
1210/*! 1218/*!
1211 \internal 1219 \internal
1212*/ 1220*/
1213bool QPEApplication::raiseAppropriateWindow() 1221bool QPEApplication::raiseAppropriateWindow()
1214{ 1222{
1215 bool r = FALSE; 1223 bool r = FALSE;
1216 // ########## raise()ing main window should raise and set active 1224 // ########## raise()ing main window should raise and set active
1217 // ########## it and then all childen. This belongs in Qt/Embedded 1225 // ########## it and then all childen. This belongs in Qt/Embedded
1218 QWidget *top = d->qpe_main_widget; 1226 QWidget *top = d->qpe_main_widget;
1219 if ( !top ) 1227 if ( !top )
1220 top = mainWidget(); 1228 top = mainWidget();
1221 if ( top && d->keep_running ) { 1229 if ( top && d->keep_running ) {
1222 if ( top->isVisible() ) 1230 if ( top->isVisible() )
1223 r = TRUE; 1231 r = TRUE;
1224 else if (d->preloaded) { 1232 else if (d->preloaded) {
1225 // We are preloaded and not visible.. pretend we just started.. 1233 // We are preloaded and not visible.. pretend we just started..
1226 QCopEnvelope e("QPE/System", "fastAppShowing(QString)"); 1234 QCopEnvelope e("QPE/System", "fastAppShowing(QString)");
1227 e << d->appName; 1235 e << d->appName;
1228 } 1236 }
1229 1237
1230 d->show_mx(top, d->nomaximize); 1238 d->show_mx(top, d->nomaximize);
1231 top->raise(); 1239 top->raise();
1232 top->setActiveWindow(); 1240 top->setActiveWindow();
1233 } 1241 }
1234 QWidget *topm = activeModalWidget(); 1242 QWidget *topm = activeModalWidget();
1235 if ( topm && topm != top ) { 1243 if ( topm && topm != top ) {
1236 topm->show(); 1244 topm->show();
1237 topm->raise(); 1245 topm->raise();
1238 topm->setActiveWindow(); 1246 topm->setActiveWindow();
1239 // If we haven't already handled the fastAppShowing message 1247 // If we haven't already handled the fastAppShowing message
1240 if (!top && d->preloaded) { 1248 if (!top && d->preloaded) {
1241 QCopEnvelope e("QPE/System", "fastAppShowing(QString)"); 1249 QCopEnvelope e("QPE/System", "fastAppShowing(QString)");
1242 e << d->appName; 1250 e << d->appName;
1243 } 1251 }
1244 r = FALSE; 1252 r = FALSE;
1245 } 1253 }
1246 return r; 1254 return r;
1247} 1255}
1248 1256
1249void QPEApplication::pidMessage( const QCString& msg, const QByteArray& data) 1257void QPEApplication::pidMessage( const QCString& msg, const QByteArray& data)
1250{ 1258{
1251#ifdef Q_WS_QWS 1259#ifdef Q_WS_QWS
1252 1260
1253 if ( msg == "quit()" ) { 1261 if ( msg == "quit()" ) {
1254 tryQuit(); 1262 tryQuit();
1255 } 1263 }
1256 else if ( msg == "quitIfInvisible()" ) { 1264 else if ( msg == "quitIfInvisible()" ) {
1257 if ( d->qpe_main_widget && !d->qpe_main_widget->isVisible() ) 1265 if ( d->qpe_main_widget && !d->qpe_main_widget->isVisible() )
1258 quit(); 1266 quit();
1259 } 1267 }
1260 else if ( msg == "close()" ) { 1268 else if ( msg == "close()" ) {
1261 hideOrQuit(); 1269 hideOrQuit();
1262 } 1270 }
1263 else if ( msg == "disablePreload()" ) { 1271 else if ( msg == "disablePreload()" ) {
1264 d->preloaded = FALSE; 1272 d->preloaded = FALSE;
1265 d->keep_running = TRUE; 1273 d->keep_running = TRUE;
1266 /* so that quit will quit */ 1274 /* so that quit will quit */
1267 } 1275 }
1268 else if ( msg == "enablePreload()" ) { 1276 else if ( msg == "enablePreload()" ) {
1269 if (d->qpe_main_widget) 1277 if (d->qpe_main_widget)
1270 d->preloaded = TRUE; 1278 d->preloaded = TRUE;
1271 d->keep_running = TRUE; 1279 d->keep_running = TRUE;
1272 /* so next quit won't quit */ 1280 /* so next quit won't quit */
1273 } 1281 }
1274 else if ( msg == "raise()" ) { 1282 else if ( msg == "raise()" ) {
1275 d->keep_running = TRUE; 1283 d->keep_running = TRUE;
1276 d->notbusysent = FALSE; 1284 d->notbusysent = FALSE;
1277 raiseAppropriateWindow(); 1285 raiseAppropriateWindow();
1278 // Tell the system we're still chugging along... 1286 // Tell the system we're still chugging along...
1279 QCopEnvelope e("QPE/System", "appRaised(QString)"); 1287 QCopEnvelope e("QPE/System", "appRaised(QString)");
1280 e << d->appName; 1288 e << d->appName;
1281 } 1289 }
1282 else if ( msg == "flush()" ) { 1290 else if ( msg == "flush()" ) {
1283 emit flush(); 1291 emit flush();
1284 // we need to tell the desktop 1292 // we need to tell the desktop
1285 QCopEnvelope e( "QPE/Desktop", "flushDone(QString)" ); 1293 QCopEnvelope e( "QPE/Desktop", "flushDone(QString)" );
1286 e << d->appName; 1294 e << d->appName;
1287 } 1295 }
1288 else if ( msg == "reload()" ) { 1296 else if ( msg == "reload()" ) {
1289 emit reload(); 1297 emit reload();
1290 } 1298 }
1291 else if ( msg == "setDocument(QString)" ) { 1299 else if ( msg == "setDocument(QString)" ) {
1292 d->keep_running = TRUE; 1300 d->keep_running = TRUE;
1293 QDataStream stream( data, IO_ReadOnly ); 1301 QDataStream stream( data, IO_ReadOnly );
1294 QString doc; 1302 QString doc;
1295 stream >> doc; 1303 stream >> doc;
1296 QWidget *mw = mainWidget(); 1304 QWidget *mw = mainWidget();
1297 if ( !mw ) 1305 if ( !mw )
1298 mw = d->qpe_main_widget; 1306 mw = d->qpe_main_widget;
1299 if ( mw ) 1307 if ( mw )
1300 Global::setDocument( mw, doc ); 1308 Global::setDocument( mw, doc );
1309 } else {
1310 bool p = d->keep_running;
1311 d->keep_running = FALSE;
1312 emit appMessage( msg, data);
1313 if ( d->keep_running ) {
1314 d->notbusysent = FALSE;
1315 raiseAppropriateWindow();
1316 if ( !p ) {
1317 // Tell the system we're still chugging along...
1318#ifndef QT_NO_COP
1319 QCopEnvelope e("QPE/System", "appRaised(QString)");
1320 e << d->appName;
1321#endif
1322 }
1323 }
1324 if ( p )
1325 d->keep_running = p;
1301 } 1326 }
1302 else if ( msg == "nextView()" ) {
1303 qDebug("got nextView()");
1304 /*
1305 if ( raiseAppropriateWindow() )
1306 */
1307 emit appMessage( msg, data);
1308 }
1309 else {
1310 emit appMessage( msg, data);
1311 }
1312
1313#endif 1327#endif
1314} 1328}
1315 1329
1316 1330
1317/*! 1331/*!
1318 Sets widget \a mw as the mainWidget() and shows it. For small windows, 1332 Sets widget \a mw as the mainWidget() and shows it. For small windows,
1319 consider passing TRUE for \a nomaximize rather than the default FALSE. 1333 consider passing TRUE for \a nomaximize rather than the default FALSE.
1320 1334
1321 \sa showMainDocumentWidget() 1335 \sa showMainDocumentWidget()
1322*/ 1336*/
1323void QPEApplication::showMainWidget( QWidget* mw, bool nomaximize ) 1337void QPEApplication::showMainWidget( QWidget* mw, bool nomaximize )
1324{ 1338{
1325 d->show(mw, nomaximize ); 1339 d->show(mw, nomaximize );
1326} 1340}
1327 1341
1328/*! 1342/*!
1329 Sets widget \a mw as the mainWidget() and shows it. For small windows, 1343 Sets widget \a mw as the mainWidget() and shows it. For small windows,
1330 consider passing TRUE for \a nomaximize rather than the default FALSE. 1344 consider passing TRUE for \a nomaximize rather than the default FALSE.
1331 1345
1332 This calls designates the application as 1346 This calls designates the application as
1333 a \link docwidget.html document-oriented\endlink application. 1347 a \link docwidget.html document-oriented\endlink application.
1334 1348
1335 The \a mw widget \e must have this slot: setDocument(const QString&). 1349 The \a mw widget \e must have this slot: setDocument(const QString&).
1336 1350
1337 \sa showMainWidget() 1351 \sa showMainWidget()
1338*/ 1352*/
1339void QPEApplication::showMainDocumentWidget( QWidget* mw, bool nomaximize ) 1353void QPEApplication::showMainDocumentWidget( QWidget* mw, bool nomaximize )
1340{ 1354{
1341 if ( mw && argc() == 2 ) 1355 if ( mw && argc() == 2 )
1342 Global::setDocument( mw, QString::fromUtf8(argv()[1]) ); 1356 Global::setDocument( mw, QString::fromUtf8(argv()[1]) );
1343 1357
1344 1358
1345 d->show(mw, nomaximize ); 1359 d->show(mw, nomaximize );
1346} 1360}
1347 1361
1348 1362
1349/*! 1363/*!
1350 If an application is started via a \link qcop.html QCop\endlink 1364 If an application is started via a \link qcop.html QCop\endlink
1351 message, the application will process the \link qcop.html 1365 message, the application will process the \link qcop.html
1352 QCop\endlink message and then quit. If the application calls this 1366 QCop\endlink message and then quit. If the application calls this
1353 function while processing a \link qcop.html QCop\endlink message, 1367 function while processing a \link qcop.html QCop\endlink message,
1354 after processing its outstanding \link qcop.html QCop\endlink 1368 after processing its outstanding \link qcop.html QCop\endlink
1355 messages the application will start 'properly' and show itself. 1369 messages the application will start 'properly' and show itself.
1356 1370
1357 \sa keepRunning() 1371 \sa keepRunning()
1358*/ 1372*/
1359void QPEApplication::setKeepRunning() 1373void QPEApplication::setKeepRunning()
1360{ 1374{
1361 if ( qApp && qApp->inherits( "QPEApplication" ) ) { 1375 if ( qApp && qApp->inherits( "QPEApplication" ) ) {
1362 QPEApplication * qpeApp = ( QPEApplication* ) qApp; 1376 QPEApplication * qpeApp = ( QPEApplication* ) qApp;
1363 qpeApp->d->keep_running = TRUE; 1377 qpeApp->d->keep_running = TRUE;
1364 } 1378 }
1365} 1379}
1366 1380
1367/*! 1381/*!
1368 Returns TRUE if the application will quit after processing the 1382 Returns TRUE if the application will quit after processing the
1369 current list of qcop messages; otherwise returns FALSE. 1383 current list of qcop messages; otherwise returns FALSE.
1370 1384
1371 \sa setKeepRunning() 1385 \sa setKeepRunning()
1372*/ 1386*/
1373bool QPEApplication::keepRunning() const 1387bool QPEApplication::keepRunning() const
1374{ 1388{
1375 return d->keep_running; 1389 return d->keep_running;
1376} 1390}
1377 1391
1378/*! 1392/*!
1379 \internal 1393 \internal
1380*/ 1394*/
1381void QPEApplication::internalSetStyle( const QString &style ) 1395void QPEApplication::internalSetStyle( const QString &style )
1382{ 1396{
1383#if QT_VERSION >= 300 1397#if QT_VERSION >= 300
1384 if ( style == "QPE" ) { 1398 if ( style == "QPE" ) {
1385 setStyle( new QPEStyle ); 1399 setStyle( new QPEStyle );
1386 } 1400 }
1387 else { 1401 else {
1388 QStyle *s = QStyleFactory::create( style ); 1402 QStyle *s = QStyleFactory::create( style );
1389 if ( s ) 1403 if ( s )
1390 setStyle( s ); 1404 setStyle( s );
1391 } 1405 }
1392#else 1406#else
1393 if ( style == "Windows" ) { 1407 if ( style == "Windows" ) {
1394 setStyle( new QWindowsStyle ); 1408 setStyle( new QWindowsStyle );
1395 } 1409 }
1396 else if ( style == "QPE" ) { 1410 else if ( style == "QPE" ) {
1397 setStyle( new QPEStyle ); 1411 setStyle( new QPEStyle );
1398 } 1412 }
1399 else if ( style == "Light" ) { 1413 else if ( style == "Light" ) {
1400 setStyle( new LightStyle ); 1414 setStyle( new LightStyle );
1401 } 1415 }
1402#ifndef QT_NO_STYLE_PLATINUM 1416#ifndef QT_NO_STYLE_PLATINUM
1403 else if ( style == "Platinum" ) { 1417 else if ( style == "Platinum" ) {
1404 setStyle( new QPlatinumStyle ); 1418 setStyle( new QPlatinumStyle );
1405 } 1419 }
1406#endif 1420#endif
1407#ifndef QT_NO_STYLE_MOTIF 1421#ifndef QT_NO_STYLE_MOTIF
1408 else if ( style == "Motif" ) { 1422 else if ( style == "Motif" ) {
1409 setStyle( new QMotifStyle ); 1423 setStyle( new QMotifStyle );
1410 } 1424 }
1411#endif 1425#endif
1412#ifndef QT_NO_STYLE_MOTIFPLUS 1426#ifndef QT_NO_STYLE_MOTIFPLUS
1413 else if ( style == "MotifPlus" ) { 1427 else if ( style == "MotifPlus" ) {
1414 setStyle( new QMotifPlusStyle ); 1428 setStyle( new QMotifPlusStyle );
1415 } 1429 }
1416#endif 1430#endif
1417 1431
1418 else { 1432 else {
1419 QStyle *sty = 0; 1433 QStyle *sty = 0;
1420 QString path = QPEApplication::qpeDir ( ) + "/plugins/styles/"; 1434 QString path = QPEApplication::qpeDir ( ) + "/plugins/styles/";
1421 1435
1422 if ( style. find ( ".so" ) > 0 ) 1436 if ( style. find ( ".so" ) > 0 )
1423 path += style; 1437 path += style;
1424 else 1438 else
1425 path = path + "lib" + style. lower ( ) + ".so"; // compatibility 1439 path = path + "lib" + style. lower ( ) + ".so"; // compatibility
1426 1440
1427 static QLibrary *lastlib = 0; 1441 static QLibrary *lastlib = 0;
1428 static StyleInterface *lastiface = 0; 1442 static StyleInterface *lastiface = 0;
1429 1443
1430 QLibrary *lib = new QLibrary ( path ); 1444 QLibrary *lib = new QLibrary ( path );
1431 StyleInterface *iface = 0; 1445 StyleInterface *iface = 0;
1432 1446
1433 if (( lib-> queryInterface ( IID_Style, ( QUnknownInterface ** ) &iface ) == QS_OK ) && iface ) 1447 if (( lib-> queryInterface ( IID_Style, ( QUnknownInterface ** ) &iface ) == QS_OK ) && iface )
1434 sty = iface-> style ( ); 1448 sty = iface-> style ( );
1435 1449
1436 if ( sty ) { 1450 if ( sty ) {
1437 setStyle ( sty ); 1451 setStyle ( sty );
1438 1452
1439 if ( lastiface ) 1453 if ( lastiface )
1440 lastiface-> release ( ); 1454 lastiface-> release ( );
1441 lastiface = iface; 1455 lastiface = iface;
1442 1456
1443 if ( lastlib ) { 1457 if ( lastlib ) {
1444 lastlib-> unload ( ); 1458 lastlib-> unload ( );
1445 delete lastlib; 1459 delete lastlib;
1446 } 1460 }
1447 lastlib = lib; 1461 lastlib = lib;
1448 } 1462 }
1449 else { 1463 else {
1450 if ( iface ) 1464 if ( iface )
1451 iface-> release ( ); 1465 iface-> release ( );
1452 delete lib; 1466 delete lib;
1453 1467
1454 setStyle ( new LightStyle ( )); 1468 setStyle ( new LightStyle ( ));
1455 } 1469 }
1456 } 1470 }
1457#endif 1471#endif
1458} 1472}
1459 1473
1460/*! 1474/*!
1461 \internal 1475 \internal
1462*/ 1476*/
1463void QPEApplication::prepareForTermination( bool willrestart ) 1477void QPEApplication::prepareForTermination( bool willrestart )
1464{ 1478{
1465 if ( willrestart ) { 1479 if ( willrestart ) {
1466 // Draw a big wait icon, the image can be altered in later revisions 1480 // Draw a big wait icon, the image can be altered in later revisions
1467 // QWidget *d = QApplication::desktop(); 1481 // QWidget *d = QApplication::desktop();
1468 QImage img = Resource::loadImage( "launcher/new_wait" ); 1482 QImage img = Resource::loadImage( "launcher/new_wait" );
1469 QPixmap pix; 1483 QPixmap pix;
1470 pix.convertFromImage( img.smoothScale( 1 * img.width(), 1 * img.height() ) ); 1484 pix.convertFromImage( img.smoothScale( 1 * img.width(), 1 * img.height() ) );
1471 QLabel *lblWait = new QLabel( 0, "wait hack!", QWidget::WStyle_Customize | 1485 QLabel *lblWait = new QLabel( 0, "wait hack!", QWidget::WStyle_Customize |
1472 QWidget::WStyle_NoBorder | QWidget::WStyle_Tool ); 1486 QWidget::WStyle_NoBorder | QWidget::WStyle_Tool );
1473 lblWait->setPixmap( pix ); 1487 lblWait->setPixmap( pix );
1474 lblWait->setAlignment( QWidget::AlignCenter ); 1488 lblWait->setAlignment( QWidget::AlignCenter );
1475 lblWait->show(); 1489 lblWait->show();
1476 lblWait->showMaximized(); 1490 lblWait->showMaximized();
1477 } 1491 }
1478#ifndef SINGLE_APP 1492#ifndef SINGLE_APP
1479 { QCopEnvelope envelope( "QPE/System", "forceQuit()" ); 1493 { QCopEnvelope envelope( "QPE/System", "forceQuit()" );
1480 } 1494 }
1481 processEvents(); // ensure the message goes out. 1495 processEvents(); // ensure the message goes out.
1482 sleep( 1 ); // You have 1 second to comply. 1496 sleep( 1 ); // You have 1 second to comply.
1483#endif 1497#endif
1484} 1498}
1485 1499
1486/*! 1500/*!
1487 \internal 1501 \internal
1488*/ 1502*/
1489void QPEApplication::shutdown() 1503void QPEApplication::shutdown()
1490{ 1504{
1491 // Implement in server's QPEApplication subclass 1505 // Implement in server's QPEApplication subclass
1492} 1506}
1493 1507
1494/*! 1508/*!
1495 \internal 1509 \internal
1496*/ 1510*/
1497void QPEApplication::restart() 1511void QPEApplication::restart()
1498{ 1512{
1499 // Implement in server's QPEApplication subclass 1513 // Implement in server's QPEApplication subclass
1500} 1514}
1501 1515
1502static QPtrDict<void>* stylusDict = 0; 1516static QPtrDict<void>* stylusDict = 0;
1503static void createDict() 1517static void createDict()
1504{ 1518{
1505 if ( !stylusDict ) 1519 if ( !stylusDict )
1506 stylusDict = new QPtrDict<void>; 1520 stylusDict = new QPtrDict<void>;
1507} 1521}
1508 1522
1509/*! 1523/*!
1510 Returns the current StylusMode for widget \a w. 1524 Returns the current StylusMode for widget \a w.
1511 1525
1512 \sa setStylusOperation() StylusMode 1526 \sa setStylusOperation() StylusMode
1513*/ 1527*/
1514QPEApplication::StylusMode QPEApplication::stylusOperation( QWidget* w ) 1528QPEApplication::StylusMode QPEApplication::stylusOperation( QWidget* w )
1515{ 1529{
1516 if ( stylusDict ) 1530 if ( stylusDict )
1517 return ( StylusMode ) ( int ) stylusDict->find( w ); 1531 return ( StylusMode ) ( int ) stylusDict->find( w );
1518 return LeftOnly; 1532 return LeftOnly;
1519} 1533}
1520 1534
1521/*! 1535/*!
1522 \enum QPEApplication::StylusMode 1536 \enum QPEApplication::StylusMode
1523 1537
1524 \value LeftOnly the stylus only generates LeftButton 1538 \value LeftOnly the stylus only generates LeftButton
1525 events (the default). 1539 events (the default).
1526 \value RightOnHold the stylus generates RightButton events 1540 \value RightOnHold the stylus generates RightButton events
1527 if the user uses the press-and-hold gesture. 1541 if the user uses the press-and-hold gesture.
1528 1542
1529 \sa setStylusOperation() stylusOperation() 1543 \sa setStylusOperation() stylusOperation()
1530*/ 1544*/
1531 1545
1532/*! 1546/*!
1533 Causes widget \a w to receive mouse events according to the stylus 1547 Causes widget \a w to receive mouse events according to the stylus
1534 \a mode. 1548 \a mode.
1535 1549
1536 \sa stylusOperation() StylusMode 1550 \sa stylusOperation() StylusMode
1537*/ 1551*/
1538void QPEApplication::setStylusOperation( QWidget * w, StylusMode mode ) 1552void QPEApplication::setStylusOperation( QWidget * w, StylusMode mode )
1539{ 1553{
1540 createDict(); 1554 createDict();
1541 if ( mode == LeftOnly ) { 1555 if ( mode == LeftOnly ) {
1542 stylusDict->remove 1556 stylusDict->remove
1543 ( w ); 1557 ( w );
1544 w->removeEventFilter( qApp ); 1558 w->removeEventFilter( qApp );
1545 } 1559 }
1546 else { 1560 else {
1547 stylusDict->insert( w, ( void* ) mode ); 1561 stylusDict->insert( w, ( void* ) mode );
1548 connect( w, SIGNAL( destroyed() ), qApp, SLOT( removeSenderFromStylusDict() ) ); 1562 connect( w, SIGNAL( destroyed() ), qApp, SLOT( removeSenderFromStylusDict() ) );
1549 w->installEventFilter( qApp ); 1563 w->installEventFilter( qApp );
1550 } 1564 }
1551} 1565}
1552 1566
1553 1567
1554/*! 1568/*!
1555 \reimp 1569 \reimp
1556*/ 1570*/
1557bool QPEApplication::eventFilter( QObject *o, QEvent *e ) 1571bool QPEApplication::eventFilter( QObject *o, QEvent *e )
1558{ 1572{
1559 if ( stylusDict && e->type() >= QEvent::MouseButtonPress && e->type() <= QEvent::MouseMove ) { 1573 if ( stylusDict && e->type() >= QEvent::MouseButtonPress && e->type() <= QEvent::MouseMove ) {
1560 QMouseEvent * me = ( QMouseEvent* ) e; 1574 QMouseEvent * me = ( QMouseEvent* ) e;
1561 StylusMode mode = (StylusMode)(int)stylusDict->find(o); 1575 StylusMode mode = (StylusMode)(int)stylusDict->find(o);
1562 switch (mode) { 1576 switch (mode) {
1563 case RightOnHold: 1577 case RightOnHold:
1564 switch ( me->type() ) { 1578 switch ( me->type() ) {
1565 case QEvent::MouseButtonPress: 1579 case QEvent::MouseButtonPress:
1566 if ( me->button() == LeftButton ) { 1580 if ( me->button() == LeftButton ) {
1567 d->presstimer = startTimer(500); // #### pref. 1581 d->presstimer = startTimer(500); // #### pref.
1568 d->presswidget = (QWidget*)o; 1582 d->presswidget = (QWidget*)o;
1569 d->presspos = me->pos(); 1583 d->presspos = me->pos();
1570 d->rightpressed = FALSE; 1584 d->rightpressed = FALSE;
1571 } 1585 }
1572 break; 1586 break;
1573 case QEvent::MouseMove: 1587 case QEvent::MouseMove:
1574 if (d->presstimer && (me->pos() - d->presspos).manhattanLength() > 8) { 1588 if (d->presstimer && (me->pos() - d->presspos).manhattanLength() > 8) {
1575 killTimer(d->presstimer); 1589 killTimer(d->presstimer);
1576 d->presstimer = 0; 1590 d->presstimer = 0;
1577 } 1591 }
1578 break; 1592 break;
1579 case QEvent::MouseButtonRelease: 1593 case QEvent::MouseButtonRelease:
1580 if ( me->button() == LeftButton ) { 1594 if ( me->button() == LeftButton ) {
1581 if ( d->presstimer ) { 1595 if ( d->presstimer ) {
1582 killTimer(d->presstimer); 1596 killTimer(d->presstimer);
1583 d->presstimer = 0; 1597 d->presstimer = 0;
1584 } 1598 }
1585 if ( d->rightpressed && d->presswidget ) { 1599 if ( d->rightpressed && d->presswidget ) {
1586 // Right released 1600 // Right released
1587 postEvent( d->presswidget, 1601 postEvent( d->presswidget,
1588 new QMouseEvent( QEvent::MouseButtonRelease, me->pos(), 1602 new QMouseEvent( QEvent::MouseButtonRelease, me->pos(),
1589 RightButton, LeftButton + RightButton ) ); 1603 RightButton, LeftButton + RightButton ) );
1590 // Left released, off-widget 1604 // Left released, off-widget
1591 postEvent( d->presswidget, 1605 postEvent( d->presswidget,
1592 new QMouseEvent( QEvent::MouseMove, QPoint( -1, -1), 1606 new QMouseEvent( QEvent::MouseMove, QPoint( -1, -1),
1593 LeftButton, LeftButton ) ); 1607 LeftButton, LeftButton ) );
1594 postEvent( d->presswidget, 1608 postEvent( d->presswidget,
1595 new QMouseEvent( QEvent::MouseButtonRelease, QPoint( -1, -1), 1609 new QMouseEvent( QEvent::MouseButtonRelease, QPoint( -1, -1),
1596 LeftButton, LeftButton ) ); 1610 LeftButton, LeftButton ) );
1597 d->rightpressed = FALSE; 1611 d->rightpressed = FALSE;
1598 return TRUE; // don't send the real Left release 1612 return TRUE; // don't send the real Left release
1599 } 1613 }
1600 } 1614 }
1601 break; 1615 break;
1602 default: 1616 default:
1603 break; 1617 break;
1604 } 1618 }
1605 break; 1619 break;
1606 default: 1620 default:
1607 ; 1621 ;
1608 } 1622 }
1609 } 1623 }
1610 else if ( e->type() == QEvent::KeyPress || e->type() == QEvent::KeyRelease ) { 1624 else if ( e->type() == QEvent::KeyPress || e->type() == QEvent::KeyRelease ) {
1611 QKeyEvent *ke = (QKeyEvent *)e; 1625 QKeyEvent *ke = (QKeyEvent *)e;
1612 if ( ke->key() == Key_Enter ) { 1626 if ( ke->key() == Key_Enter ) {
1613 if ( o->isA( "QRadioButton" ) || o->isA( "QCheckBox" ) ) { 1627 if ( o->isA( "QRadioButton" ) || o->isA( "QCheckBox" ) ) {
1614 postEvent( o, new QKeyEvent( e->type(), Key_Space, ' ', 1628 postEvent( o, new QKeyEvent( e->type(), Key_Space, ' ',
1615 ke->state(), " ", ke->isAutoRepeat(), ke->count() ) ); 1629 ke->state(), " ", ke->isAutoRepeat(), ke->count() ) );
1616 return TRUE; 1630 return TRUE;
1617 } 1631 }
1618 } 1632 }
1619 } 1633 }
1620 return FALSE; 1634 return FALSE;
1621} 1635}
1622 1636
1623/*! 1637/*!
1624 \reimp 1638 \reimp
1625*/ 1639*/
1626void QPEApplication::timerEvent( QTimerEvent *e ) 1640void QPEApplication::timerEvent( QTimerEvent *e )
1627{ 1641{
1628 if ( e->timerId() == d->presstimer && d->presswidget ) { 1642 if ( e->timerId() == d->presstimer && d->presswidget ) {
1629 // Right pressed 1643 // Right pressed
1630 postEvent( d->presswidget, 1644 postEvent( d->presswidget,
1631 new QMouseEvent( QEvent::MouseButtonPress, d->presspos, 1645 new QMouseEvent( QEvent::MouseButtonPress, d->presspos,
1632 RightButton, LeftButton ) ); 1646 RightButton, LeftButton ) );
1633 killTimer( d->presstimer ); 1647 killTimer( d->presstimer );
1634 d->presstimer = 0; 1648 d->presstimer = 0;
1635 d->rightpressed = TRUE; 1649 d->rightpressed = TRUE;
1636 } 1650 }
1637} 1651}
1638 1652
1639void QPEApplication::removeSenderFromStylusDict() 1653void QPEApplication::removeSenderFromStylusDict()
1640{ 1654{
1641 stylusDict->remove 1655 stylusDict->remove
1642 ( ( void* ) sender() ); 1656 ( ( void* ) sender() );
1643 if ( d->presswidget == sender() ) 1657 if ( d->presswidget == sender() )
1644 d->presswidget = 0; 1658 d->presswidget = 0;
1645} 1659}
1646 1660
1647/*! 1661/*!
1648 \internal 1662 \internal
1649*/ 1663*/
1650bool QPEApplication::keyboardGrabbed() const 1664bool QPEApplication::keyboardGrabbed() const
1651{ 1665{
1652 return d->kbgrabbed; 1666 return d->kbgrabbed;
1653} 1667}
1654 1668
1655 1669
1656/*! 1670/*!
1657 Reverses the effect of grabKeyboard(). This is called automatically 1671 Reverses the effect of grabKeyboard(). This is called automatically
1658 on program exit. 1672 on program exit.
1659*/ 1673*/
1660void QPEApplication::ungrabKeyboard() 1674void QPEApplication::ungrabKeyboard()
1661{ 1675{
1662 ((QPEApplication *) qApp )-> d-> kbgrabbed = false; 1676 ((QPEApplication *) qApp )-> d-> kbgrabbed = false;
1663} 1677}
1664 1678
1665/*! 1679/*!
1666 Grabs the physical keyboard keys, e.g. the application's launching 1680 Grabs the physical keyboard keys, e.g. the application's launching
1667 keys. Instead of launching applications when these keys are pressed 1681 keys. Instead of launching applications when these keys are pressed
1668 the signals emitted are sent to this application instead. Some games 1682 the signals emitted are sent to this application instead. Some games
1669 programs take over the launch keys in this way to make interaction 1683 programs take over the launch keys in this way to make interaction
1670 easier. 1684 easier.
1671 1685
1672 \sa ungrabKeyboard() 1686 \sa ungrabKeyboard()
1673*/ 1687*/
1674void QPEApplication::grabKeyboard() 1688void QPEApplication::grabKeyboard()
1675{ 1689{
1676 ((QPEApplication *) qApp )-> d-> kbgrabbed = true; 1690 ((QPEApplication *) qApp )-> d-> kbgrabbed = true;
1677} 1691}
1678 1692
1679/*! 1693/*!
1680 \reimp 1694 \reimp
1681*/ 1695*/
1682int QPEApplication::exec() 1696int QPEApplication::exec()
1683{ 1697{
1684#ifndef QT_NO_COP 1698#ifndef QT_NO_COP
1685 d->sendQCopQ(); 1699 d->sendQCopQ();
1686#endif 1700#endif
1687 1701
1688 if ( d->keep_running ) 1702 if ( d->keep_running )
1689 //|| d->qpe_main_widget && d->qpe_main_widget->isVisible() ) 1703 //|| d->qpe_main_widget && d->qpe_main_widget->isVisible() )
1690 return QApplication::exec(); 1704 return QApplication::exec();
1691 1705
1692#ifndef QT_NO_COP 1706#ifndef QT_NO_COP
1693 1707
1694 { 1708 {
1695 QCopEnvelope e( "QPE/System", "closing(QString)" ); 1709 QCopEnvelope e( "QPE/System", "closing(QString)" );
1696 e << d->appName; 1710 e << d->appName;
1697 } 1711 }
1698#endif 1712#endif
1699 processEvents(); 1713 processEvents();
1700 return 0; 1714 return 0;
1701} 1715}
1702 1716
1703/*! 1717/*!
1704 \internal 1718 \internal
1705 External request for application to quit. Quits if possible without 1719 External request for application to quit. Quits if possible without
1706 loosing state. 1720 loosing state.
1707*/ 1721*/
1708void QPEApplication::tryQuit() 1722void QPEApplication::tryQuit()
1709{ 1723{
1710 if ( activeModalWidget() || strcmp( argv() [ 0 ], "embeddedkonsole" ) == 0 ) 1724 if ( activeModalWidget() || strcmp( argv() [ 0 ], "embeddedkonsole" ) == 0 )
1711 return ; // Inside modal loop or konsole. Too hard to save state. 1725 return ; // Inside modal loop or konsole. Too hard to save state.
1712#ifndef QT_NO_COP 1726#ifndef QT_NO_COP
1713 1727
1714 { 1728 {
1715 QCopEnvelope e( "QPE/System", "closing(QString)" ); 1729 QCopEnvelope e( "QPE/System", "closing(QString)" );
1716 e << d->appName; 1730 e << d->appName;
1717 } 1731 }
1718#endif 1732#endif
1719 processEvents(); 1733 processEvents();
1720 1734
1721 quit(); 1735 quit();
1722} 1736}
1723 1737
1724/*! 1738/*!
1725 \internal 1739 \internal
1726*/ 1740*/
1727void QPEApplication::installTranslation( const QString& baseName ) { 1741void QPEApplication::installTranslation( const QString& baseName ) {
1728 QTranslator* trans = new QTranslator(this); 1742 QTranslator* trans = new QTranslator(this);
1729 QString tfn = qpeDir() + "/i18n/"+baseName; 1743 QString tfn = qpeDir() + "/i18n/"+baseName;
1730 if ( trans->load( tfn ) ) 1744 if ( trans->load( tfn ) )
1731 installTranslator( trans ); 1745 installTranslator( trans );
1732 else 1746 else
1733 delete trans; 1747 delete trans;
1734} 1748}
1735 1749
1736/*! 1750/*!
1737 \internal 1751 \internal
1738 User initiated quit. Makes the window 'Go Away'. If preloaded this means 1752 User initiated quit. Makes the window 'Go Away'. If preloaded this means
1739 hiding the window. If not it means quitting the application. 1753 hiding the window. If not it means quitting the application.
1740 As this is user initiated we don't need to check state. 1754 As this is user initiated we don't need to check state.
1741*/ 1755*/
1742void QPEApplication::hideOrQuit() 1756void QPEApplication::hideOrQuit()
1743{ 1757{
1744 processEvents(); 1758 processEvents();
1745 1759
1746 // If we are a preloaded application we don't actually quit, so emit 1760 // If we are a preloaded application we don't actually quit, so emit
1747 // a System message indicating we're quasi-closing. 1761 // a System message indicating we're quasi-closing.
1748 if ( d->preloaded && d->qpe_main_widget ) 1762 if ( d->preloaded && d->qpe_main_widget )
1749#ifndef QT_NO_COP 1763#ifndef QT_NO_COP
1750 1764
1751 { 1765 {
1752 QCopEnvelope e("QPE/System", "fastAppHiding(QString)" ); 1766 QCopEnvelope e("QPE/System", "fastAppHiding(QString)" );
1753 e << d->appName; 1767 e << d->appName;
1754 d->qpe_main_widget->hide(); 1768 d->qpe_main_widget->hide();
1755 } 1769 }
1756#endif 1770#endif
1757 else 1771 else
1758 quit(); 1772 quit();
1759} 1773}
1760 1774
1761 1775
1762#if defined(QT_QWS_IPAQ) || defined(QT_QWS_SL5XXX) || defined(QT_QWS_RAMSES) 1776#if defined(QT_QWS_IPAQ) || defined(QT_QWS_SL5XXX) || defined(QT_QWS_RAMSES)
1763 1777
1764// The libraries with the skiff package (and possibly others) have 1778// The libraries with the skiff package (and possibly others) have
1765// completely useless implementations of builtin new and delete that 1779// completely useless implementations of builtin new and delete that
1766// use about 50% of your CPU. Here we revert to the simple libc 1780// use about 50% of your CPU. Here we revert to the simple libc
1767// functions. 1781// functions.
1768 1782
1769void* operator new[]( size_t size ) 1783void* operator new[]( size_t size )
1770{ 1784{
1771 return malloc( size ); 1785 return malloc( size );
1772} 1786}
1773 1787
1774void* operator new( size_t size ) 1788void* operator new( size_t size )
1775{ 1789{
1776 return malloc( size ); 1790 return malloc( size );
1777} 1791}
1778 1792
1779void operator delete[]( void* p ) 1793void operator delete[]( void* p )
1780{ 1794{
1781 free( p ); 1795 free( p );
1782} 1796}
1783 1797
1784void operator delete[]( void* p, size_t /*size*/ ) 1798void operator delete[]( void* p, size_t /*size*/ )
1785{ 1799{
1786 free( p ); 1800 free( p );
1787} 1801}
1788 1802
1789 1803
1790void operator delete( void* p ) 1804void operator delete( void* p )
1791{ 1805{
1792 free( p ); 1806 free( p );
1793} 1807}
1794 1808
1795void operator delete( void* p, size_t /*size*/ ) 1809void operator delete( void* p, size_t /*size*/ )
1796{ 1810{
1797 free( p ); 1811 free( p );
1798} 1812}
1799 1813
1800#endif 1814#endif
1801 1815
1802#if ( QT_VERSION <= 230 ) && !defined(SINGLE_APP) 1816#if ( QT_VERSION <= 230 ) && !defined(SINGLE_APP)
1803#include <qwidgetlist.h> 1817#include <qwidgetlist.h>
1804#ifdef QWS 1818#ifdef QWS
1805#include <qgfx_qws.h> 1819#include <qgfx_qws.h>
1806extern QRect qt_maxWindowRect; 1820extern QRect qt_maxWindowRect;
1807void qt_setMaxWindowRect(const QRect& r ) 1821void qt_setMaxWindowRect(const QRect& r )
1808{ 1822{
1809 qt_maxWindowRect = qt_screen->mapFromDevice( r, 1823 qt_maxWindowRect = qt_screen->mapFromDevice( r,
1810 qt_screen->mapToDevice( QSize( qt_screen->width(), qt_screen->height() ) ) ); 1824 qt_screen->mapToDevice( QSize( qt_screen->width(), qt_screen->height() ) ) );
1811 // Re-resize any maximized windows 1825 // Re-resize any maximized windows
1812 QWidgetList* l = QApplication::topLevelWidgets(); 1826 QWidgetList* l = QApplication::topLevelWidgets();
1813 if ( l ) { 1827 if ( l ) {
1814 QWidget * w = l->first(); 1828 QWidget * w = l->first();
1815 while ( w ) { 1829 while ( w ) {
1816 if ( w->isVisible() && w->isMaximized() ) { 1830 if ( w->isVisible() && w->isMaximized() ) {
1817 w->showMaximized(); 1831 w->showMaximized();
1818 } 1832 }
1819 w = l->next(); 1833 w = l->next();
1820 } 1834 }
1821 delete l; 1835 delete l;
1822 } 1836 }
1823} 1837}
1824#endif 1838#endif
1825#endif 1839#endif
diff --git a/library/qpedecoration_qws.cpp b/library/qpedecoration_qws.cpp
index 5e0c32a..933542d 100644
--- a/library/qpedecoration_qws.cpp
+++ b/library/qpedecoration_qws.cpp
@@ -1,910 +1,918 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. 2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of the Qtopia Environment. 4** This file is part of the Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20#define QTOPIA_INTERNAL_LANGLIST 20#define QTOPIA_INTERNAL_LANGLIST
21#include <qapplication.h> 21#include <qapplication.h>
22#include <qstyle.h> 22#include <qstyle.h>
23#include <qwidget.h> 23#include <qwidget.h>
24#include <qpainter.h> 24#include <qpainter.h>
25#include <qtimer.h> 25#include <qtimer.h>
26#include <qwhatsthis.h> 26#include <qwhatsthis.h>
27#include "qcopenvelope_qws.h" 27#include "qcopenvelope_qws.h"
28#include "qpedecoration_qws.h" 28#include "qpedecoration_qws.h"
29#include <qdialog.h> 29#include <qdialog.h>
30#include <qdrawutil.h> 30#include <qdrawutil.h>
31#include <qgfx_qws.h> 31#include <qgfx_qws.h>
32#include "qpeapplication.h" 32#include "qpeapplication.h"
33#include "resource.h" 33#include "resource.h"
34#include "global.h" 34#include "global.h"
35#include "qlibrary.h" 35#include "qlibrary.h"
36#include "windowdecorationinterface.h" 36#include "windowdecorationinterface.h"
37#include <qfile.h> 37#include <qfile.h>
38#include <qsignal.h> 38#include <qsignal.h>
39 39
40#include <stdlib.h> 40#include <stdlib.h>
41 41
42extern QRect qt_maxWindowRect; 42extern QRect qt_maxWindowRect;
43 43
44#define WHATSTHIS_MODE 44#define WHATSTHIS_MODE
45 45
46#ifndef QT_NO_QWS_QPE_WM_STYLE 46#ifndef QT_NO_QWS_QPE_WM_STYLE
47 47
48#ifndef QT_NO_IMAGEIO_XPM 48#ifndef QT_NO_IMAGEIO_XPM
49 49
50/* XPM */ 50/* XPM */
51static const char * const qpe_close_xpm[] = { 51static const char * const qpe_close_xpm[] = {
52"16 16 3 1", 52"16 16 3 1",
53" c None", 53" c None",
54". c #FFFFFF", 54". c #FFFFFF",
55"+ c #000000", 55"+ c #000000",
56" ", 56" ",
57" ", 57" ",
58" ..... ", 58" ..... ",
59" ..+++++.. ", 59" ..+++++.. ",
60" .+++++++++. ", 60" .+++++++++. ",
61" .+..+++..+. ", 61" .+..+++..+. ",
62" .++...+...++. ", 62" .++...+...++. ",
63" .+++.....+++. ", 63" .+++.....+++. ",
64" .++++...++++. ", 64" .++++...++++. ",
65" .+++.....+++. ", 65" .+++.....+++. ",
66" .++...+...++. ", 66" .++...+...++. ",
67" .+..+++..+. ", 67" .+..+++..+. ",
68" .+++++++++. ", 68" .+++++++++. ",
69" ..+++++.. ", 69" ..+++++.. ",
70" ..... ", 70" ..... ",
71" "}; 71" "};
72 72
73/* XPM */ 73/* XPM */
74static const char * const qpe_accept_xpm[] = { 74static const char * const qpe_accept_xpm[] = {
75"16 16 3 1", 75"16 16 3 1",
76" c None", 76" c None",
77". c #FFFFFF", 77". c #FFFFFF",
78"+ c #000000", 78"+ c #000000",
79" ", 79" ",
80" ", 80" ",
81" ..... ", 81" ..... ",
82" ..+++++.. ", 82" ..+++++.. ",
83" .+++++++++. ", 83" .+++++++++. ",
84" .+++++++++. ", 84" .+++++++++. ",
85" .+++++++..++. ", 85" .+++++++..++. ",
86" .++.+++...++. ", 86" .++.+++...++. ",
87" .+...+...+++. ", 87" .+...+...+++. ",
88" .+......++++. ", 88" .+......++++. ",
89" .++....+++++. ", 89" .++....+++++. ",
90" .++..+++++. ", 90" .++..+++++. ",
91" .+++++++++. ", 91" .+++++++++. ",
92" ..+++++.. ", 92" ..+++++.. ",
93" ..... ", 93" ..... ",
94" "}; 94" "};
95 95
96#endif // QT_NO_IMAGEIO_XPM 96#endif // QT_NO_IMAGEIO_XPM
97 97
98class HackWidget : public QWidget 98class HackWidget : public QWidget
99{ 99{
100public: 100public:
101 bool needsOk() { 101 bool needsOk() {
102 return (getWState() & WState_Reserved1 ) || 102 return (getWState() & WState_Reserved1 ) ||
103 (inherits( "QDialog" ) && !inherits( "QMessageBox" ) ); 103 (inherits( "QDialog" ) && !inherits( "QMessageBox" ) );
104 } 104 }
105}; 105};
106 106
107static QImage scaleButton( const QImage &img, int height ) 107static QImage scaleButton( const QImage &img, int height )
108{ 108{
109 if ( img.height() != 0 && img.height() != height ) { 109 if ( img.height() != 0 && img.height() != height ) {
110 return img.smoothScale( img.width()*height/img.height(), height ); 110 return img.smoothScale( img.width()*height/img.height(), height );
111 } else { 111 } else {
112 return img; 112 return img;
113 } 113 }
114} 114}
115 115
116class TLWidget : public QWidget 116class TLWidget : public QWidget
117{ 117{
118public: 118public:
119 QWSManager *manager() 119 QWSManager *manager()
120 { 120 {
121 return topData()->qwsManager; 121 return topData()->qwsManager;
122 } 122 }
123 123
124 QTLWExtra *topExtra() 124 QTLWExtra *topExtra()
125 { 125 {
126 return topData(); 126 return topData();
127 } 127 }
128 128
129 void setWState( uint s ) { QWidget::setWState( s ); } 129 void setWState( uint s ) { QWidget::setWState( s ); }
130 void clearWState( uint s ) { QWidget::clearWState( s ); } 130 void clearWState( uint s ) { QWidget::clearWState( s ); }
131}; 131};
132 132
133 133
134QPEManager::QPEManager( QPEDecoration *d, QObject *parent ) 134QPEManager::QPEManager( QPEDecoration *d, QObject *parent )
135 : QObject( parent ), decoration( d ), helpState(0), inWhatsThis(FALSE) 135 : QObject( parent ), decoration( d ), helpState(0), inWhatsThis(FALSE)
136{ 136{
137 wtTimer = new QTimer( this ); 137 wtTimer = new QTimer( this );
138 connect( wtTimer, SIGNAL(timeout()), this, SLOT(whatsThisTimeout()) ); 138 connect( wtTimer, SIGNAL(timeout()), this, SLOT(whatsThisTimeout()) );
139} 139}
140 140
141 141
142void QPEManager::updateActive() 142void QPEManager::updateActive()
143{ 143{
144 QWidget *newActive = qApp->activeWindow(); 144 QWidget *newActive = qApp->activeWindow();
145 if ( newActive && (QWidget*)active == newActive ) 145 if ( newActive && (QWidget*)active == newActive )
146 return; 146 return;
147 147
148 if ( active && (!newActive || ((TLWidget *)newActive)->manager()) ) { 148 if ( active && (!newActive || ((TLWidget *)newActive)->manager()) ) {
149 ((TLWidget *)(QWidget*)active)->manager()->removeEventFilter( this ); 149 ((TLWidget *)(QWidget*)active)->manager()->removeEventFilter( this );
150 } 150 }
151 151
152 if ( newActive && ((TLWidget *)newActive)->manager() ) { 152 if ( newActive && ((TLWidget *)newActive)->manager() ) {
153 active = newActive; 153 active = newActive;
154 ((TLWidget *)(QWidget*)active)->manager()->installEventFilter( this ); 154 ((TLWidget *)(QWidget*)active)->manager()->installEventFilter( this );
155 } else if ( !newActive ) { 155 } else if ( !newActive ) {
156 active = 0; 156 active = 0;
157 } 157 }
158} 158}
159 159
160int QPEManager::pointInQpeRegion( QWidget *w, const QPoint &p ) 160int QPEManager::pointInQpeRegion( QWidget *w, const QPoint &p )
161{ 161{
162 QRect rect(w->geometry()); 162 QRect rect(w->geometry());
163 163
164 if ( decoration->region( w, rect, 164 if ( decoration->region( w, rect,
165 (QWSDecoration::Region)QPEDecoration::Help ).contains(p) ) 165 (QWSDecoration::Region)QPEDecoration::Help ).contains(p) )
166 return QPEDecoration::Help; 166 return QPEDecoration::Help;
167 167
168 for (int i = QWSDecoration::LastRegion; i >= QWSDecoration::Title; i--) { 168 for (int i = QWSDecoration::LastRegion; i >= QWSDecoration::Title; i--) {
169 if (decoration->region(w, rect, (QWSDecoration::Region)i).contains(p)) 169 if (decoration->region(w, rect, (QWSDecoration::Region)i).contains(p))
170 return (QWSDecoration::Region)i; 170 return (QWSDecoration::Region)i;
171 } 171 }
172 172
173 return QWSDecoration::None; 173 return QWSDecoration::None;
174} 174}
175 175
176bool QPEManager::eventFilter( QObject *o, QEvent *e ) 176bool QPEManager::eventFilter( QObject *o, QEvent *e )
177{ 177{
178 QWSManager *mgr = (QWSManager *)o; 178 QWSManager *mgr = (QWSManager *)o;
179 QWidget *w = mgr->widget(); 179 QWidget *w = mgr->widget();
180 switch ( e->type() ) { 180 switch ( e->type() ) {
181 case QEvent::MouseButtonPress: 181 case QEvent::MouseButtonPress:
182 { 182 {
183 pressTime = QTime::currentTime(); 183 pressTime = QTime::currentTime();
184 QPoint p = ((QMouseEvent*)e)->globalPos(); 184 QPoint p = ((QMouseEvent*)e)->globalPos();
185 int inRegion = pointInQpeRegion( w, p ); 185 int inRegion = pointInQpeRegion( w, p );
186#ifdef WHATSTHIS_MODE 186#ifdef WHATSTHIS_MODE
187 if ( !w->geometry().contains(p) && QWhatsThis::inWhatsThisMode() ) { 187 if ( !w->geometry().contains(p) && QWhatsThis::inWhatsThisMode() ) {
188 QString text; 188 QString text;
189 switch ( inRegion ) { 189 switch ( inRegion ) {
190 case QWSDecoration::Close: 190 case QWSDecoration::Close:
191 if ( ((HackWidget*)w)->needsOk() ) 191 if ( ((HackWidget*)w)->needsOk() )
192 text = tr("Click to close this window, discarding changes."); 192 text = QObject::tr("Click to close this window, discarding changes.");
193 else 193 else
194 text = tr("Click to close this window."); 194 text = QObject::tr("Click to close this window.");
195 break; 195 break;
196 case QWSDecoration::Minimize: 196 case QWSDecoration::Minimize:
197 text = tr("Click to close this window and apply changes."); 197 text = QObject::tr("Click to close this window and apply changes.");
198 break; 198 break;
199 case QWSDecoration::Maximize: 199 case QWSDecoration::Maximize:
200 if ( w->isMaximized() ) 200 if ( w->isMaximized() )
201 text = tr("Click to make this window moveable."); 201 text = QObject::tr("Click to make this window moveable.");
202 else 202 else
203 text = tr("Click to make this window use all available screen area."); 203 text = QObject::tr("Click to make this window use all available screen area.");
204 break; 204 break;
205 default: 205 default:
206 break; 206 break;
207 } 207 }
208 QWhatsThis::leaveWhatsThisMode( text ); 208 QWhatsThis::leaveWhatsThisMode( text );
209 whatsThisTimeout(); 209 whatsThisTimeout();
210 helpState = 0; 210 helpState = 0;
211 return true; 211 return true;
212 } 212 }
213#endif 213#endif
214 if ( inRegion == QPEDecoration::Help ) { 214 if ( inRegion == QPEDecoration::Help ) {
215#ifdef WHATSTHIS_MODE 215#ifdef WHATSTHIS_MODE
216 wtTimer->start( 400, TRUE ); 216 wtTimer->start( 400, TRUE );
217#endif 217#endif
218 helpState = QWSButton::Clicked|QWSButton::MouseOver; 218 helpState = QWSButton::Clicked|QWSButton::MouseOver;
219 drawButton( w, QPEDecoration::Help, helpState ); 219 drawButton( w, QPEDecoration::Help, helpState );
220 return true; 220 return true;
221 } 221 }
222 } 222 }
223 break; 223 break;
224 case QEvent::MouseButtonRelease: 224 case QEvent::MouseButtonRelease:
225 if ( helpState & QWSButton::Clicked ) { 225 if ( helpState & QWSButton::Clicked ) {
226 wtTimer->stop(); 226 wtTimer->stop();
227 helpState = 0; 227 helpState = 0;
228 drawButton( w, QPEDecoration::Help, helpState ); 228 drawButton( w, QPEDecoration::Help, helpState );
229 QPoint p = ((QMouseEvent*)e)->globalPos(); 229 QPoint p = ((QMouseEvent*)e)->globalPos();
230 if ( pointInQpeRegion( w, p ) == QPEDecoration::Help ) { 230 if ( pointInQpeRegion( w, p ) == QPEDecoration::Help ) {
231 decoration->help( w ); 231 decoration->help( w );
232 } 232 }
233 return true; 233 return true;
234 } 234 }
235 break; 235 break;
236 case QEvent::MouseMove: 236 case QEvent::MouseMove:
237 if ( helpState & QWSButton::Clicked ) { 237 if ( helpState & QWSButton::Clicked ) {
238 int oldState = helpState; 238 int oldState = helpState;
239 QPoint p = ((QMouseEvent*)e)->globalPos(); 239 QPoint p = ((QMouseEvent*)e)->globalPos();
240 if ( pointInQpeRegion( w, p ) == QPEDecoration::Help ) { 240 if ( pointInQpeRegion( w, p ) == QPEDecoration::Help ) {
241 helpState = QWSButton::Clicked|QWSButton::MouseOver; 241 helpState = QWSButton::Clicked|QWSButton::MouseOver;
242 } else { 242 } else {
243 helpState = 0; 243 helpState = 0;
244 } 244 }
245 if ( helpState != oldState ) 245 if ( helpState != oldState )
246 drawButton( w, QPEDecoration::Help, helpState ); 246 drawButton( w, QPEDecoration::Help, helpState );
247 } 247 }
248 break; 248 break;
249 default: 249 default:
250 break; 250 break;
251 } 251 }
252 return QObject::eventFilter( o, e ); 252 return QObject::eventFilter( o, e );
253} 253}
254 254
255void QPEManager::drawButton( QWidget *w, QPEDecoration::QPERegion r, int state ) 255void QPEManager::drawButton( QWidget *w, QPEDecoration::QPERegion r, int state )
256{ 256{
257 QPainter painter(w); 257 QPainter painter(w);
258 QRegion rgn = ((TLWidget *)w)->topExtra()->decor_allocated_region; 258 QRegion rgn = ((TLWidget *)w)->topExtra()->decor_allocated_region;
259 painter.internalGfx()->setWidgetDeviceRegion( rgn ); 259 painter.internalGfx()->setWidgetDeviceRegion( rgn );
260 painter.setClipRegion(decoration->region(w, w->rect(),QWSDecoration::All)); 260 painter.setClipRegion(decoration->region(w, w->rect(),QWSDecoration::All));
261 decoration->paintButton( &painter, w, (QWSDecoration::Region)r, state ); 261 decoration->paintButton( &painter, w, (QWSDecoration::Region)r, state );
262} 262}
263 263
264void QPEManager::drawTitle( QWidget *w ) 264void QPEManager::drawTitle( QWidget *w )
265{ 265{
266 QPainter painter(w); 266 QPainter painter(w);
267 QRegion rgn = ((TLWidget *)w)->topExtra()->decor_allocated_region; 267 QRegion rgn = ((TLWidget *)w)->topExtra()->decor_allocated_region;
268 painter.internalGfx()->setWidgetDeviceRegion( rgn ); 268 painter.internalGfx()->setWidgetDeviceRegion( rgn );
269 painter.setClipRegion(decoration->region(w, w->rect(),QWSDecoration::All)); 269 painter.setClipRegion(decoration->region(w, w->rect(),QWSDecoration::All));
270 decoration->paint( &painter, w ); 270 decoration->paint( &painter, w );
271 decoration->paintButton(&painter, w, QWSDecoration::Menu, 0); 271 decoration->paintButton(&painter, w, QWSDecoration::Menu, 0);
272 decoration->paintButton(&painter, w, QWSDecoration::Close, 0); 272 decoration->paintButton(&painter, w, QWSDecoration::Close, 0);
273 decoration->paintButton(&painter, w, QWSDecoration::Minimize, 0); 273 decoration->paintButton(&painter, w, QWSDecoration::Minimize, 0);
274 decoration->paintButton(&painter, w, QWSDecoration::Maximize, 0); 274 decoration->paintButton(&painter, w, QWSDecoration::Maximize, 0);
275} 275}
276 276
277void QPEManager::whatsThisTimeout() 277void QPEManager::whatsThisTimeout()
278{ 278{
279 if ( !QWhatsThis::inWhatsThisMode() ) { 279 if ( !QWhatsThis::inWhatsThisMode() ) {
280 if ( inWhatsThis ) { 280 if ( inWhatsThis ) {
281 if ( whatsThis ) { 281 if ( whatsThis ) {
282 QWidget *w = whatsThis; 282 QWidget *w = whatsThis;
283 whatsThis = 0; 283 whatsThis = 0;
284 drawTitle( w ); 284 drawTitle( w );
285 } 285 }
286 wtTimer->stop(); 286 wtTimer->stop();
287 } else { 287 } else {
288 QWhatsThis::enterWhatsThisMode(); 288 QWhatsThis::enterWhatsThisMode();
289 helpState = 0; 289 helpState = 0;
290 updateActive(); 290 updateActive();
291 if ( active ) { 291 if ( active ) {
292 whatsThis = active; 292 whatsThis = active;
293 drawTitle( active ); 293 drawTitle( active );
294 // check periodically to see if we've left whats this mode 294 // check periodically to see if we've left whats this mode
295 wtTimer->start( 250 ); 295 wtTimer->start( 250 );
296 } 296 }
297 } 297 }
298 inWhatsThis = !inWhatsThis; 298 inWhatsThis = !inWhatsThis;
299 } 299 }
300} 300}
301 301
302//=========================================================================== 302//===========================================================================
303 303
304static QImage *okImage( int th ) 304static QImage *okImage( int th )
305{ 305{
306 static QImage *i = 0; 306 static QImage *i = 0;
307 if ( !i || i->height() != th ) { 307 if ( !i || i->height() != th ) {
308 delete i; 308 delete i;
309 i = new QImage(scaleButton(Resource::loadImage("OKButton"),th)); 309 i = new QImage(scaleButton(Resource::loadImage("OKButton"),th));
310 } 310 }
311 return i; 311 return i;
312} 312}
313 313
314static QImage *closeImage( int th ) 314static QImage *closeImage( int th )
315{ 315{
316 static QImage *i = 0; 316 static QImage *i = 0;
317 if ( !i || i->height() != th ) { 317 if ( !i || i->height() != th ) {
318 delete i; 318 delete i;
319 i = new QImage(scaleButton(Resource::loadImage("CloseButton"),th)); 319 i = new QImage(scaleButton(Resource::loadImage("CloseButton"),th));
320 } 320 }
321 return i; 321 return i;
322} 322}
323 323
324static QImage *helpImage( int th ) 324static QImage *helpImage( int th )
325{ 325{
326 static QImage *i = 0; 326 static QImage *i = 0;
327 if ( !i || i->height() != th ) { 327 if ( !i || i->height() != th ) {
328 delete i; 328 delete i;
329 i = new QImage(scaleButton(Resource::loadImage("HelpButton"),th)); 329 i = new QImage(scaleButton(Resource::loadImage("HelpButton"),th));
330 } 330 }
331 return i; 331 return i;
332} 332}
333 333
334static QImage *maximizeImage( int th ) 334static QImage *maximizeImage( int th )
335{ 335{
336 static QImage *i = 0; 336 static QImage *i = 0;
337 if ( !i || i->height() != th ) { 337 if ( !i || i->height() != th ) {
338 delete i; 338 delete i;
339 i = new QImage(scaleButton(Resource::loadImage("MaximizeButton"),th)); 339 i = new QImage(scaleButton(Resource::loadImage("MaximizeButton"),th));
340 } 340 }
341 return i; 341 return i;
342} 342}
343 343
344int WindowDecorationInterface::metric( Metric m, const WindowData *wd ) const 344int WindowDecorationInterface::metric( Metric m, const WindowData *wd ) const
345{ 345{
346 switch ( m ) { 346 switch ( m ) {
347 case TitleHeight: 347 case TitleHeight:
348 if ( QApplication::desktop()->height() > 320 ) 348 if ( QApplication::desktop()->height() > 320 )
349 return 19; 349 return 19;
350 else 350 else
351 return 15; 351 return 15;
352 case LeftBorder: 352 case LeftBorder:
353 case RightBorder: 353 case RightBorder:
354 case TopBorder: 354 case TopBorder:
355 case BottomBorder: 355 case BottomBorder:
356 return 4; 356 return 4;
357 case OKWidth: 357 case OKWidth:
358 return okImage(metric(TitleHeight,wd))->width(); 358 return okImage(metric(TitleHeight,wd))->width();
359 case CloseWidth: 359 case CloseWidth:
360 return closeImage(metric(TitleHeight,wd))->width(); 360 return closeImage(metric(TitleHeight,wd))->width();
361 case HelpWidth: 361 case HelpWidth:
362 return helpImage(metric(TitleHeight,wd))->width(); 362 return helpImage(metric(TitleHeight,wd))->width();
363 case MaximizeWidth: 363 case MaximizeWidth:
364 return maximizeImage(metric(TitleHeight,wd))->width(); 364 return maximizeImage(metric(TitleHeight,wd))->width();
365 case CornerGrabSize: 365 case CornerGrabSize:
366 return 16; 366 return 16;
367 } 367 }
368 368
369 return 0; 369 return 0;
370} 370}
371 371
372void WindowDecorationInterface::drawArea( Area a, QPainter *p, const WindowData *wd ) const 372void WindowDecorationInterface::drawArea( Area a, QPainter *p, const WindowData *wd ) const
373{ 373{
374 int th = metric( TitleHeight, wd ); 374 int th = metric( TitleHeight, wd );
375 QRect r = wd->rect; 375 QRect r = wd->rect;
376 376
377 switch ( a ) { 377 switch ( a ) {
378 case Border: 378 case Border:
379 { 379 {
380 const QColorGroup &cg = wd->palette.active(); 380 const QColorGroup &cg = wd->palette.active();
381 qDrawWinPanel(p, r.x()-metric(LeftBorder,wd), 381 qDrawWinPanel(p, r.x()-metric(LeftBorder,wd),
382 r.y()-th-metric(TopBorder,wd), 382 r.y()-th-metric(TopBorder,wd),
383 r.width()+metric(LeftBorder,wd)+metric(RightBorder,wd), 383 r.width()+metric(LeftBorder,wd)+metric(RightBorder,wd),
384 r.height()+th+metric(TopBorder,wd)+metric(BottomBorder,wd), 384 r.height()+th+metric(TopBorder,wd)+metric(BottomBorder,wd),
385 cg, FALSE, &cg.brush(QColorGroup::Background)); 385 cg, FALSE, &cg.brush(QColorGroup::Background));
386 } 386 }
387 break; 387 break;
388 case Title: 388 case Title:
389 { 389 {
390 const QColorGroup &cg = wd->palette.active(); 390 const QColorGroup &cg = wd->palette.active();
391 QBrush titleBrush; 391 QBrush titleBrush;
392 QPen titleLines; 392 QPen titleLines;
393 393
394 if ( wd->flags & WindowData::Active ) { 394 if ( wd->flags & WindowData::Active ) {
395 titleBrush = cg.brush(QColorGroup::Highlight); 395 titleBrush = cg.brush(QColorGroup::Highlight);
396 titleLines = titleBrush.color().dark(); 396 titleLines = titleBrush.color().dark();
397 } else { 397 } else {
398 titleBrush = cg.brush(QColorGroup::Background); 398 titleBrush = cg.brush(QColorGroup::Background);
399 titleLines = titleBrush.color(); 399 titleLines = titleBrush.color();
400 } 400 }
401 401
402 p->fillRect( r.x(), r.y()-th, r.width(), th, titleBrush); 402 p->fillRect( r.x(), r.y()-th, r.width(), th, titleBrush);
403 403
404 p->setPen( titleLines ); 404 p->setPen( titleLines );
405 for ( int i = r.y()-th; i < r.y(); i += 2 ) 405 for ( int i = r.y()-th; i < r.y(); i += 2 )
406 p->drawLine( r.left(), i, r.right(), i ); 406 p->drawLine( r.left(), i, r.right(), i );
407 } 407 }
408 break; 408 break;
409 case TitleText: 409 case TitleText:
410 p->drawText( r.x()+3+metric(HelpWidth,wd), r.top()-th, 410 p->drawText( r.x()+3+metric(HelpWidth,wd), r.top()-th,
411 r.width()-metric(OKWidth,wd)-metric(CloseWidth,wd), 411 r.width()-metric(OKWidth,wd)-metric(CloseWidth,wd),
412 th, QPainter::AlignVCenter, wd->caption); 412 th, QPainter::AlignVCenter, wd->caption);
413 break; 413 break;
414 } 414 }
415} 415}
416 416
417void WindowDecorationInterface::drawButton( Button b, QPainter *p, const WindowData *wd, int x, int y, int, int, QWSButton::State state ) const 417void WindowDecorationInterface::drawButton( Button b, QPainter *p, const WindowData *wd, int x, int y, int, int, QWSButton::State state ) const
418{ 418{
419 QImage *img = 0; 419 QImage *img = 0;
420 switch ( b ) { 420 switch ( b ) {
421 case OK: 421 case OK:
422 img = okImage(metric(TitleHeight,wd)); 422 img = okImage(metric(TitleHeight,wd));
423 break; 423 break;
424 case Close: 424 case Close:
425 img = closeImage(metric(TitleHeight,wd)); 425 img = closeImage(metric(TitleHeight,wd));
426 break; 426 break;
427 case Help: 427 case Help:
428 img = helpImage(metric(TitleHeight,wd)); 428 img = helpImage(metric(TitleHeight,wd));
429 break; 429 break;
430 case Maximize: 430 case Maximize:
431 img = maximizeImage(metric(TitleHeight,wd)); 431 img = maximizeImage(metric(TitleHeight,wd));
432 break; 432 break;
433 } 433 }
434 434
435 if ( img ) { 435 if ( img ) {
436 if ((state & QWSButton::MouseOver) && (state & QWSButton::Clicked)) 436 if ((state & QWSButton::MouseOver) && (state & QWSButton::Clicked))
437 p->drawImage(x+2, y+2, *img); 437 p->drawImage(x+2, y+2, *img);
438 else 438 else
439 p->drawImage(x+1, y+1, *img); 439 p->drawImage(x+1, y+1, *img);
440 } 440 }
441} 441}
442 442
443QRegion WindowDecorationInterface::mask( const WindowData *wd ) const 443QRegion WindowDecorationInterface::mask( const WindowData *wd ) const
444{ 444{
445 int th = metric(TitleHeight,wd); 445 int th = metric(TitleHeight,wd);
446 QRect rect( wd->rect ); 446 QRect rect( wd->rect );
447 QRect r(rect.left() - metric(LeftBorder,wd), 447 QRect r(rect.left() - metric(LeftBorder,wd),
448 rect.top() - th - metric(TopBorder,wd), 448 rect.top() - th - metric(TopBorder,wd),
449 rect.width() + metric(LeftBorder,wd) + metric(RightBorder,wd), 449 rect.width() + metric(LeftBorder,wd) + metric(RightBorder,wd),
450 rect.height() + th + metric(TopBorder,wd) + metric(BottomBorder,wd)); 450 rect.height() + th + metric(TopBorder,wd) + metric(BottomBorder,wd));
451 return QRegion(r) - rect; 451 return QRegion(r) - rect;
452} 452}
453 453
454class DefaultWindowDecoration : public WindowDecorationInterface 454class DefaultWindowDecoration : public WindowDecorationInterface
455{ 455{
456public: 456public:
457 DefaultWindowDecoration() : ref(0) {} 457 DefaultWindowDecoration() : ref(0) {}
458 QString name() const { 458 QString name() const {
459 return "Default"; 459 return "Default";
460 } 460 }
461 QPixmap icon() const { 461 QPixmap icon() const {
462 return QPixmap(); 462 return QPixmap();
463 } 463 }
464 QRESULT queryInterface( const QUuid &uuid, QUnknownInterface **iface ) { 464 QRESULT queryInterface( const QUuid &uuid, QUnknownInterface **iface ) {
465 *iface = 0; 465 *iface = 0;
466 if ( uuid == IID_QUnknown ) 466 if ( uuid == IID_QUnknown )
467 *iface = this; 467 *iface = this;
468 else if ( uuid == IID_WindowDecoration ) 468 else if ( uuid == IID_WindowDecoration )
469 *iface = this; 469 *iface = this;
470 470
471 if ( *iface ) 471 if ( *iface )
472 (*iface)->addRef(); 472 (*iface)->addRef();
473 return QS_OK; 473 return QS_OK;
474 } 474 }
475 Q_REFCOUNT 475 Q_REFCOUNT
476 476
477private: 477private:
478 ulong ref; 478 ulong ref;
479}; 479};
480 480
481static WindowDecorationInterface *wdiface = 0; 481static WindowDecorationInterface *wdiface = 0;
482static QLibrary *wdlib = 0; 482static QLibrary *wdlib = 0;
483static QString libname; 483static QString libname;
484 484
485//=========================================================================== 485//===========================================================================
486 486
487QPEDecoration::QPEDecoration() 487QPEDecoration::QPEDecoration()
488 : QWSDefaultDecoration() 488 : QWSDefaultDecoration()
489{ 489{
490 init ( libname ); 490 init ( libname );
491} 491}
492 492
493QPEDecoration::QPEDecoration( const QString &plugin ) 493QPEDecoration::QPEDecoration( const QString &plugin )
494 : QWSDefaultDecoration() 494 : QWSDefaultDecoration()
495{ 495{
496 init ( plugin ); 496 init ( plugin );
497} 497}
498 498
499void QPEDecoration::init ( const QString &plugin ) 499void QPEDecoration::init ( const QString &plugin )
500{ 500{
501 libname = plugin; 501 libname = plugin;
502 502
503 if ( wdlib ) { 503 if ( wdlib ) {
504 wdiface->release(); 504 wdiface->release();
505 wdlib->unload(); 505 wdlib->unload();
506 delete wdlib; 506 delete wdlib;
507 wdlib = 0; 507 wdlib = 0;
508 } else { 508 } else {
509 delete wdiface; 509 delete wdiface;
510 } 510 }
511 511
512 WindowDecorationInterface *iface = 0; 512 WindowDecorationInterface *iface = 0;
513 QString path = QPEApplication::qpeDir() + "/plugins/decorations"; 513 QString path = QPEApplication::qpeDir() + "/plugins/decorations/";
514 QLibrary *lib = new QLibrary( path + "/" + plugin ); 514
515 if ( plugin.find( ".so" ) > 0 ) {
516 // full library name supplied
517 path += plugin;
518 } else {
519 path += "lib" + plugin.lower() + ".so"; // compatibility
520 }
521
522 QLibrary *lib = new QLibrary( path );
515 if ( lib->queryInterface( IID_WindowDecoration, (QUnknownInterface**)&iface ) == QS_OK && iface ) { 523 if ( lib->queryInterface( IID_WindowDecoration, (QUnknownInterface**)&iface ) == QS_OK && iface ) {
516 wdiface = iface; 524 wdiface = iface;
517 wdlib = lib; 525 wdlib = lib;
518 } else { 526 } else {
519 delete lib; 527 delete lib;
520 wdiface = new DefaultWindowDecoration; 528 wdiface = new DefaultWindowDecoration;
521 } 529 }
522 530
523 helpFile = QString(qApp->argv()[0]) + ".html"; 531 helpFile = QString(qApp->argv()[0]) + ".html";
524 QStringList helpPath = Global::helpPath(); 532 QStringList helpPath = Global::helpPath();
525 helpExists = FALSE; 533 helpExists = FALSE;
526 for (QStringList::ConstIterator it=helpPath.begin(); it!=helpPath.end() && !helpExists; ++it) { 534 for (QStringList::ConstIterator it=helpPath.begin(); it!=helpPath.end() && !helpExists; ++it) {
527 helpExists = QFile::exists( *it + "/" + helpFile ); 535 helpExists = QFile::exists( *it + "/" + helpFile );
528 //qDebug ( "Checking %s/%s for help: %d", (*it).latin1(), helpFile.latin1(),helpExists); 536 //qDebug ( "Checking %s/%s for help: %d", (*it).latin1(), helpFile.latin1(),helpExists);
529 } 537 }
530 qpeManager = new QPEManager( this ); 538 qpeManager = new QPEManager( this );
531 539
532 // Qtopia 1.5 compatibility 540 // Qtopia 1.5 compatibility
533 imageOk = *okImage ( 15 ); 541 imageOk = *okImage ( 15 );
534 imageClose = *closeImage ( 15 ); 542 imageClose = *closeImage ( 15 );
535 imageHelp = *helpImage ( 15 ); 543 imageHelp = *helpImage ( 15 );
536} 544}
537 545
538QPEDecoration::~QPEDecoration() 546QPEDecoration::~QPEDecoration()
539{ 547{
540 delete qpeManager; 548 delete qpeManager;
541} 549}
542 550
543const char **QPEDecoration::menuPixmap() 551const char **QPEDecoration::menuPixmap()
544{ 552{
545 return (const char **)0; 553 return (const char **)0;
546} 554}
547 555
548const char **QPEDecoration::closePixmap() 556const char **QPEDecoration::closePixmap()
549{ 557{
550 return (const char **)qpe_close_xpm; 558 return (const char **)qpe_close_xpm;
551} 559}
552 560
553const char **QPEDecoration::minimizePixmap() 561const char **QPEDecoration::minimizePixmap()
554{ 562{
555 return (const char **)qpe_accept_xpm; 563 return (const char **)qpe_accept_xpm;
556} 564}
557 565
558const char **QPEDecoration::maximizePixmap() 566const char **QPEDecoration::maximizePixmap()
559{ 567{
560 return (const char **)0; 568 return (const char **)0;
561} 569}
562 570
563const char **QPEDecoration::normalizePixmap() 571const char **QPEDecoration::normalizePixmap()
564{ 572{
565 return (const char **)0; 573 return (const char **)0;
566} 574}
567 575
568int QPEDecoration::getTitleHeight( const QWidget *w ) 576int QPEDecoration::getTitleHeight( const QWidget *w )
569{ 577{
570 WindowDecorationInterface::WindowData wd; 578 WindowDecorationInterface::WindowData wd;
571 windowData( w, wd ); 579 windowData( w, wd );
572 return wdiface->metric(WindowDecorationInterface::TitleHeight,&wd); 580 return wdiface->metric(WindowDecorationInterface::TitleHeight,&wd);
573} 581}
574 582
575/* 583/*
576 If rect is empty, no frame is added. (a hack, really) 584 If rect is empty, no frame is added. (a hack, really)
577*/ 585*/
578QRegion QPEDecoration::region(const QWidget *widget, const QRect &rect, QWSDecoration::Region type) 586QRegion QPEDecoration::region(const QWidget *widget, const QRect &rect, QWSDecoration::Region type)
579{ 587{
580 qpeManager->updateActive(); 588 qpeManager->updateActive();
581 589
582 WindowDecorationInterface::WindowData wd; 590 WindowDecorationInterface::WindowData wd;
583 windowData( widget, wd ); 591 windowData( widget, wd );
584 wd.rect = rect; 592 wd.rect = rect;
585 593
586 int titleHeight = wdiface->metric(WindowDecorationInterface::TitleHeight,&wd); 594 int titleHeight = wdiface->metric(WindowDecorationInterface::TitleHeight,&wd);
587 int okWidth = wdiface->metric(WindowDecorationInterface::OKWidth,&wd); 595 int okWidth = wdiface->metric(WindowDecorationInterface::OKWidth,&wd);
588 int closeWidth = wdiface->metric(WindowDecorationInterface::CloseWidth,&wd); 596 int closeWidth = wdiface->metric(WindowDecorationInterface::CloseWidth,&wd);
589 int helpWidth = wdiface->metric(WindowDecorationInterface::HelpWidth,&wd); 597 int helpWidth = wdiface->metric(WindowDecorationInterface::HelpWidth,&wd);
590 int grab = wdiface->metric(WindowDecorationInterface::CornerGrabSize,&wd); 598 int grab = wdiface->metric(WindowDecorationInterface::CornerGrabSize,&wd);
591 599
592 QRegion region; 600 QRegion region;
593 601
594 switch ((int)type) { 602 switch ((int)type) {
595 case Menu: 603 case Menu:
596 break; 604 break;
597 case Maximize: 605 case Maximize:
598 if ( !widget->inherits( "QDialog" ) && qApp->desktop()->width() > 350 ) { 606 if ( !widget->inherits( "QDialog" ) && qApp->desktop()->width() > 350 ) {
599 int maximizeWidth = wdiface->metric(WindowDecorationInterface::MaximizeWidth,&wd); 607 int maximizeWidth = wdiface->metric(WindowDecorationInterface::MaximizeWidth,&wd);
600 int left = rect.right() - maximizeWidth - closeWidth; 608 int left = rect.right() - maximizeWidth - closeWidth;
601 if ( ((HackWidget *)widget)->needsOk() ) 609 if ( ((HackWidget *)widget)->needsOk() )
602 left -= okWidth; 610 left -= okWidth;
603 QRect r(left, rect.top() - titleHeight, closeWidth, titleHeight); 611 QRect r(left, rect.top() - titleHeight, closeWidth, titleHeight);
604 region = r; 612 region = r;
605 } 613 }
606 break; 614 break;
607 case Minimize: 615 case Minimize:
608 if ( ((HackWidget *)widget)->needsOk() ) { 616 if ( ((HackWidget *)widget)->needsOk() ) {
609 QRect r(rect.right() - okWidth, 617 QRect r(rect.right() - okWidth,
610 rect.top() - titleHeight, okWidth, titleHeight); 618 rect.top() - titleHeight, okWidth, titleHeight);
611 if (r.left() > rect.left() + titleHeight) 619 if (r.left() > rect.left() + titleHeight)
612 region = r; 620 region = r;
613 } 621 }
614 break; 622 break;
615 case Close: 623 case Close:
616 { 624 {
617 int left = rect.right() - closeWidth; 625 int left = rect.right() - closeWidth;
618 if ( ((HackWidget *)widget)->needsOk() ) 626 if ( ((HackWidget *)widget)->needsOk() )
619 left -= okWidth; 627 left -= okWidth;
620 QRect r(left, rect.top() - titleHeight, closeWidth, titleHeight); 628 QRect r(left, rect.top() - titleHeight, closeWidth, titleHeight);
621 region = r; 629 region = r;
622 } 630 }
623 break; 631 break;
624 case Title: 632 case Title:
625 if ( !widget->isMaximized() ) { 633 if ( !widget->isMaximized() ) {
626 int width = rect.width() - helpWidth - closeWidth; 634 int width = rect.width() - helpWidth - closeWidth;
627 if ( ((HackWidget *)widget)->needsOk() ) 635 if ( ((HackWidget *)widget)->needsOk() )
628 width -= okWidth; 636 width -= okWidth;
629 QRect r(rect.left()+helpWidth, rect.top() - titleHeight, 637 QRect r(rect.left()+helpWidth, rect.top() - titleHeight,
630 width, titleHeight); 638 width, titleHeight);
631 if (r.width() > 0) 639 if (r.width() > 0)
632 region = r; 640 region = r;
633 } 641 }
634 break; 642 break;
635 case Help: 643 case Help:
636 if ( helpExists || widget->testWFlags(Qt::WStyle_ContextHelp) ) { 644 if ( helpExists || widget->testWFlags(Qt::WStyle_ContextHelp) ) {
637 QRect r(rect.left(), rect.top() - titleHeight, 645 QRect r(rect.left(), rect.top() - titleHeight,
638 helpWidth, titleHeight); 646 helpWidth, titleHeight);
639 region = r; 647 region = r;
640 } 648 }
641 break; 649 break;
642 case Top: 650 case Top:
643 if ( !widget->isMaximized() ) { 651 if ( !widget->isMaximized() ) {
644 QRegion m = wdiface->mask(&wd); 652 QRegion m = wdiface->mask(&wd);
645 QRect br = m.boundingRect(); 653 QRect br = m.boundingRect();
646 int b = wdiface->metric(WindowDecorationInterface::TopBorder,&wd); 654 int b = wdiface->metric(WindowDecorationInterface::TopBorder,&wd);
647 region = m & QRect( br.left()+grab, br.top(), 655 region = m & QRect( br.left()+grab, br.top(),
648 br.width()-2*grab, b ); 656 br.width()-2*grab, b );
649 } 657 }
650 break; 658 break;
651 case Left: 659 case Left:
652 if ( !widget->isMaximized() ) { 660 if ( !widget->isMaximized() ) {
653 QRegion m = wdiface->mask(&wd); 661 QRegion m = wdiface->mask(&wd);
654 QRect br = m.boundingRect(); 662 QRect br = m.boundingRect();
655 int b = wdiface->metric(WindowDecorationInterface::LeftBorder,&wd); 663 int b = wdiface->metric(WindowDecorationInterface::LeftBorder,&wd);
656 region = m & QRect( br.left(), br.top()+grab, 664 region = m & QRect( br.left(), br.top()+grab,
657 b, br.height()-2*grab ); 665 b, br.height()-2*grab );
658 } 666 }
659 break; 667 break;
660 case Right: 668 case Right:
661 if ( !widget->isMaximized() ) { 669 if ( !widget->isMaximized() ) {
662 QRegion m = wdiface->mask(&wd); 670 QRegion m = wdiface->mask(&wd);
663 QRect br = m.boundingRect(); 671 QRect br = m.boundingRect();
664 int b = wdiface->metric(WindowDecorationInterface::RightBorder,&wd); 672 int b = wdiface->metric(WindowDecorationInterface::RightBorder,&wd);
665 region = m & QRect( rect.right(), br.top()+grab, 673 region = m & QRect( rect.right(), br.top()+grab,
666 b, br.height()-2*grab ); 674 b, br.height()-2*grab );
667 } 675 }
668 break; 676 break;
669 case Bottom: 677 case Bottom:
670 if ( !widget->isMaximized() ) { 678 if ( !widget->isMaximized() ) {
671 QRegion m = wdiface->mask(&wd); 679 QRegion m = wdiface->mask(&wd);
672 QRect br = m.boundingRect(); 680 QRect br = m.boundingRect();
673 int b = wdiface->metric(WindowDecorationInterface::BottomBorder,&wd); 681 int b = wdiface->metric(WindowDecorationInterface::BottomBorder,&wd);
674 region = m & QRect( br.left()+grab, rect.bottom(), 682 region = m & QRect( br.left()+grab, rect.bottom(),
675 br.width()-2*grab, b ); 683 br.width()-2*grab, b );
676 } 684 }
677 break; 685 break;
678 case TopLeft: 686 case TopLeft:
679 if ( !widget->isMaximized() ) { 687 if ( !widget->isMaximized() ) {
680 QRegion m = wdiface->mask(&wd); 688 QRegion m = wdiface->mask(&wd);
681 QRect br = m.boundingRect(); 689 QRect br = m.boundingRect();
682 int tb = wdiface->metric(WindowDecorationInterface::TopBorder,&wd); 690 int tb = wdiface->metric(WindowDecorationInterface::TopBorder,&wd);
683 int lb = wdiface->metric(WindowDecorationInterface::LeftBorder,&wd); 691 int lb = wdiface->metric(WindowDecorationInterface::LeftBorder,&wd);
684 QRegion crgn( br.left(), br.top(), grab, tb ); 692 QRegion crgn( br.left(), br.top(), grab, tb );
685 crgn |= QRect( br.left(), br.top(), lb, grab ); 693 crgn |= QRect( br.left(), br.top(), lb, grab );
686 region = m & crgn; 694 region = m & crgn;
687 } 695 }
688 break; 696 break;
689 case TopRight: 697 case TopRight:
690 if ( !widget->isMaximized() ) { 698 if ( !widget->isMaximized() ) {
691 QRegion m = wdiface->mask(&wd); 699 QRegion m = wdiface->mask(&wd);
692 QRect br = m.boundingRect(); 700 QRect br = m.boundingRect();
693 int tb = wdiface->metric(WindowDecorationInterface::TopBorder,&wd); 701 int tb = wdiface->metric(WindowDecorationInterface::TopBorder,&wd);
694 int rb = wdiface->metric(WindowDecorationInterface::RightBorder,&wd); 702 int rb = wdiface->metric(WindowDecorationInterface::RightBorder,&wd);
695 QRegion crgn( br.right()-grab, br.top(), grab, tb ); 703 QRegion crgn( br.right()-grab, br.top(), grab, tb );
696 crgn |= QRect( br.right()-rb, br.top(), rb, grab ); 704 crgn |= QRect( br.right()-rb, br.top(), rb, grab );
697 region = m & crgn; 705 region = m & crgn;
698 } 706 }
699 break; 707 break;
700 case BottomLeft: 708 case BottomLeft:
701 if ( !widget->isMaximized() ) { 709 if ( !widget->isMaximized() ) {
702 QRegion m = wdiface->mask(&wd); 710 QRegion m = wdiface->mask(&wd);
703 QRect br = m.boundingRect(); 711 QRect br = m.boundingRect();
704 region = m & QRect( br.left(), br.bottom()-grab, grab, grab ); 712 region = m & QRect( br.left(), br.bottom()-grab, grab, grab );
705 } 713 }
706 break; 714 break;
707 case BottomRight: 715 case BottomRight:
708 if ( !widget->isMaximized() ) { 716 if ( !widget->isMaximized() ) {
709 QRegion m = wdiface->mask(&wd); 717 QRegion m = wdiface->mask(&wd);
710 QRect br = m.boundingRect(); 718 QRect br = m.boundingRect();
711 region = m & QRect( br.right()-grab, br.bottom()-grab, grab, grab ); 719 region = m & QRect( br.right()-grab, br.bottom()-grab, grab, grab );
712 } 720 }
713 break; 721 break;
714 case All: 722 case All:
715 if ( widget->isMaximized() ) 723 if ( widget->isMaximized() )
716 region = QWSDefaultDecoration::region(widget, rect, type); 724 region = QWSDefaultDecoration::region(widget, rect, type);
717 else 725 else
718 region = wdiface->mask(&wd) - rect; 726 region = wdiface->mask(&wd) - rect;
719 break; 727 break;
720 default: 728 default:
721 region = QWSDefaultDecoration::region(widget, rect, type); 729 region = QWSDefaultDecoration::region(widget, rect, type);
722 break; 730 break;
723 } 731 }
724 732
725 return region; 733 return region;
726} 734}
727 735
728void QPEDecoration::paint(QPainter *painter, const QWidget *widget) 736void QPEDecoration::paint(QPainter *painter, const QWidget *widget)
729{ 737{
730 WindowDecorationInterface::WindowData wd; 738 WindowDecorationInterface::WindowData wd;
731 windowData( widget, wd ); 739 windowData( widget, wd );
732 740
733 int titleWidth = getTitleWidth(widget); 741 int titleWidth = getTitleWidth(widget);
734 int titleHeight = wdiface->metric(WindowDecorationInterface::TitleHeight,&wd); 742 int titleHeight = wdiface->metric(WindowDecorationInterface::TitleHeight,&wd);
735 743
736 QRect rect(widget->rect()); 744 QRect rect(widget->rect());
737 745
738 // title bar rect 746 // title bar rect
739 QRect tr( rect.left(), rect.top() - titleHeight, rect.width(), titleHeight ); 747 QRect tr( rect.left(), rect.top() - titleHeight, rect.width(), titleHeight );
740 748
741#ifndef QT_NO_PALETTE 749#ifndef QT_NO_PALETTE
742 QRegion oldClip = painter->clipRegion(); 750 QRegion oldClip = painter->clipRegion();
743 painter->setClipRegion( oldClip - QRegion( tr ) );// reduce flicker 751 painter->setClipRegion( oldClip - QRegion( tr ) );// reduce flicker
744 wdiface->drawArea( WindowDecorationInterface::Border, painter, &wd ); 752 wdiface->drawArea( WindowDecorationInterface::Border, painter, &wd );
745 painter->setClipRegion( oldClip ); 753 painter->setClipRegion( oldClip );
746 754
747 if (titleWidth > 0) { 755 if (titleWidth > 0) {
748 const QColorGroup &cg = widget->palette().active(); 756 const QColorGroup &cg = widget->palette().active();
749 QBrush titleBrush; 757 QBrush titleBrush;
750 QPen titlePen; 758 QPen titlePen;
751 759
752 if ( wd.flags & WindowDecorationInterface::WindowData::Active ) { 760 if ( wd.flags & WindowDecorationInterface::WindowData::Active ) {
753 titleBrush = cg.brush(QColorGroup::Highlight); 761 titleBrush = cg.brush(QColorGroup::Highlight);
754 titlePen = cg.color(QColorGroup::HighlightedText); 762 titlePen = cg.color(QColorGroup::HighlightedText);
755 } else { 763 } else {
756 titleBrush = cg.brush(QColorGroup::Background); 764 titleBrush = cg.brush(QColorGroup::Background);
757 titlePen = cg.color(QColorGroup::Text); 765 titlePen = cg.color(QColorGroup::Text);
758 } 766 }
759 767
760 wdiface->drawArea( WindowDecorationInterface::Title, painter, &wd ); 768 wdiface->drawArea( WindowDecorationInterface::Title, painter, &wd );
761 769
762 // Draw caption 770 // Draw caption
763 painter->setPen(titlePen); 771 painter->setPen(titlePen);
764 QFont f( QApplication::font() ); 772 QFont f( QApplication::font() );
765 f.setWeight( QFont::Bold ); 773 f.setWeight( QFont::Bold );
766 painter->setFont(f); 774 painter->setFont(f);
767 wdiface->drawArea( WindowDecorationInterface::TitleText, painter, &wd ); 775 wdiface->drawArea( WindowDecorationInterface::TitleText, painter, &wd );
768 } 776 }
769#endif //QT_NO_PALETTE 777#endif //QT_NO_PALETTE
770 778
771 paintButton( painter, widget, (QWSDecoration::Region)Help, 0 ); 779 paintButton( painter, widget, (QWSDecoration::Region)Help, 0 );
772} 780}
773 781
774void QPEDecoration::paintButton(QPainter *painter, const QWidget *w, 782void QPEDecoration::paintButton(QPainter *painter, const QWidget *w,
775 QWSDecoration::Region type, int state) 783 QWSDecoration::Region type, int state)
776{ 784{
777 WindowDecorationInterface::Button b; 785 WindowDecorationInterface::Button b;
778 switch ((int)type) { 786 switch ((int)type) {
779 case Close: 787 case Close:
780 b = WindowDecorationInterface::Close; 788 b = WindowDecorationInterface::Close;
781 break; 789 break;
782 case Minimize: 790 case Minimize:
783 if ( ((HackWidget *)w)->needsOk() ) 791 if ( ((HackWidget *)w)->needsOk() )
784 b = WindowDecorationInterface::OK; 792 b = WindowDecorationInterface::OK;
785 else if ( helpExists ) 793 else if ( helpExists )
786 b = WindowDecorationInterface::Help; 794 b = WindowDecorationInterface::Help;
787 else 795 else
788 return; 796 return;
789 break; 797 break;
790 case Help: 798 case Help:
791 b = WindowDecorationInterface::Help; 799 b = WindowDecorationInterface::Help;
792 break; 800 break;
793 case Maximize: 801 case Maximize:
794 b = WindowDecorationInterface::Maximize; 802 b = WindowDecorationInterface::Maximize;
795 break; 803 break;
796 default: 804 default:
797 return; 805 return;
798 } 806 }
799 807
800 WindowDecorationInterface::WindowData wd; 808 WindowDecorationInterface::WindowData wd;
801 windowData( w, wd ); 809 windowData( w, wd );
802 810
803 int titleHeight = wdiface->metric(WindowDecorationInterface::TitleHeight,&wd); 811 int titleHeight = wdiface->metric(WindowDecorationInterface::TitleHeight,&wd);
804 QRect rect(w->rect()); 812 QRect rect(w->rect());
805 QRect tr( rect.left(), rect.top() - titleHeight, rect.width(), titleHeight ); 813 QRect tr( rect.left(), rect.top() - titleHeight, rect.width(), titleHeight );
806 QRect brect(region(w, w->rect(), type).boundingRect()); 814 QRect brect(region(w, w->rect(), type).boundingRect());
807 815
808 const QColorGroup &cg = w->palette().active(); 816 const QColorGroup &cg = w->palette().active();
809 if ( wd.flags & WindowDecorationInterface::WindowData::Active ) 817 if ( wd.flags & WindowDecorationInterface::WindowData::Active )
810 painter->setPen( cg.color(QColorGroup::HighlightedText) ); 818 painter->setPen( cg.color(QColorGroup::HighlightedText) );
811 else 819 else
812 painter->setPen( cg.color(QColorGroup::Text) ); 820 painter->setPen( cg.color(QColorGroup::Text) );
813 821
814 QRegion oldClip = painter->clipRegion(); 822 QRegion oldClip = painter->clipRegion();
815 painter->setClipRegion( QRect(brect.x(), tr.y(), brect.width(), tr.height()) ); // reduce flicker 823 painter->setClipRegion( QRect(brect.x(), tr.y(), brect.width(), tr.height()) ); // reduce flicker
816 wdiface->drawArea( WindowDecorationInterface::Title, painter, &wd ); 824 wdiface->drawArea( WindowDecorationInterface::Title, painter, &wd );
817 wdiface->drawButton( b, painter, &wd, brect.x(), brect.y(), brect.width(), brect.height(), (QWSButton::State)state ); 825 wdiface->drawButton( b, painter, &wd, brect.x(), brect.y(), brect.width(), brect.height(), (QWSButton::State)state );
818 painter->setClipRegion( oldClip ); 826 painter->setClipRegion( oldClip );
819} 827}
820 828
821//#define QPE_DONT_SHOW_TITLEBAR 829//#define QPE_DONT_SHOW_TITLEBAR
822 830
823void QPEDecoration::maximize( QWidget *widget ) 831void QPEDecoration::maximize( QWidget *widget )
824{ 832{
825#ifdef QPE_DONT_SHOW_TITLEBAR 833#ifdef QPE_DONT_SHOW_TITLEBAR
826 if ( !widget->inherits( "QDialog" ) ) { 834 if ( !widget->inherits( "QDialog" ) ) {
827 widget->setGeometry( qt_maxWindowRect ); 835 widget->setGeometry( qt_maxWindowRect );
828 } else 836 } else
829#endif 837#endif
830 { 838 {
831 QWSDecoration::maximize( widget ); 839 QWSDecoration::maximize( widget );
832 } 840 }
833} 841}
834 842
835#ifndef QT_NO_DIALOG 843#ifndef QT_NO_DIALOG
836class HackDialog : public QDialog 844class HackDialog : public QDialog
837{ 845{
838public: 846public:
839 void acceptIt() { 847 void acceptIt() {
840 if ( isA( "QMessageBox" ) ) 848 if ( isA( "QMessageBox" ) )
841 qApp->postEvent( this, new QKeyEvent( QEvent::KeyPress, Key_Enter, '\n', 0, "\n" ) ); 849 qApp->postEvent( this, new QKeyEvent( QEvent::KeyPress, Key_Enter, '\n', 0, "\n" ) );
842 else 850 else
843 accept(); 851 accept();
844 } 852 }
845}; 853};
846#endif 854#endif
847 855
848 856
849void QPEDecoration::minimize( QWidget *widget ) 857void QPEDecoration::minimize( QWidget *widget )
850{ 858{
851#ifndef QT_NO_DIALOG 859#ifndef QT_NO_DIALOG
852 // We use the minimize button as an "accept" button. 860 // We use the minimize button as an "accept" button.
853 if ( widget->inherits( "QDialog" ) ) { 861 if ( widget->inherits( "QDialog" ) ) {
854 HackDialog *d = (HackDialog *)widget; 862 HackDialog *d = (HackDialog *)widget;
855 d->acceptIt(); 863 d->acceptIt();
856 } 864 }
857#endif 865#endif
858 else if ( ((HackWidget *)widget)->needsOk() ) { 866 else if ( ((HackWidget *)widget)->needsOk() ) {
859 QSignal s; 867 QSignal s;
860 s.connect( widget, SLOT( accept() ) ); 868 s.connect( widget, SLOT( accept() ) );
861 s.activate(); 869 s.activate();
862 } else { 870 } else {
863 help( widget ); 871 help( widget );
864 } 872 }
865} 873}
866 874
867void QPEDecoration::help( QWidget *w ) 875void QPEDecoration::help( QWidget *w )
868{ 876{
869 if ( helpExists ) { 877 if ( helpExists ) {
870 Global::execute( "helpbrowser", helpFile ); 878 Global::execute( "helpbrowser", helpFile );
871 } else if ( w && w->testWFlags(Qt::WStyle_ContextHelp) ) { 879 } else if ( w && w->testWFlags(Qt::WStyle_ContextHelp) ) {
872 QWhatsThis::enterWhatsThisMode(); 880 QWhatsThis::enterWhatsThisMode();
873 QWhatsThis::leaveWhatsThisMode( qApp->tr( 881 QWhatsThis::leaveWhatsThisMode( QObject::tr(
874 "<Qt>Comprehensive help is not available for this application, " 882 "<Qt>Comprehensive help is not available for this application, "
875 "however there is context-sensitive help.<p>To use context-sensitive help:<p>" 883 "however there is context-sensitive help.<p>To use context-sensitive help:<p>"
876 "<ol><li>click and hold the help button." 884 "<ol><li>click and hold the help button."
877 "<li>when the title bar shows <b>What's this...</b>, " 885 "<li>when the title bar shows <b>What's this...</b>, "
878 "click on any control.</ol></Qt>" ) ); 886 "click on any control.</ol></Qt>" ) );
879 } 887 }
880} 888}
881 889
882void QPEDecoration::windowData( const QWidget *w, WindowDecorationInterface::WindowData &wd ) const 890void QPEDecoration::windowData( const QWidget *w, WindowDecorationInterface::WindowData &wd ) const
883{ 891{
884 wd.rect = w->rect(); 892 wd.rect = w->rect();
885 if ( qpeManager->whatsThisWidget() == w ) 893 if ( qpeManager->whatsThisWidget() == w )
886 wd.caption = qApp->tr("What's this..." ); 894 wd.caption = QObject::tr("What's this..." );
887 else 895 else
888 wd.caption = w->caption(); 896 wd.caption = w->caption();
889 wd.palette = qApp->palette(); 897 wd.palette = qApp->palette();
890 wd.flags = 0; 898 wd.flags = 0;
891 wd.flags |= w->isMaximized() ? WindowDecorationInterface::WindowData::Maximized : 0; 899 wd.flags |= w->isMaximized() ? WindowDecorationInterface::WindowData::Maximized : 0;
892 wd.flags |= w->testWFlags(Qt::WStyle_Dialog) ? WindowDecorationInterface::WindowData::Dialog : 0; 900 wd.flags |= w->testWFlags(Qt::WStyle_Dialog) ? WindowDecorationInterface::WindowData::Dialog : 0;
893 const QWidget *active = qpeManager->activeWidget(); 901 const QWidget *active = qpeManager->activeWidget();
894 wd.flags |= w == active ? WindowDecorationInterface::WindowData::Active : 0; 902 wd.flags |= w == active ? WindowDecorationInterface::WindowData::Active : 0;
895 wd.reserved = 1; 903 wd.reserved = 1;
896} 904}
897 905
898/* 906/*
899#ifndef QT_NO_POPUPMENU 907#ifndef QT_NO_POPUPMENU
900QPopupMenu *QPEDecoration::menu(QWSManager*, const QWidget*, const QPoint&) 908QPopupMenu *QPEDecoration::menu(QWSManager*, const QWidget*, const QPoint&)
901{ 909{
902 return 0; 910 return 0;
903} 911}
904#endif 912#endif
905*/ 913*/
906 914
907 915
908 916
909 917
910#endif // QT_NO_QWS_QPE_WM_STYLE 918#endif // QT_NO_QWS_QPE_WM_STYLE
diff --git a/library/qpedecoration_qws.h b/library/qpedecoration_qws.h
index 6628ba2..d0a2005 100644
--- a/library/qpedecoration_qws.h
+++ b/library/qpedecoration_qws.h
@@ -1,113 +1,113 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. 2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of the Qtopia Environment. 4** This file is part of the Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20#ifndef QPE_DECORATION_QWS_H__ 20#ifndef QPE_DECORATION_QWS_H__
21#define QPE_DECORATION_QWS_H__ 21#define QPE_DECORATION_QWS_H__
22 22
23 23
24#ifdef QWS 24#ifdef QWS
25#include <qwsdefaultdecoration_qws.h> 25#include <qwsdefaultdecoration_qws.h>
26#include <qimage.h> 26#include <qimage.h>
27#include <qdatetime.h> 27#include <qdatetime.h>
28#include <qguardedptr.h> 28#include <qguardedptr.h>
29#include "windowdecorationinterface.h" 29#include "windowdecorationinterface.h"
30 30
31 31
32#ifndef QT_NO_QWS_QPE_WM_STYLE 32#ifndef QT_NO_QWS_QPE_WM_STYLE
33 33
34class QPEManager; 34class QPEManager;
35class QTimer; 35class QTimer;
36 36
37class QPEDecoration : public QWSDefaultDecoration 37class QPEDecoration : public QWSDefaultDecoration
38{ 38{
39public: 39public:
40 QPEDecoration(); 40 QPEDecoration();
41 QPEDecoration( const QString &plugin ); 41 QPEDecoration( const QString &plugin );
42 virtual ~QPEDecoration(); 42 virtual ~QPEDecoration();
43 43
44 virtual QRegion region(const QWidget *, const QRect &rect, Region); 44 virtual QRegion region(const QWidget *, const QRect &rect, Region);
45 virtual void paint(QPainter *, const QWidget *); 45 virtual void paint(QPainter *, const QWidget *);
46 virtual void paintButton(QPainter *, const QWidget *, Region, int state); 46 virtual void paintButton(QPainter *, const QWidget *, Region, int state);
47 47
48 void maximize( QWidget * ); 48 void maximize( QWidget * );
49 void minimize( QWidget * ); 49 void minimize( QWidget * );
50 virtual void help( QWidget * ); 50 virtual void help( QWidget * );
51 51
52 enum QPERegion { Help=LastRegion+1 }; 52 enum QPERegion { Help=LastRegion+1 };
53 void buttonClicked( QPERegion r ); 53 void buttonClicked( QPERegion r );
54 54
55protected: 55protected:
56 virtual int getTitleHeight(const QWidget *); 56 virtual int getTitleHeight(const QWidget *);
57 virtual const char **menuPixmap(); 57 virtual const char **menuPixmap();
58 virtual const char **closePixmap(); 58 virtual const char **closePixmap();
59 virtual const char **minimizePixmap(); 59 virtual const char **minimizePixmap();
60 virtual const char **maximizePixmap(); 60 virtual const char **maximizePixmap();
61 virtual const char **normalizePixmap(); 61 virtual const char **normalizePixmap();
62 62
63private: 63private:
64 void windowData( const QWidget *w, WindowDecorationInterface::WindowData &wd ) const; 64 void windowData( const QWidget *w, WindowDecorationInterface::WindowData &wd ) const;
65 65
66 void init ( const QString & ); 66 void init ( const QString & );
67 67
68protected: 68protected:
69 QImage imageOk; 69 QImage imageOk;
70 QImage imageClose; 70 QImage imageClose;
71 QImage imageHelp; 71 QImage imageHelp;
72 QString helpFile; 72 QString helpFile;
73 bool helpExists; 73 bool helpExists;
74 QPEManager *qpeManager; 74 QPEManager *qpeManager;
75}; 75};
76 76
77 77
78class QPEManager : public QObject 78class QPEManager : public QObject
79{ 79{
80 Q_OBJECT 80 Q_OBJECT
81 friend class QPEDecoration; 81 friend class QPEDecoration;
82public: 82public:
83 QPEManager( QPEDecoration *d, QObject *parent=0 ); 83 QPEManager( QPEDecoration *d, QObject *parent=0 );
84 84
85 void updateActive(); 85 void updateActive();
86 const QWidget *activeWidget() const { return (const QWidget *)active; } 86 const QWidget *activeWidget() const { return (const QWidget *)active; }
87 const QWidget *whatsThisWidget() const { return (const QWidget *)whatsThis; } 87 const QWidget *whatsThisWidget() const { return (const QWidget *)whatsThis; }
88 88
89protected: 89protected:
90 int pointInQpeRegion( QWidget *w, const QPoint &p ); 90 int pointInQpeRegion( QWidget *w, const QPoint &p );
91 virtual bool eventFilter( QObject *, QEvent * ); 91 virtual bool eventFilter( QObject *, QEvent * );
92 void drawButton( QWidget *w, QPEDecoration::QPERegion r, int state ); 92 void drawButton( QWidget *w, QPEDecoration::QPERegion r, int state );
93 void drawTitle( QWidget *w ); 93 void drawTitle( QWidget *w );
94 94
95protected slots: 95protected slots:
96 void whatsThisTimeout(); 96 void whatsThisTimeout();
97 97
98protected: 98protected:
99 QPEDecoration *decoration; 99 QPEDecoration *decoration;
100 QGuardedPtr<QWidget> active; 100 QGuardedPtr<QWidget> active;
101 int helpState; 101 int helpState;
102 QTime pressTime; 102 QTime pressTime;
103 QTimer *wtTimer; 103 QTimer *wtTimer;
104 bool inWhatsThis; 104 bool inWhatsThis;
105 QGuardedPtr<QWidget> whatsThis; 105 QGuardedPtr<QWidget> whatsThis;
106}; 106};
107 107
108 108
109#endif // QT_NO_QWS_QPE_WM_STYLE 109#endif // QT_NO_QWS_QPE_WM_STYLE
110 110
111 111
112#endif // QPE_DECORATION_QWS_H__ 112#endif // QPE_DECORATION_QWS_H__
113#endif // QWS 113#endif // QWS
diff --git a/library/qpemessagebox.cpp b/library/qpemessagebox.cpp
index 02db760..13c45f1 100644
--- a/library/qpemessagebox.cpp
+++ b/library/qpemessagebox.cpp
@@ -1,13 +1,33 @@
1#include "stringutil.h"
2
1#include "qpemessagebox.h" 3#include "qpemessagebox.h"
2#include <qmessagebox.h> 4#include <qmessagebox.h>
3 5
6static void never_called_tr_function_um_libqpe_ts_etwas_unter_zu_jubeln() {
7(void)QMessageBox::tr("Yes");
8(void)QMessageBox::tr("No");
9}
10
11
12/*!
13 \class QPEMessageBox qpemessagebox.h
14 \brief A message box that provides yes, no and cancel options.
15
16 \ingroup qtopiaemb
17 */
18
19/*!
20 Displays a QMessageBox with parent \a parent and caption \a caption.
21 The message displayed is "Are you sure you want to delete: ",
22 followed by \a object.
23 */
4bool QPEMessageBox::confirmDelete( QWidget *parent, const QString & caption, 24bool QPEMessageBox::confirmDelete( QWidget *parent, const QString & caption,
5 const QString & object ) 25 const QString & object )
6{ 26{
7 QString msg = QObject::tr("Are you sure you want to delete\n %1?").arg( object ); 27 QString msg = QObject::tr("<qt>Are you sure you want to delete\n %1?</qt>").arg( Qtopia::escapeString( object ) ); // use <qt> an esacpe String....
8 int r = QMessageBox::warning( parent, caption, msg, QMessageBox::Yes, 28 int r = QMessageBox::warning( parent, caption, msg, QMessageBox::Yes,
9 QMessageBox::No|QMessageBox::Default| 29 QMessageBox::No|QMessageBox::Default|
10 QMessageBox::Escape, 0 ); 30 QMessageBox::Escape, 0 );
11 31
12 return r == QMessageBox::Yes; 32 return r == QMessageBox::Yes;
13} 33}
diff --git a/library/sound.cpp b/library/sound.cpp
index 1ff3b3f..c8704f9 100644
--- a/library/sound.cpp
+++ b/library/sound.cpp
@@ -1,198 +1,221 @@
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 <qpe/resource.h> 21#include <qpe/resource.h>
22#include <qpe/sound.h> 22#include <qpe/sound.h>
23#include <qpe/qcopenvelope_qws.h> 23#include <qpe/qcopenvelope_qws.h>
24 24
25#include <qsound.h> 25#include <qsound.h>
26#include <qfile.h> 26#include <qfile.h>
27 27
28#include <unistd.h> 28#include <unistd.h>
29#include <fcntl.h> 29#include <fcntl.h>
30#include <sys/ioctl.h> 30#include <sys/ioctl.h>
31#include <sys/soundcard.h> 31#include <sys/soundcard.h>
32 32
33#include "config.h" 33#include "config.h"
34#include <qmessagebox.h> 34#include <qmessagebox.h>
35#ifndef QT_NO_SOUND 35#ifndef QT_NO_SOUND
36static int WAVsoundDuration(const QString& filename) 36static int WAVsoundDuration(const QString& filename)
37{ 37{
38 // bad solution 38 // bad solution
39 39
40 // most of this is copied from qsoundqss.cpp 40 // most of this is copied from qsoundqss.cpp
41 41
42 QFile input(filename); 42 QFile input(filename);
43 if ( !input.open(IO_ReadOnly) ) 43 if ( !input.open(IO_ReadOnly) )
44 return 0; 44 return 0;
45 45
46 struct QRiffChunk { 46 struct QRiffChunk {
47 char id[4]; 47 char id[4];
48 Q_UINT32 size; 48 Q_UINT32 size;
49 char data[4/*size*/]; 49 char data[4/*size*/];
50 } chunk; 50 } chunk;
51 51
52 struct { 52 struct {
53 Q_INT16 formatTag; 53 Q_INT16 formatTag;
54 Q_INT16 channels; 54 Q_INT16 channels;
55 Q_INT32 samplesPerSec; 55 Q_INT32 samplesPerSec;
56 Q_INT32 avgBytesPerSec; 56 Q_INT32 avgBytesPerSec;
57 Q_INT16 blockAlign; 57 Q_INT16 blockAlign;
58 Q_INT16 wBitsPerSample; 58 Q_INT16 wBitsPerSample;
59 } chunkdata; 59 } chunkdata;
60 60
61 int total = 0; 61 int total = 0;
62 62
63 while(1) { 63 while(1) {
64 // Keep reading chunks... 64 // Keep reading chunks...
65 const int n = sizeof(chunk)-sizeof(chunk.data); 65 const int n = sizeof(chunk)-sizeof(chunk.data);
66 if ( input.readBlock((char*)&chunk,n) != n ) 66 if ( input.readBlock((char*)&chunk,n) != n )
67 break; 67 break;
68 if ( qstrncmp(chunk.id,"data",4) == 0 ) { 68 if ( qstrncmp(chunk.id,"data",4) == 0 ) {
69 total += chunkdata.avgBytesPerSec ? 69 total += chunkdata.avgBytesPerSec ?
70 chunk.size * 1000 / chunkdata.avgBytesPerSec : 0; 70 chunk.size * 1000 / chunkdata.avgBytesPerSec : 0;
71//qDebug("%d bytes of PCM (%dms)", chunk.size,chunkdata.avgBytesPerSec ? chunk.size * 1000 / chunkdata.avgBytesPerSec : 0); 71//qDebug("%d bytes of PCM (%dms)", chunk.size,chunkdata.avgBytesPerSec ? chunk.size * 1000 / chunkdata.avgBytesPerSec : 0);
72 input.at(input.at()+chunk.size-4); 72 input.at(input.at()+chunk.size-4);
73 } else if ( qstrncmp(chunk.id,"RIFF",4) == 0 ) { 73 } else if ( qstrncmp(chunk.id,"RIFF",4) == 0 ) {
74 char d[4]; 74 char d[4];
75 if ( input.readBlock(d,4) != 4 ) 75 if ( input.readBlock(d,4) != 4 )
76 return 0; 76 return 0;
77 if ( qstrncmp(d,"WAVE",4) != 0 ) { 77 if ( qstrncmp(d,"WAVE",4) != 0 ) {
78 // skip 78 // skip
79//qDebug("skip %.4s RIFF chunk",d); 79//qDebug("skip %.4s RIFF chunk",d);
80 if ( chunk.size < 10000000 ) 80 if ( chunk.size < 10000000 )
81 (void)input.at(input.at()+chunk.size-4); 81 (void)input.at(input.at()+chunk.size-4);
82 } 82 }
83 } else if ( qstrncmp(chunk.id,"fmt ",4) == 0 ) { 83 } else if ( qstrncmp(chunk.id,"fmt ",4) == 0 ) {
84 if ( input.readBlock((char*)&chunkdata,sizeof(chunkdata)) != sizeof(chunkdata) ) 84 if ( input.readBlock((char*)&chunkdata,sizeof(chunkdata)) != sizeof(chunkdata) )
85 return 0; 85 return 0;
86#define WAVE_FORMAT_PCM 1 86#define WAVE_FORMAT_PCM 1
87 if ( chunkdata.formatTag != WAVE_FORMAT_PCM ) { 87 if ( chunkdata.formatTag != WAVE_FORMAT_PCM ) {
88 //qDebug("WAV file: UNSUPPORTED FORMAT %d",chunkdata.formatTag); 88 //qDebug("WAV file: UNSUPPORTED FORMAT %d",chunkdata.formatTag);
89 return 0; 89 return 0;
90 } 90 }
91 } else { 91 } else {
92//qDebug("skip %.4s chunk",chunk.id); 92//qDebug("skip %.4s chunk",chunk.id);
93 // ignored chunk 93 // ignored chunk
94 if ( chunk.size < 10000000 ) 94 if ( chunk.size < 10000000 )
95 (void)input.at(input.at()+chunk.size); 95 (void)input.at(input.at()+chunk.size);
96 } 96 }
97 } 97 }
98 98
99//qDebug("%dms",total); 99//qDebug("%dms",total);
100 return total; 100 return total;
101} 101}
102 102
103class SoundData : public QSound { 103class SoundData : public QSound {
104public: 104public:
105 SoundData ( const QString& name ) : 105 SoundData ( const QString& name ) :
106 QSound ( Resource::findSound ( name )), 106 QSound ( Resource::findSound ( name )),
107 filename ( Resource::findSound ( name )) 107 filename ( Resource::findSound ( name ))
108 { 108 {
109 loopsleft=0; 109 loopsleft=0;
110 ms = WAVsoundDuration(filename); 110 ms = WAVsoundDuration(filename);
111 } 111 }
112 112
113 void playLoop ( int loopcnt = -1 ) 113 void playLoop ( int loopcnt = -1 )
114 { 114 {
115 // needs server support 115 // needs server support
116 loopsleft = loopcnt; 116 loopsleft = loopcnt;
117 117
118 if ( ms ) 118 if ( ms )
119 startTimer ( ms > 50 ? ms-50 : 0 ); // 50 for latency 119 startTimer ( ms > 50 ? ms-50 : 0 ); // 50 for latency
120 play ( ); 120 play ( );
121 } 121 }
122 122
123 void timerEvent ( QTimerEvent *e ) 123 void timerEvent ( QTimerEvent *e )
124 { 124 {
125 if ( loopsleft >= 0 ) { 125 if ( loopsleft >= 0 ) {
126 if ( --loopsleft <= 0 ) { 126 if ( --loopsleft <= 0 ) {
127 killTimer ( e-> timerId ( )); 127 killTimer ( e-> timerId ( ));
128 loopsleft = 0; 128 loopsleft = 0;
129 return; 129 return;
130 } 130 }
131 } 131 }
132 play(); 132 play();
133 } 133 }
134 134
135 bool isFinished ( ) const 135 bool isFinished ( ) const
136 { 136 {
137 return ( loopsleft == 0 ); 137 return ( loopsleft == 0 );
138 } 138 }
139 139
140private: 140private:
141 QString filename; 141 QString filename;
142 int loopsleft; 142 int loopsleft;
143 int ms; 143 int ms;
144}; 144};
145 145
146#endif 146#endif
147 147
148/*! Opens a wave sound file \a name for playing
149 * Resource is used for finding the file
150 **/
148Sound::Sound(const QString& name) 151Sound::Sound(const QString& name)
149{ 152{
150#ifndef QT_NO_SOUND 153#ifndef QT_NO_SOUND
151 d = new SoundData(name); 154 d = new SoundData(name);
152#endif 155#endif
153} 156}
154 157
158/*! Destroys the sound */
155Sound::~Sound() 159Sound::~Sound()
156{ 160{
157#ifndef QT_NO_SOUND 161#ifndef QT_NO_SOUND
158 delete d; 162 delete d;
159#endif 163#endif
160} 164}
161 165
166/*! Play the sound once */
162void Sound::play() 167void Sound::play()
163{ 168{
164#ifndef QT_NO_SOUND 169#ifndef QT_NO_SOUND
165 d->playLoop(1); 170 d->playLoop(1);
166#endif 171#endif
167} 172}
168 173
174/*! Play the sound, repeatedly until stop() is called */
169void Sound::playLoop() 175void Sound::playLoop()
170{ 176{
171#ifndef QT_NO_SOUND 177#ifndef QT_NO_SOUND
172 d->killTimers(); 178 d->killTimers();
173 d->playLoop(); 179 d->playLoop();
174#endif 180#endif
175} 181}
176 182
183/*! Do not repeat the sound after it finishes. This will end a playLoop() */
177void Sound::stop() 184void Sound::stop()
178{ 185{
179#ifndef QT_NO_SOUND 186#ifndef QT_NO_SOUND
180 d->killTimers(); 187 d->killTimers();
181#endif 188#endif
182} 189}
183 190
184bool Sound::isFinished() const 191bool Sound::isFinished() const
185{ 192{
186#ifndef QT_NO_SOUND 193#ifndef QT_NO_SOUND
187 return d->isFinished(); 194 return d->isFinished();
188#else 195#else
189 return true; 196 return true;
190#endif 197#endif
191} 198}
192 199
200/*! Sounds the audible system alarm. This is used for applications such
201 as Calendar when it needs to alarm the user of an event.
202*/
193void Sound::soundAlarm() 203void Sound::soundAlarm()
194{ 204{
195#ifndef QT_NO_COP 205#ifndef QT_NO_COP
196 QCopEnvelope( "QPE/TaskBar", "soundAlarm()" ); 206 QCopEnvelope( "QPE/TaskBar", "soundAlarm()" );
197#endif 207#endif
198} 208}
209
210
211/*! \class Sound
212 \brief The Sound class plays WAVE sound files and can invoke the audible alarm.
213
214 The Sound class is constructed with the .wav music file name. The Sound
215 class retrieves the sound file from the shared Resource class. This class
216 ties together QSound and the available sound resources.
217
218 To sound an audible system alarm, call the static method soundAlarm()
219
220 \ingroup qtopiaemb
221*/
diff --git a/library/storage.cpp b/library/storage.cpp
index 4e07ec6..1ce43bc 100644
--- a/library/storage.cpp
+++ b/library/storage.cpp
@@ -1,261 +1,346 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) Holger 'zecke' Freyther <freyther@kde.org> 2** Copyright (C) Holger 'zecke' Freyther <freyther@kde.org>
3** Copyright (C) Lorn Potter <llornkcor@handhelds.org> 3** Copyright (C) Lorn Potter <llornkcor@handhelds.org>
4** Copyright (C) 2000 Trolltech AS. All rights reserved. 4** Copyright (C) 2000 Trolltech AS. All rights reserved.
5** 5**
6** This file is part of Opie Environment. 6** This file is part of Opie Environment.
7** 7**
8** This file may be distributed and/or modified under the terms of the 8** This file may be distributed and/or modified under the terms of the
9** GNU General Public License version 2 as published by the Free Software 9** GNU General Public License version 2 as published by the Free Software
10** Foundation and appearing in the file LICENSE.GPL included in the 10** Foundation and appearing in the file LICENSE.GPL included in the
11** packaging of this file. 11** packaging of this file.
12** 12**
13** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 13** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
14** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 14** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
15** 15**
16** See http://www.trolltech.com/gpl/ for GPL licensing information. 16** See http://www.trolltech.com/gpl/ for GPL licensing information.
17** 17**
18** Contact info@trolltech.com if any conditions of this licensing are 18** Contact info@trolltech.com if any conditions of this licensing are
19** not clear to you. 19** not clear to you.
20** 20**
21**********************************************************************/ 21**********************************************************************/
22 22
23#include <qpe/storage.h> 23#include <qpe/storage.h>
24#if defined(QT_QWS_SL5XXX) 24#if defined(QT_QWS_SL5XXX)
25#include <qpe/custom.h> 25#include <qpe/custom.h>
26#endif 26#endif
27 27
28#include <qfile.h> 28#include <qfile.h>
29#include <qtimer.h> 29#include <qtimer.h>
30#include <qcopchannel_qws.h> 30#include <qcopchannel_qws.h>
31 31
32#include <stdio.h> 32#include <stdio.h>
33 33
34#if defined(_OS_LINUX_) || defined(Q_OS_LINUX) 34#if defined(_OS_LINUX_) || defined(Q_OS_LINUX)
35#include <sys/vfs.h> 35#include <sys/vfs.h>
36#include <mntent.h> 36#include <mntent.h>
37#endif 37#endif
38 38
39#include <qstringlist.h> 39#include <qstringlist.h>
40 40
41#include <sys/vfs.h> 41#include <sys/vfs.h>
42#include <mntent.h> 42#include <mntent.h>
43 43
44 44
45static bool isCF(const QString& m) 45static bool isCF(const QString& m)
46{ 46{
47 FILE* f = fopen("/var/run/stab", "r"); 47 FILE* f = fopen("/var/run/stab", "r");
48 if (!f) f = fopen("/var/state/pcmcia/stab", "r"); 48 if (!f) f = fopen("/var/state/pcmcia/stab", "r");
49 if (!f) f = fopen("/var/lib/pcmcia/stab", "r"); 49 if (!f) f = fopen("/var/lib/pcmcia/stab", "r");
50 if ( f ) { 50 if ( f ) {
51 char line[1024]; 51 char line[1024];
52 char devtype[80]; 52 char devtype[80];
53 char devname[80]; 53 char devname[80];
54 while ( fgets( line, 1024, f ) ) { 54 while ( fgets( line, 1024, f ) ) {
55 // 0 ide ide-cs 0 hda 3 0 55 // 0 ide ide-cs 0 hda 3 0
56 if ( sscanf(line,"%*d %s %*s %*s %s", devtype, devname )==2 ) 56 if ( sscanf(line,"%*d %s %*s %*s %s", devtype, devname )==2 )
57 { 57 {
58 if ( QString(devtype) == "ide" && m.find(devname)>0 ) { 58 if ( QString(devtype) == "ide" && m.find(devname)>0 ) {
59 fclose(f); 59 fclose(f);
60 return TRUE; 60 return TRUE;
61 } 61 }
62 } 62 }
63 } 63 }
64 fclose(f); 64 fclose(f);
65 } 65 }
66 return FALSE; 66 return FALSE;
67} 67}
68 68
69/*! \class StorageInfo storage.h
70 \brief The StorageInfo class describes the disks mounted on the file system.
71
72 This class provides access to the mount information for the Linux
73 filesystem. Each mount point is represented by the FileSystem class.
74 To ensure this class has the most up to date size information, call
75 the update() method. Note that this will automatically be signaled
76 by the operating system when a disk has been mounted or unmounted.
77
78 \ingroup qtopiaemb
79*/
80
81/*! Constructor that determines the current mount points of the filesystem.
82 The standard \a parent parameters is passed on to QObject.
83 */
69StorageInfo::StorageInfo( QObject *parent ) 84StorageInfo::StorageInfo( QObject *parent )
70 : QObject( parent ) 85 : QObject( parent )
71{ 86{
72 mFileSystems.setAutoDelete( TRUE ); 87 mFileSystems.setAutoDelete( TRUE );
73 channel = new QCopChannel( "QPE/Card", this ); 88 channel = new QCopChannel( "QPE/Card", this );
74 connect( channel, SIGNAL(received(const QCString &, const QByteArray &)), 89 connect( channel, SIGNAL(received(const QCString &, const QByteArray &)),
75 this, SLOT(cardMessage( const QCString &, const QByteArray &)) ); 90 this, SLOT(cardMessage( const QCString &, const QByteArray &)) );
76 update(); 91 update();
77} 92}
78 93
94/*! Returns the longest matching FileSystem that starts with the
95 same prefix as \a filename as its mount point.
96*/
79const FileSystem *StorageInfo::fileSystemOf( const QString &filename ) 97const FileSystem *StorageInfo::fileSystemOf( const QString &filename )
80{ 98{
81 for (QListIterator<FileSystem> i(mFileSystems); i.current(); ++i) { 99 for (QListIterator<FileSystem> i(mFileSystems); i.current(); ++i) {
82 if ( filename.startsWith( (*i)->path() ) ) 100 if ( filename.startsWith( (*i)->path() ) )
83 return (*i); 101 return (*i);
84 } 102 }
85 return 0; 103 return 0;
86} 104}
87 105
88 106
89void StorageInfo::cardMessage( const QCString& msg, const QByteArray& ) 107void StorageInfo::cardMessage( const QCString& msg, const QByteArray& )
90{ 108{
91 if ( msg == "mtabChanged()" ) 109 if ( msg == "mtabChanged()" )
92 update(); 110 update();
93} 111}
112
113
114/*! Updates the mount and free space available information for each mount
115 point. This method is automatically called when a disk is mounted or
116 unmounted.
117*/
94// cause of the lack of a d pointer we need 118// cause of the lack of a d pointer we need
95// to store informations in a config file :( 119// to store informations in a config file :(
96void StorageInfo::update() 120void StorageInfo::update()
97{ 121{
98 //qDebug("StorageInfo::updating"); 122 //qDebug("StorageInfo::updating");
99#if defined(_OS_LINUX_) || defined(Q_OS_LINUX) 123#if defined(_OS_LINUX_) || defined(Q_OS_LINUX)
100 struct mntent *me; 124 struct mntent *me;
101 FILE *mntfp = setmntent( "/etc/mtab", "r" ); 125 FILE *mntfp = setmntent( "/etc/mtab", "r" );
102 126
103 QStringList curdisks; 127 QStringList curdisks;
104 QStringList curopts; 128 QStringList curopts;
105 QStringList curfs; 129 QStringList curfs;
106 bool rebuild = FALSE; 130 bool rebuild = FALSE;
107 int n=0; 131 int n=0;
108 if ( mntfp ) { 132 if ( mntfp ) {
109 while ( (me = getmntent( mntfp )) != 0 ) { 133 while ( (me = getmntent( mntfp )) != 0 ) {
110 QString fs = me->mnt_fsname; 134 QString fs = me->mnt_fsname;
111 if ( fs.left(7)=="/dev/hd" || fs.left(7)=="/dev/sd" 135 if ( fs.left(7)=="/dev/hd" || fs.left(7)=="/dev/sd"
112 || fs.left(8)=="/dev/mtd" || fs.left(9) == "/dev/mmcd" 136 || fs.left(8)=="/dev/mtd" || fs.left(9) == "/dev/mmcd"
113 || fs.left( 14 ) == "/dev/mmc/part1" 137 || fs.left( 14 ) == "/dev/mmc/part1"
114 || fs.left(5)=="tmpfs" || fs.left(9)=="/dev/root" ) 138 || fs.left(5)=="tmpfs" || fs.left(9)=="/dev/root" )
115 { 139 {
116 n++; 140 n++;
117 curdisks.append(fs); 141 curdisks.append(fs);
118 curopts.append( me->mnt_opts ); 142 curopts.append( me->mnt_opts );
119 //qDebug("-->fs %s opts %s", fs.latin1(), me->mnt_opts ); 143 //qDebug("-->fs %s opts %s", fs.latin1(), me->mnt_opts );
120 curfs.append( me->mnt_dir ); 144 curfs.append( me->mnt_dir );
121 bool found = FALSE; 145 bool found = FALSE;
122 for (QListIterator<FileSystem> i(mFileSystems); i.current(); ++i) { 146 for (QListIterator<FileSystem> i(mFileSystems); i.current(); ++i) {
123 if ( (*i)->disk() == fs ) { 147 if ( (*i)->disk() == fs ) {
124 found = TRUE; 148 found = TRUE;
125 break; 149 break;
126 } 150 }
127 } 151 }
128 if ( !found ) 152 if ( !found )
129 rebuild = TRUE; 153 rebuild = TRUE;
130 } 154 }
131 } 155 }
132 endmntent( mntfp ); 156 endmntent( mntfp );
133 } 157 }
134 if ( rebuild || n != (int)mFileSystems.count() ) { 158 if ( rebuild || n != (int)mFileSystems.count() ) {
135 mFileSystems.clear(); 159 mFileSystems.clear();
136 QStringList::ConstIterator it=curdisks.begin(); 160 QStringList::ConstIterator it=curdisks.begin();
137 QStringList::ConstIterator fsit=curfs.begin(); 161 QStringList::ConstIterator fsit=curfs.begin();
138 QStringList::ConstIterator optsIt=curopts.begin(); 162 QStringList::ConstIterator optsIt=curopts.begin();
139 for (; it!=curdisks.end(); ++it, ++fsit, ++optsIt) { 163 for (; it!=curdisks.end(); ++it, ++fsit, ++optsIt) {
140 QString opts = *optsIt; 164 QString opts = *optsIt;
141 165
142 QString disk = *it; 166 QString disk = *it;
143 QString humanname; 167 QString humanname;
144 bool removable = FALSE; 168 bool removable = FALSE;
145 if ( isCF(disk) ) { 169 if ( isCF(disk) ) {
146 humanname = tr("CF Card"); 170 humanname = tr("CF Card");
147 removable = TRUE; 171 removable = TRUE;
148 } else if ( disk == "/dev/hda1" ) { 172 } else if ( disk == "/dev/hda1" ) {
149 humanname = tr("Hard Disk"); 173 humanname = tr("Hard Disk");
150 } else if ( disk.left(9) == "/dev/mmcd" ) { 174 } else if ( disk.left(9) == "/dev/mmcd" ) {
151 humanname = tr("SD Card"); 175 humanname = tr("SD Card");
152 removable = TRUE; 176 removable = TRUE;
153 } else if ( disk.left( 14 ) == "/dev/mmc/part1" ) { 177 } else if ( disk.left( 14 ) == "/dev/mmc/part1" ) {
154 humanname = tr("MMC Card"); 178 humanname = tr("MMC Card");
155 removable = TRUE; 179 removable = TRUE;
156 } else if ( disk.left(7) == "/dev/hd" ) 180 } else if ( disk.left(7) == "/dev/hd" )
157 humanname = tr("Hard Disk") + " " + disk; 181 humanname = tr("Hard Disk") + " " + disk;
158 else if ( disk.left(7) == "/dev/sd" ) 182 else if ( disk.left(7) == "/dev/sd" )
159 humanname = tr("SCSI Hard Disk") + " " + disk; 183 humanname = tr("SCSI Hard Disk") + " " + disk;
160 else if ( disk.left(14) == "/dev/mtdblock6" ) //openzaurus ramfs 184 else if ( disk.left(14) == "/dev/mtdblock6" ) //openzaurus ramfs
161 humanname = tr("Internal Memory"); 185 humanname = tr("Internal Memory");
162 else if ( disk == "/dev/mtdblock1" || humanname == "/dev/mtdblock/1" ) 186 else if ( disk == "/dev/mtdblock1" || humanname == "/dev/mtdblock/1" )
163 humanname = tr("Internal Storage"); 187 humanname = tr("Internal Storage");
164 else if ( disk.left(14) == "/dev/mtdblock/" ) 188 else if ( disk.left(14) == "/dev/mtdblock/" )
165 humanname = tr("Internal Storage") + " " + disk; 189 humanname = tr("Internal Storage") + " " + disk;
166 else if ( disk.left(13) == "/dev/mtdblock" ) 190 else if ( disk.left(13) == "/dev/mtdblock" )
167 humanname = tr("Internal Storage") + " " + disk; 191 humanname = tr("Internal Storage") + " " + disk;
168 else if ( disk.left(9) == "/dev/root" ) 192 else if ( disk.left(9) == "/dev/root" )
169 humanname = tr("Internal Storage") + " " + disk; 193 humanname = tr("Internal Storage") + " " + disk;
170 else if ( disk.left(5) == "tmpfs" ) //ipaqs /mnt/ramfs 194 else if ( disk.left(5) == "tmpfs" ) //ipaqs /mnt/ramfs
171 humanname = tr("Internal Memory"); 195 humanname = tr("Internal Memory");
172 FileSystem *fs = new FileSystem( disk, *fsit, humanname, removable, opts ); 196 FileSystem *fs = new FileSystem( disk, *fsit, humanname, removable, opts );
173 mFileSystems.append( fs ); 197 mFileSystems.append( fs );
174 } 198 }
175 emit disksChanged(); 199 emit disksChanged();
176 } else { 200 } else {
177 // just update them 201 // just update them
178 for (QListIterator<FileSystem> i(mFileSystems); i.current(); ++i) 202 for (QListIterator<FileSystem> i(mFileSystems); i.current(); ++i)
179 i.current()->update(); 203 i.current()->update();
180 } 204 }
181#endif 205#endif
182} 206}
183 207
184bool deviceTab( const char *device) { 208bool deviceTab( const char *device) {
185 QString name = device; 209 QString name = device;
186 bool hasDevice=false; 210 bool hasDevice=false;
187 struct mntent *me; 211 struct mntent *me;
188 FILE *mntfp = setmntent( "/etc/mtab", "r" ); 212 FILE *mntfp = setmntent( "/etc/mtab", "r" );
189 if ( mntfp ) { 213 if ( mntfp ) {
190 while ( (me = getmntent( mntfp )) != 0 ) { 214 while ( (me = getmntent( mntfp )) != 0 ) {
191 QString deviceName = me->mnt_fsname; 215 QString deviceName = me->mnt_fsname;
192// qDebug(deviceName); 216// qDebug(deviceName);
193 if( deviceName.left(name.length()) == name) { 217 if( deviceName.left(name.length()) == name) {
194 hasDevice = true; 218 hasDevice = true;
195 } 219 }
196 } 220 }
197 } 221 }
198 endmntent( mntfp ); 222 endmntent( mntfp );
199 return hasDevice; 223 return hasDevice;
200} 224}
201 225
202/*! 226/*!
203 * @fn static bool StorageInfo::hasCf() 227 * @fn static bool StorageInfo::hasCf()
204 * @brief returns whether device has Cf mounted 228 * @brief returns whether device has Cf mounted
205 * 229 *
206 */ 230 */
207bool StorageInfo::hasCf() 231bool StorageInfo::hasCf()
208{ 232{
209 return deviceTab("/dev/hd"); 233 return deviceTab("/dev/hd");
210} 234}
211 235
212/*! 236/*!
213 * @fn static bool StorageInfo::hasSd() 237 * @fn static bool StorageInfo::hasSd()
214 * @brief returns whether device has SD mounted 238 * @brief returns whether device has SD mounted
215 * 239 *
216 */ 240 */
217bool StorageInfo::hasSd() 241bool StorageInfo::hasSd()
218{ 242{
219 return deviceTab("/dev/mmcd"); 243 return deviceTab("/dev/mmcd");
220} 244}
221 245
222/*! 246/*!
223 * @fn static bool StorageInfo::hasMmc() 247 * @fn static bool StorageInfo::hasMmc()
224 * @brief reutrns whether device has mmc mounted 248 * @brief reutrns whether device has mmc mounted
225 * 249 *
226 */ 250 */
227bool StorageInfo::hasMmc() 251bool StorageInfo::hasMmc()
228{ 252{
229 bool hasMmc=false; 253 bool hasMmc=false;
230 if( deviceTab("/dev/mmc/part")) 254 if( deviceTab("/dev/mmc/part"))
231 hasMmc=true; 255 hasMmc=true;
232 if( deviceTab("/dev/mmcd")) 256 if( deviceTab("/dev/mmcd"))
233 hasMmc=true; 257 hasMmc=true;
234 return hasMmc; 258 return hasMmc;
235} 259}
236 260
261/*! \fn const QList<FileSystem> &StorageInfo::fileSystems() const
262 Returns a list of all available mounted file systems.
263
264 \warning This may change in Qtopia 3.x to return only relevant Qtopia file systems (and ignore mount points such as /tmp)
265*/
237 266
267/*! \fn void StorageInfo::disksChanged()
268 Gets emitted when a disk has been mounted or unmounted, such as when
269 a CF c
270*/
238//--------------------------------------------------------------------------- 271//---------------------------------------------------------------------------
239 272
240FileSystem::FileSystem( const QString &disk, const QString &path, const QString &name, bool rem, const QString &o ) 273FileSystem::FileSystem( const QString &disk, const QString &path, const QString &name, bool rem, const QString &o )
241 : fsdisk( disk ), fspath( path ), humanname( name ), blkSize(512), totalBlks(0), availBlks(0), removable( rem ), opts( o ) 274 : fsdisk( disk ), fspath( path ), humanname( name ), blkSize(512), totalBlks(0), availBlks(0), removable( rem ), opts( o )
242{ 275{
243 update(); 276 update();
244} 277}
245 278
246void FileSystem::update() 279void FileSystem::update()
247{ 280{
248#if defined(_OS_LINUX_) || defined(Q_OS_LINUX) 281#if defined(_OS_LINUX_) || defined(Q_OS_LINUX)
249 struct statfs fs; 282 struct statfs fs;
250 if ( !statfs( fspath.latin1(), &fs ) ) { 283 if ( !statfs( fspath.latin1(), &fs ) ) {
251 blkSize = fs.f_bsize; 284 blkSize = fs.f_bsize;
252 totalBlks = fs.f_blocks; 285 totalBlks = fs.f_blocks;
253 availBlks = fs.f_bavail; 286 availBlks = fs.f_bavail;
254 } else { 287 } else {
255 blkSize = 0; 288 blkSize = 0;
256 totalBlks = 0; 289 totalBlks = 0;
257 availBlks = 0; 290 availBlks = 0;
258 } 291 }
259#endif 292#endif
260} 293}
261 294
295/*! \class FileSystem storage.h
296 \brief The FileSystem class describes a single mount point.
297
298 This class simply returns information about a mount point, including
299 file system name, mount point, human readable name, size information
300 and mount options information.
301 \ingroup qtopiaemb
302
303 \sa StorageInfo
304*/
305
306/*! \fn const QString &FileSystem::disk() const
307 Returns the file system name, such as /dev/hda3
308*/
309
310/*! \fn const QString &FileSystem::path() const
311 Returns the mount path, such as /home
312*/
313
314/*! \fn const QString &FileSystem::name() const
315 Returns the translated, human readable name for the mount directory.
316*/
317
318/*! \fn const QString &FileSystem::options() const
319 Returns the mount options
320*/
321
322/*! \fn long FileSystem::blockSize() const
323 Returns the size of each block on the file system.
324*/
325
326/*! \fn long FileSystem::totalBlocks() const
327 Returns the total number of blocks on the file system
328*/
329
330/*! \fn long FileSystem::availBlocks() const
331 Returns the number of available blocks on the file system
332 */
333
334/*! \fn bool FileSystem::isRemovable() const
335 Returns flag whether the file system can be removed, such as a CF card
336 would be removable, but the internal memory wouldn't
337*/
338
339/*! \fn bool FileSystem::isWritable() const
340 Returns flag whether the file system is mounted as writable or read-only.
341 Returns FALSE if read-only, TRUE if read and write.
342*/
343
344/*! \fn QStringList StorageInfo::fileSystemNames() const
345 Returns a list of filesystem names.
346*/
diff --git a/library/task-opie-applets.control b/library/task-opie-applets.control
index 6ab1bb0..4714321 100644
--- a/library/task-opie-applets.control
+++ b/library/task-opie-applets.control
@@ -1,10 +1,10 @@
1Package: task-opie-applets 1Package: task-opie-applets
2Files: 2Files:
3Priority: optional 3Priority: optional
4Section: opie/applications 4Section: opie/applications
5Maintainer: Maximilian Reiss <max.reiss@gmx.de> 5Maintainer: Maximilian Reiss <max.reiss@gmx.de>
6Architecture: arm 6Architecture: arm
7Version: $QPE_VERSION-$SUB_VERSION
8Depends: task-opie-minimal, opie-batteryapplet, opie-clockapplet, opie-vmemo, opie-volumeapplet, opie-screenshotapplet, opie-pickboard, opie-multikey, opie-jumpx, opie-handwriting, opie-dvorak, opie-unikeyboard 7Depends: task-opie-minimal, opie-batteryapplet, opie-clockapplet, opie-vmemo, opie-volumeapplet, opie-screenshotapplet, opie-pickboard, opie-multikey, opie-jumpx, opie-handwriting, opie-dvorak, opie-unikeyboard
9Description: Opie taskbar applets 8Description: Opie taskbar applets
10 All applets for the taskbar 9 All applets for the taskbar
10Version: $QPE_VERSION$EXTRAVERSION
diff --git a/library/task-opie-apps.control b/library/task-opie-apps.control
index 567b50a..a9f00db 100644
--- a/library/task-opie-apps.control
+++ b/library/task-opie-apps.control
@@ -1,10 +1,10 @@
1Package: task-opie-apps 1Package: task-opie-apps
2Files: 2Files:
3Priority: optional 3Priority: optional
4Section: opie/applications 4Section: opie/applications
5Maintainer: Maximilian Reiss <max.reiss@gmx.de> 5Maintainer: Maximilian Reiss <max.reiss@gmx.de>
6Architecture: arm 6Architecture: arm
7Version: $QPE_VERSION-$SUB_VERSION 7Depends: task-opie-pim, opie-advancedfm, opie-calculator, opie-citytime, opie-clock, opie-embeddedkonsole, opie-libmadplugin, opie-libmpeg3plugin, opie-mail2, opie-mediaplayer, opie-qpdf, opie-showimg, opie-sounds, opie-sheet, opie-sysinfo, opie-systemtime, opie-tableviewer, opie-textedit, opie-wavplugin, timezones
8Depends: task-opie-pim, opie-advancedfm, opie-calculator, opie-citytime, opie-clock, opie-embeddedkonsole, opie-filebrowser, opie-libmadplugin, opie-libmpeg3plugin, opie-mail2, opie-mediaplayer, opie-qpdf, opie-showimg, opie-sounds, opie-sheet, opie-sysinfo, opie-systemtime, opie-tableviewer, opie-textedit, opie-wavplugin, timezones
9Description: Opie apps 8Description: Opie apps
10 Most applications. 9 Most applications.
10Version: $QPE_VERSION$EXTRAVERSION
diff --git a/library/task-opie-complete.control b/library/task-opie-complete.control
index 74ed446..983f6fb 100644
--- a/library/task-opie-complete.control
+++ b/library/task-opie-complete.control
@@ -1,10 +1,10 @@
1Package: task-opie-complete 1Package: task-opie-complete
2Files: 2Files:
3Priority: optional 3Priority: optional
4Section: opie/applications 4Section: opie/applications
5Maintainer: Maximilian Reiss <max.reiss@gmx.de> 5Maintainer: Maximilian Reiss <max.reiss@gmx.de>
6Architecture: arm 6Architecture: arm
7Version: $QPE_VERSION-$SUB_VERSION
8Depends: task-opie-apps, task-opie-settings, task-opie-games, task-opie-applets 7Depends: task-opie-apps, task-opie-settings, task-opie-games, task-opie-applets
9Description: All of Opie 8Description: All of Opie
10 All apps that are in the feed. 9 All apps that are in the feed.
10Version: $QPE_VERSION$EXTRAVERSION
diff --git a/library/task-opie-games.control b/library/task-opie-games.control
index 4e40b8e..e2a0ade 100644
--- a/library/task-opie-games.control
+++ b/library/task-opie-games.control
@@ -1,10 +1,10 @@
1Package: task-opie-games 1Package: task-opie-games
2Files: 2Files:
3Priority: optional 3Priority: optional
4Section: opie/games 4Section: opie/games
5Maintainer: Maximilian Reiss <max.reiss@gmx.de> 5Maintainer: Maximilian Reiss <max.reiss@gmx.de>
6Architecture: arm 6Architecture: arm
7Version: $QPE_VERSION-$SUB_VERSION
8Depends: task-opie-minimal, opie-fifteen, opie-go, opie-kbill, opie-kcheckers, opie-kpacman, opie-minesweep, opie-parashoot, opie-qasteroids, opie-snake, opie-solitaire, opie-tetrix, opie-tictac, opie-wordgame 7Depends: task-opie-minimal, opie-fifteen, opie-go, opie-kbill, opie-kcheckers, opie-kpacman, opie-minesweep, opie-parashoot, opie-qasteroids, opie-snake, opie-solitaire, opie-tetrix, opie-tictac, opie-wordgame
9Description: Opie game pack 8Description: Opie game pack
10 The full load of Opie games. 9 The full load of Opie games.
10Version: $QPE_VERSION$EXTRAVERSION
diff --git a/library/task-opie-minimal.control b/library/task-opie-minimal.control
index 6dec827..c629d51 100644
--- a/library/task-opie-minimal.control
+++ b/library/task-opie-minimal.control
@@ -1,13 +1,14 @@
1Package: task-opie-minimal 1Package: task-opie-minimal
2Files: 2Files:
3Priority: required 3Priority: required
4Section: opie/system 4Section: opie/system
5Maintainer: Opie Team <opie@handhelds.org> 5Maintainer: Opie Team <opie@handhelds.org>
6Architecture: arm 6Architecture: arm
7Version: $QPE_VERSION-$SUB_VERSION 7Version: $QPE_VERSION-$SUB_VERSION
8Depends: libqte2 (>=$QTE_VERSION), qte-fonts (>=$QTE_VERSION), opie-common, libqpe1, libopie1, opie-qcop, opie-sounds, apmd, opie-pics, timezones, opie-taskbar, opie-opiealarm 8Depends: libqte2 (>=$QTE_VERSION), qte-fonts (>=$QTE_VERSION), opie-common, libqpe1, libopie1, opie-qcop, opie-sounds, apmd, opie-pics, timezones, opie-aqpkg, opie-taskbar, opie-opiealarm, opie-login
9Provides: opie-base, qpe-base 9Provides: opie-base, qpe-base
10Replaces: opie-base, qpe-base 10Replaces: opie-base, qpe-base
11Description: Bootstrap Opie environment(minimal) 11Description: Bootstrap Opie environment(minimal)
12 A complete GUI environment for handhelds. This is the _minimal_ version. 12 A complete GUI environment for handhelds. This is the _minimal_ version.
13 You will probably want to install one of the opie-i18n-* packages. 13 You will probably want to install one of the opie-i18n-* packages.
14Version: $QPE_VERSION$EXTRAVERSION
diff --git a/library/task-opie-pim.control b/library/task-opie-pim.control
index addbab5..4ee4ede 100644
--- a/library/task-opie-pim.control
+++ b/library/task-opie-pim.control
@@ -1,10 +1,10 @@
1Package: task-opie-pim 1Package: task-opie-pim
2Files: 2Files:
3Priority: optional 3Priority: optional
4Section: opie/applications 4Section: opie/applications
5Maintainer: Maximilian Reiss <max.reiss@gmx.de> 5Maintainer: Maximilian Reiss <max.reiss@gmx.de>
6Architecture: arm 6Architecture: arm
7Version: $QPE_VERSION-$SUB_VERSION 7Depends: task-opie-minimal, opie-datebook, opie-todo, opie-addressbook, task-opie-today, opie-drawpad, opie-multikey, opie-osearch
8Depends: task-opie-minimal, opie-datebook, opie-todo, opie-addressbook, task-opie-today, opie-drawpad, opie-multikey
9Description: Opie pim applications 8Description: Opie pim applications
10 Base pack of opie pim applications. Also includes keyboard input. 9 Base pack of opie pim applications. Also includes keyboard input.
10Version: $QPE_VERSION$EXTRAVERSION
diff --git a/library/task-opie-settings.control b/library/task-opie-settings.control
index 4944229..e8ffb45 100644
--- a/library/task-opie-settings.control
+++ b/library/task-opie-settings.control
@@ -1,10 +1,11 @@
1Package: task-opie-settings 1Package: task-opie-settings
2Files: 2Files:
3Priority: optional 3Priority: optional
4Section: opie/applications 4Section: opie/applications
5Maintainer: Maximilian Reiss <max.reiss@gmx.de> 5Maintainer: Maximilian Reiss <max.reiss@gmx.de>
6Architecture: arm 6Architecture: arm
7Version: $QPE_VERSION-$SUB_VERSION 7Version: $QPE_VERSION-$SUB_VERSION
8Depends: task-opie-minimal, opie-citytime, opie-launcher-settings, opie-light-and-power, opie-security, opie-appearance, opie-backup, opie-language, opie-mediummount, opie-networksettings, opie-networksettingsplugin-wlan, opie-tabmanager 8Depends: task-opie-minimal, opie-appearance, opie-security, opie-systemtime, opie-light-and-power
9Description: Opie settings app 9Description: Opie settings app
10 All settings apps 10 All settings apps
11Version: $QPE_VERSION$EXTRAVERSION
diff --git a/library/task-opie.control b/library/task-opie.control
index 00841d3..57bb403 100644
--- a/library/task-opie.control
+++ b/library/task-opie.control
@@ -1,11 +1,11 @@
1Package: task-opie 1Package: task-opie
2Files: 2Files:
3Priority: required 3Priority: required
4Section: opie/system 4Section: opie/system
5Maintainer: Opie Team <opie@handhelds.org> 5Maintainer: Opie Team <opie@handhelds.org>
6Architecture: arm 6Architecture: arm
7Version: $QPE_VERSION-$SUB_VERSION 7Depends: task-opie-pim, opie-aqpkg, opie-multikey, opie-handwriting, opie-batteryapplet, opie-clockapplet, opie-volumeapplet, opie-clipboardapplet, opie-advancedfm, opie-calculator, opie-citytime, opie-clock, opie-embeddedkonsole, opie-irdaapplet, opie-launcher-settings, opie-light-and-power, opie-appearance, opie-login, opie-opiealarm, opie-qpdf, opie-showimg, opie-solitaire, opie-sysinfo, opie-textedit, opie-systemtime, opie-cardmon, opie-backup, opie-networksettings, opie-button-settings, opie-deco-flat, opie-style-flat
8Depends: task-opie-pim, opie-aqpkg, opie-multikey, opie-handwriting, opie-batteryapplet, opie-clockapplet, opie-volumeapplet, opie-clipboardapplet, opie-advancedfm, opie-calculator, opie-citytime, opie-clock, opie-embeddedkonsole, opie-irdaapplet, opie-launcher-settings, opie-light-and-power, opie-appearance, opie-login, opie-opiealarm, opie-qpdf, opie-showimg, opie-solitaire, opie-sysinfo, opie-textedit, opie-systemtime, opie-cardmon, opie-backup, opie-networksettings, opie-button-settings
9Description: Bootstrap Opie environment 8Description: Bootstrap Opie environment
10 A complete GUI environment for handhelds. 9 A complete GUI environment for handhelds.
11 You will probably want to install one of the opie-i18n-* packages. 10 You will probably want to install one of the opie-i18n-* packages.
11Version: $QPE_VERSION$EXTRAVERSION
diff --git a/library/timestring.cpp b/library/timestring.cpp
index 6443b6b..8f60b72 100644
--- a/library/timestring.cpp
+++ b/library/timestring.cpp
@@ -1,365 +1,365 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. 2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of the Qtopia Environment. 4** This file is part of the Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20 20
21#include "timestring.h" 21#include "timestring.h"
22#include <qobject.h> 22#include <qobject.h>
23#include <qpe/qpeapplication.h> //for qApp 23#include <qpe/qpeapplication.h> //for qApp
24#include "config.h" 24#include "config.h"
25 25
26 26
27class TimeStringFormatKeeper : public QObject 27class TimeStringFormatKeeper : public QObject
28{ 28{
29 Q_OBJECT 29 Q_OBJECT
30public: 30public:
31 static DateFormat currentFormat() 31 static DateFormat currentFormat()
32 { 32 {
33 if ( !self ) 33 if ( !self )
34 self = new TimeStringFormatKeeper; 34 self = new TimeStringFormatKeeper;
35 return self->format; 35 return self->format;
36 } 36 }
37private slots: 37private slots:
38 void formatChanged( DateFormat f ) 38 void formatChanged( DateFormat f )
39 { 39 {
40 format = f; 40 format = f;
41 } 41 }
42private: 42private:
43 static TimeStringFormatKeeper *self; 43 static TimeStringFormatKeeper *self;
44 DateFormat format; 44 DateFormat format;
45 45
46 TimeStringFormatKeeper() 46 TimeStringFormatKeeper()
47 : QObject( qApp ) 47 : QObject( qApp )
48 { 48 {
49 Config config("qpe"); 49 Config config("qpe");
50 config.setGroup( "Date" ); 50 config.setGroup( "Date" );
51 format = DateFormat(QChar(config.readEntry("Separator", "/")[0]), 51 format = DateFormat(QChar(config.readEntry("Separator", "/")[0]),
52 (DateFormat::Order)config .readNumEntry("ShortOrder", DateFormat::DayMonthYear), 52 (DateFormat::Order)config .readNumEntry("ShortOrder", DateFormat::DayMonthYear),
53 (DateFormat::Order)config.readNumEntry("LongOrder", DateFormat::DayMonthYear)); 53 (DateFormat::Order)config.readNumEntry("LongOrder", DateFormat::DayMonthYear));
54 54
55 connect( qApp, SIGNAL( dateFormatChanged(DateFormat) ), 55 connect( qApp, SIGNAL( dateFormatChanged(DateFormat) ),
56 this, SLOT( formatChanged( DateFormat ) ) ); 56 this, SLOT( formatChanged( DateFormat ) ) );
57 } 57 }
58}; 58};
59 59
60TimeStringFormatKeeper *TimeStringFormatKeeper::self = 0; 60TimeStringFormatKeeper *TimeStringFormatKeeper::self = 0;
61 61
62QString DateFormat::toNumberString() const 62QString DateFormat::toNumberString() const
63{ 63{
64 QString buf = ""; 64 QString buf = "";
65 // for each part of the order 65 // for each part of the order
66 for (int i = 0; i < 3; i++) { 66 for (int i = 0; i < 3; i++) {
67 // switch on the relavent 3 bits. 67 // switch on the relavent 3 bits.
68 switch((_shortOrder >> (i * 3)) & 0x0007) { 68 switch((_shortOrder >> (i * 3)) & 0x0007) {
69 case 0x0001: 69 case 0x0001:
70 buf += QObject::tr( "D" ); 70 buf += QObject::tr( "D" );
71 break; 71 break;
72 case 0x0002: 72 case 0x0002:
73 buf += QObject::tr( "M" ); 73 buf += QObject::tr( "M" );
74 break; 74 break;
75 case 0x0004: 75 case 0x0004:
76 buf += QObject::tr( "Y" ); 76 buf += QObject::tr( "Y" );
77 break; 77 break;
78 } 78 }
79 if (i < 2) 79 if (i < 2)
80 buf += _shortSeparator; 80 buf += _shortSeparator;
81 } 81 }
82 return buf; 82 return buf;
83} 83}
84 84
85QString DateFormat::toWordString() const 85QString DateFormat::toWordString() const
86{ 86{
87 QString buf = ""; 87 QString buf = "";
88 // for each part of the order 88 // for each part of the order
89 for (int i = 0; i < 3; i++) { 89 for (int i = 0; i < 3; i++) {
90 // switch on the relavent 3 bits. 90 // switch on the relavent 3 bits.
91 switch((_longOrder >> (i * 3)) & 0x0007) { 91 switch((_longOrder >> (i * 3)) & 0x0007) {
92 case 0x0001: 92 case 0x0001:
93 buf += QObject::tr( "day" ); 93 buf += QObject::tr( "day" );
94 if (i < 2) { 94 if (i < 2) {
95 if ((_shortOrder << ((i+1) * 3)) & 0x0007) 95 if ((_shortOrder << ((i+1) * 3)) & 0x0007)
96 buf += ", "; 96 buf += ", ";
97 else 97 else
98 buf += " "; 98 buf += " ";
99 } 99 }
100 break; 100 break;
101 case 0x0002: 101 case 0x0002:
102 buf += QObject::tr( "month" ); 102 buf += QObject::tr( "month" );
103 if (i < 2) 103 if (i < 2)
104 buf += " "; 104 buf += " ";
105 break; 105 break;
106 case 0x0004: 106 case 0x0004:
107 buf += QObject::tr( "year" ); 107 buf += QObject::tr( "year" );
108 if (i < 2) 108 if (i < 2)
109 buf += ", "; 109 buf += ", ";
110 break; 110 break;
111 } 111 }
112 } 112 }
113 return buf; 113 return buf;
114} 114}
115 115
116QString DateFormat::numberDate(const QDate &d, int v) const 116QString DateFormat::numberDate(const QDate &d, int v) const
117{ 117{
118 QString buf = ""; 118 QString buf = "";
119 119
120 int pad = 2; 120 int pad = 2;
121 121
122 // for each part of the order 122 // for each part of the order
123 for (int i = 0; i < 3; i++) { 123 for (int i = 0; i < 3; i++) {
124 // switch on the relavent 3 bits. 124 // switch on the relavent 3 bits.
125 switch((_shortOrder >> (i * 3)) & 0x0007) { 125 switch((_shortOrder >> (i * 3)) & 0x0007) {
126 case 0x0001: 126 case 0x0001:
127 if (pad==2) buf += QString().sprintf("%02d",d.day()); 127 if (pad==2) buf += QString().sprintf("%02d",d.day());
128 else buf += QString().sprintf("%d",d.day()); 128 else buf += QString().sprintf("%d",d.day());
129 break; 129 break;
130 case 0x0002: 130 case 0x0002:
131 if (i==0) { // no padding with only MM/DD/YY format 131 if (i==0) { // no padding with only MM/DD/YY format
132 pad=0; 132 pad=0;
133 } 133 }
134 if (pad==2) buf += QString().sprintf("%02d",d.month()); 134 if (pad==2) buf += QString().sprintf("%02d",d.month());
135 else buf += QString().sprintf("%d",d.month()); 135 else buf += QString().sprintf("%d",d.month());
136 break; 136 break;
137 case 0x0004: 137 case 0x0004:
138 { 138 {
139 int year = d.year(); 139 int year = d.year();
140 if (!(v & longNumber)) 140 if (!(v & longNumber))
141 year = year % 100; 141 year = year % 100;
142 buf += QString().sprintf("%02d",year); 142 buf += QString().sprintf("%02d",year);
143 } 143 }
144 break; 144 break;
145 } 145 }
146 if (i < 2) 146 if (i < 2)
147 buf += _shortSeparator; 147 buf += _shortSeparator;
148 } 148 }
149 return buf; 149 return buf;
150} 150}
151 151
152QString DateFormat::wordDate(const QDate &d, int v) const 152QString DateFormat::wordDate(const QDate &d, int v) const
153{ 153{
154 QString buf = ""; 154 QString buf = "";
155 // for each part of the order 155 // for each part of the order
156 if (v & showWeekDay) { 156 if (v & showWeekDay) {
157 QString weekDay = d.dayName(d.dayOfWeek()); 157 QString weekDay = d.dayName(d.dayOfWeek());
158 if (!(v & longWord)) { 158 if (!(v & longWord)) {
159 weekDay = weekDay.left(3); 159 weekDay = weekDay.left(3);
160 } 160 }
161 buf += weekDay; 161 buf += weekDay;
162 if ((_longOrder & 0x0007) == 0x0002) 162 if ((_longOrder & 0x0007) == 0x0002)
163 buf += ' '; 163 buf += ' ';
164 else 164 else
165 buf += ", "; 165 buf += ", ";
166 } 166 }
167 167
168 for (int i = 0; i < 3; i++) { 168 for (int i = 0; i < 3; i++) {
169 // switch on the relavent 3 bits. 169 // switch on the relavent 3 bits.
170 switch((_longOrder >> (i * 3)) & 0x0007) { 170 switch((_longOrder >> (i * 3)) & 0x0007) {
171 case 0x0001: 171 case 0x0001:
172 if (i==1) { 172 if (i==1) {
173 buf += QString().sprintf("%02d, ",d.day()); 173 buf += QString().sprintf("%02d, ",d.day());
174 } else { 174 } else {
175 buf += QString().sprintf("%2d",d.day()); 175 buf += QString().sprintf("%2d",d.day());
176 if (separator()=='.') // 2002/1/11 176 if (separator()=='.') // 2002/1/11
177 buf += ". "; 177 buf += ". ";
178 else 178 else
179 buf += " "; 179 buf += " ";
180 } 180 }
181 break; 181 break;
182 case 0x0002: 182 case 0x0002:
183 { 183 {
184 QString monthName = d.monthName(d.month()); 184 QString monthName = d.monthName(d.month());
185 if (!(v & longWord)) { 185 if (!(v & longWord)) {
186 monthName = monthName.left(3); 186 monthName = monthName.left(3);
187 } 187 }
188 buf += monthName; 188 buf += monthName;
189 } 189 }
190 if (i < 2) 190 if (i < 2)
191 buf += " "; 191 buf += " ";
192 break; 192 break;
193 case 0x0004: 193 case 0x0004:
194 { 194 {
195 int year = d.year(); 195 int year = d.year();
196 if (!(v & longNumber)) 196 if (!(v & longNumber))
197 year = year % 100; 197 year = year % 100;
198 198
199 if (year < 10) 199 if (year < 10)
200 buf += "0"; 200 buf += "0";
201 201
202 buf += QString::number(year); 202 buf += QString::number(year);
203 } 203 }
204 if (i < 2) 204 if (i < 2)
205 buf += ", "; 205 buf += ", ";
206 break; 206 break;
207 } 207 }
208 } 208 }
209 return buf; 209 return buf;
210} 210}
211 211
212#ifndef QT_NO_DATASTREAM 212#ifndef QT_NO_DATASTREAM
213void DateFormat::save(QDataStream &d) const 213void DateFormat::save(QDataStream &d) const
214{ 214{
215 d << _shortSeparator.unicode(); 215 d << _shortSeparator.unicode();
216 uint v= _shortOrder; 216 uint v= _shortOrder;
217 d << v; 217 d << v;
218 v = _longOrder; 218 v = _longOrder;
219 d << v; 219 d << v;
220} 220}
221 221
222void DateFormat::load(QDataStream &d) 222void DateFormat::load(QDataStream &d)
223{ 223{
224 ushort value; 224 ushort value;
225 d >> value; 225 d >> value;
226 _shortSeparator = QChar(value); 226 _shortSeparator = QChar(value);
227 uint v = 0; 227 uint v = 0;
228 d >> v; 228 d >> v;
229 _shortOrder = (Order)v; 229 _shortOrder = (Order)v;
230 v = 0; 230 v = 0;
231 d >> v; 231 d >> v;
232 _longOrder = (Order)v; 232 _longOrder = (Order)v;
233} 233}
234 234
235QDataStream &operator<<(QDataStream &s, const DateFormat&df) 235QDataStream &operator<<(QDataStream &s, const DateFormat&df)
236{ 236{
237 df.save(s); 237 df.save(s);
238 return s; 238 return s;
239} 239}
240QDataStream &operator>>(QDataStream &s, DateFormat&df) 240QDataStream &operator>>(QDataStream &s, DateFormat&df)
241{ 241{
242 df.load(s); 242 df.load(s);
243 return s; 243 return s;
244} 244}
245#endif 245#endif
246 246
247QString TimeString::shortDate( const QDate &d, DateFormat dtf ) 247QString TimeString::shortDate( const QDate &d, DateFormat dtf )
248{ 248{
249 return dtf.wordDate(d); 249 return dtf.wordDate(d);
250} 250}
251 251
252QString TimeString::dateString( const QDate &d, DateFormat dtf ) 252QString TimeString::dateString( const QDate &d, DateFormat dtf )
253{ 253{
254 return dtf.wordDate(d, DateFormat::longNumber | DateFormat::longWord); 254 return QObject::tr( dtf.wordDate(d, DateFormat::longNumber | DateFormat::longWord) );
255} 255}
256 256
257 257
258QString TimeString::longDateString( const QDate &d, DateFormat dtf ) 258QString TimeString::longDateString( const QDate &d, DateFormat dtf )
259{ 259{
260 return dtf.wordDate(d, DateFormat::showWeekDay | DateFormat::longNumber 260 return QObject::tr( dtf.wordDate(d, DateFormat::showWeekDay | DateFormat::longNumber
261 | DateFormat::longWord); 261 | DateFormat::longWord) );
262} 262}
263 263
264DateFormat TimeString::currentDateFormat() 264DateFormat TimeString::currentDateFormat()
265{ 265{
266 return TimeStringFormatKeeper::currentFormat(); 266 return TimeStringFormatKeeper::currentFormat();
267} 267}
268 268
269 269
270QString TimeString::dateString( const QDateTime &dt, bool ampm, bool seconds, DateFormat dtf ) 270QString TimeString::dateString( const QDateTime &dt, bool ampm, bool seconds, DateFormat dtf )
271{ 271{
272 const QDate& d = dt.date(); 272 const QDate& d = dt.date();
273 const QTime& t = dt.time(); 273 const QTime& t = dt.time();
274 274
275 // based on QDateTime::toString() 275 // based on QDateTime::toString()
276 QString buf = timeString(t,ampm,seconds); 276 QString buf = timeString(t,ampm,seconds);
277 buf += " "; 277 buf += " ";
278 buf += longDateString( d, dtf ); 278 buf += longDateString( d, dtf );
279 279
280 return buf; 280 return buf;
281} 281}
282 282
283QString TimeString::timeString( const QTime &t, bool ampm, bool seconds ) 283QString TimeString::timeString( const QTime &t, bool ampm, bool seconds )
284{ 284{
285 if ( !ampm ) { 285 if ( !ampm ) {
286 if ( seconds ) 286 if ( seconds )
287 return t.toString(); 287 return t.toString();
288 QString r = QString::number(t.hour()); 288 QString r = QString::number(t.hour());
289 if ( t.hour() < 10 ) r.prepend( "0" ); 289 if ( t.hour() < 10 ) r.prepend( "0" );
290 r.append( ":" ); 290 r.append( ":" );
291 if ( t.minute() < 10 ) r.append( "0" ); 291 if ( t.minute() < 10 ) r.append( "0" );
292 r.append(QString::number(t.minute())); 292 r.append(QString::number(t.minute()));
293 return r; 293 return r;
294 } 294 }
295 // ### else the hard case that should disappear in Qt 3.0 295 // ### else the hard case that should disappear in Qt 3.0
296 QString argString = seconds ? "%4:%5:%6 %7" : "%4:%5 %7"; 296 QString argString = seconds ? "%4:%5:%6 %7" : "%4:%5 %7";
297 int hour = t.hour(); 297 int hour = t.hour();
298 QString strMin = QString::number( t.minute() ); 298 QString strMin = QString::number( t.minute() );
299 QString strSec = QString::number( t.second() ); 299 QString strSec = QString::number( t.second() );
300 if ( hour > 12 ) 300 if ( hour > 12 )
301 argString = argString.arg( hour - 12, 2 ); 301 argString = argString.arg( hour - 12, 2 );
302 else { 302 else {
303 if ( hour == 0 ) 303 if ( hour == 0 )
304 argString = argString.arg( 12 ); 304 argString = argString.arg( 12 );
305 else 305 else
306 argString = argString.arg( hour, 2 ); 306 argString = argString.arg( hour, 2 );
307 } 307 }
308 if ( t.minute() < 10 ) 308 if ( t.minute() < 10 )
309 strMin.prepend( "0" ); 309 strMin.prepend( "0" );
310 if ( t.second() < 10 ) 310 if ( t.second() < 10 )
311 strSec.prepend( "0" ); 311 strSec.prepend( "0" );
312 argString = argString.arg( strMin ); 312 argString = argString.arg( strMin );
313 if ( seconds ) 313 if ( seconds )
314 argString = argString.arg( strSec ); 314 argString = argString.arg( strSec );
315 if ( hour >= 12 ) 315 if ( hour >= 12 )
316 argString = argString.arg( QObject::tr("PM") ); 316 argString = argString.arg( QObject::tr("PM") );
317 else 317 else
318 argString = argString.arg( QObject::tr("AM") ); 318 argString = argString.arg( QObject::tr("AM") );
319 return argString; 319 return argString;
320} 320}
321 321
322QString TimeString::shortTime( bool ampm, bool seconds ) 322QString TimeString::shortTime( bool ampm, bool seconds )
323{ 323{
324 static const char* const day[] = { 324 static const char* const day[] = {
325 QT_TRANSLATE_NOOP( "QObject", "Mon" ), 325 QT_TRANSLATE_NOOP( "QObject", "Mon" ),
326 QT_TRANSLATE_NOOP( "QObject", "Tue" ), 326 QT_TRANSLATE_NOOP( "QObject", "Tue" ),
327 QT_TRANSLATE_NOOP( "QObject", "Wed" ), 327 QT_TRANSLATE_NOOP( "QObject", "Wed" ),
328 QT_TRANSLATE_NOOP( "QObject", "Thu" ), 328 QT_TRANSLATE_NOOP( "QObject", "Thu" ),
329 QT_TRANSLATE_NOOP( "QObject", "Fri" ), 329 QT_TRANSLATE_NOOP( "QObject", "Fri" ),
330 QT_TRANSLATE_NOOP( "QObject", "Sat" ), 330 QT_TRANSLATE_NOOP( "QObject", "Sat" ),
331 QT_TRANSLATE_NOOP( "QObject", "Sun" ) 331 QT_TRANSLATE_NOOP( "QObject", "Sun" )
332 }; 332 };
333 // just create a shorter time String 333 // just create a shorter time String
334 QDateTime dtTmp = QDateTime::currentDateTime(); 334 QDateTime dtTmp = QDateTime::currentDateTime();
335 QString strTime; 335 QString strTime;
336 strTime = QObject::tr( day[dtTmp.date().dayOfWeek()-1] ) + " " + 336 strTime = QObject::tr( day[dtTmp.date().dayOfWeek()-1] ) + " " +
337 timeString( dtTmp.time(), ampm, seconds ); 337 timeString( dtTmp.time(), ampm, seconds );
338 return strTime; 338 return strTime;
339} 339}
340 340
341QString TimeString::dateString( const QDateTime &t, bool ampm ) 341QString TimeString::dateString( const QDateTime &t, bool ampm )
342{ 342{
343 return dateString(t,ampm,FALSE); 343 return dateString(t,ampm,FALSE);
344} 344}
345 345
346QString TimeString::timeString( const QTime &t, bool ampm) 346QString TimeString::timeString( const QTime &t, bool ampm)
347{ 347{
348 return timeString(t,ampm,FALSE); 348 return timeString(t,ampm,FALSE);
349} 349}
350 350
351QString TimeString::shortTime( bool ampm ) 351QString TimeString::shortTime( bool ampm )
352{ 352{
353 return shortTime(ampm,FALSE); 353 return shortTime(ampm,FALSE);
354} 354}
355 355
356QString TimeString::numberDateString( const QDate &d, DateFormat dtf ) 356QString TimeString::numberDateString( const QDate &d, DateFormat dtf )
357{ 357{
358 return dtf.numberDate(d); 358 return dtf.numberDate(d);
359} 359}
360QString TimeString::longNumberDateString( const QDate &d, DateFormat dtf ) 360QString TimeString::longNumberDateString( const QDate &d, DateFormat dtf )
361{ 361{
362 return dtf.numberDate(d,DateFormat::longNumber); 362 return dtf.numberDate(d,DateFormat::longNumber);
363} 363}
364 364
365#include "timestring.moc" 365#include "timestring.moc"
diff --git a/library/tzselect.cpp b/library/tzselect.cpp
index 335037e..4343eab 100644
--- a/library/tzselect.cpp
+++ b/library/tzselect.cpp
@@ -1,277 +1,303 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. 2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of the Qtopia Environment. 4** This file is part of the Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20 20
21#define QTOPIA_INTERNAL_TZSELECT_INC_LOCAL 21#define QTOPIA_INTERNAL_TZSELECT_INC_LOCAL
22 22
23#include "tzselect.h" 23#include "tzselect.h"
24#include "resource.h" 24#include "resource.h"
25#include "global.h" 25#include "global.h"
26#include "config.h" 26#include "config.h"
27#include <qtoolbutton.h> 27#include <qtoolbutton.h>
28#include <qfile.h> 28#include <qfile.h>
29#include <stdlib.h> 29#include <stdlib.h>
30 30
31#include <qcopchannel_qws.h> 31#include <qcopchannel_qws.h>
32#include <qpe/qpeapplication.h> 32#include <qpe/qpeapplication.h>
33#include <qmessagebox.h> 33#include <qmessagebox.h>
34 34
35/*!
36 \class TimeZoneSelector
37
38 \brief The TimeZoneSelector widget allows users to configure their time zone information.
39
40 \ingroup qtopiaemb
41*/
42
35class TimeZoneSelectorPrivate 43class TimeZoneSelectorPrivate
36{ 44{
37public: 45public:
38 TimeZoneSelectorPrivate() : includeLocal(FALSE) {} 46 TimeZoneSelectorPrivate() : includeLocal(FALSE) {}
39 bool includeLocal; 47 bool includeLocal;
40}; 48};
41 49
42TZCombo::TZCombo( QWidget *p, const char* n ) 50TZCombo::TZCombo( QWidget *p, const char* n )
43 : QComboBox( p, n ) 51 : QComboBox( p, n )
44{ 52{
45 updateZones(); 53 updateZones();
46 // check to see if TZ is set, if it is set the current item to that 54 // check to see if TZ is set, if it is set the current item to that
47 QString tz = getenv("TZ"); 55 QString tz = getenv("TZ");
48 if (parent()->inherits("TimeZoneSelector")) { 56 if (parent()->inherits("TimeZoneSelector")) {
49 if ( ((TimeZoneSelector *)parent())->localIncluded() ) { 57 if ( ((TimeZoneSelector *)parent())->localIncluded() ) {
50 // overide to the 'local' type. 58 // overide to the 'local' type.
51 tz = "None"; 59 tz = "None";
52 } 60 }
53 } 61 }
54 if ( !tz.isNull() ) { 62 if ( !tz.isNull() ) {
55 int n = 0, 63 int n = 0,
56 index = 0; 64 index = 0;
57 for ( QStringList::Iterator it=identifiers.begin(); 65 for ( QStringList::Iterator it=identifiers.begin();
58 it!=identifiers.end(); ++it) { 66 it!=identifiers.end(); ++it) {
59 if ( *it == tz ) 67 if ( *it == tz )
60 index = n; 68 index = n;
61 n++; 69 n++;
62 } 70 }
63 setCurrentItem(index); 71 setCurrentItem(index);
64 } else { 72 } else {
65 setCurrentItem(0); 73 setCurrentItem(0);
66 } 74 }
67 75
68 76
69 77
70 // listen on QPE/System 78 // listen on QPE/System
71#if !defined(QT_NO_COP) 79#if !defined(QT_NO_COP)
72 QCopChannel *channel = new QCopChannel( "QPE/System", this ); 80 QCopChannel *channel = new QCopChannel( "QPE/System", this );
73 connect( channel, SIGNAL(received(const QCString&, const QByteArray&)), 81 connect( channel, SIGNAL(received(const QCString&, const QByteArray&)),
74 this, SLOT(handleSystemChannel(const QCString&, const QByteArray&)) ); 82 this, SLOT(handleSystemChannel(const QCString&, const QByteArray&)) );
75#endif 83#endif
76 84
77 85
78} 86}
79 87
80TZCombo::~TZCombo() 88TZCombo::~TZCombo()
81{ 89{
82} 90}
83 91
84void TZCombo::updateZones() 92void TZCombo::updateZones()
85{ 93{
86 QString cur = currentText(); 94 QString cur = currentText();
87 clear(); 95 clear();
88 identifiers.clear(); 96 identifiers.clear();
89 int curix=0; 97 int curix=0;
90 QString tz = getenv("TZ"); 98 QString tz = getenv("TZ");
91 bool tzFound = FALSE; 99 bool tzFound = FALSE;
92 Config cfg("CityTime"); 100 Config cfg("CityTime");
93 cfg.setGroup("TimeZones"); 101 cfg.setGroup("TimeZones");
94 int listIndex = 0; 102 int listIndex = 0;
95 if (parent()->inherits("TimeZoneSelector")) { 103 if (parent()->inherits("TimeZoneSelector")) {
96 if ( ((TimeZoneSelector *)parent())->localIncluded() ) { 104 if ( ((TimeZoneSelector *)parent())->localIncluded() ) {
97 // overide to the 'local' type. 105 // overide to the 'local' type.
98 identifiers.append( "None" ); 106 identifiers.append( "None" );
99 insertItem( tr("None") ); 107 insertItem( tr("None") );
100 if ( cur == tr("None")) 108 if ( cur == tr("None"))
101 curix = 0; 109 curix = 0;
102 listIndex++; 110 listIndex++;
103 } 111 }
104 } 112 }
105 int cfgIndex = 0; 113 int cfgIndex = 0;
106 while (1) { 114 while (1) {
107 QString zn = cfg.readEntry("Zone"+QString::number(cfgIndex), QString::null); 115 QString zn = cfg.readEntry("Zone"+QString::number(cfgIndex), QString::null);
108 if ( zn.isNull() ) 116 if ( zn.isNull() )
109 break; 117 break;
110 if ( zn == tz ) 118 if ( zn == tz )
111 tzFound = TRUE; 119 tzFound = TRUE;
112 QString nm = cfg.readEntry("ZoneName"+QString::number(cfgIndex)); 120 QString nm = cfg.readEntry("ZoneName"+QString::number(cfgIndex));
113 identifiers.append(zn); 121 identifiers.append(zn);
114 insertItem(nm); 122 insertItem(nm);
115 if ( nm == cur ) 123 if ( nm == cur )
116 curix = listIndex; 124 curix = listIndex;
117 ++cfgIndex; 125 ++cfgIndex;
118 ++listIndex; 126 ++listIndex;
119 } 127 }
120 if ( !listIndex ) { 128 if ( !listIndex ) {
121 QStringList list = timezoneDefaults(); 129 QStringList list = timezoneDefaults();
122 for ( QStringList::Iterator it = list.begin(); it!=list.end(); ++it ) { 130 for ( QStringList::Iterator it = list.begin(); it!=list.end(); ++it ) {
123 QString zn = *it; 131 QString zn = *it;
124 QString nm = *++it; 132 QString nm = *++it;
125 if ( zn == tz ) 133 if ( zn == tz )
126 tzFound = TRUE; 134 tzFound = TRUE;
127 if ( nm == cur ) 135 if ( nm == cur )
128 curix = listIndex; 136 curix = listIndex;
129 identifiers.append(zn); 137 identifiers.append(zn);
130 insertItem(nm); 138 insertItem(nm);
131 ++listIndex; 139 ++listIndex;
132 } 140 }
133 } 141 }
134 for (QStringList::Iterator it=extras.begin(); it!=extras.end(); ++it) { 142 for (QStringList::Iterator it=extras.begin(); it!=extras.end(); ++it) {
135 insertItem(*it); 143 insertItem(*it);
136 identifiers.append(*it); 144 identifiers.append(*it);
137 if ( *it == cur ) 145 if ( *it == cur )
138 curix = listIndex; 146 curix = listIndex;
139 ++listIndex; 147 ++listIndex;
140 } 148 }
141 if ( !tzFound && !tz.isEmpty()) { 149 if ( !tzFound && !tz.isEmpty()) {
142 int i = tz.find( '/' ); 150 int i = tz.find( '/' );
143 QString nm = tz.mid( i+1 ).replace(QRegExp("_"), " "); 151 QString nm = tz.mid( i+1 ).replace(QRegExp("_"), " ");
144 identifiers.append(tz); 152 identifiers.append(tz);
145 insertItem(nm); 153 insertItem(nm);
146 if ( nm == cur ) 154 if ( nm == cur )
147 curix = listIndex; 155 curix = listIndex;
148 ++listIndex; 156 ++listIndex;
149 } 157 }
150 setCurrentItem(curix); 158 setCurrentItem(curix);
151} 159}
152 160
153 161
154void TZCombo::keyPressEvent( QKeyEvent *e ) 162void TZCombo::keyPressEvent( QKeyEvent *e )
155{ 163{
156 // ### should popup() in Qt 3.0 (it's virtual there) 164 // ### should popup() in Qt 3.0 (it's virtual there)
157// updateZones(); 165// updateZones();
158 QComboBox::keyPressEvent(e); 166 QComboBox::keyPressEvent(e);
159} 167}
160 168
161void TZCombo::mousePressEvent(QMouseEvent*e) 169void TZCombo::mousePressEvent(QMouseEvent*e)
162{ 170{
163 // ### should popup() in Qt 3.0 (it's virtual there) 171 // ### should popup() in Qt 3.0 (it's virtual there)
164// updateZones(); 172// updateZones();
165 QComboBox::mousePressEvent(e); 173 QComboBox::mousePressEvent(e);
166} 174}
167 175
168QString TZCombo::currZone() const 176QString TZCombo::currZone() const
169{ 177{
170 return identifiers[currentItem()]; 178 return identifiers[currentItem()];
171} 179}
172 180
173void TZCombo::setCurrZone( const QString& id ) 181void TZCombo::setCurrZone( const QString& id )
174{ 182{
175 for (int i=0; i< count(); i++) { 183 for (int i=0; i< count(); i++) {
176 if ( identifiers[i] == id ) { 184 if ( identifiers[i] == id ) {
177 setCurrentItem(i); 185 setCurrentItem(i);
178 return; 186 return;
179} 187}
180 } 188 }
181 insertItem(id); 189 insertItem(id);
182 setCurrentItem( count() - 1); 190 setCurrentItem( count() - 1);
183 identifiers.append(id); 191 identifiers.append(id);
184 extras.append(id); 192 extras.append(id);
185} 193}
186 194
187 195
188 196
189void TZCombo::handleSystemChannel(const QCString&msg, const QByteArray&) 197void TZCombo::handleSystemChannel(const QCString&msg, const QByteArray&)
190{ 198{
191 if ( msg == "timeZoneListChange()" ) { 199 if ( msg == "timeZoneListChange()" ) {
192 updateZones(); 200 updateZones();
193 } 201 }
194} 202}
195 203
204/*!
205 Creates a new TimeZoneSelector with parent \a p and name \a n. The combobox will be
206 populated with the available timezones.
207*/
196 208
197TimeZoneSelector::TimeZoneSelector(QWidget* p, const char* n) : 209TimeZoneSelector::TimeZoneSelector(QWidget* p, const char* n) :
198 QHBox(p,n) 210 QHBox(p,n)
199{ 211{
200 d = new TimeZoneSelectorPrivate(); 212 d = new TimeZoneSelectorPrivate();
201 // build the combobox before we do any updates... 213 // build the combobox before we do any updates...
202 cmbTz = new TZCombo( this, "timezone combo" ); 214 cmbTz = new TZCombo( this, "timezone combo" );
203 215
204 cmdTz = new QToolButton( this, "timezone button" ); 216 cmdTz = new QToolButton( this, "timezone button" );
205 cmdTz->setIconSet( Resource::loadIconSet( "citytime_icon" ) ); 217 cmdTz->setIconSet( Resource::loadIconSet( "citytime_icon" ) );
206 cmdTz->setMaximumSize( cmdTz->sizeHint() ); 218 cmdTz->setMaximumSize( cmdTz->sizeHint() );
207 219
208 // set up a connection to catch a newly selected item and throw our 220 // set up a connection to catch a newly selected item and throw our
209 // signal 221 // signal
210 QObject::connect( cmbTz, SIGNAL( activated( int ) ), 222 QObject::connect( cmbTz, SIGNAL( activated( int ) ),
211 this, SLOT( slotTzActive( int ) ) ); 223 this, SLOT( slotTzActive( int ) ) );
212 QObject::connect( cmdTz, SIGNAL( clicked() ), 224 QObject::connect( cmdTz, SIGNAL( clicked() ),
213 this, SLOT( slotExecute() ) ); 225 this, SLOT( slotExecute() ) );
214} 226}
215 227
228/*!
229 Destroys a TimeZoneSelector.
230*/
216TimeZoneSelector::~TimeZoneSelector() 231TimeZoneSelector::~TimeZoneSelector()
217{ 232{
218} 233}
219 234
220void TimeZoneSelector::setLocalIncluded(bool b) 235void TimeZoneSelector::setLocalIncluded(bool b)
221{ 236{
222 d->includeLocal = b; 237 d->includeLocal = b;
223 cmbTz->updateZones(); 238 cmbTz->updateZones();
224} 239}
225 240
226bool TimeZoneSelector::localIncluded() const 241bool TimeZoneSelector::localIncluded() const
227{ 242{
228 return d->includeLocal; 243 return d->includeLocal;
229} 244}
230 245
231 246/*!
247 Returns the currently selected timezone as a string in location format, e.g.
248 \code Australia/Brisbane \endcode
249*/
232QString TimeZoneSelector::currentZone() const 250QString TimeZoneSelector::currentZone() const
233{ 251{
234 return cmbTz->currZone(); 252 return cmbTz->currZone();
235} 253}
236 254
255/*!
256 Sets the current timezone to \a id.
257*/
237void TimeZoneSelector::setCurrentZone( const QString& id ) 258void TimeZoneSelector::setCurrentZone( const QString& id )
238{ 259{
239 cmbTz->setCurrZone( id ); 260 cmbTz->setCurrZone( id );
240} 261}
262/*! \fn void TimeZoneSelector::signalNewTz( const QString& id )
263 This signal is emitted when a timezone has been selected by the user. The id
264 is a \l QString in location format, eg \code Australia/Brisbane \endcode
265*/
266
241 267
242void TimeZoneSelector::slotTzActive( int ) 268void TimeZoneSelector::slotTzActive( int )
243{ 269{
244 emit signalNewTz( cmbTz->currZone() ); 270 emit signalNewTz( cmbTz->currZone() );
245} 271}
246 272
247void TimeZoneSelector::slotExecute( void ) 273void TimeZoneSelector::slotExecute( void )
248{ 274{
249 // execute the world time application... 275 // execute the world time application...
250 if (QFile::exists(QPEApplication::qpeDir()+"bin/citytime")) 276 if (QFile::exists(QPEApplication::qpeDir()+"bin/citytime"))
251 Global::execute( "citytime" ); 277 Global::execute( "citytime" );
252 else 278 else
253 QMessageBox::warning(this,tr("citytime executable not found"), 279 QMessageBox::warning(this,tr("citytime executable not found"),
254 tr("In order to choose the time zones,\nplease install citytime.")); 280 tr("In order to choose the time zones,\nplease install citytime."));
255} 281}
256 282
257QStringList timezoneDefaults( void ) 283QStringList timezoneDefaults( void )
258{ 284{
259 QStringList tzs; 285 QStringList tzs;
260 // load up the list just like the file format (citytime.cpp) 286 // load up the list just like the file format (citytime.cpp)
261 tzs.append( "America/New_York" ); 287 tzs.append( "America/New_York" );
262 tzs.append( "New York" ); 288 tzs.append( "New York" );
263 tzs.append( "America/Los_Angeles" ); 289 tzs.append( "America/Los_Angeles" );
264 tzs.append( "Los Angeles" ); 290 tzs.append( "Los Angeles" );
265 tzs.append( "Australia/Brisbane" ); 291 tzs.append( "Australia/Brisbane" );
266 tzs.append( "Brisbane" ); 292 tzs.append( "Brisbane" );
267 tzs.append( "Europe/Berlin" ); 293 tzs.append( "Europe/Berlin" );
268 tzs.append( "Berlin" ); 294 tzs.append( "Berlin" );
269 tzs.append( "Asia/Tokyo" ); 295 tzs.append( "Asia/Tokyo" );
270 tzs.append( "Tokyo" ); 296 tzs.append( "Tokyo" );
271 tzs.append( "America/Denver" ); 297 tzs.append( "America/Denver" );
272 tzs.append( "Denver" ); 298 tzs.append( "Denver" );
273 299
274 return tzs; 300 return tzs;
275} 301}
276 302
277 303
diff --git a/library/version.h b/library/version.h
index d72af53..bef9aa7 100644
--- a/library/version.h
+++ b/library/version.h
@@ -1,3 +1,3 @@
1#define QPE_VENDOR "Project Opie" 1#define QPE_VENDOR "Project Opie"
2#define QPE_VERSION "0.9.3-snapshot" 2#define QPE_VERSION "1.0.1-snapshot"
3#define SUB_VERSION "" 3#define SUB_VERSION ""