summaryrefslogtreecommitdiff
Side-by-side diff
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
@@ -21,91 +21,164 @@
#include <qhbox.h>
#include <qlabel.h>
#include <qpushbutton.h>
#include <qlineedit.h>
#include <qmainwindow.h>
#include <qstring.h>
#include <qtextstream.h>
#include <qstringlist.h>
#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 );
while ( !stream.eof() )
{
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;
QString html_header = "<html><table>";
QString html_footer = "</table></html>";
QString html_table_left = "<tr><td width='50'>";
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 );
if ( left.contains( reg_word ) )
{
left.replace( queryword, substitute );
toplist.append( html_table_left + left + html_table_sep + right + html_table_right );
}
else
{
right.replace( reg_word, substitute );
bottomlist.append( html_table_left + right + html_table_sep + left + html_table_right );
}
}
//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
@@ -1,34 +1,47 @@
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* ( 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
@@ -30,91 +30,120 @@
#include <qlineedit.h>
#include <qmainwindow.h>
#include <qstring.h>
#include <qaction.h>
#include <qtextbrowser.h>
#include <qcombobox.h>
#include <qpe/resource.h>
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 );
query_co = new QComboBox( hbox );
connect( query_co , SIGNAL( activated(int) ), this, SLOT( slotMethodChanged(int) ) );
ok_button = new QPushButton( tr( "&Ok" ), hbox );
connect( ok_button, SIGNAL( released() ), this, SLOT( slotStartQuery() ) );
browser_top = new QTextBrowser( vbox );
browser_bottom = new QTextBrowser( vbox );
+ ding = new DingWidget();
+
loadConfig();
setCentralWidget( vbox );
}
void ODict::loadConfig()
{
Config cfg ( "odict" );
cfg.setGroup( "generalsettings" );
errorTol = cfg.readEntry( "errtol" ).toInt();
casesens = cfg.readEntry( "casesens" ).toInt();
regexp = cfg.readEntry( "regexp" ).toInt();
completewords = cfg.readEntry( "completewords" ).toInt();
QStringList groupListCfg = cfg.groupList().grep( "Method_" );
query_co->clear();
for ( QStringList::Iterator it = groupListCfg.begin() ; it != groupListCfg.end() ; ++it )
{
cfg.setGroup( *it );
query_co->insertItem( cfg.readEntry( "Name" ) );
}
+ slotMethodChanged(1 ); //FIXME: this line should not contain a integer
}
void ODict::saveConfig()
{
Config cfg ( "odict" );
cfg.setGroup( "generalsettings" );
cfg.writeEntry( "errtol" , errorTol );
cfg.writeEntry( "casesens" , casesens );
cfg.writeEntry( "regexp" , regexp );
cfg.writeEntry( "completewords" , completewords );
}
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 )
{
errorTol = count;
}
void ODict::slotSettings()
{
ConfigDlg dlg( this, "Config" , true);
if ( dlg.exec() == QDialog::Accepted )
@@ -143,25 +172,25 @@ void ODict::slotSetParameter( int count )
completewords = true;
}
if ( count == 2 )
{
if ( regexp )
regexp = false;
else
regexp = true;
}
else qWarning( "ERROR" );
}
-void ODict::slotMethodChanged( int methodnumber )
+void ODict::slotMethodChanged( int /*methodnumber*/ )
{
activated_name = query_co->currentText();
}
void ODict::setupMenus()
{
menu = new QMenuBar( this );
settings = new QPopupMenu( menu );
setting_a = new QAction(tr( "Config" ), Resource::loadPixmap( "today/config" ), QString::null, 0, this, 0 );
connect( setting_a, SIGNAL( activated() ), this, SLOT( slotSettings() ) );
setting_a->addTo( settings );
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
@@ -12,48 +12,48 @@
class QVBox;
class QPopupMenu;
class QMenuBar;
class QHBox;
class QPushButton;
class QLineEdit;
class QAction;
class QVBoxLayout;
class QActionGroup;
class DingWidget;
class QTextBrowser;
class QComboBox;
+class DingWidget;
class ODict : public QMainWindow
{
Q_OBJECT
public:
ODict();
QVBox *vbox;
QTextBrowser *browser_top,
*browser_bottom;
+ DingWidget *ding;
private:
QPopupMenu *help, *settings, *parameter, *error_tol_menu;
QMenuBar *menu;
QHBox *hbox;
QLineEdit *query_le;
QComboBox *query_co;
QPushButton *ok_button;
QVBoxLayout *vbox_layout;
QAction *setting_a, *setting_b;
-
- DingWidget *ding;
void setupMenus();
int errorTol;
bool casesens, completewords, regexp;
void loadConfig();
void saveConfig();
QString activated_name;
private slots: