From 2088ce3b27f71c7c7e4f91d8f2428f7ccecf4074 Mon Sep 17 00:00:00 2001 From: Manuel Nickschas Date: Mon, 16 Feb 2015 22:52:57 +0100 Subject: [PATCH] Port remaining stuff in MainWin to KF5 We use KToolbar now and handle the full screen action properly in both KDE4 and KF5. --- src/qtui/CMakeLists.txt | 2 +- src/qtui/mainwin.cpp | 30 ++++++++++++------------------ src/qtui/mainwin.h | 1 + 3 files changed, 14 insertions(+), 19 deletions(-) diff --git a/src/qtui/CMakeLists.txt b/src/qtui/CMakeLists.txt index ebf128a8..f17cd454 100644 --- a/src/qtui/CMakeLists.txt +++ b/src/qtui/CMakeLists.txt @@ -90,7 +90,7 @@ endif() if (WITH_KF5) list(APPEND SOURCES knotificationbackend.cpp) - list(APPEND LIBS KF5::ConfigWidgets KF5::Notifications KF5::NotifyConfig KF5::XmlGui) + list(APPEND LIBS KF5::ConfigWidgets KF5::Notifications KF5::NotifyConfig KF5::WidgetsAddons KF5::XmlGui) endif() if (LIBSNORE_FOUND) diff --git a/src/qtui/mainwin.cpp b/src/qtui/mainwin.cpp index b7b1469d..70e22852 100644 --- a/src/qtui/mainwin.cpp +++ b/src/qtui/mainwin.cpp @@ -27,21 +27,20 @@ #include #ifdef HAVE_KDE4 -# include -# include # include # include # include # include # include # include -# include #endif #ifdef HAVE_KF5 # include # include # include +# include +# include #endif #ifdef Q_WS_X11 @@ -386,14 +385,14 @@ void MainWin::setupActions() coll->addAction("ToggleStatusBar", new Action(tr("Show Status &Bar"), coll, 0, 0))->setCheckable(true); -#ifdef HAVE_KDE4 - QAction *fullScreenAct = KStandardAction::fullScreen(this, SLOT(onFullScreenToggled()), this, coll); +#ifdef HAVE_KDE + _fullScreenAction = KStandardAction::fullScreen(this, SLOT(onFullScreenToggled()), this, coll); #else - QAction *fullScreenAct = new Action(QIcon::fromTheme("view-fullscreen"), tr("&Full Screen Mode"), coll, + _fullScreenAction = new Action(QIcon::fromTheme("view-fullscreen"), tr("&Full Screen Mode"), coll, this, SLOT(onFullScreenToggled()), QKeySequence(Qt::Key_F11)); - fullScreenAct->setCheckable(true); + _fullScreenAction->setCheckable(true); + coll->addAction("ToggleFullScreen", _fullScreenAction); #endif - coll->addAction("ToggleFullScreen", fullScreenAct); // Settings QAction *configureShortcutsAct = new Action(QIcon::fromTheme("configure-shortcuts"), tr("Configure &Shortcuts..."), coll, @@ -923,7 +922,7 @@ void MainWin::setupTopicWidget() void MainWin::setupViewMenuTail() { _viewMenu->addSeparator(); - _viewMenu->addAction(QtUi::actionCollection("General")->action("ToggleFullScreen")); + _viewMenu->addAction(_fullScreenAction); } @@ -1004,7 +1003,7 @@ void MainWin::setupToolBars() setUnifiedTitleAndToolBarOnMac(true); #endif -#ifdef HAVE_KDE4 +#ifdef HAVE_KDE _mainToolBar = new KToolBar("MainToolBar", this, Qt::TopToolBarArea, false, true, true); #else _mainToolBar = new QToolBar(this); @@ -1393,15 +1392,10 @@ void MainWin::onFullScreenToggled() // Relying on QWidget::isFullScreen is discouraged, see the KToggleFullScreenAction docs // Also, one should not use showFullScreen() or showNormal(), as those reset all other window flags - QAction *action = QtUi::actionCollection("General")->action("ToggleFullScreen"); - if (!action) - return; - -#ifdef HAVE_KDE4 - KToggleFullScreenAction *kAct = static_cast(action); - kAct->setFullScreen(this, kAct->isChecked()); +#ifdef HAVE_KDE + static_cast(_fullScreenAction)->setFullScreen(this, _fullScreenAction->isChecked()); #else - if (action->isChecked()) + if (_fullScreenAction->isChecked()) setWindowState(windowState() | Qt::WindowFullScreen); else setWindowState(windowState() & ~Qt::WindowFullScreen); diff --git a/src/qtui/mainwin.h b/src/qtui/mainwin.h index f7d279d5..445b1d4e 100644 --- a/src/qtui/mainwin.h +++ b/src/qtui/mainwin.h @@ -203,6 +203,7 @@ private: ChatMonitorView *_chatMonitorView; TopicWidget *_topicWidget; + QAction *_fullScreenAction; QMenu *_fileMenu, *_networksMenu, *_viewMenu, *_bufferViewsMenu, *_settingsMenu, *_helpMenu, *_helpDebugMenu; QMenu *_toolbarMenu; QToolBar *_mainToolBar, *_chatViewToolBar, *_nickToolBar; -- 2.20.1