X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fuisupport%2Factioncollection.h;h=71e0195577af270ec69ff9ebcca11f2703580328;hp=a76fc04a0329dda815dbcf26ac121da3ce855ce3;hb=f9efdde7f3a6004af8f834c409cfa6ae1d877692;hpb=1cb02004ee5973b89368bd84f234d4652794690d diff --git a/src/uisupport/actioncollection.h b/src/uisupport/actioncollection.h index a76fc04a..71e01955 100644 --- a/src/uisupport/actioncollection.h +++ b/src/uisupport/actioncollection.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2015 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,10 +20,16 @@ * This is a subset of the API of KDE's KActionCollection. * ***************************************************************************/ -#ifndef ACTIONCOLLECTION_H_ -#define ACTIONCOLLECTION_H_ +#pragma once -#ifndef HAVE_KDE4 +#include "uisupport-export.h" + +#include +#include + +#ifdef HAVE_KDE +# include +#endif #include #include @@ -36,14 +42,24 @@ class QWidget; class Action; class QAction; -class 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); - virtual ~ActionCollection(); + 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(); @@ -65,42 +81,24 @@ public: 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 = 0, const char *member = 0); 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 = 0, const char *member = 0) - { - ActionType *a = new ActionType(this); - if (receiver && member) - connect(a, SIGNAL(triggered(bool)), receiver, member); - addAction(name, a); - return a; - } - - signals: void inserted(QAction *action); void actionHovered(QAction *action); void actionTriggered(QAction *action); protected slots: -#if QT_VERSION >= 0x050000 - virtual void connectNotify(const QMetaMethod &signal); -#else - virtual void connectNotify(const char *signal); -#endif + void connectNotify(const QMetaMethod &signal) override; virtual void slotActionTriggered(); private slots: @@ -115,27 +113,8 @@ private: QList _actions; QList _associatedWidgets; - bool _connectHovered; - bool _connectTriggered; -}; - + bool _connectHovered{false}; + bool _connectTriggered{false}; -int ActionCollection::count() const { return actions().count(); } -bool ActionCollection::isEmpty() const { return actions().count(); } - -#else /* HAVE_KDE4 */ - -#include - -class ActionCollection : public KActionCollection -{ - Q_OBJECT - -public: - explicit ActionCollection(QObject *parent) : KActionCollection(parent) {}; +#endif /* HAVE_KDE */ }; - - -#endif - -#endif