Engauge Digitizer  2
Public Member Functions | Protected Member Functions | Static Protected Attributes | List of all members
DlgSettingsAbstractBase Class Referenceabstract

Abstract base class for all Settings dialogs. More...

#include <DlgSettingsAbstractBase.h>

Inheritance diagram for DlgSettingsAbstractBase:
Inheritance graph
Collaboration diagram for DlgSettingsAbstractBase:
Collaboration graph

Public Member Functions

 DlgSettingsAbstractBase (const QString &title, const QString &dialogName, MainWindow &mainWindow)
 Single constructor. More...
 
virtual ~DlgSettingsAbstractBase ()
 

Protected Member Functions

CmdMediatorcmdMediator ()
 Provide access to Document information wrapped inside CmdMediator. More...
 
virtual void createOptionalSaveDefault (QHBoxLayout *layout)=0
 Let subclass define an optional Save As Default button. More...
 
virtual QWidget * createSubPanel ()=0
 Create dialog-specific panel to which base class will add Ok and Cancel buttons. More...
 
void enableOk (bool enable)
 Let leaf subclass control the Ok button. More...
 
void finishPanel (QWidget *subPanel, int minimumWidth=MINIMUM_DIALOG_WIDTH, int minimumHeightOrZero=0)
 Add Ok and Cancel buttons to subpanel to get the whole dialog. More...
 
virtual void handleOk ()=0
 Process slotOk. More...
 
virtual void load (CmdMediator &cmdMediator)=0
 Load settings from Document. More...
 
MainWindowmainWindow ()
 Get method for MainWindow. More...
 
const MainWindowmainWindow () const
 Const get method for MainWindow. More...
 
void populateColorComboWithoutTransparent (QComboBox &combo)
 Add colors in color palette to combobox, without transparent entry at end. More...
 
void populateColorComboWithTransparent (QComboBox &combo)
 Add colors in color palette to combobox, with transparent entry at end. More...
 
void setCmdMediator (CmdMediator &cmdMediator)
 Store CmdMediator for easy access by the leaf class. More...
 
void setDisableOkAtStartup (bool disableOkAtStartup)
 Override the default Ok button behavior applied in showEvent. More...
 
virtual void setSmallDialogs (bool smallDialogs)=0
 If false then dialogs have a minimum size so all controls are visible. More...
 

Static Protected Attributes

static int MINIMUM_DIALOG_WIDTH = 380
 Dialog layout constant that guarantees every widget has sufficient room. Can be increased by finishPanel. More...
 
static int MINIMUM_PREVIEW_HEIGHT = 100
 Dialog layout constant that guarantees preview has sufficent room. More...
 

Detailed Description

Abstract base class for all Settings dialogs.

Definition at line 19 of file DlgSettingsAbstractBase.h.

Constructor & Destructor Documentation

◆ DlgSettingsAbstractBase()

DlgSettingsAbstractBase::DlgSettingsAbstractBase ( const QString &  title,
const QString &  dialogName,
MainWindow mainWindow 
)

Single constructor.

Definition at line 23 of file DlgSettingsAbstractBase.cpp.

