summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/apps/odict/dingwidget.cpp113
-rw-r--r--noncore/apps/odict/dingwidget.h35
-rw-r--r--noncore/apps/odict/odict.cpp55
-rw-r--r--noncore/apps/odict/odict.h4
4 files changed, 161 insertions, 46 deletions
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
@@ -32,11 +32,29 @@
32 32
33DingWidget::DingWidget(QString word, QTextBrowser *browser_top, QTextBrowser *browser_bottom, QString activated_name) 33
34DingWidget::DingWidget( )
34{ 35{
35 methodname = activated_name; 36 methodname = QString::null;
36 queryword = word; 37 trenner = "::";//QString::null;
37 trenner = QString::null;
38 lines = 0L; 38 lines = 0L;
39 loadValues(); 39 loadValues();
40
41 //X qDebug( topbrowser );
42 //X qDebug( top );
43//X
44 //X topbrowser = "blahbalh";
45 //X
46 //X qDebug( topbrowser );
47 //X qDebug( top );
48}
49
50void DingWidget::loadDict( QString name )
51{
52 qDebug( "MUSS ich wirklich aufgerufen werder? schreit loadDict" );
53 qDebug( "Starte mit dem loadedDict(...)" );
54 dictName = name;
55 qDebug( "bin in loadedDict() und lade das Dict:" );
56 qDebug( dictName );
40 QString opie_dir = getenv("OPIEDIR"); 57 QString opie_dir = getenv("OPIEDIR");
41 QFile file( opie_dir+"/noncore/apps/odict/eng_ita.dic" ); 58 QFile file( opie_dir+"/noncore/apps/odict/eng_ita.dic" );
59 //FIXME:this should of course be not hardcoded ;)
42 60
@@ -51,17 +69,38 @@ DingWidget::DingWidget(QString word, QTextBrowser *browser_top, QTextBrowser *br
51 } 69 }
70 qDebug( "loadedDict(...) ist beended" );
71}
72
73QString DingWidget::loadedDict()
74{
75 qDebug( dictName );
76 qDebug( "^ ^ ^ ^ ^ ^ ^ war der dictName" );
77 return dictName;
78}
52 79
53 lines = lines.grep( queryword ); 80void DingWidget::setCaseSensitive( bool caseS )
81{
82 isCaseSensitive = caseS;
83}
54 84
55 topbrowser = browser_top; 85void DingWidget::setDict( QString dict )
56 bottombrowser = browser_bottom; 86{
87 methodname = dict;
57} 88}
58 89
59void DingWidget::setText() 90void DingWidget::setCompleteWord( bool cword )
60{ 91{
61 QString top, bottom; 92 isCompleteWord = cword;
62 QStringList test = lines; 93}
63 parseInfo( test, top , bottom ); 94
64 95void DingWidget::setQueryWord( QString qword )
65 topbrowser->setText( top ); 96{
66 bottombrowser->setText( bottom ); 97 queryword = qword;
98}
99
100BroswerContent DingWidget::setText( QString word )
101{
102 queryword = word;
103 qDebug( queryword );
104 qDebug( "^ ^ ^ ^ ^ ^ ^ war das gesuchte Word");
105 return parseInfo();
67} 106}
@@ -72,7 +111,8 @@ void DingWidget::loadValues()
72 cfg.setGroup( "Method_"+methodname ); 111 cfg.setGroup( "Method_"+methodname );
73 trenner = cfg.readEntry( "Seperator" ); 112 //trenner = cfg.readEntry( "Seperator" );
74} 113}
75 114
76void DingWidget::parseInfo( QStringList &lines, QString &top, QString &bottom ) 115BroswerContent DingWidget::parseInfo()
77{ 116{
117 QStringList search = lines.grep( queryword );
78 118
@@ -88,5 +128,11 @@ void DingWidget::parseInfo( QStringList &lines, QString &top, QString &bottom )
88 QRegExp reg_word( queryword ); 128 QRegExp reg_word( queryword );
89 QString substitute = "<a href=''>"+queryword+"</a>";
90 QStringList toplist, bottomlist; 129 QStringList toplist, bottomlist;
91 for( QStringList::Iterator it = lines.begin() ; it != lines.end() ; ++it ) 130 QString substitute = "<strong>"+queryword+"</strong>";
131
132 /* Dieser Block ist von Patrik. Ich versuche einen neuen
133 * Ansatz. Zum einen ist HTML scheiße an dieser Stelle und
134 * zum andern funktioniert der Code nicht so wie er sollte.
135 QString substitute = "<a href=''>"+queryword+"</a>";
136
137 for( QStringList::Iterator it = search.begin() ; it != search.end() ; ++it )
92 { 138 {
@@ -108,4 +154,31 @@ void DingWidget::parseInfo( QStringList &lines, QString &top, QString &bottom )
108 //thats it, the lists are rendered. Lets put them in one string 154 //thats it, the lists are rendered. Lets put them in one string
109 bottom = html_header + bottomlist.join( "<br>" ) + html_footer; 155 s_strings.bottom = html_header + bottomlist.join( "<br>" ) + html_footer;
110 top = html_header + toplist.join( "<br>" ) + html_footer; 156 s_strings.top = html_header + toplist.join( "<br>" ) + html_footer;
157 */
158
159 for( QStringList::Iterator it = search.begin() ; it != search.end() ; ++it )
160 {
161 current = *it;
162 left = current.left( current.find( trenner ) );
163
164 right = current.right( current.length() - current.find(trenner) -2 );
165
166 if ( left.contains( queryword ) )
167 {
168 left.replace( queryword, substitute );
169 left = left + "-->" + right;
170 toplist.append( left );
171 }
172 else
173 {
174 right.replace( queryword, substitute );
175 left = right + "-->" + left;
176 bottomlist.append( right );
177 }
178 }
179
180 s_strings.bottom = bottomlist.join( "\n" );
181 s_strings.top = toplist.join( "\n" );
182
183 return s_strings;
111} 184}
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
@@ -9,10 +9,11 @@
9 9
10class QString;
11class QTextBrowser;
12class QStringList;
13
14#include <qstringlist.h> 10#include <qstringlist.h>
15
16#include <qstring.h> 11#include <qstring.h>
17 12
13struct BroswerContent
14{
15 QString top;
16 QString bottom;
17};
18
18class DingWidget 19class DingWidget
@@ -20,15 +21,27 @@ class DingWidget
20 public: 21 public:
21 DingWidget(QString word = 0, QTextBrowser* = 0, QTextBrowser* =0, QString activated_name=0); 22 DingWidget();
22 23
23 void setText(); 24 BroswerContent setText( QString );
24 QStringList lines; 25 QStringList lines;
26 void setCaseSensitive( bool );
27 void setCompleteWord( bool );
28 void loadDict( QString );
29 QString loadedDict();
30 void setQueryWord( QString );
31 void setDict( QString );
32
25 private: 33 private:
34 BroswerContent parseInfo();
35
36 BroswerContent s_strings;
37 bool isCompleteWord;
38 bool isCaseSensitive;
39
40 QString dictName;
41
26 QString search_word; 42 QString search_word;
27 void parseInfo( QStringList& , QString&, QString& );
28 QString queryword;
29 void loadValues(); 43 void loadValues();
44 QString queryword;
30 QString methodname; 45 QString methodname;
31 QString trenner; 46 QString trenner;
32
33 QTextBrowser *topbrowser, *bottombrowser;
34}; 47};
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
@@ -41,4 +41,4 @@ ODict::ODict() : QMainWindow()
41{ 41{
42
43 activated_name = QString::null; 42 activated_name = QString::null;
43
44 vbox = new QVBox( this ); 44 vbox = new QVBox( this );
@@ -46,2 +46,3 @@ ODict::ODict() : QMainWindow()
46 setupMenus(); 46 setupMenus();
47
47 48
@@ -57,2 +58,4 @@ ODict::ODict() : QMainWindow()
57 58
59 ding = new DingWidget();
60
58 loadConfig(); 61 loadConfig();
@@ -77,2 +80,3 @@ void ODict::loadConfig()
77 } 80 }
81 slotMethodChanged(1 ); //FIXME: this line should not contain a integer
78} 82}
@@ -92,3 +96,3 @@ void ODict::slotDisplayAbout()
92{ 96{
93 QMessageBox::about( this, tr( "About ODict" ), tr( "OPIE-Dictionary ODict \n (c) 2002, 2003 Carsten Niehaus \n cniehaus@handhelds.org \n Version 20030104" ) ); 97 QMessageBox::about( this, tr( "About ODict" ), tr( "OPIE-Dictionary ODict \n (c) 2002, 2003 Carsten Niehaus \n cniehaus@handhelds.org \n Version 20030108" ) );
94} 98}
@@ -98,12 +102,37 @@ void ODict::slotStartQuery()
98 QString querystring = query_le->text(); 102 QString querystring = query_le->text();
99 qDebug("opening dict >%s< for >%s<", activated_name.latin1(),querystring.latin1()); 103 //X qDebug("opening dict >%s< for >%s<", activated_name.latin1(),querystring.latin1());
100 if (querystring.isEmpty()){ 104 //X if (querystring.isEmpty()){
101 qWarning("empty querystring"); 105 //X qWarning("empty querystring");
102 return; 106 //X return;
103 } 107 //X }
104 if (!activated_name || activated_name.isEmpty()) 108 //X if (!activated_name || activated_name.isEmpty())
105 QMessageBox::warning(this,tr("No Dictionary"),tr("Please choose a dictonary") ); 109 //X QMessageBox::warning(this,tr("No Dictionary"),tr("Please choose a dictonary") );
106 else 110 //X else
107 DingWidget *ding = new DingWidget( querystring , browser_top, browser_bottom, activated_name ); 111 //X {
108 ding->setText(); 112
113 ding->setCaseSensitive( casesens );
114 ding->setCompleteWord( completewords );
115 ding->setDict( activated_name );
116
117 qDebug( " activated_name ist :" );
118 qDebug( activated_name );
119
120 qDebug( " loadedDict() ist :" );
121 qDebug( ding->loadedDict() );
122 if ( activated_name != ding->loadedDict() )
123 {
124 qDebug( "ComboBox geändert" );
125 ding->loadDict(activated_name);
126 }
127 else qDebug( "ComboBox war GLEICH" );
128
129 BroswerContent test = ding->setText( querystring );
130
131 browser_top->setText( test.top );
132 browser_bottom->setText( test.bottom );
133
134 qDebug( "Text sollte gesetzt sein..." );
135
136 //X }
137
109} 138}
@@ -154,3 +183,3 @@ void ODict::slotSetParameter( int count )
154 183
155void ODict::slotMethodChanged( int methodnumber ) 184void ODict::slotMethodChanged( int /*methodnumber*/ )
156{ 185{
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
@@ -23,2 +23,3 @@ class QTextBrowser;
23class QComboBox; 23class QComboBox;
24class DingWidget;
24 25
@@ -33,2 +34,3 @@ class ODict : public QMainWindow
33 *browser_bottom; 34 *browser_bottom;
35 DingWidget *ding;
34 36
@@ -45,4 +47,2 @@ class ODict : public QMainWindow
45 QAction *setting_a, *setting_b; 47 QAction *setting_a, *setting_b;
46
47 DingWidget *ding;
48 48