Skip to content

Commit 8a2b2ab

Browse files
sync: from linuxdeepin/dde-session-shell
Synchronize source files from linuxdeepin/dde-session-shell. Source-pull-request: linuxdeepin/dde-session-shell#11
1 parent ea24f05 commit 8a2b2ab

File tree

2 files changed

+48
-6
lines changed

2 files changed

+48
-6
lines changed

src/widgets/inhibitwarnview.cpp

Lines changed: 43 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,22 @@
1010
#include <DLabel>
1111
#include <DToolTip>
1212

13+
#ifdef ENABLE_DSS_SNIPE
14+
#include <DSGApplication>
15+
#include <DUtil>
16+
#include <DDBusSender>
17+
#endif
18+
1319
#include <QHBoxLayout>
1420

1521
DWIDGET_USE_NAMESPACE
1622

23+
#ifdef ENABLE_DSS_SNIPE
24+
#define AMDBUS_SERVICE "org.desktopspec.ApplicationManager1"
25+
#define AMDBUS_PATH_APP_PREFIX "/org/desktopspec/ApplicationManager1"
26+
#define AMDBUS_APP_INTERFACE "org.desktopspec.ApplicationManager1.Application"
27+
#endif
28+
1729
const int ButtonWidth = 200;
1830
const int ButtonHeight = 64;
1931
const int FIXED_INHIBITOR_WIDTH = 328;
@@ -86,16 +98,41 @@ void InhibitWarnView::setInhibitorList(const QList<InhibitorData> &list)
8698
for (const InhibitorData &inhibitor : list) {
8799
QIcon icon;
88100

89-
if (inhibitor.icon.isEmpty() && inhibitor.pid) {
101+
if (inhibitor.icon.isEmpty()) {
102+
QString iconName;
103+
#ifdef ENABLE_DSS_SNIPE
104+
do {
105+
const auto appId = Dtk::Core::DSGApplication::getId(inhibitor.pid);
106+
if (appId.isEmpty())
107+
break;
108+
const auto amDBusAppPath = QString("%1/%2").arg(AMDBUS_PATH_APP_PREFIX, DUtil::escapeToObjectPath(appId));
109+
QDBusReply<QDBusVariant> reply = DDBusSender()
110+
.service(AMDBUS_SERVICE)
111+
.path(amDBusAppPath)
112+
.interface(AMDBUS_APP_INTERFACE)
113+
.property("Icons")
114+
.get();
115+
if (reply.isValid()) {
116+
auto ret = qdbus_cast<QMap<QString, QString>>(reply.value().variant());
117+
iconName = ret.value("Desktop Entry");
118+
} else {
119+
qCWarning(DDE_SHELL) << "Get icon error:" << reply.error().message();
120+
break;
121+
}
122+
} while(0);
123+
#endif
124+
125+
if (iconName.isEmpty() && inhibitor.pid) {
90126
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
91-
QFileInfo executable_info(QFile::symLinkTarget(QString("/proc/%1/exe").arg(inhibitor.pid)));
127+
QFileInfo executable_info(QFile::symLinkTarget(QString("/proc/%1/exe").arg(inhibitor.pid)));
92128
#else
93-
QFileInfo executable_info(QFile::readLink(QString("/proc/%1/exe").arg(inhibitor.pid)));
129+
QFileInfo executable_info(QFile::readLink(QString("/proc/%1/exe").arg(inhibitor.pid)));
94130
#endif
95-
96-
if (executable_info.exists()) {
97-
icon = QIcon::fromTheme(executable_info.fileName());
131+
// 玲珑应用的exe指向的路径是容器内的路径,在容器外无法访问,因此不能判断文件是否存在
132+
QString iconName = executable_info.fileName();
98133
}
134+
135+
icon = QIcon::fromTheme(iconName);
99136
} else {
100137
icon = QIcon::fromTheme(inhibitor.icon, QIcon::fromTheme("application-x-desktop"));
101138
}

src/widgets/shutdownwidget.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,12 @@ QT_TRANSLATE_NOOP("ShutdownWidget", "Suspend"),
1717
QT_TRANSLATE_NOOP("ShutdownWidget", "Hibernate")
1818
#endif
1919

20+
#ifdef ENABLE_DSS_SNIPE
21+
const QString LASTORE_DCONFIG_NAME = "org.deepin.dde.lastore";
22+
#else
2023
const QString LASTORE_DCONFIG_NAME = "org.deepin.lastore";
24+
#endif
25+
2126
const QString LASTORE_DAEMON_STATUS = "lastore-daemon-status";
2227
const int IS_UPDATE_READY = 1 << 0;
2328
const int IS_UPDATE_DISABLED = 1 << 1;

0 commit comments

Comments
 (0)