Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implemented Divider widget #20

Open
wants to merge 6 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions components/components.pro
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
TEMPLATE = lib
CONFIG += staticlib
SOURCES = \
qtmaterialdivider.cpp \
qtmaterialavatar.cpp \
lib/qtmaterialstyle.cpp \
lib/qtmaterialtheme.cpp \
Expand Down Expand Up @@ -40,6 +41,8 @@ SOURCES = \
qtmaterialdrawer.cpp \
qtmaterialappbar.cpp
HEADERS = \
qtmaterialdivider_p.h \
qtmaterialdivider.h \
qtmaterialavatar_p.h \
qtmaterialavatar.h \
lib/qtmaterialstyle_p.h \
Expand Down
105 changes: 105 additions & 0 deletions components/qtmaterialdivider.cpp
Original file line number Diff line number Diff line change
@@ -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( 1 );
q->setMaximumHeight( 1 );
}

/*!
* \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);
}
31 changes: 31 additions & 0 deletions components/qtmaterialdivider.h
Original file line number Diff line number Diff line change
@@ -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
25 changes: 25 additions & 0 deletions components/qtmaterialdivider_p.h
Original file line number Diff line number Diff line change
@@ -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
61 changes: 61 additions & 0 deletions examples/dividersettingseditor.cpp
Original file line number Diff line number Diff line change
@@ -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()
{
}

30 changes: 30 additions & 0 deletions examples/dividersettingseditor.h
Original file line number Diff line number Diff line change
@@ -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
32 changes: 32 additions & 0 deletions examples/dividersettingsform.ui
Original file line number Diff line number Diff line change
@@ -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>
3 changes: 3 additions & 0 deletions examples/examples.pro
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ SOURCES = mainwindow.cpp \
textfieldsettingseditor.cpp \
tabssettingseditor.cpp \
snackbarsettingseditor.cpp \
dividersettingseditor.cpp \
dialogsettingseditor.cpp \
drawersettingseditor.cpp \
scrollbarsettingseditor.cpp
Expand All @@ -37,6 +38,7 @@ HEADERS = mainwindow.h \
textfieldsettingseditor.h \
tabssettingseditor.h \
snackbarsettingseditor.h \
dividersettingseditor.h \
dialogsettingseditor.h \
drawersettingseditor.h \
scrollbarsettingseditor.h
Expand All @@ -59,6 +61,7 @@ FORMS += \
circularprogresssettingsform.ui \
slidersettingsform.ui \
snackbarsettingsform.ui \
dividersettingsform.ui \
radiobuttonsettingsform.ui \
togglesettingsform.ui \
textfieldsettingsform.ui \
Expand Down
4 changes: 4 additions & 0 deletions examples/mainwindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
#include "dialogsettingseditor.h"
#include "drawersettingseditor.h"
#include "scrollbarsettingseditor.h"
#include "dividersettingseditor.h"

MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
Expand Down Expand Up @@ -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);
Expand All @@ -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");
Expand Down