7 #include "DlgSettingsMainWindow.h"
8 #include "EngaugeAssert.h"
10 #include "MainWindow.h"
11 #include "MainWindowModel.h"
14 #include <QGraphicsScene>
15 #include <QGridLayout>
19 #include <QPushButton>
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";
40 DlgSettingsMainWindow::~DlgSettingsMainWindow()
42 LOG4CPP_INFO_S ((*mainCat)) <<
"DlgSettingsMainWindow::~DlgSettingsMainWindow";
45 void 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);
205 QString 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));
213 void DlgSettingsMainWindow::slotLocale (
int index)
215 LOG4CPP_INFO_S ((*mainCat)) <<
"DlgSettingsMainWindow::slotLocale";
217 m_modelMainWindowAfter->
setLocale (m_cmbLocale->itemData (index).toLocale());
221 void DlgSettingsMainWindow::slotRecentFileClear()
223 LOG4CPP_INFO_S ((*mainCat)) <<
"DlgSettingsMainWindow::slotRecentFileClear";
229 void DlgSettingsMainWindow::slotTitleBarFormat(
bool)
231 LOG4CPP_INFO_S ((*mainCat)) <<
"DlgSettingsMainWindow::slotTitleBarFormat";
234 MAIN_TITLE_BAR_FORMAT_PATH :
235 MAIN_TITLE_BAR_FORMAT_NO_PATH);
239 void DlgSettingsMainWindow::slotZoomControl(
const QString)
241 LOG4CPP_INFO_S ((*mainCat)) <<
"DlgSettingsMainWindow::slotZoomControl";
243 m_modelMainWindowAfter->
setZoomControl ((ZoomControl) m_cmbZoomControl->currentData().toInt());
247 void DlgSettingsMainWindow::slotZoomFactor(
const QString)
249 LOG4CPP_INFO_S ((*mainCat)) <<
"DlgSettingsMainWIndow::slotZoomFactor";
251 m_modelMainWindowAfter->
setZoomFactorInitial((ZoomFactorInitial) m_cmbZoomFactor->currentData().toInt());
255 void DlgSettingsMainWindow::updateControls ()
virtual void createOptionalSaveDefault(QHBoxLayout *layout)
Let subclass define an optional Save As Default button.
void updateSettingsMainWindow(const MainWindowModel &modelMainWindow)
Update with new main window properties.
virtual void handleOk()
Process slotOk.
MainTitleBarFormat mainTitleBarFormat() const
Get method for MainWindow titlebar filename format.
void setCmdMediator(CmdMediator &cmdMediator)
Store CmdMediator for easy access by the leaf class.
void setLocale(QLocale::Language language, QLocale::Country country)
Set method for locale given attributes.
void loadMainWindowModel(CmdMediator &cmdMediator, const MainWindowModel &modelMainWindow)
Replaced load method since the main window settings are independent of document, unlike other DlgSett...
virtual void load(CmdMediator &cmdMediator)
Load settings from Document.
DlgSettingsMainWindow(MainWindow &mainWindow)
Single constructor.
ZoomControl zoomControl() const
Get method for zoom control.
Model for DlgSettingsMainWindow.
virtual QWidget * createSubPanel()
Create dialog-specific panel to which base class will add Ok and Cancel buttons.
void finishPanel(QWidget *subPanel)
Add Ok and Cancel buttons to subpanel to get the whole dialog.
void enableOk(bool enable)
Let leaf subclass control the Ok button.
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.
Abstract base class for all Settings dialogs.
ZoomFactorInitial zoomFactorInitial() const
Get method for initial zoom factor.
QLocale locale() const
Get method for locale.
MainWindow & mainWindow()
Get method for MainWindow.
Main window consisting of menu, graphics scene, status bar and optional toolbars as a Single Document...