diff --git a/components/flatbutton.cpp b/components/flatbutton.cpp index f155192..f2b2fd1 100644 --- a/components/flatbutton.cpp +++ b/components/flatbutton.cpp @@ -68,7 +68,7 @@ FlatButton::~FlatButton() { } -void FlatButton::setRippleStyle(RippleStyle style) +void FlatButton::setRippleStyle(Material::RippleStyle style) { Q_D(FlatButton); @@ -187,13 +187,13 @@ void FlatButton::mousePressEvent(QMouseEvent *event) { Q_D(FlatButton); - if (FlatButton::NoRipple == d->rippleStyle) { + if (Material::NoRipple == d->rippleStyle) { return; } QColor color = palette().color(QPalette::Active, QPalette::ButtonText); - Ripple *ripple = new Ripple(FlatButton::CenteredRipple == d->rippleStyle + Ripple *ripple = new Ripple(Material::CenteredRipple == d->rippleStyle ? rect().center() : event->pos()); ripple->setRadiusEndValue(100); diff --git a/components/flatbutton.h b/components/flatbutton.h index 38fbd6e..68fc5cd 100644 --- a/components/flatbutton.h +++ b/components/flatbutton.h @@ -14,19 +14,13 @@ class FlatButton : public QPushButton Q_PROPERTY(qreal cornerRadius WRITE setCornerRadius READ cornerRadius) public: - enum RippleStyle { - CenteredRipple, - PositionedRipple, - NoRipple - }; - explicit FlatButton(QWidget *parent = 0); explicit FlatButton(const QString &text, QWidget *parent = 0); ~FlatButton(); virtual void setRole(Material::Role role); - void setRippleStyle(RippleStyle style); + void setRippleStyle(Material::RippleStyle style); void setCornerRadius(qreal radius); qreal cornerRadius() const; diff --git a/components/flatbutton_p.h b/components/flatbutton_p.h index 86aa22c..454415b 100644 --- a/components/flatbutton_p.h +++ b/components/flatbutton_p.h @@ -18,7 +18,7 @@ public: FlatButtonPrivate(FlatButton *q) : q_ptr(q), role(Material::Default), - rippleStyle(FlatButton::PositionedRipple), + rippleStyle(Material::PositionedRipple), cornerRadius(3) {} @@ -29,7 +29,7 @@ public: RippleOverlay *ripple; FlatButtonDelegate *delegate; Material::Role role; - FlatButton::RippleStyle rippleStyle; + Material::RippleStyle rippleStyle; qreal cornerRadius; }; diff --git a/components/tabs.cpp b/components/tabs.cpp index 5253802..d351bb3 100644 --- a/components/tabs.cpp +++ b/components/tabs.cpp @@ -4,6 +4,8 @@ #include #include "tabs_p.h" #include "tabs_internal.h" +#include "lib/ripple.h" +#include "lib/style.h" TabsPrivate::TabsPrivate(Tabs *q) : q_ptr(q), @@ -21,6 +23,7 @@ void TabsPrivate::init() q->setLayout(tabLayout); tabLayout->setSpacing(0); tabLayout->setMargin(0); + tabLayout->setContentsMargins(0, 0, 0, 2); } Tabs::Tabs(QWidget *parent) @@ -40,6 +43,8 @@ void Tabs::addTab(const QString &text) Tab *tab = new Tab(text); tab->setCornerRadius(0); + tab->setRippleStyle(Material::CenteredRipple); + tab->setRole(Material::Primary); d->tabLayout->addWidget(tab); if (-1 == d->tab) { @@ -50,6 +55,20 @@ void Tabs::addTab(const QString &text) connect(tab, SIGNAL(clicked()), this, SLOT(switchTab())); } +void Tabs::setRippleStyle(Material::RippleStyle style) +{ + Q_D(Tabs); + + Tab *tab; + for (int i = 0; i < d->tabLayout->count(); ++i) { + QLayoutItem *item = d->tabLayout->itemAt(i); + if ((tab = static_cast(item->widget()))) { + tab->setRippleStyle(style); + } + } + +} + const QLayout *Tabs::tabLayout() const { Q_D(const Tabs); @@ -69,7 +88,8 @@ void Tabs::paintEvent(QPaintEvent *event) Q_D(Tabs); QPainter painter(this); - painter.fillRect(d->delegate->inkBarGeometry(), Qt::black); + painter.fillRect(d->delegate->inkBarGeometry(), + Style::instance().themeColor("accent1")); QWidget::paintEvent(event); } diff --git a/components/tabs.h b/components/tabs.h index f357f63..a63efd5 100644 --- a/components/tabs.h +++ b/components/tabs.h @@ -2,6 +2,7 @@ #define TABS_H #include +#include "lib/theme.h" class TabsPrivate; @@ -15,6 +16,8 @@ public: void addTab(const QString &text); + void setRippleStyle(Material::RippleStyle style); + const QLayout *tabLayout() const; int currentIndex() const; diff --git a/components/tabs_internal.cpp b/components/tabs_internal.cpp index c99ec5d..4cd923b 100644 --- a/components/tabs_internal.cpp +++ b/components/tabs_internal.cpp @@ -43,11 +43,11 @@ void TabsDelegate::updateInkBar() const QRect &r = item->geometry(); const qreal s = 1-_tween; if (QAbstractAnimation::Running != _animation->state()) { - _inkBarGeometry = QRect(r.left(), r.bottom()-1, r.width(), 2); + _inkBarGeometry = QRect(r.left(), r.bottom()+1, r.width(), 2); } else { const qreal left = _previousGeometry.left()*s + r.left()*_tween; const qreal width = _previousGeometry.width()*s + r.width()*_tween; - _inkBarGeometry = QRect(left, r.bottom()-1, width, 2); + _inkBarGeometry = QRect(left, r.bottom()+1, width, 2); } tabs->update(); } diff --git a/lib/theme.h b/lib/theme.h index 255ce79..7fa5c37 100644 --- a/lib/theme.h +++ b/lib/theme.h @@ -8,6 +8,12 @@ namespace Material { + enum RippleStyle { + CenteredRipple, + PositionedRipple, + NoRipple + }; + enum Role { Default, Primary,