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