#ifndef CONTAINER_H
#define CONTAINER_H
#include "toolkit.h"
#include "window.h"
#include <string.h>
#include <QBoxLayout>
#include <QGridLayout>
#include <QTabWidget>
#include <QStackedWidget>
#include <QSplitter>
#define ui_lb2bool(b) ((b) ==
UI_LAYOUT_TRUE ?
TRUE :
FALSE)
#define ui_bool2lb(b) ((b) ?
UI_LAYOUT_TRUE :
UI_LAYOUT_FALSE)
#define ui_reset_layout(layout) memset(&(layout),
0,
sizeof(UiLayout))
typedef struct UiLayout UiLayout;
enum UiLayoutBool {
UI_LAYOUT_UNDEFINED =
0,
UI_LAYOUT_TRUE,
UI_LAYOUT_FALSE,
};
typedef enum UiLayoutBool UiLayoutBool;
struct UiLayout {
UiLayoutBool fill;
bool newline;
char *label;
bool hexpand;
bool vexpand;
int gridwidth;
};
struct UiContainer {
UiLayout layout;
UIWIDGET current;
QMenu *menu;
virtual
void add(QWidget *widget, bool fill) =
0;
};
class UiBoxContainer : public UiContainer {
public:
QBoxLayout *box;
bool hasStretchedWidget = false;
QSpacerItem *space;
UiBoxContainer(QBoxLayout *box);
virtual
void add(QWidget *widget, bool fill);
};
class UiGridContainer : public UiContainer {
public:
QGridLayout *grid;
int x =
0;
int y =
0;
UiGridContainer(QGridLayout *grid,
int margin,
int columnspacing,
int rowspacing);
virtual
void add(QWidget *widget, bool fill);
};
class UiTabViewContainer : public UiContainer {
public:
QTabWidget *tabwidget;
UiTabViewContainer(QTabWidget *tabwidget);
virtual
void add(QWidget *widget, bool fill);
};
class UiStackContainer : public UiContainer {
public:
QStackedWidget *stack;
UiStackContainer(QStackedWidget *stack);
virtual
void add(QWidget *widget, bool fill);
};
class UiSidebarContainer : public UiContainer {
public:
QSplitter *splitter;
UiSidebarContainer(QSplitter *splitter);
virtual
void add(QWidget *widget, bool fill);
};
#endif