refact: change implementation of UpdateApplicationInfo
adjust the way of get XDG_DATA_DIRS. Signed-off-by: ComixHe <heyuming@deepin.org> Signed-off-by: black-desk <me@black-desk.cn>
This commit is contained in:
@ -28,21 +28,11 @@ int main(int argc, char *argv[])
|
||||
registerComplexDbusType();
|
||||
ApplicationManager1Service AMService{std::make_unique<CGroupsIdentifier>(), AMBus};
|
||||
QList<DesktopFile> fileList{};
|
||||
QByteArray XDGDataDirs;
|
||||
XDGDataDirs = qgetenv("XDG_DATA_DIRS");
|
||||
if (XDGDataDirs.isEmpty()) {
|
||||
XDGDataDirs.append("/usr/local/share/:/usr/share/");
|
||||
qputenv("XDG_DATA_DIRS", XDGDataDirs);
|
||||
}
|
||||
auto desktopFileDirs = QString::fromLocal8Bit(XDGDataDirs).split(':', Qt::SkipEmptyParts);
|
||||
|
||||
std::for_each(desktopFileDirs.begin(), desktopFileDirs.end(), [](QString &str) {
|
||||
str = QDir::cleanPath(str) + QDir::separator() + "applications";
|
||||
});
|
||||
auto desktopFileDirs = getXDGDataDirs();
|
||||
|
||||
applyIteratively(QList<QDir>(desktopFileDirs.begin(), desktopFileDirs.end()), [&AMService](const QFileInfo &info) -> bool {
|
||||
ParseError err{ParseError::NoError};
|
||||
auto ret = DesktopFile::searchDesktopFile(info.absoluteFilePath(), err);
|
||||
DesktopErrorCode err{DesktopErrorCode::NoError};
|
||||
auto ret = DesktopFile::searchDesktopFileByPath(info.absoluteFilePath(), err);
|
||||
if (!ret.has_value()) {
|
||||
qWarning() << "failed to search File:" << err;
|
||||
return false;
|
||||
|
Reference in New Issue
Block a user