Engauge Digitizer  2
 All Classes Files Functions Variables Enumerations Enumerator Friends Pages
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 "GraphicsPoint.h"
10 #include "GridLineLimiter.h"
11 #include "ImportCroppingUtilBase.h"
12 #include "Logger.h"
13 #include "MainWindowModel.h"
14 #include "PdfResolution.h"
15 #include <QLocale>
16 #include <QObject>
17 #include <QTextStream>
18 #include "QtToString.h"
19 #include <QXmlStreamWriter>
20 #include "Xml.h"
21 #include "ZoomFactorInitial.h"
22 
23 // Prevent comma ambiguity with group separator commas and field delimiting commas
24 const QLocale::NumberOption HIDE_GROUP_SEPARATOR = QLocale::OmitGroupSeparator;
25 
27  m_zoomControl (ZOOM_CONTROL_MENU_WHEEL_PLUSMINUS),
28  m_zoomFactorInitial (DEFAULT_ZOOM_FACTOR_INITIAL),
29  m_mainTitleBarFormat (MAIN_TITLE_BAR_FORMAT_PATH),
30  m_pdfResolution (DEFAULT_IMPORT_PDF_RESOLUTION),
31  m_importCropping (DEFAULT_IMPORT_CROPPING),
32  m_maximumGridLines (DEFAULT_MAXIMUM_GRID_LINES),
33  m_highlightOpacity (DEFAULT_HIGHLIGHT_OPACITY)
34 {
35  // Locale member variable m_locale is initialized to default locale when default constructor is called
36 }
37 
39  m_locale (other.locale()),
40  m_zoomControl (other.zoomControl()),
41  m_zoomFactorInitial (other.zoomFactorInitial()),
42  m_mainTitleBarFormat (other.mainTitleBarFormat()),
43  m_pdfResolution (other.pdfResolution()),
44  m_importCropping (other.importCropping()),
45  m_maximumGridLines (other.maximumGridLines()),
46  m_highlightOpacity (other.highlightOpacity())
47 {
48 }
49 
51 {
52  m_locale = other.locale();
53  m_zoomControl = other.zoomControl();
54  m_zoomFactorInitial = other.zoomFactorInitial();
55  m_mainTitleBarFormat = other.mainTitleBarFormat();
56  m_pdfResolution = other.pdfResolution();
57  m_importCropping = other.importCropping();
58  m_maximumGridLines = other.maximumGridLines();
59  m_highlightOpacity = other.highlightOpacity();
60 
61  return *this;
62 }
63 
65 {
66  return m_highlightOpacity;
67 }
68 
69 ImportCropping MainWindowModel::importCropping() const
70 {
71  return m_importCropping;
72 }
73 
74 void MainWindowModel::loadXml(QXmlStreamReader &reader)
75 {
76  LOG4CPP_INFO_S ((*mainCat)) << "MainWindowModel::loadXml";
77 
78  bool success = true;
79 
80  // Read until end of this subtree
81  while ((reader.tokenType() != QXmlStreamReader::EndElement) ||
82  (reader.name() != DOCUMENT_SERIALIZE_MAIN_WINDOW)){
83  loadNextFromReader(reader);
84  if (reader.atEnd()) {
85  success = false;
86  break;
87  }
88  }
89 
90  if (!success) {
91  reader.raiseError (QObject::tr ("Cannot read main window data"));
92  }
93 }
94 
95 QLocale MainWindowModel::locale () const
96 {
97  return m_locale;
98 }
99 
100 MainTitleBarFormat MainWindowModel::mainTitleBarFormat() const
101 {
102  return m_mainTitleBarFormat;
103 }
104 
106 {
107  return m_maximumGridLines;
108 }
109 
111 {
112  return m_pdfResolution;
113 }
114 
115 void MainWindowModel::printStream(QString indentation,
116  QTextStream &str) const
117 {
118  str << indentation << "MainWindowModel\n";
119 
120  indentation += INDENTATION_DELTA;
121 
122  str << indentation << "locale=" << m_locale.name() << "\n";
123  str << indentation << "zoomControl=" << m_zoomControl << "\n";
124  str << indentation << "zoomFactorInitial=" << m_zoomFactorInitial << "\n";
125  str << indentation << "mainWindowTitleBarFormat=" << (m_mainTitleBarFormat == MAIN_TITLE_BAR_FORMAT_NO_PATH ?
126  "NoPath" :
127  "Path") << "\n";
128  str << indentation << "pdfResolution=" << m_pdfResolution << "\n";
129  str << indentation << "importCropping=" << ImportCroppingUtilBase::importCroppingToString (m_importCropping).toLatin1().data() << "\n";
130  str << indentation << "maximumGridLines=" << m_maximumGridLines << "\n";
131  str << indentation << "highlightOpacity=" << m_highlightOpacity << "\n";
132 }
133 
134 void MainWindowModel::saveXml(QXmlStreamWriter &writer) const
135 {
136  LOG4CPP_INFO_S ((*mainCat)) << "MainWindowModel::saveXml";
137 
138  writer.writeStartElement(DOCUMENT_SERIALIZE_MAIN_WINDOW);
139  writer.writeEndElement();
140 }
141 
142 void MainWindowModel::setHighlightOpacity(double highlightOpacity)
143 {
144  m_highlightOpacity = highlightOpacity;
145 }
146 
147 void MainWindowModel::setImportCropping (ImportCropping importCropping)
148 {
149  m_importCropping = importCropping;
150 }
151 
152 void MainWindowModel::setLocale (QLocale::Language language,
153  QLocale::Country country)
154 {
155  QLocale locale (language,
156  country);
157  locale.setNumberOptions(HIDE_GROUP_SEPARATOR);
158 
159  m_locale = locale;
160 }
161 
162 void MainWindowModel::setLocale (const QLocale &locale)
163 {
164  m_locale = locale;
165  m_locale.setNumberOptions(HIDE_GROUP_SEPARATOR);
166 }
167 
168 void MainWindowModel::setMainTitleBarFormat(MainTitleBarFormat mainTitleBarFormat)
169 {
170  m_mainTitleBarFormat = mainTitleBarFormat;
171 }
172 
173 void MainWindowModel::setMaximumGridLines(int maximumGridLines)
174 {
175  m_maximumGridLines = maximumGridLines;
176 }
177 
179 {
180  m_pdfResolution = resolution;
181 }
182 
183 void MainWindowModel::setZoomControl (ZoomControl zoomControl)
184 {
185  m_zoomControl = zoomControl;
186 }
187 
188 void MainWindowModel::setZoomFactorInitial(ZoomFactorInitial zoomFactorInitial)
189 {
190  m_zoomFactorInitial = zoomFactorInitial;
191 }
192 
193 ZoomControl MainWindowModel::zoomControl () const
194 {
195  return m_zoomControl;
196 }
197 
198 ZoomFactorInitial MainWindowModel::zoomFactorInitial() const
199 {
200  return m_zoomFactorInitial;
201 }
static QString importCroppingToString(ImportCropping importCropping)
Option as string for display to user.
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 setHighlightOpacity(double highlightOpacity)
Set method for highlight opacity.
void setLocale(QLocale::Language language, QLocale::Country country)
Set method for locale given attributes.
int maximumGridLines() const
Maximum number of grid lines.
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 setMaximumGridLines(int maximumGridLines)
Set method for maximum number of grid lines.
double highlightOpacity() const
Get method for highlight opacity.
int pdfResolution() const
Get method for resolution of imported PDF files, in dots per inch.
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.
ImportCropping importCropping() const
Get method for import cropping.
QLocale locale() const
Get method for locale.
void setPdfResolution(int resolution)
Set method for resolution of imported PDF files, in dots per inch.
void setImportCropping(ImportCropping importCropping)
Set method for import cropping.