Implement Icon Button settings editor

This commit is contained in:
johanneshilden 2017-09-29 13:48:30 +03:00
parent 445c2e3037
commit 98c2b95a82
6 changed files with 233 additions and 7 deletions

View File

@ -1,9 +1,9 @@
#include "xx/qtmaterialiconbutton.h"
#include "xx/qtmaterialiconbutton_p.h"
#include "qtmaterialiconbutton.h"
#include "qtmaterialiconbutton_p.h"
#include <QPainter>
#include <QEvent>
#include "xxlib/qtmaterialstyle.h"
#include "xxlib/qtmaterialrippleoverlay.h"
#include "lib/qtmaterialstyle.h"
#include "lib/qtmaterialrippleoverlay.h"
/*!
* \class QtMaterialIconButtonPrivate

View File

@ -7,14 +7,16 @@ SOURCES = mainwindow.cpp \
checkboxsettingseditor.cpp \
fabsettingseditor.cpp \
raisedbuttonsettingseditor.cpp \
flatbuttonsettingseditor.cpp
flatbuttonsettingseditor.cpp \
iconbuttonsettingseditor.cpp
HEADERS = mainwindow.h \
avatarsettingseditor.h \
badgesettingseditor.h \
checkboxsettingseditor.h \
fabsettingseditor.h \
raisedbuttonsettingseditor.h \
flatbuttonsettingseditor.h
flatbuttonsettingseditor.h \
iconbuttonsettingseditor.h
LIBS += ../components/libcomponents.a
INCLUDEPATH += ../components/
TARGET = ../examples-exe
@ -27,4 +29,5 @@ FORMS += \
badgesettingsform.ui \
checkboxsettingsform.ui \
fabsettingsform.ui \
flatbuttonsettingsform.ui
flatbuttonsettingsform.ui \
iconbuttonsettingsform.ui

View File

@ -0,0 +1,82 @@
#include "iconbuttonsettingseditor.h"
#include <QColorDialog>
#include "qtmaterialiconbutton.h"
#include "lib/qtmaterialtheme.h"
IconButtonSettingsEditor::IconButtonSettingsEditor(QWidget *parent)
: QWidget(parent),
ui(new Ui::IconButtonSettingsForm),
m_button(new QtMaterialIconButton(QtMaterialTheme::icon("toggle", "star")))
{
init();
}
IconButtonSettingsEditor::~IconButtonSettingsEditor()
{
delete ui;
}
IconButtonSettingsEditor::IconButtonSettingsEditor(QtMaterialIconButton *button, QWidget *parent)
: QWidget(parent),
ui(new Ui::IconButtonSettingsForm),
m_button(button)
{
init();
}
void IconButtonSettingsEditor::setupForm()
{
ui->disabledCheckBox->setChecked(!m_button->isEnabled());
ui->useThemeColorsCheckBox->setChecked(m_button->useThemeColors());
}
void IconButtonSettingsEditor::updateWidget()
{
m_button->setDisabled(ui->disabledCheckBox->isChecked());
m_button->setUseThemeColors(ui->useThemeColorsCheckBox->isChecked());
}
void IconButtonSettingsEditor::selectColor()
{
QColorDialog dialog;
if (dialog.exec()) {
QColor color = dialog.selectedColor();
QString senderName = sender()->objectName();
if ("colorToolButton" == senderName) {
m_button->setColor(color);
ui->colorLineEdit->setText(color.name(QColor::HexRgb));
} else if ("disabledColorButton" == senderName) {
m_button->setDisabledColor(color);
ui->disabledColorLineEdit->setText(color.name(QColor::HexRgb));
}
}
setupForm();
}
void IconButtonSettingsEditor::init()
{
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 = new QVBoxLayout;
canvas->setLayout(layout);
layout->addWidget(m_button);
layout->setAlignment(m_button, Qt::AlignCenter);
setupForm();
connect(ui->disabledCheckBox, SIGNAL(toggled(bool)), this, SLOT(updateWidget()));
connect(ui->useThemeColorsCheckBox, SIGNAL(toggled(bool)), this, SLOT(updateWidget()));
connect(ui->colorToolButton, SIGNAL(clicked(bool)), this, SLOT(selectColor()));
connect(ui->disabledColorToolButton, SIGNAL(clicked(bool)), this, SLOT(selectColor()));
}

View File

@ -0,0 +1,33 @@
#ifndef ICONBUTTONSETTINGSMANAGER_H
#define ICONBUTTONSETTINGSMANAGER_H
#include <QWidget>
#include "ui_iconbuttonsettingsform.h"
class QtMaterialIconButton;
class IconButtonSettingsEditor : public QWidget
{
Q_OBJECT
public:
explicit IconButtonSettingsEditor(QWidget *parent = 0);
~IconButtonSettingsEditor();
protected:
explicit IconButtonSettingsEditor(QtMaterialIconButton *button, QWidget *parent = 0);
Ui::IconButtonSettingsForm *const ui;
protected slots:
void setupForm();
void updateWidget();
void selectColor();
private:
void init();
QtMaterialIconButton *const m_button;
};
#endif // ICONBUTTONSETTINGSMANAGER_H

View File

@ -0,0 +1,104 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>IconButtonSettingsForm</class>
<widget class="QWidget" name="IconButtonSettingsForm">
<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="QWidget" name="formLayoutWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>234</width>
<height>391</height>
</rect>
</property>
<layout class="QFormLayout" name="formLayout">
<property name="formAlignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
</property>
<item row="0" column="0">
<widget class="QLabel" name="disabledLabel">
<property name="text">
<string>Disabled</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QCheckBox" name="disabledCheckBox"/>
</item>
<item row="1" column="0">
<widget class="QLabel" name="useThemeColorsLabel">
<property name="text">
<string>Use theme colors</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QCheckBox" name="useThemeColorsCheckBox"/>
</item>
<item row="2" column="0">
<widget class="QLabel" name="colorLabel">
<property name="text">
<string>Color</string>
</property>
</widget>
</item>
<item row="2" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QLineEdit" name="colorLineEdit">
<property name="enabled">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="colorToolButton">
<property name="text">
<string>...</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="3" column="0">
<widget class="QLabel" name="disabledColorLabel">
<property name="text">
<string>Disabled color</string>
</property>
</widget>
</item>
<item row="3" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
<widget class="QLineEdit" name="disabledColorLineEdit">
<property name="enabled">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="disabledColorToolButton">
<property name="text">
<string>...</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -8,6 +8,7 @@
#include "fabsettingseditor.h"
#include "raisedbuttonsettingseditor.h"
#include "flatbuttonsettingseditor.h"
#include "iconbuttonsettingseditor.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
@ -33,12 +34,14 @@ MainWindow::MainWindow(QWidget *parent)
FloatingActionButtonSettingsEditor *fab = new FloatingActionButtonSettingsEditor;
RaisedButtonSettingsEditor *raisedButton = new RaisedButtonSettingsEditor;
FlatButtonSettingsEditor *flatButton = new FlatButtonSettingsEditor;
IconButtonSettingsEditor *iconButton = new IconButtonSettingsEditor;
stack->addWidget(avatar);
stack->addWidget(badge);
stack->addWidget(checkbox);
stack->addWidget(fab);
stack->addWidget(flatButton);
stack->addWidget(iconButton);
stack->addWidget(raisedButton);
list->addItem("Avatar");
@ -46,6 +49,7 @@ MainWindow::MainWindow(QWidget *parent)
list->addItem("Checkbox");
list->addItem("Floating Action Button");
list->addItem("Flat Button");
list->addItem("Icon Button");
list->addItem("Raised Button");
list->setCurrentRow(0);