From dc303cdd7d21775deb53220b3f6daa27cc0c34b1 Mon Sep 17 00:00:00 2001 From: f4exb Date: Mon, 25 Apr 2022 23:48:14 +0200 Subject: [PATCH] Massive UI revamping (v7): Renumerate workspaces and workspace index in sub windows after empty workspace trimmin. Fixes #1212 --- sdrgui/gui/workspace.cpp | 13 +++++++++++++ sdrgui/gui/workspace.h | 2 ++ sdrgui/mainwindow.cpp | 27 +++++++++++++++++++++++++++ 3 files changed, 42 insertions(+) diff --git a/sdrgui/gui/workspace.cpp b/sdrgui/gui/workspace.cpp index a40b82bee..a9345417e 100644 --- a/sdrgui/gui/workspace.cpp +++ b/sdrgui/gui/workspace.cpp @@ -215,6 +215,19 @@ Workspace::~Workspace() qDebug("Workspace::~Workspace: end"); } +void Workspace::setIndex(int index) +{ + m_index = index; + setWindowTitle(tr("W%1").arg(m_index)); + setObjectName(tr("W%1").arg(m_index)); + m_titleLabel->setText(windowTitle()); +} + +QList Workspace::getSubWindowList() const +{ + return m_mdi->subWindowList(); +} + void Workspace::toggleFloating() { setFloating(!isFloating()); diff --git a/sdrgui/gui/workspace.h b/sdrgui/gui/workspace.h index 309332c15..fff92eaa7 100644 --- a/sdrgui/gui/workspace.h +++ b/sdrgui/gui/workspace.h @@ -40,6 +40,7 @@ public: ~Workspace(); int getIndex() const { return m_index; } + void setIndex(int index); void resetAvailableFeatures() { m_featureAddDialog.resetFeatureNames(); } void addAvailableFeatures(const QStringList& featureNames) { m_featureAddDialog.addFeatureNames(featureNames); } void addToMdiArea(QMdiSubWindow *sub); @@ -47,6 +48,7 @@ public: int getNumberOfSubWindows() const; QByteArray saveMdiGeometry(); void restoreMdiGeometry(const QByteArray& blob); + QList getSubWindowList() const; private: int m_index; diff --git a/sdrgui/mainwindow.cpp b/sdrgui/mainwindow.cpp index 6fcd1cc19..338c08567 100644 --- a/sdrgui/mainwindow.cpp +++ b/sdrgui/mainwindow.cpp @@ -1830,6 +1830,33 @@ void MainWindow::removeEmptyWorkspaces() ++it; } } + + // Renumerate + for (int i = 0; i < m_workspaces.size(); i++) + { + Workspace *workspace = m_workspaces[i]; + workspace->setIndex(i); + QList subWindows = workspace->getSubWindowList(); + + for (auto& subWindow : subWindows) + { + if (qobject_cast(subWindow)) { + qobject_cast(subWindow)->setWorkspaceIndex(i); + } + + if (qobject_cast(subWindow)) { + qobject_cast(subWindow)->setWorkspaceIndex(i); + } + + if (qobject_cast(subWindow)) { + qobject_cast(subWindow)->setWorkspaceIndex(i); + } + + if (qobject_cast(subWindow)) { + qobject_cast(subWindow)->setWorkspaceIndex(i); + } + } + } } void MainWindow::on_action_View_Fullscreen_toggled(bool checked)