summaryrefslogtreecommitdiff
authorllornkcor <llornkcor>2004-04-25 12:15:06 (UTC)
committer llornkcor <llornkcor>2004-04-25 12:15:06 (UTC)
commit6182b509bdb16dd4d1e95b9a570219ef6c15ed21 (patch) (unidiff)
tree681bcfd272bd1d8d4873ee94acd56d42968997c3
parent84466242f91283378aec1b1ecda0bb27eb4f6097 (diff)
downloadopie-6182b509bdb16dd4d1e95b9a570219ef6c15ed21.zip
opie-6182b509bdb16dd4d1e95b9a570219ef6c15ed21.tar.gz
opie-6182b509bdb16dd4d1e95b9a570219ef6c15ed21.tar.bz2
fix bigfotos
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--library/qpeapplication.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/library/qpeapplication.cpp b/library/qpeapplication.cpp
index 86dbe85..d0e9613 100644
--- a/library/qpeapplication.cpp
+++ b/library/qpeapplication.cpp
@@ -1,433 +1,443 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. 2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of the Qtopia Environment. 4** This file is part of the Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19*/ 19*/
20#define QTOPIA_INTERNAL_LANGLIST 20#define QTOPIA_INTERNAL_LANGLIST
21#include <stdlib.h> 21#include <stdlib.h>
22#include <unistd.h> 22#include <unistd.h>
23#ifndef Q_OS_MACX 23#ifndef Q_OS_MACX
24#include <linux/limits.h> // needed for some toolchains (PATH_MAX) 24#include <linux/limits.h> // needed for some toolchains (PATH_MAX)
25#endif 25#endif
26#include <qfile.h> 26#include <qfile.h>
27#include <qqueue.h> 27#include <qqueue.h>
28#ifdef Q_WS_QWS 28#ifdef Q_WS_QWS
29#ifndef QT_NO_COP 29#ifndef QT_NO_COP
30#if QT_VERSION <= 231 30#if QT_VERSION <= 231
31#define private public 31#define private public
32#define sendLocally processEvent 32#define sendLocally processEvent
33#include "qcopenvelope_qws.h" 33#include "qcopenvelope_qws.h"
34#undef private 34#undef private
35#else 35#else
36#include "qcopenvelope_qws.h" 36#include "qcopenvelope_qws.h"
37#endif 37#endif
38#endif 38#endif
39#include <qwindowsystem_qws.h> 39#include <qwindowsystem_qws.h>
40#endif 40#endif
41#include <qtextstream.h> 41#include <qtextstream.h>
42#include <qpalette.h> 42#include <qpalette.h>
43#include <qbuffer.h> 43#include <qbuffer.h>
44#include <qptrdict.h> 44#include <qptrdict.h>
45#include <qregexp.h> 45#include <qregexp.h>
46#include <qdir.h> 46#include <qdir.h>
47#include <qlabel.h> 47#include <qlabel.h>
48#include <qdialog.h> 48#include <qdialog.h>
49#include <qdragobject.h> 49#include <qdragobject.h>
50#include <qtextcodec.h> 50#include <qtextcodec.h>
51#include <qevent.h> 51#include <qevent.h>
52#include <qtooltip.h> 52#include <qtooltip.h>
53#include <qsignal.h> 53#include <qsignal.h>
54#include <qmainwindow.h> 54#include <qmainwindow.h>
55#include <qwidgetlist.h> 55#include <qwidgetlist.h>
56#include <qpixmapcache.h> 56#include <qpixmapcache.h>
57 57
58#if defined(Q_WS_QWS) && !defined(QT_NO_COP) 58#if defined(Q_WS_QWS) && !defined(QT_NO_COP)
59#define QTOPIA_INTERNAL_INITAPP 59#define QTOPIA_INTERNAL_INITAPP
60#include "qpeapplication.h" 60#include "qpeapplication.h"
61#include "qpestyle.h" 61#include "qpestyle.h"
62#include "styleinterface.h" 62#include "styleinterface.h"
63#if QT_VERSION >= 300 63#if QT_VERSION >= 300
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#endif 83#endif
84 84
85#include "alarmserver.h" 85#include "alarmserver.h"
86#include "applnk.h" 86#include "applnk.h"
87#include "qpemenubar.h" 87#include "qpemenubar.h"
88#include "textcodecinterface.h" 88#include "textcodecinterface.h"
89#include "imagecodecinterface.h" 89#include "imagecodecinterface.h"
90 90
91#include <unistd.h> 91#include <unistd.h>
92#include <sys/file.h> 92#include <sys/file.h>
93#include <sys/ioctl.h> 93#include <sys/ioctl.h>
94#ifndef QT_NO_SOUND 94#ifndef QT_NO_SOUND
95#include <sys/soundcard.h> 95#include <sys/soundcard.h>
96#endif 96#endif
97#include "qt_override_p.h" 97#include "qt_override_p.h"
98 98
99class HackWidget : public QWidget 99class HackWidget : public QWidget
100{ 100{
101public: 101public:
102 bool needsOk() 102 bool needsOk()
103 { return (getWState() & WState_Reserved1 ); } 103 { return (getWState() & WState_Reserved1 ); }
104 104
105 QRect normalGeometry() 105 QRect normalGeometry()
106 { return topData()->normalGeometry; }; 106 { return topData()->normalGeometry; };
107}; 107};
108 108
109class QPEApplicationData 109class QPEApplicationData
110{ 110{
111public: 111public:
112 QPEApplicationData ( ) 112 QPEApplicationData ( )
113 : presstimer( 0 ), presswidget( 0 ), rightpressed( false ), kbgrabbed( false ), 113 : presstimer( 0 ), presswidget( 0 ), rightpressed( false ), kbgrabbed( false ),
114 notbusysent( false ), preloaded( false ), forceshow( false ), nomaximize( false ), 114 notbusysent( false ), preloaded( false ), forceshow( false ), nomaximize( false ),
115 keep_running( true ), qcopQok( false ), qpe_main_widget( 0 ) 115 keep_running( true ), qcopQok( false ), qpe_main_widget( 0 )
116 116
117 {} 117 {}
118 118
119 int presstimer; 119 int presstimer;
120 QWidget* presswidget; 120 QWidget* presswidget;
121 QPoint presspos; 121 QPoint presspos;
122 122
123 bool rightpressed : 1; 123 bool rightpressed : 1;
124 bool kbgrabbed : 1; 124 bool kbgrabbed : 1;
125 bool notbusysent : 1; 125 bool notbusysent : 1;
126 bool preloaded : 1; 126 bool preloaded : 1;
127 bool forceshow : 1; 127 bool forceshow : 1;
128 bool nomaximize : 1; 128 bool nomaximize : 1;
129 bool keep_running : 1; 129 bool keep_running : 1;
130 bool qcopQok : 1; 130 bool qcopQok : 1;
131 131
132 132
133 QStringList langs; 133 QStringList langs;
134 QString appName; 134 QString appName;
135 struct QCopRec 135 struct QCopRec
136 { 136 {
137 QCopRec( const QCString &ch, const QCString &msg, 137 QCopRec( const QCString &ch, const QCString &msg,
138 const QByteArray &d ) : 138 const QByteArray &d ) :
139 channel( ch ), message( msg ), data( d ) 139 channel( ch ), message( msg ), data( d )
140 { } 140 { }
141 141
142 QCString channel; 142 QCString channel;
143 QCString message; 143 QCString message;
144 QByteArray data; 144 QByteArray data;
145 }; 145 };
146 QWidget* qpe_main_widget; 146 QWidget* qpe_main_widget;
147 QGuardedPtr<QWidget> lastraised; 147 QGuardedPtr<QWidget> lastraised;
148 QQueue<QCopRec> qcopq; 148 QQueue<QCopRec> qcopq;
149 QString styleName; 149 QString styleName;
150 QString decorationName; 150 QString decorationName;
151 151
152 void enqueueQCop( const QCString &ch, const QCString &msg, 152 void enqueueQCop( const QCString &ch, const QCString &msg,
153 const QByteArray &data ) 153 const QByteArray &data )
154 { 154 {
155 qcopq.enqueue( new QCopRec( ch, msg, data ) ); 155 qcopq.enqueue( new QCopRec( ch, msg, data ) );
156 } 156 }
157 void sendQCopQ() 157 void sendQCopQ()
158 { 158 {
159 if (!qcopQok ) 159 if (!qcopQok )
160 return; 160 return;
161 161
162 QCopRec * r; 162 QCopRec * r;
163 163
164 while((r=qcopq.dequeue())) { 164 while((r=qcopq.dequeue())) {
165 // remove from queue before sending... 165 // remove from queue before sending...
166 // event loop can come around again before getting 166 // event loop can come around again before getting
167 // back from sendLocally 167 // back from sendLocally
168#ifndef QT_NO_COP 168#ifndef QT_NO_COP
169 QCopChannel::sendLocally( r->channel, r->message, r->data ); 169 QCopChannel::sendLocally( r->channel, r->message, r->data );
170#endif 170#endif
171 171
172 delete r; 172 delete r;
173 } 173 }
174 } 174 }
175 175
176 static void show_mx(QWidget* mw, bool nomaximize, QString &strName/* = QString::null */) 176 static void show_mx(QWidget* mw, bool nomaximize, QString &strName/* = QString::null */)
177 { 177 {
178 // ugly hack, remove that later after finding a sane solution
179 // Addendum: Only Sharp currently has models with high resolution but (physically) small displays,
180 // so this is only useful if QT_QWS_SIMPAD is NOT defined. E.g. SIMpad has 800x600 but has
181 // a (physically) large enough display to use the small icons
182#if defined(OPIE_HIGH_RES_SMALL_PHY)
183 if ( QPEApplication::desktop() ->width() >= 600 && ( mw->inherits("QMainWindow") || mw->isA("QMainWindow") ) ) {
184 ( ( QMainWindow* ) mw )->setUsesBigPixmaps( true );
185 }
186#endif
187
178 QPoint p; 188 QPoint p;
179 QSize s; 189 QSize s;
180 bool max; 190 bool max;
181 if ( mw->isVisible() ) { 191 if ( mw->isVisible() ) {
182 if ( read_widget_rect(strName, max, p, s) && validate_widget_size(mw, p, s) ) { 192 if ( read_widget_rect(strName, max, p, s) && validate_widget_size(mw, p, s) ) {
183 mw->resize(s); 193 mw->resize(s);
184 mw->move(p); 194 mw->move(p);
185 } 195 }
186 mw->raise(); 196 mw->raise();
187 } else { 197 } else {
188 198
189 if ( mw->layout() && mw->inherits("QDialog") ) { 199 if ( mw->layout() && mw->inherits("QDialog") ) {
190 if ( read_widget_rect(strName, max, p, s) && validate_widget_size(mw, p, s) ) { 200 if ( read_widget_rect(strName, max, p, s) && validate_widget_size(mw, p, s) ) {
191 mw->resize(s); 201 mw->resize(s);
192 mw->move(p); 202 mw->move(p);
193 203
194 if ( max && !nomaximize ) { 204 if ( max && !nomaximize ) {
195 mw->showMaximized(); 205 mw->showMaximized();
196 } else { 206 } else {
197 mw->show(); 207 mw->show();
198 } 208 }
199 } else { 209 } else {
200 qpe_show_dialog((QDialog*)mw,nomaximize); 210 qpe_show_dialog((QDialog*)mw,nomaximize);
201 } 211 }
202 } else { 212 } else {
203 if ( read_widget_rect(strName, max, p, s) && validate_widget_size(mw, p, s) ) { 213 if ( read_widget_rect(strName, max, p, s) && validate_widget_size(mw, p, s) ) {
204 mw->resize(s); 214 mw->resize(s);
205 mw->move(p); 215 mw->move(p);
206 } else { //no stored rectangle, make an estimation 216 } else { //no stored rectangle, make an estimation
207 int x = (qApp->desktop()->width()-mw->frameGeometry().width())/2; 217 int x = (qApp->desktop()->width()-mw->frameGeometry().width())/2;
208 int y = (qApp->desktop()->height()-mw->frameGeometry().height())/2; 218 int y = (qApp->desktop()->height()-mw->frameGeometry().height())/2;
209 mw->move( QMAX(x,0), QMAX(y,0) ); 219 mw->move( QMAX(x,0), QMAX(y,0) );
210#ifdef Q_WS_QWS 220#ifdef Q_WS_QWS
211 if ( !nomaximize ) 221 if ( !nomaximize )
212 mw->showMaximized(); 222 mw->showMaximized();
213#endif 223#endif
214 } 224 }
215 if ( max && !nomaximize ) 225 if ( max && !nomaximize )
216 mw->showMaximized(); 226 mw->showMaximized();
217 else 227 else
218 mw->show(); 228 mw->show();
219 } 229 }
220 } 230 }
221 } 231 }
222 232
223static void qpe_show_dialog( QDialog* d, bool nomax ) 233static void qpe_show_dialog( QDialog* d, bool nomax )
224{ 234{
225 QSize sh = d->sizeHint(); 235 QSize sh = d->sizeHint();
226 int w = QMAX(sh.width(),d->width()); 236 int w = QMAX(sh.width(),d->width());
227 int h = QMAX(sh.height(),d->height()); 237 int h = QMAX(sh.height(),d->height());
228 238
229 if ( d->parentWidget() && !d->parentWidget()->topLevelWidget()->isMaximized() ) 239 if ( d->parentWidget() && !d->parentWidget()->topLevelWidget()->isMaximized() )
230 nomax = TRUE; 240 nomax = TRUE;
231 241
232#ifndef Q_WS_QWS 242#ifndef Q_WS_QWS
233 QSize s(qApp->desktop()->width(), qApp->desktop()->height() ); 243 QSize s(qApp->desktop()->width(), qApp->desktop()->height() );
234#else 244#else
235 QSize s(qt_maxWindowRect.width(), qt_maxWindowRect.height() ); 245 QSize s(qt_maxWindowRect.width(), qt_maxWindowRect.height() );
236#endif 246#endif
237 247
238 int maxX = s.width() - (d->frameGeometry().width() - d->geometry().width()); 248 int maxX = s.width() - (d->frameGeometry().width() - d->geometry().width());
239 int maxY = s.height() - (d->frameGeometry().height() - d->geometry().height()); 249 int maxY = s.height() - (d->frameGeometry().height() - d->geometry().height());
240 250
241 if ( (w >= maxX && h >= maxY) || ( (!nomax) && ( w > s.width()*3/4 || h > s.height()*3/4 ) ) ) { 251 if ( (w >= maxX && h >= maxY) || ( (!nomax) && ( w > s.width()*3/4 || h > s.height()*3/4 ) ) ) {
242 d->showMaximized(); 252 d->showMaximized();
243 } else { 253 } else {
244 // try centering the dialog around its parent 254 // try centering the dialog around its parent
245 QPoint p(0,0); 255 QPoint p(0,0);
246 if ( d->parentWidget() ) { 256 if ( d->parentWidget() ) {
247 QPoint pp = d->parentWidget()->mapToGlobal( QPoint(0,0) ); 257 QPoint pp = d->parentWidget()->mapToGlobal( QPoint(0,0) );
248 p = QPoint( pp.x() + d->parentWidget()->width()/2, 258 p = QPoint( pp.x() + d->parentWidget()->width()/2,
249 pp.y() + d->parentWidget()->height()/ 2 ); 259 pp.y() + d->parentWidget()->height()/ 2 );
250 } else { 260 } else {
251 p = QPoint( maxX/2, maxY/2 ); 261 p = QPoint( maxX/2, maxY/2 );
252 } 262 }
253 263
254 p = QPoint( p.x() - w/2, p.y() - h/2 ); 264 p = QPoint( p.x() - w/2, p.y() - h/2 );
255 //qDebug("p(x,y) is %d %d", p.x(), p.y() ); 265 //qDebug("p(x,y) is %d %d", p.x(), p.y() );
256 266
257 if ( w >= maxX ) { 267 if ( w >= maxX ) {
258 if ( p.y() < 0 ) 268 if ( p.y() < 0 )
259 p.setY(0); 269 p.setY(0);
260 if ( p.y() + h > maxY ) 270 if ( p.y() + h > maxY )
261 p.setY( maxY - h); 271 p.setY( maxY - h);
262 272
263 d->resize(maxX, h); 273 d->resize(maxX, h);
264 d->move(0, p.y() ); 274 d->move(0, p.y() );
265 } else if ( h >= maxY ) { 275 } else if ( h >= maxY ) {
266 if ( p.x() < 0 ) 276 if ( p.x() < 0 )
267 p.setX(0); 277 p.setX(0);
268 if ( p.x() + w > maxX ) 278 if ( p.x() + w > maxX )
269 p.setX( maxX - w); 279 p.setX( maxX - w);
270 280
271 d->resize(w, maxY); 281 d->resize(w, maxY);
272 d->move(p.x(),0); 282 d->move(p.x(),0);
273 } else { 283 } else {
274 d->resize(w, h); 284 d->resize(w, h);
275 } 285 }
276 286
277 d->show(); 287 d->show();
278 } 288 }
279} 289}
280 290
281 static bool read_widget_rect(const QString &app, bool &maximized, QPoint &p, QSize &s) 291 static bool read_widget_rect(const QString &app, bool &maximized, QPoint &p, QSize &s)
282 { 292 {
283 maximized = TRUE; 293 maximized = TRUE;
284 // 350 is the trigger in qwsdefaultdecoration for providing a resize button 294 // 350 is the trigger in qwsdefaultdecoration for providing a resize button
285 if ( qApp->desktop()->width() <= 350 ) 295 if ( qApp->desktop()->width() <= 350 )
286 return FALSE; 296 return FALSE;
287 297
288 Config cfg( "qpe" ); 298 Config cfg( "qpe" );
289 cfg.setGroup("ApplicationPositions"); 299 cfg.setGroup("ApplicationPositions");
290 QString str = cfg.readEntry( app, QString::null ); 300 QString str = cfg.readEntry( app, QString::null );
291 QStringList l = QStringList::split(",", str); 301 QStringList l = QStringList::split(",", str);
292 302
293 if ( l.count() == 5) { 303 if ( l.count() == 5) {
294 p.setX( l[0].toInt() ); 304 p.setX( l[0].toInt() );
295 p.setY( l[1].toInt() ); 305 p.setY( l[1].toInt() );
296 306
297 s.setWidth( l[2].toInt() ); 307 s.setWidth( l[2].toInt() );
298 s.setHeight( l[3].toInt() ); 308 s.setHeight( l[3].toInt() );
299 309
300 maximized = l[4].toInt(); 310 maximized = l[4].toInt();
301 311
302 return TRUE; 312 return TRUE;
303 } 313 }
304 314
305 return FALSE; 315 return FALSE;
306 } 316 }
307 317
308 318
309 static bool validate_widget_size(const QWidget *w, QPoint &p, QSize &s) 319 static bool validate_widget_size(const QWidget *w, QPoint &p, QSize &s)
310 { 320 {
311#ifndef Q_WS_QWS 321#ifndef Q_WS_QWS
312 QRect qt_maxWindowRect = qApp->desktop()->geometry(); 322 QRect qt_maxWindowRect = qApp->desktop()->geometry();
313#endif 323#endif
314 int maxX = qt_maxWindowRect.width(); 324 int maxX = qt_maxWindowRect.width();
315 int maxY = qt_maxWindowRect.height(); 325 int maxY = qt_maxWindowRect.height();
316 int wWidth = s.width() + ( w->frameGeometry().width() - w->geometry().width() ); 326 int wWidth = s.width() + ( w->frameGeometry().width() - w->geometry().width() );
317 int wHeight = s.height() + ( w->frameGeometry().height() - w->geometry().height() ); 327 int wHeight = s.height() + ( w->frameGeometry().height() - w->geometry().height() );
318 328
319 // total window size is not allowed to be larger than desktop window size 329 // total window size is not allowed to be larger than desktop window size
320 if ( ( wWidth >= maxX ) && ( wHeight >= maxY ) ) 330 if ( ( wWidth >= maxX ) && ( wHeight >= maxY ) )
321 return FALSE; 331 return FALSE;
322 332
323 if ( wWidth > maxX ) { 333 if ( wWidth > maxX ) {
324 s.setWidth( maxX - (w->frameGeometry().width() - w->geometry().width() ) ); 334 s.setWidth( maxX - (w->frameGeometry().width() - w->geometry().width() ) );
325 wWidth = maxX; 335 wWidth = maxX;
326 } 336 }
327 337
328 if ( wHeight > maxY ) { 338 if ( wHeight > maxY ) {
329 s.setHeight( maxY - (w->frameGeometry().height() - w->geometry().height() ) ); 339 s.setHeight( maxY - (w->frameGeometry().height() - w->geometry().height() ) );
330 wHeight = maxY; 340 wHeight = maxY;
331 } 341 }
332 342
333 // any smaller than this and the maximize/close/help buttons will be overlapping 343 // any smaller than this and the maximize/close/help buttons will be overlapping
334 if ( wWidth < 80 || wHeight < 60 ) 344 if ( wWidth < 80 || wHeight < 60 )
335 return FALSE; 345 return FALSE;
336 346
337 if ( p.x() < 0 ) 347 if ( p.x() < 0 )
338 p.setX(0); 348 p.setX(0);
339 if ( p.y() < 0 ) 349 if ( p.y() < 0 )
340 p.setY(0); 350 p.setY(0);
341 351
342 if ( p.x() + wWidth > maxX ) 352 if ( p.x() + wWidth > maxX )
343 p.setX( maxX - wWidth ); 353 p.setX( maxX - wWidth );
344 if ( p.y() + wHeight > maxY ) 354 if ( p.y() + wHeight > maxY )
345 p.setY( maxY - wHeight ); 355 p.setY( maxY - wHeight );
346 356
347 return TRUE; 357 return TRUE;
348 } 358 }
349 359
350 static void store_widget_rect(QWidget *w, QString &app) 360 static void store_widget_rect(QWidget *w, QString &app)
351 { 361 {
352 // 350 is the trigger in qwsdefaultdecoration for providing a resize button 362 // 350 is the trigger in qwsdefaultdecoration for providing a resize button
353 if ( qApp->desktop()->width() <= 350 ) 363 if ( qApp->desktop()->width() <= 350 )
354 return; 364 return;
355 // we use these to map the offset of geometry and pos. ( we can only use normalGeometry to 365 // we use these to map the offset of geometry and pos. ( we can only use normalGeometry to
356 // get the non-maximized version, so we have to do it the hard way ) 366 // get the non-maximized version, so we have to do it the hard way )
357 int offsetX = w->x() - w->geometry().left(); 367 int offsetX = w->x() - w->geometry().left();
358 int offsetY = w->y() - w->geometry().top(); 368 int offsetY = w->y() - w->geometry().top();
359 369
360 QRect r; 370 QRect r;
361 if ( w->isMaximized() ) 371 if ( w->isMaximized() )
362 r = ( (HackWidget *) w)->normalGeometry(); 372 r = ( (HackWidget *) w)->normalGeometry();
363 else 373 else
364 r = w->geometry(); 374 r = w->geometry();
365 375
366 // Stores the window placement as pos(), size() (due to the offset mapping) 376 // Stores the window placement as pos(), size() (due to the offset mapping)
367 Config cfg( "qpe" ); 377 Config cfg( "qpe" );
368 cfg.setGroup("ApplicationPositions"); 378 cfg.setGroup("ApplicationPositions");
369 QString s; 379 QString s;
370 s.sprintf("%d,%d,%d,%d,%d", r.left() + offsetX, r.top() + offsetY, r.width(), r.height(), w->isMaximized() ); 380 s.sprintf("%d,%d,%d,%d,%d", r.left() + offsetX, r.top() + offsetY, r.width(), r.height(), w->isMaximized() );
371 cfg.writeEntry( app, s ); 381 cfg.writeEntry( app, s );
372 } 382 }
373 383
374 static bool setWidgetCaptionFromAppName( QWidget* /*mw*/, const QString& /*appName*/, const QString& /*appsPath*/ ) 384 static bool setWidgetCaptionFromAppName( QWidget* /*mw*/, const QString& /*appName*/, const QString& /*appsPath*/ )
375 { 385 {
376 /* 386 /*
377 // This works but disable it for now until it is safe to apply 387 // This works but disable it for now until it is safe to apply
378 // What is does is scan the .desktop files of all the apps for 388 // What is does is scan the .desktop files of all the apps for
379 // the applnk that has the corresponding argv[0] as this program 389 // the applnk that has the corresponding argv[0] as this program
380 // then it uses the name stored in the .desktop file as the caption 390 // then it uses the name stored in the .desktop file as the caption
381 // for the main widget. This saves duplicating translations for 391 // for the main widget. This saves duplicating translations for
382 // the app name in the program and in the .desktop files. 392 // the app name in the program and in the .desktop files.
383 393
384 AppLnkSet apps( appsPath ); 394 AppLnkSet apps( appsPath );
385 395
386 QList<AppLnk> appsList = apps.children(); 396 QList<AppLnk> appsList = apps.children();
387 for ( QListIterator<AppLnk> it(appsList); it.current(); ++it ) { 397 for ( QListIterator<AppLnk> it(appsList); it.current(); ++it ) {
388 if ( (*it)->exec() == appName ) { 398 if ( (*it)->exec() == appName ) {
389 mw->setCaption( (*it)->name() ); 399 mw->setCaption( (*it)->name() );
390 return TRUE; 400 return TRUE;
391 } 401 }
392 } 402 }
393 */ 403 */
394 return FALSE; 404 return FALSE;
395 } 405 }
396 406
397 407
398 void show(QWidget* mw, bool nomax) 408 void show(QWidget* mw, bool nomax)
399 { 409 {
400 setWidgetCaptionFromAppName( mw, appName, QPEApplication::qpeDir() + "apps" ); 410 setWidgetCaptionFromAppName( mw, appName, QPEApplication::qpeDir() + "apps" );
401 nomaximize = nomax; 411 nomaximize = nomax;
402 qpe_main_widget = mw; 412 qpe_main_widget = mw;
403 qcopQok = TRUE; 413 qcopQok = TRUE;
404#ifndef QT_NO_COP 414#ifndef QT_NO_COP
405 415
406 sendQCopQ(); 416 sendQCopQ();
407#endif 417#endif
408 418
409 if ( preloaded ) { 419 if ( preloaded ) {
410 if (forceshow) 420 if (forceshow)
411 show_mx(mw, nomax, appName); 421 show_mx(mw, nomax, appName);
412 } 422 }
413 else if ( keep_running ) { 423 else if ( keep_running ) {
414 show_mx(mw, nomax, appName); 424 show_mx(mw, nomax, appName);
415 } 425 }
416 } 426 }
417 427
418 void loadTextCodecs() 428 void loadTextCodecs()
419 { 429 {
420 QString path = QPEApplication::qpeDir() + "/plugins/textcodecs"; 430 QString path = QPEApplication::qpeDir() + "/plugins/textcodecs";
421#ifdef Q_OS_MACX 431#ifdef Q_OS_MACX
422 QDir dir( path, "lib*.dylib" ); 432 QDir dir( path, "lib*.dylib" );
423#else 433#else
424 QDir dir( path, "lib*.so" ); 434 QDir dir( path, "lib*.so" );
425#endif 435#endif
426 QStringList list; 436 QStringList list;
427 if ( dir. exists ( )) 437 if ( dir. exists ( ))
428 list = dir.entryList(); 438 list = dir.entryList();
429 QStringList::Iterator it; 439 QStringList::Iterator it;
430 for ( it = list.begin(); it != list.end(); ++it ) { 440 for ( it = list.begin(); it != list.end(); ++it ) {
431 TextCodecInterface *iface = 0; 441 TextCodecInterface *iface = 0;
432 QLibrary *lib = new QLibrary( path + "/" + *it ); 442 QLibrary *lib = new QLibrary( path + "/" + *it );
433 if ( lib->queryInterface( IID_QtopiaTextCodec, (QUnknownInterface**)&iface ) == QS_OK && iface ) { 443 if ( lib->queryInterface( IID_QtopiaTextCodec, (QUnknownInterface**)&iface ) == QS_OK && iface ) {