X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fmainwin.cpp;h=040b14e3b9818db214909cad8c29af31dc712dcc;hp=e0fff46e4260d6ceccd795a90bcb70671e87ef8d;hb=f6e4cd5bb3612a05933c9d985aa55041a47d5756;hpb=754a784dda6fe5235c59a7ce3829599ccf62eeda diff --git a/src/qtui/mainwin.cpp b/src/qtui/mainwin.cpp index e0fff46e..040b14e3 100644 --- a/src/qtui/mainwin.cpp +++ b/src/qtui/mainwin.cpp @@ -26,6 +26,7 @@ # include # include # include +# include #endif #ifdef Q_WS_X11 @@ -71,6 +72,7 @@ #include "qtuiapplication.h" #include "qtuimessageprocessor.h" #include "qtuisettings.h" +#include "qtuistyle.h" #include "settingsdlg.h" #include "settingspagedlg.h" #include "systemtray.h" @@ -96,7 +98,7 @@ #include "settingspages/backlogsettingspage.h" #include "settingspages/bufferviewsettingspage.h" #include "settingspages/chatmonitorsettingspage.h" -#include "settingspages/colorsettingspage.h" +#include "settingspages/connectionsettingspage.h" #include "settingspages/generalsettingspage.h" #include "settingspages/highlightsettingspage.h" #include "settingspages/identitiessettingspage.h" @@ -133,15 +135,9 @@ MainWin::MainWin(QWidget *parent) updateIcon(); installEventFilter(new JumpKeyHandler(this)); - - QtUiApplication* app = qobject_cast qApp; - connect(app, SIGNAL(saveStateToSession(const QString&)), SLOT(saveStateToSession(const QString&))); - connect(app, SIGNAL(saveStateToSessionSettings(SessionSettings&)), SLOT(saveStateToSessionSettings(SessionSettings&))); - connect(app, SIGNAL(aboutToQuit()), SLOT(aboutToQuit())); } void MainWin::init() { - connect(QApplication::instance(), SIGNAL(aboutToQuit()), SLOT(saveLayout())); connect(Client::instance(), SIGNAL(networkCreated(NetworkId)), SLOT(clientNetworkCreated(NetworkId))); connect(Client::instance(), SIGNAL(networkRemoved(NetworkId)), SLOT(clientNetworkRemoved(NetworkId))); connect(Client::messageModel(), SIGNAL(rowsInserted(const QModelIndex &, int, int)), @@ -185,6 +181,10 @@ void MainWin::init() { setDisconnectedState(); // Disable menus and stuff +#ifdef HAVE_KDE + setAutoSaveSettings(); +#endif + // restore mainwin state QtUiSettings s; restoreStateFromSettings(s); @@ -203,9 +203,11 @@ MainWin::~MainWin() { } -void MainWin::aboutToQuit() { +void MainWin::quit() { QtUiSettings s; saveStateToSettings(s); + saveLayout(); + QApplication::quit(); } void MainWin::saveStateToSettings(UiSettings &s) { @@ -214,24 +216,40 @@ void MainWin::saveStateToSettings(UiSettings &s) { s.setValue("MainWinState", saveState()); s.setValue("MainWinGeometry", saveGeometry()); s.setValue("MainWinMinimized", isMinimized()); - s.setValue("MainWinHidden", _isHidden); + s.setValue("MainWinMaximized", isMaximized()); + s.setValue("MainWinHidden", !isVisible()); + +#ifdef HAVE_KDE + saveAutoSaveSettings(); +#endif } void MainWin::restoreStateFromSettings(UiSettings &s) { + _normalSize = s.value("MainWinSize", size()).toSize(); + _normalPos = s.value("MainWinPos", pos()).toPoint(); + bool maximized = s.value("MainWinMaximized", false).toBool(); + +#ifndef HAVE_KDE restoreGeometry(s.value("MainWinGeometry").toByteArray()); - if(isMaximized()) { + + if(maximized) { // restoreGeometry() fails if the windows was maximized, so we resize and position explicitly - resize(s.value("MainWinSize", QSize(800, 500)).toSize()); - move(s.value("MainWinPos").toPoint()); + resize(_normalSize); + move(_normalPos); } restoreState(s.value("MainWinState").toByteArray()); - _isHidden = false; +#else + move(_normalPos); +#endif + if(s.value("MainWinHidden").toBool()) hideToTray(); else if(s.value("MainWinMinimized").toBool()) showMinimized(); + else if(maximized) + showMaximized(); else show(); } @@ -264,7 +282,7 @@ void MainWin::setupActions() { coll->addAction("ConfigureNetworks", new Action(SmallIcon("configure"), tr("Configure &Networks..."), coll, this, SLOT(on_actionConfigureNetworks_triggered()))); coll->addAction("Quit", new Action(SmallIcon("application-exit"), tr("&Quit"), coll, - qApp, SLOT(quit()), tr("Ctrl+Q"))); + this, SLOT(quit()), tr("Ctrl+Q"))); // View coll->addAction("ConfigureBufferViews", new Action(tr("&Configure Buffer Views..."), coll, @@ -300,6 +318,8 @@ void MainWin::setupActions() { this, SLOT(on_actionDebugHotList_triggered()))); coll->addAction("DebugLog", new Action(SmallIcon("tools-report-bug"), tr("Debug &Log"), coll, this, SLOT(on_actionDebugLog_triggered()))); + coll->addAction("ReloadStyle", new Action(SmallIcon("view-refresh"), tr("Reload Stylesheet"), coll, + QtUi::style(), SLOT(loadStyleSheet()), QKeySequence::Refresh)); // Navigation coll->addAction("JumpHotBuffer", new Action(tr("Jump to hot buffer"), coll, @@ -364,6 +384,8 @@ void MainWin::setupMenus() { _helpDebugMenu->addAction(coll->action("DebugMessageModel")); _helpDebugMenu->addAction(coll->action("DebugHotList")); _helpDebugMenu->addAction(coll->action("DebugLog")); + _helpDebugMenu->addSeparator(); + _helpDebugMenu->addAction(coll->action("ReloadStyle")); } void MainWin::setupBufferWidget() { @@ -610,20 +632,18 @@ void MainWin::setupToolBars() { #ifdef Q_WS_MAC setUnifiedTitleAndToolBarOnMac(true); #endif - _mainToolBar = addToolBar(tr("Main Toolbar")); + +#ifdef HAVE_KDE + _mainToolBar = new KToolBar("MainToolBar", this, Qt::TopToolBarArea, false, true, true); +#else + _mainToolBar = new QToolBar(this); _mainToolBar->setObjectName("MainToolBar"); +#endif + _mainToolBar->setWindowTitle(tr("Main Toolbar")); + addToolBar(_mainToolBar); QtUi::toolBarActionProvider()->addActions(_mainToolBar, ToolBarActionProvider::MainToolBar); _toolbarMenu->addAction(_mainToolBar->toggleViewAction()); - - //_nickToolBar = addToolBar("User"); - //_nickToolBar->setObjectName("NickToolBar"); - //QtUi::toolBarActionProvider()->addActions(_nickToolBar, ToolBarActionProvider::NickToolBar); - -#ifdef HAVE_KDE - _mainToolBar->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); - //_nickToolBar->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); -#endif } void MainWin::connectedToCore() { @@ -787,8 +807,7 @@ void MainWin::showSettingsDlg() { SettingsDlg *dlg = new SettingsDlg(); //Category: Appearance - dlg->registerSettingsPage(new AppearanceSettingsPage(dlg)); //General - dlg->registerSettingsPage(new ColorSettingsPage(dlg)); + dlg->registerSettingsPage(new AppearanceSettingsPage(dlg)); dlg->registerSettingsPage(new HighlightSettingsPage(dlg)); dlg->registerSettingsPage(new NotificationsSettingsPage(dlg)); dlg->registerSettingsPage(new BacklogSettingsPage(dlg)); @@ -797,6 +816,7 @@ void MainWin::showSettingsDlg() { //Category: Misc dlg->registerSettingsPage(new GeneralSettingsPage(dlg)); + dlg->registerSettingsPage(new ConnectionSettingsPage(dlg)); dlg->registerSettingsPage(new IdentitiesSettingsPage(dlg)); dlg->registerSettingsPage(new NetworksSettingsPage(dlg)); dlg->registerSettingsPage(new AliasesSettingsPage(dlg)); @@ -826,47 +846,36 @@ void MainWin::moveEvent(QMoveEvent *event) { if(!(windowState() & Qt::WindowMaximized)) _normalPos = event->pos(); - event->ignore(); + QMainWindow::moveEvent(event); } void MainWin::resizeEvent(QResizeEvent *event) { if(!(windowState() & Qt::WindowMaximized)) _normalSize = event->size(); - event->ignore(); + QMainWindow::resizeEvent(event); } void MainWin::closeEvent(QCloseEvent *event) { QtUiSettings s; QtUiApplication* app = qobject_cast qApp; Q_ASSERT(app); - if(!app->aboutToQuit() && s.value("UseSystemTrayIcon").toBool() && s.value("MinimizeOnClose").toBool()) { - toggleMinimizedToTray(); + if(!app->isAboutToQuit() && s.value("UseSystemTrayIcon").toBool() && s.value("MinimizeOnClose").toBool()) { + hideToTray(); event->ignore(); } else { event->accept(); - QApplication::quit(); + quit(); } } void MainWin::changeEvent(QEvent *event) { - if(event->type() == QEvent::WindowStateChange) { - if(windowState() & Qt::WindowMinimized) { - QtUiSettings s; - if(s.value("UseSystemTrayIcon").toBool() && s.value("MinimizeOnMinimize").toBool()) { - hideToTray(); - event->accept(); - return; - } - } - } - #ifdef Q_WS_WIN - else if(event->type() == QEvent::ActivationChange) + if(event->type() == QEvent::ActivationChange) dwTickCount = GetTickCount(); // needed for toggleMinimizedToTray() #endif - event->ignore(); + QMainWindow::changeEvent(event); } void MainWin::hideToTray() { @@ -876,7 +885,6 @@ void MainWin::hideToTray() { } hide(); systemTray()->setIconVisible(); - _isHidden = true; } void MainWin::toggleMinimizedToTray() { @@ -913,11 +921,11 @@ void MainWin::forceActivated() { setWindowState((windowState() & ~Qt::WindowMinimized) | Qt::WindowActive); } - move(frameGeometry().topLeft()); // avoid placement policies + // this does not actually work on all platforms... and causes more evil than good + // move(frameGeometry().topLeft()); // avoid placement policies show(); raise(); activateWindow(); - _isHidden = false; } void MainWin::messagesInserted(const QModelIndex &parent, int start, int end) { @@ -1073,24 +1081,6 @@ void MainWin::on_actionDebugLog_triggered() { logWidget->show(); } -// FIXME -void MainWin::saveStateToSession(const QString &sessionId) { - return; - SessionSettings s(sessionId); - - s.setValue("MainWinSize", size()); - s.setValue("MainWinPos", pos()); - s.setValue("MainWinState", saveState()); -} - -// FIXME -void MainWin::saveStateToSessionSettings(SessionSettings & s) -{ - s.setValue("MainWinSize", size()); - s.setValue("MainWinPos", pos()); - s.setValue("MainWinState", saveState()); -} - void MainWin::showStatusBarMessage(const QString &message) { statusBar()->showMessage(message, 10000); }