-
Notifications
You must be signed in to change notification settings - Fork 2
/
TagManager.cpp
99 lines (81 loc) · 1.64 KB
/
TagManager.cpp
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
#include "TagManager.h"
#include "Tag.h"
#include <QSet>
#include "Note.h"
#include <QDebug>
//méthodes pour le singleton
TagManager* TagManager::instance=0;
TagManager::TagManager()
{
Tags.clear();
}
TagManager::~TagManager()
{
Tags.clear();
}
TagManager& TagManager::getInstance()
{
if(!instance)
{
instance= new TagManager;
}
return *instance;
}
void TagManager::libereInstance()
{
if(instance)
{
delete instance;
instance=0;
}
}
//on passe au chose sérieuse
QSet<Tag*> TagManager::getTags()
{
return Tags;
}
Tag* TagManager::createTag(const QString& n)
{
Tag *t = new Tag(n);
Tags << t;
return t;
}
void TagManager::addTagToNote(Tag* tag, Note* note)
{
note->addTag(tag);
tag->addNote(note);
}
void TagManager::removeTag(Tag* t)
{
for(QSet<Note*>::iterator it = t->getAssocs().begin(); it != t->getAssocs().end(); it++)
{
(*it)->removeTag(t);
}
t->reset();
Tags.remove(t);
}
QSet<Note *>& TagManager::getNotesforTag(Tag* tag)
{
return tag->getAssocs();
}
const QSet<Tag*>& TagManager::getTagforNote(Note *note)
{
return note->getTags();
}
void TagManager::removeTagForNote(Tag *tag, Note *note)
{
tag->removeNote(note);
note->removeTag(tag);
}
Tag* TagManager::getTag(const QString& newtag)
{
for(tagSetIt it= begin(); it != end(); it++)
{
if((*it)->getName()==newtag) {
qDebug()<<"Gotcha!";
return *it;
}
}
qDebug()<<"created Tag: " << newtag;
return createTag(newtag);
}