DialogHandler::DialogHandler (intf_thread_t *intf, QObject *_parent)
: intf (intf), QObject( _parent ),
- message (VLC_OBJECT(intf), "dialog-fatal"),
+ critical (VLC_OBJECT(intf), "dialog-critical"),
login (VLC_OBJECT(intf), "dialog-login"),
question (VLC_OBJECT(intf), "dialog-question"),
progressBar (VLC_OBJECT(intf), "dialog-progress-bar")
{
- connect (&message, SIGNAL(pointerChanged(vlc_object_t *, void *)),
- SLOT(displayMessage(vlc_object_t *, void *)),
+ var_Create (intf, "dialog-error", VLC_VAR_ADDRESS);
+ var_AddCallback (intf, "dialog-error", error, this);
+ connect (this, SIGNAL(error(const QString &, const QString &)),
+ SLOT(displayError(const QString &, const QString &)));
+
+ connect (&critical, SIGNAL(pointerChanged(vlc_object_t *, void *)),
+ SLOT(displayCritical(vlc_object_t *, void *)),
Qt::BlockingQueuedConnection);
connect (&login, SIGNAL(pointerChanged(vlc_object_t *, void *)),
SLOT(requestLogin(vlc_object_t *, void *)),
DialogHandler::~DialogHandler (void)
{
dialog_Unregister (intf);
+
+ var_DelCallback (intf, "dialog-error", error, this);
+ var_Destroy (intf, "dialog-error");
}
-void DialogHandler::displayMessage (vlc_object_t *, void *value)
+int DialogHandler::error (vlc_object_t *obj, const char *,
+ vlc_value_t, vlc_value_t value, void *data)
{
- const dialog_fatal_t *dialog = (const dialog_fatal_t *)value;
+ const dialog_fatal_t *dialog = (const dialog_fatal_t *)value.p_address;
+ DialogHandler *self = static_cast<DialogHandler *>(data);
- if (dialog->modal)
- QMessageBox::critical (NULL, qfu(dialog->title), qfu(dialog->message),
- QMessageBox::Ok);
- else
- if (config_GetInt (intf, "qt-error-dialogs"))
- ErrorsDialog::getInstance (intf)->addError(qfu(dialog->title),
- qfu(dialog->message));
+ if (config_GetInt (obj, "qt-error-dialogs"))
+ emit self->error (qfu(dialog->title), qfu(dialog->message));
+ return VLC_SUCCESS;
+}
+
+void DialogHandler::displayError (const QString& title, const QString& message)
+{
+ ErrorsDialog::getInstance (intf)->addError(title, message);
+}
+
+void DialogHandler::displayCritical (vlc_object_t *, void *value)
+{
+ const dialog_fatal_t *dialog = (const dialog_fatal_t *)value;
+
+ QMessageBox::critical (NULL, qfu(dialog->title), qfu(dialog->message),
+ QMessageBox::Ok);
}
void DialogHandler::requestLogin (vlc_object_t *, void *value)
private:
intf_thread_t *intf;
- QVLCPointer message;
+ static int error (vlc_object_t *, const char *, vlc_value_t, vlc_value_t,
+ void *);
+ QVLCPointer critical;
QVLCPointer login;
QVLCPointer question;
QVLCPointer progressBar;
signals:
void progressBarDestroyed (QWidget *);
+ void error (const QString&, const QString&);
private slots:
- void displayMessage (vlc_object_t *, void *);
+ void displayError (const QString&, const QString&);
+ void displayCritical (vlc_object_t *, void *);
void requestLogin (vlc_object_t *, void *);
void requestAnswer (vlc_object_t *, void *);
void startProgressBar (vlc_object_t *, void *);