summaryrefslogtreecommitdiff
authordrw <drw>2004-12-20 23:48:10 (UTC)
committer drw <drw>2004-12-20 23:48:10 (UTC)
commitef69c13359fc437a439eb3b018e7b29fb625c9a7 (patch) (unidiff)
tree18929ecd273c64fa4c884d4efeb4904c2df82a10
parent3d9ea198ea8046d3f2c5b88efd721ffb00df2c22 (diff)
downloadopie-ef69c13359fc437a439eb3b018e7b29fb625c9a7.zip
opie-ef69c13359fc437a439eb3b018e7b29fb625c9a7.tar.gz
opie-ef69c13359fc437a439eb3b018e7b29fb625c9a7.tar.bz2
Reapply fix for Strong x-ref
Diffstat (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
@@ -31,6 +31,7 @@ file; see the file COPYING. If not, write to the Free Software Foundation, Inc.,
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>
@@ -687,27 +688,57 @@ void MainWindow::slotSearchResultClicked( const QString &key )
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}