summaryrefslogtreecommitdiff
path: root/noncore
Unidiff
Diffstat (limited to 'noncore') (more/less context) (show whitespace changes)
-rw-r--r--noncore/apps/dagger/mainwindow.cpp51
1 files changed, 41 insertions, 10 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
@@ -28,12 +28,13 @@ file; see the file COPYING. If not, write to the Free Software Foundation, Inc.,
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>
@@ -684,30 +685,60 @@ void MainWindow::slotSearchResultClicked( const QString &key )
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 {
704 // Parse type
705 int pos = ref.find( "type=", 0, false ) + 5;
706 QString typeStr = ref.mid( pos, ref.find( ' ', pos ) - pos );
707
708 // Parse class (for morph. only)
709 QString classStr;
710 if ( typeStr == "morph" )
711 {
712 pos = ref.find( "class=", 0, false ) + 5;
713 QString classStr = ref.mid( pos, ref.find( ' ', pos ) - pos );
714
715 // TODO - need to strip 'x-' from beginning and ':key' at end?
716 }
717
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
696 QString module; 725 QString module;
697 QString key( ref ); 726 if ( valueStr.at( 0 ) == 'H' )
698 key.remove( 0, 2 );
699
700 QChar book = ref.at( 1 );
701 // TODO- this is ugly, need better way to determine type of reference
702 // take a look at SWModule::getRawEntry()
703 int keyValue = key.toInt();
704 if ( book == 'H' && keyValue <= 8674 )
705 module = "StrongsHebrew"; 727 module = "StrongsHebrew";
706 else if ( book == 'G' && keyValue <= 5624 ) 728 else
707 module = "StrongsGreek"; 729 module = "StrongsGreek";
708 730
709 if ( !module.isEmpty() ) 731 // Get key
732 QString key( valueStr );
733 key.remove( 0, 1 );
734 // Open reference
710 openModule( module, key ); 735 openModule( module, key );
711 } 736 }
737 else if ( typeStr == "morph" )
738 {
739 QMessageBox::information( this, tr( "Morphological Tags" ),
740 tr( "Morphological tag cross-referencing not implemented yet." ) );
741 }
742 }
712 } 743 }
713} 744}