author | zecke <zecke> | 2004-05-17 21:15:42 (UTC) |
---|---|---|
committer | zecke <zecke> | 2004-05-17 21:15:42 (UTC) |
commit | 598c9bc76840120fa3efdb000461bae2c1fef639 (patch) (unidiff) | |
tree | 4cf0c66149f7bee38a2bcface9e7fbfd0d28b85a /library/qpeapplication.h | |
parent | 1827ce23d0719a22c14613dc5859093818da1d0a (diff) | |
download | opie-598c9bc76840120fa3efdb000461bae2c1fef639.zip opie-598c9bc76840120fa3efdb000461bae2c1fef639.tar.gz opie-598c9bc76840120fa3efdb000461bae2c1fef639.tar.bz2 |
ich@opiezilla:~/programming/opie/head/opie$ nm lib/libopiecore2.so | grep polish
U _ZN14QPEApplication6polishEP7QWidget
ich@opiezilla:~/programming/opie/head/opie$ nm lib/libopiecore2.so | grep polish
U _ZN12QApplication6polishEP7QWidget
in qt_override we had to overwrite the Palette for some widgets for some styles (setting no
background liquid and such) we overwrote the polish method.
As we did not inherit from QPEApplication the 'polish' symbol was only internal to
libqpe and this way Opie apps worked on Opies and Sharps libqpe, and Sharp apps work
on our libqpe. Now with libopiecore the compiler tries to include different symbols as shown above.
So for now we could disable the legacy palette polishing which shouldn't hurt anyway.
OApplication is the source of all evil, we wouldn't 'pull' in the polish symbol... but having
a 'shadow' weak symbol as backup isn't good as well.
Chicken you may enable the option in config.in...
-rw-r--r-- | library/qpeapplication.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/library/qpeapplication.h b/library/qpeapplication.h index 8c85ad0..d2782e4 100644 --- a/library/qpeapplication.h +++ b/library/qpeapplication.h | |||
@@ -1,268 +1,270 @@ | |||
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 | #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 | 34 | ||
35 | class QCopChannel; | 35 | class QCopChannel; |
36 | class QPEApplicationData; | 36 | class QPEApplicationData; |
37 | class QWSEvent; | 37 | class QWSEvent; |
38 | class QWSKeyEvent; | 38 | class QWSKeyEvent; |
39 | 39 | ||
40 | /** | 40 | /** |
41 | \brief The QPEApplication class implements various system services | 41 | \brief The QPEApplication class implements various system services |
42 | that are available to all Qtopia applications. | 42 | that are available to all Qtopia applications. |
43 | 43 | ||
44 | Simply by using QPEApplication instead of QApplication, a standard Qt | 44 | Simply by using QPEApplication instead of QApplication, a standard Qt |
45 | application becomes a Qtopia application. It automatically follows | 45 | application becomes a Qtopia application. It automatically follows |
46 | style changes, quits and raises, and in the | 46 | style changes, quits and raises, and in the |
47 | case of \link docwidget.html document-oriented\endlink applications, | 47 | case of \link docwidget.html document-oriented\endlink applications, |
48 | changes the currently displayed document in response to the environment. | 48 | changes the currently displayed document in response to the environment. |
49 | 49 | ||
50 | To create a \link docwidget.html document-oriented\endlink | 50 | To create a \link docwidget.html document-oriented\endlink |
51 | application use showMainDocumentWidget(); to create a | 51 | application use showMainDocumentWidget(); to create a |
52 | non-document-oriented application use showMainWidget(). The | 52 | non-document-oriented application use showMainWidget(). The |
53 | keepRunning() function indicates whether the application will | 53 | keepRunning() function indicates whether the application will |
54 | continue running after it's processed the last \link qcop.html | 54 | continue running after it's processed the last \link qcop.html |
55 | QCop\endlink message. This can be changed using setKeepRunning(). | 55 | QCop\endlink message. This can be changed using setKeepRunning(). |
56 | 56 | ||
57 | A variety of signals are emitted when certain events occur, for | 57 | A variety of signals are emitted when certain events occur, for |
58 | example, timeChanged(), clockChanged(), weekChanged(), | 58 | example, timeChanged(), clockChanged(), weekChanged(), |
59 | dateFormatChanged() and volumeChanged(). If the application receives | 59 | dateFormatChanged() and volumeChanged(). If the application receives |
60 | a \link qcop.html QCop\endlink message on the application's | 60 | a \link qcop.html QCop\endlink message on the application's |
61 | QPE/Application/\e{appname} channel, the appMessage() signal is | 61 | QPE/Application/\e{appname} channel, the appMessage() signal is |
62 | emitted. There are also flush() and reload() signals, which | 62 | emitted. There are also flush() and reload() signals, which |
63 | are emitted when synching begins and ends respectively - upon these | 63 | are emitted when synching begins and ends respectively - upon these |
64 | signals, the application should save and reload any data | 64 | signals, the application should save and reload any data |
65 | files that are involved in synching. Most of these signals will initially | 65 | files that are involved in synching. Most of these signals will initially |
66 | be received and unfiltered through the appMessage() signal. | 66 | be received and unfiltered through the appMessage() signal. |
67 | 67 | ||
68 | This class also provides a set of useful static functions. The | 68 | This class also provides a set of useful static functions. The |
69 | qpeDir() and documentDir() functions return the respective paths. | 69 | qpeDir() and documentDir() functions return the respective paths. |
70 | The grabKeyboard() and ungrabKeyboard() functions are used to | 70 | The grabKeyboard() and ungrabKeyboard() functions are used to |
71 | control whether the application takes control of the device's | 71 | control whether the application takes control of the device's |
72 | physical buttons (e.g. application launch keys). The stylus' mode of | 72 | physical buttons (e.g. application launch keys). The stylus' mode of |
73 | operation is set with setStylusOperation() and retrieved with | 73 | operation is set with setStylusOperation() and retrieved with |
74 | stylusOperation(). There are also setInputMethodHint() and | 74 | stylusOperation(). There are also setInputMethodHint() and |
75 | inputMethodHint() functions. | 75 | inputMethodHint() functions. |
76 | 76 | ||
77 | \ingroup qtopiaemb | 77 | \ingroup qtopiaemb |
78 | */ | 78 | */ |
79 | class QPEApplication : public QApplication | 79 | class QPEApplication : public QApplication |
80 | { | 80 | { |
81 | Q_OBJECT | 81 | Q_OBJECT |
82 | public: | 82 | public: |
83 | QPEApplication( int& argc, char **argv, Type=GuiClient ); | 83 | QPEApplication( int& argc, char **argv, Type=GuiClient ); |
84 | ~QPEApplication(); | 84 | ~QPEApplication(); |
85 | 85 | ||
86 | static QString qpeDir(); | 86 | static QString qpeDir(); |
87 | static QString documentDir(); | 87 | static QString documentDir(); |
88 | void applyStyle(); | 88 | void applyStyle(); |
89 | void reset(); | 89 | void reset(); |
90 | static int defaultRotation(); | 90 | static int defaultRotation(); |
91 | static void setDefaultRotation(int r); | 91 | static void setDefaultRotation(int r); |
92 | static void setCurrentRotation(int r); | 92 | static void setCurrentRotation(int r); |
93 | static void setCurrentMode(int x, int y, int depth ); | 93 | static void setCurrentMode(int x, int y, int depth ); |
94 | static void grabKeyboard(); | 94 | static void grabKeyboard(); |
95 | static void ungrabKeyboard(); | 95 | static void ungrabKeyboard(); |
96 | 96 | ||
97 | enum StylusMode { | 97 | enum StylusMode { |
98 | LeftOnly, | 98 | LeftOnly, |
99 | RightOnHold | 99 | RightOnHold |
100 | // RightOnHoldLeftDelayed, etc. | 100 | // RightOnHoldLeftDelayed, etc. |
101 | }; | 101 | }; |
102 | static void setStylusOperation( QWidget*, StylusMode ); | 102 | static void setStylusOperation( QWidget*, StylusMode ); |
103 | static StylusMode stylusOperation( QWidget* ); | 103 | static StylusMode stylusOperation( QWidget* ); |
104 | 104 | ||
105 | enum InputMethodHint { | 105 | enum InputMethodHint { |
106 | Normal, | 106 | Normal, |
107 | AlwaysOff, | 107 | AlwaysOff, |
108 | AlwaysOn | 108 | AlwaysOn |
109 | }; | 109 | }; |
110 | 110 | ||
111 | enum screenSaverHint { | 111 | enum screenSaverHint { |
112 | Disable = 0, | 112 | Disable = 0, |
113 | DisableLightOff = 1, | 113 | DisableLightOff = 1, |
114 | DisableSuspend = 2, | 114 | DisableSuspend = 2, |
115 | Enable = 100 | 115 | Enable = 100 |
116 | }; | 116 | }; |
117 | 117 | ||
118 | static void setInputMethodHint( QWidget *, InputMethodHint ); | 118 | static void setInputMethodHint( QWidget *, InputMethodHint ); |
119 | static InputMethodHint inputMethodHint( QWidget * ); | 119 | static InputMethodHint inputMethodHint( QWidget * ); |
120 | 120 | ||
121 | void showMainWidget( QWidget*, bool nomax=FALSE ); | 121 | void showMainWidget( QWidget*, bool nomax=FALSE ); |
122 | void showMainDocumentWidget( QWidget*, bool nomax=FALSE ); | 122 | void showMainDocumentWidget( QWidget*, bool nomax=FALSE ); |
123 | static void showDialog( QDialog*, bool nomax=FALSE ); | 123 | static void showDialog( QDialog*, bool nomax=FALSE ); |
124 | static int execDialog( QDialog*, bool nomax=FALSE ); | 124 | static int execDialog( QDialog*, bool nomax=FALSE ); |
125 | static void showWidget( QWidget*, bool nomax=FALSE ); | 125 | static void showWidget( QWidget*, bool nomax=FALSE ); |
126 | /* Merge setTempScreenSaverMode */ | 126 | /* Merge setTempScreenSaverMode */ |
127 | #ifdef QTOPIA_INTERNAL_INITAPP | 127 | #ifdef QTOPIA_INTERNAL_INITAPP |
128 | void initApp( int argv, char **argv ); | 128 | void initApp( int argv, char **argv ); |
129 | #endif | 129 | #endif |
130 | 130 | ||
131 | static void setKeepRunning(); | 131 | static void setKeepRunning(); |
132 | bool keepRunning() const; | 132 | bool keepRunning() const; |
133 | 133 | ||
134 | bool keyboardGrabbed() const; | 134 | bool keyboardGrabbed() const; |
135 | 135 | ||
136 | int exec(); | 136 | int exec(); |
137 | 137 | ||
138 | signals: | 138 | signals: |
139 | void clientMoused(); | 139 | void clientMoused(); |
140 | void timeChanged(); | 140 | void timeChanged(); |
141 | void clockChanged( bool pm ); | 141 | void clockChanged( bool pm ); |
142 | void micChanged( bool muted ); | 142 | void micChanged( bool muted ); |
143 | void volumeChanged( bool muted ); | 143 | void volumeChanged( bool muted ); |
144 | void appMessage( const QCString& msg, const QByteArray& data); | 144 | void appMessage( const QCString& msg, const QByteArray& data); |
145 | void weekChanged( bool startOnMonday ); | 145 | void weekChanged( bool startOnMonday ); |
146 | void dateFormatChanged( DateFormat ); | 146 | void dateFormatChanged( DateFormat ); |
147 | void flush(); | 147 | void flush(); |
148 | void reload(); | 148 | void reload(); |
149 | /* linkChanged signal */ | 149 | /* linkChanged signal */ |
150 | 150 | ||
151 | private slots: | 151 | private slots: |
152 | void systemMessage( const QCString &msg, const QByteArray &data ); | 152 | void systemMessage( const QCString &msg, const QByteArray &data ); |
153 | void pidMessage( const QCString &msg, const QByteArray &data ); | 153 | void pidMessage( const QCString &msg, const QByteArray &data ); |
154 | void removeSenderFromStylusDict(); | 154 | void removeSenderFromStylusDict(); |
155 | void hideOrQuit(); | 155 | void hideOrQuit(); |
156 | 156 | ||
157 | protected: | 157 | protected: |
158 | bool qwsEventFilter( QWSEvent * ); | 158 | bool qwsEventFilter( QWSEvent * ); |
159 | void internalSetStyle( const QString &style ); | 159 | void internalSetStyle( const QString &style ); |
160 | void prepareForTermination(bool willrestart); | 160 | void prepareForTermination(bool willrestart); |
161 | virtual void restart(); | 161 | virtual void restart(); |
162 | virtual void shutdown(); | 162 | virtual void shutdown(); |
163 | bool eventFilter( QObject *, QEvent * ); | 163 | bool eventFilter( QObject *, QEvent * ); |
164 | void timerEvent( QTimerEvent * ); | 164 | void timerEvent( QTimerEvent * ); |
165 | bool raiseAppropriateWindow(); | 165 | bool raiseAppropriateWindow(); |
166 | virtual void tryQuit(); | 166 | virtual void tryQuit(); |
167 | #if QT_VERSION > 233 | 167 | #ifndef OPIE_NO_ERASE_RECT_HACKFIX |
168 | #if QT_VERSION > 233 | ||
168 | virtual void polish ( QWidget * ); // this is actually implemented in qt_override.cpp (!) | 169 | virtual void polish ( QWidget * ); // this is actually implemented in qt_override.cpp (!) |
170 | #endif | ||
169 | #endif | 171 | #endif |
170 | private: | 172 | private: |
171 | #ifndef QT_NO_TRANSLATION | 173 | #ifndef QT_NO_TRANSLATION |
172 | void installTranslation( const QString& baseName ); | 174 | void installTranslation( const QString& baseName ); |
173 | #endif | 175 | #endif |
174 | void mapToDefaultAction( QWSKeyEvent *ke, int defKey ); | 176 | void mapToDefaultAction( QWSKeyEvent *ke, int defKey ); |
175 | void processQCopFile(); | 177 | void processQCopFile(); |
176 | 178 | ||
177 | #if defined(Q_WS_QWS) && !defined(QT_NO_COP) | 179 | #if defined(Q_WS_QWS) && !defined(QT_NO_COP) |
178 | QCopChannel *sysChannel; | 180 | QCopChannel *sysChannel; |
179 | QCopChannel *pidChannel; | 181 | QCopChannel *pidChannel; |
180 | #endif | 182 | #endif |
181 | QPEApplicationData *d; | 183 | QPEApplicationData *d; |
182 | 184 | ||
183 | bool reserved_sh; | 185 | bool reserved_sh; |
184 | 186 | ||
185 | 187 | ||
186 | 188 | ||
187 | }; | 189 | }; |
188 | 190 | ||
189 | inline void QPEApplication::showDialog( QDialog* d, bool nomax ) | 191 | inline void QPEApplication::showDialog( QDialog* d, bool nomax ) |
190 | { | 192 | { |
191 | showWidget( d, nomax ); | 193 | showWidget( d, nomax ); |
192 | } | 194 | } |
193 | 195 | ||
194 | inline int QPEApplication::execDialog( QDialog* d, bool nomax ) | 196 | inline int QPEApplication::execDialog( QDialog* d, bool nomax ) |
195 | { | 197 | { |
196 | showDialog( d, nomax ); | 198 | showDialog( d, nomax ); |
197 | return d->exec(); | 199 | return d->exec(); |
198 | } | 200 | } |
199 | 201 | ||
200 | #ifdef Q_WS_QWS | 202 | #ifdef Q_WS_QWS |
201 | extern Q_EXPORT QRect qt_maxWindowRect; | 203 | extern Q_EXPORT QRect qt_maxWindowRect; |
202 | #endif | 204 | #endif |
203 | 205 | ||
204 | inline void QPEApplication::showWidget( QWidget* wg, bool nomax ) | 206 | inline void QPEApplication::showWidget( QWidget* wg, bool nomax ) |
205 | { | 207 | { |
206 | if ( wg->isVisible() ) | 208 | if ( wg->isVisible() ) |
207 | wg->show(); | 209 | wg->show(); |
208 | else | 210 | else |
209 | { | 211 | { |
210 | if ( !nomax | 212 | if ( !nomax |
211 | && ( qApp->desktop()->width() <= 320 ) ) | 213 | && ( qApp->desktop()->width() <= 320 ) ) |
212 | { | 214 | { |
213 | wg->showMaximized(); | 215 | wg->showMaximized(); |
214 | } else { | 216 | } else { |
215 | #ifdef Q_WS_QWS | 217 | #ifdef Q_WS_QWS |
216 | QSize desk = QSize( qApp->desktop()->width(), qApp->desktop()->height() ); | 218 | QSize desk = QSize( qApp->desktop()->width(), qApp->desktop()->height() ); |
217 | #else | 219 | #else |
218 | QSize desk = QSize( qt_maxWindowRect.width(), qt_maxWindowRect.height() ); | 220 | QSize desk = QSize( qt_maxWindowRect.width(), qt_maxWindowRect.height() ); |
219 | #endif | 221 | #endif |
220 | 222 | ||
221 | QSize sh = wg->sizeHint(); | 223 | QSize sh = wg->sizeHint(); |
222 | int w = QMAX( sh.width(), wg->width() ); | 224 | int w = QMAX( sh.width(), wg->width() ); |
223 | int h = QMAX( sh.height(), wg->height() ); | 225 | int h = QMAX( sh.height(), wg->height() ); |
224 | // desktop widget-frame taskbar | 226 | // desktop widget-frame taskbar |
225 | w = QMIN( w, ( desk.width() - ( wg->frameGeometry().width() - wg->geometry().width() ) - 25 ) ); | 227 | w = QMIN( w, ( desk.width() - ( wg->frameGeometry().width() - wg->geometry().width() ) - 25 ) ); |
226 | h = QMIN( h, ( desk.height() - ( wg->frameGeometry().height() - wg->geometry().height() ) - 25 ) ); | 228 | h = QMIN( h, ( desk.height() - ( wg->frameGeometry().height() - wg->geometry().height() ) - 25 ) ); |
227 | 229 | ||
228 | wg->resize( w, h ); | 230 | wg->resize( w, h ); |
229 | wg->show(); | 231 | wg->show(); |
230 | } | 232 | } |
231 | } | 233 | } |
232 | } | 234 | } |
233 | 235 | ||
234 | enum Transformation { Rot0, Rot90, Rot180, Rot270 }; /* from qgfxtransformed_qws.cpp */ | 236 | enum Transformation { Rot0, Rot90, Rot180, Rot270 }; /* from qgfxtransformed_qws.cpp */ |
235 | 237 | ||
236 | inline int TransToDeg ( Transformation t ) | 238 | inline int TransToDeg ( Transformation t ) |
237 | { | 239 | { |
238 | int d = static_cast<int>( t ); | 240 | int d = static_cast<int>( t ); |
239 | return d * 90; | 241 | return d * 90; |
240 | } | 242 | } |
241 | 243 | ||
242 | inline Transformation DegToTrans ( int d ) | 244 | inline Transformation DegToTrans ( int d ) |
243 | { | 245 | { |
244 | Transformation t = static_cast<Transformation>( d / 90 ); | 246 | Transformation t = static_cast<Transformation>( d / 90 ); |
245 | return t; | 247 | return t; |
246 | } | 248 | } |
247 | 249 | ||
248 | /* | 250 | /* |
249 | * Set current rotation of Opie, and rotation for newly started apps. | 251 | * Set current rotation of Opie, and rotation for newly started apps. |
250 | * Differs from setDefaultRotation in that 1) it rotates currently running apps, | 252 | * Differs from setDefaultRotation in that 1) it rotates currently running apps, |
251 | * and 2) does not set deforient or save orientation to qpe.conf. | 253 | * and 2) does not set deforient or save orientation to qpe.conf. |
252 | */ | 254 | */ |
253 | 255 | ||
254 | inline void QPEApplication::setCurrentRotation( int r ) | 256 | inline void QPEApplication::setCurrentRotation( int r ) |
255 | { | 257 | { |
256 | // setTransformation has been introduced in Qt/Embedded 2.3.4 snapshots | 258 | // setTransformation has been introduced in Qt/Embedded 2.3.4 snapshots |
257 | // for compatibility with the SharpROM use fallback to setDefaultTransformation() | 259 | // for compatibility with the SharpROM use fallback to setDefaultTransformation() |
258 | #if QT_VERSION > 233 | 260 | #if QT_VERSION > 233 |
259 | Transformation e = DegToTrans( r ); | 261 | Transformation e = DegToTrans( r ); |
260 | ::setenv( "QWS_DISPLAY", QString( "Transformed:Rot%1:0" ).arg( r ).latin1(), 1 ); | 262 | ::setenv( "QWS_DISPLAY", QString( "Transformed:Rot%1:0" ).arg( r ).latin1(), 1 ); |
261 | qApp->desktop()->qwsDisplay()->setTransformation( e ); | 263 | qApp->desktop()->qwsDisplay()->setTransformation( e ); |
262 | #else | 264 | #else |
263 | setDefaultRotation( r ); | 265 | setDefaultRotation( r ); |
264 | #endif | 266 | #endif |
265 | } | 267 | } |
266 | 268 | ||
267 | 269 | ||
268 | #endif | 270 | #endif |