Commit 97ce64ff authored by Rémi Denis-Courmont's avatar Rémi Denis-Courmont

Qt4: back-end for dialog_Question

parent 3c62d02f
...@@ -50,12 +50,19 @@ DialogHandler::DialogHandler (intf_thread_t *intf) ...@@ -50,12 +50,19 @@ DialogHandler::DialogHandler (intf_thread_t *intf)
var_Create (intf, "dialog-login", VLC_VAR_ADDRESS); var_Create (intf, "dialog-login", VLC_VAR_ADDRESS);
var_AddCallback (intf, "dialog-login", LoginCallback, this); var_AddCallback (intf, "dialog-login", LoginCallback, this);
connect (this, SIGNAL(question(struct dialog_question_t *)),
this, SLOT(requestAnswer(struct dialog_question_t *)),
Qt::BlockingQueuedConnection);
var_Create (intf, "dialog-question", VLC_VAR_ADDRESS);
var_AddCallback (intf, "dialog-question", QuestionCallback, this);
dialog_Register (intf); dialog_Register (intf);
} }
DialogHandler::~DialogHandler (void) DialogHandler::~DialogHandler (void)
{ {
dialog_Unregister (intf); dialog_Unregister (intf);
var_DelCallback (intf, "dialog-question", QuestionCallback, this);
var_DelCallback (intf, "dialog-login", LoginCallback, this); var_DelCallback (intf, "dialog-login", LoginCallback, this);
var_DelCallback (intf, "dialog-fatal", MessageCallback, this); var_DelCallback (intf, "dialog-fatal", MessageCallback, this);
} }
...@@ -138,3 +145,40 @@ void DialogHandler::requestLogin (struct dialog_login_t *data) ...@@ -138,3 +145,40 @@ void DialogHandler::requestLogin (struct dialog_login_t *data)
delete dialog; delete dialog;
} }
int DialogHandler::QuestionCallback (vlc_object_t *obj, const char *var,
vlc_value_t, vlc_value_t value, void *data)
{
DialogHandler *self = (DialogHandler *)data;
dialog_question_t *dialog = (dialog_question_t *)value.p_address;
emit self->question (dialog);
return VLC_SUCCESS;
}
void DialogHandler::requestAnswer (struct dialog_question_t *data)
{
QMessageBox *box = new QMessageBox (QMessageBox::Question,
qfu(data->title), qfu(data->message));
QAbstractButton *yes = (data->yes != NULL)
? box->addButton ("&" + qfu(data->yes), QMessageBox::YesRole) : NULL;
QAbstractButton *no = (data->no != NULL)
? box->addButton ("&" + qfu(data->no), QMessageBox::NoRole) : NULL;
QAbstractButton *cancel = (data->cancel != NULL)
? box->addButton ("&" + qfu(data->cancel), QMessageBox::RejectRole)
: NULL;
box->exec ();
int answer;
if (box->clickedButton () == yes)
answer = 1;
else
if (box->clickedButton () == no)
answer = 2;
else
answer = 3;
delete box;
data->answer = answer;
}
...@@ -38,15 +38,19 @@ private: ...@@ -38,15 +38,19 @@ private:
static int MessageCallback (vlc_object_t *, const char *, static int MessageCallback (vlc_object_t *, const char *,
vlc_value_t, vlc_value_t, void *); vlc_value_t, vlc_value_t, void *);
static int LoginCallback (vlc_object_t *obj, const char *, static int LoginCallback (vlc_object_t *obj, const char *,
vlc_value_t, vlc_value_t, void *data); vlc_value_t, vlc_value_t, void *);
static int QuestionCallback (vlc_object_t *obj, const char *,
vlc_value_t, vlc_value_t, void *);
private slots: private slots:
void displayMessage (const struct dialog_fatal_t *); void displayMessage (const struct dialog_fatal_t *);
void requestLogin (struct dialog_login_t *data); void requestLogin (struct dialog_login_t *);
void requestAnswer (struct dialog_question_t *);
signals: signals:
void message (const struct dialog_fatal_t *); void message (const struct dialog_fatal_t *);
void authentication (struct dialog_login_t *); void authentication (struct dialog_login_t *);
void question (struct dialog_question_t *);
}; };
#endif #endif
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment