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:
ComixHe
2023-08-11 17:46:46 +08:00
committed by Comix
parent 5183716873
commit 2fa74e40e5
10 changed files with 179 additions and 169 deletions

View File

@ -25,13 +25,13 @@ using IconMap = QMap<QString, QMap<uint, QMap<QString, QDBusUnixFileDescriptor>>
inline QString getApplicationLauncherBinary()
{
static const QString bin = []() -> QString {
static const QString bin = []() {
auto value = qgetenv("DEEPIN_APPLICATION_MANAGER_APP_LAUNCH_HELPER_BIN");
if (value.isEmpty()) {
return ApplicationLaunchHelperBinary;
return QString::fromLocal8Bit(ApplicationLaunchHelperBinary);
}
qWarning() << "Using app launch helper defined in environment variable DEEPIN_APPLICATION_MANAGER_APP_LAUNCH_HELPER_BIN.";
return value;
return QString::fromLocal8Bit(value);
}();
return bin;
}
@ -303,4 +303,29 @@ inline QString getRelativePathFromAppId(const QString &id)
return path;
}
inline QStringList getXDGDataDirs()
{
const static auto XDGDataDirs = []() {
auto env = QString::fromLocal8Bit(qgetenv("XDG_DATA_DIRS")).split(':', Qt::SkipEmptyParts);
if (env.isEmpty()) {
env.append(QString{qgetenv("HOME")} + QDir::separator() + ".local/share");
env.append("/usr/local/share");
env.append("/usr/share");
qputenv("XDG_DATA_DIRS", env.join(':').toLocal8Bit());
}
std::for_each(env.begin(), env.end(), [](QString &str) {
if (!str.endsWith(QDir::separator())) {
str.append(QDir::separator());
}
str.append("applications");
});
return env;
}();
return XDGDataDirs;
}
#endif