46 lines
1.2 KiB
C++
46 lines
1.2 KiB
C++
#ifndef DASHBOARDWINDOW_H
|
|
#define DASHBOARDWINDOW_H
|
|
|
|
#include <QMainWindow>
|
|
|
|
class QWidget;
|
|
class QSplitter;
|
|
class QVBoxLayout;
|
|
class DashboardTile;
|
|
|
|
class DashboardWindow : public QMainWindow
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
explicit DashboardWindow(const QString &dashboardId, const QString &name, QWidget *parent = nullptr);
|
|
~DashboardWindow() override;
|
|
|
|
QString dashboardId() const;
|
|
QString dashboardName() const;
|
|
void setDashboardName(const QString &name);
|
|
void addToolWindow(QWidget *widget, const QString &toolId, const QRect &geometry = QRect());
|
|
bool removeToolWindow(QWidget *widget);
|
|
QList<QWidget *> toolWindows(const QString &toolId) const;
|
|
void restoreLayout();
|
|
void saveLayout();
|
|
|
|
protected:
|
|
void closeEvent(QCloseEvent *event) override;
|
|
|
|
private:
|
|
void rebuildLayout(bool preserveSizes = false);
|
|
void closeTile(DashboardTile *tile);
|
|
void moveTile(const QString &sourceId, DashboardTile *target);
|
|
|
|
QString id;
|
|
QString name;
|
|
QWidget *workspace;
|
|
QVBoxLayout *workspaceLayout;
|
|
QList<DashboardTile *> tiles;
|
|
QSplitter *outerSplitter;
|
|
QList<QSplitter *> rowSplitters;
|
|
};
|
|
|
|
#endif // DASHBOARDWINDOW_H
|