]> git.sesse.net Git - vlc/commitdiff
Qt: Use the singleton class, to simplify the code
authorHugo Beauzee-Luyssen <beauze.h@gmail.com>
Mon, 21 Dec 2009 14:31:36 +0000 (15:31 +0100)
committerJean-Baptiste Kempf <jb@videolan.org>
Fri, 25 Dec 2009 17:16:49 +0000 (18:16 +0100)
Use the generic singleton for Bookmarks, ErrorsDialog, extended dialog, GotoTime dialog, every help class, MediaInfo, Messages, OpenURL, Playlist, Plugin, Podcast configuration and VLM. Also fix some memleaks when quitting

Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org>
25 files changed:
modules/gui/qt4/dialogs/bookmarks.cpp
modules/gui/qt4/dialogs/bookmarks.hpp
modules/gui/qt4/dialogs/errors.cpp
modules/gui/qt4/dialogs/errors.hpp
modules/gui/qt4/dialogs/extended.cpp
modules/gui/qt4/dialogs/extended.hpp
modules/gui/qt4/dialogs/gototime.cpp
modules/gui/qt4/dialogs/gototime.hpp
modules/gui/qt4/dialogs/help.cpp
modules/gui/qt4/dialogs/help.hpp
modules/gui/qt4/dialogs/mediainfo.cpp
modules/gui/qt4/dialogs/mediainfo.hpp
modules/gui/qt4/dialogs/messages.cpp
modules/gui/qt4/dialogs/messages.hpp
modules/gui/qt4/dialogs/openurl.cpp
modules/gui/qt4/dialogs/openurl.hpp
modules/gui/qt4/dialogs/playlist.cpp
modules/gui/qt4/dialogs/playlist.hpp
modules/gui/qt4/dialogs/plugins.cpp
modules/gui/qt4/dialogs/plugins.hpp
modules/gui/qt4/dialogs/podcast_configuration.cpp
modules/gui/qt4/dialogs/podcast_configuration.hpp
modules/gui/qt4/dialogs/vlm.cpp
modules/gui/qt4/dialogs/vlm.hpp
modules/gui/qt4/dialogs_provider.cpp

index 950f724e9517ab6cd3ea95334b543fb0ed784e2f..4feaf515fc686ceca35a9109062430bc7a0142de 100644 (file)
@@ -31,8 +31,6 @@
 #include <QSpacerItem>
 #include <QPushButton>
 
