projects
/
quassel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
cmake: avoid de-duplication of user's CXXFLAGS
[quassel.git]
/
src
/
uisupport
/
actioncollection.cpp
diff --git
a/src/uisupport/actioncollection.cpp
b/src/uisupport/actioncollection.cpp
index
5000126
..
1b64b83
100644
(file)
--- a/
src/uisupport/actioncollection.cpp
+++ b/
src/uisupport/actioncollection.cpp
@@
-1,5
+1,5
@@
/***************************************************************************
/***************************************************************************
- * Copyright (C) 2005-20
18
by the Quassel Project *
+ * Copyright (C) 2005-20
22
by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
@@
-20,62
+20,52
@@
* Parts of this implementation are based on KDE's KActionCollection. *
***************************************************************************/
* Parts of this implementation are based on KDE's KActionCollection. *
***************************************************************************/
-#i
fndef HAVE_KDE
+#i
nclude "actioncollection.h"
#include <QAction>
#include <QDebug>
#include <QMetaMethod>
#include <QAction>
#include <QDebug>
#include <QMetaMethod>
-#include "actioncollection.h"
-
#include "action.h"
#include "uisettings.h"
#include "action.h"
#include "uisettings.h"
-
ActionCollection::ActionCollection(QObject *parent) : QObject(parent
)
+
void ActionCollection::addActions(const std::vector<std::pair<QString, Action*>>& actions
)
{
{
- _connectTriggered = _connectHovered = false;
+ for (auto&& p : actions) {
+ addAction(p.first, p.second);
+ }
}
}
+#ifndef HAVE_KDE
-void ActionCollection::clear()
+int ActionCollection::count() const
{
{
- _actionByName.clear();
- qDeleteAll(_actions);
- _actions.clear();
+ return actions().count();
}
}
-
-QAction *ActionCollection::action(const QString &name) const
+bool ActionCollection::isEmpty() const
{
{
- return
_actionByName.value(name, 0
);
+ return
actions().count(
);
}
}
-
-QList<QAction *> ActionCollection::actions() const
+void ActionCollection::clear()
{
{
- return _actions;
+ _actionByName.clear();
+ qDeleteAll(_actions);
+ _actions.clear();
}
}
-
-Action *ActionCollection::addAction(const QString &name, Action *action)
+QAction* ActionCollection::action(const QString& name) const
{
{
- QAction *act = addAction(name, static_cast<QAction *>(action));
- Q_UNUSED(act);
- Q_ASSERT(act == action);
- return action;
+ return _actionByName.value(name, 0);
}
}
-
-Action *ActionCollection::addAction(const QString &name, const QObject *receiver, const char *member)
+QList<QAction*> ActionCollection::actions() const
{
{
- auto *a = new Action(this);
- if (receiver && member)
- connect(a, SIGNAL(triggered(bool)), receiver, member);
- return addAction(name, a);
+ return _actions;
}
}
-
-QAction *ActionCollection::addAction(const QString &name, QAction *action)
+QAction* ActionCollection::addAction(const QString& name, QAction* action)
{
if (!action)
return action;
{
if (!action)
return action;
@@
-88,13
+78,13
@@
QAction *ActionCollection::addAction(const QString &name, QAction *action)
else
action->setObjectName(indexName);
if (indexName.isEmpty())
else
action->setObjectName(indexName);
if (indexName.isEmpty())
- indexName = indexName.
sprintf("unnamed-%p", (void
*)action);
+ indexName = indexName.
asprintf("unnamed-%p", (void
*)action);
// do we already have this action?
if (_actionByName.value(indexName, 0) == action)
return action;
// or maybe another action under this name?
// do we already have this action?
if (_actionByName.value(indexName, 0) == action)
return action;
// or maybe another action under this name?
- if (QAction
*
oldAction = _actionByName.value(indexName))
+ if (QAction
*
oldAction = _actionByName.value(indexName))
takeAction(oldAction);
// do we already have this action under a different name?
takeAction(oldAction);
// do we already have this action under a different name?
@@
-108,33
+98,31
@@
QAction *ActionCollection::addAction(const QString &name, QAction *action)
_actionByName.insert(indexName, action);
_actions.append(action);
_actionByName.insert(indexName, action);
_actions.append(action);
- foreach
(QWidget *
widget, _associatedWidgets) {
+ foreach
(QWidget*
widget, _associatedWidgets) {
widget->addAction(action);
}
widget->addAction(action);
}
- connect(action,
SIGNAL(destroyed(QObject *)), SLOT(actionDestroyed(QObject *))
);
+ connect(action,
&QObject::destroyed, this, &ActionCollection::actionDestroyed
);
if (_connectHovered)
if (_connectHovered)
- connect(action,
SIGNAL(hovered()), SLOT(slotActionHovered())
);
+ connect(action,
&QAction::hovered, this, &ActionCollection::slotActionHovered
);
if (_connectTriggered)
if (_connectTriggered)
- connect(action,
SIGNAL(triggered(bool)), SLOT(slotActionTriggered())
);
+ connect(action,
&QAction::triggered, this, &ActionCollection::slotActionTriggered
);
emit inserted(action);
return action;
}
emit inserted(action);
return action;
}
-
-void ActionCollection::removeAction(QAction *action)
+void ActionCollection::removeAction(QAction* action)
{
delete takeAction(action);
}
{
delete takeAction(action);
}
-
-QAction *ActionCollection::takeAction(QAction *action)
+QAction* ActionCollection::takeAction(QAction* action)
{
if (!unlistAction(action))
return nullptr;
{
if (!unlistAction(action))
return nullptr;
- foreach
(QWidget *
widget, _associatedWidgets) {
+ foreach
(QWidget*
widget, _associatedWidgets) {
widget->removeAction(action);
}
widget->removeAction(action);
}
@@
-142,27
+130,25
@@
QAction *ActionCollection::takeAction(QAction *action)
return action;
}
return action;
}
-
void ActionCollection::readSettings()
{
ShortcutSettings s;
QStringList savedShortcuts = s.savedShortcuts();
void ActionCollection::readSettings()
{
ShortcutSettings s;
QStringList savedShortcuts = s.savedShortcuts();
- foreach
(const QString &
name, _actionByName.keys()) {
+ foreach
(const QString&
name, _actionByName.keys()) {
if (!savedShortcuts.contains(name))
continue;
if (!savedShortcuts.contains(name))
continue;
- auto
*action = qobject_cast<Action
*>(_actionByName.value(name));
+ auto
* action = qobject_cast<Action
*>(_actionByName.value(name));
if (action)
action->setShortcut(s.loadShortcut(name), Action::ActiveShortcut);
}
}
if (action)
action->setShortcut(s.loadShortcut(name), Action::ActiveShortcut);
}
}
-
void ActionCollection::writeSettings() const
{
ShortcutSettings s;
void ActionCollection::writeSettings() const
{
ShortcutSettings s;
- foreach
(const QString &
name, _actionByName.keys()) {
- auto
*action = qobject_cast<Action
*>(_actionByName.value(name));
+ foreach
(const QString&
name, _actionByName.keys()) {
+ auto
* action = qobject_cast<Action
*>(_actionByName.value(name));
if (!action)
continue;
if (!action->isShortcutConfigurable())
if (!action)
continue;
if (!action->isShortcutConfigurable())
@@
-173,32
+159,29
@@
void ActionCollection::writeSettings() const
}
}
}
}
-
void ActionCollection::slotActionTriggered()
{
void ActionCollection::slotActionTriggered()
{
- auto
*action = qobject_cast<QAction
*>(sender());
+ auto
* action = qobject_cast<QAction
*>(sender());
if (action)
emit actionTriggered(action);
}
if (action)
emit actionTriggered(action);
}
-
void ActionCollection::slotActionHovered()
{
void ActionCollection::slotActionHovered()
{
- auto
*action = qobject_cast<QAction
*>(sender());
+ auto
* action = qobject_cast<QAction
*>(sender());
if (action)
emit actionHovered(action);
}
if (action)
emit actionHovered(action);
}
-
-void ActionCollection::actionDestroyed(QObject *obj)
+void ActionCollection::actionDestroyed(QObject* obj)
{
// remember that this is not an QAction anymore at this point
{
// remember that this is not an QAction anymore at this point
- auto
*action = static_cast<QAction
*>(obj);
+ auto
* action = static_cast<QAction
*>(obj);
unlistAction(action);
}
unlistAction(action);
}
-void ActionCollection::connectNotify(const QMetaMethod
&
signal)
+void ActionCollection::connectNotify(const QMetaMethod
&
signal)
{
if (_connectHovered && _connectTriggered)
return;
{
if (_connectHovered && _connectTriggered)
return;
@@
-206,78
+189,72
@@
void ActionCollection::connectNotify(const QMetaMethod &signal)
if (QMetaMethod::fromSignal(&ActionCollection::actionHovered) == signal) {
if (!_connectHovered) {
_connectHovered = true;
if (QMetaMethod::fromSignal(&ActionCollection::actionHovered) == signal) {
if (!_connectHovered) {
_connectHovered = true;
- foreach(QAction* action, actions())
-
connect(action, SIGNAL(hovered()), SLOT(slotActionHovered())
);
+ foreach
(QAction* action, actions())
+
connect(action, &QAction::hovered, this, &ActionCollection::slotActionHovered
);
}
}
else if (QMetaMethod::fromSignal(&ActionCollection::actionTriggered) == signal) {
if (!_connectTriggered) {
_connectTriggered = true;
}
}
else if (QMetaMethod::fromSignal(&ActionCollection::actionTriggered) == signal) {
if (!_connectTriggered) {
_connectTriggered = true;
- foreach(QAction* action, actions())
-
connect(action, SIGNAL(triggered(bool)), SLOT(slotActionTriggered())
);
+ foreach
(QAction* action, actions())
+
connect(action, &QAction::triggered, this, &ActionCollection::slotActionTriggered
);
}
}
QObject::connectNotify(signal);
}
}
}
QObject::connectNotify(signal);
}
-
-void ActionCollection::associateWidget(QWidget *widget) const
+void ActionCollection::associateWidget(QWidget* widget) const
{
{
- foreach
(QAction *
action, actions()) {
+ foreach
(QAction*
action, actions()) {
if (!widget->actions().contains(action))
widget->addAction(action);
}
}
if (!widget->actions().contains(action))
widget->addAction(action);
}
}
-
-void ActionCollection::addAssociatedWidget(QWidget *widget)
+void ActionCollection::addAssociatedWidget(QWidget* widget)
{
if (!_associatedWidgets.contains(widget)) {
widget->addActions(actions());
_associatedWidgets.append(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
);
}
}
}
}
-
-void ActionCollection::removeAssociatedWidget(QWidget *widget)
+void ActionCollection::removeAssociatedWidget(QWidget* widget)
{
{
- foreach
(QAction *
action, actions())
- widget->removeAction(action);
+ foreach
(QAction*
action, actions())
+
widget->removeAction(action);
_associatedWidgets.removeAll(widget);
_associatedWidgets.removeAll(widget);
- disconnect(widget,
SIGNAL(destroyed(QObject *)), this, SLOT(associatedWidgetDestroyed(QObject *))
);
+ disconnect(widget,
&QObject::destroyed, this, &ActionCollection::associatedWidgetDestroyed
);
}
}
-
-QList<QWidget *> ActionCollection::associatedWidgets() const
+QList<QWidget*> ActionCollection::associatedWidgets() const
{
return _associatedWidgets;
}
{
return _associatedWidgets;
}
-
void ActionCollection::clearAssociatedWidgets()
{
void ActionCollection::clearAssociatedWidgets()
{
- foreach
(QWidget *
widget, _associatedWidgets)
-
foreach(QAction *
action, actions())
- widget->removeAction(action);
+ foreach
(QWidget*
widget, _associatedWidgets)
+
foreach (QAction*
action, actions())
+
widget->removeAction(action);
_associatedWidgets.clear();
}
_associatedWidgets.clear();
}
-
-void ActionCollection::associatedWidgetDestroyed(QObject *obj)
+void ActionCollection::associatedWidgetDestroyed(QObject* obj)
{
{
- _associatedWidgets.removeAll(static_cast<QWidget
*>(obj));
+ _associatedWidgets.removeAll(static_cast<QWidget*>(obj));
}
}
-
-bool ActionCollection::unlistAction(QAction *action)
+bool ActionCollection::unlistAction(QAction* action)
{
// This might be called with a partly destroyed QAction!
int index = _actions.indexOf(action);
{
// This might be called with a partly destroyed QAction!
int index = _actions.indexOf(action);
- if (index == -1) return false;
+ if (index == -1)
+ return false;
QString name = action->objectName();
_actionByName.remove(name);
QString name = action->objectName();
_actionByName.remove(name);
@@
-288,5
+265,4
@@
bool ActionCollection::unlistAction(QAction *action)
return true;
}
return true;
}
-
#endif /* HAVE_KDE */
#endif /* HAVE_KDE */