aboutsummaryrefslogtreecommitdiffstats
path: root/SQLiteStudio3/guiSQLiteStudio/windows/sqliteextensioneditormodel.h
blob: 085edd9684f3a995fc260fd9b9162a9d0e05b7fa (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#ifndef SQLITEEXTENSIONEDITORMODEL_H
#define SQLITEEXTENSIONEDITORMODEL_H

#include "guiSQLiteStudio_global.h"
#include "services/sqliteextensionmanager.h"
#include <QIcon>
#include <QHash>
#include <QAbstractListModel>

class GUI_API_EXPORT SqliteExtensionEditorModel : public QAbstractListModel
{
    Q_OBJECT

    public:
        using QAbstractItemModel::setData;

        explicit SqliteExtensionEditorModel(QObject* parent = nullptr);

        void clearModified();
        bool isModified() const;
        bool isModified(int row) const;
        void setModified(int row, bool modified);
        QString getName(int row) const;
        void setName(int row, const QString& name);
        void setFilePath(int row, const QString& filePath);
        QString getFilePath(int row) const;
        void setInitFunction(int row, const QString& initFunc);
        QString getInitFunction(int row) const;
        void setAllDatabases(int row, bool allDatabases);
        bool getAllDatabases(int row) const;
        void setDatabases(int row, const QStringList& databases);
        QStringList getDatabases(int row);
        bool isValid(int row) const;
        void setValid(int row, bool valid);
        bool isValid() const;
        void setData(const QList<SqliteExtensionManager::ExtensionPtr>& extensions);
        void addExtension(const SqliteExtensionManager::ExtensionPtr& extension);
        void deleteExtension(int row);
        QList<SqliteExtensionManager::ExtensionPtr> getExtensions() const;
        bool isValidRowIndex(int row) const;

        int rowCount(const QModelIndex& parent = QModelIndex()) const;
        QVariant data(const QModelIndex& index, int role) const;

    private:
        struct Extension
        {
            Extension();
            Extension(const SqliteExtensionManager::ExtensionPtr& other);

            SqliteExtensionManager::ExtensionPtr data;
            QString name;
            bool modified = false;
            bool valid = true;
        };

        void emitDataChanged(int row);

        QList<Extension*> extensionList;
        QList<Extension*> originalExtensionList;
        QHash<QString, QIcon> langToIcon;
        bool listModified = false;
};

#endif // SQLITEEXTENSIONEDITORMODEL_H