X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fqtui%2Fmainwin.cpp;h=648f2bc17766a02b33e96173755171ba493301b5;hb=dbebdc3d0ce67549cb72f4632c93ef6571bfcb51;hp=e264c6ce006db8b42a7d45fad4532c1c8b81a9cb;hpb=c80e9d81bfecf4126ed5a0a8b34802aa320ade0c;p=quassel.git diff --git a/src/qtui/mainwin.cpp b/src/qtui/mainwin.cpp index e264c6ce..648f2bc1 100644 --- a/src/qtui/mainwin.cpp +++ b/src/qtui/mainwin.cpp @@ -26,6 +26,7 @@ # include # include # include +# include # include # include #endif @@ -184,6 +185,7 @@ void MainWin::init() { setupNickWidget(); setupInputWidget(); setupChatMonitor(); + setupViewMenuTail(); setupStatusBar(); setupToolBars(); setupSystray(); @@ -302,7 +304,7 @@ void MainWin::updateIcon() { if(Client::isConnected()) icon = DesktopIcon("quassel", size); else - icon = DesktopIcon("quassel_inactive", size); + icon = DesktopIcon("quassel-inactive", size); setWindowIcon(icon); qApp->setWindowIcon(icon); } @@ -340,6 +342,15 @@ void MainWin::setupActions() { coll->addAction("ToggleStatusBar", new Action(tr("Show Status &Bar"), coll, 0, 0))->setCheckable(true); +#ifdef HAVE_KDE + QAction *fullScreenAct = KStandardAction::fullScreen(this, SLOT(toggleFullscreen()), this, coll); +#else + QAction *fullScreenAct = new Action(SmallIcon("view-fullscreen"), tr("&Full Screen Mode"), coll, + this, SLOT(toggleFullscreen()), QKeySequence(Qt::Key_F11)); + fullScreenAct->setCheckable(true); +#endif + coll->addAction("ToggleFullscreen", fullScreenAct); + // Settings coll->addAction("ConfigureShortcuts", new Action(SmallIcon("configure-shortcuts"), tr("Configure &Shortcuts..."), coll, this, SLOT(showShortcutsDlg()))); @@ -790,6 +801,11 @@ void MainWin::setupTopicWidget() { dock->toggleViewAction()->setText(tr("Show Topic Line")); } +void MainWin::setupViewMenuTail() { + _viewMenu->addSeparator(); + _viewMenu->addAction(QtUi::actionCollection("General")->action("ToggleFullscreen")); +} + void MainWin::setupTitleSetter() { _titleSetter.setModel(Client::bufferModel()); _titleSetter.setSelectionModel(Client::bufferModel()->standardSelectionModel()); @@ -912,10 +928,13 @@ void MainWin::setConnectedState() { wizard->show(); } else { - QtUiSettings s; - BufferId lastUsedBufferId(s.value("LastUsedBufferId").toInt()); - if(lastUsedBufferId.isValid()) - Client::bufferModel()->switchToBuffer(lastUsedBufferId); + // Monolithic always preselects last used buffer - Client only if the connection died + if(Client::coreConnection()->wasReconnect() || Quassel::runMode() == Quassel::Monolithic) { + QtUiSettings s; + BufferId lastUsedBufferId(s.value("LastUsedBufferId").toInt()); + if(lastUsedBufferId.isValid()) + Client::bufferModel()->switchToBuffer(lastUsedBufferId); + } } } @@ -968,7 +987,14 @@ void MainWin::disconnectedFromCore() { } } + // store last active buffer QtUiSettings s; + BufferId lastBufId = _bufferWidget->currentBuffer(); + if(lastBufId.isValid()) { + s.setValue("LastUsedBufferId", lastBufId.toInt()); + // clear the current selection + Client::bufferModel()->standardSelectionModel()->clearSelection(); + } restoreState(s.value("MainWinState").toByteArray()); setDisconnectedState(); } @@ -1158,6 +1184,13 @@ void MainWin::showShortcutsDlg() { #endif } +void MainWin::toggleFullscreen() { + if(isFullScreen()) + showNormal(); + else + showFullScreen(); +} + /********************************************************************************************************/ bool MainWin::event(QEvent *event) { @@ -1279,6 +1312,14 @@ void MainWin::clientNetworkUpdated() { switch(net->connectionState()) { case Network::Initialized: action->setIcon(SmallIcon("network-connect")); + // if we have no currently selected buffer, jump to the first connecting statusbuffer + if(!bufferWidget()->currentBuffer().isValid()) { + QModelIndex idx = Client::networkModel()->networkIndex(net->networkId()); + if(idx.isValid()) { + BufferId statusBufferId = idx.data(NetworkModel::BufferIdRole).value(); + Client::bufferModel()->switchToBuffer(statusBufferId); + } + } break; case Network::Disconnected: action->setIcon(SmallIcon("network-disconnect"));