[vlc-devel] commit: Qt4: dialog_Fatal back-end (both modal and non-modal) ( Rémi Denis-Courmont )

git version control git at videolan.org
Sat Mar 7 20:30:45 CET 2009


vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Sat Mar  7 21:28:30 2009 +0200| [f6a424fee035b172eb8c8f96c048e540567eae42] | committer: Rémi Denis-Courmont 

Qt4: dialog_Fatal back-end (both modal and non-modal)

(Feel free to move/cleanup)

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=f6a424fee035b172eb8c8f96c048e540567eae42
---

 modules/gui/qt4/main_interface.cpp |   31 +++++++++++++++++++++----------
 modules/gui/qt4/main_interface.hpp |    7 +++++++
 2 files changed, 28 insertions(+), 10 deletions(-)

diff --git a/modules/gui/qt4/main_interface.cpp b/modules/gui/qt4/main_interface.cpp
index 5f1eb0f..b1736a2 100644
--- a/modules/gui/qt4/main_interface.cpp
+++ b/modules/gui/qt4/main_interface.cpp
@@ -56,12 +56,14 @@
 #include <QLabel>
 #include <QGroupBox>
 #include <QPushButton>
+#include <QMessageBox>
 
 #include <assert.h>
 
 #include <vlc_keys.h> /* Wheel event */
 #include <vlc_vout.h>
 #include <vlc_dialog.h>
+#include "dialogs/errors.hpp"
 
 /* Callback prototypes */
 static int PopupMenuCB( vlc_object_t *p_this, const char *psz_variable,
@@ -70,8 +72,6 @@ static int IntfShowCB( vlc_object_t *p_this, const char *psz_variable,
                        vlc_value_t old_val, vlc_value_t new_val, void *param );
 static int InteractCallback( vlc_object_t *, const char *, vlc_value_t,
                              vlc_value_t, void *);
-static int DialogCallback( vlc_object_t *, const char *,
-                            vlc_value_t, vlc_value_t, void *);
 
 MainInterface::MainInterface( intf_thread_t *_p_intf ) : QVLCMW( _p_intf )
 {
@@ -206,6 +206,9 @@ MainInterface::MainInterface( intf_thread_t *_p_intf ) : QVLCMW( _p_intf )
     var_AddCallback( p_intf, "interaction", InteractCallback, this );
     interaction_Register( p_intf );
 
+    connect( this, SIGNAL(fatalDialog( const struct dialog_fatal_t * )),
+             this, SLOT(displayFatalDialog( const struct dialog_fatal_t * )),
+             Qt::BlockingQueuedConnection );
     var_Create( p_intf, "dialog-fatal", VLC_VAR_ADDRESS );
     var_AddCallback( p_intf, "dialog-fatal", DialogCallback, this );
     dialog_Register( p_intf );
@@ -1232,21 +1235,29 @@ static int InteractCallback( vlc_object_t *p_this,
     return VLC_SUCCESS;
 }
 
-static int DialogCallback( vlc_object_t *p_this,
-                           const char *type, vlc_value_t previous,
-                           vlc_value_t value, void *data )
+int MainInterface::DialogCallback( vlc_object_t *p_this,
+                                   const char *type, vlc_value_t previous,
+                                   vlc_value_t value, void *data )
 {
     MainInterface *self = (MainInterface *)data;
     const dialog_fatal_t *dialog = (const dialog_fatal_t *)value.p_address;
-
-    if (!strcmp (type, "dialog-fatal"))
-        printf ("ERROR: %s\n %s\n", dialog->title, dialog->message);
-
-    /* FIXME!!! */
     (void) previous;
+
+    emit self->fatalDialog (dialog);
     return VLC_SUCCESS;
 }
 
+void MainInterface::displayFatalDialog (const dialog_fatal_t *dialog)
+{
+    if (dialog->modal)
+        QMessageBox::critical (NULL, qfu(dialog->title), qfu(dialog->message),
+                               QMessageBox::Ok);
+    else
+    if (config_GetInt (p_intf, "qt-error-dialogs"))
+        ErrorsDialog::getInstance (p_intf)->addError(qfu(dialog->title),
+                                                     qfu(dialog->message));
+}
+
 /*****************************************************************************
  * PopupMenuCB: callback triggered by the intf-popupmenu playlist variable.
  *  We don't show the menu directly here because we don't want the
diff --git a/modules/gui/qt4/main_interface.hpp b/modules/gui/qt4/main_interface.hpp
index 6ca203c..946685b 100644
--- a/modules/gui/qt4/main_interface.hpp
+++ b/modules/gui/qt4/main_interface.hpp
@@ -49,6 +49,7 @@ class FullscreenControllerWidget;
 class SpeedControlWidget;
 class QMenu;
 class QSize;
+struct dialog_fatal_t;
 
 enum {
     CONTROLS_VISIBLE = 0x1,
@@ -150,6 +151,11 @@ private:
     virtual void wheelEvent( QWheelEvent * );
     virtual void resizeEvent( QResizeEvent * event );
 
+    static int DialogCallback( vlc_object_t *, const char *, vlc_value_t,
+                               vlc_value_t, void * );
+private slots:
+    void displayFatalDialog( const struct dialog_fatal_t * );
+
 public slots:
     void undockPlaylist();
     void dockPlaylist( pl_dock_e i_pos = PL_BOTTOM );
@@ -188,6 +194,7 @@ signals:
     void askUpdate();
     void minimalViewToggled( bool );
     void fullscreenInterfaceToggled( bool );
+    void fatalDialog( const struct dialog_fatal_t * );
 };
 
 #endif




More information about the vlc-devel mailing list