From eb730d09b699393f33b32677381158ddc9defbb0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E4=B8=87=E9=9D=92?= Date: Wed, 1 Jul 2015 11:10:53 +0800 Subject: [PATCH] Use qss file to set stylesheet --- dde-dock/Resources/qss/default.qss | 29 ++++++++++++++++++ dde-dock/dde-dock.pro | 3 +- dde-dock/qss.qrc | 5 ++++ dde-dock/src/Panel/panel.cpp | 3 +- dde-dock/src/Widgets/appbackground.cpp | 41 +++++++++++++++++++++++++- dde-dock/src/Widgets/appbackground.h | 15 ++++++++++ dde-dock/src/Widgets/appitem.cpp | 7 +++++ dde-dock/src/main.cpp | 15 ++++++++++ 8 files changed, 114 insertions(+), 4 deletions(-) create mode 100644 dde-dock/Resources/qss/default.qss create mode 100644 dde-dock/qss.qrc diff --git a/dde-dock/Resources/qss/default.qss b/dde-dock/Resources/qss/default.qss new file mode 100644 index 000000000..d34617f64 --- /dev/null +++ b/dde-dock/Resources/qss/default.qss @@ -0,0 +1,29 @@ +QLabel#Panel { + background-color: rgba(0,0,0,0.3); +} + +QLabel#AppBackground[isCurrentOpened="true"][isHovered="true"] {/*item is current opened and is hovered*/ + background: rgba(0,255,255,0.5); + border-width: 1px; + border-style: solid; + border-color: rgba(255,255,255,0.3); +} +QLabel#AppBackground[isCurrentOpened="true"][isHovered="false"] {/*item is current opened but not hovered*/ + background: rgba(0,255,255,0.4); + border-width: 1px; + border-style: solid; + border-color: rgba(255,255,255,0.3); +} + +QLabel#AppBackground[isActived="true"][isHovered="true"][isCurrentOpened="false"] {/*item is actived and hovered*/ + background: rgba(255,255,255,0.3); + border-width: 1px; + border-style: solid; + border-color: rgba(255,255,255,0.3); +} +QLabel#AppBackground[isActived="true"][isHovered="false"][isCurrentOpened="false"] {/*item is actived but not hovered*/ + background: rgba(255,255,255,0.15); + border-width: 1px; + border-style: solid; + border-color: rgba(255,255,255,0.3); +} diff --git a/dde-dock/dde-dock.pro b/dde-dock/dde-dock.pro index b4be5417c..af84544bf 100644 --- a/dde-dock/dde-dock.pro +++ b/dde-dock/dde-dock.pro @@ -42,7 +42,8 @@ HEADERS += \ src/Widgets/appitem.h RESOURCES += \ - images.qrc + images.qrc \ + qss.qrc PKGCONFIG += gtk+-2.0 x11 CONFIG += c++11 link_pkgconfig diff --git a/dde-dock/qss.qrc b/dde-dock/qss.qrc new file mode 100644 index 000000000..5c7af4230 --- /dev/null +++ b/dde-dock/qss.qrc @@ -0,0 +1,5 @@ + + + Resources/qss/default.qss + + diff --git a/dde-dock/src/Panel/panel.cpp b/dde-dock/src/Panel/panel.cpp index 8f1662b8d..ec702e035 100644 --- a/dde-dock/src/Panel/panel.cpp +++ b/dde-dock/src/Panel/panel.cpp @@ -3,8 +3,7 @@ Panel::Panel(QWidget *parent) : QLabel(parent),parentWidget(parent) { - this->setStyleSheet("QWidget{background-color: rgba(0,0,0,0.3);}"); - + this->setObjectName("Panel"); leftLayout = new DockLayout(this); leftLayout->resize(1024,50); leftLayout->move(0,0); diff --git a/dde-dock/src/Widgets/appbackground.cpp b/dde-dock/src/Widgets/appbackground.cpp index cfd5ad7b3..e27eea42e 100644 --- a/dde-dock/src/Widgets/appbackground.cpp +++ b/dde-dock/src/Widgets/appbackground.cpp @@ -3,5 +3,44 @@ AppBackground::AppBackground(QWidget *parent) : QLabel(parent) { - this->setStyleSheet("QLabel#AppBackground{background: rgba(255,255,255,0.3);border-radius: 4px;}"); + this->setObjectName("AppBackground"); +} + +bool AppBackground::getIsActived() +{ + return m_isActived; +} + +void AppBackground::setIsActived(bool value) +{ + m_isActived = value; + + style()->unpolish(this); + style()->polish(this);// force a stylesheet recomputation +} + +bool AppBackground::getIsCurrentOpened() +{ + return m_isCurrentOpened; +} + +void AppBackground::setIsCurrentOpened(bool value) +{ + m_isCurrentOpened = value; + + style()->unpolish(this); + style()->polish(this);// force a stylesheet recomputation +} + +bool AppBackground::getIsHovered() +{ + return m_isHovered; +} + +void AppBackground::setIsHovered(bool value) +{ + m_isHovered = value; + + style()->unpolish(this); + style()->polish(this);// force a stylesheet recomputation } diff --git a/dde-dock/src/Widgets/appbackground.h b/dde-dock/src/Widgets/appbackground.h index 54f2b066d..91b910c5e 100644 --- a/dde-dock/src/Widgets/appbackground.h +++ b/dde-dock/src/Widgets/appbackground.h @@ -3,19 +3,34 @@ #include #include +#include #include #include "dockconstants.h" class AppBackground : public QLabel { Q_OBJECT + Q_PROPERTY(bool isActived READ getIsActived WRITE setIsActived) + Q_PROPERTY(bool isCurrentOpened READ getIsCurrentOpened WRITE setIsCurrentOpened) + Q_PROPERTY(bool isHovered READ getIsHovered WRITE setIsHovered) public: explicit AppBackground(QWidget *parent = 0); + bool getIsActived(); + void setIsActived(bool value); + bool getIsCurrentOpened(); + void setIsCurrentOpened(bool value); + bool getIsHovered(); + void setIsHovered(bool value); + signals: public slots: +private: + bool m_isActived = false; + bool m_isCurrentOpened = false; + bool m_isHovered = false; }; #endif // APPBACKGROUND_H diff --git a/dde-dock/src/Widgets/appitem.cpp b/dde-dock/src/Widgets/appitem.cpp index 17b56f461..6807271a5 100644 --- a/dde-dock/src/Widgets/appitem.cpp +++ b/dde-dock/src/Widgets/appitem.cpp @@ -50,6 +50,7 @@ void AppItem::resizeResources() void AppItem::initBackground() { appBackground = new AppBackground(this); +// appBackground->setObjectName("appBackground"); appBackground->resize(width(), height()); appBackground->move(0,0); } @@ -58,6 +59,8 @@ void AppItem::mousePressEvent(QMouseEvent * event) { //qWarning() << "mouse press..."; emit mousePress(event->globalX(), event->globalY()); + ////////////FOR TEST ONLY///////////////////// + appBackground->setIsActived(!appBackground->getIsActived()); } void AppItem::mouseReleaseEvent(QMouseEvent * event) @@ -69,6 +72,8 @@ void AppItem::mouseReleaseEvent(QMouseEvent * event) void AppItem::mouseDoubleClickEvent(QMouseEvent * event) { emit mouseDoubleClick(); + ////////////FOR TEST ONLY///////////////////// + appBackground->setIsCurrentOpened(!appBackground->getIsCurrentOpened()); } void AppItem::mouseMoveEvent(QMouseEvent *event) @@ -97,11 +102,13 @@ void AppItem::mouseMoveEvent(QMouseEvent *event) void AppItem::enterEvent(QEvent *event) { emit mouseEntered(); + appBackground->setIsHovered(true); } void AppItem::leaveEvent(QEvent *event) { emit mouseExited(); + appBackground->setIsHovered(false); } void AppItem::dragEnterEvent(QDragEnterEvent *event) diff --git a/dde-dock/src/main.cpp b/dde-dock/src/main.cpp index 3f9de6f8e..ee5151748 100644 --- a/dde-dock/src/main.cpp +++ b/dde-dock/src/main.cpp @@ -1,9 +1,24 @@ #include +#include +#include #include "mainwidget.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); + + QFile file("://Resources/qss/default.qss"); + if (file.open(QFile::ReadOnly)) + { + QString styleSheet = QLatin1String(file.readAll()); + qApp->setStyleSheet(styleSheet); + file.close(); + } + else + { + qWarning() << "[Error:] Open style file errr!"; + } + MainWidget w; w.show();