diff --git a/CMakeLists.txt b/CMakeLists.txt --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -56,6 +56,7 @@ WindowSystem DocTools Declarative + NewStuff ) add_definitions(-DQT_NO_URL_CAST_FROM_STRING) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -75,6 +75,7 @@ KF5::WindowSystem KF5::XmlGui KF5::Declarative + KF5::NewStuff ) if(XCB_FOUND) diff --git a/src/Gui/KSMainWindow.h b/src/Gui/KSMainWindow.h --- a/src/Gui/KSMainWindow.h +++ b/src/Gui/KSMainWindow.h @@ -32,6 +32,8 @@ #include "ExportMenu.h" #include "KSWidget.h" +class KMoreToolsMenuFactory; + class KSMainWindow : public QDialog { Q_OBJECT @@ -81,6 +83,8 @@ QMenu *mSaveMenu; KMessageWidget *mMessageWidget; QMenu *mToolsMenu; + QMenu *mScreenRecorderToolsMenu; + QScopedPointer mScreenrecorderToolsMenuFactory; ExportMenu *mExportMenu; bool mOnClickAvailable; }; diff --git a/src/Gui/KSMainWindow.cpp b/src/Gui/KSMainWindow.cpp --- a/src/Gui/KSMainWindow.cpp +++ b/src/Gui/KSMainWindow.cpp @@ -40,6 +40,7 @@ #include #include #include +#include #include "SettingsDialog/SettingsDialog.h" #include "ExportMenu.h" @@ -59,6 +60,7 @@ mSaveMenu(new QMenu), mMessageWidget(new KMessageWidget), mToolsMenu(new QMenu), + mScreenRecorderToolsMenu(new QMenu), mExportMenu(new ExportMenu(this)), mOnClickAvailable(onClickAvailable) { @@ -138,6 +140,13 @@ mToolsButton->setIcon(QIcon::fromTheme(QStringLiteral("application-menu"))); mDialogButtonBox->addButton(mToolsButton, QDialogButtonBox::ActionRole); mToolsMenu->addAction(KStandardAction::print(this, SLOT(showPrintDialog()), this)); + mScreenRecorderToolsMenu = mToolsMenu->addMenu(i18n("Record Screen")); + connect(mScreenRecorderToolsMenu, &QMenu::aboutToShow, mScreenRecorderToolsMenu, [this]() + { + this->mScreenrecorderToolsMenuFactory.reset(new KMoreToolsMenuFactory(QStringLiteral("spectacle/screenrecorder-tools"))); + this->mScreenRecorderToolsMenu->clear(); + this->mScreenrecorderToolsMenuFactory->fillMenuFromGroupingNames(mScreenRecorderToolsMenu, { QStringLiteral("screenrecorder") }); + } ); mToolsButton->setMenu(mToolsMenu); KGuiItem::assign(mSendToButton, KGuiItem(i18n("Export")));