feat: 参照dde-weather重构插件,修复显示与弹窗定位
- QML 根元素使用 AppletItem,参照 dde-weather 插件实现 - 使用 Panel.rootObject.dockItemMaxSize 适配任务栏图标尺寸 - dockOrder 设为 21,定位在系统托盘左侧 - 使用 PanelPopup + PanelToolTip + TapHandler 实现点击弹窗和悬停提示 - 弹窗打开前设置 DockPanelPositioner.bounding 修正弹窗定位 - C++ 后端新增 dbusAvailable 属性,D-Bus 不可用时优雅降级 - 使用 isServiceRegistered 正确检测 D-Bus 服务可用性 - install.sh 改用 SCRIPT_DIR 自动定位项目根目录
This commit is contained in:
@@ -6,6 +6,7 @@
|
||||
#include <pluginfactory.h>
|
||||
|
||||
#include <QDBusConnection>
|
||||
#include <QDBusConnectionInterface>
|
||||
#include <QDBusPendingReply>
|
||||
#include <QDebug>
|
||||
#include <QJsonDocument>
|
||||
@@ -26,6 +27,7 @@ GraphicsDriverApplet::GraphicsDriverApplet(QObject *parent)
|
||||
, m_progressTimer(new QTimer(this))
|
||||
, m_installProgress(0)
|
||||
, m_isInstalling(false)
|
||||
, m_dbusAvailable(false)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -36,15 +38,14 @@ GraphicsDriverApplet::~GraphicsDriverApplet()
|
||||
bool GraphicsDriverApplet::load()
|
||||
{
|
||||
initDBusConnection();
|
||||
connect(m_progressTimer, &QTimer::timeout, [this]() {
|
||||
// Poll progress
|
||||
});
|
||||
return DApplet::load();
|
||||
}
|
||||
|
||||
bool GraphicsDriverApplet::init()
|
||||
{
|
||||
refreshDeviceInfo();
|
||||
if (m_dbusAvailable) {
|
||||
refreshDeviceInfo();
|
||||
}
|
||||
return DApplet::init();
|
||||
}
|
||||
|
||||
@@ -68,6 +69,11 @@ bool GraphicsDriverApplet::isInstalling() const
|
||||
return m_isInstalling;
|
||||
}
|
||||
|
||||
bool GraphicsDriverApplet::dbusAvailable() const
|
||||
{
|
||||
return m_dbusAvailable;
|
||||
}
|
||||
|
||||
void GraphicsDriverApplet::refreshDeviceInfo()
|
||||
{
|
||||
if (!m_dbusInterface || !m_dbusInterface->isValid()) {
|
||||
@@ -215,6 +221,13 @@ void GraphicsDriverApplet::initDBusConnection()
|
||||
return;
|
||||
}
|
||||
|
||||
// 检查服务是否已注册
|
||||
bool registered = bus.interface()->isServiceRegistered(DBUS_SERVICE);
|
||||
if (!registered) {
|
||||
qWarning() << "GraphicsDriver D-Bus service is not registered";
|
||||
return;
|
||||
}
|
||||
|
||||
m_dbusInterface = new QDBusInterface(
|
||||
DBUS_SERVICE,
|
||||
DBUS_PATH,
|
||||
@@ -228,8 +241,13 @@ void GraphicsDriverApplet::initDBusConnection()
|
||||
return;
|
||||
}
|
||||
|
||||
m_dbusAvailable = true;
|
||||
emit dbusAvailableChanged();
|
||||
|
||||
connect(m_dbusInterface, SIGNAL(ReportProgress(QString)),
|
||||
this, SLOT(onReportProgress(QString)));
|
||||
|
||||
qDebug() << "GraphicsDriver D-Bus connected successfully";
|
||||
}
|
||||
|
||||
void GraphicsDriverApplet::setInstalling(bool installing)
|
||||
|
||||
Reference in New Issue
Block a user