author | drw <drw> | 2004-04-22 14:30:24 (UTC) |
---|---|---|
committer | drw <drw> | 2004-04-22 14:30:24 (UTC) |
commit | 00977d309bc991ffb4a84216881b53432c6d0b47 (patch) (unidiff) | |
tree | 7888656814ad09fb8930c198caadc56561687918 | |
parent | 162c71d6528515ea4b28520e9708c8ce9ca7fba2 (diff) | |
download | opie-00977d309bc991ffb4a84216881b53432c6d0b47.zip opie-00977d309bc991ffb4a84216881b53432c6d0b47.tar.gz opie-00977d309bc991ffb4a84216881b53432c6d0b47.tar.bz2 |
Fixed disabling of screen blanking, implemented prev/next page scrolling and fixed search OWait useage
-rw-r--r-- | noncore/apps/dagger/ChangeLog | 7 | ||||
-rw-r--r-- | noncore/apps/dagger/README | 2 | ||||
-rw-r--r-- | noncore/apps/dagger/TODO | 6 | ||||
-rw-r--r-- | noncore/apps/dagger/mainwindow.cpp | 17 | ||||
-rw-r--r-- | noncore/apps/dagger/mainwindow.h | 4 | ||||
-rw-r--r-- | noncore/apps/dagger/navbar.cpp | 16 | ||||
-rw-r--r-- | noncore/apps/dagger/navbar.h | 8 | ||||
-rw-r--r-- | noncore/apps/dagger/opie-dagger.control | 4 | ||||
-rw-r--r-- | noncore/apps/dagger/searchbar.cpp | 8 | ||||
-rw-r--r-- | noncore/apps/dagger/textwidget.cpp | 8 | ||||
-rw-r--r-- | noncore/apps/dagger/textwidget.h | 4 |
11 files changed, 50 insertions, 34 deletions
diff --git a/noncore/apps/dagger/ChangeLog b/noncore/apps/dagger/ChangeLog index feb9a19..108419e 100644 --- a/noncore/apps/dagger/ChangeLog +++ b/noncore/apps/dagger/ChangeLog | |||
@@ -1,4 +1,11 @@ | |||
1 | 2004-04-22 Dan Williams <drw@handhelds.org> | ||
2 | |||
3 | * Released version 0.9.1 | ||
4 | * Fixed the disabling of screen blanking | ||
5 | * Implement previous/next page scrolling | ||
6 | * Animate search OWait | ||
7 | |||
1 | 2004-04-06 Dan Williams <drw@handhelds.org> | 8 | 2004-04-06 Dan Williams <drw@handhelds.org> |
2 | 9 | ||
3 | * Released version 0.9.0 | 10 | * Released version 0.9.0 |
4 | * Initial check-in of new application | 11 | * Initial check-in of new application |
diff --git a/noncore/apps/dagger/README b/noncore/apps/dagger/README index 4a4bb61..00e9eed 100644 --- a/noncore/apps/dagger/README +++ b/noncore/apps/dagger/README | |||
@@ -1,61 +1,61 @@ | |||
1 | /************************************************************************ | 1 | /************************************************************************ |
2 | /* | 2 | /* |
3 | /* Opie - Dagger | 3 | /* Opie - Dagger |
4 | /* =============== | 4 | /* =============== |
5 | /* Version 0.9.0 | 5 | /* Version 0.9.1 |
6 | /* | 6 | /* |
7 | /* A Bible study/reader application | 7 | /* A Bible study/reader application |
8 | /* | 8 | /* |
9 | /************************************************************************ | 9 | /************************************************************************ |
10 | 10 | ||
11 | --------------------------------------------- | 11 | --------------------------------------------- |
12 | Release Notes for Opie-Dagger - April, 2004 | 12 | Release Notes for Opie-Dagger - April, 2004 |
13 | --------------------------------------------- | 13 | --------------------------------------------- |
14 | 14 | ||
15 | ====================== | 15 | ====================== |
16 | = To-do = | 16 | = To-do = |
17 | ====================== | 17 | ====================== |
18 | 18 | ||
19 | - See $OPIEDIR/noncore/apps/dagger/TODO for more info. | 19 | - See $OPIEDIR/noncore/apps/dagger/TODO for more info. |
20 | 20 | ||
21 | ====================== | 21 | ====================== |
22 | = Build = | 22 | = Build = |
23 | ====================== | 23 | ====================== |
24 | 24 | ||
25 | In order to build opie-dagger, libsword needs to be present on | 25 | In order to build opie-dagger, libsword needs to be present on |
26 | the build system along with the appropriate headers. | 26 | the build system along with the appropriate headers. |
27 | 27 | ||
28 | - libsword source (best to use version 1.5.x or greater): | 28 | - libsword source (best to use version 1.5.x or greater): |
29 | - http://www.crosswire.org/sword/ | 29 | - http://www.crosswire.org/sword/ |
30 | 30 | ||
31 | - the Sword library headers need to be located in an appropriate | 31 | - the Sword library headers need to be located in an appropriate |
32 | include directory | 32 | include directory |
33 | 33 | ||
34 | ====================== | 34 | ====================== |
35 | = Run = | 35 | = Run = |
36 | ====================== | 36 | ====================== |
37 | 37 | ||
38 | - In order to use opie-dagger, libsword must be installed | 38 | - In order to use opie-dagger, libsword must be installed |
39 | on the system. | 39 | on the system. |
40 | - One or more Sword modules need to be installed, see | 40 | - One or more Sword modules need to be installed, see |
41 | http://www.crosswire.org/sword/ to download modules | 41 | http://www.crosswire.org/sword/ to download modules |
42 | - When run for the first time, the path needs to be set to the | 42 | - When run for the first time, the path needs to be set to the |
43 | directory where the Sword modules are located. Select 'Edit->Configure' | 43 | directory where the Sword modules are located. Select 'Edit->Configure' |
44 | from the menu bar and enter the path on the 'General' tab. Restart | 44 | from the menu bar and enter the path on the 'General' tab. Restart |
45 | Dagger. | 45 | Dagger. |
46 | 46 | ||
47 | ====================== | 47 | ====================== |
48 | = Credits = | 48 | = Credits = |
49 | ====================== | 49 | ====================== |
50 | 50 | ||
51 | - Opie-Dagger is (C) 2004 Dan Williams | 51 | - Opie-Dagger is (C) 2004 Dan Williams |
52 | 52 | ||
53 | ====================== | 53 | ====================== |
54 | = Links = | 54 | = Links = |
55 | ====================== | 55 | ====================== |
56 | 56 | ||
57 | - Opie Project: http://opie.handhelds.org | 57 | - Opie Project: http://opie.handhelds.org |
58 | - OpenZaurus Project: http://openzaurus.org | 58 | - OpenZaurus Project: http://openzaurus.org |
59 | - Familiar Project: http://familiar.handhelds.org | 59 | - Familiar Project: http://familiar.handhelds.org |
60 | - Crosswire Society http://www.crosswire.org/ | 60 | - Crosswire Society http://www.crosswire.org/ |
61 | - The Sword Project http://www.crosswire.org/sword/ | 61 | - The Sword Project http://www.crosswire.org/sword/ |
diff --git a/noncore/apps/dagger/TODO b/noncore/apps/dagger/TODO index 2548dd3..1530bd6 100644 --- a/noncore/apps/dagger/TODO +++ b/noncore/apps/dagger/TODO | |||
@@ -1,27 +1,25 @@ | |||
1 | /************************************************************************ | 1 | /************************************************************************ |
2 | /* | 2 | /* |
3 | /* Opie - Dagger | 3 | /* Opie - Dagger |
4 | /* =============== | 4 | /* =============== |
5 | /* Version 0.9.0 | 5 | /* Version 0.9.1 |
6 | /* | 6 | /* |
7 | /* A Bible study/reader application | 7 | /* A Bible study/reader application |
8 | /* | 8 | /* |
9 | /************************************************************************ | 9 | /************************************************************************ |
10 | 10 | ||
11 | ------------------------------------ | 11 | ------------------------------------ |
12 | To-do for Opie-Dagger - April, 2004 | 12 | To-do for Opie-Dagger - April, 2004 |
13 | ------------------------------------ | 13 | ------------------------------------ |
14 | 14 | ||
15 | ====================== | 15 | ====================== |
16 | = Current release = | 16 | = Current release = |
17 | ====================== | 17 | ====================== |
18 | 18 | ||
19 | 1. Implement search function callback to animate OWait dialog | 19 | 1. Implement module installation |
20 | 2. Implement previous/next page scrolling | ||
21 | 3. Fix disablement of screen blanking | ||
22 | 20 | ||
23 | ====================== | 21 | ====================== |
24 | = Future releases = | 22 | = Future releases = |
25 | ====================== | 23 | ====================== |
26 | 24 | ||
27 | 1. Margin notes \ No newline at end of file | 25 | 1. Margin notes \ No newline at end of file |
diff --git a/noncore/apps/dagger/mainwindow.cpp b/noncore/apps/dagger/mainwindow.cpp index ace8f36..b2e00e8 100644 --- a/noncore/apps/dagger/mainwindow.cpp +++ b/noncore/apps/dagger/mainwindow.cpp | |||
@@ -12,229 +12,232 @@ PARTICULAR PURPOSE. See the GNU General Public License for more details. | |||
12 | 12 | ||
13 | You should have received a copy of the GNU General Public License along with this | 13 | You should have received a copy of the GNU General Public License along with this |
14 | file; see the file COPYING. If not, write to the Free Software Foundation, Inc., | 14 | file; see the file COPYING. If not, write to the Free Software Foundation, Inc., |
15 | 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | 15 | 59 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 | ||
41 | MainWindow::MainWindow( QWidget *parent, const char *name, WFlags /*fl*/ ) | 41 | MainWindow::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::OptionsList swordOpts = m_swordMgr->getGlobalOptions(); |
55 | for ( sword::OptionsList::iterator it = swordOpts.begin(); it != swordOpts.end(); it++ ) | 55 | for ( sword::OptionsList::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 | ||
74 | MainWindow::~MainWindow() | 74 | MainWindow::~MainWindow() |
75 | { | 75 | { |
76 | // Re-enable screen blanking if it was disabled | ||
77 | QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Enable; | ||
78 | |||
76 | // Save Sword options | 79 | // Save Sword options |
77 | m_config.setGroup( "Sword" ); | 80 | m_config.setGroup( "Sword" ); |
78 | m_config.writeEntry( "ModPath", m_modulePath ); | 81 | m_config.writeEntry( "ModPath", m_modulePath ); |
79 | 82 | ||
80 | for ( QAction *a = m_actionSwordOpts.first(); a; a = m_actionSwordOpts.next() ) | 83 | for ( QAction *a = m_actionSwordOpts.first(); a; a = m_actionSwordOpts.next() ) |
81 | m_config.writeEntry( a->text(), a->isOn() ); | 84 | m_config.writeEntry( a->text(), a->isOn() ); |
82 | 85 | ||
83 | // Save configuration options | 86 | // Save configuration options |
84 | m_config.setGroup( "Config" ); | 87 | m_config.setGroup( "Config" ); |
85 | m_config.writeEntry( "AlwaysOpenNew", m_alwaysOpenNew ); | 88 | m_config.writeEntry( "AlwaysOpenNew", m_alwaysOpenNew ); |
86 | m_config.writeEntry( "AutoScroll", m_navToolbar->autoScrollRate() ); | 89 | m_config.writeEntry( "AutoScroll", m_navToolbar->autoScrollRate() ); |
87 | m_config.writeEntry( "DisableScreenBlanking", m_disableScreenBlank ); | 90 | m_config.writeEntry( "DisableScreenBlanking", m_disableScreenBlank ); |
88 | m_config.writeEntry( "CopyFormat", m_copyFormat ); | 91 | m_config.writeEntry( "CopyFormat", m_copyFormat ); |
89 | m_config.writeEntry( "NavBar", m_actionViewNavToolbar->isOn() ); | 92 | m_config.writeEntry( "NavBar", m_actionViewNavToolbar->isOn() ); |
90 | m_config.writeEntry( "NumVerses", m_numVerses ); | 93 | m_config.writeEntry( "NumVerses", m_numVerses ); |
91 | m_config.writeEntry( "SearchBar", m_actionViewSearchToolbar->isOn() ); | 94 | m_config.writeEntry( "SearchBar", m_actionViewSearchToolbar->isOn() ); |
92 | 95 | ||
93 | // Save text font | 96 | // Save text font |
94 | m_config.setGroup( "Font"); | 97 | m_config.setGroup( "Font"); |
95 | m_config.writeEntry( "Family", m_textFont.family() ); | 98 | m_config.writeEntry( "Family", m_textFont.family() ); |
96 | m_config.writeEntry( "Italic", m_textFont.italic() ); | 99 | m_config.writeEntry( "Italic", m_textFont.italic() ); |
97 | m_config.writeEntry( "Size", m_textFont.pointSize() ); | 100 | m_config.writeEntry( "Size", m_textFont.pointSize() ); |
98 | m_config.writeEntry( "Weight", m_textFont.weight() ); | 101 | m_config.writeEntry( "Weight", m_textFont.weight() ); |
99 | 102 | ||
100 | // Save bookmarks | 103 | // Save bookmarks |
101 | m_config.setGroup( "Bookmarks"); | 104 | m_config.setGroup( "Bookmarks"); |
102 | m_config.clearGroup(); | 105 | m_config.clearGroup(); |
103 | int index = 3; | 106 | int index = 3; |
104 | int id = m_bookmarkMenu->idAt( index ); | 107 | int id = m_bookmarkMenu->idAt( index ); |
105 | while ( id != -1 ) | 108 | while ( id != -1 ) |
106 | { | 109 | { |
107 | QString bookmark = m_bookmarkMenu->text( id ); | 110 | QString bookmark = m_bookmarkMenu->text( id ); |
108 | int pos = bookmark.find( " (" ); | 111 | int pos = bookmark.find( " (" ); |
109 | QString key = bookmark.left( pos ); | 112 | QString key = bookmark.left( pos ); |
110 | pos += 2; | 113 | pos += 2; |
111 | QString module = bookmark.mid( pos, bookmark.find( ")", pos ) - pos ); | 114 | QString module = bookmark.mid( pos, bookmark.find( ")", pos ) - pos ); |
112 | QString modkey; | 115 | QString modkey; |
113 | modkey.sprintf( "%s/%s", module.latin1(), key.latin1() ); | 116 | modkey.sprintf( "%s/%s", module.latin1(), key.latin1() ); |
114 | m_config.writeEntry( QString::number( index - 2 ), modkey ); | 117 | m_config.writeEntry( QString::number( index - 2 ), modkey ); |
115 | 118 | ||
116 | ++index; | 119 | ++index; |
117 | id = m_bookmarkMenu->idAt( index ); | 120 | id = m_bookmarkMenu->idAt( index ); |
118 | } | 121 | } |
119 | 122 | ||
120 | // Save opened modules | 123 | // Save opened modules |
121 | m_config.setGroup( "Session"); | 124 | m_config.setGroup( "Session"); |
122 | m_config.clearGroup(); | 125 | m_config.clearGroup(); |
123 | QObjectList *childlist = queryList( "TextWidget" ); | 126 | QObjectList *childlist = queryList( "TextWidget" ); |
124 | QObjectListIt it( *childlist ); | 127 | QObjectListIt it( *childlist ); |
125 | TextWidget *module; | 128 | TextWidget *module; |
126 | int count = 1; | 129 | int count = 1; |
127 | while ( ( module = reinterpret_cast<TextWidget *>(it.current()) ) != 0 ) | 130 | while ( ( module = reinterpret_cast<TextWidget *>(it.current()) ) != 0 ) |
128 | { | 131 | { |
129 | QString modkey; | 132 | QString modkey; |
130 | modkey.sprintf( "%s/%s", module->getModuleName().latin1(), module->getAbbrevKey().latin1() ); | 133 | modkey.sprintf( "%s/%s", module->getModuleName().latin1(), module->getAbbrevKey().latin1() ); |
131 | m_config.writeEntry( QString::number( count ), modkey ); | 134 | m_config.writeEntry( QString::number( count ), modkey ); |
132 | ++count; | 135 | ++count; |
133 | ++it; | 136 | ++it; |
134 | } | 137 | } |
135 | } | 138 | } |
136 | 139 | ||
137 | bool MainWindow::eventFilter( QObject *obj, QEvent *event ) | 140 | bool MainWindow::eventFilter( QObject *obj, QEvent *event ) |
138 | { | 141 | { |
139 | if ( event->type() == QEvent::KeyPress ) | 142 | if ( event->type() == QEvent::KeyPress ) |
140 | { | 143 | { |
141 | QKeyEvent *keyev = reinterpret_cast<QKeyEvent *>(event); | 144 | QKeyEvent *keyev = reinterpret_cast<QKeyEvent *>(event); |
142 | if ( keyev->key() == Key_Up ) | 145 | if ( keyev->key() == Key_Up ) |
143 | { | 146 | { |
144 | slotNavPrevVerse(); | 147 | slotNavPrevVerse(); |
145 | return true; | 148 | return true; |
146 | } | 149 | } |
147 | else if ( keyev->key() == Key_Down ) | 150 | else if ( keyev->key() == Key_Down ) |
148 | { | 151 | { |
149 | slotNavNextVerse(); | 152 | slotNavNextVerse(); |
150 | return true; | 153 | return true; |
151 | } | 154 | } |
152 | } | 155 | } |
153 | 156 | ||
154 | return QWidget::eventFilter( obj, event ); | 157 | return QWidget::eventFilter( obj, event ); |
155 | } | 158 | } |
156 | 159 | ||
157 | void MainWindow::initUI() | 160 | void MainWindow::initUI() |
158 | { | 161 | { |
159 | setCentralWidget( &m_tabs ); | 162 | setCentralWidget( &m_tabs ); |
160 | m_tabs.installEventFilter( this ); | 163 | m_tabs.installEventFilter( this ); |
161 | 164 | ||
162 | setToolBarsMovable( false ); | 165 | setToolBarsMovable( false ); |
163 | m_barDock = new QToolBar( this ); | 166 | m_barDock = new QToolBar( this ); |
164 | m_barDock->setHorizontalStretchable( true ); | 167 | m_barDock->setHorizontalStretchable( true ); |
165 | 168 | ||
166 | m_menuBar = new QMenuBar( m_barDock ); | 169 | m_menuBar = new QMenuBar( m_barDock ); |
167 | m_menuBar->setMargin( 0 ); | 170 | m_menuBar->setMargin( 0 ); |
168 | 171 | ||
169 | // Allocate toolbars | 172 | // Allocate toolbars |
170 | m_navToolbar = new NavBar( this ); | 173 | m_navToolbar = new NavBar( this ); |
171 | m_navToolbar->navBtnsEnable( false ); | 174 | m_navToolbar->navBtnsEnable( false ); |
172 | connect( m_navToolbar, SIGNAL(prevChapter()), this, SLOT(slotNavPrevChapter()) ); | 175 | connect( m_navToolbar, SIGNAL(prevPage()), this, SLOT(slotNavPrevPage()) ); |
173 | connect( m_navToolbar, SIGNAL(prevVerse()), this, SLOT(slotNavPrevVerse()) ); | 176 | connect( m_navToolbar, SIGNAL(prevVerse()), this, SLOT(slotNavPrevVerse()) ); |
174 | 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 &)) ); |
175 | connect( m_navToolbar, SIGNAL(nextVerse()), this, SLOT(slotNavNextVerse()) ); | 178 | connect( m_navToolbar, SIGNAL(nextVerse()), this, SLOT(slotNavNextVerse()) ); |
176 | connect( m_navToolbar, SIGNAL(nextChapter()), this, SLOT(slotNavNextChapter()) ); | 179 | connect( m_navToolbar, SIGNAL(nextPage()), this, SLOT(slotNavNextPage()) ); |
177 | connect( m_navToolbar, SIGNAL(autoScroll(bool)), this, SLOT(slotNavAutoScroll(bool)) ); | 180 | connect( m_navToolbar, SIGNAL(autoScroll(bool)), this, SLOT(slotNavAutoScroll(bool)) ); |
178 | connect( m_navToolbar, SIGNAL(scrollRateChanged(int)), this, SLOT(slotNavScrollRateChanged(int)) ); | 181 | connect( m_navToolbar, SIGNAL(scrollRateChanged(int)), this, SLOT(slotNavScrollRateChanged(int)) ); |
179 | 182 | ||
180 | m_searchToolbar = new SearchBar( this ); | 183 | m_searchToolbar = new SearchBar( this ); |
181 | 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 &)) ); |
182 | 185 | ||
183 | // Text menu | 186 | // Text menu |
184 | QPopupMenu *popup = new QPopupMenu( this ); | 187 | QPopupMenu *popup = new QPopupMenu( this ); |
185 | 188 | ||
186 | 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 ); |
187 | connect( a, SIGNAL(activated()), this, SLOT(slotTextOpen()) ); | 190 | connect( a, SIGNAL(activated()), this, SLOT(slotTextOpen()) ); |
188 | a->addTo( popup ); | 191 | a->addTo( popup ); |
189 | 192 | ||
190 | 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 ); |
191 | connect( m_actionTextClose, SIGNAL(activated()), this, SLOT(slotTextClose()) ); | 194 | connect( m_actionTextClose, SIGNAL(activated()), this, SLOT(slotTextClose()) ); |
192 | m_actionTextClose->addTo( popup ); | 195 | m_actionTextClose->addTo( popup ); |
193 | 196 | ||
194 | popup->insertSeparator(); | 197 | popup->insertSeparator(); |
195 | 198 | ||
196 | // TODO - need to implent | 199 | // TODO - need to implent |
197 | 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 ); |
198 | a->setEnabled( false ); | 201 | a->setEnabled( false ); |
199 | connect( a, SIGNAL(activated()), this, SLOT(slotTextInstall()) ); | 202 | connect( a, SIGNAL(activated()), this, SLOT(slotTextInstall()) ); |
200 | a->addTo( popup ); | 203 | a->addTo( popup ); |
201 | 204 | ||
202 | m_menuBar->insertItem( tr( "Text" ), popup ); | 205 | m_menuBar->insertItem( tr( "Text" ), popup ); |
203 | 206 | ||
204 | // Edit menu | 207 | // Edit menu |
205 | popup = new QPopupMenu( this ); | 208 | popup = new QPopupMenu( this ); |
206 | 209 | ||
207 | 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 ); |
208 | connect( m_actionEditCopy, SIGNAL(activated()), this, SLOT(slotEditCopy()) ); | 211 | connect( m_actionEditCopy, SIGNAL(activated()), this, SLOT(slotEditCopy()) ); |
209 | m_actionEditCopy->addTo( popup ); | 212 | m_actionEditCopy->addTo( popup ); |
210 | 213 | ||
211 | popup->insertSeparator(); | 214 | popup->insertSeparator(); |
212 | 215 | ||
213 | 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 ); |
214 | connect( a, SIGNAL(activated()), this, SLOT(slotEditConfigure()) ); | 217 | connect( a, SIGNAL(activated()), this, SLOT(slotEditConfigure()) ); |
215 | a->addTo( popup ); | 218 | a->addTo( popup ); |
216 | 219 | ||
217 | m_menuBar->insertItem( tr( "Edit" ), popup ); | 220 | m_menuBar->insertItem( tr( "Edit" ), popup ); |
218 | 221 | ||
219 | // Bookmark menu | 222 | // Bookmark menu |
220 | m_bookmarkMenu = new QPopupMenu( this ); | 223 | m_bookmarkMenu = new QPopupMenu( this ); |
221 | 224 | ||
222 | 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 ); |
223 | connect( m_actionBookmarkAdd, SIGNAL(activated()), this, SLOT(slotBookmarkAdd()) ); | 226 | connect( m_actionBookmarkAdd, SIGNAL(activated()), this, SLOT(slotBookmarkAdd()) ); |
224 | m_actionBookmarkAdd->addTo( m_bookmarkMenu ); | 227 | m_actionBookmarkAdd->addTo( m_bookmarkMenu ); |
225 | 228 | ||
226 | 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 ); |
227 | connect( m_actionBookmarkRemove, SIGNAL(activated()), this, SLOT(slotBookmarkRemove()) ); | 230 | connect( m_actionBookmarkRemove, SIGNAL(activated()), this, SLOT(slotBookmarkRemove()) ); |
228 | m_actionBookmarkRemove->addTo( m_bookmarkMenu ); | 231 | m_actionBookmarkRemove->addTo( m_bookmarkMenu ); |
229 | 232 | ||
230 | m_bookmarkMenu->insertSeparator(); | 233 | m_bookmarkMenu->insertSeparator(); |
231 | 234 | ||
232 | m_menuBar->insertItem( tr( "Bookmark" ), m_bookmarkMenu ); | 235 | m_menuBar->insertItem( tr( "Bookmark" ), m_bookmarkMenu ); |
233 | 236 | ||
234 | // View menu | 237 | // View menu |
235 | popup = new QPopupMenu( this ); | 238 | popup = new QPopupMenu( this ); |
236 | 239 | ||
237 | // 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.) |
238 | for ( a = m_actionSwordOpts.first(); a; a = m_actionSwordOpts.next() ) | 241 | for ( a = m_actionSwordOpts.first(); a; a = m_actionSwordOpts.next() ) |
239 | { | 242 | { |
240 | a->setToggleAction( true ); | 243 | a->setToggleAction( true ); |
@@ -271,129 +274,129 @@ void MainWindow::openModule( const QString &modulename, const QString &key ) | |||
271 | QObjectListIt it( *childlist ); | 274 | QObjectListIt it( *childlist ); |
272 | while ( ( tw = reinterpret_cast<TextWidget *>(it.current()) ) != 0 && | 275 | while ( ( tw = reinterpret_cast<TextWidget *>(it.current()) ) != 0 && |
273 | tw->getModuleName() != modulename ) | 276 | tw->getModuleName() != modulename ) |
274 | ++it; | 277 | ++it; |
275 | if ( tw && tw->getModuleName() == modulename ) | 278 | if ( tw && tw->getModuleName() == modulename ) |
276 | { | 279 | { |
277 | // Set key if one is present | 280 | // Set key if one is present |
278 | if ( !key.isNull() ) | 281 | if ( !key.isNull() ) |
279 | tw->setKey( key ); | 282 | tw->setKey( key ); |
280 | 283 | ||
281 | // Raise tab | 284 | // Raise tab |
282 | m_tabs.setCurrentTab( tw ); | 285 | m_tabs.setCurrentTab( tw ); |
283 | } | 286 | } |
284 | } | 287 | } |
285 | 288 | ||
286 | if ( m_alwaysOpenNew || !tw ) | 289 | if ( m_alwaysOpenNew || !tw ) |
287 | { | 290 | { |
288 | // Open module in new tab | 291 | // Open module in new tab |
289 | QString icon; | 292 | QString icon; |
290 | QString type = module->Type(); | 293 | QString type = module->Type(); |
291 | 294 | ||
292 | if ( type == "Biblical Texts" ) | 295 | if ( type == "Biblical Texts" ) |
293 | icon = "dagger/bibletext"; | 296 | icon = "dagger/bibletext"; |
294 | else if ( type == "Commentaries" ) | 297 | else if ( type == "Commentaries" ) |
295 | icon = "dagger/commentary"; | 298 | icon = "dagger/commentary"; |
296 | else if ( type == "Lexicons / Dictionaries" ) | 299 | else if ( type == "Lexicons / Dictionaries" ) |
297 | icon = "dagger/lexicon"; | 300 | icon = "dagger/lexicon"; |
298 | 301 | ||
299 | tw = new TextWidget( this, module, m_numVerses, &m_textFont ); | 302 | tw = new TextWidget( this, module, m_numVerses, &m_textFont ); |
300 | connect( tw, SIGNAL(sigRefClicked(const QString &)), | 303 | connect( tw, SIGNAL(sigRefClicked(const QString &)), |
301 | this, SLOT(slotTextRefClicked(const QString &)) ); | 304 | this, SLOT(slotTextRefClicked(const QString &)) ); |
302 | connect( this, SIGNAL(sigNumVersesChanged(int)), tw, SLOT(slotNumVersesChanged(int)) ); | 305 | connect( this, SIGNAL(sigNumVersesChanged(int)), tw, SLOT(slotNumVersesChanged(int)) ); |
303 | connect( this, SIGNAL(sigFontChanged(const QFont *)), tw, SLOT(slotFontChanged(const QFont *)) ); | 306 | connect( this, SIGNAL(sigFontChanged(const QFont *)), tw, SLOT(slotFontChanged(const QFont *)) ); |
304 | connect( this, SIGNAL(sigOptionChanged()), tw, SLOT(slotOptionChanged()) ); | 307 | connect( this, SIGNAL(sigOptionChanged()), tw, SLOT(slotOptionChanged()) ); |
305 | 308 | ||
306 | m_tabs.addTab( tw, icon, modulename ); | 309 | m_tabs.addTab( tw, icon, modulename ); |
307 | 310 | ||
308 | m_actionTextClose->setEnabled( true ); | 311 | m_actionTextClose->setEnabled( true ); |
309 | m_actionEditCopy->setEnabled( true ); | 312 | m_actionEditCopy->setEnabled( true ); |
310 | m_actionBookmarkAdd->setEnabled( true ); | 313 | m_actionBookmarkAdd->setEnabled( true ); |
311 | 314 | ||
312 | // Set key if one is present | 315 | // Set key if one is present |
313 | if ( !key.isNull() ) | 316 | if ( !key.isNull() ) |
314 | tw->setKey( key ); | 317 | tw->setKey( key ); |
315 | } | 318 | } |
316 | } | 319 | } |
317 | } | 320 | } |
318 | 321 | ||
319 | int MainWindow::findBookmark( const QString &bookmark ) | 322 | int MainWindow::findBookmark( const QString &bookmark ) |
320 | { | 323 | { |
321 | int index = 3; | 324 | int index = 3; |
322 | int id = m_bookmarkMenu->idAt( index ); | 325 | int id = m_bookmarkMenu->idAt( index ); |
323 | while ( ( id != -1 ) && ( m_bookmarkMenu->text( id ) != bookmark ) ) | 326 | while ( ( id != -1 ) && ( m_bookmarkMenu->text( id ) != bookmark ) ) |
324 | { | 327 | { |
325 | ++index; | 328 | ++index; |
326 | id = m_bookmarkMenu->idAt( index ); | 329 | id = m_bookmarkMenu->idAt( index ); |
327 | } | 330 | } |
328 | 331 | ||
329 | return id; | 332 | return id; |
330 | } | 333 | } |
331 | 334 | ||
332 | void MainWindow::enableScreenBlanking( bool enable ) | 335 | void MainWindow::enableScreenBlanking( bool enable ) |
333 | { | 336 | { |
334 | enable ? QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Enable | 337 | enable ? QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Enable |
335 | : QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Disable; | 338 | : QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::DisableSuspend; |
336 | } | 339 | } |
337 | 340 | ||
338 | void MainWindow::initConfig() | 341 | void MainWindow::initConfig() |
339 | { | 342 | { |
340 | bool show; | 343 | bool show; |
341 | 344 | ||
342 | m_config.setGroup( "Sword" ); | 345 | m_config.setGroup( "Sword" ); |
343 | for ( QAction *a = m_actionSwordOpts.first(); a; a = m_actionSwordOpts.next() ) | 346 | for ( QAction *a = m_actionSwordOpts.first(); a; a = m_actionSwordOpts.next() ) |
344 | { | 347 | { |
345 | show = m_config.readBoolEntry( a->text(), false ); | 348 | show = m_config.readBoolEntry( a->text(), false ); |
346 | a->setOn( show ); | 349 | a->setOn( show ); |
347 | m_swordMgr->setGlobalOption ( a->text(), show ? "On" : "Off" ); | 350 | m_swordMgr->setGlobalOption ( a->text(), show ? "On" : "Off" ); |
348 | } | 351 | } |
349 | 352 | ||
350 | // Display/hide toolbars based on last run | 353 | // Display/hide toolbars based on last run |
351 | m_config.setGroup( "Config" ); | 354 | m_config.setGroup( "Config" ); |
352 | 355 | ||
353 | m_alwaysOpenNew = m_config.readBoolEntry( "AlwaysOpenNew", false ); | 356 | m_alwaysOpenNew = m_config.readBoolEntry( "AlwaysOpenNew", false ); |
354 | m_navToolbar->setAutoScrollRate( m_config.readNumEntry( "AutoScroll", 50 ) ); | 357 | m_navToolbar->setAutoScrollRate( m_config.readNumEntry( "AutoScroll", 50 ) ); |
355 | m_disableScreenBlank = m_config.readBoolEntry( "DisableScreenBlanking", false ); | 358 | m_disableScreenBlank = m_config.readBoolEntry( "DisableScreenBlanking", false ); |
356 | enableScreenBlanking( !m_disableScreenBlank ); | 359 | enableScreenBlanking( !m_disableScreenBlank ); |
357 | m_copyFormat = m_config.readNumEntry( "CopyFormat", 0 ); | 360 | m_copyFormat = m_config.readNumEntry( "CopyFormat", 0 ); |
358 | 361 | ||
359 | show = m_config.readBoolEntry( "NavBar", false ); | 362 | show = m_config.readBoolEntry( "NavBar", false ); |
360 | m_actionViewNavToolbar->setOn( show ); | 363 | m_actionViewNavToolbar->setOn( show ); |
361 | slotViewNavToolbar( show ); | 364 | slotViewNavToolbar( show ); |
362 | 365 | ||
363 | m_numVerses = m_config.readNumEntry( "NumVerses", 5 ); | 366 | m_numVerses = m_config.readNumEntry( "NumVerses", 5 ); |
364 | 367 | ||
365 | show = m_config.readBoolEntry( "SearchBar", false ); | 368 | show = m_config.readBoolEntry( "SearchBar", false ); |
366 | m_actionViewSearchToolbar->setOn( show ); | 369 | m_actionViewSearchToolbar->setOn( show ); |
367 | slotViewSearchToolbar( show ); | 370 | slotViewSearchToolbar( show ); |
368 | 371 | ||
369 | // Set text font | 372 | // Set text font |
370 | m_config.setGroup( "Font" ); | 373 | m_config.setGroup( "Font" ); |
371 | QString fontFamily = m_config.readEntry( "Family", QString::null ); | 374 | QString fontFamily = m_config.readEntry( "Family", QString::null ); |
372 | !fontFamily.isNull() ? m_textFont = QFont( fontFamily, | 375 | !fontFamily.isNull() ? m_textFont = QFont( fontFamily, |
373 | m_config.readNumEntry( "Size", -1 ), | 376 | m_config.readNumEntry( "Size", -1 ), |
374 | m_config.readNumEntry( "Weight", QFont::Normal ), | 377 | m_config.readNumEntry( "Weight", QFont::Normal ), |
375 | m_config.readBoolEntry( "Italic", false ) ) | 378 | m_config.readBoolEntry( "Italic", false ) ) |
376 | : 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 |
377 | 380 | ||
378 | // Load bookmarks | 381 | // Load bookmarks |
379 | m_config.setGroup( "Bookmarks"); | 382 | m_config.setGroup( "Bookmarks"); |
380 | int count = 1; | 383 | int count = 1; |
381 | QString key = m_config.readEntry( QString::number( count ), QString::null ); | 384 | QString key = m_config.readEntry( QString::number( count ), QString::null ); |
382 | while ( !key.isNull() ) | 385 | while ( !key.isNull() ) |
383 | { | 386 | { |
384 | int pos = key.find( "/" ); | 387 | int pos = key.find( "/" ); |
385 | if ( pos > -1 ) | 388 | if ( pos > -1 ) |
386 | { | 389 | { |
387 | QString bookmark; | 390 | QString bookmark; |
388 | bookmark.sprintf( "%s (%s)", key.right( key.length() - ( pos + 1 ) ).latin1(), | 391 | bookmark.sprintf( "%s (%s)", key.right( key.length() - ( pos + 1 ) ).latin1(), |
389 | key.left( pos ).latin1() ); | 392 | key.left( pos ).latin1() ); |
390 | QAction *a = new QAction( bookmark, QString::null, 0, this, 0 ); | 393 | QAction *a = new QAction( bookmark, QString::null, 0, this, 0 ); |
391 | a->addTo( m_bookmarkMenu ); | 394 | a->addTo( m_bookmarkMenu ); |
392 | connect( a, SIGNAL(activated()), this, SLOT(slotBookmarkSelected()) ); | 395 | connect( a, SIGNAL(activated()), this, SLOT(slotBookmarkSelected()) ); |
393 | } | 396 | } |
394 | 397 | ||
395 | ++count; | 398 | ++count; |
396 | key = m_config.readEntry( QString::number( count ), QString::null ); | 399 | key = m_config.readEntry( QString::number( count ), QString::null ); |
397 | } | 400 | } |
398 | m_actionBookmarkRemove->setEnabled( count > 1 ); | 401 | m_actionBookmarkRemove->setEnabled( count > 1 ); |
399 | 402 | ||
@@ -536,175 +539,175 @@ void MainWindow::slotBookmarkAdd() | |||
536 | a->addTo( m_bookmarkMenu ); | 539 | a->addTo( m_bookmarkMenu ); |
537 | connect( a, SIGNAL(activated()), this, SLOT(slotBookmarkSelected()) ); | 540 | connect( a, SIGNAL(activated()), this, SLOT(slotBookmarkSelected()) ); |
538 | 541 | ||
539 | // Make sure remove option is enabled | 542 | // Make sure remove option is enabled |
540 | m_actionBookmarkRemove->setEnabled( true ); | 543 | m_actionBookmarkRemove->setEnabled( true ); |
541 | 544 | ||
542 | } | 545 | } |
543 | } | 546 | } |
544 | } | 547 | } |
545 | 548 | ||
546 | void MainWindow::slotBookmarkRemove() | 549 | void MainWindow::slotBookmarkRemove() |
547 | { | 550 | { |
548 | TextWidget *text = reinterpret_cast<TextWidget *>(m_tabs.currentWidget()); | 551 | TextWidget *text = reinterpret_cast<TextWidget *>(m_tabs.currentWidget()); |
549 | if ( text ) | 552 | if ( text ) |
550 | { | 553 | { |
551 | // See if bookmark exists for current module key | 554 | // See if bookmark exists for current module key |
552 | int menuId = findBookmark( text->getFullKey() ); | 555 | int menuId = findBookmark( text->getFullKey() ); |
553 | if ( menuId != -1 ) | 556 | if ( menuId != -1 ) |
554 | { | 557 | { |
555 | // Bookmark found, remove | 558 | // Bookmark found, remove |
556 | m_bookmarkMenu->removeItem( menuId ); | 559 | m_bookmarkMenu->removeItem( menuId ); |
557 | 560 | ||
558 | //If this was the last bookmark, disable the remove option | 561 | //If this was the last bookmark, disable the remove option |
559 | if ( m_bookmarkMenu->idAt( 3 ) == -1 ) | 562 | if ( m_bookmarkMenu->idAt( 3 ) == -1 ) |
560 | m_actionBookmarkRemove->setEnabled( false ); | 563 | m_actionBookmarkRemove->setEnabled( false ); |
561 | } | 564 | } |
562 | } | 565 | } |
563 | } | 566 | } |
564 | 567 | ||
565 | void MainWindow::slotBookmarkSelected() | 568 | void MainWindow::slotBookmarkSelected() |
566 | { | 569 | { |
567 | const QAction *action = reinterpret_cast<const QAction *>(sender()); | 570 | const QAction *action = reinterpret_cast<const QAction *>(sender()); |
568 | if ( action ) | 571 | if ( action ) |
569 | { | 572 | { |
570 | QString bookmark = action->text(); | 573 | QString bookmark = action->text(); |
571 | int pos = bookmark.find( " (" ); | 574 | int pos = bookmark.find( " (" ); |
572 | QString key = bookmark.left( pos ); | 575 | QString key = bookmark.left( pos ); |
573 | pos += 2; | 576 | pos += 2; |
574 | QString module = bookmark.mid( pos, bookmark.find( ")", pos ) - pos ); | 577 | QString module = bookmark.mid( pos, bookmark.find( ")", pos ) - pos ); |
575 | 578 | ||
576 | openModule( module, key ); | 579 | openModule( module, key ); |
577 | } | 580 | } |
578 | } | 581 | } |
579 | 582 | ||
580 | void MainWindow::slotViewSwordOption( bool enabled ) | 583 | void MainWindow::slotViewSwordOption( bool enabled ) |
581 | { | 584 | { |
582 | const QAction *action = reinterpret_cast<const QAction*>(sender()); | 585 | const QAction *action = reinterpret_cast<const QAction*>(sender()); |
583 | m_swordMgr->setGlobalOption ( action->text(), enabled ? "On" : "Off" ); | 586 | m_swordMgr->setGlobalOption ( action->text(), enabled ? "On" : "Off" ); |
584 | 587 | ||
585 | emit sigOptionChanged(); | 588 | emit sigOptionChanged(); |
586 | } | 589 | } |
587 | 590 | ||
588 | void MainWindow::slotViewNavToolbar( bool enabled ) | 591 | void MainWindow::slotViewNavToolbar( bool enabled ) |
589 | { | 592 | { |
590 | enabled ? m_navToolbar->show() | 593 | enabled ? m_navToolbar->show() |
591 | : m_navToolbar->hide(); | 594 | : m_navToolbar->hide(); |
592 | } | 595 | } |
593 | 596 | ||
594 | void MainWindow::slotViewSearchToolbar( bool enabled ) | 597 | void MainWindow::slotViewSearchToolbar( bool enabled ) |
595 | { | 598 | { |
596 | enabled ? m_searchToolbar->show() | 599 | enabled ? m_searchToolbar->show() |
597 | : m_searchToolbar->hide(); | 600 | : m_searchToolbar->hide(); |
598 | } | 601 | } |
599 | 602 | ||
600 | void MainWindow::slotNavPrevChapter() | 603 | void MainWindow::slotNavPrevPage() |
601 | { | 604 | { |
602 | TextWidget *text = reinterpret_cast<TextWidget *>(m_tabs.currentWidget()); | 605 | TextWidget *text = reinterpret_cast<TextWidget *>(m_tabs.currentWidget()); |
603 | if ( text ) | 606 | if ( text ) |
604 | { | 607 | { |
605 | text->prevChapter(); | 608 | text->prevPage(); |
606 | setCaption( QString( "%1 - Dagger" ).arg( text->getFullKey() ) ); | 609 | setCaption( QString( "%1 - Dagger" ).arg( text->getFullKey() ) ); |
607 | m_navToolbar->setKey( text->getAbbrevKey() ); | 610 | m_navToolbar->setKey( text->getAbbrevKey() ); |
608 | } | 611 | } |
609 | } | 612 | } |
610 | 613 | ||
611 | void MainWindow::slotNavPrevVerse() | 614 | void MainWindow::slotNavPrevVerse() |
612 | { | 615 | { |
613 | TextWidget *text = reinterpret_cast<TextWidget *>(m_tabs.currentWidget()); | 616 | TextWidget *text = reinterpret_cast<TextWidget *>(m_tabs.currentWidget()); |
614 | if ( text ) | 617 | if ( text ) |
615 | { | 618 | { |
616 | text->prevVerse(); | 619 | text->prevVerse(); |
617 | setCaption( QString( "%1 - Dagger" ).arg( text->getFullKey() ) ); | 620 | setCaption( QString( "%1 - Dagger" ).arg( text->getFullKey() ) ); |
618 | m_navToolbar->setKey( text->getAbbrevKey() ); | 621 | m_navToolbar->setKey( text->getAbbrevKey() ); |
619 | } | 622 | } |
620 | } | 623 | } |
621 | 624 | ||
622 | void MainWindow::slotNavKeyChanged( const QString &newKey ) | 625 | void MainWindow::slotNavKeyChanged( const QString &newKey ) |
623 | { | 626 | { |
624 | QString key = newKey; | 627 | QString key = newKey; |
625 | key.replace( QRegExp( "[-=.]" ), ":" ); | 628 | key.replace( QRegExp( "[-=.]" ), ":" ); |
626 | 629 | ||
627 | TextWidget *text = reinterpret_cast<TextWidget *>(m_tabs.currentWidget()); | 630 | TextWidget *text = reinterpret_cast<TextWidget *>(m_tabs.currentWidget()); |
628 | if ( text ) | 631 | if ( text ) |
629 | { | 632 | { |
630 | text->setKey( key ); | 633 | text->setKey( key ); |
631 | setCaption( QString( "%1 - Dagger" ).arg( text->getFullKey() ) ); | 634 | setCaption( QString( "%1 - Dagger" ).arg( text->getFullKey() ) ); |
632 | } | 635 | } |
633 | } | 636 | } |
634 | 637 | ||
635 | void MainWindow::slotNavNextVerse() | 638 | void MainWindow::slotNavNextVerse() |
636 | { | 639 | { |
637 | TextWidget *text = reinterpret_cast<TextWidget *>(m_tabs.currentWidget()); | 640 | TextWidget *text = reinterpret_cast<TextWidget *>(m_tabs.currentWidget()); |
638 | if ( text ) | 641 | if ( text ) |
639 | { | 642 | { |
640 | text->nextVerse(); | 643 | text->nextVerse(); |
641 | setCaption( QString( "%1 - Dagger" ).arg( text->getFullKey() ) ); | 644 | setCaption( QString( "%1 - Dagger" ).arg( text->getFullKey() ) ); |
642 | m_navToolbar->setKey( text->getAbbrevKey() ); | 645 | m_navToolbar->setKey( text->getAbbrevKey() ); |
643 | } | 646 | } |
644 | } | 647 | } |
645 | 648 | ||
646 | void MainWindow::slotNavNextChapter() | 649 | void MainWindow::slotNavNextPage() |
647 | { | 650 | { |
648 | TextWidget *text = reinterpret_cast<TextWidget *>(m_tabs.currentWidget()); | 651 | TextWidget *text = reinterpret_cast<TextWidget *>(m_tabs.currentWidget()); |
649 | if ( text ) | 652 | if ( text ) |
650 | { | 653 | { |
651 | text->nextChapter(); | 654 | text->nextPage(); |
652 | setCaption( QString( "%1 - Dagger" ).arg( text->getFullKey() ) ); | 655 | setCaption( QString( "%1 - Dagger" ).arg( text->getFullKey() ) ); |
653 | m_navToolbar->setKey( text->getAbbrevKey() ); | 656 | m_navToolbar->setKey( text->getAbbrevKey() ); |
654 | } | 657 | } |
655 | } | 658 | } |
656 | 659 | ||
657 | void MainWindow::slotNavAutoScroll( bool enabled ) | 660 | void MainWindow::slotNavAutoScroll( bool enabled ) |
658 | { | 661 | { |
659 | m_autoScrollTimer.stop(); | 662 | m_autoScrollTimer.stop(); |
660 | 663 | ||
661 | if ( enabled ) | 664 | if ( enabled ) |
662 | m_autoScrollTimer.start( m_navToolbar->autoScrollRate() * 100 ); | 665 | m_autoScrollTimer.start( m_navToolbar->autoScrollRate() * 100 ); |
663 | } | 666 | } |
664 | 667 | ||
665 | void MainWindow::slotNavScrollRateChanged( int newRate ) | 668 | void MainWindow::slotNavScrollRateChanged( int newRate ) |
666 | { | 669 | { |
667 | if ( m_autoScrollTimer.isActive() ) | 670 | if ( m_autoScrollTimer.isActive() ) |
668 | { | 671 | { |
669 | m_autoScrollTimer.stop(); | 672 | m_autoScrollTimer.stop(); |
670 | m_autoScrollTimer.start( newRate * 100 ); | 673 | m_autoScrollTimer.start( newRate * 100 ); |
671 | } | 674 | } |
672 | } | 675 | } |
673 | 676 | ||
674 | void MainWindow::slotSearchResultClicked( const QString &key ) | 677 | void MainWindow::slotSearchResultClicked( const QString &key ) |
675 | { | 678 | { |
676 | TextWidget *text = reinterpret_cast<TextWidget *>(m_tabs.currentWidget()); | 679 | TextWidget *text = reinterpret_cast<TextWidget *>(m_tabs.currentWidget()); |
677 | if ( text ) | 680 | if ( text ) |
678 | { | 681 | { |
679 | text->setKey( key ); | 682 | text->setKey( key ); |
680 | setCaption( QString( "%1 - Dagger" ).arg( text->getFullKey() ) ); | 683 | setCaption( QString( "%1 - Dagger" ).arg( text->getFullKey() ) ); |
681 | m_navToolbar->setKey( text->getAbbrevKey() ); | 684 | m_navToolbar->setKey( text->getAbbrevKey() ); |
682 | } | 685 | } |
683 | } | 686 | } |
684 | 687 | ||
685 | void MainWindow::slotTextRefClicked( const QString &ref ) | 688 | void MainWindow::slotTextRefClicked( const QString &ref ) |
686 | { | 689 | { |
687 | //owarn << "Reference: " << ref << oendl; | 690 | //owarn << "Reference: " << ref << oendl; |
688 | if ( !ref.isNull() ) | 691 | if ( !ref.isNull() ) |
689 | { | 692 | { |
690 | TextWidget *text = reinterpret_cast<TextWidget *>(m_tabs.currentWidget()); | 693 | TextWidget *text = reinterpret_cast<TextWidget *>(m_tabs.currentWidget()); |
691 | if ( text ) | 694 | if ( text ) |
692 | { | 695 | { |
693 | QString module; | 696 | QString module; |
694 | QString key( ref ); | 697 | QString key( ref ); |
695 | key.remove( 0, 2 ); | 698 | key.remove( 0, 2 ); |
696 | 699 | ||
697 | QChar book = ref.at( 1 ); | 700 | QChar book = ref.at( 1 ); |
698 | // TODO- this is ugly, need better way to determine type of reference | 701 | // TODO- this is ugly, need better way to determine type of reference |
699 | // take a look at SWModule::getRawEntry() | 702 | // take a look at SWModule::getRawEntry() |
700 | int keyValue = key.toInt(); | 703 | int keyValue = key.toInt(); |
701 | if ( book == 'H' && keyValue <= 8674 ) | 704 | if ( book == 'H' && keyValue <= 8674 ) |
702 | module = "StrongsHebrew"; | 705 | module = "StrongsHebrew"; |
703 | else if ( book == 'G' && keyValue <= 5624 ) | 706 | else if ( book == 'G' && keyValue <= 5624 ) |
704 | module = "StrongsGreek"; | 707 | module = "StrongsGreek"; |
705 | 708 | ||
706 | if ( !module.isEmpty() ) | 709 | if ( !module.isEmpty() ) |
707 | openModule( module, key ); | 710 | openModule( module, key ); |
708 | } | 711 | } |
709 | } | 712 | } |
710 | } | 713 | } |
diff --git a/noncore/apps/dagger/mainwindow.h b/noncore/apps/dagger/mainwindow.h index 0c7f3c8..b114e33 100644 --- a/noncore/apps/dagger/mainwindow.h +++ b/noncore/apps/dagger/mainwindow.h | |||
@@ -50,85 +50,85 @@ public: | |||
50 | protected: | 50 | protected: |
51 | bool eventFilter( QObject *obj, QEvent *event ); | 51 | bool eventFilter( QObject *obj, QEvent *event ); |
52 | 52 | ||
53 | private: | 53 | private: |
54 | sword::SWMgr *m_swordMgr; // Sword library module manager | 54 | sword::SWMgr *m_swordMgr; // Sword library module manager |
55 | Config m_config; // Application configuration | 55 | Config m_config; // Application configuration |
56 | 56 | ||
57 | // Configuration items | 57 | // Configuration items |
58 | QString m_modulePath; // Directory where sword modules are located | 58 | QString m_modulePath; // Directory where sword modules are located |
59 | bool m_alwaysOpenNew; // Whether or not open modules as new window/tab (or re-use existing) | 59 | bool m_alwaysOpenNew; // Whether or not open modules as new window/tab (or re-use existing) |
60 | int m_numVerses; // Number of verses to display at a time for Bible modules | 60 | int m_numVerses; // Number of verses to display at a time for Bible modules |
61 | bool m_disableScreenBlank; // Whether or not to disable automatic screen blanking | 61 | bool m_disableScreenBlank; // Whether or not to disable automatic screen blanking |
62 | int m_copyFormat; // Format used when copying | 62 | int m_copyFormat; // Format used when copying |
63 | QFont m_textFont; // Font used for module text | 63 | QFont m_textFont; // Font used for module text |
64 | 64 | ||
65 | // UI components | 65 | // UI components |
66 | QToolBar *m_barDock; // Main toolbar which contains menu and all other toolbars | 66 | QToolBar *m_barDock; // Main toolbar which contains menu and all other toolbars |
67 | QMenuBar *m_menuBar; // Application menu bar | 67 | QMenuBar *m_menuBar; // Application menu bar |
68 | QPopupMenu *m_bookmarkMenu; // Pointer to bookmark menu | 68 | QPopupMenu *m_bookmarkMenu; // Pointer to bookmark menu |
69 | NavBar *m_navToolbar; // Text navigation toolbar | 69 | NavBar *m_navToolbar; // Text navigation toolbar |
70 | SearchBar *m_searchToolbar; // Text search toolbar | 70 | SearchBar *m_searchToolbar; // Text search toolbar |
71 | Opie::Ui::OTabWidget m_tabs; // Main widget in which all texts, notes, etc. will be displayed | 71 | Opie::Ui::OTabWidget m_tabs; // Main widget in which all texts, notes, etc. will be displayed |
72 | 72 | ||
73 | // Other visual items | 73 | // Other visual items |
74 | QPixmap *m_bibleIcon; // Icon used for bible modules | 74 | QPixmap *m_bibleIcon; // Icon used for bible modules |
75 | QPixmap *m_commentaryIcon; // Icon used for commentary modules | 75 | QPixmap *m_commentaryIcon; // Icon used for commentary modules |
76 | QPixmap *m_lexiconIcon; // Icon used for lexicon modules | 76 | QPixmap *m_lexiconIcon; // Icon used for lexicon modules |
77 | 77 | ||
78 | QTimer m_autoScrollTimer; // Timer for auto-scrolling of bible texts | 78 | QTimer m_autoScrollTimer; // Timer for auto-scrolling of bible texts |
79 | 79 | ||
80 | // Menubar/toolbar actions | 80 | // Menubar/toolbar actions |
81 | SwordOptionList m_actionSwordOpts; // List of actions for sword options | 81 | SwordOptionList m_actionSwordOpts; // List of actions for sword options |
82 | // (e.g. footnotes, Strong's numbers, etc.) | 82 | // (e.g. footnotes, Strong's numbers, etc.) |
83 | QAction *m_actionTextClose; // Action for closing currently opened module | 83 | QAction *m_actionTextClose; // Action for closing currently opened module |
84 | QAction *m_actionEditCopy; // Action for copying text from current module | 84 | QAction *m_actionEditCopy; // Action for copying text from current module |
85 | QAction *m_actionBookmarkAdd; // Action for adding a bookmark | 85 | QAction *m_actionBookmarkAdd; // Action for adding a bookmark |
86 | QAction *m_actionBookmarkRemove; // Action for removing a bookmark | 86 | QAction *m_actionBookmarkRemove; // Action for removing a bookmark |
87 | QAction *m_actionViewNavToolbar; // Action for displaying/hiding the navigation toolbar | 87 | QAction *m_actionViewNavToolbar; // Action for displaying/hiding the navigation toolbar |
88 | QAction *m_actionViewSearchToolbar; // Action for displaying/hiding the search toolbar | 88 | QAction *m_actionViewSearchToolbar; // Action for displaying/hiding the search toolbar |
89 | 89 | ||
90 | void initUI(); | 90 | void initUI(); |
91 | void openModule( const QString &modulename, const QString &key = 0x0 ); | 91 | void openModule( const QString &modulename, const QString &key = 0x0 ); |
92 | int findBookmark( const QString &bookmark ); | 92 | int findBookmark( const QString &bookmark ); |
93 | void enableScreenBlanking( bool enable ); | 93 | void enableScreenBlanking( bool enable ); |
94 | 94 | ||
95 | private slots: | 95 | private slots: |
96 | void initConfig(); | 96 | void initConfig(); |
97 | 97 | ||
98 | void slotTextDisplayed( QWidget *textWidget ); | 98 | void slotTextDisplayed( QWidget *textWidget ); |
99 | 99 | ||
100 | // Menubar/toolbar action slots | 100 | // Menubar/toolbar action slots |
101 | void slotTextOpen(); | 101 | void slotTextOpen(); |
102 | void slotTextClose(); | 102 | void slotTextClose(); |
103 | void slotTextInstall(); | 103 | void slotTextInstall(); |
104 | void slotEditCopy(); | 104 | void slotEditCopy(); |
105 | void slotEditConfigure(); | 105 | void slotEditConfigure(); |
106 | void slotBookmarkAdd(); | 106 | void slotBookmarkAdd(); |
107 | void slotBookmarkRemove(); | 107 | void slotBookmarkRemove(); |
108 | void slotBookmarkSelected(); | 108 | void slotBookmarkSelected(); |
109 | void slotViewSwordOption( bool enabled ); | 109 | void slotViewSwordOption( bool enabled ); |
110 | void slotViewNavToolbar( bool enabled ); | 110 | void slotViewNavToolbar( bool enabled ); |
111 | void slotViewSearchToolbar( bool enabled ); | 111 | void slotViewSearchToolbar( bool enabled ); |
112 | 112 | ||
113 | // Navigation toolbar slots | 113 | // Navigation toolbar slots |
114 | void slotNavPrevChapter(); | 114 | void slotNavPrevPage(); |
115 | void slotNavPrevVerse(); | 115 | void slotNavPrevVerse(); |
116 | void slotNavKeyChanged( const QString &newKey ); | 116 | void slotNavKeyChanged( const QString &newKey ); |
117 | void slotNavNextVerse(); | 117 | void slotNavNextVerse(); |
118 | void slotNavNextChapter(); | 118 | void slotNavNextPage(); |
119 | void slotNavAutoScroll( bool enabled ); | 119 | void slotNavAutoScroll( bool enabled ); |
120 | void slotNavScrollRateChanged( int newRate ); | 120 | void slotNavScrollRateChanged( int newRate ); |
121 | 121 | ||
122 | // Search toolbar slots | 122 | // Search toolbar slots |
123 | void slotSearchResultClicked( const QString &key ); | 123 | void slotSearchResultClicked( const QString &key ); |
124 | 124 | ||
125 | // Text widget slots | 125 | // Text widget slots |
126 | void slotTextRefClicked( const QString &ref ); | 126 | void slotTextRefClicked( const QString &ref ); |
127 | 127 | ||
128 | signals: | 128 | signals: |
129 | void sigNumVersesChanged( int numVerses ); | 129 | void sigNumVersesChanged( int numVerses ); |
130 | void sigFontChanged( const QFont *newFont ); | 130 | void sigFontChanged( const QFont *newFont ); |
131 | void sigOptionChanged(); | 131 | void sigOptionChanged(); |
132 | }; | 132 | }; |
133 | 133 | ||
134 | #endif | 134 | #endif |
diff --git a/noncore/apps/dagger/navbar.cpp b/noncore/apps/dagger/navbar.cpp index 4781af0..212dc36 100644 --- a/noncore/apps/dagger/navbar.cpp +++ b/noncore/apps/dagger/navbar.cpp | |||
@@ -1,93 +1,93 @@ | |||
1 | /* | 1 | /* |
2 | Dagger - A Bible study program utilizing the Sword library. | 2 | Dagger - A Bible study program utilizing the Sword library. |
3 | Copyright (c) 2004 Dan Williams <drw@handhelds.org> | 3 | Copyright (c) 2004 Dan Williams <drw@handhelds.org> |
4 | 4 | ||
5 | This file is free software; you can redistribute it and/or modify it under | 5 | This file is free software; you can redistribute it and/or modify it under |
6 | the terms of the GNU General Public License as published by the Free Software | 6 | the terms of the GNU General Public License as published by the Free Software |
7 | Foundation; either version 2 of the License, or (at your option) any later version. | 7 | Foundation; either version 2 of the License, or (at your option) any later version. |
8 | 8 | ||
9 | This file is distributed in the hope that it will be useful, but WITHOUT ANY | 9 | This file is distributed in the hope that it will be useful, but WITHOUT ANY |
10 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A | 10 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A |
11 | PARTICULAR PURPOSE. See the GNU General Public License for more details. | 11 | PARTICULAR PURPOSE. See the GNU General Public License for more details. |
12 | 12 | ||
13 | You should have received a copy of the GNU General Public License along with this | 13 | You should have received a copy of the GNU General Public License along with this |
14 | file; see the file COPYING. If not, write to the Free Software Foundation, Inc., | 14 | file; see the file COPYING. If not, write to the Free Software Foundation, Inc., |
15 | 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | 15 | 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
16 | */ | 16 | */ |
17 | 17 | ||
18 | #include "navbar.h" | 18 | #include "navbar.h" |
19 | 19 | ||
20 | #include <qpe/config.h> | 20 | #include <qpe/config.h> |
21 | #include <qpe/resource.h> | 21 | #include <qpe/resource.h> |
22 | 22 | ||
23 | #include <qaction.h> | 23 | #include <qaction.h> |
24 | #include <qlineedit.h> | 24 | #include <qlineedit.h> |
25 | 25 | ||
26 | NavBar::NavBar( QMainWindow *parent ) | 26 | NavBar::NavBar( QMainWindow *parent ) |
27 | : QToolBar( QString::null, parent, QMainWindow::Top, true ) | 27 | : QToolBar( QString::null, parent, QMainWindow::Top, true ) |
28 | { | 28 | { |
29 | // Initialize UI | 29 | // Initialize UI |
30 | m_actionPrevChapter = new QAction( tr( "Previous chapter" ), Resource::loadPixmap( "fastback" ), | 30 | m_actionPrevPage = new QAction( tr( "Previous page" ), Resource::loadPixmap( "fastback" ), |
31 | QString::null, 0, this, 0 ); | 31 | QString::null, 0, this, 0 ); |
32 | m_actionPrevChapter->addTo( this ); | 32 | m_actionPrevPage->addTo( this ); |
33 | connect( m_actionPrevChapter, SIGNAL(activated()), this, SIGNAL(prevChapter()) ); | 33 | connect( m_actionPrevPage, SIGNAL(activated()), this, SIGNAL(prevPage()) ); |
34 | 34 | ||
35 | m_actionPrevVerse = new QAction( tr( "Previous verse" ), Resource::loadPixmap( "back" ), | 35 | m_actionPrevVerse = new QAction( tr( "Previous verse" ), Resource::loadPixmap( "back" ), |
36 | QString::null, 0, this, 0 ); | 36 | QString::null, 0, this, 0 ); |
37 | m_actionPrevVerse->addTo( this ); | 37 | m_actionPrevVerse->addTo( this ); |
38 | connect( m_actionPrevVerse, SIGNAL(activated()), this, SIGNAL(prevVerse()) ); | 38 | connect( m_actionPrevVerse, SIGNAL(activated()), this, SIGNAL(prevVerse()) ); |
39 | 39 | ||
40 | m_key = new QLineEdit( this ); | 40 | m_key = new QLineEdit( this ); |
41 | setStretchableWidget( m_key ); | 41 | setStretchableWidget( m_key ); |
42 | connect(m_key, SIGNAL(textChanged(const QString &)), this, SIGNAL(keyChanged(const QString &)) ); | 42 | connect(m_key, SIGNAL(textChanged(const QString &)), this, SIGNAL(keyChanged(const QString &)) ); |
43 | 43 | ||
44 | m_actionNextVerse = new QAction( tr( "Next verse" ), Resource::loadPixmap( "forward" ), | 44 | m_actionNextVerse = new QAction( tr( "Next verse" ), Resource::loadPixmap( "forward" ), |
45 | QString::null, 0, this, 0 ); | 45 | QString::null, 0, this, 0 ); |
46 | m_actionNextVerse->addTo( this ); | 46 | m_actionNextVerse->addTo( this ); |
47 | connect( m_actionNextVerse, SIGNAL(activated()), this, SIGNAL(nextVerse()) ); | 47 | connect( m_actionNextVerse, SIGNAL(activated()), this, SIGNAL(nextVerse()) ); |
48 | 48 | ||
49 | m_actionNextChapter = new QAction( tr( "Next chapter" ), Resource::loadPixmap( "fastforward" ), | 49 | m_actionNextPage = new QAction( tr( "Next page" ), Resource::loadPixmap( "fastforward" ), |
50 | QString::null, 0, this, 0 ); | 50 | QString::null, 0, this, 0 ); |
51 | m_actionNextChapter->addTo( this ); | 51 | m_actionNextPage->addTo( this ); |
52 | connect( m_actionNextChapter, SIGNAL(activated()), this, SIGNAL(nextChapter()) ); | 52 | connect( m_actionNextPage, SIGNAL(activated()), this, SIGNAL(nextPage()) ); |
53 | 53 | ||
54 | addSeparator(); | 54 | addSeparator(); |
55 | 55 | ||
56 | m_scrollRate = new QSpinBox( 1, 100, 1, this ); | 56 | m_scrollRate = new QSpinBox( 1, 100, 1, this ); |
57 | m_scrollRate->setMinimumWidth( 35 ); | 57 | m_scrollRate->setMinimumWidth( 35 ); |
58 | connect( m_scrollRate, SIGNAL(valueChanged(int)), this, SIGNAL(scrollRateChanged(int)) ); | 58 | connect( m_scrollRate, SIGNAL(valueChanged(int)), this, SIGNAL(scrollRateChanged(int)) ); |
59 | 59 | ||
60 | m_actionScroll = new QAction( tr( "Auto-scroll" ), Resource::loadPixmap( "dagger/autoscroll" ), | 60 | m_actionScroll = new QAction( tr( "Auto-scroll" ), Resource::loadPixmap( "dagger/autoscroll" ), |
61 | QString::null, 0, this, 0 ); | 61 | QString::null, 0, this, 0 ); |
62 | m_actionScroll->setToggleAction( true ); | 62 | m_actionScroll->setToggleAction( true ); |
63 | connect( m_actionScroll, SIGNAL(toggled(bool)), this, SIGNAL(autoScroll(bool)) ); | 63 | connect( m_actionScroll, SIGNAL(toggled(bool)), this, SIGNAL(autoScroll(bool)) ); |
64 | m_actionScroll->addTo( this ); | 64 | m_actionScroll->addTo( this ); |
65 | 65 | ||
66 | if ( parent ) | 66 | if ( parent ) |
67 | { | 67 | { |
68 | installEventFilter( parent ); | 68 | installEventFilter( parent ); |
69 | m_key->installEventFilter( parent ); | 69 | m_key->installEventFilter( parent ); |
70 | } | 70 | } |
71 | } | 71 | } |
72 | 72 | ||
73 | void NavBar::navBtnsEnable( bool enabled ) | 73 | void NavBar::navBtnsEnable( bool enabled ) |
74 | { | 74 | { |
75 | m_actionPrevChapter->setEnabled( enabled ); | 75 | m_actionPrevPage->setEnabled( enabled ); |
76 | m_actionPrevVerse->setEnabled( enabled ); | 76 | m_actionPrevVerse->setEnabled( enabled ); |
77 | m_actionNextVerse->setEnabled( enabled ); | 77 | m_actionNextVerse->setEnabled( enabled ); |
78 | m_actionNextChapter->setEnabled( enabled ); | 78 | m_actionNextPage->setEnabled( enabled ); |
79 | m_scrollRate->setEnabled( enabled ); | 79 | m_scrollRate->setEnabled( enabled ); |
80 | m_actionScroll->setEnabled( enabled ); | 80 | m_actionScroll->setEnabled( enabled ); |
81 | } | 81 | } |
82 | 82 | ||
83 | void NavBar::setKey( const QString &newKey ) | 83 | void NavBar::setKey( const QString &newKey ) |
84 | { | 84 | { |
85 | disconnect( m_key, SIGNAL(textChanged(const QString &)), 0, 0 ); | 85 | disconnect( m_key, SIGNAL(textChanged(const QString &)), 0, 0 ); |
86 | m_key->setText( newKey ); | 86 | m_key->setText( newKey ); |
87 | connect(m_key, SIGNAL(textChanged(const QString &)), this, SIGNAL(keyChanged(const QString &)) ); | 87 | connect(m_key, SIGNAL(textChanged(const QString &)), this, SIGNAL(keyChanged(const QString &)) ); |
88 | } | 88 | } |
89 | 89 | ||
90 | void NavBar::setAutoScrollRate( int scrollRate ) | 90 | void NavBar::setAutoScrollRate( int scrollRate ) |
91 | { | 91 | { |
92 | m_scrollRate->setValue( scrollRate ); | 92 | m_scrollRate->setValue( scrollRate ); |
93 | } | 93 | } |
diff --git a/noncore/apps/dagger/navbar.h b/noncore/apps/dagger/navbar.h index a37d6ff..0df2bf0 100644 --- a/noncore/apps/dagger/navbar.h +++ b/noncore/apps/dagger/navbar.h | |||
@@ -1,58 +1,58 @@ | |||
1 | /* | 1 | /* |
2 | Dagger - A Bible study program utilizing the Sword library. | 2 | Dagger - A Bible study program utilizing the Sword library. |
3 | Copyright (c) 2004 Dan Williams <drw@handhelds.org> | 3 | Copyright (c) 2004 Dan Williams <drw@handhelds.org> |
4 | 4 | ||
5 | This file is free software; you can redistribute it and/or modify it under | 5 | This file is free software; you can redistribute it and/or modify it under |
6 | the terms of the GNU General Public License as published by the Free Software | 6 | the terms of the GNU General Public License as published by the Free Software |
7 | Foundation; either version 2 of the License, or (at your option) any later version. | 7 | Foundation; either version 2 of the License, or (at your option) any later version. |
8 | 8 | ||
9 | This file is distributed in the hope that it will be useful, but WITHOUT ANY | 9 | This file is distributed in the hope that it will be useful, but WITHOUT ANY |
10 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A | 10 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A |
11 | PARTICULAR PURPOSE. See the GNU General Public License for more details. | 11 | PARTICULAR PURPOSE. See the GNU General Public License for more details. |
12 | 12 | ||
13 | You should have received a copy of the GNU General Public License along with this | 13 | You should have received a copy of the GNU General Public License along with this |
14 | file; see the file COPYING. If not, write to the Free Software Foundation, Inc., | 14 | file; see the file COPYING. If not, write to the Free Software Foundation, Inc., |
15 | 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | 15 | 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
16 | */ | 16 | */ |
17 | 17 | ||
18 | #ifndef NAVBAR_H | 18 | #ifndef NAVBAR_H |
19 | #define NAVBAR_H | 19 | #define NAVBAR_H |
20 | 20 | ||
21 | #include <qspinbox.h> | 21 | #include <qspinbox.h> |
22 | #include <qtoolbar.h> | 22 | #include <qtoolbar.h> |
23 | 23 | ||
24 | class QAction; | 24 | class QAction; |
25 | class QLineEdit; | 25 | class QLineEdit; |
26 | 26 | ||
27 | class NavBar : public QToolBar | 27 | class NavBar : public QToolBar |
28 | { | 28 | { |
29 | Q_OBJECT | 29 | Q_OBJECT |
30 | 30 | ||
31 | public: | 31 | public: |
32 | NavBar( QMainWindow *parent = 0x0 ); | 32 | NavBar( QMainWindow *parent = 0x0 ); |
33 | 33 | ||
34 | void navBtnsEnable( bool enabled ); | 34 | void navBtnsEnable( bool enabled ); |
35 | void setKey( const QString &newKey ); | 35 | void setKey( const QString &newKey ); |
36 | void setAutoScrollRate( int scrollRate ); | 36 | void setAutoScrollRate( int scrollRate ); |
37 | const int autoScrollRate() { return m_scrollRate->value(); } | 37 | const int autoScrollRate() { return m_scrollRate->value(); } |
38 | 38 | ||
39 | private: | 39 | private: |
40 | QAction *m_actionPrevChapter; // Action for going back 1 chapter | 40 | QAction *m_actionPrevPage; // Action for going back 1 page |
41 | QAction *m_actionPrevVerse; // Action for going back 1 verse | 41 | QAction *m_actionPrevVerse; // Action for going back 1 verse |
42 | QLineEdit *m_key; // Edit box to enter key to goto | 42 | QLineEdit *m_key; // Edit box to enter key to goto |
43 | QAction *m_actionNextVerse; // Action for going forward 1 verse | 43 | QAction *m_actionNextVerse; // Action for going forward 1 verse |
44 | QAction *m_actionNextChapter; // Action for going forward 1 chapter | 44 | QAction *m_actionNextPage; // Action for going forward 1 page |
45 | QSpinBox *m_scrollRate; // Spin box to adjust rate of auto-scrolling | 45 | QSpinBox *m_scrollRate; // Spin box to adjust rate of auto-scrolling |
46 | QAction *m_actionScroll; // Action to start/stop auto-scrolling | 46 | QAction *m_actionScroll; // Action to start/stop auto-scrolling |
47 | 47 | ||
48 | signals: | 48 | signals: |
49 | void prevChapter(); | 49 | void prevPage(); |
50 | void prevVerse(); | 50 | void prevVerse(); |
51 | void keyChanged( const QString &newKey ); | 51 | void keyChanged( const QString &newKey ); |
52 | void nextVerse(); | 52 | void nextVerse(); |
53 | void nextChapter(); | 53 | void nextPage(); |
54 | void autoScroll( bool enabled ); | 54 | void autoScroll( bool enabled ); |
55 | void scrollRateChanged( int newRate ); | 55 | void scrollRateChanged( int newRate ); |
56 | }; | 56 | }; |
57 | 57 | ||
58 | #endif | 58 | #endif |
diff --git a/noncore/apps/dagger/opie-dagger.control b/noncore/apps/dagger/opie-dagger.control index c401f03..4ded1f2 100644 --- a/noncore/apps/dagger/opie-dagger.control +++ b/noncore/apps/dagger/opie-dagger.control | |||
@@ -1,11 +1,9 @@ | |||
1 | Package: opie-dagger | 1 | Package: opie-dagger |
2 | Files: plugins/application/libdagger.so* bin/dagger pics/dagger apps/Applications/dagger.desktop | 2 | Files: plugins/application/libdagger.so* bin/dagger pics/dagger apps/Applications/dagger.desktop |
3 | Priority: optional | 3 | Priority: optional |
4 | Section: opie/applications | 4 | Section: opie/applications |
5 | Depends: task-opie-minimal, libopiecore2, libopieui2 | 5 | Depends: task-opie-minimal, libopiecore2, libopieui2 |
6 | Replaces: dagger | ||
7 | Architecture: arm | 6 | Architecture: arm |
8 | Source: http://draknor.net/dagger/ | ||
9 | Maintainer: Dan Williams (drw@handhelds.org) | 7 | Maintainer: Dan Williams (drw@handhelds.org) |
10 | Description: A Bible study program utilizing the Sword library. | 8 | Description: A Bible study program utilizing the Sword library. |
11 | Version: 0.9.0 | 9 | Version: 0.9.1$EXTRAVERSION |
diff --git a/noncore/apps/dagger/searchbar.cpp b/noncore/apps/dagger/searchbar.cpp index 747d696..ff434dd 100644 --- a/noncore/apps/dagger/searchbar.cpp +++ b/noncore/apps/dagger/searchbar.cpp | |||
@@ -1,167 +1,173 @@ | |||
1 | /* | 1 | /* |
2 | Dagger - A Bible study program utilizing the Sword library. | 2 | Dagger - A Bible study program utilizing the Sword library. |
3 | Copyright (c) 2004 Dan Williams <drw@handhelds.org> | 3 | Copyright (c) 2004 Dan Williams <drw@handhelds.org> |
4 | 4 | ||
5 | This file is free software; you can redistribute it and/or modify it under | 5 | This file is free software; you can redistribute it and/or modify it under |
6 | the terms of the GNU General Public License as published by the Free Software | 6 | the terms of the GNU General Public License as published by the Free Software |
7 | Foundation; either version 2 of the License, or (at your option) any later version. | 7 | Foundation; either version 2 of the License, or (at your option) any later version. |
8 | 8 | ||
9 | This file is distributed in the hope that it will be useful, but WITHOUT ANY | 9 | This file is distributed in the hope that it will be useful, but WITHOUT ANY |
10 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A | 10 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A |
11 | PARTICULAR PURPOSE. See the GNU General Public License for more details. | 11 | PARTICULAR PURPOSE. See the GNU General Public License for more details. |
12 | 12 | ||
13 | You should have received a copy of the GNU General Public License along with this | 13 | You should have received a copy of the GNU General Public License along with this |
14 | file; see the file COPYING. If not, write to the Free Software Foundation, Inc., | 14 | file; see the file COPYING. If not, write to the Free Software Foundation, Inc., |
15 | 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | 15 | 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
16 | */ | 16 | */ |
17 | 17 | ||
18 | #include "searchbar.h" | 18 | #include "searchbar.h" |
19 | #include "textwidget.h" | 19 | #include "textwidget.h" |
20 | 20 | ||
21 | #include <opie2/owait.h> | 21 | #include <opie2/owait.h> |
22 | 22 | ||
23 | #include <qpe/qpeapplication.h> | 23 | #include <qpe/qpeapplication.h> |
24 | #include <qpe/resource.h> | 24 | #include <qpe/resource.h> |
25 | 25 | ||
26 | #include <qaction.h> | 26 | #include <qaction.h> |
27 | #include <qcombobox.h> | 27 | #include <qcombobox.h> |
28 | #include <qlineedit.h> | 28 | #include <qlineedit.h> |
29 | 29 | ||
30 | #include <listkey.h> | 30 | #include <listkey.h> |
31 | #include <regex.h> | 31 | #include <regex.h> |
32 | #include <versekey.h> | 32 | #include <versekey.h> |
33 | 33 | ||
34 | void searchCallback( char /*percent*/, void */*userData*/ ) | ||
35 | { | ||
36 | qApp->processEvents(); | ||
37 | } | ||
38 | |||
34 | SearchBar::SearchBar( QMainWindow *parent ) | 39 | SearchBar::SearchBar( QMainWindow *parent ) |
35 | : QToolBar( QString::null, parent, QMainWindow::Top, true ) | 40 | : QToolBar( QString::null, parent, QMainWindow::Top, true ) |
36 | , m_currText( 0x0 ) | 41 | , m_currText( 0x0 ) |
37 | { | 42 | { |
38 | // Initialize UI | 43 | // Initialize UI |
39 | m_searchText = new QLineEdit( this ); | 44 | m_searchText = new QLineEdit( this ); |
40 | setStretchableWidget( m_searchText ); | 45 | setStretchableWidget( m_searchText ); |
41 | connect(m_searchText, SIGNAL(textChanged(const QString &)), | 46 | connect(m_searchText, SIGNAL(textChanged(const QString &)), |
42 | this, SLOT(slotTextChanged(const QString &)) ); | 47 | this, SLOT(slotTextChanged(const QString &)) ); |
43 | 48 | ||
44 | m_actionFind = new QAction( tr( "Find" ), Resource::loadPixmap( "find" ), QString::null, | 49 | m_actionFind = new QAction( tr( "Find" ), Resource::loadPixmap( "find" ), QString::null, |
45 | 0, this, 0 ); | 50 | 0, this, 0 ); |
46 | m_actionFind->setEnabled( false ); | 51 | m_actionFind->setEnabled( false ); |
47 | m_actionFind->addTo( this ); | 52 | m_actionFind->addTo( this ); |
48 | connect( m_actionFind, SIGNAL(activated()), this, SLOT(slotFind()) ); | 53 | connect( m_actionFind, SIGNAL(activated()), this, SLOT(slotFind()) ); |
49 | 54 | ||
50 | addSeparator(); | 55 | addSeparator(); |
51 | 56 | ||
52 | m_actionPrev = new QAction( tr( "Previous result" ), Resource::loadPixmap( "back" ), | 57 | m_actionPrev = new QAction( tr( "Previous result" ), Resource::loadPixmap( "back" ), |
53 | QString::null, 0, this, 0 ); | 58 | QString::null, 0, this, 0 ); |
54 | m_actionPrev->setEnabled( false ); | 59 | m_actionPrev->setEnabled( false ); |
55 | m_actionPrev->addTo( this ); | 60 | m_actionPrev->addTo( this ); |
56 | connect( m_actionPrev, SIGNAL(activated()), this, SLOT(slotPrev()) ); | 61 | connect( m_actionPrev, SIGNAL(activated()), this, SLOT(slotPrev()) ); |
57 | 62 | ||
58 | m_resultList = new QComboBox( this ); | 63 | m_resultList = new QComboBox( this ); |
59 | m_resultList->setEnabled( false ); | 64 | m_resultList->setEnabled( false ); |
60 | connect( m_resultList, SIGNAL(activated(const QString &)), this, SIGNAL(sigResultClicked(const QString &)) ); | 65 | connect( m_resultList, SIGNAL(activated(const QString &)), this, SIGNAL(sigResultClicked(const QString &)) ); |
61 | 66 | ||
62 | m_actionNext = new QAction( tr( "Next result" ), Resource::loadPixmap( "forward" ), | 67 | m_actionNext = new QAction( tr( "Next result" ), Resource::loadPixmap( "forward" ), |
63 | QString::null, 0, this, 0 ); | 68 | QString::null, 0, this, 0 ); |
64 | m_actionNext->setEnabled( false ); | 69 | m_actionNext->setEnabled( false ); |
65 | m_actionNext->addTo( this ); | 70 | m_actionNext->addTo( this ); |
66 | connect( m_actionNext, SIGNAL(activated()), this, SLOT(slotNext()) ); | 71 | connect( m_actionNext, SIGNAL(activated()), this, SLOT(slotNext()) ); |
67 | 72 | ||
68 | if ( parent ) | 73 | if ( parent ) |
69 | { | 74 | { |
70 | installEventFilter( parent ); | 75 | installEventFilter( parent ); |
71 | // TODO - install for all controls | 76 | // TODO - install for all controls |
72 | m_searchText->installEventFilter( parent ); | 77 | m_searchText->installEventFilter( parent ); |
73 | } | 78 | } |
74 | } | 79 | } |
75 | 80 | ||
76 | void SearchBar::setCurrModule( TextWidget *currText ) | 81 | void SearchBar::setCurrModule( TextWidget *currText ) |
77 | { | 82 | { |
78 | m_actionFind->setEnabled( ( m_searchText->text() != "" ) && currText ); | 83 | m_actionFind->setEnabled( ( m_searchText->text() != "" ) && currText ); |
79 | 84 | ||
80 | if ( !m_currText || ( currText->getModuleName() != m_currText->getModuleName() ) ) | 85 | if ( !m_currText || ( currText->getModuleName() != m_currText->getModuleName() ) ) |
81 | { | 86 | { |
82 | m_actionPrev->setEnabled( false ); | 87 | m_actionPrev->setEnabled( false ); |
83 | m_resultList->clear(); | 88 | m_resultList->clear(); |
84 | m_resultList->setEnabled( false ); | 89 | m_resultList->setEnabled( false ); |
85 | m_actionNext->setEnabled( false ); | 90 | m_actionNext->setEnabled( false ); |
86 | } | 91 | } |
87 | 92 | ||
88 | m_currText = currText; | 93 | m_currText = currText; |
89 | } | 94 | } |
90 | 95 | ||
91 | void SearchBar::slotTextChanged( const QString &newText ) | 96 | void SearchBar::slotTextChanged( const QString &newText ) |
92 | { | 97 | { |
93 | m_actionFind->setEnabled( ( newText != "" ) && m_currText ); | 98 | m_actionFind->setEnabled( ( newText != "" ) && m_currText ); |
94 | } | 99 | } |
95 | 100 | ||
96 | void SearchBar::slotFind() | 101 | void SearchBar::slotFind() |
97 | { | 102 | { |
98 | m_resultList->clear(); | 103 | m_resultList->clear(); |
99 | 104 | ||
100 | // Change application title and display Opie wait dialog to indicate search is beginning | 105 | // Change application title and display Opie wait dialog to indicate search is beginning |
101 | QWidget *pWidget = reinterpret_cast<QWidget *>(parent()); | 106 | QWidget *pWidget = reinterpret_cast<QWidget *>(parent()); |
102 | QString caption = pWidget->caption(); | 107 | QString caption = pWidget->caption(); |
103 | pWidget->setCaption( "Searching..." ); | 108 | pWidget->setCaption( "Searching..." ); |
104 | 109 | ||
105 | Opie::Ui::OWait wait( pWidget ); | 110 | Opie::Ui::OWait wait( pWidget ); |
106 | wait.show(); | 111 | wait.show(); |
107 | qApp->processEvents(); | 112 | qApp->processEvents(); |
108 | 113 | ||
109 | // Perform search | 114 | // Perform search |
110 | // TODO - implement search callback function to animate wait cursor | 115 | // TODO - implement search callback function to animate wait cursor |
111 | sword::ListKey results = m_currText->getModule()->Search( m_searchText->text().latin1(), REG_ICASE, 0 ); | 116 | sword::ListKey results = m_currText->getModule()->Search( m_searchText->text().latin1(), 0, REG_ICASE, 0, 0, |
117 | &searchCallback ); | ||
112 | 118 | ||
113 | // Process results | 119 | // Process results |
114 | int count = results.Count(); | 120 | int count = results.Count(); |
115 | bool found = count > 0; | 121 | bool found = count > 0; |
116 | if ( found ) | 122 | if ( found ) |
117 | { | 123 | { |
118 | // Populate results combo box | 124 | // Populate results combo box |
119 | sword::VerseKey key; | 125 | sword::VerseKey key; |
120 | for ( int i = 0; i < count; i++ ) | 126 | for ( int i = 0; i < count; i++ ) |
121 | { | 127 | { |
122 | key.setText( results.GetElement( i )->getText() ); | 128 | key.setText( results.GetElement( i )->getText() ); |
123 | m_resultList->insertItem( key.getShortText() ); | 129 | m_resultList->insertItem( key.getShortText() ); |
124 | } | 130 | } |
125 | 131 | ||
126 | // Goto first result in list | 132 | // Goto first result in list |
127 | m_resultList->setCurrentItem( 0 ); | 133 | m_resultList->setCurrentItem( 0 ); |
128 | emit sigResultClicked( m_resultList->currentText() ); | 134 | emit sigResultClicked( m_resultList->currentText() ); |
129 | } | 135 | } |
130 | else | 136 | else |
131 | { | 137 | { |
132 | // Reset application title | 138 | // Reset application title |
133 | pWidget->setCaption( caption ); | 139 | pWidget->setCaption( caption ); |
134 | } | 140 | } |
135 | 141 | ||
136 | // UI clean-up | 142 | // UI clean-up |
137 | wait.hide(); | 143 | wait.hide(); |
138 | 144 | ||
139 | m_actionPrev->setEnabled( false ); | 145 | m_actionPrev->setEnabled( false ); |
140 | m_resultList->setEnabled( found ); | 146 | m_resultList->setEnabled( found ); |
141 | m_actionNext->setEnabled( count > 1 ); | 147 | m_actionNext->setEnabled( count > 1 ); |
142 | } | 148 | } |
143 | 149 | ||
144 | void SearchBar::slotPrev() | 150 | void SearchBar::slotPrev() |
145 | { | 151 | { |
146 | int item = m_resultList->currentItem() - 1; | 152 | int item = m_resultList->currentItem() - 1; |
147 | m_resultList->setCurrentItem( item ); | 153 | m_resultList->setCurrentItem( item ); |
148 | emit sigResultClicked( m_resultList->currentText() ); | 154 | emit sigResultClicked( m_resultList->currentText() ); |
149 | 155 | ||
150 | m_actionPrev->setEnabled( item > 0 ); | 156 | m_actionPrev->setEnabled( item > 0 ); |
151 | m_actionNext->setEnabled( item < m_resultList->count() - 1 ); | 157 | m_actionNext->setEnabled( item < m_resultList->count() - 1 ); |
152 | } | 158 | } |
153 | 159 | ||
154 | void SearchBar::slotNext() | 160 | void SearchBar::slotNext() |
155 | { | 161 | { |
156 | int item = m_resultList->currentItem() + 1; | 162 | int item = m_resultList->currentItem() + 1; |
157 | m_resultList->setCurrentItem( item ); | 163 | m_resultList->setCurrentItem( item ); |
158 | emit sigResultClicked( m_resultList->currentText() ); | 164 | emit sigResultClicked( m_resultList->currentText() ); |
159 | 165 | ||
160 | m_actionPrev->setEnabled( true ); | 166 | m_actionPrev->setEnabled( true ); |
161 | m_actionNext->setEnabled( item < m_resultList->count() - 1 ); | 167 | m_actionNext->setEnabled( item < m_resultList->count() - 1 ); |
162 | } | 168 | } |
163 | 169 | ||
164 | void SearchBar::slotCloseBtn() | 170 | void SearchBar::slotCloseBtn() |
165 | { | 171 | { |
166 | hide(); | 172 | hide(); |
167 | } | 173 | } |
diff --git a/noncore/apps/dagger/textwidget.cpp b/noncore/apps/dagger/textwidget.cpp index 8ff620d..9f7de66 100644 --- a/noncore/apps/dagger/textwidget.cpp +++ b/noncore/apps/dagger/textwidget.cpp | |||
@@ -17,152 +17,156 @@ file; see the file COPYING. If not, write to the Free Software Foundation, Inc., | |||
17 | 17 | ||
18 | #include "textwidget.h" | 18 | #include "textwidget.h" |
19 | 19 | ||
20 | #include <qlayout.h> | 20 | #include <qlayout.h> |
21 | #include <qtextbrowser.h> | 21 | #include <qtextbrowser.h> |
22 | 22 | ||
23 | #include <versekey.h> | 23 | #include <versekey.h> |
24 | 24 | ||
25 | TextWidget::TextWidget( QWidget *parent, sword::SWModule *module, int numVerses, const QFont *font ) | 25 | TextWidget::TextWidget( QWidget *parent, sword::SWModule *module, int numVerses, const QFont *font ) |
26 | : QWidget( parent, 0x0, 0x0 ) | 26 | : QWidget( parent, 0x0, 0x0 ) |
27 | , m_module( module ) | 27 | , m_module( module ) |
28 | , m_numVerses( numVerses ) | 28 | , m_numVerses( numVerses ) |
29 | { | 29 | { |
30 | if ( parent ) | 30 | if ( parent ) |
31 | installEventFilter( parent ); | 31 | installEventFilter( parent ); |
32 | 32 | ||
33 | QVBoxLayout *layout = new QVBoxLayout( this, 2, 2 ); | 33 | QVBoxLayout *layout = new QVBoxLayout( this, 2, 2 ); |
34 | 34 | ||
35 | m_textView = new QTextBrowser( this ); | 35 | m_textView = new QTextBrowser( this ); |
36 | m_textView->installEventFilter( parent ); | 36 | m_textView->installEventFilter( parent ); |
37 | m_textView->setMinimumHeight( 20 ); | 37 | m_textView->setMinimumHeight( 20 ); |
38 | m_textView->setHScrollBarMode( QTextView::AlwaysOff ); | 38 | m_textView->setHScrollBarMode( QTextView::AlwaysOff ); |
39 | m_textView->setTextFormat( QTextView::RichText ); | 39 | m_textView->setTextFormat( QTextView::RichText ); |
40 | connect( m_textView, SIGNAL(highlighted(const QString &)), | 40 | connect( m_textView, SIGNAL(highlighted(const QString &)), |
41 | this, SIGNAL(sigRefClicked(const QString &)) ); | 41 | this, SIGNAL(sigRefClicked(const QString &)) ); |
42 | layout->addWidget( m_textView ); | 42 | layout->addWidget( m_textView ); |
43 | 43 | ||
44 | // Set font | 44 | // Set font |
45 | if ( font ) | 45 | if ( font ) |
46 | setFont( *font ); | 46 | setFont( *font ); |
47 | 47 | ||
48 | // Set initial text | 48 | // Set initial text |
49 | if ( m_module ) | 49 | if ( m_module ) |
50 | { | 50 | { |
51 | m_isBibleText = !strcmp( module->Type(), "Biblical Texts" ); | 51 | m_isBibleText = !strcmp( module->Type(), "Biblical Texts" ); |
52 | if ( m_isBibleText ) | 52 | if ( m_isBibleText ) |
53 | { | 53 | { |
54 | m_key = new sword::VerseKey( "g" ); | 54 | m_key = new sword::VerseKey( "g" ); |
55 | 55 | ||
56 | //connect( m_textView, SIGNAL(highlighted(const QString&)), | 56 | //connect( m_textView, SIGNAL(highlighted(const QString&)), |
57 | // this, SLOT(slotReferenceClicked(const QString&)) ); | 57 | // this, SLOT(slotReferenceClicked(const QString&)) ); |
58 | //connect( parent, SIGNAL( strongsNumbers( bool ) ), this, SLOT( slotStrongsNumbers( bool ) ) ); | 58 | //connect( parent, SIGNAL( strongsNumbers( bool ) ), this, SLOT( slotStrongsNumbers( bool ) ) ); |
59 | } | 59 | } |
60 | else | 60 | else |
61 | { | 61 | { |
62 | m_key = new sword::SWKey( "" ); | 62 | m_key = new sword::SWKey( "" ); |
63 | } | 63 | } |
64 | m_module->SetKey( m_key ); | 64 | m_module->SetKey( m_key ); |
65 | setText(); | 65 | setText(); |
66 | } | 66 | } |
67 | } | 67 | } |
68 | 68 | ||
69 | TextWidget::~TextWidget() | 69 | TextWidget::~TextWidget() |
70 | { | 70 | { |
71 | // TODO - why does this cause a SIGSEV??? | 71 | // TODO - why does this cause a SIGSEV??? |
72 | //delete m_key; | 72 | //delete m_key; |
73 | } | 73 | } |
74 | 74 | ||
75 | QString TextWidget::getCurrVerse() | 75 | QString TextWidget::getCurrVerse() |
76 | { | 76 | { |
77 | m_module->SetKey( m_key->getText() ); | 77 | m_module->SetKey( m_key->getText() ); |
78 | return ( QString ) m_module->StripText(); | 78 | return ( QString ) m_module->StripText(); |
79 | } | 79 | } |
80 | 80 | ||
81 | void TextWidget::prevChapter() | 81 | void TextWidget::prevPage() |
82 | { | 82 | { |
83 | (*m_key) -= m_numVerses; | ||
84 | setText(); | ||
83 | } | 85 | } |
84 | 86 | ||
85 | void TextWidget::prevVerse() | 87 | void TextWidget::prevVerse() |
86 | { | 88 | { |
87 | (*m_key)--; | 89 | (*m_key)--; |
88 | setText(); | 90 | setText(); |
89 | } | 91 | } |
90 | 92 | ||
91 | void TextWidget::setKey( const QString &newKey ) | 93 | void TextWidget::setKey( const QString &newKey ) |
92 | { | 94 | { |
93 | m_key->setText( newKey.latin1() ); | 95 | m_key->setText( newKey.latin1() ); |
94 | setText(); | 96 | setText(); |
95 | } | 97 | } |
96 | 98 | ||
97 | void TextWidget::nextVerse() | 99 | void TextWidget::nextVerse() |
98 | { | 100 | { |
99 | (*m_key)++; | 101 | (*m_key)++; |
100 | setText(); | 102 | setText(); |
101 | } | 103 | } |
102 | 104 | ||
103 | void TextWidget::nextChapter() | 105 | void TextWidget::nextPage() |
104 | { | 106 | { |
107 | (*m_key) += m_numVerses; | ||
108 | setText(); | ||
105 | } | 109 | } |
106 | 110 | ||
107 | void TextWidget::slotNumVersesChanged( int numVerses ) | 111 | void TextWidget::slotNumVersesChanged( int numVerses ) |
108 | { | 112 | { |
109 | m_numVerses = numVerses; | 113 | m_numVerses = numVerses; |
110 | setText(); | 114 | setText(); |
111 | } | 115 | } |
112 | 116 | ||
113 | void TextWidget::slotFontChanged( const QFont *newFont ) | 117 | void TextWidget::slotFontChanged( const QFont *newFont ) |
114 | { | 118 | { |
115 | setFont( *newFont ); | 119 | setFont( *newFont ); |
116 | // TODO - shouldn't have to reset text, but couldn't get repaint() to work | 120 | // TODO - shouldn't have to reset text, but couldn't get repaint() to work |
117 | setText(); | 121 | setText(); |
118 | } | 122 | } |
119 | 123 | ||
120 | void TextWidget::slotOptionChanged() | 124 | void TextWidget::slotOptionChanged() |
121 | { | 125 | { |
122 | setText(); | 126 | setText(); |
123 | } | 127 | } |
124 | 128 | ||
125 | void TextWidget::setText() | 129 | void TextWidget::setText() |
126 | { | 130 | { |
127 | if ( m_key->Error() ) | 131 | if ( m_key->Error() ) |
128 | return; | 132 | return; |
129 | 133 | ||
130 | m_module->SetKey( m_key->getText() ); | 134 | m_module->SetKey( m_key->getText() ); |
131 | m_fullKey = QString( "%1 (%2)" ).arg( m_key->getShortText() ).arg( m_module->Name() ); | 135 | m_fullKey = QString( "%1 (%2)" ).arg( m_key->getShortText() ).arg( m_module->Name() ); |
132 | 136 | ||
133 | if ( m_isBibleText ) | 137 | if ( m_isBibleText ) |
134 | { | 138 | { |
135 | m_textView->setVScrollBarMode( QTextView::AlwaysOff ); | 139 | m_textView->setVScrollBarMode( QTextView::AlwaysOff ); |
136 | 140 | ||
137 | m_abbrevKey = m_key->getShortText(); | 141 | m_abbrevKey = m_key->getShortText(); |
138 | 142 | ||
139 | QString fullText; | 143 | QString fullText; |
140 | 144 | ||
141 | for ( int i = 0; i < m_numVerses; i++ ) | 145 | for ( int i = 0; i < m_numVerses; i++ ) |
142 | { | 146 | { |
143 | QString key = ( QString ) m_module->KeyText(); | 147 | QString key = ( QString ) m_module->KeyText(); |
144 | QString verseStr = ( QString ) *m_module; | 148 | QString verseStr = ( QString ) *m_module; |
145 | 149 | ||
146 | // Format current verse (adding chapter and/or book headings if necessary) | 150 | // Format current verse (adding chapter and/or book headings if necessary) |
147 | int verse = static_cast<sword::VerseKey>(m_module->Key()).Verse(); | 151 | int verse = static_cast<sword::VerseKey>(m_module->Key()).Verse(); |
148 | if ( verse == 1 ) | 152 | if ( verse == 1 ) |
149 | { | 153 | { |
150 | int chapter = static_cast<sword::VerseKey>(m_module->Key()).Chapter(); | 154 | int chapter = static_cast<sword::VerseKey>(m_module->Key()).Chapter(); |
151 | if ( chapter == 1 ) | 155 | if ( chapter == 1 ) |
152 | { | 156 | { |
153 | QString book = static_cast<sword::VerseKey>(m_module->Key()).getBookName(); | 157 | QString book = static_cast<sword::VerseKey>(m_module->Key()).getBookName(); |
154 | verseStr = QString( "<p><center><big><b>%1</b></big></center><br><center><b>Chapter %1</b></center><p><b>%2</b> %3<p>" ) | 158 | verseStr = QString( "<p><center><big><b>%1</b></big></center><br><center><b>Chapter %1</b></center><p><b>%2</b> %3<p>" ) |
155 | .arg( book ).arg( chapter ).arg( verse ).arg( verseStr ); | 159 | .arg( book ).arg( chapter ).arg( verse ).arg( verseStr ); |
156 | } | 160 | } |
157 | else | 161 | else |
158 | { | 162 | { |
159 | verseStr = QString( "<center><b>Chapter %1</b></center><p><b>%2</b> %3<p>" ) | 163 | verseStr = QString( "<center><b>Chapter %1</b></center><p><b>%2</b> %3<p>" ) |
160 | .arg( chapter ).arg( verse ).arg( verseStr ); | 164 | .arg( chapter ).arg( verse ).arg( verseStr ); |
161 | } | 165 | } |
162 | } | 166 | } |
163 | else | 167 | else |
164 | { | 168 | { |
165 | verseStr = QString( "<b>%1</b> %2<p>" ).arg( verse ).arg( verseStr ); | 169 | verseStr = QString( "<b>%1</b> %2<p>" ).arg( verse ).arg( verseStr ); |
166 | } | 170 | } |
167 | 171 | ||
168 | fullText.append( verseStr ); | 172 | fullText.append( verseStr ); |
diff --git a/noncore/apps/dagger/textwidget.h b/noncore/apps/dagger/textwidget.h index 647eae9..f78ef69 100644 --- a/noncore/apps/dagger/textwidget.h +++ b/noncore/apps/dagger/textwidget.h | |||
@@ -1,73 +1,73 @@ | |||
1 | /* | 1 | /* |
2 | Dagger - A Bible study program utilizing the Sword library. | 2 | Dagger - A Bible study program utilizing the Sword library. |
3 | Copyright (c) 2004 Dan Williams <drw@handhelds.org> | 3 | Copyright (c) 2004 Dan Williams <drw@handhelds.org> |
4 | 4 | ||
5 | This file is free software; you can redistribute it and/or modify it under | 5 | This file is free software; you can redistribute it and/or modify it under |
6 | the terms of the GNU General Public License as published by the Free Software | 6 | the terms of the GNU General Public License as published by the Free Software |
7 | Foundation; either version 2 of the License, or (at your option) any later version. | 7 | Foundation; either version 2 of the License, or (at your option) any later version. |
8 | 8 | ||
9 | This file is distributed in the hope that it will be useful, but WITHOUT ANY | 9 | This file is distributed in the hope that it will be useful, but WITHOUT ANY |
10 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A | 10 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A |
11 | PARTICULAR PURPOSE. See the GNU General Public License for more details. | 11 | PARTICULAR PURPOSE. See the GNU General Public License for more details. |
12 | 12 | ||
13 | You should have received a copy of the GNU General Public License along with this | 13 | You should have received a copy of the GNU General Public License along with this |
14 | file; see the file COPYING. If not, write to the Free Software Foundation, Inc., | 14 | file; see the file COPYING. If not, write to the Free Software Foundation, Inc., |
15 | 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | 15 | 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
16 | */ | 16 | */ |
17 | 17 | ||
18 | #ifndef TEXTWIDGET_H | 18 | #ifndef TEXTWIDGET_H |
19 | #define TEXTWIDGET_H | 19 | #define TEXTWIDGET_H |
20 | 20 | ||
21 | #include <qwidget.h> | 21 | #include <qwidget.h> |
22 | 22 | ||
23 | #include <swkey.h> | 23 | #include <swkey.h> |
24 | #include <swmodule.h> | 24 | #include <swmodule.h> |
25 | 25 | ||
26 | class QTextBrowser; | 26 | class QTextBrowser; |
27 | 27 | ||
28 | class TextWidget : public QWidget | 28 | class TextWidget : public QWidget |
29 | { | 29 | { |
30 | Q_OBJECT | 30 | Q_OBJECT |
31 | 31 | ||
32 | public: | 32 | public: |
33 | TextWidget( QWidget *parent = 0x0, sword::SWModule *module = 0x0, int numVerses = 5, | 33 | TextWidget( QWidget *parent = 0x0, sword::SWModule *module = 0x0, int numVerses = 5, |
34 | const QFont *font = 0x0 ); | 34 | const QFont *font = 0x0 ); |
35 | ~TextWidget(); | 35 | ~TextWidget(); |
36 | 36 | ||
37 | const QString &getFullKey() { return m_fullKey; } | 37 | const QString &getFullKey() { return m_fullKey; } |
38 | const QString &getAbbrevKey() { return m_abbrevKey; } | 38 | const QString &getAbbrevKey() { return m_abbrevKey; } |
39 | QString getModuleName() { return QString( m_module->Name() ); } | 39 | QString getModuleName() { return QString( m_module->Name() ); } |
40 | sword::SWModule *getModule() { return m_module; } | 40 | sword::SWModule *getModule() { return m_module; } |
41 | QString getCurrVerse(); | 41 | QString getCurrVerse(); |
42 | 42 | ||
43 | bool isBibleText() const { return m_isBibleText; } | 43 | bool isBibleText() const { return m_isBibleText; } |
44 | 44 | ||
45 | void prevChapter(); | 45 | void prevPage(); |
46 | void prevVerse(); | 46 | void prevVerse(); |
47 | void setKey( const QString &newKey ); | 47 | void setKey( const QString &newKey ); |
48 | void nextVerse(); | 48 | void nextVerse(); |
49 | void nextChapter(); | 49 | void nextPage(); |
50 | 50 | ||
51 | public slots: | 51 | public slots: |
52 | void slotNumVersesChanged( int numVerses ); | 52 | void slotNumVersesChanged( int numVerses ); |
53 | void slotFontChanged( const QFont *newFont ); | 53 | void slotFontChanged( const QFont *newFont ); |
54 | void slotOptionChanged(); | 54 | void slotOptionChanged(); |
55 | 55 | ||
56 | private: | 56 | private: |
57 | sword::SWModule *m_module; // Sword module to display in this widget | 57 | sword::SWModule *m_module; // Sword module to display in this widget |
58 | sword::SWKey *m_key; // Current module key | 58 | sword::SWKey *m_key; // Current module key |
59 | bool m_isBibleText; // Indicates whether module is a Bible or not | 59 | bool m_isBibleText; // Indicates whether module is a Bible or not |
60 | 60 | ||
61 | QTextBrowser *m_textView; // Displays module's text | 61 | QTextBrowser *m_textView; // Displays module's text |
62 | QString m_fullKey; // Contains full key text in format 'key (module)' | 62 | QString m_fullKey; // Contains full key text in format 'key (module)' |
63 | QString m_abbrevKey; // Contains abbreviated key text | 63 | QString m_abbrevKey; // Contains abbreviated key text |
64 | 64 | ||
65 | int m_numVerses; // Number of verses to display at a time for Bible modules | 65 | int m_numVerses; // Number of verses to display at a time for Bible modules |
66 | 66 | ||
67 | void setText(); | 67 | void setText(); |
68 | 68 | ||
69 | signals: | 69 | signals: |
70 | void sigRefClicked( const QString &ref ); | 70 | void sigRefClicked( const QString &ref ); |
71 | }; | 71 | }; |
72 | 72 | ||
73 | #endif | 73 | #endif |