X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fuisupport%2Factioncollection.cpp;h=af5c9241928525b20a0063f15cba3969d8de620b;hp=a6368792933e30e728c2efe84a9ca695d2ebb9f7;hb=f9efdde7f3a6004af8f834c409cfa6ae1d877692;hpb=5b686746c880e5cda6d5de3e08180ea4332ff222 diff --git a/src/uisupport/actioncollection.cpp b/src/uisupport/actioncollection.cpp index a6368792..af5c9241 100644 --- a/src/uisupport/actioncollection.cpp +++ b/src/uisupport/actioncollection.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2012 by the Quassel Project * + * Copyright (C) 2005-2018 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -20,27 +20,36 @@ * Parts of this implementation are based on KDE's KActionCollection. * ***************************************************************************/ -#ifndef HAVE_KDE - #include #include +#include #include "actioncollection.h" #include "action.h" #include "uisettings.h" -ActionCollection::ActionCollection(QObject *parent) : QObject(parent) +void ActionCollection::addActions(const std::vector> &actions) { - _connectTriggered = _connectHovered = false; + for (auto &&p : actions) { + addAction(p.first, p.second); + } } -ActionCollection::~ActionCollection() +#ifndef HAVE_KDE + +int ActionCollection::count() const { + return actions().count(); } +bool ActionCollection::isEmpty() const +{ + return actions().count(); +} + void ActionCollection::clear() { _actionByName.clear(); @@ -60,25 +69,6 @@ QList ActionCollection::actions() const return _actions; } - -Action *ActionCollection::addAction(const QString &name, Action *action) -{ - QAction *act = addAction(name, static_cast(action)); - Q_UNUSED(act); - Q_ASSERT(act == action); - return action; -} - - -Action *ActionCollection::addAction(const QString &name, const QObject *receiver, const char *member) -{ - Action *a = new Action(this); - if (receiver && member) - connect(a, SIGNAL(triggered(bool)), receiver, member); - return addAction(name, a); -} - - QAction *ActionCollection::addAction(const QString &name, QAction *action) { if (!action) @@ -116,11 +106,11 @@ QAction *ActionCollection::addAction(const QString &name, QAction *action) widget->addAction(action); } - connect(action, SIGNAL(destroyed(QObject *)), SLOT(actionDestroyed(QObject *))); + connect(action, &QObject::destroyed, this, &ActionCollection::actionDestroyed); if (_connectHovered) - connect(action, SIGNAL(hovered()), SLOT(slotActionHovered())); + connect(action, &QAction::hovered, this, &ActionCollection::slotActionHovered); if (_connectTriggered) - connect(action, SIGNAL(triggered(bool)), SLOT(slotActionTriggered())); + connect(action, &QAction::triggered, this, &ActionCollection::slotActionTriggered); emit inserted(action); return action; @@ -136,7 +126,7 @@ void ActionCollection::removeAction(QAction *action) QAction *ActionCollection::takeAction(QAction *action) { if (!unlistAction(action)) - return 0; + return nullptr; foreach(QWidget *widget, _associatedWidgets) { widget->removeAction(action); @@ -155,7 +145,7 @@ void ActionCollection::readSettings() foreach(const QString &name, _actionByName.keys()) { if (!savedShortcuts.contains(name)) continue; - Action *action = qobject_cast(_actionByName.value(name)); + auto *action = qobject_cast(_actionByName.value(name)); if (action) action->setShortcut(s.loadShortcut(name), Action::ActiveShortcut); } @@ -166,7 +156,7 @@ void ActionCollection::writeSettings() const { ShortcutSettings s; foreach(const QString &name, _actionByName.keys()) { - Action *action = qobject_cast(_actionByName.value(name)); + auto *action = qobject_cast(_actionByName.value(name)); if (!action) continue; if (!action->isShortcutConfigurable()) @@ -180,7 +170,7 @@ void ActionCollection::writeSettings() const void ActionCollection::slotActionTriggered() { - QAction *action = qobject_cast(sender()); + auto *action = qobject_cast(sender()); if (action) emit actionTriggered(action); } @@ -188,7 +178,7 @@ void ActionCollection::slotActionTriggered() void ActionCollection::slotActionHovered() { - QAction *action = qobject_cast(sender()); + auto *action = qobject_cast(sender()); if (action) emit actionHovered(action); } @@ -197,29 +187,28 @@ void ActionCollection::slotActionHovered() void ActionCollection::actionDestroyed(QObject *obj) { // remember that this is not an QAction anymore at this point - QAction *action = static_cast(obj); + auto *action = static_cast(obj); unlistAction(action); } - -void ActionCollection::connectNotify(const char *signal) +void ActionCollection::connectNotify(const QMetaMethod &signal) { if (_connectHovered && _connectTriggered) return; - if (QMetaObject::normalizedSignature(SIGNAL(actionHovered(QAction *))) == signal) { + if (QMetaMethod::fromSignal(&ActionCollection::actionHovered) == signal) { if (!_connectHovered) { _connectHovered = true; foreach(QAction* action, actions()) - connect(action, SIGNAL(hovered()), SLOT(slotActionHovered())); + connect(action, &QAction::hovered, this, &ActionCollection::slotActionHovered); } } - else if (QMetaObject::normalizedSignature(SIGNAL(actionTriggered(QAction *))) == signal) { + else if (QMetaMethod::fromSignal(&ActionCollection::actionTriggered) == signal) { if (!_connectTriggered) { _connectTriggered = true; foreach(QAction* action, actions()) - connect(action, SIGNAL(triggered(bool)), SLOT(slotActionTriggered())); + connect(action, &QAction::triggered, this, &ActionCollection::slotActionTriggered); } } @@ -241,7 +230,7 @@ void ActionCollection::addAssociatedWidget(QWidget *widget) if (!_associatedWidgets.contains(widget)) { widget->addActions(actions()); _associatedWidgets.append(widget); - connect(widget, SIGNAL(destroyed(QObject *)), SLOT(associatedWidgetDestroyed(QObject *))); + connect(widget, &QObject::destroyed, this, &ActionCollection::associatedWidgetDestroyed); } } @@ -251,7 +240,7 @@ void ActionCollection::removeAssociatedWidget(QWidget *widget) foreach(QAction *action, actions()) widget->removeAction(action); _associatedWidgets.removeAll(widget); - disconnect(widget, SIGNAL(destroyed(QObject *)), this, SLOT(associatedWidgetDestroyed(QObject *))); + disconnect(widget, &QObject::destroyed, this, &ActionCollection::associatedWidgetDestroyed); } @@ -293,5 +282,4 @@ bool ActionCollection::unlistAction(QAction *action) return true; } - #endif /* HAVE_KDE */