gwenhywfar  4.3.3
w_gridlayout.cpp
Go to the documentation of this file.
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_GridLayout: public Qt4_W_Widget {
00015 public:
00016   Qt4_W_GridLayout(GWEN_WIDGET *w):Qt4_W_Widget(w) {
00017   }
00018 
00019 
00020 
00021   ~Qt4_W_GridLayout() {
00022   }
00023 
00024 
00025 
00026   virtual int setup() {
00027     QWidget *qw;
00028     uint32_t flags;
00029     GWEN_WIDGET *wParent;
00030     QLayout *qLayout;
00031     QSizePolicy::Policy hpolicy=QSizePolicy::Minimum;
00032     QSizePolicy::Policy vpolicy=QSizePolicy::Minimum;
00033 
00034     flags=GWEN_Widget_GetFlags(_widget);
00035     wParent=GWEN_Widget_Tree_GetParent(_widget);
00036 
00037     qw=new QWidget();
00038     qLayout=new QGridLayout(qw);
00039 
00040     /* handle flags */
00041     if (flags & GWEN_WIDGET_FLAGS_FILLX)
00042       hpolicy=QSizePolicy::Expanding;
00043     if (flags & GWEN_WIDGET_FLAGS_FILLY)
00044       vpolicy=QSizePolicy::Expanding;
00045     qw->setSizePolicy(hpolicy, vpolicy);
00046 
00047 
00048     GWEN_Widget_SetImplData(_widget, QT4_DIALOG_WIDGET_REAL, (void*) qw);
00049     GWEN_Widget_SetImplData(_widget, QT4_DIALOG_WIDGET_LAYOUT, (void*) qLayout);
00050 
00051     if (wParent)
00052       GWEN_Widget_AddChildGuiWidget(wParent, _widget);
00053     return 0;
00054   }
00055 
00056 
00057 
00058   int addChildGuiWidget(GWEN_WIDGET *wChild) {
00059     QWidget *qw;
00060     QGridLayout *qLayout;
00061     QWidget *qChild;
00062     GWEN_WIDGET *wt;
00063     int idx=0;
00064 
00065     qw=(QWidget*) GWEN_Widget_GetImplData(_widget, QT4_DIALOG_WIDGET_REAL);
00066     assert(qw);
00067 
00068     qLayout=(QGridLayout*) GWEN_Widget_GetImplData(_widget, QT4_DIALOG_WIDGET_LAYOUT);
00069     assert(qLayout);
00070 
00071     qChild=getQWidget(wChild);
00072     assert(qChild);
00073 
00074     qChild->setParent(qw);
00075 
00076     /* get position of the child widget below myself */
00077     wt=GWEN_Widget_Tree_GetFirstChild(_widget);
00078     while(wt && wt!=wChild) {
00079       idx++;
00080       wt=GWEN_Widget_Tree_GetNext(wt);
00081     }
00082 
00083     if (wt) {
00084       int x=0, y=0;
00085       int c;
00086 
00087       if ((c=GWEN_Widget_GetColumns(_widget))) {
00088         x=idx % c;
00089         y=idx / c;
00090       }
00091       else if ((c=GWEN_Widget_GetRows(_widget))) {
00092         x=idx / c;
00093         y=idx % c ;
00094       }
00095 
00096       qLayout->addWidget(qChild, y, x);
00097     }
00098 
00099     return 0;
00100   }
00101 
00102 };
00103 
00104 
00105 
00106 
00107 
00108 
00109