diff options
Diffstat (limited to 'Swift/QtUI/QtChatTabsShortcutOnlySubstitute.cpp')
-rw-r--r-- | Swift/QtUI/QtChatTabsShortcutOnlySubstitute.cpp | 101 |
1 files changed, 50 insertions, 51 deletions
diff --git a/Swift/QtUI/QtChatTabsShortcutOnlySubstitute.cpp b/Swift/QtUI/QtChatTabsShortcutOnlySubstitute.cpp index 7f44177..40ab17f 100644 --- a/Swift/QtUI/QtChatTabsShortcutOnlySubstitute.cpp +++ b/Swift/QtUI/QtChatTabsShortcutOnlySubstitute.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015 Isode Limited. + * Copyright (c) 2015-2016 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ @@ -12,7 +12,6 @@ #include <QShortcut> #include <Swiften/Base/Log.h> -#include <Swiften/Base/foreach.h> #include <Swift/QtUI/QtTabbable.h> @@ -27,82 +26,82 @@ QtChatTabsShortcutOnlySubstitute::~QtChatTabsShortcutOnlySubstitute() { } void QtChatTabsShortcutOnlySubstitute::addTab(QtTabbable* tab) { - connect(tab, SIGNAL(requestNextTab()), this, SLOT(handleRequestedNextTab()), Qt::UniqueConnection); - connect(tab, SIGNAL(requestActiveTab()), this, SLOT(handleRequestedActiveTab()), Qt::UniqueConnection); - connect(tab, SIGNAL(requestPreviousTab()), this, SLOT(handleRequestedPreviousTab()), Qt::UniqueConnection); - - connect(new QShortcut(QKeySequence(tr("CTRL+W", "Close chat tab.")), tab), SIGNAL(activated()), this, SLOT(handleCloseTabShortcut())); - connect(new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_PageUp), tab), SIGNAL(activated()), tab, SIGNAL(requestPreviousTab())); - connect(new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_PageDown), tab), SIGNAL(activated()), tab, SIGNAL(requestNextTab())); - connect(new QShortcut(QKeySequence(Qt::ALT + Qt::Key_A), tab), SIGNAL(activated()), tab, SIGNAL(requestActiveTab())); + connect(tab, SIGNAL(requestNextTab()), this, SLOT(handleRequestedNextTab()), Qt::UniqueConnection); + connect(tab, SIGNAL(requestActiveTab()), this, SLOT(handleRequestedActiveTab()), Qt::UniqueConnection); + connect(tab, SIGNAL(requestPreviousTab()), this, SLOT(handleRequestedPreviousTab()), Qt::UniqueConnection); + + connect(new QShortcut(QKeySequence(tr("CTRL+W", "Close chat tab.")), tab), SIGNAL(activated()), this, SLOT(handleCloseTabShortcut())); + connect(new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_PageUp), tab), SIGNAL(activated()), tab, SIGNAL(requestPreviousTab())); + connect(new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_PageDown), tab), SIGNAL(activated()), tab, SIGNAL(requestNextTab())); + connect(new QShortcut(QKeySequence(Qt::ALT + Qt::Key_A), tab), SIGNAL(activated()), tab, SIGNAL(requestActiveTab())); } void QtChatTabsShortcutOnlySubstitute::handleCloseTabShortcut() { - QtTabbable* senderTab = dynamic_cast<QtTabbable*>(sender()->parent()); - SWIFT_LOG_ASSERT(senderTab, debug) << "No window to close." << std::endl; - if (senderTab) { - senderTab->close(); - } + QtTabbable* senderTab = dynamic_cast<QtTabbable*>(sender()->parent()); + SWIFT_LOG_ASSERT(senderTab, debug) << "No window to close." << std::endl; + if (senderTab) { + senderTab->close(); + } } void QtChatTabsShortcutOnlySubstitute::handleRequestedNextTab() { - QtTabbable* senderTab = dynamic_cast<QtTabbable*>(sender()); + QtTabbable* senderTab = dynamic_cast<QtTabbable*>(sender()); - QList<QtTabbable*> tabs = tabbableWindows(); + QList<QtTabbable*> tabs = tabbableWindows(); - int currentIndex = tabs.indexOf(senderTab); - assert(currentIndex >= 0); + int currentIndex = tabs.indexOf(senderTab); + assert(currentIndex >= 0); - QtTabbable* nextTab = tabs.at((currentIndex + 1) % tabs.size()); - nextTab->activateWindow(); + QtTabbable* nextTab = tabs.at((currentIndex + 1) % tabs.size()); + nextTab->activateWindow(); } void QtChatTabsShortcutOnlySubstitute::handleRequestedActiveTab() { - QtTabbable* senderTab = dynamic_cast<QtTabbable*>(sender()); + QtTabbable* senderTab = dynamic_cast<QtTabbable*>(sender()); - QtTabbable::AlertType types[] = {QtTabbable::WaitingActivity, QtTabbable::ImpendingActivity}; + QtTabbable::AlertType types[] = {QtTabbable::WaitingActivity, QtTabbable::ImpendingActivity}; - QList<QtTabbable*> tabs = tabbableWindows(); + QList<QtTabbable*> tabs = tabbableWindows(); - for (int j = 0; j < 2; j++) { - int startIndex = tabs.indexOf(senderTab); - int currentIndex = startIndex; + for (auto& type : types) { + int startIndex = tabs.indexOf(senderTab); + int currentIndex = startIndex; - do { - currentIndex = (currentIndex + 1) % tabs.size(); - QtTabbable* currentTab = tabs.at(currentIndex); - if (currentTab->getWidgetAlertState() == types[j]) { - currentTab->activateWindow(); - return; - } - } while (startIndex != currentIndex); - } + do { + currentIndex = (currentIndex + 1) % tabs.size(); + QtTabbable* currentTab = tabs.at(currentIndex); + if (currentTab->getWidgetAlertState() == type) { + currentTab->activateWindow(); + return; + } + } while (startIndex != currentIndex); + } } void QtChatTabsShortcutOnlySubstitute::handleRequestedPreviousTab() { - QtTabbable* senderTab = dynamic_cast<QtTabbable*>(sender()); + QtTabbable* senderTab = dynamic_cast<QtTabbable*>(sender()); - QList<QtTabbable*> tabs = tabbableWindows(); + QList<QtTabbable*> tabs = tabbableWindows(); - int currentIndex = tabs.indexOf(senderTab); - assert(currentIndex >= 0); + int currentIndex = tabs.indexOf(senderTab); + assert(currentIndex >= 0); - QtTabbable* previousTab = tabs.at((currentIndex + tabs.size() - 1) % tabs.size()); - previousTab->activateWindow(); + QtTabbable* previousTab = tabs.at((currentIndex + tabs.size() - 1) % tabs.size()); + previousTab->activateWindow(); } QList<QtTabbable*> QtChatTabsShortcutOnlySubstitute::tabbableWindows() const { - QList<QWidget*> windows = qApp->topLevelWidgets(); + QList<QWidget*> windows = qApp->topLevelWidgets(); - QList<QtTabbable*> tabbables; - foreach(QWidget* topLevelWidget, windows) { - QtTabbable* tabbable = dynamic_cast<QtTabbable*>(topLevelWidget); - if (tabbable) { - tabbables << tabbable; - } - } + QList<QtTabbable*> tabbables; + for (auto topLevelWidget : windows) { + QtTabbable* tabbable = dynamic_cast<QtTabbable*>(topLevelWidget); + if (tabbable) { + tabbables << tabbable; + } + } - return tabbables; + return tabbables; } } |