summaryrefslogtreecommitdiff
path: root/library/qpeapplication.h
Unidiff
Diffstat (limited to 'library/qpeapplication.h') (more/less context) (ignore whitespace changes)
-rw-r--r--library/qpeapplication.h58
1 files changed, 12 insertions, 46 deletions
diff --git a/library/qpeapplication.h b/library/qpeapplication.h
index 579fc44..00d3d31 100644
--- a/library/qpeapplication.h
+++ b/library/qpeapplication.h
@@ -2,64 +2,65 @@
2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. 2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of the Qtopia Environment. 4** This file is part of the Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20#ifndef __QPE_APPLICATION_H__ 20#ifndef __QPE_APPLICATION_H__
21#define __QPE_APPLICATION_H__ 21#define __QPE_APPLICATION_H__
22 22
23#include <stdlib.h> // for setenv() 23#include <stdlib.h> // for setenv()
24 24
25#include <qglobal.h> 25#include <qglobal.h>
26#include <qapplication.h> 26#include <qapplication.h>
27#include <qdialog.h> 27#include <qdialog.h>
28#include <qwsdisplay_qws.h> 28#include <qwsdisplay_qws.h>
29#if defined(_WS_QWS_) && !defined(Q_WS_QWS) 29#if defined(_WS_QWS_) && !defined(Q_WS_QWS)
30#define Q_WS_QWS 30#define Q_WS_QWS
31#endif 31#endif
32#include "qpedecoration_qws.h" 32#include "qpedecoration_qws.h"
33#include "timestring.h" 33#include "timestring.h"
34#include "qpeglobal.h"
34 35
35class QCopChannel; 36class QCopChannel;
36class QPEApplicationData; 37class QPEApplicationData;
37class QWSEvent; 38class QWSEvent;
38class QWSKeyEvent; 39class QWSKeyEvent;
39 40
40/** 41/**
41 \brief The QPEApplication class implements various system services 42 \brief The QPEApplication class implements various system services
42 that are available to all Qtopia applications. 43 that are available to all Qtopia applications.
43 44
44 Simply by using QPEApplication instead of QApplication, a standard Qt 45 Simply by using QPEApplication instead of QApplication, a standard Qt
45 application becomes a Qtopia application. It automatically follows 46 application becomes a Qtopia application. It automatically follows
46 style changes, quits and raises, and in the 47 style changes, quits and raises, and in the
47 case of \link docwidget.html document-oriented\endlink applications, 48 case of \link docwidget.html document-oriented\endlink applications,
48 changes the currently displayed document in response to the environment. 49 changes the currently displayed document in response to the environment.
49 50
50 To create a \link docwidget.html document-oriented\endlink 51 To create a \link docwidget.html document-oriented\endlink
51 application use showMainDocumentWidget(); to create a 52 application use showMainDocumentWidget(); to create a
52 non-document-oriented application use showMainWidget(). The 53 non-document-oriented application use showMainWidget(). The
53 keepRunning() function indicates whether the application will 54 keepRunning() function indicates whether the application will
54 continue running after it's processed the last \link qcop.html 55 continue running after it's processed the last \link qcop.html
55 QCop\endlink message. This can be changed using setKeepRunning(). 56 QCop\endlink message. This can be changed using setKeepRunning().
56 57
57 A variety of signals are emitted when certain events occur, for 58 A variety of signals are emitted when certain events occur, for
58 example, timeChanged(), clockChanged(), weekChanged(), 59 example, timeChanged(), clockChanged(), weekChanged(),
59 dateFormatChanged() and volumeChanged(). If the application receives 60 dateFormatChanged() and volumeChanged(). If the application receives
60 a \link qcop.html QCop\endlink message on the application's 61 a \link qcop.html QCop\endlink message on the application's
61 QPE/Application/\e{appname} channel, the appMessage() signal is 62 QPE/Application/\e{appname} channel, the appMessage() signal is
62 emitted. There are also flush() and reload() signals, which 63 emitted. There are also flush() and reload() signals, which
63 are emitted when synching begins and ends respectively - upon these 64 are emitted when synching begins and ends respectively - upon these
64 signals, the application should save and reload any data 65 signals, the application should save and reload any data
65 files that are involved in synching. Most of these signals will initially 66 files that are involved in synching. Most of these signals will initially
@@ -91,175 +92,140 @@ public:
91 static void setDefaultRotation(int r); 92 static void setDefaultRotation(int r);
92 static void setCurrentRotation(int r); 93 static void setCurrentRotation(int r);
93 static void setCurrentMode(int x, int y, int depth ); 94 static void setCurrentMode(int x, int y, int depth );
94 static void grabKeyboard(); 95 static void grabKeyboard();
95 static void ungrabKeyboard(); 96 static void ungrabKeyboard();
96 97
97 enum StylusMode { 98 enum StylusMode {
98 LeftOnly, 99 LeftOnly,
99 RightOnHold 100 RightOnHold
100 // RightOnHoldLeftDelayed, etc. 101 // RightOnHoldLeftDelayed, etc.
101 }; 102 };
102 static void setStylusOperation( QWidget*, StylusMode ); 103 static void setStylusOperation( QWidget*, StylusMode );
103 static StylusMode stylusOperation( QWidget* ); 104 static StylusMode stylusOperation( QWidget* );
104 105
105 enum InputMethodHint { 106 enum InputMethodHint {
106 Normal, 107 Normal,
107 AlwaysOff, 108 AlwaysOff,
108 AlwaysOn 109 AlwaysOn
109 }; 110 };
110 111
111 enum screenSaverHint { 112 enum screenSaverHint {
112 Disable = 0, 113 Disable = 0,
113 DisableLightOff = 1, 114 DisableLightOff = 1,
114 DisableSuspend = 2, 115 DisableSuspend = 2,
115 Enable = 100 116 Enable = 100
116 }; 117 };
117 118
118 static void setInputMethodHint( QWidget *, InputMethodHint ); 119 static void setInputMethodHint( QWidget *, InputMethodHint );
119 static InputMethodHint inputMethodHint( QWidget * ); 120 static InputMethodHint inputMethodHint( QWidget * );
120 121
121 void showMainWidget( QWidget*, bool nomax=FALSE ); 122 void showMainWidget( QWidget*, bool nomax=FALSE );
122 void showMainDocumentWidget( QWidget*, bool nomax=FALSE ); 123 void showMainDocumentWidget( QWidget*, bool nomax=FALSE );
123 static void showDialog( QDialog*, bool nomax=FALSE ); 124
124 static int execDialog( QDialog*, bool nomax=FALSE ); 125 static void showDialog( QDialog*, bool nomax=FALSE ) QPE_WEAK_SYMBOL;
125 static void showWidget( QWidget*, bool nomax=FALSE ); 126 static int execDialog ( QDialog*, bool nomax=FALSE ) QPE_WEAK_SYMBOL;
127 static void showWidget( QWidget*, bool nomax=FALSE ) QPE_WEAK_SYMBOL;
126 /* Merge setTempScreenSaverMode */ 128 /* Merge setTempScreenSaverMode */
127#ifdef QTOPIA_INTERNAL_INITAPP 129#ifdef QTOPIA_INTERNAL_INITAPP
128 void initApp( int argv, char **argv ); 130 void initApp( int argv, char **argv );
129#endif 131#endif
130 132
131 static void setKeepRunning(); 133 static void setKeepRunning();
132 bool keepRunning() const; 134 bool keepRunning() const;
133 135
134 bool keyboardGrabbed() const; 136 bool keyboardGrabbed() const;
135 137
136 int exec(); 138 int exec();
137 139
138signals: 140signals:
139 void clientMoused(); 141 void clientMoused();
140 void timeChanged(); 142 void timeChanged();
141 void clockChanged( bool pm ); 143 void clockChanged( bool pm );
142 void micChanged( bool muted ); 144 void micChanged( bool muted );
143 void volumeChanged( bool muted ); 145 void volumeChanged( bool muted );
144 void appMessage( const QCString& msg, const QByteArray& data); 146 void appMessage( const QCString& msg, const QByteArray& data);
145 void weekChanged( bool startOnMonday ); 147 void weekChanged( bool startOnMonday );
146 void dateFormatChanged( DateFormat ); 148 void dateFormatChanged( DateFormat );
147 void flush(); 149 void flush();
148 void reload(); 150 void reload();
149 /* linkChanged signal */ 151 /* linkChanged signal */
150 152
151private slots: 153private slots:
152 void systemMessage( const QCString &msg, const QByteArray &data ); 154 void systemMessage( const QCString &msg, const QByteArray &data );
153 void pidMessage( const QCString &msg, const QByteArray &data ); 155 void pidMessage( const QCString &msg, const QByteArray &data );
154 void removeSenderFromStylusDict(); 156 void removeSenderFromStylusDict();
155 void hideOrQuit(); 157 void hideOrQuit();
156 158
157protected: 159protected:
158 bool qwsEventFilter( QWSEvent * ); 160 bool qwsEventFilter( QWSEvent * );
159 void internalSetStyle( const QString &style ); 161 void internalSetStyle( const QString &style );
160 void prepareForTermination(bool willrestart); 162 void prepareForTermination(bool willrestart);
161 virtual void restart(); 163 virtual void restart();
162 virtual void shutdown(); 164 virtual void shutdown();
163 bool eventFilter( QObject *, QEvent * ); 165 bool eventFilter( QObject *, QEvent * );
164 void timerEvent( QTimerEvent * ); 166 void timerEvent( QTimerEvent * );
165 bool raiseAppropriateWindow(); 167 bool raiseAppropriateWindow();
166 virtual void tryQuit(); 168 virtual void tryQuit();
167#ifndef OPIE_NO_ERASE_RECT_HACKFIX 169#ifndef OPIE_NO_ERASE_RECT_HACKFIX
168 #if QT_VERSION > 233 170 #if QT_VERSION > 233
169 virtual void polish ( QWidget * ); // this is actually implemented in qt_override.cpp (!) 171 virtual void polish ( QWidget * ); // this is actually implemented in qt_override.cpp (!)
170 #endif 172 #endif
171#endif 173#endif
172private: 174private:
173 void mapToDefaultAction( QWSKeyEvent *ke, int defKey ); 175 void mapToDefaultAction( QWSKeyEvent *ke, int defKey );
174 void processQCopFile(); 176 void processQCopFile();
175 177
176#if defined(Q_WS_QWS) && !defined(QT_NO_COP) 178#if defined(Q_WS_QWS) && !defined(QT_NO_COP)
177 QCopChannel *sysChannel; 179 QCopChannel *sysChannel;
178 QCopChannel *pidChannel; 180 QCopChannel *pidChannel;
179#endif 181#endif
180 QPEApplicationData *d; 182 QPEApplicationData *d;
181 183
182 bool reserved_sh; 184 bool reserved_sh;
183 185
184}; 186};
185 187
186inline void QPEApplication::showDialog( QDialog* d, bool nomax )
187{
188 showWidget( d, nomax );
189}
190 188
191inline int QPEApplication::execDialog( QDialog* d, bool nomax )
192{
193 showDialog( d, nomax );
194 return d->exec();
195}
196
197#ifdef Q_WS_QWS
198extern Q_EXPORT QRect qt_maxWindowRect;
199#endif
200
201inline void QPEApplication::showWidget( QWidget* wg, bool nomax )
202{
203 if ( wg->isVisible() )
204 wg->show();
205 else
206 {
207 if ( !nomax
208 && ( qApp->desktop()->width() <= 320 ) )
209 {
210 wg->showMaximized();
211 } else {
212 #ifdef Q_WS_QWS
213 QSize desk = QSize( qApp->desktop()->width(), qApp->desktop()->height() );
214 #else
215 QSize desk = QSize( qt_maxWindowRect.width(), qt_maxWindowRect.height() );
216 #endif
217
218 QSize sh = wg->sizeHint();
219 int w = QMAX( sh.width(), wg->width() );
220 int h = QMAX( sh.height(), wg->height() );
221 // desktop widget-frame taskbar
222 w = QMIN( w, ( desk.width() - ( wg->frameGeometry().width() - wg->geometry().width() ) - 25 ) );
223 h = QMIN( h, ( desk.height() - ( wg->frameGeometry().height() - wg->geometry().height() ) - 25 ) );
224
225 wg->resize( w, h );
226 wg->show();
227 }
228 }
229}
230 189
231enum Transformation { Rot0, Rot90, Rot180, Rot270 }; /* from qgfxtransformed_qws.cpp */ 190enum Transformation { Rot0, Rot90, Rot180, Rot270 }; /* from qgfxtransformed_qws.cpp */
232 191
233inline int TransToDeg ( Transformation t ) 192inline int TransToDeg ( Transformation t )
234{ 193{
235 int d = static_cast<int>( t ); 194 int d = static_cast<int>( t );
236 return d * 90; 195 return d * 90;
237} 196}
238 197
239inline Transformation DegToTrans ( int d ) 198inline Transformation DegToTrans ( int d )
240{ 199{
241 Transformation t = static_cast<Transformation>( d / 90 ); 200 Transformation t = static_cast<Transformation>( d / 90 );
242 return t; 201 return t;
243} 202}
244 203
245/* 204/*
246 * Set current rotation of Opie, and rotation for newly started apps. 205 * Set current rotation of Opie, and rotation for newly started apps.
247 * Differs from setDefaultRotation in that 1) it rotates currently running apps, 206 * Differs from setDefaultRotation in that 1) it rotates currently running apps,
248 * and 2) does not set deforient or save orientation to qpe.conf. 207 * and 2) does not set deforient or save orientation to qpe.conf.
249 */ 208 */
250 209
251inline void QPEApplication::setCurrentRotation( int r ) 210inline void QPEApplication::setCurrentRotation( int r )
252{ 211{
253 // setTransformation has been introduced in Qt/Embedded 2.3.4 snapshots 212 // setTransformation has been introduced in Qt/Embedded 2.3.4 snapshots
254 // for compatibility with the SharpROM use fallback to setDefaultTransformation() 213 // for compatibility with the SharpROM use fallback to setDefaultTransformation()
255#if QT_VERSION > 233 214#if QT_VERSION > 233
256 Transformation e = DegToTrans( r ); 215 Transformation e = DegToTrans( r );
257 ::setenv( "QWS_DISPLAY", QString( "Transformed:Rot%1:0" ).arg( r ).latin1(), 1 ); 216 ::setenv( "QWS_DISPLAY", QString( "Transformed:Rot%1:0" ).arg( r ).latin1(), 1 );
258 qApp->desktop()->qwsDisplay()->setTransformation( e ); 217 qApp->desktop()->qwsDisplay()->setTransformation( e );
259#else 218#else
260 setDefaultRotation( r ); 219 setDefaultRotation( r );
261#endif 220#endif
262} 221}
263 222
264 223
224/*
225 * -remove me
226 */
227#ifdef Q_WS_QWS
228extern Q_EXPORT QRect qt_maxWindowRect;
229#endif
230
265#endif 231#endif