-BookmarksDialog *BookmarksDialog::instance = NULL;
-
 BookmarksDialog::BookmarksDialog( intf_thread_t *_p_intf ):QVLCFrame( _p_intf )
 {
     setWindowFlags( Qt::Tool );
index 223d28177188204863d057e7d675526dd45c024a..af55f4a1fde73db59f11355e8f42604a436ecdad 100644 (file)
 #include <QStandardItemModel>
 #include <QTreeView>
 #include <QTreeWidget>
+#include "util/singleton.hpp"
 
-class BookmarksDialog : public QVLCFrame
+class BookmarksDialog : public QVLCFrame, public Singleton<BookmarksDialog>
 {
     Q_OBJECT;
-public:
-    static BookmarksDialog * getInstance( intf_thread_t *p_intf )
-    {
-        if( !instance )
-            instance = new BookmarksDialog( p_intf );
-        return instance;
-    }
-    static void killInstance()
-    {
-        delete instance;
-        instance = NULL;
-    }
 private:
     BookmarksDialog( intf_thread_t * );
     virtual ~BookmarksDialog();
 
-    static BookmarksDialog *instance;
     QTreeWidget *bookmarksList;
 
 private slots:
@@ -60,6 +48,8 @@ private slots:
     void edit( QTreeWidgetItem *item, int column );
     void extract();
     void activateItem( QModelIndex index );
+
+    friend class    Singleton<BookmarksDialog>;
 };
 
 #endif
index 2dd0b8b5c96dc40a8f1f65bceca2fbe5976123e1..0d4edccae9a9ea287b4481158d2c16e4cb412513 100644 (file)
 #include <QDialogButtonBox>
 #include <QPushButton>
 
-ErrorsDialog *ErrorsDialog::instance = NULL;
-
-ErrorsDialog::ErrorsDialog( QWidget *parent, intf_thread_t *_p_intf )
-             : QVLCDialog( parent, _p_intf )
+ErrorsDialog::ErrorsDialog( intf_thread_t *_p_intf )
+             : QVLCDialog( (QWidget*)_p_intf->p_sys->p_mi, _p_intf )
 {
     setWindowTitle( qtr( "Errors" ) );
     setWindowRole( "vlc-errors" );
index dde9f056d641c84742830eb6b8dff063a43cd3e7..ebe8f32831e44de48c79527aac8711dcd2a6a1df 100644 (file)
 #define QVLC_ERRORS_DIALOG_H_ 1
 
 #include "util/qvlcframe.hpp"
+#include "util/singleton.hpp"
 
 class QPushButton;
 class QCheckBox;
 class QGridLayout;
 class QTextEdit;
 
-class ErrorsDialog : public QVLCDialog
+class ErrorsDialog : public QVLCDialog, public Singleton<ErrorsDialog>
 {
     Q_OBJECT;
 public:
-    static ErrorsDialog * getInstance( intf_thread_t *p_intf )
-    {
-        if( !instance)
-            instance = new ErrorsDialog( (QWidget *)p_intf->p_sys->p_mi, p_intf );
-        return instance;
-    }
-    virtual ~ErrorsDialog() {};
 
     void addError( const QString&, const QString& );
     /*void addWarning( QString, QString );*/
 private:
-    ErrorsDialog( QWidget *parent, intf_thread_t * );
-    static ErrorsDialog *instance;
+    virtual ~ErrorsDialog() {};
+    ErrorsDialog( intf_thread_t * );
     void add( bool, const QString&, const QString& );
 
     QCheckBox *stopShowing;
@@ -56,6 +50,8 @@ private slots:
     void close();
     void clear();
     void dontShow();
+
+    friend class    Singleton<ErrorsDialog>;
 };
 
 #endif
index c44bcbd213744c2a6d76aecaf7cd367a0f37d645..87cfff67886c882028ffc39792ccf1cc75db450c 100644 (file)
@@ -33,8 +33,6 @@
 #include <QTabWidget>
 #include <QGridLayout>
 
-ExtendedDialog *ExtendedDialog::instance = NULL;
-
 ExtendedDialog::ExtendedDialog( intf_thread_t *_p_intf ): QVLCFrame( _p_intf )
 {
     setWindowFlags( Qt::Tool );
index 04977abce122bedc7dda0ba9089327ec5240e9fd..ed16ded6e087b9e3c5504582aca17efc6be4e509 100644 (file)
 #include "util/qvlcframe.hpp"
 
 #include "components/extended_panels.hpp"
+#include "util/singleton.hpp"
 
 class QTabWidget;
 
-class ExtendedDialog : public QVLCFrame
+class ExtendedDialog : public QVLCFrame, public Singleton<ExtendedDialog>
 {
     Q_OBJECT;
 public:
-    static ExtendedDialog * getInstance( intf_thread_t *p_intf )
-    {
-        if( !instance)
-            instance = new ExtendedDialog( p_intf );
-        return instance;
-    }
-    static void killInstance()
-    {
-        delete instance;
-        instance = NULL;
-    }
     void showTab( int i );
     int currentTab();
 private:
     ExtendedDialog( intf_thread_t * );
     virtual ~ExtendedDialog();
 
-    static ExtendedDialog *instance;
-
     SyncControls *syncW;
     ExtVideo *videoEffect;
     Equalizer *equal;
     QTabWidget *mainTabW;
 private slots:
     void changedItem( int );
+
+    friend class    Singleton<ExtendedDialog>;
 };
 
 #endif
index 5832acd52ffa377fe6011ce99a430c8a974f1832..a75ec11b0f7383d527e7766574daed4ed28f5931 100644 (file)
 #include <QGroupBox>
 #include <QDialogButtonBox>
 
-GotoTimeDialog *GotoTimeDialog::instance = NULL;
-
-GotoTimeDialog::GotoTimeDialog( QWidget *parent, intf_thread_t *_p_intf)
-               : QVLCDialog( parent, _p_intf )
+GotoTimeDialog::GotoTimeDialog( intf_thread_t *_p_intf)
+               : QVLCDialog( (QWidget*)_p_intf->p_sys->p_mi, _p_intf )
 {
     setWindowFlags( Qt::Tool );
     setWindowTitle( qtr( "Go to Time" ) );
index 54698f6e268ff622645335a96e0769e6783a28ec..f84961dde05e4c3c0fe200ca746a50952e4c7363 100644 (file)
 #define QVLC_GOTOTIME_DIALOG_H_ 1
 
 #include "util/qvlcframe.hpp"
+#include "util/singleton.hpp"
 
 class QTimeEdit;
 
-class GotoTimeDialog : public QVLCDialog
+class GotoTimeDialog : public QVLCDialog, public Singleton<GotoTimeDialog>
 {
     Q_OBJECT;
-public:
-    static GotoTimeDialog * getInstance( intf_thread_t *p_intf )
-    {
-        if( !instance)
-            instance = new GotoTimeDialog( (QWidget *)p_intf->p_sys->p_mi, p_intf );
-        return instance;
-    }
-    virtual ~GotoTimeDialog();
-
 private:
-    GotoTimeDialog( QWidget *, intf_thread_t * );
-    static GotoTimeDialog *instance;
+    GotoTimeDialog( intf_thread_t * );
+    virtual ~GotoTimeDialog();
     QTimeEdit *timeEdit;
 private slots:
     void close();
     void cancel();
+
+    friend class    Singleton<GotoTimeDialog>;
 };
 
 #endif
index c793467316fdcbc9008faddb0251f31101a0d013..ded00b5278300a8d1885f0406f8bf5a66e8ec3da 100644 (file)
@@ -47,8 +47,6 @@
 
 #include <assert.h>
 
-HelpDialog *HelpDialog::instance = NULL;
-
 HelpDialog::HelpDialog( intf_thread_t *_p_intf ) : QVLCFrame( _p_intf )
 
 {
@@ -80,10 +78,8 @@ void HelpDialog::close()
     toggleVisible();
 }
 
-AboutDialog *AboutDialog::instance = NULL;
-
-AboutDialog::AboutDialog( QWidget *parent, intf_thread_t *_p_intf)
-            : QVLCDialog( parent, _p_intf )
+AboutDialog::AboutDialog( intf_thread_t *_p_intf)
+            : QVLCDialog( (QWidget*)_p_intf->p_sys->p_mi, _p_intf )
 {
     setWindowTitle( qtr( "About" ) );
     setWindowRole( "vlc-about" );
@@ -198,8 +194,6 @@ static void UpdateCallback( void *data, bool b_ret )
     QApplication::postEvent( UDialog, event );
 }
 
-UpdateDialog *UpdateDialog::instance = NULL;
-
 UpdateDialog::UpdateDialog( intf_thread_t *_p_intf ) : QVLCFrame( _p_intf )
 {
     setWindowTitle( qtr( "VLC media player updates" ) );
index c6cde3a05be2b8409ce35ef8107d94c2f4c78012..e5b04e990a2ccef2208f7552c99453a6da220097 100644 (file)
@@ -31,6 +31,7 @@
 #include "qt4.hpp"
 
 #include "util/qvlcframe.hpp"
+#include "util/singleton.hpp"
 
 class QPushButton;
 class QTextBrowser;
@@ -39,50 +40,32 @@ class QEvent;
 class QPushButton;
 class QTextEdit;
 
-class HelpDialog : public QVLCFrame
+class HelpDialog : public QVLCFrame, public Singleton<HelpDialog>
 {
     Q_OBJECT;
-public:
-    static HelpDialog * getInstance( intf_thread_t *p_intf )
-    {
-        if( !instance)
-            instance = new HelpDialog( p_intf );
-        return instance;
-    }
-    static void killInstance()
-    { delete instance; instance = NULL;}
-
 private:
     HelpDialog( intf_thread_t * );
     virtual ~HelpDialog();
 
-    static HelpDialog *instance;
-
 public slots:
     void close();
+
+    friend class    Singleton<HelpDialog>;
 };
 
 
-class AboutDialog : public QVLCDialog
+class AboutDialog : public QVLCDialog, public Singleton<AboutDialog>
 {
     Q_OBJECT;
-public:
-    static AboutDialog * getInstance( intf_thread_t *p_intf )
-    {
-        if( !instance)
-            instance = new AboutDialog( (QWidget *)p_intf->p_sys->p_mi,
-                                        p_intf );
-        return instance;
-    }
 
 private:
-    AboutDialog( QWidget *, intf_thread_t * );
+    AboutDialog( intf_thread_t * );
     virtual ~AboutDialog();
 
-    static AboutDialog *instance;
-
 public slots:
     void close();
+
+    friend class    Singleton<AboutDialog>;
 };
 
 #ifdef UPDATE_CHECK
@@ -90,27 +73,16 @@ public slots:
 static const int UDOkEvent = QEvent::User + DialogEventType + 21;
 static const int UDErrorEvent = QEvent::User + DialogEventType + 22;
 
-class UpdateDialog : public QVLCFrame
+class UpdateDialog : public QVLCFrame, public Singleton<UpdateDialog>
 {
     Q_OBJECT;
 public:
-    static UpdateDialog * getInstance( intf_thread_t *p_intf )
-    {
-        if( !instance )
-            instance = new UpdateDialog( p_intf );
-        return instance;
-    }
-    static void killInstance()
-    { delete instance; instance = NULL;}
-
     void updateNotify( bool );
 
 private:
     UpdateDialog( intf_thread_t * );
     virtual ~UpdateDialog();
 
-    static UpdateDialog *instance;
-
     update_t *p_update;
     QPushButton *updateButton;
     QLabel *updateLabelTop;
@@ -122,6 +94,8 @@ private:
 private slots:
     void close();
     void UpdateOrDownload();
+
+    friend class    Singleton<UpdateDialog>;
 };
 #endif
 
index 371e878a09fe1eec7d40b5383f17a694423cbc3c..51e991aa9d39565d5990a2348edd7ec90e504b1a 100644 (file)
@@ -34,8 +34,6 @@
 #include <QLineEdit>
 #include <QLabel>
 
-MediaInfoDialog *MediaInfoDialog::instance = NULL;
-
 /* This Dialog has two main modes:
     - General Mode that shows the current Played item, and the stats
     - Single mode that shows the info on ONE SINGLE Item on the playlist
index 8b591c793201cdf2a77933e53fa19a493359fdf5..4343bb719d55b6a3bfe9034f96955a8275e6bff4 100644 (file)
 
 #include "util/qvlcframe.hpp"
 #include "components/info_panels.hpp"
+#include "util/singleton.hpp"
 
 class QTabWidget;
 
-class MediaInfoDialog : public QVLCFrame
+class MediaInfoDialog : public QVLCFrame, public Singleton<MediaInfoDialog>
 {
     Q_OBJECT;
 public:
     MediaInfoDialog( intf_thread_t *,
-                     input_item_t * );
-
-    static MediaInfoDialog * getInstance( intf_thread_t *p_intf )
-    {
-        if( !instance) instance = new MediaInfoDialog( p_intf, NULL );
-        return instance;
-    }
-
-    static void killInstance()
-    {
-        delete instance;
-        instance = NULL;
-    }
+                     input_item_t * input = NULL );
 
     void showTab( int );
 #if 0
@@ -57,7 +46,6 @@ public:
 private:
     virtual ~MediaInfoDialog();
 
-    static MediaInfoDialog *instance;
     bool isMainInputInfo;
 
     QTabWidget *infoTabW;
@@ -77,6 +65,8 @@ private slots:
 
     void saveMeta();
     void updateButtons( int i_tab );
+
+    friend class    Singleton<MediaInfoDialog>;
 };
 
 #endif
index 4c5954c34cc4a3289503747d4eedfd03a87ec422..825446d8d2f1976b2e400c94bf3b58f7457572e5 100644 (file)
@@ -41,8 +41,6 @@
 
 #include <assert.h>
 
-MessagesDialog *MessagesDialog::instance = NULL;
-
 enum {
     MsgEvent_Type = QEvent::User + MsgEventType + 1,
 };
index def795d0e24692fdf59e4d1c7493231b2bbd5faa..766feffaa7ce6a4a1908d5934c2f30dd36667d9d 100644 (file)
@@ -25,6 +25,7 @@
 #define QVLC_MESSAGES_DIALOG_H_ 1
 
 #include "util/qvlcframe.hpp"
+#include "util/singleton.hpp"
 
 class QTabWidget;
 class QPushButton;
@@ -35,28 +36,13 @@ class QTextEdit;
 class QTreeWidget;
 class QTreeWidgetItem;
 
-class MessagesDialog : public QVLCFrame
+class MessagesDialog : public QVLCFrame, public Singleton<MessagesDialog>
 {
     Q_OBJECT;
-public:
-    static MessagesDialog * getInstance( intf_thread_t *p_intf )
-    {
-        if( !instance)
-            instance = new MessagesDialog( p_intf );
-        return instance;
-    }
-    static void killInstance()
-    {
-        delete instance;
-        instance = NULL;
-    }
-
-
 private:
     MessagesDialog( intf_thread_t * );
     virtual ~MessagesDialog();
 
-    static MessagesDialog *instance;
     QTabWidget *mainTab;
     QSpinBox *verbosityBox;
     QLabel *verbosityLabel;
@@ -78,6 +64,8 @@ private:
     void clear();
     void updateTree();
     void buildTree( QTreeWidgetItem *, vlc_object_t * );
+
+    friend class    Singleton<MessagesDialog>;
 };
 
 #endif
index 24f4adc517491b5e3de0cd436b4e9af5c7d6a78c..d58889825930f9c5562c92f32fece940ed9f7962 100644 (file)
 
 #include <assert.h>
 
-OpenUrlDialog *OpenUrlDialog::instance = NULL;
-
-OpenUrlDialog* OpenUrlDialog::getInstance( QWidget *parent,
-                                           intf_thread_t *p_intf,
-                                           bool bClipboard )
-{
-    /* Creation */
-    if( !instance )
-        instance = new OpenUrlDialog( parent, p_intf, bClipboard );
-    else
-        instance->bClipboard = bClipboard;
-    return instance;
-}
-
-OpenUrlDialog::OpenUrlDialog( QWidget *parent,
-                              intf_thread_t *_p_intf,
+OpenUrlDialog::OpenUrlDialog( intf_thread_t *_p_intf,
                               bool _bClipboard ) :
-        QVLCDialog( parent, _p_intf ), bClipboard( _bClipboard )
+        QVLCDialog( (QWidget*)_p_intf->p_sys->p_mi, _p_intf ), bClipboard( _bClipboard )
 {
     setWindowTitle( qtr( "Open URL" ) );
     setWindowRole( "vlc-open-url" );
index 40bda54b46339e3ddc7d0b71d5ab93d6b9f8f5d5..c7fae158a972e2c0865078fc8048abbcf138c9de 100644 (file)
 
 #include <vlc_common.h>
 #include "util/qvlcframe.hpp"
+#include "util/singleton.hpp"
 
 class ClickLineEdit;
 
-class OpenUrlDialog : public QVLCDialog
+class OpenUrlDialog : public QVLCDialog, public Singleton<OpenUrlDialog>
 {
     Q_OBJECT
 
 private:
-    OpenUrlDialog( QWidget *, intf_thread_t *, bool bClipboard = true );
+    OpenUrlDialog( intf_thread_t *, bool bClipboard = true );
     QString lastUrl;
     bool bClipboard, bShouldEnqueue;
     ClickLineEdit *edit;
 
-    static OpenUrlDialog *instance;
-
 private slots:
     void enqueue();
     void play();
@@ -52,16 +51,14 @@ private slots:
 public:
     virtual ~OpenUrlDialog() {}
 
-    static OpenUrlDialog* getInstance( QWidget *parent,
-                                       intf_thread_t *p_intf,
-                                       bool bClipboard = true );
-
     QString url() const;
     bool shouldEnqueue() const;
     void showEvent( QShowEvent *ev );
 
 public slots:
     virtual void close() { play(); };
+
+    friend class    Singleton<OpenUrlDialog>;
 };
 
 #endif
index 459ee68163597cee96f21b93ee7d24f26976b288..f64cc7d023ad5089751a8ee97b558a9132767376 100644 (file)
@@ -33,8 +33,6 @@
 #include <QUrl>
 #include <QHBoxLayout>
 
-PlaylistDialog *PlaylistDialog::instance = NULL;
-
 PlaylistDialog::PlaylistDialog( intf_thread_t *_p_intf )
                 : QVLCMW( _p_intf )
 {
index a27ed8e9f73ee0c5e63042f61eb43001805f7ba5..ac20a45e94e14b0d3beb086e8f71823378a2ef7c 100644 (file)
@@ -26,6 +26,7 @@
 
 #include "util/qvlcframe.hpp"
 #include "../components/playlist/playlist.hpp"
+#include "util/singleton.hpp"
 
 #include <QModelIndex>
 
@@ -34,23 +35,12 @@ class PLSelector;
 class PLPanel;
 class QSettings;
 
-class PlaylistDialog : public QVLCMW
+class PlaylistDialog : public QVLCMW, public Singleton<PlaylistDialog>
 {
     Q_OBJECT;
 private:
     PlaylistWidget *playlistWidget;
 
-public:
-    static PlaylistDialog * getInstance( intf_thread_t *p_intf )
-    {
-        if( !instance) instance = new PlaylistDialog( p_intf );
-        return instance;
-    }
-    static void killInstance()
-    {
-        delete instance;
-        instance = NULL;
-    }
 private:
     PlaylistDialog( intf_thread_t * );
     virtual ~PlaylistDialog();
@@ -60,7 +50,7 @@ private:
     void dragMoveEvent( QDragMoveEvent * );
     void dragLeaveEvent( QDragLeaveEvent * );
 
-    static PlaylistDialog *instance;
+    friend class    Singleton<PlaylistDialog>;
 };
 
 
index e071c18804a43b61ec0f1c8e5961e1c547198120..40bb9bcbdcb0a5f5939837034cb66300b12c0da2 100644 (file)
@@ -38,8 +38,6 @@
 #include <QLineEdit>
 #include <QLabel>
 
-PluginDialog *PluginDialog::instance = NULL;
-
 PluginDialog::PluginDialog( intf_thread_t *_p_intf ) : QVLCFrame( _p_intf )
 {
     setWindowTitle( qtr( "Plugins and extensions" ) );
index 1245e9ca8c2206570c8e9569ea66518655343cf1..f45888c0ead05cf3789df72408cb8a10c08c3f57 100644 (file)
@@ -25,6 +25,7 @@
 #define QVLC_PLUGIN_DIALOG_H_ 1
 
 #include "util/qvlcframe.hpp"
+#include "util/singleton.hpp"
 #include <QTreeWidget>
 #include <QStringList>
 
@@ -32,31 +33,21 @@ class QTreeWidget;
 class QLineEdit;
 
 class SearchLineEdit;
-class PluginDialog : public QVLCFrame
+class PluginDialog : public QVLCFrame, public Singleton<PluginDialog>
 {
     Q_OBJECT;
-public:
-    static PluginDialog * getInstance( intf_thread_t *p_intf )
-    {
-        if( !instance)
-            instance = new PluginDialog( p_intf );
-        return instance;
-    }
-    static void killInstance()
-    {
-        delete instance;
-        instance = NULL;
-    }
+
 private:
     PluginDialog( intf_thread_t * );
     virtual ~PluginDialog();
-    static PluginDialog *instance;
 
     void FillTree();
     QTreeWidget *treePlugins;
     SearchLineEdit *edit;
 private slots:
     void search( const QString& );
+
+    friend class    Singleton<PluginDialog>;
 };
 
 class PluginTreeItem : public QTreeWidgetItem
index bd10c0087535a6710e84558f090f2229dce9d25b..1ec44d2a872c39649b98d4932a18a827fdde8220 100644 (file)
 
 #include "podcast_configuration.hpp"
 
-PodcastConfigDialog *PodcastConfigDialog::instance = NULL;
-
-PodcastConfigDialog::PodcastConfigDialog( QWidget *parent, intf_thread_t *_p_intf)
-                    : QVLCDialog( parent, _p_intf )
+PodcastConfigDialog::PodcastConfigDialog( intf_thread_t *_p_intf)
+                    : QVLCDialog( (QWidget*)_p_intf->p_sys->p_mi, _p_intf )
 
 {
     ui.setupUi( this );
index 2779c564ea97b052fdc4806ad7a579b635de9fe6..b653cf87c41ada39eda8fb927cb350dfcb942663 100644 (file)
 
 #include "util/qvlcframe.hpp"
 #include "ui/podcast_configuration.h"
+#include "util/singleton.hpp"
 
-class PodcastConfigDialog : public QVLCDialog
+class PodcastConfigDialog : public QVLCDialog, public Singleton<PodcastConfigDialog>
 {
     Q_OBJECT;
-public:
-    static PodcastConfigDialog * getInstance( intf_thread_t *p_intf )
-    {
-        if( !instance )
-            instance = new PodcastConfigDialog( (QWidget *)p_intf->p_sys->p_mi,
-                                                p_intf );
-        return instance;
-    }
-    virtual ~PodcastConfigDialog();
 
 private:
-    PodcastConfigDialog( QWidget *, intf_thread_t * );
-    static PodcastConfigDialog *instance;
+    PodcastConfigDialog( intf_thread_t * );
+    virtual ~PodcastConfigDialog();
+
     Ui::PodcastConfiguration ui;
 public slots:
     void accept();
     void add();
     void remove();
+
+    friend class    Singleton<PodcastConfigDialog>;
 };
 
 #endif
index c0734d7f8fbf49322b5d89b2128f24d45d2d43bd..ef02c6c88b33bc3bfa51e1ec3dd61f545dd90586 100644 (file)
@@ -55,9 +55,7 @@
 #include <QFileDialog>
 
 
-VLMDialog *VLMDialog::instance = NULL;
-
-VLMDialog::VLMDialog( QWidget *parent, intf_thread_t *_p_intf ) : QVLCDialog( parent, _p_intf )
+VLMDialog::VLMDialog( intf_thread_t *_p_intf ) : QVLCDialog( (QWidget*)_p_intf->p_sys->p_mi, _p_intf )
 {
     p_vlm = vlm_New( p_intf );
 
index 3a13b7ac88b3e277c58435f76c7949b619e58a38..ed68e58e7077d8b2dbe24d3ebf3867d92dc65959 100644 (file)
@@ -35,6 +35,7 @@
 
 #include "ui/vlm.h"
 #include "util/qvlcframe.hpp"
+#include "util/singleton.hpp"
 #include <QDateTime>
 
 enum{
@@ -67,24 +68,19 @@ class VLMAWidget;
 class VLMWrapper;
 
 
-class VLMDialog : public QVLCDialog
+class VLMDialog : public QVLCDialog, public Singleton<VLMDialog>
 {
     Q_OBJECT;
+
 public:
-    static VLMDialog * getInstance( intf_thread_t *p_intf )
-    {
-        if( !instance)
-             instance = new VLMDialog( (QWidget *)p_intf->p_sys->p_mi, p_intf );
-        return instance;
-    };
-    virtual ~VLMDialog();
     void toggleVisible();
 
     VLMWrapper *vlmWrapper;
     vlm_t *p_vlm;
 private:
-    VLMDialog( QWidget *, intf_thread_t * );
-    static VLMDialog *instance;
+    VLMDialog( intf_thread_t * );
+    virtual ~VLMDialog();
+
     Ui::Vlm ui;
 
     QList<VLMAWidget *> vlmItems;
@@ -111,6 +107,8 @@ private slots:
     void selectOutput();
     bool exportVLMConf();
     bool importVLMConf();
+
+    friend class    Singleton<VLMDialog>;
 };
 
 class VLMWrapper
index b710eedbbcc3d5ae71ee7c79edb7b15e3c9303e0..29177ced8030658502e593b166e3b3076f26d9b7 100644 (file)
@@ -53,6 +53,7 @@
 #include "dialogs/toolbar.hpp"
 #include "dialogs/plugins.hpp"
 #include "dialogs/external.hpp"
+#include "dialogs/errors.hpp"
 
 #include <QEvent>
 #include <QApplication>
@@ -452,8 +453,7 @@ void DialogsProvider::simpleMLAppendDialog()
  **/
 void DialogsProvider::openUrlDialog()
 {
-    OpenUrlDialog *oud = OpenUrlDialog::getInstance( p_intf->p_sys->p_mi,
-                                                     p_intf );
+    OpenUrlDialog *oud = OpenUrlDialog::getInstance( p_intf );
     if( oud->exec() == QDialog::Accepted )
     {
         QString url = oud->url();