~vcs-imports/bibletime/trunk

« back to all changes in this revision

Viewing changes to bibletime/bibletime_init.cpp

  • Committer: mgruner
  • Date: 2007-05-08 15:51:07 UTC
  • Revision ID: vcs-imports@canonical.com-20070508155107-0rj7jdmm5ivf8685
-imported source and data files to new svn module
-this is where KDE4-based development will take place

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*********
 
2
*
 
3
* This file is part of BibleTime's source code, http://www.bibletime.info/.
 
4
*
 
5
* Copyright 1999-2006 by the BibleTime developers.
 
6
* The BibleTime source code is licensed under the GNU General Public License version 2.0.
 
7
*
 
8
**********/
 
9
 
 
10
 
 
11
 
 
12
//BibleTime includes
 
13
#include "bibletime.h"
 
14
 
 
15
#include "backend/btstringmgr.h"
 
16
#include "backend/cswordbackend.h"
 
17
 
 
18
#include "frontend/mainindex/cmainindex.h"
 
19
#include "frontend/cprofilemgr.h"
 
20
#include "frontend/cprofile.h"
 
21
#include "frontend/cmdiarea.h"
 
22
#include "frontend/kstartuplogo.h"
 
23
#include "frontend/cswordsetupdialog.h"
 
24
#include "frontend/cprinter.h"
 
25
#include "frontend/cmanageindiceswidget.h"
 
26
 
 
27
#include "backend/clanguagemgr.h"
 
28
 
 
29
 
 
30
#include "config.h"
 
31
#include "frontend/cbtconfig.h"
 
32
#include "frontend/cinfodisplay.h"
 
33
 
 
34
#include "util/cpointers.h"
 
35
#include "util/cresmgr.h"
 
36
 
 
37
//system includes
 
38
#include <stdlib.h>
 
39
 
 
40
//QT includes
 
41
#include <qpopupmenu.h>
 
42
#include <qsplitter.h>
 
43
#include <qguardedptr.h>
 
44
#include <qlistview.h>
 
45
#include <qlayout.h>
 
46
#include <qlabel.h>
 
47
#include <qvbox.h>
 
48
 
 
49
//KDE includes
 
50
#include <kaboutdata.h>
 
51
#include <kaccel.h>
 
52
#include <kaction.h>
 
53
#include <kapplication.h>
 
54
#include <kconfigbase.h>
 
55
#include <kdeversion.h>
 
56
#include <kglobal.h>
 
57
#include <khelpmenu.h>
 
58
#include <kiconloader.h>
 
59
#include <kmenubar.h>
 
60
#include <kstddirs.h>
 
61
#include <kstdaction.h>
 
62
#include <ktoolbar.h>
 
63
#include <klocale.h>
 
64
#include <kpopupmenu.h>
 
65
#include <kdeversion.h>
 
66
 
 
67
//Sword includes
 
68
#include <swlog.h>
 
69
 
 
70
using namespace InfoDisplay;
 
71
using namespace Profile;
 
72
 
 
73
/**Initializes the view of this widget*/
 
74
void BibleTime::initView() {
 
75
        KStartupLogo::setStatusMessage(i18n("Creating BibleTime's GUI") + QString("..."));
 
76
 
 
77
        m_mainSplitter = new QSplitter(this, "mainsplitter");
 
78
        m_mainSplitter->setChildrenCollapsible(false);
 
79
        setCentralWidget(m_mainSplitter);
 
80
 
 
81
        m_leftPaneSplitter = new QSplitter(Qt::Vertical, m_mainSplitter);
 
82
        m_leftPaneSplitter->setChildrenCollapsible(false);
 
83
        
 
84
        QVBox* vBox = new QVBox(m_leftPaneSplitter);
 
85
        vBox->setMinimumSize(100, 100);
 
86
        
 
87
        QLabel* bookshelfLabel = new QLabel( i18n("Bookshelf"), vBox );
 
88
        bookshelfLabel->setMargin(5);
 
89
 
 
90
        m_mainIndex = new CMainIndex(vBox);
 
91
 
 
92
        m_infoDisplay = new CInfoDisplay(m_leftPaneSplitter);
 
93
        CPointers::setInfoDisplay(m_infoDisplay);
 
94
 
 
95
        m_mdi = new CMDIArea(m_mainSplitter, "mdiarea" );
 
96
        m_mdi->setMinimumSize(100, 100);
 
97
        m_mdi->setFocusPolicy(ClickFocus);
 
98
 
 
99
        m_helpMenu = new KHelpMenu(this, KGlobal::instance()->aboutData(), true, actionCollection());
 
100
}
 
