Engauge Digitizer  2
MainWindowModel.cpp
1 /******************************************************************************************************
2  * (C) 2014 markummitchell@github.com. This file is part of Engauge Digitizer, which is released *
3  * under GNU General Public License version 2 (GPLv2) or (at your option) any later version. See file *
4  * LICENSE or go to gnu.org/licenses for details. Distribution requires prior written permission. *
5  ******************************************************************************************************/
6 
7 #include "CmdMediator.h"
8 #include "DocumentSerialize.h"
9 #include "Logger.h"
10 #include "MainWindowModel.h"
11 #include <QLocale>
12 #include <QObject>
13 #include <QTextStream>
14 #include "QtToString.h"
15 #include <QXmlStreamWriter>
16 #include "Xml.h"
17 #include "ZoomFactorInitial.h"
18 
19 // Prevent comma ambiguity with group separator commas and field delimiting commas
20 const QLocale::NumberOption HIDE_GROUP_SEPARATOR = QLocale::OmitGroupSeparator;
21 
23  m_zoomControl (ZOOM_CONTROL_MENU_WHEEL_PLUSMINUS),
24  m_zoomFactorInitial (DEFAULT_ZOOM_FACTOR_INITIAL),
25  m_mainTitleBarFormat (MAIN_TITLE_BAR_FORMAT_PATH)
26 {
27  // Locale member variable m_locale is initialized to default locale when default constructor is called
28 }
29 
31  m_locale (other.locale()),
32  m_zoomControl (other.zoomControl()),
33  m_zoomFactorInitial (other.zoomFactorInitial()),
34  m_mainTitleBarFormat (other.mainTitleBarFormat())
35 {
36 }
37 
39 {
40  m_locale = other.locale();
41  m_zoomControl = other.zoomControl();
42  m_zoomFactorInitial = other.zoomFactorInitial();
43  m_mainTitleBarFormat = other.mainTitleBarFormat();
44 
45  return *this;
46 }
47 
48 void MainWindowModel::loadXml(QXmlStreamReader &reader)
49 {
50  LOG4CPP_INFO_S ((*mainCat)) << "MainWindowModel::loadXml";
51 
52  bool success = true;
53 
54  // Read until end of this subtree
55  while ((reader.tokenType() != QXmlStreamReader::EndElement) ||
56  (reader.name() != DOCUMENT_SERIALIZE_MAIN_WINDOW)){
57  loadNextFromReader(reader);
58  if (reader.atEnd()) {
59  success = false;
60  break;
61  }
62  }
63 
64  if (!success) {
65  reader.raiseError (QObject::tr ("Cannot read main window data"));
66  }
67 }
68 
69 QLocale MainWindowModel::locale () const
70 {
71  return m_locale;
72 }
73 
74 MainTitleBarFormat MainWindowModel::mainTitleBarFormat() const
75 {
76  return m_mainTitleBarFormat;
77 }
78 
79 void MainWindowModel::printStream(QString indentation,
80  QTextStream &str) const
81 {
82  str << indentation << "MainWindowModel\n";
83 
84  indentation += INDENTATION_DELTA;
85 
86  str << indentation << "locale=" << m_locale.name() << "\n";
87  str << indentation << "zoomControl=" << m_zoomControl << "\n";
88  str << indentation << "zoomFactorInitial=" << m_zoomFactorInitial << "\n";
89  str << indentation << "mainWindowTitleBarFormat=" << (m_mainTitleBarFormat == MAIN_TITLE_BAR_FORMAT_NO_PATH ?
90  "NoPath" :
91  "Path");
92 }
93 
94 void MainWindowModel::saveXml(QXmlStreamWriter &writer) const
95 {
96  LOG4CPP_INFO_S ((*mainCat)) << "MainWindowModel::saveXml";
97 
98  writer.writeStartElement(DOCUMENT_SERIALIZE_MAIN_WINDOW);
99  writer.writeEndElement();
100 }
101 
102 void MainWindowModel::setLocale (QLocale::Language language,
103  QLocale::Country country)
104 {
105  QLocale locale (language,
106  country);
107  locale.setNumberOptions(HIDE_GROUP_SEPARATOR);
108 
109  m_locale = locale;
110 }
111 
112 void MainWindowModel::setLocale (const QLocale &locale)
113 {
114  m_locale = locale;
115  m_locale.setNumberOptions(HIDE_GROUP_SEPARATOR);
116 }
117 
119 {
120  m_mainTitleBarFormat = mainTitleBarFormat;
121 }
122 
124 {
125  m_zoomControl = zoomControl;
126 }
127 
129 {
130  m_zoomFactorInitial = zoomFactorInitial;
131 }
132 
133 ZoomControl MainWindowModel::zoomControl () const
134 {
135  return m_zoomControl;
136 }
137 
138 ZoomFactorInitial MainWindowModel::zoomFactorInitial() const
139 {
140  return m_zoomFactorInitial;
141 }
MainWindowModel & operator=(const MainWindowModel &other)
Assignment constructor.
virtual void saveXml(QXmlStreamWriter &writer) const
Save entire model as xml into stream.
MainTitleBarFormat mainTitleBarFormat() const
Get method for MainWindow titlebar filename format.
void setLocale(QLocale::Language language, QLocale::Country country)
Set method for locale given attributes.
MainWindowModel()
Default constructor.
virtual void loadXml(QXmlStreamReader &reader)
Load model from serialized xml.
ZoomControl zoomControl() const
Get method for zoom control.
Model for DlgSettingsMainWindow.
void printStream(QString indentation, QTextStream &str) const
Debugging method that supports print method of this class and printStream method of some other class(...
void setZoomControl(ZoomControl zoomControl)
Set method for zoom control.
void setMainTitleBarFormat(MainTitleBarFormat mainTitleBarFormat)
Set method for MainWindow titlebar filename format.
void setZoomFactorInitial(ZoomFactorInitial zoomFactorInitial)
Set method for initial zoom factor.
ZoomFactorInitial zoomFactorInitial() const
Get method for initial zoom factor.
QLocale locale() const
Get method for locale.