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