author | zecke <zecke> | 2005-03-03 21:01:18 (UTC) |
---|---|---|
committer | zecke <zecke> | 2005-03-03 21:01:18 (UTC) |
commit | 67ddc501f2a52c7f35ca4044fb0094e759a45d76 (patch) (unidiff) | |
tree | 7c863f306e6fb7c1aecfb2f8c1ff4a217bfefa1c | |
parent | 585c9fe0efbc0cf4037a79cac3b22ac38c08fec2 (diff) | |
download | opie-67ddc501f2a52c7f35ca4044fb0094e759a45d76.zip opie-67ddc501f2a52c7f35ca4044fb0094e759a45d76.tar.gz opie-67ddc501f2a52c7f35ca4044fb0094e759a45d76.tar.bz2 |
Start and Restart the QSound-Server
-rw-r--r-- | core/launcher/server.cpp | 22 | ||||
-rw-r--r-- | core/launcher/server.h | 7 |
2 files changed, 28 insertions, 1 deletions
diff --git a/core/launcher/server.cpp b/core/launcher/server.cpp index 15cd686..921b790 100644 --- a/core/launcher/server.cpp +++ b/core/launcher/server.cpp | |||
@@ -1,297 +1,302 @@ | |||
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 | 20 | ||
21 | #include "server.h" | 21 | #include "server.h" |
22 | #include "serverapp.h" | 22 | #include "serverapp.h" |
23 | #include "startmenu.h" | 23 | #include "startmenu.h" |
24 | #include "launcher.h" | 24 | #include "launcher.h" |
25 | #include "transferserver.h" | 25 | #include "transferserver.h" |
26 | #include "qcopbridge.h" | 26 | #include "qcopbridge.h" |
27 | #include "irserver.h" | 27 | #include "irserver.h" |
28 | #include "packageslave.h" | 28 | #include "packageslave.h" |
29 | #include "calibrate.h" | 29 | #include "calibrate.h" |
30 | #include "qrsync.h" | 30 | #include "qrsync.h" |
31 | #include "syncdialog.h" | 31 | #include "syncdialog.h" |
32 | #include "shutdownimpl.h" | 32 | #include "shutdownimpl.h" |
33 | #include "applauncher.h" | 33 | #include "applauncher.h" |
34 | #if 0 | 34 | #if 0 |
35 | #include "suspendmonitor.h" | 35 | #include "suspendmonitor.h" |
36 | #endif | 36 | #endif |
37 | #include "documentlist.h" | 37 | #include "documentlist.h" |
38 | #include "qrr.h" | 38 | #include "qrr.h" |
39 | 39 | ||
40 | /* OPIE */ | 40 | /* OPIE */ |
41 | #include <opie2/odebug.h> | 41 | #include <opie2/odebug.h> |
42 | #include <opie2/odevicebutton.h> | 42 | #include <opie2/odevicebutton.h> |
43 | #include <opie2/odevice.h> | 43 | #include <opie2/odevice.h> |
44 | #include <opie2/oprocess.h> | ||
45 | |||
44 | #include <qtopia/applnk.h> | 46 | #include <qtopia/applnk.h> |
45 | #include <qtopia/private/categories.h> | 47 | #include <qtopia/private/categories.h> |
46 | #include <qtopia/mimetype.h> | 48 | #include <qtopia/mimetype.h> |
47 | #include <qtopia/config.h> | 49 | #include <qtopia/config.h> |
48 | #include <qtopia/resource.h> | 50 | #include <qtopia/resource.h> |
49 | #include <qtopia/version.h> | 51 | #include <qtopia/version.h> |
50 | #include <qtopia/storage.h> | 52 | #include <qtopia/storage.h> |
51 | #include <qtopia/qcopenvelope_qws.h> | 53 | #include <qtopia/qcopenvelope_qws.h> |
52 | #include <qtopia/global.h> | 54 | #include <qtopia/global.h> |
53 | using namespace Opie::Core; | 55 | using namespace Opie::Core; |
54 | 56 | ||
55 | /* QT */ | 57 | /* QT */ |
56 | #include <qmainwindow.h> | 58 | #include <qmainwindow.h> |
57 | #include <qmessagebox.h> | 59 | #include <qmessagebox.h> |
58 | #include <qtimer.h> | 60 | #include <qtimer.h> |
59 | #include <qtextstream.h> | 61 | #include <qtextstream.h> |
60 | #include <qwindowsystem_qws.h> | 62 | #include <qwindowsystem_qws.h> |
61 | #include <qgfx_qws.h> | 63 | #include <qgfx_qws.h> |
62 | 64 | ||
63 | /* STD */ | 65 | /* STD */ |
64 | #include <unistd.h> | 66 | #include <unistd.h> |
65 | #include <stdlib.h> | 67 | #include <stdlib.h> |
66 | 68 | ||
67 | extern QRect qt_maxWindowRect; | 69 | extern QRect qt_maxWindowRect; |
68 | 70 | ||
69 | static QWidget *calibrate(bool) | 71 | static QWidget *calibrate(bool) |
70 | { | 72 | { |
71 | #ifdef Q_WS_QWS | 73 | #ifdef Q_WS_QWS |
72 | Calibrate *c = new Calibrate; | 74 | Calibrate *c = new Calibrate; |
73 | c->show(); | 75 | c->show(); |
74 | return c; | 76 | return c; |
75 | #else | 77 | #else |
76 | return 0; | 78 | return 0; |
77 | #endif | 79 | #endif |
78 | } | 80 | } |
79 | 81 | ||
80 | #define FACTORY(T) \ | 82 | #define FACTORY(T) \ |
81 | static QWidget *new##T( bool maximized ) { \ | 83 | static QWidget *new##T( bool maximized ) { \ |
82 | QWidget *w = new T( 0, 0, QWidget::WDestructiveClose | QWidget::WGroupLeader ); \ | 84 | QWidget *w = new T( 0, 0, QWidget::WDestructiveClose | QWidget::WGroupLeader ); \ |
83 | if ( maximized ) { \ | 85 | if ( maximized ) { \ |
84 | if ( qApp->desktop()->width() <= 350 ) { \ | 86 | if ( qApp->desktop()->width() <= 350 ) { \ |
85 | w->showMaximized(); \ | 87 | w->showMaximized(); \ |
86 | } else { \ | 88 | } else { \ |
87 | w->resize( QSize( 300, 300 ) ); \ | 89 | w->resize( QSize( 300, 300 ) ); \ |
88 | } \ | 90 | } \ |
89 | } \ | 91 | } \ |
90 | w->show(); \ | 92 | w->show(); \ |
91 | return w; \ | 93 | return w; \ |
92 | } | 94 | } |
93 | 95 | ||
94 | 96 | ||
95 | #ifdef SINGLE_APP | 97 | #ifdef SINGLE_APP |
96 | #define APP(a,b,c,d) FACTORY(b) | 98 | #define APP(a,b,c,d) FACTORY(b) |
97 | #include "apps.h" | 99 | #include "apps.h" |
98 | #undef APP | 100 | #undef APP |
99 | #endif // SINGLE_APP | 101 | #endif // SINGLE_APP |
100 | 102 | ||
101 | static Global::Command builtins[] = { | 103 | static Global::Command builtins[] = { |
102 | 104 | ||
103 | #ifdef SINGLE_APP | 105 | #ifdef SINGLE_APP |
104 | #define APP(a,b,c,d) { a, new##b, c, d }, | 106 | #define APP(a,b,c,d) { a, new##b, c, d }, |
105 | #include "apps.h" | 107 | #include "apps.h" |
106 | #undef APP | 108 | #undef APP |
107 | #endif | 109 | #endif |
108 | 110 | ||
109 | /* FIXME defines need to be defined*/ | 111 | /* FIXME defines need to be defined*/ |
110 | #if !defined(OPIE_NO_BUILTIN_CALIBRATE) | 112 | #if !defined(OPIE_NO_BUILTIN_CALIBRATE) |
111 | { "calibrate", calibrate, 1, 0 }, // No tr | 113 | { "calibrate", calibrate, 1, 0 }, // No tr |
112 | #endif | 114 | #endif |
113 | #if !defined(OPIE_NO_BUILTIN_SHUTDOWN) | 115 | #if !defined(OPIE_NO_BUILTIN_SHUTDOWN) |
114 | { "shutdown", Global::shutdown, 1, 0 }, // No tr | 116 | { "shutdown", Global::shutdown, 1, 0 }, // No tr |
115 | // { "run", run, 1, 0 }, // No tr | 117 | // { "run", run, 1, 0 }, // No tr |
116 | #endif | 118 | #endif |
117 | 119 | ||
118 | { 0, calibrate, 0, 0 }, | 120 | { 0, calibrate, 0, 0 }, |
119 | }; | 121 | }; |
120 | 122 | ||
121 | #ifdef QPE_HAVE_DIRECT_ACCESS | 123 | #ifdef QPE_HAVE_DIRECT_ACCESS |
122 | extern void readyDirectAccess(QString cardInfo, QString installLocations); | 124 | extern void readyDirectAccess(QString cardInfo, QString installLocations); |
123 | extern const char *directAccessQueueFile(); | 125 | extern const char *directAccessQueueFile(); |
124 | #endif | 126 | #endif |
125 | 127 | ||
126 | //--------------------------------------------------------------------------- | 128 | //--------------------------------------------------------------------------- |
127 | 129 | ||
128 | 130 | ||
129 | //=========================================================================== | 131 | //=========================================================================== |
130 | 132 | ||
131 | Server::Server() : | 133 | Server::Server() : |
132 | QWidget( 0, 0, WStyle_Tool | WStyle_Customize ), | 134 | QWidget( 0, 0, WStyle_Tool | WStyle_Customize ), |
133 | qcopBridge( 0 ), | 135 | qcopBridge( 0 ), |
134 | transferServer( 0 ), | 136 | transferServer( 0 ), |
135 | packageHandler( 0 ), | 137 | packageHandler( 0 ), |
136 | syncDialog( 0 ) | 138 | syncDialog( 0 ), |
139 | process( 0 ) | ||
137 | { | 140 | { |
138 | Global::setBuiltinCommands(builtins); | 141 | Global::setBuiltinCommands(builtins); |
139 | 142 | ||
140 | tid_xfer = 0; | 143 | tid_xfer = 0; |
141 | /* ### FIXME ### */ | 144 | /* ### FIXME ### */ |
142 | /* tid_today = startTimer(3600*2*1000);*/ | 145 | /* tid_today = startTimer(3600*2*1000);*/ |
143 | last_today_show = QDate::currentDate(); | 146 | last_today_show = QDate::currentDate(); |
144 | 147 | ||
145 | #warning FIXME support TempScreenSaverMode | 148 | #warning FIXME support TempScreenSaverMode |
146 | #if 0 | 149 | #if 0 |
147 | tsmMonitor = new TempScreenSaverMode(); | 150 | tsmMonitor = new TempScreenSaverMode(); |
148 | connect( tsmMonitor, SIGNAL(forceSuspend()), qApp, SIGNAL(power()) ); | 151 | connect( tsmMonitor, SIGNAL(forceSuspend()), qApp, SIGNAL(power()) ); |
149 | #endif | 152 | #endif |
150 | 153 | ||
151 | serverGui = new Launcher; | 154 | serverGui = new Launcher; |
152 | serverGui->createGUI(); | 155 | serverGui->createGUI(); |
153 | 156 | ||
154 | docList = new DocumentList( serverGui ); | 157 | docList = new DocumentList( serverGui ); |
155 | appLauncher = new AppLauncher(this); | 158 | appLauncher = new AppLauncher(this); |
156 | connect(appLauncher, SIGNAL(launched(int,const QString&)), this, SLOT(applicationLaunched(int,const QString&)) ); | 159 | connect(appLauncher, SIGNAL(launched(int,const QString&)), this, SLOT(applicationLaunched(int,const QString&)) ); |
157 | connect(appLauncher, SIGNAL(terminated(int,const QString&)), this, SLOT(applicationTerminated(int,const QString&)) ); | 160 | connect(appLauncher, SIGNAL(terminated(int,const QString&)), this, SLOT(applicationTerminated(int,const QString&)) ); |
158 | connect(appLauncher, SIGNAL(connected(const QString&)), this, SLOT(applicationConnected(const QString&)) ); | 161 | connect(appLauncher, SIGNAL(connected(const QString&)), this, SLOT(applicationConnected(const QString&)) ); |
159 | 162 | ||
160 | storage = new StorageInfo( this ); | 163 | storage = new StorageInfo( this ); |
161 | connect( storage, SIGNAL(disksChanged()), this, SLOT(storageChanged()) ); | 164 | connect( storage, SIGNAL(disksChanged()), this, SLOT(storageChanged()) ); |
162 | 165 | ||
163 | 166 | ||
164 | #ifdef QPE_HAVE_DIRECT_ACCESS | 167 | #ifdef QPE_HAVE_DIRECT_ACCESS |
165 | QCopChannel *desktopChannel = new QCopChannel( "QPE/Desktop", this ); | 168 | QCopChannel *desktopChannel = new QCopChannel( "QPE/Desktop", this ); |
166 | connect( desktopChannel, SIGNAL(received( const QCString &, const QByteArray & )), | 169 | connect( desktopChannel, SIGNAL(received( const QCString &, const QByteArray & )), |
167 | this, SLOT(desktopMessage( const QCString &, const QByteArray & )) ); | 170 | this, SLOT(desktopMessage( const QCString &, const QByteArray & )) ); |
168 | #endif | 171 | #endif |
169 | 172 | ||
173 | soundServerExited(); | ||
174 | |||
170 | // start services | 175 | // start services |
171 | startTransferServer(); | 176 | startTransferServer(); |
172 | (void) new IrServer( this ); | 177 | (void) new IrServer( this ); |
173 | 178 | ||
174 | packageHandler = new PackageHandler( this ); | 179 | packageHandler = new PackageHandler( this ); |
175 | connect(qApp, SIGNAL(activate(const Opie::Core::ODeviceButton*,bool)), | 180 | connect(qApp, SIGNAL(activate(const Opie::Core::ODeviceButton*,bool)), |
176 | this,SLOT(activate(const Opie::Core::ODeviceButton*,bool))); | 181 | this,SLOT(activate(const Opie::Core::ODeviceButton*,bool))); |
177 | 182 | ||
178 | setGeometry( -10, -10, 9, 9 ); | 183 | setGeometry( -10, -10, 9, 9 ); |
179 | 184 | ||
180 | QCopChannel *channel = new QCopChannel("QPE/System", this); | 185 | QCopChannel *channel = new QCopChannel("QPE/System", this); |
181 | connect(channel, SIGNAL(received(const QCString&,const QByteArray&)), | 186 | connect(channel, SIGNAL(received(const QCString&,const QByteArray&)), |
182 | this, SLOT(systemMsg(const QCString&,const QByteArray&)) ); | 187 | this, SLOT(systemMsg(const QCString&,const QByteArray&)) ); |
183 | 188 | ||
184 | QCopChannel *tbChannel = new QCopChannel( "QPE/TaskBar", this ); | 189 | QCopChannel *tbChannel = new QCopChannel( "QPE/TaskBar", this ); |
185 | connect( tbChannel, SIGNAL(received(const QCString&,const QByteArray&)), | 190 | connect( tbChannel, SIGNAL(received(const QCString&,const QByteArray&)), |
186 | this, SLOT(receiveTaskBar(const QCString&,const QByteArray&)) ); | 191 | this, SLOT(receiveTaskBar(const QCString&,const QByteArray&)) ); |
187 | 192 | ||
188 | connect( qApp, SIGNAL(prepareForRestart()), this, SLOT(terminateServers()) ); | 193 | connect( qApp, SIGNAL(prepareForRestart()), this, SLOT(terminateServers()) ); |
189 | connect( qApp, SIGNAL(timeChanged()), this, SLOT(pokeTimeMonitors()) ); | 194 | connect( qApp, SIGNAL(timeChanged()), this, SLOT(pokeTimeMonitors()) ); |
190 | 195 | ||
191 | preloadApps(); | 196 | preloadApps(); |
192 | } | 197 | } |
193 | 198 | ||
194 | void Server::show() | 199 | void Server::show() |
195 | { | 200 | { |
196 | ServerApplication::login(TRUE); | 201 | ServerApplication::login(TRUE); |
197 | QWidget::show(); | 202 | QWidget::show(); |
198 | } | 203 | } |
199 | 204 | ||
200 | Server::~Server() | 205 | Server::~Server() |
201 | { | 206 | { |
202 | serverGui->destroyGUI(); | 207 | serverGui->destroyGUI(); |
203 | delete docList; | 208 | delete docList; |
204 | delete qcopBridge; | 209 | delete qcopBridge; |
205 | delete transferServer; | 210 | delete transferServer; |
206 | delete serverGui; | 211 | delete serverGui; |
207 | #if 0 | 212 | #if 0 |
208 | delete tsmMonitor; | 213 | delete tsmMonitor; |
209 | #endif | 214 | #endif |
210 | } | 215 | } |
211 | 216 | ||
212 | 217 | ||
213 | static bool hasVisibleWindow(const QString& clientname, bool partial) | 218 | static bool hasVisibleWindow(const QString& clientname, bool partial) |
214 | { | 219 | { |
215 | #ifdef QWS | 220 | #ifdef QWS |
216 | const QList<QWSWindow> &list = qwsServer->clientWindows(); | 221 | const QList<QWSWindow> &list = qwsServer->clientWindows(); |
217 | QWSWindow* w; | 222 | QWSWindow* w; |
218 | for (QListIterator<QWSWindow> it(list); (w=it.current()); ++it) { | 223 | for (QListIterator<QWSWindow> it(list); (w=it.current()); ++it) { |
219 | if ( w->client()->identity() == clientname ) { | 224 | if ( w->client()->identity() == clientname ) { |
220 | if ( partial && !w->isFullyObscured() ) | 225 | if ( partial && !w->isFullyObscured() ) |
221 | return TRUE; | 226 | return TRUE; |
222 | if ( !partial && !w->isFullyObscured() && !w->isPartiallyObscured() ) { | 227 | if ( !partial && !w->isFullyObscured() && !w->isPartiallyObscured() ) { |
223 | # if QT_VERSION < 0x030000 | 228 | # if QT_VERSION < 0x030000 |
224 | QRect mwr = qt_screen->mapToDevice(qt_maxWindowRect, | 229 | QRect mwr = qt_screen->mapToDevice(qt_maxWindowRect, |
225 | QSize(qt_screen->width(),qt_screen->height()) ); | 230 | QSize(qt_screen->width(),qt_screen->height()) ); |
226 | # else | 231 | # else |
227 | QRect mwr = qt_maxWindowRect; | 232 | QRect mwr = qt_maxWindowRect; |
228 | # endif | 233 | # endif |
229 | if ( mwr.contains(w->requested().boundingRect()) ) | 234 | if ( mwr.contains(w->requested().boundingRect()) ) |
230 | return TRUE; | 235 | return TRUE; |
231 | } | 236 | } |
232 | } | 237 | } |
233 | } | 238 | } |
234 | #endif | 239 | #endif |
235 | return FALSE; | 240 | return FALSE; |
236 | } | 241 | } |
237 | 242 | ||
238 | void Server::activate(const ODeviceButton* button, bool held) | 243 | void Server::activate(const ODeviceButton* button, bool held) |
239 | { | 244 | { |
240 | Global::terminateBuiltin("calibrate"); // No tr | 245 | Global::terminateBuiltin("calibrate"); // No tr |
241 | OQCopMessage om; | 246 | OQCopMessage om; |
242 | if ( held ) { | 247 | if ( held ) { |
243 | om = button->heldAction(); | 248 | om = button->heldAction(); |
244 | } else { | 249 | } else { |
245 | om = button->pressedAction(); | 250 | om = button->pressedAction(); |
246 | } | 251 | } |
247 | 252 | ||
248 | if ( om.channel() != "ignore" ) | 253 | if ( om.channel() != "ignore" ) |
249 | om.send(); | 254 | om.send(); |
250 | 255 | ||
251 | // A button with no action defined, will return a null ServiceRequest. Don't attempt | 256 | // A button with no action defined, will return a null ServiceRequest. Don't attempt |
252 | // to send/do anything with this as it will crash | 257 | // to send/do anything with this as it will crash |
253 | /* ### FIXME */ | 258 | /* ### FIXME */ |
254 | #if 0 | 259 | #if 0 |
255 | if ( !sr.isNull() ) { | 260 | if ( !sr.isNull() ) { |
256 | QString app = sr.app(); | 261 | QString app = sr.app(); |
257 | bool vis = hasVisibleWindow(app, app != "qpe"); | 262 | bool vis = hasVisibleWindow(app, app != "qpe"); |
258 | if ( sr.message() == "raise()" && vis ) { | 263 | if ( sr.message() == "raise()" && vis ) { |
259 | sr.setMessage("nextView()"); | 264 | sr.setMessage("nextView()"); |
260 | } else { | 265 | } else { |
261 | // "back door" | 266 | // "back door" |
262 | sr << (int)vis; | 267 | sr << (int)vis; |
263 | } | 268 | } |
264 | 269 | ||
265 | sr.send(); | 270 | sr.send(); |
266 | } | 271 | } |
267 | #endif | 272 | #endif |
268 | } | 273 | } |
269 | 274 | ||
270 | 275 | ||
271 | #ifdef Q_WS_QWS | 276 | #ifdef Q_WS_QWS |
272 | 277 | ||
273 | typedef struct KeyOverride { | 278 | typedef struct KeyOverride { |
274 | ushort scan_code; | 279 | ushort scan_code; |
275 | QWSServer::KeyMap map; | 280 | QWSServer::KeyMap map; |
276 | }; | 281 | }; |
277 | 282 | ||
278 | 283 | ||
279 | static const KeyOverride jp109keys[] = { | 284 | static const KeyOverride jp109keys[] = { |
280 | { 0x03, { Qt::Key_2, '2' , 0x22 , 0xffff } }, | 285 | { 0x03, { Qt::Key_2, '2' , 0x22 , 0xffff } }, |
281 | { 0x07, { Qt::Key_6, '6' , '&' , 0xffff } }, | 286 | { 0x07, { Qt::Key_6, '6' , '&' , 0xffff } }, |
282 | { 0x08, { Qt::Key_7, '7' , '\'' , 0xffff } }, | 287 | { 0x08, { Qt::Key_7, '7' , '\'' , 0xffff } }, |
283 | { 0x09, { Qt::Key_8, '8' , '(' , 0xffff } }, | 288 | { 0x09, { Qt::Key_8, '8' , '(' , 0xffff } }, |
284 | { 0x0a, { Qt::Key_9, '9' , ')' , 0xffff } }, | 289 | { 0x0a, { Qt::Key_9, '9' , ')' , 0xffff } }, |
285 | { 0x0b, { Qt::Key_0, '0' , 0xffff, 0xffff } }, | 290 | { 0x0b, { Qt::Key_0, '0' , 0xffff, 0xffff } }, |
286 | { 0x0c, { Qt::Key_Minus, '-' , '=' , 0xffff } }, | 291 | { 0x0c, { Qt::Key_Minus, '-' , '=' , 0xffff } }, |
287 | { 0x0d, { Qt::Key_AsciiCircum, '^' , '~' , '^'-64 } }, | 292 | { 0x0d, { Qt::Key_AsciiCircum, '^' , '~' , '^'-64 } }, |
288 | { 0x1a, { Qt::Key_At, '@' , '`' , 0xffff } }, | 293 | { 0x1a, { Qt::Key_At, '@' , '`' , 0xffff } }, |
289 | { 0x1b, { Qt::Key_BraceLeft, '[' , '{' , '['-64 } }, | 294 | { 0x1b, { Qt::Key_BraceLeft, '[' , '{' , '['-64 } }, |
290 | { 0x27, { Qt::Key_Semicolon, ';' , '+' , 0xffff } }, | 295 | { 0x27, { Qt::Key_Semicolon, ';' , '+' , 0xffff } }, |
291 | { 0x28, { Qt::Key_Colon, ':' , '*' , 0xffff } }, | 296 | { 0x28, { Qt::Key_Colon, ':' , '*' , 0xffff } }, |
292 | { 0x29, { Qt::Key_Zenkaku_Hankaku, 0xffff, 0xffff, 0xffff } }, | 297 | { 0x29, { Qt::Key_Zenkaku_Hankaku, 0xffff, 0xffff, 0xffff } }, |
293 | { 0x2b, { Qt::Key_BraceRight, ']' , '}' , ']'-64 } }, | 298 | { 0x2b, { Qt::Key_BraceRight, ']' , '}' , ']'-64 } }, |
294 | { 0x70, { Qt::Key_Hiragana_Katakana, 0xffff, 0xffff, 0xffff } }, | 299 | { 0x70, { Qt::Key_Hiragana_Katakana, 0xffff, 0xffff, 0xffff } }, |
295 | { 0x73, { Qt::Key_Backslash, '\\' , '_' , 0xffff } }, | 300 | { 0x73, { Qt::Key_Backslash, '\\' , '_' , 0xffff } }, |
296 | { 0x79, { Qt::Key_Henkan, 0xffff, 0xffff, 0xffff } }, | 301 | { 0x79, { Qt::Key_Henkan, 0xffff, 0xffff, 0xffff } }, |
297 | { 0x7b, { Qt::Key_Muhenkan, 0xffff, 0xffff, 0xffff } }, | 302 | { 0x7b, { Qt::Key_Muhenkan, 0xffff, 0xffff, 0xffff } }, |
@@ -859,128 +864,143 @@ void Server::prepareDirectAccess() | |||
859 | void Server::desktopMessage( const QCString &message, const QByteArray &data ) | 864 | void Server::desktopMessage( const QCString &message, const QByteArray &data ) |
860 | { | 865 | { |
861 | QDataStream stream( data, IO_ReadOnly ); | 866 | QDataStream stream( data, IO_ReadOnly ); |
862 | if ( message == "flushDone(QString)" ) { | 867 | if ( message == "flushDone(QString)" ) { |
863 | QString app; | 868 | QString app; |
864 | stream >> app; | 869 | stream >> app; |
865 | qDebug( "flushDone from %s", app.latin1() ); | 870 | qDebug( "flushDone from %s", app.latin1() ); |
866 | if ( --pendingFlushes == 0 ) { | 871 | if ( --pendingFlushes == 0 ) { |
867 | qDebug( "pendingFlushes == 0, all the apps responded" ); | 872 | qDebug( "pendingFlushes == 0, all the apps responded" ); |
868 | runDirectAccess(); | 873 | runDirectAccess(); |
869 | } | 874 | } |
870 | } else if ( message == "installStarted(QString)" ) { | 875 | } else if ( message == "installStarted(QString)" ) { |
871 | QString package; | 876 | QString package; |
872 | stream >> package; | 877 | stream >> package; |
873 | qDebug( "\tInstall Started for package %s", package.latin1() ); | 878 | qDebug( "\tInstall Started for package %s", package.latin1() ); |
874 | } else if ( message == "installStep(QString)" ) { | 879 | } else if ( message == "installStep(QString)" ) { |
875 | QString step; | 880 | QString step; |
876 | stream >> step; | 881 | stream >> step; |
877 | qDebug( "\tInstall Step %s", step.latin1() ); | 882 | qDebug( "\tInstall Step %s", step.latin1() ); |
878 | } else if ( message == "installDone(QString)" ) { | 883 | } else if ( message == "installDone(QString)" ) { |
879 | QString package; | 884 | QString package; |
880 | stream >> package; | 885 | stream >> package; |
881 | qDebug( "\tInstall Finished for package %s", package.latin1() ); | 886 | qDebug( "\tInstall Finished for package %s", package.latin1() ); |
882 | } else if ( message == "installFailed(QString,int,QString)" ) { | 887 | } else if ( message == "installFailed(QString,int,QString)" ) { |
883 | QString package, error; | 888 | QString package, error; |
884 | int status; | 889 | int status; |
885 | stream >> package >> status >> error; | 890 | stream >> package >> status >> error; |
886 | qDebug( "\tInstall Failed for package %s with error code %d and error message %s", | 891 | qDebug( "\tInstall Failed for package %s with error code %d and error message %s", |
887 | package.latin1(), status, error.latin1() ); | 892 | package.latin1(), status, error.latin1() ); |
888 | } else if ( message == "removeStarted(QString)" ) { | 893 | } else if ( message == "removeStarted(QString)" ) { |
889 | QString package; | 894 | QString package; |
890 | stream >> package; | 895 | stream >> package; |
891 | qDebug( "\tRemove Started for package %s", package.latin1() ); | 896 | qDebug( "\tRemove Started for package %s", package.latin1() ); |
892 | } else if ( message == "removeDone(QString)" ) { | 897 | } else if ( message == "removeDone(QString)" ) { |
893 | QString package; | 898 | QString package; |
894 | stream >> package; | 899 | stream >> package; |
895 | qDebug( "\tRemove Finished for package %s", package.latin1() ); | 900 | qDebug( "\tRemove Finished for package %s", package.latin1() ); |
896 | } else if ( message == "removeFailed(QString)" ) { | 901 | } else if ( message == "removeFailed(QString)" ) { |
897 | QString package; | 902 | QString package; |
898 | stream >> package; | 903 | stream >> package; |
899 | qDebug( "\tRemove Failed for package %s", package.latin1() ); | 904 | qDebug( "\tRemove Failed for package %s", package.latin1() ); |
900 | } | 905 | } |
901 | 906 | ||
902 | if ( qrr && qrr->waitingForMessages ) | 907 | if ( qrr && qrr->waitingForMessages ) |
903 | qrr->desktopMessage( message, data ); | 908 | qrr->desktopMessage( message, data ); |
904 | } | 909 | } |
905 | 910 | ||
906 | 911 | ||
907 | // This is only connected if QPE_HAVE_DIRECT_ACCESS is defined | 912 | // This is only connected if QPE_HAVE_DIRECT_ACCESS is defined |
908 | void Server::runDirectAccess() | 913 | void Server::runDirectAccess() |
909 | { | 914 | { |
910 | #ifdef QPE_HAVE_DIRECT_ACCESS | 915 | #ifdef QPE_HAVE_DIRECT_ACCESS |
911 | // The timer must have fired after all the apps responded | 916 | // The timer must have fired after all the apps responded |
912 | // with flushDone(). Just ignore it. | 917 | // with flushDone(). Just ignore it. |
913 | if ( directAccessRun ) | 918 | if ( directAccessRun ) |
914 | return; | 919 | return; |
915 | 920 | ||
916 | directAccessRun = TRUE; | 921 | directAccessRun = TRUE; |
917 | ::readyDirectAccess(cardInfoString(), installLocationsString()); | 922 | ::readyDirectAccess(cardInfoString(), installLocationsString()); |
918 | #endif | 923 | #endif |
919 | } | 924 | } |
920 | 925 | ||
921 | // This is only called if QPE_HAVE_DIRECT_ACCESS is defined | 926 | // This is only called if QPE_HAVE_DIRECT_ACCESS is defined |
922 | void Server::postDirectAccess() | 927 | void Server::postDirectAccess() |
923 | { | 928 | { |
924 | #ifdef QPE_HAVE_DIRECT_ACCESS | 929 | #ifdef QPE_HAVE_DIRECT_ACCESS |
925 | qDebug( "Server::postDirectAccess()" ); | 930 | qDebug( "Server::postDirectAccess()" ); |
926 | 931 | ||
927 | // Categories may have changed | 932 | // Categories may have changed |
928 | QCopEnvelope e1( "QPE/System", "categoriesChanged()" ); | 933 | QCopEnvelope e1( "QPE/System", "categoriesChanged()" ); |
929 | // Apps need to reload their data | 934 | // Apps need to reload their data |
930 | QCopEnvelope e2( "QPE/System", "reload()" ); | 935 | QCopEnvelope e2( "QPE/System", "reload()" ); |
931 | // Reload DocLinks | 936 | // Reload DocLinks |
932 | docList->storageChanged(); | 937 | docList->storageChanged(); |
933 | // Restart the PDA server stuff | 938 | // Restart the PDA server stuff |
934 | startTransferServer(); | 939 | startTransferServer(); |
935 | 940 | ||
936 | // restart the mtab monitor | 941 | // restart the mtab monitor |
937 | #ifndef QT_NO_COP | 942 | #ifndef QT_NO_COP |
938 | { | 943 | { |
939 | QCopEnvelope e( "QPE/Stabmon", "restartMonitor()" ); | 944 | QCopEnvelope e( "QPE/Stabmon", "restartMonitor()" ); |
940 | } | 945 | } |
941 | #endif | 946 | #endif |
942 | 947 | ||
943 | // Process queued requests | 948 | // Process queued requests |
944 | const char *queueFile = ::directAccessQueueFile(); | 949 | const char *queueFile = ::directAccessQueueFile(); |
945 | QFile *file = new QFile( queueFile ); | 950 | QFile *file = new QFile( queueFile ); |
946 | if ( !file->exists() ) { | 951 | if ( !file->exists() ) { |
947 | delete file; | 952 | delete file; |
948 | // Get rid of the dialog | 953 | // Get rid of the dialog |
949 | if ( syncDialog ) { | 954 | if ( syncDialog ) { |
950 | delete syncDialog; | 955 | delete syncDialog; |
951 | syncDialog = 0; | 956 | syncDialog = 0; |
952 | } | 957 | } |
953 | #warning FIXME support TempScreenSaverMode | 958 | #warning FIXME support TempScreenSaverMode |
954 | #if 0 | 959 | #if 0 |
955 | QPEApplication::setTempScreenSaverMode(QPEApplication::Enable); | 960 | QPEApplication::setTempScreenSaverMode(QPEApplication::Enable); |
956 | #endif | 961 | #endif |
957 | } else { | 962 | } else { |
958 | qrr = new QueuedRequestRunner( file, syncDialog ); | 963 | qrr = new QueuedRequestRunner( file, syncDialog ); |
959 | connect( qrr, SIGNAL(finished()), | 964 | connect( qrr, SIGNAL(finished()), |
960 | this, SLOT(finishedQueuedRequests()) ); | 965 | this, SLOT(finishedQueuedRequests()) ); |
961 | QTimer::singleShot( 100, qrr, SLOT(process()) ); | 966 | QTimer::singleShot( 100, qrr, SLOT(process()) ); |
962 | // qrr will remove the sync dialog later | 967 | // qrr will remove the sync dialog later |
963 | } | 968 | } |
964 | #endif | 969 | #endif |
965 | } | 970 | } |
966 | 971 | ||
967 | void Server::finishedQueuedRequests() | 972 | void Server::finishedQueuedRequests() |
968 | { | 973 | { |
969 | if ( qrr->readyToDelete ) { | 974 | if ( qrr->readyToDelete ) { |
970 | delete qrr; | 975 | delete qrr; |
971 | qrr = 0; | 976 | qrr = 0; |
972 | // Get rid of the dialog | 977 | // Get rid of the dialog |
973 | if ( syncDialog ) { | 978 | if ( syncDialog ) { |
974 | delete syncDialog; | 979 | delete syncDialog; |
975 | syncDialog = 0; | 980 | syncDialog = 0; |
976 | } | 981 | } |
977 | #warning FIXME support TempScreenSaverMode | 982 | #warning FIXME support TempScreenSaverMode |
978 | #if 0 | 983 | #if 0 |
979 | QPEApplication::setTempScreenSaverMode(QPEApplication::Enable); | 984 | QPEApplication::setTempScreenSaverMode(QPEApplication::Enable); |
980 | #endif | 985 | #endif |
981 | } else { | 986 | } else { |
982 | qrr->readyToDelete = TRUE; | 987 | qrr->readyToDelete = TRUE; |
983 | QTimer::singleShot( 0, this, SLOT(finishedQueuedRequests()) ); | 988 | QTimer::singleShot( 0, this, SLOT(finishedQueuedRequests()) ); |
984 | } | 989 | } |
985 | } | 990 | } |
986 | 991 | ||
992 | void Server::startSoundServer() { | ||
993 | if ( !process ) { | ||
994 | process = new Opie::Core::OProcess( this ); | ||
995 | connect(process, SIGNAL(processExited(Opie::Core::OProcess*)), | ||
996 | SLOT(soundServerExited())); | ||
997 | } | ||
998 | |||
999 | process->clearArguments(); | ||
1000 | *process << QPEApplication::qpeDir() + "bin/qss"; | ||
1001 | process->start(); | ||
1002 | } | ||
1003 | |||
1004 | void Server::soundServerExited() { | ||
1005 | QTimer::singleShot(5000, this, SLOT(startSoundServer())); | ||
1006 | } | ||
diff --git a/core/launcher/server.h b/core/launcher/server.h index d71d68a..5b2f995 100644 --- a/core/launcher/server.h +++ b/core/launcher/server.h | |||
@@ -1,111 +1,118 @@ | |||
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 DESKTOP_H | 20 | #ifndef DESKTOP_H |
21 | #define DESKTOP_H | 21 | #define DESKTOP_H |
22 | 22 | ||
23 | #include <qwidget.h> | 23 | #include <qwidget.h> |
24 | #include <qdatetime.h> | 24 | #include <qdatetime.h> |
25 | 25 | ||
26 | //#include "qcopbridge.h" | 26 | //#include "qcopbridge.h" |
27 | 27 | ||
28 | class QCopBridge; | 28 | class QCopBridge; |
29 | class QHostAddress; | 29 | class QHostAddress; |
30 | class TransferServer; | 30 | class TransferServer; |
31 | class PackageHandler; | 31 | class PackageHandler; |
32 | class ServiceRequest; | 32 | class ServiceRequest; |
33 | class TempScreenSaverMonitor; | 33 | class TempScreenSaverMonitor; |
34 | class AppLauncher; | 34 | class AppLauncher; |
35 | class AppLnkSet; | 35 | class AppLnkSet; |
36 | class StorageInfo; | 36 | class StorageInfo; |
37 | class SyncDialog; | 37 | class SyncDialog; |
38 | class DocumentList; | 38 | class DocumentList; |
39 | class ServerInterface; | 39 | class ServerInterface; |
40 | class QueuedRequestRunner; | 40 | class QueuedRequestRunner; |
41 | namespace Opie { | 41 | namespace Opie { |
42 | namespace Core { | 42 | namespace Core { |
43 | class ODeviceButton; | 43 | class ODeviceButton; |
44 | class OProcess; | ||
44 | } | 45 | } |
45 | } | 46 | } |
46 | 47 | ||
47 | class Server : public QWidget { | 48 | class Server : public QWidget { |
48 | Q_OBJECT | 49 | Q_OBJECT |
49 | public: | 50 | public: |
50 | Server(); | 51 | Server(); |
51 | ~Server(); | 52 | ~Server(); |
52 | 53 | ||
53 | static bool mkdir(const QString &path); | 54 | static bool mkdir(const QString &path); |
54 | 55 | ||
55 | void show(); | 56 | void show(); |
56 | 57 | ||
57 | static bool setKeyboardLayout( const QString &kb ); | 58 | static bool setKeyboardLayout( const QString &kb ); |
58 | 59 | ||
59 | public slots: | 60 | public slots: |
60 | void systemMsg(const QCString &, const QByteArray &); | 61 | void systemMsg(const QCString &, const QByteArray &); |
61 | void receiveTaskBar(const QCString &msg, const QByteArray &data); | 62 | void receiveTaskBar(const QCString &msg, const QByteArray &data); |
62 | void terminateServers(); | 63 | void terminateServers(); |
63 | void pokeTimeMonitors(); | 64 | void pokeTimeMonitors(); |
64 | 65 | ||
65 | private slots: | 66 | private slots: |
67 | //@{ | ||
68 | void startSoundServer(); | ||
69 | void soundServerExited(); | ||
70 | //@} | ||
66 | void activate(const Opie::Core::ODeviceButton*,bool); | 71 | void activate(const Opie::Core::ODeviceButton*,bool); |
67 | void syncConnectionClosed( const QHostAddress & ); | 72 | void syncConnectionClosed( const QHostAddress & ); |
68 | void applicationLaunched(int pid, const QString &app); | 73 | void applicationLaunched(int pid, const QString &app); |
69 | void applicationTerminated(int pid, const QString &app); | 74 | void applicationTerminated(int pid, const QString &app); |
70 | void applicationConnected(const QString &app); | 75 | void applicationConnected(const QString &app); |
71 | void storageChanged(); | 76 | void storageChanged(); |
72 | void cancelSync(); | 77 | void cancelSync(); |
73 | void desktopMessage( const QCString &, const QByteArray & ); | 78 | void desktopMessage( const QCString &, const QByteArray & ); |
74 | void runDirectAccess(); | 79 | void runDirectAccess(); |
75 | void finishedQueuedRequests(); | 80 | void finishedQueuedRequests(); |
76 | 81 | ||
77 | protected: | 82 | protected: |
78 | void styleChange( QStyle & ); | 83 | void styleChange( QStyle & ); |
79 | void timerEvent( QTimerEvent *e ); | 84 | void timerEvent( QTimerEvent *e ); |
80 | 85 | ||
81 | private: | 86 | private: |
82 | void layout(); | 87 | void layout(); |
83 | void startTransferServer(); | 88 | void startTransferServer(); |
84 | void preloadApps(); | 89 | void preloadApps(); |
85 | void prepareDirectAccess(); | 90 | void prepareDirectAccess(); |
86 | void postDirectAccess(); | 91 | void postDirectAccess(); |
87 | QString cardInfoString(); | 92 | QString cardInfoString(); |
88 | QString installLocationsString(); | 93 | QString installLocationsString(); |
89 | 94 | ||
90 | QCopBridge *qcopBridge; | 95 | QCopBridge *qcopBridge; |
91 | TransferServer *transferServer; | 96 | TransferServer *transferServer; |
92 | PackageHandler *packageHandler; | 97 | PackageHandler *packageHandler; |
93 | QDate last_today_show; | 98 | QDate last_today_show; |
94 | int tid_xfer; | 99 | int tid_xfer; |
95 | /* ### FIXME two below### */ | 100 | /* ### FIXME two below### */ |
96 | // int tid_today; | 101 | // int tid_today; |
97 | // TempScreenSaverMonitor *tsmMonitor; | 102 | // TempScreenSaverMonitor *tsmMonitor; |
98 | StorageInfo *storage; | 103 | StorageInfo *storage; |
99 | SyncDialog *syncDialog; | 104 | SyncDialog *syncDialog; |
100 | AppLauncher *appLauncher; | 105 | AppLauncher *appLauncher; |
101 | DocumentList *docList; | 106 | DocumentList *docList; |
102 | ServerInterface *serverGui; | 107 | ServerInterface *serverGui; |
103 | 108 | ||
104 | int pendingFlushes; | 109 | int pendingFlushes; |
105 | bool directAccessRun; | 110 | bool directAccessRun; |
106 | QueuedRequestRunner *qrr; | 111 | QueuedRequestRunner *qrr; |
112 | |||
113 | Opie::Core::OProcess *process; | ||
107 | }; | 114 | }; |
108 | 115 | ||
109 | 116 | ||
110 | #endif // DESKTOP_H | 117 | #endif // DESKTOP_H |
111 | 118 | ||