File indexing completed on 2024-05-19 04:47:12
0001 #pragma once 0002 0003 #include <QObject> 0004 #include <QUrl> 0005 0006 #include "models/projectsmodel.h" 0007 0008 class QSettings; 0009 class GlobalSettings : public QObject 0010 { 0011 Q_OBJECT 0012 Q_PROPERTY(QString cloneDir READ cloneDir WRITE setCloneDir NOTIFY cloneDirChanged) 0013 0014 public: 0015 static GlobalSettings *instance() 0016 { 0017 if(!m_instance) 0018 { 0019 m_instance = new GlobalSettings(); 0020 } 0021 0022 return m_instance; 0023 } 0024 0025 QString cloneDir() const; 0026 0027 public Q_SLOTS: 0028 void setCloneDir(QString cloneDir); 0029 0030 Q_SIGNALS: 0031 void cloneDirChanged(QString cloneDir); 0032 0033 private: 0034 GlobalSettings(); 0035 inline static GlobalSettings *m_instance = nullptr; 0036 QSettings *m_settings; 0037 QString m_cloneDir; 0038 }; 0039 0040 class ProjectManager : public QObject 0041 { 0042 Q_OBJECT 0043 Q_PROPERTY(ProjectsModel *projectsModel READ projectsModel FINAL) 0044 // Q_PROPERTY(GlobalSettings* settings READ settings CONSTANT FINAL) 0045 0046 public: 0047 explicit ProjectManager(QObject *parent = nullptr); 0048 0049 ProjectsModel *projectsModel(); 0050 0051 static QUrl projectLogo(const QUrl &url); 0052 static QUrl readmeFile(const QUrl &url); 0053 0054 static FMH::MODEL repoInfo(const QUrl &url); 0055 0056 static GlobalSettings* settings(); 0057 0058 public Q_SLOTS: 0059 /** 0060 * @brief addProject 0061 * Adds an existing local project/repo 0062 * @param url 0063 * Directory path of the repository 0064 */ 0065 void addProject(const QString &url); 0066 0067 /** 0068 * @brief addRemoteProject 0069 * Adds a project/repo that needs to be cloned. 0070 * @param remoteUrl 0071 * Remote url of the reposotory to clone 0072 * @param localUrl 0073 * Where to clone the repository 0074 */ 0075 void addRemoteProject(const QString &remoteUrl, const QString &localUrl); 0076 static bool isGitDir(const QString &url); 0077 0078 private: 0079 ProjectsModel * m_projectsModel; 0080 0081 bool saveHistory(const QUrl &url); 0082 QList<QUrl> loadHistory(); 0083 FMH::MODEL_LIST reposData(const QList<QUrl> &urls); 0084 0085 GlobalSettings* m_settings; 0086 0087 Q_SIGNALS: 0088 0089 }; 0090