Divider: first commit

This commit is contained in:
fperillo 2017-10-05 07:03:56 +02:00
parent c8fbfb019d
commit fae8e8c5d4
9 changed files with 347 additions and 0 deletions

View File

@ -1,6 +1,7 @@
TEMPLATE = lib
CONFIG += staticlib
SOURCES = \
qtmaterialdivider.cpp \
qtmaterialavatar.cpp \
lib/qtmaterialstyle.cpp \
lib/qtmaterialtheme.cpp \
@ -39,6 +40,8 @@ SOURCES = \
qtmaterialdrawer_internal.cpp \
qtmaterialdrawer.cpp
HEADERS = \
qtmaterialdivider_p.h \
qtmaterialdivider.h \
qtmaterialavatar_p.h \
qtmaterialavatar.h \
lib/qtmaterialstyle_p.h \

View File

@ -0,0 +1,138 @@
#include "qtmaterialdivider.h"
#include "qtmaterialdivider_p.h"
#include <QPainter>
#include "lib/qtmaterialstyle.h"
/*!
* \class QtMaterialDividerPrivate
* \internal
*/
/*!
* \internal
*/
QtMaterialDividerPrivate::QtMaterialDividerPrivate(QtMaterialDivider *q)
: q_ptr(q)
{
}
/*!
* \internal
*/
QtMaterialDividerPrivate::~QtMaterialDividerPrivate()
{
}
/*!
* \internal
*/
void QtMaterialDividerPrivate::init()
{
Q_Q(QtMaterialDivider);
size = 40;
useThemeColors = true;
QSizePolicy policy(QSizePolicy::Ignored,
// QSizePolicy policy(QSizePolicy::Expanding,
QSizePolicy::Fixed);
q->setSizePolicy(policy);
}
/*!
* \class QtMaterialDivider
*/
QtMaterialDivider::QtMaterialDivider(QWidget *parent)
: QWidget(parent),
d_ptr(new QtMaterialDividerPrivate(this))
{
d_func()->init();
}
QtMaterialDivider::~QtMaterialDivider()
{
}
void QtMaterialDivider::setUseThemeColors(bool value)
{
Q_D(QtMaterialDivider);
if (d->useThemeColors == value) {
return;
}
d->useThemeColors = value;
update();
}
bool QtMaterialDivider::useThemeColors() const
{
Q_D(const QtMaterialDivider);
return d->useThemeColors;
}
/*!
* \reimp
*/
QSize QtMaterialDivider::sizeHint() const
{
Q_D(const QtMaterialDivider);
return QSize(d->size, 2+2);
}
void QtMaterialDivider::setSize(int size)
{
Q_D(QtMaterialDivider);
d->size = size;
update();
}
int QtMaterialDivider::size() const
{
Q_D(const QtMaterialDivider);
return d->size;
}
/*!
* \reimp
*/
void QtMaterialDivider::resizeEvent(QResizeEvent *event)
{
Q_D(QtMaterialDivider);
QWidget::resizeEvent(event);
QSize sz = event->size();
d->size = width();
update();
}
/*!
* \reimp
*/
void QtMaterialDivider::paintEvent(QPaintEvent *event)
{
Q_UNUSED(event)
Q_D(QtMaterialDivider);
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing);
const int wd = d->size; // width();
QPen pen;
pen.setWidth(2);
// pen.setColor(QtMaterialStyle::instance().themeColor("border"));
pen.setColor(QColor(255,0,0));
painter.setPen(pen);
painter.setOpacity(1);
painter.drawLine(0, 1, wd, 1);
}

View File

@ -0,0 +1,52 @@
#ifndef QTMATERIALDIVIDER_H
#define QTMATERIALDIVIDER_H
#include <QtWidgets/QWidget>
#include <QResizeEvent>
#include "lib/qtmaterialtheme.h"
class QtMaterialDividerPrivate;
class QtMaterialDivider : public QWidget
{
Q_OBJECT
public:
explicit QtMaterialDivider(QWidget *parent = 0);
//explicit QtMaterialDivider(const QIcon &icon, QWidget *parent = 0);
//explicit QtMaterialDivider(const QChar &letter, QWidget *parent = 0);
//explicit QtMaterialDivider(const QImage &image, QWidget *parent = 0);
~QtMaterialDivider();
void setUseThemeColors(bool value);
bool useThemeColors() const;
//void setTextColor(const QColor &color);
//QColor textColor() const;
//void setBackgroundColor(const QColor &color);
//QColor backgroundColor() const;
QSize sizeHint() const Q_DECL_OVERRIDE;
void setSize(int size);
int size() const;
//void setLetter(const QChar &letter);
//void setImage(const QImage &image);
//void setIcon(const QIcon &icon);
//Material::DividerType type() const;
protected:
void resizeEvent(QResizeEvent *event) Q_DECL_OVERRIDE;
void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE;
const QScopedPointer<QtMaterialDividerPrivate> d_ptr;
private:
Q_DISABLE_COPY(QtMaterialDivider)
Q_DECLARE_PRIVATE(QtMaterialDivider)
};
#endif // QTMATERIALDIVIDER_H

View File

