X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fmainwin.cpp;h=2c9e0f74eeb09f3e6d0552af7dc727c329fda546;hp=37c5865c1602693f6618f189c22db0be352c0aae;hb=c230f7bd892b78b09710cf5746c2bf12a73d6b9b;hpb=9a717378a859383363ea519dd9de9c0138d0db73 diff --git a/src/qtui/mainwin.cpp b/src/qtui/mainwin.cpp index 37c5865c..2c9e0f74 100644 --- a/src/qtui/mainwin.cpp +++ b/src/qtui/mainwin.cpp @@ -28,6 +28,10 @@ # include #endif +#ifdef Q_WS_X11 +# include +#endif + #include "aboutdlg.h" #include "awaylogfilter.h" #include "awaylogview.h" @@ -35,7 +39,8 @@ #include "actioncollection.h" #include "buffermodel.h" #include "bufferview.h" -#include "bufferviewmanager.h" +#include "bufferviewoverlay.h" +#include "bufferviewoverlayfilter.h" #include "bufferwidget.h" #include "channellistdlg.h" #include "chatlinemodel.h" @@ -45,24 +50,28 @@ #include "client.h" #include "clientsyncer.h" #include "clientbacklogmanager.h" +#include "clientbufferviewconfig.h" +#include "clientbufferviewmanager.h" #include "coreinfodlg.h" #include "coreconnectdlg.h" #include "contextmenuactionprovider.h" +#include "debugbufferviewoverlay.h" #include "debuglogwidget.h" #include "debugmessagemodelfilter.h" #include "iconloader.h" #include "inputwidget.h" #include "inputline.h" #include "irclistmodel.h" +#include "ircconnectionwizard.h" #include "jumpkeyhandler.h" #include "msgprocessorstatuswidget.h" #include "nicklistwidget.h" #include "qtuiapplication.h" #include "qtuimessageprocessor.h" #include "qtuisettings.h" -#include "sessionsettings.h" #include "settingsdlg.h" #include "settingspagedlg.h" +#include "systemtray.h" #include "toolbaractionprovider.h" #include "topicwidget.h" #include "verticaldock.h" @@ -86,7 +95,6 @@ #include "settingspages/bufferviewsettingspage.h" #include "settingspages/chatmonitorsettingspage.h" #include "settingspages/colorsettingspage.h" -#include "settingspages/fontssettingspage.h" #include "settingspages/generalsettingspage.h" #include "settingspages/highlightsettingspage.h" #include "settingspages/identitiessettingspage.h" @@ -104,9 +112,12 @@ MainWin::MainWin(QWidget *parent) sslLabel(new QLabel()), msgProcessorStatusWidget(new MsgProcessorStatusWidget()), _titleSetter(this), - _trayIcon(new QSystemTrayIcon(this)), _awayLog(0) { +#ifdef Q_WS_WIN + dwTickCount = 0; +#endif + QtUiSettings uiSettings; QString style = uiSettings.value("Style", QString()).toString(); if(!style.isEmpty()) { @@ -124,18 +135,15 @@ MainWin::MainWin(QWidget *parent) 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() { - QtUiSettings s; - if(s.value("MainWinSize").isValid()) - resize(s.value("MainWinSize").toSize()); - else - resize(QSize(800, 500)); - 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)), + SLOT(messagesInserted(const QModelIndex &, int, int))); connect(GraphicalUi::contextMenuActionProvider(), SIGNAL(showChannelList(NetworkId)), SLOT(showChannelList(NetworkId))); // Setup Dock Areas @@ -172,15 +180,15 @@ void MainWin::init() { QtUi::registerNotificationBackend(new KNotificationBackend(this)); #endif /* HAVE_KDE */ + setDisconnectedState(); // Disable menus and stuff + // restore mainwin state - restoreState(s.value("MainWinState").toByteArray()); + QtUiSettings s; + restoreStateFromSettings(s); // restore locked state of docks - QtUi::actionCollection("General")->action("LockDockPositions")->setChecked(s.value("LockDocks", false).toBool()); - - setDisconnectedState(); // Disable menus and stuff + QtUi::actionCollection("General")->action("LockLayout")->setChecked(s.value("LockLayout", false).toBool()); - show(); if(Quassel::runMode() != Quassel::Monolithic) { showCoreConnectionDlg(true); // autoconnect if appropriate } else { @@ -189,21 +197,56 @@ void MainWin::init() { } MainWin::~MainWin() { + +} + +void MainWin::aboutToQuit() { QtUiSettings s; - s.setValue("MainWinSize", size()); - s.setValue("MainWinPos", pos()); + saveStateToSettings(s); +} + +void MainWin::saveStateToSettings(UiSettings &s) { + s.setValue("MainWinSize", _normalSize); + s.setValue("MainWinPos", _normalPos); s.setValue("MainWinState", saveState()); + s.setValue("MainWinGeometry", saveGeometry()); + s.setValue("MainWinMinimized", isMinimized()); + s.setValue("MainWinHidden", _isHidden); +} + +void MainWin::restoreStateFromSettings(UiSettings &s) { + restoreGeometry(s.value("MainWinGeometry").toByteArray()); + if(isMaximized()) { + // 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()); + } + + restoreState(s.value("MainWinState").toByteArray()); + + _isHidden = false; + if(s.value("MainWinHidden").toBool()) + hideToTray(); + else if(s.value("MainWinMinimized").toBool()) + showMinimized(); + else + show(); } void MainWin::updateIcon() { +#ifdef Q_WS_MAC + const int size = 128; +#else + const int size = 48; +#endif + QPixmap icon; if(Client::isConnected()) - icon = DesktopIcon("quassel", IconLoader::SizeEnormous); + icon = DesktopIcon("quassel", size); else - icon = DesktopIcon("quassel_disconnected", IconLoader::SizeEnormous); + icon = DesktopIcon("quassel_inactive", size); setWindowIcon(icon); qApp->setWindowIcon(icon); - systemTrayIcon()->setIcon(icon); } void MainWin::setupActions() { @@ -224,12 +267,12 @@ void MainWin::setupActions() { coll->addAction("ConfigureBufferViews", new Action(tr("&Configure Buffer Views..."), coll, this, SLOT(on_actionConfigureViews_triggered()))); - QAction *lockAct = coll->addAction("LockDockPositions", new Action(tr("&Lock Dock Positions"), coll)); + QAction *lockAct = coll->addAction("LockLayout", new Action(tr("&Lock Layout"), coll)); lockAct->setCheckable(true); - connect(lockAct, SIGNAL(toggled(bool)), SLOT(on_actionLockDockPositions_toggled(bool))); + connect(lockAct, SIGNAL(toggled(bool)), SLOT(on_actionLockLayout_toggled(bool))); coll->addAction("ToggleSearchBar", new Action(SmallIcon("edit-find"), tr("Show &Search Bar"), coll, - 0, 0, tr("Ctrl+F")))->setCheckable(true); + 0, 0, QKeySequence::Find))->setCheckable(true); coll->addAction("ShowAwayLog", new Action(tr("Show Away Log"), coll, this, SLOT(showAwayLog()))); coll->addAction("ToggleStatusBar", new Action(tr("Show Status &Bar"), coll, @@ -246,6 +289,8 @@ void MainWin::setupActions() { qApp, SLOT(aboutQt()))); coll->addAction("DebugNetworkModel", new Action(SmallIcon("tools-report-bug"), tr("Debug &NetworkModel"), coll, this, SLOT(on_actionDebugNetworkModel_triggered()))); + coll->addAction("DebugBufferViewOverlay", new Action(SmallIcon("tools-report-bug"), tr("Debug &BufferViewOverlay"), coll, + this, SLOT(on_actionDebugBufferViewOverlay_triggered()))); coll->addAction("DebugMessageModel", new Action(SmallIcon("tools-report-bug"), tr("Debug &MessageModel"), coll, this, SLOT(on_actionDebugMessageModel_triggered()))); coll->addAction("DebugLog", new Action(SmallIcon("tools-report-bug"), tr("Debug &Log"), coll, @@ -287,7 +332,7 @@ void MainWin::setupMenus() { _viewMenu->addAction(coll->action("ToggleStatusBar")); _viewMenu->addSeparator(); - _viewMenu->addAction(coll->action("LockDockPositions")); + _viewMenu->addAction(coll->action("LockLayout")); _settingsMenu = menuBar()->addMenu(tr("&Settings")); #ifdef HAVE_KDE @@ -306,6 +351,7 @@ void MainWin::setupMenus() { _helpMenu->addSeparator(); _helpDebugMenu = _helpMenu->addMenu(SmallIcon("tools-report-bug"), tr("Debug")); _helpDebugMenu->addAction(coll->action("DebugNetworkModel")); + _helpDebugMenu->addAction(coll->action("DebugBufferViewOverlay")); _helpDebugMenu->addAction(coll->action("DebugMessageModel")); _helpDebugMenu->addAction(coll->action("DebugLog")); } @@ -318,13 +364,14 @@ void MainWin::setupBufferWidget() { } void MainWin::addBufferView(int bufferViewConfigId) { - addBufferView(Client::bufferViewManager()->bufferViewConfig(bufferViewConfigId)); + addBufferView(Client::bufferViewManager()->clientBufferViewConfig(bufferViewConfigId)); } -void MainWin::addBufferView(BufferViewConfig *config) { +void MainWin::addBufferView(ClientBufferViewConfig *config) { if(!config) return; + config->setLocked(QtUiSettings().value("LockLayout", false).toBool()); BufferViewDock *dock = new BufferViewDock(config, this); //create the view and initialize it's filter @@ -341,6 +388,7 @@ void MainWin::addBufferView(BufferViewConfig *config) { addDockWidget(Qt::LeftDockWidgetArea, dock); _bufferViewsMenu->addAction(dock->toggleViewAction()); + connect(dock->toggleViewAction(), SIGNAL(toggled(bool)), this, SLOT(bufferViewToggled(bool))); _bufferViews.append(dock); } @@ -360,6 +408,35 @@ void MainWin::removeBufferView(int bufferViewConfigId) { } } +void MainWin::bufferViewToggled(bool enabled) { + QAction *action = qobject_cast(sender()); + Q_ASSERT(action); + BufferViewDock *dock = qobject_cast(action->parent()); + Q_ASSERT(dock); + if(enabled) { + Client::bufferViewOverlay()->addView(dock->bufferViewId()); + BufferViewConfig *config = dock->config(); + if(config && config->isInitialized()) { + BufferIdList buffers; + if(config->networkId().isValid()) { + foreach(BufferId bufferId, config->bufferList()) { + if(Client::networkModel()->networkId(bufferId) == config->networkId()) + buffers << bufferId; + } + foreach(BufferId bufferId, config->temporarilyRemovedBuffers().toList()) { + if(Client::networkModel()->networkId(bufferId) == config->networkId()) + buffers << bufferId; + } + } else { + buffers = BufferIdList::fromSet(config->bufferList().toSet() + config->temporarilyRemovedBuffers()); + } + Client::backlogManager()->checkForBacklog(buffers); + } + } else { + Client::bufferViewOverlay()->removeView(dock->bufferViewId()); + } +} + BufferView *MainWin::allBuffersView() const { // "All Buffers" is always the first dock created if(_bufferViews.count() > 0) @@ -382,12 +459,17 @@ void MainWin::on_actionConfigureViews_triggered() { dlg.exec(); } -void MainWin::on_actionLockDockPositions_toggled(bool lock) { +void MainWin::on_actionLockLayout_toggled(bool lock) { QList docks = findChildren(); foreach(VerticalDock *dock, docks) { dock->showTitle(!lock); } - QtUiSettings().setValue("LockDocks", lock); + if(Client::bufferViewManager()) { + foreach(ClientBufferViewConfig *config, Client::bufferViewManager()->clientBufferViewConfigs()) { + config->setLocked(lock); + } + } + QtUiSettings().setValue("LockLayout", lock); } void MainWin::setupNickWidget() { @@ -402,7 +484,7 @@ void MainWin::setupNickWidget() { addDockWidget(Qt::RightDockWidgetArea, nickDock); _viewMenu->addAction(nickDock->toggleViewAction()); nickDock->toggleViewAction()->setText(tr("Show Nick List")); - nickDock->toggleViewAction()->setIcon(SmallIcon("view-sidetree")); + // See NickListDock::NickListDock(); // connect(nickDock->toggleViewAction(), SIGNAL(triggered(bool)), nickListWidget, SLOT(showWidget(bool))); @@ -419,7 +501,7 @@ void MainWin::setupChatMonitor() { ChatMonitorView *chatView = new ChatMonitorView(filter, this); chatView->show(); dock->setWidget(chatView); - dock->show(); + dock->hide(); addDockWidget(Qt::TopDockWidgetArea, dock, Qt::Vertical); _viewMenu->addAction(dock->toggleViewAction()); @@ -482,7 +564,6 @@ void MainWin::setupStatusBar() { statusBar()->addPermanentWidget(sslLabel); sslLabel->hide(); - _viewMenu->addSeparator(); QAction *showStatusbar = QtUi::actionCollection("General")->action("ToggleStatusBar"); QtUiSettings uiSettings; @@ -501,27 +582,7 @@ void MainWin::saveStatusBarStatus(bool enabled) { } void MainWin::setupSystray() { - connect(Client::messageModel(), SIGNAL(rowsInserted(const QModelIndex &, int, int)), - SLOT(messagesInserted(const QModelIndex &, int, int))); - - ActionCollection *coll = QtUi::actionCollection("General"); - systrayMenu = new QMenu(this); - systrayMenu->addAction(coll->action("ConnectCore")); - systrayMenu->addAction(coll->action("DisconnectCore")); - systrayMenu->addAction(coll->action("CoreInfo")); - systrayMenu->addSeparator(); - systrayMenu->addAction(coll->action("Quit")); - - systemTrayIcon()->setContextMenu(systrayMenu); - - QtUiSettings s; - if(s.value("UseSystemTrayIcon", QVariant(true)).toBool()) { - systemTrayIcon()->show(); - } - -#ifndef Q_WS_MAC - connect(systemTrayIcon(), SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(systrayActivated(QSystemTrayIcon::ActivationReason))); -#endif + _systemTray = new SystemTray(this); } void MainWin::setupToolBars() { @@ -530,8 +591,12 @@ void MainWin::setupToolBars() { connect(_nickListWidget, SIGNAL(nickSelectionChanged(QModelIndexList)), QtUi::toolBarActionProvider(), SLOT(nickSelectionChanged(QModelIndexList))); - _mainToolBar = addToolBar("Main Toolbar"); +#ifdef Q_WS_MAC + setUnifiedTitleAndToolBarOnMac(true); +#endif + _mainToolBar = addToolBar(tr("Main Toolbar")); _mainToolBar->setObjectName("MainToolBar"); + QtUi::toolBarActionProvider()->addActions(_mainToolBar, ToolBarActionProvider::MainToolBar); _toolbarMenu->addAction(_mainToolBar->toggleViewAction()); @@ -545,18 +610,6 @@ void MainWin::setupToolBars() { #endif } -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(); - } - } - } -} - void MainWin::connectedToCore() { Q_CHECK_PTR(Client::bufferViewManager()); connect(Client::bufferViewManager(), SIGNAL(bufferViewConfigAdded(int)), this, SLOT(addBufferView(int))); @@ -602,6 +655,12 @@ void MainWin::setConnectedState() { sslLabel->setVisible(!Client::internalCore()); coreLagLabel->setVisible(!Client::internalCore()); updateIcon(); + systemTray()->setState(SystemTray::Active); + + if(Client::networkIds().isEmpty()) { + IrcConnectionWizard *wizard = new IrcConnectionWizard(this, Qt::Sheet); + wizard->show(); + } } void MainWin::loadLayout() { @@ -661,6 +720,7 @@ void MainWin::setDisconnectedState() { if(msgProcessorStatusWidget) msgProcessorStatusWidget->setProgress(0, 0); updateIcon(); + systemTray()->setState(SystemTray::Inactive); } void MainWin::startInternalCore() { @@ -711,20 +771,19 @@ void MainWin::showSettingsDlg() { SettingsDlg *dlg = new SettingsDlg(); //Category: Appearance - dlg->registerSettingsPage(new ColorSettingsPage(dlg)); - dlg->registerSettingsPage(new FontsSettingsPage(dlg)); dlg->registerSettingsPage(new AppearanceSettingsPage(dlg)); //General - //Category: Behaviour - dlg->registerSettingsPage(new GeneralSettingsPage(dlg)); - dlg->registerSettingsPage(new BacklogSettingsPage(dlg)); + dlg->registerSettingsPage(new ColorSettingsPage(dlg)); dlg->registerSettingsPage(new HighlightSettingsPage(dlg)); - dlg->registerSettingsPage(new AliasesSettingsPage(dlg)); dlg->registerSettingsPage(new NotificationsSettingsPage(dlg)); + dlg->registerSettingsPage(new BacklogSettingsPage(dlg)); + dlg->registerSettingsPage(new BufferViewSettingsPage(dlg)); dlg->registerSettingsPage(new ChatMonitorSettingsPage(dlg)); - //Category: General + + //Category: Misc + dlg->registerSettingsPage(new GeneralSettingsPage(dlg)); dlg->registerSettingsPage(new IdentitiesSettingsPage(dlg)); dlg->registerSettingsPage(new NetworksSettingsPage(dlg)); - dlg->registerSettingsPage(new BufferViewSettingsPage(dlg)); + dlg->registerSettingsPage(new AliasesSettingsPage(dlg)); dlg->show(); } @@ -739,6 +798,28 @@ void MainWin::showShortcutsDlg() { } #endif +/********************************************************************************************************/ + +bool MainWin::event(QEvent *event) { + if(event->type() == QEvent::WindowActivate) + QtUi::closeNotifications(); + return QMainWindow::event(event); +} + +void MainWin::moveEvent(QMoveEvent *event) { + if(!(windowState() & Qt::WindowMaximized)) + _normalPos = event->pos(); + + event->ignore(); +} + +void MainWin::resizeEvent(QResizeEvent *event) { + if(!(windowState() & Qt::WindowMaximized)) + _normalSize = event->size(); + + event->ignore(); +} + void MainWin::closeEvent(QCloseEvent *event) { QtUiSettings s; QtUiApplication* app = qobject_cast qApp; @@ -752,40 +833,81 @@ void MainWin::closeEvent(QCloseEvent *event) { } } -void MainWin::systrayActivated(QSystemTrayIcon::ActivationReason activationReason) { - if(activationReason == QSystemTrayIcon::Trigger) { - toggleMinimizedToTray(); +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) + dwTickCount = GetTickCount(); // needed for toggleMinimizedToTray() +#endif + + event->ignore(); } void MainWin::hideToTray() { - if(!systemTrayIcon()->isSystemTrayAvailable()) { + if(!systemTray()->isSystemTrayAvailable()) { qWarning() << Q_FUNC_INFO << "was called with no SystemTray available!"; return; } - - clearFocus(); hide(); - systemTrayIcon()->show(); + systemTray()->setIconVisible(); + _isHidden = true; } void MainWin::toggleMinimizedToTray() { +#ifdef Q_WS_WIN + // the problem is that we lose focus when the systray icon is activated + // and we don't know the former active window + // therefore we watch for activation event and use our stopwatch :) + // courtesy: KSystemTrayIcon + if(GetTickCount() - dwTickCount >= 300) + // we weren't active in the last 300ms -> activate + forceActivated(); + else + hideToTray(); + +#else + + if(!isVisible() || isMinimized()) + // restore + forceActivated(); + else + hideToTray(); + +#endif +} + +void MainWin::forceActivated() { +#ifdef Q_WS_X11 + // Bypass focus stealing prevention + QX11Info::setAppUserTime(QX11Info::appTime()); +#endif + if(windowState() & Qt::WindowMinimized) { // restore setWindowState((windowState() & ~Qt::WindowMinimized) | Qt::WindowActive); - show(); - raise(); - } else { - setWindowState((windowState() & ~Qt::WindowActive) | Qt::WindowMinimized); - hideToTray(); } + + move(frameGeometry().topLeft()); // avoid placement policies + show(); + raise(); + activateWindow(); + _isHidden = false; } void MainWin::messagesInserted(const QModelIndex &parent, int start, int end) { Q_UNUSED(parent); - if(QApplication::activeWindow() != 0) - return; + bool hasFocus = QApplication::activeWindow() != 0; for(int i = start; i <= end; i++) { QModelIndex idx = Client::messageModel()->index(i, ChatLineModel::ContentsColumn); @@ -794,28 +916,37 @@ void MainWin::messagesInserted(const QModelIndex &parent, int start, int end) { continue; } Message::Flags flags = (Message::Flags)idx.data(ChatLineModel::FlagsRole).toInt(); - if(flags.testFlag(Message::Backlog)) continue; + if(flags.testFlag(Message::Backlog) || flags.testFlag(Message::Self)) + continue; flags |= Message::Backlog; // we only want to trigger a highlight once! Client::messageModel()->setData(idx, (int)flags, ChatLineModel::FlagsRole); BufferId bufId = idx.data(ChatLineModel::BufferIdRole).value(); BufferInfo::Type bufType = Client::networkModel()->bufferType(bufId); + if(hasFocus && bufId == _bufferWidget->currentBuffer()) + continue; + if(flags & Message::Highlight || bufType == BufferInfo::QueryBuffer) { QModelIndex senderIdx = Client::messageModel()->index(i, ChatLineModel::SenderColumn); QString sender = senderIdx.data(ChatLineModel::EditRole).toString(); QString contents = idx.data(ChatLineModel::DisplayRole).toString(); - QtUi::invokeNotification(bufId, sender, contents); + AbstractNotificationBackend::NotificationType type; + + if(bufType == BufferInfo::QueryBuffer && !hasFocus) + type = AbstractNotificationBackend::PrivMsg; + else if(bufType == BufferInfo::QueryBuffer && hasFocus) + type = AbstractNotificationBackend::PrivMsgFocused; + else if(flags & Message::Highlight && !hasFocus) + type = AbstractNotificationBackend::Highlight; + else + type = AbstractNotificationBackend::HighlightFocused; + + QtUi::invokeNotification(bufId, type, sender, contents); } } } -bool MainWin::event(QEvent *event) { - if(event->type() == QEvent::WindowActivate) - QtUi::closeNotifications(); - return QMainWindow::event(event); -} - void MainWin::clientNetworkCreated(NetworkId id) { const Network *net = Client::network(id); QAction *act = new QAction(net->networkName(), this); @@ -888,6 +1019,12 @@ void MainWin::on_actionDebugNetworkModel_triggered() { view->show(); } +void MainWin::on_actionDebugBufferViewOverlay_triggered() { + DebugBufferViewOverlay *overlay = new DebugBufferViewOverlay(0); + overlay->setAttribute(Qt::WA_DeleteOnClose); + overlay->show(); +} + void MainWin::on_actionDebugMessageModel_triggered() { QTableView *view = new QTableView(0); DebugMessageModelFilter *filter = new DebugMessageModelFilter(view); @@ -904,6 +1041,7 @@ void MainWin::on_actionDebugLog_triggered() { logWidget->show(); } +// FIXME void MainWin::saveStateToSession(const QString &sessionId) { return; SessionSettings s(sessionId); @@ -913,6 +1051,7 @@ void MainWin::saveStateToSession(const QString &sessionId) { s.setValue("MainWinState", saveState()); } +// FIXME void MainWin::saveStateToSessionSettings(SessionSettings & s) { s.setValue("MainWinSize", size());