diff --git a/src/job/appmanagerjob.cpp b/src/job/appmanagerjob.cpp index c1479ff7e84b6ddcbc4f688bf7d8c7d75e90f110..f7f22c9fba8d90e0add3bc7c3356cc3350a7b669 100644 --- a/src/job/appmanagerjob.cpp +++ b/src/job/appmanagerjob.cpp @@ -804,9 +804,14 @@ void AppManagerJob::loadPkgInstalledAppInfo(const AM::PkgInfo &pkgInfo) // 获取安装文件路径列表 appInfo->installedPkgInfo.installedFileList = getAppInstalledFileList(appInfo->installedPkgInfo.pkgName); // 获取desktop - appInfo->desktopInfo.desktopPath = getAppDesktopPath(appInfo->installedPkgInfo.installedFileList, - appInfo->installedPkgInfo.pkgName); - appInfo->desktopInfo = getDesktopInfo(appInfo->desktopInfo.desktopPath); + QStringList desktopPathList = getAppDesktopPathList(appInfo->installedPkgInfo.installedFileList, + appInfo->installedPkgInfo.pkgName); + for (QStringList::const_iterator iter = desktopPathList.begin(); iter != desktopPathList.end(); ++iter) { + appInfo->desktopInfo = getDesktopInfo(*iter); + if (!appInfo->desktopInfo.desktopPath.isEmpty()) { + break; + } + } m_mutex.unlock(); // 解锁 } @@ -844,19 +849,22 @@ QStringList AppManagerJob::getAppInstalledFileList(const QString &pkgName) return fileList; } -QString AppManagerJob::getAppDesktopPath(const QStringList &list, const QString &pkgName) +QStringList AppManagerJob::getAppDesktopPathList(const QStringList &list, const QString &pkgName) { + QStringList desktopPathList; for (const QString &path : list) { if (path.startsWith("/usr/share/applications/") && path.endsWith(".desktop")) { - return path; + desktopPathList.append(path); + continue; } if (path.startsWith(QString("/opt/apps/%1/entries/applications/").arg(pkgName)) && path.endsWith(".desktop")) { - return path; + desktopPathList.append(path); + continue; } } - return {}; + return desktopPathList; } DesktopInfo AppManagerJob::getDesktopInfo(const QString &desktop) diff --git a/src/job/appmanagerjob.h b/src/job/appmanagerjob.h index 3c38e3af036a7d2938f895640461cdb7e1b3c5bc..4cbed2b8f361a7edf954e2e9d32336aa2960f8d7 100644 --- a/src/job/appmanagerjob.h +++ b/src/job/appmanagerjob.h @@ -105,7 +105,7 @@ private: void loadAllPkgInstalledAppInfos(); QStringList getAppInstalledFileList(const QString &pkgName); - QString getAppDesktopPath(const QStringList &list, const QString &pkgName); + QStringList getAppDesktopPathList(const QStringList &list, const QString &pkgName); AM::DesktopInfo getDesktopInfo(const QString &desktop); qint64 getUrlFileSize(QString &url, int tryTimes = 3);