26  :
27  QDialog (&mainWindow),
28  m_mainWindow (mainWindow),
29  m_cmdMediator (nullptr),
30  m_dialogName (dialogName),
31  m_disableOkAtStartup (true)
32 {
33  LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsAbstractBase::DlgSettingsAbstractBase"
34  << " name=" << m_dialogName.toLatin1().data();
35 
36  setWindowTitle (title);
37  setModal (true);

◆ ~DlgSettingsAbstractBase()

DlgSettingsAbstractBase::~DlgSettingsAbstractBase ( )
virtual

Definition at line 39 of file DlgSettingsAbstractBase.cpp.

41 {
42  LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsAbstractBase::~DlgSettingsAbstractBase"
43  << " name=" << m_dialogName.toLatin1().data();

Member Function Documentation

◆ cmdMediator()

CmdMediator & DlgSettingsAbstractBase::cmdMediator ( )
protected

Provide access to Document information wrapped inside CmdMediator.

Definition at line 45 of file DlgSettingsAbstractBase.cpp.

47 {
48  ENGAUGE_CHECK_PTR (m_cmdMediator);
49 
50  return *m_cmdMediator;

◆ createOptionalSaveDefault()

virtual void DlgSettingsAbstractBase::createOptionalSaveDefault ( QHBoxLayout *  layout)
protectedpure virtual

◆ createSubPanel()

virtual QWidget* DlgSettingsAbstractBase::createSubPanel ( )
protectedpure virtual

◆ enableOk()

void DlgSettingsAbstractBase::enableOk ( bool  enable)
protected

Let leaf subclass control the Ok button.

This method is separate from the subclasses' updateControls, rather than part of that method since updateControls is not aware of when it is called at startup - at which point the ok button should ALWAYS be disabled since there are not yet any changes. In other words, we call this method at startup to override the ok button state that was just set by updateControls

Note - if this method is called with a constant value of true from updateControls, one of two cases applies: 1) There are no constraints to worry about (like a required text field cannot be empty) 2) There are constraints, but they are already handled by validators and/or other constraint logic

Definition at line 52 of file DlgSettingsAbstractBase.cpp.

54 {
55  m_btnOk->setEnabled (enable);

◆ finishPanel()

void DlgSettingsAbstractBase::finishPanel ( QWidget *  subPanel,
int  minimumWidth = MINIMUM_DIALOG_WIDTH,
int  minimumHeightOrZero = 0 
)
protected

Add Ok and Cancel buttons to subpanel to get the whole dialog.

Definition at line 57 of file DlgSettingsAbstractBase.cpp.

61 {
62  const int STRETCH_OFF = 0, STRETCH_ON = 1;
63 
64  m_scroll = new QScrollArea (this);
65  m_scroll->setStyleSheet ("QScrollArea { border: 0; margin: 0; padding: 0;}"); // Need QScrollArea or interior frames are affected
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);
71 
72  QWidget *viewport = new QWidget (this);
73  m_scroll->setWidget (viewport);
74  m_scroll->setWidgetResizable (true);
75 
76  QHBoxLayout *scrollLayout = new QHBoxLayout (this);
77  scrollLayout->addWidget (m_scroll);
78  setLayout (scrollLayout);
79 
80  QVBoxLayout *panelLayout = new QVBoxLayout (viewport);
81  viewport->setLayout (panelLayout);
82 
83  panelLayout->addWidget (subPanel);
84  panelLayout->setStretch (panelLayout->count () - 1, STRETCH_ON);
85 
86  QWidget *panelButtons = new QWidget (this);
87  QHBoxLayout *buttonLayout = new QHBoxLayout (panelButtons);
88 
89  createOptionalSaveDefault(buttonLayout);
90 
91  QHBoxLayout *layoutRightSide = new QHBoxLayout;
92 
93  QWidget *widgetRightSide = new QWidget;
94  widgetRightSide->setLayout (layoutRightSide);
95  buttonLayout->addWidget (widgetRightSide);
96 
97  QSpacerItem *spacerExpanding = new QSpacerItem (40, 5, QSizePolicy::Expanding, QSizePolicy::Expanding);
98  layoutRightSide->addItem (spacerExpanding);
99 
100  m_btnOk = new QPushButton (tr ("Ok"));
101  m_btnOk->setEnabled (false); // Nothing to save initially
102  layoutRightSide->addWidget (m_btnOk, 0, Qt::AlignRight);
103  connect (m_btnOk, SIGNAL (released ()), this, SLOT (slotOk ()));
104 
105  QSpacerItem *spacerFixed = new QSpacerItem (40, 5, QSizePolicy::Fixed, QSizePolicy::Fixed);
106  layoutRightSide->addItem (spacerFixed);
107 
108  m_btnCancel = new QPushButton (tr ("Cancel"));
109  layoutRightSide->addWidget (m_btnCancel, 0, Qt::AlignRight);
110  connect (m_btnCancel, SIGNAL (released ()), this, SLOT (slotCancel ()));
111 
112  panelLayout->addWidget (panelButtons, STRETCH_ON);
113  panelLayout->setStretch (panelLayout->count () - 1, STRETCH_OFF);
114 
115  setSizePolicy (QSizePolicy::Minimum,
116  QSizePolicy::Minimum);
117 
118  if (minimumHeightOrZero > 0) {
119  m_scroll->setMinimumHeight (minimumHeightOrZero);
120  }

◆ handleOk()

virtual void DlgSettingsAbstractBase::handleOk ( )
protectedpure virtual

◆ load()

virtual void DlgSettingsAbstractBase::load ( CmdMediator cmdMediator)
protectedpure virtual

◆ mainWindow() [1/2]

MainWindow & DlgSettingsAbstractBase::mainWindow ( )
protected

Get method for MainWindow.

Definition at line 122 of file DlgSettingsAbstractBase.cpp.

124 {
125  return m_mainWindow;

◆ mainWindow() [2/2]

const MainWindow & DlgSettingsAbstractBase::mainWindow ( ) const
protected

Const get method for MainWindow.

Definition at line 127 of file DlgSettingsAbstractBase.cpp.

129 {
130  return m_mainWindow;

◆ populateColorComboWithoutTransparent()

void DlgSettingsAbstractBase::populateColorComboWithoutTransparent ( QComboBox &  combo)
protected

Add colors in color palette to combobox, without transparent entry at end.

Definition at line 132 of file DlgSettingsAbstractBase.cpp.

134 {
135  combo.addItem (colorPaletteToString (COLOR_PALETTE_BLUE),
136  QVariant (COLOR_PALETTE_BLUE));
137  combo.addItem (colorPaletteToString (COLOR_PALETTE_BLACK),
138  QVariant (COLOR_PALETTE_BLACK));
139  combo.addItem (colorPaletteToString (COLOR_PALETTE_CYAN),
140  QVariant (COLOR_PALETTE_CYAN));
141  combo.addItem (colorPaletteToString (COLOR_PALETTE_GOLD),
142  QVariant (COLOR_PALETTE_GOLD));
143  combo.addItem (colorPaletteToString (COLOR_PALETTE_GREEN),
144  QVariant (COLOR_PALETTE_GREEN));
146  QVariant (COLOR_PALETTE_MAGENTA));
147  combo.addItem (colorPaletteToString (COLOR_PALETTE_RED),
148  QVariant (COLOR_PALETTE_RED));
150  QVariant (COLOR_PALETTE_YELLOW));

◆ populateColorComboWithTransparent()

void DlgSettingsAbstractBase::populateColorComboWithTransparent ( QComboBox &  combo)
protected

Add colors in color palette to combobox, with transparent entry at end.

Definition at line 152 of file DlgSettingsAbstractBase.cpp.

154 {
156  combo.addItem ("Transparent", QVariant (COLOR_PALETTE_TRANSPARENT));

◆ setCmdMediator()

void DlgSettingsAbstractBase::setCmdMediator ( CmdMediator cmdMediator)
protected

Store CmdMediator for easy access by the leaf class.

Definition at line 165 of file DlgSettingsAbstractBase.cpp.

167 {
168  m_cmdMediator = &cmdMediator;

◆ setDisableOkAtStartup()

void DlgSettingsAbstractBase::setDisableOkAtStartup ( bool  disableOkAtStartup)
protected

Override the default Ok button behavior applied in showEvent.

Definition at line 170 of file DlgSettingsAbstractBase.cpp.

172 {
173  m_disableOkAtStartup = disableOkAtStartup;

◆ setSmallDialogs()

virtual void DlgSettingsAbstractBase::setSmallDialogs ( bool  smallDialogs)
protectedpure virtual

Member Data Documentation

◆ MINIMUM_DIALOG_WIDTH

int DlgSettingsAbstractBase::MINIMUM_DIALOG_WIDTH = 380
staticprotected

Dialog layout constant that guarantees every widget has sufficient room. Can be increased by finishPanel.

Definition at line 62 of file DlgSettingsAbstractBase.h.

◆ MINIMUM_PREVIEW_HEIGHT

int DlgSettingsAbstractBase::MINIMUM_PREVIEW_HEIGHT = 100
staticprotected

Dialog layout constant that guarantees preview has sufficent room.

Definition at line 65 of file DlgSettingsAbstractBase.h.


The documentation for this class was generated from the following files:
COLOR_PALETTE_CYAN
Definition: ColorPalette.h:17
DlgSettingsAbstractBase::mainWindow
MainWindow & mainWindow()
Get method for MainWindow.
Definition: DlgSettingsAbstractBase.cpp:122
COLOR_PALETTE_BLACK
Definition: ColorPalette.h:15
COLOR_PALETTE_MAGENTA
Definition: ColorPalette.h:20
COLOR_PALETTE_BLUE
Definition: ColorPalette.h:16
DlgSettingsAbstractBase::createOptionalSaveDefault
virtual void createOptionalSaveDefault(QHBoxLayout *layout)=0
Let subclass define an optional Save As Default button.
ENGAUGE_CHECK_PTR
#define ENGAUGE_CHECK_PTR(ptr)
#endif
Definition: EngaugeAssert.h:26
DlgSettingsAbstractBase::populateColorComboWithoutTransparent
void populateColorComboWithoutTransparent(QComboBox &combo)
Add colors in color palette to combobox, without transparent entry at end.
Definition: DlgSettingsAbstractBase.cpp:132
COLOR_PALETTE_RED
Definition: ColorPalette.h:21
LOG4CPP_INFO_S
#define LOG4CPP_INFO_S(logger)
Definition: convenience.h:18
COLOR_PALETTE_GOLD
Definition: ColorPalette.h:18
mainCat
log4cpp::Category * mainCat
Definition: Logger.cpp:14
colorPaletteToString
QString colorPaletteToString(ColorPalette colorPalette)
Definition: ColorPalette.cpp:9
COLOR_PALETTE_YELLOW
Definition: ColorPalette.h:22
COLOR_PALETTE_GREEN
Definition: ColorPalette.h:19
DlgSettingsAbstractBase::cmdMediator
CmdMediator & cmdMediator()
Provide access to Document information wrapped inside CmdMediator.
Definition: DlgSettingsAbstractBase.cpp:45
COLOR_PALETTE_TRANSPARENT
Definition: ColorPalette.h:23