[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