101
 
 
102
/** Initializes the action objects of the GUI */
 
103
void BibleTime::initActions() {
 
104
        KStartupLogo::setStatusMessage(i18n("Initializing menu- and toolbars") + QString("..."));
 
105
        KAction* action = 0;
 
106
 
 
107
        action = KStdAction::quit(kapp, SLOT( quit() ), actionCollection());
 
108
        action->setToolTip( CResMgr::mainMenu::file::quit::tooltip );
 
109
 
 
110
        #if KDE_VERSION_MINOR < 1
 
111
 
 
112
        action->plugAccel( accel() );
 
113
        #endif
 
114
 
 
115
        action = new KAction(i18n("Search in &open work(s)"),
 
116
                                                 CResMgr::mainMenu::mainIndex::search::icon,
 
117
                                                 CResMgr::mainMenu::mainIndex::search::accel,
 
118
                                                 this, SLOT(slotSearchModules()), actionCollection(),
 
119
                                                 CResMgr::mainMenu::mainIndex::search::actionName
 
120
                                                );
 
121
        action->setToolTip( CResMgr::mainMenu::mainIndex::search::tooltip );
 
122
 
 
123
        #if KDE_VERSION_MINOR < 1
 
124
 
 
125
        action->plugAccel( accel() );
 
126
        #endif
 
127
 
 
128
        action = new KAction(i18n("Search in standard &Bible"),
 
129
                                                 CResMgr::mainMenu::mainIndex::searchdefaultbible::icon,
 
130
                                                 CResMgr::mainMenu::mainIndex::searchdefaultbible::accel,
 
131
                                                 this, SLOT(slotSearchDefaultBible()), actionCollection(),
 
132
                                                 CResMgr::mainMenu::mainIndex::searchdefaultbible::actionName
 
133
                                                );
 
134
        action->setToolTip( CResMgr::mainMenu::mainIndex::searchdefaultbible::tooltip );
 
135
 
 
136
        #if KDE_VERSION_MINOR < 1
 
137
 
 
138
        action->plugAccel( accel() );
 
139
        #endif
 
140
 
 
141
        m_viewToolbar_action = KStdAction::showToolbar(this, SLOT( slotToggleToolbar() ), actionCollection());
 
142
        m_viewToolbar_action->setToolTip( CResMgr::mainMenu::view::showToolBar::tooltip );
 
143
 
 
144
        #if KDE_VERSION_MINOR < 1
 
145
 
 
146
        m_viewToolbar_action->plugAccel( accel() );
 
147
        #endif
 
148
 
 
149
 
 
150
        m_viewMainIndex_action = new KToggleAction(i18n("&Show bookshelf"),
 
151
                                                         CResMgr::mainMenu::view::showMainIndex::icon,
 
152
                                                         CResMgr::mainMenu::view::showMainIndex::accel,
 
153
                                                         this, SLOT(slotToggleMainIndex()), actionCollection(),
 
154
                                                         CResMgr::mainMenu::view::showMainIndex::actionName);
 
155
        m_viewMainIndex_action->setToolTip( CResMgr::mainMenu::view::showMainIndex::tooltip );
 
156
 
 
157
        #if KDE_VERSION_MINOR < 1
 
158
 
 
159
        m_viewMainIndex_action->plugAccel( accel() );
 
160
        #endif
 
161
 
 
162
        m_viewInfoDisplay_action = new KToggleAction(i18n("Show &mag"),
 
163
                                                           CResMgr::mainMenu::view::showInfoDisplay::icon,
 
164
                                                           CResMgr::mainMenu::view::showInfoDisplay::accel,
 
165
                                                           this, SLOT(slotToggleInfoDisplay()), actionCollection(),
 
166
                                                           CResMgr::mainMenu::view::showInfoDisplay::actionName);
 
167
        m_viewMainIndex_action->setToolTip( CResMgr::mainMenu::view::showInfoDisplay::tooltip );
 
168
 
 
169
        #if KDE_VERSION_MINOR < 1
 
170
 
 
171
        m_viewInfoDisplay_action->plugAccel( accel() );
 
172
        #endif
 
173
 
 
174
        action = KStdAction::preferences(this, SLOT( slotSettingsOptions() ), actionCollection());
 
175
        action->setToolTip( CResMgr::mainMenu::settings::optionsDialog::tooltip );
 
176
 
 
177
        #if KDE_VERSION_MINOR < 1
 
178
 
 
179
        action->plugAccel( accel() );
 
180
        #endif
 
181
 
 
182
        action = new KAction(i18n("Bookshelf &Manager"),
 
183
                                                 CResMgr::mainMenu::settings::swordSetupDialog::icon,
 
184
                                                 CResMgr::mainMenu::settings::swordSetupDialog::accel,
 
185
                                                 this, SLOT( slotSwordSetupDialog() ), actionCollection(),
 
186
                                                 CResMgr::mainMenu::settings::swordSetupDialog::actionName
 
187
                                                );
 
188
        action->setToolTip( CResMgr::mainMenu::settings::swordSetupDialog::tooltip );
 
189
        #if KDE_VERSION_MINOR < 1
 
190
 
 
191
        action->plugAccel( accel() );
 
192
        #endif
 
193
 
 
194
        //delete help action if KDE created it
 
195
        if ( actionCollection()->action( KStdAction::stdName(KStdAction::ConfigureToolbars) )) {
 
196
                actionCollection()->remove
 
197
                (actionCollection()->action(
 
198
                         KStdAction::stdName(KStdAction::ConfigureToolbars))
 
199
                );
 
200
        }
 
201
        action = KStdAction::configureToolbars(this, SLOT( slotSettingsToolbar() ), actionCollection());
 
202
        action->setToolTip( CResMgr::mainMenu::settings::editToolBar::tooltip );
 
203
        #if KDE_VERSION_MINOR < 1
 
204
 
 
205
        action->plugAccel( accel() );
 
206
        #endif
 
207
 
 
208
        m_windowArrangementMode_action = new KActionMenu(i18n("&Arrangement mode"),
 
209
                                                         CResMgr::mainMenu::window::arrangementMode::icon,
 
210
                                                         actionCollection(),
 
211
                                                         CResMgr::mainMenu::window::arrangementMode::actionName);
 
212
        m_windowArrangementMode_action->setDelayed( false );
 
213
 
 
214
        m_windowManualMode_action = new KToggleAction(i18n("&Manual mode"),
 
215
                                                                CResMgr::mainMenu::window::arrangementMode::manual::icon,
 
216
                                                                CResMgr::mainMenu::window::arrangementMode::manual::accel,
 
217
                                                                this, SLOT(slotManualArrangementMode()), actionCollection(),
 
218
                                                                CResMgr::mainMenu::window::arrangementMode::manual::actionName
 
219
                                                                                                 );
 
220
        m_windowManualMode_action->setToolTip(
 
221
                CResMgr::mainMenu::window::arrangementMode::manual::tooltip
 
222
        );
 
223
        #if KDE_VERSION_MINOR < 1
 
224
 
 
225
        m_windowManualMode_action->plugAccel( accel() );
 
226
        #endif
 
227
 
 
228
        m_windowArrangementMode_action->insert( m_windowManualMode_action );
 
229
 
 
230
 
 
231
        m_windowAutoTileVertical_action = new KToggleAction(i18n("Auto-tile &vertically"),
 
232
                                                                          CResMgr::mainMenu::window::arrangementMode::autoTileVertical::icon,
 
233
                                                                          CResMgr::mainMenu::window::arrangementMode::autoTileVertical::accel,
 
234
                                                                          this, SLOT(slotAutoTileVertical()), actionCollection(),
 
235
                                                                          CResMgr::mainMenu::window::arrangementMode::autoTileVertical::actionName
 
236
                                                                                                           );
 
237
        m_windowAutoTileVertical_action->setToolTip(
 
238
                CResMgr::mainMenu::window::arrangementMode::autoTileVertical::tooltip
 
239
        );
 
240
        #if KDE_VERSION_MINOR < 1
 
241
 
 
242
        m_windowAutoTileVertical_action->plugAccel( accel() );
 
243
        #endif
 
244
 
 
245
        m_windowArrangementMode_action->insert( m_windowAutoTileVertical_action );
 
246
 
 
247
 
 
248
        m_windowAutoTileHorizontal_action = new KToggleAction(i18n("Auto-tile &horizontally"),
 
249
                                                                                CResMgr::mainMenu::window::arrangementMode::autoTileHorizontal::icon,
 
250
                                                                                CResMgr::mainMenu::window::arrangementMode::autoTileHorizontal::accel,
 
251
                                                                                this, SLOT(slotAutoTileHorizontal()), actionCollection(),
 
252
                                                                                CResMgr::mainMenu::window::arrangementMode::autoTileHorizontal::actionName
 
253
                                                                                                                 );
 
254
        m_windowAutoTileHorizontal_action->setToolTip(
 
255
                CResMgr::mainMenu::window::arrangementMode::autoTileHorizontal::tooltip
 
256
        );
 
257
        #if KDE_VERSION_MINOR < 1
 
258
 
 
259
        m_windowAutoTileHorizontal_action->plugAccel( accel() );
 
260
        #endif
 
261
 
 
262
        m_windowArrangementMode_action->insert( m_windowAutoTileHorizontal_action );
 
263
 
 
264
 
 
265
        m_windowAutoCascade_action  = new KToggleAction(i18n("Auto-&cascade"),
 
266
                                                                  CResMgr::mainMenu::window::arrangementMode::autoCascade::icon,
 
267
                                                                  CResMgr::mainMenu::window::arrangementMode::autoCascade::accel,
 
268
                                                                  this, SLOT(slotAutoCascade()), actionCollection(),
 
269
                                                                  CResMgr::mainMenu::window::arrangementMode::autoCascade::actionName
 
270
                                                                                                   );
 
271
        m_windowAutoCascade_action->setToolTip(
 
272
                CResMgr::mainMenu::window::arrangementMode::autoCascade::tooltip
 
273
        );
 
274
        #if KDE_VERSION_MINOR < 1
 
275
        //   qWarning("Plug accel");
 
276
        m_windowAutoCascade_action->plugAccel( accel() );
 
277
        #endif
 
278
 
 
279
        m_windowArrangementMode_action->insert( m_windowAutoCascade_action );
 
280
 
 
281
        m_windowCascade_action = new KAction(i18n("&Cascade"),
 
282
                                                                                 CResMgr::mainMenu::window::cascade::icon,
 
283
                                                                                 CResMgr::mainMenu::window::cascade::accel,
 
284
                                                                                 this, SLOT(slotCascade()), actionCollection(),
 
285
                                                                                 CResMgr::mainMenu::window::cascade::actionName
 
286
                                                                                );
 
287
        m_windowCascade_action->setToolTip( CResMgr::mainMenu::window::cascade::tooltip );
 
288
 
 
289
        #if KDE_VERSION_MINOR < 1
 
290
 
 
291
        m_windowCascade_action->plugAccel( accel() );
 
292
        #endif
 
293
 
 
294
 
 
295
        m_windowTileVertical_action = new KAction(i18n("Tile &vertically"),
 
296
                                                                  CResMgr::mainMenu::window::tileVertical::icon,
 
297
                                                                  CResMgr::mainMenu::window::tileVertical::accel,
 
298
                                                                  this, SLOT(slotTileVertical()), actionCollection(),
 
299
                                                                  CResMgr::mainMenu::window::tileVertical::actionName
 
300
                                                                                         );
 
301
        m_windowTileVertical_action->setToolTip( CResMgr::mainMenu::window::tileVertical::tooltip );
 
302
        #if KDE_VERSION_MINOR < 1
 
303
 
 
304
        m_windowTileVertical_action->plugAccel( accel() );
 
305
        #endif
 
306
 
 
307
        m_windowTileHorizontal_action = new KAction(i18n("Tile &horizontally"),
 
308
                                                                        CResMgr::mainMenu::window::tileHorizontal::icon,
 
309
                                                                        CResMgr::mainMenu::window::tileHorizontal::accel,
 
310
                                                                        this, SLOT(slotTileHorizontal()), actionCollection(),
 
311
                                                                        CResMgr::mainMenu::window::tileHorizontal::actionName
 
312
                                                                                           );
 
313
        m_windowTileHorizontal_action->setToolTip( CResMgr::mainMenu::window::tileHorizontal::tooltip );
 
314
 
 
315
        #if KDE_VERSION_MINOR < 1
 
316
 
 
317
        m_windowTileHorizontal_action->plugAccel( accel() );
 
318
        #endif
 
319
 
 
320
 
 
321
        m_windowCloseAll_action = new KAction(i18n("Cl&ose all"),
 
322
                                                                                  CResMgr::mainMenu::window::closeAll::icon,
 
323
                                                                                  CResMgr::mainMenu::window::closeAll::accel,
 
324
                                                                                  m_mdi, SLOT(deleteAll()), actionCollection(),
 
325
                                                                                  CResMgr::mainMenu::window::closeAll::actionName
 
326
                                                                                 );
 
327
        m_windowCloseAll_action->setToolTip( CResMgr::mainMenu::window::closeAll::tooltip );
 
328
        #if KDE_VERSION_MINOR < 1
 
329
 
 
330
        m_windowCloseAll_action->plugAccel( accel() );
 
331
        #endif
 
332
 
 
333
 
 
334
        m_windowSaveProfile_action = new KActionMenu(i18n("&Save session"),
 
335
                                                                 CResMgr::mainMenu::window::saveProfile::icon,
 
336
                                                                 actionCollection(),
 
337
                                                                 CResMgr::mainMenu::window::saveProfile::actionName
 
338
                                                                                                );
 
339
        m_windowSaveProfile_action->setToolTip( CResMgr::mainMenu::window::saveProfile::tooltip );
 
340
        m_windowSaveProfile_action->setDelayed( false );
 
341
        #if KDE_VERSION_MINOR < 1
 
342
 
 
343
        m_windowSaveProfile_action->plugAccel( accel() );
 
344
        #endif
 
345
 
 
346
 
 
347
        m_windowSaveToNewProfile_action = new KAction(i18n("Save as &new session"),
 
348
                                                                          CResMgr::mainMenu::window::saveToNewProfile::icon,
 
349
                                                                          CResMgr::mainMenu::window::saveToNewProfile::accel,
 
350
                                                                          this, SLOT(saveToNewProfile()), actionCollection(),
 
351
                                                                          CResMgr::mainMenu::window::saveToNewProfile::actionName
 
352
                                                                                                 );
 
353
        m_windowSaveToNewProfile_action->setToolTip( CResMgr::mainMenu::window::saveToNewProfile::tooltip );
 
354
        #if KDE_VERSION_MINOR < 1
 
355
 
 
356
        m_windowSaveToNewProfile_action->plugAccel( accel() );
 
357
        #endif
 
358
 
 
359
 
 
360
        m_windowLoadProfile_action = new KActionMenu(i18n("&Load session"),
 
361
                                                                 CResMgr::mainMenu::window::loadProfile::icon,
 
362
                                                                 actionCollection(),
 
363
                                                                 CResMgr::mainMenu::window::loadProfile::actionName
 
364
                                                                                                );
 
365
        m_windowLoadProfile_action->setToolTip( CResMgr::mainMenu::window::loadProfile::tooltip );
 
366
        m_windowLoadProfile_action->setDelayed( false );
 
367
        #if KDE_VERSION_MINOR < 1
 
368
 
 
369
        m_windowLoadProfile_action->plugAccel( accel() );
 
370
        #endif
 
371
 
 
372
        m_windowDeleteProfile_action = new KActionMenu(i18n("&Delete session"),
 
373
                                                                   CResMgr::mainMenu::window::deleteProfile::icon,
 
374
                                                                   actionCollection(),
 
375
                                                                   CResMgr::mainMenu::window::deleteProfile::actionName
 
376
                                                                                                  );
 
377
        m_windowLoadProfile_action->setToolTip( CResMgr::mainMenu::window::deleteProfile::tooltip );
 
378
        m_windowLoadProfile_action->setDelayed( false );
 
379
        #if KDE_VERSION_MINOR < 1
 
380
 
 
381
        m_windowDeleteProfile_action->plugAccel( accel() );
 
382
        #endif
 
383
 
 
384
        m_windowFullscreen_action = new KToggleAction(i18n("&Fullscreen mode"),
 
385
                                                                CResMgr::mainMenu::window::showFullscreen::icon,
 
386
                                                                CResMgr::mainMenu::window::showFullscreen::accel,
 
387
                                                                this, SLOT(toggleFullscreen()), actionCollection(),
 
388
                                                                CResMgr::mainMenu::window::showFullscreen::actionName
 
389
                                                                                                 );
 
390
        m_windowFullscreen_action->setToolTip( CResMgr::mainMenu::window::showFullscreen::tooltip );
 
391
        m_windowFullscreen_action->setShortcutConfigurable(true);
 
392
        #if KDE_VERSION_MINOR < 1
 
393
 
 
394
        m_windowFullscreen_action->plugAccel( accel() );
 
395
        #endif
 
396
 
 
397
        //connect the profile popups to the right slots
 
398
        KPopupMenu* loadPopup = m_windowLoadProfile_action->popupMenu();
 
399
        KPopupMenu* savePopup = m_windowSaveProfile_action->popupMenu();
 
400
        KPopupMenu* deletePopup = m_windowDeleteProfile_action->popupMenu();
 
401
 
 
402
        connect(loadPopup, SIGNAL(activated(int)), SLOT(loadProfile(int)));
 
403
        connect(savePopup, SIGNAL(activated(int)), SLOT(saveProfile(int)));
 
404
        connect(deletePopup, SIGNAL(activated(int)), SLOT(deleteProfile(int)));
 
405
 
 
406
        refreshProfileMenus();
 
407
 
 
408
        if ( actionCollection()->action( KStdAction::stdName(KStdAction::HelpContents) )) {  //delete help action if KDE created it
 
409
                actionCollection()->remove
 
410
                (actionCollection()->action(KStdAction::stdName(KStdAction::HelpContents)) );
 
411
        }
 
412
 
 
413
        action = new KAction(i18n("&Handbook"),
 
414
                                                 CResMgr::mainMenu::help::handbook::icon,
 
415
                                                 CResMgr::mainMenu::help::handbook::accel,
 
416
                                                 this, SLOT(openOnlineHelp_Handbook()), actionCollection(),
 
417
                                                 CResMgr::mainMenu::help::handbook::actionName
 
418
                                                );
 
419
        action->setToolTip( CResMgr::mainMenu::help::handbook::tooltip );
 
420
 
 
421
        #if KDE_VERSION_MINOR < 1
 
422
 
 
423
        action->plugAccel( accel() );
 
424
        #endif
 
425
 
 
426
        action = new KAction(i18n("&Bible Study Howto"),
 
427
                                                 CResMgr::mainMenu::help::bibleStudyHowTo::icon,
 
428
                                                 CResMgr::mainMenu::help::bibleStudyHowTo::accel,
 
429
                                                 this, SLOT(openOnlineHelp_Howto()), actionCollection(),
 
430
                                                 CResMgr::mainMenu::help::bibleStudyHowTo::actionName
 
431
                                                );
 
432
        action->setToolTip( CResMgr::mainMenu::help::bibleStudyHowTo::tooltip );
 
433
 
 
434
        #if KDE_VERSION_MINOR < 1
 
435
 
 
436
        action->plugAccel( accel() );
 
437
        #endif
 
438
 
 
439
        if ( actionCollection()->action( KStdAction::stdName( KStdAction::WhatsThis ) ) ) {  //delete "What's this" action if KDE created it already
 
440
                KAction* action = actionCollection()->action(KStdAction::stdName( KStdAction::WhatsThis ));
 
441
                actionCollection()->remove
 
442
                ( action );
 
443
        }
 
444
 
 
445
 
 
446
        if ( actionCollection()->action( KStdAction::stdName( KStdAction::ReportBug ) ) ) { //delete Report Bug action if KDE created it
 
447
                actionCollection()->remove
 
448
                (actionCollection()->action(KStdAction::stdName( KStdAction::ReportBug )));
 
449
        }
 
450
        action = KStdAction::reportBug(m_helpMenu, SLOT(reportBug()), actionCollection());
 
451
        action->setToolTip(CResMgr::mainMenu::help::bugreport::tooltip);
 
452
        #if KDE_VERSION_MINOR < 1
 
453
 
 
454
        action->plugAccel( accel() );
 
455
        #endif
 
456
 
 
457
        action = new KAction(i18n("&Daily tip"),
 
458
                                                 CResMgr::mainMenu::help::dailyTip::icon,
 
459
                                                 CResMgr::mainMenu::help::dailyTip::accel,
 
460
                                                 this, SLOT(slotHelpTipOfDay()), actionCollection(),
 
461
                                                 CResMgr::mainMenu::help::dailyTip::actionName
 
462
                                                );
 
463
        action->setToolTip(CResMgr::mainMenu::help::dailyTip::tooltip);
 
464
        #if KDE_VERSION_MINOR < 1
 
465
 
 
466
        action->plugAccel( accel() );
 
467
        #endif
 
468
 
 
469
        if ( actionCollection()->action( KStdAction::stdName( KStdAction::AboutApp ) ) ) {  //delete About KDE action if KDE created it
 
470
                actionCollection()->remove
 
471
                (actionCollection()->action(KStdAction::stdName( KStdAction::AboutApp )));
 
472
        }
 
473
        action = KStdAction::aboutApp(m_helpMenu, SLOT(aboutApplication()), actionCollection());
 
474
        action->setToolTip(CResMgr::mainMenu::help::aboutBibleTime::tooltip);
 
475
 
 
476
        //delete About KDE action if KDE created it already
 
477
        if ( actionCollection()->action( KStdAction::stdName( KStdAction::AboutKDE ) ) ) {  //delete About KDE action if KDE created it
 
478
                actionCollection()->remove
 
479
                (actionCollection()->action(KStdAction::stdName( KStdAction::AboutKDE )));
 
480
        }
 
481
        action = KStdAction::aboutKDE(m_helpMenu, SLOT(aboutKDE()), actionCollection());
 
482
        action->setToolTip(CResMgr::mainMenu::help::aboutKDE::tooltip);
 
483
}
 
