25 const QString &dialogName,
27 QDialog (&mainWindow),
28 m_mainWindow (mainWindow),
29 m_cmdMediator (nullptr),
30 m_dialogName (dialogName),
31 m_disableOkAtStartup (true)
34 <<
" name=" << m_dialogName.toLatin1().data();
36 setWindowTitle (title);
43 <<
" name=" << m_dialogName.toLatin1().data();
50 return *m_cmdMediator;
55 m_btnOk->setEnabled (enable);
60 int minimumHeightOrZero)
62 const int STRETCH_OFF = 0, STRETCH_ON = 1;
64 m_scroll =
new QScrollArea (
this);
65 m_scroll->setStyleSheet (
"QScrollArea { border: 0; margin: 0; padding: 0;}");
66 m_scroll->setHorizontalScrollBarPolicy (Qt::ScrollBarAlwaysOff);
67 m_scroll->setVerticalScrollBarPolicy (Qt::ScrollBarAsNeeded);
68 m_scroll->setSizePolicy (QSizePolicy::Minimum,
69 QSizePolicy::Minimum);
70 m_scroll->setMinimumWidth (minimumWidth);
72 QWidget *viewport =
new QWidget (
this);
73 m_scroll->setWidget (viewport);
74 m_scroll->setWidgetResizable (
true);
76 QHBoxLayout *scrollLayout =
new QHBoxLayout (
this);
77 scrollLayout->addWidget (m_scroll);
78 setLayout (scrollLayout);
80 QVBoxLayout *panelLayout =
new QVBoxLayout (viewport);
81 viewport->setLayout (panelLayout);
83 panelLayout->addWidget (subPanel);
84 panelLayout->setStretch (panelLayout->count () - 1, STRETCH_ON);
86 QWidget *panelButtons =
new QWidget (
this);
87 QHBoxLayout *buttonLayout =
new QHBoxLayout (panelButtons);
91 QHBoxLayout *layoutRightSide =
new QHBoxLayout;
93 QWidget *widgetRightSide =
new QWidget;
94 widgetRightSide->setLayout (layoutRightSide);
95 buttonLayout->addWidget (widgetRightSide);
97 QSpacerItem *spacerExpanding =
new QSpacerItem (40, 5, QSizePolicy::Expanding, QSizePolicy::Expanding);
98 layoutRightSide->addItem (spacerExpanding);
100 m_btnOk =
new QPushButton (tr (
"Ok"));
101 m_btnOk->setEnabled (
false);
102 layoutRightSide->addWidget (m_btnOk, 0, Qt::AlignRight);
103 connect (m_btnOk, SIGNAL (released ()),
this, SLOT (slotOk ()));
105 QSpacerItem *spacerFixed =
new QSpacerItem (40, 5, QSizePolicy::Fixed, QSizePolicy::Fixed);
106 layoutRightSide->addItem (spacerFixed);
108 m_btnCancel =
new QPushButton (tr (
"Cancel"));
109 layoutRightSide->addWidget (m_btnCancel, 0, Qt::AlignRight);
110 connect (m_btnCancel, SIGNAL (released ()),
this, SLOT (slotCancel ()));
112 panelLayout->addWidget (panelButtons, STRETCH_ON);
113 panelLayout->setStretch (panelLayout->count () - 1, STRETCH_OFF);
115 setSizePolicy (QSizePolicy::Minimum,
116 QSizePolicy::Minimum);
118 if (minimumHeightOrZero > 0) {
119 m_scroll->setMinimumHeight (minimumHeightOrZero);
159void DlgSettingsAbstractBase::saveGeometryToSettings()
163 settings.setValue (m_dialogName, saveGeometry ());
173 m_disableOkAtStartup = disableOkAtStartup;
176void DlgSettingsAbstractBase::hideEvent (QHideEvent * )
178 saveGeometryToSettings();
181void DlgSettingsAbstractBase::showEvent (QShowEvent * )
183 if (m_disableOkAtStartup) {
184 m_btnOk->setEnabled (
false);
188 if (settings.contains (m_dialogName)) {
191 restoreGeometry (settings.value (m_dialogName).toByteArray ());
195void DlgSettingsAbstractBase::slotCancel ()
202void DlgSettingsAbstractBase::slotOk ()
QString colorPaletteToString(ColorPalette colorPalette)
@ COLOR_PALETTE_TRANSPARENT
#define ENGAUGE_CHECK_PTR(ptr)
#endif
log4cpp::Category * mainCat
const QString SETTINGS_ENGAUGE
const QString SETTINGS_DIGITIZER
DlgSettingsAbstractBase(const QString &title, const QString &dialogName, MainWindow &mainWindow)
Single constructor.
void setCmdMediator(CmdMediator &cmdMediator)
Store CmdMediator for easy access by the leaf class.
static int MINIMUM_DIALOG_WIDTH
Dialog layout constant that guarantees every widget has sufficient room. Can be increased by finishPa...
void finishPanel(QWidget *subPanel, int minimumWidth=MINIMUM_DIALOG_WIDTH, int minimumHeightOrZero=0)
Add Ok and Cancel buttons to subpanel to get the whole dialog.
void populateColorComboWithTransparent(QComboBox &combo)
Add colors in color palette to combobox, with transparent entry at end.
virtual void createOptionalSaveDefault(QHBoxLayout *layout)=0
Let subclass define an optional Save As Default button.
virtual ~DlgSettingsAbstractBase()
CmdMediator & cmdMediator()
Provide access to Document information wrapped inside CmdMediator.
void populateColorComboWithoutTransparent(QComboBox &combo)
Add colors in color palette to combobox, without transparent entry at end.
void enableOk(bool enable)
Let leaf subclass control the Ok button.
void setDisableOkAtStartup(bool disableOkAtStartup)
Override the default Ok button behavior applied in showEvent.
virtual void handleOk()=0
Process slotOk.
static int MINIMUM_PREVIEW_HEIGHT
Dialog layout constant that guarantees preview has sufficent room.
MainWindow & mainWindow()
Get method for MainWindow.
Main window consisting of menu, graphics scene, status bar and optional toolbars as a Single Document...
#define LOG4CPP_INFO_S(logger)