]> git.sesse.net Git - vlc/blobdiff - modules/gui/qt4/dialogs/preferences.cpp
Destroy preferences dialog on close and on reset.
[vlc] / modules / gui / qt4 / dialogs / preferences.cpp
index d48b00a3865326eae8c02ba28cb94bcee4ffe892..a841f700433f33fff47544e34d9a6cfa06b682f7 100644 (file)
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  *****************************************************************************/
 
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
 #include "dialogs/preferences.hpp"
 #include "dialogs_provider.hpp"
 #include "util/qvlcframe.hpp"
@@ -46,6 +50,10 @@ PrefsDialog::PrefsDialog( QWidget *parent, intf_thread_t *_p_intf )
     QGridLayout *main_layout = new QGridLayout( this );
     setWindowTitle( qtr( "Preferences" ) );
 
+    /* Whether we want it or not, we need to destroy on close to get
+       consistency when reset */
+    setAttribute( Qt::WA_DeleteOnClose );
+
     /* Create Panels */
     tree_panel = new QWidget;
     tree_panel_l = new QHBoxLayout;
@@ -59,7 +67,7 @@ PrefsDialog::PrefsDialog( QWidget *parent, intf_thread_t *_p_intf )
     types->setAlignment( Qt::AlignHCenter );
     QHBoxLayout *types_l = new QHBoxLayout;
     types_l->setSpacing( 3 ); types_l->setMargin( 3 );
-    small = new QRadioButton( qtr("Basic"), types );
+    small = new QRadioButton( qtr( "Simple" ), types );
     types_l->addWidget( small );
     all = new QRadioButton( qtr("All"), types ); types_l->addWidget( all );
     types->setLayout( types_l );
@@ -79,25 +87,28 @@ PrefsDialog::PrefsDialog( QWidget *parent, intf_thread_t *_p_intf )
 
     buttonsBox->addButton( save, QDialogButtonBox::AcceptRole );
     buttonsBox->addButton( cancel, QDialogButtonBox::RejectRole );
-    buttonsBox->addButton( reset, QDialogButtonBox::ActionRole );
+    buttonsBox->addButton( reset, QDialogButtonBox::ResetRole );
 
     /* Layout  */
     main_layout->addWidget( tree_panel, 0, 0, 3, 1 );
     main_layout->addWidget( types, 3, 0, 2, 1 );
-    main_layout->addWidget( main_panel, 0, 1, 4, 1 );
-    main_layout->addWidget( buttonsBox, 4, 1, 1 ,2 );
+    main_layout->addWidget( main_panel, 0, 1, 4, 2 );
+    main_layout->addWidget( buttonsBox, 4, 2, 1 ,1 );
 
     main_layout->setColumnMinimumWidth( 0, 150 );
+    main_layout->setColumnMinimumWidth( 1, 10 );
     main_layout->setColumnStretch( 0, 1 );
-    main_layout->setColumnStretch( 1, 3 );
+    main_layout->setColumnStretch( 1, 0 );
+    main_layout->setColumnStretch( 2, 3 );
 
     main_layout->setRowStretch( 2, 4 );
 
+    main_layout->setMargin( 9 );
     setLayout( main_layout );
 
     /* Margins */
     tree_panel_l->setMargin( 1 );
-    main_panel_l->setMargin( 3 );
+    main_panel_l->setLayoutMargins( 6, 0, 0, 3, 3 );
 
     for( int i = 0; i < SPrefsMax ; i++ ) simple_panels[i] = NULL;
 
@@ -280,6 +291,14 @@ void PrefsDialog::save()
     /* Save to file */
     config_SaveConfigFile( p_intf, NULL );
 
+    destroyPanels();
+
+    hide();
+}
+
+void PrefsDialog::destroyPanels()
+{
+    msg_Dbg( p_intf, "Destroying the Panels" );
     /* Delete the other panel in order to force its reload after clicking
        on apply. In fact, if we don't do that, the preferences from the other
        panels won't be accurate, so we would have to recreate the whole dialog,
@@ -304,10 +323,9 @@ void PrefsDialog::save()
         }
         current_simple_panel  = NULL;
     }
-
-    hide();
 }
 
+
 /* Clean the preferences, dunno if it does something really */
 void PrefsDialog::cancel()
 {
@@ -339,5 +357,8 @@ void PrefsDialog::reset()
     {
         config_ResetAll( p_intf );
         config_SaveConfigFile( p_intf, NULL );
+
+        instance = NULL;
+        close();
     }
 }