0de3867ddb2f1058a36c8e09ee1cf173178f7370
[hsd_doku_tool.git] / src / ControllerIF.h
1 ///////////////////////////////////////////////////////////////////////////
2 // Workfile: Chapter.h
3 // Author: Daniel Giritzer <daniel@giritzer.eu>
4 // Date: 25.03.2018
5 // Description: Interface für die Controller Klasse.
6 // Remarks: Dieses Interface definiert alle von einem View
7 //          benötigten Funktionen.
8 ///////////////////////////////////////////////////////////////////////////
9 #ifndef CONTROLLERIF_H_INCLUDED
10 #define CONTROLLERIF_H_INCLUDED
11
12 #include <iostream>
13 #include <memory>
14
15 /////////////////////////////////////////////////
16 /// \brief Interface für die Controller Klasse.
17 ///        Dieses Interface definiert alle von einem View
18 ///        benötigten Funktionen.
19 /////////////////////////////////////////////////
20 class ControllerIF
21 {
22 public:
23
24     /////////////////////////////////////////////////
25     /// \brief Destruktor
26     /////////////////////////////////////////////////
27     virtual ~ControllerIF() = default;
28
29     /////////////////////////////////////////////////
30     /// \brief Wählt ein entsprechende Template aus.
31     /// \param docTemplate gewähltes Template.
32     /////////////////////////////////////////////////
33     virtual void setTemplate(std::string docTemplate) = 0;
34
35     /////////////////////////////////////////////////
36     /// \brief Wählt ein entsprechendes Kapitel aus.
37     /// \param chapterNum Kapitelnummer.
38     /////////////////////////////////////////////////
39     virtual void selectedChapter(int chapterNum) = 0;
40
41     /////////////////////////////////////////////////
42     /// \brief Wählt einen entsprechenden Authoren aus.
43     /// \param authorNum Authorennummer.
44     /////////////////////////////////////////////////
45     virtual void selectedAuthor(int authorNum) = 0;
46
47     /////////////////////////////////////////////////
48     /// \brief Speichere die Informationen des ausgewählten
49     ///        Autors.
50     /// \param name Autor Name.
51     /// \param id Autor ID (Benutzeridentifikation)
52     /// \param estTime vom Autor geschätzte Arbeitszeit
53     /// \param neededTime vom Autor benötigte Arbeitszeit.
54     /////////////////////////////////////////////////
55     virtual void saveAuthor(std::string name, std::string id, std::string estTime, std::string neededTime) = 0;
56
57     /////////////////////////////////////////////////
58     /// \brief Speichere den Kapitelinhalt in
59     ///        die interne Datenstruktur.
60     /// \param text zu speichernder Text.
61     /////////////////////////////////////////////////
62     virtual void saveContent(std::string const & text) = 0;
63
64     /////////////////////////////////////////////////
65     /// \brief Speichere alle intern gespeicherten Texte
66     ///        in die jeweiligen .tex Dateien.
67     /////////////////////////////////////////////////
68     virtual void saveAllWrittenTextsToFiles() = 0;
69
70     /////////////////////////////////////////////////
71     /// \brief Markiere ein Kapitel als abgeschlossen
72     ///        oder noch nicht abgeschlossen.
73     /// \param true -> abgeschlossen,
74     ///        false -> nicht abgeschlossen.
75     /////////////////////////////////////////////////
76     virtual void setCurrentChapterFinished(bool val) = 0;
77
78     /////////////////////////////////////////////////
79     /// \brief Füge ein neues Kapitel hinzu.
80     /// \param chaptName Name des Kapitels
81     /// \param outFileName name der Ausgabedatei.
82     /// \param chaptType Kapiteltyp
83     /// \param chaptHiearachy Kapitelhierachietyp
84     /////////////////////////////////////////////////
85     virtual void addChapter(std::string chaptName, std::string outFileName, int chaptType, int chaptHiearachy) = 0;
86
87     /////////////////////////////////////////////////
88     /// \brief Ändert die Eistellung des gewählten
89     ///        Kapitels
90     /// \param chaptName Name des Kapitels
91     /// \param outFileName name der Ausgabedatei.
92     /// \param chaptHiearachy Kapitelhierachietyp
93     /////////////////////////////////////////////////
94     virtual void updateChapter(std::string chaptName, std::string outFileName, int chaptHiearachy) = 0;
95
96     /////////////////////////////////////////////////
97     /// \brief Lösche ausgewähltes Kapitel.
98     /////////////////////////////////////////////////
99     virtual void remChapter() = 0;
100
101     /////////////////////////////////////////////////
102     /// \brief Lösche ausgewählten Authoren.
103     /////////////////////////////////////////////////
104     virtual void remAuthor() = 0;
105
106     /////////////////////////////////////////////////
107     /// \brief Füge einen Authoren hinzu.
108     /////////////////////////////////////////////////
109     virtual void addAuthor() = 0;
110
111     /////////////////////////////////////////////////
112     /// \brief Sortiere ausgewähltes Kapitel eine
113     ///        Stelle nach oben.
114     /////////////////////////////////////////////////
115     virtual void upChapter() = 0;
116
117     /////////////////////////////////////////////////
118     /// \brief Sortiere ausgewähltes Kapitel eine
119     ///        Stelle nach unten.
120     /////////////////////////////////////////////////
121     virtual void downChapter() = 0;
122
123     /////////////////////////////////////////////////
124     /// \brief Wähle Ausgabeordner.
125     /// \param outDir Ausgabeordner
126     /////////////////////////////////////////////////
127     virtual void setOutDir(std::string outDir) = 0;
128
129     /////////////////////////////////////////////////
130     /// \brief Erzeuge Latex Dateien und .pdf im
131     ///        Ausgabeordner.
132     /////////////////////////////////////////////////
133     virtual void generateDocument() = 0;
134
135     /////////////////////////////////////////////////
136     /// \brief Wähle Angabeblatt.
137     /// \param file Angabeblatt
138     /////////////////////////////////////////////////
139     virtual void saveCoverSheet(std::string file) = 0;
140
141     /////////////////////////////////////////////////
142     /// \brief Setzte Deckblattkoordinaten für die
143     ///        auszufüllenden Parameter eines Autors.
144     /// \param xName X Koordinate für Autor Namen
145     /// \param yName Y Koordinate für Autor Namen
146     /// \param xID X Koordinate für ID des Autors
147     /// \param yID Y Koordinate für ID des Autors
148     /// \param xEstTime X Koordinate für die geschätzte Zeit
149     /// \param yEstTime Y Koordinate für die geschätzte Zeit
150     /// \param xNeededTime X Koordinate für die benötigte Zeit
151     /// \param yNeededTime Y Koordinate für die benötigte Zeit
152     /////////////////////////////////////////////////
153     virtual void saveAuthorCoordinates(int xName, int yName, int xID, int yID, int xEstTime, int yEstTime, int xNeededTime, int yNeededTime) = 0;
154
155     /////////////////////////////////////////////////
156     /// \brief Speichere alle Dokumenteinstellungen
157     /// \param titlepage Gibt an ob eine Titelseite erzeugt
158     ///                  werden soll oder nicht
159     /// \param coverpage Gibt an ob ein Deckblatt hinzugefügt werden
160     ///                  soll oder nicht.
161     /// \param toc Gibt an ob ein Inhaltsverzeichnis erzeugt werden soll
162     ///            oder nicht.
163     /// \param tocDepth Gibt die Nummerierungstiefe des Inhaltsverzeichnisses
164     ///                 an.
165     /// \param headerExt Dateiendung von Headerdateien
166     /// \param sourceExt Dateiendung von Quellcodedateien
167     /// \param subjectName  Name des Dokumenttyps
168     /// \param location Verfassungsort des Dokuments
169     /////////////////////////////////////////////////
170     virtual void saveSettings(bool titlepage, bool coverpage, bool toc, int tocDepth,
171              std::string headerExt, std::string sourceExt,
172              std::string subjectName, std::string location) = 0;
173
174     /////////////////////////////////////////////////
175     /// \brief Konfiguriere den Namen des Dokuments
176     /// \param name Dokumentname
177     /////////////////////////////////////////////////
178     virtual void setDocName(std::string name) = 0;
179
180
181     /////////////////////////////////////////////////
182     /// \brief Starte ein komplett neues Dokument.
183     /// \param name Dokumentgruppenname
184     /////////////////////////////////////////////////
185     virtual void startNewTemplate(std::string name) = 0;
186
187     /////////////////////////////////////////////////
188     /// \brief Speichere einstellungen, Kapitel und
189     ///        Authoren als .xml template in den
190     ///        Ausgabeordner.
191     /////////////////////////////////////////////////
192     virtual void saveAsTemplate() = 0;
193
194     /////////////////////////////////////////////////
195     /// \brief Konfiguriere dan Namen der Arbeitsgruppe.
196     /// \param department name Arbeitsgruppenname
197     /////////////////////////////////////////////////
198     virtual void setDepartment(std::string department) = 0;
199
200     /////////////////////////////////////////////////
201     /// \brief Setzte Deckblattkoordinaten für
202     ///        die Arbeitsgruppe
203     /// \param x X Koordinate
204     /// \param y Y Koordinate
205     /////////////////////////////////////////////////
206     virtual void setDepartmentCoordiantes(unsigned int x,unsigned int y) = 0;
207
208     /////////////////////////////////////////////////
209     /// \brief Typedef für einen shared Pointer auf
210     ///        ein Objekt dieser Klasse oder deren
211     ///        Implementierung.
212     /////////////////////////////////////////////////
213     using SPtr = std::shared_ptr<ControllerIF>;
214
215 protected:
216     ControllerIF() = default;
217 };
218 #endif // CONTROLLERIF_H_INCLUDED