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 };