File indexing completed on 2024-06-09 05:30:55

0001 /*
0002     SPDX-FileCopyrightText: 2012 Aurélien Gâteau <agateau@kde.org>
0003     SPDX-FileCopyrightText: 2014-2015 Eike Hein <hein@kde.org>
0004 
0005     SPDX-License-Identifier: GPL-2.0-or-later
0006 */
0007 
0008 #pragma once
0009 
0010 #include "abstractmodel.h"
0011 
0012 #include <QUrl>
0013 
0014 class AbstractEntry
0015 {
0016 public:
0017     explicit AbstractEntry(AbstractModel *owner);
0018     virtual ~AbstractEntry();
0019 
0020     enum EntryType {
0021         RunnableType,
0022         GroupType,
0023         SeparatorType,
0024     };
0025 
0026     virtual EntryType type() const = 0;
0027 
0028     AbstractModel *owner() const;
0029 
0030     virtual bool isValid() const;
0031 
0032     virtual QString icon() const;
0033     virtual QString name() const;
0034     virtual QString group() const;
0035     virtual QString description() const;
0036 
0037     virtual QString id() const;
0038     virtual QUrl url() const;
0039 
0040     virtual bool hasChildren() const;
0041     virtual AbstractModel *childModel() const;
0042 
0043     virtual bool hasActions() const;
0044     virtual QVariantList actions() const;
0045 
0046     virtual bool run(const QString &actionId = QString(), const QVariant &argument = QVariant());
0047 
0048 protected:
0049     AbstractModel *m_owner;
0050 };
0051 
0052 class AbstractGroupEntry : public AbstractEntry
0053 {
0054 public:
0055     explicit AbstractGroupEntry(AbstractModel *owner);
0056 
0057     EntryType type() const override
0058     {
0059         return GroupType;
0060     }
0061 };
0062 
0063 class SeparatorEntry : public AbstractEntry
0064 {
0065 public:
0066     explicit SeparatorEntry(AbstractModel *owner);
0067 
0068     EntryType type() const override
0069     {
0070         return SeparatorType;
0071     }
0072 };