SIM Application Toolkit: fix potential race condition
[meego-ux:meego-app-satk.git] / stkdialog.h
1 /*
2  * satk - SIM application toolkit
3  * Copyright © 2011, Intel Corporation.
4  *
5  * This program is licensed under the terms and conditions of the
6  * Apache License, version 2.0.  The full text of the Apache License is at
7  * http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Written by - Luc Yriarte <luc.yriarte@linux.intel.com>
10  */
11
12 /*!
13   \section StkDialog
14
15   \subsection Properties
16   \subsubsection panel
17     \li bool showEndButton: true
18     \li bool showBackButton: true
19   \subsubsection editText
20     \li bool numeric: false
21     \li bool hideTyping: false
22     \li int minChars: -1
23     \li int maxChars: -1
24   \subsubsection menuView
25     \li int selection: -1
26   \subsubsection audioTone
27     \li bool loopTone: false
28   \subsubsection browserView
29     \li QString url
30
31   \subsection Slots
32     \li responseBack()
33     \li responseEnd()
34     \li responseYes()
35     \li responseNo()
36     \li responseOk()
37     \li responseOkWithSelection(int selection)
38     \li responseOkWithText(QString text)
39 */
40
41 #ifndef STKDIALOG_H
42 #define STKDIALOG_H
43
44 #include <QtDebug>
45
46 #include <QtGui/QDialog>
47 #include <QtCore/QString>
48 #include <QtCore/QVariant>
49 #include <QtDeclarative/QDeclarativeView>
50 #include <QList>
51
52 #include "stkdefines.h"
53 #include "stkmenuitem.h"
54 #include "simimageprovider.h"
55
56 class StkDialog : public QDialog
57 {
58     Q_OBJECT
59 public:
60     explicit StkDialog(SimImageProvider * imageProvider, const QString &iconUrl,
61                        const QString &title, const QString &qmlViewUrl, QWidget *parent = 0);
62
63     inline AgentResponse getAgentResponse()
64     {
65         return agentResponse;
66     }
67
68     inline QVariant getResponseData()
69     {
70         return responseData;
71     }
72
73     inline void setShowBackButton(const bool showBackButton)
74     {
75         mShowBackButton = showBackButton;
76     }
77
78     inline void setShowEndButton(const bool showEndButton)
79     {
80         mShowEndButton = showEndButton;
81     }
82
83     inline void setDefaultText(const QString &defaultText)
84     {
85         mDefaultText = defaultText;
86     }
87
88     inline void setNumeric(const bool numeric)
89     {
90         mNumeric = numeric;
91     }
92
93     inline void setHideTyping(const bool hideTyping)
94     {
95         mHideTyping = hideTyping;
96     }
97
98     inline void setCharBounds(const int minChars, const int maxChars)
99     {
100         mMinChars = minChars;
101         mMaxChars = maxChars;
102     }
103
104     inline void setMenuItems(const QList<StkMenuItem> &menuItems)
105     {
106         mMenuItems = menuItems;
107     }
108
109     inline void setSelection(const int selection)
110     {
111         mSelection = selection;
112     }
113
114     inline void setLoopTone(const bool loopTone)
115     {
116         mLoopTone = loopTone;
117     }
118
119     inline void setToneSource(const QString &toneSource)
120     {
121         mToneSource = toneSource;
122     }
123
124     inline void setUrl(const QString &url)
125     {
126         mUrl = url;
127     }
128
129 private:
130     // result data, inline getters
131     AgentResponse agentResponse;
132     QVariant responseData;
133     // QML view specifics, inline setters
134     // for "panel" items
135     bool mShowBackButton;
136     bool mShowEndButton;
137     // for "editText" items
138     QString mDefaultText;
139     bool mNumeric;
140     bool mHideTyping;
141     int mMinChars;
142     int mMaxChars;
143     // for "menuView" items
144     QList<StkMenuItem> mMenuItems;
145     int mSelection;
146     // for "audioTone" items
147     bool mLoopTone;
148     QString mToneSource;
149     // for "browserView" items
150     QString mUrl;
151     // QML view support
152     QDeclarativeView *mView;
153     // constructor parameters
154     SimImageProvider * mImageProvider;
155     QString mIconUrl;
156     QString mTitle;
157     QString mQmlViewUrl;
158
159 public:
160     void initView();
161
162 public slots:
163     inline void responseYes()
164     {
165         agentResponse = Yes;
166         accept();
167     }
168
169     inline void responseNo()
170     {
171         agentResponse = No;
172         accept();
173     }
174
175     inline void responseOk()
176     {
177         agentResponse = Ok;
178         accept();
179     }
180
181     inline void responseOkWithSelection(int selection)
182     {
183         agentResponse = Ok;
184         responseData = selection;
185         accept();
186     }
187
188     inline void responseOkWithText(QString text)
189     {
190         agentResponse = Ok;
191         responseData = text;
192         accept();
193     }
194
195     inline void responseBack()
196     {
197         agentResponse = Back;
198         accept();
199     }
200
201     inline void responseEnd()
202     {
203         agentResponse = End;
204         accept();
205     }
206
207 };
208
209 #endif // STKDIALOG_H