summaryrefslogtreecommitdiff
authordrw <drw>2005-04-24 19:29:20 (UTC)
committer drw <drw>2005-04-24 19:29:20 (UTC)
commit9f4dd8e0d2cbe83d23c5405394d5e076dd6c2c6b (patch) (side-by-side diff)
treeef243e01fd5347d74d06e7d90e9c3fc19d990534
parentd1ca2bbae79743f9f8a2c5ac1d702cc1c789fd27 (diff)
downloadopie-9f4dd8e0d2cbe83d23c5405394d5e076dd6c2c6b.zip
opie-9f4dd8e0d2cbe83d23c5405394d5e076dd6c2c6b.tar.gz
opie-9f4dd8e0d2cbe83d23c5405394d5e076dd6c2c6b.tar.bz2
Resource -> OResource
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--noncore/apps/dagger/mainwindow.cpp31
-rw-r--r--noncore/apps/dagger/navbar.cpp14
-rw-r--r--noncore/apps/dagger/searchbar.cpp9
3 files changed, 35 insertions, 19 deletions
diff --git a/noncore/apps/dagger/mainwindow.cpp b/noncore/apps/dagger/mainwindow.cpp
index 3dd9eff..1f2d521 100644
--- a/noncore/apps/dagger/mainwindow.cpp
+++ b/noncore/apps/dagger/mainwindow.cpp
@@ -1,744 +1,753 @@
/*
Dagger - A Bible study program utilizing the Sword library.
Copyright (c) 2004 Dan Williams <drw@handhelds.org>
This file is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; either version 2 of the License, or (at your option) any later version.
This file is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this
file; see the file COPYING. If not, write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#include "mainwindow.h"
#include "navbar.h"
#include "searchbar.h"
#include "opentextdlg.h"
#include "configuredlg.h"
#include "textwidget.h"
#include <opie2/odebug.h>
+#include <opie2/oresource.h>
#include <qpe/qcopenvelope_qws.h>
#include <qpe/qpeapplication.h>
-#include <qpe/resource.h>
#include <qaction.h>
#include <qclipboard.h>
#include <qmenubar.h>
#include <qmessagebox.h>
#include <qobjectlist.h>
#include <qpopupmenu.h>
#include <qtimer.h>
#include <qtoolbar.h>
#include <markupfiltmgr.h>
MainWindow::MainWindow( QWidget *parent, const char *name, WFlags /*fl*/ )
: QMainWindow( parent, name, WStyle_ContextHelp )
, m_config( "dagger" )
, m_tabs( this )
, m_autoScrollTimer( this )
{
// Initialize sword library manager
m_config.setGroup( "Sword" );
m_modulePath = m_config.readEntry( "ModPath", "/usr/local/share/sword" );
m_swordMgr = new sword::SWMgr( m_modulePath.latin1(), true,
new sword::MarkupFilterMgr( sword::FMT_HTMLHREF ) );
// Retrieve list of available Sword module options (e.g. footnotes, Strong's numbers, etc.)
sword::StringList swordOpts = m_swordMgr->getGlobalOptions();
for ( sword::StringList::iterator it = swordOpts.begin(); it != swordOpts.end(); it++ )
m_actionSwordOpts.append( new QAction( (*it).c_str(), QString::null, 0, this, 0 ) );
m_actionSwordOpts.sort();
// Initialize user interface
setCaption( tr( "Dagger" ) );
initUI();
connect( &m_tabs, SIGNAL(currentChanged(QWidget *)), this, SLOT( slotTextDisplayed(QWidget *)) );
connect( &m_autoScrollTimer, SIGNAL(timeout()), this, SLOT(slotNavNextVerse()) );
- m_bibleIcon = new QPixmap( Resource::loadPixmap( "dagger/bibletext" ) );
- m_commentaryIcon = new QPixmap( Resource::loadPixmap( "dagger/commentary" ) );
- m_lexiconIcon = new QPixmap( Resource::loadPixmap( "dagger/lexicon" ) );
+ m_bibleIcon = new QPixmap( Opie::Core::OResource::loadPixmap( "dagger/bibletext", Opie::Core::OResource::SmallIcon ) );
+ m_commentaryIcon = new QPixmap( Opie::Core::OResource::loadPixmap( "dagger/commentary", Opie::Core::OResource::SmallIcon ) );
+ m_lexiconIcon = new QPixmap( Opie::Core::OResource::loadPixmap( "dagger/lexicon", Opie::Core::OResource::SmallIcon ) );
// Load initial configuration
QTimer::singleShot( 100, this, SLOT( initConfig() ) );
}
MainWindow::~MainWindow()
{
// Re-enable screen blanking if it was disabled
QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Enable;
// Save Sword options
m_config.setGroup( "Sword" );
m_config.writeEntry( "ModPath", m_modulePath );
for ( QAction *a = m_actionSwordOpts.first(); a; a = m_actionSwordOpts.next() )
m_config.writeEntry( a->text(), a->isOn() );
// Save configuration options
m_config.setGroup( "Config" );
m_config.writeEntry( "AlwaysOpenNew", m_alwaysOpenNew );
m_config.writeEntry( "AutoScroll", m_navToolbar->autoScrollRate() );
m_config.writeEntry( "DisableScreenBlanking", m_disableScreenBlank );
m_config.writeEntry( "CopyFormat", m_copyFormat );
m_config.writeEntry( "NavBar", m_actionViewNavToolbar->isOn() );
m_config.writeEntry( "NumVerses", m_numVerses );
m_config.writeEntry( "SearchBar", m_actionViewSearchToolbar->isOn() );
// Save text font
m_config.setGroup( "Font");
m_config.writeEntry( "Family", m_textFont.family() );
m_config.writeEntry( "Italic", m_textFont.italic() );
m_config.writeEntry( "Size", m_textFont.pointSize() );
m_config.writeEntry( "Weight", m_textFont.weight() );
// Save bookmarks
m_config.setGroup( "Bookmarks");
m_config.clearGroup();
int index = 3;
int id = m_bookmarkMenu->idAt( index );
while ( id != -1 )
{
QString bookmark = m_bookmarkMenu->text( id );
int pos = bookmark.find( " (" );
QString key = bookmark.left( pos );
pos += 2;
QString module = bookmark.mid( pos, bookmark.find( ")", pos ) - pos );
QString modkey;
modkey.sprintf( "%s/%s", module.latin1(), key.latin1() );
m_config.writeEntry( QString::number( index - 2 ), modkey );
++index;
id = m_bookmarkMenu->idAt( index );
}
// Save opened modules
m_config.setGroup( "Session");
m_config.clearGroup();
QObjectList *childlist = queryList( "TextWidget" );
QObjectListIt it( *childlist );
TextWidget *module;
int count = 1;
while ( ( module = reinterpret_cast<TextWidget *>(it.current()) ) != 0 )
{
QString modkey;
modkey.sprintf( "%s/%s", module->getModuleName().latin1(), module->getAbbrevKey().latin1() );
m_config.writeEntry( QString::number( count ), modkey );
++count;
++it;
}
}
bool MainWindow::eventFilter( QObject *obj, QEvent *event )
{
if ( event->type() == QEvent::KeyPress )
{
QKeyEvent *keyev = reinterpret_cast<QKeyEvent *>(event);
if ( keyev->key() == Key_Up )
{
slotNavPrevVerse();
return true;
}
else if ( keyev->key() == Key_Down )
{
slotNavNextVerse();
return true;
}
}
return QWidget::eventFilter( obj, event );
}
void MainWindow::initUI()
{
setCentralWidget( &m_tabs );
m_tabs.installEventFilter( this );
setToolBarsMovable( false );
m_barDock = new QToolBar( this );
m_barDock->setHorizontalStretchable( true );
m_menuBar = new QMenuBar( m_barDock );
m_menuBar->setMargin( 0 );
// Allocate toolbars
m_navToolbar = new NavBar( this );
m_navToolbar->navBtnsEnable( false );
connect( m_navToolbar, SIGNAL(prevPage()), this, SLOT(slotNavPrevPage()) );
connect( m_navToolbar, SIGNAL(prevVerse()), this, SLOT(slotNavPrevVerse()) );
connect( m_navToolbar, SIGNAL(keyChanged(const QString &)), this, SLOT(slotNavKeyChanged(const QString &)) );
connect( m_navToolbar, SIGNAL(nextVerse()), this, SLOT(slotNavNextVerse()) );
connect( m_navToolbar, SIGNAL(nextPage()), this, SLOT(slotNavNextPage()) );
connect( m_navToolbar, SIGNAL(autoScroll(bool)), this, SLOT(slotNavAutoScroll(bool)) );
connect( m_navToolbar, SIGNAL(scrollRateChanged(int)), this, SLOT(slotNavScrollRateChanged(int)) );
m_searchToolbar = new SearchBar( this );
connect( m_searchToolbar, SIGNAL(sigResultClicked(const QString &)), this, SLOT(slotSearchResultClicked(const QString &)) );
// Text menu
QPopupMenu *popup = new QPopupMenu( this );
- QAction *a = new QAction( tr( "Open..." ), Resource::loadPixmap( "fileopen" ), QString::null, 0, this, 0 );
+ QAction *a = new QAction( tr( "Open..." ), Opie::Core::OResource::loadPixmap( "fileopen", Opie::Core::OResource::SmallIcon ),
+ QString::null, 0, this, 0 );
connect( a, SIGNAL(activated()), this, SLOT(slotTextOpen()) );
a->addTo( popup );
- m_actionTextClose = new QAction( tr( "Close" ), Resource::loadPixmap( "close" ), QString::null, 0, this, 0 );
+ m_actionTextClose = new QAction( tr( "Close" ), Opie::Core::OResource::loadPixmap( "close", Opie::Core::OResource::SmallIcon ),
+ QString::null, 0, this, 0 );
connect( m_actionTextClose, SIGNAL(activated()), this, SLOT(slotTextClose()) );
m_actionTextClose->addTo( popup );
popup->insertSeparator();
// TODO - need to implent
- a = new QAction( tr( "Install..." ), Resource::loadPixmap( "install" ), QString::null, 0, this, 0 );
+ a = new QAction( tr( "Install" ), Opie::Core::OResource::loadPixmap( "install", Opie::Core::OResource::SmallIcon ),
+ QString::null, 0, this, 0 );
a->setEnabled( false );
connect( a, SIGNAL(activated()), this, SLOT(slotTextInstall()) );
a->addTo( popup );
m_menuBar->insertItem( tr( "Text" ), popup );
// Edit menu
popup = new QPopupMenu( this );
- m_actionEditCopy = new QAction( tr( "Copy" ), Resource::loadPixmap( "copy" ), QString::null, 0, this, 0 );
+ m_actionEditCopy = new QAction( tr( "Copy" ), Opie::Core::OResource::loadPixmap( "copy", Opie::Core::OResource::SmallIcon ),
+ QString::null, 0, this, 0 );
connect( m_actionEditCopy, SIGNAL(activated()), this, SLOT(slotEditCopy()) );
m_actionEditCopy->addTo( popup );
popup->insertSeparator();
- a = new QAction( tr( "Configure..." ), Resource::loadPixmap( "SettingsIcon" ), QString::null, 0, this, 0 );
+ a = new QAction( tr( "Configure" ), Opie::Core::OResource::loadPixmap( "SettingsIcon", Opie::Core::OResource::SmallIcon ),
+ QString::null, 0, this, 0 );
connect( a, SIGNAL(activated()), this, SLOT(slotEditConfigure()) );
a->addTo( popup );
m_menuBar->insertItem( tr( "Edit" ), popup );
// Bookmark menu
m_bookmarkMenu = new QPopupMenu( this );
- m_actionBookmarkAdd = new QAction( tr( "Add" ), Resource::loadPixmap( "dagger/bookmarkadd" ), QString::null, 0, this, 0 );
+ m_actionBookmarkAdd = new QAction( tr( "Add" ),
+ Opie::Core::OResource::loadPixmap( "dagger/bookmarkadd", Opie::Core::OResource::SmallIcon ),
+ QString::null, 0, this, 0 );
connect( m_actionBookmarkAdd, SIGNAL(activated()), this, SLOT(slotBookmarkAdd()) );
m_actionBookmarkAdd->addTo( m_bookmarkMenu );
- m_actionBookmarkRemove = new QAction( tr( "Remove" ), Resource::loadPixmap( "dagger/bookmarkremove" ), QString::null, 0, this, 0 );
+ m_actionBookmarkRemove = new QAction( tr( "Remove" ),
+ Opie::Core::OResource::loadPixmap( "dagger/bookmarkremove", Opie::Core::OResource::SmallIcon ),
+ QString::null, 0, this, 0 );
connect( m_actionBookmarkRemove, SIGNAL(activated()), this, SLOT(slotBookmarkRemove()) );
m_actionBookmarkRemove->addTo( m_bookmarkMenu );
m_bookmarkMenu->insertSeparator();
m_menuBar->insertItem( tr( "Bookmark" ), m_bookmarkMenu );
// View menu
popup = new QPopupMenu( this );
// Retrieve list of available Sword module options (e.g. footnotes, Strong's numbers, etc.)
for ( a = m_actionSwordOpts.first(); a; a = m_actionSwordOpts.next() )
{
a->setToggleAction( true );
connect( a, SIGNAL(toggled(bool)), this, SLOT(slotViewSwordOption(bool)) );
a->addTo( popup );
}
popup->insertSeparator();
m_actionViewNavToolbar = new QAction( tr( "Navigation toolbar" ), QString::null, 0, this, 0 );
m_actionViewNavToolbar->setToggleAction( true );
connect( m_actionViewNavToolbar, SIGNAL(toggled(bool)), this, SLOT(slotViewNavToolbar(bool)) );
m_actionViewNavToolbar->addTo( popup );
m_actionViewSearchToolbar = new QAction( tr( "Search toolbar" ), QString::null, 0, this, 0 );
m_actionViewSearchToolbar->setToggleAction( true );
connect( m_actionViewSearchToolbar, SIGNAL(toggled(bool)), this, SLOT(slotViewSearchToolbar(bool)) );
m_actionViewSearchToolbar->addTo( popup );
m_menuBar->insertItem( tr( "View" ), popup );
}
void MainWindow::openModule( const QString &modulename, const QString &key )
{
sword::SWModule *module = m_swordMgr->Modules[ modulename.latin1() ];
if ( module )
{
TextWidget *tw = 0x0;
if ( !m_alwaysOpenNew )
{
// Try to find if the module is already opened, if so will use that TextWidget
QObjectList *childlist = queryList( "TextWidget" );
QObjectListIt it( *childlist );
while ( ( tw = reinterpret_cast<TextWidget *>(it.current()) ) != 0 &&
tw->getModuleName() != modulename )
++it;
if ( tw && tw->getModuleName() == modulename )
{
// Set key if one is present
if ( !key.isNull() )
tw->setKey( key );
// Raise tab
m_tabs.setCurrentTab( tw );
}
}
if ( m_alwaysOpenNew || !tw )
{
// Open module in new tab
QString icon;
QString type = module->Type();
if ( type == "Biblical Texts" )
icon = "dagger/bibletext";
else if ( type == "Commentaries" )
icon = "dagger/commentary";
else if ( type == "Lexicons / Dictionaries" )
icon = "dagger/lexicon";
tw = new TextWidget( this, module, m_numVerses, &m_textFont );
connect( tw, SIGNAL(sigRefClicked(const QString &)),
this, SLOT(slotTextRefClicked(const QString &)) );
connect( this, SIGNAL(sigNumVersesChanged(int)), tw, SLOT(slotNumVersesChanged(int)) );
connect( this, SIGNAL(sigFontChanged(const QFont *)), tw, SLOT(slotFontChanged(const QFont *)) );
connect( this, SIGNAL(sigOptionChanged()), tw, SLOT(slotOptionChanged()) );
m_tabs.addTab( tw, icon, modulename );
m_actionTextClose->setEnabled( true );
m_actionEditCopy->setEnabled( true );
m_actionBookmarkAdd->setEnabled( true );
// Set key if one is present
if ( !key.isNull() )
tw->setKey( key );
}
}
}
int MainWindow::findBookmark( const QString &bookmark )
{
int index = 3;
int id = m_bookmarkMenu->idAt( index );
while ( ( id != -1 ) && ( m_bookmarkMenu->text( id ) != bookmark ) )
{
++index;
id = m_bookmarkMenu->idAt( index );
}
return id;
}
void MainWindow::enableScreenBlanking( bool enable )
{
enable ? QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Enable
: QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::DisableSuspend;
}
void MainWindow::initConfig()
{
bool show;
m_config.setGroup( "Sword" );
for ( QAction *a = m_actionSwordOpts.first(); a; a = m_actionSwordOpts.next() )
{
show = m_config.readBoolEntry( a->text(), false );
a->setOn( show );
m_swordMgr->setGlobalOption ( a->text(), show ? "On" : "Off" );
}
// Display/hide toolbars based on last run
m_config.setGroup( "Config" );
m_alwaysOpenNew = m_config.readBoolEntry( "AlwaysOpenNew", false );
m_navToolbar->setAutoScrollRate( m_config.readNumEntry( "AutoScroll", 50 ) );
m_disableScreenBlank = m_config.readBoolEntry( "DisableScreenBlanking", false );
enableScreenBlanking( !m_disableScreenBlank );
m_copyFormat = m_config.readNumEntry( "CopyFormat", 0 );
show = m_config.readBoolEntry( "NavBar", false );
m_actionViewNavToolbar->setOn( show );
slotViewNavToolbar( show );
m_numVerses = m_config.readNumEntry( "NumVerses", 5 );
show = m_config.readBoolEntry( "SearchBar", false );
m_actionViewSearchToolbar->setOn( show );
slotViewSearchToolbar( show );
// Set text font
m_config.setGroup( "Font" );
QString fontFamily = m_config.readEntry( "Family", QString::null );
!fontFamily.isNull() ? m_textFont = QFont( fontFamily,
m_config.readNumEntry( "Size", -1 ),
m_config.readNumEntry( "Weight", QFont::Normal ),
m_config.readBoolEntry( "Italic", false ) )
: m_textFont = font(); // If font is not configured, set to default widget font
// Load bookmarks
m_config.setGroup( "Bookmarks");
int count = 1;
QString key = m_config.readEntry( QString::number( count ), QString::null );
while ( !key.isNull() )
{
int pos = key.find( "/" );
if ( pos > -1 )
{
QString bookmark;
bookmark.sprintf( "%s (%s)", key.right( key.length() - ( pos + 1 ) ).latin1(),
key.left( pos ).latin1() );
QAction *a = new QAction( bookmark, QString::null, 0, this, 0 );
a->addTo( m_bookmarkMenu );
connect( a, SIGNAL(activated()), this, SLOT(slotBookmarkSelected()) );
}
++count;
key = m_config.readEntry( QString::number( count ), QString::null );
}
m_actionBookmarkRemove->setEnabled( count > 1 );
// Load opened modules
m_config.setGroup( "Session");
QString first;
count = 1;
key = m_config.readEntry( QString::number( count ), QString::null );
while ( !key.isNull() )
{
int pos = key.find( "/" );
if ( pos > -1 )
{
if ( count == 1 )
first = key.left( pos );
openModule( key.left( pos ), key.right( key.length() - ( pos + 1 ) ) );
}
++count;
key = m_config.readEntry( QString::number( count ), QString::null );
}
m_tabs.setCurrentTab( first );
TextWidget *text = reinterpret_cast<TextWidget *>(m_tabs.currentWidget());
if ( text )
{
setCaption( QString( "%1 - Dagger" ).arg( text->getFullKey() ) );
m_navToolbar->setKey( text->getAbbrevKey() );
}
m_actionTextClose->setEnabled( count > 1 );
m_actionEditCopy->setEnabled( count > 1 );
}
void MainWindow::slotTextDisplayed( QWidget *textWidget )
{
TextWidget *text = reinterpret_cast<TextWidget *>(textWidget);
setCaption( QString( "%1 - Dagger" ).arg( text->getFullKey() ) );
m_navToolbar->setKey( text->getAbbrevKey() );
m_navToolbar->navBtnsEnable( text->isBibleText() );
m_searchToolbar->setCurrModule( text );
}
void MainWindow::slotTextOpen()
{
OpenTextDlg dlg( this, m_swordMgr, m_bibleIcon, m_commentaryIcon, m_lexiconIcon );
if ( QPEApplication::execDialog( &dlg ) == QDialog::Accepted )
{
openModule( dlg.selectedText() );
}
}
void MainWindow::slotTextClose()
{
TextWidget *text = reinterpret_cast<TextWidget *>(m_tabs.currentWidget());
if ( text )
{
m_tabs.removePage( text );
delete text;
// If no other modules are open, disable appropriate UI items
if ( !m_tabs.currentWidget() )
{
m_navToolbar->navBtnsEnable( false );
m_navToolbar->setKey( QString::null );
m_searchToolbar->setCurrModule( 0x0 );
m_actionTextClose->setEnabled( false );
m_actionEditCopy->setEnabled( false );
m_actionBookmarkAdd->setEnabled( false );
m_actionBookmarkRemove->setEnabled( false );
}
}
}
void MainWindow::slotTextInstall()
{
}
void MainWindow::slotEditCopy()
{
TextWidget *currModule = reinterpret_cast<TextWidget *>(m_tabs.currentWidget());
if ( currModule )
{
QString text;
switch( m_copyFormat )
{
case 0: text.sprintf( "%s (%s, %s)", currModule->getCurrVerse().latin1(),
currModule->getAbbrevKey().latin1(),
currModule->getModuleName().latin1() );
break;
case 1: text.sprintf( "%s (%s)", currModule->getCurrVerse().latin1(),
currModule->getAbbrevKey().latin1() );
break;
case 2: text = currModule->getCurrVerse();
break;
case 3: text = currModule->getAbbrevKey();
break;
default: text = QString::null;
};
if ( !text.isNull() )
QPEApplication::clipboard()->setText( text );
}
}
void MainWindow::slotEditConfigure()
{
ConfigureDlg dlg( this, m_modulePath, m_alwaysOpenNew, m_numVerses, m_disableScreenBlank, m_copyFormat,
&m_textFont );
if ( QPEApplication::execDialog( &dlg ) == QDialog::Accepted )
{
m_modulePath = dlg.swordPath();
m_alwaysOpenNew = dlg.alwaysOpenNew();
if ( dlg.numVerses() != m_numVerses )
{
m_numVerses = dlg.numVerses();
emit sigNumVersesChanged( m_numVerses );
}
m_disableScreenBlank = dlg.screenBlank();
enableScreenBlanking( !m_disableScreenBlank );
m_copyFormat = dlg.copyFormat();
m_textFont = dlg.selectedFont();
emit sigFontChanged( &m_textFont );
}
}
void MainWindow::slotBookmarkAdd()
{
TextWidget *text = reinterpret_cast<TextWidget *>(m_tabs.currentWidget());
if ( text )
{
// See if bookmark doesn't already exists
QString bookmark = text->getFullKey();
int menuId = findBookmark( bookmark );
if ( menuId == -1 )
{
// Bookmark not found, add
QAction *a = new QAction( bookmark, QString::null, 0, this, 0 );
a->addTo( m_bookmarkMenu );
connect( a, SIGNAL(activated()), this, SLOT(slotBookmarkSelected()) );
// Make sure remove option is enabled
m_actionBookmarkRemove->setEnabled( true );
}
}
}
void MainWindow::slotBookmarkRemove()
{
TextWidget *text = reinterpret_cast<TextWidget *>(m_tabs.currentWidget());
if ( text )
{
// See if bookmark exists for current module key
int menuId = findBookmark( text->getFullKey() );
if ( menuId != -1 )
{
// Bookmark found, remove
m_bookmarkMenu->removeItem( menuId );
//If this was the last bookmark, disable the remove option
if ( m_bookmarkMenu->idAt( 3 ) == -1 )
m_actionBookmarkRemove->setEnabled( false );
}
}
}
void MainWindow::slotBookmarkSelected()
{
const QAction *action = reinterpret_cast<const QAction *>(sender());
if ( action )
{
QString bookmark = action->text();
int pos = bookmark.find( " (" );
QString key = bookmark.left( pos );
pos += 2;
QString module = bookmark.mid( pos, bookmark.find( ")", pos ) - pos );
openModule( module, key );
}
}
void MainWindow::slotViewSwordOption( bool enabled )
{
const QAction *action = reinterpret_cast<const QAction*>(sender());
m_swordMgr->setGlobalOption ( action->text(), enabled ? "On" : "Off" );
emit sigOptionChanged();
}
void MainWindow::slotViewNavToolbar( bool enabled )
{
enabled ? m_navToolbar->show()
: m_navToolbar->hide();
}
void MainWindow::slotViewSearchToolbar( bool enabled )
{
enabled ? m_searchToolbar->show()
: m_searchToolbar->hide();
}
void MainWindow::slotNavPrevPage()
{
TextWidget *text = reinterpret_cast<TextWidget *>(m_tabs.currentWidget());
if ( text )
{
text->prevPage();
setCaption( QString( "%1 - Dagger" ).arg( text->getFullKey() ) );
m_navToolbar->setKey( text->getAbbrevKey() );
}
}
void MainWindow::slotNavPrevVerse()
{
TextWidget *text = reinterpret_cast<TextWidget *>(m_tabs.currentWidget());
if ( text )
{
text->prevVerse();
setCaption( QString( "%1 - Dagger" ).arg( text->getFullKey() ) );
m_navToolbar->setKey( text->getAbbrevKey() );
}
}
void MainWindow::slotNavKeyChanged( const QString &newKey )
{
QString key = newKey;
key.replace( QRegExp( "[-=.]" ), ":" );
TextWidget *text = reinterpret_cast<TextWidget *>(m_tabs.currentWidget());
if ( text )
{
text->setKey( key );
setCaption( QString( "%1 - Dagger" ).arg( text->getFullKey() ) );
}
}
void MainWindow::slotNavNextVerse()
{
TextWidget *text = reinterpret_cast<TextWidget *>(m_tabs.currentWidget());
if ( text )
{
text->nextVerse();
setCaption( QString( "%1 - Dagger" ).arg( text->getFullKey() ) );
m_navToolbar->setKey( text->getAbbrevKey() );
}
}
void MainWindow::slotNavNextPage()
{
TextWidget *text = reinterpret_cast<TextWidget *>(m_tabs.currentWidget());
if ( text )
{
text->nextPage();
setCaption( QString( "%1 - Dagger" ).arg( text->getFullKey() ) );
m_navToolbar->setKey( text->getAbbrevKey() );
}
}
void MainWindow::slotNavAutoScroll( bool enabled )
{
m_autoScrollTimer.stop();
if ( enabled )
m_autoScrollTimer.start( m_navToolbar->autoScrollRate() * 100 );
}
void MainWindow::slotNavScrollRateChanged( int newRate )
{
if ( m_autoScrollTimer.isActive() )
{
m_autoScrollTimer.stop();
m_autoScrollTimer.start( newRate * 100 );
}
}
void MainWindow::slotSearchResultClicked( const QString &key )
{
TextWidget *text = reinterpret_cast<TextWidget *>(m_tabs.currentWidget());
if ( text )
{
text->setKey( key );
setCaption( QString( "%1 - Dagger" ).arg( text->getFullKey() ) );
m_navToolbar->setKey( text->getAbbrevKey() );
}
}
void MainWindow::slotTextRefClicked( const QString &ref )
{
//printf( "Ref clicked: '%s'\n", ref.latin1() );
/*
Ref clicked: 'type=Strongs value=G3482'
Ref clicked: 'type=Strongs value=H07225'
Ref clicked: 'type=morph class=x-Robinson:N-PRI value=N-PRI'
Ref clicked: 'type=morph class=x-StrongsMorph:TH8804 value=TH8804'
*/
//owarn << "Reference: " << ref << oendl;
if ( !ref.isNull() )
{
TextWidget *text = reinterpret_cast<TextWidget *>(m_tabs.currentWidget());
if ( text )
{
// Parse type
int pos = ref.find( "type=", 0, false ) + 5;
QString typeStr = ref.mid( pos, ref.find( ' ', pos ) - pos );
// Parse class (for morph. only)
QString classStr;
if ( typeStr == "morph" )
{
pos = ref.find( "class=", 0, false ) + 5;
QString classStr = ref.mid( pos, ref.find( ' ', pos ) - pos );
// TODO - need to strip 'x-' from beginning and ':key' at end?
}
// Parse value
pos = ref.find( "value=", 0, false ) + 6;
QString valueStr = ref.mid( pos, ref.find( ' ', pos ) - pos );
if ( typeStr == "Strongs" )
{
//Determine if is a Hebrew or Greek reference
QString module;
if ( valueStr.at( 0 ) == 'H' )
module = "StrongsHebrew";
else
module = "StrongsGreek";
// Get key
QString key( valueStr );
key.remove( 0, 1 );
// Open reference
openModule( module, key );
}
else if ( typeStr == "morph" )
{
QMessageBox::information( this, tr( "Morphological Tags" ),
tr( "Morphological tag cross-referencing not implemented yet." ) );
}
}
}
}
diff --git a/noncore/apps/dagger/navbar.cpp b/noncore/apps/dagger/navbar.cpp
index 97761f7..ac49613 100644
--- a/noncore/apps/dagger/navbar.cpp
+++ b/noncore/apps/dagger/navbar.cpp
@@ -1,101 +1,105 @@
/*
Dagger - A Bible study program utilizing the Sword library.
Copyright (c) 2004 Dan Williams <drw@handhelds.org>
This file is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; either version 2 of the License, or (at your option) any later version.
This file is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this
file; see the file COPYING. If not, write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#include "navbar.h"
+#include <opie2/oresource.h>
+
#include <qpe/config.h>
#include <qpe/resource.h>
#include <qaction.h>
#include <qlineedit.h>
#include <qwhatsthis.h>
+using Opie::Core::OResource;
+
NavBar::NavBar( QMainWindow *parent )
: QToolBar( QString::null, parent, QMainWindow::Top, true )
{
// Initialize UI
- m_actionPrevPage = new QAction( tr( "Previous page" ), Resource::loadPixmap( "fastback" ),
+ m_actionPrevPage = new QAction( tr( "Previous page" ), OResource::loadPixmap( "fastback", OResource::SmallIcon ),
QString::null, 0, this, 0 );
m_actionPrevPage->setWhatsThis( tr( "Tap here to scroll backward one page." ) );
m_actionPrevPage->addTo( this );
connect( m_actionPrevPage, SIGNAL(activated()), this, SIGNAL(prevPage()) );
- m_actionPrevVerse = new QAction( tr( "Previous verse" ), Resource::loadPixmap( "back" ),
+ m_actionPrevVerse = new QAction( tr( "Previous verse" ), OResource::loadPixmap( "back", OResource::SmallIcon ),
QString::null, 0, this, 0 );
m_actionPrevVerse->setWhatsThis( tr( "Tap here to scroll backward one verse." ) );
m_actionPrevVerse->addTo( this );
connect( m_actionPrevVerse, SIGNAL(activated()), this, SIGNAL(prevVerse()) );
m_key = new QLineEdit( this );
setStretchableWidget( m_key );
QWhatsThis::add( m_key, tr( "Enter location to display here." ) );
connect(m_key, SIGNAL(textChanged(const QString &)), this, SIGNAL(keyChanged(const QString &)) );
- m_actionNextVerse = new QAction( tr( "Next verse" ), Resource::loadPixmap( "forward" ),
+ m_actionNextVerse = new QAction( tr( "Next verse" ), OResource::loadPixmap( "forward", OResource::SmallIcon ),
QString::null, 0, this, 0 );
m_actionNextVerse->setWhatsThis( tr( "Tap here to scroll forward one verse." ) );
m_actionNextVerse->addTo( this );
connect( m_actionNextVerse, SIGNAL(activated()), this, SIGNAL(nextVerse()) );
- m_actionNextPage = new QAction( tr( "Next page" ), Resource::loadPixmap( "fastforward" ),
+ m_actionNextPage = new QAction( tr( "Next page" ), OResource::loadPixmap( "fastforward", OResource::SmallIcon ),
QString::null, 0, this, 0 );
m_actionNextPage->setWhatsThis( tr( "Tap here to scroll forward one page." ) );
m_actionNextPage->addTo( this );
connect( m_actionNextPage, SIGNAL(activated()), this, SIGNAL(nextPage()) );
addSeparator();
m_scrollRate = new QSpinBox( 1, 100, 1, this );
m_scrollRate->setMinimumWidth( 35 );
QWhatsThis::add( m_scrollRate, tr( "Adjust auto-scroll rate here. A larger value represents a slower scrolling rate." ) );
connect( m_scrollRate, SIGNAL(valueChanged(int)), this, SIGNAL(scrollRateChanged(int)) );
- m_actionScroll = new QAction( tr( "Auto-scroll" ), Resource::loadPixmap( "dagger/autoscroll" ),
+ m_actionScroll = new QAction( tr( "Auto-scroll" ), OResource::loadPixmap( "dagger/autoscroll", OResource::SmallIcon ),
QString::null, 0, this, 0 );
m_actionScroll->setToggleAction( true );
m_actionScroll->setWhatsThis( tr( "Tap here to start or stop auto-scrolling." ) );
connect( m_actionScroll, SIGNAL(toggled(bool)), this, SIGNAL(autoScroll(bool)) );
m_actionScroll->addTo( this );
if ( parent )
{
installEventFilter( parent );
m_key->installEventFilter( parent );
}
}
void NavBar::navBtnsEnable( bool enabled )
{
m_actionPrevPage->setEnabled( enabled );
m_actionPrevVerse->setEnabled( enabled );
m_actionNextVerse->setEnabled( enabled );
m_actionNextPage->setEnabled( enabled );
m_scrollRate->setEnabled( enabled );
m_actionScroll->setEnabled( enabled );
}
void NavBar::setKey( const QString &newKey )
{
disconnect( m_key, SIGNAL(textChanged(const QString &)), 0, 0 );
m_key->setText( newKey );
connect(m_key, SIGNAL(textChanged(const QString &)), this, SIGNAL(keyChanged(const QString &)) );
}
void NavBar::setAutoScrollRate( int scrollRate )
{
m_scrollRate->setValue( scrollRate );
}
diff --git a/noncore/apps/dagger/searchbar.cpp b/noncore/apps/dagger/searchbar.cpp
index 9953e8f..b794bfd 100644
--- a/noncore/apps/dagger/searchbar.cpp
+++ b/noncore/apps/dagger/searchbar.cpp
@@ -1,179 +1,182 @@
/*
Dagger - A Bible study program utilizing the Sword library.
Copyright (c) 2004 Dan Williams <drw@handhelds.org>
This file is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; either version 2 of the License, or (at your option) any later version.
This file is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this
file; see the file COPYING. If not, write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#include "searchbar.h"
#include "textwidget.h"
+#include <opie2/oresource.h>
#include <opie2/owait.h>
#include <qpe/qpeapplication.h>
#include <qpe/resource.h>
#include <qaction.h>
#include <qcombobox.h>
#include <qlineedit.h>
#include <qwhatsthis.h>
#include <listkey.h>
#include <regex.h>
#include <versekey.h>
+using Opie::Core::OResource;
+
void searchCallback( char /*percent*/, void */*userData*/ )
{
qApp->processEvents();
}
SearchBar::SearchBar( QMainWindow *parent )
: QToolBar( QString::null, parent, QMainWindow::Top, true )
, m_currText( 0x0 )
{
// Initialize UI
m_searchText = new QLineEdit( this );
setStretchableWidget( m_searchText );
QWhatsThis::add( m_searchText, tr( "Enter text to search for here." ) );
connect(m_searchText, SIGNAL(textChanged(const QString &)),
this, SLOT(slotTextChanged(const QString &)) );
- m_actionFind = new QAction( tr( "Find" ), Resource::loadPixmap( "find" ), QString::null,
+ m_actionFind = new QAction( tr( "Find" ), OResource::loadPixmap( "find", OResource::SmallIcon ), QString::null,
0, this, 0 );
m_actionFind->setEnabled( false );
m_actionFind->addTo( this );
m_actionFind->setWhatsThis( tr( "Tap here search the current module for the text entered to the left." ) );
connect( m_actionFind, SIGNAL(activated()), this, SLOT(slotFind()) );
addSeparator();
- m_actionPrev = new QAction( tr( "Previous result" ), Resource::loadPixmap( "back" ),
+ m_actionPrev = new QAction( tr( "Previous result" ), OResource::loadPixmap( "back", OResource::SmallIcon ),
QString::null, 0, this, 0 );
m_actionPrev->setEnabled( false );
m_actionPrev->addTo( this );
m_actionPrev->setWhatsThis( tr( "Tap here to view the previous search result." ) );
connect( m_actionPrev, SIGNAL(activated()), this, SLOT(slotPrev()) );
m_resultList = new QComboBox( this );
m_resultList->setEnabled( false );
QWhatsThis::add( m_resultList, tr( "Select the desired search result here." ) );
connect( m_resultList, SIGNAL(activated(const QString &)), this, SIGNAL(sigResultClicked(const QString &)) );
- m_actionNext = new QAction( tr( "Next result" ), Resource::loadPixmap( "forward" ),
+ m_actionNext = new QAction( tr( "Next result" ), OResource::loadPixmap( "forward", OResource::SmallIcon ),
QString::null, 0, this, 0 );
m_actionNext->setEnabled( false );
m_actionNext->addTo( this );
m_actionNext->setWhatsThis( tr( "Tap here to view the next search result." ) );
connect( m_actionNext, SIGNAL(activated()), this, SLOT(slotNext()) );
if ( parent )
{
installEventFilter( parent );
// TODO - install for all controls
m_searchText->installEventFilter( parent );
}
}
void SearchBar::setCurrModule( TextWidget *currText )
{
m_actionFind->setEnabled( ( m_searchText->text() != "" ) && currText );
if ( !m_currText || ( currText->getModuleName() != m_currText->getModuleName() ) )
{
m_actionPrev->setEnabled( false );
m_resultList->clear();
m_resultList->setEnabled( false );
m_actionNext->setEnabled( false );
}
m_currText = currText;
}
void SearchBar::slotTextChanged( const QString &newText )
{
m_actionFind->setEnabled( ( newText != "" ) && m_currText );
}
void SearchBar::slotFind()
{
m_resultList->clear();
// Change application title and display Opie wait dialog to indicate search is beginning
QWidget *pWidget = reinterpret_cast<QWidget *>(parent());
QString caption = pWidget->caption();
pWidget->setCaption( "Searching..." );
Opie::Ui::OWait wait( pWidget );
wait.show();
qApp->processEvents();
// Perform search
// TODO - implement search callback function to animate wait cursor
sword::ListKey results = m_currText->getModule()->Search( m_searchText->text().latin1(), 0, REG_ICASE, 0, 0,
&searchCallback );
// Process results
int count = results.Count();
bool found = count > 0;
if ( found )
{
// Populate results combo box
sword::VerseKey key;
for ( int i = 0; i < count; i++ )
{
key.setText( results.GetElement( i )->getText() );
m_resultList->insertItem( key.getShortText() );
}
// Goto first result in list
m_resultList->setCurrentItem( 0 );
emit sigResultClicked( m_resultList->currentText() );
}
else
{
// Reset application title
pWidget->setCaption( caption );
}
// UI clean-up
wait.hide();
m_actionPrev->setEnabled( false );
m_resultList->setEnabled( found );
m_actionNext->setEnabled( count > 1 );
}
void SearchBar::slotPrev()
{
int item = m_resultList->currentItem() - 1;
m_resultList->setCurrentItem( item );
emit sigResultClicked( m_resultList->currentText() );
m_actionPrev->setEnabled( item > 0 );
m_actionNext->setEnabled( item < m_resultList->count() - 1 );
}
void SearchBar::slotNext()
{
int item = m_resultList->currentItem() + 1;
m_resultList->setCurrentItem( item );
emit sigResultClicked( m_resultList->currentText() );
m_actionPrev->setEnabled( true );
m_actionNext->setEnabled( item < m_resultList->count() - 1 );
}
void SearchBar::slotCloseBtn()
{
hide();
}