]> git.sesse.net Git - vlc/commitdiff
Stop allocating QSettings all the time everywhere.
authorJean-Baptiste Kempf <jb@videolan.org>
Tue, 29 Jul 2008 23:59:33 +0000 (16:59 -0700)
committerJean-Baptiste Kempf <jb@videolan.org>
Tue, 29 Jul 2008 23:59:33 +0000 (16:59 -0700)
12 files changed:
modules/gui/qt4/components/open_panels.cpp
modules/gui/qt4/components/playlist/playlist.cpp
modules/gui/qt4/components/playlist/playlist.hpp
modules/gui/qt4/components/playlist/playlist_item.cpp
modules/gui/qt4/components/playlist/playlist_item.hpp
modules/gui/qt4/components/playlist/playlist_model.cpp
modules/gui/qt4/dialogs/playlist.cpp
modules/gui/qt4/dialogs/playlist.hpp
modules/gui/qt4/main_interface.cpp
modules/gui/qt4/qt4.cpp
modules/gui/qt4/qt4.hpp
modules/gui/qt4/util/qvlcframe.hpp

index 7028c62aa77bfaf9596e7c6de295fb0c80ef5d23..a37dc279d2562c650b197a7624abadc102954d8a 100644 (file)
@@ -44,7 +44,6 @@
 #include <QDirModel>
 #include <QScrollArea>
 #include <QUrl>
-#include <QSettings>
 
 #define I_DEVICE_TOOLTIP "Select the device or the VIDEO_TS directory"
 
@@ -78,9 +77,8 @@ FileOpenPanel::FileOpenPanel( QWidget *_parent, intf_thread_t *_p_intf ) :
     dialogBox->setFileMode( QFileDialog::ExistingFiles );
     dialogBox->setAcceptMode( QFileDialog::AcceptOpen );
 #if HAS_QT43
-    QSettings settings( "vlc", "vlc-qt-interface" );
     dialogBox->restoreState(
-            settings.value( "file-dialog-state" ).toByteArray() );
+            getSettings()->value( "file-dialog-state" ).toByteArray() );
 #endif
 
     /* We don't want to see a grip in the middle of the window, do we? */
@@ -145,8 +143,7 @@ FileOpenPanel::FileOpenPanel( QWidget *_parent, intf_thread_t *_p_intf ) :
 FileOpenPanel::~FileOpenPanel()
 {
 #if HAS_QT43
-    QSettings settings( "vlc", "vlc-qt-interface" );
-    settings.setValue( "file-dialog-state", dialogBox->saveState() );
+    getSettings()->setValue( "file-dialog-state", dialogBox->saveState() );
 #endif
 }
 
