summaryrefslogtreecommitdiffstats
path: root/examples/layouts/anchorlayout/window.h
blob: 911cc84fceaa4d5c366b7600ee83f6c34e9b9e79 (plain)
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#ifndef WINDOW_H
#define WINDOW_H

#include "ui_anchorlayout.h"
#include <QtGui/qgraphicsanchorlayout.h>

class QGraphicsWidget;
class Scene;

class Window : public QMainWindow
{
    Q_OBJECT
public:
    Window(QWidget *parent = 0);

private slots:
    void on_anchors_cellChanged(int row, int column);
    void on_pbAddAnchor_clicked(bool);
    void on_actionAdd_item_triggered(bool checked);
    void on_actionSave_layout_triggered(bool checked);
    void on_layouts_currentRowChanged(int row);
    void on_itemName_textEdited(const QString &text);
    void on_itemMinW_valueChanged(double d);
    void on_itemMinH_valueChanged(double d);
    void on_itemPrefW_valueChanged(double d);
    void on_itemPrefH_valueChanged(double d);
    void on_itemMaxW_valueChanged(double d);
    void on_itemMaxH_valueChanged(double d);



    // not in ui file
    void scene_focusItemChanged(QGraphicsItem *item);
private:
    void updateItem();
    void setItemData(const QString &name, const QSizeF &min, const QSizeF &pref, const QSizeF &max);
    QGraphicsLayoutItem *addItem(const QString &name = QString());
    void addAnchorRow();
    void setAnchorData(QGraphicsLayoutItem *startItem, const QString &startName, QGraphicsAnchorLayout::Edge startEdge,
                       QGraphicsLayoutItem *endItem, const QString &endName, QGraphicsAnchorLayout::Edge endEdge, int row = -1);

    bool saveLayout(const QString& fileName);
    bool loadLayout(const QString& fileName, QGraphicsAnchorLayout *layout);
    void findLayoutFiles();

    void rebuildLayout();
    QGraphicsLayoutItem *layoutItemAt(QAbstractItemModel *mode, int row, int column = 0);

    Ui::MainWindow m_ui;
    Scene *m_scene;
    bool m_changingCell;
    QGraphicsWidget *m_window;
    QGraphicsAnchorLayout *m_layout;
    QVector<QGraphicsLayoutItem*> m_layoutItems;
    QGraphicsLayoutItem *m_currentItem;
    bool m_inAddAnchor;
    bool m_ignoreCurrentLayoutChange;
};

#endif // WINDOW_H