aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/welcome/welcomeplugin.cpp
diff options
context:
space:
mode:
authorSerhii Moroz <frost.asm@gmail.com>2016-07-22 09:12:27 +0300
committerSerhii Moroz <frost.asm@gmail.com>2016-07-28 15:04:55 +0000
commitcda7a3188f86f6a506225a679e123ee72b8c4f76 (patch)
tree5cf678edff77ad90b39d8f22b1a95e490fa917c0 /src/plugins/welcome/welcomeplugin.cpp
parent38f72855b61e104d2c597141756d140668f5b20a (diff)
Welcome: Added keyboard hotkeys to open sessions and recent projects
Change-Id: Ia7c1ec11b2fa3e4b61b842fd1e9e4df7aa6f7be3 Reviewed-by: Orgad Shaneh <orgads@gmail.com> Reviewed-by: Thomas Hartmann <Thomas.Hartmann@theqtcompany.com>
Diffstat (limited to 'src/plugins/welcome/welcomeplugin.cpp')
-rw-r--r--src/plugins/welcome/welcomeplugin.cpp53
1 files changed, 53 insertions, 0 deletions
diff --git a/src/plugins/welcome/welcomeplugin.cpp b/src/plugins/welcome/welcomeplugin.cpp
index 43f3df9352..f77b632374 100644
--- a/src/plugins/welcome/welcomeplugin.cpp
+++ b/src/plugins/welcome/welcomeplugin.cpp
@@ -27,6 +27,9 @@
#include <extensionsystem/pluginmanager.h>
+#include <coreplugin/actionmanager/actionmanager.h>
+#include <coreplugin/actionmanager/command.h>
+
#include <coreplugin/coreconstants.h>
#include <coreplugin/icore.h>
#include <coreplugin/imode.h>
@@ -125,6 +128,8 @@ class WelcomeMode : public IMode
{
Q_OBJECT
Q_PROPERTY(int activePlugin READ activePlugin WRITE setActivePlugin NOTIFY activePluginChanged)
+ Q_PROPERTY(QStringList recentProjectsShortcuts READ recentProjectsShortcuts NOTIFY recentProjectsShortcutsChanged)
+ Q_PROPERTY(QStringList sessionsShortcuts READ sessionsShortcuts NOTIFY sessionsShortcutsChanged)
public:
WelcomeMode();
~WelcomeMode();
@@ -133,6 +138,9 @@ public:
void initPlugins();
int activePlugin() const { return m_activePlugin; }
+ QStringList recentProjectsShortcuts() const { return m_recentProjectsShortcuts; }
+ QStringList sessionsShortcuts() const { return m_sessionsShortcuts; }
+
public slots:
void setActivePlugin(int pos)
{
@@ -145,12 +153,19 @@ public slots:
signals:
void activePluginChanged(int pos);
+ void openSessionTriggered(int index);
+ void openRecentProjectTriggered(int index);
+
+ void recentProjectsShortcutsChanged(QStringList recentProjectsShortcuts);
+ void sessionsShortcutsChanged(QStringList sessionsShortcuts);
+
private:
void welcomePluginAdded(QObject*);
void sceneGraphError(QQuickWindow::SceneGraphError, const QString &message);
void facilitateQml(QQmlEngine *engine);
void addPages(const QList<IWelcomePage *> &pages);
void applyTheme();
+ void addKeyboardShortcuts();
QWidget *m_modeWidget;
QuickContainer *m_welcomePage;
@@ -158,6 +173,8 @@ private:
QList<IWelcomePage *> m_pluginList;
int m_activePlugin;
QQmlPropertyMap m_themeProperties;
+ QStringList m_recentProjectsShortcuts;
+ QStringList m_sessionsShortcuts;
};
WelcomeMode::WelcomeMode()
@@ -208,6 +225,8 @@ WelcomeMode::WelcomeMode()
layout->addWidget(container);
#endif // USE_QUICK_WIDGET
+ addKeyboardShortcuts();
+
setWidget(m_modeWidget);
}
@@ -218,6 +237,40 @@ void WelcomeMode::applyTheme()
m_themeProperties.insert(it.key(), it.value());
}
+void WelcomeMode::addKeyboardShortcuts()
+{
+ const int actionsCount = 9;
+ Context welcomeContext(Core::Constants::C_WELCOME_MODE);
+
+ const Id sessionBase = "Welcome.OpenSession";
+ for (int i = 1; i <= actionsCount; ++i) {
+ auto act = new QAction(tr("Open Session #%1").arg(i), this);
+ Command *cmd = ActionManager::registerAction(act, sessionBase.withSuffix(i), welcomeContext);
+ cmd->setDefaultKeySequence(QKeySequence((UseMacShortcuts ? tr("Ctrl+Meta+%1") : tr("Ctrl+Alt+%1")).arg(i)));
+ m_sessionsShortcuts.append(cmd->keySequence().toString());
+
+ connect(act, &QAction::triggered, this, [this, i] { openSessionTriggered(i-1); });
+ connect(cmd, &Command::keySequenceChanged, this, [this, i, cmd] {
+ m_sessionsShortcuts[i-1] = cmd->keySequence().toString();
+ emit sessionsShortcutsChanged(m_sessionsShortcuts);
+ });
+ }
+
+ const Id projectBase = "Welcome.OpenRecentProject";
+ for (int i = 1; i <= actionsCount; ++i) {
+ auto act = new QAction(tr("Open Recent Project #%1").arg(i), this);
+ Command *cmd = ActionManager::registerAction(act, projectBase.withSuffix(i), welcomeContext);
+ cmd->setDefaultKeySequence(QKeySequence(tr("Ctrl+Shift+%1").arg(i)));
+ m_recentProjectsShortcuts.append(cmd->keySequence().toString());
+
+ connect(act, &QAction::triggered, this, [this, i] { openRecentProjectTriggered(i-1); });
+ connect(cmd, &Command::keySequenceChanged, this, [this, i, cmd] {
+ m_recentProjectsShortcuts[i-1] = cmd->keySequence().toString();
+ emit recentProjectsShortcutsChanged(m_recentProjectsShortcuts);
+ });
+ }
+}
+
WelcomeMode::~WelcomeMode()
{
QSettings *settings = ICore::settings();