Engauge Digitizer  2
DlgSettingsAbstractBase.h
Go to the documentation of this file.
1 /******************************************************************************************************
2  * (C) 2014 markummitchell@github.com. This file is part of Engauge Digitizer, which is released *
3  * under GNU General Public License version 2 (GPLv2) or (at your option) any later version. See file *
4  * LICENSE or go to gnu.org/licenses for details. Distribution requires prior written permission. *
5  ******************************************************************************************************/
6 
7 #ifndef DLG_SETTINGS_ABSTRACT_BASE_H
8 #define DLG_SETTINGS_ABSTRACT_BASE_H
9 
10 #include <QDialog>
11 #include <QObject>
12 
13 class CmdMediator;
14 class MainWindow;
15 class QComboBox;
16 class QHBoxLayout;
17 class QScrollArea;
18 
20 class DlgSettingsAbstractBase : public QDialog
21 {
22  Q_OBJECT;
23 
24 public:
26  DlgSettingsAbstractBase(const QString &title,
27  const QString &dialogName,
29  virtual ~DlgSettingsAbstractBase();
30 
31 protected:
34 
36  virtual void createOptionalSaveDefault (QHBoxLayout *layout) = 0;
37 
39  virtual QWidget *createSubPanel () = 0;
40 
49  void enableOk (bool enable);
50 
52  void finishPanel (QWidget *subPanel,
53  int minimumWidth = MINIMUM_DIALOG_WIDTH,
54  int minimumHeightOrZero = 0);
55 
57  virtual void handleOk () = 0;
58 
60  virtual void load (CmdMediator &cmdMediator) = 0;
61 
63  static int MINIMUM_DIALOG_WIDTH;
64 
66  static int MINIMUM_PREVIEW_HEIGHT;
67 
70 
72  const MainWindow &mainWindow () const;
73 
75  void populateColorComboWithoutTransparent (QComboBox &combo);
76 
78  void populateColorComboWithTransparent (QComboBox &combo);
79 
82 
84  void setDisableOkAtStartup(bool disableOkAtStartup);
85 
87  virtual void setSmallDialogs (bool smallDialogs) = 0;
88 
89 private slots:
90 
92  void slotCancel();
93 
95  void slotOk ();
96 
97 private:
99 
100  void saveGeometryToSettings ();
101 
103  virtual void hideEvent (QHideEvent *event);
104 
106  virtual void showEvent (QShowEvent *event);
107 
108  QScrollArea *m_scroll;
109  MainWindow &m_mainWindow;
110  CmdMediator *m_cmdMediator; // Cannot be const since Document gets a command pushed if dialog is ok'ed
111  QPushButton *m_btnCancel;
112  QPushButton *m_btnOk;
113 
114  const QString m_dialogName;
115  bool m_disableOkAtStartup;
116 };
117 
118 #endif // DLG_SETTINGS_ABSTRACT_BASE_H
DlgSettingsAbstractBase::MINIMUM_DIALOG_WIDTH
static int MINIMUM_DIALOG_WIDTH
Dialog layout constant that guarantees every widget has sufficient room. Can be increased by finishPa...
Definition: DlgSettingsAbstractBase.h:62
DlgSettingsAbstractBase::setDisableOkAtStartup
void setDisableOkAtStartup(bool disableOkAtStartup)
Override the default Ok button behavior applied in showEvent.
Definition: DlgSettingsAbstractBase.cpp:170
DlgSettingsAbstractBase::mainWindow
MainWindow & mainWindow()
Get method for MainWindow.
Definition: DlgSettingsAbstractBase.cpp:122
DlgSettingsAbstractBase
Abstract base class for all Settings dialogs.
Definition: DlgSettingsAbstractBase.h:19
DlgSettingsAbstractBase::~DlgSettingsAbstractBase
virtual ~DlgSettingsAbstractBase()
Definition: DlgSettingsAbstractBase.cpp:39
DlgSettingsAbstractBase::setSmallDialogs
virtual void setSmallDialogs(bool smallDialogs)=0
If false then dialogs have a minimum size so all controls are visible.
DlgSettingsAbstractBase::finishPanel
void finishPanel(QWidget *subPanel, int minimumWidth=MINIMUM_DIALOG_WIDTH, int minimumHeightOrZero=0)
Add Ok and Cancel buttons to subpanel to get the whole dialog.
Definition: DlgSettingsAbstractBase.cpp:57
DlgSettingsAbstractBase::setCmdMediator
void setCmdMediator(CmdMediator &cmdMediator)
Store CmdMediator for easy access by the leaf class.
Definition: DlgSettingsAbstractBase.cpp:165
DlgSettingsAbstractBase::createOptionalSaveDefault
virtual void createOptionalSaveDefault(QHBoxLayout *layout)=0
Let subclass define an optional Save As Default button.
DlgSettingsAbstractBase::createSubPanel
virtual QWidget * createSubPanel()=0
Create dialog-specific panel to which base class will add Ok and Cancel buttons.
MainWindow
Main window consisting of menu, graphics scene, status bar and optional toolbars as a Single Document...
Definition: MainWindow.h:90
DlgSettingsAbstractBase::populateColorComboWithoutTransparent
void populateColorComboWithoutTransparent(QComboBox &combo)
Add colors in color palette to combobox, without transparent entry at end.
Definition: DlgSettingsAbstractBase.cpp:132
DlgSettingsAbstractBase::MINIMUM_PREVIEW_HEIGHT
static int MINIMUM_PREVIEW_HEIGHT
Dialog layout constant that guarantees preview has sufficent room.
Definition: DlgSettingsAbstractBase.h:65
DlgSettingsAbstractBase::enableOk
void enableOk(bool enable)
Let leaf subclass control the Ok button.
Definition: DlgSettingsAbstractBase.cpp:52
DlgSettingsAbstractBase::load
virtual void load(CmdMediator &cmdMediator)=0
Load settings from Document.
CmdMediator
Command queue stack.
Definition: CmdMediator.h:22
DlgSettingsAbstractBase::populateColorComboWithTransparent
void populateColorComboWithTransparent(QComboBox &combo)
Add colors in color palette to combobox, with transparent entry at end.
Definition: DlgSettingsAbstractBase.cpp:152
DlgSettingsAbstractBase::cmdMediator
CmdMediator & cmdMediator()
Provide access to Document information wrapped inside CmdMediator.
Definition: DlgSettingsAbstractBase.cpp:45
DlgSettingsAbstractBase::handleOk
virtual void handleOk()=0
Process slotOk.