From da7a12b48efb1ff37d1316d77f52123778a403a4 Mon Sep 17 00:00:00 2001
From: tille <tille>
Date: Thu, 09 Jan 2003 13:56:54 +0000
Subject: commit for carsten

---
diff --git a/noncore/apps/odict/dingwidget.cpp b/noncore/apps/odict/dingwidget.cpp
index 2913836..7abad22 100644
--- a/noncore/apps/odict/dingwidget.cpp
+++ b/noncore/apps/odict/dingwidget.cpp
@@ -30,15 +30,33 @@
 #include <qtextbrowser.h>
 #include <stdlib.h> // for getenv
 
-DingWidget::DingWidget(QString word, QTextBrowser *browser_top, QTextBrowser *browser_bottom, QString activated_name)
+
+DingWidget::DingWidget( )
 {
-	methodname = activated_name;
-	queryword = word;
-	trenner = QString::null;
+	methodname = QString::null;
+	trenner = "::";//QString::null;
 	lines = 0L;
 	loadValues();
+
+//X 	qDebug( topbrowser );
+//X 	qDebug( top );
+//X 
+//X 	topbrowser = "blahbalh";
+//X 	
+//X 	qDebug( topbrowser );
+//X 	qDebug( top );
+}
+
+void DingWidget::loadDict( QString name )
+{
+	qDebug( "MUSS ich wirklich aufgerufen werder? schreit loadDict" );
+	qDebug( "Starte mit dem loadedDict(...)" );
+	dictName = name;
+	qDebug( "bin in loadedDict() und lade das Dict:" );
+	qDebug( dictName );
   	QString opie_dir = getenv("OPIEDIR");
 	QFile file( opie_dir+"/noncore/apps/odict/eng_ita.dic" );
+	//FIXME:this should of course be not hardcoded ;)
 	
 	if(  file.open(  IO_ReadOnly ) )
 	{
@@ -49,32 +67,54 @@ DingWidget::DingWidget(QString word, QTextBrowser *browser_top, QTextBrowser *br
 		}
 		file.close();
 	}
+	qDebug( "loadedDict(...) ist beended" );
+}
+
+QString DingWidget::loadedDict()
+{ 
+	qDebug( dictName );
+	qDebug( "^ ^ ^ ^ ^ ^ ^ war der dictName" );
+	return dictName;
+}
 
-	lines = lines.grep( queryword );
+void DingWidget::setCaseSensitive( bool caseS )
+{
+	isCaseSensitive = caseS;
+}
 
-	topbrowser = browser_top;
-	bottombrowser = browser_bottom;
+void DingWidget::setDict( QString dict )
+{
+	methodname = dict;
 }
 
-void DingWidget::setText()
+void DingWidget::setCompleteWord( bool cword )
 {
-	QString top, bottom;
-	QStringList test = lines;
-	parseInfo( test, top , bottom );
-	
-	topbrowser->setText( top );
-	bottombrowser->setText( bottom );
+	isCompleteWord = cword;
+}
+
+void DingWidget::setQueryWord( QString qword )
+{
+	queryword = qword;
+}
+
+BroswerContent DingWidget::setText( QString word )
+{
+	queryword = word;
+	qDebug( queryword );
+	qDebug( "^ ^ ^ ^ ^ ^ ^ war das gesuchte Word");
+	return parseInfo();
 }
 
 void DingWidget::loadValues()
 {
 	Config cfg(  "odict" );
 	cfg.setGroup( "Method_"+methodname );
-	trenner = cfg.readEntry( "Seperator" );
+	//trenner = cfg.readEntry( "Seperator" );
 }
 
