diff --git a/plugins/datetime/datetimeplugin.cpp b/plugins/datetime/datetimeplugin.cpp index d61af38ef..2d9fda015 100644 --- a/plugins/datetime/datetimeplugin.cpp +++ b/plugins/datetime/datetimeplugin.cpp @@ -30,6 +30,7 @@ DatetimePlugin::DatetimePlugin(QObject *parent) : QObject(parent) + , m_pluginLoaded(false) { m_interface = new QDBusInterface("com.deepin.daemon.Timedate", "/com/deepin/daemon/Timedate", "com.deepin.daemon.Timedate"); @@ -64,6 +65,15 @@ void DatetimePlugin::init(PluginProxyInterface *proxyInter) return; } + loadPlugin(); +} + +void DatetimePlugin::loadPlugin() +{ + if (m_pluginLoaded) + return; + + m_pluginLoaded = true; m_dateTipsLabel = new TipsWidget; m_refershTimer = new QTimer(this); m_dateTipsLabel->setObjectName("datetime"); @@ -87,6 +97,7 @@ void DatetimePlugin::init(PluginProxyInterface *proxyInter) connect(m_centralWidget, &DatetimeWidget::requestUpdateGeometry, [this] { m_proxyInter->itemUpdate(this, pluginName()); }); connect(m_refershTimer, &QTimer::timeout, this, &DatetimePlugin::updateCurrentTimeString); + m_proxyInter->itemAdded(this, pluginName()); } @@ -225,10 +236,16 @@ void DatetimePlugin::updateCurrentTimeString() void DatetimePlugin::refreshPluginItemsVisible() { - if (!pluginIsDisable()) + if (!pluginIsDisable()) { + + if (!m_pluginLoaded) { + loadPlugin(); + return; + } m_proxyInter->itemAdded(this, pluginName()); - else + } else { m_proxyInter->itemRemoved(this, pluginName()); + } } void DatetimePlugin::propertiesChanged() diff --git a/plugins/datetime/datetimeplugin.h b/plugins/datetime/datetimeplugin.h index d17c15278..7d925397f 100644 --- a/plugins/datetime/datetimeplugin.h +++ b/plugins/datetime/datetimeplugin.h @@ -66,15 +66,16 @@ private slots: void refreshPluginItemsVisible(); void propertiesChanged(); +private: + void loadPlugin(); + private: QPointer m_centralWidget; QPointer m_dateTipsLabel; - QTimer *m_refershTimer; - QString m_currentTimeString; - QDBusInterface *m_interface; + bool m_pluginLoaded; }; #endif // DATETIMEPLUGIN_H