From a7da6ce16209f38953ec9004da41d3d9f872369a Mon Sep 17 00:00:00 2001 From: laserpants Date: Sat, 14 May 2016 15:18:57 +0300 Subject: [PATCH] implement flat button color roles --- components/flatbutton.cpp | 26 ++++++++++++++++++++++++++ components/flatbutton.h | 3 +++ components/flatbutton_p.h | 5 ++++- examples/flatbuttonexamples.cpp | 4 ++++ lib/theme.h | 6 ++++++ 5 files changed, 43 insertions(+), 1 deletion(-) diff --git a/components/flatbutton.cpp b/components/flatbutton.cpp index 03413a4..f392e8d 100644 --- a/components/flatbutton.cpp +++ b/components/flatbutton.cpp @@ -3,6 +3,8 @@ #include #include #include +#include +#include #include #include "lib/style.h" #include "lib/rippleoverlay.h" @@ -26,6 +28,30 @@ FlatButton::~FlatButton() { } +void FlatButton::setRole(Material::Role role) +{ + Q_D(FlatButton); + + d->role = role; + + //Style &style = Style::instance(); + //switch (role) + //{ + //case Material::Primary: + // d->palette.setColor(QPalette::ButtonText, style.themeColor("primary1")); + // break; + //case Material::Secondary: + // d->palette.setColor(QPalette::ButtonText, style.themeColor("accent1")); + // break; + //default: + // d->palette.setColor(QPalette::ButtonText, style.themeColor("text")); + // break; + //} + //setPalette(d->palette); + + update(); +} + void FlatButton::resizeEvent(QResizeEvent *event) { Q_D(FlatButton); diff --git a/components/flatbutton.h b/components/flatbutton.h index b752f7f..f787f4c 100644 --- a/components/flatbutton.h +++ b/components/flatbutton.h @@ -3,6 +3,7 @@ #include #include +#include "lib/theme.h" class FlatButtonPrivate; @@ -15,6 +16,8 @@ public: explicit FlatButton(const QString &text, QWidget *parent = 0); ~FlatButton(); + void setRole(Material::Role role); + protected: void resizeEvent(QResizeEvent *event) Q_DECL_OVERRIDE; void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE; diff --git a/components/flatbutton_p.h b/components/flatbutton_p.h index 5e75222..26cd8a2 100644 --- a/components/flatbutton_p.h +++ b/components/flatbutton_p.h @@ -3,6 +3,7 @@ #include "flatbutton.h" #include "lib/rippleoverlay.h" +#include "lib/theme.h" class FlatButtonPrivate { @@ -14,11 +15,13 @@ public: FlatButton *const q_ptr; RippleOverlay *const ripple; + Material::Role role; }; FlatButtonPrivate::FlatButtonPrivate(FlatButton *parent) : q_ptr(parent), - ripple(new RippleOverlay(parent)) + ripple(new RippleOverlay(parent)), + role(Material::Default) { parent->setStyle(&Style::instance()); parent->setAttribute(Qt::WA_Hover); diff --git a/examples/flatbuttonexamples.cpp b/examples/flatbuttonexamples.cpp index e4de78a..23af460 100644 --- a/examples/flatbuttonexamples.cpp +++ b/examples/flatbuttonexamples.cpp @@ -15,8 +15,12 @@ FlatButtonExamples::FlatButtonExamples(QWidget *parent) flatButton->setText("Press me!"); flatButton->setMinimumSize(200, 42); + flatButton->setRole(Material::Primary); +// flatButton->setDisabled(true); + ExampleView *view = new ExampleView; view->setWidget(flatButton); + view->setBackgroundRole(QPalette::Base); Frame *frame = new Frame; frame->setCodeSnippet( diff --git a/lib/theme.h b/lib/theme.h index 438aac4..255ce79 100644 --- a/lib/theme.h +++ b/lib/theme.h @@ -8,6 +8,12 @@ namespace Material { + enum Role { + Default, + Primary, + Secondary + }; + enum Color { red50, red100,