-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathnotesmanager.h
151 lines (123 loc) · 4.49 KB
/
notesmanager.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
/*!
* \file notesmanager.h
* \class NotesManager notesmanager.h
* \brief Définit la classe NotesManager : Permet de d'ajouter, supprimer, restaurer une Note. Permet de sauvegarder/charger la session dans/à partir d'un fichier XML.
*
* \details Design Pattern : Singleton et Iterator.
* \a tab_notes : tableau de pointeur de Notes
* \a nbNotes : nombre de notes dans tab_notes
* \a nbMaxNotes : nombre de notes maximales dans tab_notes
* \a instance_NotesManager : Instance static de NotesManager
*/
#ifndef NOTESMANAGER_H
#define NOTESMANAGER_H
#include "note.h"
#include <QString>
#include <QDebug>
#include "iterator.h"
#include "version.h"
#include "relation.h"
#include "notesmanager.h"
#include <Qstring>
#include <QFile>
#include <QXmlStreamWriter>
#include <QXmlStreamReader>
class NotesManager {
private:
Note** tab_notes;
unsigned int nbNotes;
unsigned int nbMaxNotes;
NotesManager();
~NotesManager();
//****** SINGLETON ******
NotesManager(const NotesManager& m){} // empêche recopie pour singleton et composition
NotesManager& operator=(const NotesManager& m){} // empêche affectation et composition
static NotesManager * instance_NotesManager;
public:
/*!
* \fn Note* getNote(const QString& id)
* \brief Cherche une note à partir d'un id.
* @param id : L'id de la note
* @return : Pointeur vers la note
*/
Note* getNote(const QString& id);
/*!
* \fn void ajouterNote(Note* n)
* \brief Fontion pour ajouter des notes
* @param n : Pointeur vers la note à ajouter
*/
void ajouterNote(Note* n);
/*!
* \fn void supprimerNote(Note* oldNote)
* \brief Supprimer une note : change l'état de la note de active à en sursis ou archivé
* @param oldNote : La note à supprimer
*/
void supprimerNote(Note* oldNote);
/*!
* \fn void restaurerNote(const QString & id)
* \brief Restaurer une note : change l'état de la note à active
* @param id : L'id de la note à restaurer
*/
void restaurerNote(const QString & id);
/*!
* \fn bool is_bin_empty()
* \brief Cherche s'il y a des notes supprimées et en sursis
* @return 1 s'il y a des notes en sursis, 0 sinon
*/
bool is_bin_empty();
/*! \fn bool is_archived_in_bin()
* \brief s'il y a des notes supprimées et archivées
* @return 1 s'il y a des notes archivées, 0 sinon
*/
bool is_archived_in_bin();
/*!
* \fn bool is_note_refed(const QString & id)
* \brief si la note est impliquée dans une relation \b Reference
* @param id : id d'une note
* @return 1 si la note est référencée, 0 sinon
*/
bool is_note_refed(const QString & id); //cherche si une note est référencée ou non
/*!
* \class Template method pour la classe Iterator sur une note
*/
class iterator: public Iterator<Note>{
friend class NotesManager;
iterator(Note** c): Iterator(c){}
};
iterator begin() {return iterator(tab_notes);}
iterator end() {return iterator(tab_notes+nbNotes);}
// ********* SINGLETON *************
/*!
* \fn static NotesManager* getInstance()
* @return Pointeur sur l'instance singleton NotesManager
*/
static NotesManager* getInstance();
/*!
* \fn static void libererInstance()
* \brief Libère l'instance singleton NotesManager
*/
static void libererInstance();
/*! \fn void loadNotesManager(const QString & filename)
* \brief Charge les notes à partir d'un fichier XML
* @param filename : Nom du fichier XML à charger
*/
void loadNotesManager(const QString & filename);
/*!
* \fn void saveNotesManager(const QString & filename)
* \brief Enregistre les notes dans un fichier XML
* @param filename : Le nom du fichier XML où les notes seront sauvegardées
*/
void saveNotesManager(const QString & filename);
/*! \fn void saveNotesManager_no_reprieve(const QString & filename)
* \brief Enregistre les notes \b qui ne sont pas en sursis dans un fichier XML
* @param filename : Le nom du fichier XML où les notes seront sauvegardées
*/
void saveNotesManager_no_reprieve(const QString & filename);
/*! \fn bool is_id_taken(const QString &id)
* \brief Cherche si l'id d'une note est unique ou non.
* @param id : L'id de la note
* @return 1 si l'id est déjà pris, 0 sinon
*/
bool is_id_taken(const QString &id);
};
#endif // NOTESMANAGER_H