-rw-r--r-- | pwmanager/pwmanager/pwminit.cpp | 2 |
1 files changed, 0 insertions, 2 deletions
diff --git a/pwmanager/pwmanager/pwminit.cpp b/pwmanager/pwmanager/pwminit.cpp index b0a78c2..2f1aa4e 100644 --- a/pwmanager/pwmanager/pwminit.cpp +++ b/pwmanager/pwmanager/pwminit.cpp | |||
@@ -1,377 +1,375 @@ | |||
1 | /*************************************************************************** | 1 | /*************************************************************************** |
2 | * * | 2 | * * |
3 | * copyright (C) 2004 by Michael Buesch * | 3 | * copyright (C) 2004 by Michael Buesch * |
4 | * email: mbuesch@freenet.de * | 4 | * email: mbuesch@freenet.de * |
5 | * * | 5 | * * |
6 | * This program is free software; you can redistribute it and/or modify * | 6 | * This program is free software; you can redistribute it and/or modify * |
7 | * it under the terms of the GNU General Public License version 2 * | 7 | * it under the terms of the GNU General Public License version 2 * |
8 | * as published by the Free Software Foundation. * | 8 | * as published by the Free Software Foundation. * |
9 | * * | 9 | * * |
10 | ***************************************************************************/ | 10 | ***************************************************************************/ |
11 | 11 | ||
12 | /*************************************************************************** | 12 | /*************************************************************************** |
13 | * copyright (C) 2004 by Ulf Schenk | 13 | * copyright (C) 2004 by Ulf Schenk |
14 | * This file is originaly based on version 1.0.1 of pwmanager | 14 | * This file is originaly based on version 1.0.1 of pwmanager |
15 | * and was modified to run on embedded devices that run microkde | 15 | * and was modified to run on embedded devices that run microkde |
16 | * | 16 | * |
17 | * $Id$ | 17 | * $Id$ |
18 | **************************************************************************/ | 18 | **************************************************************************/ |
19 | 19 | ||
20 | #include "pwminit.h" | 20 | #include "pwminit.h" |
21 | #include "configuration.h" | 21 | #include "configuration.h" |
22 | #include "randomizer.h" | 22 | #include "randomizer.h" |
23 | 23 | ||
24 | #ifndef PWM_EMBEDDED | 24 | #ifndef PWM_EMBEDDED |
25 | #include "selftest.h" | 25 | #include "selftest.h" |
26 | #endif | 26 | #endif |
27 | 27 | ||
28 | #include "pwm.h" | 28 | #include "pwm.h" |
29 | #include "pwmexception.h" | 29 | #include "pwmexception.h" |
30 | #include "pwmtray.h" | 30 | #include "pwmtray.h" |
31 | #include "pwmdoc.h" | 31 | #include "pwmdoc.h" |
32 | 32 | ||
33 | #ifdef CONFIG_KWALLETIF | 33 | #ifdef CONFIG_KWALLETIF |
34 | # include "kwalletemu.h" | 34 | # include "kwalletemu.h" |
35 | #endif // CONFIG_KWALLETIF | 35 | #endif // CONFIG_KWALLETIF |
36 | #ifdef CONFIG_KEYCARD | 36 | #ifdef CONFIG_KEYCARD |
37 | # include "pwmkeycard.h" | 37 | # include "pwmkeycard.h" |
38 | #endif // CONFIG_KEYCARD | 38 | #endif // CONFIG_KEYCARD |
39 | 39 | ||
40 | #include <qmessagebox.h> | 40 | #include <qmessagebox.h> |
41 | 41 | ||
42 | #include <kmessagebox.h> | 42 | #include <kmessagebox.h> |
43 | #ifndef PWM_EMBEDDED | 43 | #ifndef PWM_EMBEDDED |
44 | #include <kcmdlineargs.h> | 44 | #include <kcmdlineargs.h> |
45 | #include <kwin.h> | 45 | #include <kwin.h> |
46 | #include <dcopclient.h> | 46 | #include <dcopclient.h> |
47 | #endif | 47 | #endif |
48 | 48 | ||
49 | #include <kapplication.h> | 49 | #include <kapplication.h> |
50 | #include <kiconloader.h> | 50 | #include <kiconloader.h> |
51 | 51 | ||
52 | #include <signal.h> | 52 | #include <signal.h> |
53 | 53 | ||
54 | static PwMInit *sig_init_pointer; | 54 | static PwMInit *sig_init_pointer; |
55 | static NOREGPARM void sig_handler(int signum) | 55 | static NOREGPARM void sig_handler(int signum) |
56 | { | 56 | { |
57 | switch (signum) { | 57 | switch (signum) { |
58 | case SIGINT: | 58 | case SIGINT: |
59 | case SIGTERM: | 59 | case SIGTERM: |
60 | sig_init_pointer->shutdownApp(20 + signum); | 60 | sig_init_pointer->shutdownApp(20 + signum); |
61 | break; | 61 | break; |
62 | default: | 62 | default: |
63 | printDebug(string("unhandled signal ") | 63 | printDebug(string("unhandled signal ") |
64 | + tostr(signum)); | 64 | + tostr(signum)); |
65 | } | 65 | } |
66 | } | 66 | } |
67 | 67 | ||
68 | 68 | ||
69 | 69 | ||
70 | 70 | ||
71 | PwMInit::PwMInit(PwMApplication *_app) | 71 | PwMInit::PwMInit(PwMApplication *_app) |
72 | : runStatus (unknown) | 72 | : runStatus (unknown) |
73 | , _curWidget (0) | 73 | , _curWidget (0) |
74 | , _dcopClient (0) | 74 | , _dcopClient (0) |
75 | , _kwalletEmu (0) | 75 | , _kwalletEmu (0) |
76 | , _keycard (0) | 76 | , _keycard (0) |
77 | , _tray (0) | 77 | , _tray (0) |
78 | { | 78 | { |
79 | sig_init_pointer = this; | 79 | sig_init_pointer = this; |
80 | app = _app; | 80 | app = _app; |
81 | } | 81 | } |
82 | 82 | ||
83 | PwMInit::~PwMInit() | 83 | PwMInit::~PwMInit() |
84 | { | 84 | { |
85 | #ifndef PWM_EMBEDDED | 85 | #ifndef PWM_EMBEDDED |
86 | SelfTest::cancel(); | 86 | SelfTest::cancel(); |
87 | // close all open mainwnds | 87 | // close all open mainwnds |
88 | QValueList<PwM *>::iterator i = _mainWndList.begin(), | 88 | QValueList<PwM *>::iterator i = _mainWndList.begin(), |
89 | end = _mainWndList.end(); | 89 | end = _mainWndList.end(); |
90 | 90 | ||
91 | #else | 91 | #else |
92 | // close all open mainwnds | 92 | // close all open mainwnds |
93 | QValueList<PwM *>::Iterator i = _mainWndList.begin(), | 93 | QValueList<PwM *>::Iterator i = _mainWndList.begin(), |
94 | end = _mainWndList.end(); | 94 | end = _mainWndList.end(); |
95 | #endif | 95 | #endif |
96 | while (i != end) { | 96 | while (i != end) { |
97 | disconnect(*i, SIGNAL(closed(PwM *)), | 97 | disconnect(*i, SIGNAL(closed(PwM *)), |
98 | this, SLOT(mainWndClosed(PwM *))); | 98 | this, SLOT(mainWndClosed(PwM *))); |
99 | delete *i; | 99 | delete *i; |
100 | ++i; | 100 | ++i; |
101 | } | 101 | } |
102 | _mainWndList.clear(); | 102 | _mainWndList.clear(); |
103 | // close all remaining open documents | 103 | // close all remaining open documents |
104 | PwMDocList *_dl = PwMDoc::getOpenDocList(); | 104 | PwMDocList *_dl = PwMDoc::getOpenDocList(); |
105 | vector<PwMDocList::listItem> dl = *(_dl->getList()); | 105 | vector<PwMDocList::listItem> dl = *(_dl->getList()); |
106 | vector<PwMDocList::listItem>::iterator i2 = dl.begin(), | 106 | vector<PwMDocList::listItem>::iterator i2 = dl.begin(), |
107 | end2 = dl.end(); | 107 | end2 = dl.end(); |
108 | while (i2 != end2) { | 108 | while (i2 != end2) { |
109 | delete (*i2).doc; | 109 | delete (*i2).doc; |
110 | ++i2; | 110 | ++i2; |
111 | } | 111 | } |
112 | 112 | ||
113 | #ifdef CONFIG_KWALLETIF | 113 | #ifdef CONFIG_KWALLETIF |
114 | delete_ifnot_null(_kwalletEmu); | 114 | delete_ifnot_null(_kwalletEmu); |
115 | #endif // CONFIG_KWALLETIF | 115 | #endif // CONFIG_KWALLETIF |
116 | #ifdef CONFIG_KEYCARD | 116 | #ifdef CONFIG_KEYCARD |
117 | delete_ifnot_null(_keycard); | 117 | delete_ifnot_null(_keycard); |
118 | #endif // CONFIG_KEYCARD | 118 | #endif // CONFIG_KEYCARD |
119 | delete_ifnot_null(_tray); | 119 | delete_ifnot_null(_tray); |
120 | 120 | ||
121 | Randomizer::cleanup(); | 121 | Randomizer::cleanup(); |
122 | Configuration::cleanup(); | 122 | Configuration::cleanup(); |
123 | } | 123 | } |
124 | 124 | ||
125 | void PwMInit::initializeApp() | 125 | void PwMInit::initializeApp() |
126 | { | 126 | { |
127 | PWM_ASSERT(runStatus == unknown); | 127 | PWM_ASSERT(runStatus == unknown); |
128 | runStatus = init; | 128 | runStatus = init; |
129 | initPosixSignalHandler(); | 129 | initPosixSignalHandler(); |
130 | Randomizer::init(); | 130 | Randomizer::init(); |
131 | Configuration::init(); | 131 | Configuration::init(); |
132 | initDCOP(); | 132 | initDCOP(); |
133 | initKWalletEmu(); | 133 | initKWalletEmu(); |
134 | initKeycard(); | 134 | initKeycard(); |
135 | initTray(); | 135 | initTray(); |
136 | handleCmdLineArgs(); | 136 | handleCmdLineArgs(); |
137 | 137 | ||
138 | bool openDeeplocked = false; | 138 | bool openDeeplocked = false; |
139 | if (conf()->confGlobAutostartDeepLocked() || | 139 | if (conf()->confGlobAutostartDeepLocked() || |
140 | savedCmd.open_deeplocked) | 140 | savedCmd.open_deeplocked) |
141 | openDeeplocked = true; | 141 | openDeeplocked = true; |
142 | if (conf()->confWndAutoMinimizeOnStart() || | 142 | if (conf()->confWndAutoMinimizeOnStart() || |
143 | savedCmd.minToTray) { | 143 | savedCmd.minToTray) { |
144 | PwMDoc *newDoc = createDoc(); | 144 | PwMDoc *newDoc = createDoc(); |
145 | if (!newDoc->openDocUi(newDoc, | 145 | if (!newDoc->openDocUi(newDoc, |
146 | conf()->confGlobAutoStart(), | 146 | conf()->confGlobAutoStart(), |
147 | openDeeplocked)) { | 147 | openDeeplocked)) { |
148 | delete newDoc; | 148 | delete newDoc; |
149 | } | 149 | } |
150 | } else { | 150 | } else { |
151 | createMainWnd(conf()->confGlobAutoStart(), | 151 | createMainWnd(conf()->confGlobAutoStart(), |
152 | openDeeplocked, | 152 | openDeeplocked, |
153 | true, | 153 | true, |
154 | 0, | 154 | 0, |
155 | savedCmd.minimized); | 155 | savedCmd.minimized); |
156 | } | 156 | } |
157 | 157 | ||
158 | runStatus = running; | 158 | runStatus = running; |
159 | } | 159 | } |
160 | 160 | ||
161 | void PwMInit::shutdownApp(int exitStatus) | 161 | void PwMInit::shutdownApp(int exitStatus) |
162 | { | 162 | { |
163 | printDebug(string("PwMInit::shutdownApp(") | 163 | printDebug(string("PwMInit::shutdownApp(") |
164 | + tostr(exitStatus) + ") called."); | 164 | + tostr(exitStatus) + ") called."); |
165 | PWM_ASSERT((runStatus == running) || (runStatus == init)); | 165 | PWM_ASSERT((runStatus == running) || (runStatus == init)); |
166 | runStatus = shutdown; | 166 | runStatus = shutdown; |
167 | QApplication::exit(exitStatus); | 167 | QApplication::exit(exitStatus); |
168 | /* The destructor of PwMInit is called when control | 168 | /* The destructor of PwMInit is called when control |
169 | * leaves main() | 169 | * leaves main() |
170 | */ | 170 | */ |
171 | } | 171 | } |
172 | 172 | ||
173 | void PwMInit::initPosixSignalHandler() | 173 | void PwMInit::initPosixSignalHandler() |
174 | { | 174 | { |
175 | signal(SIGINT, sig_handler); | 175 | signal(SIGINT, sig_handler); |
176 | signal(SIGTERM, sig_handler); | 176 | signal(SIGTERM, sig_handler); |
177 | } | 177 | } |
178 | 178 | ||
179 | void PwMInit::initDCOP() | 179 | void PwMInit::initDCOP() |
180 | { | 180 | { |
181 | #ifndef PWM_EMBEDDED | 181 | #ifndef PWM_EMBEDDED |
182 | _dcopClient = app->dcopClient(); | 182 | _dcopClient = app->dcopClient(); |
183 | _dcopClient->setNotifications(true); | 183 | _dcopClient->setNotifications(true); |
184 | #else | ||
185 | qDebug("PwMInit::initDCOP() has to be implemented"); | ||
186 | #endif | 184 | #endif |
187 | 185 | ||
188 | } | 186 | } |
189 | 187 | ||
190 | void PwMInit::initKWalletEmu(bool forceDisable, bool forceReload) | 188 | void PwMInit::initKWalletEmu(bool forceDisable, bool forceReload) |
191 | { | 189 | { |
192 | #ifdef CONFIG_KWALLETIF | 190 | #ifdef CONFIG_KWALLETIF |
193 | if (!conf()->confGlobKwalletEmu() || | 191 | if (!conf()->confGlobKwalletEmu() || |
194 | forceDisable) { | 192 | forceDisable) { |
195 | delete_ifnot_null(_kwalletEmu); | 193 | delete_ifnot_null(_kwalletEmu); |
196 | return; | 194 | return; |
197 | } | 195 | } |
198 | try { | 196 | try { |
199 | if (_kwalletEmu && forceReload) | 197 | if (_kwalletEmu && forceReload) |
200 | delete_and_null(_kwalletEmu); | 198 | delete_and_null(_kwalletEmu); |
201 | if (!_kwalletEmu) | 199 | if (!_kwalletEmu) |
202 | _kwalletEmu = new KWalletEmu(this); | 200 | _kwalletEmu = new KWalletEmu(this); |
203 | } catch (PwMException e) { | 201 | } catch (PwMException e) { |
204 | string errMsg("initializing KWallet emulation failed. ID: "); | 202 | string errMsg("initializing KWallet emulation failed. ID: "); |
205 | errMsg += tostr(static_cast<int>(e.getId())); | 203 | errMsg += tostr(static_cast<int>(e.getId())); |
206 | errMsg += " err-message: "; | 204 | errMsg += " err-message: "; |
207 | errMsg += e.getMessage(); | 205 | errMsg += e.getMessage(); |
208 | printWarn(errMsg); | 206 | printWarn(errMsg); |
209 | return; | 207 | return; |
210 | } | 208 | } |
211 | #else // CONFIG_KWALLETIF | 209 | #else // CONFIG_KWALLETIF |
212 | PARAM_UNUSED(forceDisable); | 210 | PARAM_UNUSED(forceDisable); |
213 | PARAM_UNUSED(forceReload); | 211 | PARAM_UNUSED(forceReload); |
214 | #endif // CONFIG_KWALLETIF | 212 | #endif // CONFIG_KWALLETIF |
215 | } | 213 | } |
216 | 214 | ||
217 | void PwMInit::initKeycard() | 215 | void PwMInit::initKeycard() |
218 | { | 216 | { |
219 | #ifdef CONFIG_KEYCARD | 217 | #ifdef CONFIG_KEYCARD |
220 | PWM_ASSERT(!_keycard); | 218 | PWM_ASSERT(!_keycard); |
221 | _keycard = new PwMKeyCard(this); | 219 | _keycard = new PwMKeyCard(this); |
222 | #endif // CONFIG_KEYCARD | 220 | #endif // CONFIG_KEYCARD |
223 | } | 221 | } |
224 | 222 | ||
225 | void PwMInit::initTray() | 223 | void PwMInit::initTray() |
226 | { | 224 | { |
227 | #ifdef PWM_EMBEDDED | 225 | #ifdef PWM_EMBEDDED |
228 | //US ENH : embedded version does not support a tray | 226 | //US ENH : embedded version does not support a tray |
229 | return; | 227 | return; |
230 | #endif | 228 | #endif |
231 | 229 | ||
232 | if (!conf()->confGlobTray()) { | 230 | if (!conf()->confGlobTray()) { |
233 | if (!_tray) | 231 | if (!_tray) |
234 | return; | 232 | return; |
235 | _tray->hide(); | 233 | _tray->hide(); |
236 | delete_and_null(_tray); | 234 | delete_and_null(_tray); |
237 | return; | 235 | return; |
238 | } | 236 | } |
239 | if (_tray) | 237 | if (_tray) |
240 | return; | 238 | return; |
241 | _tray = new PwMTray(this); | 239 | _tray = new PwMTray(this); |
242 | connect(_tray, SIGNAL(quitSelected()), | 240 | connect(_tray, SIGNAL(quitSelected()), |
243 | this, SLOT(removeTrayAndQuit())); | 241 | this, SLOT(removeTrayAndQuit())); |
244 | connect(_tray, SIGNAL(closed(PwMTray *)), | 242 | connect(_tray, SIGNAL(closed(PwMTray *)), |
245 | this, SLOT(trayIconClosed(PwMTray *))); | 243 | this, SLOT(trayIconClosed(PwMTray *))); |
246 | KIconLoader icons; | 244 | KIconLoader icons; |
247 | #ifndef PWM_EMBEDDED | 245 | #ifndef PWM_EMBEDDED |
248 | _tray->setPixmap(icons.loadIcon(PACKAGE_NAME, KIcon::Small)); | 246 | _tray->setPixmap(icons.loadIcon(PACKAGE_NAME, KIcon::Small)); |
249 | #endif | 247 | #endif |
250 | _tray->show(); | 248 | _tray->show(); |
251 | // connect the signals of all open documents. | 249 | // connect the signals of all open documents. |
252 | const vector<PwMDocList::listItem> *dl = PwMDoc::getOpenDocList()->getList(); | 250 | const vector<PwMDocList::listItem> *dl = PwMDoc::getOpenDocList()->getList(); |
253 | vector<PwMDocList::listItem>::const_iterator i = dl->begin(), | 251 | vector<PwMDocList::listItem>::const_iterator i = dl->begin(), |
254 | end = dl->end(); | 252 | end = dl->end(); |
255 | while (i != end) { | 253 | while (i != end) { |
256 | _tray->connectDocToTray((*i).doc); | 254 | _tray->connectDocToTray((*i).doc); |
257 | ++i; | 255 | ++i; |
258 | } | 256 | } |
259 | } | 257 | } |
260 | 258 | ||
261 | void PwMInit::removeTrayAndQuit() | 259 | void PwMInit::removeTrayAndQuit() |
262 | { | 260 | { |
263 | PWM_ASSERT(_tray); | 261 | PWM_ASSERT(_tray); |
264 | // _tray is deleted in ~PwMInit | 262 | // _tray is deleted in ~PwMInit |
265 | shutdownApp(0); | 263 | shutdownApp(0); |
266 | } | 264 | } |
267 | 265 | ||
268 | PwM * PwMInit::createMainWnd(const QString &loadFile, | 266 | PwM * PwMInit::createMainWnd(const QString &loadFile, |
269 | bool loadFileDeepLocked, | 267 | bool loadFileDeepLocked, |
270 | bool virginity, | 268 | bool virginity, |
271 | PwMDoc *doc, | 269 | PwMDoc *doc, |
272 | bool minimized) | 270 | bool minimized) |
273 | { | 271 | { |
274 | PwM *newWnd; | 272 | PwM *newWnd; |
275 | if (!doc) | 273 | if (!doc) |
276 | doc = createDoc(); | 274 | doc = createDoc(); |
277 | newWnd = new PwM(this, doc, virginity); | 275 | newWnd = new PwM(this, doc, virginity); |
278 | #ifndef PWM_EMBEDDED | 276 | #ifndef PWM_EMBEDDED |
279 | _mainWndList.push_back(newWnd); | 277 | _mainWndList.push_back(newWnd); |
280 | #else | 278 | #else |
281 | _mainWndList.append(newWnd); | 279 | _mainWndList.append(newWnd); |
282 | #endif | 280 | #endif |
283 | connect(newWnd, SIGNAL(closed(PwM *)), | 281 | connect(newWnd, SIGNAL(closed(PwM *)), |
284 | this, SLOT(mainWndClosed(PwM *))); | 282 | this, SLOT(mainWndClosed(PwM *))); |
285 | connect(newWnd, SIGNAL(gotFocus(PwM *)), | 283 | connect(newWnd, SIGNAL(gotFocus(PwM *)), |
286 | this, SLOT(setCurWidget(PwM *))); | 284 | this, SLOT(setCurWidget(PwM *))); |
287 | connect(newWnd, SIGNAL(lostFocus(PwM *)), | 285 | connect(newWnd, SIGNAL(lostFocus(PwM *)), |
288 | this, SLOT(resetCurWidget())); | 286 | this, SLOT(resetCurWidget())); |
289 | 287 | ||
290 | //US ENH | 288 | //US ENH |
291 | #ifndef PWM_EMBEDDED | 289 | #ifndef PWM_EMBEDDED |
292 | if (minimized) | 290 | if (minimized) |
293 | newWnd->showMinimized(); | 291 | newWnd->showMinimized(); |
294 | else | 292 | else |
295 | newWnd->show(); | 293 | newWnd->show(); |
296 | 294 | ||
297 | #else //PWM_EMBEDDED | 295 | #else //PWM_EMBEDDED |
298 | 296 | ||
299 | #ifndef DESKTOP_VERSION | 297 | #ifndef DESKTOP_VERSION |
300 | app->showMainWidget( newWnd ); | 298 | app->showMainWidget( newWnd ); |
301 | #else //DESKTOP_VERSION | 299 | #else //DESKTOP_VERSION |
302 | app->setMainWidget( newWnd ); | 300 | app->setMainWidget( newWnd ); |
303 | newWnd->resize (640, 480 ); | 301 | newWnd->resize (640, 480 ); |
304 | newWnd->show(); | 302 | newWnd->show(); |
305 | #endif //DESKTOP_VERSION | 303 | #endif //DESKTOP_VERSION |
306 | 304 | ||
307 | #endif //PWM_EMBEDDED | 305 | #endif //PWM_EMBEDDED |
308 | 306 | ||
309 | if (loadFile != QString::null && | 307 | if (loadFile != QString::null && |
310 | loadFile != "") { | 308 | loadFile != "") { |
311 | newWnd->openDoc(loadFile, loadFileDeepLocked); | 309 | newWnd->openDoc(loadFile, loadFileDeepLocked); |
312 | } | 310 | } |
313 | return newWnd; | 311 | return newWnd; |
314 | } | 312 | } |
315 | 313 | ||
316 | PwMDoc * PwMInit::createDoc() | 314 | PwMDoc * PwMInit::createDoc() |
317 | { | 315 | { |
318 | PwMDoc *doc = new PwMDoc(this); | 316 | PwMDoc *doc = new PwMDoc(this); |
319 | #ifdef CONFIG_KEYCARD | 317 | #ifdef CONFIG_KEYCARD |
320 | doc->setPwMKeyCard(keycard()); | 318 | doc->setPwMKeyCard(keycard()); |
321 | #endif | 319 | #endif |
322 | #ifdef CONFIG_KWALLETIF | 320 | #ifdef CONFIG_KWALLETIF |
323 | if (kwalletEmu()) | 321 | if (kwalletEmu()) |
324 | kwalletEmu()->connectDocSignals(doc); | 322 | kwalletEmu()->connectDocSignals(doc); |
325 | #endif | 323 | #endif |
326 | 324 | ||
327 | if (_tray) | 325 | if (_tray) |
328 | _tray->connectDocToTray(doc); | 326 | _tray->connectDocToTray(doc); |
329 | 327 | ||
330 | return doc; | 328 | return doc; |
331 | 329 | ||
332 | } | 330 | } |
333 | 331 | ||
334 | void PwMInit::mainWndClosed(PwM *wnd) | 332 | void PwMInit::mainWndClosed(PwM *wnd) |
335 | { | 333 | { |
336 | bool doMinimizeToTray = false; | 334 | bool doMinimizeToTray = false; |
337 | bool doDeleteDoc = false; | 335 | bool doDeleteDoc = false; |
338 | #ifndef PWM_EMBEDDED | 336 | #ifndef PWM_EMBEDDED |
339 | dcopClient()->suspend(); | 337 | dcopClient()->suspend(); |
340 | dcopClient()->setAcceptCalls(false); | 338 | dcopClient()->setAcceptCalls(false); |
341 | #endif | 339 | #endif |
342 | again: | 340 | again: |
343 | 341 | ||
344 | if (wnd->isForceMinimizeToTray()) { | 342 | if (wnd->isForceMinimizeToTray()) { |
345 | if (unlikely(!_tray)) { | 343 | if (unlikely(!_tray)) { |
346 | /* This should not happen! If we set forceMinimizeToTray , | 344 | /* This should not happen! If we set forceMinimizeToTray , |
347 | * we must be sure that _tray exists. | 345 | * we must be sure that _tray exists. |
348 | */ | 346 | */ |
349 | BUG(); | 347 | BUG(); |
350 | wnd->setForceMinimizeToTray(false); | 348 | wnd->setForceMinimizeToTray(false); |
351 | goto again; | 349 | goto again; |
352 | } | 350 | } |
353 | doMinimizeToTray = true; | 351 | doMinimizeToTray = true; |
354 | } else { | 352 | } else { |
355 | // Ask to minimize to tray. If not, delete doc. | 353 | // Ask to minimize to tray. If not, delete doc. |
356 | if (_tray && | 354 | if (_tray && |
357 | runStatus != shutdown && | 355 | runStatus != shutdown && |
358 | !wnd->isForceQuit() && | 356 | !wnd->isForceQuit() && |
359 | !wnd->curDoc()->isDeleted()) { | 357 | !wnd->curDoc()->isDeleted()) { |
360 | if (conf()->confWndClose()) | 358 | if (conf()->confWndClose()) |
361 | doDeleteDoc = true; | 359 | doDeleteDoc = true; |
362 | else | 360 | else |
363 | doMinimizeToTray = true; | 361 | doMinimizeToTray = true; |
364 | } else { | 362 | } else { |
365 | doDeleteDoc = true; | 363 | doDeleteDoc = true; |
366 | } | 364 | } |
367 | } | 365 | } |
368 | 366 | ||
369 | if (doMinimizeToTray) { | 367 | if (doMinimizeToTray) { |
370 | 368 | ||
371 | PWM_ASSERT(_tray); | 369 | PWM_ASSERT(_tray); |
372 | int mmlock = conf()->confGlobMinimizeLock(); | 370 | int mmlock = conf()->confGlobMinimizeLock(); |
373 | switch (mmlock) { | 371 | switch (mmlock) { |
374 | case 0: // don't lock anything | 372 | case 0: // don't lock anything |
375 | break; | 373 | break; |
376 | case 1: // normal lock | 374 | case 1: // normal lock |
377 | wnd->curDoc()->lockAll(true); | 375 | wnd->curDoc()->lockAll(true); |