7 #include "CmdMediator.h"
8 #include "DlgSettingsAbstractBase.h"
9 #include "EngaugeAssert.h"
11 #include "MainWindow.h"
14 #include <QPushButton>
16 #include <QSpacerItem>
17 #include <QVBoxLayout>
23 const QString &dialogName,
25 QDialog (&mainWindow),
26 m_mainWindow (mainWindow),
28 m_dialogName (dialogName),
29 m_disableOkAtStartup (true)
31 LOG4CPP_INFO_S ((*mainCat)) <<
"DlgSettingsAbstractBase::DlgSettingsAbstractBase"
32 <<
" name=" << m_dialogName.toLatin1().data();
34 setWindowTitle (title);
38 DlgSettingsAbstractBase::~DlgSettingsAbstractBase()
40 LOG4CPP_INFO_S ((*mainCat)) <<
"DlgSettingsAbstractBase::~DlgSettingsAbstractBase"
41 <<
" name=" << m_dialogName.toLatin1().data();
46 ENGAUGE_CHECK_PTR (m_cmdMediator);
48 return *m_cmdMediator;
53 m_btnOk->setEnabled (enable);
58 const int STRETCH_OFF = 0, STRETCH_ON = 1;
60 QVBoxLayout *panelLayout =
new QVBoxLayout (
this);
63 setLayout (panelLayout);
65 panelLayout->addWidget (subPanel);
66 panelLayout->setStretch (panelLayout->count () - 1, STRETCH_ON);
68 QWidget *panelButtons =
new QWidget (
this);
69 QHBoxLayout *buttonLayout =
new QHBoxLayout (panelButtons);
73 QHBoxLayout *layoutRightSide =
new QHBoxLayout;
75 QWidget *widgetRightSide =
new QWidget;
76 widgetRightSide->setLayout (layoutRightSide);
77 buttonLayout->addWidget (widgetRightSide);
79 QSpacerItem *spacerExpanding =
new QSpacerItem (40, 5, QSizePolicy::Expanding, QSizePolicy::Expanding);
80 layoutRightSide->addItem (spacerExpanding);
82 m_btnOk =
new QPushButton (tr (
"Ok"));
83 m_btnOk->setEnabled (
false);
84 layoutRightSide->addWidget (m_btnOk, 0, Qt::AlignRight);
85 connect (m_btnOk, SIGNAL (released ()),
this, SLOT (slotOk ()));
87 QSpacerItem *spacerFixed =
new QSpacerItem (40, 5, QSizePolicy::Fixed, QSizePolicy::Fixed);
88 layoutRightSide->addItem (spacerFixed);
90 m_btnCancel =
new QPushButton (tr (
"Cancel"));
91 layoutRightSide->addWidget (m_btnCancel, 0, Qt::AlignRight);
92 connect (m_btnCancel, SIGNAL (released ()),
this, SLOT (slotCancel ()));
94 panelLayout->addWidget (panelButtons, STRETCH_ON);
95 panelLayout->setStretch (panelLayout->count () - 1, STRETCH_OFF);
110 combo.addItem (colorPaletteToString (COLOR_PALETTE_BLUE),
111 QVariant (COLOR_PALETTE_BLUE));
112 combo.addItem (colorPaletteToString (COLOR_PALETTE_BLACK),
113 QVariant (COLOR_PALETTE_BLACK));
114 combo.addItem (colorPaletteToString (COLOR_PALETTE_CYAN),
115 QVariant (COLOR_PALETTE_CYAN));
116 combo.addItem (colorPaletteToString (COLOR_PALETTE_GOLD),
117 QVariant (COLOR_PALETTE_GOLD));
118 combo.addItem (colorPaletteToString (COLOR_PALETTE_GREEN),
119 QVariant (COLOR_PALETTE_GREEN));
120 combo.addItem (colorPaletteToString (COLOR_PALETTE_MAGENTA),
121 QVariant (COLOR_PALETTE_MAGENTA));
122 combo.addItem (colorPaletteToString (COLOR_PALETTE_RED),
123 QVariant (COLOR_PALETTE_RED));
124 combo.addItem (colorPaletteToString (COLOR_PALETTE_YELLOW),
125 QVariant (COLOR_PALETTE_YELLOW));
131 combo.addItem (
"Transparent", QVariant (COLOR_PALETTE_TRANSPARENT));
134 void DlgSettingsAbstractBase::saveGeometryToSettings()
138 settings.setValue (m_dialogName, saveGeometry ());
148 m_disableOkAtStartup = disableOkAtStartup;
151 void DlgSettingsAbstractBase::showEvent (QShowEvent * )
153 if (m_disableOkAtStartup) {
154 m_btnOk->setEnabled (
false);
158 if (settings.contains (m_dialogName)) {
161 restoreGeometry (settings.value (m_dialogName).toByteArray ());
165 void DlgSettingsAbstractBase::slotCancel ()
167 LOG4CPP_INFO_S ((*mainCat)) <<
"DlgSettingsAbstractBase::slotCancel";
169 saveGeometryToSettings();
173 void DlgSettingsAbstractBase::slotOk ()
175 LOG4CPP_INFO_S ((*mainCat)) <<
"DlgSettingsAbstractBase::slotOk";
177 saveGeometryToSettings();
static int MINIMUM_DIALOG_WIDTH
Dialog layout constant that guarantees every widget has sufficient room.
void setDisableOkAtStartup(bool disableOkAtStartup)
Override the default Ok button behavior applied in showEvent.
DlgSettingsAbstractBase(const QString &title, const QString &dialogName, MainWindow &mainWindow)
Single constructor.
void setCmdMediator(CmdMediator &cmdMediator)
Store CmdMediator for easy access by the leaf class.
virtual void createOptionalSaveDefault(QHBoxLayout *layout)=0
Let subclass define an optional Save As Default button.
void populateColorComboWithoutTransparent(QComboBox &combo)
Add colors in color palette to combobox, without transparent entry at end.
void finishPanel(QWidget *subPanel)
Add Ok and Cancel buttons to subpanel to get the whole dialog.
static int MINIMUM_PREVIEW_HEIGHT
Dialog layout constant that guarantees preview has sufficent room.
void enableOk(bool enable)
Let leaf subclass control the Ok button.
virtual void handleOk()=0
Process slotOk.
void populateColorComboWithTransparent(QComboBox &combo)
Add colors in color palette to combobox, with transparent entry at end.
MainWindow & mainWindow()
Get method for MainWindow.
Main window consisting of menu, graphics scene, status bar and optional toolbars as a Single Document...
CmdMediator & cmdMediator()
Provide access to Document information wrapped inside CmdMediator.