summaryrefslogtreecommitdiffstats
path: root/abs/core/mythinstall/MythVantage-app/mythinstall/questionnotice.cpp
blob: ffd9a1d82e2082132e36b1fd49421680a964e140 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
// ANSI C
#include <cstdlib>

// POSIX
#include <unistd.h>

// qt
#include <QCoreApplication>
#include <QKeyEvent>
#include <QEvent>
#include <QTimer>

// myth
#include "exitcodes.h"
#include "mythcontext.h"
#include "signalhandling.h"
#include "questionnotice.h"

int questionReturnCode;

QuestionNoticeDialog::QuestionNoticeDialog(MythScreenStack *parent,
    const char *name)
    :MythScreenType(parent, name),
    m_title_text(NULL), m_notice_text(NULL), m_question_text(NULL)
{
    gCoreContext->addListener(this);
}

bool QuestionNoticeDialog::Create(QString questionORnotice, QString title,
                                  QString displayText, QString yesButtonText,
                                  QString noButtonText)
{
    bool foundtheme = false;

    // Load the theme for this screen
    foundtheme = LoadWindowFromXML("install-ui.xml",
                                   "questionnotice_screen", this);

    if (!foundtheme)
        return false;

    bool err = false;

    UIUtilE::Assign(this, m_title_text, "title", &err);
    UIUtilE::Assign(this, m_notice_text, "notice_text", &err);
    UIUtilE::Assign(this, m_ok_button, "ok_button", &err);
    UIUtilE::Assign(this, m_question_text, "question_text", &err);
    UIUtilE::Assign(this, m_yes_button, "yes_button", &err);
    UIUtilE::Assign(this, m_no_button, "no_button", &err);

    if (err)
    {
        LOG(VB_GENERAL, LOG_ERR,  "Cannot load screen 'questionnotice_screen'");
        return false;
    }

    m_title_text->SetVisible(true);
    m_title_text->SetText(title);

    //show the correct text and buttons depending on questionORnotice
    if (questionORnotice.contains("notice"))
    {
        m_notice_text->SetVisible(true);
        m_notice_text->SetText(displayText);
        m_ok_button->SetVisible(true);
        m_question_text->SetVisible(false);
        m_yes_button->SetVisible(false);
        m_no_button->SetVisible(false);
    }
    else
    {
        m_notice_text->SetVisible(false);
        m_ok_button->SetVisible(false);
        m_question_text->SetVisible(true);
        m_question_text->SetText(displayText);
        m_yes_button->SetVisible(true);
        m_no_button->SetVisible(true);
    }

    m_ok_button->SetText("OK");
    connect(m_ok_button, SIGNAL(Clicked()),
            this, SLOT(okButtonClick()));
    m_yes_button->SetText(yesButtonText);
    connect(m_yes_button, SIGNAL(Clicked()),
            this, SLOT(yesButtonClick()));
    m_no_button->SetText(noButtonText);
    connect(m_no_button, SIGNAL(Clicked()),
            this, SLOT(noButtonClick()));

    BuildFocusList();

    return true;
}

void QuestionNoticeDialog::okButtonClick(void)
{
    // this makes sure the button appears to click properly
    QTimer::singleShot(500, this, SLOT(okButton()));
}

void QuestionNoticeDialog::okButton(void)
{
    questionReturnCode = 0;
    Close();
}

void QuestionNoticeDialog::yesButtonClick(void)
{
    // this makes sure the button appears to click properly
    QTimer::singleShot(500, this, SLOT(yesButton()));
}

void QuestionNoticeDialog::yesButton(void)
{
    questionReturnCode = 16;
    Close();
}

void QuestionNoticeDialog::noButtonClick(void)
{
    // this makes sure the button appears to click properly
    QTimer::singleShot(500, this, SLOT(noButton()));
}

void QuestionNoticeDialog::noButton(void)
{
    questionReturnCode = 17;
    Close();
}

QuestionNoticeDialog::~QuestionNoticeDialog()
{
    gCoreContext->removeListener(this);
}