1// SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd.
2//
3// SPDX-License-Identifier: GPL-3.0-or-later
4
5#ifndef TEXTEDITKEEPER_H
6#define TEXTEDITKEEPER_H
7
8#include "textedittabwidget/textedit.h"
9#include "services/project/projectinfo.h"
10#include <framework/service/qtclassfactory.h>
11#include <framework/service/qtclassmanager.h>
12
13class TextEditKeeper final
14{
15 dpf::QtClassFactory<TextEdit> editFactory;
16 QString analysedLanguage;
17 QString analysedWorkspace;
18 QString analysedStorage;
19 AnalysedData data;
20 dpfservice::ProjectInfo proInfo;
21 TextEditKeeper(){}
22
23 inline static TextEditKeeper *instance(){
24 static TextEditKeeper ins;
25 return &ins;
26 }
27
28public:
29
30 template<class Edit>
31 static bool impl(const QString &language = Edit::implLanguage(), QString *err = nullptr) {
32 bool result = true;
33 result &= instance()->editFactory.regClass<Edit>(language, err);
34 return result;
35 }
36
37 static TextEdit *create(const QString &language, QString *err = nullptr);
38
39 static void setAnalysedLanguage(const QString &lang);
40 static QString getAnalysedLanguage();
41
42 static void setAnalysedWorkspace(const QString &workspace);
43 static QString getAnalysedWorkspace();
44
45 static void setAnalysedStorage(const QString &storage);
46 static QString getAnalysedStorage();
47
48 static void setAnalysedData(const AnalysedData &data);
49 static AnalysedData analysedData();
50 static void cleanAnalysedData();
51
52 static QString userActionAnalyseTitle();
53 static QString getTokenTypeAnnLine(const QString &tokenType, const QString &displayText);
54
55 static dpfservice::ProjectInfo projectInfo();
56 static void saveProjectInfo(const dpfservice::ProjectInfo &info);
57 static void removeProjectInfo(const dpfservice::ProjectInfo &info);
58};
59
60#endif // TEXTEDITKEEPER_H
61