Add AppBar files

This commit is contained in:
johanneshilden 2017-10-05 17:11:41 +03:00
parent 83b5b10bbe
commit b3b0f18be9
3 changed files with 195 additions and 0 deletions

View File

@ -1,2 +1,139 @@
#include "qtmaterialappbar.h"
#include "qtmaterialappbar_p.h"
#include <QtWidgets/QGraphicsDropShadowEffect>
#include <QtWidgets/QHBoxLayout>
#include <QPainter>
#include "lib/qtmaterialstyle.h"
/*!
* \class QtMaterialAppBarPrivate
* \internal
*/
/*!
* \internal
*/
QtMaterialAppBarPrivate::QtMaterialAppBarPrivate(QtMaterialAppBar *q)
: q_ptr(q)
{
}
/*!
* \internal
*/
QtMaterialAppBarPrivate::~QtMaterialAppBarPrivate()
{
}
/*!
* \internal
*/
void QtMaterialAppBarPrivate::init()
{
Q_Q(QtMaterialAppBar);
useThemeColors = true;
QGraphicsDropShadowEffect *effect = new QGraphicsDropShadowEffect;
effect->setBlurRadius(11);
effect->setColor(QColor(0, 0, 0, 50));
effect->setOffset(0, 3);
q->setGraphicsEffect(effect);
QHBoxLayout *layout = new QHBoxLayout;
q->setLayout(layout);
}
/*!
* \class QtMaterialAppBar
*/
QtMaterialAppBar::QtMaterialAppBar(QWidget *parent)
: QWidget(parent)
{
d_func()->init();
}
QtMaterialAppBar::~QtMaterialAppBar()
{
}
QSize QtMaterialAppBar::sizeHint() const
{
return QSize(-1, 64);
}
void QtMaterialAppBar::paintEvent(QPaintEvent *event)
{
Q_UNUSED(event)
QPainter painter(this);
painter.fillRect(rect(), backgroundColor());
}
void QtMaterialAppBar::setUseThemeColors(bool value)
{
Q_D(QtMaterialAppBar);
if (d->useThemeColors == value) {
return;
}
d->useThemeColors = value;
update();
}
bool QtMaterialAppBar::useThemeColors() const
{
Q_D(const QtMaterialAppBar);
return d->useThemeColors;
}
void QtMaterialAppBar::setForegroundColor(const QColor &color)
{
Q_D(QtMaterialAppBar);
d->foregroundColor = color;
if (d->useThemeColors == true) {
d->useThemeColors = false;
}
update();
}
QColor QtMaterialAppBar::foregroundColor() const
{
Q_D(const QtMaterialAppBar);
if (d->useThemeColors || !d->foregroundColor.isValid()) {
return QtMaterialStyle::instance().themeColor("primary1");
} else {
return d->foregroundColor;
}
}
void QtMaterialAppBar::setBackgroundColor(const QColor &color)
{
Q_D(QtMaterialAppBar);
d->backgroundColor = color;
if (d->useThemeColors == true) {
d->useThemeColors = false;
}
update();
}
QColor QtMaterialAppBar::backgroundColor() const
{
Q_D(const QtMaterialAppBar);
if (d->useThemeColors || !d->backgroundColor.isValid()) {
return QtMaterialStyle::instance().themeColor("primary1");
} else {
return d->backgroundColor;
}
}

View File

@ -1,4 +1,40 @@
#ifndef QTMATERIALAPPBAR_H
#define QTMATERIALAPPBAR_H
#include <QtWidgets/QWidget>
class QtMaterialAppBarPrivate;
class QtMaterialAppBar : public QWidget
{
Q_OBJECT
Q_PROPERTY(QColor foregroundColor WRITE setForegroundColor READ foregroundColor)
Q_PROPERTY(QColor backgroundColor WRITE setBackgroundColor READ backgroundColor)
public:
explicit QtMaterialAppBar(QWidget *parent = 0);
~QtMaterialAppBar();
QSize sizeHint() const Q_DECL_OVERRIDE;
void setUseThemeColors(bool value);
bool useThemeColors() const;
void setForegroundColor(const QColor &color);
QColor foregroundColor() const;
void setBackgroundColor(const QColor &color);
QColor backgroundColor() const;
protected:
void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE;
const QScopedPointer<QtMaterialAppBarPrivate> d_ptr;
private:
Q_DISABLE_COPY(QtMaterialAppBar)
Q_DECLARE_PRIVATE(QtMaterialAppBar)
};
#endif // QTMATERIALAPPBAR_H

View File

@ -1,4 +1,26 @@
#ifndef QTMATERIALAPPBAR_P_H
#define QTMATERIALAPPBAR_P_H
#include <QtGlobal>
#include <QColor>
class QtMaterialAppBar;
class QtMaterialAppBarPrivate
{
Q_DISABLE_COPY(QtMaterialAppBarPrivate)
Q_DECLARE_PUBLIC(QtMaterialAppBar)
public:
QtMaterialAppBarPrivate(QtMaterialAppBar *q);
~QtMaterialAppBarPrivate();
void init();
QtMaterialAppBar *const q_ptr;
bool useThemeColors;
QColor foregroundColor;
QColor backgroundColor;
};
#endif // QTMATERIALAPPBAR_P_H