#ifndef DASHBOARDWINDOW_H #define DASHBOARDWINDOW_H #include 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 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 tiles; QSplitter *outerSplitter; QList rowSplitters; }; #endif // DASHBOARDWINDOW_H