optimize datetime plugin

Change-Id: I43404063fa1053cfbbd14f8a71bef207cb624185
This commit is contained in:
石博文 2016-06-27 14:33:21 +08:00 committed by Hualet Wang
parent 464057344c
commit af16b0c136
10 changed files with 88 additions and 27 deletions

View File

@ -23,6 +23,11 @@ void DockPluginsController::itemAdded(PluginsItemInterface * const itemInter, co
emit pluginItemInserted(item); emit pluginItemInserted(item);
} }
DisplayMode DockPluginsController::displayMode() const
{
return Fashion;
}
void DockPluginsController::loadPlugins() void DockPluginsController::loadPlugins()
{ {
// Q_ASSERT(m_pluginLoaderList.isEmpty()); // Q_ASSERT(m_pluginLoaderList.isEmpty());

View File

@ -17,8 +17,11 @@ public:
explicit DockPluginsController(DockItemController *itemControllerInter = 0); explicit DockPluginsController(DockItemController *itemControllerInter = 0);
~DockPluginsController(); ~DockPluginsController();
// implements PluginProxyInterface
void itemAdded(PluginsItemInterface * const itemInter, const QString &itemKey); void itemAdded(PluginsItemInterface * const itemInter, const QString &itemKey);
Dock::DisplayMode displayMode() const;
signals: signals:
void pluginItemInserted(PluginsItem *pluginsItem) const; void pluginItemInserted(PluginsItem *pluginsItem) const;

View File

@ -178,6 +178,7 @@ void DockSettings::positionChanged()
{ {
m_position = Dock::Position(m_dockInter->position()); m_position = Dock::Position(m_dockInter->position());
DockItem::setDockPosition(m_position); DockItem::setDockPosition(m_position);
qApp->setProperty(PROP_POSITION, QVariant::fromValue(m_position));
calculateWindowConfig(); calculateWindowConfig();
@ -198,6 +199,7 @@ void DockSettings::displayModeChanged()
{ {
m_displayMode = Dock::DisplayMode(m_dockInter->displayMode()); m_displayMode = Dock::DisplayMode(m_dockInter->displayMode());
DockItem::setDockDisplayMode(m_displayMode); DockItem::setDockDisplayMode(m_displayMode);
qApp->setProperty(PROP_DISPLAY_MODE, QVariant::fromValue(m_displayMode));
calculateWindowConfig(); calculateWindowConfig();

View File

@ -1,8 +1,11 @@
#ifndef CONSTANTS_H #ifndef CONSTANTS_H
#define CONSTANTS_H #define CONSTANTS_H
#include <QtCore>
namespace Dock { namespace Dock {
#define PROP_DISPLAY_MODE "DisplayMode"
enum DisplayMode enum DisplayMode
{ {
Fashion = 0, Fashion = 0,
@ -11,6 +14,7 @@ enum DisplayMode
// Classic = 2, // Classic = 2,
}; };
#define PROP_HIDE_MODE "HideMode"
enum HideMode enum HideMode
{ {
KeepShowing = 0, KeepShowing = 0,
@ -18,6 +22,7 @@ enum HideMode
SmartHide = 3, SmartHide = 3,
}; };
#define PROP_POSITION "Position"
enum Position enum Position
{ {
Top = 0, Top = 0,
@ -26,6 +31,7 @@ enum Position
Left = 3, Left = 3,
}; };
#define PROP_HIDE_STATE "HideState"
enum HideState enum HideState
{ {
Unknown = 0, Unknown = 0,
@ -35,4 +41,7 @@ enum HideState
} }
Q_DECLARE_METATYPE(Dock::DisplayMode)
Q_DECLARE_METATYPE(Dock::Position)
#endif // CONSTANTS_H #endif // CONSTANTS_H

View File

@ -1,6 +1,8 @@
#ifndef PLUGINPROXYINTERFACE_H #ifndef PLUGINPROXYINTERFACE_H
#define PLUGINPROXYINTERFACE_H #define PLUGINPROXYINTERFACE_H
#include "constants.h"
#include <QtCore> #include <QtCore>
class PluginsItemInterface; class PluginsItemInterface;
@ -9,6 +11,7 @@ class PluginProxyInterface
public: public:
virtual void itemAdded(PluginsItemInterface * const itemInter, const QString &itemKey) = 0; virtual void itemAdded(PluginsItemInterface * const itemInter, const QString &itemKey) = 0;
virtual Dock::DisplayMode displayMode() const = 0;
}; };
#endif // PLUGINPROXYINTERFACE_H #endif // PLUGINPROXYINTERFACE_H

View File

@ -10,10 +10,12 @@ TARGET = $$qtLibraryTarget(datetime)
DESTDIR = $$_PRO_FILE_PWD_/../ DESTDIR = $$_PRO_FILE_PWD_/../
HEADERS += \ HEADERS += \
datetimeplugin.h datetimeplugin.h \
datetimewidget.h
SOURCES += \ SOURCES += \
datetimeplugin.cpp datetimeplugin.cpp \
datetimewidget.cpp
target.path = $${PREFIX}/lib/dde-dock/plugins/ target.path = $${PREFIX}/lib/dde-dock/plugins/
INSTALLS += target INSTALLS += target

View File

@ -2,26 +2,19 @@
DatetimePlugin::DatetimePlugin(QObject *parent) DatetimePlugin::DatetimePlugin(QObject *parent)
: QObject(parent), : QObject(parent),
m_timeLabel(new QLabel),
m_refershTimer(new QTimer(this)) m_refershTimer(new QTimer(this))
{ {
m_timeLabel->setAlignment(Qt::AlignCenter);
m_timeLabel->setStyleSheet("color:white;"
// "background-color:black;"
"padding:5px;"
"font-size:12px;");
m_refershTimer->setInterval(1000); m_refershTimer->setInterval(1000);
m_refershTimer->start(); m_refershTimer->start();
connect(m_refershTimer, &QTimer::timeout, this, &DatetimePlugin::refershTime); m_centeralWidget = new DatetimeWidget;
refershTime(); connect(m_refershTimer, &QTimer::timeout, m_centeralWidget, static_cast<void (DatetimeWidget::*)()>(&DatetimeWidget::update));
} }
DatetimePlugin::~DatetimePlugin() DatetimePlugin::~DatetimePlugin()
{ {
delete m_timeLabel; delete m_centeralWidget;
} }
const QString DatetimePlugin::pluginName() const QString DatetimePlugin::pluginName()
@ -46,13 +39,5 @@ QWidget *DatetimePlugin::itemWidget(const QString &itemKey)
{ {
Q_UNUSED(itemKey); Q_UNUSED(itemKey);
return m_timeLabel; return m_centeralWidget;
}
void DatetimePlugin::refershTime()
{
const QString text = QTime::currentTime().toString(tr("HH:mm"));
if (m_timeLabel->text() != text)
m_timeLabel->setText(text);
} }

View File

@ -2,8 +2,8 @@
#define DATETIMEPLUGIN_H #define DATETIMEPLUGIN_H
#include "pluginsiteminterface.h" #include "pluginsiteminterface.h"
#include "datetimewidget.h"
#include <QLabel>
#include <QTimer> #include <QTimer>
class DatetimePlugin : public QObject, PluginsItemInterface class DatetimePlugin : public QObject, PluginsItemInterface
@ -22,12 +22,8 @@ public:
QWidget *itemWidget(const QString &itemKey); QWidget *itemWidget(const QString &itemKey);
private slots:
void refershTime();
private: private:
QLabel *m_timeLabel; DatetimeWidget *m_centeralWidget;
QTimer *m_refershTimer; QTimer *m_refershTimer;
}; };

View File

@ -0,0 +1,38 @@
#include "datetimewidget.h"
#include "constants.h"
#include <QApplication>
#include <QPainter>
#include <QDebug>
DatetimeWidget::DatetimeWidget(QWidget *parent)
: QWidget(parent)
{
}
QSize DatetimeWidget::sizeHint() const
{
QFontMetrics fm(qApp->font());
return fm.boundingRect("88:88").size() + QSize(20, 10);
}
void DatetimeWidget::paintEvent(QPaintEvent *e)
{
Q_UNUSED(e);
const Dock::DisplayMode displayMode = qApp->property(PROP_DISPLAY_MODE).value<Dock::DisplayMode>();
QPainter painter(this);
if (displayMode == Dock::Efficient)
{
painter.setPen(Qt::white);
painter.drawText(rect(), Qt::AlignCenter, "88:88");
}
else
{
}
}

View File

@ -0,0 +1,18 @@
#ifndef DATETIMEWIDGET_H
#define DATETIMEWIDGET_H
#include <QWidget>
class DatetimeWidget : public QWidget
{
Q_OBJECT
public:
explicit DatetimeWidget(QWidget *parent = 0);
private:
QSize sizeHint() const;
void paintEvent(QPaintEvent *e);
};
#endif // DATETIMEWIDGET_H