ADS: Cleanup workspace manager workflow

- Add workspace presets
- Add reset button to workspace manager
- Fix last workspace settings save/restore
- Move functionality from DesignModeWidget to DockManager
- Remove factory default workspace
- Cleanup a few if statements

Task-number: QDS-1699
Change-Id: I282dd6162a5a36041f8cd2aacd7407750d54cc22
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
Henning Gruendl
2020-03-02 15:13:20 +01:00
committed by Henning Gründl
parent fb843d3442
commit 5683f2df85
12 changed files with 388 additions and 251 deletions

View File

@@ -50,6 +50,7 @@ namespace ADS {
WorkspaceModel::WorkspaceModel(DockManager *manager, QObject *parent)
: QAbstractTableModel(parent)
, m_manager(manager)
, m_currentSortColumn(0)
{
m_sortedWorkspaces = m_manager->workspaces();
connect(m_manager, &DockManager::workspaceLoaded, this, &WorkspaceModel::resetWorkspaces);
@@ -134,19 +135,18 @@ QVariant WorkspaceModel::data(const QModelIndex &index, int role) const
break;
case Qt::FontRole: {
QFont font;
if (m_manager->isDefaultWorkspace(workspaceName))
if (m_manager->isWorkspacePreset(workspaceName))
font.setItalic(true);
else
font.setItalic(false);
if (m_manager->activeWorkspace() == workspaceName
&& !m_manager->isFactoryDefaultWorkspace(workspaceName))
if (m_manager->activeWorkspace() == workspaceName)
font.setBold(true);
else
font.setBold(false);
result = font;
} break;
case DefaultWorkspaceRole:
result = m_manager->isDefaultWorkspace(workspaceName);
case PresetWorkspaceRole:
result = m_manager->isWorkspacePreset(workspaceName);
break;
case LastWorkspaceRole:
result = m_manager->lastWorkspace() == workspaceName;
@@ -163,7 +163,7 @@ QVariant WorkspaceModel::data(const QModelIndex &index, int role) const
QHash<int, QByteArray> WorkspaceModel::roleNames() const
{
static QHash<int, QByteArray> extraRoles{{Qt::DisplayRole, "workspaceName"},
{DefaultWorkspaceRole, "defaultWorkspace"},
{PresetWorkspaceRole, "presetWorkspace"},
{LastWorkspaceRole, "activeWorkspace"},
{ActiveWorkspaceRole, "lastWorkspace"}};
return QAbstractTableModel::roleNames().unite(extraRoles);
@@ -171,6 +171,9 @@ QHash<int, QByteArray> WorkspaceModel::roleNames() const
void WorkspaceModel::sort(int column, Qt::SortOrder order)
{
m_currentSortColumn = column;
m_currentSortOrder = order;
beginResetModel();
const auto cmp = [this, column, order](const QString &s1, const QString &s2) {
bool isLess;
@@ -186,16 +189,10 @@ void WorkspaceModel::sort(int column, Qt::SortOrder order)
endResetModel();
}
bool WorkspaceModel::isDefaultVirgin() const
{
return false; //m_manager->isFactoryDefaultWorkspace(); // TODO
}
void WorkspaceModel::resetWorkspaces()
{
beginResetModel();
m_sortedWorkspaces = m_manager->workspaces();
endResetModel();
sort(m_currentSortColumn, m_currentSortOrder);
}
void WorkspaceModel::newWorkspace(QWidget *parent)
@@ -225,9 +222,10 @@ void WorkspaceModel::deleteWorkspaces(const QStringList &workspaces)
{
if (!m_manager->confirmWorkspaceDelete(workspaces))
return;
beginResetModel();
m_manager->deleteWorkspaces(workspaces);
endResetModel();
m_sortedWorkspaces = m_manager->workspaces();
sort(m_currentSortColumn, m_currentSortOrder);
}
void WorkspaceModel::renameWorkspace(QWidget *parent, const QString &workspace)
@@ -242,6 +240,12 @@ void WorkspaceModel::renameWorkspace(QWidget *parent, const QString &workspace)
});
}
void WorkspaceModel::resetWorkspace(const QString &workspace)
{
if (m_manager->resetWorkspacePreset(workspace) && workspace == m_manager->activeWorkspace())
m_manager->reloadActiveWorkspace();
}
void WorkspaceModel::switchToWorkspace(const QString &workspace)
{
m_manager->openWorkspace(workspace);
@@ -255,13 +259,14 @@ void WorkspaceModel::runWorkspaceNameInputDialog(WorkspaceNameInputDialog *works
QString newWorkspace = workspaceInputDialog->value();
if (newWorkspace.isEmpty() || m_manager->workspaces().contains(newWorkspace))
return;
beginResetModel();
createWorkspace(newWorkspace);
m_sortedWorkspaces = m_manager->workspaces();
endResetModel();
sort(m_currentSortColumn, m_currentSortOrder);
if (workspaceInputDialog->isSwitchToRequested())
switchToWorkspace(newWorkspace);
emit workspaceCreated(newWorkspace);
}
}