aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/studiowelcome
diff options
context:
space:
mode:
authorHenning Gruendl <henning.gruendl@qt.io>2023-11-14 11:53:22 +0100
committerHenning Gründl <henning.gruendl@qt.io>2023-11-14 13:16:52 +0000
commit4da241f26facfe41bc2faf06ed356e9921eb19e5 (patch)
tree1d9722a12d09a44fc8ce876767afe1ed371bb401 /src/plugins/studiowelcome
parentb080a3772c3f913d72f80be431fb0cdf48d42447 (diff)
QmlDesigner: Make recent project removable
Add functionality to remove individual recent projects and the complete list of recent projects. Task-number: QDS-6606 Task-number: QDS-8761 Change-Id: I8ff4de918ebb2f7a6ffb06e6d3ba04e38eb7f386 Reviewed-by: Brook Cronin <brook.cronin@qt.io> Reviewed-by: Qt CI Patch Build Bot <ci_patchbuild_bot@qt.io> Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Diffstat (limited to 'src/plugins/studiowelcome')
-rw-r--r--src/plugins/studiowelcome/studiowelcomeplugin.cpp43
1 files changed, 42 insertions, 1 deletions
diff --git a/src/plugins/studiowelcome/studiowelcomeplugin.cpp b/src/plugins/studiowelcome/studiowelcomeplugin.cpp
index a08e2f48bd2..d9b29ffb951 100644
--- a/src/plugins/studiowelcome/studiowelcomeplugin.cpp
+++ b/src/plugins/studiowelcome/studiowelcomeplugin.cpp
@@ -221,6 +221,7 @@ public:
Q_PROPERTY(bool communityVersion MEMBER m_communityVersion NOTIFY communityVersionChanged)
Q_PROPERTY(bool enterpriseVersion MEMBER m_enterpriseVersion NOTIFY enterpriseVersionChanged)
+ Q_PROPERTY(int count READ count NOTIFY countChanged)
explicit ProjectModel(QObject *parent = nullptr);
@@ -228,6 +229,8 @@ public:
QVariant data(const QModelIndex &index, int role) const override;
QHash<int, QByteArray> roleNames() const override;
+ int count() { return ProjectExplorer::ProjectExplorerPlugin::recentProjects().count(); }
+
Q_INVOKABLE void createProject()
{
QTimer::singleShot(0, this, []() {
@@ -259,6 +262,33 @@ public:
};
}
+ delayedResetProjects();
+ }
+
+ Q_INVOKABLE void removeFromRecentProjects(int row)
+ {
+ if (m_blockOpenRecent)
+ return;
+
+ m_blockOpenRecent = true;
+ const FilePath projectFile = FilePath::fromVariant(
+ data(index(row, 0), ProjectModel::FilePathRole));
+
+ if (projectFile.exists())
+ ProjectExplorer::ProjectExplorerPlugin::removeFromRecentProjects(projectFile);
+
+ resetProjects();
+ }
+
+ Q_INVOKABLE void clearRecentProjects()
+ {
+ if (m_blockOpenRecent)
+ return;
+
+ m_blockOpenRecent = true;
+
+ ProjectExplorer::ProjectExplorerPlugin::clearRecentProjects();
+
resetProjects();
}
@@ -317,10 +347,12 @@ public:
public slots:
void resetProjects();
+ void delayedResetProjects();
signals:
void communityVersionChanged();
void enterpriseVersionChanged();
+ void countChanged();
private:
void setupVersion();
@@ -343,7 +375,9 @@ ProjectModel::ProjectModel(QObject *parent)
connect(ProjectExplorer::ProjectExplorerPlugin::instance(),
&ProjectExplorer::ProjectExplorerPlugin::recentProjectsChanged,
this,
- &ProjectModel::resetProjects);
+ &ProjectModel::delayedResetProjects);
+
+ connect(this, &QAbstractListModel::modelReset, this, &ProjectModel::countChanged);
setupVersion();
}
@@ -468,6 +502,13 @@ QHash<int, QByteArray> ProjectModel::roleNames() const
void ProjectModel::resetProjects()
{
+ beginResetModel();
+ endResetModel();
+ m_blockOpenRecent = false;
+}
+
+void ProjectModel::delayedResetProjects()
+{
QTimer::singleShot(2000, this, [this]() {
beginResetModel();
endResetModel();