X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fuisupport%2Factioncollection.h;h=29954ae51925332c9dad1d5f2e68c84f5c49a5c9;hp=d26c3577c3ba96d6fa2a55aa33e778159d9c7f26;hb=cc6e7c08709c4e761e2fd9c2e322751015497003;hpb=c194ed5fb3d15e14b9364f9796d3521910dc72fe diff --git a/src/uisupport/actioncollection.h b/src/uisupport/actioncollection.h index d26c3577..29954ae5 100644 --- a/src/uisupport/actioncollection.h +++ b/src/uisupport/actioncollection.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2018 by the Quassel Project * + * Copyright (C) 2005-2019 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -24,7 +24,12 @@ #include "uisupport-export.h" -#ifndef HAVE_KDE +#include +#include + +#ifdef HAVE_KDE +# include +#endif #include #include @@ -37,13 +42,24 @@ class QWidget; class Action; class QAction; -class UISUPPORT_EXPORT ActionCollection : public QObject +#ifdef HAVE_KDE +using ActionCollectionParent = KActionCollection; +#else +using ActionCollectionParent = QObject; +#endif + +class UISUPPORT_EXPORT ActionCollection : public ActionCollectionParent { Q_OBJECT public: - explicit ActionCollection(QObject *parent); + using ActionCollectionParent::ActionCollectionParent; + // Convenience function that takes a list of Actions + void addActions(const std::vector>& actions); + +// Everything else is defined in KActionCollection +#ifndef HAVE_KDE /// Clears the entire action collection, deleting all actions. void clear(); @@ -51,83 +67,54 @@ public: /** Not that this only adds all current actions in the collection to that widget; * subsequently added actions won't be added automatically. */ - void associateWidget(QWidget *widget) const; + void associateWidget(QWidget* widget) const; /// Associate all actions in this collection to the given \a widget. /** Subsequently added actions will be automagically associated with this widget as well. */ - void addAssociatedWidget(QWidget *widget); + void addAssociatedWidget(QWidget* widget); - void removeAssociatedWidget(QWidget *widget); - QList associatedWidgets() const; + void removeAssociatedWidget(QWidget* widget); + QList associatedWidgets() const; void clearAssociatedWidgets(); void readSettings(); void writeSettings() const; - inline int count() const; - inline bool isEmpty() const; + int count() const; + bool isEmpty() const; - QAction *action(int index) const; - QAction *action(const QString &name) const; - QList actions() const; - - QAction *addAction(const QString &name, QAction *action); - Action *addAction(const QString &name, Action *action); - Action *addAction(const QString &name, const QObject *receiver = nullptr, const char *member = nullptr); - void removeAction(QAction *action); - QAction *takeAction(QAction *action); - - /// Create new action under the given name, add it to the collection and connect its triggered(bool) signal to the specified receiver. - template - ActionType *add(const QString &name, const QObject *receiver = nullptr, const char *member = nullptr) - { - ActionType *a = new ActionType(this); - if (receiver && member) - connect(a, SIGNAL(triggered(bool)), receiver, member); - addAction(name, a); - return a; - } + QAction* action(int index) const; + QAction* action(const QString& name) const; + QList actions() const; + QAction* addAction(const QString& name, QAction* action); + void removeAction(QAction* action); + QAction* takeAction(QAction* action); signals: - void inserted(QAction *action); - void actionHovered(QAction *action); - void actionTriggered(QAction *action); + void inserted(QAction* action); + void actionHovered(QAction* action); + void actionTriggered(QAction* action); protected slots: - void connectNotify(const QMetaMethod &signal) override; + void connectNotify(const QMetaMethod& signal) override; virtual void slotActionTriggered(); private slots: void slotActionHovered(); - void actionDestroyed(QObject *); - void associatedWidgetDestroyed(QObject *); + void actionDestroyed(QObject*); + void associatedWidgetDestroyed(QObject*); private: - bool unlistAction(QAction *); - - QMap _actionByName; - QList _actions; - QList _associatedWidgets; - - bool _connectHovered; - bool _connectTriggered; -}; - - -int ActionCollection::count() const { return actions().count(); } -bool ActionCollection::isEmpty() const { return actions().count(); } + bool unlistAction(QAction*); -#else /* HAVE_KDE */ -# include + QMap _actionByName; + QList _actions; + QList _associatedWidgets; -class ActionCollection : public KActionCollection -{ - Q_OBJECT - -public: - explicit ActionCollection(QObject *parent) : KActionCollection(parent) {}; -}; + bool _connectHovered{false}; + bool _connectTriggered{false}; #endif /* HAVE_KDE */ +};