summaryrefslogtreecommitdiffstats
path: root/kbabel/kbabeldict/kbabeldictview.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kbabel/kbabeldict/kbabeldictview.cpp')
-rw-r--r--kbabel/kbabeldict/kbabeldictview.cpp294
1 files changed, 294 insertions, 0 deletions
diff --git a/kbabel/kbabeldict/kbabeldictview.cpp b/kbabel/kbabeldict/kbabeldictview.cpp
new file mode 100644
index 00000000..26afd981
--- /dev/null
+++ b/kbabel/kbabeldict/kbabeldictview.cpp
@@ -0,0 +1,294 @@
+/* ****************************************************************************
+ This file is part of KBabel
+
+ Copyright (C) 2000 by Matthias Kiefer
+ <matthias.kiefer@gmx.de>
+
+ 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.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+
+**************************************************************************** */
+
+
+#include "kbabeldictview.h"
+#include "kbabeldictbox.h"
+#include "searchengine.h"
+
+
+#include <qcheckbox.h>
+#include <qgroupbox.h>
+#include <qhbox.h>
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qptrlist.h>
+#include <qpushbutton.h>
+#include <qstringlist.h>
+#include <qwidgetstack.h>
+#include <qsplitter.h>
+#include <qvbox.h>
+
+#include <kcombobox.h>
+#include <kconfig.h>
+#include <kdialog.h>
+#include <kglobal.h>
+#include <klineedit.h>
+#include <klocale.h>
+#include <kprogress.h>
+#include <kseparator.h>
+#include <kdebug.h>
+#include <kiconloader.h>
+
+/*
+ * Constructs a KBabelDictView which is a child of 'parent', with the
+ * name 'name' and widget flags set to 'f'
+ */
+KBabelDictView::KBabelDictView( QWidget* parent, const char* name, WFlags fl )
+ : QWidget( parent, name, fl )
+{
+ QVBoxLayout *mainLayout = new QVBoxLayout(this);
+ mainLayout->setSpacing(KDialog::spacingHint());
+ mainLayout->setMargin(KDialog::marginHint());
+
+ splitter = new QSplitter(this);
+ mainLayout->addWidget(splitter);
+
+ QWidget *w = new QWidget(splitter);
+ QVBoxLayout *wLayout= new QVBoxLayout(w);
+ wLayout->setSpacing(KDialog::spacingHint());
+ wLayout->setMargin(KDialog::marginHint());
+
+ QHBoxLayout *hbox = new QHBoxLayout(wLayout);
+ QLabel *label = new QLabel(i18n("Search in module:"), w);
+ hbox->addWidget(label);
+ moduleCombo = new KComboBox(w);
+ hbox->addWidget(moduleCombo);
+
+ QWidget *temp = new QWidget(w);
+ hbox->addWidget(temp);
+ hbox->setStretchFactor(temp,2);
+ editButton = new QPushButton(i18n("&Edit"),w);
+ editButton->setEnabled(false);
+ hbox->addWidget(editButton);
+
+ // added a button "clear search" here
+ hbox = new QHBoxLayout(wLayout);
+ QPushButton* clearButton = new QPushButton(w);
+ clearButton->setFlat(true);
+ clearButton->setPixmap(SmallIcon("locationbar_erase"));
+ hbox->addWidget(clearButton);
+ textEdit = new KLineEdit(w,"textedit");
+ textEdit->setFocus();
+ hbox->addWidget(textEdit);
+
+ hbox = new QHBoxLayout(wLayout);
+ startButton = new QPushButton(i18n("&Start Search"),w);
+ hbox->addWidget(startButton);
+ inTransButton = new QCheckBox(i18n("Sea&rch in translations"),w);
+ hbox->addWidget(inTransButton);
+ hbox->addStretch(1);
+ stopButton = new QPushButton(i18n("S&top"),w);
+ stopButton->setEnabled(false);
+ hbox->addWidget(stopButton);
+
+ KSeparator *sep = new KSeparator(w);
+ wLayout->addWidget(sep);
+ dictBox = new KBabelDictBox(w,"kbabeldictbox");
+ wLayout->addWidget(dictBox);
+
+ prefWidget = new QWidget(splitter);
+ QVBoxLayout *tempLayout= new QVBoxLayout(prefWidget);
+ tempLayout->setSpacing(KDialog::spacingHint());
+ tempLayout->setMargin(KDialog::marginHint());
+
+ label = new QLabel(i18n("Settings:"),prefWidget);
+ tempLayout->addWidget(label);
+
+ prefStack = new QWidgetStack(prefWidget);
+ tempLayout->addWidget(prefStack);
+ tempLayout->addStretch(1);
+
+ KConfig *config = KGlobal::config();
+ dictBox->readSettings(config);
+ dictBox->setAutoUpdateOptions(true);
+
+ QStringList modules = dictBox->moduleNames();
+ moduleCombo->insertStringList(modules);
+
+ QPtrList<PrefWidget> prefs = dictBox->modPrefWidgets(prefStack);
+ prefs.setAutoDelete(false);
+
+ PrefWidget *p;
+ int i=0;
+ for(p = prefs.first(); p != 0; p=prefs.next())
+ {
+ prefStack->addWidget(p,i);
+ i++;
+ }
+
+ int active=dictBox->activeModule();
+ prefStack->raiseWidget(active);
+ moduleCombo->setCurrentItem(active);
+
+
+ QHBox *h = new QHBox(this);
+ h->setSpacing(KDialog::spacingHint());
+ mainLayout->addWidget(h);
+ progressLabel = new QLabel(h);
+ progressBar = new KProgress(h);
+
+ connect(textEdit,SIGNAL(returnPressed()),startButton,SLOT(animateClick()));
+ connect(startButton,SIGNAL(clicked()),this, SLOT(startSearch()));
+ connect(stopButton, SIGNAL(clicked()), dictBox,SLOT(slotStopSearch()));
+ connect(editButton, SIGNAL(clicked()), dictBox, SLOT(edit()));
+ connect(dictBox, SIGNAL(searchStarted()), this, SLOT(searchStarted()));
+ connect(dictBox, SIGNAL(searchStopped()), this, SLOT(searchStopped()));
+ connect(dictBox, SIGNAL(progressed(int)), progressBar, SLOT(setProgress(int)));
+ connect(dictBox, SIGNAL(activeModuleChanged(bool))
+ , editButton, SLOT(setEnabled(bool)));
+
+ connect(dictBox, SIGNAL(progressStarts(const QString&))
+ , this, SLOT(progressStarted(const QString&)));
+ connect(dictBox, SIGNAL(progressEnds()), this, SLOT(progressStopped()));
+
+ connect(moduleCombo, SIGNAL(activated(int)),
+ dictBox, SLOT(setActiveModule(int)));
+ connect(dictBox, SIGNAL(activeModuleChanged(int))
+ , this, SLOT(switchModule(int)));
+ connect(clearButton, SIGNAL(clicked()), this, SLOT(slotClearSearch()));
+}
+
+/*
+ * Destroys the object and frees any allocated resources
+ */
+KBabelDictView::~KBabelDictView()
+{
+ // no need to delete child widgets, Qt does it all for us
+ KConfig *config = KGlobal::config();
+ dictBox->saveSettings(config);
+}
+
+/*
+ * public slot
+ */
+void KBabelDictView::startSearch()
+{
+ QString text = textEdit->text();
+
+ if(!text.isEmpty())
+ {
+ if(inTransButton->isChecked())
+ {
+ dictBox->startTranslationSearch(text);
+ }
+ else
+ {
+ dictBox->startSearch(text);
+ }
+ }
+
+
+}
+
+void KBabelDictView::progressStopped()
+{
+ progressBar->setProgress(0);
+ progressLabel->setText("");
+ startButton->setEnabled(true);
+ stopButton->setEnabled(false);
+}
+
+void KBabelDictView::progressStarted(const QString& msg)
+{
+ progressLabel->setText(msg);
+ startButton->setEnabled(false);
+ stopButton->setEnabled(true);
+}
+
+void KBabelDictView::searchStopped()
+{
+ progressLabel->setText("");
+ progressBar->setProgress(0);
+ startButton->setEnabled(true);
+ stopButton->setEnabled(false);
+}
+
+void KBabelDictView::searchStarted()
+{
+ progressLabel->setText(i18n("Searching"));
+ startButton->setEnabled(false);
+ stopButton->setEnabled(true);
+}
+
+void KBabelDictView::switchModule(int m)
+{
+ moduleCombo->blockSignals(true);
+ moduleCombo->setCurrentItem(m);
+ moduleCombo->blockSignals(false);
+
+ prefStack->raiseWidget(m);
+}
+
+
+void KBabelDictView::about()
+{
+ dictBox->about();
+}
+
+
+void KBabelDictView::aboutModule()
+{
+ dictBox->aboutActiveModule();
+}
+
+int KBabelDictView::togglePref()
+{
+ int prefWidth=0;
+ if(prefWidget->isVisibleTo(this))
+ {
+ prefWidget->hide();
+ prefWidth=prefWidget->width();
+ }
+ else
+ {
+ prefWidget->show();
+ prefWidth=prefWidget->width();
+ }
+
+ return prefWidth;
+}
+
+bool KBabelDictView::prefVisible()
+{
+ return prefWidget->isVisibleTo(this);
+}
+
+void KBabelDictView::slotClearSearch()
+{
+ textEdit->clear();
+ textEdit->setFocus();
+}
+
+#include "kbabeldictview.moc"
+