00001
00002
00003
00004
00005
00006
00007 #include "CmdMediator.h"
00008 #include "DocumentSerialize.h"
00009 #include "GraphicsPoint.h"
00010 #include "GridLineLimiter.h"
00011 #include "ImportCroppingUtilBase.h"
00012 #include "Logger.h"
00013 #include "MainWindowModel.h"
00014 #include "PdfResolution.h"
00015 #include <QLocale>
00016 #include <QObject>
00017 #include <QTextStream>
00018 #include "QtToString.h"
00019 #include <QXmlStreamWriter>
00020 #include "Xml.h"
00021 #include "ZoomFactorInitial.h"
00022
00023
00024 const QLocale::NumberOption HIDE_GROUP_SEPARATOR = QLocale::OmitGroupSeparator;
00025
00026 bool DEFAULT_SMALL_DIALOGS = false;
00027
00028 MainWindowModel::MainWindowModel() :
00029 m_zoomControl (ZOOM_CONTROL_MENU_WHEEL_PLUSMINUS),
00030 m_zoomFactorInitial (DEFAULT_ZOOM_FACTOR_INITIAL),
00031 m_mainTitleBarFormat (MAIN_TITLE_BAR_FORMAT_PATH),
00032 m_pdfResolution (DEFAULT_IMPORT_PDF_RESOLUTION),
00033 m_importCropping (DEFAULT_IMPORT_CROPPING),
00034 m_maximumGridLines (DEFAULT_MAXIMUM_GRID_LINES),
00035 m_highlightOpacity (DEFAULT_HIGHLIGHT_OPACITY),
00036 m_smallDialogs (DEFAULT_SMALL_DIALOGS)
00037 {
00038
00039 }
00040
00041 MainWindowModel::MainWindowModel(const MainWindowModel &other) :
00042 m_locale (other.locale()),
00043 m_zoomControl (other.zoomControl()),
00044 m_zoomFactorInitial (other.zoomFactorInitial()),
00045 m_mainTitleBarFormat (other.mainTitleBarFormat()),
00046 m_pdfResolution (other.pdfResolution()),
00047 m_importCropping (other.importCropping()),
00048 m_maximumGridLines (other.maximumGridLines()),
00049 m_highlightOpacity (other.highlightOpacity()),
00050 m_smallDialogs (other.smallDialogs())
00051 {
00052 }
00053
00054 MainWindowModel &MainWindowModel::operator=(const MainWindowModel &other)
00055 {
00056 m_locale = other.locale();
00057 m_zoomControl = other.zoomControl();
00058 m_zoomFactorInitial = other.zoomFactorInitial();
00059 m_mainTitleBarFormat = other.mainTitleBarFormat();
00060 m_pdfResolution = other.pdfResolution();
00061 m_importCropping = other.importCropping();
00062 m_maximumGridLines = other.maximumGridLines();
00063 m_highlightOpacity = other.highlightOpacity();
00064 m_smallDialogs = other.smallDialogs();
00065
00066 return *this;
00067 }
00068
00069 double MainWindowModel::highlightOpacity() const
00070 {
00071 return m_highlightOpacity;
00072 }
00073
00074 ImportCropping MainWindowModel::importCropping() const
00075 {
00076 return m_importCropping;
00077 }
00078
00079 void MainWindowModel::loadXml(QXmlStreamReader &reader)
00080 {
00081 LOG4CPP_INFO_S ((*mainCat)) << "MainWindowModel::loadXml";
00082
00083 bool success = true;
00084
00085
00086 while ((reader.tokenType() != QXmlStreamReader::EndElement) ||
00087 (reader.name() != DOCUMENT_SERIALIZE_MAIN_WINDOW)){
00088 loadNextFromReader(reader);
00089 if (reader.atEnd()) {
00090 success = false;
00091 break;
00092 }
00093 }
00094
00095 if (!success) {
00096 reader.raiseError (QObject::tr ("Cannot read main window data"));
00097 }
00098 }
00099
00100 QLocale MainWindowModel::locale () const
00101 {
00102 return m_locale;
00103 }
00104
00105 MainTitleBarFormat MainWindowModel::mainTitleBarFormat() const
00106 {
00107 return m_mainTitleBarFormat;
00108 }
00109
00110 int MainWindowModel::maximumGridLines() const
00111 {
00112 return m_maximumGridLines;
00113 }
00114
00115 int MainWindowModel::pdfResolution() const
00116 {
00117 return m_pdfResolution;
00118 }
00119
00120 void MainWindowModel::printStream(QString indentation,
00121 QTextStream &str) const
00122 {
00123 str << indentation << "MainWindowModel\n";
00124
00125 indentation += INDENTATION_DELTA;
00126
00127 str << indentation << "locale=" << m_locale.name() << "\n";
00128 str << indentation << "zoomControl=" << m_zoomControl << "\n";
00129 str << indentation << "zoomFactorInitial=" << m_zoomFactorInitial << "\n";
00130 str << indentation << "mainWindowTitleBarFormat=" << (m_mainTitleBarFormat == MAIN_TITLE_BAR_FORMAT_NO_PATH ?
00131 "NoPath" :
00132 "Path") << "\n";
00133 str << indentation << "pdfResolution=" << m_pdfResolution << "\n";
00134 str << indentation << "importCropping=" << ImportCroppingUtilBase::importCroppingToString (m_importCropping).toLatin1().data() << "\n";
00135 str << indentation << "maximumGridLines=" << m_maximumGridLines << "\n";
00136 str << indentation << "highlightOpacity=" << m_highlightOpacity << "\n";
00137 str << indentation << "smallDialogs=" << (m_smallDialogs ? "yes" : "no") << "\n";
00138 }
00139
00140 void MainWindowModel::saveXml(QXmlStreamWriter &writer) const
00141 {
00142 LOG4CPP_INFO_S ((*mainCat)) << "MainWindowModel::saveXml";
00143
00144 writer.writeStartElement(DOCUMENT_SERIALIZE_MAIN_WINDOW);
00145 writer.writeEndElement();
00146 }
00147
00148 void MainWindowModel::setHighlightOpacity(double highlightOpacity)
00149 {
00150 m_highlightOpacity = highlightOpacity;
00151 }
00152
00153 void MainWindowModel::setImportCropping (ImportCropping importCropping)
00154 {
00155 m_importCropping = importCropping;
00156 }
00157
00158 void MainWindowModel::setLocale (QLocale::Language language,
00159 QLocale::Country country)
00160 {
00161 QLocale locale (language,
00162 country);
00163 locale.setNumberOptions(HIDE_GROUP_SEPARATOR);
00164
00165 m_locale = locale;
00166 }
00167
00168 void MainWindowModel::setLocale (const QLocale &locale)
00169 {
00170 m_locale = locale;
00171 m_locale.setNumberOptions(HIDE_GROUP_SEPARATOR);
00172 }
00173
00174 void MainWindowModel::setMainTitleBarFormat(MainTitleBarFormat mainTitleBarFormat)
00175 {
00176 m_mainTitleBarFormat = mainTitleBarFormat;
00177 }
00178
00179 void MainWindowModel::setMaximumGridLines(int maximumGridLines)
00180 {
00181 m_maximumGridLines = maximumGridLines;
00182 }
00183
00184 void MainWindowModel::setPdfResolution(int resolution)
00185 {
00186 m_pdfResolution = resolution;
00187 }
00188
00189 void MainWindowModel::setSmallDialogs(bool smallDialogs)
00190 {
00191 m_smallDialogs = smallDialogs;
00192 }
00193
00194 void MainWindowModel::setZoomControl (ZoomControl zoomControl)
00195 {
00196 m_zoomControl = zoomControl;
00197 }
00198
00199 void MainWindowModel::setZoomFactorInitial(ZoomFactorInitial zoomFactorInitial)
00200 {
00201 m_zoomFactorInitial = zoomFactorInitial;
00202 }
00203
00204 bool MainWindowModel::smallDialogs () const
00205 {
00206 return m_smallDialogs;
00207 }
00208
00209 ZoomControl MainWindowModel::zoomControl () const
00210 {
00211 return m_zoomControl;
00212 }
00213
00214 ZoomFactorInitial MainWindowModel::zoomFactorInitial() const
00215 {
00216 return m_zoomFactorInitial;
00217 }