-void DingWidget::parseInfo( QStringList &lines, QString &top, QString &bottom )
+BroswerContent DingWidget::parseInfo()
 {
+	QStringList search = lines.grep( queryword );
 
  	QString current;
  	QString left;
@@ -86,9 +126,15 @@ void DingWidget::parseInfo( QStringList &lines, QString &top, QString &bottom )
 	QString html_table_right = "</td></tr>";
 	QRegExp reg_div( trenner );
 	QRegExp reg_word( queryword );
-	QString substitute = "<a href=''>"+queryword+"</a>";
 	QStringList toplist, bottomlist;
-	for( QStringList::Iterator it = lines.begin() ; it != lines.end() ; ++it )
+	QString substitute = "<strong>"+queryword+"</strong>";
+
+	/*             Dieser Block ist von Patrik. Ich versuche einen neuen
+	 *             Ansatz. Zum einen ist HTML schei�e an dieser Stelle und 
+	 *             zum andern funktioniert der Code nicht so wie er sollte.
+	QString substitute = "<a href=''>"+queryword+"</a>";
+	 
+	for( QStringList::Iterator it = search.begin() ; it != search.end() ; ++it )
 	{
 		current = *it;
 		left = current.left( current.find(reg_div) );
@@ -106,6 +152,33 @@ void DingWidget::parseInfo( QStringList &lines, QString &top, QString &bottom )
 	}
 		
 	//thats it, the lists are rendered. Lets put them in one string
-	bottom = html_header + bottomlist.join( "<br>" ) + html_footer;
-	top    = html_header + toplist.join( "<br>" )    + html_footer;
+	s_strings.bottom = html_header + bottomlist.join( "<br>" ) + html_footer;
+	s_strings.top    = html_header + toplist.join( "<br>" )    + html_footer;
+	*/
+
+	for( QStringList::Iterator it = search.begin() ; it != search.end() ; ++it )
+	{
+		current = *it;
+		left = current.left( current.find( trenner ) );
+ 		
+		right = current.right( current.length() - current.find(trenner) -2 );
+
+ 		if ( left.contains( queryword ) )
+		{
+			left.replace( queryword, substitute );
+			left = left + "-->" + right;
+			toplist.append( left );
+		}
+		else
+		{
+			right.replace( queryword, substitute );
+			left = right + "-->" + left;
+			bottomlist.append( right );
+		}
+	}
+
+	s_strings.bottom = bottomlist.join( "\n" );
+	s_strings.top = toplist.join( "\n" );
+
+	return s_strings;
 }
diff --git a/noncore/apps/odict/dingwidget.h b/noncore/apps/odict/dingwidget.h
index c96039f..ba37009 100644
--- a/noncore/apps/odict/dingwidget.h
+++ b/noncore/apps/odict/dingwidget.h
@@ -7,28 +7,41 @@
  *                                                                         *
  **************************************************************************/
 
-class QString;
-class QTextBrowser;
-class QStringList;
-
 #include <qstringlist.h>
-
 #include <qstring.h>
 
+struct BroswerContent
+{ 
+	QString top;
+	QString bottom;
+};
+
 class DingWidget
 {
     public:
-		DingWidget(QString word = 0, QTextBrowser* = 0, QTextBrowser* =0, QString activated_name=0);
+		DingWidget();
 
-		void setText();
+		BroswerContent setText( QString );
 		QStringList lines;
+		void setCaseSensitive( bool );
+		void setCompleteWord( bool );
+		void loadDict( QString );
+		QString loadedDict();
+		void setQueryWord( QString );
+		void setDict( QString );
+
 	private:
+		BroswerContent parseInfo();
+
+		BroswerContent s_strings;
+		bool isCompleteWord;
+		bool isCaseSensitive;
+
+		QString dictName;
+		
 		QString search_word;
-		void parseInfo( QStringList& , QString&, QString& );
-		QString queryword;
 		void loadValues();
+		QString queryword;
 		QString methodname;
 		QString trenner;
-		
-		QTextBrowser *topbrowser, *bottombrowser;
 };
diff --git a/noncore/apps/odict/odict.cpp b/noncore/apps/odict/odict.cpp
index 6f176f9..549c40a 100644
--- a/noncore/apps/odict/odict.cpp
+++ b/noncore/apps/odict/odict.cpp
@@ -39,11 +39,12 @@
 
 ODict::ODict() : QMainWindow()
 {
-
 	activated_name = QString::null;
+	
 	vbox = new QVBox( this );
 	setCaption( tr( "OPIE-Dictionary" ) );
 	setupMenus();
+	
 
 	QHBox *hbox = new QHBox( vbox );
 	QLabel* query_label = new QLabel( tr( "Query:" ) , hbox ); query_label->show();
@@ -55,6 +56,8 @@ ODict::ODict() : QMainWindow()
 	browser_top = new QTextBrowser( vbox );
 	browser_bottom = new QTextBrowser( vbox );
 
+	ding = new DingWidget();
+
 	loadConfig();
 	setCentralWidget( vbox );
 }
