1 /***************************************************************************
2     begin       : Mon Feb 15 2010
3     copyright   : (C) 2010 by Martin Preuss
4     email       : martin@libchipcard.de
5 
6  ***************************************************************************
7  *          Please see toplevel file COPYING for license details           *
8  ***************************************************************************/
9 
10 
11 class Qt5_W_Dialog: public Qt5_W_Widget {
12 public:
Qt5_W_Dialog(GWEN_WIDGET * w)13   Qt5_W_Dialog(GWEN_WIDGET *w):Qt5_W_Widget(w) {
14   }
15 
16 
17 
~Qt5_W_Dialog()18   ~Qt5_W_Dialog() {
19   }
20 
21 
22 
setup()23   virtual int setup() {
24     QWidget *qw;
25     uint32_t flags;
26     GWEN_WIDGET *wParent;
27     QLayout *qLayout;
28     QSizePolicy::Policy hpolicy=QSizePolicy::Minimum;
29     QSizePolicy::Policy vpolicy=QSizePolicy::Minimum;
30 
31     flags=GWEN_Widget_GetFlags(_widget);
32     wParent=GWEN_Widget_Tree_GetParent(_widget);
33 
34     qw=new QT5_DialogBox(dynamic_cast<QT5_GuiDialog*>(getDialog()), QApplication::activeModalWidget());
35     qLayout=new QVBoxLayout(qw);
36 
37     /* handle flags */
38     if (flags & GWEN_WIDGET_FLAGS_FILLX)
39       hpolicy=QSizePolicy::Expanding;
40     if (flags & GWEN_WIDGET_FLAGS_FILLY)
41       vpolicy=QSizePolicy::Expanding;
42     qw->setSizePolicy(hpolicy, vpolicy);
43 
44 
45     GWEN_Widget_SetImplData(_widget, QT5_DIALOG_WIDGET_REAL, (void*) qw);
46     GWEN_Widget_SetImplData(_widget, QT5_DIALOG_WIDGET_LAYOUT, (void*) qLayout);
47 
48     if (wParent)
49       GWEN_Widget_AddChildGuiWidget(wParent, _widget);
50     return 0;
51   }
52 
53 
54 
addChildGuiWidget(GWEN_WIDGET * wChild)55   int addChildGuiWidget(GWEN_WIDGET *wChild) {
56     QWidget *qw;
57     QBoxLayout *qLayout;
58     QWidget *qChild;
59 
60     qw=(QT5_DialogBox*) GWEN_Widget_GetImplData(_widget, QT5_DIALOG_WIDGET_REAL);
61     assert(qw);
62 
63     qLayout=(QBoxLayout*) GWEN_Widget_GetImplData(_widget, QT5_DIALOG_WIDGET_LAYOUT);
64     assert(qLayout);
65 
66     qChild=getQWidget(wChild);
67     assert(qChild);
68 
69     qChild->setParent(qw);
70     qLayout->addWidget(qChild);
71 
72     return 0;
73   }
74 
75 
76 
setCharProperty(GWEN_DIALOG_PROPERTY prop,GWEN_UNUSED int index,const char * value,GWEN_UNUSED int doSignal)77   int setCharProperty(GWEN_DIALOG_PROPERTY prop,
78                       GWEN_UNUSED int index,
79                       const char *value,
80                       GWEN_UNUSED int doSignal) {
81     QWidget *qw;
82 
83     qw=(QWidget*) GWEN_Widget_GetImplData(_widget, QT5_DIALOG_WIDGET_REAL);
84     assert(qw);
85 
86     switch(prop) {
87     case GWEN_DialogProperty_Title:
88       qw->setWindowTitle(QString::fromUtf8(value));
89       return 0;
90     default:
91       break;
92     }
93 
94     DBG_WARN(GWEN_LOGDOMAIN,
95              "Function is not appropriate for this type of widget (%s)",
96              GWEN_Widget_Type_toString(GWEN_Widget_GetType(_widget)));
97     return GWEN_ERROR_INVALID;
98   };
99 
100 
101 
getCharProperty(GWEN_DIALOG_PROPERTY prop,GWEN_UNUSED int index,const char * defaultValue)102   const char *getCharProperty(GWEN_DIALOG_PROPERTY prop,
103                               GWEN_UNUSED int index,
104                               const char *defaultValue) {
105     QWidget *qw;
106     QString str;
107 
108     qw=(QWidget*) GWEN_Widget_GetImplData(_widget, QT5_DIALOG_WIDGET_REAL);
109     assert(qw);
110 
111     switch(prop) {
112     case GWEN_DialogProperty_Title:
113       str=qw->windowTitle();
114       if (str.isEmpty())
115         return defaultValue;
116       else {
117         GWEN_Widget_SetText(_widget, QT5_DIALOG_STRING_TITLE, str.toUtf8());
118         return GWEN_Widget_GetText(_widget, QT5_DIALOG_STRING_TITLE);
119       }
120       break;
121 
122     default:
123       break;
124     }
125 
126     DBG_WARN(GWEN_LOGDOMAIN,
127              "Function is not appropriate for this type of widget (%s)",
128              GWEN_Widget_Type_toString(GWEN_Widget_GetType(_widget)));
129     return defaultValue;
130   };
131 
132 };
133 
134 
135 
136 
137 
138 
139 
140