@ -0,0 +1,33 @@
#ifndef QTMATERIALDIVIDER_P_H
#define QTMATERIALDIVIDER_P_H
#include <QtGlobal>
#include <QColor>
#include "lib/qtmaterialtheme.h"
class QtMaterialDivider;
class QtMaterialDividerPrivate
{
Q_DISABLE_COPY(QtMaterialDividerPrivate)
Q_DECLARE_PUBLIC(QtMaterialDivider)
public:
QtMaterialDividerPrivate(QtMaterialDivider *q);
~QtMaterialDividerPrivate();
void init();
QtMaterialDivider *const q_ptr;
int size;
// Material::DividerType type;
// QChar letter;
// QImage image;
// QIcon icon;
// QPixmap pixmap;
bool useThemeColors;
// QColor textColor;
// QColor backgroundColor;
};
#endif // QTMATERIALDIVIDER_P_H

View File

@ -0,0 +1,56 @@
#include "dividersettingseditor.h"
#include <QVBoxLayout>
#include <QColorDialog>
#include <QLabel>
#include <qtmaterialdivider.h>
DividerSettingsEditor::DividerSettingsEditor(QWidget *parent)
: QWidget(parent),
ui(new Ui::DividerSettingsForm),
m_divider(new QtMaterialDivider)
{
QVBoxLayout *layout = new QVBoxLayout;
setLayout(layout);
QWidget *widget = new QWidget;
layout->addWidget(widget);
QWidget *canvas = new QWidget;
canvas->setStyleSheet("QWidget { background: white; }");
layout->addWidget(canvas);
ui->setupUi(widget);
layout->setContentsMargins(20, 20, 20, 20);
QLabel *lbl = new QLabel;
lbl->setText( "1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 " );
layout = new QVBoxLayout;
canvas->setLayout(layout);
layout->addWidget(m_divider);
layout->setAlignment(m_divider, Qt::AlignCenter);
m_divider->setSize( canvas->width() );
layout->addWidget(lbl);
QSizePolicy policy(QSizePolicy::Ignored,
QSizePolicy::Fixed);
lbl->setSizePolicy(policy);
m_divider->setSizePolicy(policy);
setupForm();
}
DividerSettingsEditor::~DividerSettingsEditor()
{
delete ui;
}
void DividerSettingsEditor::setupForm()
{
}
void DividerSettingsEditor::updateWidget()
{
}

View File

@ -0,0 +1,26 @@
#ifndef DIVIDERSETTINGSEDITOR_H
#define DIVIDERSETTINGSEDITOR_H
#include <QWidget>
#include "ui_dividersettingsform.h"
class QtMaterialDivider;
class DividerSettingsEditor : public QWidget
{
Q_OBJECT
public:
explicit DividerSettingsEditor(QWidget *parent = 0);
~DividerSettingsEditor();
protected slots:
void setupForm();
void updateWidget();
private:
Ui::DividerSettingsForm *const ui;
QtMaterialDivider *const m_divider;
};
#endif // DIVIDERSETTINGSEDITOR_H

View File

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>DividerSettingsForm</class>
<widget class="QWidget" name="DividerSettingsForm">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>599</width>
<height>418</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<widget class="QLabel" name="label">
<property name="geometry">
<rect>
<x>20</x>
<y>30</y>
<width>171</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>TODO</string>
</property>
</widget>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -18,6 +18,7 @@ SOURCES = mainwindow.cpp \
textfieldsettingseditor.cpp \
tabssettingseditor.cpp \
snackbarsettingseditor.cpp \
dividersettingseditor.cpp \
dialogsettingseditor.cpp \
drawersettingseditor.cpp \
scrollbarsettingseditor.cpp
@ -37,6 +38,7 @@ HEADERS = mainwindow.h \
textfieldsettingseditor.h \
tabssettingseditor.h \
snackbarsettingseditor.h \
dividersettingseditor.h \
dialogsettingseditor.h \
drawersettingseditor.h \
scrollbarsettingseditor.h
@ -59,6 +61,7 @@ FORMS += \
circularprogresssettingsform.ui \
slidersettingsform.ui \
snackbarsettingsform.ui \
dividersettingsform.ui \
radiobuttonsettingsform.ui \
togglesettingsform.ui \
textfieldsettingsform.ui \

View File

@ -20,6 +20,7 @@
#include "dialogsettingseditor.h"
#include "drawersettingseditor.h"
#include "scrollbarsettingseditor.h"
#include "dividersettingseditor.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
@ -57,12 +58,14 @@ MainWindow::MainWindow(QWidget *parent)
DialogSettingsEditor *dialog = new DialogSettingsEditor;
DrawerSettingsEditor *drawer = new DrawerSettingsEditor;
ScrollBarSettingsEditor *scrollBar = new ScrollBarSettingsEditor;
DividerSettingsEditor *divider = new DividerSettingsEditor;
stack->addWidget(avatar);
stack->addWidget(badge);
stack->addWidget(checkbox);
stack->addWidget(circularProgress);
stack->addWidget(dialog);
stack->addWidget(divider);
stack->addWidget(drawer);
stack->addWidget(fab);
stack->addWidget(flatButton);
@ -82,6 +85,7 @@ MainWindow::MainWindow(QWidget *parent)
list->addItem("Checkbox");
list->addItem("Circular Progress");
list->addItem("Dialog");
list->addItem("Divider");
list->addItem("Drawer");
list->addItem("Floating Action Button");
list->addItem("Flat Button");