484
 
 
485
/** Initializes the menubar of BibleTime. */
 
486
void BibleTime::initMenubar() {
 
487
        //get the window and edit menus using the actions and their properties
 
488
        m_windowMenu = dynamic_cast<QPopupMenu*>(m_windowCloseAll_action->container(0));
 
489
}
 
490
 
 
491
/** Initializes the SIGNAL / SLOT connections */
 
492
void BibleTime::initConnections() {
 
493
        connect(m_mdi, SIGNAL(sigSetToplevelCaption(const QString&)),
 
494
                        this, SLOT(setPlainCaption(const QString&)));
 
495
        connect(m_mdi, SIGNAL(createReadDisplayWindow(ListCSwordModuleInfo, const QString&)),
 
496
                        this, SLOT(createReadDisplayWindow(ListCSwordModuleInfo, const QString&)));
 
497
 
 
498
        Q_ASSERT(m_windowMenu);
 
499
        if (m_windowMenu) {
 
500
                connect(m_windowMenu, SIGNAL(aboutToShow()),
 
501
                                this, SLOT(slotWindowMenuAboutToShow()));
 
502
        }
 
503
        else {
 
504
                qWarning("Main window: can't find window menu");
 
505
        }
 
506
 
 
507
 
 
508
        connect(
 
509
                m_mainIndex, SIGNAL(createReadDisplayWindow(ListCSwordModuleInfo, const QString&)),
 
510
                this, SLOT(createReadDisplayWindow(ListCSwordModuleInfo,const QString&))
 
511
        );
 
512
        connect(
 
513
                m_mainIndex, SIGNAL(createWriteDisplayWindow(CSwordModuleInfo*, const QString&, const CDisplayWindow::WriteWindowType&)),
 
514
                this, SLOT(createWriteDisplayWindow(CSwordModuleInfo*,const QString&, const CDisplayWindow::WriteWindowType&))
 
515
        );
 
516
        connect(m_mainIndex, SIGNAL(signalSwordSetupChanged()), this, SLOT(slotSwordSetupChanged()));
 
517
}
 
