1// SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd.
2//
3// SPDX-License-Identifier: GPL-3.0-or-later
4
5#ifndef JSAsynParse_H
6#define JSAsynParse_H
7
8#include "services/project/projectinfo.h"
9
10#include "common/common.h"
11
12#include <QObject>
13#include <QtXml>
14
15class QStandardItem;
16class QAction;
17class JSAsynParsePrivate;
18class JSAsynParse : public QFileSystemWatcher
19{
20 Q_OBJECT
21 friend class JSProjectGenerator;
22 JSAsynParsePrivate *const d;
23public:
24 template<class T>
25 struct ParseInfo{
26 T result;
27 bool isNormal = true;
28 };
29
30 JSAsynParse();
31 virtual ~JSAsynParse();
32
33signals:
34 void itemsModified(const QList<QStandardItem*> &info);
35 void parsedError(const ParseInfo<QString> &info);
36
37public slots:
38 void parseProject(dpfservice::ProjectInfo &info);
39
40private slots:
41 void doDirectoryChanged(const QString &path);
42
43private:
44 void createRows(const QString &path);
45 QString itemDisplayName(const QStandardItem *item) const;
46 QStandardItem *findItem(const QString &path, QStandardItem *parent = nullptr) const;
47 QList<QStandardItem *> rows(const QStandardItem *item) const;
48 int separatorSize() const;
49 void iteratorDirectory(const QString &rootPath);
50 void iteratorFiles(const QString &rootPath);
51};
52
53#endif // JSAsynParse_H
54