gwenhywfar 4.0.3
|
00001 /*************************************************************************** 00002 begin : Mon Feb 15 2010 00003 copyright : (C) 2010 by Martin Preuss 00004 email : martin@libchipcard.de 00005 00006 *************************************************************************** 00007 * Please see toplevel file COPYING for license details * 00008 ***************************************************************************/ 00009 00010 00011 #include <gwen-gui-cpp/cppwidget.hpp> 00012 00013 00014 class Qt4_W_ComboBox: public Qt4_W_Widget { 00015 public: 00016 Qt4_W_ComboBox(GWEN_WIDGET *w):Qt4_W_Widget(w) { 00017 } 00018 00019 00020 00021 ~Qt4_W_ComboBox() { 00022 } 00023 00024 00025 00026 virtual int setup() { 00027 QComboBox *qw; 00028 uint32_t flags; 00029 GWEN_WIDGET *wParent; 00030 QSizePolicy::Policy hpolicy=QSizePolicy::Minimum; 00031 QSizePolicy::Policy vpolicy=QSizePolicy::Minimum; 00032 QT4_GuiDialog *qtDialog; 00033 00034 flags=GWEN_Widget_GetFlags(_widget); 00035 wParent=GWEN_Widget_Tree_GetParent(_widget); 00036 00037 qw=new QComboBox(); 00038 00039 /* handle flags */ 00040 if (flags & GWEN_WIDGET_FLAGS_FILLX) 00041 hpolicy=QSizePolicy::Expanding; 00042 if (flags & GWEN_WIDGET_FLAGS_FILLY) 00043 vpolicy=QSizePolicy::Expanding; 00044 qw->setSizePolicy(hpolicy, vpolicy); 00045 qw->setEditable((flags & GWEN_WIDGET_FLAGS_READONLY)?false:true); 00046 00047 GWEN_Widget_SetImplData(_widget, QT4_DIALOG_WIDGET_REAL, (void*) qw); 00048 00049 qtDialog=dynamic_cast<QT4_GuiDialog*>(getDialog()); 00050 assert(qtDialog); 00051 00052 qw->connect(qw, SIGNAL(activated(int)), 00053 qtDialog->getMainWindow(), 00054 SLOT(slotActivated())); 00055 00056 00057 if (wParent) 00058 GWEN_Widget_AddChildGuiWidget(wParent, _widget); 00059 return 0; 00060 } 00061 00062 00063 00064 int setIntProperty(GWEN_DIALOG_PROPERTY prop, 00065 int index, 00066 int value, 00067 int doSignal) { 00068 QComboBox *qw; 00069 00070 qw=(QComboBox*) GWEN_Widget_GetImplData(_widget, QT4_DIALOG_WIDGET_REAL); 00071 assert(qw); 00072 00073 switch(prop) { 00074 case GWEN_DialogProperty_Value: 00075 qw->setCurrentIndex(value); 00076 return 0; 00077 00078 case GWEN_DialogProperty_ClearValues: 00079 qw->clear(); 00080 return 0; 00081 00082 default: 00083 return Qt4_W_Widget::setIntProperty(prop, index, value, doSignal); 00084 } 00085 }; 00086 00087 00088 00089 int getIntProperty(GWEN_DIALOG_PROPERTY prop, 00090 int index, 00091 int defaultValue) { 00092 QComboBox *qw; 00093 00094 qw=(QComboBox*) GWEN_Widget_GetImplData(_widget, QT4_DIALOG_WIDGET_REAL); 00095 assert(qw); 00096 00097 switch(prop) { 00098 case GWEN_DialogProperty_Value: 00099 return qw->currentIndex(); 00100 00101 case GWEN_DialogProperty_ValueCount: 00102 return qw->count(); 00103 00104 default: 00105 return Qt4_W_Widget::getIntProperty(prop, index, defaultValue); 00106 } 00107 }; 00108 00109 00110 00111 int setCharProperty(GWEN_DIALOG_PROPERTY prop, 00112 int index, 00113 const char *value, 00114 int doSignal) { 00115 QComboBox *qw; 00116 QString text; 00117 00118 qw=(QComboBox*) GWEN_Widget_GetImplData(_widget, QT4_DIALOG_WIDGET_REAL); 00119 assert(qw); 00120 00121 if (value) 00122 text=QString::fromUtf8(value); 00123 00124 switch(prop) { 00125 case GWEN_DialogProperty_Value: 00126 // undefined 00127 break; 00128 00129 case GWEN_DialogProperty_AddValue: 00130 qw->addItem(text); 00131 return 0; 00132 00133 case GWEN_DialogProperty_ClearValues: 00134 qw->clear(); 00135 return 0; 00136 default: 00137 break; 00138 } 00139 00140 DBG_WARN(GWEN_LOGDOMAIN, 00141 "Function is not appropriate for this type of widget (%s)", 00142 GWEN_Widget_Type_toString(GWEN_Widget_GetType(_widget))); 00143 return GWEN_ERROR_INVALID; 00144 }; 00145 00146 00147 00148 const char *getCharProperty(GWEN_DIALOG_PROPERTY prop, 00149 int index, 00150 const char *defaultValue) { 00151 QComboBox *qw; 00152 QString str; 00153 00154 qw=(QComboBox*) GWEN_Widget_GetImplData(_widget, QT4_DIALOG_WIDGET_REAL); 00155 assert(qw); 00156 00157 switch(prop) { 00158 case GWEN_DialogProperty_Value: 00159 str=qw->itemText(index); 00160 if (str.isEmpty()) 00161 return defaultValue; 00162 else { 00163 GWEN_Widget_SetText(_widget, QT4_DIALOG_STRING_TITLE, str.toUtf8()); 00164 return GWEN_Widget_GetText(_widget, QT4_DIALOG_STRING_TITLE); 00165 } 00166 break; 00167 00168 default: 00169 break; 00170 } 00171 00172 DBG_WARN(GWEN_LOGDOMAIN, 00173 "Function is not appropriate for this type of widget (%s)", 00174 GWEN_Widget_Type_toString(GWEN_Widget_GetType(_widget))); 00175 return defaultValue; 00176 }; 00177 00178 }; 00179 00180 00181 00182 00183 00184 00185