summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--library/qpeapplication.cpp8
-rw-r--r--library/widget_showing.cpp4
2 files changed, 9 insertions, 3 deletions
diff --git a/library/qpeapplication.cpp b/library/qpeapplication.cpp
index 953f9d0..0f3e4a4 100644
--- a/library/qpeapplication.cpp
+++ b/library/qpeapplication.cpp
@@ -61,476 +61,478 @@
61#include "qpestyle.h" 61#include "qpestyle.h"
62#include "styleinterface.h" 62#include "styleinterface.h"
63#if QT_VERSION >= 0x030000 63#if QT_VERSION >= 0x030000
64#include <qstylefactory.h> 64#include <qstylefactory.h>
65#else 65#else
66#include <qplatinumstyle.h> 66#include <qplatinumstyle.h>
67#include <qwindowsstyle.h> 67#include <qwindowsstyle.h>
68#include <qmotifstyle.h> 68#include <qmotifstyle.h>
69#include <qmotifplusstyle.h> 69#include <qmotifplusstyle.h>
70#include "lightstyle.h" 70#include "lightstyle.h"
71 71
72#include <qpe/qlibrary.h> 72#include <qpe/qlibrary.h>
73#endif 73#endif
74#include "global.h" 74#include "global.h"
75#include "resource.h" 75#include "resource.h"
76#if QT_VERSION <= 230 && defined(QT_NO_CODECS) 76#if QT_VERSION <= 230 && defined(QT_NO_CODECS)
77#include "qutfcodec.h" 77#include "qutfcodec.h"
78#endif 78#endif
79#include "config.h" 79#include "config.h"
80#include "network.h" 80#include "network.h"
81#ifdef QWS 81#ifdef QWS
82#include "fontmanager.h" 82#include "fontmanager.h"
83#include "fontdatabase.h" 83#include "fontdatabase.h"
84#endif 84#endif
85 85
86#include "alarmserver.h" 86#include "alarmserver.h"
87#include "applnk.h" 87#include "applnk.h"
88#include "qpemenubar.h" 88#include "qpemenubar.h"
89#include "textcodecinterface.h" 89#include "textcodecinterface.h"
90#include "imagecodecinterface.h" 90#include "imagecodecinterface.h"
91#include <qtopia/qpeglobal.h> 91#include <qtopia/qpeglobal.h>
92 92
93#include <unistd.h> 93#include <unistd.h>
94#include <sys/file.h> 94#include <sys/file.h>
95#include <sys/ioctl.h> 95#include <sys/ioctl.h>
96#ifndef QT_NO_SOUND 96#ifndef QT_NO_SOUND
97#include <sys/soundcard.h> 97#include <sys/soundcard.h>
98#endif 98#endif
99 99
100#include <backend/rohfeedback.h> 100#include <backend/rohfeedback.h>
101 101
102 102
103static bool useBigPixmaps = 0; 103static bool useBigPixmaps = 0;
104 104
105class HackWidget : public QWidget 105class HackWidget : public QWidget
106{ 106{
107public: 107public:
108 bool needsOk() 108 bool needsOk()
109 { return (getWState() & WState_Reserved1 ); } 109 { return (getWState() & WState_Reserved1 ); }
110 110
111 QRect normalGeometry() 111 QRect normalGeometry()
112 { return topData()->normalGeometry; }; 112 { return topData()->normalGeometry; };
113}; 113};
114 114
115class QPEApplicationData 115class QPEApplicationData
116{ 116{
117public: 117public:
118 QPEApplicationData ( ) : 118 QPEApplicationData ( ) :
119 presstimer( 0 ), presswidget( 0 ), rightpressed( false ), kbgrabbed( false ), 119 presstimer( 0 ), presswidget( 0 ), rightpressed( false ), kbgrabbed( false ),
120 notbusysent( false ), preloaded( false ), forceshow( false ), nomaximize( false ), 120 notbusysent( false ), preloaded( false ), forceshow( false ), nomaximize( false ),
121 keep_running( true ), qcopQok( false ), 121 keep_running( true ), qcopQok( false ),
122 fontFamily( "Vera" ), fontSize( 10 ), smallIconSize( 14 ), 122 fontFamily( "Vera" ), fontSize( 10 ), smallIconSize( 14 ),
123 bigIconSize( 32 ), qpe_main_widget( 0 ) 123 bigIconSize( 32 ), qpe_main_widget( 0 )
124 { 124 {
125 Config cfg( "qpe" ); 125 Config cfg( "qpe" );
126 cfg.setGroup( "Appearance" ); 126 cfg.setGroup( "Appearance" );
127 useBigPixmaps = cfg.readBoolEntry( "useBigPixmaps", false ); 127 useBigPixmaps = cfg.readBoolEntry( "useBigPixmaps", false );
128 fontFamily = cfg.readEntry( "FontFamily", "Vera" ); 128 fontFamily = cfg.readEntry( "FontFamily", "Vera" );
129 fontSize = cfg.readNumEntry( "FontSize", 10 ); 129 fontSize = cfg.readNumEntry( "FontSize", 10 );
130 smallIconSize = cfg.readNumEntry( "SmallIconSize", 14 ); 130 smallIconSize = cfg.readNumEntry( "SmallIconSize", 14 );
131 bigIconSize = cfg.readNumEntry( "BigIconSize", 32 ); 131 bigIconSize = cfg.readNumEntry( "BigIconSize", 32 );
132#ifdef OPIE_WITHROHFEEDBACK 132#ifdef OPIE_WITHROHFEEDBACK
133 RoH = 0; 133 RoH = 0;
134#endif 134#endif
135 } 135 }
136 136
137 int presstimer; 137 int presstimer;
138 QWidget* presswidget; 138 QWidget* presswidget;
139 QPoint presspos; 139 QPoint presspos;
140#ifdef OPIE_WITHROHFEEDBACK 140#ifdef OPIE_WITHROHFEEDBACK
141 Opie::Internal::RoHFeedback *RoH; 141 Opie::Internal::RoHFeedback *RoH;
142#endif 142#endif
143 143
144 bool rightpressed : 1; 144 bool rightpressed : 1;
145 bool kbgrabbed : 1; 145 bool kbgrabbed : 1;
146 bool notbusysent : 1; 146 bool notbusysent : 1;
147 bool preloaded : 1; 147 bool preloaded : 1;
148 bool forceshow : 1; 148 bool forceshow : 1;
149 bool nomaximize : 1; 149 bool nomaximize : 1;
150 bool keep_running : 1; 150 bool keep_running : 1;
151 bool qcopQok : 1; 151 bool qcopQok : 1;
152 152
153 QCString fontFamily; 153 QCString fontFamily;
154 int fontSize; 154 int fontSize;
155 int smallIconSize; 155 int smallIconSize;
156 int bigIconSize; 156 int bigIconSize;
157 157
158 QString appName; 158 QString appName;
159 struct QCopRec 159 struct QCopRec
160 { 160 {
161 QCopRec( const QCString &ch, const QCString &msg, 161 QCopRec( const QCString &ch, const QCString &msg,
162 const QByteArray &d ) : 162 const QByteArray &d ) :
163 channel( ch ), message( msg ), data( d ) 163 channel( ch ), message( msg ), data( d )
164 { } 164 { }
165 165
166 QCString channel; 166 QCString channel;
167 QCString message; 167 QCString message;
168 QByteArray data; 168 QByteArray data;
169 }; 169 };
170 QGuardedPtr<QWidget> qpe_main_widget; 170 QGuardedPtr<QWidget> qpe_main_widget;
171 QGuardedPtr<QWidget> lastraised; 171 QGuardedPtr<QWidget> lastraised;
172 QQueue<QCopRec> qcopq; 172 QQueue<QCopRec> qcopq;
173 QString styleName; 173 QString styleName;
174 QString decorationName; 174 QString decorationName;
175 175
176 void enqueueQCop( const QCString &ch, const QCString &msg, 176 void enqueueQCop( const QCString &ch, const QCString &msg,
177 const QByteArray &data ) 177 const QByteArray &data )
178 { 178 {
179 qcopq.enqueue( new QCopRec( ch, msg, data ) ); 179 qcopq.enqueue( new QCopRec( ch, msg, data ) );
180 } 180 }
181 void sendQCopQ() 181 void sendQCopQ()
182 { 182 {
183 if (!qcopQok ) 183 if (!qcopQok )
184 return; 184 return;
185 185
186 QCopRec * r; 186 QCopRec * r;
187 187
188 while((r=qcopq.dequeue())) { 188 while((r=qcopq.dequeue())) {
189 // remove from queue before sending... 189 // remove from queue before sending...
190 // event loop can come around again before getting 190 // event loop can come around again before getting
191 // back from sendLocally 191 // back from sendLocally
192#ifndef QT_NO_COP 192#ifndef QT_NO_COP
193 QCopChannel::sendLocally( r->channel, r->message, r->data ); 193 QCopChannel::sendLocally( r->channel, r->message, r->data );
194#endif 194#endif
195 195
196 delete r; 196 delete r;
197 } 197 }
198 } 198 }
199 199
200 static void show_mx(QWidget* mw, bool nomaximize, QString &strName) { 200 static void show_mx(QWidget* mw, bool nomaximize, QString &strName) {
201 if ( mw->inherits("QMainWindow") || mw->isA("QMainWindow") ) 201 if ( mw->inherits("QMainWindow") || mw->isA("QMainWindow") )
202 { 202 {
203 ( ( QMainWindow* ) mw )->setUsesBigPixmaps( useBigPixmaps ); 203 ( ( QMainWindow* ) mw )->setUsesBigPixmaps( useBigPixmaps );
204 } 204 }
205 QPoint p; 205 QPoint p;
206 QSize s; 206 QSize s;
207 bool max; 207 bool max;
208 208
209 if ( mw->isVisible() ) { 209 if ( mw->isVisible() ) {
210 if ( read_widget_rect(strName, max, p, s) && validate_widget_size(mw, p, s) ) { 210 if ( read_widget_rect(strName, max, p, s) && validate_widget_size(mw, p, s) ) {
211 mw->resize(s); 211 mw->resize(s);
212 mw->move(p); 212 mw->move(p);
213 } 213 }
214 mw->raise(); 214 mw->raise();
215 } else { 215 } else {
216 216
217 if ( mw->layout() && mw->inherits("QDialog") ) { 217 if ( mw->layout() && mw->inherits("QDialog") ) {
218 if ( read_widget_rect(strName, max, p, s) && validate_widget_size(mw, p, s) ) { 218 if ( read_widget_rect(strName, max, p, s) && validate_widget_size(mw, p, s) ) {
219 mw->resize(s); 219 mw->resize(s);
220 mw->move(p); 220 mw->move(p);
221 221
222 if ( max && !nomaximize ) { 222 if ( max && !nomaximize ) {
223 mw->showMaximized(); 223 mw->showMaximized();
224 } else { 224 } else {
225 mw->show(); 225 mw->show();
226 } 226 }
227 } else { 227 } else {
228 QPEApplication::showDialog((QDialog*)mw,nomaximize); 228 QPEApplication::showDialog((QDialog*)mw,nomaximize);
229 } 229 }
230 } else { 230 } else {
231 if ( read_widget_rect(strName, max, p, s) && validate_widget_size(mw, p, s) ) { 231 if ( read_widget_rect(strName, max, p, s) && validate_widget_size(mw, p, s) ) {
232 mw->resize(s); 232 mw->resize(s);
233 mw->move(p); 233 mw->move(p);
234 } else { //no stored rectangle, make an estimation 234 } else { //no stored rectangle, make an estimation
235 int x = (qApp->desktop()->width()-mw->frameGeometry().width())/2; 235 int x = (qApp->desktop()->width()-mw->frameGeometry().width())/2;
236 int y = (qApp->desktop()->height()-mw->frameGeometry().height())/2; 236 int y = (qApp->desktop()->height()-mw->frameGeometry().height())/2;
237 mw->move( QMAX(x,0), QMAX(y,0) ); 237 mw->move( QMAX(x,0), QMAX(y,0) );
238#ifdef Q_WS_QWS 238#ifdef Q_WS_QWS
239 if ( !nomaximize ) 239 if ( !nomaximize )
240 mw->showMaximized(); 240 mw->showMaximized();
241#endif 241#endif
242 } 242 }
243 if ( max && !nomaximize ) 243 if ( max && !nomaximize )
244 mw->showMaximized(); 244 mw->showMaximized();
245 else 245 else
246 mw->show(); 246 mw->show();
247 } 247 }
248 } 248 }
249 } 249 }
250 250
251 static bool read_widget_rect(const QString &app, bool &maximized, QPoint &p, QSize &s) 251 static bool read_widget_rect(const QString &app, bool &maximized, QPoint &p, QSize &s)
252 { 252 {
253#ifndef OPIE_NO_WINDOWED
253 maximized = TRUE; 254 maximized = TRUE;
254 // 350 is the trigger in qwsdefaultdecoration for providing a resize button 255 // 350 is the trigger in qwsdefaultdecoration for providing a resize button
255 if ( qApp->desktop()->width() <= 350 ) 256 if ( qApp->desktop()->width() <= 350 )
256 return FALSE; 257 return FALSE;
257 258
258 Config cfg( "qpe" ); 259 Config cfg( "qpe" );
259 cfg.setGroup("ApplicationPositions"); 260 cfg.setGroup("ApplicationPositions");
260 QString str = cfg.readEntry( app, QString::null ); 261 QString str = cfg.readEntry( app, QString::null );
261 QStringList l = QStringList::split(",", str); 262 QStringList l = QStringList::split(",", str);
262 263
263 if ( l.count() == 5) { 264 if ( l.count() == 5) {
264 p.setX( l[0].toInt() ); 265 p.setX( l[0].toInt() );
265 p.setY( l[1].toInt() ); 266 p.setY( l[1].toInt() );
266 267
267 s.setWidth( l[2].toInt() ); 268 s.setWidth( l[2].toInt() );
268 s.setHeight( l[3].toInt() ); 269 s.setHeight( l[3].toInt() );
269 270
270 maximized = l[4].toInt(); 271 maximized = l[4].toInt();
271 272
272 return TRUE; 273 return TRUE;
273 } 274 }
274 275#endif
275 return FALSE; 276 return FALSE;
276 } 277 }
277 278
278 279
279 static bool validate_widget_size(const QWidget *w, QPoint &p, QSize &s) 280 static bool validate_widget_size(const QWidget *w, QPoint &p, QSize &s)
280 { 281 {
281#ifndef Q_WS_QWS 282#ifndef Q_WS_QWS
282 QRect qt_maxWindowRect = qApp->desktop()->geometry(); 283 QRect qt_maxWindowRect = qApp->desktop()->geometry();
283#endif 284#endif
284 int maxX = qt_maxWindowRect.width(); 285 int maxX = qt_maxWindowRect.width();
285 int maxY = qt_maxWindowRect.height(); 286 int maxY = qt_maxWindowRect.height();
286 int wWidth = s.width() + ( w->frameGeometry().width() - w->geometry().width() ); 287 int wWidth = s.width() + ( w->frameGeometry().width() - w->geometry().width() );
287 int wHeight = s.height() + ( w->frameGeometry().height() - w->geometry().height() ); 288 int wHeight = s.height() + ( w->frameGeometry().height() - w->geometry().height() );
288 289
289 // total window size is not allowed to be larger than desktop window size 290 // total window size is not allowed to be larger than desktop window size
290 if ( ( wWidth >= maxX ) && ( wHeight >= maxY ) ) 291 if ( ( wWidth >= maxX ) && ( wHeight >= maxY ) )
291 return FALSE; 292 return FALSE;
292 293
293 if ( wWidth > maxX ) { 294 if ( wWidth > maxX ) {
294 s.setWidth( maxX - (w->frameGeometry().width() - w->geometry().width() ) ); 295 s.setWidth( maxX - (w->frameGeometry().width() - w->geometry().width() ) );
295 wWidth = maxX; 296 wWidth = maxX;
296 } 297 }
297 298
298 if ( wHeight > maxY ) { 299 if ( wHeight > maxY ) {
299 s.setHeight( maxY - (w->frameGeometry().height() - w->geometry().height() ) ); 300 s.setHeight( maxY - (w->frameGeometry().height() - w->geometry().height() ) );
300 wHeight = maxY; 301 wHeight = maxY;
301 } 302 }
302 303
303 // any smaller than this and the maximize/close/help buttons will be overlapping 304 // any smaller than this and the maximize/close/help buttons will be overlapping
304 if ( wWidth < 80 || wHeight < 60 ) 305 if ( wWidth < 80 || wHeight < 60 )
305 return FALSE; 306 return FALSE;
306 307
307 if ( p.x() < 0 ) 308 if ( p.x() < 0 )
308 p.setX(0); 309 p.setX(0);
309 if ( p.y() < 0 ) 310 if ( p.y() < 0 )
310 p.setY(0); 311 p.setY(0);
311 312
312 if ( p.x() + wWidth > maxX ) 313 if ( p.x() + wWidth > maxX )
313 p.setX( maxX - wWidth ); 314 p.setX( maxX - wWidth );
314 if ( p.y() + wHeight > maxY ) 315 if ( p.y() + wHeight > maxY )
315 p.setY( maxY - wHeight ); 316 p.setY( maxY - wHeight );
316 317
317 return TRUE; 318 return TRUE;
318 } 319 }
319 320
320 static void store_widget_rect(QWidget *w, QString &app) 321 static void store_widget_rect(QWidget *w, QString &app)
321 { 322 {
322 if( !w ) 323 if( !w )
323 return; 324 return;
324 325#ifndef OPIE_NO_WINDOWED
325 // 350 is the trigger in qwsdefaultdecoration for providing a resize button 326 // 350 is the trigger in qwsdefaultdecoration for providing a resize button
326 if ( qApp->desktop()->width() <= 350 ) 327 if ( qApp->desktop()->width() <= 350 )
327 return; 328 return;
328 // we use these to map the offset of geometry and pos. ( we can only use normalGeometry to 329 // we use these to map the offset of geometry and pos. ( we can only use normalGeometry to
329 // get the non-maximized version, so we have to do it the hard way ) 330 // get the non-maximized version, so we have to do it the hard way )
330 int offsetX = w->x() - w->geometry().left(); 331 int offsetX = w->x() - w->geometry().left();
331 int offsetY = w->y() - w->geometry().top(); 332 int offsetY = w->y() - w->geometry().top();
332 333
333 QRect r; 334 QRect r;
334 if ( w->isMaximized() ) 335 if ( w->isMaximized() )
335 r = ( (HackWidget *) w)->normalGeometry(); 336 r = ( (HackWidget *) w)->normalGeometry();
336 else 337 else
337 r = w->geometry(); 338 r = w->geometry();
338 339
339 // Stores the window placement as pos(), size() (due to the offset mapping) 340 // Stores the window placement as pos(), size() (due to the offset mapping)
340 Config cfg( "qpe" ); 341 Config cfg( "qpe" );
341 cfg.setGroup("ApplicationPositions"); 342 cfg.setGroup("ApplicationPositions");
342 QString s; 343 QString s;
343 s.sprintf("%d,%d,%d,%d,%d", r.left() + offsetX, r.top() + offsetY, r.width(), r.height(), w->isMaximized() ); 344 s.sprintf("%d,%d,%d,%d,%d", r.left() + offsetX, r.top() + offsetY, r.width(), r.height(), w->isMaximized() );
344 cfg.writeEntry( app, s ); 345 cfg.writeEntry( app, s );
346#endif
345 } 347 }
346 348
347 static bool setWidgetCaptionFromAppName( QWidget* /*mw*/, const QString& /*appName*/, const QString& /*appsPath*/ ) 349 static bool setWidgetCaptionFromAppName( QWidget* /*mw*/, const QString& /*appName*/, const QString& /*appsPath*/ )
348 { 350 {
349 /* 351 /*
350 // This works but disable it for now until it is safe to apply 352 // This works but disable it for now until it is safe to apply
351 // What is does is scan the .desktop files of all the apps for 353 // What is does is scan the .desktop files of all the apps for
352 // the applnk that has the corresponding argv[0] as this program 354 // the applnk that has the corresponding argv[0] as this program
353 // then it uses the name stored in the .desktop file as the caption 355 // then it uses the name stored in the .desktop file as the caption
354 // for the main widget. This saves duplicating translations for 356 // for the main widget. This saves duplicating translations for
355 // the app name in the program and in the .desktop files. 357 // the app name in the program and in the .desktop files.
356 358
357 AppLnkSet apps( appsPath ); 359 AppLnkSet apps( appsPath );
358 360
359 QList<AppLnk> appsList = apps.children(); 361 QList<AppLnk> appsList = apps.children();
360 for ( QListIterator<AppLnk> it(appsList); it.current(); ++it ) { 362 for ( QListIterator<AppLnk> it(appsList); it.current(); ++it ) {
361 if ( (*it)->exec() == appName ) { 363 if ( (*it)->exec() == appName ) {
362 mw->setCaption( (*it)->name() ); 364 mw->setCaption( (*it)->name() );
363 return TRUE; 365 return TRUE;
364 } 366 }
365 } 367 }
366 */ 368 */
367 return FALSE; 369 return FALSE;
368 } 370 }
369 371
370 372
371 void show(QWidget* mw, bool nomax) 373 void show(QWidget* mw, bool nomax)
372 { 374 {
373 setWidgetCaptionFromAppName( mw, appName, QPEApplication::qpeDir() + "apps" ); 375 setWidgetCaptionFromAppName( mw, appName, QPEApplication::qpeDir() + "apps" );
374 nomaximize = nomax; 376 nomaximize = nomax;
375 qpe_main_widget = mw; 377 qpe_main_widget = mw;
376 qcopQok = TRUE; 378 qcopQok = TRUE;
377#ifndef QT_NO_COP 379#ifndef QT_NO_COP
378 380
379 sendQCopQ(); 381 sendQCopQ();
380#endif 382#endif
381 383
382 if ( preloaded ) { 384 if ( preloaded ) {
383 if (forceshow) 385 if (forceshow)
384 show_mx(mw, nomax, appName); 386 show_mx(mw, nomax, appName);
385 } 387 }
386 else if ( keep_running ) { 388 else if ( keep_running ) {
387 show_mx(mw, nomax, appName); 389 show_mx(mw, nomax, appName);
388 } 390 }
389 } 391 }
390 392
391 void loadTextCodecs() 393 void loadTextCodecs()
392 { 394 {
393 QString path = QPEApplication::qpeDir() + "plugins/textcodecs"; 395 QString path = QPEApplication::qpeDir() + "plugins/textcodecs";
394#ifdef Q_OS_MACX 396#ifdef Q_OS_MACX
395 QDir dir( path, "lib*.dylib" ); 397 QDir dir( path, "lib*.dylib" );
396#else 398#else
397 QDir dir( path, "lib*.so" ); 399 QDir dir( path, "lib*.so" );
398#endif 400#endif
399 QStringList list; 401 QStringList list;
400 if ( dir. exists ( )) 402 if ( dir. exists ( ))
401 list = dir.entryList(); 403 list = dir.entryList();
402 QStringList::Iterator it; 404 QStringList::Iterator it;
403 for ( it = list.begin(); it != list.end(); ++it ) { 405 for ( it = list.begin(); it != list.end(); ++it ) {
404 TextCodecInterface *iface = 0; 406 TextCodecInterface *iface = 0;
405 QLibrary *lib = new QLibrary( path + "/" + *it ); 407 QLibrary *lib = new QLibrary( path + "/" + *it );
406 if ( lib->queryInterface( IID_QtopiaTextCodec, (QUnknownInterface**)&iface ) == QS_OK && iface ) { 408 if ( lib->queryInterface( IID_QtopiaTextCodec, (QUnknownInterface**)&iface ) == QS_OK && iface ) {
407 QValueList<int> mibs = iface->mibEnums(); 409 QValueList<int> mibs = iface->mibEnums();
408 for (QValueList<int>::ConstIterator i = mibs.begin(); i != mibs.end(); ++i) { 410 for (QValueList<int>::ConstIterator i = mibs.begin(); i != mibs.end(); ++i) {
409 (void)iface->createForMib(*i); 411 (void)iface->createForMib(*i);
410 // ### it exists now; need to remember if we can delete it 412 // ### it exists now; need to remember if we can delete it
411 } 413 }
412 } 414 }
413 else { 415 else {
414 lib->unload(); 416 lib->unload();
415 delete lib; 417 delete lib;
416 } 418 }
417 } 419 }
418 } 420 }
419 421
420 void loadImageCodecs() 422 void loadImageCodecs()
421 { 423 {
422 QString path = QPEApplication::qpeDir() + "plugins/imagecodecs"; 424 QString path = QPEApplication::qpeDir() + "plugins/imagecodecs";
423#ifdef Q_OS_MACX 425#ifdef Q_OS_MACX
424 QDir dir( path, "lib*.dylib" ); 426 QDir dir( path, "lib*.dylib" );
425#else 427#else
426 QDir dir( path, "lib*.so" ); 428 QDir dir( path, "lib*.so" );
427#endif 429#endif
428 QStringList list; 430 QStringList list;
429 if ( dir. exists ( )) 431 if ( dir. exists ( ))
430 list = dir.entryList(); 432 list = dir.entryList();
431 QStringList::Iterator it; 433 QStringList::Iterator it;
432 for ( it = list.begin(); it != list.end(); ++it ) { 434 for ( it = list.begin(); it != list.end(); ++it ) {
433 ImageCodecInterface *iface = 0; 435 ImageCodecInterface *iface = 0;
434 QLibrary *lib = new QLibrary( path + "/" + *it ); 436 QLibrary *lib = new QLibrary( path + "/" + *it );
435 if ( lib->queryInterface( IID_QtopiaImageCodec, (QUnknownInterface**)&iface ) == QS_OK && iface ) { 437 if ( lib->queryInterface( IID_QtopiaImageCodec, (QUnknownInterface**)&iface ) == QS_OK && iface ) {
436 QStringList formats = iface->keys(); 438 QStringList formats = iface->keys();
437 for (QStringList::ConstIterator i = formats.begin(); i != formats.end(); ++i) { 439 for (QStringList::ConstIterator i = formats.begin(); i != formats.end(); ++i) {
438 (void)iface->installIOHandler(*i); 440 (void)iface->installIOHandler(*i);
439 // ### it exists now; need to remember if we can delete it 441 // ### it exists now; need to remember if we can delete it
440 } 442 }
441 } 443 }
442 else { 444 else {
443 lib->unload(); 445 lib->unload();
444 delete lib; 446 delete lib;
445 } 447 }
446 } 448 }
447 } 449 }
448 450
449}; 451};
450 452
451class ResourceMimeFactory : public QMimeSourceFactory 453class ResourceMimeFactory : public QMimeSourceFactory
452{ 454{
453public: 455public:
454 ResourceMimeFactory() : resImage( 0 ) 456 ResourceMimeFactory() : resImage( 0 )
455 { 457 {
456 setFilePath( Global::helpPath() ); 458 setFilePath( Global::helpPath() );
457 setExtensionType( "html", "text/html;charset=UTF-8" ); 459 setExtensionType( "html", "text/html;charset=UTF-8" );
458 } 460 }
459 ~ResourceMimeFactory() { 461 ~ResourceMimeFactory() {
460 delete resImage; 462 delete resImage;
461 } 463 }
462 464
463 const QMimeSource* data( const QString& abs_name ) const 465 const QMimeSource* data( const QString& abs_name ) const
464 { 466 {
465 const QMimeSource * r = QMimeSourceFactory::data( abs_name ); 467 const QMimeSource * r = QMimeSourceFactory::data( abs_name );
466 if ( !r ) { 468 if ( !r ) {
467 int sl = abs_name.length(); 469 int sl = abs_name.length();
468 do { 470 do {
469 sl = abs_name.findRev( '/', sl - 1 ); 471 sl = abs_name.findRev( '/', sl - 1 );
470 QString name = sl >= 0 ? abs_name.mid( sl + 1 ) : abs_name; 472 QString name = sl >= 0 ? abs_name.mid( sl + 1 ) : abs_name;
471 int dot = name.findRev( '.' ); 473 int dot = name.findRev( '.' );
472 if ( dot >= 0 ) 474 if ( dot >= 0 )
473 name = name.left( dot ); 475 name = name.left( dot );
474 QImage img = Resource::loadImage( name ); 476 QImage img = Resource::loadImage( name );
475 if ( !img.isNull() ) { 477 if ( !img.isNull() ) {
476 delete resImage; 478 delete resImage;
477 resImage = new QImageDrag( img ); 479 resImage = new QImageDrag( img );
478 r = resImage; 480 r = resImage;
479 } 481 }
480 } 482 }
481 while ( !r && sl > 0 ); 483 while ( !r && sl > 0 );
482 } 484 }
483 return r; 485 return r;
484 } 486 }
485private: 487private:
486 mutable QImageDrag *resImage; 488 mutable QImageDrag *resImage;
487}; 489};
488 490
489static int& hack(int& i) 491static int& hack(int& i)
490{ 492{
491#if QT_VERSION <= 230 && defined(QT_NO_CODECS) 493#if QT_VERSION <= 230 && defined(QT_NO_CODECS)
492 // These should be created, but aren't in Qt 2.3.0 494 // These should be created, but aren't in Qt 2.3.0
493 (void)new QUtf8Codec; 495 (void)new QUtf8Codec;
494 (void)new QUtf16Codec; 496 (void)new QUtf16Codec;
495#endif 497#endif
496 return i; 498 return i;
497} 499}
498 500
499static int muted = 0; 501static int muted = 0;
500static int micMuted = 0; 502static int micMuted = 0;
501 503
502static void setVolume( int t = 0, int percent = -1 ) 504static void setVolume( int t = 0, int percent = -1 )
503{ 505{
504 switch ( t ) { 506 switch ( t ) {
505 case 0: { 507 case 0: {
506 Config cfg( "qpe" ); 508 Config cfg( "qpe" );
507 cfg.setGroup( "Volume" ); 509 cfg.setGroup( "Volume" );
508 if ( percent < 0 ) 510 if ( percent < 0 )
509 percent = cfg.readNumEntry( "VolumePercent", 50 ); 511 percent = cfg.readNumEntry( "VolumePercent", 50 );
510#ifndef QT_NO_SOUND 512#ifndef QT_NO_SOUND
511 int fd = 0; 513 int fd = 0;
512#ifdef QT_QWS_DEVFS 514#ifdef QT_QWS_DEVFS
513 if ( ( fd = open( "/dev/sound/mixer", O_RDWR ) ) >= 0 ) { 515 if ( ( fd = open( "/dev/sound/mixer", O_RDWR ) ) >= 0 ) {
514#else 516#else
515 if ( ( fd = open( "/dev/mixer", O_RDWR ) ) >= 0 ) { 517 if ( ( fd = open( "/dev/mixer", O_RDWR ) ) >= 0 ) {
516#endif 518#endif
517 int vol = muted ? 0 : percent; 519 int vol = muted ? 0 : percent;
518 // set both channels to same volume 520 // set both channels to same volume
519 vol |= vol << 8; 521 vol |= vol << 8;
520 ioctl( fd, MIXER_WRITE( SOUND_MIXER_VOLUME ), &vol ); 522 ioctl( fd, MIXER_WRITE( SOUND_MIXER_VOLUME ), &vol );
521 ::close( fd ); 523 ::close( fd );
522 } 524 }
523#endif 525#endif
524 } 526 }
525 break; 527 break;
526 } 528 }
527} 529}
528 530
529static void setMic( int t = 0, int percent = -1 ) 531static void setMic( int t = 0, int percent = -1 )
530{ 532{
531 switch ( t ) { 533 switch ( t ) {
532 case 0: { 534 case 0: {
533 Config cfg( "qpe" ); 535 Config cfg( "qpe" );
534 cfg.setGroup( "Volume" ); 536 cfg.setGroup( "Volume" );
535 if ( percent < 0 ) 537 if ( percent < 0 )
536 percent = cfg.readNumEntry( "Mic", 50 ); 538 percent = cfg.readNumEntry( "Mic", 50 );
diff --git a/library/widget_showing.cpp b/library/widget_showing.cpp
index 43ece64..43d19b0 100644
--- a/library/widget_showing.cpp
+++ b/library/widget_showing.cpp
@@ -1,74 +1,78 @@
1/* 1/*
2 This file is part of the OPIE Project 2 This file is part of the OPIE Project
3 Copyright (c) 2004 Andreas Richter <ar@handhelds.org> 3 Copyright (c) 2004 Andreas Richter <ar@handhelds.org>
4 Copyright (c) 2004 Holger Hans Peter Freyther <freyther@handhelds.org> 4 Copyright (c) 2004 Holger Hans Peter Freyther <freyther@handhelds.org>
5               =. 5               =.
6             .=l. 6             .=l.
7           .>+-= 7           .>+-=
8 _;:,     .>    :=|. This library is free software; you can 8 _;:,     .>    :=|. This library is free software; you can
9.> <`_,   >  .   <= redistribute it and/or modify it under 9.> <`_,   >  .   <= redistribute it and/or modify it under
10:`=1 )Y*s>-.--   : the terms of the GNU Library General Public 10:`=1 )Y*s>-.--   : the terms of the GNU Library General Public
11.="- .-=="i,     .._ License as published by the Free Software 11.="- .-=="i,     .._ License as published by the Free Software
12 - .   .-<_>     .<> Foundation; either version 2 of the License, 12 - .   .-<_>     .<> Foundation; either version 2 of the License,
13     ._= =}       : or (at your option) any later version. 13     ._= =}       : or (at your option) any later version.
14    .%`+i>       _;_. 14    .%`+i>       _;_.
15    .i_,=:_.      -<s. This library is distributed in the hope that 15    .i_,=:_.      -<s. This library is distributed in the hope that
16     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY; 16     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
17    : ..    .:,     . . . without even the implied warranty of 17    : ..    .:,     . . . without even the implied warranty of
18    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A 18    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
19  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU 19  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU
20..}^=.=       =       ; Library General Public License for more 20..}^=.=       =       ; Library General Public License for more
21++=   -.     .`     .: details. 21++=   -.     .`     .: details.
22 :     =  ...= . :.=- 22 :     =  ...= . :.=-
23 -.   .:....=;==+<; You should have received a copy of the GNU 23 -.   .:....=;==+<; You should have received a copy of the GNU
24  -_. . .   )=.  = Library General Public License along with 24  -_. . .   )=.  = Library General Public License along with
25    --        :-=` this library; see the file COPYING.LIB. 25    --        :-=` this library; see the file COPYING.LIB.
26 If not, write to the Free Software Foundation, 26 If not, write to the Free Software Foundation,
27 Inc., 59 Temple Place - Suite 330, 27 Inc., 59 Temple Place - Suite 330,
28 Boston, MA 02111-1307, USA. 28 Boston, MA 02111-1307, USA.
29 29
30*/ 30*/
31 31
32#include <qtopia/qpeapplication.h> 32#include <qtopia/qpeapplication.h>
33 33
34#ifdef Q_WS_QWS 34#ifdef Q_WS_QWS
35extern Q_EXPORT QRect qt_maxWindowRect; 35extern Q_EXPORT QRect qt_maxWindowRect;
36#endif 36#endif
37 37
38void QPEApplication::showDialog( QDialog* d, bool nomax ) 38void QPEApplication::showDialog( QDialog* d, bool nomax )
39{ 39{
40 showWidget( d, nomax ); 40 showWidget( d, nomax );
41} 41}
42 42
43int QPEApplication::execDialog( QDialog* d, bool nomax ) 43int QPEApplication::execDialog( QDialog* d, bool nomax )
44{ 44{
45 showDialog( d, nomax ); 45 showDialog( d, nomax );
46 return d->exec(); 46 return d->exec();
47} 47}
48 48
49void QPEApplication::showWidget( QWidget* wg, bool nomax ) { 49void QPEApplication::showWidget( QWidget* wg, bool nomax ) {
50 if ( wg->isVisible() ) { 50 if ( wg->isVisible() ) {
51 wg->show(); 51 wg->show();
52 return; 52 return;
53 } 53 }
54 54
55#ifndef OPIE_NO_WINDOWED
56 if ( TRUE ) {
57#else
55 if ( !nomax 58 if ( !nomax
56 && ( qApp->desktop()->width() <= 320 ) ){ 59 && ( qApp->desktop()->width() <= 320 ) ){
60#endif
57 wg->showMaximized(); 61 wg->showMaximized();
58 } else { 62 } else {
59#ifdef Q_WS_QWS 63#ifdef Q_WS_QWS
60 QSize desk = QSize( qApp->desktop()->width(), qApp->desktop()->height() ); 64 QSize desk = QSize( qApp->desktop()->width(), qApp->desktop()->height() );
61#else 65#else
62 QSize desk = QSize( qt_maxWindowRect.width(), qt_maxWindowRect.height() ); 66 QSize desk = QSize( qt_maxWindowRect.width(), qt_maxWindowRect.height() );
63#endif 67#endif
64 68
65 QSize sh = wg->sizeHint(); 69 QSize sh = wg->sizeHint();
66 int w = QMAX( sh.width(), wg->width() ); 70 int w = QMAX( sh.width(), wg->width() );
67 int h = QMAX( sh.height(), wg->height() ); 71 int h = QMAX( sh.height(), wg->height() );
68// desktop widget-frame taskbar 72// desktop widget-frame taskbar
69 w = QMIN( w, ( desk.width() - ( wg->frameGeometry().width() - wg->geometry().width() ) - 25 ) ); 73 w = QMIN( w, ( desk.width() - ( wg->frameGeometry().width() - wg->geometry().width() ) - 25 ) );
70 h = QMIN( h, ( desk.height() - ( wg->frameGeometry().height() - wg->geometry().height() ) - 25 ) ); 74 h = QMIN( h, ( desk.height() - ( wg->frameGeometry().height() - wg->geometry().height() ) - 25 ) );
71 wg->resize( w, h ); 75 wg->resize( w, h );
72 wg->show(); 76 wg->show();
73 } 77 }
74} 78}