[doc_tool] Added ability to mark all chapters at once as done.
[hsd_doku_tool.git] / src / Controller.cxx
1 ///////////////////////////////////////////////////////////////////////////
2 // Workfile: Controller.cxx
3 // Author: Daniel Giritzer <daniel@giritzer.eu>
4 // Date: 26.04.2018
5 // Description: Diese Klasse implementiert das Controller Interface und stellt
6 //              einem Vier alle Funktionen, um Daten an ein Model zu senden,
7 //              zur Verf├╝gung.
8 // Remarks: -
9 ///////////////////////////////////////////////////////////////////////////
10 #include "Controller.h"
11 #include "View.h"
12 #include "Author.h"
13 #include <memory>
14 #include <iostream>
15
16 Controller::Controller(std::shared_ptr<Model> model)
17 {
18     mModel = model;
19 }
20
21 void Controller::setTemplate(const std::string &docTemplate)
22 {
23     mModel->setTemplFile(docTemplate);
24     mModel->notifyObservers();
25 }
26
27 void Controller::selectedChapter(int chapt)
28 {
29     mModel->loadChapter(chapt);
30     mModel->notifyObservers();
31 }
32
33 void Controller::selectedAuthor(int auth)
34 {
35     mModel->loadAuthor(auth);
36     mModel->notifyObservers();
37 }
38
39 void Controller::setCurrentChapterFinished(bool val)
40 {
41     mModel->getSelChapter()->SetDone(val);
42     mModel->notifyObservers();
43 }
44
45 void Controller::setAllChaptersFinished(bool val)
46 {
47
48     for(auto curChapt : mModel->getChapters())
49         curChapt->SetDone(val);
50
51     mModel->notifyObservers();
52 }
53
54 void Controller::saveAuthor(const std::string &name, const std::string &id, const std::string &estTime, const std::string &neededTime)
55 {
56     mModel->getSelAuthor()->SetName(name);
57     mModel->getSelAuthor()->SetID(id);
58     mModel->getSelAuthor()->SetTimeEstimated(estTime);
59     mModel->getSelAuthor()->SetTimeSpent(neededTime);
60     mModel->notifyObservers();
61 }
62
63
64 void Controller::saveContent(const std::string &text)
65 {
66     mModel->getSelChapter()->SetContent(text);
67 }
68
69 void Controller::saveAllWrittenTextsToFiles()
70 {
71     mModel->saveChaptersToFiles();
72 }
73
74 void Controller::addChapter(const std::string &chaptName, const std::string &outFileName, int chaptType, int chaptHiearachy)
75 {
76
77     mModel->chapterInsertBack(chaptName, outFileName, chaptType, chaptHiearachy);
78     mModel->notifyObservers();
79 }
80
81 void Controller::updateChapter(const std::string &chaptName, const std::string &outFileName, int chaptHiearachy)
82 {
83     mModel->getSelChapter()->SetPrettyName(chaptName);
84     mModel->getSelChapter()->SetOutFileName(outFileName);
85     mModel->getSelChapter()->SetHierachy(chaptHiearachy);
86     mModel->notifyObservers();
87 }
88
89 void Controller::remChapter()
90 {
91     mModel->chapterRemove();
92     mModel->notifyObservers();
93 }
94
95 void Controller::remAuthor()
96 {
97     mModel->authorRemove();
98     mModel->notifyObservers();
99 }
100
101 void Controller::addAuthor()
102 {
103     mModel->authorInsertBack();
104     mModel->notifyObservers();
105 }
106
107 void Controller::upChapter()
108 {
109     mModel->chapterUp();
110     mModel->notifyObservers();
111 }
112
113 void Controller::downChapter()
114 {
115     mModel->chapterDown();
116     mModel->notifyObservers();
117 }
118
119 void Controller::setOutDir(const std::string &outDir)
120 {
121     mModel->setOutPath(outDir);
122     mModel->notifyObservers();
123 }
124
125 void Controller::generateDocument()
126 {
127     mModel->generateDocument();
128 }
129
130 void Controller::saveCoverSheet(const std::string &file)
131 {
132     mModel->setCovSheet(file);
133     mModel->notifyObservers();
134 }
135
136 void Controller::saveAuthorCoordinates(int xName, int yName, int xID, int yID, int xEstTime, int yEstTime, int xNeededTime, int yNeededTime)
137 {
138     mModel->getSelAuthor()->SetXNameCoordinate(xName);
139     mModel->getSelAuthor()->SetYNameCoordinate(yName);
140     mModel->getSelAuthor()->SetXid(xID);
141     mModel->getSelAuthor()->SetYid(yID);
142     mModel->getSelAuthor()->SetXTimeEstimatedCoordinate(xEstTime);
143     mModel->getSelAuthor()->SetYTimeEstimatedCoordinate(yEstTime);
144     mModel->getSelAuthor()->SetXTimeSpentCoordinate(xNeededTime);
145     mModel->getSelAuthor()->SetYTimeSpentCoordinate(yNeededTime);
146     mModel->notifyObservers();
147 }
148
149 void Controller::setDocName(const std::string &name)
150 {
151     mModel->setDocName(name);
152     mModel->notifyObservers();
153 }
154
155
156 void Controller::startNewTemplate(const std::string &name)
157 {
158     mModel->newTemplate(name);
159     mModel->notifyObservers();
160 }
161
162 void Controller::saveSettings(bool titlepage, bool coverpage, bool toc, int tocDepth,
163              const std::string &headerExt, const std::string &sourceExt,
164              const std::string &subjectName, const std::string &location)
165 {
166     mModel->setAddTitlePage(titlepage);
167     mModel->setAddCoverSheet(coverpage);
168     mModel->setAddTableOfContent(toc);
169     mModel->setTableOfContentDepth(tocDepth);
170     mModel->setSourceFileExtension(sourceExt);
171     mModel->setHeaderFileExtension(headerExt);
172     mModel->setSubjectName(subjectName);
173     mModel->setLocation(location);
174     mModel->notifyObservers();
175 }
176
177 void Controller::saveAsTemplate()
178 {
179     mModel->saveTemplFile();
180 }
181
182 void Controller::setDepartment(const std::string &department)
183 {
184     mModel->setDepartment(department);
185     mModel->notifyObservers();
186 }
187
188 void Controller::setDepartmentCoordiantes(unsigned int x, unsigned int y)
189 {
190     mModel->setDepartmentX(x);
191     mModel->setDepartmentY(y);
192     mModel->notifyObservers();
193 }