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:
31
src/global.h
31
src/global.h
@ -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
|
||||
|
Reference in New Issue
Block a user