From 0d5e7254dd3b591a9e9098248f6d0324a595f357 Mon Sep 17 00:00:00 2001 From: Wang Zichong Date: Tue, 30 Dec 2025 13:46:54 +0800 Subject: [PATCH] chore: remove AppsModel::appItem(desktopId) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 此接口会先调用 appItems() 获取所有应用的列表,然后再遍历以进行查找. 一方面是效率问题(可以直接查找返回),一方面可能存在遍历时原有指针可能 失效的问题. 原本相关类提供了 itemFromDesktopId() 接口提供了完全相同的功能,故直 接移除 appItem(desktopId) 接口. Log: --- src/models/appsmodel.cpp | 25 ++----------------------- src/models/appsmodel.h | 5 +---- 2 files changed, 3 insertions(+), 27 deletions(-) diff --git a/src/models/appsmodel.cpp b/src/models/appsmodel.cpp index 20d65d94..3bdfe0f5 100644 --- a/src/models/appsmodel.cpp +++ b/src/models/appsmodel.cpp @@ -76,7 +76,7 @@ AppsModel::AppsModel(QObject *parent) if (AppMgr::instance()->isValid()) { connect(AppMgr::instance(), &AppMgr::changed, m_tmUpdateCache, qOverload<>(&QTimer::start)); connect(AppMgr::instance(), &AppMgr::itemDataChanged, this, [this](const QString &id) { - const auto appItem = this->appItem(id); + const auto appItem = this->itemFromDesktopId(id); if (!appItem) { qWarning() << "Not existing item in AppsModel for the desktopId" << id; return; @@ -98,27 +98,6 @@ AppsModel::AppsModel(QObject *parent) connect(m_tmUpdateCache, &QTimer::timeout, this, &AppsModel::updateModelData); } -QList AppsModel::appItems() const -{ - QList items; - for (int i = 0; i < rowCount(); i++) { - if (auto appItem = dynamic_cast(item(i))) { - items.append(appItem); - } - } - - return items; -} - -AppItem *AppsModel::appItem(const QString &desktopId) const -{ - const auto items = appItems(); - auto iter = std::find_if(items.begin(), items.end(), [desktopId](AppItem *item) { - return item->freedesktopId() == desktopId; - }); - return iter != items.end() ? *iter : nullptr; -} - void AppsModel::appendRows(const QList items) { // TODO: preformance improvement? @@ -127,7 +106,7 @@ void AppsModel::appendRows(const QList items) } } -AppItem *AppsModel::itemFromDesktopId(const QString freedesktopId) +AppItem *AppsModel::itemFromDesktopId(const QString freedesktopId) const { QModelIndexList indexes = match(index(0, 0, QModelIndex()), AppItem::DesktopIdRole, freedesktopId, 1, Qt::MatchExactly); diff --git a/src/models/appsmodel.h b/src/models/appsmodel.h index 4b1fd084..2f8c40b2 100644 --- a/src/models/appsmodel.h +++ b/src/models/appsmodel.h @@ -46,14 +46,12 @@ class AppsModel : public QStandardItemModel void appendRows(const QList items); - AppItem * itemFromDesktopId(const QString freedesktopId); + AppItem * itemFromDesktopId(const QString freedesktopId) const; [[nodiscard("might need to free them")]] const QList addItems(const QList &items); [[nodiscard("might need to free them")]] const QList updateItems(const QList &items); // QAbstractItemModel interface QVariant data(const QModelIndex &index, int role) const override; - - AppItem *appItem(const QString &desktopId) const; private slots: void updateModelData(); @@ -62,7 +60,6 @@ private slots: QList allAppInfosShouldBeShown() const; void cleanUpInvalidApps(const QList knownExistedApps); - QList appItems() const; Dtk::Core::DConfig * m_dconfig; QStringList m_excludedAppIdList;