summaryrefslogtreecommitdiff
path: root/noncore
Unidiff
Diffstat (limited to 'noncore') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/apps/dagger/mainwindow.cpp61
1 files changed, 46 insertions, 15 deletions
diff --git a/noncore/apps/dagger/mainwindow.cpp b/noncore/apps/dagger/mainwindow.cpp
index e886bd8..3dd9eff 100644
--- a/noncore/apps/dagger/mainwindow.cpp
+++ b/noncore/apps/dagger/mainwindow.cpp
@@ -10,48 +10,49 @@ This file is distributed in the hope that it will be useful, but WITHOUT ANY
10WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 10WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
11PARTICULAR PURPOSE. See the GNU General Public License for more details. 11PARTICULAR PURPOSE. See the GNU General Public License for more details.
12 12
13You should have received a copy of the GNU General Public License along with this 13You should have received a copy of the GNU General Public License along with this
14file; see the file COPYING. If not, write to the Free Software Foundation, Inc., 14file; see the file COPYING. If not, write to the Free Software Foundation, Inc.,
1559 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 1559 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
16*/ 16*/
17 17
18#include "mainwindow.h" 18#include "mainwindow.h"
19#include "navbar.h" 19#include "navbar.h"
20#include "searchbar.h" 20#include "searchbar.h"
21#include "opentextdlg.h" 21#include "opentextdlg.h"
22#include "configuredlg.h" 22#include "configuredlg.h"
23#include "textwidget.h" 23#include "textwidget.h"
24 24
25#include <opie2/odebug.h> 25#include <opie2/odebug.h>
26 26
27#include <qpe/qcopenvelope_qws.h> 27#include <qpe/qcopenvelope_qws.h>
28#include <qpe/qpeapplication.h> 28#include <qpe/qpeapplication.h>
29#include <qpe/resource.h> 29#include <qpe/resource.h>
30 30
31#include <qaction.h> 31#include <qaction.h>
32#include <qclipboard.h> 32#include <qclipboard.h>
33#include <qmenubar.h> 33#include <qmenubar.h>
34#include <qmessagebox.h>
34#include <qobjectlist.h> 35#include <qobjectlist.h>
35#include <qpopupmenu.h> 36#include <qpopupmenu.h>
36#include <qtimer.h> 37#include <qtimer.h>
37#include <qtoolbar.h> 38#include <qtoolbar.h>
38 39
39#include <markupfiltmgr.h> 40#include <markupfiltmgr.h>
40 41
41MainWindow::MainWindow( QWidget *parent, const char *name, WFlags /*fl*/ ) 42MainWindow::MainWindow( QWidget *parent, const char *name, WFlags /*fl*/ )
42 : QMainWindow( parent, name, WStyle_ContextHelp ) 43 : QMainWindow( parent, name, WStyle_ContextHelp )
43 , m_config( "dagger" ) 44 , m_config( "dagger" )
44 , m_tabs( this ) 45 , m_tabs( this )
45 , m_autoScrollTimer( this ) 46 , m_autoScrollTimer( this )
46{ 47{
47 // Initialize sword library manager 48 // Initialize sword library manager
48 m_config.setGroup( "Sword" ); 49 m_config.setGroup( "Sword" );
49 m_modulePath = m_config.readEntry( "ModPath", "/usr/local/share/sword" ); 50 m_modulePath = m_config.readEntry( "ModPath", "/usr/local/share/sword" );
50 m_swordMgr = new sword::SWMgr( m_modulePath.latin1(), true, 51 m_swordMgr = new sword::SWMgr( m_modulePath.latin1(), true,
51 new sword::MarkupFilterMgr( sword::FMT_HTMLHREF ) ); 52 new sword::MarkupFilterMgr( sword::FMT_HTMLHREF ) );
52 53
53 // Retrieve list of available Sword module options (e.g. footnotes, Strong's numbers, etc.) 54 // Retrieve list of available Sword module options (e.g. footnotes, Strong's numbers, etc.)
54 sword::StringList swordOpts = m_swordMgr->getGlobalOptions(); 55 sword::StringList swordOpts = m_swordMgr->getGlobalOptions();
55 for ( sword::StringList::iterator it = swordOpts.begin(); it != swordOpts.end(); it++ ) 56 for ( sword::StringList::iterator it = swordOpts.begin(); it != swordOpts.end(); it++ )
56 m_actionSwordOpts.append( new QAction( (*it).c_str(), QString::null, 0, this, 0 ) ); 57 m_actionSwordOpts.append( new QAction( (*it).c_str(), QString::null, 0, this, 0 ) );
57 m_actionSwordOpts.sort(); 58 m_actionSwordOpts.sort();
@@ -666,48 +667,78 @@ void MainWindow::slotNavAutoScroll( bool enabled )
666} 667}
667 668
668void MainWindow::slotNavScrollRateChanged( int newRate ) 669void MainWindow::slotNavScrollRateChanged( int newRate )
669{ 670{
670 if ( m_autoScrollTimer.isActive() ) 671 if ( m_autoScrollTimer.isActive() )
671 { 672 {
672 m_autoScrollTimer.stop(); 673 m_autoScrollTimer.stop();
673 m_autoScrollTimer.start( newRate * 100 ); 674 m_autoScrollTimer.start( newRate * 100 );
674 } 675 }
675} 676}
676 677
677void MainWindow::slotSearchResultClicked( const QString &key ) 678void MainWindow::slotSearchResultClicked( const QString &key )
678{ 679{
679 TextWidget *text = reinterpret_cast<TextWidget *>(m_tabs.currentWidget()); 680 TextWidget *text = reinterpret_cast<TextWidget *>(m_tabs.currentWidget());
680 if ( text ) 681 if ( text )
681 { 682 {
682 text->setKey( key ); 683 text->setKey( key );
683 setCaption( QString( "%1 - Dagger" ).arg( text->getFullKey() ) ); 684 setCaption( QString( "%1 - Dagger" ).arg( text->getFullKey() ) );
684 m_navToolbar->setKey( text->getAbbrevKey() ); 685 m_navToolbar->setKey( text->getAbbrevKey() );
685 } 686 }
686} 687}
687 688
688void MainWindow::slotTextRefClicked( const QString &ref ) 689void MainWindow::slotTextRefClicked( const QString &ref )
689{ 690{
691//printf( "Ref clicked: '%s'\n", ref.latin1() );
692/*
693Ref clicked: 'type=Strongs value=G3482'
694Ref clicked: 'type=Strongs value=H07225'
695Ref clicked: 'type=morph class=x-Robinson:N-PRI value=N-PRI'
696Ref clicked: 'type=morph class=x-StrongsMorph:TH8804 value=TH8804'
697*/
690 //owarn << "Reference: " << ref << oendl; 698 //owarn << "Reference: " << ref << oendl;
691 if ( !ref.isNull() ) 699 if ( !ref.isNull() )
692 { 700 {
693 TextWidget *text = reinterpret_cast<TextWidget *>(m_tabs.currentWidget()); 701 TextWidget *text = reinterpret_cast<TextWidget *>(m_tabs.currentWidget());
694 if ( text ) 702 if ( text )
695 { 703 {
696 QString module; 704 // Parse type
697 QString key( ref ); 705 int pos = ref.find( "type=", 0, false ) + 5;
698 key.remove( 0, 2 ); 706 QString typeStr = ref.mid( pos, ref.find( ' ', pos ) - pos );
699 707
700 QChar book = ref.at( 1 ); 708 // Parse class (for morph. only)
701 // TODO- this is ugly, need better way to determine type of reference 709 QString classStr;
702 // take a look at SWModule::getRawEntry() 710 if ( typeStr == "morph" )
703 int keyValue = key.toInt(); 711 {
704 if ( book == 'H' && keyValue <= 8674 ) 712 pos = ref.find( "class=", 0, false ) + 5;
705 module = "StrongsHebrew"; 713 QString classStr = ref.mid( pos, ref.find( ' ', pos ) - pos );
706 else if ( book == 'G' && keyValue <= 5624 ) 714
707 module = "StrongsGreek"; 715 // TODO - need to strip 'x-' from beginning and ':key' at end?
708 716 }
709 if ( !module.isEmpty() ) 717
710 openModule( module, key ); 718 // Parse value
719 pos = ref.find( "value=", 0, false ) + 6;
720 QString valueStr = ref.mid( pos, ref.find( ' ', pos ) - pos );
721
722 if ( typeStr == "Strongs" )
723 {
724 //Determine if is a Hebrew or Greek reference
725 QString module;
726 if ( valueStr.at( 0 ) == 'H' )
727 module = "StrongsHebrew";
728 else
729 module = "StrongsGreek";
730
731 // Get key
732 QString key( valueStr );
733 key.remove( 0, 1 );
734 // Open reference
735 openModule( module, key );
736 }
737 else if ( typeStr == "morph" )
738 {
739 QMessageBox::information( this, tr( "Morphological Tags" ),
740 tr( "Morphological tag cross-referencing not implemented yet." ) );
741 }
711 } 742 }
712 } 743 }
713} 744}