ui/qt/container.cpp

changeset 67
f72c4f01bf4a
parent 66
8d490d97aab8
child 68
bd9fb6476b80
--- a/ui/qt/container.cpp	Wed Jan 07 17:25:33 2015 +0100
+++ b/ui/qt/container.cpp	Wed Jan 07 20:11:36 2015 +0100
@@ -57,8 +57,7 @@
         QSpacerItem *newspace = new QSpacerItem(0, 0, QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
         box->removeItem(space);
         box->addSpacerItem(newspace);
-        space = newspace;
-        
+        space = newspace; 
     }
     
     if(fill) {
@@ -91,6 +90,51 @@
 
 
 
+/* -------------------- UiGridContainer -------------------- */
+
+UiGridContainer::UiGridContainer(QGridLayout* grid) {
+    this->grid = grid;
+    grid->setContentsMargins(QMargins(0,0,0,0));
+    grid->setSpacing(0);
+    ui_reset_layout(layout);
+}
+
+void UiGridContainer::add(QWidget* widget, bool fill) {
+    if(layout.newline) {
+        QSpacerItem *s = new QSpacerItem(0, 0, QSizePolicy::MinimumExpanding, QSizePolicy::Minimum);
+        grid->addItem(s, y, x);
+        x = 0;
+        y++;
+    }
+    if(x == 0) {
+        if(space) {
+            grid->removeItem(space);
+        }
+        QSpacerItem *s = new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::MinimumExpanding);
+        grid->addItem(s, y+1, 0);
+        space = s;
+    }
+    
+    grid->addWidget(widget, y, x);
+    x++;
+    
+    ui_reset_layout(layout);
+}
+
+UIWIDGET ui_grid(UiObject *obj) {
+    UiContainer *ct = uic_get_current_container(obj);
+    QWidget *widget = new QWidget();
+    QGridLayout *grid = new QGridLayout();
+    widget->setLayout(grid);
+    ct->add(widget, true);
+    
+    UiObject *newobj = uic_object_new(obj, widget);
+    newobj->container = new UiGridContainer(grid);
+    uic_obj_add(obj, newobj);
+    
+    return widget;
+}
+
 
 /* -------------------- layout functions -------------------- */
 
@@ -98,3 +142,8 @@
     UiContainer *ct = uic_get_current_container(obj);
     ct->layout.fill = ui_bool2lb(fill);
 }
+
+void ui_newline(UiObject *obj) {
+    UiContainer *ct = uic_get_current_container(obj);
+    ct->layout.newline = TRUE;
+}

mercurial