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