@@ -75,6 +78,7 @@ void ODict::loadConfig()
 		cfg.setGroup( *it );
 		query_co->insertItem( cfg.readEntry( "Name" ) );
 	}
+	slotMethodChanged(1 );           //FIXME: this line should not contain a integer
 }
 
 
@@ -90,22 +94,47 @@ void ODict::saveConfig()
 
 void ODict::slotDisplayAbout()
 {
-	QMessageBox::about(  this, tr( "About ODict" ), tr( "OPIE-Dictionary ODict \n (c) 2002, 2003 Carsten  Niehaus \n cniehaus@handhelds.org \n Version 20030104" ) );
+	QMessageBox::about(  this, tr( "About ODict" ), tr( "OPIE-Dictionary ODict \n (c) 2002, 2003 Carsten  Niehaus \n cniehaus@handhelds.org \n Version 20030108" ) );
 }
 
 void ODict::slotStartQuery()
 {
 	QString querystring = query_le->text();
-	qDebug("opening dict >%s< for >%s<", activated_name.latin1(),querystring.latin1());
-	if (querystring.isEmpty()){
-		qWarning("empty querystring");
-		return;
-	}
-	if (!activated_name || activated_name.isEmpty())
-		QMessageBox::warning(this,tr("No Dictionary"),tr("Please choose a dictonary") );
-	else
-		DingWidget *ding = new DingWidget( querystring , browser_top, browser_bottom, activated_name );
-		ding->setText();
+//X 	qDebug("opening dict >%s< for >%s<", activated_name.latin1(),querystring.latin1());
+//X 	if (querystring.isEmpty()){
+//X 		qWarning("empty querystring");
+//X 		return;
+//X 	}
+//X 	if (!activated_name || activated_name.isEmpty())
+//X 		QMessageBox::warning(this,tr("No Dictionary"),tr("Please choose a dictonary") );
+//X 	else
+//X 	{
+		
+		ding->setCaseSensitive( casesens ); 
+		ding->setCompleteWord( completewords ); 
+		ding->setDict( activated_name );
+		
+		qDebug( "            activated_name ist :" );
+		qDebug( activated_name );
+		
+		qDebug( "            loadedDict() ist :" );
+		qDebug( ding->loadedDict() );
+		if ( activated_name != ding->loadedDict() )
+		{
+			qDebug( "ComboBox ge�ndert" );
+			ding->loadDict(activated_name);
+		}
+		else qDebug( "ComboBox war GLEICH" );
+		
+		BroswerContent test = ding->setText( querystring );
+
+		browser_top->setText( test.top );
+		browser_bottom->setText( test.bottom );
+		
+		qDebug( "Text sollte gesetzt sein..." );
+
+//X 	}
+
 }
 
 
@@ -152,7 +181,7 @@ void ODict::slotSetParameter( int count )
  	else qWarning( "ERROR" );
 }
 
-void ODict::slotMethodChanged( int methodnumber )
+void ODict::slotMethodChanged( int /*methodnumber*/ )
 {
 	activated_name = query_co->currentText();
 }
diff --git a/noncore/apps/odict/odict.h b/noncore/apps/odict/odict.h
index 5096c5e..b20c165 100644
--- a/noncore/apps/odict/odict.h
+++ b/noncore/apps/odict/odict.h
@@ -21,6 +21,7 @@ class QActionGroup;
 class DingWidget;
 class QTextBrowser;
 class QComboBox;
+class DingWidget;
 
 class ODict : public QMainWindow
 {
@@ -31,6 +32,7 @@ class ODict : public QMainWindow
 		QVBox *vbox;
 		QTextBrowser *browser_top,
 					 *browser_bottom;
+		DingWidget *ding;
 
 	private:
 		QPopupMenu *help, *settings, *parameter, *error_tol_menu;
@@ -43,8 +45,6 @@ class ODict : public QMainWindow
 		QVBoxLayout *vbox_layout;
 
 		QAction *setting_a, *setting_b;
-
-		DingWidget *ding;
 		
 		void setupMenus();
 
--
cgit v0.9.0.2