-
Notifications
You must be signed in to change notification settings - Fork 0
/
GrafixProject.h
201 lines (139 loc) · 6.19 KB
/
GrafixProject.h
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
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
#ifndef GRAFIXPROJECT_H
#define GRAFIXPROJECT_H
#include "MyConstants.h"
#include "GPMatrixFunctions.h"
#include "DialogGrafixError.h"
#include <QMessageBox>
#include <QDir>
#include <QDebug>
#include <QSettings>
#include <QDateTime>
#include <QList>
#include <QString>
#include <QFileDialog>
#include <armadillo>
using namespace arma;
class GrafixProject;
//typedef struct { QString first; int second; } GrafixConfiguration;
//Class holds participant information as well as methods for
//accessing settings, matrixes, and file names.
class GrafixParticipant
{
public:
//Constructor
GrafixParticipant(GrafixProject* parent, QString directory);
// Paths, names and notes;
QString PATH_ROUGH;
QString EXPE_SEGMETS_PATH;
QString Notes;
//Returns a const pointer to the project
GrafixProject* GetProject() const;
//Returns full path and file name for a given type of matrix
QString GetMatrixPath(Consts::MATRIX_TYPE type) const;
//Returns participant.ini with full path
QString GetParticipantSettingsPath();
//Returns a setting from the participant setting (use MyConstants.SETTINGS_...)
QVariant GetParticipantSetting(QString setting);
//Sets a setting from the participant setting (use MyConstants.SETTINGS_...)
void SetParticipantSetting(QString setting, QVariant value);
//Returns a setting from the participant setting (use MyConstants.SETTINGS_...)
QVariant GetProjectSetting(QString setting);
//Sets a setting from the participant setting (use MyConstants.SETTINGS_...)
void SetProjectSetting(QString setting, QVariant value);
//Returns true if participant has matrix data for a given type
bool HasDataMatrix(Consts::MATRIX_TYPE type);
//Returns true if participant has a settings file
bool HasSettings();
//Returns true if participant has a valid directory
bool HasDirectory();
//Saves paths, name and notes
void SaveSettings();
//Loads paths name and notes
void LoadSettings();
//Deletes entire participant directory
void DeleteDirectory();
//Gets directory name relative to project path
QString GetRelativeDirectory() const;
//Gets full path to directory
QString GetFullDirectory() const;
//Returns a path relative to the participant directory
QString GetRelativePath(QString path);
//Returns a path relative to participant directory,
//after checking CSV is ok, and offering to copy it.
QString OpenAndCopyCSVFile(Consts::MATRIX_TYPE type,
QWidget *parent,
QString title,
QString filter);
//Renames participant and all files
bool Rename(QString new_name);
QString GetName();
private:
GrafixProject* _project;
QString _participantdirectory;
QString _name;
};
//class holds all participant objects, and provides methods to save
//project wide settings, and create new projects etc
class GrafixProject
{
friend class GrafixParticipant;
public:
//Constructor / destructor
GrafixProject();
~GrafixProject();
//Returns pointer to a specific participant at a certain id
GrafixParticipant * GetParticipant(int id);
//Adds and returns a participant to project using existing_directory
GrafixParticipant* AddParticipant(QString existing_directory);
//Checks that a participant exists
bool HasParticipant(int pos);
//Adds a participant at a certain position
void AddParticipant(int position);
//Removes a particiapnt at a certain position
void RemoveParticipant(int position);
//Returns the number of particiapnts
int numParticipants();
//Replaces participant in a certain position - can lead to duplication
//void ReplaceParticipant(int position, GrafixParticipant * participant);
//Creates a new blank project with directory (you must first check it exists)
void NewBlankProject(QString dir);
//Creates a blank project from an existing directory structure
// - give _parent for dialog boxes
void NewProjectFromExistingDirectory(QString dir, QWidget* _parent);
//Returns true if _directory exists
bool HasDirectory();
//Returns _directory
QString GetFullDirectory();
//Returns true if project has a settings file
bool HasSettings();
//Saves all project settings related to participants
void SaveSettings();
//Loads all participants and their settings
bool LoadProjectSettings(QString d);
//Returns full path to project.ini
QString GetProjectSettingsPath() const;
//Gets a project.ini setting
QVariant GetProjectSetting(QString setting, GrafixConfiguration configuration) const;
//Gets a project.ini setting froma custom path
QVariant GetProjectSetting(QString setting, GrafixConfiguration configuration, QString path) const;
//Sets a project.ini setting
void SetProjectSetting(QString setting, GrafixConfiguration configuration, QVariant value);
//Gets a setting from a custom settings file
void SetProjectSetting(QString setting, GrafixConfiguration configuration, QVariant value, QString path);
//Saves a new configuration
void SaveConfiguration(GrafixConfiguration configuration);
//Loads a new configuration
void ActivateConfiguration(GrafixConfiguration configuration);
//gets all configurations
QList<GrafixConfiguration> *GetConfigurations();
private:
QList<GrafixConfiguration> _configurations;
QList<GrafixParticipant> _participants;
QString _directory;
GrafixConfiguration _active_configuration;
//deletes all participant objects and clears list
void cleanParticipants();
//Copies a configuration to a new slot
void CopyConfiguration(GrafixConfiguration from, GrafixConfiguration to);
};
#endif // GRAFIXPROJECT_H