index e8d654e4421488eb24a2ca991a185c68d3d0a9a2..621c251b2fd9dbe55e9999e48aae33bbe5ee63f5 100644 (file)
@@ -43,7 +43,6 @@
  **********************************************************************/
 
 PlaylistWidget::PlaylistWidget( intf_thread_t *_p_i,
-                                QSettings *settings,
                                 QWidget *_parent )
                : p_intf ( _p_i ), parent( _parent )
 {
@@ -122,8 +121,8 @@ PlaylistWidget::PlaylistWidget( intf_thread_t *_p_i,
     /* In case we want to keep the splitter informations */
     // components shall never write there setting to a fixed location, may infer
     // with other uses of the same component...
-    // settings->beginGroup( "playlist" );
-    restoreState( settings->value("splitterSizes").toByteArray());
+    // getSettings()->beginGroup( "playlist" );
+    restoreState( getSettings()->value("splitterSizes").toByteArray());
 }
 
 void PlaylistWidget::setArt( QString url )
@@ -143,8 +142,8 @@ QSize PlaylistWidget::sizeHint() const
 PlaylistWidget::~PlaylistWidget()
 {}
 
-void PlaylistWidget::savingSettings( QSettings *settings )
+void PlaylistWidget::savingSettings()
 {
-    settings->setValue( "splitterSizes", saveState() );
+    getSettings()->setValue( "splitterSizes", saveState() );
 }
 
index 86fe50b2c2fc9c4fd3de824ef78c1360697f2fa0..c83456a1cd080db3cabca9523c0dfdbd2849e75b 100644 (file)
 class PLSelector;
 class PLPanel;
 class QPushButton;
-class QSettings;
 
 class PlaylistWidget : public QSplitter
 {
     Q_OBJECT;
 public:
-    PlaylistWidget( intf_thread_t *_p_i, QSettings *settings, QWidget *parent ) ;
+    PlaylistWidget( intf_thread_t *_p_i, QWidget *parent ) ;
     virtual ~PlaylistWidget();
     QSize sizeHint() const;
-    void savingSettings( QSettings *settings );
+    void savingSettings();
 private:
     PLSelector *selector;
     PLPanel *rightPanel;
index d9f97e56e254c03e300f4c381efb03645823487d..a64cb166704e96d7c45040a1618adc60903fce07 100644 (file)
@@ -48,7 +48,7 @@
 */
 
 
-void PLItem::init( int _i_id, int _i_input_id, PLItem *parent, PLModel *m )
+void PLItem::init( int _i_id, int _i_input_id, PLItem *parent, PLModel *m, QSettings *settings )
 {
     parentItem = parent;          /* Can be NULL, but only for the rootItem */
     i_id       = _i_id;           /* Playlist item specific id */
@@ -68,8 +68,7 @@ void PLItem::init( int _i_id, int _i_input_id, PLItem *parent, PLModel *m )
         }
         else
         {
-            QSettings settings( "vlc", "vlc-qt-interface" );
-            i_showflags = settings.value( "qt-pl-showflags", 39 ).toInt();
+            i_showflags = settings->value( "qt-pl-showflags", 39 ).toInt();
             if( i_showflags < 1)
                 i_showflags = 39; /* reasonable default to show something; */
             else if ( i_showflags >= COLUMN_END )
@@ -93,12 +92,17 @@ void PLItem::init( int _i_id, int _i_input_id, PLItem *parent, PLModel *m )
    */
 PLItem::PLItem( int _i_id, int _i_input_id, PLItem *parent, PLModel *m )
 {
-    init( _i_id, _i_input_id, parent, m );
+    init( _i_id, _i_input_id, parent, m, NULL );
 }
 
 PLItem::PLItem( playlist_item_t * p_item, PLItem *parent, PLModel *m )
 {
-    init( p_item->i_id, p_item->p_input->i_id, parent, m );
+    init( p_item->i_id, p_item->p_input->i_id, parent, m, NULL );
+}
+
+PLItem::PLItem( playlist_item_t * p_item, QSettings *settings, PLModel *m )
+{
+    init( p_item->i_id, p_item->p_input->i_id, NULL, m, settings );
 }
 
 PLItem::~PLItem()
index bd2b8d1049a4df60263bb99ccc6288b19e3caffa..885de1a0ff6f161518f810d0b3f0b7ad7ec5201e 100644 (file)
@@ -36,6 +36,7 @@
 #include <QString>
 #include <QList>
 
+class QSettings;
 class PLModel;
 
 class PLItem
@@ -44,6 +45,7 @@ class PLItem
 public:
     PLItem( int, int, PLItem *parent , PLModel * );
     PLItem( playlist_item_t *, PLItem *parent, PLModel * );
+    PLItem( playlist_item_t *, QSettings *, PLModel * );
     ~PLItem();
 
     int row() const;
@@ -75,7 +77,7 @@ protected:
     int i_showflags;
 
 private:
-    void init( int, int, PLItem *, PLModel * );
+    void init( int, int, PLItem *, PLModel *, QSettings * );
     void updateColumnHeaders();
     PLItem *parentItem;
     PLModel *model;
index 74c1b50c8f6f9a4cd6e49a3b238bf55986ff7c1c..e802ecff44cad17626f123fe0addcfcf3bef990d 100644 (file)
@@ -98,8 +98,7 @@ PLModel::PLModel( playlist_t *_p_playlist,  /* THEPL */
 
 PLModel::~PLModel()
 {
-    QSettings settings( "vlc", "vlc-qt-interface" );
-    settings.setValue( "qt-pl-showflags", rootItem->i_showflags );
+    getSettings()->setValue( "qt-pl-showflags", rootItem->i_showflags );
     delCallbacks();
     delete rootItem;
 }
@@ -591,7 +590,7 @@ void PLModel::rebuild( playlist_item_t *p_root )
     if( p_root )
     {
         delete rootItem;
-        rootItem = new PLItem( p_root, NULL, this );
+        rootItem = new PLItem( p_root, getSettings(), this );
     }
     assert( rootItem );
     /* Recreate from root */
index 7e8d1b4fa56d8fcb76bade6f175620884aee5e0d..cff3c0b4d7ed2fade131223575871efc3b1145e9 100644 (file)
@@ -50,26 +50,24 @@ PlaylistDialog::PlaylistDialog( intf_thread_t *_p_intf )
 
     QHBoxLayout *l = new QHBoxLayout( centralWidget() );
 
-    settings = new QSettings( "vlc", "vlc-qt-interface" );
-    settings->beginGroup("playlistdialog");
+    getSettings()->beginGroup("playlistdialog");
 
-    playlistWidget = new PlaylistWidget( p_intf, settings, this );
+    playlistWidget = new PlaylistWidget( p_intf, this );
     l->addWidget( playlistWidget );
 
-    readSettings( settings, QSize( 600,700 ) );
+    readSettings( getSettings(), QSize( 600,700 ) );
 
-    settings->endGroup();
+    getSettings()->endGroup();
 }
 
 PlaylistDialog::~PlaylistDialog()
 {
-    settings->beginGroup("playlistdialog");
+    getSettings()->beginGroup("playlistdialog");
 
-    writeSettings(settings);
-    playlistWidget->savingSettings(settings);
+    writeSettings( getSettings() );
+    playlistWidget->savingSettings();
 
-    settings->endGroup();
-    delete settings;
+    getSettings()->endGroup();
 }
 
 void PlaylistDialog::dropEvent( QDropEvent *event )
index 962a5b89093d54038adb298066f0e7ab74e00a54..3516c051f25e1ed977e15ea61c20d4fa8ecfa092 100644 (file)
@@ -39,7 +39,6 @@ class PlaylistDialog : public QVLCMW
     Q_OBJECT;
 private:
     PlaylistWidget *playlistWidget;
-    QSettings *settings;
 
 public:
     static PlaylistDialog * getInstance( intf_thread_t *p_intf )
index 2c488db3f2a55c2279438229f9e93d4afc564334..70faab24ebf1fdbe22f3be139060616048dcbd60 100644 (file)
@@ -110,7 +110,7 @@ MainInterface::MainInterface( intf_thread_t *_p_intf ) : QVLCMW( _p_intf )
     i_visualmode = config_GetInt( p_intf, "qt-display-mode" );
 
     /* Set the other interface settings */
-    settings = new QSettings( "vlc", "vlc-qt-interface" );
+    settings = getSettings();
     settings->beginGroup( "MainWindow" );
 
     //TODO: I don't like that code
@@ -224,7 +224,7 @@ MainInterface::MainInterface( intf_thread_t *_p_intf ) : QVLCMW( _p_intf )
     CONNECT( this, askUpdate(), this, doComponentsUpdate() );
 
     /* Size and placement of interface */
-    QVLCTools::restoreWidgetPosition(settings,this,QSize(350,60));
+    QVLCTools::restoreWidgetPosition( settings, this, QSize(380, 60) );
 
 
     /* Playlist */
@@ -250,7 +250,7 @@ MainInterface::~MainInterface()
     msg_Dbg( p_intf, "Destroying the main interface" );
 
     if( playlistWidget )
-        playlistWidget->savingSettings( settings );
+        playlistWidget->savingSettings();
 
     settings->beginGroup( "MainWindow" );
 
@@ -266,7 +266,6 @@ MainInterface::~MainInterface()
         settings->setValue( "backgroundSize", bgWidget->size() );
 
     settings->endGroup();
-    delete settings;
 
     var_DelCallback( p_intf->p_libvlc, "intf-show", IntfShowCB, p_intf );
 
index 47c878ad56e7b97c832b2bc382157abeb1a5a994..7f9b106a708f026935093daf3c637f72fdeeb29e 100644 (file)
@@ -244,6 +244,7 @@ static int Open( vlc_object_t *p_this )
     p_intf->p_sys->p_playlist = pl_Yield( p_intf );
     /* Listen to the messages */
     p_intf->p_sys->p_sub = msg_Subscribe( p_intf );
+    /* one settings to rule them all */
 
     var_Create( p_this, "window_widget", VLC_VAR_ADDRESS );
     return VLC_SUCCESS;
@@ -323,6 +324,7 @@ static void Init( intf_thread_t *p_intf )
     QApplication *app = new QApplication( argc, argv , true );
     p_intf->p_sys->p_app = app;
 
+    p_intf->p_sys->mainSettings = new QSettings( "vlc", "vlc-qt-interface" );
     /* Icon setting
        FIXME: use a bigger icon ? */
     if( QDate::currentDate().dayOfYear() >= 354 )
@@ -390,13 +392,12 @@ static void Init( intf_thread_t *p_intf )
     if( config_GetInt( p_intf, "qt-updates-notif" ) )
     {
         int interval = config_GetInt( p_intf, "qt-updates-days" );
-        QSettings settings( "vlc", "vlc-qt-interface" );
         if( QDate::currentDate() >
-                settings.value( "updatedate" ).toDate().addDays( interval ) )
+             getSettings()->value( "updatedate" ).toDate().addDays( interval ) )
         {
             /* The constructor of the update Dialog will do the 1st request */
             UpdateDialog::getInstance( p_intf );
-            settings.setValue( "updatedate", QDate::currentDate() );
+            getSettings()->setValue( "updatedate", QDate::currentDate() );
         }
     }
 #endif
index dec423d108016aeef95d5e0b362cd8fbe6740d8f..7b0236ceccf5114f6c494d127162e500831722d6 100644 (file)
@@ -46,12 +46,15 @@ class QMenu;
 class MainInterface;
 class DialogsProvider;
 class VideoWidget;
+class QSettings;
 
 struct intf_sys_t
 {
     QApplication *p_app;
     MainInterface *p_mi;
 
+    QSettings *mainSettings;
+
     bool b_isDialogProvider;
 
     playlist_t *p_playlist;
@@ -106,6 +109,8 @@ struct intf_sys_t
     #define setLayoutMargins( a, b, c, d, e) setMargin( e )
 #endif
 
+#define getSettings() p_intf->p_sys->mainSettings
+
 enum {
     DialogEventType = 0,
     IMEventType     = 100,
index d8f97ef7e2a6e85ad1dd7054a00be3ce9487148e..d8baf9ad596b44bc8f937b2e77064ed540559ca1 100644 (file)
 #include <QSpacerItem>
 #include <QHBoxLayout>
 #include <QApplication>
-#include <QSettings>
 #include <QMainWindow>
 #include <QPushButton>
 #include <QKeyEvent>
 #include <QDesktopWidget>
+#include <QSettings>
 
 #include "qt4.hpp"
 #include <vlc_common.h>
@@ -48,17 +48,17 @@ class QVLCTools
         window is docked into an other - don't all this function
         or it may write garbage to position info!
        */
-       static void saveWidgetPosition(QSettings *settings, QWidget *widget)
+       static void saveWidgetPosition( QSettings *settings, QWidget *widget)
        {
          settings->setValue("geometry", widget->saveGeometry());
        }
-       static void saveWidgetPosition(QString configName, QWidget *widget)
+       static void saveWidgetPosition( intf_thread_t *p_intf,
+                                       QString configName,
+                                       QWidget *widget)
        {
-         QSettings *settings = new QSettings("vlc", "vlc-qt-interface");
-         settings->beginGroup( configName );
-         QVLCTools::saveWidgetPosition(settings, widget);
-         settings->endGroup();
-         delete settings;
+         getSettings()->beginGroup( configName );
+         QVLCTools::saveWidgetPosition(getSettings(), widget);
+         getSettings()->endGroup();
        }
 
 
@@ -84,19 +84,18 @@ class QVLCTools
           return false;
        }
 
-       static bool restoreWidgetPosition(QString configName,
+       static bool restoreWidgetPosition( intf_thread_t *p_intf,
+                                           QString configName,
                                            QWidget *widget,
                                            QSize defSize = QSize( 0, 0 ),
                                            QPoint defPos = QPoint( 0, 0 ) )
        {
-         QSettings *settings = new QSettings( "vlc", "vlc-qt-interface" );
-         settings->beginGroup( configName );
-         bool defaultUsed = QVLCTools::restoreWidgetPosition(settings,
+         getSettings()->beginGroup( configName );
+         bool defaultUsed = QVLCTools::restoreWidgetPosition( getSettings(),
                                                                    widget,
                                                                    defSize,
                                                                    defPos);
-         settings->endGroup();
-         delete settings;
+         getSettings()->endGroup();
 
          return defaultUsed;
        }
@@ -138,12 +137,12 @@ protected:
                        QSize defSize = QSize( 0, 0 ),
                        QPoint defPos = QPoint( 0, 0 ) )
     {
-        QVLCTools::restoreWidgetPosition(name, this, defSize, defPos);
+        QVLCTools::restoreWidgetPosition(p_intf, name, this, defSize, defPos);
     }
 
     void writeSettings( QString name )
     {
-        QVLCTools::saveWidgetPosition(name, this);
+        QVLCTools::saveWidgetPosition( p_intf, name, this);
     }
 
     virtual void cancel()
@@ -225,14 +224,13 @@ protected:
 
     void readSettings( QString name, QSize defSize )
     {
-        QVLCTools::restoreWidgetPosition(name, this, defSize);
+        QVLCTools::restoreWidgetPosition( p_intf, name, this, defSize);
     }
 
     void readSettings( QString name )
     {
-        QVLCTools::restoreWidgetPosition(name, this);
+        QVLCTools::restoreWidgetPosition( p_intf, name, this);
     }
-
     void readSettings( QSettings *settings )
     {
         QVLCTools::restoreWidgetPosition(settings, this);
@@ -245,14 +243,12 @@ protected:
 
     void writeSettings(QString name )
     {
-        QVLCTools::saveWidgetPosition(name, this);
+        QVLCTools::saveWidgetPosition( p_intf, name, this);
     }
-
     void writeSettings(QSettings *settings )
     {
         QVLCTools::saveWidgetPosition(settings, this);
     }
-
 };
 
 #endif