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 #include <gwen-gui-cpp/cppwidget.hpp>
12 
13 
14 class Qt4_W_Dialog: public Qt4_W_Widget {
15 public:
Qt4_W_Dialog(GWEN_WIDGET * w)16   Qt4_W_Dialog(GWEN_WIDGET *w):Qt4_W_Widget(w) {
17   }
18 
19 
20 
~Qt4_W_Dialog()21   ~Qt4_W_Dialog() {
22   }
23 
24 
25 
setup()26   virtual int setup() {
27     QWidget *qw;
28     uint32_t flags;
29     GWEN_WIDGET *wParent;
30     QLayout *qLayout;
31     QSizePolicy::Policy hpolicy=QSizePolicy::Minimum;
32     QSizePolicy::Policy vpolicy=QSizePolicy::Minimum;
33 
34     flags=GWEN_Widget_GetFlags(_widget);
35     wParent=GWEN_Widget_Tree_GetParent(_widget);
36 
37     qw=new QT4_DialogBox(dynamic_cast<QT4_GuiDialog*>(getDialog()), QApplication::activeModalWidget());
38     qLayout=new QVBoxLayout(qw);
39 
40     /* handle flags */
41     if (flags & GWEN_WIDGET_FLAGS_FILLX)
42       hpolicy=QSizePolicy::Expanding;
43     if (flags & GWEN_WIDGET_FLAGS_FILLY)
44       vpolicy=QSizePolicy::Expanding;
45     qw->setSizePolicy(hpolicy, vpolicy);
46 
47 
48     GWEN_Widget_SetImplData(_widget, QT4_DIALOG_WIDGET_REAL, (void*) qw);
49     GWEN_Widget_SetImplData(_widget, QT4_DIALOG_WIDGET_LAYOUT, (void*) qLayout);
50 
51     if (wParent)
52       GWEN_Widget_AddChildGuiWidget(wParent, _widget);
53     return 0;
54   }
55 
56 
57 
addChildGuiWidget(GWEN_WIDGET * wChild)58   int addChildGuiWidget(GWEN_WIDGET *wChild) {
59     QWidget *qw;
60     QBoxLayout *qLayout;
61     QWidget *qChild;
62 
63     qw=(QT4_DialogBox*) GWEN_Widget_GetImplData(_widget, QT4_DIALOG_WIDGET_REAL);
64     assert(qw);
65 
66     qLayout=(QBoxLayout*) GWEN_Widget_GetImplData(_widget, QT4_DIALOG_WIDGET_LAYOUT);
67     assert(qLayout);
68 
69     qChild=getQWidget(wChild);
70     assert(qChild);
71 
72     qChild->setParent(qw);
73     qLayout->addWidget(qChild);
74 
75     return 0;
76   }
77 
78 
79 
setCharProperty(GWEN_DIALOG_PROPERTY prop,int index,const char * value,int doSignal)80   int setCharProperty(GWEN_DIALOG_PROPERTY prop,
81                       int index,
82                       const char *value,
83                       int doSignal) {
84     QWidget *qw;
85 
86     qw=(QWidget*) GWEN_Widget_GetImplData(_widget, QT4_DIALOG_WIDGET_REAL);
87     assert(qw);
88 
89     switch(prop) {
90     case GWEN_DialogProperty_Title:
91       qw->setWindowTitle(QString::fromUtf8(value));
92       return 0;
93     default:
94       break;
95     }
96 
97     DBG_WARN(GWEN_LOGDOMAIN,
98              "Function is not appropriate for this type of widget (%s)",
99              GWEN_Widget_Type_toString(GWEN_Widget_GetType(_widget)));
100     return GWEN_ERROR_INVALID;
101   };
102 
103 
104 
getCharProperty(GWEN_DIALOG_PROPERTY prop,int index,const char * defaultValue)105   const char *getCharProperty(GWEN_DIALOG_PROPERTY prop,
106                               int index,
107                               const char *defaultValue) {
108     QWidget *qw;
109     QString str;
110 
111     qw=(QWidget*) GWEN_Widget_GetImplData(_widget, QT4_DIALOG_WIDGET_REAL);
112     assert(qw);
113 
114     switch(prop) {
115     case GWEN_DialogProperty_Title:
116       str=qw->windowTitle();
117       if (str.isEmpty())
118         return defaultValue;
119       else {
120         GWEN_Widget_SetText(_widget, QT4_DIALOG_STRING_TITLE, str.toUtf8());
121         return GWEN_Widget_GetText(_widget, QT4_DIALOG_STRING_TITLE);
122       }
123       break;
124 
125     default:
126       break;
127     }
128 
129     DBG_WARN(GWEN_LOGDOMAIN,
130              "Function is not appropriate for this type of widget (%s)",
131              GWEN_Widget_Type_toString(GWEN_Widget_GetType(_widget)));
132     return defaultValue;
133   };
134 
135 };
136 
137 
138 
139 
140 
141 
142 
143