File indexing completed on 2024-06-02 05:42:16
0001 // SPDX-FileCopyrightText: 2023 Devin Lin <devin@kde.org> 0002 // SPDX-License-Identifier: GPL-2.0-or-later 0003 0004 #pragma once 0005 0006 #include <QObject> 0007 0008 #include "folioapplication.h" 0009 #include "folioapplicationfolder.h" 0010 #include "foliowidget.h" 0011 0012 class FolioApplication; 0013 class FolioApplicationFolder; 0014 class FolioDelegate : public QObject 0015 { 0016 Q_OBJECT 0017 Q_PROPERTY(FolioDelegate::Type type READ type CONSTANT) 0018 Q_PROPERTY(FolioApplication *application READ application CONSTANT) 0019 Q_PROPERTY(FolioApplicationFolder *folder READ folder CONSTANT) 0020 Q_PROPERTY(FolioWidget *widget READ widget CONSTANT) 0021 0022 public: 0023 enum Type { 0024 None, 0025 Application, 0026 Folder, 0027 Widget, 0028 }; 0029 Q_ENUM(Type) 0030 0031 FolioDelegate(QObject *parent = nullptr); 0032 FolioDelegate(FolioApplication *application, QObject *parent); 0033 FolioDelegate(FolioApplicationFolder *folder, QObject *parent); 0034 FolioDelegate(FolioWidget *widget, QObject *parent); 0035 0036 static FolioDelegate *fromJson(QJsonObject &obj, QObject *parent); 0037 0038 virtual QJsonObject toJson() const; 0039 0040 FolioDelegate::Type type(); 0041 FolioApplication *application(); 0042 FolioApplicationFolder *folder(); 0043 FolioWidget *widget(); 0044 0045 protected: 0046 FolioDelegate::Type m_type; 0047 FolioApplication *m_application{nullptr}; 0048 FolioApplicationFolder *m_folder{nullptr}; 0049 FolioWidget *m_widget{nullptr}; 0050 };