7#include "DlgSettingsMainWindow.h"
8#include "EngaugeAssert.h"
10#include "MainWindow.h"
11#include "MainWindowModel.h"
14#include <QGraphicsScene>
23#include "ZoomControl.h"
24#include "ZoomFactorInitial.h"
25#include "ZoomLabels.h"
29 "DlgSettingsMainWindow",
31 m_modelMainWindowBefore (0),
32 m_modelMainWindowAfter (0)
34 LOG4CPP_INFO_S ((*mainCat)) <<
"DlgSettingsMainWindow::DlgSettingsMainWindow";
40DlgSettingsMainWindow::~DlgSettingsMainWindow()
42 LOG4CPP_INFO_S ((*mainCat)) <<
"DlgSettingsMainWindow::~DlgSettingsMainWindow";
45void DlgSettingsMainWindow::createControls (QGridLayout *layout,
48 LOG4CPP_INFO_S ((*mainCat)) <<
"DlgSettingsMainWindow::createControls";
50 const int COLUMN0 = 0;
52 QLabel *labelZoomFactor =
new QLabel (tr (
"Initial zoom:"));
53 layout->addWidget (labelZoomFactor, row, 1);
55 m_cmbZoomFactor =
new QComboBox;
56 m_cmbZoomFactor->addItem (LABEL_ZOOM_16_TO_1 , QVariant (ZOOM_INITIAL_16_TO_1));
57 m_cmbZoomFactor->addItem (LABEL_ZOOM_8_TO_1 , QVariant (ZOOM_INITIAL_8_TO_1));
58 m_cmbZoomFactor->addItem (LABEL_ZOOM_4_TO_1 , QVariant (ZOOM_INITIAL_4_TO_1));
59 m_cmbZoomFactor->addItem (LABEL_ZOOM_2_TO_1 , QVariant (ZOOM_INITIAL_2_TO_1));
60 m_cmbZoomFactor->addItem (LABEL_ZOOM_1_TO_1 , QVariant (ZOOM_INITIAL_1_TO_1));
61 m_cmbZoomFactor->addItem (LABEL_ZOOM_1_TO_2 , QVariant (ZOOM_INITIAL_1_TO_2));
62 m_cmbZoomFactor->addItem (LABEL_ZOOM_1_TO_4 , QVariant (ZOOM_INITIAL_1_TO_4));
63 m_cmbZoomFactor->addItem (LABEL_ZOOM_1_TO_8 , QVariant (ZOOM_INITIAL_1_TO_8));
64 m_cmbZoomFactor->addItem (LABEL_ZOOM_1_TO_16 , QVariant (ZOOM_INITIAL_1_TO_16));
65 m_cmbZoomFactor->addItem (LABEL_ZOOM_FILL , QVariant (ZOOM_INITIAL_FILL));
66 m_cmbZoomFactor->addItem (LABEL_ZOOM_PREVIOUS , QVariant (ZOOM_INITIAL_PREVIOUS));
67 m_cmbZoomFactor->setWhatsThis(tr (
"Initial Zoom\n\n"
68 "Select the initial zoom factor when a new document is loaded. Either the previous "
69 "zoom can be kept, or the specified zoom can be applied."));
70 connect (m_cmbZoomFactor, SIGNAL (currentTextChanged (
const QString)),
this, SLOT (slotZoomFactor(
const QString)));
71 layout->addWidget (m_cmbZoomFactor, row++, 2);
73 QLabel *labelZoomControl =
new QLabel (tr (
"Zoom control:"));
74 layout->addWidget (labelZoomControl, row, 1);
76 m_cmbZoomControl =
new QComboBox;
77 m_cmbZoomControl->addItem (tr (
"Menu only" ), QVariant (ZOOM_CONTROL_MENU_ONLY));
78 m_cmbZoomControl->addItem (tr (
"Menu and mouse wheel" ), QVariant (ZOOM_CONTROL_MENU_WHEEL));
79 m_cmbZoomControl->addItem (tr (
"Menu and +/- keys" ), QVariant (ZOOM_CONTROL_MENU_PLUSMINUS));
80 m_cmbZoomControl->addItem (tr (
"Menu, mouse wheel and +/- keys"), QVariant (ZOOM_CONTROL_MENU_WHEEL_PLUSMINUS));
81 m_cmbZoomControl->setWhatsThis (tr (
"Zoom Control\n\n"
82 "Select which inputs are used to zoom in and out."));
83 connect (m_cmbZoomControl, SIGNAL (currentTextChanged (
const QString)),
this, SLOT (slotZoomControl(
const QString)));
84 layout->addWidget (m_cmbZoomControl, row++, 2);
86 QLabel *labelLocale =
new QLabel (tr (
"Locale:"));
87 layout->addWidget (labelLocale, row, 1);
90 m_cmbLocale =
new QComboBox;
91 m_cmbLocale->setWhatsThis(tr (
"Locale\n\n"
92 "Select the locale that will be used when converting between numbers and strings. "
93 "This affects the use of commas or periods as group delimiters in each number entered "
94 "by the user, displayed in the user interface, or exported to a file."));
95 for (
int indexLang = QLocale::C; indexLang <= QLocale::LastLanguage; indexLang++) {
96 QLocale::Language lang =
static_cast<QLocale::Language
> (indexLang);
97 QList<QLocale::Country> countries = QLocale::countriesForLanguage(lang);
98 for (
int indexCountry = 0; indexCountry < countries.count(); indexCountry++) {
99 QLocale::Country country = countries.at(indexCountry);
100 QString label = localeLabel (lang,
102 QLocale locale (lang, country);
103 m_cmbLocale->addItem (label, locale);
106 m_cmbLocale->model()->sort(COLUMN0);
107 connect (m_cmbLocale, SIGNAL (currentIndexChanged (
int)),
this, SLOT (slotLocale (
int)));
108 layout->addWidget (m_cmbLocale, row++, 2);
110 QLabel *labelRecent =
new QLabel (tr (
"Recent file list:"));
111 layout->addWidget (labelRecent, row, 1);
113 m_btnRecentClear =
new QPushButton (tr (
"Clear"));
114 m_btnRecentClear->setSizePolicy (QSizePolicy::Fixed, QSizePolicy::Fixed);
115 m_btnRecentClear->setWhatsThis (tr (
"Recent File List Clear\n\n"
116 "Clear the recent file list in the File menu."));
117 connect (m_btnRecentClear, SIGNAL (pressed ()), &
mainWindow(), SLOT (slotRecentFileClear ()));
118 connect (m_btnRecentClear, SIGNAL (pressed ()),
this, SLOT (slotRecentFileClear()));
119 layout->addWidget (m_btnRecentClear, row++, 2);
121 QLabel *labelTitleBarFormat =
new QLabel (tr (
"Include title bar path:"));
122 layout->addWidget (labelTitleBarFormat, row, 1);
124 m_chkTitleBarFormat =
new QCheckBox;
125 m_chkTitleBarFormat->setSizePolicy (QSizePolicy::Fixed, QSizePolicy::Fixed);
126 m_chkTitleBarFormat->setWhatsThis (tr (
"Title Bar Filename\n\n"
127 "Includes or excludes the path and file extension from the filename in the title bar."));
128 connect (m_chkTitleBarFormat, SIGNAL (toggled (
bool)),
this, SLOT (slotTitleBarFormat(
bool)));
129 layout->addWidget (m_chkTitleBarFormat, row++, 2);
134 LOG4CPP_INFO_S ((*mainCat)) <<
"DlgSettingsMainWindow::createOptionalSaveDefault";
139 LOG4CPP_INFO_S ((*mainCat)) <<
"DlgSettingsMainWindow::createSubPanel";
141 QWidget *subPanel =
new QWidget ();
142 QGridLayout *layout =
new QGridLayout (subPanel);
143 subPanel->setLayout (layout);
145 layout->setColumnStretch(0, 1);
146 layout->setColumnStretch(1, 0);
147 layout->setColumnStretch(2, 0);
148 layout->setColumnStretch(3, 1);
151 createControls (layout, row);
158 LOG4CPP_INFO_S ((*mainCat)) <<
"DlgSettingsMainWindow::handleOk";
166 LOG4CPP_INFO_S ((*mainCat)) <<
"DlgSettingsMainWindow::load";
168 ENGAUGE_ASSERT (
false);
174 LOG4CPP_INFO_S ((*mainCat)) <<
"DlgSettingsMainWindow::loadMainWindowModel";
179 if (m_modelMainWindowBefore != 0) {
180 delete m_modelMainWindowBefore;
182 if (m_modelMainWindowAfter != 0) {
183 delete m_modelMainWindowAfter;
191 int index = m_cmbZoomFactor->findData (m_modelMainWindowAfter->
zoomFactorInitial());
192 m_cmbZoomFactor->setCurrentIndex (index);
193 index = m_cmbZoomControl->findData (m_modelMainWindowAfter->
zoomControl());
194 m_cmbZoomControl->setCurrentIndex (index);
195 QString locLabel = localeLabel (m_modelMainWindowAfter->
locale().language(),
196 m_modelMainWindowBefore->
locale().country());
197 index = m_cmbLocale->findText (locLabel);
198 m_cmbLocale->setCurrentIndex(index);
199 m_chkTitleBarFormat->setChecked (m_modelMainWindowAfter->
mainTitleBarFormat() == MAIN_TITLE_BAR_FORMAT_PATH);
205QString DlgSettingsMainWindow::localeLabel (QLocale::Language lang,
206 QLocale::Country country)
const
208 return QString (
"%1/%2")
209 .arg (QLocale::languageToString (lang))
210 .arg (QLocale::countryToString(country));
213void DlgSettingsMainWindow::slotLocale (
int index)
215 LOG4CPP_INFO_S ((*mainCat)) <<
"DlgSettingsMainWindow::slotLocale";
217 m_modelMainWindowAfter->
setLocale (m_cmbLocale->itemData (index).toLocale());
221void DlgSettingsMainWindow::slotRecentFileClear()
223 LOG4CPP_INFO_S ((*mainCat)) <<
"DlgSettingsMainWindow::slotRecentFileClear";
229void DlgSettingsMainWindow::slotTitleBarFormat(
bool)
231 LOG4CPP_INFO_S ((*mainCat)) <<
"DlgSettingsMainWindow::slotTitleBarFormat";
234 MAIN_TITLE_BAR_FORMAT_PATH :
235 MAIN_TITLE_BAR_FORMAT_NO_PATH);
239void DlgSettingsMainWindow::slotZoomControl(
const QString)
241 LOG4CPP_INFO_S ((*mainCat)) <<
"DlgSettingsMainWindow::slotZoomControl";
243 m_modelMainWindowAfter->
setZoomControl ((ZoomControl) m_cmbZoomControl->currentData().toInt());
247void DlgSettingsMainWindow::slotZoomFactor(
const QString)
249 LOG4CPP_INFO_S ((*mainCat)) <<
"DlgSettingsMainWIndow::slotZoomFactor";
251 m_modelMainWindowAfter->
setZoomFactorInitial((ZoomFactorInitial) m_cmbZoomFactor->currentData().toInt());
255void DlgSettingsMainWindow::updateControls ()
Abstract base class for all Settings dialogs.
void setCmdMediator(CmdMediator &cmdMediator)
Store CmdMediator for easy access by the leaf class.
CmdMediator & cmdMediator()
Provide access to Document information wrapped inside CmdMediator.
void enableOk(bool enable)
Let leaf subclass control the Ok button.
void finishPanel(QWidget *subPanel)
Add Ok and Cancel buttons to subpanel to get the whole dialog.
MainWindow & mainWindow()
Get method for MainWindow.
void loadMainWindowModel(CmdMediator &cmdMediator, const MainWindowModel &modelMainWindow)
Replaced load method since the main window settings are independent of document, unlike other DlgSett...
virtual void createOptionalSaveDefault(QHBoxLayout *layout)
Let subclass define an optional Save As Default button.
DlgSettingsMainWindow(MainWindow &mainWindow)
Single constructor.
virtual void handleOk()
Process slotOk.
virtual void load(CmdMediator &cmdMediator)
Load settings from Document.
virtual QWidget * createSubPanel()
Create dialog-specific panel to which base class will add Ok and Cancel buttons.
Model for DlgSettingsMainWindow.
QLocale locale() const
Get method for locale.
ZoomFactorInitial zoomFactorInitial() const
Get method for initial zoom factor.
void setMainTitleBarFormat(MainTitleBarFormat mainTitleBarFormat)
Set method for MainWindow titlebar filename format.
void setZoomControl(ZoomControl zoomControl)
Set method for zoom control.
ZoomControl zoomControl() const
Get method for zoom control.
void setZoomFactorInitial(ZoomFactorInitial zoomFactorInitial)
Set method for initial zoom factor.
MainTitleBarFormat mainTitleBarFormat() const
Get method for MainWindow titlebar filename format.
void setLocale(QLocale::Language language, QLocale::Country country)
Set method for locale given attributes.
Main window consisting of menu, graphics scene, status bar and optional toolbars as a Single Document...
void updateSettingsMainWindow(const MainWindowModel &modelMainWindow)
Update with new main window properties.