1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 #ifndef CONTAINER_H
30 #define CONTAINER_H
31
32 #include "toolkit.h"
33 #include "window.h"
34
35 #include <string.h>
36 #include <QBoxLayout>
37 #include <QGridLayout>
38 #include <QTabWidget>
39 #include <QStackedWidget>
40 #include <QSplitter>
41
42 #define ui_lb2bool(b) ((b) ==
UI_LAYOUT_TRUE ?
TRUE :
FALSE)
43 #define ui_bool2lb(b) ((b) ?
UI_LAYOUT_TRUE :
UI_LAYOUT_FALSE)
44 #define ui_reset_layout(layout) memset(&(layout),
0,
sizeof(UiLayout))
45
46 typedef struct UiLayout UiLayout;
47
48 enum UiLayoutBool {
49 UI_LAYOUT_UNDEFINED =
0,
50 UI_LAYOUT_TRUE,
51 UI_LAYOUT_FALSE,
52 };
53 typedef enum UiLayoutBool UiLayoutBool;
54
55 struct UiLayout {
56 UiLayoutBool fill;
57 bool newline;
58 char *label;
59 bool hexpand;
60 bool vexpand;
61 int gridwidth;
62 };
63
64 struct UiContainer {
65 UiLayout layout;
66 UIWIDGET current;
67 QMenu *menu;
68
69 virtual
void add(QWidget *widget, bool fill) =
0;
70 };
71
72 class UiBoxContainer : public UiContainer {
73 public:
74 QBoxLayout *box;
75 bool hasStretchedWidget = false;
76 QSpacerItem *space;
77
78 UiBoxContainer(QBoxLayout *box);
79
80 virtual
void add(QWidget *widget, bool fill);
81 };
82
83 class UiGridContainer : public UiContainer {
84 public:
85 QGridLayout *grid;
86 int x =
0;
87 int y =
0;
88
89 UiGridContainer(QGridLayout *grid,
int margin,
int columnspacing,
int rowspacing);
90
91 virtual
void add(QWidget *widget, bool fill);
92 };
93
94 class UiTabViewContainer : public UiContainer {
95 public:
96 QTabWidget *tabwidget;
97
98 UiTabViewContainer(QTabWidget *tabwidget);
99 virtual
void add(QWidget *widget, bool fill);
100 };
101
102 class UiStackContainer : public UiContainer {
103 public:
104 QStackedWidget *stack;
105
106 UiStackContainer(QStackedWidget *stack);
107 virtual
void add(QWidget *widget, bool fill);
108 };
109
110 class UiSidebarContainer : public UiContainer {
111 public:
112 QSplitter *splitter;
113
114 UiSidebarContainer(QSplitter *splitter);
115 virtual
void add(QWidget *widget, bool fill);
116 };
117
118 #endif
119
120