瀏覽代碼

Merge branch 'improve-ctkSettings-api'

* improve-ctkSettings-api:
  ctkSettingsDialog - Add "acceptSettings" method for customized behavior
Jean-Christophe Fillion-Robin 14 年之前
父節點
當前提交
3744a5e157

+ 12 - 1
Libs/Widgets/ctkSettingsDialog.cpp

@@ -215,7 +215,7 @@ ctkSettingsPanel* ctkSettingsDialog::panel(const QString& label)const
 // --------------------------------------------------------------------------
 void ctkSettingsDialog::accept()
 {
-  this->applySettings();
+  this->acceptSettings();
   this->Superclass::accept();
 }
 
@@ -227,6 +227,17 @@ void ctkSettingsDialog::reject()
 }
 
 // --------------------------------------------------------------------------
+void ctkSettingsDialog::acceptSettings()
+{
+  Q_D(ctkSettingsDialog);
+  foreach(ctkSettingsPanel* panel, d->Panels.values())
+    {
+    panel->acceptSettings();
+    }
+  d->SettingsButtonBox->button(QDialogButtonBox::Reset)->setEnabled(false);
+}
+
+// --------------------------------------------------------------------------
 void ctkSettingsDialog::applySettings()
 {
   Q_D(ctkSettingsDialog);

+ 1 - 0
Libs/Widgets/ctkSettingsDialog.h

@@ -62,6 +62,7 @@ public slots:
   void setCurrentPanel(ctkSettingsPanel* panel);
   void setCurrentPanel(const QString& label);
 
+  void acceptSettings();
   void applySettings();
   void resetSettings();
   void restoreDefaultSettings();

+ 6 - 0
Libs/Widgets/ctkSettingsPanel.cpp

@@ -227,6 +227,12 @@ void ctkSettingsPanel::registerProperty(const QString& key,
 }
 
 // --------------------------------------------------------------------------
+void ctkSettingsPanel::acceptSettings()
+{
+  this->applySettings();
+}
+
+// --------------------------------------------------------------------------
 void ctkSettingsPanel::applySettings()
 {
   Q_D(ctkSettingsPanel);

+ 4 - 0
Libs/Widgets/ctkSettingsPanel.h

@@ -64,6 +64,10 @@ public:
   void setSetting(const QString& key, const QVariant& newVal);
 
 public slots:
+
+  /// By default, it calls applySettings()
+  virtual void acceptSettings();
+
   /// Forget the old property values so next time resetSettings is called it
   /// will set the properties with the same values when applySettings() is
   /// called.