-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathproject.h
More file actions
159 lines (113 loc) · 4.17 KB
/
project.h
File metadata and controls
159 lines (113 loc) · 4.17 KB
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
#ifndef PROJECT_H
#define PROJECT_H
#include <QString>
#include <QtCore>
#include <QTime>
#include <QTextStream>
#include <QDateTime>
#include <QtXml>
#include "version.h"
#include "objectinfo.h"
#include "utils.cpp"
#include "flags.cpp"
/// Rappresenta il tipo di progetto
enum ProjectType{
Library,
Module,
Complete
};
/// Rappresenta un progetto nell' ambiente
class Project : public ObjectInfo
{
public:
Project();
Project(QString path, QString name, ProjectType type, bool create_info_file = true);
/// Imposta il nome del progetto
void setName(QString n);
/// Imposta il percorso del progetto
void setPath(QString pt);
/// Imposta il tipo di progetto
void setType(ProjectType ty);
/// Determina se creare un file di informazioni
void setInfoFile(bool info_file);
/// Effettua il salvataggio del progetto
void save();
/// Crea il progetto
bool create();
/// Carica un progetto dal file sistem
static Project* loadFromDisk(QString file_path);
/// Restituisce il nome del progetto
QString getName();
/// Restituisce il percorso in cui è creato il progetto
QString getPath();
/// Restituisce il percorso del file di progetto
QString getFilePath();
/// Restituisce il percorso in cui vengono create le versioni, dove vengono scritte le informazioni del progetto etc.
QString getHomePath();
/// Determina se il progetto è stato salvato
bool isSaved();
/// Aggiunge una versione al progetto
bool addVersion(Version *ver);
/// Aggiunge una versione al progetto all' indice specificato da indexIn
bool addVersion(Version *ver, unsigned int indexIn);
/// Imposta la versione master da cui copiare
bool setMasterVersion(Version *ver);
/// Rimuove la versione senza cancellarla dalla memoria
bool removeVersion(unsigned int index);
/// Rimuove la prima versione con l'id associato
bool removeVersion(QString id);
/// Cancella una versione dal disco, dalla memoria ed esegue il flush delle versioni rimanenti
bool deleteVersion(unsigned int index);
/// Restituisce la versione
Version* getVersion(unsigned int index);
/// Restituisce la versione che ha quell' id
Version *getVersion(QString id);
/// Restituisce l'indice della prima versione con quell' id
unsigned int getVersionIndex(QString id);
/// Restituisce il numero di versioni nel progetto
int getVersionCount();
/// Restituisce la versione principale
Version* getMasterVersion();
/// Determina se nel progetto è presente una versione master
bool hasMaster();
/// Determina se esiste già una versione con quel numero
bool existsVersion(QString numericId);
/// Determina se esiste una versione con quell' indice
bool existsVersion(unsigned int number);
/// Restituisce l'ultima versione del progetto
Version* getLastVersion();
/// Cancella tutte le versioni impostandone tutti i puntatori a nullptr
void clearAll(bool fromDisk = false);
private:
// versioni contenute
Version *subVersions[100];
// versione master
Version *masterVersion = nullptr;
// Progetti contenuti
//SubProject *subProjects;
// nome del progetto
QString name;
// percorso del progetto
QString path;
// Percorso in cui si trovano le versioni e il file di progetto
QString home_path;
// tipo di progetto
ProjectType type;
// Definisce se il progetto è stato salvato
bool saved = false;
// numero di versioni create all' interno
unsigned int versions_num = 0;
/// Crea il file di progetto
bool createProjectFile();
/// Crea la cartella di progetto
bool createProjectFolder();
/// Crea il file di annotazioni
bool createProjectAnnotations();
/// Cerca e imposta le informazioni del progetto a partire da un nome di parametro e un valore
bool searchProjectProperty(QString current_line);
/// Cerca e imposta le informazioni delle annotazioni a partire da un nome di parametro e un valore
bool searchAnnotationProperty(QString current_line);
// determina se il progetto ha un file di informazioni
bool infoFile;
};
#endif // PROJECT_H