summaryrefslogtreecommitdiffstats
path: root/kdict/toplevel.cpp
diff options
context:
space:
mode:
authortoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
committertoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
commitbcb704366cb5e333a626c18c308c7e0448a8e69f (patch)
treef0d6ab7d78ecdd9207cf46536376b44b91a1ca71 /kdict/toplevel.cpp
downloadtdenetwork-bcb704366cb5e333a626c18c308c7e0448a8e69f.tar.gz
tdenetwork-bcb704366cb5e333a626c18c308c7e0448a8e69f.zip
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdenetwork@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kdict/toplevel.cpp')
-rw-r--r--kdict/toplevel.cpp778
1 files changed, 778 insertions, 0 deletions
diff --git a/kdict/toplevel.cpp b/kdict/toplevel.cpp
new file mode 100644
index 00000000..ee334cbd
--- /dev/null
+++ b/kdict/toplevel.cpp
@@ -0,0 +1,778 @@
+/* -------------------------------------------------------------
+
+ toplevel.cpp (part of The KDE Dictionary Client)
+
+ Copyright (C) 2000-2001 Christian Gebauer <gebauer@kde.org>
+ (C) by Matthias Hölzer 1998
+
+ This file is distributed under the Artistic License.
+ See LICENSE for details.
+
+ -------------------------------------------------------------
+
+ TopLevel The toplevel widget of Kdict.
+
+ ------------------------------------------------------------- */
+
+#include <qclipboard.h>
+
+#include <kstdaccel.h>
+#include <kstdaction.h>
+#include <kapplication.h>
+#include <kstatusbar.h>
+#include <klocale.h>
+#include <kwin.h>
+#include <kedittoolbar.h>
+#include <kdebug.h>
+#include <dcopclient.h>
+
+#include "actions.h"
+#include "dict.h"
+#include "options.h"
+#include "queryview.h"
+#include "matchview.h"
+#include "sets.h"
+#include "toplevel.h"
+
+
+// cut a QString and add "..."
+QString getShortString(QString str,unsigned int length)
+{
+ if (str.length()>length) {
+ str.truncate(length-3);
+ str.append("...");
+ }
+ return str;
+}
+
+
+DictInterface *interface;
+GlobalData *global;
+
+
+TopLevel::TopLevel(QWidget* parent, const char* name)
+ : DCOPObject("KDictIface"), KMainWindow(parent, name, WType_TopLevel),
+ optDlg(0L), setsDlg(0L), stopRef(0)
+{
+ kapp->dcopClient()->setDefaultObject(objId());
+ kapp->setMainWidget(this);
+
+ global = new GlobalData();
+ global->topLevel = this;
+ global->read();
+ interface = new DictInterface();
+ connect(interface,SIGNAL(infoReady()),SLOT(stratDbChanged()));
+ connect(interface,SIGNAL(started(const QString&)),SLOT(clientStarted(const QString&)));
+ connect(interface,SIGNAL(stopped(const QString&)),SLOT(clientStopped(const QString&)));
+
+ queryView = new QueryView(this);
+ connect(queryView,SIGNAL(defineRequested(const QString&)),SLOT(define(const QString&)));
+ connect(queryView,SIGNAL(matchRequested(const QString&)),SLOT(match(const QString&)));
+ connect(queryView,SIGNAL(clipboardRequested()),SLOT(defineClipboard()));
+ connect(queryView,SIGNAL(enableCopy(bool)),SLOT(enableCopy(bool)));
+ connect(queryView,SIGNAL(enablePrintSave()),SLOT(enablePrintSave()));
+ connect(queryView,SIGNAL(renderingStarted()),SLOT(renderingStarted()));
+ connect(queryView,SIGNAL(renderingStopped()),SLOT(renderingStopped()));
+ connect(queryView,SIGNAL(newCaption(const QString&)),SLOT(newCaption(const QString&)));
+
+ matchView = new MatchView();
+ connect(matchView,SIGNAL(defineRequested(const QString&)),SLOT(define(const QString&)));
+ connect(matchView,SIGNAL(matchRequested(const QString&)),SLOT(match(const QString&)));
+ connect(matchView,SIGNAL(clipboardRequested()),SLOT(matchClipboard()));
+ connect(matchView,SIGNAL(windowClosed()),SLOT(toggleMatchListShow()));
+ connect(&resetStatusbarTimer,SIGNAL(timeout()),SLOT(resetStatusbar()));
+
+ setupStatusBar();
+ setupActions();
+ recreateGUI();
+ buildHistMenu();
+
+ if (global->showMatchList)
+ { // show splitter, html view & match list
+ splitter = new QSplitter(QSplitter::Horizontal,this);
+ splitter->setOpaqueResize( KGlobalSettings::opaqueResize() );
+ queryView->reparent(splitter,0,queryView->pos(),true);
+ matchView->reparent(splitter,0,matchView->pos(),true);
+ setCentralWidget(splitter);
+ splitter->setResizeMode(matchView,QSplitter::KeepSize);
+ adjustMatchViewSize();
+ }
+ else
+ { // show only html view
+ setCentralWidget(queryView);
+ matchView->hide();
+ }
+
+ //apply settings
+ resize(600,390);
+ applyMainWindowSettings(KGlobal::config(),"toplevel_options");
+ stratDbChanged(); // fill combos, build menus
+
+ actQueryCombo->setFocus(); // place cursor in combobox
+}
+
+
+TopLevel::~TopLevel()
+{
+}
+
+
+void TopLevel::normalStartup()
+{
+ if (global->defineClipboard)
+ defineClipboard();
+}
+
+// ******* DCOP Interface ********************************************************
+
+void TopLevel::quit()
+{
+ kdDebug(5004) << "*DCOP call* TopLevel::quit()" << endl;
+ kapp->closeAllWindows();
+}
+
+
+void TopLevel::makeActiveWindow()
+{
+ kdDebug(5004) << "*DCOP call* TopLevel::makeActiveWindow()" << endl;
+ raiseWindow();
+}
+
+
+void TopLevel::definePhrase(QString phrase)
+{
+ kdDebug(5004) << "*DCOP call* TopLevel::definePhrase()" << endl;
+ define(phrase);
+ raiseWindow();
+}
+
+
+void TopLevel::matchPhrase(QString phrase)
+{
+ kdDebug(5004) << "*DCOP call* TopLevel::matchPhrase()" << endl;
+ match(phrase);
+ raiseWindow();
+}
+
+
+void TopLevel::defineClipboardContent()
+{
+ kdDebug(5004) << "*DCOP call* TopLevel::defineClipboardContent()" << endl;
+ defineClipboard();
+ raiseWindow();
+}
+
+
+void TopLevel::matchClipboardContent()
+{
+ kdDebug(5004) << "*DCOP call* TopLevel::matchClipboardContent()" << endl;
+ matchClipboard();
+ raiseWindow();
+}
+
+
+QStringList TopLevel::getDatabases()
+{
+ kdDebug(5004) << "*DCOP call* TopLevel::getDatabases()" << endl;
+ return global->databases;
+}
+
+
+QString TopLevel::currentDatabase()
+{
+ kdDebug(5004) << "*DCOP call* TopLevel::currentDatabase()" << endl;
+ return global->databases[global->currentDatabase];
+}
+
+
+QStringList TopLevel::getStrategies()
+{
+ kdDebug(5004) << "*DCOP call* TopLevel::getStrategies()" << endl;
+ return global->strategies;
+}
+
+
+QString TopLevel::currentStrategy()
+{
+ kdDebug(5004) << "*DCOP call* TopLevel::currentStrategy()" << endl;
+ return global->strategies[global->currentStrategy];
+}
+
+
+bool TopLevel::setDatabase(QString db)
+{
+ kdDebug(5004) << "*DCOP call* TopLevel::setDatabase()" << endl;
+
+ int newCurrent = global->databases.findIndex(db);
+ if (newCurrent == -1)
+ return false;
+ else {
+ global->currentDatabase = newCurrent;
+ actDbCombo->setCurrentItem(global->currentDatabase);
+ return true;
+ }
+}
+
+
+bool TopLevel::setStrategy(QString strategy)
+{
+ kdDebug(5004) << "*DCOP call* TopLevel::setStrategy()" << endl;
+
+ return matchView->selectStrategy(strategy);
+}
+
+
+bool TopLevel::historyGoBack()
+{
+ kdDebug(5004) << "*DCOP call* TopLevel::historyGoBack()" << endl;
+
+ if (!queryView->browseBackPossible())
+ return false;
+ else {
+ queryView->browseBack();
+ return true;
+ }
+}
+
+
+bool TopLevel::historyGoForward()
+{
+ kdDebug(5004) << "*DCOP call* TopLevel::historyGoForward()" << endl;
+
+ if (!queryView->browseForwardPossible())
+ return false;
+ else {
+ queryView->browseForward();
+ return true;
+ }
+}
+
+// *******************************************************************************
+
+void TopLevel::define(const QString &query)
+{
+ kdDebug(5004) << "TopLevel::define()" << endl;
+ actQueryCombo->setEditText(query);
+ doDefine();
+}
+
+
+void TopLevel::defineClipboard()
+{
+ kdDebug(5004) << "TopLevel::defineClipboard()" << endl;
+ kapp->clipboard()->setSelectionMode(true);
+ QString text = kapp->clipboard()->text();
+ if (text.isEmpty()) {
+ kapp->clipboard()->setSelectionMode(false);
+ text = kapp->clipboard()->text();
+ }
+ define(text);
+}
+
+
+void TopLevel::match(const QString &query)
+{
+ kdDebug(5004) << "TopLevel::match()" << endl;
+ actQueryCombo->setEditText(query);
+ doMatch();
+}
+
+
+void TopLevel::matchClipboard()
+{
+ kdDebug(5004) << "TopLevel::matchClipboard()" << endl;
+ kapp->clipboard()->setSelectionMode(true);
+ QString text = kapp->clipboard()->text();
+ if (text.isEmpty()) {
+ kapp->clipboard()->setSelectionMode(false);
+ text = kapp->clipboard()->text();
+ }
+ match(text);
+}
+
+
+bool TopLevel::queryClose()
+{
+ kdDebug(5004) << "TopLevel::queryClose()" << endl;
+
+ saveMainWindowSettings(KGlobal::config(),"toplevel_options");
+ saveMatchViewSize();
+ global->queryComboCompletionMode = actQueryCombo->completionMode();
+
+ global->write();
+
+ return true;
+}
+
+
+void TopLevel::setupActions()
+{
+ // file menu...
+ actSave = KStdAction::save(queryView, SLOT(saveQuery()), actionCollection());
+ actSave->setText(i18n("&Save As..."));
+ actSave->setEnabled(false);
+ actPrint = KStdAction::print(queryView, SLOT(printQuery()), actionCollection());
+ actPrint->setEnabled(false);
+ actStartQuery = new KAction(i18n("St&art Query"),"reload", 0 , this,
+ SLOT(doDefine()), actionCollection(), "start_query");
+ actStopQuery = new KAction(i18n("St&op Query"),"stop", 0 , this,
+ SLOT(stopClients()), actionCollection(), "stop_query");
+ actStopQuery->setEnabled(false);
+ KStdAction::quit(kapp, SLOT(closeAllWindows()), actionCollection());
+
+ // edit menu...
+ actCopy = KStdAction::copy(queryView, SLOT(copySelection()), actionCollection());
+ actCopy->setEnabled(false);
+ KStdAction::selectAll(queryView, SLOT(selectAll()), actionCollection());
+ new KAction(i18n("&Define Clipboard Content"), "define_clip", 0 , this,
+ SLOT(defineClipboard()), actionCollection(), "define_clipboard");
+ new KAction(i18n("&Match Clipboard Content"), 0 , this,
+ SLOT(matchClipboard()), actionCollection(), "match_clipboard");
+ KStdAction::find(queryView, SLOT(showFindDialog()), actionCollection());
+
+ // history menu...
+ actBack = new KToolBarPopupAction(i18n("&Back"), "back", KStdAccel::shortcut(KStdAccel::Back),
+ queryView, SLOT(browseBack()), actionCollection(),"browse_back");
+ actBack->setDelayed(true);
+ actBack->setStickyMenu(false);
+ actBack->setEnabled(false);
+ actForward = new KToolBarPopupAction(i18n("&Forward"), "forward", KStdAccel::shortcut(KStdAccel::Forward),
+ queryView, SLOT(browseForward()), actionCollection(),"browse_forward");
+ actForward->setDelayed(true);
+ actForward->setStickyMenu(false);
+ actForward->setEnabled(false);
+ new KAction(i18n("&Clear History"), 0 , this,
+ SLOT(clearQueryHistory()), actionCollection(), "clear_history");
+
+ // server menu...
+ new KAction(i18n("&Get Capabilities"), 0 , interface,
+ SLOT(updateServer()), actionCollection(), "get_capabilities");
+ new KAction(i18n("Edit &Database Sets..."), "edit", 0 , this,
+ SLOT(showSetsDialog()), actionCollection(), "edit_sets");
+ new KAction(i18n("&Summary"), 0 , interface,
+ SLOT(showDatabases()), actionCollection(), "db_summary");
+ new KAction(i18n("S&trategy Information"), 0 , interface,
+ SLOT(showStrategies()), actionCollection(), "strategy_info");
+ new KAction(i18n("&Server Information"), 0 , interface,
+ SLOT(showInfo()), actionCollection(), "server_info");
+
+ // settings menu...
+ createStandardStatusBarAction();
+ setStandardToolBarMenuEnabled(true);
+
+ actShowMatchList = new KToggleAction(i18n("Show &Match List"), 0 , this,
+ SLOT(toggleMatchListShow()), actionCollection(), "show_match");
+ actShowMatchList->setCheckedState(i18n("Hide &Match List"));
+ actShowMatchList->setChecked(global->showMatchList);
+ KStdAction::keyBindings(guiFactory(), SLOT(configureShortcuts()),
+actionCollection());
+ KStdAction::configureToolbars(this, SLOT(slotConfToolbar()), actionCollection());
+ KStdAction::preferences(this, SLOT(showOptionsDialog()), actionCollection());
+
+ // toolbar...
+ new KAction(i18n("Clear Input Field"), "query_erase", 0 , this,
+ SLOT(clearInput()), actionCollection(), "clear_query");
+
+ actQueryLabel = new DictLabelAction(i18n("&Look for:"), actionCollection(), "look_label");
+ actQueryCombo = new DictComboAction(i18n("Query"), actionCollection(), "query_combo",true,true);
+ connect(actQueryCombo,SIGNAL(activated(const QString &)), SLOT(define(const QString&)));
+ actQueryCombo->setCompletionMode(global->queryComboCompletionMode);
+ actDbLabel = new DictLabelAction(i18n("&in"), actionCollection(), "in_label");
+ actDbCombo = new DictComboAction(i18n("Databases"), actionCollection(), "db_combo",false,false);
+ connect(actDbCombo,SIGNAL(activated(int)),SLOT(databaseSelected(int)));
+ actDefineBtn = new DictButtonAction(i18n("&Define"), this, SLOT(doDefine()), actionCollection(), "define_btn");
+ actMatchBtn = new DictButtonAction(i18n("&Match"), this, SLOT(doMatch()), actionCollection(), "match_btn");
+
+ queryView->setActions(actBack,actForward,actQueryCombo);
+}
+
+
+void TopLevel::setupStatusBar()
+{
+ statusBar()->insertItem(i18n(" Ready "),0,2);
+ statusBar()->setItemAlignment(0,AlignLeft | AlignVCenter);
+
+ QString serverInfo;
+ if (global->authEnabled)
+ serverInfo = QString(" %1@%2:%3 ").arg(getShortString(global->user,50))
+ .arg(getShortString(global->server,50))
+ .arg(global->port);
+ else
+ serverInfo = QString(" %1:%3 ").arg(getShortString(global->server,50))
+ .arg(global->port);
+ statusBar()->insertItem(serverInfo, 1,3);
+ statusBar()->setItemAlignment(1,AlignLeft | AlignVCenter);
+}
+
+
+void TopLevel::recreateGUI()
+{
+ kdDebug(5004) << "TopLevel::recreateGUI()" << endl;
+ createGUI("kdictui.rc", false);
+ actQueryCombo->setList(global->queryHistory);
+ actQueryCombo->clearEdit();
+ actQueryLabel->setBuddy(actQueryCombo->widget());
+
+ actDbCombo->setList(global->databases);
+ actDbCombo->setCurrentItem(global->currentDatabase);
+ actDbLabel->setBuddy(actDbCombo->widget());
+ int bwidth;
+ if (actDefineBtn->widthHint() > actMatchBtn->widthHint())
+ bwidth = actDefineBtn->widthHint();
+ else
+ bwidth = actMatchBtn->widthHint();
+ actDefineBtn->setWidth(bwidth);
+ actMatchBtn->setWidth(bwidth);
+}
+
+
+// add text in the query-combobox to the history
+void TopLevel::addCurrentInputToHistory()
+{
+ QString text(actQueryCombo->currentText());
+
+ // maintain queryHistory
+ global->queryHistory.remove(text); // no double entrys
+ global->queryHistory.prepend(text); // prepend new item
+ while (global->queryHistory.count()>global->maxHistEntrys) // shorten list
+ global->queryHistory.remove(global->queryHistory.fromLast());
+
+ actQueryCombo->setList(global->queryHistory);
+ actQueryCombo->setCurrentItem(0);
+ buildHistMenu();
+}
+
+
+
+// erase text in query-combobox
+void TopLevel::clearInput()
+{
+ actQueryCombo->clearEdit();
+ actQueryCombo->setFocus(); // place cursor in combobox
+}
+
+
+// define text in the combobox
+void TopLevel::doDefine()
+{
+ QString text(actQueryCombo->currentText());
+
+ if (!text.isEmpty())
+ {
+ addCurrentInputToHistory();
+ actQueryCombo->selectAll();
+ interface->define(text);
+ }
+}
+
+
+void TopLevel::doMatch()
+{
+ QString text(actQueryCombo->currentText());
+
+ if (!text.isEmpty())
+ {
+ addCurrentInputToHistory();
+ actQueryCombo->selectAll();
+
+ if (!global->showMatchList)
+ {
+ toggleMatchListShow();
+ }
+
+ matchView->match(text);
+ setCaption(getShortString(text.simplifyWhiteSpace(),70));
+ }
+}
+
+
+void TopLevel::stopClients()
+{
+ interface->stop();
+ queryView->stop();
+}
+
+
+// rebuild history menu on demand
+void TopLevel::buildHistMenu()
+{
+ unplugActionList("history_items");
+
+ historyActionList.setAutoDelete(true);
+ historyActionList.clear();
+
+ unsigned int i = 0;
+ while ((i<10)&&(i<global->queryHistory.count())) {
+ historyActionList.append( new KAction(getShortString(global->queryHistory[i],70), 0, this, SLOT(queryHistMenu()),
+ (QObject*)0, global->queryHistory[i].utf8().data()) );
+ i++;
+ }
+
+ plugActionList("history_items", historyActionList);
+}
+
+
+// process a query via the history menu
+void TopLevel::queryHistMenu()
+{
+ QCString name = sender()->name();
+ if (!name.isEmpty())
+ define(QString::fromUtf8(name));
+}
+
+
+void TopLevel::clearQueryHistory()
+{
+ global->queryHistory.clear();
+ actQueryCombo->clear();
+ buildHistMenu();
+}
+
+
+// fill combos, rebuild menus
+void TopLevel::stratDbChanged()
+{
+ actDbCombo->setList(global->databases);
+ actDbCombo->setCurrentItem(global->currentDatabase);
+ matchView->updateStrategyCombo();
+
+ unplugActionList("db_detail");
+
+ dbActionList.setAutoDelete(true);
+ dbActionList.clear();
+
+ for (unsigned int i=0;i<global->serverDatabases.count();i++)
+ dbActionList.append( new KAction(global->serverDatabases[i], 0, this, SLOT(dbInfoMenuClicked()),
+ (QObject*)0, global->serverDatabases[i].utf8().data()) );
+
+ plugActionList("db_detail", dbActionList);
+}
+
+
+void TopLevel::dbInfoMenuClicked()
+{
+ QCString name = sender()->name();
+ if (!name.isEmpty())
+ interface->showDbInfo(name);
+}
+
+
+void TopLevel::databaseSelected(int num)
+{
+ global->currentDatabase = num;
+}
+
+
+void TopLevel::enableCopy(bool selected)
+{
+ actCopy->setEnabled(selected);
+}
+
+
+void TopLevel::enablePrintSave()
+{
+ actSave->setEnabled(true);
+ actPrint->setEnabled(true);
+}
+
+
+void TopLevel::clientStarted(const QString &message)
+{
+ statusBar()->changeItem(message,0);
+ resetStatusbarTimer.stop();
+ stopRef++;
+ actStopQuery->setEnabled(stopRef>0); // enable stop-icon
+ kapp->setOverrideCursor(waitCursor);
+}
+
+
+void TopLevel::clientStopped(const QString &message)
+{
+ statusBar()->changeItem(message,0);
+ resetStatusbarTimer.start(4000);
+ if (stopRef > 0)
+ stopRef--;
+ actStopQuery->setEnabled(stopRef>0); // disable stop-icon
+ kapp->restoreOverrideCursor();
+}
+
+
+void TopLevel::resetStatusbar()
+{
+ resetStatusbarTimer.stop();
+ statusBar()->changeItem(i18n(" Ready "),0);
+}
+
+
+void TopLevel::renderingStarted()
+{
+ stopRef++;
+ actStopQuery->setEnabled(stopRef>0); // disable stop-icon
+ kapp->setOverrideCursor(waitCursor);
+}
+
+
+void TopLevel::renderingStopped()
+{
+ if (stopRef > 0)
+ stopRef--;
+ actStopQuery->setEnabled(stopRef>0); // disable stop-icon
+ kapp->restoreOverrideCursor();
+}
+
+
+void TopLevel::newCaption(const QString &s)
+{
+ setCaption(s);
+}
+
+void TopLevel::toggleMatchListShow()
+{
+ saveMatchViewSize();
+ if (global->showMatchList) // list is visible -> hide it
+ {
+ global->showMatchList = false;
+ queryView->reparent(this,0,queryView->pos(),true);
+ matchView->reparent(this,0,matchView->pos(),true);
+ matchView->hide();
+ delete splitter;
+ setCentralWidget(queryView);
+ }
+ else // list is not visible -> show it
+ {
+ global->showMatchList = true;
+ splitter = new QSplitter(QSplitter::Horizontal,this);
+ splitter->setOpaqueResize( KGlobalSettings::opaqueResize() );
+ setCentralWidget(splitter);
+ splitter->show();
+ queryView->reparent(splitter,0,queryView->pos(),true);
+ matchView->reparent(splitter,0,matchView->pos(),true);
+ splitter->setResizeMode(matchView,QSplitter::KeepSize);
+ adjustMatchViewSize();
+ }
+
+ actShowMatchList->setChecked(global->showMatchList);
+}
+
+
+void TopLevel::saveMatchViewSize()
+{
+ if (global->showMatchList)
+ {
+ global->splitterSizes = splitter->sizes();
+ }
+}
+
+
+void TopLevel::adjustMatchViewSize()
+{
+ if (global->splitterSizes.count()==2)
+ {
+ splitter->setSizes(global->splitterSizes);
+ }
+}
+
+
+void TopLevel::slotConfToolbar()
+{
+ saveMainWindowSettings(KGlobal::config(),"toplevel_options");
+ KEditToolbar dlg(actionCollection(), "kdictui.rc");
+ connect(&dlg,SIGNAL( newToolbarConfig() ), this, SLOT( slotNewToolbarConfig() ));
+ dlg.exec();
+}
+
+
+void TopLevel::slotNewToolbarConfig()
+{
+ recreateGUI();
+ applyMainWindowSettings(KGlobal::config(),"toplevel_options");
+ buildHistMenu(); // actionlists must be inserted
+ stratDbChanged();
+}
+
+
+void TopLevel::showSetsDialog()
+{
+ if (!setsDlg) {
+ setsDlg = new DbSetsDialog(this);
+ connect(setsDlg,SIGNAL(setsChanged()),this,SLOT(setsChanged()));
+ connect(setsDlg,SIGNAL(dialogClosed()),this,SLOT(hideSetsDialog()));
+ setsDlg->show();
+ } else {
+ KWin::activateWindow(setsDlg->winId());
+ }
+}
+
+
+void TopLevel::hideSetsDialog()
+{
+ if (setsDlg) {
+ setsDlg->delayedDestruct();
+ setsDlg = 0L;
+ }
+}
+
+
+void TopLevel::setsChanged()
+{
+ actDbCombo->setList(global->databases);
+ actDbCombo->setCurrentItem(global->currentDatabase);
+}
+
+
+void TopLevel::showOptionsDialog()
+{
+ if (!optDlg) {
+ optDlg = new OptionsDialog(this);
+ connect(optDlg,SIGNAL(optionsChanged()),this,SLOT(optionsChanged()));
+ connect(optDlg,SIGNAL(finished()),this,SLOT(hideOptionsDialog()));
+ optDlg->show();
+ } else {
+ KWin::activateWindow(optDlg->winId());
+ }
+}
+
+
+void TopLevel::hideOptionsDialog()
+{
+ if (optDlg) {
+ optDlg->delayedDestruct();
+ optDlg=0;
+ }
+}
+
+
+void TopLevel::optionsChanged()
+{
+ QString serverInfo;
+ if (global->authEnabled)
+ serverInfo = QString(" %1@%2:%3 ").arg(getShortString(global->user,50))
+ .arg(getShortString(global->server,50))
+ .arg(global->port);
+ else
+ serverInfo = QString(" %1:%3 ").arg(getShortString(global->server,50))
+ .arg(global->port);
+ statusBar()->changeItem(serverInfo,1);
+ interface->serverChanged(); // inform client
+ queryView->optionsChanged(); // inform html-view
+}
+
+void TopLevel::raiseWindow()
+{
+ // Bypass focus stealing prevention
+ kapp->updateUserTimestamp();
+
+ KWin::WindowInfo info = KWin::windowInfo( winId() );
+
+ if ( !info.isOnCurrentDesktop() )
+ {
+ KWin::setOnDesktop( winId(), KWin::currentDesktop() );
+ }
+
+ KWin::activateWindow(winId());
+}
+
+
+//--------------------------------
+
+#include "toplevel.moc"