From 1aa5922f801cb4ba28c845e45a7b3de8f0a2c5d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E5=8D=9A=E6=96=87?= Date: Mon, 23 Oct 2017 13:36:16 +0800 Subject: [PATCH] datetime: support hide plugin Change-Id: If39a7f316be13fb9d541fc5e5691cee33d1584cd --- plugins/datetime/datetimeplugin.cpp | 23 ++++++++++++++++++++++- plugins/datetime/datetimeplugin.h | 5 +++++ plugins/datetime/datetimewidget.cpp | 12 ++++++++++++ plugins/datetime/datetimewidget.h | 2 ++ 4 files changed, 41 insertions(+), 1 deletion(-) diff --git a/plugins/datetime/datetimeplugin.cpp b/plugins/datetime/datetimeplugin.cpp index 91badc61e..e75fe28f7 100644 --- a/plugins/datetime/datetimeplugin.cpp +++ b/plugins/datetime/datetimeplugin.cpp @@ -56,11 +56,32 @@ const QString DatetimePlugin::pluginName() const return "datetime"; } +const QString DatetimePlugin::pluginDisplayName() const +{ + return tr("Datetime"); +} + void DatetimePlugin::init(PluginProxyInterface *proxyInter) { m_proxyInter = proxyInter; - m_proxyInter->itemAdded(this, QString()); + if (m_centralWidget->enabled()) + m_proxyInter->itemAdded(this, QString()); +} + +void DatetimePlugin::pluginStateSwitched() +{ + m_centralWidget->setEnabled(!m_centralWidget->enabled()); + + if (m_centralWidget->enabled()) + m_proxyInter->itemAdded(this, QString()); + else + m_proxyInter->itemRemoved(this, QString()); +} + +bool DatetimePlugin::pluginIsDisable() +{ + return !m_centralWidget->enabled(); } int DatetimePlugin::itemSortKey(const QString &itemKey) diff --git a/plugins/datetime/datetimeplugin.h b/plugins/datetime/datetimeplugin.h index e66d6a93d..04d3ad266 100644 --- a/plugins/datetime/datetimeplugin.h +++ b/plugins/datetime/datetimeplugin.h @@ -39,8 +39,13 @@ public: ~DatetimePlugin(); const QString pluginName() const override; + const QString pluginDisplayName() const override; void init(PluginProxyInterface *proxyInter) override; + void pluginStateSwitched() override; + bool pluginIsAllowDisable() override { return true; } + bool pluginIsDisable() override; + int itemSortKey(const QString &itemKey) override; QWidget *itemWidget(const QString &itemKey) override; diff --git a/plugins/datetime/datetimewidget.cpp b/plugins/datetime/datetimewidget.cpp index 34295c7a6..cae3618ab 100644 --- a/plugins/datetime/datetimewidget.cpp +++ b/plugins/datetime/datetimewidget.cpp @@ -28,6 +28,8 @@ #include #include +#define PLUGIN_STATE_KEY "enable" + DatetimeWidget::DatetimeWidget(QWidget *parent) : QWidget(parent), @@ -38,6 +40,16 @@ DatetimeWidget::DatetimeWidget(QWidget *parent) } +bool DatetimeWidget::enabled() +{ + return m_settings.value(PLUGIN_STATE_KEY, true).toBool(); +} + +void DatetimeWidget::setEnabled(const bool b) +{ + m_settings.setValue(PLUGIN_STATE_KEY, b); +} + void DatetimeWidget::toggleHourFormat() { m_24HourFormat = !m_24HourFormat; diff --git a/plugins/datetime/datetimewidget.h b/plugins/datetime/datetimewidget.h index 45f4ef8e4..272e1d9db 100644 --- a/plugins/datetime/datetimewidget.h +++ b/plugins/datetime/datetimewidget.h @@ -33,6 +33,8 @@ public: explicit DatetimeWidget(QWidget *parent = 0); bool is24HourFormat() const { return m_24HourFormat; } + bool enabled(); + void setEnabled(const bool b); signals: void requestUpdateGeometry() const;