ui/qt/container.cpp

changeset 102
2988f00ed9d6
parent 73
473acef47ddd
child 110
36f1581b43e2
equal deleted inserted replaced
101:1c943d43fa81 102:2988f00ed9d6
94 94
95 95
96 96
97 /* -------------------- UiGridContainer -------------------- */ 97 /* -------------------- UiGridContainer -------------------- */
98 98
99 UiGridContainer::UiGridContainer(QGridLayout* grid) { 99 UiGridContainer::UiGridContainer(QGridLayout* grid, int margin, int columnspacing, int rowspacing) {
100 this->current = NULL; 100 this->current = NULL;
101 this->menu = NULL; 101 this->menu = NULL;
102 this->grid = grid; 102 this->grid = grid;
103 grid->setContentsMargins(QMargins(0,0,0,0)); 103 grid->setContentsMargins(QMargins(margin, margin, margin, margin));
104 grid->setSpacing(0); 104 grid->setHorizontalSpacing(columnspacing);
105 grid->setVerticalSpacing(rowspacing);
105 ui_reset_layout(layout); 106 ui_reset_layout(layout);
106 } 107 }
107 108
108 void UiGridContainer::add(QWidget* widget, bool fill) { 109 void UiGridContainer::add(QWidget* widget, bool fill) {
109 if(layout.newline) { 110 if(layout.newline) {
110 QSpacerItem *s = new QSpacerItem(0, 0, QSizePolicy::MinimumExpanding, QSizePolicy::Minimum);
111 grid->addItem(s, y, x);
112 x = 0; 111 x = 0;
113 y++; 112 y++;
114 } 113 }
115 if(x == 0) { 114
116 if(space) { 115 Qt::Alignment alignment = Qt::AlignTop;
117 grid->removeItem(space); 116 grid->setColumnStretch(x, layout.hexpand ? 1 : 0);
118 } 117 if(layout.vexpand) {
119 QSpacerItem *s = new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::MinimumExpanding); 118 grid->setRowStretch(y, 1);
120 grid->addItem(s, y+1, 0); 119 alignment = 0;
121 space = s; 120 } else {
122 } 121 grid->setRowStretch(y, 0);
123 122 }
124 grid->addWidget(widget, y, x); 123
124 grid->addWidget(widget, y, x, alignment);
125 x++; 125 x++;
126 126
127 ui_reset_layout(layout); 127 ui_reset_layout(layout);
128 current = widget; 128 current = widget;
129 }
130
131 UIWIDGET ui_grid(UiObject *obj) {
132 return ui_grid_sp(obj, 0, 0, 0);
133 }
134
135 UIWIDGET ui_grid_sp(UiObject *obj, int margin, int columnspacing, int rowspacing) {
136 UiContainer *ct = uic_get_current_container(obj);
137 QWidget *widget = new QWidget();
138 QGridLayout *grid = new QGridLayout();
139 widget->setLayout(grid);
140 ct->add(widget, true);
141
142 UiObject *newobj = uic_object_new(obj, widget);
143 newobj->container = new UiGridContainer(grid, margin, columnspacing, rowspacing);
144 uic_obj_add(obj, newobj);
145
146 return widget;
129 } 147 }
130 148
131 149
132 /* -------------------- UiTabViewContainer -------------------- */ 150 /* -------------------- UiTabViewContainer -------------------- */
133 151
174 QStackedWidget *w = (QStackedWidget*)tabview; 192 QStackedWidget *w = (QStackedWidget*)tabview;
175 w->setCurrentIndex(tab); 193 w->setCurrentIndex(tab);
176 } 194 }
177 195
178 196
179 UIWIDGET ui_grid(UiObject *obj) {
180 UiContainer *ct = uic_get_current_container(obj);
181 QWidget *widget = new QWidget();
182 QGridLayout *grid = new QGridLayout();
183 widget->setLayout(grid);
184 ct->add(widget, true);
185
186 UiObject *newobj = uic_object_new(obj, widget);
187 newobj->container = new UiGridContainer(grid);
188 uic_obj_add(obj, newobj);
189
190 return widget;
191 }
192
193
194 /* -------------------- layout functions -------------------- */ 197 /* -------------------- layout functions -------------------- */
195 198
196 void ui_layout_fill(UiObject *obj, UiBool fill) { 199 void ui_layout_fill(UiObject *obj, UiBool fill) {
197 UiContainer *ct = uic_get_current_container(obj); 200 UiContainer *ct = uic_get_current_container(obj);
198 ct->layout.fill = ui_bool2lb(fill); 201 ct->layout.fill = ui_bool2lb(fill);
199 } 202 }
200 203
204 void ui_layout_hexpand(UiObject *obj, UiBool expand) {
205 UiContainer *ct = uic_get_current_container(obj);
206 ct->layout.hexpand = expand;
207 }
208
209 void ui_layout_vexpand(UiObject *obj, UiBool expand) {
210 UiContainer *ct = uic_get_current_container(obj);
211 ct->layout.vexpand = expand;
212 }
213
201 void ui_newline(UiObject *obj) { 214 void ui_newline(UiObject *obj) {
202 UiContainer *ct = uic_get_current_container(obj); 215 UiContainer *ct = uic_get_current_container(obj);
203 ct->layout.newline = TRUE; 216 ct->layout.newline = TRUE;
204 } 217 }

mercurial