From b7fbe2dad3be468ba6a9f8c1c5b44b33f06a17df Mon Sep 17 00:00:00 2001 From: Michail Vourlakos Date: Thu, 29 Apr 2021 10:17:28 +0300 Subject: [PATCH] settingsdialog:introduce import submenu --import from local file and download from kde store are semantically the same so they are combined in the same import submenu --- app/settings/settingsdialog/settingsdialog.ui | 13 +----- .../settingsdialog/tablayoutshandler.cpp | 46 +++++++++++++------ .../settingsdialog/tablayoutshandler.h | 3 +- 3 files changed, 36 insertions(+), 26 deletions(-) diff --git a/app/settings/settingsdialog/settingsdialog.ui b/app/settings/settingsdialog/settingsdialog.ui index b3b8860c0..e4543ade1 100644 --- a/app/settings/settingsdialog/settingsdialog.ui +++ b/app/settings/settingsdialog/settingsdialog.ui @@ -463,17 +463,6 @@ - - - - Download... - - - - .. - - - @@ -532,7 +521,7 @@ 0 0 - 888 + 867 375 diff --git a/app/settings/settingsdialog/tablayoutshandler.cpp b/app/settings/settingsdialog/tablayoutshandler.cpp index 64387985a..88f3308ee 100644 --- a/app/settings/settingsdialog/tablayoutshandler.cpp +++ b/app/settings/settingsdialog/tablayoutshandler.cpp @@ -203,30 +203,50 @@ void TabLayouts::initLayoutMenu() m_layoutMenu->addSeparator(); - m_importLayoutAction = m_layoutMenu->addAction(i18nc("import layout", "&Import...")); - m_importLayoutAction->setToolTip(i18n("Import layout file from your system")); + + //! Import + m_importLayoutAction = m_layoutMenu->addAction(i18nc("import layout", "&Import")); + m_importLayoutAction->setToolTip(i18n("Import layout from various resources")); m_importLayoutAction->setIcon(QIcon::fromTheme("document-import")); - m_importLayoutAction->setShortcut(QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_I)); + m_importLayoutAction->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_I)); connectActionWithButton(m_ui->importButton, m_importLayoutAction); - connect(m_importLayoutAction, &QAction::triggered, this, &TabLayouts::importLayout); + connect(m_importLayoutAction, &QAction::triggered, m_ui->importButton, &QPushButton::showMenu); + + initImportLayoutSubMenu(); + m_importLayoutAction->setMenu(m_layoutImportSubMenu); + m_ui->importButton->setMenu(m_layoutImportSubMenu); - m_exportLayoutAction = m_layoutMenu->addAction(i18nc("export layout", "Exp&ort")); + //! Export + m_exportLayoutAction = m_layoutMenu->addAction(i18nc("export layout", "&Export")); m_exportLayoutAction->setToolTip(i18n("Export selected layout at your system")); m_exportLayoutAction->setIcon(QIcon::fromTheme("document-export")); - m_exportLayoutAction->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_O)); + m_exportLayoutAction->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_E)); connectActionWithButton(m_ui->exportButton, m_exportLayoutAction); connect(m_exportLayoutAction, &QAction::triggered, m_ui->exportButton, &QPushButton::showMenu); initExportLayoutSubMenu(); m_exportLayoutAction->setMenu(m_layoutExportSubMenu); m_ui->exportButton->setMenu(m_layoutExportSubMenu); +} + +void TabLayouts::initImportLayoutSubMenu() +{ + if (!m_layoutImportSubMenu) { + m_layoutImportSubMenu = new QMenu(m_layoutMenu); + m_layoutImportSubMenu->setMinimumWidth(m_ui->importButton->width() * 2); + } else { + m_layoutImportSubMenu->clear(); + } + + QAction *importLayoutAction = m_layoutImportSubMenu->addAction(i18nc("import layout", "&Import From Local File...")); + importLayoutAction->setIcon(QIcon::fromTheme("document-import")); + importLayoutAction->setShortcut(QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_I)); + connect(importLayoutAction, &QAction::triggered, this, &TabLayouts::importLayout); - m_downloadLayoutAction = m_layoutMenu->addAction(i18nc("download layout", "&Download...")); - m_downloadLayoutAction->setToolTip(i18n("Download community layouts from KDE Store")); - m_downloadLayoutAction->setIcon(QIcon::fromTheme("get-hot-new-stuff")); - m_downloadLayoutAction->setShortcut(QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_D)); - connectActionWithButton(m_ui->downloadButton, m_downloadLayoutAction); - connect(m_downloadLayoutAction, &QAction::triggered, this, &TabLayouts::downloadLayout); + QAction *downloadLayoutAction = m_layoutImportSubMenu->addAction(i18nc("download layout", "Import From K&DE Online Store...")); + downloadLayoutAction->setIcon(QIcon::fromTheme("get-hot-new-stuff")); + downloadLayoutAction->setShortcut(QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_D)); + connect(downloadLayoutAction, &QAction::triggered, this, &TabLayouts::downloadLayout); } void TabLayouts::initExportLayoutSubMenu() @@ -471,7 +491,7 @@ void TabLayouts::downloadLayout() { qDebug() << Q_FUNC_INFO; - if (!isCurrentTab() || !m_downloadLayoutAction->isEnabled()) { + if (!isCurrentTab()) { return; } diff --git a/app/settings/settingsdialog/tablayoutshandler.h b/app/settings/settingsdialog/tablayoutshandler.h index 13eccd7d2..1c35f986a 100644 --- a/app/settings/settingsdialog/tablayoutshandler.h +++ b/app/settings/settingsdialog/tablayoutshandler.h @@ -122,6 +122,7 @@ private: bool isHoveringLayoutsTable(const QPoint &pos); void initLayoutTemplatesSubMenu(); + void initImportLayoutSubMenu(); void initExportLayoutSubMenu(); void installLayoutTemplate(Latte::Data::Layout importedLayout, QString templateFilePath, ImportedLayoutOrigin origin); @@ -140,6 +141,7 @@ private: //! Layout menu actions QMenu *m_layoutMenu{nullptr}; QMenu *m_layoutTemplatesSubMenu{nullptr}; + QMenu *m_layoutImportSubMenu{nullptr}; QMenu *m_layoutExportSubMenu{nullptr}; QAction *m_switchLayoutAction{nullptr}; @@ -151,7 +153,6 @@ private: QAction *m_removeLayoutAction{nullptr}; QAction *m_importLayoutAction{nullptr}; QAction *m_exportLayoutAction{nullptr}; - QAction *m_downloadLayoutAction{nullptr}; QAction *m_detailsAction{nullptr}; QAction *m_viewsAction{nullptr}; };