summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--Makefile4
-rw-r--r--apps/Settings/Liquid.desktop7
-rw-r--r--apps/Settings/Theme.desktop7
-rw-r--r--library/qpeapplication.cpp322
-rw-r--r--library/styleinterface.h68
-rw-r--r--noncore/styles/liquid/liquid.pro6
-rw-r--r--noncore/styles/liquid/liquidset.cpp (renamed from noncore/styles/liquid/settings/liquidset.cpp)26
-rw-r--r--noncore/styles/liquid/liquidset.h (renamed from noncore/styles/liquid/settings/liquidset.h)7
-rw-r--r--noncore/styles/liquid/opie-liquid.control2
-rw-r--r--noncore/styles/liquid/plugin.cpp106
-rw-r--r--noncore/styles/liquid/plugin.h46
-rw-r--r--noncore/styles/liquid/settings/.cvsignore2
-rw-r--r--noncore/styles/liquid/settings/main.cpp34
-rw-r--r--noncore/styles/liquid/settings/settings.pro24
-rw-r--r--noncore/styles/metal/metal.pro2
-rw-r--r--noncore/styles/metal/plugin.cpp52
-rw-r--r--noncore/styles/metal/plugin.h27
-rw-r--r--noncore/styles/theme/opie-theme.control2
-rw-r--r--noncore/styles/theme/plugin.cpp110
-rw-r--r--noncore/styles/theme/plugin.h46
-rw-r--r--noncore/styles/theme/settings/main.cpp34
-rw-r--r--noncore/styles/theme/settings/settings.pro24
-rw-r--r--noncore/styles/theme/settings/themeset.h20
-rw-r--r--noncore/styles/theme/theme.pro5
-rw-r--r--noncore/styles/theme/themeset.cpp (renamed from noncore/styles/theme/settings/themeset.cpp)11
-rw-r--r--noncore/styles/theme/themeset.h20
-rw-r--r--pics/liquid/Liquid.pngbin2771 -> 0 bytes
-rw-r--r--pics/theme/Theme.pngbin2771 -> 0 bytes
28 files changed, 705 insertions, 309 deletions
diff --git a/Makefile b/Makefile
index 0dfa22e..8fa60d8 100644
--- a/Makefile
+++ b/Makefile
@@ -29,51 +29,49 @@ COMPONENTS=$(LOCALCOMPONENTS) $(INPUTCOMPONENTS) $(APPLETS) $(MAIL) $(PLAYER)
29 29
30PIMAPPS = core/pim/addressbook core/pim/datebook \ 30PIMAPPS = core/pim/addressbook core/pim/datebook \
31 core/pim/today core/pim/todo 31 core/pim/today core/pim/todo
32 32
33COREAPPS = core/apps/filebrowser core/apps/helpbrowser \ 33COREAPPS = core/apps/filebrowser core/apps/helpbrowser \
34 core/apps/textedit core/apps/embeddedkonsole \ 34 core/apps/textedit core/apps/embeddedkonsole \
35 core/launcher core/apps/sysinfo \ 35 core/launcher core/apps/sysinfo \
36 core/apps/oipkg core/apps/qcop 36 core/apps/oipkg core/apps/qcop
37 37
38COREMULTIMEDIA = core/multimedia/opieplayer 38COREMULTIMEDIA = core/multimedia/opieplayer
39 39
40CORESETTINGS = core/settings/light-and-power core/settings/security \ 40CORESETTINGS = core/settings/light-and-power core/settings/security \
41 core/settings/systemtime core/settings/citytime \ 41 core/settings/systemtime core/settings/citytime \
42 core/settings/wlansetup 42 core/settings/wlansetup
43 43
44NONCORESETTINGS =noncore/settings/language noncore/settings/rotation \ 44NONCORESETTINGS =noncore/settings/language noncore/settings/rotation \
45 noncore/settings/appearance noncore/settings/sound \ 45 noncore/settings/appearance noncore/settings/sound \
46 noncore/settings/mediummount \ 46 noncore/settings/mediummount \
47 noncore/settings/tabmanager noncore/settings/appskey \ 47 noncore/settings/tabmanager noncore/settings/appskey \
48 noncore/settings/netsystemtime 48 noncore/settings/netsystemtime
49 49
50NONCORETOOLS = noncore/tools/calculator noncore/tools/clock \ 50NONCORETOOLS = noncore/tools/calculator noncore/tools/clock \
51 noncore/tools/remote noncore/tools/opie-sh noncore/apps/advancedfm 51 noncore/tools/remote noncore/tools/opie-sh noncore/apps/advancedfm
52 52
53NONCORESTYLES = noncore/styles/liquid noncore/styles/liquid/settings \ 53NONCORESTYLES = noncore/styles/liquid noncore/styles/theme noncore/styles/metal
54 noncore/styles/theme noncore/styles/theme/settings \
55 noncore/styles/metal
56 54
57GAMES = noncore/games/minesweep noncore/games/solitaire \ 55GAMES = noncore/games/minesweep noncore/games/solitaire \
58 noncore/games/tetrix noncore/games/wordgame \ 56 noncore/games/tetrix noncore/games/wordgame \
59 noncore/games/parashoot noncore/games/snake \ 57 noncore/games/parashoot noncore/games/snake \
60 noncore/games/mindbreaker \ 58 noncore/games/mindbreaker \
61 noncore/games/go noncore/games/qasteroids \ 59 noncore/games/go noncore/games/qasteroids \
62 noncore/games/fifteen noncore/games/tictac \ 60 noncore/games/fifteen noncore/games/tictac \
63 noncore/games/kcheckers noncore/games/kpacman \ 61 noncore/games/kcheckers noncore/games/kpacman \
64 noncore/games/kbill 62 noncore/games/kbill
65 63
66NONAPPS = noncore/apps/opie-sheet noncore/apps/tableviewer \ 64NONAPPS = noncore/apps/opie-sheet noncore/apps/tableviewer \
67 noncore/apps/opie-reader 65 noncore/apps/opie-reader
68 66
69NONNET = noncore/net/netsetup noncore/net/opieftp \ 67NONNET = noncore/net/netsetup noncore/net/opieftp \
70 noncore/mail 68 noncore/mail
71 69
72NONMULT = noncore/multimedia/showimg noncore/graphics/drawpad \ 70NONMULT = noncore/multimedia/showimg noncore/graphics/drawpad \
73 noncore/graphics/qpdf 71 noncore/graphics/qpdf
74 72
75 73
76NONCOMM = noncore/comm/keypebble 74NONCOMM = noncore/comm/keypebble
77 75
78APPS=$(LOCALAPPS) $(PIMAPPS) $(COREAPPS) \ 76APPS=$(LOCALAPPS) $(PIMAPPS) $(COREAPPS) \
79 $(COREMULTIMEDIA) $(CORESETTINGS) \ 77 $(COREMULTIMEDIA) $(CORESETTINGS) \
diff --git a/apps/Settings/Liquid.desktop b/apps/Settings/Liquid.desktop
deleted file mode 100644
index 8a1727f..0000000
--- a/apps/Settings/Liquid.desktop
+++ b/dev/null
@@ -1,7 +0,0 @@
1[Desktop Entry]
2Type=Application
3Exec=liquid-settings
4Icon=liquid/Liquid
5Name=Liquid-Settings
6Name[de]=Liquid-Einstellungen
7
diff --git a/apps/Settings/Theme.desktop b/apps/Settings/Theme.desktop
deleted file mode 100644
index 197184f..0000000
--- a/apps/Settings/Theme.desktop
+++ b/dev/null
@@ -1,7 +0,0 @@
1[Desktop Entry]
2Type=Application
3Exec=theme-settings
4Icon=theme/Theme
5Name=Theme-Settings
6Name[de]=Thema-Einstellungen
7
diff --git a/library/qpeapplication.cpp b/library/qpeapplication.cpp
index dff8235..187a7e2 100644
--- a/library/qpeapplication.cpp
+++ b/library/qpeapplication.cpp
@@ -43,379 +43,410 @@
43#include <qregexp.h> 43#include <qregexp.h>
44#include <qdir.h> 44#include <qdir.h>
45#include <qlabel.h> 45#include <qlabel.h>
46#include <qdialog.h> 46#include <qdialog.h>
47#include <qdragobject.h> 47#include <qdragobject.h>
48#include <qevent.h> 48#include <qevent.h>
49#include <qtooltip.h> 49#include <qtooltip.h>
50#include <qsignal.h> 50#include <qsignal.h>
51 51
52 52
53//#include <linux/fb.h> better not rely on kernel headers in userspace ... 53//#include <linux/fb.h> better not rely on kernel headers in userspace ...
54 54
55/* VESA Blanking Levels */ 55/* VESA Blanking Levels */
56#define VESA_NO_BLANKING 0 56#define VESA_NO_BLANKING 0
57#define VESA_VSYNC_SUSPEND 1 57#define VESA_VSYNC_SUSPEND 1
58#define VESA_HSYNC_SUSPEND 2 58#define VESA_HSYNC_SUSPEND 2
59#define VESA_POWERDOWN 3 59#define VESA_POWERDOWN 3
60 60
61#define FBIOBLANK 0x4611 61#define FBIOBLANK 0x4611
62 62
63 63
64#include <qsignal.h> 64#include <qsignal.h>
65#include "qpeapplication.h" 65#include "qpeapplication.h"
66#include "qpestyle.h" 66#include "qpestyle.h"
67#include "styleinterface.h"
67#if QT_VERSION >= 300 68#if QT_VERSION >= 300
68#include <qstylefactory.h> 69#include <qstylefactory.h>
69#else 70#else
70#include <qplatinumstyle.h> 71#include <qplatinumstyle.h>
71#include <qwindowsstyle.h> 72#include <qwindowsstyle.h>
72#include <qmotifstyle.h> 73#include <qmotifstyle.h>
73#include <qmotifplusstyle.h> 74#include <qmotifplusstyle.h>
74#include "lightstyle.h" 75#include "lightstyle.h"
75 76
76#include <qpe/qlibrary.h> 77#include <qpe/qlibrary.h>
77#include <dlfcn.h>
78#endif 78#endif
79#include "global.h" 79#include "global.h"
80#include "resource.h" 80#include "resource.h"
81#if QT_VERSION <= 230 && defined(QT_NO_CODECS) 81#if QT_VERSION <= 230 && defined(QT_NO_CODECS)
82#include "qutfcodec.h" 82#include "qutfcodec.h"
83#endif 83#endif
84#include "config.h" 84#include "config.h"
85#include "network.h" 85#include "network.h"
86#include "fontmanager.h" 86#include "fontmanager.h"
87#include "fontdatabase.h" 87#include "fontdatabase.h"
88 88
89#include "power.h" 89#include "power.h"
90#include "alarmserver.h" 90#include "alarmserver.h"
91#include "applnk.h" 91#include "applnk.h"
92#include "qpemenubar.h" 92#include "qpemenubar.h"
93 93
94#include <unistd.h> 94#include <unistd.h>
95#include <sys/file.h> 95#include <sys/file.h>
96#include <sys/ioctl.h> 96#include <sys/ioctl.h>
97#include <sys/soundcard.h> 97#include <sys/soundcard.h>
98 98
99// for setBacklight() 99// for setBacklight()
100#if defined(QT_QWS_IPAQ) || defined(QT_QWS_EBX) 100#if defined(QT_QWS_IPAQ) || defined(QT_QWS_EBX)
101#include <linux/fb.h> 101#include <linux/fb.h>
102#include <sys/types.h> 102#include <sys/types.h>
103#include <sys/stat.h> 103#include <sys/stat.h>
104#endif 104#endif
105#include <stdlib.h> 105#include <stdlib.h>
106 106
107 107
108class QPEApplicationData { 108class QPEApplicationData
109{
109public: 110public:
110 QPEApplicationData() : presstimer(0), presswidget(0), rightpressed(FALSE), 111 QPEApplicationData() : presstimer(0), presswidget(0), rightpressed(FALSE),
111 kbgrabber(0), kbregrab(FALSE), notbusysent(FALSE), preloaded(FALSE), 112 kbgrabber(0), kbregrab(FALSE), notbusysent(FALSE), preloaded(FALSE),
112 forceshow(FALSE), nomaximize(FALSE), qpe_main_widget(0), 113 forceshow(FALSE), nomaximize(FALSE), qpe_main_widget(0),
113 keep_running(TRUE) 114 keep_running(TRUE)
114 { 115 {
115 qcopq.setAutoDelete(TRUE); 116 qcopq.setAutoDelete(TRUE);
116 } 117 }
117 118
118 int presstimer; 119 int presstimer;
119 QWidget* presswidget; 120 QWidget* presswidget;
120 QPoint presspos; 121 QPoint presspos;
121 bool rightpressed; 122 bool rightpressed;
122 int kbgrabber; 123 int kbgrabber;
123 bool kbregrab; 124 bool kbregrab;
124 bool notbusysent; 125 bool notbusysent;
125 QString appName; 126 QString appName;
126 struct QCopRec { 127 struct QCopRec
128 {
127 QCopRec(const QCString &ch, const QCString &msg, 129 QCopRec(const QCString &ch, const QCString &msg,
128 const QByteArray &d) : 130 const QByteArray &d) :
129 channel(ch), message(msg), data(d) { } 131 channel( ch ), message( msg ), data( d )
132 { }
130 133
131 QCString channel; 134 QCString channel;
132 QCString message; 135 QCString message;
133 QByteArray data; 136 QByteArray data;
134 }; 137 };
135 bool preloaded; 138 bool preloaded;
136 bool forceshow; 139 bool forceshow;
137 bool nomaximize; 140 bool nomaximize;
138 QWidget* qpe_main_widget; 141 QWidget* qpe_main_widget;
139 bool keep_running; 142 bool keep_running;
140 QList<QCopRec> qcopq; 143 QList<QCopRec> qcopq;
141 144
142 void enqueueQCop(const QCString &ch, const QCString &msg, 145 void enqueueQCop(const QCString &ch, const QCString &msg,
143 const QByteArray &data) 146 const QByteArray &data)
144 { 147 {
145 qcopq.append(new QCopRec(ch,msg,data)); 148 qcopq.append(new QCopRec(ch,msg,data));
146 } 149 }
147 void sendQCopQ() 150 void sendQCopQ()
148 { 151 {
149 QCopRec* r; 152 QCopRec* r;
150 for (QListIterator<QCopRec> it(qcopq); (r=it.current()); ++it) 153 for (QListIterator<QCopRec> it(qcopq); (r=it.current()); ++it)
151 QCopChannel::sendLocally(r->channel,r->message,r->data); 154 QCopChannel::sendLocally(r->channel,r->message,r->data);
152 qcopq.clear(); 155 qcopq.clear();
153 } 156 }
154}; 157};
155 158
156class ResourceMimeFactory : public QMimeSourceFactory { 159class ResourceMimeFactory : public QMimeSourceFactory
160{
157public: 161public:
158 ResourceMimeFactory() 162 ResourceMimeFactory()
159 { 163 {
160 setFilePath( Global::helpPath() ); 164 setFilePath( Global::helpPath() );
161 setExtensionType("html","text/html;charset=UTF-8"); 165 setExtensionType("html","text/html;charset=UTF-8");
162 } 166 }
163 167
164 const QMimeSource* data(const QString& abs_name) const 168 const QMimeSource* data(const QString& abs_name) const
165 { 169 {
166 const QMimeSource* r = QMimeSourceFactory::data(abs_name); 170 const QMimeSource* r = QMimeSourceFactory::data(abs_name);
167 if ( !r ) { 171 if ( !r ) {
168 int sl = abs_name.length(); 172 int sl = abs_name.length();
169 do { 173 do {
170 sl = abs_name.findRev('/',sl-1); 174 sl = abs_name.findRev('/',sl-1);
171 QString name = sl>=0 ? abs_name.mid(sl+1) : abs_name; 175 QString name = sl>=0 ? abs_name.mid(sl+1) : abs_name;
172 int dot = name.findRev('.'); 176 int dot = name.findRev('.');
173 if ( dot >= 0 ) 177 if ( dot >= 0 )
174 name = name.left(dot); 178 name = name.left(dot);
175 QImage img = Resource::loadImage(name); 179 QImage img = Resource::loadImage(name);
176 if ( !img.isNull() ) 180 if ( !img.isNull() )
177 r = new QImageDrag(img); 181 r = new QImageDrag(img);
178 } while (!r && sl>0); 182 }
183 while ( !r && sl > 0 );
179 } 184 }
180 return r; 185 return r;
181 } 186 }
182}; 187};
183 188
184static int muted=0; 189static int muted=0;
185static int micMuted=0; 190static int micMuted=0;
186 191
187static void setVolume(int t=0, int percent=-1) 192static void setVolume(int t=0, int percent=-1)
188{ 193{
189 switch (t) { 194 switch (t) {
190 case 0: { 195 case 0: {
191 Config cfg("qpe"); 196 Config cfg("qpe");
192 cfg.setGroup("Volume"); 197 cfg.setGroup("Volume");
193 if ( percent < 0 ) 198 if ( percent < 0 )
194 percent = cfg.readNumEntry("VolumePercent",50); 199 percent = cfg.readNumEntry("VolumePercent",50);
195 int fd = 0; 200 int fd = 0;
196 if ((fd = open("/dev/mixer", O_RDWR))>=0) { 201 if ((fd = open("/dev/mixer", O_RDWR))>=0) {
197 int vol = muted ? 0 : percent; 202 int vol = muted ? 0 : percent;
198 // set both channels to same volume 203 // set both channels to same volume
199 vol |= vol << 8; 204 vol |= vol << 8;
200 ioctl(fd, MIXER_WRITE(0), &vol); 205 ioctl(fd, MIXER_WRITE(0), &vol);
201 ::close(fd); 206 ::close(fd);
202 } 207 }
203 } break; 208 }
209 break;
204 } 210 }
205} 211}
206 212
207static void setMic(int t=0, int percent=-1) 213static void setMic(int t=0, int percent=-1)
208{ 214{
209 switch (t) { 215 switch (t) {
210 case 0: { 216 case 0: {
211 Config cfg("qpe"); 217 Config cfg("qpe");
212 cfg.setGroup("Volume"); 218 cfg.setGroup("Volume");
213 if ( percent < 0 ) 219 if ( percent < 0 )
214 percent = cfg.readNumEntry("Mic",50); 220 percent = cfg.readNumEntry("Mic",50);
215 221
216 int fd = 0; 222 int fd = 0;
217 int mic = micMuted ? 0 : percent; 223 int mic = micMuted ? 0 : percent;
218 if ((fd = open("/dev/mixer", O_RDWR))>=0) { 224 if ((fd = open("/dev/mixer", O_RDWR))>=0) {
219 ioctl(fd, MIXER_WRITE(SOUND_MIXER_MIC), &mic); 225 ioctl(fd, MIXER_WRITE(SOUND_MIXER_MIC), &mic);
220 ::close(fd); 226 ::close(fd);
221 } 227 }
222 } break; 228 }
229 break;
223 } 230 }
224} 231}
225 232
226int qpe_sysBrightnessSteps() 233int qpe_sysBrightnessSteps()
227{ 234{
228#if defined(QT_QWS_IPAQ) 235#if defined(QT_QWS_IPAQ)
229 return 255; 236 return 255;
230#elif defined(QT_QWS_EBX) 237#elif defined(QT_QWS_EBX)
238
231 return 4; 239 return 4;
232#else 240#else
241
233 return 255; // ? 242 return 255; // ?
234#endif 243#endif
235} 244}
236 245
237 246
238static int& hack(int& i) 247static int& hack(int& i)
239{ 248{
240#if QT_VERSION <= 230 && defined(QT_NO_CODECS) 249#if QT_VERSION <= 230 && defined(QT_NO_CODECS)
241 // These should be created, but aren't in Qt 2.3.0 250 // These should be created, but aren't in Qt 2.3.0
242 (void)new QUtf8Codec; 251 (void)new QUtf8Codec;
243 (void)new QUtf16Codec; 252 (void)new QUtf16Codec;
244#endif 253#endif
254
245 return i; 255 return i;
246} 256}
247 257
248static bool forced_off = FALSE; 258static bool forced_off = FALSE;
249static int curbl=-1; 259static int curbl=-1;
250 260
251static int backlight() 261static int backlight()
252{ 262{
253 if ( curbl == -1 ) { 263 if ( curbl == -1 ) {
254 // Read from config 264 // Read from config
255 Config config( "qpe" ); 265 Config config( "qpe" );
256 config.setGroup( "Screensaver" ); 266 config.setGroup( "Screensaver" );
257 curbl = config.readNumEntry("Brightness",255); 267 curbl = config.readNumEntry("Brightness",255);
258 } 268 }
259 return curbl; 269 return curbl;
260} 270}
261 271
262static void setBacklight(int bright) 272static void setBacklight(int bright)
263{ 273{
264 if ( bright == -3 ) { 274 if ( bright == -3 ) {
265 // Forced on 275 // Forced on
266 forced_off = FALSE; 276 forced_off = FALSE;
267 bright = -1; 277 bright = -1;
268 } 278 }
269 if ( forced_off && bright != -2 ) 279 if ( forced_off && bright != -2 )
270 return; 280 return;
271 if ( bright == -2 ) { 281 if ( bright == -2 ) {
272 // Toggle between off and on 282 // Toggle between off and on
273 bright = curbl ? 0 : -1; 283 bright = curbl ? 0 : -1;
274 forced_off = !bright; 284 forced_off = !bright;
275 } 285 }
276 if ( bright == -1 ) { 286 if ( bright == -1 ) {
277 // Read from config 287 // Read from config
278 Config config( "qpe" ); 288 Config config( "qpe" );
279 config.setGroup( "Screensaver" ); 289 config.setGroup( "Screensaver" );
280 bright = config.readNumEntry("Brightness",255); 290 bright = config.readNumEntry("Brightness",255);
281 } 291 }
282#if defined(QT_QWS_IPAQ) || defined(QT_QWS_EBX) 292#if defined(QT_QWS_IPAQ) || defined(QT_QWS_EBX)
283 if ( QFile::exists("/usr/bin/bl") ) { 293 if ( QFile::exists("/usr/bin/bl") ) {
284 QString cmd = "/usr/bin/bl 1 "; 294 QString cmd = "/usr/bin/bl 1 ";
285 cmd += bright<=0 ? "0 " : "1 "; 295 cmd += bright<=0 ? "0 " : "1 ";
286 cmd += QString::number(bright); 296 cmd += QString::number(bright);
287 system(cmd.latin1()); 297 system(cmd.latin1());
288#if defined(QT_QWS_EBX) 298#if defined(QT_QWS_EBX)
289 } else if ( QFile::exists("/dev/fl") ) { 299
300 }
301 else if ( QFile::exists( "/dev/fl" ) ) {
290#define FL_IOCTL_STEP_CONTRAST 100 302#define FL_IOCTL_STEP_CONTRAST 100
291 int fd = open("/dev/fl", O_WRONLY); 303 int fd = open("/dev/fl", O_WRONLY);
292 if (fd >= 0 ) { 304 if (fd >= 0 ) {
293 int steps = qpe_sysBrightnessSteps(); 305 int steps = qpe_sysBrightnessSteps();
294 int bl = ( bright * steps + 127 ) / 255; 306 int bl = ( bright * steps + 127 ) / 255;
295 if ( bright && !bl ) bl = 1; 307 if ( bright && !bl )
308 bl = 1;
296 bl = ioctl(fd, FL_IOCTL_STEP_CONTRAST, bl); 309 bl = ioctl(fd, FL_IOCTL_STEP_CONTRAST, bl);
297 close(fd); 310 close(fd);
298 } 311 }
299 } 312 }
300#elif defined(QT_QWS_IPAQ) 313#elif defined(QT_QWS_IPAQ)
301 } else if ( QFile::exists("/dev/ts") || QFile::exists("/dev/h3600_ts") ) { 314
315 }
316 else if ( QFile::exists( "/dev/ts" ) || QFile::exists( "/dev/h3600_ts" ) )
317 {
302 typedef struct { 318 typedef struct {
303 unsigned char mode; 319 unsigned char mode;
304 unsigned char pwr; 320 unsigned char pwr;
305 unsigned char brightness; 321 unsigned char brightness;
306 } FLITE_IN; 322 }
323 FLITE_IN;
307# ifndef FLITE_ON 324# ifndef FLITE_ON
308# ifndef _LINUX_IOCTL_H 325# ifndef _LINUX_IOCTL_H
309# include <linux/ioctl.h> 326# include <linux/ioctl.h>
310# endif 327# endif
311# define FLITE_ON _IOW('f', 7, FLITE_IN) 328# define FLITE_ON _IOW('f', 7, FLITE_IN)
312# endif 329# endif
330
313 int fd; 331 int fd;
314 if ( QFile::exists("/dev/ts") ) 332 if ( QFile::exists("/dev/ts") )
315 fd = open("/dev/ts", O_WRONLY); 333 fd = open("/dev/ts", O_WRONLY);
316 else 334 else
317 fd = open("/dev/h3600_ts", O_WRONLY); 335 fd = open("/dev/h3600_ts", O_WRONLY);
318 if (fd >= 0 ) { 336 if (fd >= 0 ) {
319 FLITE_IN bl; 337 FLITE_IN bl;
320 bl.mode = 1; 338 bl.mode = 1;
321 bl.pwr = bright ? 1 : 0; 339 bl.pwr = bright ? 1 : 0;
322 bl.brightness = bright; 340 bl.brightness = bright;
323 ioctl(fd, FLITE_ON, &bl); 341 ioctl(fd, FLITE_ON, &bl);
324 close(fd); 342 close(fd);
325 } 343 }
326 } 344 }
327#endif 345#endif
328#endif 346#endif
329 curbl = bright; 347 curbl = bright;
330} 348}
331 349
332void qpe_setBacklight(int bright) { setBacklight(bright); } 350void qpe_setBacklight( int bright ) {
351 setBacklight( bright );
352}
333 353
334static bool dim_on = FALSE; 354static bool dim_on = FALSE;
335static bool lightoff_on = FALSE; 355static bool lightoff_on = FALSE;
336static int disable_suspend = 100; 356static int disable_suspend = 100;
337 357
338static bool powerOnline() 358static bool powerOnline()
339{ 359{
340 return PowerStatusManager::readStatus().acStatus() == PowerStatus::Online; 360 return PowerStatusManager::readStatus().acStatus() == PowerStatus::Online;
341} 361}
342 362
343static bool networkOnline() 363static bool networkOnline()
344{ 364{
345 return Network::networkOnline(); 365 return Network::networkOnline();
346} 366}
347 367
348class QPEScreenSaver : public QWSScreenSaver 368class QPEScreenSaver : public QWSScreenSaver
349{ 369{
350private: 370private:
351 int LcdOn; 371 int LcdOn;
352 372
353public: 373public:
354 QPEScreenSaver() 374 QPEScreenSaver()
355 { 375 {
356 int fd; 376 int fd;
357 377
358 LcdOn = TRUE; 378 LcdOn = TRUE;
359 // Make sure the LCD is in fact on, (if opie was killed while the LCD is off it would still be off) 379 // Make sure the LCD is in fact on, (if opie was killed while the LCD is off it would still be off)
360 fd=open("/dev/fb0",O_RDWR); 380 fd=open("/dev/fb0",O_RDWR);
361 if (fd != -1) { ioctl(fd,FBIOBLANK,VESA_NO_BLANKING); close(fd); } 381 if ( fd != -1 ) {
382 ioctl( fd, FBIOBLANK, VESA_NO_BLANKING );
383 close( fd );
384 }
362 } 385 }
363 void restore() 386 void restore()
364 { 387 {
365 if (!LcdOn) // We must have turned it off 388 if (!LcdOn) // We must have turned it off
366 { 389 {
367 int fd; 390 int fd;
368 fd=open("/dev/fb0",O_RDWR); 391 fd=open("/dev/fb0",O_RDWR);
369 if (fd != -1) { ioctl(fd,FBIOBLANK,VESA_NO_BLANKING); close(fd); } 392 if ( fd != -1 )
393 {
394 ioctl( fd, FBIOBLANK, VESA_NO_BLANKING );
395 close( fd );
396 }
370 } 397 }
371 setBacklight(-1); 398 setBacklight(-1);
372 } 399 }
373 bool save(int level) 400 bool save(int level)
374 { 401 {
375 int fd; 402 int fd;
376 403
377 switch ( level ) { 404 switch ( level ) {
378 case 0: 405 case 0:
379 if ( disable_suspend > 0 && dim_on ) { 406 if ( disable_suspend > 0 && dim_on ) {
380 if (backlight() > 1) 407 if (backlight() > 1)
381 setBacklight(1); // lowest non-off 408 setBacklight(1); // lowest non-off
382 } 409 }
383 return TRUE; 410 return TRUE;
384 break; 411 break;
385 case 1: 412 case 1:
386 if ( disable_suspend > 1 && lightoff_on ) { 413 if ( disable_suspend > 1 && lightoff_on ) {
387 setBacklight(0); // off 414 setBacklight(0); // off
388 } 415 }
389 return TRUE; 416 return TRUE;
390 break; 417 break;
391 case 2: 418 case 2:
392 Config config( "qpe" ); 419 Config config( "qpe" );
393 config.setGroup( "Screensaver" ); 420 config.setGroup( "Screensaver" );
394 if (config.readNumEntry("LcdOffOnly",0) != 0) // We're only turning off the LCD 421 if (config.readNumEntry("LcdOffOnly",0) != 0) // We're only turning off the LCD
395 { 422 {
396 fd=open("/dev/fb0",O_RDWR); 423 fd=open("/dev/fb0",O_RDWR);
397 if (fd != -1) { ioctl(fd,FBIOBLANK,VESA_POWERDOWN); close(fd); } 424 if ( fd != -1 )
425 {
426 ioctl( fd, FBIOBLANK, VESA_POWERDOWN );
427 close( fd );
428 }
398 LcdOn = FALSE; 429 LcdOn = FALSE;
399 } 430 }
400 else // We're going to suspend the whole machine 431 else // We're going to suspend the whole machine
401 { 432 {
402 if ( disable_suspend > 2 && !powerOnline() && !networkOnline() ) { 433 if ( disable_suspend > 2 && !powerOnline() && !networkOnline() ) {
403 QWSServer::sendKeyEvent( 0xffff, Qt::Key_F34, FALSE, TRUE, FALSE ); 434 QWSServer::sendKeyEvent( 0xffff, Qt::Key_F34, FALSE, TRUE, FALSE );
404 return TRUE; 435 return TRUE;
405 } 436 }
406 } 437 }
407 break; 438 break;
408 } 439 }
409 return FALSE; 440 return FALSE;
410 } 441 }
411}; 442};
412 443
413static int ssi(int interval, Config &config, const QString &enable, const QString& value, int def) 444static int ssi(int interval, Config &config, const QString &enable, const QString& value, int def)
414{ 445{
415 if ( !enable.isEmpty() && config.readNumEntry(enable,0) == 0 ) 446 if ( !enable.isEmpty() && config.readNumEntry(enable,0) == 0 )
416 return 0; 447 return 0;
417 448
418 if ( interval < 0 ) { 449 if ( interval < 0 ) {
419 // Restore screen blanking and power saving state 450 // Restore screen blanking and power saving state
420 interval = config.readNumEntry( value, def ); 451 interval = config.readNumEntry( value, def );
421 } 452 }
@@ -551,65 +582,67 @@ QPEApplication::QPEApplication( int& argc, char **argv, Type t )
551 connect( pidChannel, SIGNAL(received(const QCString &, const QByteArray &)), 582 connect( pidChannel, SIGNAL(received(const QCString &, const QByteArray &)),
552 this, SLOT(pidMessage(const QCString &, const QByteArray &))); 583 this, SLOT(pidMessage(const QCString &, const QByteArray &)));
553 584
554 if ( f.isOpen() ) { 585 if ( f.isOpen() ) {
555 d->keep_running = FALSE; 586 d->keep_running = FALSE;
556 QDataStream ds(&f); 587 QDataStream ds(&f);
557 QCString channel, message; 588 QCString channel, message;
558 QByteArray data; 589 QByteArray data;
559 while(!ds.atEnd()) { 590 while(!ds.atEnd()) {
560 ds >> channel >> message >> data; 591 ds >> channel >> message >> data;
561 d->enqueueQCop(channel,message,data); 592 d->enqueueQCop(channel,message,data);
562 } 593 }
563 594
564 flock(f.handle(), LOCK_UN); 595 flock(f.handle(), LOCK_UN);
565 f.close(); 596 f.close();
566 f.remove(); 597 f.remove();
567 } 598 }
568 599
569 for (int a=0; a<argc; a++) { 600 for (int a=0; a<argc; a++) {
570 if ( qstrcmp(argv[a],"-preload")==0 ) { 601 if ( qstrcmp(argv[a],"-preload")==0 ) {
571 argv[a] = argv[a+1]; 602 argv[a] = argv[a+1];
572 a++; 603 a++;
573 d->preloaded = TRUE; 604 d->preloaded = TRUE;
574 argc-=1; 605 argc-=1;
575 } else if ( qstrcmp(argv[a],"-preload-show")==0 ) { 606 }
607 else if ( qstrcmp( argv[ a ], "-preload-show" ) == 0 ) {
576 argv[a] = argv[a+1]; 608 argv[a] = argv[a+1];
577 a++; 609 a++;
578 d->preloaded = TRUE; 610 d->preloaded = TRUE;
579 d->forceshow = TRUE; 611 d->forceshow = TRUE;
580 argc-=1; 612 argc-=1;
581 } 613 }
582 } 614 }
583 615
584 /* overide stored arguments */ 616 /* overide stored arguments */
585 setArgs(argc, argv); 617 setArgs(argc, argv);
586 618
587#endif 619#endif
588 620
589 qwsSetDecoration( new QPEDecoration() ); 621 qwsSetDecoration( new QPEDecoration() );
590 622
591#ifndef QT_NO_TRANSLATION 623#ifndef QT_NO_TRANSLATION
624
592 QStringList langs = Global::languageList(); 625 QStringList langs = Global::languageList();
593 for (QStringList::ConstIterator it = langs.begin(); it!=langs.end(); ++it) { 626 for (QStringList::ConstIterator it = langs.begin(); it!=langs.end(); ++it) {
594 QString lang = *it; 627 QString lang = *it;
595 628
596 QTranslator * trans; 629 QTranslator * trans;
597 QString tfn; 630 QString tfn;
598 631
599 trans = new QTranslator(this); 632 trans = new QTranslator(this);
600 tfn = qpeDir()+"/i18n/"+lang+"/libqpe.qm"; 633 tfn = qpeDir()+"/i18n/"+lang+"/libqpe.qm";
601 if ( trans->load( tfn )) 634 if ( trans->load( tfn ))
602 installTranslator( trans ); 635 installTranslator( trans );
603 else 636 else
604 delete trans; 637 delete trans;
605 638
606 trans = new QTranslator(this); 639 trans = new QTranslator(this);
607 tfn = qpeDir()+"/i18n/"+lang+"/"+d->appName+".qm"; 640 tfn = qpeDir()+"/i18n/"+lang+"/"+d->appName+".qm";
608 if ( trans->load( tfn )) 641 if ( trans->load( tfn ))
609 installTranslator( trans ); 642 installTranslator( trans );
610 else 643 else
611 delete trans; 644 delete trans;
612 645
613 //###language/font hack; should look it up somewhere 646 //###language/font hack; should look it up somewhere
614 if ( lang == "ja" || lang == "zh_CN" || lang == "zh_TW" || lang == "ko" ) { 647 if ( lang == "ja" || lang == "zh_CN" || lang == "zh_TW" || lang == "ko" ) {
615 QFont fn = FontManager::unicodeFont( FontManager::Proportional ); 648 QFont fn = FontManager::unicodeFont( FontManager::Proportional );
@@ -667,523 +700,581 @@ QPEApplication::InputMethodHint QPEApplication::inputMethodHint( QWidget* w )
667{ 700{
668 if ( inputMethodDict && w ) 701 if ( inputMethodDict && w )
669 return (InputMethodHint)(int)inputMethodDict->find(w); 702 return (InputMethodHint)(int)inputMethodDict->find(w);
670 return Normal; 703 return Normal;
671} 704}
672 705
673/*! 706/*!
674 \enum QPEApplication::InputMethodHint 707 \enum QPEApplication::InputMethodHint
675 708
676 \value Normal the application sometimes needs text input (the default). 709 \value Normal the application sometimes needs text input (the default).
677 \value AlwaysOff the application never needs text input. 710 \value AlwaysOff the application never needs text input.
678 \value AlwaysOn the application always needs text input. 711 \value AlwaysOn the application always needs text input.
679*/ 712*/
680 713
681/*! 714/*!
682 Hints to the system that \a w has use for text input methods 715 Hints to the system that \a w has use for text input methods
683 as specified by \a mode. 716 as specified by \a mode.
684 717
685 \sa inputMethodHint() 718 \sa inputMethodHint()
686*/ 719*/
687void QPEApplication::setInputMethodHint( QWidget* w, InputMethodHint mode ) 720void QPEApplication::setInputMethodHint( QWidget* w, InputMethodHint mode )
688{ 721{
689 createInputMethodDict(); 722 createInputMethodDict();
690 if ( mode == Normal ) { 723 if ( mode == Normal ) {
691 inputMethodDict->remove(w); 724 inputMethodDict->remove
692 } else { 725 ( w );
726 }
727 else {
693 inputMethodDict->insert(w,(void*)mode); 728 inputMethodDict->insert(w,(void*)mode);
694 } 729 }
695} 730}
696 731
697class HackDialog : public QDialog 732class HackDialog : public QDialog
698{ 733{
699public: 734public:
700 void acceptIt() { accept(); } 735 void acceptIt()
701 void rejectIt() { reject(); } 736 {
737 accept();
738 }
739 void rejectIt()
740 {
741 reject();
742 }
702}; 743};
703 744
704 745
705void QPEApplication::mapToDefaultAction( QWSKeyEvent *ke, int key ) 746void QPEApplication::mapToDefaultAction( QWSKeyEvent *ke, int key )
706{ 747{
707 // specialised actions for certain widgets. May want to 748 // specialised actions for certain widgets. May want to
708 // add more stuff here. 749 // add more stuff here.
709 if ( activePopupWidget() && activePopupWidget()->inherits( "QListBox" ) 750 if ( activePopupWidget() && activePopupWidget()->inherits( "QListBox" )
710 && activePopupWidget()->parentWidget() 751 && activePopupWidget()->parentWidget()
711 && activePopupWidget()->parentWidget()->inherits( "QComboBox" ) ) 752 && activePopupWidget()->parentWidget()->inherits( "QComboBox" ) )
712 key = Qt::Key_Return; 753 key = Qt::Key_Return;
713 754
714 if ( activePopupWidget() && activePopupWidget()->inherits( "QPopupMenu" ) ) 755 if ( activePopupWidget() && activePopupWidget()->inherits( "QPopupMenu" ) )
715 key = Qt::Key_Return; 756 key = Qt::Key_Return;
716 757
717 ke->simpleData.keycode = key; 758 ke->simpleData.keycode = key;
718} 759}
719 760
720class HackWidget : public QWidget 761class HackWidget : public QWidget
721{ 762{
722public: 763public:
723 bool needsOk() 764 bool needsOk()
724 { return (getWState() & WState_Reserved1 ); } 765 {
766 return ( getWState() & WState_Reserved1 );
767 }
725}; 768};
726 769
727/*! 770/*!
728 \internal 771 \internal
729*/ 772*/
730bool QPEApplication::qwsEventFilter( QWSEvent *e ) 773bool QPEApplication::qwsEventFilter( QWSEvent *e )
731{ 774{
732 if ( !d->notbusysent && e->type == QWSEvent::Focus ) { 775 if ( !d->notbusysent && e->type == QWSEvent::Focus ) {
733 if ( qApp->type() != QApplication::GuiServer ) { 776 if ( qApp->type() != QApplication::GuiServer ) {
734 QCopEnvelope e("QPE/System", "notBusy(QString)" ); 777 QCopEnvelope e("QPE/System", "notBusy(QString)" );
735 e << d->appName; 778 e << d->appName;
736 } 779 }
737 d->notbusysent=TRUE; 780 d->notbusysent=TRUE;
738 } 781 }
739 if ( type() == GuiServer ) { 782 if ( type() == GuiServer ) {
740 switch ( e->type ) { 783 switch ( e->type ) {
741 case QWSEvent::Mouse: 784 case QWSEvent::Mouse:
742 if ( e->asMouse()->simpleData.state && !QWidget::find(e->window()) ) 785 if ( e->asMouse()->simpleData.state && !QWidget::find(e->window()) )
743 emit clientMoused(); 786 emit clientMoused();
744 } 787 }
745 } 788 }
746 if ( e->type == QWSEvent::Key ) { 789 if ( e->type == QWSEvent::Key ) {
747 if ( d->kbgrabber == 1 ) 790 if ( d->kbgrabber == 1 )
748 return TRUE; 791 return TRUE;
749 QWSKeyEvent *ke = (QWSKeyEvent *)e; 792 QWSKeyEvent *ke = (QWSKeyEvent *)e;
750 if ( ke->simpleData.keycode == Qt::Key_F33 ) { 793 if ( ke->simpleData.keycode == Qt::Key_F33 ) {
751 // Use special "OK" key to press "OK" on top level widgets 794 // Use special "OK" key to press "OK" on top level widgets
752 QWidget *active = activeWindow(); 795 QWidget *active = activeWindow();
753 QWidget *popup = 0; 796 QWidget *popup = 0;
754 if ( active && active->isPopup() ) { 797 if ( active && active->isPopup() ) {
755 popup = active; 798 popup = active;
756 active = active->parentWidget(); 799 active = active->parentWidget();
757 } 800 }
758 if ( active && (int)active->winId() == ke->simpleData.window && 801 if ( active && (int)active->winId() == ke->simpleData.window &&
759 !active->testWFlags( WStyle_Customize|WType_Popup|WType_Desktop )) { 802 !active->testWFlags( WStyle_Customize|WType_Popup|WType_Desktop )) {
760 if ( ke->simpleData.is_press ) { 803 if ( ke->simpleData.is_press ) {
761 if ( popup ) 804 if ( popup )
762 popup->close(); 805 popup->close();
763 if ( active->inherits( "QDialog" ) ) { 806 if ( active->inherits( "QDialog" ) ) {
764 HackDialog *d = (HackDialog *)active; 807 HackDialog *d = (HackDialog *)active;
765 d->acceptIt(); 808 d->acceptIt();
766 return TRUE; 809 return TRUE;
767 } else if ( ((HackWidget *)active)->needsOk() ) { 810 }
811 else if ( ( ( HackWidget * ) active ) ->needsOk() ) {
768 QSignal s; 812 QSignal s;
769 s.connect( active, SLOT( accept() ) ); 813 s.connect( active, SLOT( accept() ) );
770 s.activate(); 814 s.activate();
771 } else { 815 }
816 else {
772 // do the same as with the select key: Map to the default action of the widget: 817 // do the same as with the select key: Map to the default action of the widget:
773 mapToDefaultAction( ke, Qt::Key_Return ); 818 mapToDefaultAction( ke, Qt::Key_Return );
774 } 819 }
775 } 820 }
776 } 821 }
777 } else if ( ke->simpleData.keycode == Qt::Key_F30 ) { 822 }
823 else if ( ke->simpleData.keycode == Qt::Key_F30 ) {
778 // Use special "select" key to do whatever default action a widget has 824 // Use special "select" key to do whatever default action a widget has
779 mapToDefaultAction( ke, Qt::Key_Space ); 825 mapToDefaultAction( ke, Qt::Key_Space );
780 } else if ( ke->simpleData.keycode == Qt::Key_Escape && 826 }
827 else if ( ke->simpleData.keycode == Qt::Key_Escape &&
781 ke->simpleData.is_press ) { 828 ke->simpleData.is_press ) {
782 // Escape key closes app if focus on toplevel 829 // Escape key closes app if focus on toplevel
783 QWidget *active = activeWindow(); 830 QWidget *active = activeWindow();
784 if ( active && active->testWFlags( WType_TopLevel ) && 831 if ( active && active->testWFlags( WType_TopLevel ) &&
785 (int)active->winId() == ke->simpleData.window && 832 (int)active->winId() == ke->simpleData.window &&
786 !active->testWFlags( WStyle_Dialog|WStyle_Customize|WType_Popup|WType_Desktop )) { 833 !active->testWFlags( WStyle_Dialog|WStyle_Customize|WType_Popup|WType_Desktop )) {
787 if ( active->inherits( "QDialog" ) ) { 834 if ( active->inherits( "QDialog" ) ) {
788 HackDialog *d = (HackDialog *)active; 835 HackDialog *d = (HackDialog *)active;
789 d->rejectIt(); 836 d->rejectIt();
790 return TRUE; 837 return TRUE;
791 } else if ( strcmp( argv()[0], "embeddedkonsole") != 0 ) { 838 }
839 else if ( strcmp( argv() [ 0 ], "embeddedkonsole" ) != 0 ) {
792 active->close(); 840 active->close();
793 } 841 }
794 } 842 }
795 } 843 }
796 844
797#if QT_VERSION < 231 845#if QT_VERSION < 231
798 // Filter out the F4/Launcher key from apps 846 // Filter out the F4/Launcher key from apps
799 // ### The launcher key may not always be F4 on all devices 847 // ### The launcher key may not always be F4 on all devices
800 if ( ((QWSKeyEvent *)e)->simpleData.keycode == Qt::Key_F4 ) 848 if ( ((QWSKeyEvent *)e)->simpleData.keycode == Qt::Key_F4 )
801 return TRUE; 849 return TRUE;
802#endif 850#endif
851
803 } 852 }
804 if ( e->type == QWSEvent::Focus ) { 853 if ( e->type == QWSEvent::Focus ) {
805 QWSFocusEvent *fe = (QWSFocusEvent*)e; 854 QWSFocusEvent *fe = (QWSFocusEvent*)e;
806 QWidget* nfw = QWidget::find(e->window()); 855 QWidget* nfw = QWidget::find(e->window());
807 if ( !fe->simpleData.get_focus ) { 856 if ( !fe->simpleData.get_focus ) {
808 QWidget *active = activeWindow(); 857 QWidget *active = activeWindow();
809 while ( active && active->isPopup() ) { 858 while ( active && active->isPopup() ) {
810 active->close(); 859 active->close();
811 active = activeWindow(); 860 active = activeWindow();
812 } 861 }
813 if ( !nfw && d->kbgrabber == 2 ) { 862 if ( !nfw && d->kbgrabber == 2 ) {
814 ungrabKeyboard(); 863 ungrabKeyboard();
815 d->kbregrab = TRUE; // want kb back when we're active 864 d->kbregrab = TRUE; // want kb back when we're active
816 } 865 }
817 } else { 866 }
867 else {
818 // make sure our modal widget is ALWAYS on top 868 // make sure our modal widget is ALWAYS on top
819 QWidget *topm = activeModalWidget(); 869 QWidget *topm = activeModalWidget();
820 if ( topm ) { 870 if ( topm ) {
821 topm->raise(); 871 topm->raise();
822 } 872 }
823 if ( d->kbregrab ) { 873 if ( d->kbregrab ) {
824 grabKeyboard(); 874 grabKeyboard();
825 d->kbregrab = FALSE; 875 d->kbregrab = FALSE;
826 } 876 }
827 } 877 }
828 if ( fe->simpleData.get_focus && inputMethodDict ) { 878 if ( fe->simpleData.get_focus && inputMethodDict ) {
829 InputMethodHint m = inputMethodHint( QWidget::find(e->window()) ); 879 InputMethodHint m = inputMethodHint( QWidget::find(e->window()) );
830 if ( m == AlwaysOff ) 880 if ( m == AlwaysOff )
831 Global::hideInputMethod(); 881 Global::hideInputMethod();
832 if ( m == AlwaysOn ) 882 if ( m == AlwaysOn )
833 Global::showInputMethod(); 883 Global::showInputMethod();
834 } 884 }
835 } 885 }
836 return QApplication::qwsEventFilter( e ); 886 return QApplication::qwsEventFilter( e );
837} 887}
838 888
839/*! 889/*!
840 Destroys the QPEApplication. 890 Destroys the QPEApplication.
841*/ 891*/
842QPEApplication::~QPEApplication() 892QPEApplication::~QPEApplication()
843{ 893{
844 ungrabKeyboard(); 894 ungrabKeyboard();
845#if defined(Q_WS_QWS) && !defined(QT_NO_COP) 895#if defined(Q_WS_QWS) && !defined(QT_NO_COP)
846 // Need to delete QCopChannels early, since the display will 896 // Need to delete QCopChannels early, since the display will
847 // be gone by the time we get to ~QObject(). 897 // be gone by the time we get to ~QObject().
848 delete sysChannel; 898 delete sysChannel;
849 delete pidChannel; 899 delete pidChannel;
850#endif 900#endif
901
851 delete d; 902 delete d;
852} 903}
853 904
854/*! 905/*!
855 Returns <tt>$OPIEDIR/</tt>. 906 Returns <tt>$OPIEDIR/</tt>.
856*/ 907*/
857QString QPEApplication::qpeDir() 908QString QPEApplication::qpeDir()
858{ 909{
859 const char *base = getenv( "OPIEDIR" ); 910 const char *base = getenv( "OPIEDIR" );
860 if ( base ) 911 if ( base )
861 return QString( base ) + "/"; 912 return QString( base ) + "/";
862 913
863 return QString( "../" ); 914 return QString( "../" );
864} 915}
865 916
866/*! 917/*!
867 Returns the user's current Document directory. There is a trailing "/". 918 Returns the user's current Document directory. There is a trailing "/".
868*/ 919*/
869QString QPEApplication::documentDir() 920QString QPEApplication::documentDir()
870{ 921{
871 const char *base = getenv( "HOME" ); 922 const char *base = getenv( "HOME" );
872 if ( base ) 923 if ( base )
873 return QString( base ) + "/Documents/"; 924 return QString( base ) + "/Documents/";
874 925
875 return QString( "../Documents/" ); 926 return QString( "../Documents/" );
876} 927}
877 928
878static int deforient=-1; 929static int deforient=-1;
879 930
880/*! 931/*!
881 \internal 932 \internal
882*/ 933*/
883int QPEApplication::defaultRotation() 934int QPEApplication::defaultRotation()
884{ 935{
885 if ( deforient < 0 ) { 936 if ( deforient < 0 ) {
886 QString d = getenv("QWS_DISPLAY"); 937 QString d = getenv("QWS_DISPLAY");
887 if ( d.contains("Rot90") ) { 938 if ( d.contains("Rot90") ) {
888 deforient = 90; 939 deforient = 90;
889 } else if ( d.contains("Rot180") ) { 940 }
941 else if ( d.contains( "Rot180" ) ) {
890 deforient = 180; 942 deforient = 180;
891 } else if ( d.contains("Rot270") ) { 943 }
944 else if ( d.contains( "Rot270" ) ) {
892 deforient = 270; 945 deforient = 270;
893 } else { 946 }
947 else {
894 deforient=0; 948 deforient=0;
895 } 949 }
896 } 950 }
897 return deforient; 951 return deforient;
898} 952}
899 953
900/*! 954/*!
901 \internal 955 \internal
902*/ 956*/
903void QPEApplication::setDefaultRotation(int r) 957void QPEApplication::setDefaultRotation(int r)
904{ 958{
905 if ( qApp->type() == GuiServer ) { 959 if ( qApp->type() == GuiServer ) {
906 deforient = r; 960 deforient = r;
907 setenv("QWS_DISPLAY", QString("Transformed:Rot%1:0").arg(r).latin1(), 1); 961 setenv("QWS_DISPLAY", QString("Transformed:Rot%1:0").arg(r).latin1(), 1);
908 } else { 962 }
963 else {
909 QCopEnvelope("QPE/System", "setDefaultRotation(int)") << r; 964 QCopEnvelope("QPE/System", "setDefaultRotation(int)") << r;
910 } 965 }
911} 966}
912 967
913/*! 968/*!
914 \internal 969 \internal
915*/ 970*/
916void QPEApplication::applyStyle() 971void QPEApplication::applyStyle()
917{ 972{
918 Config config( "qpe" ); 973 Config config( "qpe" );
919 974
920 config.setGroup( "Appearance" ); 975 config.setGroup( "Appearance" );
921 976
922 // Widget style 977 // Widget style
923 QString style = config.readEntry( "Style", "Light" ); 978 QString style = config.readEntry( "Style", "Light" );
924 internalSetStyle( style ); 979 internalSetStyle( style );
925 980
926 // Colors 981 // Colors
927 QColor bgcolor( config.readEntry( "Background", "#E5E1D5" ) ); 982 QColor bgcolor( config.readEntry( "Background", "#E5E1D5" ) );
928 QColor btncolor( config.readEntry( "Button", "#D6CDBB" ) ); 983 QColor btncolor( config.readEntry( "Button", "#D6CDBB" ) );
929 QPalette pal( btncolor, bgcolor ); 984 QPalette pal( btncolor, bgcolor );
930 QString color = config.readEntry( "Highlight", "#800000" ); 985 QString color = config.readEntry( "Highlight", "#800000" );
931 pal.setColor( QColorGroup::Highlight, QColor(color) ); 986 pal.setColor( QColorGroup::Highlight, QColor(color) );
932 color = config.readEntry( "HighlightedText", "#FFFFFF" ); 987 color = config.readEntry( "HighlightedText", "#FFFFFF" );
933 pal.setColor( QColorGroup::HighlightedText, QColor(color) ); 988 pal.setColor( QColorGroup::HighlightedText, QColor(color) );
934 color = config.readEntry( "Text", "#000000" ); 989 color = config.readEntry( "Text", "#000000" );
935 pal.setColor( QColorGroup::Text, QColor(color) ); 990 pal.setColor( QColorGroup::Text, QColor(color) );
936 color = config.readEntry( "ButtonText", "#000000" ); 991 color = config.readEntry( "ButtonText", "#000000" );
937 pal.setColor( QPalette::Active, QColorGroup::ButtonText, QColor(color) ); 992 pal.setColor( QPalette::Active, QColorGroup::ButtonText, QColor(color) );
938 color = config.readEntry( "Base", "#FFFFFF" ); 993 color = config.readEntry( "Base", "#FFFFFF" );
939 pal.setColor( QColorGroup::Base, QColor(color) ); 994 pal.setColor( QColorGroup::Base, QColor(color) );
940 995
941 pal.setColor( QPalette::Disabled, QColorGroup::Text, 996 pal.setColor( QPalette::Disabled, QColorGroup::Text,
942 pal.color(QPalette::Active, QColorGroup::Background).dark() ); 997 pal.color(QPalette::Active, QColorGroup::Background).dark() );
943 998
944 setPalette( pal, TRUE ); 999 setPalette( pal, TRUE );
945} 1000}
946 1001
947void QPEApplication::systemMessage( const QCString &msg, const QByteArray &data) 1002void QPEApplication::systemMessage( const QCString &msg, const QByteArray &data)
948{ 1003{
949#ifdef Q_WS_QWS 1004#ifdef Q_WS_QWS
950 QDataStream stream( data, IO_ReadOnly ); 1005 QDataStream stream( data, IO_ReadOnly );
951 if ( msg == "applyStyle()" ) { 1006 if ( msg == "applyStyle()" ) {
952 applyStyle(); 1007 applyStyle();
953 } else if ( msg == "setScreenSaverInterval(int)" ) { 1008 }
1009 else if ( msg == "setScreenSaverInterval(int)" ) {
954 if ( type() == GuiServer ) { 1010 if ( type() == GuiServer ) {
955 int time; 1011 int time;
956 stream >> time; 1012 stream >> time;
957 setScreenSaverInterval(time); 1013 setScreenSaverInterval(time);
958 } 1014 }
959 } else if ( msg == "setScreenSaverIntervals(int,int,int)" ) { 1015 }
1016 else if ( msg == "setScreenSaverIntervals(int,int,int)" ) {
960 if ( type() == GuiServer ) { 1017 if ( type() == GuiServer ) {
961 int t1,t2,t3; 1018 int t1,t2,t3;
962 stream >> t1 >> t2 >> t3; 1019 stream >> t1 >> t2 >> t3;
963 setScreenSaverIntervals(t1,t2,t3); 1020 setScreenSaverIntervals(t1,t2,t3);
964 } 1021 }
965 } else if ( msg == "setBacklight(int)" ) { 1022 }
1023 else if ( msg == "setBacklight(int)" ) {
966 if ( type() == GuiServer ) { 1024 if ( type() == GuiServer ) {
967 int bright; 1025 int bright;
968 stream >> bright; 1026 stream >> bright;
969 setBacklight(bright); 1027 setBacklight(bright);
970 } 1028 }
971 } else if ( msg == "setDefaultRotation(int)" ) { 1029 }
1030 else if ( msg == "setDefaultRotation(int)" ) {
972 if ( type() == GuiServer ) { 1031 if ( type() == GuiServer ) {
973 int r; 1032 int r;
974 stream >> r; 1033 stream >> r;
975 setDefaultRotation(r); 1034 setDefaultRotation(r);
976 } 1035 }
977 } else if ( msg == "shutdown()" ) { 1036 }
1037 else if ( msg == "shutdown()" ) {
978 if ( type() == GuiServer ) 1038 if ( type() == GuiServer )
979 shutdown(); 1039 shutdown();
980 } else if ( msg == "quit()" ) { 1040 }
1041 else if ( msg == "quit()" ) {
981 if ( type() != GuiServer ) 1042 if ( type() != GuiServer )
982 tryQuit(); 1043 tryQuit();
983 } else if ( msg == "forceQuit()" ) { 1044 }
1045 else if ( msg == "forceQuit()" ) {
984 if ( type() != GuiServer ) 1046 if ( type() != GuiServer )
985 quit(); 1047 quit();
986 } else if ( msg == "restart()" ) { 1048 }
1049 else if ( msg == "restart()" ) {
987 if ( type() == GuiServer ) 1050 if ( type() == GuiServer )
988 restart(); 1051 restart();
989 } else if ( msg == "grabKeyboard(QString)" ) { 1052 }
1053 else if ( msg == "grabKeyboard(QString)" ) {
990 QString who; 1054 QString who;
991 stream >> who; 1055 stream >> who;
992 if ( who.isEmpty() ) 1056 if ( who.isEmpty() )
993 d->kbgrabber = 0; 1057 d->kbgrabber = 0;
994 else if ( who != d->appName ) 1058 else if ( who != d->appName )
995 d->kbgrabber = 1; 1059 d->kbgrabber = 1;
996 else 1060 else
997 d->kbgrabber = 2; 1061 d->kbgrabber = 2;
998 } else if ( msg == "language(QString)" ) { 1062 }
1063 else if ( msg == "language(QString)" ) {
999 if ( type() == GuiServer ) { 1064 if ( type() == GuiServer ) {
1000 QString l; 1065 QString l;
1001 stream >> l; 1066 stream >> l;
1002 QString cl = getenv("LANG"); 1067 QString cl = getenv("LANG");
1003 if ( cl != l ) { 1068 if ( cl != l ) {
1004 if ( l.isNull() ) 1069 if ( l.isNull() )
1005 unsetenv( "LANG" ); 1070 unsetenv( "LANG" );
1006 else 1071 else
1007 setenv( "LANG", l.latin1(), 1 ); 1072 setenv( "LANG", l.latin1(), 1 );
1008 restart(); 1073 restart();
1009 } 1074 }
1010 } 1075 }
1011 } else if ( msg == "timeChange(QString)" ) { 1076 }
1077 else if ( msg == "timeChange(QString)" ) {
1012 QString t; 1078 QString t;
1013 stream >> t; 1079 stream >> t;
1014 if ( t.isNull() ) 1080 if ( t.isNull() )
1015 unsetenv( "TZ" ); 1081 unsetenv( "TZ" );
1016 else 1082 else
1017 setenv( "TZ", t.latin1(), 1 ); 1083 setenv( "TZ", t.latin1(), 1 );
1018 // emit the signal so everyone else knows... 1084 // emit the signal so everyone else knows...
1019 emit timeChanged(); 1085 emit timeChanged();
1020 } else if ( msg == "execute(QString)" ) { 1086 }
1087 else if ( msg == "execute(QString)" ) {
1021 if ( type() == GuiServer ) { 1088 if ( type() == GuiServer ) {
1022 QString t; 1089 QString t;
1023 stream >> t; 1090 stream >> t;
1024 Global::execute( t ); 1091 Global::execute( t );
1025 } 1092 }
1026 } else if ( msg == "execute(QString,QString)" ) { 1093 }
1094 else if ( msg == "execute(QString,QString)" ) {
1027 if ( type() == GuiServer ) { 1095 if ( type() == GuiServer ) {
1028 QString t,d; 1096 QString t,d;
1029 stream >> t >> d; 1097 stream >> t >> d;
1030 Global::execute( t, d ); 1098 Global::execute( t, d );
1031 } 1099 }
1032 } else if ( msg == "addAlarm(QDateTime,QCString,QCString,int)" ) { 1100 }
1101 else if ( msg == "addAlarm(QDateTime,QCString,QCString,int)" ) {
1033 if ( type() == GuiServer ) { 1102 if ( type() == GuiServer ) {
1034 QDateTime when; 1103 QDateTime when;
1035 QCString channel, message; 1104 QCString channel, message;
1036 int data; 1105 int data;
1037 stream >> when >> channel >> message >> data; 1106 stream >> when >> channel >> message >> data;
1038 AlarmServer::addAlarm( when, channel, message, data ); 1107 AlarmServer::addAlarm( when, channel, message, data );
1039 } 1108 }
1040 } else if ( msg == "deleteAlarm(QDateTime,QCString,QCString,int)" ) { 1109 }
1110 else if ( msg == "deleteAlarm(QDateTime,QCString,QCString,int)" ) {
1041 if ( type() == GuiServer ) { 1111 if ( type() == GuiServer ) {
1042 QDateTime when; 1112 QDateTime when;
1043 QCString channel, message; 1113 QCString channel, message;
1044 int data; 1114 int data;
1045 stream >> when >> channel >> message >> data; 1115 stream >> when >> channel >> message >> data;
1046 AlarmServer::deleteAlarm( when, channel, message, data ); 1116 AlarmServer::deleteAlarm( when, channel, message, data );
1047 } 1117 }
1048 } else if ( msg == "clockChange(bool)" ) { 1118 }
1119 else if ( msg == "clockChange(bool)" ) {
1049 int tmp; 1120 int tmp;
1050 stream >> tmp; 1121 stream >> tmp;
1051 emit clockChanged( tmp ); 1122 emit clockChanged( tmp );
1052 } else if ( msg == "weekChange(bool)" ) { 1123 }
1124 else if ( msg == "weekChange(bool)" ) {
1053 int tmp; 1125 int tmp;
1054 stream >> tmp; 1126 stream >> tmp;
1055 emit weekChanged( tmp ); 1127 emit weekChanged( tmp );
1056 } else if ( msg == "setDateFormat(DateFormat)" ) { 1128 }
1129 else if ( msg == "setDateFormat(DateFormat)" ) {
1057 DateFormat tmp; 1130 DateFormat tmp;
1058 stream >> tmp; 1131 stream >> tmp;
1059 emit dateFormatChanged( tmp ); 1132 emit dateFormatChanged( tmp );
1060 } else if ( msg == "setVolume(int,int)" ) { 1133 }
1134 else if ( msg == "setVolume(int,int)" ) {
1061 int t,v; 1135 int t,v;
1062 stream >> t >> v; 1136 stream >> t >> v;
1063 setVolume(t,v); 1137 setVolume(t,v);
1064 emit volumeChanged( muted ); 1138 emit volumeChanged( muted );
1065 } else if ( msg == "volumeChange(bool)" ) { 1139 }
1140 else if ( msg == "volumeChange(bool)" ) {
1066 stream >> muted; 1141 stream >> muted;
1067 setVolume(); 1142 setVolume();
1068 emit volumeChanged( muted ); 1143 emit volumeChanged( muted );
1069 } else if ( msg == "setMic(int,int)") { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com> 1144 }
1145 else if ( msg == "setMic(int,int)" ) { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com>
1070 int t,v; 1146 int t,v;
1071 stream >> t >> v; 1147 stream >> t >> v;
1072 setMic(t,v); 1148 setMic(t,v);
1073 emit micChanged( micMuted ); 1149 emit micChanged( micMuted );
1074 } else if ( msg == "micChange(bool)" ) { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com> 1150 }
1151 else if ( msg == "micChange(bool)" ) { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com>
1075 stream >> micMuted; 1152 stream >> micMuted;
1076 setMic(); 1153 setMic();
1077 emit micChanged( micMuted ); 1154 emit micChanged( micMuted );
1078 } else if ( msg == "setScreenSaverMode(int)" ) { 1155 }
1156 else if ( msg == "setScreenSaverMode(int)" ) {
1079 if ( type() == GuiServer ) { 1157 if ( type() == GuiServer ) {
1080 int old = disable_suspend; 1158 int old = disable_suspend;
1081 stream >> disable_suspend; 1159 stream >> disable_suspend;
1082 //qDebug("setScreenSaverMode(%d)", disable_suspend ); 1160 //qDebug("setScreenSaverMode(%d)", disable_suspend );
1083 if ( disable_suspend > old ) 1161 if ( disable_suspend > old )
1084 setScreenSaverInterval( -1 ); 1162 setScreenSaverInterval( -1 );
1085 } 1163 }
1086 } 1164 }
1087#endif 1165#endif
1088} 1166}
1089 1167
1090/*! 1168/*!
1091 \internal 1169 \internal
1092*/ 1170*/
1093bool QPEApplication::raiseAppropriateWindow() 1171bool QPEApplication::raiseAppropriateWindow()
1094{ 1172{
1095 bool r=FALSE; 1173 bool r=FALSE;
1096 // ########## raise()ing main window should raise and set active 1174 // ########## raise()ing main window should raise and set active
1097 // ########## it and then all childen. This belongs in Qt/Embedded 1175 // ########## it and then all childen. This belongs in Qt/Embedded
1098 QWidget *top = d->qpe_main_widget; 1176 QWidget *top = d->qpe_main_widget;
1099 if ( !top ) top =mainWidget(); 1177 if ( !top )
1178 top = mainWidget();
1100 if ( top && d->keep_running ) { 1179 if ( top && d->keep_running ) {
1101 if ( top->isVisible() ) 1180 if ( top->isVisible() )
1102 r = TRUE; 1181 r = TRUE;
1103#ifdef Q_WS_QWS 1182#ifdef Q_WS_QWS
1183
1104 if ( !d->nomaximize ) 1184 if ( !d->nomaximize )
1105 top->showMaximized(); 1185 top->showMaximized();
1106 else 1186 else
1107#endif 1187#endif
1188
1108 top->show(); 1189 top->show();
1109 top->raise(); 1190 top->raise();
1110 top->setActiveWindow(); 1191 top->setActiveWindow();
1111 } 1192 }
1112 QWidget *topm = activeModalWidget(); 1193 QWidget *topm = activeModalWidget();
1113 if ( topm && topm != top ) { 1194 if ( topm && topm != top ) {
1114 topm->show(); 1195 topm->show();
1115 topm->raise(); 1196 topm->raise();
1116 topm->setActiveWindow(); 1197 topm->setActiveWindow();
1117 r = FALSE; 1198 r = FALSE;
1118 } 1199 }
1119 return r; 1200 return r;
1120} 1201}
1121 1202
1122void QPEApplication::pidMessage( const QCString &msg, const QByteArray & data) 1203void QPEApplication::pidMessage( const QCString &msg, const QByteArray & data)
1123{ 1204{
1124#ifdef Q_WS_QWS 1205#ifdef Q_WS_QWS
1125 1206
1126 if ( msg == "quit()" ) { 1207 if ( msg == "quit()" ) {
1127 tryQuit(); 1208 tryQuit();
1128 } else if ( msg == "quitIfInvisible()" ) { 1209 }
1210 else if ( msg == "quitIfInvisible()" ) {
1129 if ( d->qpe_main_widget && !d->qpe_main_widget->isVisible() ) 1211 if ( d->qpe_main_widget && !d->qpe_main_widget->isVisible() )
1130 quit(); 1212 quit();
1131 } else if ( msg == "close()" ) { 1213 }
1214 else if ( msg == "close()" ) {
1132 hideOrQuit(); 1215 hideOrQuit();
1133 } else if ( msg == "disablePreload()" ) { 1216 }
1217 else if ( msg == "disablePreload()" ) {
1134 d->preloaded = FALSE; 1218 d->preloaded = FALSE;
1135 d->keep_running = TRUE; 1219 d->keep_running = TRUE;
1136 /* so that quit will quit */ 1220 /* so that quit will quit */
1137 } else if ( msg == "enablePreload()" ) { 1221 }
1222 else if ( msg == "enablePreload()" ) {
1138 d->preloaded = TRUE; 1223 d->preloaded = TRUE;
1139 d->keep_running = TRUE; 1224 d->keep_running = TRUE;
1140 /* so next quit won't quit */ 1225 /* so next quit won't quit */
1141 } else if ( msg == "raise()" ) { 1226 }
1227 else if ( msg == "raise()" ) {
1142 d->keep_running = TRUE; 1228 d->keep_running = TRUE;
1143 d->notbusysent = FALSE; 1229 d->notbusysent = FALSE;
1144 raiseAppropriateWindow(); 1230 raiseAppropriateWindow();
1145 } else if ( msg == "flush()" ) { 1231 }
1232 else if ( msg == "flush()" ) {
1146 emit flush(); 1233 emit flush();
1147 // we need to tell the desktop 1234 // we need to tell the desktop
1148 QCopEnvelope e( "QPE/Desktop", "flushDone(QString)" ); 1235 QCopEnvelope e( "QPE/Desktop", "flushDone(QString)" );
1149 e << d->appName; 1236 e << d->appName;
1150 } else if ( msg == "reload()" ) { 1237 }
1238 else if ( msg == "reload()" ) {
1151 emit reload(); 1239 emit reload();
1152 } else if ( msg == "setDocument(QString)" ) { 1240 }
1241 else if ( msg == "setDocument(QString)" ) {
1153 d->keep_running = TRUE; 1242 d->keep_running = TRUE;
1154 QDataStream stream( data, IO_ReadOnly ); 1243 QDataStream stream( data, IO_ReadOnly );
1155 QString doc; 1244 QString doc;
1156 stream >> doc; 1245 stream >> doc;
1157 QWidget *mw = mainWidget(); 1246 QWidget *mw = mainWidget();
1158 if ( !mw ) 1247 if ( !mw )
1159 mw = d->qpe_main_widget; 1248 mw = d->qpe_main_widget;
1160 if ( mw ) 1249 if ( mw )
1161 Global::setDocument( mw, doc ); 1250 Global::setDocument( mw, doc );
1162 } else if ( msg == "nextView()" ) { 1251 }
1252 else if ( msg == "nextView()" ) {
1163 if ( raiseAppropriateWindow() ) 1253 if ( raiseAppropriateWindow() )
1164 emit appMessage( msg, data); 1254 emit appMessage( msg, data);
1165 } else { 1255 }
1256 else {
1166 emit appMessage( msg, data); 1257 emit appMessage( msg, data);
1167 } 1258 }
1168#endif 1259#endif
1169} 1260}
1170 1261
1171 1262
1172static bool setWidgetCaptionFromAppName( QWidget* /*mw*/, const QString& /*appName*/, const QString& /*appsPath*/ ) 1263static bool setWidgetCaptionFromAppName( QWidget* /*mw*/, const QString& /*appName*/, const QString& /*appsPath*/ )
1173{ 1264{
1174/* 1265/*
1175 // This works but disable it for now until it is safe to apply 1266 // This works but disable it for now until it is safe to apply
1176 // What is does is scan the .desktop files of all the apps for 1267 // What is does is scan the .desktop files of all the apps for
1177 // the applnk that has the corresponding argv[0] as this program 1268 // the applnk that has the corresponding argv[0] as this program
1178 // then it uses the name stored in the .desktop file as the caption 1269 // then it uses the name stored in the .desktop file as the caption
1179 // for the main widget. This saves duplicating translations for 1270 // for the main widget. This saves duplicating translations for
1180 // the app name in the program and in the .desktop files. 1271 // the app name in the program and in the .desktop files.
1181 1272
1182 AppLnkSet apps( appsPath ); 1273 AppLnkSet apps( appsPath );
1183 1274
1184 QList<AppLnk> appsList = apps.children(); 1275 QList<AppLnk> appsList = apps.children();
1185 for ( QListIterator<AppLnk> it(appsList); it.current(); ++it ) { 1276 for ( QListIterator<AppLnk> it(appsList); it.current(); ++it ) {
1186 if ( (*it)->exec() == appName ) { 1277 if ( (*it)->exec() == appName ) {
1187 mw->setCaption( (*it)->name() ); 1278 mw->setCaption( (*it)->name() );
1188 return TRUE; 1279 return TRUE;
1189 } 1280 }
@@ -1192,234 +1283,278 @@ static bool setWidgetCaptionFromAppName( QWidget* /*mw*/, const QString& /*appNa
1192 return FALSE; 1283 return FALSE;
1193} 1284}
1194 1285
1195 1286
1196/*! 1287/*!
1197 Sets \a mw as the mainWidget() and shows it. For small windows, 1288 Sets \a mw as the mainWidget() and shows it. For small windows,
1198 consider passing TRUE for \a nomaximize rather than the default FALSE. 1289 consider passing TRUE for \a nomaximize rather than the default FALSE.
1199 1290
1200 \sa showMainDocumentWidget() 1291 \sa showMainDocumentWidget()
1201*/ 1292*/
1202void QPEApplication::showMainWidget( QWidget* mw, bool nomaximize ) 1293void QPEApplication::showMainWidget( QWidget* mw, bool nomaximize )
1203{ 1294{
1204 setWidgetCaptionFromAppName( mw, d->appName, qpeDir() + "apps" ); 1295 setWidgetCaptionFromAppName( mw, d->appName, qpeDir() + "apps" );
1205 1296
1206 d->nomaximize = nomaximize; 1297 d->nomaximize = nomaximize;
1207 d->qpe_main_widget = mw; 1298 d->qpe_main_widget = mw;
1208 d->sendQCopQ(); 1299 d->sendQCopQ();
1209 if ( d->preloaded ) { 1300 if ( d->preloaded ) {
1210 if(d->forceshow) { 1301 if(d->forceshow) {
1211#ifdef Q_WS_QWS 1302#ifdef Q_WS_QWS
1212 if ( !nomaximize ) 1303 if ( !nomaximize )
1213 mw->showMaximized(); 1304 mw->showMaximized();
1214 else 1305 else
1215#endif 1306#endif
1307
1216 mw->show(); 1308 mw->show();
1217 } 1309 }
1218 } else if ( d->keep_running ) { 1310 }
1311 else if ( d->keep_running ) {
1219#ifdef Q_WS_QWS 1312#ifdef Q_WS_QWS
1220 if ( !nomaximize ) 1313 if ( !nomaximize )
1221 mw->showMaximized(); 1314 mw->showMaximized();
1222 else 1315 else
1223#endif 1316#endif
1317
1224 mw->show(); 1318 mw->show();
1225 } 1319 }
1226} 1320}
1227 1321
1228/*! 1322/*!
1229 Sets \a mw as the mainWidget() and shows it. For small windows, 1323 Sets \a mw as the mainWidget() and shows it. For small windows,
1230 consider passing TRUE for \a nomaximize rather than the default FALSE. 1324 consider passing TRUE for \a nomaximize rather than the default FALSE.
1231 1325
1232 This calls designates the application as 1326 This calls designates the application as
1233 a \link docwidget.html document-oriented\endlink application. 1327 a \link docwidget.html document-oriented\endlink application.
1234 1328
1235 The \a mw widget must have a slot: setDocument(const QString&). 1329 The \a mw widget must have a slot: setDocument(const QString&).
1236 1330
1237 \sa showMainWidget() 1331 \sa showMainWidget()
1238*/ 1332*/
1239void QPEApplication::showMainDocumentWidget( QWidget* mw, bool nomaximize ) 1333void QPEApplication::showMainDocumentWidget( QWidget* mw, bool nomaximize )
1240{ 1334{
1241 setWidgetCaptionFromAppName( mw, d->appName, qpeDir() + "apps" ); 1335 setWidgetCaptionFromAppName( mw, d->appName, qpeDir() + "apps" );
1242 1336
1243 if ( mw && argc() == 2 ) 1337 if ( mw && argc() == 2 )
1244 Global::setDocument( mw, QString::fromUtf8(argv()[1]) ); 1338 Global::setDocument( mw, QString::fromUtf8(argv()[1]) );
1245 d->nomaximize = nomaximize; 1339 d->nomaximize = nomaximize;
1246 d->qpe_main_widget = mw; 1340 d->qpe_main_widget = mw;
1247 d->sendQCopQ(); 1341 d->sendQCopQ();
1248 if ( d->preloaded ) { 1342 if ( d->preloaded ) {
1249 if(d->forceshow) { 1343 if(d->forceshow) {
1250#ifdef Q_WS_QWS 1344#ifdef Q_WS_QWS
1251 if ( !nomaximize ) 1345 if ( !nomaximize )
1252 mw->showMaximized(); 1346 mw->showMaximized();
1253 else 1347 else
1254#endif 1348#endif
1349
1255 mw->show(); 1350 mw->show();
1256 } 1351 }
1257 } else if ( d->keep_running ) { 1352 }
1353 else if ( d->keep_running ) {
1258#ifdef Q_WS_QWS 1354#ifdef Q_WS_QWS
1259 if ( !nomaximize ) 1355 if ( !nomaximize )
1260 mw->showMaximized(); 1356 mw->showMaximized();
1261 else 1357 else
1262#endif 1358#endif
1359
1263 mw->show(); 1360 mw->show();
1264 } 1361 }
1265} 1362}
1266 1363
1267 1364
1268/*! 1365/*!
1269 Sets that the application should continue running after processing 1366 Sets that the application should continue running after processing
1270 qcop messages. Normally if an application is started via a qcop message, 1367 qcop messages. Normally if an application is started via a qcop message,
1271 the application will process the qcop message and then quit. If while 1368 the application will process the qcop message and then quit. If while
1272 processing the qcop message it calls this function, then the application 1369 processing the qcop message it calls this function, then the application
1273 will show and start proper once it has finished processing qcop messages. 1370 will show and start proper once it has finished processing qcop messages.
1274 1371
1275 \sa keepRunning() 1372 \sa keepRunning()
1276*/ 1373*/
1277void QPEApplication::setKeepRunning() 1374void QPEApplication::setKeepRunning()
1278{ 1375{
1279 if ( qApp && qApp->inherits( "QPEApplication" ) ) { 1376 if ( qApp && qApp->inherits( "QPEApplication" ) ) {
1280 QPEApplication *qpeApp = (QPEApplication*)qApp; 1377 QPEApplication *qpeApp = (QPEApplication*)qApp;
1281 qpeApp->d->keep_running = TRUE; 1378 qpeApp->d->keep_running = TRUE;
1282 } 1379 }
1283} 1380}
1284 1381
1285/*! 1382/*!
1286 Returns whether the application will quit after processing the current 1383 Returns whether the application will quit after processing the current
1287 list of qcop messages. 1384 list of qcop messages.
1288 1385
1289 \sa setKeepRunning() 1386 \sa setKeepRunning()
1290*/ 1387*/
1291bool QPEApplication::keepRunning() const 1388bool QPEApplication::keepRunning() const
1292{ 1389{
1293 return d->keep_running; 1390 return d->keep_running;
1294} 1391}
1295 1392
1296/*! 1393/*!
1297 \internal 1394 \internal
1298*/ 1395*/
1299void QPEApplication::internalSetStyle( const QString &style ) 1396void QPEApplication::internalSetStyle( const QString &style )
1300{ 1397{
1301#if QT_VERSION >= 300 1398#if QT_VERSION >= 300
1302 if ( style == "QPE" ) { 1399 if ( style == "QPE" ) {
1303 setStyle( new QPEStyle ); 1400 setStyle( new QPEStyle );
1304 } else { 1401 }
1402 else {
1305 QStyle *s = QStyleFactory::create(style); 1403 QStyle *s = QStyleFactory::create(style);
1306 if ( s ) setStyle(s); 1404 if ( s )
1405 setStyle( s );
1307 } 1406 }
1308#else 1407#else
1309 if ( style == "Windows" ) { 1408 if ( style == "Windows" ) {
1310 setStyle( new QWindowsStyle ); 1409 setStyle( new QWindowsStyle );
1311 } else if ( style == "QPE" ) { 1410 }
1411 else if ( style == "QPE" ) {
1312 setStyle( new QPEStyle ); 1412 setStyle( new QPEStyle );
1313 } else if ( style == "Light" ) { 1413 }
1414 else if ( style == "Light" ) {
1314 setStyle( new LightStyle ); 1415 setStyle( new LightStyle );
1315 } 1416 }
1316#ifndef QT_NO_STYLE_PLATINUM 1417#ifndef QT_NO_STYLE_PLATINUM
1317 else if ( style == "Platinum" ) { 1418 else if ( style == "Platinum" ) {
1318 setStyle( new QPlatinumStyle ); 1419 setStyle( new QPlatinumStyle );
1319 } 1420 }
1320#endif 1421#endif
1321#ifndef QT_NO_STYLE_MOTIF 1422#ifndef QT_NO_STYLE_MOTIF
1322 else if ( style == "Motif" ) { 1423 else if ( style == "Motif" ) {
1323 setStyle( new QMotifStyle ); 1424 setStyle( new QMotifStyle );
1324 } 1425 }
1325#endif 1426#endif
1326#ifndef QT_NO_STYLE_MOTIFPLUS 1427#ifndef QT_NO_STYLE_MOTIFPLUS
1327 else if ( style == "MotifPlus" ) { 1428 else if ( style == "MotifPlus" ) {
1328 setStyle( new QMotifPlusStyle ); 1429 setStyle( new QMotifPlusStyle );
1329 } 1430 }
1330#endif 1431#endif
1331 1432
1332 // HACK for Qt2 only 1433 // HACK for Qt2 only
1333 else { 1434 else {
1435 QStyle *sty = 0;
1436 QString path = QPEApplication::qpeDir ( ) + "/plugins/styles/lib" + style. lower ( ) + ".so";
1437
1438 static QLibrary *lastlib = 0;
1439 static StyleInterface *lastiface = 0;
1440
1441 QLibrary *lib = new QLibrary ( path );
1442 StyleInterface *iface = 0;
1443
1444 if ( lib-> queryInterface ( IID_Style, ( QUnknownInterface ** ) &iface ) == QS_OK )
1445 sty = iface-> create ( );
1446
1447 if ( sty ) {
1448 setStyle ( sty );
1449
1450 qDebug ( "Got Style: %p -- iface: %p, lib: %p\n", sty, iface, lib );
1451
1452 if ( lastiface )
1453 lastiface-> release ( );
1454 lastiface = iface;
1455
1456
1457 if ( lastlib ) {
1458 lastlib-> unload ( );
1459 delete lastlib;
1460 }
1461 lastlib = lib;
1462 }
1463 else {
1464 if ( iface )
1465 iface-> release ( );
1466 delete lib;
1467
1468 setStyle ( new QPEStyle ( ));
1469 }
1470
1471#if 0
1334 // style == "Liquid Style (libliquid.so)" (or "Windows XP (libxp.so)" 1472 // style == "Liquid Style (libliquid.so)" (or "Windows XP (libxp.so)"
1335 1473
1336 int p2 = style. findRev ( ']' ); 1474 int p2 = style. findRev ( ']' );
1337 int p1 = style. findRev ( '[' ); 1475 int p1 = style. findRev ( '[' );
1338 QString style2; 1476 QString style2;
1339 1477
1340 if (( p1 > 0 ) && ( p2 > 0 ) && (( p1 + 1 ) < p2 )) 1478 if (( p1 > 0 ) && ( p2 > 0 ) && (( p1 + 1 ) < p2 ))
1341 style2 = "lib" + style. mid ( p1 + 1, p2 - p1 - 1 ). lower ( ) + ".so"; 1479 style2 = "lib" + style. mid ( p1 + 1, p2 - p1 - 1 ). lower ( ) + ".so";
1342 else 1480 else
1343 style2 = "lib" + style. lower ( ) + ".so"; 1481 style2 = "lib" + style. lower ( ) + ".so";
1344 1482
1345 // static QLibrary *currentlib = 0; 1483 static QLibrary *currentlib = 0;
1346 static void *currentlib = 0;
1347 1484
1348 QString path = QPEApplication::qpeDir ( ) + "/plugins/styles/" + style2; 1485 QString path = QPEApplication::qpeDir ( ) + "/plugins/styles/" + style2;
1349 1486
1350 do { // try/catch simulation 1487 do { // try/catch simulation
1351 // QLibrary *lib = new QLibrary ( path, QLibrary::Immediately ); 1488 QLibrary *lib = new QLibrary ( path, QLibrary::Immediately );
1352 void *lib = ::dlopen ( path. local8Bit ( ), RTLD_LAZY | RTLD_GLOBAL );
1353 1489
1354 if ( lib ) { 1490 if ( lib ) {
1355 //QStyle * (*fpa) ( ) = (QStyle * (*) ( )) lib-> resolve ( "allocate" ); 1491 QStyle * ( *fpa ) ( ) = ( QStyle * ( * ) ( ) ) lib-> resolve ( "allocate" );
1356 QStyle * (*fpa) ( ) = (QStyle * (*) ( )) ::dlsym ( lib, "allocate" );
1357 1492
1358 if ( fpa ) { 1493 if ( fpa ) {
1359 QStyle *sty = ( *fpa ) ( ); 1494 QStyle *sty = ( *fpa ) ( );
1360 1495
1361 if ( sty ) { 1496 if ( sty ) {
1362 setStyle ( sty ); 1497 setStyle ( sty );
1363 1498
1364 if ( currentlib ) { 1499 if ( currentlib )
1365 //delete currentlib; 1500 delete currentlib;
1366 ::dlclose ( currentlib );
1367 }
1368 currentlib = lib; 1501 currentlib = lib;
1369 1502
1370 break; 1503 break;
1371 } 1504 }
1372 } 1505 }
1373 //delete lib; 1506 delete lib;
1374 ::dlclose ( lib );
1375 } 1507 }
1376 } while ( false );
1377 } 1508 }
1509 while ( false );
1378 // HACK for Qt2 only 1510 // HACK for Qt2 only
1379#endif 1511#endif
1380} 1512}
1513#endif
1514}
1381 1515
1382/*! 1516/*!
1383 \internal 1517 \internal
1384*/ 1518*/
1385void QPEApplication::prepareForTermination(bool willrestart) 1519void QPEApplication::prepareForTermination(bool willrestart)
1386{ 1520{
1387 if ( willrestart ) { 1521 if ( willrestart ) {
1388 // Draw a big wait icon, the image can be altered in later revisions 1522 // Draw a big wait icon, the image can be altered in later revisions
1389// QWidget *d = QApplication::desktop(); 1523// QWidget *d = QApplication::desktop();
1390 QImage img = Resource::loadImage( "launcher/new_wait" ); 1524 QImage img = Resource::loadImage( "launcher/new_wait" );
1391 QPixmap pix; 1525 QPixmap pix;
1392 pix.convertFromImage(img.smoothScale(1*img.width(), 1*img.height())); 1526 pix.convertFromImage(img.smoothScale(1*img.width(), 1*img.height()));
1393 QLabel *lblWait = new QLabel(0, "wait hack!", QWidget::WStyle_Customize | 1527 QLabel *lblWait = new QLabel(0, "wait hack!", QWidget::WStyle_Customize |
1394 QWidget::WStyle_NoBorder | QWidget::WStyle_Tool ); 1528 QWidget::WStyle_NoBorder | QWidget::WStyle_Tool );
1395 lblWait->setPixmap( pix ); 1529 lblWait->setPixmap( pix );
1396 lblWait->setAlignment( QWidget::AlignCenter ); 1530 lblWait->setAlignment( QWidget::AlignCenter );
1397 lblWait->show(); 1531 lblWait->show();
1398 lblWait->showMaximized(); 1532 lblWait->showMaximized();
1399 } 1533 }
1400#ifndef SINGLE_APP 1534#ifndef SINGLE_APP
1401 { QCopEnvelope envelope("QPE/System", "forceQuit()"); } 1535 { QCopEnvelope envelope( "QPE/System", "forceQuit()" );
1536 }
1402 processEvents(); // ensure the message goes out. 1537 processEvents(); // ensure the message goes out.
1403 sleep(1); // You have 1 second to comply. 1538 sleep(1); // You have 1 second to comply.
1404#endif 1539#endif
1405} 1540}
1406 1541
1407/*! 1542/*!
1408 \internal 1543 \internal
1409*/ 1544*/
1410void QPEApplication::shutdown() 1545void QPEApplication::shutdown()
1411{ 1546{
1412 // Implement in server's QPEApplication subclass 1547 // Implement in server's QPEApplication subclass
1413} 1548}
1414 1549
1415/*! 1550/*!
1416 \internal 1551 \internal
1417*/ 1552*/
1418void QPEApplication::restart() 1553void QPEApplication::restart()
1419{ 1554{
1420 // Implement in server's QPEApplication subclass 1555 // Implement in server's QPEApplication subclass
1421} 1556}
1422 1557
1423static QPtrDict<void>* stylusDict=0; 1558static QPtrDict<void>* stylusDict=0;
1424static void createDict() 1559static void createDict()
1425{ 1560{
@@ -1438,51 +1573,53 @@ QPEApplication::StylusMode QPEApplication::stylusOperation( QWidget* w )
1438 return (StylusMode)(int)stylusDict->find(w); 1573 return (StylusMode)(int)stylusDict->find(w);
1439 return LeftOnly; 1574 return LeftOnly;
1440} 1575}
1441 1576
1442/*! 1577/*!
1443 \enum QPEApplication::StylusMode 1578 \enum QPEApplication::StylusMode
1444 1579
1445 \value LeftOnly the stylus only generates LeftButton 1580 \value LeftOnly the stylus only generates LeftButton
1446 events (the default). 1581 events (the default).
1447 \value RightOnHold the stylus generates RightButton events 1582 \value RightOnHold the stylus generates RightButton events
1448 if the user uses the press-and-hold gesture. 1583 if the user uses the press-and-hold gesture.
1449 1584
1450 See setStylusOperation(). 1585 See setStylusOperation().
1451*/ 1586*/
1452 1587
1453/*! 1588/*!
1454 Causes \a w to receive mouse events according to \a mode. 1589 Causes \a w to receive mouse events according to \a mode.
1455 1590
1456 \sa stylusOperation() 1591 \sa stylusOperation()
1457*/ 1592*/
1458void QPEApplication::setStylusOperation( QWidget* w, StylusMode mode ) 1593void QPEApplication::setStylusOperation( QWidget* w, StylusMode mode )
1459{ 1594{
1460 createDict(); 1595 createDict();
1461 if ( mode == LeftOnly ) { 1596 if ( mode == LeftOnly ) {
1462 stylusDict->remove(w); 1597 stylusDict->remove
1598 ( w );
1463 w->removeEventFilter(qApp); 1599 w->removeEventFilter(qApp);
1464 } else { 1600 }
1601 else {
1465 stylusDict->insert(w,(void*)mode); 1602 stylusDict->insert(w,(void*)mode);
1466 connect(w,SIGNAL(destroyed()),qApp,SLOT(removeSenderFromStylusDict())); 1603 connect(w,SIGNAL(destroyed()),qApp,SLOT(removeSenderFromStylusDict()));
1467 w->installEventFilter(qApp); 1604 w->installEventFilter(qApp);
1468 } 1605 }
1469} 1606}
1470 1607
1471 1608
1472/*! 1609/*!
1473 \reimp 1610 \reimp
1474*/ 1611*/
1475bool QPEApplication::eventFilter( QObject *o, QEvent *e ) 1612bool QPEApplication::eventFilter( QObject *o, QEvent *e )
1476{ 1613{
1477 if ( stylusDict && e->type() >= QEvent::MouseButtonPress && e->type() <= QEvent::MouseMove ) { 1614 if ( stylusDict && e->type() >= QEvent::MouseButtonPress && e->type() <= QEvent::MouseMove ) {
1478 QMouseEvent* me = (QMouseEvent*)e; 1615 QMouseEvent* me = (QMouseEvent*)e;
1479 if ( me->button() == LeftButton ) { 1616 if ( me->button() == LeftButton ) {
1480 StylusMode mode = (StylusMode)(int)stylusDict->find(o); 1617 StylusMode mode = (StylusMode)(int)stylusDict->find(o);
1481 switch (mode) { 1618 switch (mode) {
1482 case RightOnHold: 1619 case RightOnHold:
1483 switch ( me->type() ) { 1620 switch ( me->type() ) {
1484 case QEvent::MouseButtonPress: 1621 case QEvent::MouseButtonPress:
1485 d->presstimer = startTimer(500); // #### pref. 1622 d->presstimer = startTimer(500); // #### pref.
1486 d->presswidget = (QWidget*)o; 1623 d->presswidget = (QWidget*)o;
1487 d->presspos = me->pos(); 1624 d->presspos = me->pos();
1488 d->rightpressed = FALSE; 1625 d->rightpressed = FALSE;
@@ -1495,81 +1632,83 @@ bool QPEApplication::eventFilter( QObject *o, QEvent *e )
1495 if ( d->rightpressed && d->presswidget ) { 1632 if ( d->rightpressed && d->presswidget ) {
1496 // Right released 1633 // Right released
1497 postEvent( d->presswidget, 1634 postEvent( d->presswidget,
1498 new QMouseEvent( QEvent::MouseButtonRelease, me->pos(), 1635 new QMouseEvent( QEvent::MouseButtonRelease, me->pos(),
1499 RightButton, LeftButton+RightButton ) ); 1636 RightButton, LeftButton+RightButton ) );
1500 // Left released, off-widget 1637 // Left released, off-widget
1501 postEvent( d->presswidget, 1638 postEvent( d->presswidget,
1502 new QMouseEvent( QEvent::MouseMove, QPoint(-1,-1), 1639 new QMouseEvent( QEvent::MouseMove, QPoint(-1,-1),
1503 LeftButton, LeftButton ) ); 1640 LeftButton, LeftButton ) );
1504 postEvent( d->presswidget, 1641 postEvent( d->presswidget,
1505 new QMouseEvent( QEvent::MouseButtonRelease, QPoint(-1,-1), 1642 new QMouseEvent( QEvent::MouseButtonRelease, QPoint(-1,-1),
1506 LeftButton, LeftButton ) ); 1643 LeftButton, LeftButton ) );
1507 d->rightpressed = FALSE; 1644 d->rightpressed = FALSE;
1508 return TRUE; // don't send the real Left release 1645 return TRUE; // don't send the real Left release
1509 } 1646 }
1510 break; 1647 break;
1511 default: 1648 default:
1512 break; 1649 break;
1513 } 1650 }
1514 break; 1651 break;
1515 default: 1652 default:
1516 ; 1653 ;
1517 } 1654 }
1518 } 1655 }
1519 } else if ( e->type() == QEvent::KeyPress || e->type() == QEvent::KeyRelease ) { 1656 }
1657 else if ( e->type() == QEvent::KeyPress || e->type() == QEvent::KeyRelease ) {
1520 QKeyEvent *ke = (QKeyEvent *)e; 1658 QKeyEvent *ke = (QKeyEvent *)e;
1521 if ( ke->key() == Key_Enter ) { 1659 if ( ke->key() == Key_Enter ) {
1522 if ( o->isA( "QRadioButton" ) || o->isA( "QCheckBox" ) ) { 1660 if ( o->isA( "QRadioButton" ) || o->isA( "QCheckBox" ) ) {
1523 postEvent( o, new QKeyEvent( e->type(), Key_Space, ' ', 1661 postEvent( o, new QKeyEvent( e->type(), Key_Space, ' ',
1524 ke->state(), " ", ke->isAutoRepeat(), ke->count() ) ); 1662 ke->state(), " ", ke->isAutoRepeat(), ke->count() ) );
1525 return TRUE; 1663 return TRUE;
1526 } 1664 }
1527 } 1665 }
1528 } 1666 }
1529 1667
1530 return FALSE; 1668 return FALSE;
1531} 1669}
1532 1670
1533/*! 1671/*!
1534 \reimp 1672 \reimp
1535*/ 1673*/
1536void QPEApplication::timerEvent( QTimerEvent *e ) 1674void QPEApplication::timerEvent( QTimerEvent *e )
1537{ 1675{
1538 if ( e->timerId() == d->presstimer && d->presswidget ) { 1676 if ( e->timerId() == d->presstimer && d->presswidget ) {
1539 // Right pressed 1677 // Right pressed
1540 postEvent( d->presswidget, 1678 postEvent( d->presswidget,
1541 new QMouseEvent( QEvent::MouseButtonPress, d->presspos, 1679 new QMouseEvent( QEvent::MouseButtonPress, d->presspos,
1542 RightButton, LeftButton ) ); 1680 RightButton, LeftButton ) );
1543 killTimer( d->presstimer ); 1681 killTimer( d->presstimer );
1544 d->presstimer = 0; 1682 d->presstimer = 0;
1545 d->rightpressed = TRUE; 1683 d->rightpressed = TRUE;
1546 } 1684 }
1547} 1685}
1548 1686
1549void QPEApplication::removeSenderFromStylusDict() 1687void QPEApplication::removeSenderFromStylusDict()
1550{ 1688{
1551 stylusDict->remove((void*)sender()); 1689 stylusDict->remove
1690 ( ( void* ) sender() );
1552 if ( d->presswidget == sender() ) 1691 if ( d->presswidget == sender() )
1553 d->presswidget = 0; 1692 d->presswidget = 0;
1554} 1693}
1555 1694
1556/*! 1695/*!
1557 \internal 1696 \internal
1558*/ 1697*/
1559bool QPEApplication::keyboardGrabbed() const 1698bool QPEApplication::keyboardGrabbed() const
1560{ 1699{
1561 return d->kbgrabber; 1700 return d->kbgrabber;
1562} 1701}
1563 1702
1564 1703
1565/*! 1704/*!
1566 Reverses the effect of grabKeyboard(). This is called automatically 1705 Reverses the effect of grabKeyboard(). This is called automatically
1567 on program exit. 1706 on program exit.
1568*/ 1707*/
1569void QPEApplication::ungrabKeyboard() 1708void QPEApplication::ungrabKeyboard()
1570{ 1709{
1571 QPEApplicationData* d = ((QPEApplication*)qApp)->d; 1710 QPEApplicationData* d = ((QPEApplication*)qApp)->d;
1572 if ( d->kbgrabber == 2 ) { 1711 if ( d->kbgrabber == 2 ) {
1573 QCopEnvelope e("QPE/System", "grabKeyboard(QString)" ); 1712 QCopEnvelope e("QPE/System", "grabKeyboard(QString)" );
1574 e << QString::null; 1713 e << QString::null;
1575 d->kbregrab = FALSE; 1714 d->kbregrab = FALSE;
@@ -1683,34 +1822,33 @@ void operator delete(void* p)
1683{ 1822{
1684 free(p); 1823 free(p);
1685} 1824}
1686 1825
1687void operator delete(void* p, size_t /*size*/) 1826void operator delete(void* p, size_t /*size*/)
1688{ 1827{
1689 free(p); 1828 free(p);
1690} 1829}
1691 1830
1692#endif 1831#endif
1693 1832
1694#if ( QT_VERSION <= 230 ) && !defined(SINGLE_APP) 1833#if ( QT_VERSION <= 230 ) && !defined(SINGLE_APP)
1695#include <qwidgetlist.h> 1834#include <qwidgetlist.h>
1696#include <qgfx_qws.h> 1835#include <qgfx_qws.h>
1697extern QRect qt_maxWindowRect; 1836extern QRect qt_maxWindowRect;
1698void qt_setMaxWindowRect(const QRect& r) 1837void qt_setMaxWindowRect(const QRect& r)
1699{ 1838{
1700 qt_maxWindowRect = qt_screen->mapFromDevice(r, 1839 qt_maxWindowRect = qt_screen->mapFromDevice(r,
1701 qt_screen->mapToDevice(QSize(qt_screen->width(),qt_screen->height()))); 1840 qt_screen->mapToDevice(QSize(qt_screen->width(),qt_screen->height())));
1702 // Re-resize any maximized windows 1841 // Re-resize any maximized windows
1703 QWidgetList* l = QApplication::topLevelWidgets(); 1842 QWidgetList* l = QApplication::topLevelWidgets();
1704 if ( l ) { 1843 if ( l ) {
1705 QWidget *w = l->first(); 1844 QWidget *w = l->first();
1706 while ( w ) { 1845 while ( w ) {
1707 if ( w->isVisible() && w->isMaximized() ) 1846 if ( w->isVisible() && w->isMaximized() ) {
1708 {
1709 w->showMaximized(); 1847 w->showMaximized();
1710 } 1848 }
1711 w = l->next(); 1849 w = l->next();
1712 } 1850 }
1713 delete l; 1851 delete l;
1714 } 1852 }
1715} 1853}
1716#endif 1854#endif
diff --git a/library/styleinterface.h b/library/styleinterface.h
new file mode 100644
index 0000000..9fea636
--- a/dev/null
+++ b/library/styleinterface.h
@@ -0,0 +1,68 @@
1/**********************************************************************
2** Copyright (C) 2002 Robert Griebl. All rights reserved.
3**
4** This file is part of OPIE (http://www.opie.info).
5**
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
8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file.
10**
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.
13**
14**********************************************************************/
15
16#ifndef STYLEINTERFACE_H
17#define STYLEINTERFACE_H
18
19#include <qpe/qcom.h>
20
21#ifndef QT_NO_COMPONENT
22
23// {6C33B4F9-D529-453A-8FB3-DA42B21872BD}
24# ifndef IID_Style
25# define IID_Style QUuid( 0x6c33b4f9, 0xd529, 0x453a, 0x8f, 0xb3, 0xda, 0x42, 0xb2, 0x18, 0x72, 0xbd)
26#endif
27
28// {9757A252-3FD4-438F-A756-80BE4A9FB8DC}
29# ifndef IID_StyleSettings
30# define IID_StyleSettings QUuid( 0x9757a252, 0x3fd4, 0x438f, 0xa7, 0x56, 0x80, 0xbe, 0x4a, 0x9f, 0xb8, 0xdc)
31# endif
32
33#endif
34
35class QWidget;
36class QStyle;
37
38struct StyleInterface : public QUnknownInterface
39{
40 //! Return a new style.
41 virtual QStyle *create ( ) = 0;
42
43 //! Return a (longer) description for the style.
44 virtual QString description ( ) = 0;
45
46 //! Return a short name for the style.
47 virtual QString name ( ) = 0;
48
49 //! Return the library basename (libliquid.so => liquid)
50 virtual QCString key ( ) = 0;
51
52 //! QT_VERSION like 1.2.3 == 123
53 virtual unsigned int version ( ) = 0;
54};
55
56struct StyleSettingsInterface : public QUnknownInterface
57{
58 //! Return a new settings page.
59 virtual QWidget *create ( QWidget *parent, const char *name = 0 ) = 0;
60
61 //! Callback for appearance app when OK is clicked (return true when style has to re-applied).
62 virtual bool accept ( ) = 0;
63
64 //! Callback for appeaeance app when Cancel is clicked.
65 virtual void reject ( ) = 0;
66};
67
68#endif
diff --git a/noncore/styles/liquid/liquid.pro b/noncore/styles/liquid/liquid.pro
index 23dce09..a07eaf2 100644
--- a/noncore/styles/liquid/liquid.pro
+++ b/noncore/styles/liquid/liquid.pro
@@ -1,30 +1,34 @@
1TEMPLATE = lib 1TEMPLATE = lib
2CONFIG = qt embedded release warn_on 2CONFIG = qt embedded release warn_on
3SOURCES = liquid.cpp \ 3SOURCES = liquid.cpp \
4 liquiddeco.cpp \ 4 liquiddeco.cpp \
5 effects.cpp \ 5 effects.cpp \
6 liquidset.cpp \
6 plugin.cpp 7 plugin.cpp
7 8
8HEADERS = liquid.h \ 9HEADERS = liquid.h \
9 liquiddeco.h \ 10 liquiddeco.h \
10 effects.h 11 effects.h \
12 liquidset.h \
13 plugin.h
14
11LIBS += -lqpe 15LIBS += -lqpe
12INCLUDEPATH += $(OPIEDIR)/include 16INCLUDEPATH += $(OPIEDIR)/include
13DESTDIR = $(OPIEDIR)/plugins/styles 17DESTDIR = $(OPIEDIR)/plugins/styles
14TARGET = liquid 18TARGET = liquid
15VERSION = 1.0.0 19VERSION = 1.0.0
16 20
17TRANSLATIONS = ../../../i18n/de/libliquid.ts \ 21TRANSLATIONS = ../../../i18n/de/libliquid.ts \
18 ../../../i18n/en/libliquid.ts \ 22 ../../../i18n/en/libliquid.ts \
19 ../../../i18n/es/libliquid.ts \ 23 ../../../i18n/es/libliquid.ts \
20 ../../../i18n/fr/libliquid.ts \ 24 ../../../i18n/fr/libliquid.ts \
21 ../../../i18n/hu/libliquid.ts \ 25 ../../../i18n/hu/libliquid.ts \
22 ../../../i18n/ja/libliquid.ts \ 26 ../../../i18n/ja/libliquid.ts \
23 ../../../i18n/ko/libliquid.ts \ 27 ../../../i18n/ko/libliquid.ts \
24 ../../../i18n/no/libliquid.ts \ 28 ../../../i18n/no/libliquid.ts \
25 ../../../i18n/pl/libliquid.ts \ 29 ../../../i18n/pl/libliquid.ts \
26 ../../../i18n/pt/libliquid.ts \ 30 ../../../i18n/pt/libliquid.ts \
27 ../../../i18n/pt_BR/libliquid.ts \ 31 ../../../i18n/pt_BR/libliquid.ts \
28 ../../../i18n/sl/libliquid.ts \ 32 ../../../i18n/sl/libliquid.ts \
29 ../../../i18n/zh_CN/libliquid.ts \ 33 ../../../i18n/zh_CN/libliquid.ts \
30 ../../../i18n/zh_TW/libliquid.ts 34 ../../../i18n/zh_TW/libliquid.ts
diff --git a/noncore/styles/liquid/settings/liquidset.cpp b/noncore/styles/liquid/liquidset.cpp
index 1479ac0..5ae19ba 100644
--- a/noncore/styles/liquid/settings/liquidset.cpp
+++ b/noncore/styles/liquid/liquidset.cpp
@@ -1,85 +1,85 @@
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 21
22 22
23#include "liquidset.h" 23#include "liquidset.h"
24#include "../liquid.h" 24#include "liquid.h"
25 25
26#include <qpe/qpeapplication.h> 26#include <qpe/qpeapplication.h>
27#include <qpe/global.h> 27#include <qpe/global.h>
28 28
29#include <qslider.h> 29#include <qslider.h>
30#include <qtoolbutton.h> 30#include <qtoolbutton.h>
31#include <qbuttongroup.h> 31#include <qbuttongroup.h>
32#include <qradiobutton.h> 32#include <qradiobutton.h>
33#include <qcheckbox.h> 33#include <qcheckbox.h>
34#include <qlabel.h> 34#include <qlabel.h>
35#include <qlayout.h> 35#include <qlayout.h>
36#include <qpalette.h> 36#include <qpalette.h>
37 37
38#include <qpe/config.h> 38#include <qpe/config.h>
39 39
40#include <opie/colorpopupmenu.h> 40#include <opie/colorpopupmenu.h>
41 41
42 42
43static void changeButtonColor ( QWidget *btn, const QColor &col ) 43static void changeButtonColor ( QWidget *btn, const QColor &col )
44{ 44{
45 QPalette pal = btn-> palette ( ); 45 QPalette pal = btn-> palette ( );
46 46
47 pal. setColor ( QPalette::Normal, QColorGroup::Button, col ); 47 pal. setColor ( QPalette::Normal, QColorGroup::Button, col );
48 pal. setColor ( QPalette::Active, QColorGroup::Button, col ); 48 pal. setColor ( QPalette::Active, QColorGroup::Button, col );
49 pal. setColor ( QPalette::Disabled, QColorGroup::Button, col ); 49 pal. setColor ( QPalette::Disabled, QColorGroup::Button, col );
50 pal. setColor ( QPalette::Inactive, QColorGroup::Button, col ); 50 pal. setColor ( QPalette::Inactive, QColorGroup::Button, col );
51 pal. setColor ( QPalette::Normal, QColorGroup::Background, col ); 51 pal. setColor ( QPalette::Normal, QColorGroup::Background, col );
52 pal. setColor ( QPalette::Active, QColorGroup::Background, col ); 52 pal. setColor ( QPalette::Active, QColorGroup::Background, col );
53 pal. setColor ( QPalette::Disabled, QColorGroup::Background, col ); 53 pal. setColor ( QPalette::Disabled, QColorGroup::Background, col );
54 pal. setColor ( QPalette::Inactive, QColorGroup::Background, col ); 54 pal. setColor ( QPalette::Inactive, QColorGroup::Background, col );
55 55
56 btn-> setPalette ( pal ); 56 btn-> setPalette ( pal );
57} 57}
58 58
59 59
60LiquidSet::LiquidSet ( QWidget* parent, const char *name, WFlags fl ) 60LiquidSettings::LiquidSettings ( QWidget* parent, const char *name, WFlags fl )
61 : QDialog ( parent, name, fl ) 61 : QWidget ( parent, name, fl )
62{ 62{
63 setCaption ( tr( "Liquid Style" ) ); 63 setCaption ( tr( "Liquid Style" ) );
64 64
65 Config config ( "qpe" ); 65 Config config ( "qpe" );
66 config. setGroup ( "Liquid-Style" ); 66 config. setGroup ( "Liquid-Style" );
67 67
68 m_type = config. readNumEntry ( "Type", TransStippleBg ); 68 m_type = config. readNumEntry ( "Type", TransStippleBg );
69 m_menucol = QColor ( config. readEntry ( "Color", QApplication::palette ( ). active ( ). button ( ). name ( ))); 69 m_menucol = QColor ( config. readEntry ( "Color", QApplication::palette ( ). active ( ). button ( ). name ( )));
70 m_textcol = QColor ( config. readEntry ( "TextColor", QApplication::palette ( ). active ( ). text ( ). name ( ))); 70 m_textcol = QColor ( config. readEntry ( "TextColor", QApplication::palette ( ). active ( ). text ( ). name ( )));
71 int opacity = config. readNumEntry ( "Opacity", 10 ); 71 int opacity = config. readNumEntry ( "Opacity", 10 );
72 m_shadow = config. readBoolEntry ( "ShadowText", true ); 72 m_shadow = config. readBoolEntry ( "ShadowText", true );
73 m_deco = config. readBoolEntry ( "WinDecoration", true ); 73 m_deco = config. readBoolEntry ( "WinDecoration", true );
74 int contrast = config. readNumEntry ( "StippleContrast", 5 ); 74 int contrast = config. readNumEntry ( "StippleContrast", 5 );
75 75
76 QVBoxLayout *vbox = new QVBoxLayout ( this ); 76 QVBoxLayout *vbox = new QVBoxLayout ( this );
77 vbox-> setSpacing ( 3 ); 77 vbox-> setSpacing ( 3 );
78 vbox-> setMargin ( 6 ); 78 vbox-> setMargin ( 6 );
79 79
80 QButtonGroup *btngrp = new QButtonGroup ( this ); 80 QButtonGroup *btngrp = new QButtonGroup ( this );
81 btngrp-> hide ( ); 81 btngrp-> hide ( );
82 82
83 QRadioButton *rad; 83 QRadioButton *rad;
84 84
85 rad = new QRadioButton ( tr( "No translucency" ), this ); 85 rad = new QRadioButton ( tr( "No translucency" ), this );
@@ -101,134 +101,132 @@ LiquidSet::LiquidSet ( QWidget* parent, const char *name, WFlags fl )
101 rad = new QRadioButton ( tr( "Translucent stippled, button color" ), this ); 101 rad = new QRadioButton ( tr( "Translucent stippled, button color" ), this );
102 btngrp-> insert ( rad, TransStippleBtn ); 102 btngrp-> insert ( rad, TransStippleBtn );
103 vbox-> addWidget ( rad ); 103 vbox-> addWidget ( rad );
104 104
105 rad = new QRadioButton ( tr( "Custom translucency" ), this ); 105 rad = new QRadioButton ( tr( "Custom translucency" ), this );
106 btngrp-> insert ( rad, Custom ); 106 btngrp-> insert ( rad, Custom );
107 vbox-> addWidget ( rad ); 107 vbox-> addWidget ( rad );
108 108
109 btngrp-> setExclusive ( true ); 109 btngrp-> setExclusive ( true );
110 btngrp-> setButton ( m_type ); 110 btngrp-> setButton ( m_type );
111 111
112 QGridLayout *grid = new QGridLayout ( vbox ); 112 QGridLayout *grid = new QGridLayout ( vbox );
113 grid-> addColSpacing ( 0, 16 ); 113 grid-> addColSpacing ( 0, 16 );
114 grid-> addColSpacing ( 3, 8 ); 114 grid-> addColSpacing ( 3, 8 );
115 115
116 grid-> addWidget ( m_menulbl = new QLabel ( tr( "Menu color" ), this ), 0, 1 ); 116 grid-> addWidget ( m_menulbl = new QLabel ( tr( "Menu color" ), this ), 0, 1 );
117 grid-> addWidget ( m_textlbl = new QLabel ( tr( "Text color" ), this ), 0, 4 ); 117 grid-> addWidget ( m_textlbl = new QLabel ( tr( "Text color" ), this ), 0, 4 );
118 grid-> addWidget ( m_opaclbl = new QLabel ( tr( "Opacity" ), this ), 1, 1 ); 118 grid-> addWidget ( m_opaclbl = new QLabel ( tr( "Opacity" ), this ), 1, 1 );
119 119
120 m_menubtn = new QToolButton ( this ); 120 m_menubtn = new QToolButton ( this );
121 grid-> addWidget ( m_menubtn, 0, 2 ); 121 grid-> addWidget ( m_menubtn, 0, 2 );
122 122
123 QPopupMenu *popup; 123 QPopupMenu *popup;
124 124
125 popup = new ColorPopupMenu ( m_menucol, this ); 125 popup = new ColorPopupMenu ( m_menucol, 0 );
126 m_menubtn-> setPopup ( popup ); 126 m_menubtn-> setPopup ( popup );
127 m_menubtn-> setPopupDelay ( 0 ); 127 m_menubtn-> setPopupDelay ( 0 );
128 connect ( popup, SIGNAL( colorSelected ( const QColor & )), this, SLOT( changeMenuColor ( const QColor & ))); 128 connect ( popup, SIGNAL( colorSelected ( const QColor & )), this, SLOT( changeMenuColor ( const QColor & )));
129 changeMenuColor ( m_menucol ); 129 changeMenuColor ( m_menucol );
130 130
131 m_textbtn = new QToolButton ( this ); 131 m_textbtn = new QToolButton ( this );
132 grid-> addWidget ( m_textbtn, 0, 5 ); 132 grid-> addWidget ( m_textbtn, 0, 5 );
133 133
134 popup = new ColorPopupMenu ( m_textcol, this ); 134 popup = new ColorPopupMenu ( m_textcol, 0 );
135 m_textbtn-> setPopup ( popup ); 135 m_textbtn-> setPopup ( popup );
136 m_textbtn-> setPopupDelay ( 0 ); 136 m_textbtn-> setPopupDelay ( 0 );
137 connect ( popup, SIGNAL( colorSelected ( const QColor & )), this, SLOT( changeTextColor ( const QColor & ))); 137 connect ( popup, SIGNAL( colorSelected ( const QColor & )), this, SLOT( changeTextColor ( const QColor & )));
138 changeTextColor ( m_textcol ); 138 changeTextColor ( m_textcol );
139 139
140 m_opacsld = new QSlider ( Horizontal, this ); 140 m_opacsld = new QSlider ( Horizontal, this );
141 m_opacsld-> setRange ( -20, 20 ); 141 m_opacsld-> setRange ( -20, 20 );
142 m_opacsld-> setValue ( opacity ); 142 m_opacsld-> setValue ( opacity );
143 m_opacsld-> setTickmarks ( QSlider::Below ); 143 m_opacsld-> setTickmarks ( QSlider::Below );
144 grid-> addMultiCellWidget ( m_opacsld, 1, 1, 2, 5 ); 144 grid-> addMultiCellWidget ( m_opacsld, 1, 1, 2, 5 );
145 145
146 vbox-> addSpacing ( 4 ); 146 vbox-> addSpacing ( 4 );
147 147
148 QCheckBox *shadow = new QCheckBox ( tr( "Use shadowed menu text" ), this ); 148 QCheckBox *shadow = new QCheckBox ( tr( "Use shadowed menu text" ), this );
149 shadow-> setChecked ( m_shadow ); 149 shadow-> setChecked ( m_shadow );
150 vbox-> addWidget ( shadow ); 150 vbox-> addWidget ( shadow );
151 151
152 vbox-> addSpacing ( 4 ); 152 vbox-> addSpacing ( 4 );
153 153
154 QCheckBox *windeco = new QCheckBox ( tr( "Draw liquid window title bars" ), this ); 154 QCheckBox *windeco = new QCheckBox ( tr( "Draw liquid window title bars" ), this );
155 windeco-> setChecked ( m_deco ); 155 windeco-> setChecked ( m_deco );
156 vbox-> addWidget ( windeco ); 156 vbox-> addWidget ( windeco );
157 157
158 vbox-> addSpacing ( 4 ); 158 vbox-> addSpacing ( 4 );
159 159
160 QHBoxLayout *hbox = new QHBoxLayout ( vbox ); 160 QHBoxLayout *hbox = new QHBoxLayout ( vbox );
161 161
162 hbox-> addWidget ( new QLabel ( tr( "Stipple contrast" ), this )); 162 hbox-> addWidget ( new QLabel ( tr( "Stipple contrast" ), this ));
163 163
164 m_contsld = new QSlider ( Horizontal, this ); 164 m_contsld = new QSlider ( Horizontal, this );
165 m_contsld-> setRange ( 0, 10 ); 165 m_contsld-> setRange ( 0, 10 );
166 m_contsld-> setValue ( contrast ); 166 m_contsld-> setValue ( contrast );
167 m_contsld-> setTickmarks ( QSlider::Below ); 167 m_contsld-> setTickmarks ( QSlider::Below );
168 hbox-> addWidget ( m_contsld, 10 ); 168 hbox-> addWidget ( m_contsld, 10 );
169 169
170 vbox-> addStretch ( 10 ); 170 vbox-> addStretch ( 10 );
171 171
172 changeType ( m_type ); 172 changeType ( m_type );
173 173
174 connect ( btngrp, SIGNAL( clicked ( int ) ), this, SLOT( changeType ( int ) ) ); 174 connect ( btngrp, SIGNAL( clicked ( int ) ), this, SLOT( changeType ( int ) ) );
175 connect ( shadow, SIGNAL( toggled ( bool ) ), this, SLOT( changeShadow ( bool ) ) ); 175 connect ( shadow, SIGNAL( toggled ( bool ) ), this, SLOT( changeShadow ( bool ) ) );
176 connect ( windeco, SIGNAL( toggled ( bool ) ), this, SLOT( changeDeco ( bool ) ) ); 176 connect ( windeco, SIGNAL( toggled ( bool ) ), this, SLOT( changeDeco ( bool ) ) );
177} 177}
178 178
179void LiquidSet::changeType ( int t ) 179void LiquidSettings::changeType ( int t )
180{ 180{
181 bool custom = ( t == Custom ); 181 bool custom = ( t == Custom );
182 182
183 m_menulbl-> setEnabled ( custom ); 183 m_menulbl-> setEnabled ( custom );
184 m_textlbl-> setEnabled ( custom ); 184 m_textlbl-> setEnabled ( custom );
185 m_opaclbl-> setEnabled ( custom ); 185 m_opaclbl-> setEnabled ( custom );
186 m_menubtn-> setEnabled ( custom ); 186 m_menubtn-> setEnabled ( custom );
187 m_textbtn-> setEnabled ( custom ); 187 m_textbtn-> setEnabled ( custom );
188 m_opacsld-> setEnabled ( custom ); 188 m_opacsld-> setEnabled ( custom );
189 189
190 m_type = t; 190 m_type = t;
191} 191}
192 192
193void LiquidSet::changeMenuColor ( const QColor &col ) 193void LiquidSettings::changeMenuColor ( const QColor &col )
194{ 194{
195 changeButtonColor ( m_menubtn, col ); 195 changeButtonColor ( m_menubtn, col );
196 m_menucol = col; 196 m_menucol = col;
197} 197}
198 198
199void LiquidSet::changeTextColor ( const QColor &col ) 199void LiquidSettings::changeTextColor ( const QColor &col )
200{ 200{
201 changeButtonColor ( m_textbtn, col ); 201 changeButtonColor ( m_textbtn, col );
202 m_textcol = col; 202 m_textcol = col;
203} 203}
204 204
205void LiquidSet::changeShadow ( bool b ) 205void LiquidSettings::changeShadow ( bool b )
206{ 206{
207 m_shadow = b; 207 m_shadow = b;
208} 208}
209 209
210void LiquidSet::changeDeco ( bool b ) 210void LiquidSettings::changeDeco ( bool b )
211{ 211{
212 m_deco = b; 212 m_deco = b;
213} 213}
214 214
215 215
216void LiquidSet::accept ( ) 216bool LiquidSettings::writeConfig ( )
217{ 217{
218 Config config ( "qpe" ); 218 Config config ( "qpe" );
219 config. setGroup ( "Liquid-Style" ); 219 config. setGroup ( "Liquid-Style" );
220 220
221 config. writeEntry ( "Type", m_type ); 221 config. writeEntry ( "Type", m_type );
222 config. writeEntry ( "Color", m_menucol. name ( )); 222 config. writeEntry ( "Color", m_menucol. name ( ));
223 config. writeEntry ( "TextColor", m_textcol. name ( )); 223 config. writeEntry ( "TextColor", m_textcol. name ( ));
224 config. writeEntry ( "Opacity", m_opacsld-> value ( )); 224 config. writeEntry ( "Opacity", m_opacsld-> value ( ));
225 config. writeEntry ( "ShadowText", m_shadow ); 225 config. writeEntry ( "ShadowText", m_shadow );
226 config. writeEntry ( "WinDecoration", m_deco ); 226 config. writeEntry ( "WinDecoration", m_deco );
227 config. writeEntry ( "StippleContrast", m_contsld-> value ( )); 227 config. writeEntry ( "StippleContrast", m_contsld-> value ( ));
228 config. write ( ); 228 config. write ( );
229 229
230 Global::applyStyle ( ); 230 return true;
231
232 QDialog::accept ( );
233} 231}
234 232
diff --git a/noncore/styles/liquid/settings/liquidset.h b/noncore/styles/liquid/liquidset.h
index a0f590a..7843513 100644
--- a/noncore/styles/liquid/settings/liquidset.h
+++ b/noncore/styles/liquid/liquidset.h
@@ -1,42 +1,41 @@
1#ifndef __OPIE_LIQUID_SET_H__ 1#ifndef __OPIE_LIQUID_SET_H__
2#define __OPIE_LIQUID_SET_H__ 2#define __OPIE_LIQUID_SET_H__
3 3
4#include <qdialog.h> 4#include <qdialog.h>
5#include <qcolor.h> 5#include <qcolor.h>
6 6
7class QLabel; 7class QLabel;
8class QToolButton; 8class QToolButton;
9class QSlider; 9class QSlider;
10 10
11class LiquidSet : public QDialog { 11class LiquidSettings : public QWidget {
12 Q_OBJECT 12 Q_OBJECT
13 13
14public: 14public:
15 LiquidSet ( QWidget *parent = 0, const char *name = 0, WFlags fl = 0 ); 15 LiquidSettings ( QWidget *parent = 0, const char *name = 0, WFlags fl = 0 );
16 16
17public slots: 17public slots:
18 void changeType ( int t ); 18 void changeType ( int t );
19 void changeMenuColor ( const QColor &col ); 19 void changeMenuColor ( const QColor &col );
20 void changeTextColor ( const QColor &col ); 20 void changeTextColor ( const QColor &col );
21 void changeShadow ( bool b ); 21 void changeShadow ( bool b );
22 void changeDeco ( bool b ); 22 void changeDeco ( bool b );
23 23
24protected: 24 virtual bool writeConfig ( );
25 virtual void accept ( );
26 25
27private: 26private:
28 QColor m_menucol; 27 QColor m_menucol;
29 QColor m_textcol; 28 QColor m_textcol;
30 int m_type; 29 int m_type;
31 bool m_shadow; 30 bool m_shadow;
32 bool m_deco; 31 bool m_deco;
33 32
34 QSlider * m_opacsld; 33 QSlider * m_opacsld;
35 QSlider * m_contsld; 34 QSlider * m_contsld;
36 QLabel * m_menulbl; 35 QLabel * m_menulbl;
37 QLabel * m_textlbl; 36 QLabel * m_textlbl;
38 QLabel * m_opaclbl; 37 QLabel * m_opaclbl;
39 QToolButton *m_menubtn; 38 QToolButton *m_menubtn;
40 QToolButton *m_textbtn; 39 QToolButton *m_textbtn;
41}; 40};
42#endif 41#endif
diff --git a/noncore/styles/liquid/opie-liquid.control b/noncore/styles/liquid/opie-liquid.control
index 6311dee..7b6ae71 100644
--- a/noncore/styles/liquid/opie-liquid.control
+++ b/noncore/styles/liquid/opie-liquid.control
@@ -1,10 +1,10 @@
1Files: plugins/styles/libliquid.so* bin/liquid-settings apps/Settings/Liquid.desktop pics/liquid/Liquid.png 1Files: plugins/styles/libliquid.so*
2Priority: optional 2Priority: optional
3Section: opie/system 3Section: opie/system
4Maintainer: Robert Griebl <sandman@handhelds.org> 4Maintainer: Robert Griebl <sandman@handhelds.org>
5Architecture: arm 5Architecture: arm
6Version: $QPE_VERSION-$SUB_VERSION.1 6Version: $QPE_VERSION-$SUB_VERSION.1
7Depends: opie-base ($QPE_VERSION) 7Depends: opie-base ($QPE_VERSION)
8Description: Liquid style by Mosfet. 8Description: Liquid style by Mosfet.
9 Mosfet's well known Liquid GUI style from KDE, 9 Mosfet's well known Liquid GUI style from KDE,
10ported to OPIE. 10ported to OPIE.
diff --git a/noncore/styles/liquid/plugin.cpp b/noncore/styles/liquid/plugin.cpp
index d9aa8ef..f149c29 100644
--- a/noncore/styles/liquid/plugin.cpp
+++ b/noncore/styles/liquid/plugin.cpp
@@ -1,29 +1,111 @@
1#include "liquid.h" 1#include "liquid.h"
2#include "liquidset.h"
3#include "plugin.h"
2 4
3 5
4extern "C" { 6
5 QStyle* allocate ( ); 7LiquidInterface::LiquidInterface ( ) : ref ( 0 )
6 int minor_version ( ); 8{
7 int major_version ( ); 9}
8 const char *description ( ); 10
11LiquidInterface::~LiquidInterface ( )
12{
9} 13}
10 14
11QStyle* allocate ( ) 15QStyle *LiquidInterface::create ( )
12{ 16{
13 return new LiquidStyle ( ); 17 return new LiquidStyle ( );
14} 18}
15 19
16int minor_version ( ) 20QString LiquidInterface::name ( )
21{
22 return QObject::tr( "Liquid", "name" );
23}
24
25QString LiquidInterface::description ( )
26{
27 return QObject::tr( "High Performance Liquid style by Mosfet", "description" );
28}
29
30QCString LiquidInterface::key ( )
17{ 31{
18 return 0; 32 return QCString ( "liquid" );
19} 33}
20 34
21int major_version ( ) 35unsigned int LiquidInterface::version ( )
22{ 36{
23 return 1; 37 return 100; // 1.0.0 (\d+.\d.\d)
24} 38}
25 39
26const char *description ( ) 40QRESULT LiquidInterface::queryInterface ( const QUuid &uuid, QUnknownInterface **iface )
41{
42 static LiquidSettingsInterface *setiface = 0;
43
44 *iface = 0;
45
46 if ( uuid == IID_QUnknown )
47 *iface = this;
48 else if ( uuid == IID_Style )
49 *iface = this;
50 else if ( uuid == IID_StyleSettings ) {
51 if ( !setiface )
52 setiface = new LiquidSettingsInterface ( );
53 *iface = setiface;
54 }
55
56 if ( *iface )
57 (*iface)-> addRef ( );
58
59 return QS_OK;
60}
61
62Q_EXPORT_INTERFACE()
63{
64 Q_CREATE_INSTANCE( LiquidInterface )
65}
66
67
68LiquidSettingsInterface::LiquidSettingsInterface ( ) : ref ( 0 )
27{ 69{
28 return "High Performance Liquid"; 70 m_widget = 0;
29} 71}
72
73LiquidSettingsInterface::~LiquidSettingsInterface ( )
74{
75}
76
77QWidget *LiquidSettingsInterface::create ( QWidget *parent, const char *name )
78{
79 m_widget = new LiquidSettings ( parent, name ? name : "LIQUID-SETTINGS" );
80
81 return m_widget;
82}
83
84bool LiquidSettingsInterface::accept ( )
85{
86 if ( !m_widget )
87 return false;
88
89 return m_widget-> writeConfig ( );
90}
91
92void LiquidSettingsInterface::reject ( )
93{
94}
95
96QRESULT LiquidSettingsInterface::queryInterface ( const QUuid &uuid, QUnknownInterface **iface )
97{
98 *iface = 0;
99
100
101 if ( uuid == IID_QUnknown )
102 *iface = this;
103 else if ( uuid == IID_StyleSettings )
104 *iface = this;
105
106 if ( *iface )
107 (*iface)-> addRef ( );
108
109 return QS_OK;
110}
111
diff --git a/noncore/styles/liquid/plugin.h b/noncore/styles/liquid/plugin.h
new file mode 100644
index 0000000..759577f
--- a/dev/null
+++ b/noncore/styles/liquid/plugin.h
@@ -0,0 +1,46 @@
1#ifndef __OPIE_LIQUID_PLUGIN_H__
2#define __OPIE_LIQUID_PLUGIN_H__
3
4#include <qpe/styleinterface.h>
5
6class LiquidSettings;
7
8class LiquidInterface : public StyleInterface {
9public:
10 LiquidInterface ( );
11 virtual ~LiquidInterface ( );
12
13 QRESULT queryInterface ( const QUuid &, QUnknownInterface ** );
14 Q_REFCOUNT
15
16 virtual QStyle *create ( );
17
18 virtual QString description ( );
19 virtual QString name ( );
20 virtual QCString key ( );
21
22 virtual unsigned int version ( );
23
24private:
25 ulong ref;
26};
27
28class LiquidSettingsInterface : public StyleSettingsInterface {
29public:
30 LiquidSettingsInterface ( );
31 virtual ~LiquidSettingsInterface ( );
32
33 QRESULT queryInterface ( const QUuid &, QUnknownInterface ** );
34 Q_REFCOUNT
35
36 virtual QWidget *create ( QWidget *parent, const char *name = 0 );
37
38 virtual bool accept ( );
39 virtual void reject ( );
40
41private:
42 LiquidSettings *m_widget;
43 ulong ref;
44};
45
46#endif
diff --git a/noncore/styles/liquid/settings/.cvsignore b/noncore/styles/liquid/settings/.cvsignore
deleted file mode 100644
index c13418b..0000000
--- a/noncore/styles/liquid/settings/.cvsignore
+++ b/dev/null
@@ -1,2 +0,0 @@
1Makefile*
2moc_*
diff --git a/noncore/styles/liquid/settings/main.cpp b/noncore/styles/liquid/settings/main.cpp
deleted file mode 100644
index fd69007..0000000
--- a/noncore/styles/liquid/settings/main.cpp
+++ b/dev/null
@@ -1,34 +0,0 @@
1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3**
4** This file is part of Qtopia Environment.
5**
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
8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file.
10**
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.
13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15**
16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you.
18**
19**********************************************************************/
20
21#include "liquidset.h"
22
23#include <qpe/qpeapplication.h>
24
25
26int main ( int argc, char** argv )
27{
28 QPEApplication a ( argc, argv );
29
30 LiquidSet dlg;
31 a. showMainWidget ( &dlg );
32
33 return a. exec ( );
34}
diff --git a/noncore/styles/liquid/settings/settings.pro b/noncore/styles/liquid/settings/settings.pro
deleted file mode 100644
index bfda7a4..0000000
--- a/noncore/styles/liquid/settings/settings.pro
+++ b/dev/null
@@ -1,24 +0,0 @@
1 TEMPLATE= app
2 CONFIG += qt warn_on release
3 DESTDIR = $(OPIEDIR)/bin
4 HEADERS = liquidset.h
5 SOURCES = liquidset.cpp main.cpp
6INCLUDEPATH += $(OPIEDIR)/include
7 DEPENDPATH+= ../$(OPIEDIR)/include
8LIBS += -lqpe -lopie
9 TARGET = liquid-settings
10
11TRANSLATIONS = ../../../../i18n/de/liquid-settings.ts \
12 ../../../../i18n/en/liquid-settings.ts \
13 ../../../../i18n/es/liquid-settings.ts \
14 ../../../../i18n/fr/liquid-settings.ts \
15 ../../../../i18n/hu/liquid-settings.ts \
16 ../../../../i18n/ja/liquid-settings.ts \
17 ../../../../i18n/ko/liquid-settings.ts \
18 ../../../../i18n/no/liquid-settings.ts \
19 ../../../../i18n/pl/liquid-settings.ts \
20 ../../../../i18n/pt/liquid-settings.ts \
21 ../../../../i18n/pt_BR/liquid-settings.ts \
22 ../../../../i18n/sl/liquid-settings.ts \
23 ../../../../i18n/zh_CN/liquid-settings.ts \
24 ../../../../i18n/zh_TW/liquid-settings.ts
diff --git a/noncore/styles/metal/metal.pro b/noncore/styles/metal/metal.pro
index 6e99389..cf15f33 100644
--- a/noncore/styles/metal/metal.pro
+++ b/noncore/styles/metal/metal.pro
@@ -1,25 +1,25 @@
1TEMPLATE = lib 1TEMPLATE = lib
2CONFIG = qt embedded release warn_on 2CONFIG = qt embedded release warn_on
3SOURCES = metal.cpp plugin.cpp 3SOURCES = metal.cpp plugin.cpp
4 4
5HEADERS = metal.h 5HEADERS = metal.h plugin.h
6LIBS += -lqpe 6LIBS += -lqpe
7INCLUDEPATH += $(OPIEDIR)/include 7INCLUDEPATH += $(OPIEDIR)/include
8DESTDIR = $(OPIEDIR)/plugins/styles 8DESTDIR = $(OPIEDIR)/plugins/styles
9TARGET = metal 9TARGET = metal
10VERSION = 1.0.0 10VERSION = 1.0.0
11 11
12TRANSLATIONS = ../../../i18n/de/libmetal.ts \ 12TRANSLATIONS = ../../../i18n/de/libmetal.ts \
13 ../../../i18n/en/libmetal.ts \ 13 ../../../i18n/en/libmetal.ts \
14 ../../../i18n/es/libmetal.ts \ 14 ../../../i18n/es/libmetal.ts \
15 ../../../i18n/fr/libmetal.ts \ 15 ../../../i18n/fr/libmetal.ts \
16 ../../../i18n/hu/libmetal.ts \ 16 ../../../i18n/hu/libmetal.ts \
17 ../../../i18n/ja/libmetal.ts \ 17 ../../../i18n/ja/libmetal.ts \
18 ../../../i18n/ko/libmetal.ts \ 18 ../../../i18n/ko/libmetal.ts \
19 ../../../i18n/no/libmetal.ts \ 19 ../../../i18n/no/libmetal.ts \
20 ../../../i18n/pl/libmetal.ts \ 20 ../../../i18n/pl/libmetal.ts \
21 ../../../i18n/pt/libmetal.ts \ 21 ../../../i18n/pt/libmetal.ts \
22 ../../../i18n/pt_BR/libmetal.ts \ 22 ../../../i18n/pt_BR/libmetal.ts \
23 ../../../i18n/sl/libmetal.ts \ 23 ../../../i18n/sl/libmetal.ts \
24 ../../../i18n/zh_CN/libmetal.ts \ 24 ../../../i18n/zh_CN/libmetal.ts \
25 ../../../i18n/zh_TW/libmetal.ts 25 ../../../i18n/zh_TW/libmetal.ts
diff --git a/noncore/styles/metal/plugin.cpp b/noncore/styles/metal/plugin.cpp
index e5bee10..1db4aac 100644
--- a/noncore/styles/metal/plugin.cpp
+++ b/noncore/styles/metal/plugin.cpp
@@ -1,29 +1,57 @@
1#include "metal.h" 1#include "metal.h"
2#include "plugin.h"
2 3
3 4
4extern "C" { 5MetalInterface::MetalInterface ( ) : ref ( 0 )
5 QStyle* allocate ( ); 6{
6 int minor_version ( );
7 int major_version ( );
8 const char *description ( );
9} 7}
10 8
11QStyle* allocate ( ) 9MetalInterface::~MetalInterface ( )
10{
11}
12
13QStyle *MetalInterface::create ( )
12{ 14{
13 return new MetalStyle ( ); 15 return new MetalStyle ( );
14} 16}
15 17
16int minor_version ( ) 18QString MetalInterface::name ( )
17{ 19{
18 return 0; 20 return QObject::tr( "Metal", "name" );
19} 21}
20 22
21int major_version ( ) 23QString MetalInterface::description ( )
22{ 24{
23 return 1; 25 return QObject::tr( "Metal style", "description" );
24} 26}
25 27
26const char *description ( ) 28QCString MetalInterface::key ( )
27{ 29{
28 return "Metal style plugin"; 30 return QCString ( "metal" );
29} 31}
32
33unsigned int MetalInterface::version ( )
34{
35 return 100; // 1.0.0 (\d+.\d.\d)
36}
37
38QRESULT MetalInterface::queryInterface ( const QUuid &uuid, QUnknownInterface **iface )
39{
40 *iface = 0;
41
42 if ( uuid == IID_QUnknown )
43 *iface = this;
44 else if ( uuid == IID_Style )
45 *iface = this;
46
47 if ( *iface )
48 (*iface)-> addRef ( );
49
50 return QS_OK;
51}
52
53Q_EXPORT_INTERFACE()
54{
55 Q_CREATE_INSTANCE( MetalInterface )
56}
57
diff --git a/noncore/styles/metal/plugin.h b/noncore/styles/metal/plugin.h
new file mode 100644
index 0000000..f61c833
--- a/dev/null
+++ b/noncore/styles/metal/plugin.h
@@ -0,0 +1,27 @@
1#ifndef __OPIE_METAL_PLUGIN_H__
2#define __OPIE_METAL_PLUGIN_H__
3
4#include <qpe/styleinterface.h>
5
6
7class MetalInterface : public StyleInterface {
8public:
9 MetalInterface ( );
10 virtual ~MetalInterface ( );
11
12 QRESULT queryInterface ( const QUuid &, QUnknownInterface ** );
13 Q_REFCOUNT
14
15 virtual QStyle *create ( );
16
17 virtual QString description ( );
18 virtual QString name ( );
19 virtual QCString key ( );
20
21 virtual unsigned int version ( );
22
23private:
24 ulong ref;
25};
26
27#endif
diff --git a/noncore/styles/theme/opie-theme.control b/noncore/styles/theme/opie-theme.control
index 02739fb..adb4f4b 100644
--- a/noncore/styles/theme/opie-theme.control
+++ b/noncore/styles/theme/opie-theme.control
@@ -1,11 +1,11 @@
1Files: plugins/styles/libtheme.so* bin/theme-settings apps/Settings/Theme.desktop pics/theme/Theme.png 1Files: plugins/styles/libtheme.so*
2Priority: optional 2Priority: optional
3Section: opie/system 3Section: opie/system
4Maintainer: Robert Griebl <sandman@handhelds.org> 4Maintainer: Robert Griebl <sandman@handhelds.org>
5Architecture: arm 5Architecture: arm
6Version: $QPE_VERSION-$SUB_VERSION.1 6Version: $QPE_VERSION-$SUB_VERSION.1
7Depends: opie-base ($QPE_VERSION) 7Depends: opie-base ($QPE_VERSION)
8Description: Themed style. 8Description: Themed style.
9 This style accepts all themes written 9 This style accepts all themes written
10for KDE 2.2 10for KDE 2.2
11 11
diff --git a/noncore/styles/theme/plugin.cpp b/noncore/styles/theme/plugin.cpp
index b334357..4383693 100644
--- a/noncore/styles/theme/plugin.cpp
+++ b/noncore/styles/theme/plugin.cpp
@@ -1,19 +1,111 @@
1//#include <klocale.h>
2#include "othemestyle.h" 1#include "othemestyle.h"
2#include "themeset.h"
3#include "plugin.h"
3 4
4extern "C" 5
6
7ThemeInterface::ThemeInterface ( ) : ref ( 0 )
8{
9}
10
11ThemeInterface::~ThemeInterface ( )
12{
13}
14
15QStyle *ThemeInterface::create ( )
5{ 16{
6 QStyle * allocate() {
7 return new OThemeStyle ( "" ); 17 return new OThemeStyle ( "" );
8 } 18 }
9 int minor_version() { 19
10 return 0; 20QString ThemeInterface::name ( )
21{
22 return QObject::tr( "Themed style", "name" );
23}
24
25QString ThemeInterface::description ( )
26{
27 return QObject::tr( "KDE2 theme compatible style engine", "description" );
28}
29
30QCString ThemeInterface::key ( )
31{
32 return QCString ( "theme" );
33}
34
35unsigned int ThemeInterface::version ( )
36{
37 return 100; // 1.0.0 (\d+.\d.\d)
38}
39
40QRESULT ThemeInterface::queryInterface ( const QUuid &uuid, QUnknownInterface **iface )
41{
42 static ThemeSettingsInterface *setiface = 0;
43
44 *iface = 0;
45
46 if ( uuid == IID_QUnknown )
47 *iface = this;
48 else if ( uuid == IID_Style )
49 *iface = this;
50 else if ( uuid == IID_StyleSettings ) {
51 if ( !setiface )
52 setiface = new ThemeSettingsInterface ( );
53 *iface = setiface;
54 }
55
56 if ( *iface )
57 (*iface)-> addRef ( );
58
59 return QS_OK;
60}
61
62Q_EXPORT_INTERFACE()
63{
64 Q_CREATE_INSTANCE( ThemeInterface )
65}
66
67
68ThemeSettingsInterface::ThemeSettingsInterface ( ) : ref ( 0 )
69{
70 m_widget = 0;
71}
72
73ThemeSettingsInterface::~ThemeSettingsInterface ( )
74{
75}
76
77QWidget *ThemeSettingsInterface::create ( QWidget *parent, const char *name )
78{
79 m_widget = new ThemeSettings ( parent, name ? name : "THEME-SETTINGS" );
80
81 return m_widget;
11 } 82 }
12 int major_version() { 83
13 return 1; 84bool ThemeSettingsInterface::accept ( )
85{
86 if ( !m_widget )
87 return false;
88
89 return m_widget-> writeConfig ( );
14 } 90 }
15 const char * description() { 91
16 return ( "Theme Style" ); 92void ThemeSettingsInterface::reject ( )
93{
17 } 94 }
95
96QRESULT ThemeSettingsInterface::queryInterface ( const QUuid &uuid, QUnknownInterface **iface )
97{
98 *iface = 0;
99
100
101 if ( uuid == IID_QUnknown )
102 *iface = this;
103 else if ( uuid == IID_StyleSettings )
104 *iface = this;
105
106 if ( *iface )
107 (*iface)-> addRef ( );
108
109 return QS_OK;
18} 110}
19 111
diff --git a/noncore/styles/theme/plugin.h b/noncore/styles/theme/plugin.h
new file mode 100644
index 0000000..d13fc5d
--- a/dev/null
+++ b/noncore/styles/theme/plugin.h
@@ -0,0 +1,46 @@
1#ifndef __OPIE_THEME_PLUGIN_H__
2#define __OPIE_THEME_PLUGIN_H__
3
4#include <qpe/styleinterface.h>
5
6class ThemeSettings;
7
8class ThemeInterface : public StyleInterface {
9public:
10 ThemeInterface ( );
11 virtual ~ThemeInterface ( );
12
13 QRESULT queryInterface ( const QUuid &, QUnknownInterface ** );
14 Q_REFCOUNT
15
16 virtual QStyle *create ( );
17
18 virtual QString description ( );
19 virtual QString name ( );
20 virtual QCString key ( );
21
22 virtual unsigned int version ( );
23
24private:
25 ulong ref;
26};
27
28class ThemeSettingsInterface : public StyleSettingsInterface {
29public:
30 ThemeSettingsInterface ( );
31 virtual ~ThemeSettingsInterface ( );
32
33 QRESULT queryInterface ( const QUuid &, QUnknownInterface ** );
34 Q_REFCOUNT
35
36 virtual QWidget *create ( QWidget *parent, const char *name = 0 );
37
38 virtual bool accept ( );
39 virtual void reject ( );
40
41private:
42 ThemeSettings *m_widget;
43 ulong ref;
44};
45
46#endif
diff --git a/noncore/styles/theme/settings/main.cpp b/noncore/styles/theme/settings/main.cpp
deleted file mode 100644
index 94d40f3..0000000
--- a/noncore/styles/theme/settings/main.cpp
+++ b/dev/null
@@ -1,34 +0,0 @@
1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3**
4** This file is part of Qtopia Environment.
5**
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
8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file.
10**
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.
13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15**
16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you.
18**
19**********************************************************************/
20
21#include "themeset.h"
22
23#include <qpe/qpeapplication.h>
24
25
26int main ( int argc, char** argv )
27{
28 QPEApplication a ( argc, argv );
29
30 ThemeSet dlg;
31 a. showMainWidget ( &dlg );
32
33 return a. exec ( );
34}
diff --git a/noncore/styles/theme/settings/settings.pro b/noncore/styles/theme/settings/settings.pro
deleted file mode 100644
index 85d1f7a..0000000
--- a/noncore/styles/theme/settings/settings.pro
+++ b/dev/null
@@ -1,24 +0,0 @@
1 TEMPLATE= app
2 CONFIG += qt warn_on release
3 DESTDIR = $(OPIEDIR)/bin
4 HEADERS = themeset.h
5 SOURCES = themeset.cpp main.cpp
6INCLUDEPATH += $(OPIEDIR)/include
7 DEPENDPATH+= ../$(OPIEDIR)/include
8LIBS += -lqpe
9 TARGET = theme-settings
10
11TRANSLATIONS = ../../../../i18n/de/theme-settings.ts \
12 ../../../../i18n/en/theme-settings.ts \
13 ../../../../i18n/es/theme-settings.ts \
14 ../../../../i18n/fr/theme-settings.ts \
15 ../../../../i18n/hu/theme-settings.ts \
16 ../../../../i18n/ja/theme-settings.ts \
17 ../../../../i18n/ko/theme-settings.ts \
18 ../../../../i18n/no/theme-settings.ts \
19 ../../../../i18n/pl/theme-settings.ts \
20 ../../../../i18n/pt/theme-settings.ts \
21 ../../../../i18n/pt_BR/theme-settings.ts \
22 ../../../../i18n/sl/theme-settings.ts \
23 ../../../../i18n/zh_CN/theme-settings.ts \
24 ../../../../i18n/zh_TW/theme-settings.ts
diff --git a/noncore/styles/theme/settings/themeset.h b/noncore/styles/theme/settings/themeset.h
deleted file mode 100644
index 24804ce..0000000
--- a/noncore/styles/theme/settings/themeset.h
+++ b/dev/null
@@ -1,20 +0,0 @@
1#ifndef __OPIE_THEME_SET_H__
2#define __OPIE_THEME_SET_H__
3
4#include <qdialog.h>
5
6class QListView;
7
8class ThemeSet : public QDialog {
9 Q_OBJECT
10
11public:
12 ThemeSet ( QWidget *parent = 0, const char *name = 0, WFlags fl = 0 );
13
14protected:
15 virtual void accept ( );
16
17private:
18 QListView *m_list;
19};
20#endif
diff --git a/noncore/styles/theme/theme.pro b/noncore/styles/theme/theme.pro
index fdcd20e..49c4103 100644
--- a/noncore/styles/theme/theme.pro
+++ b/noncore/styles/theme/theme.pro
@@ -1,32 +1,35 @@
1TEMPLATE = lib 1TEMPLATE = lib
2CONFIG = qt embedded debug warn_on 2CONFIG = qt embedded debug warn_on
3SOURCES = ogfxeffect.cpp \ 3SOURCES = ogfxeffect.cpp \
4 othemestyle.cpp \ 4 othemestyle.cpp \
5 othemebase.cpp \ 5 othemebase.cpp \
6 themeset.cpp \
6 plugin.cpp 7 plugin.cpp
7 8
8HEADERS = ogfxeffect.h \ 9HEADERS = ogfxeffect.h \
9 othemebase.h \ 10 othemebase.h \
10 othemestyle.h 11 othemestyle.h \
12 themeset.h \
13 plugin.h
11 14
12 15
13LIBS += -lqpe 16LIBS += -lqpe
14INCLUDEPATH += $(OPIEDIR)/include 17INCLUDEPATH += $(OPIEDIR)/include
15DESTDIR = $(OPIEDIR)/plugins/styles 18DESTDIR = $(OPIEDIR)/plugins/styles
16TARGET = theme 19TARGET = theme
17VERSION = 1.0.0 20VERSION = 1.0.0
18 21
19TRANSLATIONS = ../../../i18n/de/libtheme.ts \ 22TRANSLATIONS = ../../../i18n/de/libtheme.ts \
20 ../../../i18n/en/libtheme.ts \ 23 ../../../i18n/en/libtheme.ts \
21 ../../../i18n/es/libtheme.ts \ 24 ../../../i18n/es/libtheme.ts \
22 ../../../i18n/fr/libtheme.ts \ 25 ../../../i18n/fr/libtheme.ts \
23 ../../../i18n/hu/libtheme.ts \ 26 ../../../i18n/hu/libtheme.ts \
24 ../../../i18n/ja/libtheme.ts \ 27 ../../../i18n/ja/libtheme.ts \
25 ../../../i18n/ko/libtheme.ts \ 28 ../../../i18n/ko/libtheme.ts \
26 ../../../i18n/no/libtheme.ts \ 29 ../../../i18n/no/libtheme.ts \
27 ../../../i18n/pl/libtheme.ts \ 30 ../../../i18n/pl/libtheme.ts \
28 ../../../i18n/pt/libtheme.ts \ 31 ../../../i18n/pt/libtheme.ts \
29 ../../../i18n/pt_BR/libtheme.ts \ 32 ../../../i18n/pt_BR/libtheme.ts \
30 ../../../i18n/sl/libtheme.ts \ 33 ../../../i18n/sl/libtheme.ts \
31 ../../../i18n/zh_CN/libtheme.ts \ 34 ../../../i18n/zh_CN/libtheme.ts \
32 ../../../i18n/zh_TW/libtheme.ts 35 ../../../i18n/zh_TW/libtheme.ts
diff --git a/noncore/styles/theme/settings/themeset.cpp b/noncore/styles/theme/themeset.cpp
index 046618e..4a4efcb 100644
--- a/noncore/styles/theme/settings/themeset.cpp
+++ b/noncore/styles/theme/themeset.cpp
@@ -38,87 +38,86 @@ class MyConfig : public Config
38public: 38public:
39 MyConfig ( const QString &f, Domain d ) : Config ( f, d ) 39 MyConfig ( const QString &f, Domain d ) : Config ( f, d )
40 { } 40 { }
41 41
42 bool hasGroup ( const QString &gname ) const 42 bool hasGroup ( const QString &gname ) const
43 { 43 {
44 QMap< QString, ConfigGroup>::ConstIterator it = groups. find ( gname ); 44 QMap< QString, ConfigGroup>::ConstIterator it = groups. find ( gname );
45 return ( it != groups.end() ); 45 return ( it != groups.end() );
46 } 46 }
47}; 47};
48 48
49class MyItem : public QListViewItem 49class MyItem : public QListViewItem
50{ 50{
51public: 51public:
52 MyItem ( QListView *lv, const QString &name, const QString &comm, const QString &theme ) : QListViewItem ( lv, name, comm ) 52 MyItem ( QListView *lv, const QString &name, const QString &comm, const QString &theme ) : QListViewItem ( lv, name, comm )
53 { 53 {
54 m_theme = theme; 54 m_theme = theme;
55 } 55 }
56 56
57 57
58 QString m_theme; 58 QString m_theme;
59}; 59};
60 60
61 61
62ThemeSet::ThemeSet ( QWidget* parent, const char *name, WFlags fl ) 62ThemeSettings::ThemeSettings ( QWidget* parent, const char *name, WFlags fl )
63 : QDialog ( parent, name, fl ) 63 : QWidget ( parent, name, fl )
64{ 64{
65 setCaption ( tr( "Theme Style" ) ); 65 setCaption ( tr( "Theme Style" ) );
66 66
67 Config config ( "qpe" ); 67 Config config ( "qpe" );
68 config. setGroup ( "Appearance" ); 68 config. setGroup ( "Appearance" );
69 69
70 QString active = config. readEntry ( "Theme", "default" ); 70 QString active = config. readEntry ( "Theme", "default" );
71 71
72 QVBoxLayout *vbox = new QVBoxLayout ( this ); 72 QVBoxLayout *vbox = new QVBoxLayout ( this );
73 vbox-> setSpacing ( 3 ); 73 vbox-> setSpacing ( 3 );
74 vbox-> setMargin ( 6 ); 74 vbox-> setMargin ( 6 );
75 75
76 vbox-> addWidget ( new QLabel ( tr( "Select the theme to be used" ), this )); 76 vbox-> addWidget ( new QLabel ( tr( "Select the theme to be used" ), this ));
77 77
78 m_list = new QListView ( this ); 78 m_list = new QListView ( this );
79 m_list-> addColumn ( tr( "Name" )); 79 m_list-> addColumn ( tr( "Name" ));
80 m_list-> addColumn ( tr( "Description" )); 80 m_list-> addColumn ( tr( "Description" ));
81 m_list-> setSelectionMode ( QListView::Single ); 81 m_list-> setSelectionMode ( QListView::Single );
82 m_list-> setAllColumnsShowFocus ( true ); 82 m_list-> setAllColumnsShowFocus ( true );
83 vbox-> addWidget ( m_list, 10 ); 83 vbox-> addWidget ( m_list, 10 );
84 84
85 QListViewItem *item = new MyItem ( m_list, tr( "[No theme]" ), "", "" ); 85 QListViewItem *item = new MyItem ( m_list, tr( "[No theme]" ), "", "" );
86 m_list-> setSelected ( item, true ); 86 m_list-> setSelected ( item, true );
87 87
88 QString path = QPEApplication::qpeDir() + "/plugins/styles/themes"; 88 QString path = QPEApplication::qpeDir() + "/plugins/styles/themes";
89 QStringList list = QDir ( path, "*.themerc" ). entryList ( ); 89 QStringList list = QDir ( path, "*.themerc" ). entryList ( );
90 90
91 for ( QStringList::Iterator it = list. begin(); it != list. end ( ); ++it ) { 91 for ( QStringList::Iterator it = list. begin(); it != list. end ( ); ++it ) {
92 MyConfig cfg ( path + "/" + *it, Config::File ); 92 MyConfig cfg ( path + "/" + *it, Config::File );
93 93
94 if ( cfg. hasGroup ( "Misc" )) { 94 if ( cfg. hasGroup ( "Misc" )) {
95 cfg. setGroup ( "Misc" ); 95 cfg. setGroup ( "Misc" );
96 96
97 QString name = cfg. readEntry ( "Name" ); 97 QString name = cfg. readEntry ( "Name" );
98 QString comm = cfg. readEntry ( "Comment" ); 98 QString comm = cfg. readEntry ( "Comment" );
99 99
100 if ( !name. isEmpty ( )) { 100 if ( !name. isEmpty ( )) {
101 QString fname = (*it). left ((*it). length ( ) - 8 ); 101 QString fname = (*it). left ((*it). length ( ) - 8 );
102 102
103 item = new MyItem ( m_list, name, comm, fname ); 103 item = new MyItem ( m_list, name, comm, fname );
104 if ( active == fname ) { 104 if ( active == fname ) {
105 m_list-> setSelected ( item, true ); 105 m_list-> setSelected ( item, true );
106 } 106 }
107 } 107 }
108 } 108 }
109 } 109 }
110} 110}
111 111
112void ThemeSet::accept ( ) 112bool ThemeSettings::writeConfig ( )
113{ 113{
114 Config config ( "qpe" ); 114 Config config ( "qpe" );
115 config. setGroup ( "Appearance" ); 115 config. setGroup ( "Appearance" );
116 116
117 MyItem *it = (MyItem *) m_list-> selectedItem ( ); 117 MyItem *it = (MyItem *) m_list-> selectedItem ( );
118 config. writeEntry ( "Theme", it ? it-> m_theme : QString ( "" )); 118 config. writeEntry ( "Theme", it ? it-> m_theme : QString ( "" ));
119 config. write ( );
119 120
120 Global::applyStyle ( ); 121 return true;
121
122 QDialog::accept ( );
123} 122}
124 123
diff --git a/noncore/styles/theme/themeset.h b/noncore/styles/theme/themeset.h
new file mode 100644
index 0000000..c337cfa
--- a/dev/null
+++ b/noncore/styles/theme/themeset.h
@@ -0,0 +1,20 @@
1#ifndef __OPIE_THEME_SETTINGS_H__
2#define __OPIE_THEME_SETTINGS_H__
3
4#include <qdialog.h>
5
6class QListView;
7
8class ThemeSettings : public QWidget {
9 Q_OBJECT
10
11public:
12 ThemeSettings ( QWidget *parent = 0, const char *name = 0, WFlags fl = 0 );
13
14public:
15 virtual bool writeConfig ( );
16
17private:
18 QListView *m_list;
19};
20#endif
diff --git a/pics/liquid/Liquid.png b/pics/liquid/Liquid.png
deleted file mode 100644
index 67647d0..0000000
--- a/pics/liquid/Liquid.png
+++ b/dev/null
Binary files differ
diff --git a/pics/theme/Theme.png b/pics/theme/Theme.png
deleted file mode 100644
index 67647d0..0000000
--- a/pics/theme/Theme.png
+++ b/dev/null
Binary files differ