summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/apps/odict/dingwidget.cpp30
-rw-r--r--noncore/apps/odict/odict.cpp37
2 files changed, 15 insertions, 52 deletions
diff --git a/noncore/apps/odict/dingwidget.cpp b/noncore/apps/odict/dingwidget.cpp
index ed67abf..55a716d 100644
--- a/noncore/apps/odict/dingwidget.cpp
+++ b/noncore/apps/odict/dingwidget.cpp
@@ -1,144 +1,132 @@
1/*************************************************************************** 1/***************************************************************************
2 application: : ODict 2 application: : ODict
3 3
4 begin : December 2002 4 begin : December 2002
5 copyright : ( C ) 2002, 2003 by Carsten Niehaus 5 copyright : ( C ) 2002, 2003 by Carsten Niehaus
6 email : cniehaus@handhelds.org 6 email : cniehaus@handhelds.org
7 **************************************************************************/ 7 **************************************************************************/
8 8
9/*************************************************************************** 9/***************************************************************************
10 * * 10 * *
11 * This program is free software; you can redistribute it and/or modify * 11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by * 12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or * 13 * the Free Software Foundation; either version 2 of the License, or *
14 * ( at your option ) any later version. * 14 * ( at your option ) any later version. *
15 * * 15 * *
16 **************************************************************************/ 16 **************************************************************************/
17#include "dingwidget.h" 17#include "dingwidget.h"
18 18
19#include <qfile.h> 19#include <qfile.h>
20#include <qpe/config.h> 20#include <qpe/config.h>
21#include <qstring.h> 21#include <qstring.h>
22#include <qtextstream.h> 22#include <qtextstream.h>
23#include <qstringlist.h> 23#include <qstringlist.h>
24#include <qregexp.h> 24#include <qregexp.h>
25 25
26DingWidget::DingWidget( ) 26DingWidget::DingWidget( )
27{ 27{
28 methodname = QString::null; 28 methodname = QString::null;
29 trenner = QString::null; 29 trenner = QString::null;
30 lines = 0L; 30 lines = 0L;
31} 31}
32 32
33void DingWidget::loadDict( QString name ) 33void DingWidget::loadDict( QString name )
34{ 34{
35 qDebug( "bin in DingWidget::loadDict(). name ist:" ); 35 lines.clear(); //as we will load a new list we have to
36 qDebug( name ); 36 //remove the old one
37 qDebug( "DingWidget::loadDict( ... )" );
37 38
38 dictName = name;
39 Config cfg( "odict" ); 39 Config cfg( "odict" );
40 if ( !methodname ) { return; } 40 cfg.setGroup( "Method_" + name );
41 cfg.setGroup( "Method_" + methodname );
42 QFile file( cfg.readEntry( "file" ) ); 41 QFile file( cfg.readEntry( "file" ) );
43 42
44 qDebug( cfg.readEntry( "file" ) );
45
46 if( file.open( IO_ReadOnly ) ) 43 if( file.open( IO_ReadOnly ) )
47 { 44 {
48 QTextStream stream( &file ); 45 QTextStream stream( &file );
49 while ( !stream.eof() ) 46 while ( !stream.eof() )
50 { 47 {
51 lines.append( stream.readLine() ); 48 lines.append( stream.readLine() );
52 } 49 }
53 file.close(); 50 file.close();
54 } 51 }
55 loadValues(); 52 loadValues();
56
57} 53}
58 54
59QString DingWidget::loadedDict() const 55QString DingWidget::loadedDict() const
60{ 56{
61 return dictName; 57 return dictName;
62} 58}
63 59
64void DingWidget::setCaseSensitive( bool caseS ) 60void DingWidget::setCaseSensitive( bool caseS )
65{ 61{
66 isCaseSensitive = caseS; 62 isCaseSensitive = caseS;
67} 63}
68 64
69void DingWidget::setDict( QString dict ) 65void DingWidget::setDict( QString dict )
70{ 66{
71 methodname = dict; 67 methodname = dict;
72} 68}
73 69
74void DingWidget::setCompleteWord( bool cword )
75{
76 isCompleteWord = cword;
77}
78
79void DingWidget::setQueryWord( QString qword ) 70void DingWidget::setQueryWord( QString qword )
80{ 71{
81 queryword = qword; 72 queryword = qword;
82} 73}
83 74
84 75
85void DingWidget::loadValues() 76void DingWidget::loadValues()
86{ 77{
87 if ( !methodname ) return; 78 if ( !methodname ) return;
88 Config cfg( "odict" ); 79 Config cfg( "odict" );
89 cfg.setGroup( "Method_" + methodname ); 80 cfg.setGroup( "Method_" + methodname );
90 trenner = cfg.readEntry( "Seperator" ); 81 trenner = cfg.readEntry( "Seperator" );
91 lang1_name = cfg.readEntry( "Lang1" ); 82 lang1_name = cfg.readEntry( "Lang1" );
92 lang2_name = cfg.readEntry( "Lang2" ); 83 lang2_name = cfg.readEntry( "Lang2" );
93} 84}
94 85
95BroswerContent DingWidget::setText( QString word ) 86BroswerContent DingWidget::setText( QString word )
96{ 87{
97 queryword = word; 88 queryword = word;
98 return parseInfo(); 89 return parseInfo();
99} 90}
100 91
101 92
102BroswerContent DingWidget::parseInfo() 93BroswerContent DingWidget::parseInfo()
103{ 94{
104 qDebug( "bin in DingWidget::parseInfo()" );
105
106 if ( isCompleteWord )
107 queryword = " " + queryword + " ";
108 QStringList search = lines.grep( queryword , isCaseSensitive ); 95 QStringList search = lines.grep( queryword , isCaseSensitive );
109 96
110 QString current; 97 QString current;
111 QString left; 98 QString left;
112 QString right; 99 QString right;
113 QRegExp reg_div( trenner ); 100 QRegExp reg_div( trenner );
114 QRegExp reg_word( queryword ); 101 QRegExp reg_word( queryword );
115 reg_word.setCaseSensitive( isCaseSensitive ); 102 reg_word.setCaseSensitive( isCaseSensitive );
116 QStringList toplist, bottomlist; 103 QStringList toplist, bottomlist;
117 QString substitute = "<strong>"+queryword+"</strong>"; 104 QString substitute = "<strong>"+queryword+"</strong>";
118 105
119 for( QStringList::Iterator it = search.begin() ; it != search.end() ; ++it ) 106 for( QStringList::Iterator it = search.begin() ; it != search.end() ; ++it )
120 { 107 {
121 current = *it; 108 current = *it;
122 left = current.left( current.find( trenner ) ); 109 left = current.left( current.find( trenner ) );
123 110
124 right = current.right( current.length() - current.find(trenner) - trenner.length() ); 111 right = current.right( current.length() - current.find(trenner) - trenner.length() );
125 112
126 if ( left.contains( queryword , isCaseSensitive ) ) 113 if ( left.contains( queryword , isCaseSensitive ) )
127 { 114 {
128 left.replace( queryword, substitute ); 115 left.replace( queryword, substitute );
129 left = left + " --> " + right; 116 left = left + " --> " + right;
130 toplist.append( left ); 117 toplist.append( left );
131 } 118 }
132 else 119 else
133 { 120 {
134 right.replace( queryword, substitute ); 121 right.replace( queryword, substitute );
135 right = right + " --> " + left; 122 right = right + " --> " + left;
136 bottomlist.append( right ); 123 bottomlist.append( right );
137 } 124 }
138 } 125 }
139 126
140 s_strings.top = toplist.join( "<br>" ); 127 s_strings.top = toplist.join( "<br>" );
141 s_strings.bottom = bottomlist.join( "<br>" ); 128 s_strings.bottom = bottomlist.join( "<br>" );
142 129
143 return s_strings; 130 return s_strings;
144} 131}
132
diff --git a/noncore/apps/odict/odict.cpp b/noncore/apps/odict/odict.cpp
index 0745f53..c1de6ac 100644
--- a/noncore/apps/odict/odict.cpp
+++ b/noncore/apps/odict/odict.cpp
@@ -1,259 +1,234 @@
1/*************************************************************************** 1/***************************************************************************
2 application: : ODict 2 application: : ODict
3 3
4 begin : December 2002 4 begin : December 2002
5 copyright : ( C ) 2002, 2003 by Carsten Niehaus 5 copyright : ( C ) 2002, 2003 by Carsten Niehaus
6 email : cniehaus@handhelds.org 6 email : cniehaus@handhelds.org
7 **************************************************************************/ 7 **************************************************************************/
8 8
9/*************************************************************************** 9/***************************************************************************
10 * * 10 * *
11 * This program is free software; you can redistribute it and/or modify * 11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by * 12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or * 13 * the Free Software Foundation; either version 2 of the License, or *
14 * ( at your option ) any later version. * 14 * ( at your option ) any later version. *
15 * * 15 * *
16 **************************************************************************/ 16 **************************************************************************/
17#include "odict.h" 17#include "odict.h"
18#include "configdlg.h" 18#include "configdlg.h"
19#include "dingwidget.h" 19#include "dingwidget.h"
20 20
21#include <qlayout.h> 21#include <qlayout.h>
22#include <qpopupmenu.h> 22#include <qpopupmenu.h>
23#include <qmenubar.h> 23#include <qmenubar.h>
24#include <qmessagebox.h> 24#include <qmessagebox.h>
25#include <qpe/config.h>
26#include <qhbox.h> 25#include <qhbox.h>
27#include <qvbox.h> 26#include <qvbox.h>
28#include <qlabel.h> 27#include <qlabel.h>
29#include <qpushbutton.h> 28#include <qpushbutton.h>
30#include <qlineedit.h> 29#include <qlineedit.h>
31#include <qmainwindow.h> 30#include <qmainwindow.h>
32#include <qstring.h> 31#include <qstring.h>
33#include <qaction.h> 32#include <qaction.h>
34#include <qtextbrowser.h> 33#include <qtextbrowser.h>
35#include <qcombobox.h> 34#include <qcombobox.h>
36 35
37#include <qpe/resource.h> 36#include <qpe/resource.h>
38 37#include <qpe/config.h>
39 38
40ODict::ODict() : QMainWindow() 39ODict::ODict() : QMainWindow()
41{ 40{
42 activated_name = QString::null; 41 activated_name = QString::null;
43 42
44 vbox = new QVBox( this ); 43 vbox = new QVBox( this );
45 setCaption( tr( "OPIE-Dictionary" ) ); 44 setCaption( tr( "OPIE-Dictionary" ) );
46 setupMenus(); 45 setupMenus();
47 46
48 QHBox *hbox = new QHBox( vbox ); 47 QHBox *hbox = new QHBox( vbox );
49 QLabel* query_label = new QLabel( tr( "Query:" ) , hbox ); 48 QLabel* query_label = new QLabel( tr( "Query:" ) , hbox );
50 query_label->show(); 49 query_label->show();
51 query_le = new QLineEdit( hbox ); 50 query_le = new QLineEdit( hbox );
52 query_co = new QComboBox( hbox ); 51 query_co = new QComboBox( hbox );
53 connect( query_co , SIGNAL( activated(const QString&) ), this, SLOT( slotMethodChanged(const QString&) ) ); 52 connect( query_co , SIGNAL( activated(const QString&) ), this, SLOT( slotMethodChanged(const QString&) ) );
54 ok_button = new QPushButton( tr( "&Ok" ), hbox ); 53 ok_button = new QPushButton( tr( "&Ok" ), hbox );
55 connect( ok_button, SIGNAL( released() ), this, SLOT( slotStartQuery() ) ); 54 connect( ok_button, SIGNAL( released() ), this, SLOT( slotStartQuery() ) );
56 55
57 top_name = new QLabel( vbox ); 56 top_name = new QLabel( vbox );
58 top_name->setAlignment( AlignHCenter ); 57 top_name->setAlignment( AlignHCenter );
59 browser_top = new QTextBrowser( vbox ); 58 browser_top = new QTextBrowser( vbox );
60 bottom_name = new QLabel( vbox ); 59 bottom_name = new QLabel( vbox );
61 bottom_name->setAlignment( AlignHCenter ); 60 bottom_name->setAlignment( AlignHCenter );
62 browser_bottom = new QTextBrowser( vbox ); 61 browser_bottom = new QTextBrowser( vbox );
63 62
64 ding = new DingWidget(); 63 ding = new DingWidget();
65 ding->loadValues(); 64 ding->loadValues();
66 65
67 loadConfig(); 66 loadConfig();
68 setCentralWidget( vbox ); 67 setCentralWidget( vbox );
69} 68}
70 69
71void ODict::loadConfig() 70void ODict::loadConfig()
72{ 71{
73 /* 72 /*
74 * the name of the last used dictionary 73 * the name of the last used dictionary
75 */ 74 */
76 QString lastname; 75 QString lastname;
77 76
78 Config cfg ( "odict" ); 77 Config cfg ( "odict" );
79 cfg.setGroup( "generalsettings" ); 78 cfg.setGroup( "generalsettings" );
80 casesens = cfg.readEntry( "casesens" ).toInt(); 79 casesens = cfg.readEntry( "casesens" ).toInt();
81 regexp = cfg.readEntry( "regexp" ).toInt(); 80 regexp = cfg.readEntry( "regexp" ).toInt();
82 completewords = cfg.readEntry( "completewords" ).toInt();
83 81
84 QString lastDict = cfg.readEntry( "lastdict" ); 82 QString lastDict = cfg.readEntry( "lastdict" );
85 int i = 0, e = 0; 83 int i = 0, e = 0;
86 84
87 QStringList groupListCfg = cfg.groupList().grep( "Method_" ); 85 QStringList groupListCfg = cfg.groupList().grep( "Method_" );
88 query_co->clear(); 86 query_co->clear();
89 for ( QStringList::Iterator it = groupListCfg.begin() ; it != groupListCfg.end() ; ++it ) 87 for ( QStringList::Iterator it = groupListCfg.begin() ; it != groupListCfg.end() ; ++it )
90 { 88 {
91 QString name; 89 QString name;
92 cfg.setGroup( *it ); 90 cfg.setGroup( *it );
93 name = cfg.readEntry( "Name" ); 91 name = cfg.readEntry( "Name" );
94 query_co->insertItem( name ); 92 query_co->insertItem( name );
95 93
96 /* 94 /*
97 * this check is to look up what dictionary has been used the 95 * this check is to look up what dictionary has been used the
98 * last time 96 * last time
99 */ 97 */
100 if ( lastDict == name ) 98 if ( lastDict == name )
101 { 99 {
102 e = i; 100 e = i;
103 lastname = name; 101 lastname = name;
104 } 102 }
105 i++; 103 i++;
106 } 104 }
107 /* 105 /*
108 * now set the two names of the dictionary and the correct QComboBox-Entry 106 * now set the two names of the dictionary and the correct QComboBox-Entry
109 */ 107 */
110 108
111 lookupLanguageNames( lastname ); 109 lookupLanguageNames( lastname );
110 ding->loadDict( lastname );
112 111
113 query_co->setCurrentItem( e ); 112 query_co->setCurrentItem( e );
114 top_name->setText( top_name_content ); 113 top_name->setText( top_name_content );
115 bottom_name->setText( bottom_name_content ); 114 bottom_name->setText( bottom_name_content );
116} 115}
117 116
118void ODict::lookupLanguageNames( QString dictname ) 117void ODict::lookupLanguageNames( QString dictname )
119{ 118{
120 Config cfg ( "odict" ); 119 Config cfg ( "odict" );
121 cfg.setGroup( "Method_"+dictname ); 120 cfg.setGroup( "Method_"+dictname );
122 top_name_content = cfg.readEntry( "Lang1" ); 121 top_name_content = cfg.readEntry( "Lang1" );
123 bottom_name_content = cfg.readEntry( "Lang2" ); 122 bottom_name_content = cfg.readEntry( "Lang2" );
124} 123}
125 124
126void ODict::saveConfig() 125void ODict::saveConfig()
127{ 126{
128 Config cfg ( "odict" ); 127 Config cfg ( "odict" );
129 cfg.setGroup( "generalsettings" ); 128 cfg.setGroup( "generalsettings" );
130 cfg.writeEntry( "casesens" , casesens ); 129 cfg.writeEntry( "casesens" , casesens );
131 cfg.writeEntry( "regexp" , regexp ); 130 cfg.writeEntry( "regexp" , regexp );
132 cfg.writeEntry( "completewords" , completewords );
133 cfg.writeEntry( "lastdict" , query_co->currentText() ); 131 cfg.writeEntry( "lastdict" , query_co->currentText() );
134} 132}
135 133
136void ODict::slotStartQuery() 134void ODict::slotStartQuery()
137{ 135{
138 qDebug( "bin in slotStartQuery()" );
139
140 QString querystring = query_le->text(); 136 QString querystring = query_le->text();
141 if ( !querystring.isEmpty() ) 137 if ( !querystring.isEmpty() )
142 { 138 {
143 /* 139 /*
144 * if the user has not yet defined a dictionary 140 * if the user has not yet defined a dictionary
145 */ 141 */
146 if ( !query_co->currentText() ) 142 if ( !query_co->currentText() )
147 { 143 {
148 switch ( QMessageBox::information( this, tr( "OPIE-Dictionary" ), 144 switch ( QMessageBox::information( this, tr( "OPIE-Dictionary" ),
149 tr( "No dictionary defined" ), 145 tr( "No dictionary defined" ),
150 tr( "&Define one" ), 146 tr( "&Define one" ),
151 tr( "&Cancel" ), 147 tr( "&Cancel" ),
152 0, // Define a dict choosen 148 0, // Define a dict
153 1 ) ) // Cancel choosen 149 1 ) ) // Cancel choosen
154 { 150 {
155 case 0: 151 case 0:
156 slotSettings(); 152 slotSettings();
157 break; 153 break;
158 case 1: // stop here 154 case 1: // stop here
159 return; 155 return;
160 } 156 }
161 } 157 }
162 158
163 /* 159 /*
164 * ok, the user has defined a dict 160 * ok, the user has defined a dict
165 */ 161 */
166 ding->setCaseSensitive( casesens ); 162 ding->setCaseSensitive( casesens );
167 ding->setCompleteWord( completewords );
168
169 qDebug( "activated_name ist:" );
170 qDebug( activated_name );
171
172 ding->setDict( activated_name );
173
174 //X if ( activated_name != ding->loadedDict() )
175 ding->loadDict(activated_name);
176 163
177 BroswerContent test = ding->setText( querystring ); 164 BroswerContent test = ding->setText( querystring );
178 165
179 qDebug( querystring );
180 if ( ding->isCaseSensitive )
181 qDebug( "ist CS");
182 else qDebug( "kein CS" );
183
184 browser_top->setText( test.top ); 166 browser_top->setText( test.top );
185 browser_bottom->setText( test.bottom ); 167 browser_bottom->setText( test.bottom );
186 } 168 }
187} 169}
188 170
189void ODict::slotSettings() 171void ODict::slotSettings()
190{ 172{
191 ConfigDlg dlg( this, "Config" , true); 173 ConfigDlg dlg( this, "Config" , true);
192 if ( dlg.exec() == QDialog::Accepted ) 174 if ( dlg.exec() == QDialog::Accepted )
193 saveConfig(); 175 saveConfig();
194} 176}
195 177
196void ODict::slotSetParameter( int count ) 178void ODict::slotSetParameter( int count )
197{ 179{
198 if ( count == 0 ) 180 if ( count == 0 )
199 { 181 {
200 if ( casesens ) 182 if ( casesens )
201 casesens = false; 183 casesens = false;
202 else 184 else
203 casesens = true; 185 casesens = true;
204 } 186 }
205 187
206 if ( count == 1 ) 188 if ( count == 1 )
207 { 189 {
208 if ( completewords )
209 completewords = false;
210 else
211 completewords = true;
212 }
213 if ( count == 2 )
214 {
215 if ( regexp ) 190 if ( regexp )
216 regexp = false; 191 regexp = false;
217 else 192 else
218 regexp = true; 193 regexp = true;
219 } 194 }
220 saveConfig(); 195 saveConfig();
221} 196}
222 197
223void ODict::slotMethodChanged( const QString& methodnumber ) 198void ODict::slotMethodChanged( const QString& methodnumber )
224{ 199{
225 activated_name = methodnumber; 200 activated_name = methodnumber;
226 201
227 qDebug( "activated_name in slotMethodChanged() ist:" ); 202 qDebug( "activated_name in slotMethodChanged() ist:" );
228 qDebug( activated_name ); 203 qDebug( activated_name );
204 qDebug( ding->loadedDict() );
229 205
230 //X if ( activated_name != ding->loadedDict() ) 206 if ( activated_name != ding->loadedDict() )
231 { 207 {
232 ding->loadDict(activated_name); 208 ding->loadDict(activated_name);
233 209
234 lookupLanguageNames( activated_name ); 210 lookupLanguageNames( activated_name );
235 top_name->setText( top_name_content ); 211 top_name->setText( top_name_content );
236 bottom_name->setText( bottom_name_content ); 212 bottom_name->setText( bottom_name_content );
237 } 213 }
238} 214}
239 215
240void ODict::setupMenus() 216void ODict::setupMenus()
241{ 217{
242 menu = new QMenuBar( this ); 218 menu = new QMenuBar( this );
243 219
244 settings = new QPopupMenu( menu ); 220 settings = new QPopupMenu( menu );
245 setting_a = new QAction(tr( "Configuration" ), Resource::loadPixmap( "new" ), QString::null, 0, this, 0 ); 221 setting_a = new QAction(tr( "Configuration" ), Resource::loadPixmap( "new" ), QString::null, 0, this, 0 );
246 connect( setting_a, SIGNAL( activated() ), this, SLOT( slotSettings() ) ); 222 connect( setting_a, SIGNAL( activated() ), this, SLOT( slotSettings() ) );
247 setting_a->addTo( settings ); 223 setting_a->addTo( settings );
248 setting_b = new QAction(tr( "Searchmethods" ), Resource::loadPixmap( "edit" ), QString::null, 0, this, 0 ); 224 setting_b = new QAction(tr( "Searchmethods" ), Resource::loadPixmap( "edit" ), QString::null, 0, this, 0 );
249 225
250 parameter = new QPopupMenu( menu ); 226 parameter = new QPopupMenu( menu );
251 connect( parameter, SIGNAL( activated( int ) ), this, SLOT( slotSetParameter( int ) ) ); 227 connect( parameter, SIGNAL( activated( int ) ), this, SLOT( slotSetParameter( int ) ) );
252 parameter->insertItem( tr( "C&ase sensitive" ), 0 ,0 ); 228 parameter->insertItem( tr( "C&ase sensitive" ), 0 ,0 );
253 parameter->insertItem( tr( "Only &complete Words" ), 1 , 1) ;
254 parameter->insertItem( tr( "Allow &reg. expressions" ), 2 ); 229 parameter->insertItem( tr( "Allow &reg. expressions" ), 2 );
255 parameter->insertSeparator(); 230 parameter->insertSeparator();
256 231
257 menu->insertItem( tr( "Settings" ) , settings ); 232 menu->insertItem( tr( "Settings" ) , settings );
258 menu->insertItem( tr( "Parameter" ) , parameter ); 233 menu->insertItem( tr( "Parameter" ) , parameter );
259} 234}