refact: remove static env instance

Signed-off-by: ComixHe <heyuming@deepin.org>
This commit is contained in:
ComixHe 2023-08-29 18:22:47 +08:00 committed by Comix
parent d00cd17f2e
commit f2d5b7b307
2 changed files with 36 additions and 44 deletions

View File

@ -366,58 +366,50 @@ inline QString getRelativePathFromAppId(const QString &id)
inline QStringList getDesktopFileDirs() inline QStringList getDesktopFileDirs()
{ {
const static auto XDGDataDirs = []() { auto XDGDataDirs = QString::fromLocal8Bit(qgetenv("XDG_DATA_DIRS")).split(':', Qt::SkipEmptyParts);
auto XDGDataDirs = QString::fromLocal8Bit(qgetenv("XDG_DATA_DIRS")).split(':', Qt::SkipEmptyParts);
if (XDGDataDirs.isEmpty()) { if (XDGDataDirs.isEmpty()) {
XDGDataDirs.append("/usr/local/share"); XDGDataDirs.append("/usr/local/share");
XDGDataDirs.append("/usr/share"); XDGDataDirs.append("/usr/share");
}
auto XDGDataHome = QString::fromLocal8Bit(qgetenv("XDG_DATA_HOME"));
if (XDGDataHome.isEmpty()) {
XDGDataHome = QString::fromLocal8Bit(qgetenv("HOME")) + QDir::separator() + ".local" + QDir::separator() + "share";
}
XDGDataDirs.push_front(std::move(XDGDataHome));
std::for_each(XDGDataDirs.begin(), XDGDataDirs.end(), [](QString &str) {
if (!str.endsWith(QDir::separator())) {
str.append(QDir::separator());
} }
str.append("applications");
auto XDGDataHome = QString::fromLocal8Bit(qgetenv("XDG_DATA_HOME")); });
if (XDGDataHome.isEmpty()) {
XDGDataHome = QString::fromLocal8Bit(qgetenv("HOME")) + QDir::separator() + ".local" + QDir::separator() + "share";
}
XDGDataDirs.push_front(std::move(XDGDataHome));
std::for_each(XDGDataDirs.begin(), XDGDataDirs.end(), [](QString &str) {
if (!str.endsWith(QDir::separator())) {
str.append(QDir::separator());
}
str.append("applications");
});
return XDGDataDirs;
}();
return XDGDataDirs; return XDGDataDirs;
} }
inline QStringList getAutoStartDirs() inline QStringList getAutoStartDirs()
{ {
const static auto XDGConfigDirs = []() { auto XDGConfigDirs = QString::fromLocal8Bit(qgetenv("XDG_CONFIG_DIRS")).split(':', Qt::SkipEmptyParts);
auto XDGConfigDirs = QString::fromLocal8Bit(qgetenv("XDG_CONFIG_DIRS")).split(':', Qt::SkipEmptyParts); if (XDGConfigDirs.isEmpty()) {
if (XDGConfigDirs.isEmpty()) { XDGConfigDirs.append("/etc/xdg");
XDGConfigDirs.append("/etc/xdg"); }
auto XDGConfigHome = QString::fromLocal8Bit(qgetenv("XDG_CONFIG_HOME"));
if (XDGConfigHome.isEmpty()) {
XDGConfigHome = QString::fromLocal8Bit(qgetenv("HOME")) + QDir::separator() + ".config";
}
XDGConfigDirs.push_front(std::move(XDGConfigHome));
std::for_each(XDGConfigDirs.begin(), XDGConfigDirs.end(), [](QString &str) {
if (!str.endsWith(QDir::separator())) {
str.append(QDir::separator());
} }
str.append("autostart");
auto XDGConfigHome = QString::fromLocal8Bit(qgetenv("XDG_CONFIG_HOME")); });
if (XDGConfigHome.isEmpty()) {
XDGConfigHome = QString::fromLocal8Bit(qgetenv("HOME")) + QDir::separator() + ".config";
}
XDGConfigDirs.push_front(std::move(XDGConfigHome));
std::for_each(XDGConfigDirs.begin(), XDGConfigDirs.end(), [](QString &str) {
if (!str.endsWith(QDir::separator())) {
str.append(QDir::separator());
}
str.append("autostart");
});
return XDGConfigDirs;
}();
return XDGConfigDirs; return XDGConfigDirs;
} }

View File

@ -18,7 +18,7 @@ public:
env = qgetenv("XDG_DATA_DIRS"); env = qgetenv("XDG_DATA_DIRS");
auto curDir = QDir::current(); auto curDir = QDir::current();
QByteArray fakeXDG = (curDir.absolutePath() + QDir::separator() + "data").toLocal8Bit(); QByteArray fakeXDG = (curDir.absolutePath() + QDir::separator() + "data").toLocal8Bit();
qputenv("XDG_DATA_DIRS", fakeXDG); ASSERT_TRUE(qputenv("XDG_DATA_DIRS", fakeXDG)) ;
DesktopErrorCode err; DesktopErrorCode err;
auto file = DesktopFile::searchDesktopFileById("deepin-editor", err); auto file = DesktopFile::searchDesktopFileById("deepin-editor", err);
if (!file.has_value()) { if (!file.has_value()) {