summaryrefslogtreecommitdiff
authordrw <drw>2004-07-16 16:01:46 (UTC)
committer drw <drw>2004-07-16 16:01:46 (UTC)
commitf02993238f76eb8975bb4138f213d2211710afa4 (patch) (unidiff)
treebfc6e3c46405456f4aace685a187e8c4cf628e8b
parente9a15ba751cd53dd6baafceb8a3a5bbfcb5f2bfc (diff)
downloadopie-f02993238f76eb8975bb4138f213d2211710afa4.zip
opie-f02993238f76eb8975bb4138f213d2211710afa4.tar.gz
opie-f02993238f76eb8975bb4138f213d2211710afa4.tar.bz2
Fix to work with newest version of libsword (OptionsList -> StringList)
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/apps/dagger/mainwindow.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/noncore/apps/dagger/mainwindow.cpp b/noncore/apps/dagger/mainwindow.cpp
index b2e00e8..e886bd8 100644
--- a/noncore/apps/dagger/mainwindow.cpp
+++ b/noncore/apps/dagger/mainwindow.cpp
@@ -1,567 +1,567 @@
1/* 1/*
2Dagger - A Bible study program utilizing the Sword library. 2Dagger - A Bible study program utilizing the Sword library.
3Copyright (c) 2004 Dan Williams <drw@handhelds.org> 3Copyright (c) 2004 Dan Williams <drw@handhelds.org>
4 4
5This file is free software; you can redistribute it and/or modify it under 5This file is free software; you can redistribute it and/or modify it under
6the terms of the GNU General Public License as published by the Free Software 6the terms of the GNU General Public License as published by the Free Software
7Foundation; either version 2 of the License, or (at your option) any later version. 7Foundation; either version 2 of the License, or (at your option) any later version.
8 8
9This file is distributed in the hope that it will be useful, but WITHOUT ANY 9This file is distributed in the hope that it will be useful, but WITHOUT ANY
10WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 10WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
11PARTICULAR PURPOSE. See the GNU General Public License for more details. 11PARTICULAR PURPOSE. See the GNU General Public License for more details.
12 12
13You should have received a copy of the GNU General Public License along with this 13You should have received a copy of the GNU General Public License along with this
14file; see the file COPYING. If not, write to the Free Software Foundation, Inc., 14file; see the file COPYING. If not, write to the Free Software Foundation, Inc.,
1559 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 1559 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
16*/ 16*/
17 17
18#include "mainwindow.h" 18#include "mainwindow.h"
19#include "navbar.h" 19#include "navbar.h"
20#include "searchbar.h" 20#include "searchbar.h"
21#include "opentextdlg.h" 21#include "opentextdlg.h"
22#include "configuredlg.h" 22#include "configuredlg.h"
23#include "textwidget.h" 23#include "textwidget.h"
24 24
25#include <opie2/odebug.h> 25#include <opie2/odebug.h>
26 26
27#include <qpe/qcopenvelope_qws.h> 27#include <qpe/qcopenvelope_qws.h>
28#include <qpe/qpeapplication.h> 28#include <qpe/qpeapplication.h>
29#include <qpe/resource.h> 29#include <qpe/resource.h>
30 30
31#include <qaction.h> 31#include <qaction.h>
32#include <qclipboard.h> 32#include <qclipboard.h>
33#include <qmenubar.h> 33#include <qmenubar.h>
34#include <qobjectlist.h> 34#include <qobjectlist.h>
35#include <qpopupmenu.h> 35#include <qpopupmenu.h>
36#include <qtimer.h> 36#include <qtimer.h>
37#include <qtoolbar.h> 37#include <qtoolbar.h>
38 38
39#include <markupfiltmgr.h> 39#include <markupfiltmgr.h>
40 40
41MainWindow::MainWindow( QWidget *parent, const char *name, WFlags /*fl*/ ) 41MainWindow::MainWindow( QWidget *parent, const char *name, WFlags /*fl*/ )
42 : QMainWindow( parent, name, WStyle_ContextHelp ) 42 : QMainWindow( parent, name, WStyle_ContextHelp )
43 , m_config( "dagger" ) 43 , m_config( "dagger" )
44 , m_tabs( this ) 44 , m_tabs( this )
45 , m_autoScrollTimer( this ) 45 , m_autoScrollTimer( this )
46{ 46{
47 // Initialize sword library manager 47 // Initialize sword library manager
48 m_config.setGroup( "Sword" ); 48 m_config.setGroup( "Sword" );
49 m_modulePath = m_config.readEntry( "ModPath", "/usr/local/share/sword" ); 49 m_modulePath = m_config.readEntry( "ModPath", "/usr/local/share/sword" );
50 m_swordMgr = new sword::SWMgr( m_modulePath.latin1(), true, 50 m_swordMgr = new sword::SWMgr( m_modulePath.latin1(), true,
51 new sword::MarkupFilterMgr( sword::FMT_HTMLHREF ) ); 51 new sword::MarkupFilterMgr( sword::FMT_HTMLHREF ) );
52 52
53 // Retrieve list of available Sword module options (e.g. footnotes, Strong's numbers, etc.) 53 // Retrieve list of available Sword module options (e.g. footnotes, Strong's numbers, etc.)
54 sword::OptionsList swordOpts = m_swordMgr->getGlobalOptions(); 54 sword::StringList swordOpts = m_swordMgr->getGlobalOptions();
55 for ( sword::OptionsList::iterator it = swordOpts.begin(); it != swordOpts.end(); it++ ) 55 for ( sword::StringList::iterator it = swordOpts.begin(); it != swordOpts.end(); it++ )
56 m_actionSwordOpts.append( new QAction( (*it).c_str(), QString::null, 0, this, 0 ) ); 56 m_actionSwordOpts.append( new QAction( (*it).c_str(), QString::null, 0, this, 0 ) );
57 m_actionSwordOpts.sort(); 57 m_actionSwordOpts.sort();
58 58
59 // Initialize user interface 59 // Initialize user interface
60 setCaption( tr( "Dagger" ) ); 60 setCaption( tr( "Dagger" ) );
61 initUI(); 61 initUI();
62 62
63 connect( &m_tabs, SIGNAL(currentChanged(QWidget *)), this, SLOT( slotTextDisplayed(QWidget *)) ); 63 connect( &m_tabs, SIGNAL(currentChanged(QWidget *)), this, SLOT( slotTextDisplayed(QWidget *)) );
64 connect( &m_autoScrollTimer, SIGNAL(timeout()), this, SLOT(slotNavNextVerse()) ); 64 connect( &m_autoScrollTimer, SIGNAL(timeout()), this, SLOT(slotNavNextVerse()) );
65 65
66 m_bibleIcon = new QPixmap( Resource::loadPixmap( "dagger/bibletext" ) ); 66 m_bibleIcon = new QPixmap( Resource::loadPixmap( "dagger/bibletext" ) );
67 m_commentaryIcon = new QPixmap( Resource::loadPixmap( "dagger/commentary" ) ); 67 m_commentaryIcon = new QPixmap( Resource::loadPixmap( "dagger/commentary" ) );
68 m_lexiconIcon = new QPixmap( Resource::loadPixmap( "dagger/lexicon" ) ); 68 m_lexiconIcon = new QPixmap( Resource::loadPixmap( "dagger/lexicon" ) );
69 69
70 // Load initial configuration 70 // Load initial configuration
71 QTimer::singleShot( 100, this, SLOT( initConfig() ) ); 71 QTimer::singleShot( 100, this, SLOT( initConfig() ) );
72} 72}
73 73
74MainWindow::~MainWindow() 74MainWindow::~MainWindow()
75{ 75{
76 // Re-enable screen blanking if it was disabled 76 // Re-enable screen blanking if it was disabled
77 QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Enable; 77 QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Enable;
78 78
79 // Save Sword options 79 // Save Sword options
80 m_config.setGroup( "Sword" ); 80 m_config.setGroup( "Sword" );
81 m_config.writeEntry( "ModPath", m_modulePath ); 81 m_config.writeEntry( "ModPath", m_modulePath );
82 82
83 for ( QAction *a = m_actionSwordOpts.first(); a; a = m_actionSwordOpts.next() ) 83 for ( QAction *a = m_actionSwordOpts.first(); a; a = m_actionSwordOpts.next() )
84 m_config.writeEntry( a->text(), a->isOn() ); 84 m_config.writeEntry( a->text(), a->isOn() );
85 85
86 // Save configuration options 86 // Save configuration options
87 m_config.setGroup( "Config" ); 87 m_config.setGroup( "Config" );
88 m_config.writeEntry( "AlwaysOpenNew", m_alwaysOpenNew ); 88 m_config.writeEntry( "AlwaysOpenNew", m_alwaysOpenNew );
89 m_config.writeEntry( "AutoScroll", m_navToolbar->autoScrollRate() ); 89 m_config.writeEntry( "AutoScroll", m_navToolbar->autoScrollRate() );
90 m_config.writeEntry( "DisableScreenBlanking", m_disableScreenBlank ); 90 m_config.writeEntry( "DisableScreenBlanking", m_disableScreenBlank );
91 m_config.writeEntry( "CopyFormat", m_copyFormat ); 91 m_config.writeEntry( "CopyFormat", m_copyFormat );
92 m_config.writeEntry( "NavBar", m_actionViewNavToolbar->isOn() ); 92 m_config.writeEntry( "NavBar", m_actionViewNavToolbar->isOn() );
93 m_config.writeEntry( "NumVerses", m_numVerses ); 93 m_config.writeEntry( "NumVerses", m_numVerses );
94 m_config.writeEntry( "SearchBar", m_actionViewSearchToolbar->isOn() ); 94 m_config.writeEntry( "SearchBar", m_actionViewSearchToolbar->isOn() );
95 95
96 // Save text font 96 // Save text font
97 m_config.setGroup( "Font"); 97 m_config.setGroup( "Font");
98 m_config.writeEntry( "Family", m_textFont.family() ); 98 m_config.writeEntry( "Family", m_textFont.family() );
99 m_config.writeEntry( "Italic", m_textFont.italic() ); 99 m_config.writeEntry( "Italic", m_textFont.italic() );
100 m_config.writeEntry( "Size", m_textFont.pointSize() ); 100 m_config.writeEntry( "Size", m_textFont.pointSize() );
101 m_config.writeEntry( "Weight", m_textFont.weight() ); 101 m_config.writeEntry( "Weight", m_textFont.weight() );
102 102
103 // Save bookmarks 103 // Save bookmarks
104 m_config.setGroup( "Bookmarks"); 104 m_config.setGroup( "Bookmarks");
105 m_config.clearGroup(); 105 m_config.clearGroup();
106 int index = 3; 106 int index = 3;
107 int id = m_bookmarkMenu->idAt( index ); 107 int id = m_bookmarkMenu->idAt( index );
108 while ( id != -1 ) 108 while ( id != -1 )
109 { 109 {
110 QString bookmark = m_bookmarkMenu->text( id ); 110 QString bookmark = m_bookmarkMenu->text( id );
111 int pos = bookmark.find( " (" ); 111 int pos = bookmark.find( " (" );
112 QString key = bookmark.left( pos ); 112 QString key = bookmark.left( pos );
113 pos += 2; 113 pos += 2;
114 QString module = bookmark.mid( pos, bookmark.find( ")", pos ) - pos ); 114 QString module = bookmark.mid( pos, bookmark.find( ")", pos ) - pos );
115 QString modkey; 115 QString modkey;
116 modkey.sprintf( "%s/%s", module.latin1(), key.latin1() ); 116 modkey.sprintf( "%s/%s", module.latin1(), key.latin1() );
117 m_config.writeEntry( QString::number( index - 2 ), modkey ); 117 m_config.writeEntry( QString::number( index - 2 ), modkey );
118 118
119 ++index; 119 ++index;
120 id = m_bookmarkMenu->idAt( index ); 120 id = m_bookmarkMenu->idAt( index );
121 } 121 }
122 122
123 // Save opened modules 123 // Save opened modules
124 m_config.setGroup( "Session"); 124 m_config.setGroup( "Session");
125 m_config.clearGroup(); 125 m_config.clearGroup();
126 QObjectList *childlist = queryList( "TextWidget" ); 126 QObjectList *childlist = queryList( "TextWidget" );
127 QObjectListIt it( *childlist ); 127 QObjectListIt it( *childlist );
128 TextWidget *module; 128 TextWidget *module;
129 int count = 1; 129 int count = 1;
130 while ( ( module = reinterpret_cast<TextWidget *>(it.current()) ) != 0 ) 130 while ( ( module = reinterpret_cast<TextWidget *>(it.current()) ) != 0 )
131 { 131 {
132 QString modkey; 132 QString modkey;
133 modkey.sprintf( "%s/%s", module->getModuleName().latin1(), module->getAbbrevKey().latin1() ); 133 modkey.sprintf( "%s/%s", module->getModuleName().latin1(), module->getAbbrevKey().latin1() );
134 m_config.writeEntry( QString::number( count ), modkey ); 134 m_config.writeEntry( QString::number( count ), modkey );
135 ++count; 135 ++count;
136 ++it; 136 ++it;
137 } 137 }
138} 138}
139 139
140bool MainWindow::eventFilter( QObject *obj, QEvent *event ) 140bool MainWindow::eventFilter( QObject *obj, QEvent *event )
141{ 141{
142 if ( event->type() == QEvent::KeyPress ) 142 if ( event->type() == QEvent::KeyPress )
143 { 143 {
144 QKeyEvent *keyev = reinterpret_cast<QKeyEvent *>(event); 144 QKeyEvent *keyev = reinterpret_cast<QKeyEvent *>(event);
145 if ( keyev->key() == Key_Up ) 145 if ( keyev->key() == Key_Up )
146 { 146 {
147 slotNavPrevVerse(); 147 slotNavPrevVerse();
148 return true; 148 return true;
149 } 149 }
150 else if ( keyev->key() == Key_Down ) 150 else if ( keyev->key() == Key_Down )
151 { 151 {
152 slotNavNextVerse(); 152 slotNavNextVerse();
153 return true; 153 return true;
154 } 154 }
155 } 155 }
156 156
157 return QWidget::eventFilter( obj, event ); 157 return QWidget::eventFilter( obj, event );
158} 158}
159 159
160void MainWindow::initUI() 160void MainWindow::initUI()
161{ 161{
162 setCentralWidget( &m_tabs ); 162 setCentralWidget( &m_tabs );
163 m_tabs.installEventFilter( this ); 163 m_tabs.installEventFilter( this );
164 164
165 setToolBarsMovable( false ); 165 setToolBarsMovable( false );
166 m_barDock = new QToolBar( this ); 166 m_barDock = new QToolBar( this );
167 m_barDock->setHorizontalStretchable( true ); 167 m_barDock->setHorizontalStretchable( true );
168 168
169 m_menuBar = new QMenuBar( m_barDock ); 169 m_menuBar = new QMenuBar( m_barDock );
170 m_menuBar->setMargin( 0 ); 170 m_menuBar->setMargin( 0 );
171 171
172 // Allocate toolbars 172 // Allocate toolbars
173 m_navToolbar = new NavBar( this ); 173 m_navToolbar = new NavBar( this );
174 m_navToolbar->navBtnsEnable( false ); 174 m_navToolbar->navBtnsEnable( false );
175 connect( m_navToolbar, SIGNAL(prevPage()), this, SLOT(slotNavPrevPage()) ); 175 connect( m_navToolbar, SIGNAL(prevPage()), this, SLOT(slotNavPrevPage()) );
176 connect( m_navToolbar, SIGNAL(prevVerse()), this, SLOT(slotNavPrevVerse()) ); 176 connect( m_navToolbar, SIGNAL(prevVerse()), this, SLOT(slotNavPrevVerse()) );
177 connect( m_navToolbar, SIGNAL(keyChanged(const QString &)), this, SLOT(slotNavKeyChanged(const QString &)) ); 177 connect( m_navToolbar, SIGNAL(keyChanged(const QString &)), this, SLOT(slotNavKeyChanged(const QString &)) );
178 connect( m_navToolbar, SIGNAL(nextVerse()), this, SLOT(slotNavNextVerse()) ); 178 connect( m_navToolbar, SIGNAL(nextVerse()), this, SLOT(slotNavNextVerse()) );
179 connect( m_navToolbar, SIGNAL(nextPage()), this, SLOT(slotNavNextPage()) ); 179 connect( m_navToolbar, SIGNAL(nextPage()), this, SLOT(slotNavNextPage()) );
180 connect( m_navToolbar, SIGNAL(autoScroll(bool)), this, SLOT(slotNavAutoScroll(bool)) ); 180 connect( m_navToolbar, SIGNAL(autoScroll(bool)), this, SLOT(slotNavAutoScroll(bool)) );
181 connect( m_navToolbar, SIGNAL(scrollRateChanged(int)), this, SLOT(slotNavScrollRateChanged(int)) ); 181 connect( m_navToolbar, SIGNAL(scrollRateChanged(int)), this, SLOT(slotNavScrollRateChanged(int)) );
182 182
183 m_searchToolbar = new SearchBar( this ); 183 m_searchToolbar = new SearchBar( this );
184 connect( m_searchToolbar, SIGNAL(sigResultClicked(const QString &)), this, SLOT(slotSearchResultClicked(const QString &)) ); 184 connect( m_searchToolbar, SIGNAL(sigResultClicked(const QString &)), this, SLOT(slotSearchResultClicked(const QString &)) );
185 185
186 // Text menu 186 // Text menu
187 QPopupMenu *popup = new QPopupMenu( this ); 187 QPopupMenu *popup = new QPopupMenu( this );
188 188
189 QAction *a = new QAction( tr( "Open..." ), Resource::loadPixmap( "fileopen" ), QString::null, 0, this, 0 ); 189 QAction *a = new QAction( tr( "Open..." ), Resource::loadPixmap( "fileopen" ), QString::null, 0, this, 0 );
190 connect( a, SIGNAL(activated()), this, SLOT(slotTextOpen()) ); 190 connect( a, SIGNAL(activated()), this, SLOT(slotTextOpen()) );
191 a->addTo( popup ); 191 a->addTo( popup );
192 192
193 m_actionTextClose = new QAction( tr( "Close" ), Resource::loadPixmap( "close" ), QString::null, 0, this, 0 ); 193 m_actionTextClose = new QAction( tr( "Close" ), Resource::loadPixmap( "close" ), QString::null, 0, this, 0 );
194 connect( m_actionTextClose, SIGNAL(activated()), this, SLOT(slotTextClose()) ); 194 connect( m_actionTextClose, SIGNAL(activated()), this, SLOT(slotTextClose()) );
195 m_actionTextClose->addTo( popup ); 195 m_actionTextClose->addTo( popup );
196 196
197 popup->insertSeparator(); 197 popup->insertSeparator();
198 198
199 // TODO - need to implent 199 // TODO - need to implent
200 a = new QAction( tr( "Install..." ), Resource::loadPixmap( "install" ), QString::null, 0, this, 0 ); 200 a = new QAction( tr( "Install..." ), Resource::loadPixmap( "install" ), QString::null, 0, this, 0 );
201 a->setEnabled( false ); 201 a->setEnabled( false );
202 connect( a, SIGNAL(activated()), this, SLOT(slotTextInstall()) ); 202 connect( a, SIGNAL(activated()), this, SLOT(slotTextInstall()) );
203 a->addTo( popup ); 203 a->addTo( popup );
204 204
205 m_menuBar->insertItem( tr( "Text" ), popup ); 205 m_menuBar->insertItem( tr( "Text" ), popup );
206 206
207 // Edit menu 207 // Edit menu
208 popup = new QPopupMenu( this ); 208 popup = new QPopupMenu( this );
209 209
210 m_actionEditCopy = new QAction( tr( "Copy" ), Resource::loadPixmap( "copy" ), QString::null, 0, this, 0 ); 210 m_actionEditCopy = new QAction( tr( "Copy" ), Resource::loadPixmap( "copy" ), QString::null, 0, this, 0 );
211 connect( m_actionEditCopy, SIGNAL(activated()), this, SLOT(slotEditCopy()) ); 211 connect( m_actionEditCopy, SIGNAL(activated()), this, SLOT(slotEditCopy()) );
212 m_actionEditCopy->addTo( popup ); 212 m_actionEditCopy->addTo( popup );
213 213
214 popup->insertSeparator(); 214 popup->insertSeparator();
215 215
216 a = new QAction( tr( "Configure..." ), Resource::loadPixmap( "SettingsIcon" ), QString::null, 0, this, 0 ); 216 a = new QAction( tr( "Configure..." ), Resource::loadPixmap( "SettingsIcon" ), QString::null, 0, this, 0 );
217 connect( a, SIGNAL(activated()), this, SLOT(slotEditConfigure()) ); 217 connect( a, SIGNAL(activated()), this, SLOT(slotEditConfigure()) );
218 a->addTo( popup ); 218 a->addTo( popup );
219 219
220 m_menuBar->insertItem( tr( "Edit" ), popup ); 220 m_menuBar->insertItem( tr( "Edit" ), popup );
221 221
222 // Bookmark menu 222 // Bookmark menu
223 m_bookmarkMenu = new QPopupMenu( this ); 223 m_bookmarkMenu = new QPopupMenu( this );
224 224
225 m_actionBookmarkAdd = new QAction( tr( "Add" ), Resource::loadPixmap( "dagger/bookmarkadd" ), QString::null, 0, this, 0 ); 225 m_actionBookmarkAdd = new QAction( tr( "Add" ), Resource::loadPixmap( "dagger/bookmarkadd" ), QString::null, 0, this, 0 );
226 connect( m_actionBookmarkAdd, SIGNAL(activated()), this, SLOT(slotBookmarkAdd()) ); 226 connect( m_actionBookmarkAdd, SIGNAL(activated()), this, SLOT(slotBookmarkAdd()) );
227 m_actionBookmarkAdd->addTo( m_bookmarkMenu ); 227 m_actionBookmarkAdd->addTo( m_bookmarkMenu );
228 228
229 m_actionBookmarkRemove = new QAction( tr( "Remove" ), Resource::loadPixmap( "dagger/bookmarkremove" ), QString::null, 0, this, 0 ); 229 m_actionBookmarkRemove = new QAction( tr( "Remove" ), Resource::loadPixmap( "dagger/bookmarkremove" ), QString::null, 0, this, 0 );
230 connect( m_actionBookmarkRemove, SIGNAL(activated()), this, SLOT(slotBookmarkRemove()) ); 230 connect( m_actionBookmarkRemove, SIGNAL(activated()), this, SLOT(slotBookmarkRemove()) );
231 m_actionBookmarkRemove->addTo( m_bookmarkMenu ); 231 m_actionBookmarkRemove->addTo( m_bookmarkMenu );
232 232
233 m_bookmarkMenu->insertSeparator(); 233 m_bookmarkMenu->insertSeparator();
234 234
235 m_menuBar->insertItem( tr( "Bookmark" ), m_bookmarkMenu ); 235 m_menuBar->insertItem( tr( "Bookmark" ), m_bookmarkMenu );
236 236
237 // View menu 237 // View menu
238 popup = new QPopupMenu( this ); 238 popup = new QPopupMenu( this );
239 239
240 // Retrieve list of available Sword module options (e.g. footnotes, Strong's numbers, etc.) 240 // Retrieve list of available Sword module options (e.g. footnotes, Strong's numbers, etc.)
241 for ( a = m_actionSwordOpts.first(); a; a = m_actionSwordOpts.next() ) 241 for ( a = m_actionSwordOpts.first(); a; a = m_actionSwordOpts.next() )
242 { 242 {
243 a->setToggleAction( true ); 243 a->setToggleAction( true );
244 connect( a, SIGNAL(toggled(bool)), this, SLOT(slotViewSwordOption(bool)) ); 244 connect( a, SIGNAL(toggled(bool)), this, SLOT(slotViewSwordOption(bool)) );
245 a->addTo( popup ); 245 a->addTo( popup );
246 } 246 }
247 247
248 popup->insertSeparator(); 248 popup->insertSeparator();
249 249
250 m_actionViewNavToolbar = new QAction( tr( "Navigation toolbar" ), QString::null, 0, this, 0 ); 250 m_actionViewNavToolbar = new QAction( tr( "Navigation toolbar" ), QString::null, 0, this, 0 );
251 m_actionViewNavToolbar->setToggleAction( true ); 251 m_actionViewNavToolbar->setToggleAction( true );
252 connect( m_actionViewNavToolbar, SIGNAL(toggled(bool)), this, SLOT(slotViewNavToolbar(bool)) ); 252 connect( m_actionViewNavToolbar, SIGNAL(toggled(bool)), this, SLOT(slotViewNavToolbar(bool)) );
253 m_actionViewNavToolbar->addTo( popup ); 253 m_actionViewNavToolbar->addTo( popup );
254 254
255 m_actionViewSearchToolbar = new QAction( tr( "Search toolbar" ), QString::null, 0, this, 0 ); 255 m_actionViewSearchToolbar = new QAction( tr( "Search toolbar" ), QString::null, 0, this, 0 );
256 m_actionViewSearchToolbar->setToggleAction( true ); 256 m_actionViewSearchToolbar->setToggleAction( true );
257 connect( m_actionViewSearchToolbar, SIGNAL(toggled(bool)), this, SLOT(slotViewSearchToolbar(bool)) ); 257 connect( m_actionViewSearchToolbar, SIGNAL(toggled(bool)), this, SLOT(slotViewSearchToolbar(bool)) );
258 m_actionViewSearchToolbar->addTo( popup ); 258 m_actionViewSearchToolbar->addTo( popup );
259 259
260 m_menuBar->insertItem( tr( "View" ), popup ); 260 m_menuBar->insertItem( tr( "View" ), popup );
261} 261}
262 262
263void MainWindow::openModule( const QString &modulename, const QString &key ) 263void MainWindow::openModule( const QString &modulename, const QString &key )
264{ 264{
265 sword::SWModule *module = m_swordMgr->Modules[ modulename.latin1() ]; 265 sword::SWModule *module = m_swordMgr->Modules[ modulename.latin1() ];
266 if ( module ) 266 if ( module )
267 { 267 {
268 TextWidget *tw = 0x0; 268 TextWidget *tw = 0x0;
269 269
270 if ( !m_alwaysOpenNew ) 270 if ( !m_alwaysOpenNew )
271 { 271 {
272 // Try to find if the module is already opened, if so will use that TextWidget 272 // Try to find if the module is already opened, if so will use that TextWidget
273 QObjectList *childlist = queryList( "TextWidget" ); 273 QObjectList *childlist = queryList( "TextWidget" );
274 QObjectListIt it( *childlist ); 274 QObjectListIt it( *childlist );
275 while ( ( tw = reinterpret_cast<TextWidget *>(it.current()) ) != 0 && 275 while ( ( tw = reinterpret_cast<TextWidget *>(it.current()) ) != 0 &&
276 tw->getModuleName() != modulename ) 276 tw->getModuleName() != modulename )
277 ++it; 277 ++it;
278 if ( tw && tw->getModuleName() == modulename ) 278 if ( tw && tw->getModuleName() == modulename )
279 { 279 {
280 // Set key if one is present 280 // Set key if one is present
281 if ( !key.isNull() ) 281 if ( !key.isNull() )
282 tw->setKey( key ); 282 tw->setKey( key );
283 283
284 // Raise tab 284 // Raise tab
285 m_tabs.setCurrentTab( tw ); 285 m_tabs.setCurrentTab( tw );
286 } 286 }
287 } 287 }
288 288
289 if ( m_alwaysOpenNew || !tw ) 289 if ( m_alwaysOpenNew || !tw )
290 { 290 {
291 // Open module in new tab 291 // Open module in new tab
292 QString icon; 292 QString icon;
293 QString type = module->Type(); 293 QString type = module->Type();
294 294
295 if ( type == "Biblical Texts" ) 295 if ( type == "Biblical Texts" )
296 icon = "dagger/bibletext"; 296 icon = "dagger/bibletext";
297 else if ( type == "Commentaries" ) 297 else if ( type == "Commentaries" )
298 icon = "dagger/commentary"; 298 icon = "dagger/commentary";
299 else if ( type == "Lexicons / Dictionaries" ) 299 else if ( type == "Lexicons / Dictionaries" )
300 icon = "dagger/lexicon"; 300 icon = "dagger/lexicon";
301 301
302 tw = new TextWidget( this, module, m_numVerses, &m_textFont ); 302 tw = new TextWidget( this, module, m_numVerses, &m_textFont );
303 connect( tw, SIGNAL(sigRefClicked(const QString &)), 303 connect( tw, SIGNAL(sigRefClicked(const QString &)),
304 this, SLOT(slotTextRefClicked(const QString &)) ); 304 this, SLOT(slotTextRefClicked(const QString &)) );
305 connect( this, SIGNAL(sigNumVersesChanged(int)), tw, SLOT(slotNumVersesChanged(int)) ); 305 connect( this, SIGNAL(sigNumVersesChanged(int)), tw, SLOT(slotNumVersesChanged(int)) );
306 connect( this, SIGNAL(sigFontChanged(const QFont *)), tw, SLOT(slotFontChanged(const QFont *)) ); 306 connect( this, SIGNAL(sigFontChanged(const QFont *)), tw, SLOT(slotFontChanged(const QFont *)) );
307 connect( this, SIGNAL(sigOptionChanged()), tw, SLOT(slotOptionChanged()) ); 307 connect( this, SIGNAL(sigOptionChanged()), tw, SLOT(slotOptionChanged()) );
308 308
309 m_tabs.addTab( tw, icon, modulename ); 309 m_tabs.addTab( tw, icon, modulename );
310 310
311 m_actionTextClose->setEnabled( true ); 311 m_actionTextClose->setEnabled( true );
312 m_actionEditCopy->setEnabled( true ); 312 m_actionEditCopy->setEnabled( true );
313 m_actionBookmarkAdd->setEnabled( true ); 313 m_actionBookmarkAdd->setEnabled( true );
314 314
315 // Set key if one is present 315 // Set key if one is present
316 if ( !key.isNull() ) 316 if ( !key.isNull() )
317 tw->setKey( key ); 317 tw->setKey( key );
318 } 318 }
319 } 319 }
320} 320}
321 321
322int MainWindow::findBookmark( const QString &bookmark ) 322int MainWindow::findBookmark( const QString &bookmark )
323{ 323{
324 int index = 3; 324 int index = 3;
325 int id = m_bookmarkMenu->idAt( index ); 325 int id = m_bookmarkMenu->idAt( index );
326 while ( ( id != -1 ) && ( m_bookmarkMenu->text( id ) != bookmark ) ) 326 while ( ( id != -1 ) && ( m_bookmarkMenu->text( id ) != bookmark ) )
327 { 327 {
328 ++index; 328 ++index;
329 id = m_bookmarkMenu->idAt( index ); 329 id = m_bookmarkMenu->idAt( index );
330 } 330 }
331 331
332 return id; 332 return id;
333} 333}
334 334
335void MainWindow::enableScreenBlanking( bool enable ) 335void MainWindow::enableScreenBlanking( bool enable )
336{ 336{
337 enable ? QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Enable 337 enable ? QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Enable
338 : QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::DisableSuspend; 338 : QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::DisableSuspend;
339} 339}
340 340
341void MainWindow::initConfig() 341void MainWindow::initConfig()
342{ 342{
343 bool show; 343 bool show;
344 344
345 m_config.setGroup( "Sword" ); 345 m_config.setGroup( "Sword" );
346 for ( QAction *a = m_actionSwordOpts.first(); a; a = m_actionSwordOpts.next() ) 346 for ( QAction *a = m_actionSwordOpts.first(); a; a = m_actionSwordOpts.next() )
347 { 347 {
348 show = m_config.readBoolEntry( a->text(), false ); 348 show = m_config.readBoolEntry( a->text(), false );
349 a->setOn( show ); 349 a->setOn( show );
350 m_swordMgr->setGlobalOption ( a->text(), show ? "On" : "Off" ); 350 m_swordMgr->setGlobalOption ( a->text(), show ? "On" : "Off" );
351 } 351 }
352 352
353 // Display/hide toolbars based on last run 353 // Display/hide toolbars based on last run
354 m_config.setGroup( "Config" ); 354 m_config.setGroup( "Config" );
355 355
356 m_alwaysOpenNew = m_config.readBoolEntry( "AlwaysOpenNew", false ); 356 m_alwaysOpenNew = m_config.readBoolEntry( "AlwaysOpenNew", false );
357 m_navToolbar->setAutoScrollRate( m_config.readNumEntry( "AutoScroll", 50 ) ); 357 m_navToolbar->setAutoScrollRate( m_config.readNumEntry( "AutoScroll", 50 ) );
358 m_disableScreenBlank = m_config.readBoolEntry( "DisableScreenBlanking", false ); 358 m_disableScreenBlank = m_config.readBoolEntry( "DisableScreenBlanking", false );
359 enableScreenBlanking( !m_disableScreenBlank ); 359 enableScreenBlanking( !m_disableScreenBlank );
360 m_copyFormat = m_config.readNumEntry( "CopyFormat", 0 ); 360 m_copyFormat = m_config.readNumEntry( "CopyFormat", 0 );
361 361
362 show = m_config.readBoolEntry( "NavBar", false ); 362 show = m_config.readBoolEntry( "NavBar", false );
363 m_actionViewNavToolbar->setOn( show ); 363 m_actionViewNavToolbar->setOn( show );
364 slotViewNavToolbar( show ); 364 slotViewNavToolbar( show );
365 365
366 m_numVerses = m_config.readNumEntry( "NumVerses", 5 ); 366 m_numVerses = m_config.readNumEntry( "NumVerses", 5 );
367 367
368 show = m_config.readBoolEntry( "SearchBar", false ); 368 show = m_config.readBoolEntry( "SearchBar", false );
369 m_actionViewSearchToolbar->setOn( show ); 369 m_actionViewSearchToolbar->setOn( show );
370 slotViewSearchToolbar( show ); 370 slotViewSearchToolbar( show );
371 371
372 // Set text font 372 // Set text font
373 m_config.setGroup( "Font" ); 373 m_config.setGroup( "Font" );
374 QString fontFamily = m_config.readEntry( "Family", QString::null ); 374 QString fontFamily = m_config.readEntry( "Family", QString::null );
375 !fontFamily.isNull() ? m_textFont = QFont( fontFamily, 375 !fontFamily.isNull() ? m_textFont = QFont( fontFamily,
376 m_config.readNumEntry( "Size", -1 ), 376 m_config.readNumEntry( "Size", -1 ),
377 m_config.readNumEntry( "Weight", QFont::Normal ), 377 m_config.readNumEntry( "Weight", QFont::Normal ),
378 m_config.readBoolEntry( "Italic", false ) ) 378 m_config.readBoolEntry( "Italic", false ) )
379 : m_textFont = font(); // If font is not configured, set to default widget font 379 : m_textFont = font(); // If font is not configured, set to default widget font
380 380
381 // Load bookmarks 381 // Load bookmarks
382 m_config.setGroup( "Bookmarks"); 382 m_config.setGroup( "Bookmarks");
383 int count = 1; 383 int count = 1;
384 QString key = m_config.readEntry( QString::number( count ), QString::null ); 384 QString key = m_config.readEntry( QString::number( count ), QString::null );
385 while ( !key.isNull() ) 385 while ( !key.isNull() )
386 { 386 {
387 int pos = key.find( "/" ); 387 int pos = key.find( "/" );
388 if ( pos > -1 ) 388 if ( pos > -1 )
389 { 389 {
390 QString bookmark; 390 QString bookmark;
391 bookmark.sprintf( "%s (%s)", key.right( key.length() - ( pos + 1 ) ).latin1(), 391 bookmark.sprintf( "%s (%s)", key.right( key.length() - ( pos + 1 ) ).latin1(),
392 key.left( pos ).latin1() ); 392 key.left( pos ).latin1() );
393 QAction *a = new QAction( bookmark, QString::null, 0, this, 0 ); 393 QAction *a = new QAction( bookmark, QString::null, 0, this, 0 );
394 a->addTo( m_bookmarkMenu ); 394 a->addTo( m_bookmarkMenu );
395 connect( a, SIGNAL(activated()), this, SLOT(slotBookmarkSelected()) ); 395 connect( a, SIGNAL(activated()), this, SLOT(slotBookmarkSelected()) );
396 } 396 }
397 397
398 ++count; 398 ++count;
399 key = m_config.readEntry( QString::number( count ), QString::null ); 399 key = m_config.readEntry( QString::number( count ), QString::null );
400 } 400 }
401 m_actionBookmarkRemove->setEnabled( count > 1 ); 401 m_actionBookmarkRemove->setEnabled( count > 1 );
402 402
403 // Load opened modules 403 // Load opened modules
404 m_config.setGroup( "Session"); 404 m_config.setGroup( "Session");
405 QString first; 405 QString first;
406 count = 1; 406 count = 1;
407 key = m_config.readEntry( QString::number( count ), QString::null ); 407 key = m_config.readEntry( QString::number( count ), QString::null );
408 while ( !key.isNull() ) 408 while ( !key.isNull() )
409 { 409 {
410 int pos = key.find( "/" ); 410 int pos = key.find( "/" );
411 if ( pos > -1 ) 411 if ( pos > -1 )
412 { 412 {
413 if ( count == 1 ) 413 if ( count == 1 )
414 first = key.left( pos ); 414 first = key.left( pos );
415 openModule( key.left( pos ), key.right( key.length() - ( pos + 1 ) ) ); 415 openModule( key.left( pos ), key.right( key.length() - ( pos + 1 ) ) );
416 } 416 }
417 417
418 ++count; 418 ++count;
419 key = m_config.readEntry( QString::number( count ), QString::null ); 419 key = m_config.readEntry( QString::number( count ), QString::null );
420 } 420 }
421 m_tabs.setCurrentTab( first ); 421 m_tabs.setCurrentTab( first );
422 TextWidget *text = reinterpret_cast<TextWidget *>(m_tabs.currentWidget()); 422 TextWidget *text = reinterpret_cast<TextWidget *>(m_tabs.currentWidget());
423 if ( text ) 423 if ( text )
424 { 424 {
425 setCaption( QString( "%1 - Dagger" ).arg( text->getFullKey() ) ); 425 setCaption( QString( "%1 - Dagger" ).arg( text->getFullKey() ) );
426 m_navToolbar->setKey( text->getAbbrevKey() ); 426 m_navToolbar->setKey( text->getAbbrevKey() );
427 } 427 }
428 m_actionTextClose->setEnabled( count > 1 ); 428 m_actionTextClose->setEnabled( count > 1 );
429 m_actionEditCopy->setEnabled( count > 1 ); 429 m_actionEditCopy->setEnabled( count > 1 );
430} 430}
431 431
432void MainWindow::slotTextDisplayed( QWidget *textWidget ) 432void MainWindow::slotTextDisplayed( QWidget *textWidget )
433{ 433{
434 TextWidget *text = reinterpret_cast<TextWidget *>(textWidget); 434 TextWidget *text = reinterpret_cast<TextWidget *>(textWidget);
435 setCaption( QString( "%1 - Dagger" ).arg( text->getFullKey() ) ); 435 setCaption( QString( "%1 - Dagger" ).arg( text->getFullKey() ) );
436 436
437 m_navToolbar->setKey( text->getAbbrevKey() ); 437 m_navToolbar->setKey( text->getAbbrevKey() );
438 m_navToolbar->navBtnsEnable( text->isBibleText() ); 438 m_navToolbar->navBtnsEnable( text->isBibleText() );
439 439
440 m_searchToolbar->setCurrModule( text ); 440 m_searchToolbar->setCurrModule( text );
441} 441}
442 442
443void MainWindow::slotTextOpen() 443void MainWindow::slotTextOpen()
444{ 444{
445 OpenTextDlg dlg( this, m_swordMgr, m_bibleIcon, m_commentaryIcon, m_lexiconIcon ); 445 OpenTextDlg dlg( this, m_swordMgr, m_bibleIcon, m_commentaryIcon, m_lexiconIcon );
446 if ( QPEApplication::execDialog( &dlg ) == QDialog::Accepted ) 446 if ( QPEApplication::execDialog( &dlg ) == QDialog::Accepted )
447 { 447 {
448 openModule( dlg.selectedText() ); 448 openModule( dlg.selectedText() );
449 } 449 }
450} 450}
451 451
452void MainWindow::slotTextClose() 452void MainWindow::slotTextClose()
453{ 453{
454 TextWidget *text = reinterpret_cast<TextWidget *>(m_tabs.currentWidget()); 454 TextWidget *text = reinterpret_cast<TextWidget *>(m_tabs.currentWidget());
455 if ( text ) 455 if ( text )
456 { 456 {
457 m_tabs.removePage( text ); 457 m_tabs.removePage( text );
458 delete text; 458 delete text;
459 459
460 // If no other modules are open, disable appropriate UI items 460 // If no other modules are open, disable appropriate UI items
461 if ( !m_tabs.currentWidget() ) 461 if ( !m_tabs.currentWidget() )
462 { 462 {
463 m_navToolbar->navBtnsEnable( false ); 463 m_navToolbar->navBtnsEnable( false );
464 m_navToolbar->setKey( QString::null ); 464 m_navToolbar->setKey( QString::null );
465 m_searchToolbar->setCurrModule( 0x0 ); 465 m_searchToolbar->setCurrModule( 0x0 );
466 m_actionTextClose->setEnabled( false ); 466 m_actionTextClose->setEnabled( false );
467 m_actionEditCopy->setEnabled( false ); 467 m_actionEditCopy->setEnabled( false );
468 m_actionBookmarkAdd->setEnabled( false ); 468 m_actionBookmarkAdd->setEnabled( false );
469 m_actionBookmarkRemove->setEnabled( false ); 469 m_actionBookmarkRemove->setEnabled( false );
470 } 470 }
471 } 471 }
472} 472}
473 473
474void MainWindow::slotTextInstall() 474void MainWindow::slotTextInstall()
475{ 475{
476} 476}
477 477
478void MainWindow::slotEditCopy() 478void MainWindow::slotEditCopy()
479{ 479{
480 TextWidget *currModule = reinterpret_cast<TextWidget *>(m_tabs.currentWidget()); 480 TextWidget *currModule = reinterpret_cast<TextWidget *>(m_tabs.currentWidget());
481 if ( currModule ) 481 if ( currModule )
482 { 482 {
483 QString text; 483 QString text;
484 484
485 switch( m_copyFormat ) 485 switch( m_copyFormat )
486 { 486 {
487 case 0: text.sprintf( "%s (%s, %s)", currModule->getCurrVerse().latin1(), 487 case 0: text.sprintf( "%s (%s, %s)", currModule->getCurrVerse().latin1(),
488 currModule->getAbbrevKey().latin1(), 488 currModule->getAbbrevKey().latin1(),
489 currModule->getModuleName().latin1() ); 489 currModule->getModuleName().latin1() );
490 break; 490 break;
491 case 1: text.sprintf( "%s (%s)", currModule->getCurrVerse().latin1(), 491 case 1: text.sprintf( "%s (%s)", currModule->getCurrVerse().latin1(),
492 currModule->getAbbrevKey().latin1() ); 492 currModule->getAbbrevKey().latin1() );
493 break; 493 break;
494 case 2: text = currModule->getCurrVerse(); 494 case 2: text = currModule->getCurrVerse();
495 break; 495 break;
496 case 3: text = currModule->getAbbrevKey(); 496 case 3: text = currModule->getAbbrevKey();
497 break; 497 break;
498 default: text = QString::null; 498 default: text = QString::null;
499 }; 499 };
500 500
501 if ( !text.isNull() ) 501 if ( !text.isNull() )
502 QPEApplication::clipboard()->setText( text ); 502 QPEApplication::clipboard()->setText( text );
503 } 503 }
504} 504}
505 505
506void MainWindow::slotEditConfigure() 506void MainWindow::slotEditConfigure()
507{ 507{
508 ConfigureDlg dlg( this, m_modulePath, m_alwaysOpenNew, m_numVerses, m_disableScreenBlank, m_copyFormat, 508 ConfigureDlg dlg( this, m_modulePath, m_alwaysOpenNew, m_numVerses, m_disableScreenBlank, m_copyFormat,
509 &m_textFont ); 509 &m_textFont );
510 if ( QPEApplication::execDialog( &dlg ) == QDialog::Accepted ) 510 if ( QPEApplication::execDialog( &dlg ) == QDialog::Accepted )
511 { 511 {
512 m_modulePath = dlg.swordPath(); 512 m_modulePath = dlg.swordPath();
513 m_alwaysOpenNew = dlg.alwaysOpenNew(); 513 m_alwaysOpenNew = dlg.alwaysOpenNew();
514 if ( dlg.numVerses() != m_numVerses ) 514 if ( dlg.numVerses() != m_numVerses )
515 { 515 {
516 m_numVerses = dlg.numVerses(); 516 m_numVerses = dlg.numVerses();
517 emit sigNumVersesChanged( m_numVerses ); 517 emit sigNumVersesChanged( m_numVerses );
518 } 518 }
519 m_disableScreenBlank = dlg.screenBlank(); 519 m_disableScreenBlank = dlg.screenBlank();
520 enableScreenBlanking( !m_disableScreenBlank ); 520 enableScreenBlanking( !m_disableScreenBlank );
521 m_copyFormat = dlg.copyFormat(); 521 m_copyFormat = dlg.copyFormat();
522 m_textFont = dlg.selectedFont(); 522 m_textFont = dlg.selectedFont();
523 emit sigFontChanged( &m_textFont ); 523 emit sigFontChanged( &m_textFont );
524 } 524 }
525} 525}
526 526
527void MainWindow::slotBookmarkAdd() 527void MainWindow::slotBookmarkAdd()
528{ 528{
529 TextWidget *text = reinterpret_cast<TextWidget *>(m_tabs.currentWidget()); 529 TextWidget *text = reinterpret_cast<TextWidget *>(m_tabs.currentWidget());
530 if ( text ) 530 if ( text )
531 { 531 {
532 // See if bookmark doesn't already exists 532 // See if bookmark doesn't already exists
533 QString bookmark = text->getFullKey(); 533 QString bookmark = text->getFullKey();
534 int menuId = findBookmark( bookmark ); 534 int menuId = findBookmark( bookmark );
535 if ( menuId == -1 ) 535 if ( menuId == -1 )
536 { 536 {
537 // Bookmark not found, add 537 // Bookmark not found, add
538 QAction *a = new QAction( bookmark, QString::null, 0, this, 0 ); 538 QAction *a = new QAction( bookmark, QString::null, 0, this, 0 );
539 a->addTo( m_bookmarkMenu ); 539 a->addTo( m_bookmarkMenu );
540 connect( a, SIGNAL(activated()), this, SLOT(slotBookmarkSelected()) ); 540 connect( a, SIGNAL(activated()), this, SLOT(slotBookmarkSelected()) );
541 541
542 // Make sure remove option is enabled 542 // Make sure remove option is enabled
543 m_actionBookmarkRemove->setEnabled( true ); 543 m_actionBookmarkRemove->setEnabled( true );
544 544
545 } 545 }
546 } 546 }
547} 547}
548 548
549void MainWindow::slotBookmarkRemove() 549void MainWindow::slotBookmarkRemove()
550{ 550{
551 TextWidget *text = reinterpret_cast<TextWidget *>(m_tabs.currentWidget()); 551 TextWidget *text = reinterpret_cast<TextWidget *>(m_tabs.currentWidget());
552 if ( text ) 552 if ( text )
553 { 553 {
554 // See if bookmark exists for current module key 554 // See if bookmark exists for current module key
555 int menuId = findBookmark( text->getFullKey() ); 555 int menuId = findBookmark( text->getFullKey() );
556 if ( menuId != -1 ) 556 if ( menuId != -1 )
557 { 557 {
558 // Bookmark found, remove 558 // Bookmark found, remove
559 m_bookmarkMenu->removeItem( menuId ); 559 m_bookmarkMenu->removeItem( menuId );
560 560
561 //If this was the last bookmark, disable the remove option 561 //If this was the last bookmark, disable the remove option
562 if ( m_bookmarkMenu->idAt( 3 ) == -1 ) 562 if ( m_bookmarkMenu->idAt( 3 ) == -1 )
563 m_actionBookmarkRemove->setEnabled( false ); 563 m_actionBookmarkRemove->setEnabled( false );
564 } 564 }
565 } 565 }
566} 566}
567 567