From fcdf238512a74ca747ddb97fbc379dbf619c35b9 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Sat, 15 Jul 2017 03:21:55 +0200 Subject: [PATCH] Ref T30, added font shortcuts to CShortcut and allow to pass context shortcut --- src/blackgui/menus/fontmenus.cpp | 26 ++++++++++++++++---------- src/blackgui/menus/fontmenus.h | 7 +++++-- src/blackgui/shortcut.cpp | 18 ++++++++++++++++++ src/blackgui/shortcut.h | 9 +++++++++ 4 files changed, 48 insertions(+), 12 deletions(-) diff --git a/src/blackgui/menus/fontmenus.cpp b/src/blackgui/menus/fontmenus.cpp index 1b80a933f..1067378fe 100644 --- a/src/blackgui/menus/fontmenus.cpp +++ b/src/blackgui/menus/fontmenus.cpp @@ -9,6 +9,7 @@ #include "fontmenus.h" #include "blackgui/guiapplication.h" +#include "blackgui/shortcut.h" #include "blackmisc/verify.h" #include @@ -25,22 +26,22 @@ namespace BlackGui return cats; } - CFontMenu::CFontMenu(QWidget *widget, bool separator) : + CFontMenu::CFontMenu(QWidget *widget, bool separator, Qt::ShortcutContext shortcutContext) : IMenuDelegate(widget, separator), m_widget(widget) { this->m_fontDialogAction.reset(new QAction(CIcons::font16(), "Font", this)); QObject::connect(this->m_fontDialogAction.data(), &QAction::triggered, this, &CFontMenu::changeFontDialog); - m_fontSizePlusShortcut = new QShortcut(Qt::CTRL + Qt::Key_Plus, this->m_widget); - m_fontSizePlusShortcut->setContext(Qt::WidgetShortcut); + m_fontSizePlusShortcut = new QShortcut(CShortcut::keyFontPlus(), this->m_widget); + m_fontSizePlusShortcut->setContext(shortcutContext); QObject::connect(this->m_fontSizePlusShortcut, &QShortcut::activated, this, &CFontMenu::fontSizePlus); - m_fontSizeMinusShortcut = new QShortcut(Qt::CTRL + Qt::Key_Minus, this->m_widget); - m_fontSizeMinusShortcut->setContext(Qt::WidgetShortcut); + m_fontSizeMinusShortcut = new QShortcut(CShortcut::keyFontMinus(), this->m_widget); + m_fontSizeMinusShortcut->setContext(shortcutContext); QObject::connect(this->m_fontSizeMinusShortcut, &QShortcut::activated, this, &CFontMenu::fontSizeMinus); - m_fontResetShortcut = new QShortcut(Qt::CTRL + Qt::Key_0, this->m_widget); - m_fontResetShortcut->setContext(Qt::WidgetShortcut); + m_fontResetShortcut = new QShortcut(CShortcut::keyFontReset(), this->m_widget); + m_fontResetShortcut->setContext(shortcutContext); QObject::connect(this->m_fontResetShortcut, &QShortcut::activated, this, &CFontMenu::fontReset); } @@ -55,6 +56,11 @@ namespace BlackGui return QList({ m_fontDialogAction.data() }); } + QList CFontMenu::getShortcuts() const + { + return QList({ m_fontResetShortcut, m_fontSizeMinusShortcut, m_fontSizePlusShortcut }); + } + void CFontMenu::changeFontDialog() { Q_ASSERT_X(m_widget, Q_FUNC_INFO, "No widget"); @@ -64,7 +70,7 @@ namespace BlackGui m_dialog->setModal(true); } m_dialog->setCurrentFont(m_widget->font()); - int r = m_dialog->exec(); + const int r = m_dialog->exec(); if (r == QDialog::Rejected) { return; } const QString qss(m_dialog->getQss()); m_widget->setStyleSheet(qss); @@ -73,7 +79,7 @@ namespace BlackGui void CFontMenu::fontSizePlus() { Q_ASSERT_X(m_widget, Q_FUNC_INFO, "No widget"); - int pt = m_widget->font().pointSize() + 1; + const int pt = m_widget->font().pointSize() + 1; if (pt > 24) { return; } m_widget->setStyleSheet( CStyleSheetUtility::asStylesheet(m_widget, pt) @@ -83,7 +89,7 @@ namespace BlackGui void CFontMenu::fontSizeMinus() { Q_ASSERT_X(m_widget, Q_FUNC_INFO, "No widget"); - int pt = m_widget->font().pointSize() - 1; + const int pt = m_widget->font().pointSize() - 1; if (pt < 5) { return; } m_widget->setStyleSheet( CStyleSheetUtility::asStylesheet(m_widget, pt) diff --git a/src/blackgui/menus/fontmenus.h b/src/blackgui/menus/fontmenus.h index ed2fcd0db..3854686e3 100644 --- a/src/blackgui/menus/fontmenus.h +++ b/src/blackgui/menus/fontmenus.h @@ -25,7 +25,7 @@ namespace BlackGui { namespace Menus { - //! Standard font (size, style) menus for fonts. + //! Standard font (size, style) menus. //! Can be used as nested menu or via getActions added manually class CFontMenu : public IMenuDelegate { @@ -33,7 +33,7 @@ namespace BlackGui public: //! Constructor - CFontMenu(QWidget *widget, bool separator = true); + CFontMenu(QWidget *widget, bool separator = true, Qt::ShortcutContext shortcutContext = Qt::WidgetShortcut); //! Log.categories static const BlackMisc::CLogCategoryList &getLogCategories(); @@ -44,6 +44,9 @@ namespace BlackGui //! Allow to use the actions directly QList getActions() const; + //! The shortcus owned by QWidget + QList getShortcuts() const; + private: void changeFontDialog(); void fontSizePlus(); diff --git a/src/blackgui/shortcut.cpp b/src/blackgui/shortcut.cpp index 27dd3634c..0bf990117 100644 --- a/src/blackgui/shortcut.cpp +++ b/src/blackgui/shortcut.cpp @@ -70,4 +70,22 @@ namespace BlackGui static const QKeySequence k(Qt::CTRL + Qt::Key_C); return k; } + + const QKeySequence &CShortcut::keyFontPlus() + { + static const QKeySequence k(Qt::CTRL + Qt::Key_Plus); + return k; + } + + const QKeySequence &CShortcut::keyFontMinus() + { + static const QKeySequence k(Qt::CTRL + Qt::Key_Minus); + return k; + } + + const QKeySequence &CShortcut::keyFontReset() + { + static const QKeySequence k(Qt::CTRL + Qt::Key_0); + return k; + } } // ns diff --git a/src/blackgui/shortcut.h b/src/blackgui/shortcut.h index f9b9a54db..d6791cfb1 100644 --- a/src/blackgui/shortcut.h +++ b/src/blackgui/shortcut.h @@ -55,6 +55,15 @@ namespace BlackGui //! Copy static const QKeySequence &keyCopy(); + + //! Font plus + static const QKeySequence &keyFontPlus(); + + //! Font minus + static const QKeySequence &keyFontMinus(); + + //! Font reset + static const QKeySequence &keyFontReset(); }; } // ns #endif // guard