From: Jean-Baptiste Kempf Date: Tue, 29 Jul 2008 23:59:33 +0000 (-0700) Subject: Stop allocating QSettings all the time everywhere. X-Git-Tag: 0.9.0-test3~150 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=473924674c85c5f5c11a5c2e0564ad6cc8f7d566;p=vlc Stop allocating QSettings all the time everywhere. --- diff --git a/modules/gui/qt4/components/open_panels.cpp b/modules/gui/qt4/components/open_panels.cpp index 7028c62aa7..a37dc279d2 100644 --- a/modules/gui/qt4/components/open_panels.cpp +++ b/modules/gui/qt4/components/open_panels.cpp @@ -44,7 +44,6 @@ #include #include #include -#include #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 } diff --git a/modules/gui/qt4/components/playlist/playlist.cpp b/modules/gui/qt4/components/playlist/playlist.cpp index e8d654e442..621c251b2f 100644 --- a/modules/gui/qt4/components/playlist/playlist.cpp +++ b/modules/gui/qt4/components/playlist/playlist.cpp @@ -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() ); } diff --git a/modules/gui/qt4/components/playlist/playlist.hpp b/modules/gui/qt4/components/playlist/playlist.hpp index 86fe50b2c2..c83456a1cd 100644 --- a/modules/gui/qt4/components/playlist/playlist.hpp +++ b/modules/gui/qt4/components/playlist/playlist.hpp @@ -40,16 +40,15 @@ 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; diff --git a/modules/gui/qt4/components/playlist/playlist_item.cpp b/modules/gui/qt4/components/playlist/playlist_item.cpp index d9f97e56e2..a64cb16670 100644 --- a/modules/gui/qt4/components/playlist/playlist_item.cpp +++ b/modules/gui/qt4/components/playlist/playlist_item.cpp @@ -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() diff --git a/modules/gui/qt4/components/playlist/playlist_item.hpp b/modules/gui/qt4/components/playlist/playlist_item.hpp index bd2b8d1049..885de1a0ff 100644 --- a/modules/gui/qt4/components/playlist/playlist_item.hpp +++ b/modules/gui/qt4/components/playlist/playlist_item.hpp @@ -36,6 +36,7 @@ #include #include +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; diff --git a/modules/gui/qt4/components/playlist/playlist_model.cpp b/modules/gui/qt4/components/playlist/playlist_model.cpp index 74c1b50c8f..e802ecff44 100644 --- a/modules/gui/qt4/components/playlist/playlist_model.cpp +++ b/modules/gui/qt4/components/playlist/playlist_model.cpp @@ -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 */ diff --git a/modules/gui/qt4/dialogs/playlist.cpp b/modules/gui/qt4/dialogs/playlist.cpp index 7e8d1b4fa5..cff3c0b4d7 100644 --- a/modules/gui/qt4/dialogs/playlist.cpp +++ b/modules/gui/qt4/dialogs/playlist.cpp @@ -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 ) diff --git a/modules/gui/qt4/dialogs/playlist.hpp b/modules/gui/qt4/dialogs/playlist.hpp index 962a5b8909..3516c051f2 100644 --- a/modules/gui/qt4/dialogs/playlist.hpp +++ b/modules/gui/qt4/dialogs/playlist.hpp @@ -39,7 +39,6 @@ class PlaylistDialog : public QVLCMW Q_OBJECT; private: PlaylistWidget *playlistWidget; - QSettings *settings; public: static PlaylistDialog * getInstance( intf_thread_t *p_intf ) diff --git a/modules/gui/qt4/main_interface.cpp b/modules/gui/qt4/main_interface.cpp index 2c488db3f2..70faab24eb 100644 --- a/modules/gui/qt4/main_interface.cpp +++ b/modules/gui/qt4/main_interface.cpp @@ -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 ); diff --git a/modules/gui/qt4/qt4.cpp b/modules/gui/qt4/qt4.cpp index 47c878ad56..7f9b106a70 100644 --- a/modules/gui/qt4/qt4.cpp +++ b/modules/gui/qt4/qt4.cpp @@ -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 diff --git a/modules/gui/qt4/qt4.hpp b/modules/gui/qt4/qt4.hpp index dec423d108..7b0236cecc 100644 --- a/modules/gui/qt4/qt4.hpp +++ b/modules/gui/qt4/qt4.hpp @@ -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, diff --git a/modules/gui/qt4/util/qvlcframe.hpp b/modules/gui/qt4/util/qvlcframe.hpp index d8f97ef7e2..d8baf9ad59 100644 --- a/modules/gui/qt4/util/qvlcframe.hpp +++ b/modules/gui/qt4/util/qvlcframe.hpp @@ -29,11 +29,11 @@ #include #include #include -#include #include #include #include #include +#include #include "qt4.hpp" #include @@ -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