00001
00002
00003
00004
00005
00006
00007 #include "CmdMediator.h"
00008 #include "DlgSettingsAbstractBase.h"
00009 #include "EngaugeAssert.h"
00010 #include "Logger.h"
00011 #include "MainWindow.h"
00012 #include <QColor>
00013 #include <QComboBox>
00014 #include <QPushButton>
00015 #include <QSettings>
00016 #include <QSpacerItem>
00017 #include <QVBoxLayout>
00018
00019 int DlgSettingsAbstractBase::MINIMUM_DIALOG_WIDTH = 350;
00020 int DlgSettingsAbstractBase::MINIMUM_PREVIEW_HEIGHT = 200;
00021
00022 DlgSettingsAbstractBase::DlgSettingsAbstractBase(const QString &title,
00023 const QString &dialogName,
00024 MainWindow &mainWindow) :
00025 QDialog (&mainWindow),
00026 m_mainWindow (mainWindow),
00027 m_cmdMediator (0),
00028 m_dialogName (dialogName),
00029 m_disableOkAtStartup (true)
00030 {
00031 LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsAbstractBase::DlgSettingsAbstractBase"
00032 << " name=" << m_dialogName.toLatin1().data();
00033
00034 setWindowTitle (title);
00035 setModal (true);
00036 }
00037
00038 DlgSettingsAbstractBase::~DlgSettingsAbstractBase()
00039 {
00040 LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsAbstractBase::~DlgSettingsAbstractBase"
00041 << " name=" << m_dialogName.toLatin1().data();
00042 }
00043
00044 CmdMediator &DlgSettingsAbstractBase::cmdMediator ()
00045 {
00046 ENGAUGE_CHECK_PTR (m_cmdMediator);
00047
00048 return *m_cmdMediator;
00049 }
00050
00051 void DlgSettingsAbstractBase::enableOk (bool enable)
00052 {
00053 m_btnOk->setEnabled (enable);
00054 }
00055
00056 void DlgSettingsAbstractBase::finishPanel (QWidget *subPanel)
00057 {
00058 const int STRETCH_OFF = 0, STRETCH_ON = 1;
00059
00060 QVBoxLayout *panelLayout = new QVBoxLayout (this);
00061
00062 setMinimumWidth (MINIMUM_DIALOG_WIDTH);
00063 setLayout (panelLayout);
00064
00065 panelLayout->addWidget (subPanel);
00066 panelLayout->setStretch (panelLayout->count () - 1, STRETCH_ON);
00067
00068 QWidget *panelButtons = new QWidget (this);
00069 QHBoxLayout *buttonLayout = new QHBoxLayout (panelButtons);
00070
00071 createOptionalSaveDefault(buttonLayout);
00072
00073 QHBoxLayout *layoutRightSide = new QHBoxLayout;
00074
00075 QWidget *widgetRightSide = new QWidget;
00076 widgetRightSide->setLayout (layoutRightSide);
00077 buttonLayout->addWidget (widgetRightSide);
00078
00079 QSpacerItem *spacerExpanding = new QSpacerItem (40, 5, QSizePolicy::Expanding, QSizePolicy::Expanding);
00080 layoutRightSide->addItem (spacerExpanding);
00081
00082 m_btnOk = new QPushButton (tr ("Ok"));
00083 m_btnOk->setEnabled (false);
00084 layoutRightSide->addWidget (m_btnOk, 0, Qt::AlignRight);
00085 connect (m_btnOk, SIGNAL (released ()), this, SLOT (slotOk ()));
00086
00087 QSpacerItem *spacerFixed = new QSpacerItem (40, 5, QSizePolicy::Fixed, QSizePolicy::Fixed);
00088 layoutRightSide->addItem (spacerFixed);
00089
00090 m_btnCancel = new QPushButton (tr ("Cancel"));
00091 layoutRightSide->addWidget (m_btnCancel, 0, Qt::AlignRight);
00092 connect (m_btnCancel, SIGNAL (released ()), this, SLOT (slotCancel ()));
00093
00094 panelLayout->addWidget (panelButtons, STRETCH_ON);
00095 panelLayout->setStretch (panelLayout->count () - 1, STRETCH_OFF);
00096 }
00097
00098 MainWindow &DlgSettingsAbstractBase::mainWindow ()
00099 {
00100 return m_mainWindow;
00101 }
00102
00103 const MainWindow &DlgSettingsAbstractBase::mainWindow () const
00104 {
00105 return m_mainWindow;
00106 }
00107
00108 void DlgSettingsAbstractBase::populateColorComboWithoutTransparent (QComboBox &combo)
00109 {
00110 combo.addItem (colorPaletteToString (COLOR_PALETTE_BLUE),
00111 QVariant (COLOR_PALETTE_BLUE));
00112 combo.addItem (colorPaletteToString (COLOR_PALETTE_BLACK),
00113 QVariant (COLOR_PALETTE_BLACK));
00114 combo.addItem (colorPaletteToString (COLOR_PALETTE_CYAN),
00115 QVariant (COLOR_PALETTE_CYAN));
00116 combo.addItem (colorPaletteToString (COLOR_PALETTE_GOLD),
00117 QVariant (COLOR_PALETTE_GOLD));
00118 combo.addItem (colorPaletteToString (COLOR_PALETTE_GREEN),
00119 QVariant (COLOR_PALETTE_GREEN));
00120 combo.addItem (colorPaletteToString (COLOR_PALETTE_MAGENTA),
00121 QVariant (COLOR_PALETTE_MAGENTA));
00122 combo.addItem (colorPaletteToString (COLOR_PALETTE_RED),
00123 QVariant (COLOR_PALETTE_RED));
00124 combo.addItem (colorPaletteToString (COLOR_PALETTE_YELLOW),
00125 QVariant (COLOR_PALETTE_YELLOW));
00126 }
00127
00128 void DlgSettingsAbstractBase::populateColorComboWithTransparent (QComboBox &combo)
00129 {
00130 populateColorComboWithoutTransparent (combo);
00131 combo.addItem ("Transparent", QVariant (COLOR_PALETTE_TRANSPARENT));
00132 }
00133
00134 void DlgSettingsAbstractBase::saveGeometryToSettings()
00135 {
00136
00137 QSettings settings;
00138 settings.setValue (m_dialogName, saveGeometry ());
00139 }
00140
00141 void DlgSettingsAbstractBase::setCmdMediator (CmdMediator &cmdMediator)
00142 {
00143 m_cmdMediator = &cmdMediator;
00144 }
00145
00146 void DlgSettingsAbstractBase::setDisableOkAtStartup(bool disableOkAtStartup)
00147 {
00148 m_disableOkAtStartup = disableOkAtStartup;
00149 }
00150
00151 void DlgSettingsAbstractBase::showEvent (QShowEvent * )
00152 {
00153 if (m_disableOkAtStartup) {
00154 m_btnOk->setEnabled (false);
00155 }
00156
00157 QSettings settings;
00158 if (settings.contains (m_dialogName)) {
00159
00160
00161 restoreGeometry (settings.value (m_dialogName).toByteArray ());
00162 }
00163 }
00164
00165 void DlgSettingsAbstractBase::slotCancel ()
00166 {
00167 LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsAbstractBase::slotCancel";
00168
00169 saveGeometryToSettings();
00170 hide();
00171 }
00172
00173 void DlgSettingsAbstractBase::slotOk ()
00174 {
00175 LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsAbstractBase::slotOk";
00176
00177 saveGeometryToSettings();
00178
00179
00180 handleOk ();
00181 }