518
 
 
519
/** Initializes the backend */
 
520
void BibleTime::initBackends() {
 
521
        KStartupLogo::setStatusMessage(i18n("Initializing Sword") + QString("..."));
 
522
 
 
523
        StringMgr::setSystemStringMgr( new BTStringMgr() );
 
524
        SWLog::getSystemLog()->setLogLevel(1);
 
525
 
 
526
        m_backend = new CSwordBackend();
 
527
        m_backend->booknameLanguage( CBTConfig::get
 
528
                                                                         (CBTConfig::language) );
 
529
 
 
530
        CPointers::setBackend(m_backend);
 
531
        const CSwordBackend::LoadError errorCode = m_backend->initModules();
 
532
 
 
533
        m_moduleList = 0;
 
534
        if ( errorCode == CSwordBackend::NoError ) { //no error
 
535
                m_moduleList = &(m_backend->moduleList());
 
536
        }
 
537
        else {
 
538
                m_moduleList = 0;
 
539
                //show error message that initBackend failed
 
540
                switch (errorCode) {
 
541
                        case CSwordBackend::NoSwordConfig: //mods.d or mods.conf missing
 
542
                        {
 
543
                                KStartupLogo::hideSplash();
 
544
                                BookshelfManager::CSwordSetupDialog dlg;
 
545
                                dlg.showPart( BookshelfManager::CSwordSetupDialog::Sword );
 
546
                                dlg.exec();
 
547
                                break;
 
548
                        }
 
549
 
 
550
                        case CSwordBackend::NoModules: //no modules installed, but config exists
 
551
                        {
 
552
                                KStartupLogo::hideSplash();
 
553
                                BookshelfManager::CSwordSetupDialog dlg;
 
554
                                dlg.showPart( BookshelfManager::CSwordSetupDialog::Install );
 
555
                                dlg.exec();
 
556
                                break;
 
557
                        }
 
558
 
 
559
                        default: //unknown error
 
560
                        {
 
561
                                KStartupLogo::hideSplash();
 
562
                                BookshelfManager::CSwordSetupDialog dlg;
 
563
                                dlg.showPart( BookshelfManager::CSwordSetupDialog::Sword );
 
564
                                dlg.exec();
 
565
                                break;
 
566
                        }
 
567
                }
 
568
        }
 
569
 
 
570
        KStartupLogo::setStatusMessage(i18n("Checking indices") + QString("..."));
 
571
        //This function will 
 
572
        // - delete all orphaned indexes (no module present) if autoDeleteOrphanedIndices is true
 
573
        // - delete all indices of modules where hasIndex() returns false
 
574
        BookshelfManager::CManageIndicesWidget::deleteOrphanedIndices();
 
575
        
 
576
}
 
