gwenhywfar  5.14.1
qt5/w_listbox.cpp
Go to the documentation of this file.
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_ListBox: public Qt5_W_Widget {
12 public:
14  }
15 
16 
17 
19  }
20 
21 
22 
23  virtual int setup() {
24  QTreeWidget *qw;
25  uint32_t flags;
26  GWEN_WIDGET *wParent;
27  QSizePolicy::Policy hpolicy=QSizePolicy::Minimum;
28  QSizePolicy::Policy vpolicy=QSizePolicy::Minimum;
29  QT5_GuiDialog *qtDialog;
30 
32  wParent=GWEN_Widget_Tree_GetParent(_widget);
33 
34  qw=new QTreeWidget();
35  qw->setAllColumnsShowFocus(true);
36  qw->setSortingEnabled(true);
37  qw->setRootIsDecorated(false);
38  qw->setItemsExpandable(false);
39  qw->setSelectionBehavior(QAbstractItemView::SelectRows);
40 
41  /* handle flags */
42  if (flags & GWEN_WIDGET_FLAGS_FILLX)
43  hpolicy=QSizePolicy::Expanding;
44  if (flags & GWEN_WIDGET_FLAGS_FILLY)
45  vpolicy=QSizePolicy::Expanding;
46  qw->setSizePolicy(hpolicy, vpolicy);
47 
49 
50  qtDialog=dynamic_cast<QT5_GuiDialog*>(getDialog());
51  assert(qtDialog);
52 
53  qw->connect(qw, SIGNAL(currentItemChanged(QTreeWidgetItem*, QTreeWidgetItem*)),
54  qtDialog->getMainWindow(),
55  SLOT(slotActivated()));
56 
57  if (wParent)
59  return 0;
60  }
61 
62 
63 
65  int index,
66  int value,
67  int doSignal) {
68  QTreeWidget *qw;
69 
71  assert(qw);
72 
73  switch(prop) {
75  qw->clear();
76  return 0;
77 
79  QTreeWidgetItem *item;
80 
81  item=qw->topLevelItem(index);
82 
83  if (item==NULL) {
84  DBG_ERROR(GWEN_LOGDOMAIN, "Value %d out of range", value);
85  return GWEN_ERROR_INVALID;
86  }
87 
88  qw->setCurrentItem(item);
89  return 0;
90  }
91 
93  qw->setColumnWidth(index, value);
94  return 0;
95 
97  switch(value) {
99  qw->setSelectionMode(QAbstractItemView::NoSelection);
100  return 0;
102  qw->setSelectionMode(QAbstractItemView::SingleSelection);
103  return 0;
105  qw->setSelectionMode(QAbstractItemView::ExtendedSelection);
106  return 0;
107  ;
108  }
109  DBG_ERROR(GWEN_LOGDOMAIN, "Unknown SelectionMode %d", value);
110  return GWEN_ERROR_INVALID;
111 
113  switch(value) {
115  qw->sortByColumn(-1, Qt::AscendingOrder);
116  break;
118  qw->sortByColumn(index, Qt::AscendingOrder);
119  break;
121  qw->sortByColumn(index, Qt::DescendingOrder);
122  break;
123  }
124  return 0;
125 
127  int c;
128 
129  c=qw->sortColumn();
130  if (c!=-1) {
131  QHeaderView *h;
132 
133  h=qw->header();
134  qw->sortItems(c, h->sortIndicatorOrder());
135  }
136  return 0;
137  }
138 
139  default:
140  return Qt5_W_Widget::setIntProperty(prop, index, value, doSignal);
141  }
142  };
143 
144 
145 
147  int index,
148  int defaultValue) {
149  QTreeWidget *qw;
150 
152  assert(qw);
153 
154  switch(prop) {
156  QTreeWidgetItem *item;
157  int i=-1;
158 
159  item=qw->currentItem();
160  while(item) {
161  item=qw->itemAbove(item);
162  i++;
163  }
164 
165  return i;
166  }
167 
169  return qw->columnWidth(index);
170 
172  switch(qw->selectionMode()) {
173  case QAbstractItemView::NoSelection:
175  case QAbstractItemView::SingleSelection:
177  case QAbstractItemView::ExtendedSelection:
179  default:
180  break;
181  }
182  DBG_ERROR(GWEN_LOGDOMAIN, "Unknown SelectionMode %d",
183  qw->selectionMode());
184  return GWEN_ERROR_INVALID;
185 
187  if (qw->sortColumn()!=index)
189  else {
190  switch(qw->header()->sortIndicatorOrder()) {
191  case Qt::AscendingOrder:
193  case Qt::DescendingOrder:
195  default:
197  }
198  }
199  break;
200 
201  default:
202  return Qt5_W_Widget::getIntProperty(prop, index, defaultValue);
203  }
204  };
205 
206 
207 
209  int index,
210  const char *value,
211  int doSignal) {
212  QTreeWidget *qw;
213  QString text;
214 
216  assert(qw);
217 
218  if (value)
219  text=QT5_Gui::extractHtml(value);
220 
221  switch(prop) {
223  QString str;
224  QString t;
225  QStringList sl;
226  int n=0;
227 
228  /* remove all columns */
229  qw->header()->reset();
230 
231  str=text;
232  while(!(t=str.section('\t', n, n)).isEmpty()) {
233  sl+=t;
234  n++;
235  }
236  qw->setHeaderLabels(sl);
237  return 0;
238  }
239 
241  qw->clear();
242  return 0;
243 
245  QString str;
246  QString t;
247  int n=0;
248  QStringList sl;
249  /*QTreeWidgetItem *item;*/
250 
251  str=text;
252  while(!(t=str.section('\t', n, n)).isEmpty()) {
253  sl+=t;
254  n++;
255  }
256  /*item=*/new QTreeWidgetItem(qw, sl);
257  return 0;
258  }
259 
260  default:
261  return Qt5_W_Widget::setCharProperty(prop, index, value, doSignal);
262  }
263  };
264 
265 
266 
268  int index,
269  const char *defaultValue) {
270  QTreeWidget *qw;
271  QString str;
272 
274  assert(qw);
275 
276  switch(prop) {
278  QTreeWidgetItem *item;
279 
280  item=qw->headerItem();
281  if (item) {
282  int i;
283 
284  for (i=0; i<qw->columnCount(); i++) {
285  if (i)
286  str+='\t';
287  str+=item->text(i);
288  }
289  if (str.isEmpty())
290  return defaultValue;
291  else {
294  }
295  }
296  return defaultValue;
297  }
298 
300  QTreeWidgetItem *item;
301  int i;
302 
303  item=qw->topLevelItem(index);
304 
305  if (item==NULL) {
306  DBG_ERROR(GWEN_LOGDOMAIN, "Value %d out of range", index);
307  return defaultValue;
308  }
309 
310  for (i=0; i<qw->columnCount(); i++) {
311  if (i)
312  str+='\t';
313  str+=item->text(i);
314  }
315  if (str.isEmpty())
316  return defaultValue;
317  else {
320  }
321  }
322 
323  default:
324  return Qt5_W_Widget::getCharProperty(prop, index, defaultValue);
325  }
326  };
327 
328 };
329 
330 
331 
332 
333 
334 
335 
#define DBG_ERROR(dbg_logger, format,...)
Definition: debug.h:97
const char * getCharProperty(GWEN_DIALOG_PROPERTY prop, int index, const char *defaultValue)
void GWEN_Widget_SetText(GWEN_WIDGET *w, int idx, const char *s)
Definition: widget.c:304
#define GWEN_ERROR_INVALID
Definition: error.h:67
Qt5_W_ListBox(GWEN_WIDGET *w)
GWEN_DIALOG_PROPERTY
Definition: dialog.h:260
#define NULL
Definition: binreloc.c:300
const char * getCharProperty(GWEN_UNUSED GWEN_DIALOG_PROPERTY prop, GWEN_UNUSED int index, const char *defaultValue)
uint32_t GWEN_Widget_GetFlags(const GWEN_WIDGET *w)
Definition: widget.c:149
static QString extractHtml(const char *text)
Definition: qt5_gui.cpp:64
#define GWEN_LOGDOMAIN
Definition: logger.h:32
int setCharProperty(GWEN_UNUSED GWEN_DIALOG_PROPERTY prop, GWEN_UNUSED int index, GWEN_UNUSED const char *value, GWEN_UNUSED int doSignal)
void GWEN_Widget_SetImplData(GWEN_WIDGET *w, int index, void *ptr)
Store a pointer with the widget.
Definition: widget.c:136
virtual int setup()
void * GWEN_Widget_GetImplData(const GWEN_WIDGET *w, int index)
Definition: widget.c:122
struct GWEN_WIDGET GWEN_WIDGET
Definition: widget_be.h:34
int GWEN_Widget_AddChildGuiWidget(GWEN_WIDGET *w, GWEN_WIDGET *wChild)
Definition: widget.c:836
int setIntProperty(GWEN_DIALOG_PROPERTY prop, int index, int value, int doSignal)
#define GWEN_WIDGET_FLAGS_FILLY
Definition: dialog.h:62
QT5_DialogBox * getMainWindow()
#define GWEN_WIDGET_FLAGS_FILLX
Definition: dialog.h:61
#define QT5_DIALOG_STRING_TITLE
int setIntProperty(GWEN_DIALOG_PROPERTY prop, GWEN_UNUSED int index, int value, GWEN_UNUSED int doSignal)
int getIntProperty(GWEN_DIALOG_PROPERTY prop, int index, int defaultValue)
int setCharProperty(GWEN_DIALOG_PROPERTY prop, int index, const char *value, int doSignal)
CppDialog * getDialog()
Definition: cppwidget.cpp:174
GWEN_WIDGET * _widget
Definition: cppwidget.hpp:66
int getIntProperty(GWEN_DIALOG_PROPERTY prop, GWEN_UNUSED int index, int defaultValue)
#define QT5_DIALOG_WIDGET_REAL
const char * GWEN_Widget_GetText(const GWEN_WIDGET *w, int idx)
Definition: widget.c:293
#define QT5_DIALOG_STRING_VALUE