1 /************************************************************************
2 **
3 ** @file vabstractvalapplication.h
4 ** @author Roman Telezhynskyi <dismine(at)gmail.com>
5 ** @date 15 10, 2020
6 **
7 ** @brief
8 ** @copyright
9 ** This source code is part of the Valentina project, a pattern making
10 ** program, whose allow create and modeling patterns of clothing.
11 ** Copyright (C) 2020 Valentina project
12 ** <https://gitlab.com/smart-pattern/valentina> All Rights Reserved.
13 **
14 ** Valentina is free software: you can redistribute it and/or modify
15 ** it under the terms of the GNU General Public License as published by
16 ** the Free Software Foundation, either version 3 of the License, or
17 ** (at your option) any later version.
18 **
19 ** Valentina is distributed in the hope that it will be useful,
20 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
21 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22 ** GNU General Public License for more details.
23 **
24 ** You should have received a copy of the GNU General Public License
25 ** along with Valentina. If not, see <http://www.gnu.org/licenses/>.
26 **
27 *************************************************************************/
28 #ifndef VABSTRACTVALAPPLICATION_H
29 #define VABSTRACTVALAPPLICATION_H
30
31 #include "vabstractapplication.h"
32
33 #include <QDate>
34
35 class VAbstractValApplication;// use in define
36 class VAbstractPattern;
37 class VMainGraphicsView;
38 class QGraphicsScene;
39 class VSettings;
40
41 class VAbstractValApplication : public VAbstractApplication
42 {
43 Q_OBJECT
44 public:
45 VAbstractValApplication(int &argc, char **argv);
46 virtual ~VAbstractValApplication() =default;
47
48 QString GetCustomerName() const;
49 void SetCustomerName(const QString &name);
50
51 QDate GetCustomerBirthDate() const;
52 void SetCustomerBirthDate(const QDate &date);
53
54 QString CustomerEmail() const;
55 void SetCustomerEmail(const QString &email);
56
57 Unit patternUnits() const;
58 const Unit *patternUnitsP() const;
59 void SetPatternUnits(const Unit &patternUnit);
60
61 MeasurementsType GetMeasurementsType() const;
62 void SetMeasurementsType(const MeasurementsType &patternType);
63
64 Unit MeasurementsUnits() const;
65 void SetMeasurementsUnits(const Unit &measurementsUnits);
66
67 Unit DimensionSizeUnits() const;
68 void SetDimensionSizeUnits(const Unit &sizeUnits);
69
70 double toPixel(double val) const;
71 double fromPixel(double pix) const;
72
73 void setCurrentDocument(VAbstractPattern *doc);
74 VAbstractPattern *getCurrentDocument() const;
75
76 VMainGraphicsView *getSceneView() const;
77 void setSceneView(VMainGraphicsView *value);
78
79 QGraphicsScene *getCurrentScene() const;
80 void setCurrentScene(QGraphicsScene **value);
81
82 QWidget *getMainWindow() const;
83 void setMainWindow(QWidget *value);
84
85 QString GetPatternPath() const;
86 void SetPatternPath(const QString &value);
87
88 QMap<int, QString> GetUserMaterials() const;
89 void SetUserMaterials(const QMap<int, QString> &userMaterials);
90
91 const Draw &GetDrawMode() const;
92 void SetDrawMode(const Draw &value);
93
94 bool getOpeningPattern() const;
95 void setOpeningPattern();
96
97 void PostWarningMessage(const QString &message, QtMsgType severity) const;
98
99 qreal GetDimensionHeight() const;
100 void SetDimensionHeight(qreal dimensionHeight);
101
102 qreal GetDimensionSize() const;
103 void SetDimensionSize(qreal dimensionSize);
104
105 qreal GetDimensionHip() const;
106 void SetDimensionHip(qreal dimensionHip);
107
108 qreal GetDimensionWaist() const;
109 void SetDimensionWaist(qreal dimensionWaist);
110
111 QString GetDimensionHeightLabel() const;
112 void SetDimensionHeightLabel(const QString &label);
113
114 QString GetDimensionSizeLabel() const;
115 void SetDimensionSizeLabel(const QString &label);
116
117 QString GetDimensionHipLabel() const;
118 void SetDimensionHipLabel(const QString &label);
119
120 QString GetDimensionWaistLabel() const;
121 void SetDimensionWaistLabel(const QString &label);
122
123 virtual void OpenSettings() override;
124 VSettings *ValentinaSettings();
125
126 static VAbstractValApplication *VApp();
127
128 protected:
129 QString m_customerName{};
130 QDate m_customerBirthDate{};
131 QString m_customerEmail{};
132
133 Unit m_patternUnits{Unit::Cm};
134 MeasurementsType m_measurementsType{MeasurementsType::Unknown};
135 Unit m_measurementsUnits{Unit::Cm};
136 VAbstractPattern *m_doc{nullptr};
137 VMainGraphicsView *m_sceneView{nullptr};
138 QGraphicsScene **m_currentScene{nullptr};
139 QString m_patternFilePath{};
140 QMap<int, QString> m_userMaterials{};
141
142 qreal m_dimensionHeight{0};
143 qreal m_dimensionSize{0};
144 qreal m_dimensionHip{0};
145 qreal m_dimensionWaist{0};
146
147 QString m_dimensionHeightLabel{};
148 QString m_dimensionSizeLabel{};
149 QString m_dimensionHipLabel{};
150 QString m_dimensionWaistLabel{};
151
152 Unit m_dimensionSizeUnits{Unit::Cm};
153
154 /**
155 * @brief mainWindow pointer to main window. Usefull if need create modal dialog. Without pointer to main window
156 * modality doesn't work.
157 */
158 QWidget *mainWindow{nullptr};
159
160 /** @brief mode keep current draw mode. */
161 Draw m_mode{Draw::Calculation};
162
163 /**
164 * @brief openingPattern true when we opening pattern. If something will be wrong in formula this help understand if
165 * we can allow user use Undo option.
166 */
167 bool openingPattern{false};
168
169 private:
170 Q_DISABLE_COPY(VAbstractValApplication)
171 };
172
173 //---------------------------------------------------------------------------------------------------------------------
GetCustomerName()174 inline QString VAbstractValApplication::GetCustomerName() const
175 {
176 return m_customerName;
177 }
178
179 //---------------------------------------------------------------------------------------------------------------------
SetCustomerName(const QString & name)180 inline void VAbstractValApplication::SetCustomerName(const QString &name)
181 {
182 m_customerName = name;
183 }
184
185 //---------------------------------------------------------------------------------------------------------------------
patternUnits()186 inline Unit VAbstractValApplication::patternUnits() const
187 {
188 return m_patternUnits;
189 }
190
191 //---------------------------------------------------------------------------------------------------------------------
patternUnitsP()192 inline const Unit *VAbstractValApplication::patternUnitsP() const
193 {
194 return &m_patternUnits;
195 }
196
197 //---------------------------------------------------------------------------------------------------------------------
SetPatternUnits(const Unit & patternUnit)198 inline void VAbstractValApplication::SetPatternUnits(const Unit &patternUnit)
199 {
200 m_patternUnits = patternUnit;
201 }
202
203 //---------------------------------------------------------------------------------------------------------------------
GetMeasurementsType()204 inline MeasurementsType VAbstractValApplication::GetMeasurementsType() const
205 {
206 return m_measurementsType;
207 }
208
209 //---------------------------------------------------------------------------------------------------------------------
SetMeasurementsType(const MeasurementsType & patternType)210 inline void VAbstractValApplication::SetMeasurementsType(const MeasurementsType &patternType)
211 {
212 m_measurementsType = patternType;
213 }
214
215 //---------------------------------------------------------------------------------------------------------------------
MeasurementsUnits()216 inline Unit VAbstractValApplication::MeasurementsUnits() const
217 {
218 return m_measurementsUnits;
219 }
220
221 //---------------------------------------------------------------------------------------------------------------------
SetMeasurementsUnits(const Unit & measurementsUnits)222 inline void VAbstractValApplication::SetMeasurementsUnits(const Unit &measurementsUnits)
223 {
224 m_measurementsUnits = measurementsUnits;
225 }
226
227 //---------------------------------------------------------------------------------------------------------------------
DimensionSizeUnits()228 inline Unit VAbstractValApplication::DimensionSizeUnits() const
229 {
230 return m_dimensionSizeUnits;
231 }
232
233 //---------------------------------------------------------------------------------------------------------------------
SetDimensionSizeUnits(const Unit & sizeUnits)234 inline void VAbstractValApplication::SetDimensionSizeUnits(const Unit &sizeUnits)
235 {
236 m_dimensionSizeUnits = sizeUnits;
237 }
238
239 //---------------------------------------------------------------------------------------------------------------------
setCurrentDocument(VAbstractPattern * doc)240 inline void VAbstractValApplication::setCurrentDocument(VAbstractPattern *doc)
241 {
242 m_doc = doc;
243 }
244
245 //---------------------------------------------------------------------------------------------------------------------
getCurrentDocument()246 inline VAbstractPattern *VAbstractValApplication::getCurrentDocument() const
247 {
248 return m_doc;
249 }
250
251 //---------------------------------------------------------------------------------------------------------------------
getSceneView()252 inline VMainGraphicsView *VAbstractValApplication::getSceneView() const
253 {
254 return m_sceneView;
255 }
256
257 //---------------------------------------------------------------------------------------------------------------------
setSceneView(VMainGraphicsView * value)258 inline void VAbstractValApplication::setSceneView(VMainGraphicsView *value)
259 {
260 m_sceneView = value;
261 }
262
263 //---------------------------------------------------------------------------------------------------------------------
getCurrentScene()264 inline QGraphicsScene *VAbstractValApplication::getCurrentScene() const
265 {
266 return *m_currentScene;
267 }
268
269 //---------------------------------------------------------------------------------------------------------------------
setCurrentScene(QGraphicsScene ** value)270 inline void VAbstractValApplication::setCurrentScene(QGraphicsScene **value)
271 {
272 m_currentScene = value;
273 }
274
275 //---------------------------------------------------------------------------------------------------------------------
getMainWindow()276 inline QWidget *VAbstractValApplication::getMainWindow() const
277 {
278 return mainWindow;
279 }
280
281 //---------------------------------------------------------------------------------------------------------------------
setMainWindow(QWidget * value)282 inline void VAbstractValApplication::setMainWindow(QWidget *value)
283 {
284 mainWindow = value;
285 }
286
287 //---------------------------------------------------------------------------------------------------------------------
GetPatternPath()288 inline QString VAbstractValApplication::GetPatternPath() const
289 {
290 return m_patternFilePath;
291 }
292
293 //---------------------------------------------------------------------------------------------------------------------
SetPatternPath(const QString & value)294 inline void VAbstractValApplication::SetPatternPath(const QString &value)
295 {
296 m_patternFilePath = value;
297 }
298
299 //---------------------------------------------------------------------------------------------------------------------
GetUserMaterials()300 inline QMap<int, QString> VAbstractValApplication::GetUserMaterials() const
301 {
302 return m_userMaterials;
303 }
304
305 //---------------------------------------------------------------------------------------------------------------------
SetUserMaterials(const QMap<int,QString> & userMaterials)306 inline void VAbstractValApplication::SetUserMaterials(const QMap<int, QString> &userMaterials)
307 {
308 m_userMaterials = userMaterials;
309 }
310
311 //---------------------------------------------------------------------------------------------------------------------
GetDrawMode()312 inline const Draw &VAbstractValApplication::GetDrawMode() const
313 {
314 return m_mode;
315 }
316
317 //---------------------------------------------------------------------------------------------------------------------
SetDrawMode(const Draw & value)318 inline void VAbstractValApplication::SetDrawMode(const Draw &value)
319 {
320 m_mode = value;
321 }
322
323 //---------------------------------------------------------------------------------------------------------------------
getOpeningPattern()324 inline bool VAbstractValApplication::getOpeningPattern() const
325 {
326 return openingPattern;
327 }
328
329 //---------------------------------------------------------------------------------------------------------------------
setOpeningPattern()330 inline void VAbstractValApplication::setOpeningPattern()
331 {
332 openingPattern = !openingPattern;
333 }
334
335 //---------------------------------------------------------------------------------------------------------------------
GetDimensionHeight()336 inline qreal VAbstractValApplication::GetDimensionHeight() const
337 {
338 return m_dimensionHeight;
339 }
340
341 //---------------------------------------------------------------------------------------------------------------------
SetDimensionHeight(qreal dimensionHeight)342 inline void VAbstractValApplication::SetDimensionHeight(qreal dimensionHeight)
343 {
344 m_dimensionHeight = dimensionHeight;
345 }
346
347 //---------------------------------------------------------------------------------------------------------------------
GetDimensionSize()348 inline qreal VAbstractValApplication::GetDimensionSize() const
349 {
350 return m_dimensionSize;
351 }
352
353 //---------------------------------------------------------------------------------------------------------------------
SetDimensionSize(qreal dimensionSize)354 inline void VAbstractValApplication::SetDimensionSize(qreal dimensionSize)
355 {
356 m_dimensionSize = dimensionSize;
357 }
358
359 //---------------------------------------------------------------------------------------------------------------------
GetDimensionHip()360 inline qreal VAbstractValApplication::GetDimensionHip() const
361 {
362 return m_dimensionHip;
363 }
364
365 //---------------------------------------------------------------------------------------------------------------------
SetDimensionHip(qreal dimensionHip)366 inline void VAbstractValApplication::SetDimensionHip(qreal dimensionHip)
367 {
368 m_dimensionHip = dimensionHip;
369 }
370
371 //---------------------------------------------------------------------------------------------------------------------
GetDimensionWaist()372 inline qreal VAbstractValApplication::GetDimensionWaist() const
373 {
374 return m_dimensionWaist;
375 }
376
377 //---------------------------------------------------------------------------------------------------------------------
SetDimensionWaist(qreal dimensionWaist)378 inline void VAbstractValApplication::SetDimensionWaist(qreal dimensionWaist)
379 {
380 m_dimensionWaist = dimensionWaist;
381 }
382
383 //---------------------------------------------------------------------------------------------------------------------
GetDimensionHeightLabel()384 inline QString VAbstractValApplication::GetDimensionHeightLabel() const
385 {
386 return m_dimensionHeightLabel;
387 }
388
389 //---------------------------------------------------------------------------------------------------------------------
SetDimensionHeightLabel(const QString & label)390 inline void VAbstractValApplication::SetDimensionHeightLabel(const QString &label)
391 {
392 m_dimensionHeightLabel = label;
393 }
394
395 //---------------------------------------------------------------------------------------------------------------------
GetDimensionSizeLabel()396 inline QString VAbstractValApplication::GetDimensionSizeLabel() const
397 {
398 return m_dimensionSizeLabel;
399 }
400
401 //---------------------------------------------------------------------------------------------------------------------
SetDimensionSizeLabel(const QString & label)402 inline void VAbstractValApplication::SetDimensionSizeLabel(const QString &label)
403 {
404 m_dimensionSizeLabel = label;
405 }
406
407 //---------------------------------------------------------------------------------------------------------------------
GetDimensionHipLabel()408 inline QString VAbstractValApplication::GetDimensionHipLabel() const
409 {
410 return m_dimensionHipLabel;
411 }
412
413 //---------------------------------------------------------------------------------------------------------------------
SetDimensionHipLabel(const QString & label)414 inline void VAbstractValApplication::SetDimensionHipLabel(const QString &label)
415 {
416 m_dimensionHipLabel = label;
417 }
418
419 //---------------------------------------------------------------------------------------------------------------------
GetDimensionWaistLabel()420 inline QString VAbstractValApplication::GetDimensionWaistLabel() const
421 {
422 return m_dimensionWaistLabel;
423 }
424
425 //---------------------------------------------------------------------------------------------------------------------
SetDimensionWaistLabel(const QString & label)426 inline void VAbstractValApplication::SetDimensionWaistLabel(const QString &label)
427 {
428 m_dimensionWaistLabel = label;
429 }
430
431 //---------------------------------------------------------------------------------------------------------------------
GetCustomerBirthDate()432 inline QDate VAbstractValApplication::GetCustomerBirthDate() const
433 {
434 return m_customerBirthDate;
435 }
436
437 //---------------------------------------------------------------------------------------------------------------------
SetCustomerBirthDate(const QDate & date)438 inline void VAbstractValApplication::SetCustomerBirthDate(const QDate &date)
439 {
440 m_customerBirthDate = date;
441 }
442
443 //---------------------------------------------------------------------------------------------------------------------
CustomerEmail()444 inline QString VAbstractValApplication::CustomerEmail() const
445 {
446 return m_customerEmail;
447 }
448
449 //---------------------------------------------------------------------------------------------------------------------
SetCustomerEmail(const QString & email)450 inline void VAbstractValApplication::SetCustomerEmail(const QString &email)
451 {
452 m_customerEmail = email;
453 }
454
455 #endif // VABSTRACTVALAPPLICATION_H
456