玉兔远程控制 0.1.0-bate8
载入中...
搜索中...
未找到
FavoriteDatabase.h
1// Author: Kang Lin <kl222@126.com>
2
3#pragma once
4
5#include <QObject>
6#include <QDateTime>
7#include <QIcon>
8#include "DatabaseTree.h"
9
15{
16 Q_OBJECT
17
18public:
19 explicit CFavoriteDatabase(QObject *parent = nullptr);
20
21 struct Item {
22 int id; // is the id of tree table
23 int parentId;
24 QString szName;
25 QIcon icon;
26 QString szFile;
27 QString szDescription;
28 TreeItem::TYPE type;
29 explicit Item(TreeItem::TYPE t = TreeItem::Node)
30 : id(0)
31 , parentId(0)
32 , type(t)
33 {}
34 QIcon GetIcon() {
35 if(!icon.isNull())
36 return icon;
37 if(isFolder())
38 return QIcon::fromTheme("folder");
39 return QIcon::fromTheme("file");
40 }
41 bool isFolder() const { return type == TreeItem::Node; }
42 bool isFavorite() const { return type == TreeItem::Leaf; }
43 // 添加有效性检查
44 bool isValid() const {
45 return id > 0 || !szFile.isEmpty();
46 }
47 };
48
49 int AddFavorite(const QString &szFile, const QString& szName,
50 const QIcon &icon, const QString szDescription,
51 int parentId = 0);
52 bool UpdateFavorite(int id, const QString& szName = QString(),
53 const QIcon &icon = QIcon(),
54 const QString szDescription = QString());
55 bool UpdateFavorite(const QString& szFile, const QString& szName = QString(),
56 const QIcon &icon = QIcon(),
57 const QString szDescription = QString());
58 Item GetFavorite(int id);
59 QList<Item> GetFavorite(const QString &szFile);
60 Item GetGroup(int id);
61 QList<Item> GetChildren(int parentId);
62
63private:
64 bool OnInitializeDatabase() override;
65 bool OnInitializeSqliteDatabase() override;
66 bool OnInitializeMySqlDatabase() override;
67 CDatabaseIcon m_IconDB;
68 CDatabaseFile m_FileDB;
69
70 // CDatabaseTree interface
71protected:
72 virtual bool OnDeleteKey(int key) override;
73 virtual bool ExportToJson(QJsonObject &obj) override;
74 virtual bool ImportFromJson(const QJsonObject &obj) override;
75private:
76 bool ExportToJson(int parentId, QJsonArray& obj);
77 bool ImportFromJson(int parentId, const QJsonArray& obj);
78};
79
80Q_DECLARE_METATYPE(CFavoriteDatabase::Item)
File database
Definition Database.h:164
Icon database
Definition Database.h:129
The CDatabaseTree class
The CFavoriteDatabase class
bool OnInitializeDatabase() override
Initialize database
virtual bool OnDeleteKey(int key) override
从 key 相关的表中删除 key