577
 
 
578
/** Apply the settings given by the profile p*/
 
579
void BibleTime::applyProfileSettings( CProfile* p ) {
 
580
        Q_ASSERT(p);
 
581
        if (!p) return;
 
582
 
 
583
        if (m_initialized) { //on startup KDE sets the main geometry
 
584
                //see polish(), where m_initialized is set and the KDE methods are called for window resize
 
585
                
 
586
                //first Main Window state
 
587
                m_windowFullscreen_action->setChecked( p->fullscreen() );  //set the fullscreen button state
 
588
                toggleFullscreen(); //either showFullscreen or showNormal
 
589
                if (p->maximized()) KMainWindow::showMaximized(); //if maximized, then also call showMaximized
 
590
        
 
591
                //Then Main Window geometry
 
592
                KMainWindow::resize( p->geometry().size() ); //Don't use KMainWindowInterface::resize
 
593
                KMainWindow::move( p->geometry().topLeft() );//Don't use KMainWindowInterface::move
 
594
}
 
595
}
 
596
 
 
597
/** Stores the settings of the mainwindow in the profile p */
 
598
void BibleTime::storeProfileSettings( CProfile* p ) {
 
599
        Q_ASSERT(p && m_windowFullscreen_action);
 
600
        if (!p || !m_windowFullscreen_action) return;
 
601
        
 
602
        p->setFullscreen( m_windowFullscreen_action->isChecked() );
 
603
        p->setMaximized( this->KMainWindow::isMaximized() );
 
604
 
 
605
        QRect geometry;
 
606
        geometry.setTopLeft(pos());
 
607
        geometry.setSize(size());
 
608
        p->setGeometry(geometry);
 
609
}