This commit is contained in:
fperillo 2017-10-05 21:19:14 +00:00 committed by GitHub
commit ace70b2756
9 changed files with 294 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 \
@ -40,6 +41,8 @@ SOURCES = \
qtmaterialdrawer.cpp \
qtmaterialappbar.cpp
HEADERS = \
qtmaterialdivider_p.h \
qtmaterialdivider.h \
qtmaterialavatar_p.h \
qtmaterialavatar.h \
lib/qtmaterialstyle_p.h \

View File

@ -0,0 +1,105 @@
#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 = 0;
QSizePolicy policy(QSizePolicy::MinimumExpanding,
QSizePolicy::Fixed);
q->setMinimumHeight( 4 );
q->setMaximumHeight( 14 );
}
/*!
* \class QtMaterialDivider
*/
QtMaterialDivider::QtMaterialDivider(QWidget *parent)
: QWidget(parent),
d_ptr(new QtMaterialDividerPrivate(this))
{
d_func()->init();
}
QtMaterialDivider::~QtMaterialDivider()
{
}
/*!
* \reimp
*/
void QtMaterialDivider::setInsetSize(int size)
{
Q_D(QtMaterialDivider);
d->size = size;
update();
}
int QtMaterialDivider::insetSize() const
{
Q_D(const QtMaterialDivider);
return d->size;
}
/*!
* \reimp
*/
void QtMaterialDivider::paintEvent(QPaintEvent *event)
{
Q_UNUSED(event)
Q_D(QtMaterialDivider);
QPainter painter(this);
// TODO: QtMaterialText doesn't use Antialiasing. Usng it the line is more "heavy"
// painter.setRenderHint(QPainter::Antialiasing);
QPen pen;
pen.setWidth(1);
/*
* DEBUG: to paint in blue the full widget
*
*/
// painter.fillRect( rect() ,QColor(0,0,255));
// TODO: is this the right color to use?
pen.setColor(QtMaterialStyle::instance().themeColor("border"));
painter.setPen(pen);
painter.setOpacity(1);
// TODO: implementing inset, 0 will be changed to a calculated point.
// Normally, line should go from 0 to the end
painter.drawLine( d->size, height()/2, width(), height()/2);
}

View File

@ -0,0 +1,31 @@
#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);
~QtMaterialDivider();
void setInsetSize(int size);
int insetSize() const;
protected:
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,25 @@
#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;
};
#endif // QTMATERIALDIVIDER_P_H

View File

@ -0,0 +1,61 @@
#include "dividersettingseditor.h"
#include <QVBoxLayout>
#include <QColorDialog>
#include <QLabel>
#include <qtmaterialdivider.h>
DividerSettingsEditor::DividerSettingsEditor(QWidget *parent)
: QWidget(parent),
ui(new Ui::DividerSettingsForm),
m_divider1(new QtMaterialDivider),
m_divider2(new QtMaterialDivider),
m_textfield1(new QtMaterialTextField),
m_textfield2(new QtMaterialTextField)
{
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);
// layout->setContentsMargins(0, 0, 0, 0);
m_textfield1->setLabel( "First Name" );
m_textfield1->setPlaceholderText( "Placeholder" );
m_textfield1->setShowUnderline( false );
m_textfield2->setLabel( "Middle Name" );
m_textfield2->setShowUnderline( false );
layout = new QVBoxLayout;
layout->setContentsMargins(0, 0, 0, 0);
canvas->setLayout(layout);
layout->addWidget(m_textfield1);
layout->addWidget(m_divider1);
layout->addWidget(m_textfield2);
layout->addWidget(m_divider2);
layout->addStretch();
setupForm();
}
DividerSettingsEditor::~DividerSettingsEditor()
{
delete ui;
}
void DividerSettingsEditor::setupForm()
{
}
void DividerSettingsEditor::updateWidget()
{
}

View File

@ -0,0 +1,30 @@
#ifndef DIVIDERSETTINGSEDITOR_H
#define DIVIDERSETTINGSEDITOR_H
#include <QWidget>
#include "ui_dividersettingsform.h"
#include <qtmaterialtextfield.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_divider1;
QtMaterialDivider *const m_divider2;
QtMaterialTextField *const m_textfield1;
QtMaterialTextField *const m_textfield2;
};
#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");