-rw-r--r-- | libopie2/opiecore/oglobal.cpp | 152 | ||||
-rw-r--r-- | libopie2/opiecore/oglobal.h | 47 |
2 files changed, 153 insertions, 46 deletions
diff --git a/libopie2/opiecore/oglobal.cpp b/libopie2/opiecore/oglobal.cpp index 352151b..879e80f 100644 --- a/libopie2/opiecore/oglobal.cpp +++ b/libopie2/opiecore/oglobal.cpp | |||
@@ -1,50 +1,56 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of the Opie Project | 2 | This file is part of the Opie Project |
3 | Copyright (C) 2003 Michael 'Mickey' Lauer <mickey@Vanille.de> | 3 | Copyright (C) 2003 Michael 'Mickey' Lauer <mickey@Vanille.de> |
4 | Copyright (C) 2004 Holger 'zecke' Freyther <zecke@handhelds.org> | 4 | =. Copyright (C) 2004 Holger 'zecke' Freyther <zecke@handhelds.org> |
5 | =. | ||
6 | .=l. | 5 | .=l. |
7 | .>+-= | 6 | .>+-= |
8 | _;:, .> :=|. This program is free software; you can | 7 | _;:, .> :=|. This program is free software; you can |
9 | .> <`_, > . <= redistribute it and/or modify it under | 8 | .> <`_, > . <= redistribute it and/or modify it under |
10 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public | 9 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public |
11 | .="- .-=="i, .._ License as published by the Free Software | 10 | .="- .-=="i, .._ License as published by the Free Software |
12 | - . .-<_> .<> Foundation; either version 2 of the License, | 11 | - . .-<_> .<> Foundation; either version 2 of the License, |
13 | ._= =} : or (at your option) any later version. | 12 | ._= =} : or (at your option) any later version. |
14 | .%`+i> _;_. | 13 | .%`+i> _;_. |
15 | .i_,=:_. -<s. This program is distributed in the hope that | 14 | .i_,=:_. -<s. This program is distributed in the hope that |
16 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 15 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
17 | : .. .:, . . . without even the implied warranty of | 16 | : .. .:, . . . without even the implied warranty of |
18 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | 17 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A |
19 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU | 18 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU |
20 | ..}^=.= = ; Library General Public License for more | 19 | ..}^=.= = ; Library General Public License for more |
21 | ++= -. .` .: details. | 20 | ++= -. .` .: details. |
22 | : = ...= . :.=- | 21 | : = ...= . :.=- |
23 | -. .:....=;==+<; You should have received a copy of the GNU | 22 | -. .:....=;==+<; You should have received a copy of the GNU |
24 | -_. . . )=. = Library General Public License along with | 23 | -_. . . )=. = Library General Public License along with |
25 | -- :-=` this library; see the file COPYING.LIB. | 24 | -- :-=` this library; see the file COPYING.LIB. |
26 | If not, write to the Free Software Foundation, | 25 | If not, write to the Free Software Foundation, |
27 | Inc., 59 Temple Place - Suite 330, | 26 | Inc., 59 Temple Place - Suite 330, |
28 | Boston, MA 02111-1307, USA. | 27 | Boston, MA 02111-1307, USA. |
29 | */ | 28 | */ |
30 | 29 | ||
31 | #include <opie2/oglobal.h> | 30 | #include <opie2/oglobal.h> |
32 | 31 | ||
33 | #include <qfile.h> | 32 | #include <qfile.h> |
34 | #include <qtextstream.h> | 33 | #include <qtextstream.h> |
34 | #include <qdir.h> | ||
35 | #include <qpe/mimetype.h> | ||
36 | #include <qpe/qpeapplication.h> | ||
37 | #include <qpe/storage.h> | ||
38 | |||
39 | #include <unistd.h> | ||
40 | #include <sys/types.h> | ||
35 | 41 | ||
36 | static const char Base64EncMap[64] = | 42 | static const char Base64EncMap[64] = |
37 | { | 43 | { |
38 | 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, | 44 | 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, |
39 | 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, | 45 | 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, |
40 | 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, | 46 | 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, |
41 | 0x59, 0x5A, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, | 47 | 0x59, 0x5A, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, |
42 | 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, | 48 | 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, |
43 | 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, | 49 | 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, |
44 | 0x77, 0x78, 0x79, 0x7A, 0x30, 0x31, 0x32, 0x33, | 50 | 0x77, 0x78, 0x79, 0x7A, 0x30, 0x31, 0x32, 0x33, |
45 | 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x2B, 0x2F | 51 | 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x2B, 0x2F |
46 | }; | 52 | }; |
47 | 53 | ||
48 | static char Base64DecMap[128] = | 54 | static char Base64DecMap[128] = |
49 | { | 55 | { |
50 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | 56 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
@@ -54,32 +60,33 @@ static char Base64DecMap[128] = | |||
54 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | 60 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
55 | 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x3F, | 61 | 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x3F, |
56 | 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, | 62 | 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, |
57 | 0x3C, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | 63 | 0x3C, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
58 | 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, | 64 | 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, |
59 | 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, | 65 | 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, |
60 | 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, | 66 | 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, |
61 | 0x17, 0x18, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, | 67 | 0x17, 0x18, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, |
62 | 0x00, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20, | 68 | 0x00, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20, |
63 | 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, | 69 | 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, |
64 | 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, | 70 | 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, |
65 | 0x31, 0x32, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00 | 71 | 0x31, 0x32, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00 |
66 | }; | 72 | }; |
67 | 73 | ||
68 | 74 | ||
69 | OConfig* OGlobal::_config = 0; | 75 | OConfig* OGlobal::_config = 0; |
76 | OConfig* OGlobal::_qpe_config = 0; | ||
70 | 77 | ||
71 | OConfig* OGlobal::config() | 78 | OConfig* OGlobal::config() |
72 | { | 79 | { |
73 | if ( !OGlobal::_config ) | 80 | if ( !OGlobal::_config ) |
74 | { | 81 | { |
75 | // odebug classes are reading config, so can't use them here! | 82 | // odebug classes are reading config, so can't use them here! |
76 | qDebug( "OGlobal::creating global configuration instance." ); | 83 | qDebug( "OGlobal::creating global configuration instance." ); |
77 | OGlobal::_config = new OConfig( "global" ); | 84 | OGlobal::_config = new OConfig( "global" ); |
78 | } | 85 | } |
79 | return OGlobal::_config; | 86 | return OGlobal::_config; |
80 | } | 87 | } |
81 | 88 | ||
82 | 89 | ||
83 | /** | 90 | /** |
84 | * Return the internal builtin Global::Command object | 91 | * Return the internal builtin Global::Command object |
85 | * | 92 | * |
@@ -290,16 +297,115 @@ QByteArray OGlobal::decodeBase64( const QByteArray& in) { | |||
290 | didx += 3; | 297 | didx += 3; |
291 | } | 298 | } |
292 | } | 299 | } |
293 | 300 | ||
294 | if (didx < len) | 301 | if (didx < len) |
295 | out[didx] = (((out[sidx] << 2) & 255) | ((out[sidx+1] >> 4) & 003)); | 302 | out[didx] = (((out[sidx] << 2) & 255) | ((out[sidx+1] >> 4) & 003)); |
296 | 303 | ||
297 | if (++didx < len ) | 304 | if (++didx < len ) |
298 | out[didx] = (((out[sidx+1] << 4) & 255) | ((out[sidx+2] >> 2) & 017)); | 305 | out[didx] = (((out[sidx+1] << 4) & 255) | ((out[sidx+2] >> 2) & 017)); |
299 | 306 | ||
300 | // Resize the output buffer | 307 | // Resize the output buffer |
301 | if ( len == 0 || len < out.size() ) | 308 | if ( len == 0 || len < out.size() ) |
302 | out.resize(len); | 309 | out.resize(len); |
303 | 310 | ||
304 | return out; | 311 | return out; |
305 | } | 312 | } |
313 | |||
314 | bool OGlobal::isAppLnkFileName( const QString& str ) | ||
315 | { | ||
316 | if (str.length()==0||str.at(str.length()-1)==QDir::separator()) return false; | ||
317 | return str.startsWith(MimeType::appsFolderName()+QDir::separator()); | ||
318 | } | ||
319 | |||
320 | /* ToDo: | ||
321 | * This fun should check the document-path value for the mounted media | ||
322 | * which has to be implemented later. this moment we just check for a | ||
323 | * mounted media name. | ||
324 | */ | ||
325 | bool OGlobal::isDocumentFileName( const QString& file ) | ||
326 | { | ||
327 | if (file.length()==0||file.at(file.length()-1)==QDir::separator()) return false; | ||
328 | if (file.startsWith(QPEApplication::documentDir()+QDir::separator())) return true; | ||
329 | StorageInfo si; | ||
330 | QList< FileSystem > fl = si.fileSystems(); | ||
331 | FileSystem*fs; | ||
332 | for (fs = fl.first();fs!=0;fs=fl.next()) { | ||
333 | if (fs->isRemovable()&&file.startsWith(fs->name()+QDir::separator())) | ||
334 | return true; | ||
335 | } | ||
336 | if (file.startsWith(homeDirPath())+"/Documents/") return true; | ||
337 | return false; | ||
338 | } | ||
339 | |||
340 | QString OGlobal::tempDirPath() | ||
341 | { | ||
342 | static QString defstring="/tmp"; | ||
343 | char * tmpp = 0; | ||
344 | if ( (tmpp=getenv("TEMP"))) { | ||
345 | return tmpp; | ||
346 | } | ||
347 | return defstring; | ||
348 | } | ||
349 | |||
350 | QString OGlobal::homeDirPath() | ||
351 | { | ||
352 | char * tmpp = getenv("HOME"); | ||
353 | return (tmpp?tmpp:"/"); | ||
354 | } | ||
355 | |||
356 | bool OGlobal::weekStartsOnMonday() | ||
357 | { | ||
358 | OConfig*conf=OGlobal::qpe_config(); | ||
359 | if (!conf)return false; | ||
360 | conf->setGroup("Time"); | ||
361 | return conf->readBoolEntry("MONDAY",true); | ||
362 | } | ||
363 | |||
364 | void OGlobal::setWeekStartsOnMonday( bool what) | ||
365 | { | ||
366 | OConfig*conf=OGlobal::qpe_config(); | ||
367 | if (!conf)return; | ||
368 | conf->setGroup("Time"); | ||
369 | return conf->writeEntry("MONDAY",what); | ||
370 | } | ||
371 | |||
372 | bool OGlobal::useAMPM() | ||
373 | { | ||
374 | OConfig*conf=OGlobal::qpe_config(); | ||
375 | if (!conf)return false; | ||
376 | conf->setGroup("Time"); | ||
377 | return conf->readBoolEntry("AMPM",false); | ||
378 | } | ||
379 | |||
380 | void OGlobal::setUseAMPM( bool what) | ||
381 | { | ||
382 | OConfig*conf=OGlobal::qpe_config(); | ||
383 | if (!conf)return; | ||
384 | conf->setGroup("Time"); | ||
385 | return conf->writeEntry("AMPM",what); | ||
386 | } | ||
387 | |||
388 | OConfig* OGlobal::qpe_config() | ||
389 | { | ||
390 | if ( !OGlobal::_qpe_config ) { | ||
391 | OGlobal::_qpe_config = new OConfig( "qpe" ); | ||
392 | } | ||
393 | return OGlobal::_qpe_config; | ||
394 | } | ||
395 | |||
396 | bool OGlobal::truncateFile( QFile &f, off_t size ) | ||
397 | { | ||
398 | /* or should we let enlarge Files? then remove this | ||
399 | f.size()< part! - Alwin | ||
400 | */ | ||
401 | if (!f.exists()||f.size()<(unsigned)size) return false; | ||
402 | bool closeit=false; | ||
403 | if (!f.isOpen()) { | ||
404 | closeit=true; | ||
405 | f.open(IO_Raw | IO_ReadWrite | IO_Append); | ||
406 | } | ||
407 | if (!f.isOpen()) { return false; } | ||
408 | int r = ftruncate(f.handle(),size); | ||
409 | if (closeit) f.close(); | ||
410 | return r==0; | ||
411 | } | ||
diff --git a/libopie2/opiecore/oglobal.h b/libopie2/opiecore/oglobal.h index d09d73e..5b43f01 100644 --- a/libopie2/opiecore/oglobal.h +++ b/libopie2/opiecore/oglobal.h | |||
@@ -1,41 +1,40 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of the Opie Project | 2 | This file is part of the Opie Project |
3 | Copyright (C) 2003 Michael 'Mickey' Lauer <mickey@Vanille.de> | 3 | Copyright (C) 2003 Michael 'Mickey' Lauer <mickey@Vanille.de> |
4 | Copyright (C) 2004 Holger 'zecke' Freyther <zecke@handhelds.org> | 4 | =. Copyright (C) 2004 Holger 'zecke' Freyther <zecke@handhelds.org> |
5 | =. | ||
6 | .=l. | 5 | .=l. |
7 | .>+-= | 6 | .>+-= |
8 | _;:, .> :=|. This program is free software; you can | 7 | _;:, .> :=|. This program is free software; you can |
9 | .> <`_, > . <= redistribute it and/or modify it under | 8 | .> <`_, > . <= redistribute it and/or modify it under |
10 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public | 9 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public |
11 | .="- .-=="i, .._ License as published by the Free Software | 10 | .="- .-=="i, .._ License as published by the Free Software |
12 | - . .-<_> .<> Foundation; either version 2 of the License, | 11 | - . .-<_> .<> Foundation; either version 2 of the License, |
13 | ._= =} : or (at your option) any later version. | 12 | ._= =} : or (at your option) any later version. |
14 | .%`+i> _;_. | 13 | .%`+i> _;_. |
15 | .i_,=:_. -<s. This program is distributed in the hope that | 14 | .i_,=:_. -<s. This program is distributed in the hope that |
16 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 15 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
17 | : .. .:, . . . without even the implied warranty of | 16 | : .. .:, . . . without even the implied warranty of |
18 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | 17 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A |
19 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU | 18 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU |
20 | ..}^=.= = ; Library General Public License for more | 19 | ..}^=.= = ; Library General Public License for more |
21 | ++= -. .` .: details. | 20 | ++= -. .` .: details. |
22 | : = ...= . :.=- | 21 | : = ...= . :.=- |
23 | -. .:....=;==+<; You should have received a copy of the GNU | 22 | -. .:....=;==+<; You should have received a copy of the GNU |
24 | -_. . . )=. = Library General Public License along with | 23 | -_. . . )=. = Library General Public License along with |
25 | -- :-=` this library; see the file COPYING.LIB. | 24 | -- :-=` this library; see the file COPYING.LIB. |
26 | If not, write to the Free Software Foundation, | 25 | If not, write to the Free Software Foundation, |
27 | Inc., 59 Temple Place - Suite 330, | 26 | Inc., 59 Temple Place - Suite 330, |
28 | Boston, MA 02111-1307, USA. | 27 | Boston, MA 02111-1307, USA. |
29 | */ | 28 | */ |
30 | 29 | ||
31 | #ifndef OGLOBAL_H | 30 | #ifndef OGLOBAL_H |
32 | #define OGLOBAL_H | 31 | #define OGLOBAL_H |
33 | 32 | ||
34 | 33 | ||
35 | #include <opie2/oconfig.h> | 34 | #include <opie2/oconfig.h> |
36 | 35 | ||
37 | #ifndef private | 36 | #ifndef private |
38 | #define HACK_DEFINED | 37 | #define HACK_DEFINED |
39 | #define private protected | 38 | #define private protected |
40 | #endif | 39 | #endif |
41 | #include <qpe/global.h> | 40 | #include <qpe/global.h> |
@@ -95,46 +94,48 @@ public: | |||
95 | /** @name Convert Content | 94 | /** @name Convert Content |
96 | * Convert Content of a QByteArray | 95 | * Convert Content of a QByteArray |
97 | */ | 96 | */ |
98 | //@{ | 97 | //@{ |
99 | static QByteArray encodeBase64(const QByteArray&, bool insertLF = false ); | 98 | static QByteArray encodeBase64(const QByteArray&, bool insertLF = false ); |
100 | static QByteArray decodeBase64(const QByteArray& ); | 99 | static QByteArray decodeBase64(const QByteArray& ); |
101 | //@} | 100 | //@} |
102 | 101 | ||
103 | //FIXME Do we want to put that into OApplication as in KApplication? -zecke | 102 | //FIXME Do we want to put that into OApplication as in KApplication? -zecke |
104 | // We already have a per-application config in OApplication | 103 | // We already have a per-application config in OApplication |
105 | // ( accessed through oApp->config() ), but this one is the global one! -mickeyl | 104 | // ( accessed through oApp->config() ), but this one is the global one! -mickeyl |
106 | /** @name Config and Owner related Information | 105 | /** @name Config and Owner related Information |
107 | * | 106 | * |
108 | */ | 107 | */ |
109 | //@{ | 108 | //@{ |
110 | static OConfig* config(); | 109 | static OConfig* config(); |
110 | static OConfig* qpe_config(); | ||
111 | static QString ownerName(); | 111 | static QString ownerName(); |
112 | static bool weekStartsOnMonday(); | 112 | static bool weekStartsOnMonday(); |
113 | static bool useAMPM(); | 113 | static bool useAMPM(); |
114 | #ifdef ODP | 114 | #ifdef ODP |
115 | #error "Fix dateFormat" | 115 | #error "Fix dateFormat" |
116 | /** | 116 | /** |
117 | * For Qt3/Qt4 we can use QDate::toString(OGlobal::dateFormat) | 117 | * For Qt3/Qt4 we can use QDate::toString(OGlobal::dateFormat) |
118 | * See if we need to use the function with String in it | 118 | * See if we need to use the function with String in it |
119 | * Anyway this is the future | 119 | * Anyway this is the future |
120 | * for now still use TimeString! | 120 | * for now still use TimeString! |
121 | */ | 121 | */ |
122 | #endif | 122 | #endif |
123 | static DateFormat dateFormat(); | 123 | static DateFormat dateFormat(); |
124 | static void setDateFormat( const DateFormat& ); | 124 | static void setDateFormat( const DateFormat& ); |
125 | 125 | ||
126 | 126 | ||
127 | static void setWeekStartsOnMonday( bool ); | 127 | static void setWeekStartsOnMonday( bool ); |
128 | static void setUseAMPM( bool ); | 128 | static void setUseAMPM( bool ); |
129 | //@} | 129 | //@} |
130 | 130 | ||
131 | //@{ | 131 | //@{ |
132 | static Global::Command* builtinCommands(); | 132 | static Global::Command* builtinCommands(); |
133 | static QGuardedPtr<QWidget>* builtinRunning(); | 133 | static QGuardedPtr<QWidget>* builtinRunning(); |
134 | //@} | 134 | //@} |
135 | 135 | ||
136 | private: | 136 | private: |
137 | static OConfig* _config; | 137 | static OConfig* _config; |
138 | static OConfig* _qpe_config; | ||
138 | }; | 139 | }; |
139 | 140 | ||
140 | #endif // OGLOBAL_H | 141 | #endif // OGLOBAL_H |