summaryrefslogtreecommitdiff
path: root/noncore
Side-by-side diff
Diffstat (limited to 'noncore') (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
@@ -29,17 +29,35 @@
#include <qregexp.h>
#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 ) )
{
QTextStream stream( &file );
@@ -48,34 +66,56 @@ DingWidget::DingWidget(QString word, QTextBrowser *browser_top, QTextBrowser *br
lines.append( stream.readLine() );
}
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;
QString right;
@@ -85,11 +125,17 @@ void DingWidget::parseInfo( QStringList &lines, QString &top, QString &bottom )
QString html_table_sep = "</td><td>";
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) );
right = current.right( current.length() - current.find(reg_div) - 1 );
@@ -105,7 +151,34 @@ 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
@@ -6,29 +6,42 @@
* ( at your option ) any later version. *
* *
**************************************************************************/
-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
@@ -38,13 +38,14 @@
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();
query_le = new QLineEdit( hbox );
@@ -54,8 +55,10 @@ ODict::ODict() : QMainWindow()
connect( ok_button, SIGNAL( released() ), this, SLOT( slotStartQuery() ) );
browser_top = new QTextBrowser( vbox );
browser_bottom = new QTextBrowser( vbox );
+ ding = new DingWidget();
+
loadConfig();
setCentralWidget( vbox );
}
@@ -74,8 +77,9 @@ void ODict::loadConfig()
{
cfg.setGroup( *it );
query_co->insertItem( cfg.readEntry( "Name" ) );
}
+ slotMethodChanged(1 ); //FIXME: this line should not contain a integer
}
void ODict::saveConfig()
@@ -89,24 +93,49 @@ 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 }
+
}
void ODict::slotSetErrorcount( int count )
@@ -151,9 +180,9 @@ 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
@@ -20,8 +20,9 @@ class QVBoxLayout;
class QActionGroup;
class DingWidget;
class QTextBrowser;
class QComboBox;
+class DingWidget;
class ODict : public QMainWindow
{
Q_OBJECT
@@ -30,8 +31,9 @@ class ODict : public QMainWindow
ODict();
QVBox *vbox;
QTextBrowser *browser_top,
*browser_bottom;
+ DingWidget *ding;
private:
QPopupMenu *help, *settings, *parameter, *error_tol_menu;
QMenuBar *menu;
@@ -42,10 +44,8 @@ class ODict : public QMainWindow
QVBoxLayout *vbox_layout;
QAction *setting_a, *setting_b;
-
- DingWidget *ding;
void setupMenus();
int errorTol;