Projekt

Allgemein

Profil

Herunterladen (2,34 KB) Statistiken
| Zweig: | Markierung: | Revision:
/***************************************************************************
begin : Mon Feb 15 2010
copyright : (C) 2010 by Martin Preuss
email : martin@libchipcard.de

***************************************************************************
* Please see toplevel file COPYING for license details *
***************************************************************************/


#include <gwen-gui-cpp/cppwidget.hpp>


class Qt4_W_GridLayout: public Qt4_W_Widget {
public:
Qt4_W_GridLayout(GWEN_WIDGET *w):Qt4_W_Widget(w) {
}



~Qt4_W_GridLayout() {
}



virtual int setup() {
QWidget *qw;
uint32_t flags;
GWEN_WIDGET *wParent;
QLayout *qLayout;
QSizePolicy::Policy hpolicy=QSizePolicy::Minimum;
QSizePolicy::Policy vpolicy=QSizePolicy::Minimum;

flags=GWEN_Widget_GetFlags(_widget);
wParent=GWEN_Widget_Tree_GetParent(_widget);

qw=new QWidget();
qLayout=new QGridLayout(qw);

/* handle flags */
if (flags & GWEN_WIDGET_FLAGS_FILLX)
hpolicy=QSizePolicy::Expanding;
if (flags & GWEN_WIDGET_FLAGS_FILLY)
vpolicy=QSizePolicy::Expanding;
qw->setSizePolicy(hpolicy, vpolicy);


GWEN_Widget_SetImplData(_widget, QT4_DIALOG_WIDGET_REAL, (void*) qw);
GWEN_Widget_SetImplData(_widget, QT4_DIALOG_WIDGET_LAYOUT, (void*) qLayout);

if (wParent)
GWEN_Widget_AddChildGuiWidget(wParent, _widget);
return 0;
}



int addChildGuiWidget(GWEN_WIDGET *wChild) {
QWidget *qw;
QGridLayout *qLayout;
QWidget *qChild;
GWEN_WIDGET *wt;
int idx=0;

qw=(QWidget*) GWEN_Widget_GetImplData(_widget, QT4_DIALOG_WIDGET_REAL);
assert(qw);

qLayout=(QGridLayout*) GWEN_Widget_GetImplData(_widget, QT4_DIALOG_WIDGET_LAYOUT);
assert(qLayout);

qChild=getQWidget(wChild);
assert(qChild);

qChild->setParent(qw);

/* get position of the child widget below myself */
wt=GWEN_Widget_Tree_GetFirstChild(_widget);
while(wt && wt!=wChild) {
idx++;
wt=GWEN_Widget_Tree_GetNext(wt);
}

if (wt) {
int x=0, y=0;
int c;

if ((c=GWEN_Widget_GetColumns(_widget))) {
x=idx % c;
y=idx / c;
}
else if ((c=GWEN_Widget_GetRows(_widget))) {
x=idx / c;
y=idx % c ;
}

qLayout->addWidget(qChild, y, x);
}

return 0;
}

};







(17-17/35)