fix: 玲珑应用功能适配

v23环境下,玲珑应用和普通应用的desktop文件名相同, 两种类型的应用都安装的情况下只显示一个.
修复方案: 删除去重处理, 补充desktop全路径校验

Log:
Influence: 启动器-应用列表中可以获取到所有应用
Task: https://pms.uniontech.com/task-view-152805.html
Change-Id: I9eeed5e87de2cbaf7e44d75f81c40f00af344b6a
This commit is contained in:
songwentao 2022-07-22 15:17:43 +08:00
parent 20a2642e74
commit 2f7f467857
5 changed files with 14 additions and 25 deletions

View File

@ -22,7 +22,7 @@
bool LauncherItemInfo::operator!=(const LauncherItemInfo &itemInfo) bool LauncherItemInfo::operator!=(const LauncherItemInfo &itemInfo)
{ {
return itemInfo.id != id; return itemInfo.path != path;
} }
QDBusArgument &operator<<(QDBusArgument &argument, const LauncherItemInfo &itemInfo) QDBusArgument &operator<<(QDBusArgument &argument, const LauncherItemInfo &itemInfo)

View File

@ -371,7 +371,6 @@ std::map<std::string, bool> AppsDir::getAppNames()
// 获取所有应用信息 // 获取所有应用信息
std::vector<DesktopInfo> AppsDir::getAllDesktopInfos() std::vector<DesktopInfo> AppsDir::getAllDesktopInfos()
{ {
std::map<std::string, bool> recoder;
std::vector<DesktopInfo> desktopInfos; std::vector<DesktopInfo> desktopInfos;
for (auto dir : BaseDir::appDirs()) { for (auto dir : BaseDir::appDirs()) {
@ -381,19 +380,13 @@ std::vector<DesktopInfo> AppsDir::getAllDesktopInfos()
continue; continue;
for (const auto &iter : appNames) { for (const auto &iter : appNames) {
if (recoder.find(iter.first) != recoder.end())
continue;
std::string filePath = dir + iter.first; std::string filePath = dir + iter.first;
DesktopInfo desktopInfo(filePath); DesktopInfo desktopInfo(filePath);
if (!desktopInfo.isValidDesktop()) if (!DFile::isExisted(filePath) || !desktopInfo.isValidDesktop() || !desktopInfo.shouldShow())
continue; continue;
if (!desktopInfo.shouldShow()) desktopInfos.push_back(desktopInfo);
continue;
desktopInfos.push_back(std::move(desktopInfo));
recoder[iter.first] = true;
} }
} }

View File

@ -140,11 +140,11 @@ void Launcher::setFullscreen(bool isFull)
*/ */
LauncherItemInfoList Launcher::getAllItemInfos() LauncherItemInfoList Launcher::getAllItemInfos()
{ {
LauncherItemInfoList ret; LauncherItemInfoList allItemList;
for (auto item : itemsMap) { for (auto item : m_desktopAndItemMap)
ret.push_back(item.info); allItemList.push_back(item.info);
}
return ret; return allItemList;
} }
/** /**
@ -686,6 +686,7 @@ void Launcher::addItem(Item item)
item.info.categoryId = qint64(queryCategoryId(&item)); item.info.categoryId = qint64(queryCategoryId(&item));
itemsMap[item.info.id] = item; itemsMap[item.info.id] = item;
m_desktopAndItemMap[item.info.path] = item;
} }
Categorytype Launcher::queryCategoryId(const Item *item) Categorytype Launcher::queryCategoryId(const Item *item)
@ -967,8 +968,6 @@ bool Launcher::doUninstall(DesktopInfo &info, const Item &item)
case (AppType::Default): case (AppType::Default):
ret = removeDesktop(item); ret = removeDesktop(item);
break; break;
default:
break;
} }
return ret; return ret;

View File

@ -147,14 +147,16 @@ private:
void notifyUninstallDone(const Item &item, bool result); void notifyUninstallDone(const Item &item, bool result);
private: private:
QMap<QString, Item> itemsMap; // appKey, Item QMap<QString, Item> itemsMap; // appId, Item
QMap<QString, QString> desktopPkgMap; QMap<QString, QString> desktopPkgMap;
QMap<QString, Categorytype> pkgCategoryMap; QMap<QString, Categorytype> pkgCategoryMap;
QMap<QString, QString> nameMap; QMap<QString, QString> nameMap; // appId, Name
QMap<QString, int> noPkgItemIds; QMap<QString, int> noPkgItemIds;
QVector<QString> appsHidden; QVector<QString> appsHidden;
QStringList appDirs; QStringList appDirs;
QMap<QString, Item> m_desktopAndItemMap; // desktoppath,Item
}; };
#endif // LAUNCHER_H #endif // LAUNCHER_H

View File

@ -96,11 +96,6 @@ int main(int argc, char *argv[])
QDBusConnection::sessionBus().registerObject(app->path().path(), "org.desktopspec.Application", app.get()); QDBusConnection::sessionBus().registerObject(app->path().path(), "org.desktopspec.Application", app.get());
} }
for (const QSharedPointer<Application> &app : apps) {
qInfo() << "appId - " << app->id();
qInfo() << "appFilePath - " << app->filePath();
}
ApplicationManager::instance()->addApplication(apps); ApplicationManager::instance()->addApplication(apps);
ApplicationManager::instance()->launchAutostartApps(); ApplicationManager::instance()->launchAutostartApps();