diff --git a/src/Influence.pro b/src/Influence.pro
index ad05a91..cbf8426 100644
--- a/src/Influence.pro
+++ b/src/Influence.pro
@@ -39,3 +39,19 @@ HEADERS += \
FORMS += \
mainwindow.ui \
chatwindow.ui
+
+win32:CONFIG(release, debug|release): LIBS += -L$$PWD/material-widgets/release/ -lcomponents
+else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/material-widgets/debug/ -lcomponents
+else:unix: LIBS += -L$$PWD/material-widgets/ -lcomponents
+
+INCLUDEPATH += $$PWD/material-widgets
+DEPENDPATH += $$PWD/material-widgets
+
+win32-g++:CONFIG(release, debug|release): PRE_TARGETDEPS += $$PWD/material-widgets/release/libcomponents.a
+else:win32-g++:CONFIG(debug, debug|release): PRE_TARGETDEPS += $$PWD/material-widgets/debug/libcomponents.a
+else:win32:!win32-g++:CONFIG(release, debug|release): PRE_TARGETDEPS += $$PWD/material-widgets/release/components.lib
+else:win32:!win32-g++:CONFIG(debug, debug|release): PRE_TARGETDEPS += $$PWD/material-widgets/debug/components.lib
+else:unix: PRE_TARGETDEPS += $$PWD/material-widgets/libcomponents.a
+
+RESOURCES += \
+ material-widgets/resources.qrc
diff --git a/src/material-widgets/Makefile b/src/material-widgets/Makefile
new file mode 100644
index 0000000..a053c5d
--- /dev/null
+++ b/src/material-widgets/Makefile
@@ -0,0 +1,2241 @@
+#############################################################################
+# Makefile for building: libcomponents.a
+# Generated by qmake (3.1) (Qt 5.9.5)
+# Project: components.pro
+# Template: lib
+# Command: /usr/lib/qt5/bin/qmake -o Makefile components.pro
+#############################################################################
+
+MAKEFILE = Makefile
+
+####### Compiler, tools and options
+
+CC = gcc
+CXX = g++
+DEFINES = -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB
+CFLAGS = -pipe -O2 -fPIC -Wall -W -D_REENTRANT $(DEFINES)
+CXXFLAGS = -pipe -O2 -fPIC -Wall -W -D_REENTRANT $(DEFINES)
+INCPATH = -I. -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -I. -isystem /usr/include/libdrm -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++
+QMAKE = /usr/lib/qt5/bin/qmake
+DEL_FILE = rm -f
+CHK_DIR_EXISTS= test -d
+MKDIR = mkdir -p
+COPY = cp -f
+COPY_FILE = cp -f
+COPY_DIR = cp -f -R
+INSTALL_FILE = install -m 644 -p
+INSTALL_PROGRAM = install -m 755 -p
+INSTALL_DIR = cp -f -R
+QINSTALL = /usr/lib/qt5/bin/qmake -install qinstall
+QINSTALL_PROGRAM = /usr/lib/qt5/bin/qmake -install qinstall -exe
+DEL_FILE = rm -f
+SYMLINK = ln -f -s
+DEL_DIR = rmdir
+MOVE = mv -f
+TAR = tar -cf
+COMPRESS = gzip -9f
+DISTNAME = components1.0.0
+DISTDIR = /home/chronosx/Documents/Development/qt-material-widgets/components/.tmp/components1.0.0
+AR = ar cqs
+RANLIB =
+SED = sed
+STRIP = strip
+
+####### Output directory
+
+OBJECTS_DIR = ./
+
+####### Files
+
+SOURCES = qtmaterialavatar.cpp \
+ lib/qtmaterialstyle.cpp \
+ lib/qtmaterialtheme.cpp \
+ qtmaterialbadge.cpp \
+ lib/qtmaterialoverlaywidget.cpp \
+ qtmaterialcheckbox.cpp \
+ lib/qtmaterialcheckable_internal.cpp \
+ lib/qtmaterialcheckable.cpp \
+ lib/qtmaterialripple.cpp \
+ lib/qtmaterialrippleoverlay.cpp \
+ qtmaterialfab.cpp \
+ qtmaterialraisedbutton.cpp \
+ qtmaterialflatbutton_internal.cpp \
+ qtmaterialflatbutton.cpp \
+ lib/qtmaterialstatetransition.cpp \
+ qtmaterialiconbutton.cpp \
+ qtmaterialprogress_internal.cpp \
+ qtmaterialprogress.cpp \
+ qtmaterialcircularprogress_internal.cpp \
+ qtmaterialcircularprogress.cpp \
+ qtmaterialslider_internal.cpp \
+ qtmaterialslider.cpp \
+ qtmaterialsnackbar_internal.cpp \
+ qtmaterialsnackbar.cpp \
+ qtmaterialradiobutton.cpp \
+ qtmaterialtoggle_internal.cpp \
+ qtmaterialtoggle.cpp \
+ qtmaterialtextfield_internal.cpp \
+ qtmaterialtextfield.cpp \
+ qtmaterialtabs_internal.cpp \
+ qtmaterialtabs.cpp \
+ qtmaterialscrollbar_internal.cpp \
+ qtmaterialscrollbar.cpp \
+ qtmaterialdialog_internal.cpp \
+ qtmaterialdialog.cpp \
+ qtmaterialdrawer_internal.cpp \
+ qtmaterialdrawer.cpp \
+ qtmaterialappbar.cpp \
+ qtmaterialautocomplete.cpp \
+ qtmaterialpaper.cpp \
+ qtmaterialtable.cpp \
+ layouts/qtmaterialsnackbarlayout.cpp \
+ qtmaterialautocomplete_internal.cpp \
+ qtmaterialmenu.cpp \
+ qtmaterialmenu_internal.cpp \
+ qtmateriallist.cpp \
+ qtmateriallistitem.cpp qrc_resources.cpp \
+ moc_qtmaterialavatar.cpp \
+ moc_qtmaterialstyle.cpp \
+ moc_qtmaterialtheme.cpp \
+ moc_qtmaterialbadge.cpp \
+ moc_qtmaterialoverlaywidget.cpp \
+ moc_qtmaterialcheckbox.cpp \
+ moc_qtmaterialcheckable_internal.cpp \
+ moc_qtmaterialripple.cpp \
+ moc_qtmaterialrippleoverlay.cpp \
+ moc_qtmaterialcheckable.cpp \
+ moc_qtmaterialfab.cpp \
+ moc_qtmaterialraisedbutton.cpp \
+ moc_qtmaterialflatbutton_internal.cpp \
+ moc_qtmaterialflatbutton.cpp \
+ moc_qtmaterialstatetransition.cpp \
+ moc_qtmaterialiconbutton.cpp \
+ moc_qtmaterialprogress_internal.cpp \
+ moc_qtmaterialprogress.cpp \
+ moc_qtmaterialcircularprogress_internal.cpp \
+ moc_qtmaterialcircularprogress.cpp \
+ moc_qtmaterialslider_internal.cpp \
+ moc_qtmaterialslider.cpp \
+ moc_qtmaterialsnackbar_internal.cpp \
+ moc_qtmaterialsnackbar.cpp \
+ moc_qtmaterialradiobutton.cpp \
+ moc_qtmaterialtoggle_internal.cpp \
+ moc_qtmaterialtoggle.cpp \
+ moc_qtmaterialtextfield_internal.cpp \
+ moc_qtmaterialtextfield.cpp \
+ moc_qtmaterialtabs_internal.cpp \
+ moc_qtmaterialtabs.cpp \
+ moc_qtmaterialscrollbar_internal.cpp \
+ moc_qtmaterialscrollbar.cpp \
+ moc_qtmaterialdialog_internal.cpp \
+ moc_qtmaterialdialog.cpp \
+ moc_qtmaterialdrawer_internal.cpp \
+ moc_qtmaterialdrawer.cpp \
+ moc_qtmaterialappbar.cpp \
+ moc_qtmaterialautocomplete.cpp \
+ moc_qtmaterialautocomplete_internal.cpp \
+ moc_qtmaterialmenu.cpp
+OBJECTS = qtmaterialavatar.o \
+ qtmaterialstyle.o \
+ qtmaterialtheme.o \
+ qtmaterialbadge.o \
+ qtmaterialoverlaywidget.o \
+ qtmaterialcheckbox.o \
+ qtmaterialcheckable_internal.o \
+ qtmaterialcheckable.o \
+ qtmaterialripple.o \
+ qtmaterialrippleoverlay.o \
+ qtmaterialfab.o \
+ qtmaterialraisedbutton.o \
+ qtmaterialflatbutton_internal.o \
+ qtmaterialflatbutton.o \
+ qtmaterialstatetransition.o \
+ qtmaterialiconbutton.o \
+ qtmaterialprogress_internal.o \
+ qtmaterialprogress.o \
+ qtmaterialcircularprogress_internal.o \
+ qtmaterialcircularprogress.o \
+ qtmaterialslider_internal.o \
+ qtmaterialslider.o \
+ qtmaterialsnackbar_internal.o \
+ qtmaterialsnackbar.o \
+ qtmaterialradiobutton.o \
+ qtmaterialtoggle_internal.o \
+ qtmaterialtoggle.o \
+ qtmaterialtextfield_internal.o \
+ qtmaterialtextfield.o \
+ qtmaterialtabs_internal.o \
+ qtmaterialtabs.o \
+ qtmaterialscrollbar_internal.o \
+ qtmaterialscrollbar.o \
+ qtmaterialdialog_internal.o \
+ qtmaterialdialog.o \
+ qtmaterialdrawer_internal.o \
+ qtmaterialdrawer.o \
+ qtmaterialappbar.o \
+ qtmaterialautocomplete.o \
+ qtmaterialpaper.o \
+ qtmaterialtable.o \
+ qtmaterialsnackbarlayout.o \
+ qtmaterialautocomplete_internal.o \
+ qtmaterialmenu.o \
+ qtmaterialmenu_internal.o \
+ qtmateriallist.o \
+ qtmateriallistitem.o \
+ qrc_resources.o \
+ moc_qtmaterialavatar.o \
+ moc_qtmaterialstyle.o \
+ moc_qtmaterialtheme.o \
+ moc_qtmaterialbadge.o \
+ moc_qtmaterialoverlaywidget.o \
+ moc_qtmaterialcheckbox.o \
+ moc_qtmaterialcheckable_internal.o \
+ moc_qtmaterialripple.o \
+ moc_qtmaterialrippleoverlay.o \
+ moc_qtmaterialcheckable.o \
+ moc_qtmaterialfab.o \
+ moc_qtmaterialraisedbutton.o \
+ moc_qtmaterialflatbutton_internal.o \
+ moc_qtmaterialflatbutton.o \
+ moc_qtmaterialstatetransition.o \
+ moc_qtmaterialiconbutton.o \
+ moc_qtmaterialprogress_internal.o \
+ moc_qtmaterialprogress.o \
+ moc_qtmaterialcircularprogress_internal.o \
+ moc_qtmaterialcircularprogress.o \
+ moc_qtmaterialslider_internal.o \
+ moc_qtmaterialslider.o \
+ moc_qtmaterialsnackbar_internal.o \
+ moc_qtmaterialsnackbar.o \
+ moc_qtmaterialradiobutton.o \
+ moc_qtmaterialtoggle_internal.o \
+ moc_qtmaterialtoggle.o \
+ moc_qtmaterialtextfield_internal.o \
+ moc_qtmaterialtextfield.o \
+ moc_qtmaterialtabs_internal.o \
+ moc_qtmaterialtabs.o \
+ moc_qtmaterialscrollbar_internal.o \
+ moc_qtmaterialscrollbar.o \
+ moc_qtmaterialdialog_internal.o \
+ moc_qtmaterialdialog.o \
+ moc_qtmaterialdrawer_internal.o \
+ moc_qtmaterialdrawer.o \
+ moc_qtmaterialappbar.o \
+ moc_qtmaterialautocomplete.o \
+ moc_qtmaterialautocomplete_internal.o \
+ moc_qtmaterialmenu.o
+DIST = ../.qmake.conf \
+ ../.qmake.stash \
+ components.pro qtmaterialavatar_p.h \
+ qtmaterialavatar.h \
+ lib/qtmaterialstyle_p.h \
+ lib/qtmaterialstyle.h \
+ lib/qtmaterialtheme_p.h \
+ lib/qtmaterialtheme.h \
+ qtmaterialbadge_p.h \
+ qtmaterialbadge.h \
+ lib/qtmaterialoverlaywidget.h \
+ qtmaterialcheckbox_p.h \
+ qtmaterialcheckbox.h \
+ lib/qtmaterialcheckable_internal.h \
+ lib/qtmaterialcheckable_p.h \
+ lib/qtmaterialripple.h \
+ lib/qtmaterialrippleoverlay.h \
+ lib/qtmaterialcheckable.h \
+ qtmaterialfab_p.h \
+ qtmaterialfab.h \
+ qtmaterialraisedbutton_p.h \
+ qtmaterialraisedbutton.h \
+ qtmaterialflatbutton_internal.h \
+ qtmaterialflatbutton_p.h \
+ qtmaterialflatbutton.h \
+ lib/qtmaterialstatetransition.h \
+ lib/qtmaterialstatetransitionevent.h \
+ qtmaterialiconbutton_p.h \
+ qtmaterialiconbutton.h \
+ qtmaterialprogress_internal.h \
+ qtmaterialprogress_p.h \
+ qtmaterialprogress.h \
+ qtmaterialcircularprogress_internal.h \
+ qtmaterialcircularprogress_p.h \
+ qtmaterialcircularprogress.h \
+ qtmaterialslider_internal.h \
+ qtmaterialslider_p.h \
+ qtmaterialslider.h \
+ qtmaterialsnackbar_internal.h \
+ qtmaterialsnackbar_p.h \
+ qtmaterialsnackbar.h \
+ qtmaterialradiobutton_p.h \
+ qtmaterialradiobutton.h \
+ qtmaterialtoggle_internal.h \
+ qtmaterialtoggle_p.h \
+ qtmaterialtoggle.h \
+ qtmaterialtextfield_internal.h \
+ qtmaterialtextfield_p.h \
+ qtmaterialtextfield.h \
+ qtmaterialtabs_internal.h \
+ qtmaterialtabs_p.h \
+ qtmaterialtabs.h \
+ qtmaterialscrollbar_internal.h \
+ qtmaterialscrollbar_p.h \
+ qtmaterialscrollbar.h \
+ qtmaterialdialog_internal.h \
+ qtmaterialdialog_p.h \
+ qtmaterialdialog.h \
+ qtmaterialdrawer_internal.h \
+ qtmaterialdrawer_p.h \
+ qtmaterialdrawer.h \
+ qtmaterialappbar.h \
+ qtmaterialappbar_p.h \
+ qtmaterialautocomplete.h \
+ qtmaterialautocomplete_p.h \
+ qtmaterialpaper.h \
+ qtmaterialpaper_p.h \
+ qtmaterialtable.h \
+ qtmaterialtable_p.h \
+ layouts/qtmaterialsnackbarlayout.h \
+ layouts/qtmaterialsnackbarlayout_p.h \
+ qtmaterialautocomplete_internal.h \
+ qtmaterialmenu.h \
+ qtmaterialmenu_p.h \
+ qtmaterialmenu_internal.h \
+ qtmateriallist.h \
+ qtmateriallist_p.h \
+ qtmateriallistitem.h \
+ qtmateriallistitem_p.h qtmaterialavatar.cpp \
+ lib/qtmaterialstyle.cpp \
+ lib/qtmaterialtheme.cpp \
+ qtmaterialbadge.cpp \
+ lib/qtmaterialoverlaywidget.cpp \
+ qtmaterialcheckbox.cpp \
+ lib/qtmaterialcheckable_internal.cpp \
+ lib/qtmaterialcheckable.cpp \
+ lib/qtmaterialripple.cpp \
+ lib/qtmaterialrippleoverlay.cpp \
+ qtmaterialfab.cpp \
+ qtmaterialraisedbutton.cpp \
+ qtmaterialflatbutton_internal.cpp \
+ qtmaterialflatbutton.cpp \
+ lib/qtmaterialstatetransition.cpp \
+ qtmaterialiconbutton.cpp \
+ qtmaterialprogress_internal.cpp \
+ qtmaterialprogress.cpp \
+ qtmaterialcircularprogress_internal.cpp \
+ qtmaterialcircularprogress.cpp \
+ qtmaterialslider_internal.cpp \
+ qtmaterialslider.cpp \
+ qtmaterialsnackbar_internal.cpp \
+ qtmaterialsnackbar.cpp \
+ qtmaterialradiobutton.cpp \
+ qtmaterialtoggle_internal.cpp \
+ qtmaterialtoggle.cpp \
+ qtmaterialtextfield_internal.cpp \
+ qtmaterialtextfield.cpp \
+ qtmaterialtabs_internal.cpp \
+ qtmaterialtabs.cpp \
+ qtmaterialscrollbar_internal.cpp \
+ qtmaterialscrollbar.cpp \
+ qtmaterialdialog_internal.cpp \
+ qtmaterialdialog.cpp \
+ qtmaterialdrawer_internal.cpp \
+ qtmaterialdrawer.cpp \
+ qtmaterialappbar.cpp \
+ qtmaterialautocomplete.cpp \
+ qtmaterialpaper.cpp \
+ qtmaterialtable.cpp \
+ layouts/qtmaterialsnackbarlayout.cpp \
+ qtmaterialautocomplete_internal.cpp \
+ qtmaterialmenu.cpp \
+ qtmaterialmenu_internal.cpp \
+ qtmateriallist.cpp \
+ qtmateriallistitem.cpp
+QMAKE_TARGET = components
+DESTDIR =
+TARGET = libcomponents.a
+
+
+first: all
+####### Build rules
+
+staticlib: $(TARGET)
+
+$(TARGET): $(OBJECTS) $(OBJCOMP)
+ -$(DEL_FILE) $(TARGET)
+ $(AR) $(DESTDIR)$(TARGET) $(OBJECTS)
+
+
+Makefile: components.pro ../.qmake.conf /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qmake.conf /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/unix.conf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/linux.conf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/sanitize.conf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base.conf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base-unix.conf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-base.conf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-unix.conf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/qconfig.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_accessibility_support_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_designer.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_devicediscovery_support_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_egl_support_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eglfs_kms_support_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eglfsdeviceintegration_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eventdispatcher_support_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_fb_support_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_fontdatabase_support_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_glx_support_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_help.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_input_support_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_kms_support_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_linuxaccessibility_support_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimedia.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimediawidgets.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_platformcompositor_support_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_service_support_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_svg.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_theme_support_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_uiplugin.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_uitools.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml_private.pri \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_functions.prf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_config.prf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qmake.conf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_post.prf \
+ ../.qmake.conf \
+ ../.qmake.stash \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exclusive_builds.prf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/toolchain.prf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_pre.prf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resolve_config.prf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_post.prf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/warn_on.prf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt.prf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resources.prf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/moc.prf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/opengl.prf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/thread.prf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qmake_use.prf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/file_copies.prf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/testcase_targets.prf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exceptions.prf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/yacc.prf \
+ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/lex.prf \
+ components.pro \
+ resources.qrc \
+ /usr/lib/x86_64-linux-gnu/libQt5Gui.prl \
+ /usr/lib/x86_64-linux-gnu/libQt5Core.prl
+ $(QMAKE) -o Makefile components.pro
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/unix.conf:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/linux.conf:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/sanitize.conf:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base.conf:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base-unix.conf:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-base.conf:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-unix.conf:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/qconfig.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_accessibility_support_private.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent_private.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core_private.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus_private.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_designer.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_devicediscovery_support_private.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_egl_support_private.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eglfs_kms_support_private.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eglfsdeviceintegration_private.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eventdispatcher_support_private.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_fb_support_private.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_fontdatabase_support_private.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_glx_support_private.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui_private.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_help.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_input_support_private.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_kms_support_private.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_linuxaccessibility_support_private.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimedia.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimediawidgets.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network_private.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl_private.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_platformcompositor_support_private.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport_private.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_service_support_private.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql_private.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_svg.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib_private.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_theme_support_private.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_uiplugin.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_uitools.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets_private.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml_private.pri:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_functions.prf:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_config.prf:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qmake.conf:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_post.prf:
+../.qmake.conf:
+../.qmake.stash:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exclusive_builds.prf:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/toolchain.prf:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_pre.prf:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resolve_config.prf:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_post.prf:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/warn_on.prf:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt.prf:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resources.prf:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/moc.prf:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/opengl.prf:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/thread.prf:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qmake_use.prf:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/file_copies.prf:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/testcase_targets.prf:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exceptions.prf:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/yacc.prf:
+/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/lex.prf:
+components.pro:
+resources.qrc:
+/usr/lib/x86_64-linux-gnu/libQt5Gui.prl:
+/usr/lib/x86_64-linux-gnu/libQt5Core.prl:
+qmake: FORCE
+ @$(QMAKE) -o Makefile components.pro
+
+qmake_all: FORCE
+
+
+all: Makefile $(TARGET)
+
+dist: distdir FORCE
+ (cd `dirname $(DISTDIR)` && $(TAR) $(DISTNAME).tar $(DISTNAME) && $(COMPRESS) $(DISTNAME).tar) && $(MOVE) `dirname $(DISTDIR)`/$(DISTNAME).tar.gz . && $(DEL_FILE) -r $(DISTDIR)
+
+distdir: FORCE
+ @test -d $(DISTDIR) || mkdir -p $(DISTDIR)
+ $(COPY_FILE) --parents $(DIST) $(DISTDIR)/
+ $(COPY_FILE) --parents resources.qrc $(DISTDIR)/
+ $(COPY_FILE) --parents /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/data/dummy.cpp $(DISTDIR)/
+ $(COPY_FILE) --parents qtmaterialavatar_p.h qtmaterialavatar.h lib/qtmaterialstyle_p.h lib/qtmaterialstyle.h lib/qtmaterialtheme_p.h lib/qtmaterialtheme.h qtmaterialbadge_p.h qtmaterialbadge.h lib/qtmaterialoverlaywidget.h qtmaterialcheckbox_p.h qtmaterialcheckbox.h lib/qtmaterialcheckable_internal.h lib/qtmaterialcheckable_p.h lib/qtmaterialripple.h lib/qtmaterialrippleoverlay.h lib/qtmaterialcheckable.h qtmaterialfab_p.h qtmaterialfab.h qtmaterialraisedbutton_p.h qtmaterialraisedbutton.h qtmaterialflatbutton_internal.h qtmaterialflatbutton_p.h qtmaterialflatbutton.h lib/qtmaterialstatetransition.h lib/qtmaterialstatetransitionevent.h qtmaterialiconbutton_p.h qtmaterialiconbutton.h qtmaterialprogress_internal.h qtmaterialprogress_p.h qtmaterialprogress.h qtmaterialcircularprogress_internal.h qtmaterialcircularprogress_p.h qtmaterialcircularprogress.h qtmaterialslider_internal.h qtmaterialslider_p.h qtmaterialslider.h qtmaterialsnackbar_internal.h qtmaterialsnackbar_p.h qtmaterialsnackbar.h qtmaterialradiobutton_p.h qtmaterialradiobutton.h qtmaterialtoggle_internal.h qtmaterialtoggle_p.h qtmaterialtoggle.h qtmaterialtextfield_internal.h qtmaterialtextfield_p.h qtmaterialtextfield.h qtmaterialtabs_internal.h qtmaterialtabs_p.h qtmaterialtabs.h qtmaterialscrollbar_internal.h qtmaterialscrollbar_p.h qtmaterialscrollbar.h qtmaterialdialog_internal.h qtmaterialdialog_p.h qtmaterialdialog.h qtmaterialdrawer_internal.h qtmaterialdrawer_p.h qtmaterialdrawer.h qtmaterialappbar.h qtmaterialappbar_p.h qtmaterialautocomplete.h qtmaterialautocomplete_p.h qtmaterialpaper.h qtmaterialpaper_p.h qtmaterialtable.h qtmaterialtable_p.h layouts/qtmaterialsnackbarlayout.h layouts/qtmaterialsnackbarlayout_p.h qtmaterialautocomplete_internal.h qtmaterialmenu.h qtmaterialmenu_p.h qtmaterialmenu_internal.h qtmateriallist.h qtmateriallist_p.h qtmateriallistitem.h qtmateriallistitem_p.h $(DISTDIR)/
+ $(COPY_FILE) --parents qtmaterialavatar.cpp lib/qtmaterialstyle.cpp lib/qtmaterialtheme.cpp qtmaterialbadge.cpp lib/qtmaterialoverlaywidget.cpp qtmaterialcheckbox.cpp lib/qtmaterialcheckable_internal.cpp lib/qtmaterialcheckable.cpp lib/qtmaterialripple.cpp lib/qtmaterialrippleoverlay.cpp qtmaterialfab.cpp qtmaterialraisedbutton.cpp qtmaterialflatbutton_internal.cpp qtmaterialflatbutton.cpp lib/qtmaterialstatetransition.cpp qtmaterialiconbutton.cpp qtmaterialprogress_internal.cpp qtmaterialprogress.cpp qtmaterialcircularprogress_internal.cpp qtmaterialcircularprogress.cpp qtmaterialslider_internal.cpp qtmaterialslider.cpp qtmaterialsnackbar_internal.cpp qtmaterialsnackbar.cpp qtmaterialradiobutton.cpp qtmaterialtoggle_internal.cpp qtmaterialtoggle.cpp qtmaterialtextfield_internal.cpp qtmaterialtextfield.cpp qtmaterialtabs_internal.cpp qtmaterialtabs.cpp qtmaterialscrollbar_internal.cpp qtmaterialscrollbar.cpp qtmaterialdialog_internal.cpp qtmaterialdialog.cpp qtmaterialdrawer_internal.cpp qtmaterialdrawer.cpp qtmaterialappbar.cpp qtmaterialautocomplete.cpp qtmaterialpaper.cpp qtmaterialtable.cpp layouts/qtmaterialsnackbarlayout.cpp qtmaterialautocomplete_internal.cpp qtmaterialmenu.cpp qtmaterialmenu_internal.cpp qtmateriallist.cpp qtmateriallistitem.cpp $(DISTDIR)/
+
+
+clean: compiler_clean
+ -$(DEL_FILE) $(OBJECTS)
+ -$(DEL_FILE) *~ core *.core
+
+
+distclean: clean
+ -$(DEL_FILE) $(TARGET)
+ -$(DEL_FILE) Makefile
+
+
+####### Sub-libraries
+
+mocclean: compiler_moc_header_clean compiler_moc_source_clean
+
+mocables: compiler_moc_header_make_all compiler_moc_source_make_all
+
+check: first
+
+benchmark: first
+
+compiler_rcc_make_all: qrc_resources.cpp
+compiler_rcc_clean:
+ -$(DEL_FILE) qrc_resources.cpp
+qrc_resources.cpp: resources.qrc \
+ /usr/lib/qt5/bin/rcc \
+ ../fonts/Roboto/Roboto-Black.ttf \
+ ../fonts/Roboto/Roboto-Light.ttf \
+ ../fonts/Roboto/Roboto-Regular.ttf \
+ ../fonts/Roboto/Roboto-Thin.ttf \
+ ../fonts/Roboto/Roboto-Bold.ttf \
+ ../fonts/Roboto/Roboto-Medium.ttf \
+ icons/places/svg/production/ic_rv_hookup_24px.svg \
+ icons/places/svg/production/ic_all_inclusive_24px.svg \
+ icons/places/svg/production/ic_child_care_24px.svg \
+ icons/places/svg/production/ic_casino_24px.svg \
+ icons/places/svg/production/ic_free_breakfast_24px.svg \
+ icons/places/svg/production/ic_ac_unit_24px.svg \
+ icons/places/svg/production/ic_smoking_rooms_24px.svg \
+ icons/places/svg/production/ic_hot_tub_24px.svg \
+ icons/places/svg/production/ic_pool_24px.svg \
+ icons/places/svg/production/ic_room_service_24px.svg \
+ icons/places/svg/production/ic_smoke_free_24px.svg \
+ icons/places/svg/production/ic_golf_course_24px.svg \
+ icons/places/svg/production/ic_spa_24px.svg \
+ icons/places/svg/production/ic_fitness_center_24px.svg \
+ icons/places/svg/production/ic_kitchen_24px.svg \
+ icons/places/svg/production/ic_child_friendly_24px.svg \
+ icons/places/svg/production/ic_beach_access_24px.svg \
+ icons/places/svg/production/ic_airport_shuttle_24px.svg \
+ icons/places/svg/production/ic_business_center_24px.svg \
+ icons/av/svg/production/ic_fiber_pin_24px.svg \
+ icons/av/svg/production/ic_videocam_off_24px.svg \
+ icons/av/svg/production/ic_replay_5_24px.svg \
+ icons/av/svg/production/ic_surround_sound_24px.svg \
+ icons/av/svg/production/ic_web_asset_24px.svg \
+ icons/av/svg/production/ic_play_circle_filled_24px.svg \
+ icons/av/svg/production/ic_sort_by_alpha_24px.svg \
+ icons/av/svg/production/ic_forward_5_24px.svg \
+ icons/av/svg/production/ic_video_label_24px.svg \
+ icons/av/svg/production/ic_playlist_add_check_24px.svg \
+ icons/av/svg/production/ic_music_video_24px.svg \
+ icons/av/svg/production/ic_fast_rewind_24px.svg \
+ icons/av/svg/production/ic_volume_up_24px.svg \
+ icons/av/svg/production/ic_closed_caption_24px.svg \
+ icons/av/svg/production/ic_library_books_24px.svg \
+ icons/av/svg/production/ic_video_library_24px.svg \
+ icons/av/svg/production/ic_playlist_play_24px.svg \
+ icons/av/svg/production/ic_call_to_action_24px.svg \
+ icons/av/svg/production/ic_subscriptions_24px.svg \
+ icons/av/svg/production/ic_replay_24px.svg \
+ icons/av/svg/production/ic_video_call_24px.svg \
+ icons/av/svg/production/ic_playlist_add_24px.svg \
+ icons/av/svg/production/ic_album_24px.svg \
+ icons/av/svg/production/ic_equalizer_24px.svg \
+ icons/av/svg/production/ic_fast_forward_24px.svg \
+ icons/av/svg/production/ic_shuffle_24px.svg \
+ icons/av/svg/production/ic_repeat_one_24px.svg \
+ icons/av/svg/production/ic_library_music_24px.svg \
+ icons/av/svg/production/ic_skip_next_24px.svg \
+ icons/av/svg/production/ic_volume_off_24px.svg \
+ icons/av/svg/production/ic_games_24px.svg \
+ icons/av/svg/production/ic_mic_none_24px.svg \
+ icons/av/svg/production/ic_queue_play_next_24px.svg \
+ icons/av/svg/production/ic_fiber_manual_record_24px.svg \
+ icons/av/svg/production/ic_note_24px.svg \
+ icons/av/svg/production/ic_fiber_dvr_24px.svg \
+ icons/av/svg/production/ic_branding_watermark_24px.svg \
+ icons/av/svg/production/ic_pause_circle_filled_24px.svg \
+ icons/av/svg/production/ic_art_track_24px.svg \
+ icons/av/svg/production/ic_hearing_24px.svg \
+ icons/av/svg/production/ic_high_quality_24px.svg \
+ icons/av/svg/production/ic_hd_24px.svg \
+ icons/av/svg/production/ic_snooze_24px.svg \
+ icons/av/svg/production/ic_recent_actors_24px.svg \
+ icons/av/svg/production/ic_remove_from_queue_24px.svg \
+ icons/av/svg/production/ic_fiber_new_24px.svg \
+ icons/av/svg/production/ic_featured_play_list_24px.svg \
+ icons/av/svg/production/ic_new_releases_24px.svg \
+ icons/av/svg/production/ic_web_24px.svg \
+ icons/av/svg/production/ic_stop_24px.svg \
+ icons/av/svg/production/ic_not_interested_24px.svg \
+ icons/av/svg/production/ic_videocam_24px.svg \
+ icons/av/svg/production/ic_pause_24px.svg \
+ icons/av/svg/production/ic_loop_24px.svg \
+ icons/av/svg/production/ic_mic_off_24px.svg \
+ icons/av/svg/production/ic_play_circle_outline_24px.svg \
+ icons/av/svg/production/ic_featured_video_24px.svg \
+ icons/av/svg/production/ic_radio_24px.svg \
+ icons/av/svg/production/ic_movie_24px.svg \
+ icons/av/svg/production/ic_fiber_smart_record_24px.svg \
+ icons/av/svg/production/ic_forward_30_24px.svg \
+ icons/av/svg/production/ic_skip_previous_24px.svg \
+ icons/av/svg/production/ic_forward_10_24px.svg \
+ icons/av/svg/production/ic_subtitles_24px.svg \
+ icons/av/svg/production/ic_play_arrow_24px.svg \
+ icons/av/svg/production/ic_airplay_24px.svg \
+ icons/av/svg/production/ic_queue_24px.svg \
+ icons/av/svg/production/ic_library_add_24px.svg \
+ icons/av/svg/production/ic_replay_10_24px.svg \
+ icons/av/svg/production/ic_replay_30_24px.svg \
+ icons/av/svg/production/ic_mic_24px.svg \
+ icons/av/svg/production/ic_slow_motion_video_24px.svg \
+ icons/av/svg/production/ic_volume_mute_24px.svg \
+ icons/av/svg/production/ic_repeat_24px.svg \
+ icons/av/svg/production/ic_pause_circle_outline_24px.svg \
+ icons/av/svg/production/ic_add_to_queue_24px.svg \
+ icons/av/svg/production/ic_queue_music_24px.svg \
+ icons/av/svg/production/ic_av_timer_24px.svg \
+ icons/av/svg/production/ic_volume_down_24px.svg \
+ icons/av/svg/production/ic_explicit_24px.svg \
+ icons/alert/svg/production/ic_error_outline_24px.svg \
+ icons/alert/svg/production/ic_add_alert_24px.svg \
+ icons/alert/svg/production/ic_warning_24px.svg \
+ icons/alert/svg/production/ic_error_24px.svg \
+ icons/social/svg/production/ic_mood_24px.svg \
+ icons/social/svg/production/ic_share_24px.svg \
+ icons/social/svg/production/ic_notifications_active_24px.svg \
+ icons/social/svg/production/ic_notifications_24px.svg \
+ icons/social/svg/production/ic_poll_24px.svg \
+ icons/social/svg/production/ic_domain_24px.svg \
+ icons/social/svg/production/ic_person_outline_24px.svg \
+ icons/social/svg/production/ic_location_city_24px.svg \
+ icons/social/svg/production/ic_mood_bad_24px.svg \
+ icons/social/svg/production/ic_people_outline_24px.svg \
+ icons/social/svg/production/ic_sentiment_very_satisfied_24px.svg \
+ icons/social/svg/production/ic_notifications_paused_24px.svg \
+ icons/social/svg/production/ic_person_24px.svg \
+ icons/social/svg/production/ic_notifications_off_24px.svg \
+ icons/social/svg/production/ic_plus_one_24px.svg \
+ icons/social/svg/production/ic_sentiment_neutral_24px.svg \
+ icons/social/svg/production/ic_pages_24px.svg \
+ icons/social/svg/production/ic_sentiment_satisfied_24px.svg \
+ icons/social/svg/production/ic_notifications_none_24px.svg \
+ icons/social/svg/production/ic_group_add_24px.svg \
+ icons/social/svg/production/ic_party_mode_24px.svg \
+ icons/social/svg/production/ic_whatshot_24px.svg \
+ icons/social/svg/production/ic_cake_24px.svg \
+ icons/social/svg/production/ic_sentiment_dissatisfied_24px.svg \
+ icons/social/svg/production/ic_sentiment_very_dissatisfied_24px.svg \
+ icons/social/svg/production/ic_person_add_24px.svg \
+ icons/social/svg/production/ic_public_24px.svg \
+ icons/social/svg/production/ic_people_24px.svg \
+ icons/social/svg/production/ic_group_24px.svg \
+ icons/social/svg/production/ic_school_24px.svg \
+ icons/navigation/svg/production/ic_apps_24px.svg \
+ icons/navigation/svg/production/ic_refresh_24px.svg \
+ icons/navigation/svg/production/ic_more_horiz_24px.svg \
+ icons/navigation/svg/production/ic_arrow_drop_up_24px.svg \
+ icons/navigation/svg/production/ic_expand_less_24px.svg \
+ icons/navigation/svg/production/ic_chevron_right_24px.svg \
+ icons/navigation/svg/production/ic_arrow_downward_24px.svg \
+ icons/navigation/svg/production/ic_arrow_drop_down_24px.svg \
+ icons/navigation/svg/production/ic_check_24px.svg \
+ icons/navigation/svg/production/ic_subdirectory_arrow_right_24px.svg \
+ icons/navigation/svg/production/ic_arrow_upward_24px.svg \
+ icons/navigation/svg/production/ic_more_vert_24px.svg \
+ icons/navigation/svg/production/ic_cancel_24px.svg \
+ icons/navigation/svg/production/ic_last_page_24px.svg \
+ icons/navigation/svg/production/ic_unfold_less_24px.svg \
+ icons/navigation/svg/production/ic_first_page_24px.svg \
+ icons/navigation/svg/production/ic_close_24px.svg \
+ icons/navigation/svg/production/ic_subdirectory_arrow_left_24px.svg \
+ icons/navigation/svg/production/ic_arrow_drop_down_circle_24px.svg \
+ icons/navigation/svg/production/ic_expand_more_24px.svg \
+ icons/navigation/svg/production/ic_arrow_forward_24px.svg \
+ icons/navigation/svg/production/ic_chevron_left_24px.svg \
+ icons/navigation/svg/production/ic_fullscreen_24px.svg \
+ icons/navigation/svg/production/ic_menu_24px.svg \
+ icons/navigation/svg/production/ic_unfold_more_24px.svg \
+ icons/navigation/svg/production/ic_arrow_back_24px.svg \
+ icons/navigation/svg/production/ic_fullscreen_exit_24px.svg \
+ icons/toggle/svg/production/ic_star_24px.svg \
+ icons/toggle/svg/production/ic_check_box_24px.svg \
+ icons/toggle/svg/production/ic_star_half_24px.svg \
+ icons/toggle/svg/production/ic_indeterminate_check_box_24px.svg \
+ icons/toggle/svg/production/ic_radio_button_unchecked_24px.svg \
+ icons/toggle/svg/production/ic_radio_button_checked_24px.svg \
+ icons/toggle/svg/production/ic_check_box_outline_blank_24px.svg \
+ icons/toggle/svg/production/ic_star_border_24px.svg \
+ icons/editor/svg/production/ic_format_align_justify_24px.svg \
+ icons/editor/svg/production/ic_attach_file_24px.svg \
+ icons/editor/svg/production/ic_format_indent_increase_24px.svg \
+ icons/editor/svg/production/ic_highlight_24px.svg \
+ icons/editor/svg/production/ic_border_top_24px.svg \
+ icons/editor/svg/production/ic_insert_comment_24px.svg \
+ icons/editor/svg/production/ic_publish_24px.svg \
+ icons/editor/svg/production/ic_drag_handle_24px.svg \
+ icons/editor/svg/production/ic_vertical_align_top_24px.svg \
+ icons/editor/svg/production/ic_format_indent_decrease_24px.svg \
+ icons/editor/svg/production/ic_border_left_24px.svg \
+ icons/editor/svg/production/ic_border_right_24px.svg \
+ icons/editor/svg/production/ic_format_color_text_24px.svg \
+ icons/editor/svg/production/ic_insert_link_24px.svg \
+ icons/editor/svg/production/ic_format_line_spacing_24px.svg \
+ icons/editor/svg/production/ic_format_paint_24px.svg \
+ icons/editor/svg/production/ic_space_bar_24px.svg \
+ icons/editor/svg/production/ic_vertical_align_center_24px.svg \
+ icons/editor/svg/production/ic_format_textdirection_r_to_l_24px.svg \
+ icons/editor/svg/production/ic_border_all_24px.svg \
+ icons/editor/svg/production/ic_format_italic_24px.svg \
+ icons/editor/svg/production/ic_border_clear_24px.svg \
+ icons/editor/svg/production/ic_format_underlined_24px.svg \
+ icons/editor/svg/production/ic_border_vertical_24px.svg \
+ icons/editor/svg/production/ic_insert_emoticon_24px.svg \
+ icons/editor/svg/production/ic_text_fields_24px.svg \
+ icons/editor/svg/production/ic_insert_invitation_24px.svg \
+ icons/editor/svg/production/ic_insert_chart_24px.svg \
+ icons/editor/svg/production/ic_attach_money_24px.svg \
+ icons/editor/svg/production/ic_mode_edit_24px.svg \
+ icons/editor/svg/production/ic_format_clear_24px.svg \
+ icons/editor/svg/production/ic_bubble_chart_24px.svg \
+ icons/editor/svg/production/ic_border_color_24px.svg \
+ icons/editor/svg/production/ic_format_align_right_24px.svg \
+ icons/editor/svg/production/ic_vertical_align_bottom_24px.svg \
+ icons/editor/svg/production/ic_multiline_chart_24px.svg \
+ icons/editor/svg/production/ic_format_align_left_24px.svg \
+ icons/editor/svg/production/ic_insert_drive_file_24px.svg \
+ icons/editor/svg/production/ic_pie_chart_24px.svg \
+ icons/editor/svg/production/ic_border_style_24px.svg \
+ icons/editor/svg/production/ic_insert_photo_24px.svg \
+ icons/editor/svg/production/ic_linear_scale_24px.svg \
+ icons/editor/svg/production/ic_border_inner_24px.svg \
+ icons/editor/svg/production/ic_format_color_fill_24px.svg \
+ icons/editor/svg/production/ic_merge_type_24px.svg \
+ icons/editor/svg/production/ic_money_off_24px.svg \
+ icons/editor/svg/production/ic_strikethrough_s_24px.svg \
+ icons/editor/svg/production/ic_title_24px.svg \
+ icons/editor/svg/production/ic_format_align_center_24px.svg \
+ icons/editor/svg/production/ic_format_color_reset_24px.svg \
+ icons/editor/svg/production/ic_functions_24px.svg \
+ icons/editor/svg/production/ic_format_size_24px.svg \
+ icons/editor/svg/production/ic_border_horizontal_24px.svg \
+ icons/editor/svg/production/ic_format_shapes_24px.svg \
+ icons/editor/svg/production/ic_monetization_on_24px.svg \
+ icons/editor/svg/production/ic_border_bottom_24px.svg \
+ icons/editor/svg/production/ic_format_quote_24px.svg \
+ icons/editor/svg/production/ic_wrap_text_24px.svg \
+ icons/editor/svg/production/ic_pie_chart_outlined_24px.svg \
+ icons/editor/svg/production/ic_show_chart_24px.svg \
+ icons/editor/svg/production/ic_format_list_bulleted_24px.svg \
+ icons/editor/svg/production/ic_format_textdirection_l_to_r_24px.svg \
+ icons/editor/svg/production/ic_format_list_numbered_24px.svg \
+ icons/editor/svg/production/ic_format_bold_24px.svg \
+ icons/editor/svg/production/ic_mode_comment_24px.svg \
+ icons/editor/svg/production/ic_border_outer_24px.svg \
+ icons/editor/svg/production/ic_short_text_24px.svg \
+ icons/editor/svg/production/ic_format_strikethrough_24px.svg \
+ icons/communication/svg/production/ic_call_24px.svg \
+ icons/communication/svg/production/ic_comment_24px.svg \
+ icons/communication/svg/production/ic_dialer_sip_24px.svg \
+ icons/communication/svg/production/ic_phonelink_ring_24px.svg \
+ icons/communication/svg/production/ic_message_24px.svg \
+ icons/communication/svg/production/ic_stay_current_landscape_24px.svg \
+ icons/communication/svg/production/ic_contact_phone_24px.svg \
+ icons/communication/svg/production/ic_import_contacts_24px.svg \
+ icons/communication/svg/production/ic_phonelink_setup_24px.svg \
+ icons/communication/svg/production/ic_speaker_phone_24px.svg \
+ icons/communication/svg/production/ic_invert_colors_off_24px.svg \
+ icons/communication/svg/production/ic_call_missed_outgoing_24px.svg \
+ icons/communication/svg/production/ic_ring_volume_24px.svg \
+ icons/communication/svg/production/ic_swap_calls_24px.svg \
+ icons/communication/svg/production/ic_call_merge_24px.svg \
+ icons/communication/svg/production/ic_call_end_24px.svg \
+ icons/communication/svg/production/ic_phone_24px.svg \
+ icons/communication/svg/production/ic_textsms_24px.svg \
+ icons/communication/svg/production/ic_contacts_24px.svg \
+ icons/communication/svg/production/ic_chat_bubble_24px.svg \
+ icons/communication/svg/production/ic_forum_24px.svg \
+ icons/communication/svg/production/ic_call_missed_24px.svg \
+ icons/communication/svg/production/ic_contact_mail_24px.svg \
+ icons/communication/svg/production/ic_screen_share_24px.svg \
+ icons/communication/svg/production/ic_vpn_key_24px.svg \
+ icons/communication/svg/production/ic_portable_wifi_off_24px.svg \
+ icons/communication/svg/production/ic_import_export_24px.svg \
+ icons/communication/svg/production/ic_call_received_24px.svg \
+ icons/communication/svg/production/ic_stay_primary_landscape_24px.svg \
+ icons/communication/svg/production/ic_location_on_24px.svg \
+ icons/communication/svg/production/ic_stay_current_portrait_24px.svg \
+ icons/communication/svg/production/ic_mail_outline_24px.svg \
+ icons/communication/svg/production/ic_stay_primary_portrait_24px.svg \
+ icons/communication/svg/production/ic_chat_24px.svg \
+ icons/communication/svg/production/ic_dialpad_24px.svg \
+ icons/communication/svg/production/ic_present_to_all_24px.svg \
+ icons/communication/svg/production/ic_stop_screen_share_24px.svg \
+ icons/communication/svg/production/ic_business_24px.svg \
+ icons/communication/svg/production/ic_phonelink_lock_24px.svg \
+ icons/communication/svg/production/ic_call_made_24px.svg \
+ icons/communication/svg/production/ic_clear_all_24px.svg \
+ icons/communication/svg/production/ic_no_sim_24px.svg \
+ icons/communication/svg/production/ic_call_split_24px.svg \
+ icons/communication/svg/production/ic_voicemail_24px.svg \
+ icons/communication/svg/production/ic_location_off_24px.svg \
+ icons/communication/svg/production/ic_email_24px.svg \
+ icons/communication/svg/production/ic_phonelink_erase_24px.svg \
+ icons/communication/svg/production/ic_chat_bubble_outline_24px.svg \
+ icons/communication/svg/production/ic_live_help_24px.svg \
+ icons/communication/svg/production/ic_rss_feed_24px.svg \
+ icons/file/svg/production/ic_file_upload_24px.svg \
+ icons/file/svg/production/ic_folder_24px.svg \
+ icons/file/svg/production/ic_folder_shared_24px.svg \
+ icons/file/svg/production/ic_folder_open_24px.svg \
+ icons/file/svg/production/ic_cloud_circle_24px.svg \
+ icons/file/svg/production/ic_create_new_folder_24px.svg \
+ icons/file/svg/production/ic_cloud_done_24px.svg \
+ icons/file/svg/production/ic_cloud_upload_24px.svg \
+ icons/file/svg/production/ic_cloud_queue_24px.svg \
+ icons/file/svg/production/ic_attachment_24px.svg \
+ icons/file/svg/production/ic_cloud_download_24px.svg \
+ icons/file/svg/production/ic_cloud_24px.svg \
+ icons/file/svg/production/ic_file_download_24px.svg \
+ icons/file/svg/production/ic_cloud_off_24px.svg \
+ icons/device/svg/production/ic_nfc_24px.svg \
+ icons/device/svg/production/ic_battery_alert_24px.svg \
+ icons/device/svg/production/ic_signal_wifi_2_bar_lock_24px.svg \
+ icons/device/svg/production/ic_signal_cellular_2_bar_24px.svg \
+ icons/device/svg/production/ic_bluetooth_searching_24px.svg \
+ icons/device/svg/production/ic_widgets_24px.svg \
+ icons/device/svg/production/ic_signal_cellular_off_24px.svg \
+ icons/device/svg/production/ic_signal_wifi_4_bar_24px.svg \
+ icons/device/svg/production/ic_airplanemode_inactive_24px.svg \
+ icons/device/svg/production/ic_brightness_medium_24px.svg \
+ icons/device/svg/production/ic_location_disabled_24px.svg \
+ icons/device/svg/production/ic_usb_24px.svg \
+ icons/device/svg/production/ic_battery_full_24px.svg \
+ icons/device/svg/production/ic_signal_cellular_1_bar_24px.svg \
+ icons/device/svg/production/ic_signal_wifi_1_bar_lock_24px.svg \
+ icons/device/svg/production/ic_wifi_tethering_24px.svg \
+ icons/device/svg/production/ic_battery_30_24px.svg \
+ icons/device/svg/production/ic_signal_cellular_connected_no_internet_4_bar_24px.svg \
+ icons/device/svg/production/ic_signal_wifi_3_bar_24px.svg \
+ icons/device/svg/production/ic_data_usage_24px.svg \
+ icons/device/svg/production/ic_battery_80_24px.svg \
+ icons/device/svg/production/ic_battery_60_24px.svg \
+ icons/device/svg/production/ic_battery_20_24px.svg \
+ icons/device/svg/production/ic_bluetooth_connected_24px.svg \
+ icons/device/svg/production/ic_brightness_high_24px.svg \
+ icons/device/svg/production/ic_brightness_auto_24px.svg \
+ icons/device/svg/production/ic_bluetooth_disabled_24px.svg \
+ icons/device/svg/production/ic_signal_cellular_0_bar_24px.svg \
+ icons/device/svg/production/ic_battery_90_24px.svg \
+ icons/device/svg/production/ic_battery_50_24px.svg \
+ icons/device/svg/production/ic_wallpaper_24px.svg \
+ icons/device/svg/production/ic_location_searching_24px.svg \
+ icons/device/svg/production/ic_battery_unknown_24px.svg \
+ icons/device/svg/production/ic_battery_charging_30_24px.svg \
+ icons/device/svg/production/ic_signal_cellular_connected_no_internet_3_bar_24px.svg \
+ icons/device/svg/production/ic_wifi_lock_24px.svg \
+ icons/device/svg/production/ic_signal_wifi_2_bar_24px.svg \
+ icons/device/svg/production/ic_sd_storage_24px.svg \
+ icons/device/svg/production/ic_battery_charging_20_24px.svg \
+ icons/device/svg/production/ic_battery_charging_80_24px.svg \
+ icons/device/svg/production/ic_battery_charging_60_24px.svg \
+ icons/device/svg/production/ic_settings_system_daydream_24px.svg \
+ icons/device/svg/production/ic_access_alarm_24px.svg \
+ icons/device/svg/production/ic_battery_charging_50_24px.svg \
+ icons/device/svg/production/ic_screen_lock_rotation_24px.svg \
+ icons/device/svg/production/ic_battery_charging_90_24px.svg \
+ icons/device/svg/production/ic_signal_wifi_1_bar_24px.svg \
+ icons/device/svg/production/ic_signal_cellular_null_24px.svg \
+ icons/device/svg/production/ic_network_wifi_24px.svg \
+ icons/device/svg/production/ic_gps_fixed_24px.svg \
+ icons/device/svg/production/ic_signal_cellular_connected_no_internet_2_bar_24px.svg \
+ icons/device/svg/production/ic_brightness_low_24px.svg \
+ icons/device/svg/production/ic_battery_charging_full_24px.svg \
+ icons/device/svg/production/ic_signal_wifi_0_bar_24px.svg \
+ icons/device/svg/production/ic_network_cell_24px.svg \
+ icons/device/svg/production/ic_signal_wifi_4_bar_lock_24px.svg \
+ icons/device/svg/production/ic_signal_cellular_4_bar_24px.svg \
+ icons/device/svg/production/ic_signal_cellular_no_sim_24px.svg \
+ icons/device/svg/production/ic_signal_wifi_off_24px.svg \
+ icons/device/svg/production/ic_signal_cellular_connected_no_internet_1_bar_24px.svg \
+ icons/device/svg/production/ic_storage_24px.svg \
+ icons/device/svg/production/ic_screen_lock_portrait_24px.svg \
+ icons/device/svg/production/ic_gps_off_24px.svg \
+ icons/device/svg/production/ic_devices_24px.svg \
+ icons/device/svg/production/ic_airplanemode_active_24px.svg \
+ icons/device/svg/production/ic_developer_mode_24px.svg \
+ icons/device/svg/production/ic_screen_lock_landscape_24px.svg \
+ icons/device/svg/production/ic_battery_std_24px.svg \
+ icons/device/svg/production/ic_signal_wifi_3_bar_lock_24px.svg \
+ icons/device/svg/production/ic_signal_cellular_3_bar_24px.svg \
+ icons/device/svg/production/ic_add_alarm_24px.svg \
+ icons/device/svg/production/ic_access_alarms_24px.svg \
+ icons/device/svg/production/ic_graphic_eq_24px.svg \
+ icons/device/svg/production/ic_signal_cellular_connected_no_internet_0_bar_24px.svg \
+ icons/device/svg/production/ic_access_time_24px.svg \
+ icons/device/svg/production/ic_bluetooth_24px.svg \
+ icons/device/svg/production/ic_screen_rotation_24px.svg \
+ icons/device/svg/production/ic_dvr_24px.svg \
+ icons/device/svg/production/ic_gps_not_fixed_24px.svg \
+ icons/action/svg/production/ic_event_seat_24px.svg \
+ icons/action/svg/production/ic_markunread_mailbox_24px.svg \
+ icons/action/svg/production/ic_bug_report_24px.svg \
+ icons/action/svg/production/ic_view_carousel_24px.svg \
+ icons/action/svg/production/ic_perm_scan_wifi_24px.svg \
+ icons/action/svg/production/ic_receipt_24px.svg \
+ icons/action/svg/production/ic_open_in_browser_24px.svg \
+ icons/action/svg/production/ic_lock_open_24px.svg \
+ icons/action/svg/production/ic_g_translate_24px.svg \
+ icons/action/svg/production/ic_trending_up_24px.svg \
+ icons/action/svg/production/ic_credit_card_24px.svg \
+ icons/action/svg/production/ic_thumbs_up_down_24px.svg \
+ icons/action/svg/production/ic_lock_24px.svg \
+ icons/action/svg/production/ic_check_circle_24px.svg \
+ icons/action/svg/production/ic_assignment_ind_24px.svg \
+ icons/action/svg/production/ic_line_style_24px.svg \
+ icons/action/svg/production/ic_camera_enhance_24px.svg \
+ icons/action/svg/production/ic_euro_symbol_24px.svg \
+ icons/action/svg/production/ic_http_24px.svg \
+ icons/action/svg/production/ic_find_replace_24px.svg \
+ icons/action/svg/production/ic_speaker_notes_off_24px.svg \
+ icons/action/svg/production/ic_help_outline_24px.svg \
+ icons/action/svg/production/ic_info_outline_24px.svg \
+ icons/action/svg/production/ic_https_24px.svg \
+ icons/action/svg/production/ic_polymer_24px.svg \
+ icons/action/svg/production/ic_account_balance_24px.svg \
+ icons/action/svg/production/ic_lightbulb_outline_24px.svg \
+ icons/action/svg/production/ic_language_24px.svg \
+ icons/action/svg/production/ic_toc_24px.svg \
+ icons/action/svg/production/ic_label_24px.svg \
+ icons/action/svg/production/ic_settings_ethernet_24px.svg \
+ icons/action/svg/production/ic_settings_input_antenna_24px.svg \
+ icons/action/svg/production/ic_query_builder_24px.svg \
+ icons/action/svg/production/ic_shop_two_24px.svg \
+ icons/action/svg/production/ic_spellcheck_24px.svg \
+ icons/action/svg/production/ic_view_array_24px.svg \
+ icons/action/svg/production/ic_view_agenda_24px.svg \
+ icons/action/svg/production/ic_view_headline_24px.svg \
+ icons/action/svg/production/ic_delete_forever_24px.svg \
+ icons/action/svg/production/ic_remove_shopping_cart_24px.svg \
+ icons/action/svg/production/ic_perm_device_information_24px.svg \
+ icons/action/svg/production/ic_launch_24px.svg \
+ icons/action/svg/production/ic_flip_to_front_24px.svg \
+ icons/action/svg/production/ic_alarm_24px.svg \
+ icons/action/svg/production/ic_flight_takeoff_24px.svg \
+ icons/action/svg/production/ic_face_24px.svg \
+ icons/action/svg/production/ic_translate_24px.svg \
+ icons/action/svg/production/ic_view_week_24px.svg \
+ icons/action/svg/production/ic_grade_24px.svg \
+ icons/action/svg/production/ic_settings_overscan_24px.svg \
+ icons/action/svg/production/ic_event_24px.svg \
+ icons/action/svg/production/ic_favorite_24px.svg \
+ icons/action/svg/production/ic_exit_to_app_24px.svg \
+ icons/action/svg/production/ic_shop_24px.svg \
+ icons/action/svg/production/ic_work_24px.svg \
+ icons/action/svg/production/ic_youtube_searched_for_24px.svg \
+ icons/action/svg/production/ic_backup_24px.svg \
+ icons/action/svg/production/ic_bookmark_24px.svg \
+ icons/action/svg/production/ic_favorite_border_24px.svg \
+ icons/action/svg/production/ic_accessible_24px.svg \
+ icons/action/svg/production/ic_perm_media_24px.svg \
+ icons/action/svg/production/ic_trending_flat_24px.svg \
+ icons/action/svg/production/ic_open_with_24px.svg \
+ icons/action/svg/production/ic_settings_applications_24px.svg \
+ icons/action/svg/production/ic_assignment_return_24px.svg \
+ icons/action/svg/production/ic_dashboard_24px.svg \
+ icons/action/svg/production/ic_search_24px.svg \
+ icons/action/svg/production/ic_highlight_off_24px.svg \
+ icons/action/svg/production/ic_class_24px.svg \
+ icons/action/svg/production/ic_extension_24px.svg \
+ icons/action/svg/production/ic_assignment_returned_24px.svg \
+ icons/action/svg/production/ic_settings_remote_24px.svg \
+ icons/action/svg/production/ic_settings_voice_24px.svg \
+ icons/action/svg/production/ic_help_24px.svg \
+ icons/action/svg/production/ic_trending_down_24px.svg \
+ icons/action/svg/production/ic_view_stream_24px.svg \
+ icons/action/svg/production/ic_question_answer_24px.svg \
+ icons/action/svg/production/ic_important_devices_24px.svg \
+ icons/action/svg/production/ic_build_24px.svg \
+ icons/action/svg/production/ic_zoom_out_24px.svg \
+ icons/action/svg/production/ic_power_settings_new_24px.svg \
+ icons/action/svg/production/ic_line_weight_24px.svg \
+ icons/action/svg/production/ic_settings_phone_24px.svg \
+ icons/action/svg/production/ic_alarm_add_24px.svg \
+ icons/action/svg/production/ic_view_list_24px.svg \
+ icons/action/svg/production/ic_copyright_24px.svg \
+ icons/action/svg/production/ic_invert_colors_24px.svg \
+ icons/action/svg/production/ic_open_in_new_24px.svg \
+ icons/action/svg/production/ic_cached_24px.svg \
+ icons/action/svg/production/ic_subject_24px.svg \
+ icons/action/svg/production/ic_card_giftcard_24px.svg \
+ icons/action/svg/production/ic_track_changes_24px.svg \
+ icons/action/svg/production/ic_chrome_reader_mode_24px.svg \
+ icons/action/svg/production/ic_view_day_24px.svg \
+ icons/action/svg/production/ic_flight_land_24px.svg \
+ icons/action/svg/production/ic_announcement_24px.svg \
+ icons/action/svg/production/ic_supervisor_account_24px.svg \
+ icons/action/svg/production/ic_donut_small_24px.svg \
+ icons/action/svg/production/ic_visibility_off_24px.svg \
+ icons/action/svg/production/ic_payment_24px.svg \
+ icons/action/svg/production/ic_settings_cell_24px.svg \
+ icons/action/svg/production/ic_compare_arrows_24px.svg \
+ icons/action/svg/production/ic_home_24px.svg \
+ icons/action/svg/production/ic_settings_input_hdmi_24px.svg \
+ icons/action/svg/production/ic_stars_24px.svg \
+ icons/action/svg/production/ic_record_voice_over_24px.svg \
+ icons/action/svg/production/ic_eject_24px.svg \
+ icons/action/svg/production/ic_settings_input_composite_24px.svg \
+ icons/action/svg/production/ic_assignment_24px.svg \
+ icons/action/svg/production/ic_settings_bluetooth_24px.svg \
+ icons/action/svg/production/ic_android_24px.svg \
+ icons/action/svg/production/ic_explore_24px.svg \
+ icons/action/svg/production/ic_settings_24px.svg \
+ icons/action/svg/production/ic_view_module_24px.svg \
+ icons/action/svg/production/ic_report_problem_24px.svg \
+ icons/action/svg/production/ic_swap_vert_24px.svg \
+ icons/action/svg/production/ic_opacity_24px.svg \
+ icons/action/svg/production/ic_perm_data_setting_24px.svg \
+ icons/action/svg/production/ic_print_24px.svg \
+ icons/action/svg/production/ic_card_membership_24px.svg \
+ icons/action/svg/production/ic_restore_page_24px.svg \
+ icons/action/svg/production/ic_offline_pin_24px.svg \
+ icons/action/svg/production/ic_theaters_24px.svg \
+ icons/action/svg/production/ic_thumb_up_24px.svg \
+ icons/action/svg/production/ic_card_travel_24px.svg \
+ icons/action/svg/production/ic_alarm_off_24px.svg \
+ icons/action/svg/production/ic_history_24px.svg \
+ icons/action/svg/production/ic_done_24px.svg \
+ icons/action/svg/production/ic_picture_in_picture_24px.svg \
+ icons/action/svg/production/ic_reorder_24px.svg \
+ icons/action/svg/production/ic_flip_to_back_24px.svg \
+ icons/action/svg/production/ic_label_outline_24px.svg \
+ icons/action/svg/production/ic_motorcycle_24px.svg \
+ icons/action/svg/production/ic_turned_in_not_24px.svg \
+ icons/action/svg/production/ic_hourglass_empty_24px.svg \
+ icons/action/svg/production/ic_settings_input_component_24px.svg \
+ icons/action/svg/production/ic_settings_input_svideo_24px.svg \
+ icons/action/svg/production/ic_system_update_alt_24px.svg \
+ icons/action/svg/production/ic_info_24px.svg \
+ icons/action/svg/production/ic_pageview_24px.svg \
+ icons/action/svg/production/ic_picture_in_picture_alt_24px.svg \
+ icons/action/svg/production/ic_fingerprint_24px.svg \
+ icons/action/svg/production/ic_donut_large_24px.svg \
+ icons/action/svg/production/ic_swap_vertical_circle_24px.svg \
+ icons/action/svg/production/ic_aspect_ratio_24px.svg \
+ icons/action/svg/production/ic_3d_rotation_24px.svg \
+ icons/action/svg/production/ic_account_circle_24px.svg \
+ icons/action/svg/production/ic_change_history_24px.svg \
+ icons/action/svg/production/ic_alarm_on_24px.svg \
+ icons/action/svg/production/ic_update_24px.svg \
+ icons/action/svg/production/ic_list_24px.svg \
+ icons/action/svg/production/ic_settings_power_24px.svg \
+ icons/action/svg/production/ic_timeline_24px.svg \
+ icons/action/svg/production/ic_touch_app_24px.svg \
+ icons/action/svg/production/ic_dns_24px.svg \
+ icons/action/svg/production/ic_store_24px.svg \
+ icons/action/svg/production/ic_swap_horiz_24px.svg \
+ icons/action/svg/production/ic_settings_backup_restore_24px.svg \
+ icons/action/svg/production/ic_perm_camera_mic_24px.svg \
+ icons/action/svg/production/ic_date_range_24px.svg \
+ icons/action/svg/production/ic_pets_24px.svg \
+ icons/action/svg/production/ic_watch_later_24px.svg \
+ icons/action/svg/production/ic_find_in_page_24px.svg \
+ icons/action/svg/production/ic_assignment_turned_in_24px.svg \
+ icons/action/svg/production/ic_hourglass_full_24px.svg \
+ icons/action/svg/production/ic_loyalty_24px.svg \
+ icons/action/svg/production/ic_shopping_cart_24px.svg \
+ icons/action/svg/production/ic_zoom_in_24px.svg \
+ icons/action/svg/production/ic_perm_identity_24px.svg \
+ icons/action/svg/production/ic_bookmark_border_24px.svg \
+ icons/action/svg/production/ic_lock_outline_24px.svg \
+ icons/action/svg/production/ic_assignment_late_24px.svg \
+ icons/action/svg/production/ic_get_app_24px.svg \
+ icons/action/svg/production/ic_play_for_work_24px.svg \
+ icons/action/svg/production/ic_description_24px.svg \
+ icons/action/svg/production/ic_schedule_24px.svg \
+ icons/action/svg/production/ic_turned_in_24px.svg \
+ icons/action/svg/production/ic_note_add_24px.svg \
+ icons/action/svg/production/ic_account_balance_wallet_24px.svg \
+ icons/action/svg/production/ic_redeem_24px.svg \
+ icons/action/svg/production/ic_code_24px.svg \
+ icons/action/svg/production/ic_gavel_24px.svg \
+ icons/action/svg/production/ic_all_out_24px.svg \
+ icons/action/svg/production/ic_speaker_notes_24px.svg \
+ icons/action/svg/production/ic_perm_phone_msg_24px.svg \
+ icons/action/svg/production/ic_room_24px.svg \
+ icons/action/svg/production/ic_toll_24px.svg \
+ icons/action/svg/production/ic_thumb_down_24px.svg \
+ icons/action/svg/production/ic_pregnant_woman_24px.svg \
+ icons/action/svg/production/ic_input_24px.svg \
+ icons/action/svg/production/ic_delete_24px.svg \
+ icons/action/svg/production/ic_restore_24px.svg \
+ icons/action/svg/production/ic_book_24px.svg \
+ icons/action/svg/production/ic_verified_user_24px.svg \
+ icons/action/svg/production/ic_gif_24px.svg \
+ icons/action/svg/production/ic_feedback_24px.svg \
+ icons/action/svg/production/ic_rowing_24px.svg \
+ icons/action/svg/production/ic_view_quilt_24px.svg \
+ icons/action/svg/production/ic_group_work_24px.svg \
+ icons/action/svg/production/ic_pan_tool_24px.svg \
+ icons/action/svg/production/ic_done_all_24px.svg \
+ icons/action/svg/production/ic_shopping_basket_24px.svg \
+ icons/action/svg/production/ic_assessment_24px.svg \
+ icons/action/svg/production/ic_tab_unselected_24px.svg \
+ icons/action/svg/production/ic_autorenew_24px.svg \
+ icons/action/svg/production/ic_add_shopping_cart_24px.svg \
+ icons/action/svg/production/ic_settings_brightness_24px.svg \
+ icons/action/svg/production/ic_visibility_24px.svg \
+ icons/action/svg/production/ic_today_24px.svg \
+ icons/action/svg/production/ic_rounded_corner_24px.svg \
+ icons/action/svg/production/ic_account_box_24px.svg \
+ icons/action/svg/production/ic_tab_24px.svg \
+ icons/action/svg/production/ic_accessibility_24px.svg \
+ icons/action/svg/production/ic_view_column_24px.svg \
+ icons/action/svg/production/ic_perm_contact_calendar_24px.svg \
+ icons/image/svg/production/ic_flash_off_24px.svg \
+ icons/image/svg/production/ic_nature_24px.svg \
+ icons/image/svg/production/ic_color_lens_24px.svg \
+ icons/image/svg/production/ic_panorama_wide_angle_24px.svg \
+ icons/image/svg/production/ic_movie_filter_24px.svg \
+ icons/image/svg/production/ic_wb_auto_24px.svg \
+ icons/image/svg/production/ic_filter_center_focus_24px.svg \
+ icons/image/svg/production/ic_photo_size_select_large_24px.svg \
+ icons/image/svg/production/ic_vignette_24px.svg \
+ icons/image/svg/production/ic_nature_people_24px.svg \
+ icons/image/svg/production/ic_center_focus_weak_24px.svg \
+ icons/image/svg/production/ic_blur_off_24px.svg \
+ icons/image/svg/production/ic_grid_off_24px.svg \
+ icons/image/svg/production/ic_crop_7_5_24px.svg \
+ icons/image/svg/production/ic_tag_faces_24px.svg \
+ icons/image/svg/production/ic_switch_video_24px.svg \
+ icons/image/svg/production/ic_linked_camera_24px.svg \
+ icons/image/svg/production/ic_rotate_90_degrees_ccw_24px.svg \
+ icons/image/svg/production/ic_picture_as_pdf_24px.svg \
+ icons/image/svg/production/ic_photo_filter_24px.svg \
+ icons/image/svg/production/ic_assistant_24px.svg \
+ icons/image/svg/production/ic_gradient_24px.svg \
+ icons/image/svg/production/ic_timer_10_24px.svg \
+ icons/image/svg/production/ic_blur_circular_24px.svg \
+ icons/image/svg/production/ic_crop_16_9_24px.svg \
+ icons/image/svg/production/ic_timelapse_24px.svg \
+ icons/image/svg/production/ic_grain_24px.svg \
+ icons/image/svg/production/ic_hdr_off_24px.svg \
+ icons/image/svg/production/ic_crop_24px.svg \
+ icons/image/svg/production/ic_panorama_horizontal_24px.svg \
+ icons/image/svg/production/ic_flare_24px.svg \
+ icons/image/svg/production/ic_hdr_strong_24px.svg \
+ icons/image/svg/production/ic_palette_24px.svg \
+ icons/image/svg/production/ic_landscape_24px.svg \
+ icons/image/svg/production/ic_brightness_1_24px.svg \
+ icons/image/svg/production/ic_brightness_2_24px.svg \
+ icons/image/svg/production/ic_colorize_24px.svg \
+ icons/image/svg/production/ic_brightness_3_24px.svg \
+ icons/image/svg/production/ic_brightness_4_24px.svg \
+ icons/image/svg/production/ic_view_compact_24px.svg \
+ icons/image/svg/production/ic_wb_incandescent_24px.svg \
+ icons/image/svg/production/ic_brightness_5_24px.svg \
+ icons/image/svg/production/ic_filter_9_plus_24px.svg \
+ icons/image/svg/production/ic_panorama_vertical_24px.svg \
+ icons/image/svg/production/ic_brightness_6_24px.svg \
+ icons/image/svg/production/ic_filter_drama_24px.svg \
+ icons/image/svg/production/ic_leak_add_24px.svg \
+ icons/image/svg/production/ic_brightness_7_24px.svg \
+ icons/image/svg/production/ic_dehaze_24px.svg \
+ icons/image/svg/production/ic_looks_24px.svg \
+ icons/image/svg/production/ic_crop_5_4_24px.svg \
+ icons/image/svg/production/ic_loupe_24px.svg \
+ icons/image/svg/production/ic_lens_24px.svg \
+ icons/image/svg/production/ic_switch_camera_24px.svg \
+ icons/image/svg/production/ic_filter_24px.svg \
+ icons/image/svg/production/ic_crop_free_24px.svg \
+ icons/image/svg/production/ic_flash_auto_24px.svg \
+ icons/image/svg/production/ic_monochrome_photos_24px.svg \
+ icons/image/svg/production/ic_compare_24px.svg \
+ icons/image/svg/production/ic_photo_camera_24px.svg \
+ icons/image/svg/production/ic_assistant_photo_24px.svg \
+ icons/image/svg/production/ic_looks_3_24px.svg \
+ icons/image/svg/production/ic_looks_4_24px.svg \
+ icons/image/svg/production/ic_looks_5_24px.svg \
+ icons/image/svg/production/ic_looks_6_24px.svg \
+ icons/image/svg/production/ic_leak_remove_24px.svg \
+ icons/image/svg/production/ic_tonality_24px.svg \
+ icons/image/svg/production/ic_grid_on_24px.svg \
+ icons/image/svg/production/ic_slideshow_24px.svg \
+ icons/image/svg/production/ic_blur_linear_24px.svg \
+ icons/image/svg/production/ic_style_24px.svg \
+ icons/image/svg/production/ic_crop_portrait_24px.svg \
+ icons/image/svg/production/ic_photo_24px.svg \
+ icons/image/svg/production/ic_brush_24px.svg \
+ icons/image/svg/production/ic_broken_image_24px.svg \
+ icons/image/svg/production/ic_timer_3_24px.svg \
+ icons/image/svg/production/ic_iso_24px.svg \
+ icons/image/svg/production/ic_crop_rotate_24px.svg \
+ icons/image/svg/production/ic_add_a_photo_24px.svg \
+ icons/image/svg/production/ic_navigate_next_24px.svg \
+ icons/image/svg/production/ic_blur_on_24px.svg \
+ icons/image/svg/production/ic_timer_24px.svg \
+ icons/image/svg/production/ic_portrait_24px.svg \
+ icons/image/svg/production/ic_details_24px.svg \
+ icons/image/svg/production/ic_burst_mode_24px.svg \
+ icons/image/svg/production/ic_crop_3_2_24px.svg \
+ icons/image/svg/production/ic_view_comfy_24px.svg \
+ icons/image/svg/production/ic_camera_24px.svg \
+ icons/image/svg/production/ic_collections_24px.svg \
+ icons/image/svg/production/ic_audiotrack_24px.svg \
+ icons/image/svg/production/ic_panorama_24px.svg \
+ icons/image/svg/production/ic_looks_one_24px.svg \
+ icons/image/svg/production/ic_exposure_24px.svg \
+ icons/image/svg/production/ic_control_point_duplicate_24px.svg \
+ icons/image/svg/production/ic_filter_tilt_shift_24px.svg \
+ icons/image/svg/production/ic_camera_alt_24px.svg \
+ icons/image/svg/production/ic_navigate_before_24px.svg \
+ icons/image/svg/production/ic_hdr_weak_24px.svg \
+ icons/image/svg/production/ic_wb_sunny_24px.svg \
+ icons/image/svg/production/ic_image_24px.svg \
+ icons/image/svg/production/ic_transform_24px.svg \
+ icons/image/svg/production/ic_add_to_photos_24px.svg \
+ icons/image/svg/production/ic_flash_on_24px.svg \
+ icons/image/svg/production/ic_movie_creation_24px.svg \
+ icons/image/svg/production/ic_image_aspect_ratio_24px.svg \
+ icons/image/svg/production/ic_edit_24px.svg \
+ icons/image/svg/production/ic_texture_24px.svg \
+ icons/image/svg/production/ic_exposure_zero_24px.svg \
+ icons/image/svg/production/ic_music_note_24px.svg \
+ icons/image/svg/production/ic_rotate_left_24px.svg \
+ icons/image/svg/production/ic_photo_size_select_actual_24px.svg \
+ icons/image/svg/production/ic_filter_hdr_24px.svg \
+ icons/image/svg/production/ic_panorama_fish_eye_24px.svg \
+ icons/image/svg/production/ic_camera_front_24px.svg \
+ icons/image/svg/production/ic_hdr_on_24px.svg \
+ icons/image/svg/production/ic_camera_roll_24px.svg \
+ icons/image/svg/production/ic_crop_square_24px.svg \
+ icons/image/svg/production/ic_photo_size_select_small_24px.svg \
+ icons/image/svg/production/ic_crop_original_24px.svg \
+ icons/image/svg/production/ic_timer_off_24px.svg \
+ icons/image/svg/production/ic_collections_bookmark_24px.svg \
+ icons/image/svg/production/ic_filter_vintage_24px.svg \
+ icons/image/svg/production/ic_flip_24px.svg \
+ icons/image/svg/production/ic_filter_1_24px.svg \
+ icons/image/svg/production/ic_filter_2_24px.svg \
+ icons/image/svg/production/ic_crop_landscape_24px.svg \
+ icons/image/svg/production/ic_exposure_plus_1_24px.svg \
+ icons/image/svg/production/ic_remove_red_eye_24px.svg \
+ icons/image/svg/production/ic_filter_3_24px.svg \
+ icons/image/svg/production/ic_exposure_plus_2_24px.svg \
+ icons/image/svg/production/ic_tune_24px.svg \
+ icons/image/svg/production/ic_filter_4_24px.svg \
+ icons/image/svg/production/ic_photo_library_24px.svg \
+ icons/image/svg/production/ic_straighten_24px.svg \
+ icons/image/svg/production/ic_wb_iridescent_24px.svg \
+ icons/image/svg/production/ic_filter_5_24px.svg \
+ icons/image/svg/production/ic_filter_6_24px.svg \
+ icons/image/svg/production/ic_filter_7_24px.svg \
+ icons/image/svg/production/ic_filter_8_24px.svg \
+ icons/image/svg/production/ic_filter_9_24px.svg \
+ icons/image/svg/production/ic_camera_rear_24px.svg \
+ icons/image/svg/production/ic_filter_none_24px.svg \
+ icons/image/svg/production/ic_photo_album_24px.svg \
+ icons/image/svg/production/ic_exposure_neg_1_24px.svg \
+ icons/image/svg/production/ic_adjust_24px.svg \
+ icons/image/svg/production/ic_filter_frames_24px.svg \
+ icons/image/svg/production/ic_exposure_neg_2_24px.svg \
+ icons/image/svg/production/ic_looks_two_24px.svg \
+ icons/image/svg/production/ic_crop_din_24px.svg \
+ icons/image/svg/production/ic_filter_b_and_w_24px.svg \
+ icons/image/svg/production/ic_control_point_24px.svg \
+ icons/image/svg/production/ic_rotate_right_24px.svg \
+ icons/image/svg/production/ic_wb_cloudy_24px.svg \
+ icons/image/svg/production/ic_healing_24px.svg \
+ icons/image/svg/production/ic_center_focus_strong_24px.svg \
+ icons/maps/svg/production/ic_local_movies_24px.svg \
+ icons/maps/svg/production/ic_local_dining_24px.svg \
+ icons/maps/svg/production/ic_directions_walk_24px.svg \
+ icons/maps/svg/production/ic_train_24px.svg \
+ icons/maps/svg/production/ic_directions_transit_24px.svg \
+ icons/maps/svg/production/ic_near_me_24px.svg \
+ icons/maps/svg/production/ic_hotel_24px.svg \
+ icons/maps/svg/production/ic_local_bar_24px.svg \
+ icons/maps/svg/production/ic_store_mall_directory_24px.svg \
+ icons/maps/svg/production/ic_directions_subway_24px.svg \
+ icons/maps/svg/production/ic_local_drink_24px.svg \
+ icons/maps/svg/production/ic_local_hotel_24px.svg \
+ icons/maps/svg/production/ic_place_24px.svg \
+ icons/maps/svg/production/ic_restaurant_menu_24px.svg \
+ icons/maps/svg/production/ic_navigation_24px.svg \
+ icons/maps/svg/production/ic_traffic_24px.svg \
+ icons/maps/svg/production/ic_terrain_24px.svg \
+ icons/maps/svg/production/ic_local_printshop_24px.svg \
+ icons/maps/svg/production/ic_local_offer_24px.svg \
+ icons/maps/svg/production/ic_transfer_within_a_station_24px.svg \
+ icons/maps/svg/production/ic_local_post_office_24px.svg \
+ icons/maps/svg/production/ic_flight_24px.svg \
+ icons/maps/svg/production/ic_restaurant_24px.svg \
+ icons/maps/svg/production/ic_streetview_24px.svg \
+ icons/maps/svg/production/ic_local_florist_24px.svg \
+ icons/maps/svg/production/ic_add_location_24px.svg \
+ icons/maps/svg/production/ic_local_car_wash_24px.svg \
+ icons/maps/svg/production/ic_local_gas_station_24px.svg \
+ icons/maps/svg/production/ic_local_atm_24px.svg \
+ icons/maps/svg/production/ic_subway_24px.svg \
+ icons/maps/svg/production/ic_layers_24px.svg \
+ icons/maps/svg/production/ic_map_24px.svg \
+ icons/maps/svg/production/ic_local_pizza_24px.svg \
+ icons/maps/svg/production/ic_local_activity_24px.svg \
+ icons/maps/svg/production/ic_local_parking_24px.svg \
+ icons/maps/svg/production/ic_directions_run_24px.svg \
+ icons/maps/svg/production/ic_local_shipping_24px.svg \
+ icons/maps/svg/production/ic_directions_railway_24px.svg \
+ icons/maps/svg/production/ic_local_library_24px.svg \
+ icons/maps/svg/production/ic_local_hospital_24px.svg \
+ icons/maps/svg/production/ic_satellite_24px.svg \
+ icons/maps/svg/production/ic_local_play_24px.svg \
+ icons/maps/svg/production/ic_tram_24px.svg \
+ icons/maps/svg/production/ic_my_location_24px.svg \
+ icons/maps/svg/production/ic_local_phone_24px.svg \
+ icons/maps/svg/production/ic_local_cafe_24px.svg \
+ icons/maps/svg/production/ic_directions_bike_24px.svg \
+ icons/maps/svg/production/ic_ev_station_24px.svg \
+ icons/maps/svg/production/ic_layers_clear_24px.svg \
+ icons/maps/svg/production/ic_edit_location_24px.svg \
+ icons/maps/svg/production/ic_local_grocery_store_24px.svg \
+ icons/maps/svg/production/ic_beenhere_24px.svg \
+ icons/maps/svg/production/ic_local_airport_24px.svg \
+ icons/maps/svg/production/ic_directions_bus_24px.svg \
+ icons/maps/svg/production/ic_directions_boat_24px.svg \
+ icons/maps/svg/production/ic_person_pin_circle_24px.svg \
+ icons/maps/svg/production/ic_person_pin_24px.svg \
+ icons/maps/svg/production/ic_local_convenience_store_24px.svg \
+ icons/maps/svg/production/ic_local_mall_24px.svg \
+ icons/maps/svg/production/ic_pin_drop_24px.svg \
+ icons/maps/svg/production/ic_zoom_out_map_24px.svg \
+ icons/maps/svg/production/ic_local_laundry_service_24px.svg \
+ icons/maps/svg/production/ic_directions_car_24px.svg \
+ icons/maps/svg/production/ic_directions_24px.svg \
+ icons/maps/svg/production/ic_local_taxi_24px.svg \
+ icons/maps/svg/production/ic_rate_review_24px.svg \
+ icons/maps/svg/production/ic_local_see_24px.svg \
+ icons/maps/svg/production/ic_local_pharmacy_24px.svg \
+ icons/content/svg/production/ic_add_box_24px.svg \
+ icons/content/svg/production/ic_archive_24px.svg \
+ icons/content/svg/production/ic_add_24px.svg \
+ icons/content/svg/production/ic_unarchive_24px.svg \
+ icons/content/svg/production/ic_low_priority_24px.svg \
+ icons/content/svg/production/ic_save_24px.svg \
+ icons/content/svg/production/ic_block_24px.svg \
+ icons/content/svg/production/ic_filter_list_24px.svg \
+ icons/content/svg/production/ic_add_circle_24px.svg \
+ icons/content/svg/production/ic_reply_24px.svg \
+ icons/content/svg/production/ic_add_circle_outline_24px.svg \
+ icons/content/svg/production/ic_redo_24px.svg \
+ icons/content/svg/production/ic_move_to_inbox_24px.svg \
+ icons/content/svg/production/ic_report_24px.svg \
+ icons/content/svg/production/ic_delete_sweep_24px.svg \
+ icons/content/svg/production/ic_content_copy_24px.svg \
+ icons/content/svg/production/ic_markunread_24px.svg \
+ icons/content/svg/production/ic_weekend_24px.svg \
+ icons/content/svg/production/ic_remove_circle_outline_24px.svg \
+ icons/content/svg/production/ic_drafts_24px.svg \
+ icons/content/svg/production/ic_create_24px.svg \
+ icons/content/svg/production/ic_content_paste_24px.svg \
+ icons/content/svg/production/ic_content_cut_24px.svg \
+ icons/content/svg/production/ic_flag_24px.svg \
+ icons/content/svg/production/ic_mail_24px.svg \
+ icons/content/svg/production/ic_link_24px.svg \
+ icons/content/svg/production/ic_next_week_24px.svg \
+ icons/content/svg/production/ic_remove_24px.svg \
+ icons/content/svg/production/ic_remove_circle_24px.svg \
+ icons/content/svg/production/ic_select_all_24px.svg \
+ icons/content/svg/production/ic_font_download_24px.svg \
+ icons/content/svg/production/ic_forward_24px.svg \
+ icons/content/svg/production/ic_backspace_24px.svg \
+ icons/content/svg/production/ic_send_24px.svg \
+ icons/content/svg/production/ic_reply_all_24px.svg \
+ icons/content/svg/production/ic_text_format_24px.svg \
+ icons/content/svg/production/ic_gesture_24px.svg \
+ icons/content/svg/production/ic_sort_24px.svg \
+ icons/content/svg/production/ic_inbox_24px.svg \
+ icons/content/svg/production/ic_undo_24px.svg \
+ icons/content/svg/production/ic_clear_24px.svg \
+ icons/notification/svg/production/ic_wc_24px.svg \
+ icons/notification/svg/production/ic_do_not_disturb_24px.svg \
+ icons/notification/svg/production/ic_phone_missed_24px.svg \
+ icons/notification/svg/production/ic_phone_paused_24px.svg \
+ icons/notification/svg/production/ic_network_check_24px.svg \
+ icons/notification/svg/production/ic_power_24px.svg \
+ icons/notification/svg/production/ic_tap_and_play_24px.svg \
+ icons/notification/svg/production/ic_priority_high_24px.svg \
+ icons/notification/svg/production/ic_system_update_24px.svg \
+ icons/notification/svg/production/ic_airline_seat_legroom_normal_24px.svg \
+ icons/notification/svg/production/ic_phone_bluetooth_speaker_24px.svg \
+ icons/notification/svg/production/ic_do_not_disturb_alt_24px.svg \
+ icons/notification/svg/production/ic_wifi_24px.svg \
+ icons/notification/svg/production/ic_vibration_24px.svg \
+ icons/notification/svg/production/ic_airline_seat_legroom_extra_24px.svg \
+ icons/notification/svg/production/ic_do_not_disturb_off_24px.svg \
+ icons/notification/svg/production/ic_more_24px.svg \
+ icons/notification/svg/production/ic_sms_failed_24px.svg \
+ icons/notification/svg/production/ic_bluetooth_audio_24px.svg \
+ icons/notification/svg/production/ic_event_note_24px.svg \
+ icons/notification/svg/production/ic_sim_card_alert_24px.svg \
+ icons/notification/svg/production/ic_airline_seat_flat_24px.svg \
+ icons/notification/svg/production/ic_airline_seat_recline_normal_24px.svg \
+ icons/notification/svg/production/ic_event_busy_24px.svg \
+ icons/notification/svg/production/ic_phone_forwarded_24px.svg \
+ icons/notification/svg/production/ic_ondemand_video_24px.svg \
+ icons/notification/svg/production/ic_no_encryption_24px.svg \
+ icons/notification/svg/production/ic_sync_problem_24px.svg \
+ icons/notification/svg/production/ic_event_available_24px.svg \
+ icons/notification/svg/production/ic_airline_seat_legroom_reduced_24px.svg \
+ icons/notification/svg/production/ic_rv_hookup_24px.svg \
+ icons/notification/svg/production/ic_sync_24px.svg \
+ icons/notification/svg/production/ic_phone_in_talk_24px.svg \
+ icons/notification/svg/production/ic_folder_special_24px.svg \
+ icons/notification/svg/production/ic_disc_full_24px.svg \
+ icons/notification/svg/production/ic_network_locked_24px.svg \
+ icons/notification/svg/production/ic_sms_24px.svg \
+ icons/notification/svg/production/ic_mms_24px.svg \
+ icons/notification/svg/production/ic_adb_24px.svg \
+ icons/notification/svg/production/ic_phone_locked_24px.svg \
+ icons/notification/svg/production/ic_drive_eta_24px.svg \
+ icons/notification/svg/production/ic_vpn_lock_24px.svg \
+ icons/notification/svg/production/ic_personal_video_24px.svg \
+ icons/notification/svg/production/ic_airline_seat_recline_extra_24px.svg \
+ icons/notification/svg/production/ic_sync_disabled_24px.svg \
+ icons/notification/svg/production/ic_do_not_disturb_on_24px.svg \
+ icons/notification/svg/production/ic_live_tv_24px.svg \
+ icons/notification/svg/production/ic_confirmation_number_24px.svg \
+ icons/notification/svg/production/ic_airline_seat_flat_angled_24px.svg \
+ icons/notification/svg/production/ic_airline_seat_individual_suite_24px.svg \
+ icons/notification/svg/production/ic_enhanced_encryption_24px.svg \
+ icons/notification/svg/production/ic_sd_card_24px.svg \
+ icons/notification/svg/production/ic_voice_chat_24px.svg \
+ icons/notification/svg/production/ic_time_to_leave_24px.svg \
+ icons/hardware/svg/production/ic_sim_card_24px.svg \
+ icons/hardware/svg/production/ic_keyboard_arrow_up_24px.svg \
+ icons/hardware/svg/production/ic_watch_24px.svg \
+ icons/hardware/svg/production/ic_laptop_24px.svg \
+ icons/hardware/svg/production/ic_keyboard_arrow_down_24px.svg \
+ icons/hardware/svg/production/ic_memory_24px.svg \
+ icons/hardware/svg/production/ic_speaker_group_24px.svg \
+ icons/hardware/svg/production/ic_gamepad_24px.svg \
+ icons/hardware/svg/production/ic_tv_24px.svg \
+ icons/hardware/svg/production/ic_phone_android_24px.svg \
+ icons/hardware/svg/production/ic_laptop_mac_24px.svg \
+ icons/hardware/svg/production/ic_tablet_mac_24px.svg \
+ icons/hardware/svg/production/ic_power_input_24px.svg \
+ icons/hardware/svg/production/ic_laptop_windows_24px.svg \
+ icons/hardware/svg/production/ic_phonelink_off_24px.svg \
+ icons/hardware/svg/production/ic_keyboard_return_24px.svg \
+ icons/hardware/svg/production/ic_keyboard_tab_24px.svg \
+ icons/hardware/svg/production/ic_smartphone_24px.svg \
+ icons/hardware/svg/production/ic_devices_other_24px.svg \
+ icons/hardware/svg/production/ic_keyboard_voice_24px.svg \
+ icons/hardware/svg/production/ic_computer_24px.svg \
+ icons/hardware/svg/production/ic_videogame_asset_24px.svg \
+ icons/hardware/svg/production/ic_developer_board_24px.svg \
+ icons/hardware/svg/production/ic_cast_24px.svg \
+ icons/hardware/svg/production/ic_toys_24px.svg \
+ icons/hardware/svg/production/ic_desktop_mac_24px.svg \
+ icons/hardware/svg/production/ic_keyboard_arrow_left_24px.svg \
+ icons/hardware/svg/production/ic_tablet_24px.svg \
+ icons/hardware/svg/production/ic_keyboard_backspace_24px.svg \
+ icons/hardware/svg/production/ic_tablet_android_24px.svg \
+ icons/hardware/svg/production/ic_keyboard_arrow_right_24px.svg \
+ icons/hardware/svg/production/ic_speaker_24px.svg \
+ icons/hardware/svg/production/ic_scanner_24px.svg \
+ icons/hardware/svg/production/ic_keyboard_hide_24px.svg \
+ icons/hardware/svg/production/ic_phone_iphone_24px.svg \
+ icons/hardware/svg/production/ic_headset_mic_24px.svg \
+ icons/hardware/svg/production/ic_security_24px.svg \
+ icons/hardware/svg/production/ic_headset_24px.svg \
+ icons/hardware/svg/production/ic_cast_connected_24px.svg \
+ icons/hardware/svg/production/ic_dock_24px.svg \
+ icons/hardware/svg/production/ic_keyboard_24px.svg \
+ icons/hardware/svg/production/ic_phonelink_24px.svg \
+ icons/hardware/svg/production/ic_router_24px.svg \
+ icons/hardware/svg/production/ic_laptop_chromebook_24px.svg \
+ icons/hardware/svg/production/ic_device_hub_24px.svg \
+ icons/hardware/svg/production/ic_mouse_24px.svg \
+ icons/hardware/svg/production/ic_desktop_windows_24px.svg \
+ icons/hardware/svg/production/ic_keyboard_capslock_24px.svg
+ /usr/lib/qt5/bin/rcc -name resources resources.qrc -o qrc_resources.cpp
+
+compiler_moc_predefs_make_all: moc_predefs.h
+compiler_moc_predefs_clean:
+ -$(DEL_FILE) moc_predefs.h
+moc_predefs.h: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/data/dummy.cpp
+ g++ -pipe -O2 -fPIC -Wall -W -dM -E -o moc_predefs.h /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/data/dummy.cpp
+
+compiler_moc_header_make_all: moc_qtmaterialavatar.cpp moc_qtmaterialstyle.cpp moc_qtmaterialtheme.cpp moc_qtmaterialbadge.cpp moc_qtmaterialoverlaywidget.cpp moc_qtmaterialcheckbox.cpp moc_qtmaterialcheckable_internal.cpp moc_qtmaterialripple.cpp moc_qtmaterialrippleoverlay.cpp moc_qtmaterialcheckable.cpp moc_qtmaterialfab.cpp moc_qtmaterialraisedbutton.cpp moc_qtmaterialflatbutton_internal.cpp moc_qtmaterialflatbutton.cpp moc_qtmaterialstatetransition.cpp moc_qtmaterialiconbutton.cpp moc_qtmaterialprogress_internal.cpp moc_qtmaterialprogress.cpp moc_qtmaterialcircularprogress_internal.cpp moc_qtmaterialcircularprogress.cpp moc_qtmaterialslider_internal.cpp moc_qtmaterialslider.cpp moc_qtmaterialsnackbar_internal.cpp moc_qtmaterialsnackbar.cpp moc_qtmaterialradiobutton.cpp moc_qtmaterialtoggle_internal.cpp moc_qtmaterialtoggle.cpp moc_qtmaterialtextfield_internal.cpp moc_qtmaterialtextfield.cpp moc_qtmaterialtabs_internal.cpp moc_qtmaterialtabs.cpp moc_qtmaterialscrollbar_internal.cpp moc_qtmaterialscrollbar.cpp moc_qtmaterialdialog_internal.cpp moc_qtmaterialdialog.cpp moc_qtmaterialdrawer_internal.cpp moc_qtmaterialdrawer.cpp moc_qtmaterialappbar.cpp moc_qtmaterialautocomplete.cpp moc_qtmaterialautocomplete_internal.cpp moc_qtmaterialmenu.cpp
+compiler_moc_header_clean:
+ -$(DEL_FILE) moc_qtmaterialavatar.cpp moc_qtmaterialstyle.cpp moc_qtmaterialtheme.cpp moc_qtmaterialbadge.cpp moc_qtmaterialoverlaywidget.cpp moc_qtmaterialcheckbox.cpp moc_qtmaterialcheckable_internal.cpp moc_qtmaterialripple.cpp moc_qtmaterialrippleoverlay.cpp moc_qtmaterialcheckable.cpp moc_qtmaterialfab.cpp moc_qtmaterialraisedbutton.cpp moc_qtmaterialflatbutton_internal.cpp moc_qtmaterialflatbutton.cpp moc_qtmaterialstatetransition.cpp moc_qtmaterialiconbutton.cpp moc_qtmaterialprogress_internal.cpp moc_qtmaterialprogress.cpp moc_qtmaterialcircularprogress_internal.cpp moc_qtmaterialcircularprogress.cpp moc_qtmaterialslider_internal.cpp moc_qtmaterialslider.cpp moc_qtmaterialsnackbar_internal.cpp moc_qtmaterialsnackbar.cpp moc_qtmaterialradiobutton.cpp moc_qtmaterialtoggle_internal.cpp moc_qtmaterialtoggle.cpp moc_qtmaterialtextfield_internal.cpp moc_qtmaterialtextfield.cpp moc_qtmaterialtabs_internal.cpp moc_qtmaterialtabs.cpp moc_qtmaterialscrollbar_internal.cpp moc_qtmaterialscrollbar.cpp moc_qtmaterialdialog_internal.cpp moc_qtmaterialdialog.cpp moc_qtmaterialdrawer_internal.cpp moc_qtmaterialdrawer.cpp moc_qtmaterialappbar.cpp moc_qtmaterialautocomplete.cpp moc_qtmaterialautocomplete_internal.cpp moc_qtmaterialmenu.cpp
+moc_qtmaterialavatar.cpp: lib/qtmaterialtheme.h \
+ qtmaterialavatar.h \
+ moc_predefs.h \
+ /usr/lib/qt5/bin/moc
+ /usr/lib/qt5/bin/moc $(DEFINES) --include ./moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/chronosx/Documents/Development/qt-material-widgets/components -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/7 -I/usr/include/x86_64-linux-gnu/c++/7 -I/usr/include/c++/7/backward -I/usr/lib/gcc/x86_64-linux-gnu/7/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include qtmaterialavatar.h -o moc_qtmaterialavatar.cpp
+
+moc_qtmaterialstyle.cpp: lib/qtmaterialstyle_p.h \
+ lib/qtmaterialstyle.h \
+ moc_predefs.h \
+ /usr/lib/qt5/bin/moc
+ /usr/lib/qt5/bin/moc $(DEFINES) --include ./moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/chronosx/Documents/Development/qt-material-widgets/components -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/7 -I/usr/include/x86_64-linux-gnu/c++/7 -I/usr/include/c++/7/backward -I/usr/lib/gcc/x86_64-linux-gnu/7/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include lib/qtmaterialstyle.h -o moc_qtmaterialstyle.cpp
+
+moc_qtmaterialtheme.cpp: lib/qtmaterialtheme.h \
+ moc_predefs.h \
+ /usr/lib/qt5/bin/moc
+ /usr/lib/qt5/bin/moc $(DEFINES) --include ./moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/chronosx/Documents/Development/qt-material-widgets/components -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/7 -I/usr/include/x86_64-linux-gnu/c++/7 -I/usr/include/c++/7/backward -I/usr/lib/gcc/x86_64-linux-gnu/7/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include lib/qtmaterialtheme.h -o moc_qtmaterialtheme.cpp
+
+moc_qtmaterialbadge.cpp: lib/qtmaterialoverlaywidget.h \
+ qtmaterialbadge.h \
+ moc_predefs.h \
+ /usr/lib/qt5/bin/moc
+ /usr/lib/qt5/bin/moc $(DEFINES) --include ./moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/chronosx/Documents/Development/qt-material-widgets/components -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/7 -I/usr/include/x86_64-linux-gnu/c++/7 -I/usr/include/c++/7/backward -I/usr/lib/gcc/x86_64-linux-gnu/7/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include qtmaterialbadge.h -o moc_qtmaterialbadge.cpp
+
+moc_qtmaterialoverlaywidget.cpp: lib/qtmaterialoverlaywidget.h \
+ moc_predefs.h \
+ /usr/lib/qt5/bin/moc
+ /usr/lib/qt5/bin/moc $(DEFINES) --include ./moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/chronosx/Documents/Development/qt-material-widgets/components -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/7 -I/usr/include/x86_64-linux-gnu/c++/7 -I/usr/include/c++/7/backward -I/usr/lib/gcc/x86_64-linux-gnu/7/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include lib/qtmaterialoverlaywidget.h -o moc_qtmaterialoverlaywidget.cpp
+
+moc_qtmaterialcheckbox.cpp: lib/qtmaterialcheckable.h \
+ qtmaterialcheckbox.h \
+ moc_predefs.h \
+ /usr/lib/qt5/bin/moc
+ /usr/lib/qt5/bin/moc $(DEFINES) --include ./moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/chronosx/Documents/Development/qt-material-widgets/components -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/7 -I/usr/include/x86_64-linux-gnu/c++/7 -I/usr/include/c++/7/backward -I/usr/lib/gcc/x86_64-linux-gnu/7/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include qtmaterialcheckbox.h -o moc_qtmaterialcheckbox.cpp
+
+moc_qtmaterialcheckable_internal.cpp: lib/qtmaterialcheckable_internal.h \
+ moc_predefs.h \
+ /usr/lib/qt5/bin/moc
+ /usr/lib/qt5/bin/moc $(DEFINES) --include ./moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/chronosx/Documents/Development/qt-material-widgets/components -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/7 -I/usr/include/x86_64-linux-gnu/c++/7 -I/usr/include/c++/7/backward -I/usr/lib/gcc/x86_64-linux-gnu/7/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include lib/qtmaterialcheckable_internal.h -o moc_qtmaterialcheckable_internal.cpp
+
+moc_qtmaterialripple.cpp: lib/qtmaterialripple.h \
+ moc_predefs.h \
+ /usr/lib/qt5/bin/moc
+ /usr/lib/qt5/bin/moc $(DEFINES) --include ./moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/chronosx/Documents/Development/qt-material-widgets/components -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/7 -I/usr/include/x86_64-linux-gnu/c++/7 -I/usr/include/c++/7/backward -I/usr/lib/gcc/x86_64-linux-gnu/7/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include lib/qtmaterialripple.h -o moc_qtmaterialripple.cpp
+
+moc_qtmaterialrippleoverlay.cpp: lib/qtmaterialoverlaywidget.h \
+ lib/qtmaterialrippleoverlay.h \
+ moc_predefs.h \
+ /usr/lib/qt5/bin/moc
+ /usr/lib/qt5/bin/moc $(DEFINES) --include ./moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/chronosx/Documents/Development/qt-material-widgets/components -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/7 -I/usr/include/x86_64-linux-gnu/c++/7 -I/usr/include/c++/7/backward -I/usr/lib/gcc/x86_64-linux-gnu/7/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include lib/qtmaterialrippleoverlay.h -o moc_qtmaterialrippleoverlay.cpp
+
+moc_qtmaterialcheckable.cpp: lib/qtmaterialcheckable.h \
+ moc_predefs.h \
+ /usr/lib/qt5/bin/moc
+ /usr/lib/qt5/bin/moc $(DEFINES) --include ./moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/chronosx/Documents/Development/qt-material-widgets/components -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/7 -I/usr/include/x86_64-linux-gnu/c++/7 -I/usr/include/c++/7/backward -I/usr/lib/gcc/x86_64-linux-gnu/7/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include lib/qtmaterialcheckable.h -o moc_qtmaterialcheckable.cpp
+
+moc_qtmaterialfab.cpp: qtmaterialraisedbutton.h \
+ qtmaterialflatbutton.h \
+ lib/qtmaterialtheme.h \
+ qtmaterialfab.h \
+ moc_predefs.h \
+ /usr/lib/qt5/bin/moc
+ /usr/lib/qt5/bin/moc $(DEFINES) --include ./moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/chronosx/Documents/Development/qt-material-widgets/components -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/7 -I/usr/include/x86_64-linux-gnu/c++/7 -I/usr/include/c++/7/backward -I/usr/lib/gcc/x86_64-linux-gnu/7/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include qtmaterialfab.h -o moc_qtmaterialfab.cpp
+
+moc_qtmaterialraisedbutton.cpp: qtmaterialflatbutton.h \
+ lib/qtmaterialtheme.h \
+ qtmaterialraisedbutton.h \
+ moc_predefs.h \
+ /usr/lib/qt5/bin/moc
+ /usr/lib/qt5/bin/moc $(DEFINES) --include ./moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/chronosx/Documents/Development/qt-material-widgets/components -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/7 -I/usr/include/x86_64-linux-gnu/c++/7 -I/usr/include/c++/7/backward -I/usr/lib/gcc/x86_64-linux-gnu/7/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include qtmaterialraisedbutton.h -o moc_qtmaterialraisedbutton.cpp
+
+moc_qtmaterialflatbutton_internal.cpp: qtmaterialflatbutton_internal.h \
+ moc_predefs.h \
+ /usr/lib/qt5/bin/moc
+ /usr/lib/qt5/bin/moc $(DEFINES) --include ./moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/chronosx/Documents/Development/qt-material-widgets/components -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/7 -I/usr/include/x86_64-linux-gnu/c++/7 -I/usr/include/c++/7/backward -I/usr/lib/gcc/x86_64-linux-gnu/7/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include qtmaterialflatbutton_internal.h -o moc_qtmaterialflatbutton_internal.cpp
+
+moc_qtmaterialflatbutton.cpp: lib/qtmaterialtheme.h \
+ qtmaterialflatbutton.h \
+ moc_predefs.h \
+ /usr/lib/qt5/bin/moc
+ /usr/lib/qt5/bin/moc $(DEFINES) --include ./moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/chronosx/Documents/Development/qt-material-widgets/components -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/7 -I/usr/include/x86_64-linux-gnu/c++/7 -I/usr/include/c++/7/backward -I/usr/lib/gcc/x86_64-linux-gnu/7/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include qtmaterialflatbutton.h -o moc_qtmaterialflatbutton.cpp
+
+moc_qtmaterialstatetransition.cpp: lib/qtmaterialstatetransitionevent.h \
+ lib/qtmaterialstatetransition.h \
+ moc_predefs.h \
+ /usr/lib/qt5/bin/moc
+ /usr/lib/qt5/bin/moc $(DEFINES) --include ./moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/chronosx/Documents/Development/qt-material-widgets/components -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/7 -I/usr/include/x86_64-linux-gnu/c++/7 -I/usr/include/c++/7/backward -I/usr/lib/gcc/x86_64-linux-gnu/7/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include lib/qtmaterialstatetransition.h -o moc_qtmaterialstatetransition.cpp
+
+moc_qtmaterialiconbutton.cpp: qtmaterialiconbutton.h \
+ moc_predefs.h \
+ /usr/lib/qt5/bin/moc
+ /usr/lib/qt5/bin/moc $(DEFINES) --include ./moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/chronosx/Documents/Development/qt-material-widgets/components -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/7 -I/usr/include/x86_64-linux-gnu/c++/7 -I/usr/include/c++/7/backward -I/usr/lib/gcc/x86_64-linux-gnu/7/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include qtmaterialiconbutton.h -o moc_qtmaterialiconbutton.cpp
+
+moc_qtmaterialprogress_internal.cpp: qtmaterialprogress.h \
+ lib/qtmaterialtheme.h \
+ qtmaterialprogress_internal.h \
+ moc_predefs.h \
+ /usr/lib/qt5/bin/moc
+ /usr/lib/qt5/bin/moc $(DEFINES) --include ./moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/chronosx/Documents/Development/qt-material-widgets/components -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/7 -I/usr/include/x86_64-linux-gnu/c++/7 -I/usr/include/c++/7/backward -I/usr/lib/gcc/x86_64-linux-gnu/7/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include qtmaterialprogress_internal.h -o moc_qtmaterialprogress_internal.cpp
+
+moc_qtmaterialprogress.cpp: lib/qtmaterialtheme.h \
+ qtmaterialprogress.h \
+ moc_predefs.h \
+ /usr/lib/qt5/bin/moc
+ /usr/lib/qt5/bin/moc $(DEFINES) --include ./moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/chronosx/Documents/Development/qt-material-widgets/components -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/7 -I/usr/include/x86_64-linux-gnu/c++/7 -I/usr/include/c++/7/backward -I/usr/lib/gcc/x86_64-linux-gnu/7/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include qtmaterialprogress.h -o moc_qtmaterialprogress.cpp
+
+moc_qtmaterialcircularprogress_internal.cpp: qtmaterialcircularprogress.h \
+ lib/qtmaterialtheme.h \
+ qtmaterialcircularprogress_internal.h \
+ moc_predefs.h \
+ /usr/lib/qt5/bin/moc
+ /usr/lib/qt5/bin/moc $(DEFINES) --include ./moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/chronosx/Documents/Development/qt-material-widgets/components -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/7 -I/usr/include/x86_64-linux-gnu/c++/7 -I/usr/include/c++/7/backward -I/usr/lib/gcc/x86_64-linux-gnu/7/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include qtmaterialcircularprogress_internal.h -o moc_qtmaterialcircularprogress_internal.cpp
+
+moc_qtmaterialcircularprogress.cpp: lib/qtmaterialtheme.h \
+ qtmaterialcircularprogress.h \
+ moc_predefs.h \
+ /usr/lib/qt5/bin/moc
+ /usr/lib/qt5/bin/moc $(DEFINES) --include ./moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/chronosx/Documents/Development/qt-material-widgets/components -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/7 -I/usr/include/x86_64-linux-gnu/c++/7 -I/usr/include/c++/7/backward -I/usr/lib/gcc/x86_64-linux-gnu/7/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include qtmaterialcircularprogress.h -o moc_qtmaterialcircularprogress.cpp
+
+moc_qtmaterialslider_internal.cpp: lib/qtmaterialoverlaywidget.h \
+ qtmaterialslider_internal.h \
+ moc_predefs.h \
+ /usr/lib/qt5/bin/moc
+ /usr/lib/qt5/bin/moc $(DEFINES) --include ./moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/chronosx/Documents/Development/qt-material-widgets/components -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/7 -I/usr/include/x86_64-linux-gnu/c++/7 -I/usr/include/c++/7/backward -I/usr/lib/gcc/x86_64-linux-gnu/7/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include qtmaterialslider_internal.h -o moc_qtmaterialslider_internal.cpp
+
+moc_qtmaterialslider.cpp: qtmaterialslider.h \
+ moc_predefs.h \
+ /usr/lib/qt5/bin/moc
+ /usr/lib/qt5/bin/moc $(DEFINES) --include ./moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/chronosx/Documents/Development/qt-material-widgets/components -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/7 -I/usr/include/x86_64-linux-gnu/c++/7 -I/usr/include/c++/7/backward -I/usr/lib/gcc/x86_64-linux-gnu/7/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include qtmaterialslider.h -o moc_qtmaterialslider.cpp
+
+moc_qtmaterialsnackbar_internal.cpp: qtmaterialsnackbar_internal.h \
+ moc_predefs.h \
+ /usr/lib/qt5/bin/moc
+ /usr/lib/qt5/bin/moc $(DEFINES) --include ./moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/chronosx/Documents/Development/qt-material-widgets/components -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/7 -I/usr/include/x86_64-linux-gnu/c++/7 -I/usr/include/c++/7/backward -I/usr/lib/gcc/x86_64-linux-gnu/7/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include qtmaterialsnackbar_internal.h -o moc_qtmaterialsnackbar_internal.cpp
+
+moc_qtmaterialsnackbar.cpp: lib/qtmaterialoverlaywidget.h \
+ qtmaterialsnackbar.h \
+ moc_predefs.h \
+ /usr/lib/qt5/bin/moc
+ /usr/lib/qt5/bin/moc $(DEFINES) --include ./moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/chronosx/Documents/Development/qt-material-widgets/components -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/7 -I/usr/include/x86_64-linux-gnu/c++/7 -I/usr/include/c++/7/backward -I/usr/lib/gcc/x86_64-linux-gnu/7/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include qtmaterialsnackbar.h -o moc_qtmaterialsnackbar.cpp
+
+moc_qtmaterialradiobutton.cpp: lib/qtmaterialcheckable.h \
+ qtmaterialradiobutton.h \
+ moc_predefs.h \
+ /usr/lib/qt5/bin/moc
+ /usr/lib/qt5/bin/moc $(DEFINES) --include ./moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/chronosx/Documents/Development/qt-material-widgets/components -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/7 -I/usr/include/x86_64-linux-gnu/c++/7 -I/usr/include/c++/7/backward -I/usr/lib/gcc/x86_64-linux-gnu/7/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include qtmaterialradiobutton.h -o moc_qtmaterialradiobutton.cpp
+
+moc_qtmaterialtoggle_internal.cpp: lib/qtmaterialrippleoverlay.h \
+ lib/qtmaterialoverlaywidget.h \
+ qtmaterialtoggle_internal.h \
+ moc_predefs.h \
+ /usr/lib/qt5/bin/moc
+ /usr/lib/qt5/bin/moc $(DEFINES) --include ./moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/chronosx/Documents/Development/qt-material-widgets/components -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/7 -I/usr/include/x86_64-linux-gnu/c++/7 -I/usr/include/c++/7/backward -I/usr/lib/gcc/x86_64-linux-gnu/7/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include qtmaterialtoggle_internal.h -o moc_qtmaterialtoggle_internal.cpp
+
+moc_qtmaterialtoggle.cpp: qtmaterialtoggle.h \
+ moc_predefs.h \
+ /usr/lib/qt5/bin/moc
+ /usr/lib/qt5/bin/moc $(DEFINES) --include ./moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/chronosx/Documents/Development/qt-material-widgets/components -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/7 -I/usr/include/x86_64-linux-gnu/c++/7 -I/usr/include/c++/7/backward -I/usr/lib/gcc/x86_64-linux-gnu/7/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include qtmaterialtoggle.h -o moc_qtmaterialtoggle.cpp
+
+moc_qtmaterialtextfield_internal.cpp: qtmaterialtextfield.h \
+ qtmaterialtextfield_internal.h \
+ moc_predefs.h \
+ /usr/lib/qt5/bin/moc
+ /usr/lib/qt5/bin/moc $(DEFINES) --include ./moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/chronosx/Documents/Development/qt-material-widgets/components -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/7 -I/usr/include/x86_64-linux-gnu/c++/7 -I/usr/include/c++/7/backward -I/usr/lib/gcc/x86_64-linux-gnu/7/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include qtmaterialtextfield_internal.h -o moc_qtmaterialtextfield_internal.cpp
+
+moc_qtmaterialtextfield.cpp: qtmaterialtextfield.h \
+ moc_predefs.h \
+ /usr/lib/qt5/bin/moc
+ /usr/lib/qt5/bin/moc $(DEFINES) --include ./moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/chronosx/Documents/Development/qt-material-widgets/components -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/7 -I/usr/include/x86_64-linux-gnu/c++/7 -I/usr/include/c++/7/backward -I/usr/lib/gcc/x86_64-linux-gnu/7/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include qtmaterialtextfield.h -o moc_qtmaterialtextfield.cpp
+
+moc_qtmaterialtabs_internal.cpp: lib/qtmaterialoverlaywidget.h \
+ qtmaterialflatbutton.h \
+ lib/qtmaterialtheme.h \
+ qtmaterialtabs_internal.h \
+ moc_predefs.h \
+ /usr/lib/qt5/bin/moc
+ /usr/lib/qt5/bin/moc $(DEFINES) --include ./moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/chronosx/Documents/Development/qt-material-widgets/components -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/7 -I/usr/include/x86_64-linux-gnu/c++/7 -I/usr/include/c++/7/backward -I/usr/lib/gcc/x86_64-linux-gnu/7/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include qtmaterialtabs_internal.h -o moc_qtmaterialtabs_internal.cpp
+
+moc_qtmaterialtabs.cpp: lib/qtmaterialtheme.h \
+ qtmaterialtabs.h \
+ moc_predefs.h \
+ /usr/lib/qt5/bin/moc
+ /usr/lib/qt5/bin/moc $(DEFINES) --include ./moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/chronosx/Documents/Development/qt-material-widgets/components -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/7 -I/usr/include/x86_64-linux-gnu/c++/7 -I/usr/include/c++/7/backward -I/usr/lib/gcc/x86_64-linux-gnu/7/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include qtmaterialtabs.h -o moc_qtmaterialtabs.cpp
+
+moc_qtmaterialscrollbar_internal.cpp: qtmaterialscrollbar.h \
+ qtmaterialscrollbar_internal.h \
+ moc_predefs.h \
+ /usr/lib/qt5/bin/moc
+ /usr/lib/qt5/bin/moc $(DEFINES) --include ./moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/chronosx/Documents/Development/qt-material-widgets/components -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/7 -I/usr/include/x86_64-linux-gnu/c++/7 -I/usr/include/c++/7/backward -I/usr/lib/gcc/x86_64-linux-gnu/7/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include qtmaterialscrollbar_internal.h -o moc_qtmaterialscrollbar_internal.cpp
+
+moc_qtmaterialscrollbar.cpp: qtmaterialscrollbar.h \
+ moc_predefs.h \
+ /usr/lib/qt5/bin/moc
+ /usr/lib/qt5/bin/moc $(DEFINES) --include ./moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/chronosx/Documents/Development/qt-material-widgets/components -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/7 -I/usr/include/x86_64-linux-gnu/c++/7 -I/usr/include/c++/7/backward -I/usr/lib/gcc/x86_64-linux-gnu/7/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include qtmaterialscrollbar.h -o moc_qtmaterialscrollbar.cpp
+
+moc_qtmaterialdialog_internal.cpp: qtmaterialdialog_internal.h \
+ moc_predefs.h \
+ /usr/lib/qt5/bin/moc
+ /usr/lib/qt5/bin/moc $(DEFINES) --include ./moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/chronosx/Documents/Development/qt-material-widgets/components -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/7 -I/usr/include/x86_64-linux-gnu/c++/7 -I/usr/include/c++/7/backward -I/usr/lib/gcc/x86_64-linux-gnu/7/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include qtmaterialdialog_internal.h -o moc_qtmaterialdialog_internal.cpp
+
+moc_qtmaterialdialog.cpp: lib/qtmaterialoverlaywidget.h \
+ qtmaterialdialog.h \
+ moc_predefs.h \
+ /usr/lib/qt5/bin/moc
+ /usr/lib/qt5/bin/moc $(DEFINES) --include ./moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/chronosx/Documents/Development/qt-material-widgets/components -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/7 -I/usr/include/x86_64-linux-gnu/c++/7 -I/usr/include/c++/7/backward -I/usr/lib/gcc/x86_64-linux-gnu/7/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include qtmaterialdialog.h -o moc_qtmaterialdialog.cpp
+
+moc_qtmaterialdrawer_internal.cpp: lib/qtmaterialoverlaywidget.h \
+ qtmaterialdrawer_internal.h \
+ moc_predefs.h \
+ /usr/lib/qt5/bin/moc
+ /usr/lib/qt5/bin/moc $(DEFINES) --include ./moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/chronosx/Documents/Development/qt-material-widgets/components -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/7 -I/usr/include/x86_64-linux-gnu/c++/7 -I/usr/include/c++/7/backward -I/usr/lib/gcc/x86_64-linux-gnu/7/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include qtmaterialdrawer_internal.h -o moc_qtmaterialdrawer_internal.cpp
+
+moc_qtmaterialdrawer.cpp: lib/qtmaterialoverlaywidget.h \
+ qtmaterialdrawer.h \
+ moc_predefs.h \
+ /usr/lib/qt5/bin/moc
+ /usr/lib/qt5/bin/moc $(DEFINES) --include ./moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/chronosx/Documents/Development/qt-material-widgets/components -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/7 -I/usr/include/x86_64-linux-gnu/c++/7 -I/usr/include/c++/7/backward -I/usr/lib/gcc/x86_64-linux-gnu/7/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include qtmaterialdrawer.h -o moc_qtmaterialdrawer.cpp
+
+moc_qtmaterialappbar.cpp: qtmaterialappbar.h \
+ moc_predefs.h \
+ /usr/lib/qt5/bin/moc
+ /usr/lib/qt5/bin/moc $(DEFINES) --include ./moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/chronosx/Documents/Development/qt-material-widgets/components -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/7 -I/usr/include/x86_64-linux-gnu/c++/7 -I/usr/include/c++/7/backward -I/usr/lib/gcc/x86_64-linux-gnu/7/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include qtmaterialappbar.h -o moc_qtmaterialappbar.cpp
+
+moc_qtmaterialautocomplete.cpp: qtmaterialtextfield.h \
+ qtmaterialautocomplete.h \
+ moc_predefs.h \
+ /usr/lib/qt5/bin/moc
+ /usr/lib/qt5/bin/moc $(DEFINES) --include ./moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/chronosx/Documents/Development/qt-material-widgets/components -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/7 -I/usr/include/x86_64-linux-gnu/c++/7 -I/usr/include/c++/7/backward -I/usr/lib/gcc/x86_64-linux-gnu/7/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include qtmaterialautocomplete.h -o moc_qtmaterialautocomplete.cpp
+
+moc_qtmaterialautocomplete_internal.cpp: qtmaterialautocomplete.h \
+ qtmaterialtextfield.h \
+ qtmaterialautocomplete_internal.h \
+ moc_predefs.h \
+ /usr/lib/qt5/bin/moc
+ /usr/lib/qt5/bin/moc $(DEFINES) --include ./moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/chronosx/Documents/Development/qt-material-widgets/components -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/7 -I/usr/include/x86_64-linux-gnu/c++/7 -I/usr/include/c++/7/backward -I/usr/lib/gcc/x86_64-linux-gnu/7/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include qtmaterialautocomplete_internal.h -o moc_qtmaterialautocomplete_internal.cpp
+
+moc_qtmaterialmenu.cpp: qtmaterialmenu.h \
+ moc_predefs.h \
+ /usr/lib/qt5/bin/moc
+ /usr/lib/qt5/bin/moc $(DEFINES) --include ./moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/chronosx/Documents/Development/qt-material-widgets/components -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/7 -I/usr/include/x86_64-linux-gnu/c++/7 -I/usr/include/c++/7/backward -I/usr/lib/gcc/x86_64-linux-gnu/7/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include qtmaterialmenu.h -o moc_qtmaterialmenu.cpp
+
+compiler_moc_source_make_all:
+compiler_moc_source_clean:
+compiler_yacc_decl_make_all:
+compiler_yacc_decl_clean:
+compiler_yacc_impl_make_all:
+compiler_yacc_impl_clean:
+compiler_lex_make_all:
+compiler_lex_clean:
+compiler_clean: compiler_rcc_clean compiler_moc_predefs_clean compiler_moc_header_clean
+
+####### Compile
+
+qtmaterialavatar.o: qtmaterialavatar.cpp qtmaterialavatar.h \
+ lib/qtmaterialtheme.h \
+ qtmaterialavatar_p.h \
+ lib/qtmaterialstyle.h \
+ lib/qtmaterialstyle_p.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o qtmaterialavatar.o qtmaterialavatar.cpp
+
+qtmaterialstyle.o: lib/qtmaterialstyle.cpp lib/qtmaterialstyle.h \
+ lib/qtmaterialstyle_p.h \
+ lib/qtmaterialtheme.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o qtmaterialstyle.o lib/qtmaterialstyle.cpp
+
+qtmaterialtheme.o: lib/qtmaterialtheme.cpp lib/qtmaterialtheme.h \
+ lib/qtmaterialtheme_p.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o qtmaterialtheme.o lib/qtmaterialtheme.cpp
+
+qtmaterialbadge.o: qtmaterialbadge.cpp qtmaterialbadge.h \
+ lib/qtmaterialoverlaywidget.h \
+ qtmaterialbadge_p.h \
+ lib/qtmaterialstyle.h \
+ lib/qtmaterialstyle_p.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o qtmaterialbadge.o qtmaterialbadge.cpp
+
+qtmaterialoverlaywidget.o: lib/qtmaterialoverlaywidget.cpp lib/qtmaterialoverlaywidget.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o qtmaterialoverlaywidget.o lib/qtmaterialoverlaywidget.cpp
+
+qtmaterialcheckbox.o: qtmaterialcheckbox.cpp qtmaterialcheckbox.h \
+ lib/qtmaterialcheckable.h \
+ qtmaterialcheckbox_p.h \
+ lib/qtmaterialcheckable_p.h \
+ lib/qtmaterialcheckable_internal.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o qtmaterialcheckbox.o qtmaterialcheckbox.cpp
+
+qtmaterialcheckable_internal.o: lib/qtmaterialcheckable_internal.cpp lib/qtmaterialcheckable_internal.h \
+ lib/qtmaterialcheckable.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o qtmaterialcheckable_internal.o lib/qtmaterialcheckable_internal.cpp
+
+qtmaterialcheckable.o: lib/qtmaterialcheckable.cpp lib/qtmaterialcheckable.h \
+ lib/qtmaterialcheckable_p.h \
+ lib/qtmaterialrippleoverlay.h \
+ lib/qtmaterialoverlaywidget.h \
+ lib/qtmaterialripple.h \
+ lib/qtmaterialstyle.h \
+ lib/qtmaterialstyle_p.h \
+ lib/qtmaterialcheckable_internal.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o qtmaterialcheckable.o lib/qtmaterialcheckable.cpp
+
+qtmaterialripple.o: lib/qtmaterialripple.cpp lib/qtmaterialripple.h \
+ lib/qtmaterialrippleoverlay.h \
+ lib/qtmaterialoverlaywidget.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o qtmaterialripple.o lib/qtmaterialripple.cpp
+
+qtmaterialrippleoverlay.o: lib/qtmaterialrippleoverlay.cpp lib/qtmaterialrippleoverlay.h \
+ lib/qtmaterialoverlaywidget.h \
+ lib/qtmaterialripple.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o qtmaterialrippleoverlay.o lib/qtmaterialrippleoverlay.cpp
+
+qtmaterialfab.o: qtmaterialfab.cpp qtmaterialfab.h \
+ qtmaterialraisedbutton.h \
+ qtmaterialflatbutton.h \
+ lib/qtmaterialtheme.h \
+ qtmaterialfab_p.h \
+ qtmaterialraisedbutton_p.h \
+ qtmaterialflatbutton_p.h \
+ lib/qtmaterialrippleoverlay.h \
+ lib/qtmaterialoverlaywidget.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o qtmaterialfab.o qtmaterialfab.cpp
+
+qtmaterialraisedbutton.o: qtmaterialraisedbutton.cpp qtmaterialraisedbutton.h \
+ qtmaterialflatbutton.h \
+ lib/qtmaterialtheme.h \
+ qtmaterialraisedbutton_p.h \
+ qtmaterialflatbutton_p.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o qtmaterialraisedbutton.o qtmaterialraisedbutton.cpp
+
+qtmaterialflatbutton_internal.o: qtmaterialflatbutton_internal.cpp qtmaterialflatbutton_internal.h \
+ qtmaterialflatbutton.h \
+ lib/qtmaterialtheme.h \
+ lib/qtmaterialstatetransition.h \
+ lib/qtmaterialstatetransitionevent.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o qtmaterialflatbutton_internal.o qtmaterialflatbutton_internal.cpp
+
+qtmaterialflatbutton.o: qtmaterialflatbutton.cpp qtmaterialflatbutton.h \
+ lib/qtmaterialtheme.h \
+ qtmaterialflatbutton_p.h \
+ lib/qtmaterialrippleoverlay.h \
+ lib/qtmaterialoverlaywidget.h \
+ lib/qtmaterialripple.h \
+ lib/qtmaterialstyle.h \
+ lib/qtmaterialstyle_p.h \
+ qtmaterialflatbutton_internal.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o qtmaterialflatbutton.o qtmaterialflatbutton.cpp
+
+qtmaterialstatetransition.o: lib/qtmaterialstatetransition.cpp lib/qtmaterialstatetransition.h \
+ lib/qtmaterialstatetransitionevent.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o qtmaterialstatetransition.o lib/qtmaterialstatetransition.cpp
+
+qtmaterialiconbutton.o: qtmaterialiconbutton.cpp qtmaterialiconbutton.h \
+ qtmaterialiconbutton_p.h \
+ lib/qtmaterialstyle.h \
+ lib/qtmaterialstyle_p.h \
+ lib/qtmaterialrippleoverlay.h \
+ lib/qtmaterialoverlaywidget.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o qtmaterialiconbutton.o qtmaterialiconbutton.cpp
+
+qtmaterialprogress_internal.o: qtmaterialprogress_internal.cpp qtmaterialprogress_internal.h \
+ qtmaterialprogress.h \
+ lib/qtmaterialtheme.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o qtmaterialprogress_internal.o qtmaterialprogress_internal.cpp
+
+qtmaterialprogress.o: qtmaterialprogress.cpp qtmaterialprogress.h \
+ lib/qtmaterialtheme.h \
+ qtmaterialprogress_p.h \
+ qtmaterialprogress_internal.h \
+ lib/qtmaterialstyle.h \
+ lib/qtmaterialstyle_p.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o qtmaterialprogress.o qtmaterialprogress.cpp
+
+qtmaterialcircularprogress_internal.o: qtmaterialcircularprogress_internal.cpp qtmaterialcircularprogress_internal.h \
+ qtmaterialcircularprogress.h \
+ lib/qtmaterialtheme.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o qtmaterialcircularprogress_internal.o qtmaterialcircularprogress_internal.cpp
+
+qtmaterialcircularprogress.o: qtmaterialcircularprogress.cpp qtmaterialcircularprogress.h \
+ lib/qtmaterialtheme.h \
+ qtmaterialcircularprogress_p.h \
+ qtmaterialcircularprogress_internal.h \
+ lib/qtmaterialstyle.h \
+ lib/qtmaterialstyle_p.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o qtmaterialcircularprogress.o qtmaterialcircularprogress.cpp
+
+qtmaterialslider_internal.o: qtmaterialslider_internal.cpp qtmaterialslider_internal.h \
+ lib/qtmaterialoverlaywidget.h \
+ qtmaterialslider.h \
+ lib/qtmaterialstyle.h \
+ lib/qtmaterialstyle_p.h \
+ lib/qtmaterialstatetransition.h \
+ lib/qtmaterialstatetransitionevent.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o qtmaterialslider_internal.o qtmaterialslider_internal.cpp
+
+qtmaterialslider.o: qtmaterialslider.cpp qtmaterialslider.h \
+ qtmaterialslider_p.h \
+ qtmaterialslider_internal.h \
+ lib/qtmaterialoverlaywidget.h \
+ lib/qtmaterialstyle.h \
+ lib/qtmaterialstyle_p.h \
+ lib/qtmaterialstatetransitionevent.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o qtmaterialslider.o qtmaterialslider.cpp
+
+qtmaterialsnackbar_internal.o: qtmaterialsnackbar_internal.cpp qtmaterialsnackbar_internal.h \
+ qtmaterialsnackbar.h \
+ lib/qtmaterialoverlaywidget.h \
+ lib/qtmaterialstatetransition.h \
+ lib/qtmaterialstatetransitionevent.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o qtmaterialsnackbar_internal.o qtmaterialsnackbar_internal.cpp
+
+qtmaterialsnackbar.o: qtmaterialsnackbar.cpp qtmaterialsnackbar.h \
+ lib/qtmaterialoverlaywidget.h \
+ qtmaterialsnackbar_p.h \
+ qtmaterialsnackbar_internal.h \
+ lib/qtmaterialstyle.h \
+ lib/qtmaterialstyle_p.h \
+ lib/qtmaterialstatetransition.h \
+ lib/qtmaterialstatetransitionevent.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o qtmaterialsnackbar.o qtmaterialsnackbar.cpp
+
+qtmaterialradiobutton.o: qtmaterialradiobutton.cpp qtmaterialradiobutton.h \
+ lib/qtmaterialcheckable.h \
+ qtmaterialradiobutton_p.h \
+ lib/qtmaterialcheckable_p.h \
+ lib/qtmaterialcheckable_internal.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o qtmaterialradiobutton.o qtmaterialradiobutton.cpp
+
+qtmaterialtoggle_internal.o: qtmaterialtoggle_internal.cpp qtmaterialtoggle_internal.h \
+ lib/qtmaterialrippleoverlay.h \
+ lib/qtmaterialoverlaywidget.h \
+ qtmaterialtoggle.h \
+ lib/qtmaterialripple.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o qtmaterialtoggle_internal.o qtmaterialtoggle_internal.cpp
+
+qtmaterialtoggle.o: qtmaterialtoggle.cpp qtmaterialtoggle.h \
+ qtmaterialtoggle_p.h \
+ qtmaterialtoggle_internal.h \
+ lib/qtmaterialrippleoverlay.h \
+ lib/qtmaterialoverlaywidget.h \
+ lib/qtmaterialstyle.h \
+ lib/qtmaterialstyle_p.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o qtmaterialtoggle.o qtmaterialtoggle.cpp
+
+qtmaterialtextfield_internal.o: qtmaterialtextfield_internal.cpp qtmaterialtextfield_internal.h \
+ qtmaterialtextfield.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o qtmaterialtextfield_internal.o qtmaterialtextfield_internal.cpp
+
+qtmaterialtextfield.o: qtmaterialtextfield.cpp qtmaterialtextfield.h \
+ qtmaterialtextfield_p.h \
+ qtmaterialtextfield_internal.h \
+ lib/qtmaterialstyle.h \
+ lib/qtmaterialstyle_p.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o qtmaterialtextfield.o qtmaterialtextfield.cpp
+
+qtmaterialtabs_internal.o: qtmaterialtabs_internal.cpp qtmaterialtabs_internal.h \
+ lib/qtmaterialoverlaywidget.h \
+ qtmaterialflatbutton.h \
+ lib/qtmaterialtheme.h \
+ qtmaterialtabs.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o qtmaterialtabs_internal.o qtmaterialtabs_internal.cpp
+
+qtmaterialtabs.o: qtmaterialtabs.cpp qtmaterialtabs.h \
+ lib/qtmaterialtheme.h \
+ qtmaterialtabs_p.h \
+ qtmaterialtabs_internal.h \
+ lib/qtmaterialoverlaywidget.h \
+ qtmaterialflatbutton.h \
+ lib/qtmaterialstyle.h \
+ lib/qtmaterialstyle_p.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o qtmaterialtabs.o qtmaterialtabs.cpp
+
+qtmaterialscrollbar_internal.o: qtmaterialscrollbar_internal.cpp qtmaterialscrollbar_internal.h \
+ qtmaterialscrollbar.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o qtmaterialscrollbar_internal.o qtmaterialscrollbar_internal.cpp
+
+qtmaterialscrollbar.o: qtmaterialscrollbar.cpp qtmaterialscrollbar.h \
+ qtmaterialscrollbar_p.h \
+ qtmaterialscrollbar_internal.h \
+ lib/qtmaterialstyle.h \
+ lib/qtmaterialstyle_p.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o qtmaterialscrollbar.o qtmaterialscrollbar.cpp
+
+qtmaterialdialog_internal.o: qtmaterialdialog_internal.cpp qtmaterialdialog_internal.h \
+ qtmaterialdialog.h \
+ lib/qtmaterialoverlaywidget.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o qtmaterialdialog_internal.o qtmaterialdialog_internal.cpp
+
+qtmaterialdialog.o: qtmaterialdialog.cpp qtmaterialdialog.h \
+ lib/qtmaterialoverlaywidget.h \
+ qtmaterialdialog_p.h \
+ qtmaterialdialog_internal.h \
+ lib/qtmaterialstatetransition.h \
+ lib/qtmaterialstatetransitionevent.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o qtmaterialdialog.o qtmaterialdialog.cpp
+
+qtmaterialdrawer_internal.o: qtmaterialdrawer_internal.cpp qtmaterialdrawer_internal.h \
+ lib/qtmaterialoverlaywidget.h \
+ qtmaterialdrawer.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o qtmaterialdrawer_internal.o qtmaterialdrawer_internal.cpp
+
+qtmaterialdrawer.o: qtmaterialdrawer.cpp qtmaterialdrawer.h \
+ lib/qtmaterialoverlaywidget.h \
+ qtmaterialdrawer_p.h \
+ qtmaterialdrawer_internal.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o qtmaterialdrawer.o qtmaterialdrawer.cpp
+
+qtmaterialappbar.o: qtmaterialappbar.cpp qtmaterialappbar.h \
+ qtmaterialappbar_p.h \
+ lib/qtmaterialstyle.h \
+ lib/qtmaterialstyle_p.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o qtmaterialappbar.o qtmaterialappbar.cpp
+
+qtmaterialautocomplete.o: qtmaterialautocomplete.cpp qtmaterialautocomplete.h \
+ qtmaterialtextfield.h \
+ qtmaterialautocomplete_p.h \
+ qtmaterialtextfield_p.h \
+ qtmaterialautocomplete_internal.h \
+ qtmaterialflatbutton.h \
+ lib/qtmaterialtheme.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o qtmaterialautocomplete.o qtmaterialautocomplete.cpp
+
+qtmaterialpaper.o: qtmaterialpaper.cpp qtmaterialpaper.h \
+ qtmaterialpaper_p.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o qtmaterialpaper.o qtmaterialpaper.cpp
+
+qtmaterialtable.o: qtmaterialtable.cpp qtmaterialtable.h \
+ qtmaterialtable_p.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o qtmaterialtable.o qtmaterialtable.cpp
+
+qtmaterialsnackbarlayout.o: layouts/qtmaterialsnackbarlayout.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o qtmaterialsnackbarlayout.o layouts/qtmaterialsnackbarlayout.cpp
+
+qtmaterialautocomplete_internal.o: qtmaterialautocomplete_internal.cpp qtmaterialautocomplete_internal.h \
+ qtmaterialautocomplete.h \
+ qtmaterialtextfield.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o qtmaterialautocomplete_internal.o qtmaterialautocomplete_internal.cpp
+
+qtmaterialmenu.o: qtmaterialmenu.cpp qtmaterialmenu.h \
+ qtmaterialmenu_p.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o qtmaterialmenu.o qtmaterialmenu.cpp
+
+qtmaterialmenu_internal.o: qtmaterialmenu_internal.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o qtmaterialmenu_internal.o qtmaterialmenu_internal.cpp
+
+qtmateriallist.o: qtmateriallist.cpp qtmateriallist.h \
+ qtmateriallist_p.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o qtmateriallist.o qtmateriallist.cpp
+
+qtmateriallistitem.o: qtmateriallistitem.cpp qtmateriallistitem.h \
+ qtmateriallistitem_p.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o qtmateriallistitem.o qtmateriallistitem.cpp
+
+qrc_resources.o: qrc_resources.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o qrc_resources.o qrc_resources.cpp
+
+moc_qtmaterialavatar.o: moc_qtmaterialavatar.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_qtmaterialavatar.o moc_qtmaterialavatar.cpp
+
+moc_qtmaterialstyle.o: moc_qtmaterialstyle.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_qtmaterialstyle.o moc_qtmaterialstyle.cpp
+
+moc_qtmaterialtheme.o: moc_qtmaterialtheme.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_qtmaterialtheme.o moc_qtmaterialtheme.cpp
+
+moc_qtmaterialbadge.o: moc_qtmaterialbadge.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_qtmaterialbadge.o moc_qtmaterialbadge.cpp
+
+moc_qtmaterialoverlaywidget.o: moc_qtmaterialoverlaywidget.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_qtmaterialoverlaywidget.o moc_qtmaterialoverlaywidget.cpp
+
+moc_qtmaterialcheckbox.o: moc_qtmaterialcheckbox.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_qtmaterialcheckbox.o moc_qtmaterialcheckbox.cpp
+
+moc_qtmaterialcheckable_internal.o: moc_qtmaterialcheckable_internal.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_qtmaterialcheckable_internal.o moc_qtmaterialcheckable_internal.cpp
+
+moc_qtmaterialripple.o: moc_qtmaterialripple.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_qtmaterialripple.o moc_qtmaterialripple.cpp
+
+moc_qtmaterialrippleoverlay.o: moc_qtmaterialrippleoverlay.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_qtmaterialrippleoverlay.o moc_qtmaterialrippleoverlay.cpp
+
+moc_qtmaterialcheckable.o: moc_qtmaterialcheckable.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_qtmaterialcheckable.o moc_qtmaterialcheckable.cpp
+
+moc_qtmaterialfab.o: moc_qtmaterialfab.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_qtmaterialfab.o moc_qtmaterialfab.cpp
+
+moc_qtmaterialraisedbutton.o: moc_qtmaterialraisedbutton.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_qtmaterialraisedbutton.o moc_qtmaterialraisedbutton.cpp
+
+moc_qtmaterialflatbutton_internal.o: moc_qtmaterialflatbutton_internal.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_qtmaterialflatbutton_internal.o moc_qtmaterialflatbutton_internal.cpp
+
+moc_qtmaterialflatbutton.o: moc_qtmaterialflatbutton.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_qtmaterialflatbutton.o moc_qtmaterialflatbutton.cpp
+
+moc_qtmaterialstatetransition.o: moc_qtmaterialstatetransition.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_qtmaterialstatetransition.o moc_qtmaterialstatetransition.cpp
+
+moc_qtmaterialiconbutton.o: moc_qtmaterialiconbutton.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_qtmaterialiconbutton.o moc_qtmaterialiconbutton.cpp
+
+moc_qtmaterialprogress_internal.o: moc_qtmaterialprogress_internal.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_qtmaterialprogress_internal.o moc_qtmaterialprogress_internal.cpp
+
+moc_qtmaterialprogress.o: moc_qtmaterialprogress.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_qtmaterialprogress.o moc_qtmaterialprogress.cpp
+
+moc_qtmaterialcircularprogress_internal.o: moc_qtmaterialcircularprogress_internal.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_qtmaterialcircularprogress_internal.o moc_qtmaterialcircularprogress_internal.cpp
+
+moc_qtmaterialcircularprogress.o: moc_qtmaterialcircularprogress.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_qtmaterialcircularprogress.o moc_qtmaterialcircularprogress.cpp
+
+moc_qtmaterialslider_internal.o: moc_qtmaterialslider_internal.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_qtmaterialslider_internal.o moc_qtmaterialslider_internal.cpp
+
+moc_qtmaterialslider.o: moc_qtmaterialslider.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_qtmaterialslider.o moc_qtmaterialslider.cpp
+
+moc_qtmaterialsnackbar_internal.o: moc_qtmaterialsnackbar_internal.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_qtmaterialsnackbar_internal.o moc_qtmaterialsnackbar_internal.cpp
+
+moc_qtmaterialsnackbar.o: moc_qtmaterialsnackbar.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_qtmaterialsnackbar.o moc_qtmaterialsnackbar.cpp
+
+moc_qtmaterialradiobutton.o: moc_qtmaterialradiobutton.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_qtmaterialradiobutton.o moc_qtmaterialradiobutton.cpp
+
+moc_qtmaterialtoggle_internal.o: moc_qtmaterialtoggle_internal.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_qtmaterialtoggle_internal.o moc_qtmaterialtoggle_internal.cpp
+
+moc_qtmaterialtoggle.o: moc_qtmaterialtoggle.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_qtmaterialtoggle.o moc_qtmaterialtoggle.cpp
+
+moc_qtmaterialtextfield_internal.o: moc_qtmaterialtextfield_internal.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_qtmaterialtextfield_internal.o moc_qtmaterialtextfield_internal.cpp
+
+moc_qtmaterialtextfield.o: moc_qtmaterialtextfield.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_qtmaterialtextfield.o moc_qtmaterialtextfield.cpp
+
+moc_qtmaterialtabs_internal.o: moc_qtmaterialtabs_internal.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_qtmaterialtabs_internal.o moc_qtmaterialtabs_internal.cpp
+
+moc_qtmaterialtabs.o: moc_qtmaterialtabs.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_qtmaterialtabs.o moc_qtmaterialtabs.cpp
+
+moc_qtmaterialscrollbar_internal.o: moc_qtmaterialscrollbar_internal.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_qtmaterialscrollbar_internal.o moc_qtmaterialscrollbar_internal.cpp
+
+moc_qtmaterialscrollbar.o: moc_qtmaterialscrollbar.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_qtmaterialscrollbar.o moc_qtmaterialscrollbar.cpp
+
+moc_qtmaterialdialog_internal.o: moc_qtmaterialdialog_internal.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_qtmaterialdialog_internal.o moc_qtmaterialdialog_internal.cpp
+
+moc_qtmaterialdialog.o: moc_qtmaterialdialog.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_qtmaterialdialog.o moc_qtmaterialdialog.cpp
+
+moc_qtmaterialdrawer_internal.o: moc_qtmaterialdrawer_internal.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_qtmaterialdrawer_internal.o moc_qtmaterialdrawer_internal.cpp
+
+moc_qtmaterialdrawer.o: moc_qtmaterialdrawer.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_qtmaterialdrawer.o moc_qtmaterialdrawer.cpp
+
+moc_qtmaterialappbar.o: moc_qtmaterialappbar.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_qtmaterialappbar.o moc_qtmaterialappbar.cpp
+
+moc_qtmaterialautocomplete.o: moc_qtmaterialautocomplete.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_qtmaterialautocomplete.o moc_qtmaterialautocomplete.cpp
+
+moc_qtmaterialautocomplete_internal.o: moc_qtmaterialautocomplete_internal.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_qtmaterialautocomplete_internal.o moc_qtmaterialautocomplete_internal.cpp
+
+moc_qtmaterialmenu.o: moc_qtmaterialmenu.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_qtmaterialmenu.o moc_qtmaterialmenu.cpp
+
+####### Install
+
+install: FORCE
+
+uninstall: FORCE
+
+FORCE:
+
diff --git a/src/material-widgets/components.pro b/src/material-widgets/components.pro
new file mode 100644
index 0000000..d6080d5
--- /dev/null
+++ b/src/material-widgets/components.pro
@@ -0,0 +1,130 @@
+TEMPLATE = lib
+CONFIG += staticlib
+SOURCES = \
+ qtmaterialavatar.cpp \
+ lib/qtmaterialstyle.cpp \
+ lib/qtmaterialtheme.cpp \
+ qtmaterialbadge.cpp \
+ lib/qtmaterialoverlaywidget.cpp \
+ qtmaterialcheckbox.cpp \
+ lib/qtmaterialcheckable_internal.cpp \
+ lib/qtmaterialcheckable.cpp \
+ lib/qtmaterialripple.cpp \
+ lib/qtmaterialrippleoverlay.cpp \
+ qtmaterialfab.cpp \
+ qtmaterialraisedbutton.cpp \
+ qtmaterialflatbutton_internal.cpp \
+ qtmaterialflatbutton.cpp \
+ lib/qtmaterialstatetransition.cpp \
+ qtmaterialiconbutton.cpp \
+ qtmaterialprogress_internal.cpp \
+ qtmaterialprogress.cpp \
+ qtmaterialcircularprogress_internal.cpp \
+ qtmaterialcircularprogress.cpp \
+ qtmaterialslider_internal.cpp \
+ qtmaterialslider.cpp \
+ qtmaterialsnackbar_internal.cpp \
+ qtmaterialsnackbar.cpp \
+ qtmaterialradiobutton.cpp \
+ qtmaterialtoggle_internal.cpp \
+ qtmaterialtoggle.cpp \
+ qtmaterialtextfield_internal.cpp \
+ qtmaterialtextfield.cpp \
+ qtmaterialtabs_internal.cpp \
+ qtmaterialtabs.cpp \
+ qtmaterialscrollbar_internal.cpp \
+ qtmaterialscrollbar.cpp \
+ qtmaterialdialog_internal.cpp \
+ qtmaterialdialog.cpp \
+ qtmaterialdrawer_internal.cpp \
+ qtmaterialdrawer.cpp \
+ qtmaterialappbar.cpp \
+ qtmaterialautocomplete.cpp \
+ qtmaterialpaper.cpp \
+ qtmaterialtable.cpp \
+ layouts/qtmaterialsnackbarlayout.cpp \
+ qtmaterialautocomplete_internal.cpp \
+ qtmaterialmenu.cpp \
+ qtmaterialmenu_internal.cpp \
+ qtmateriallist.cpp \
+ qtmateriallistitem.cpp
+HEADERS = \
+ qtmaterialavatar_p.h \
+ qtmaterialavatar.h \
+ lib/qtmaterialstyle_p.h \
+ lib/qtmaterialstyle.h \
+ lib/qtmaterialtheme_p.h \
+ lib/qtmaterialtheme.h \
+ qtmaterialbadge_p.h \
+ qtmaterialbadge.h \
+ lib/qtmaterialoverlaywidget.h \
+ qtmaterialcheckbox_p.h \
+ qtmaterialcheckbox.h \
+ lib/qtmaterialcheckable_internal.h \
+ lib/qtmaterialcheckable_p.h \
+ lib/qtmaterialripple.h \
+ lib/qtmaterialrippleoverlay.h \
+ lib/qtmaterialcheckable.h \
+ qtmaterialfab_p.h \
+ qtmaterialfab.h \
+ qtmaterialraisedbutton_p.h \
+ qtmaterialraisedbutton.h \
+ qtmaterialflatbutton_internal.h \
+ qtmaterialflatbutton_p.h \
+ qtmaterialflatbutton.h \
+ lib/qtmaterialstatetransition.h \
+ lib/qtmaterialstatetransitionevent.h \
+ qtmaterialiconbutton_p.h \
+ qtmaterialiconbutton.h \
+ qtmaterialprogress_internal.h \
+ qtmaterialprogress_p.h \
+ qtmaterialprogress.h \
+ qtmaterialcircularprogress_internal.h \
+ qtmaterialcircularprogress_p.h \
+ qtmaterialcircularprogress.h \
+ qtmaterialslider_internal.h \
+ qtmaterialslider_p.h \
+ qtmaterialslider.h \
+ qtmaterialsnackbar_internal.h \
+ qtmaterialsnackbar_p.h \
+ qtmaterialsnackbar.h \
+ qtmaterialradiobutton_p.h \
+ qtmaterialradiobutton.h \
+ qtmaterialtoggle_internal.h \
+ qtmaterialtoggle_p.h \
+ qtmaterialtoggle.h \
+ qtmaterialtextfield_internal.h \
+ qtmaterialtextfield_p.h \
+ qtmaterialtextfield.h \
+ qtmaterialtabs_internal.h \
+ qtmaterialtabs_p.h \
+ qtmaterialtabs.h \
+ qtmaterialscrollbar_internal.h \
+ qtmaterialscrollbar_p.h \
+ qtmaterialscrollbar.h \
+ qtmaterialdialog_internal.h \
+ qtmaterialdialog_p.h \
+ qtmaterialdialog.h \
+ qtmaterialdrawer_internal.h \
+ qtmaterialdrawer_p.h \
+ qtmaterialdrawer.h \
+ qtmaterialappbar.h \
+ qtmaterialappbar_p.h \
+ qtmaterialautocomplete.h \
+ qtmaterialautocomplete_p.h \
+ qtmaterialpaper.h \
+ qtmaterialpaper_p.h \
+ qtmaterialtable.h \
+ qtmaterialtable_p.h \
+ layouts/qtmaterialsnackbarlayout.h \
+ layouts/qtmaterialsnackbarlayout_p.h \
+ qtmaterialautocomplete_internal.h \
+ qtmaterialmenu.h \
+ qtmaterialmenu_p.h \
+ qtmaterialmenu_internal.h \
+ qtmateriallist.h \
+ qtmateriallist_p.h \
+ qtmateriallistitem.h \
+ qtmateriallistitem_p.h
+RESOURCES += \
+ resources.qrc
diff --git a/src/material-widgets/fonts/Roboto/LICENSE.txt b/src/material-widgets/fonts/Roboto/LICENSE.txt
new file mode 100644
index 0000000..75b5248
--- /dev/null
+++ b/src/material-widgets/fonts/Roboto/LICENSE.txt
@@ -0,0 +1,202 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/src/material-widgets/fonts/Roboto/Roboto-Black.ttf b/src/material-widgets/fonts/Roboto/Roboto-Black.ttf
new file mode 100644
index 0000000..fbde625
Binary files /dev/null and b/src/material-widgets/fonts/Roboto/Roboto-Black.ttf differ
diff --git a/src/material-widgets/fonts/Roboto/Roboto-BlackItalic.ttf b/src/material-widgets/fonts/Roboto/Roboto-BlackItalic.ttf
new file mode 100644
index 0000000..60f7782
Binary files /dev/null and b/src/material-widgets/fonts/Roboto/Roboto-BlackItalic.ttf differ
diff --git a/src/material-widgets/fonts/Roboto/Roboto-Bold.ttf b/src/material-widgets/fonts/Roboto/Roboto-Bold.ttf
new file mode 100644
index 0000000..a355c27
Binary files /dev/null and b/src/material-widgets/fonts/Roboto/Roboto-Bold.ttf differ
diff --git a/src/material-widgets/fonts/Roboto/Roboto-BoldItalic.ttf b/src/material-widgets/fonts/Roboto/Roboto-BoldItalic.ttf
new file mode 100644
index 0000000..3c9a7a3
Binary files /dev/null and b/src/material-widgets/fonts/Roboto/Roboto-BoldItalic.ttf differ
diff --git a/src/material-widgets/fonts/Roboto/Roboto-Italic.ttf b/src/material-widgets/fonts/Roboto/Roboto-Italic.ttf
new file mode 100644
index 0000000..ff6046d
Binary files /dev/null and b/src/material-widgets/fonts/Roboto/Roboto-Italic.ttf differ
diff --git a/src/material-widgets/fonts/Roboto/Roboto-Light.ttf b/src/material-widgets/fonts/Roboto/Roboto-Light.ttf
new file mode 100644
index 0000000..94c6bcc
Binary files /dev/null and b/src/material-widgets/fonts/Roboto/Roboto-Light.ttf differ
diff --git a/src/material-widgets/fonts/Roboto/Roboto-LightItalic.ttf b/src/material-widgets/fonts/Roboto/Roboto-LightItalic.ttf
new file mode 100644
index 0000000..04cc002
Binary files /dev/null and b/src/material-widgets/fonts/Roboto/Roboto-LightItalic.ttf differ
diff --git a/src/material-widgets/fonts/Roboto/Roboto-Medium.ttf b/src/material-widgets/fonts/Roboto/Roboto-Medium.ttf
new file mode 100644
index 0000000..39c63d7
Binary files /dev/null and b/src/material-widgets/fonts/Roboto/Roboto-Medium.ttf differ
diff --git a/src/material-widgets/fonts/Roboto/Roboto-MediumItalic.ttf b/src/material-widgets/fonts/Roboto/Roboto-MediumItalic.ttf
new file mode 100644
index 0000000..dc743f0
Binary files /dev/null and b/src/material-widgets/fonts/Roboto/Roboto-MediumItalic.ttf differ
diff --git a/src/material-widgets/fonts/Roboto/Roboto-Regular.ttf b/src/material-widgets/fonts/Roboto/Roboto-Regular.ttf
new file mode 100644
index 0000000..8c082c8
Binary files /dev/null and b/src/material-widgets/fonts/Roboto/Roboto-Regular.ttf differ
diff --git a/src/material-widgets/fonts/Roboto/Roboto-Thin.ttf b/src/material-widgets/fonts/Roboto/Roboto-Thin.ttf
new file mode 100644
index 0000000..d695550
Binary files /dev/null and b/src/material-widgets/fonts/Roboto/Roboto-Thin.ttf differ
diff --git a/src/material-widgets/fonts/Roboto/Roboto-ThinItalic.ttf b/src/material-widgets/fonts/Roboto/Roboto-ThinItalic.ttf
new file mode 100644
index 0000000..07172ff
Binary files /dev/null and b/src/material-widgets/fonts/Roboto/Roboto-ThinItalic.ttf differ
diff --git a/src/material-widgets/icons/LICENSE b/src/material-widgets/icons/LICENSE
new file mode 100644
index 0000000..7a4a3ea
--- /dev/null
+++ b/src/material-widgets/icons/LICENSE
@@ -0,0 +1,202 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_3d_rotation_24px.svg b/src/material-widgets/icons/action/svg/production/ic_3d_rotation_24px.svg
new file mode 100644
index 0000000..db31710
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_3d_rotation_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_accessibility_24px.svg b/src/material-widgets/icons/action/svg/production/ic_accessibility_24px.svg
new file mode 100644
index 0000000..fda62ae
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_accessibility_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_accessible_24px.svg b/src/material-widgets/icons/action/svg/production/ic_accessible_24px.svg
new file mode 100644
index 0000000..7f14189
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_accessible_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_account_balance_24px.svg b/src/material-widgets/icons/action/svg/production/ic_account_balance_24px.svg
new file mode 100644
index 0000000..1faddad
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_account_balance_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_account_balance_wallet_24px.svg b/src/material-widgets/icons/action/svg/production/ic_account_balance_wallet_24px.svg
new file mode 100644
index 0000000..e71a765
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_account_balance_wallet_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_account_box_24px.svg b/src/material-widgets/icons/action/svg/production/ic_account_box_24px.svg
new file mode 100644
index 0000000..d581147
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_account_box_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_account_circle_24px.svg b/src/material-widgets/icons/action/svg/production/ic_account_circle_24px.svg
new file mode 100644
index 0000000..01dc062
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_account_circle_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_add_shopping_cart_24px.svg b/src/material-widgets/icons/action/svg/production/ic_add_shopping_cart_24px.svg
new file mode 100644
index 0000000..3331ecc
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_add_shopping_cart_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_alarm_24px.svg b/src/material-widgets/icons/action/svg/production/ic_alarm_24px.svg
new file mode 100644
index 0000000..edfa7a6
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_alarm_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_alarm_add_24px.svg b/src/material-widgets/icons/action/svg/production/ic_alarm_add_24px.svg
new file mode 100644
index 0000000..8bf2e6c
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_alarm_add_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_alarm_off_24px.svg b/src/material-widgets/icons/action/svg/production/ic_alarm_off_24px.svg
new file mode 100644
index 0000000..58edb5d
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_alarm_off_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_alarm_on_24px.svg b/src/material-widgets/icons/action/svg/production/ic_alarm_on_24px.svg
new file mode 100644
index 0000000..79de6cb
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_alarm_on_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_all_out_24px.svg b/src/material-widgets/icons/action/svg/production/ic_all_out_24px.svg
new file mode 100644
index 0000000..6ad5c9c
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_all_out_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_android_24px.svg b/src/material-widgets/icons/action/svg/production/ic_android_24px.svg
new file mode 100644
index 0000000..600a26a
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_android_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_announcement_24px.svg b/src/material-widgets/icons/action/svg/production/ic_announcement_24px.svg
new file mode 100644
index 0000000..fd7463c
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_announcement_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_aspect_ratio_24px.svg b/src/material-widgets/icons/action/svg/production/ic_aspect_ratio_24px.svg
new file mode 100644
index 0000000..d84112f
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_aspect_ratio_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_assessment_24px.svg b/src/material-widgets/icons/action/svg/production/ic_assessment_24px.svg
new file mode 100644
index 0000000..cc7768b
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_assessment_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_assignment_24px.svg b/src/material-widgets/icons/action/svg/production/ic_assignment_24px.svg
new file mode 100644
index 0000000..cb7fd32
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_assignment_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_assignment_ind_24px.svg b/src/material-widgets/icons/action/svg/production/ic_assignment_ind_24px.svg
new file mode 100644
index 0000000..3c0a273
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_assignment_ind_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_assignment_late_24px.svg b/src/material-widgets/icons/action/svg/production/ic_assignment_late_24px.svg
new file mode 100644
index 0000000..ad82055
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_assignment_late_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_assignment_return_24px.svg b/src/material-widgets/icons/action/svg/production/ic_assignment_return_24px.svg
new file mode 100644
index 0000000..4bfb1e5
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_assignment_return_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_assignment_returned_24px.svg b/src/material-widgets/icons/action/svg/production/ic_assignment_returned_24px.svg
new file mode 100644
index 0000000..4417ebc
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_assignment_returned_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_assignment_turned_in_24px.svg b/src/material-widgets/icons/action/svg/production/ic_assignment_turned_in_24px.svg
new file mode 100644
index 0000000..841afa5
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_assignment_turned_in_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_autorenew_24px.svg b/src/material-widgets/icons/action/svg/production/ic_autorenew_24px.svg
new file mode 100644
index 0000000..a260be6
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_autorenew_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_backup_24px.svg b/src/material-widgets/icons/action/svg/production/ic_backup_24px.svg
new file mode 100644
index 0000000..69a9622
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_backup_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_book_24px.svg b/src/material-widgets/icons/action/svg/production/ic_book_24px.svg
new file mode 100644
index 0000000..f5dd104
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_book_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_bookmark_24px.svg b/src/material-widgets/icons/action/svg/production/ic_bookmark_24px.svg
new file mode 100644
index 0000000..1d507a6
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_bookmark_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_bookmark_border_24px.svg b/src/material-widgets/icons/action/svg/production/ic_bookmark_border_24px.svg
new file mode 100644
index 0000000..f178b05
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_bookmark_border_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_bug_report_24px.svg b/src/material-widgets/icons/action/svg/production/ic_bug_report_24px.svg
new file mode 100644
index 0000000..0ac92ab
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_bug_report_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_build_24px.svg b/src/material-widgets/icons/action/svg/production/ic_build_24px.svg
new file mode 100755
index 0000000..447e292
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_build_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_cached_24px.svg b/src/material-widgets/icons/action/svg/production/ic_cached_24px.svg
new file mode 100644
index 0000000..9bd4422
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_cached_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_camera_enhance_24px.svg b/src/material-widgets/icons/action/svg/production/ic_camera_enhance_24px.svg
new file mode 100755
index 0000000..a2471c1
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_camera_enhance_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_card_giftcard_24px.svg b/src/material-widgets/icons/action/svg/production/ic_card_giftcard_24px.svg
new file mode 100644
index 0000000..30e51d6
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_card_giftcard_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_card_membership_24px.svg b/src/material-widgets/icons/action/svg/production/ic_card_membership_24px.svg
new file mode 100644
index 0000000..daadcd4
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_card_membership_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_card_travel_24px.svg b/src/material-widgets/icons/action/svg/production/ic_card_travel_24px.svg
new file mode 100644
index 0000000..e4149b3
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_card_travel_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_change_history_24px.svg b/src/material-widgets/icons/action/svg/production/ic_change_history_24px.svg
new file mode 100755
index 0000000..301bfa9
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_change_history_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_check_circle_24px.svg b/src/material-widgets/icons/action/svg/production/ic_check_circle_24px.svg
new file mode 100644
index 0000000..1741e30
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_check_circle_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_chrome_reader_mode_24px.svg b/src/material-widgets/icons/action/svg/production/ic_chrome_reader_mode_24px.svg
new file mode 100644
index 0000000..ba864e1
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_chrome_reader_mode_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_class_24px.svg b/src/material-widgets/icons/action/svg/production/ic_class_24px.svg
new file mode 100644
index 0000000..f5dd104
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_class_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_code_24px.svg b/src/material-widgets/icons/action/svg/production/ic_code_24px.svg
new file mode 100755
index 0000000..612ca55
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_code_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_compare_arrows_24px.svg b/src/material-widgets/icons/action/svg/production/ic_compare_arrows_24px.svg
new file mode 100644
index 0000000..21a0239
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_compare_arrows_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_copyright_24px.svg b/src/material-widgets/icons/action/svg/production/ic_copyright_24px.svg
new file mode 100644
index 0000000..33d8465
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_copyright_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_credit_card_24px.svg b/src/material-widgets/icons/action/svg/production/ic_credit_card_24px.svg
new file mode 100644
index 0000000..99afa68
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_credit_card_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_dashboard_24px.svg b/src/material-widgets/icons/action/svg/production/ic_dashboard_24px.svg
new file mode 100644
index 0000000..1682295
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_dashboard_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_date_range_24px.svg b/src/material-widgets/icons/action/svg/production/ic_date_range_24px.svg
new file mode 100644
index 0000000..6d8cee4
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_date_range_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_delete_24px.svg b/src/material-widgets/icons/action/svg/production/ic_delete_24px.svg
new file mode 100644
index 0000000..0969a4d
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_delete_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_delete_forever_24px.svg b/src/material-widgets/icons/action/svg/production/ic_delete_forever_24px.svg
new file mode 100644
index 0000000..8b0bbe4
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_delete_forever_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_description_24px.svg b/src/material-widgets/icons/action/svg/production/ic_description_24px.svg
new file mode 100644
index 0000000..1585a6c
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_description_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_dns_24px.svg b/src/material-widgets/icons/action/svg/production/ic_dns_24px.svg
new file mode 100644
index 0000000..4079ced
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_dns_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_done_24px.svg b/src/material-widgets/icons/action/svg/production/ic_done_24px.svg
new file mode 100755
index 0000000..20a7f2d
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_done_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_done_all_24px.svg b/src/material-widgets/icons/action/svg/production/ic_done_all_24px.svg
new file mode 100644
index 0000000..24e36cf
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_done_all_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_donut_large_24px.svg b/src/material-widgets/icons/action/svg/production/ic_donut_large_24px.svg
new file mode 100644
index 0000000..bbc39e6
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_donut_large_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_donut_small_24px.svg b/src/material-widgets/icons/action/svg/production/ic_donut_small_24px.svg
new file mode 100644
index 0000000..36987e6
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_donut_small_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_eject_24px.svg b/src/material-widgets/icons/action/svg/production/ic_eject_24px.svg
new file mode 100644
index 0000000..a8fc5a1
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_eject_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_euro_symbol_24px.svg b/src/material-widgets/icons/action/svg/production/ic_euro_symbol_24px.svg
new file mode 100644
index 0000000..713f078
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_euro_symbol_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_event_24px.svg b/src/material-widgets/icons/action/svg/production/ic_event_24px.svg
new file mode 100644
index 0000000..1b084e8
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_event_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_event_seat_24px.svg b/src/material-widgets/icons/action/svg/production/ic_event_seat_24px.svg
new file mode 100644
index 0000000..6ec648c
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_event_seat_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_exit_to_app_24px.svg b/src/material-widgets/icons/action/svg/production/ic_exit_to_app_24px.svg
new file mode 100644
index 0000000..b5763e9
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_exit_to_app_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_explore_24px.svg b/src/material-widgets/icons/action/svg/production/ic_explore_24px.svg
new file mode 100644
index 0000000..4243343
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_explore_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_extension_24px.svg b/src/material-widgets/icons/action/svg/production/ic_extension_24px.svg
new file mode 100644
index 0000000..39f275c
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_extension_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_face_24px.svg b/src/material-widgets/icons/action/svg/production/ic_face_24px.svg
new file mode 100755
index 0000000..993149b
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_face_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_favorite_24px.svg b/src/material-widgets/icons/action/svg/production/ic_favorite_24px.svg
new file mode 100644
index 0000000..8a7ea03
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_favorite_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_favorite_border_24px.svg b/src/material-widgets/icons/action/svg/production/ic_favorite_border_24px.svg
new file mode 100644
index 0000000..999e319
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_favorite_border_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_feedback_24px.svg b/src/material-widgets/icons/action/svg/production/ic_feedback_24px.svg
new file mode 100644
index 0000000..72b0945
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_feedback_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_find_in_page_24px.svg b/src/material-widgets/icons/action/svg/production/ic_find_in_page_24px.svg
new file mode 100644
index 0000000..eacc8e8
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_find_in_page_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_find_replace_24px.svg b/src/material-widgets/icons/action/svg/production/ic_find_replace_24px.svg
new file mode 100644
index 0000000..cede6cd
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_find_replace_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_fingerprint_24px.svg b/src/material-widgets/icons/action/svg/production/ic_fingerprint_24px.svg
new file mode 100644
index 0000000..c6802fe
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_fingerprint_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_flight_land_24px.svg b/src/material-widgets/icons/action/svg/production/ic_flight_land_24px.svg
new file mode 100644
index 0000000..0b6c294
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_flight_land_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_flight_takeoff_24px.svg b/src/material-widgets/icons/action/svg/production/ic_flight_takeoff_24px.svg
new file mode 100644
index 0000000..fe40880
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_flight_takeoff_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_flip_to_back_24px.svg b/src/material-widgets/icons/action/svg/production/ic_flip_to_back_24px.svg
new file mode 100644
index 0000000..7e641b6
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_flip_to_back_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_flip_to_front_24px.svg b/src/material-widgets/icons/action/svg/production/ic_flip_to_front_24px.svg
new file mode 100644
index 0000000..d2d1664
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_flip_to_front_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_g_translate_24px.svg b/src/material-widgets/icons/action/svg/production/ic_g_translate_24px.svg
new file mode 100644
index 0000000..47ade36
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_g_translate_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_gavel_24px.svg b/src/material-widgets/icons/action/svg/production/ic_gavel_24px.svg
new file mode 100644
index 0000000..2092083
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_gavel_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_get_app_24px.svg b/src/material-widgets/icons/action/svg/production/ic_get_app_24px.svg
new file mode 100644
index 0000000..ef421c3
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_get_app_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_gif_24px.svg b/src/material-widgets/icons/action/svg/production/ic_gif_24px.svg
new file mode 100644
index 0000000..d16cb7c
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_gif_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_grade_24px.svg b/src/material-widgets/icons/action/svg/production/ic_grade_24px.svg
new file mode 100644
index 0000000..46d104b
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_grade_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_group_work_24px.svg b/src/material-widgets/icons/action/svg/production/ic_group_work_24px.svg
new file mode 100644
index 0000000..0f3fd5a
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_group_work_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_help_24px.svg b/src/material-widgets/icons/action/svg/production/ic_help_24px.svg
new file mode 100644
index 0000000..dd1cd77
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_help_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_help_outline_24px.svg b/src/material-widgets/icons/action/svg/production/ic_help_outline_24px.svg
new file mode 100644
index 0000000..3e980a4
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_help_outline_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_highlight_off_24px.svg b/src/material-widgets/icons/action/svg/production/ic_highlight_off_24px.svg
new file mode 100644
index 0000000..848183c
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_highlight_off_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_history_24px.svg b/src/material-widgets/icons/action/svg/production/ic_history_24px.svg
new file mode 100644
index 0000000..c00b86b
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_history_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_home_24px.svg b/src/material-widgets/icons/action/svg/production/ic_home_24px.svg
new file mode 100644
index 0000000..6bd84cf
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_home_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_hourglass_empty_24px.svg b/src/material-widgets/icons/action/svg/production/ic_hourglass_empty_24px.svg
new file mode 100644
index 0000000..48298a7
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_hourglass_empty_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_hourglass_full_24px.svg b/src/material-widgets/icons/action/svg/production/ic_hourglass_full_24px.svg
new file mode 100644
index 0000000..e33ac31
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_hourglass_full_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_http_24px.svg b/src/material-widgets/icons/action/svg/production/ic_http_24px.svg
new file mode 100644
index 0000000..4a8c23a
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_http_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_https_24px.svg b/src/material-widgets/icons/action/svg/production/ic_https_24px.svg
new file mode 100644
index 0000000..2154a2c
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_https_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_important_devices_24px.svg b/src/material-widgets/icons/action/svg/production/ic_important_devices_24px.svg
new file mode 100644
index 0000000..9d0162b
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_important_devices_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_info_24px.svg b/src/material-widgets/icons/action/svg/production/ic_info_24px.svg
new file mode 100644
index 0000000..22ef137
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_info_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_info_outline_24px.svg b/src/material-widgets/icons/action/svg/production/ic_info_outline_24px.svg
new file mode 100644
index 0000000..bb86e65
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_info_outline_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_input_24px.svg b/src/material-widgets/icons/action/svg/production/ic_input_24px.svg
new file mode 100644
index 0000000..64d1d0b
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_input_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_invert_colors_24px.svg b/src/material-widgets/icons/action/svg/production/ic_invert_colors_24px.svg
new file mode 100644
index 0000000..d7165a2
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_invert_colors_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_label_24px.svg b/src/material-widgets/icons/action/svg/production/ic_label_24px.svg
new file mode 100644
index 0000000..e0f42a3
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_label_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_label_outline_24px.svg b/src/material-widgets/icons/action/svg/production/ic_label_outline_24px.svg
new file mode 100644
index 0000000..aca61dc
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_label_outline_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_language_24px.svg b/src/material-widgets/icons/action/svg/production/ic_language_24px.svg
new file mode 100644
index 0000000..0349db4
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_language_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_launch_24px.svg b/src/material-widgets/icons/action/svg/production/ic_launch_24px.svg
new file mode 100644
index 0000000..40f6564
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_launch_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_lightbulb_outline_24px.svg b/src/material-widgets/icons/action/svg/production/ic_lightbulb_outline_24px.svg
new file mode 100644
index 0000000..4351f81
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_lightbulb_outline_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_line_style_24px.svg b/src/material-widgets/icons/action/svg/production/ic_line_style_24px.svg
new file mode 100644
index 0000000..7fc27b1
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_line_style_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_line_weight_24px.svg b/src/material-widgets/icons/action/svg/production/ic_line_weight_24px.svg
new file mode 100644
index 0000000..e1321a7
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_line_weight_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_list_24px.svg b/src/material-widgets/icons/action/svg/production/ic_list_24px.svg
new file mode 100644
index 0000000..f280e6a
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_list_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_lock_24px.svg b/src/material-widgets/icons/action/svg/production/ic_lock_24px.svg
new file mode 100644
index 0000000..2154a2c
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_lock_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_lock_open_24px.svg b/src/material-widgets/icons/action/svg/production/ic_lock_open_24px.svg
new file mode 100644
index 0000000..4481b0e
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_lock_open_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_lock_outline_24px.svg b/src/material-widgets/icons/action/svg/production/ic_lock_outline_24px.svg
new file mode 100644
index 0000000..b8b5c01
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_lock_outline_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_loyalty_24px.svg b/src/material-widgets/icons/action/svg/production/ic_loyalty_24px.svg
new file mode 100644
index 0000000..c151715
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_loyalty_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_markunread_mailbox_24px.svg b/src/material-widgets/icons/action/svg/production/ic_markunread_mailbox_24px.svg
new file mode 100644
index 0000000..7237f6b
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_markunread_mailbox_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_motorcycle_24px.svg b/src/material-widgets/icons/action/svg/production/ic_motorcycle_24px.svg
new file mode 100644
index 0000000..bc98009
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_motorcycle_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_note_add_24px.svg b/src/material-widgets/icons/action/svg/production/ic_note_add_24px.svg
new file mode 100644
index 0000000..36c9d08
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_note_add_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_offline_pin_24px.svg b/src/material-widgets/icons/action/svg/production/ic_offline_pin_24px.svg
new file mode 100644
index 0000000..c1abee0
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_offline_pin_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_opacity_24px.svg b/src/material-widgets/icons/action/svg/production/ic_opacity_24px.svg
new file mode 100644
index 0000000..af841ac
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_opacity_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_open_in_browser_24px.svg b/src/material-widgets/icons/action/svg/production/ic_open_in_browser_24px.svg
new file mode 100644
index 0000000..39bc1c0
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_open_in_browser_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_open_in_new_24px.svg b/src/material-widgets/icons/action/svg/production/ic_open_in_new_24px.svg
new file mode 100644
index 0000000..40f6564
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_open_in_new_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_open_with_24px.svg b/src/material-widgets/icons/action/svg/production/ic_open_with_24px.svg
new file mode 100644
index 0000000..e7fc349
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_open_with_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_pageview_24px.svg b/src/material-widgets/icons/action/svg/production/ic_pageview_24px.svg
new file mode 100755
index 0000000..224cf28
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_pageview_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_pan_tool_24px.svg b/src/material-widgets/icons/action/svg/production/ic_pan_tool_24px.svg
new file mode 100644
index 0000000..a89a41c
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_pan_tool_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_payment_24px.svg b/src/material-widgets/icons/action/svg/production/ic_payment_24px.svg
new file mode 100644
index 0000000..99afa68
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_payment_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_perm_camera_mic_24px.svg b/src/material-widgets/icons/action/svg/production/ic_perm_camera_mic_24px.svg
new file mode 100644
index 0000000..e5ef14b
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_perm_camera_mic_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_perm_contact_calendar_24px.svg b/src/material-widgets/icons/action/svg/production/ic_perm_contact_calendar_24px.svg
new file mode 100644
index 0000000..903123a
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_perm_contact_calendar_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_perm_data_setting_24px.svg b/src/material-widgets/icons/action/svg/production/ic_perm_data_setting_24px.svg
new file mode 100644
index 0000000..3720f3a
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_perm_data_setting_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_perm_device_information_24px.svg b/src/material-widgets/icons/action/svg/production/ic_perm_device_information_24px.svg
new file mode 100644
index 0000000..89a3a8a
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_perm_device_information_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_perm_identity_24px.svg b/src/material-widgets/icons/action/svg/production/ic_perm_identity_24px.svg
new file mode 100644
index 0000000..a1ac943
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_perm_identity_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_perm_media_24px.svg b/src/material-widgets/icons/action/svg/production/ic_perm_media_24px.svg
new file mode 100644
index 0000000..7420f7b
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_perm_media_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_perm_phone_msg_24px.svg b/src/material-widgets/icons/action/svg/production/ic_perm_phone_msg_24px.svg
new file mode 100644
index 0000000..aa35fb8
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_perm_phone_msg_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_perm_scan_wifi_24px.svg b/src/material-widgets/icons/action/svg/production/ic_perm_scan_wifi_24px.svg
new file mode 100644
index 0000000..97dff31
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_perm_scan_wifi_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_pets_24px.svg b/src/material-widgets/icons/action/svg/production/ic_pets_24px.svg
new file mode 100644
index 0000000..e4d7d48
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_pets_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_picture_in_picture_24px.svg b/src/material-widgets/icons/action/svg/production/ic_picture_in_picture_24px.svg
new file mode 100644
index 0000000..b74607d
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_picture_in_picture_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_picture_in_picture_alt_24px.svg b/src/material-widgets/icons/action/svg/production/ic_picture_in_picture_alt_24px.svg
new file mode 100644
index 0000000..7f7e861
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_picture_in_picture_alt_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_play_for_work_24px.svg b/src/material-widgets/icons/action/svg/production/ic_play_for_work_24px.svg
new file mode 100644
index 0000000..3568dd9
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_play_for_work_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_polymer_24px.svg b/src/material-widgets/icons/action/svg/production/ic_polymer_24px.svg
new file mode 100644
index 0000000..11dfede
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_polymer_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_power_settings_new_24px.svg b/src/material-widgets/icons/action/svg/production/ic_power_settings_new_24px.svg
new file mode 100755
index 0000000..27e5293
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_power_settings_new_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_pregnant_woman_24px.svg b/src/material-widgets/icons/action/svg/production/ic_pregnant_woman_24px.svg
new file mode 100644
index 0000000..7e1be40
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_pregnant_woman_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_print_24px.svg b/src/material-widgets/icons/action/svg/production/ic_print_24px.svg
new file mode 100644
index 0000000..6128bd8
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_print_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_query_builder_24px.svg b/src/material-widgets/icons/action/svg/production/ic_query_builder_24px.svg
new file mode 100644
index 0000000..fac5f2e
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_query_builder_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_question_answer_24px.svg b/src/material-widgets/icons/action/svg/production/ic_question_answer_24px.svg
new file mode 100644
index 0000000..8c958d9
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_question_answer_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_receipt_24px.svg b/src/material-widgets/icons/action/svg/production/ic_receipt_24px.svg
new file mode 100644
index 0000000..1357bbd
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_receipt_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_record_voice_over_24px.svg b/src/material-widgets/icons/action/svg/production/ic_record_voice_over_24px.svg
new file mode 100644
index 0000000..2ce9798
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_record_voice_over_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_redeem_24px.svg b/src/material-widgets/icons/action/svg/production/ic_redeem_24px.svg
new file mode 100644
index 0000000..30e51d6
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_redeem_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_remove_shopping_cart_24px.svg b/src/material-widgets/icons/action/svg/production/ic_remove_shopping_cart_24px.svg
new file mode 100644
index 0000000..85566b8
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_remove_shopping_cart_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_reorder_24px.svg b/src/material-widgets/icons/action/svg/production/ic_reorder_24px.svg
new file mode 100644
index 0000000..7f277b8
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_reorder_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_report_problem_24px.svg b/src/material-widgets/icons/action/svg/production/ic_report_problem_24px.svg
new file mode 100644
index 0000000..dfcf997
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_report_problem_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_restore_24px.svg b/src/material-widgets/icons/action/svg/production/ic_restore_24px.svg
new file mode 100644
index 0000000..c00b86b
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_restore_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_restore_page_24px.svg b/src/material-widgets/icons/action/svg/production/ic_restore_page_24px.svg
new file mode 100644
index 0000000..8ceee58
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_restore_page_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_room_24px.svg b/src/material-widgets/icons/action/svg/production/ic_room_24px.svg
new file mode 100644
index 0000000..490afe9
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_room_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_rounded_corner_24px.svg b/src/material-widgets/icons/action/svg/production/ic_rounded_corner_24px.svg
new file mode 100644
index 0000000..8dc2bf4
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_rounded_corner_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_rowing_24px.svg b/src/material-widgets/icons/action/svg/production/ic_rowing_24px.svg
new file mode 100644
index 0000000..5c9f926
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_rowing_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_schedule_24px.svg b/src/material-widgets/icons/action/svg/production/ic_schedule_24px.svg
new file mode 100644
index 0000000..fac5f2e
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_schedule_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_search_24px.svg b/src/material-widgets/icons/action/svg/production/ic_search_24px.svg
new file mode 100644
index 0000000..1244005
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_search_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_settings_24px.svg b/src/material-widgets/icons/action/svg/production/ic_settings_24px.svg
new file mode 100644
index 0000000..a09d544
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_settings_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_settings_applications_24px.svg b/src/material-widgets/icons/action/svg/production/ic_settings_applications_24px.svg
new file mode 100644
index 0000000..38d4313
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_settings_applications_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_settings_backup_restore_24px.svg b/src/material-widgets/icons/action/svg/production/ic_settings_backup_restore_24px.svg
new file mode 100644
index 0000000..c5bb02b
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_settings_backup_restore_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_settings_bluetooth_24px.svg b/src/material-widgets/icons/action/svg/production/ic_settings_bluetooth_24px.svg
new file mode 100644
index 0000000..e4b2766
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_settings_bluetooth_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_settings_brightness_24px.svg b/src/material-widgets/icons/action/svg/production/ic_settings_brightness_24px.svg
new file mode 100644
index 0000000..d372055
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_settings_brightness_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_settings_cell_24px.svg b/src/material-widgets/icons/action/svg/production/ic_settings_cell_24px.svg
new file mode 100644
index 0000000..3f833df
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_settings_cell_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_settings_ethernet_24px.svg b/src/material-widgets/icons/action/svg/production/ic_settings_ethernet_24px.svg
new file mode 100644
index 0000000..8f9c077
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_settings_ethernet_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_settings_input_antenna_24px.svg b/src/material-widgets/icons/action/svg/production/ic_settings_input_antenna_24px.svg
new file mode 100644
index 0000000..12500f6
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_settings_input_antenna_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_settings_input_component_24px.svg b/src/material-widgets/icons/action/svg/production/ic_settings_input_component_24px.svg
new file mode 100644
index 0000000..df14aab
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_settings_input_component_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_settings_input_composite_24px.svg b/src/material-widgets/icons/action/svg/production/ic_settings_input_composite_24px.svg
new file mode 100644
index 0000000..df14aab
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_settings_input_composite_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_settings_input_hdmi_24px.svg b/src/material-widgets/icons/action/svg/production/ic_settings_input_hdmi_24px.svg
new file mode 100644
index 0000000..38b19d2
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_settings_input_hdmi_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_settings_input_svideo_24px.svg b/src/material-widgets/icons/action/svg/production/ic_settings_input_svideo_24px.svg
new file mode 100644
index 0000000..94d1cc3
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_settings_input_svideo_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_settings_overscan_24px.svg b/src/material-widgets/icons/action/svg/production/ic_settings_overscan_24px.svg
new file mode 100644
index 0000000..6befe39
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_settings_overscan_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_settings_phone_24px.svg b/src/material-widgets/icons/action/svg/production/ic_settings_phone_24px.svg
new file mode 100644
index 0000000..dd68714
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_settings_phone_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_settings_power_24px.svg b/src/material-widgets/icons/action/svg/production/ic_settings_power_24px.svg
new file mode 100644
index 0000000..e27fec1
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_settings_power_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_settings_remote_24px.svg b/src/material-widgets/icons/action/svg/production/ic_settings_remote_24px.svg
new file mode 100644
index 0000000..37fd295
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_settings_remote_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_settings_voice_24px.svg b/src/material-widgets/icons/action/svg/production/ic_settings_voice_24px.svg
new file mode 100644
index 0000000..c55b677
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_settings_voice_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_shop_24px.svg b/src/material-widgets/icons/action/svg/production/ic_shop_24px.svg
new file mode 100644
index 0000000..0b4e499
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_shop_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_shop_two_24px.svg b/src/material-widgets/icons/action/svg/production/ic_shop_two_24px.svg
new file mode 100644
index 0000000..534daf6
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_shop_two_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_shopping_basket_24px.svg b/src/material-widgets/icons/action/svg/production/ic_shopping_basket_24px.svg
new file mode 100644
index 0000000..3706021
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_shopping_basket_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_shopping_cart_24px.svg b/src/material-widgets/icons/action/svg/production/ic_shopping_cart_24px.svg
new file mode 100644
index 0000000..ee758e6
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_shopping_cart_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_speaker_notes_24px.svg b/src/material-widgets/icons/action/svg/production/ic_speaker_notes_24px.svg
new file mode 100644
index 0000000..d21630c
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_speaker_notes_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_speaker_notes_off_24px.svg b/src/material-widgets/icons/action/svg/production/ic_speaker_notes_off_24px.svg
new file mode 100644
index 0000000..185872f
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_speaker_notes_off_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_spellcheck_24px.svg b/src/material-widgets/icons/action/svg/production/ic_spellcheck_24px.svg
new file mode 100644
index 0000000..3c1dd06
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_spellcheck_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_stars_24px.svg b/src/material-widgets/icons/action/svg/production/ic_stars_24px.svg
new file mode 100644
index 0000000..ff48df4
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_stars_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_store_24px.svg b/src/material-widgets/icons/action/svg/production/ic_store_24px.svg
new file mode 100644
index 0000000..2b06cc5
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_store_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_subject_24px.svg b/src/material-widgets/icons/action/svg/production/ic_subject_24px.svg
new file mode 100644
index 0000000..3772a0b
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_subject_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_supervisor_account_24px.svg b/src/material-widgets/icons/action/svg/production/ic_supervisor_account_24px.svg
new file mode 100644
index 0000000..004b4af
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_supervisor_account_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_swap_horiz_24px.svg b/src/material-widgets/icons/action/svg/production/ic_swap_horiz_24px.svg
new file mode 100644
index 0000000..86e9cad
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_swap_horiz_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_swap_vert_24px.svg b/src/material-widgets/icons/action/svg/production/ic_swap_vert_24px.svg
new file mode 100644
index 0000000..bcdee8d
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_swap_vert_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_swap_vertical_circle_24px.svg b/src/material-widgets/icons/action/svg/production/ic_swap_vertical_circle_24px.svg
new file mode 100644
index 0000000..40e62a2
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_swap_vertical_circle_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_system_update_alt_24px.svg b/src/material-widgets/icons/action/svg/production/ic_system_update_alt_24px.svg
new file mode 100644
index 0000000..4f3e4a2
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_system_update_alt_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_tab_24px.svg b/src/material-widgets/icons/action/svg/production/ic_tab_24px.svg
new file mode 100644
index 0000000..f7e96a8
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_tab_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_tab_unselected_24px.svg b/src/material-widgets/icons/action/svg/production/ic_tab_unselected_24px.svg
new file mode 100644
index 0000000..f5d8a3d
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_tab_unselected_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_theaters_24px.svg b/src/material-widgets/icons/action/svg/production/ic_theaters_24px.svg
new file mode 100644
index 0000000..74652a6
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_theaters_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_thumb_down_24px.svg b/src/material-widgets/icons/action/svg/production/ic_thumb_down_24px.svg
new file mode 100644
index 0000000..a27f6dc
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_thumb_down_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_thumb_up_24px.svg b/src/material-widgets/icons/action/svg/production/ic_thumb_up_24px.svg
new file mode 100644
index 0000000..f64ad7b
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_thumb_up_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_thumbs_up_down_24px.svg b/src/material-widgets/icons/action/svg/production/ic_thumbs_up_down_24px.svg
new file mode 100644
index 0000000..39e9a0e
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_thumbs_up_down_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_timeline_24px.svg b/src/material-widgets/icons/action/svg/production/ic_timeline_24px.svg
new file mode 100644
index 0000000..9dc0ca3
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_timeline_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_toc_24px.svg b/src/material-widgets/icons/action/svg/production/ic_toc_24px.svg
new file mode 100644
index 0000000..238110f
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_toc_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_today_24px.svg b/src/material-widgets/icons/action/svg/production/ic_today_24px.svg
new file mode 100644
index 0000000..f99cddc
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_today_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_toll_24px.svg b/src/material-widgets/icons/action/svg/production/ic_toll_24px.svg
new file mode 100755
index 0000000..a1b0cf1
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_toll_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_touch_app_24px.svg b/src/material-widgets/icons/action/svg/production/ic_touch_app_24px.svg
new file mode 100644
index 0000000..18b65e1
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_touch_app_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_track_changes_24px.svg b/src/material-widgets/icons/action/svg/production/ic_track_changes_24px.svg
new file mode 100644
index 0000000..ed9f2aa
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_track_changes_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_translate_24px.svg b/src/material-widgets/icons/action/svg/production/ic_translate_24px.svg
new file mode 100644
index 0000000..0821ae1
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_translate_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_trending_down_24px.svg b/src/material-widgets/icons/action/svg/production/ic_trending_down_24px.svg
new file mode 100644
index 0000000..7a49746
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_trending_down_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_trending_flat_24px.svg b/src/material-widgets/icons/action/svg/production/ic_trending_flat_24px.svg
new file mode 100644
index 0000000..bc56f81
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_trending_flat_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_trending_up_24px.svg b/src/material-widgets/icons/action/svg/production/ic_trending_up_24px.svg
new file mode 100644
index 0000000..4728d22
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_trending_up_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_turned_in_24px.svg b/src/material-widgets/icons/action/svg/production/ic_turned_in_24px.svg
new file mode 100644
index 0000000..1d507a6
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_turned_in_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_turned_in_not_24px.svg b/src/material-widgets/icons/action/svg/production/ic_turned_in_not_24px.svg
new file mode 100644
index 0000000..f178b05
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_turned_in_not_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_update_24px.svg b/src/material-widgets/icons/action/svg/production/ic_update_24px.svg
new file mode 100644
index 0000000..d9576fd
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_update_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_verified_user_24px.svg b/src/material-widgets/icons/action/svg/production/ic_verified_user_24px.svg
new file mode 100644
index 0000000..56460ee
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_verified_user_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_view_agenda_24px.svg b/src/material-widgets/icons/action/svg/production/ic_view_agenda_24px.svg
new file mode 100644
index 0000000..b5258fe
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_view_agenda_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_view_array_24px.svg b/src/material-widgets/icons/action/svg/production/ic_view_array_24px.svg
new file mode 100644
index 0000000..b969592
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_view_array_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_view_carousel_24px.svg b/src/material-widgets/icons/action/svg/production/ic_view_carousel_24px.svg
new file mode 100644
index 0000000..27483c8
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_view_carousel_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_view_column_24px.svg b/src/material-widgets/icons/action/svg/production/ic_view_column_24px.svg
new file mode 100644
index 0000000..3ef9eab
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_view_column_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_view_day_24px.svg b/src/material-widgets/icons/action/svg/production/ic_view_day_24px.svg
new file mode 100644
index 0000000..34972e0
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_view_day_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_view_headline_24px.svg b/src/material-widgets/icons/action/svg/production/ic_view_headline_24px.svg
new file mode 100755
index 0000000..1ee5f9a
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_view_headline_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_view_list_24px.svg b/src/material-widgets/icons/action/svg/production/ic_view_list_24px.svg
new file mode 100644
index 0000000..3e82bad
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_view_list_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_view_module_24px.svg b/src/material-widgets/icons/action/svg/production/ic_view_module_24px.svg
new file mode 100644
index 0000000..c5383b1
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_view_module_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_view_quilt_24px.svg b/src/material-widgets/icons/action/svg/production/ic_view_quilt_24px.svg
new file mode 100644
index 0000000..545037a
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_view_quilt_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_view_stream_24px.svg b/src/material-widgets/icons/action/svg/production/ic_view_stream_24px.svg
new file mode 100644
index 0000000..6c81f14
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_view_stream_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_view_week_24px.svg b/src/material-widgets/icons/action/svg/production/ic_view_week_24px.svg
new file mode 100644
index 0000000..cc535ed
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_view_week_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_visibility_24px.svg b/src/material-widgets/icons/action/svg/production/ic_visibility_24px.svg
new file mode 100644
index 0000000..5c700e3
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_visibility_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_visibility_off_24px.svg b/src/material-widgets/icons/action/svg/production/ic_visibility_off_24px.svg
new file mode 100644
index 0000000..a09d176
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_visibility_off_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_watch_later_24px.svg b/src/material-widgets/icons/action/svg/production/ic_watch_later_24px.svg
new file mode 100644
index 0000000..aad70b2
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_watch_later_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_work_24px.svg b/src/material-widgets/icons/action/svg/production/ic_work_24px.svg
new file mode 100644
index 0000000..ac4f81c
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_work_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_youtube_searched_for_24px.svg b/src/material-widgets/icons/action/svg/production/ic_youtube_searched_for_24px.svg
new file mode 100644
index 0000000..36e47e6
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_youtube_searched_for_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_zoom_in_24px.svg b/src/material-widgets/icons/action/svg/production/ic_zoom_in_24px.svg
new file mode 100644
index 0000000..fd48a80
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_zoom_in_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/action/svg/production/ic_zoom_out_24px.svg b/src/material-widgets/icons/action/svg/production/ic_zoom_out_24px.svg
new file mode 100644
index 0000000..e70df37
--- /dev/null
+++ b/src/material-widgets/icons/action/svg/production/ic_zoom_out_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/alert/svg/production/ic_add_alert_24px.svg b/src/material-widgets/icons/alert/svg/production/ic_add_alert_24px.svg
new file mode 100644
index 0000000..53ee4ab
--- /dev/null
+++ b/src/material-widgets/icons/alert/svg/production/ic_add_alert_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/alert/svg/production/ic_error_24px.svg b/src/material-widgets/icons/alert/svg/production/ic_error_24px.svg
new file mode 100644
index 0000000..d30cc3a
--- /dev/null
+++ b/src/material-widgets/icons/alert/svg/production/ic_error_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/alert/svg/production/ic_error_outline_24px.svg b/src/material-widgets/icons/alert/svg/production/ic_error_outline_24px.svg
new file mode 100755
index 0000000..ad877f3
--- /dev/null
+++ b/src/material-widgets/icons/alert/svg/production/ic_error_outline_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/alert/svg/production/ic_warning_24px.svg b/src/material-widgets/icons/alert/svg/production/ic_warning_24px.svg
new file mode 100644
index 0000000..dfcf997
--- /dev/null
+++ b/src/material-widgets/icons/alert/svg/production/ic_warning_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_add_to_queue_24px.svg b/src/material-widgets/icons/av/svg/production/ic_add_to_queue_24px.svg
new file mode 100644
index 0000000..1970312
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_add_to_queue_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_airplay_24px.svg b/src/material-widgets/icons/av/svg/production/ic_airplay_24px.svg
new file mode 100644
index 0000000..15939cb
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_airplay_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_album_24px.svg b/src/material-widgets/icons/av/svg/production/ic_album_24px.svg
new file mode 100644
index 0000000..e153be6
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_album_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_art_track_24px.svg b/src/material-widgets/icons/av/svg/production/ic_art_track_24px.svg
new file mode 100644
index 0000000..88a17a6
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_art_track_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_av_timer_24px.svg b/src/material-widgets/icons/av/svg/production/ic_av_timer_24px.svg
new file mode 100644
index 0000000..cc59272
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_av_timer_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_branding_watermark_24px.svg b/src/material-widgets/icons/av/svg/production/ic_branding_watermark_24px.svg
new file mode 100644
index 0000000..1ea828b
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_branding_watermark_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_call_to_action_24px.svg b/src/material-widgets/icons/av/svg/production/ic_call_to_action_24px.svg
new file mode 100644
index 0000000..dcf91db
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_call_to_action_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_closed_caption_24px.svg b/src/material-widgets/icons/av/svg/production/ic_closed_caption_24px.svg
new file mode 100644
index 0000000..4df1e8f
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_closed_caption_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_equalizer_24px.svg b/src/material-widgets/icons/av/svg/production/ic_equalizer_24px.svg
new file mode 100644
index 0000000..d6031c3
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_equalizer_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_explicit_24px.svg b/src/material-widgets/icons/av/svg/production/ic_explicit_24px.svg
new file mode 100644
index 0000000..0eb1bb1
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_explicit_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_fast_forward_24px.svg b/src/material-widgets/icons/av/svg/production/ic_fast_forward_24px.svg
new file mode 100644
index 0000000..e81f756
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_fast_forward_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_fast_rewind_24px.svg b/src/material-widgets/icons/av/svg/production/ic_fast_rewind_24px.svg
new file mode 100644
index 0000000..cb82d8a
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_fast_rewind_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_featured_play_list_24px.svg b/src/material-widgets/icons/av/svg/production/ic_featured_play_list_24px.svg
new file mode 100644
index 0000000..1aa2c53
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_featured_play_list_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_featured_video_24px.svg b/src/material-widgets/icons/av/svg/production/ic_featured_video_24px.svg
new file mode 100644
index 0000000..b118b55
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_featured_video_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_fiber_dvr_24px.svg b/src/material-widgets/icons/av/svg/production/ic_fiber_dvr_24px.svg
new file mode 100644
index 0000000..26b046f
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_fiber_dvr_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_fiber_manual_record_24px.svg b/src/material-widgets/icons/av/svg/production/ic_fiber_manual_record_24px.svg
new file mode 100644
index 0000000..54da42f
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_fiber_manual_record_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_fiber_new_24px.svg b/src/material-widgets/icons/av/svg/production/ic_fiber_new_24px.svg
new file mode 100644
index 0000000..943be16
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_fiber_new_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_fiber_pin_24px.svg b/src/material-widgets/icons/av/svg/production/ic_fiber_pin_24px.svg
new file mode 100644
index 0000000..e4a5e0c
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_fiber_pin_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_fiber_smart_record_24px.svg b/src/material-widgets/icons/av/svg/production/ic_fiber_smart_record_24px.svg
new file mode 100644
index 0000000..02602c4
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_fiber_smart_record_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_forward_10_24px.svg b/src/material-widgets/icons/av/svg/production/ic_forward_10_24px.svg
new file mode 100644
index 0000000..9907f51
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_forward_10_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_forward_30_24px.svg b/src/material-widgets/icons/av/svg/production/ic_forward_30_24px.svg
new file mode 100644
index 0000000..1903072
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_forward_30_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_forward_5_24px.svg b/src/material-widgets/icons/av/svg/production/ic_forward_5_24px.svg
new file mode 100644
index 0000000..c604ca3
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_forward_5_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_games_24px.svg b/src/material-widgets/icons/av/svg/production/ic_games_24px.svg
new file mode 100644
index 0000000..62a4c9b
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_games_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_hd_24px.svg b/src/material-widgets/icons/av/svg/production/ic_hd_24px.svg
new file mode 100644
index 0000000..1fd7a76
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_hd_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_hearing_24px.svg b/src/material-widgets/icons/av/svg/production/ic_hearing_24px.svg
new file mode 100644
index 0000000..1efd85f
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_hearing_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_high_quality_24px.svg b/src/material-widgets/icons/av/svg/production/ic_high_quality_24px.svg
new file mode 100644
index 0000000..8d8a29d
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_high_quality_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_library_add_24px.svg b/src/material-widgets/icons/av/svg/production/ic_library_add_24px.svg
new file mode 100644
index 0000000..baea3e9
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_library_add_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_library_books_24px.svg b/src/material-widgets/icons/av/svg/production/ic_library_books_24px.svg
new file mode 100644
index 0000000..614c7bf
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_library_books_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_library_music_24px.svg b/src/material-widgets/icons/av/svg/production/ic_library_music_24px.svg
new file mode 100644
index 0000000..357e6d4
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_library_music_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_loop_24px.svg b/src/material-widgets/icons/av/svg/production/ic_loop_24px.svg
new file mode 100644
index 0000000..327ff63
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_loop_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_mic_24px.svg b/src/material-widgets/icons/av/svg/production/ic_mic_24px.svg
new file mode 100644
index 0000000..e5691ca
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_mic_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_mic_none_24px.svg b/src/material-widgets/icons/av/svg/production/ic_mic_none_24px.svg
new file mode 100644
index 0000000..d82849a
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_mic_none_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_mic_off_24px.svg b/src/material-widgets/icons/av/svg/production/ic_mic_off_24px.svg
new file mode 100644
index 0000000..4c27fb5
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_mic_off_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_movie_24px.svg b/src/material-widgets/icons/av/svg/production/ic_movie_24px.svg
new file mode 100644
index 0000000..8bbbb53
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_movie_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_music_video_24px.svg b/src/material-widgets/icons/av/svg/production/ic_music_video_24px.svg
new file mode 100644
index 0000000..2fe246c
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_music_video_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_new_releases_24px.svg b/src/material-widgets/icons/av/svg/production/ic_new_releases_24px.svg
new file mode 100644
index 0000000..37ed86f
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_new_releases_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_not_interested_24px.svg b/src/material-widgets/icons/av/svg/production/ic_not_interested_24px.svg
new file mode 100644
index 0000000..065210c
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_not_interested_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_note_24px.svg b/src/material-widgets/icons/av/svg/production/ic_note_24px.svg
new file mode 100644
index 0000000..76919c2
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_note_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_pause_24px.svg b/src/material-widgets/icons/av/svg/production/ic_pause_24px.svg
new file mode 100644
index 0000000..c20e156
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_pause_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_pause_circle_filled_24px.svg b/src/material-widgets/icons/av/svg/production/ic_pause_circle_filled_24px.svg
new file mode 100644
index 0000000..e4763b2
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_pause_circle_filled_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_pause_circle_outline_24px.svg b/src/material-widgets/icons/av/svg/production/ic_pause_circle_outline_24px.svg
new file mode 100644
index 0000000..b1ea4fe
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_pause_circle_outline_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_play_arrow_24px.svg b/src/material-widgets/icons/av/svg/production/ic_play_arrow_24px.svg
new file mode 100644
index 0000000..c5e1a4c
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_play_arrow_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_play_circle_filled_24px.svg b/src/material-widgets/icons/av/svg/production/ic_play_circle_filled_24px.svg
new file mode 100644
index 0000000..dd022c5
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_play_circle_filled_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_play_circle_outline_24px.svg b/src/material-widgets/icons/av/svg/production/ic_play_circle_outline_24px.svg
new file mode 100644
index 0000000..90b5a4e
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_play_circle_outline_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_playlist_add_24px.svg b/src/material-widgets/icons/av/svg/production/ic_playlist_add_24px.svg
new file mode 100644
index 0000000..a0ee454
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_playlist_add_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_playlist_add_check_24px.svg b/src/material-widgets/icons/av/svg/production/ic_playlist_add_check_24px.svg
new file mode 100644
index 0000000..c455dab
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_playlist_add_check_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_playlist_play_24px.svg b/src/material-widgets/icons/av/svg/production/ic_playlist_play_24px.svg
new file mode 100644
index 0000000..4b049f7
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_playlist_play_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_queue_24px.svg b/src/material-widgets/icons/av/svg/production/ic_queue_24px.svg
new file mode 100644
index 0000000..baea3e9
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_queue_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_queue_music_24px.svg b/src/material-widgets/icons/av/svg/production/ic_queue_music_24px.svg
new file mode 100644
index 0000000..5fed92b
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_queue_music_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_queue_play_next_24px.svg b/src/material-widgets/icons/av/svg/production/ic_queue_play_next_24px.svg
new file mode 100644
index 0000000..db90329
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_queue_play_next_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_radio_24px.svg b/src/material-widgets/icons/av/svg/production/ic_radio_24px.svg
new file mode 100644
index 0000000..6729cf5
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_radio_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_recent_actors_24px.svg b/src/material-widgets/icons/av/svg/production/ic_recent_actors_24px.svg
new file mode 100644
index 0000000..f1d8deb
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_recent_actors_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_remove_from_queue_24px.svg b/src/material-widgets/icons/av/svg/production/ic_remove_from_queue_24px.svg
new file mode 100644
index 0000000..bbd2791
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_remove_from_queue_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_repeat_24px.svg b/src/material-widgets/icons/av/svg/production/ic_repeat_24px.svg
new file mode 100644
index 0000000..6c58d4e
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_repeat_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_repeat_one_24px.svg b/src/material-widgets/icons/av/svg/production/ic_repeat_one_24px.svg
new file mode 100644
index 0000000..fcc3d14
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_repeat_one_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_replay_10_24px.svg b/src/material-widgets/icons/av/svg/production/ic_replay_10_24px.svg
new file mode 100644
index 0000000..6ddad5d
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_replay_10_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_replay_24px.svg b/src/material-widgets/icons/av/svg/production/ic_replay_24px.svg
new file mode 100644
index 0000000..c3c75e7
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_replay_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_replay_30_24px.svg b/src/material-widgets/icons/av/svg/production/ic_replay_30_24px.svg
new file mode 100644
index 0000000..7c98374
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_replay_30_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_replay_5_24px.svg b/src/material-widgets/icons/av/svg/production/ic_replay_5_24px.svg
new file mode 100644
index 0000000..93d1b21
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_replay_5_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_shuffle_24px.svg b/src/material-widgets/icons/av/svg/production/ic_shuffle_24px.svg
new file mode 100644
index 0000000..f5bcf6f
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_shuffle_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_skip_next_24px.svg b/src/material-widgets/icons/av/svg/production/ic_skip_next_24px.svg
new file mode 100644
index 0000000..178eca3
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_skip_next_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_skip_previous_24px.svg b/src/material-widgets/icons/av/svg/production/ic_skip_previous_24px.svg
new file mode 100644
index 0000000..e719ff5
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_skip_previous_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_slow_motion_video_24px.svg b/src/material-widgets/icons/av/svg/production/ic_slow_motion_video_24px.svg
new file mode 100644
index 0000000..b28f886
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_slow_motion_video_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_snooze_24px.svg b/src/material-widgets/icons/av/svg/production/ic_snooze_24px.svg
new file mode 100644
index 0000000..738bda8
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_snooze_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_sort_by_alpha_24px.svg b/src/material-widgets/icons/av/svg/production/ic_sort_by_alpha_24px.svg
new file mode 100644
index 0000000..b9975f9
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_sort_by_alpha_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_stop_24px.svg b/src/material-widgets/icons/av/svg/production/ic_stop_24px.svg
new file mode 100644
index 0000000..48d3f2d
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_stop_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_subscriptions_24px.svg b/src/material-widgets/icons/av/svg/production/ic_subscriptions_24px.svg
new file mode 100644
index 0000000..b5b5250
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_subscriptions_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_subtitles_24px.svg b/src/material-widgets/icons/av/svg/production/ic_subtitles_24px.svg
new file mode 100644
index 0000000..ea10bfd
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_subtitles_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_surround_sound_24px.svg b/src/material-widgets/icons/av/svg/production/ic_surround_sound_24px.svg
new file mode 100644
index 0000000..675fd39
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_surround_sound_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_video_call_24px.svg b/src/material-widgets/icons/av/svg/production/ic_video_call_24px.svg
new file mode 100644
index 0000000..e1a21e1
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_video_call_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_video_label_24px.svg b/src/material-widgets/icons/av/svg/production/ic_video_label_24px.svg
new file mode 100644
index 0000000..cb90129
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_video_label_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_video_library_24px.svg b/src/material-widgets/icons/av/svg/production/ic_video_library_24px.svg
new file mode 100644
index 0000000..f69f3cb
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_video_library_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_videocam_24px.svg b/src/material-widgets/icons/av/svg/production/ic_videocam_24px.svg
new file mode 100644
index 0000000..a2606b1
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_videocam_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_videocam_off_24px.svg b/src/material-widgets/icons/av/svg/production/ic_videocam_off_24px.svg
new file mode 100644
index 0000000..134c583
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_videocam_off_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_volume_down_24px.svg b/src/material-widgets/icons/av/svg/production/ic_volume_down_24px.svg
new file mode 100644
index 0000000..b993e7c
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_volume_down_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_volume_mute_24px.svg b/src/material-widgets/icons/av/svg/production/ic_volume_mute_24px.svg
new file mode 100644
index 0000000..66b7daf
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_volume_mute_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_volume_off_24px.svg b/src/material-widgets/icons/av/svg/production/ic_volume_off_24px.svg
new file mode 100644
index 0000000..b10f2bf
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_volume_off_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_volume_up_24px.svg b/src/material-widgets/icons/av/svg/production/ic_volume_up_24px.svg
new file mode 100644
index 0000000..fe7100e
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_volume_up_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_web_24px.svg b/src/material-widgets/icons/av/svg/production/ic_web_24px.svg
new file mode 100644
index 0000000..2f2150c
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_web_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/av/svg/production/ic_web_asset_24px.svg b/src/material-widgets/icons/av/svg/production/ic_web_asset_24px.svg
new file mode 100644
index 0000000..74e61d3
--- /dev/null
+++ b/src/material-widgets/icons/av/svg/production/ic_web_asset_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/communication/svg/production/ic_business_24px.svg b/src/material-widgets/icons/communication/svg/production/ic_business_24px.svg
new file mode 100644
index 0000000..bfaefa1
--- /dev/null
+++ b/src/material-widgets/icons/communication/svg/production/ic_business_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/communication/svg/production/ic_call_24px.svg b/src/material-widgets/icons/communication/svg/production/ic_call_24px.svg
new file mode 100644
index 0000000..5908b6a
--- /dev/null
+++ b/src/material-widgets/icons/communication/svg/production/ic_call_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/communication/svg/production/ic_call_end_24px.svg b/src/material-widgets/icons/communication/svg/production/ic_call_end_24px.svg
new file mode 100644
index 0000000..c3fe17b
--- /dev/null
+++ b/src/material-widgets/icons/communication/svg/production/ic_call_end_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/communication/svg/production/ic_call_made_24px.svg b/src/material-widgets/icons/communication/svg/production/ic_call_made_24px.svg
new file mode 100644
index 0000000..6a58bdf
--- /dev/null
+++ b/src/material-widgets/icons/communication/svg/production/ic_call_made_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/communication/svg/production/ic_call_merge_24px.svg b/src/material-widgets/icons/communication/svg/production/ic_call_merge_24px.svg
new file mode 100644
index 0000000..b10772d
--- /dev/null
+++ b/src/material-widgets/icons/communication/svg/production/ic_call_merge_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/communication/svg/production/ic_call_missed_24px.svg b/src/material-widgets/icons/communication/svg/production/ic_call_missed_24px.svg
new file mode 100644
index 0000000..db0f8cc
--- /dev/null
+++ b/src/material-widgets/icons/communication/svg/production/ic_call_missed_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/communication/svg/production/ic_call_missed_outgoing_24px.svg b/src/material-widgets/icons/communication/svg/production/ic_call_missed_outgoing_24px.svg
new file mode 100644
index 0000000..3385d42
--- /dev/null
+++ b/src/material-widgets/icons/communication/svg/production/ic_call_missed_outgoing_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/communication/svg/production/ic_call_received_24px.svg b/src/material-widgets/icons/communication/svg/production/ic_call_received_24px.svg
new file mode 100644
index 0000000..0516080
--- /dev/null
+++ b/src/material-widgets/icons/communication/svg/production/ic_call_received_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/communication/svg/production/ic_call_split_24px.svg b/src/material-widgets/icons/communication/svg/production/ic_call_split_24px.svg
new file mode 100644
index 0000000..9dd562c
--- /dev/null
+++ b/src/material-widgets/icons/communication/svg/production/ic_call_split_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/communication/svg/production/ic_chat_24px.svg b/src/material-widgets/icons/communication/svg/production/ic_chat_24px.svg
new file mode 100644
index 0000000..1c68f72
--- /dev/null
+++ b/src/material-widgets/icons/communication/svg/production/ic_chat_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/communication/svg/production/ic_chat_bubble_24px.svg b/src/material-widgets/icons/communication/svg/production/ic_chat_bubble_24px.svg
new file mode 100644
index 0000000..d447be3
--- /dev/null
+++ b/src/material-widgets/icons/communication/svg/production/ic_chat_bubble_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/communication/svg/production/ic_chat_bubble_outline_24px.svg b/src/material-widgets/icons/communication/svg/production/ic_chat_bubble_outline_24px.svg
new file mode 100755
index 0000000..e1a36ee
--- /dev/null
+++ b/src/material-widgets/icons/communication/svg/production/ic_chat_bubble_outline_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/communication/svg/production/ic_clear_all_24px.svg b/src/material-widgets/icons/communication/svg/production/ic_clear_all_24px.svg
new file mode 100644
index 0000000..82a7e3c
--- /dev/null
+++ b/src/material-widgets/icons/communication/svg/production/ic_clear_all_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/communication/svg/production/ic_comment_24px.svg b/src/material-widgets/icons/communication/svg/production/ic_comment_24px.svg
new file mode 100644
index 0000000..db645e8
--- /dev/null
+++ b/src/material-widgets/icons/communication/svg/production/ic_comment_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/communication/svg/production/ic_contact_mail_24px.svg b/src/material-widgets/icons/communication/svg/production/ic_contact_mail_24px.svg
new file mode 100644
index 0000000..ad23103
--- /dev/null
+++ b/src/material-widgets/icons/communication/svg/production/ic_contact_mail_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/communication/svg/production/ic_contact_phone_24px.svg b/src/material-widgets/icons/communication/svg/production/ic_contact_phone_24px.svg
new file mode 100644
index 0000000..6945887
--- /dev/null
+++ b/src/material-widgets/icons/communication/svg/production/ic_contact_phone_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/communication/svg/production/ic_contacts_24px.svg b/src/material-widgets/icons/communication/svg/production/ic_contacts_24px.svg
new file mode 100644
index 0000000..e9a0749
--- /dev/null
+++ b/src/material-widgets/icons/communication/svg/production/ic_contacts_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/communication/svg/production/ic_dialer_sip_24px.svg b/src/material-widgets/icons/communication/svg/production/ic_dialer_sip_24px.svg
new file mode 100644
index 0000000..247068a
--- /dev/null
+++ b/src/material-widgets/icons/communication/svg/production/ic_dialer_sip_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/communication/svg/production/ic_dialpad_24px.svg b/src/material-widgets/icons/communication/svg/production/ic_dialpad_24px.svg
new file mode 100644
index 0000000..1d82c79
--- /dev/null
+++ b/src/material-widgets/icons/communication/svg/production/ic_dialpad_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/communication/svg/production/ic_email_24px.svg b/src/material-widgets/icons/communication/svg/production/ic_email_24px.svg
new file mode 100644
index 0000000..f2c5b4f
--- /dev/null
+++ b/src/material-widgets/icons/communication/svg/production/ic_email_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/communication/svg/production/ic_forum_24px.svg b/src/material-widgets/icons/communication/svg/production/ic_forum_24px.svg
new file mode 100644
index 0000000..8c958d9
--- /dev/null
+++ b/src/material-widgets/icons/communication/svg/production/ic_forum_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/communication/svg/production/ic_import_contacts_24px.svg b/src/material-widgets/icons/communication/svg/production/ic_import_contacts_24px.svg
new file mode 100644
index 0000000..154d45b
--- /dev/null
+++ b/src/material-widgets/icons/communication/svg/production/ic_import_contacts_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/communication/svg/production/ic_import_export_24px.svg b/src/material-widgets/icons/communication/svg/production/ic_import_export_24px.svg
new file mode 100644
index 0000000..1af2dbf
--- /dev/null
+++ b/src/material-widgets/icons/communication/svg/production/ic_import_export_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/communication/svg/production/ic_invert_colors_off_24px.svg b/src/material-widgets/icons/communication/svg/production/ic_invert_colors_off_24px.svg
new file mode 100644
index 0000000..c880d9b
--- /dev/null
+++ b/src/material-widgets/icons/communication/svg/production/ic_invert_colors_off_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/communication/svg/production/ic_live_help_24px.svg b/src/material-widgets/icons/communication/svg/production/ic_live_help_24px.svg
new file mode 100644
index 0000000..abe3129
--- /dev/null
+++ b/src/material-widgets/icons/communication/svg/production/ic_live_help_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/communication/svg/production/ic_location_off_24px.svg b/src/material-widgets/icons/communication/svg/production/ic_location_off_24px.svg
new file mode 100644
index 0000000..270259b
--- /dev/null
+++ b/src/material-widgets/icons/communication/svg/production/ic_location_off_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/communication/svg/production/ic_location_on_24px.svg b/src/material-widgets/icons/communication/svg/production/ic_location_on_24px.svg
new file mode 100644
index 0000000..490afe9
--- /dev/null
+++ b/src/material-widgets/icons/communication/svg/production/ic_location_on_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/communication/svg/production/ic_mail_outline_24px.svg b/src/material-widgets/icons/communication/svg/production/ic_mail_outline_24px.svg
new file mode 100644
index 0000000..c8798e6
--- /dev/null
+++ b/src/material-widgets/icons/communication/svg/production/ic_mail_outline_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/communication/svg/production/ic_message_24px.svg b/src/material-widgets/icons/communication/svg/production/ic_message_24px.svg
new file mode 100644
index 0000000..0dfd671
--- /dev/null
+++ b/src/material-widgets/icons/communication/svg/production/ic_message_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/communication/svg/production/ic_no_sim_24px.svg b/src/material-widgets/icons/communication/svg/production/ic_no_sim_24px.svg
new file mode 100644
index 0000000..d6b8e22
--- /dev/null
+++ b/src/material-widgets/icons/communication/svg/production/ic_no_sim_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/communication/svg/production/ic_phone_24px.svg b/src/material-widgets/icons/communication/svg/production/ic_phone_24px.svg
new file mode 100644
index 0000000..5908b6a
--- /dev/null
+++ b/src/material-widgets/icons/communication/svg/production/ic_phone_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/communication/svg/production/ic_phonelink_erase_24px.svg b/src/material-widgets/icons/communication/svg/production/ic_phonelink_erase_24px.svg
new file mode 100644
index 0000000..6d99266
--- /dev/null
+++ b/src/material-widgets/icons/communication/svg/production/ic_phonelink_erase_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/communication/svg/production/ic_phonelink_lock_24px.svg b/src/material-widgets/icons/communication/svg/production/ic_phonelink_lock_24px.svg
new file mode 100644
index 0000000..cbf3606
--- /dev/null
+++ b/src/material-widgets/icons/communication/svg/production/ic_phonelink_lock_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/communication/svg/production/ic_phonelink_ring_24px.svg b/src/material-widgets/icons/communication/svg/production/ic_phonelink_ring_24px.svg
new file mode 100644
index 0000000..34cb3a8
--- /dev/null
+++ b/src/material-widgets/icons/communication/svg/production/ic_phonelink_ring_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/communication/svg/production/ic_phonelink_setup_24px.svg b/src/material-widgets/icons/communication/svg/production/ic_phonelink_setup_24px.svg
new file mode 100644
index 0000000..0aef7a0
--- /dev/null
+++ b/src/material-widgets/icons/communication/svg/production/ic_phonelink_setup_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/communication/svg/production/ic_portable_wifi_off_24px.svg b/src/material-widgets/icons/communication/svg/production/ic_portable_wifi_off_24px.svg
new file mode 100644
index 0000000..c7fc011
--- /dev/null
+++ b/src/material-widgets/icons/communication/svg/production/ic_portable_wifi_off_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/communication/svg/production/ic_present_to_all_24px.svg b/src/material-widgets/icons/communication/svg/production/ic_present_to_all_24px.svg
new file mode 100644
index 0000000..d63f7b9
--- /dev/null
+++ b/src/material-widgets/icons/communication/svg/production/ic_present_to_all_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/communication/svg/production/ic_ring_volume_24px.svg b/src/material-widgets/icons/communication/svg/production/ic_ring_volume_24px.svg
new file mode 100644
index 0000000..25f1b5d
--- /dev/null
+++ b/src/material-widgets/icons/communication/svg/production/ic_ring_volume_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/communication/svg/production/ic_rss_feed_24px.svg b/src/material-widgets/icons/communication/svg/production/ic_rss_feed_24px.svg
new file mode 100644
index 0000000..721872d
--- /dev/null
+++ b/src/material-widgets/icons/communication/svg/production/ic_rss_feed_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/communication/svg/production/ic_screen_share_24px.svg b/src/material-widgets/icons/communication/svg/production/ic_screen_share_24px.svg
new file mode 100644
index 0000000..4cb0976
--- /dev/null
+++ b/src/material-widgets/icons/communication/svg/production/ic_screen_share_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/communication/svg/production/ic_speaker_phone_24px.svg b/src/material-widgets/icons/communication/svg/production/ic_speaker_phone_24px.svg
new file mode 100644
index 0000000..e812da7
--- /dev/null
+++ b/src/material-widgets/icons/communication/svg/production/ic_speaker_phone_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/communication/svg/production/ic_stay_current_landscape_24px.svg b/src/material-widgets/icons/communication/svg/production/ic_stay_current_landscape_24px.svg
new file mode 100644
index 0000000..b6c98c2
--- /dev/null
+++ b/src/material-widgets/icons/communication/svg/production/ic_stay_current_landscape_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/communication/svg/production/ic_stay_current_portrait_24px.svg b/src/material-widgets/icons/communication/svg/production/ic_stay_current_portrait_24px.svg
new file mode 100644
index 0000000..fed6cce
--- /dev/null
+++ b/src/material-widgets/icons/communication/svg/production/ic_stay_current_portrait_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/communication/svg/production/ic_stay_primary_landscape_24px.svg b/src/material-widgets/icons/communication/svg/production/ic_stay_primary_landscape_24px.svg
new file mode 100644
index 0000000..b6c98c2
--- /dev/null
+++ b/src/material-widgets/icons/communication/svg/production/ic_stay_primary_landscape_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/communication/svg/production/ic_stay_primary_portrait_24px.svg b/src/material-widgets/icons/communication/svg/production/ic_stay_primary_portrait_24px.svg
new file mode 100644
index 0000000..fed6cce
--- /dev/null
+++ b/src/material-widgets/icons/communication/svg/production/ic_stay_primary_portrait_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/communication/svg/production/ic_stop_screen_share_24px.svg b/src/material-widgets/icons/communication/svg/production/ic_stop_screen_share_24px.svg
new file mode 100644
index 0000000..ec70b9b
--- /dev/null
+++ b/src/material-widgets/icons/communication/svg/production/ic_stop_screen_share_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/communication/svg/production/ic_swap_calls_24px.svg b/src/material-widgets/icons/communication/svg/production/ic_swap_calls_24px.svg
new file mode 100644
index 0000000..53ab208
--- /dev/null
+++ b/src/material-widgets/icons/communication/svg/production/ic_swap_calls_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/communication/svg/production/ic_textsms_24px.svg b/src/material-widgets/icons/communication/svg/production/ic_textsms_24px.svg
new file mode 100644
index 0000000..b427d45
--- /dev/null
+++ b/src/material-widgets/icons/communication/svg/production/ic_textsms_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/communication/svg/production/ic_voicemail_24px.svg b/src/material-widgets/icons/communication/svg/production/ic_voicemail_24px.svg
new file mode 100644
index 0000000..2b24059
--- /dev/null
+++ b/src/material-widgets/icons/communication/svg/production/ic_voicemail_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/communication/svg/production/ic_vpn_key_24px.svg b/src/material-widgets/icons/communication/svg/production/ic_vpn_key_24px.svg
new file mode 100644
index 0000000..555d034
--- /dev/null
+++ b/src/material-widgets/icons/communication/svg/production/ic_vpn_key_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/content/svg/production/ic_add_24px.svg b/src/material-widgets/icons/content/svg/production/ic_add_24px.svg
new file mode 100644
index 0000000..58f73e9
--- /dev/null
+++ b/src/material-widgets/icons/content/svg/production/ic_add_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/content/svg/production/ic_add_box_24px.svg b/src/material-widgets/icons/content/svg/production/ic_add_box_24px.svg
new file mode 100644
index 0000000..c091cfc
--- /dev/null
+++ b/src/material-widgets/icons/content/svg/production/ic_add_box_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/content/svg/production/ic_add_circle_24px.svg b/src/material-widgets/icons/content/svg/production/ic_add_circle_24px.svg
new file mode 100644
index 0000000..60aaa95
--- /dev/null
+++ b/src/material-widgets/icons/content/svg/production/ic_add_circle_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/content/svg/production/ic_add_circle_outline_24px.svg b/src/material-widgets/icons/content/svg/production/ic_add_circle_outline_24px.svg
new file mode 100644
index 0000000..55c6b1b
--- /dev/null
+++ b/src/material-widgets/icons/content/svg/production/ic_add_circle_outline_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/content/svg/production/ic_archive_24px.svg b/src/material-widgets/icons/content/svg/production/ic_archive_24px.svg
new file mode 100644
index 0000000..bab7497
--- /dev/null
+++ b/src/material-widgets/icons/content/svg/production/ic_archive_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/content/svg/production/ic_backspace_24px.svg b/src/material-widgets/icons/content/svg/production/ic_backspace_24px.svg
new file mode 100644
index 0000000..6ebbe51
--- /dev/null
+++ b/src/material-widgets/icons/content/svg/production/ic_backspace_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/content/svg/production/ic_block_24px.svg b/src/material-widgets/icons/content/svg/production/ic_block_24px.svg
new file mode 100644
index 0000000..661cdf1
--- /dev/null
+++ b/src/material-widgets/icons/content/svg/production/ic_block_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/content/svg/production/ic_clear_24px.svg b/src/material-widgets/icons/content/svg/production/ic_clear_24px.svg
new file mode 100644
index 0000000..865788b
--- /dev/null
+++ b/src/material-widgets/icons/content/svg/production/ic_clear_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/content/svg/production/ic_content_copy_24px.svg b/src/material-widgets/icons/content/svg/production/ic_content_copy_24px.svg
new file mode 100644
index 0000000..7c6b60a
--- /dev/null
+++ b/src/material-widgets/icons/content/svg/production/ic_content_copy_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/content/svg/production/ic_content_cut_24px.svg b/src/material-widgets/icons/content/svg/production/ic_content_cut_24px.svg
new file mode 100644
index 0000000..b89a0d0
--- /dev/null
+++ b/src/material-widgets/icons/content/svg/production/ic_content_cut_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/content/svg/production/ic_content_paste_24px.svg b/src/material-widgets/icons/content/svg/production/ic_content_paste_24px.svg
new file mode 100644
index 0000000..af63a64
--- /dev/null
+++ b/src/material-widgets/icons/content/svg/production/ic_content_paste_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/content/svg/production/ic_create_24px.svg b/src/material-widgets/icons/content/svg/production/ic_create_24px.svg
new file mode 100644
index 0000000..f5ddfe1
--- /dev/null
+++ b/src/material-widgets/icons/content/svg/production/ic_create_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/content/svg/production/ic_delete_sweep_24px.svg b/src/material-widgets/icons/content/svg/production/ic_delete_sweep_24px.svg
new file mode 100644
index 0000000..8aab88a
--- /dev/null
+++ b/src/material-widgets/icons/content/svg/production/ic_delete_sweep_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/content/svg/production/ic_drafts_24px.svg b/src/material-widgets/icons/content/svg/production/ic_drafts_24px.svg
new file mode 100644
index 0000000..2d5456b
--- /dev/null
+++ b/src/material-widgets/icons/content/svg/production/ic_drafts_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/content/svg/production/ic_filter_list_24px.svg b/src/material-widgets/icons/content/svg/production/ic_filter_list_24px.svg
new file mode 100644
index 0000000..972d401
--- /dev/null
+++ b/src/material-widgets/icons/content/svg/production/ic_filter_list_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/content/svg/production/ic_flag_24px.svg b/src/material-widgets/icons/content/svg/production/ic_flag_24px.svg
new file mode 100644
index 0000000..eaf3ff4
--- /dev/null
+++ b/src/material-widgets/icons/content/svg/production/ic_flag_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/content/svg/production/ic_font_download_24px.svg b/src/material-widgets/icons/content/svg/production/ic_font_download_24px.svg
new file mode 100644
index 0000000..60ea38d
--- /dev/null
+++ b/src/material-widgets/icons/content/svg/production/ic_font_download_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/content/svg/production/ic_forward_24px.svg b/src/material-widgets/icons/content/svg/production/ic_forward_24px.svg
new file mode 100644
index 0000000..c9353ea
--- /dev/null
+++ b/src/material-widgets/icons/content/svg/production/ic_forward_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/content/svg/production/ic_gesture_24px.svg b/src/material-widgets/icons/content/svg/production/ic_gesture_24px.svg
new file mode 100644
index 0000000..dac332c
--- /dev/null
+++ b/src/material-widgets/icons/content/svg/production/ic_gesture_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/content/svg/production/ic_inbox_24px.svg b/src/material-widgets/icons/content/svg/production/ic_inbox_24px.svg
new file mode 100644
index 0000000..8297501
--- /dev/null
+++ b/src/material-widgets/icons/content/svg/production/ic_inbox_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/content/svg/production/ic_link_24px.svg b/src/material-widgets/icons/content/svg/production/ic_link_24px.svg
new file mode 100644
index 0000000..f39e2a7
--- /dev/null
+++ b/src/material-widgets/icons/content/svg/production/ic_link_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/content/svg/production/ic_low_priority_24px.svg b/src/material-widgets/icons/content/svg/production/ic_low_priority_24px.svg
new file mode 100644
index 0000000..b1ab04c
--- /dev/null
+++ b/src/material-widgets/icons/content/svg/production/ic_low_priority_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/content/svg/production/ic_mail_24px.svg b/src/material-widgets/icons/content/svg/production/ic_mail_24px.svg
new file mode 100644
index 0000000..f2c5b4f
--- /dev/null
+++ b/src/material-widgets/icons/content/svg/production/ic_mail_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/content/svg/production/ic_markunread_24px.svg b/src/material-widgets/icons/content/svg/production/ic_markunread_24px.svg
new file mode 100644
index 0000000..f2c5b4f
--- /dev/null
+++ b/src/material-widgets/icons/content/svg/production/ic_markunread_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/content/svg/production/ic_move_to_inbox_24px.svg b/src/material-widgets/icons/content/svg/production/ic_move_to_inbox_24px.svg
new file mode 100644
index 0000000..cbc97ad
--- /dev/null
+++ b/src/material-widgets/icons/content/svg/production/ic_move_to_inbox_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/content/svg/production/ic_next_week_24px.svg b/src/material-widgets/icons/content/svg/production/ic_next_week_24px.svg
new file mode 100644
index 0000000..6e52679
--- /dev/null
+++ b/src/material-widgets/icons/content/svg/production/ic_next_week_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/content/svg/production/ic_redo_24px.svg b/src/material-widgets/icons/content/svg/production/ic_redo_24px.svg
new file mode 100644
index 0000000..764ab77
--- /dev/null
+++ b/src/material-widgets/icons/content/svg/production/ic_redo_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/content/svg/production/ic_remove_24px.svg b/src/material-widgets/icons/content/svg/production/ic_remove_24px.svg
new file mode 100644
index 0000000..9128833
--- /dev/null
+++ b/src/material-widgets/icons/content/svg/production/ic_remove_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/content/svg/production/ic_remove_circle_24px.svg b/src/material-widgets/icons/content/svg/production/ic_remove_circle_24px.svg
new file mode 100644
index 0000000..0f978ec
--- /dev/null
+++ b/src/material-widgets/icons/content/svg/production/ic_remove_circle_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/content/svg/production/ic_remove_circle_outline_24px.svg b/src/material-widgets/icons/content/svg/production/ic_remove_circle_outline_24px.svg
new file mode 100644
index 0000000..d35e183
--- /dev/null
+++ b/src/material-widgets/icons/content/svg/production/ic_remove_circle_outline_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/content/svg/production/ic_reply_24px.svg b/src/material-widgets/icons/content/svg/production/ic_reply_24px.svg
new file mode 100644
index 0000000..65c02ca
--- /dev/null
+++ b/src/material-widgets/icons/content/svg/production/ic_reply_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/content/svg/production/ic_reply_all_24px.svg b/src/material-widgets/icons/content/svg/production/ic_reply_all_24px.svg
new file mode 100644
index 0000000..5c90b4b
--- /dev/null
+++ b/src/material-widgets/icons/content/svg/production/ic_reply_all_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/content/svg/production/ic_report_24px.svg b/src/material-widgets/icons/content/svg/production/ic_report_24px.svg
new file mode 100644
index 0000000..d09adbb
--- /dev/null
+++ b/src/material-widgets/icons/content/svg/production/ic_report_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/content/svg/production/ic_save_24px.svg b/src/material-widgets/icons/content/svg/production/ic_save_24px.svg
new file mode 100644
index 0000000..1d3c300
--- /dev/null
+++ b/src/material-widgets/icons/content/svg/production/ic_save_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/content/svg/production/ic_select_all_24px.svg b/src/material-widgets/icons/content/svg/production/ic_select_all_24px.svg
new file mode 100644
index 0000000..4614449
--- /dev/null
+++ b/src/material-widgets/icons/content/svg/production/ic_select_all_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/content/svg/production/ic_send_24px.svg b/src/material-widgets/icons/content/svg/production/ic_send_24px.svg
new file mode 100644
index 0000000..b679858
--- /dev/null
+++ b/src/material-widgets/icons/content/svg/production/ic_send_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/content/svg/production/ic_sort_24px.svg b/src/material-widgets/icons/content/svg/production/ic_sort_24px.svg
new file mode 100644
index 0000000..84efa53
--- /dev/null
+++ b/src/material-widgets/icons/content/svg/production/ic_sort_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/content/svg/production/ic_text_format_24px.svg b/src/material-widgets/icons/content/svg/production/ic_text_format_24px.svg
new file mode 100644
index 0000000..92ec329
--- /dev/null
+++ b/src/material-widgets/icons/content/svg/production/ic_text_format_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/content/svg/production/ic_unarchive_24px.svg b/src/material-widgets/icons/content/svg/production/ic_unarchive_24px.svg
new file mode 100644
index 0000000..6192fa7
--- /dev/null
+++ b/src/material-widgets/icons/content/svg/production/ic_unarchive_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/content/svg/production/ic_undo_24px.svg b/src/material-widgets/icons/content/svg/production/ic_undo_24px.svg
new file mode 100644
index 0000000..c37cf40
--- /dev/null
+++ b/src/material-widgets/icons/content/svg/production/ic_undo_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/content/svg/production/ic_weekend_24px.svg b/src/material-widgets/icons/content/svg/production/ic_weekend_24px.svg
new file mode 100644
index 0000000..f4e56cc
--- /dev/null
+++ b/src/material-widgets/icons/content/svg/production/ic_weekend_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_access_alarm_24px.svg b/src/material-widgets/icons/device/svg/production/ic_access_alarm_24px.svg
new file mode 100644
index 0000000..edfa7a6
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_access_alarm_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_access_alarms_24px.svg b/src/material-widgets/icons/device/svg/production/ic_access_alarms_24px.svg
new file mode 100755
index 0000000..a799163
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_access_alarms_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_access_time_24px.svg b/src/material-widgets/icons/device/svg/production/ic_access_time_24px.svg
new file mode 100644
index 0000000..fac5f2e
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_access_time_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_add_alarm_24px.svg b/src/material-widgets/icons/device/svg/production/ic_add_alarm_24px.svg
new file mode 100644
index 0000000..8bf2e6c
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_add_alarm_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_airplanemode_active_24px.svg b/src/material-widgets/icons/device/svg/production/ic_airplanemode_active_24px.svg
new file mode 100644
index 0000000..240d1b6
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_airplanemode_active_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_airplanemode_inactive_24px.svg b/src/material-widgets/icons/device/svg/production/ic_airplanemode_inactive_24px.svg
new file mode 100644
index 0000000..c2828d8
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_airplanemode_inactive_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_battery_20_24px.svg b/src/material-widgets/icons/device/svg/production/ic_battery_20_24px.svg
new file mode 100644
index 0000000..db91e43
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_battery_20_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_battery_30_24px.svg b/src/material-widgets/icons/device/svg/production/ic_battery_30_24px.svg
new file mode 100644
index 0000000..305e322
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_battery_30_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_battery_50_24px.svg b/src/material-widgets/icons/device/svg/production/ic_battery_50_24px.svg
new file mode 100644
index 0000000..c8205f8
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_battery_50_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_battery_60_24px.svg b/src/material-widgets/icons/device/svg/production/ic_battery_60_24px.svg
new file mode 100644
index 0000000..42d8bba
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_battery_60_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_battery_80_24px.svg b/src/material-widgets/icons/device/svg/production/ic_battery_80_24px.svg
new file mode 100644
index 0000000..1633055
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_battery_80_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_battery_90_24px.svg b/src/material-widgets/icons/device/svg/production/ic_battery_90_24px.svg
new file mode 100644
index 0000000..4a242c5
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_battery_90_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_battery_alert_24px.svg b/src/material-widgets/icons/device/svg/production/ic_battery_alert_24px.svg
new file mode 100644
index 0000000..08d3008
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_battery_alert_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_battery_charging_20_24px.svg b/src/material-widgets/icons/device/svg/production/ic_battery_charging_20_24px.svg
new file mode 100644
index 0000000..9b90d8c
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_battery_charging_20_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_battery_charging_30_24px.svg b/src/material-widgets/icons/device/svg/production/ic_battery_charging_30_24px.svg
new file mode 100644
index 0000000..b21330f
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_battery_charging_30_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_battery_charging_50_24px.svg b/src/material-widgets/icons/device/svg/production/ic_battery_charging_50_24px.svg
new file mode 100644
index 0000000..9958350
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_battery_charging_50_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_battery_charging_60_24px.svg b/src/material-widgets/icons/device/svg/production/ic_battery_charging_60_24px.svg
new file mode 100644
index 0000000..a9e5d40
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_battery_charging_60_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_battery_charging_80_24px.svg b/src/material-widgets/icons/device/svg/production/ic_battery_charging_80_24px.svg
new file mode 100644
index 0000000..1695004
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_battery_charging_80_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_battery_charging_90_24px.svg b/src/material-widgets/icons/device/svg/production/ic_battery_charging_90_24px.svg
new file mode 100644
index 0000000..2fc050e
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_battery_charging_90_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_battery_charging_full_24px.svg b/src/material-widgets/icons/device/svg/production/ic_battery_charging_full_24px.svg
new file mode 100644
index 0000000..1efa7d3
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_battery_charging_full_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_battery_full_24px.svg b/src/material-widgets/icons/device/svg/production/ic_battery_full_24px.svg
new file mode 100644
index 0000000..122ea41
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_battery_full_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_battery_std_24px.svg b/src/material-widgets/icons/device/svg/production/ic_battery_std_24px.svg
new file mode 100644
index 0000000..122ea41
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_battery_std_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_battery_unknown_24px.svg b/src/material-widgets/icons/device/svg/production/ic_battery_unknown_24px.svg
new file mode 100644
index 0000000..7ef9a9a
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_battery_unknown_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_bluetooth_24px.svg b/src/material-widgets/icons/device/svg/production/ic_bluetooth_24px.svg
new file mode 100644
index 0000000..ad1e4f2
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_bluetooth_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_bluetooth_connected_24px.svg b/src/material-widgets/icons/device/svg/production/ic_bluetooth_connected_24px.svg
new file mode 100644
index 0000000..90b3a58
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_bluetooth_connected_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_bluetooth_disabled_24px.svg b/src/material-widgets/icons/device/svg/production/ic_bluetooth_disabled_24px.svg
new file mode 100644
index 0000000..2974d2b
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_bluetooth_disabled_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_bluetooth_searching_24px.svg b/src/material-widgets/icons/device/svg/production/ic_bluetooth_searching_24px.svg
new file mode 100644
index 0000000..8bb176e
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_bluetooth_searching_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_brightness_auto_24px.svg b/src/material-widgets/icons/device/svg/production/ic_brightness_auto_24px.svg
new file mode 100644
index 0000000..074d7b1
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_brightness_auto_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_brightness_high_24px.svg b/src/material-widgets/icons/device/svg/production/ic_brightness_high_24px.svg
new file mode 100644
index 0000000..f4a2b29
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_brightness_high_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_brightness_low_24px.svg b/src/material-widgets/icons/device/svg/production/ic_brightness_low_24px.svg
new file mode 100644
index 0000000..2b6d29d
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_brightness_low_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_brightness_medium_24px.svg b/src/material-widgets/icons/device/svg/production/ic_brightness_medium_24px.svg
new file mode 100644
index 0000000..dc29999
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_brightness_medium_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_data_usage_24px.svg b/src/material-widgets/icons/device/svg/production/ic_data_usage_24px.svg
new file mode 100644
index 0000000..7f0786a
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_data_usage_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_developer_mode_24px.svg b/src/material-widgets/icons/device/svg/production/ic_developer_mode_24px.svg
new file mode 100644
index 0000000..b64293b
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_developer_mode_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_devices_24px.svg b/src/material-widgets/icons/device/svg/production/ic_devices_24px.svg
new file mode 100644
index 0000000..266e993
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_devices_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_dvr_24px.svg b/src/material-widgets/icons/device/svg/production/ic_dvr_24px.svg
new file mode 100644
index 0000000..fd28af7
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_dvr_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_gps_fixed_24px.svg b/src/material-widgets/icons/device/svg/production/ic_gps_fixed_24px.svg
new file mode 100644
index 0000000..394dc36
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_gps_fixed_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_gps_not_fixed_24px.svg b/src/material-widgets/icons/device/svg/production/ic_gps_not_fixed_24px.svg
new file mode 100644
index 0000000..f05e9b0
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_gps_not_fixed_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_gps_off_24px.svg b/src/material-widgets/icons/device/svg/production/ic_gps_off_24px.svg
new file mode 100644
index 0000000..c1435e3
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_gps_off_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_graphic_eq_24px.svg b/src/material-widgets/icons/device/svg/production/ic_graphic_eq_24px.svg
new file mode 100644
index 0000000..e980427
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_graphic_eq_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_location_disabled_24px.svg b/src/material-widgets/icons/device/svg/production/ic_location_disabled_24px.svg
new file mode 100644
index 0000000..c1435e3
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_location_disabled_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_location_searching_24px.svg b/src/material-widgets/icons/device/svg/production/ic_location_searching_24px.svg
new file mode 100644
index 0000000..f05e9b0
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_location_searching_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_network_cell_24px.svg b/src/material-widgets/icons/device/svg/production/ic_network_cell_24px.svg
new file mode 100644
index 0000000..0024136
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_network_cell_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_network_wifi_24px.svg b/src/material-widgets/icons/device/svg/production/ic_network_wifi_24px.svg
new file mode 100644
index 0000000..6e03e50
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_network_wifi_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_nfc_24px.svg b/src/material-widgets/icons/device/svg/production/ic_nfc_24px.svg
new file mode 100644
index 0000000..49cffc9
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_nfc_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_screen_lock_landscape_24px.svg b/src/material-widgets/icons/device/svg/production/ic_screen_lock_landscape_24px.svg
new file mode 100644
index 0000000..1b0925d
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_screen_lock_landscape_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_screen_lock_portrait_24px.svg b/src/material-widgets/icons/device/svg/production/ic_screen_lock_portrait_24px.svg
new file mode 100644
index 0000000..cd382ac
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_screen_lock_portrait_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_screen_lock_rotation_24px.svg b/src/material-widgets/icons/device/svg/production/ic_screen_lock_rotation_24px.svg
new file mode 100644
index 0000000..30e015f
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_screen_lock_rotation_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_screen_rotation_24px.svg b/src/material-widgets/icons/device/svg/production/ic_screen_rotation_24px.svg
new file mode 100644
index 0000000..3750ddc
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_screen_rotation_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_sd_storage_24px.svg b/src/material-widgets/icons/device/svg/production/ic_sd_storage_24px.svg
new file mode 100644
index 0000000..15ab481
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_sd_storage_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_settings_system_daydream_24px.svg b/src/material-widgets/icons/device/svg/production/ic_settings_system_daydream_24px.svg
new file mode 100644
index 0000000..6d35778
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_settings_system_daydream_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_signal_cellular_0_bar_24px.svg b/src/material-widgets/icons/device/svg/production/ic_signal_cellular_0_bar_24px.svg
new file mode 100644
index 0000000..0f29463
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_signal_cellular_0_bar_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_signal_cellular_1_bar_24px.svg b/src/material-widgets/icons/device/svg/production/ic_signal_cellular_1_bar_24px.svg
new file mode 100644
index 0000000..8c785b4
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_signal_cellular_1_bar_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_signal_cellular_2_bar_24px.svg b/src/material-widgets/icons/device/svg/production/ic_signal_cellular_2_bar_24px.svg
new file mode 100644
index 0000000..22352ef
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_signal_cellular_2_bar_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_signal_cellular_3_bar_24px.svg b/src/material-widgets/icons/device/svg/production/ic_signal_cellular_3_bar_24px.svg
new file mode 100644
index 0000000..0024136
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_signal_cellular_3_bar_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_signal_cellular_4_bar_24px.svg b/src/material-widgets/icons/device/svg/production/ic_signal_cellular_4_bar_24px.svg
new file mode 100644
index 0000000..dc28eb7
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_signal_cellular_4_bar_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_signal_cellular_connected_no_internet_0_bar_24px.svg b/src/material-widgets/icons/device/svg/production/ic_signal_cellular_connected_no_internet_0_bar_24px.svg
new file mode 100644
index 0000000..fe6765f
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_signal_cellular_connected_no_internet_0_bar_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_signal_cellular_connected_no_internet_1_bar_24px.svg b/src/material-widgets/icons/device/svg/production/ic_signal_cellular_connected_no_internet_1_bar_24px.svg
new file mode 100644
index 0000000..de2550c
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_signal_cellular_connected_no_internet_1_bar_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_signal_cellular_connected_no_internet_2_bar_24px.svg b/src/material-widgets/icons/device/svg/production/ic_signal_cellular_connected_no_internet_2_bar_24px.svg
new file mode 100644
index 0000000..8bfeb23
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_signal_cellular_connected_no_internet_2_bar_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_signal_cellular_connected_no_internet_3_bar_24px.svg b/src/material-widgets/icons/device/svg/production/ic_signal_cellular_connected_no_internet_3_bar_24px.svg
new file mode 100644
index 0000000..fd79f00
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_signal_cellular_connected_no_internet_3_bar_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_signal_cellular_connected_no_internet_4_bar_24px.svg b/src/material-widgets/icons/device/svg/production/ic_signal_cellular_connected_no_internet_4_bar_24px.svg
new file mode 100644
index 0000000..0faee96
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_signal_cellular_connected_no_internet_4_bar_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_signal_cellular_no_sim_24px.svg b/src/material-widgets/icons/device/svg/production/ic_signal_cellular_no_sim_24px.svg
new file mode 100644
index 0000000..d6b8e22
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_signal_cellular_no_sim_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_signal_cellular_null_24px.svg b/src/material-widgets/icons/device/svg/production/ic_signal_cellular_null_24px.svg
new file mode 100644
index 0000000..f3293a5
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_signal_cellular_null_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_signal_cellular_off_24px.svg b/src/material-widgets/icons/device/svg/production/ic_signal_cellular_off_24px.svg
new file mode 100644
index 0000000..a8de8db
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_signal_cellular_off_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_signal_wifi_0_bar_24px.svg b/src/material-widgets/icons/device/svg/production/ic_signal_wifi_0_bar_24px.svg
new file mode 100644
index 0000000..46a2cc6
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_signal_wifi_0_bar_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_signal_wifi_1_bar_24px.svg b/src/material-widgets/icons/device/svg/production/ic_signal_wifi_1_bar_24px.svg
new file mode 100644
index 0000000..19227d6
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_signal_wifi_1_bar_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_signal_wifi_1_bar_lock_24px.svg b/src/material-widgets/icons/device/svg/production/ic_signal_wifi_1_bar_lock_24px.svg
new file mode 100755
index 0000000..86e1b5d
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_signal_wifi_1_bar_lock_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_signal_wifi_2_bar_24px.svg b/src/material-widgets/icons/device/svg/production/ic_signal_wifi_2_bar_24px.svg
new file mode 100644
index 0000000..7f0f951
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_signal_wifi_2_bar_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_signal_wifi_2_bar_lock_24px.svg b/src/material-widgets/icons/device/svg/production/ic_signal_wifi_2_bar_lock_24px.svg
new file mode 100755
index 0000000..c96053c
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_signal_wifi_2_bar_lock_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_signal_wifi_3_bar_24px.svg b/src/material-widgets/icons/device/svg/production/ic_signal_wifi_3_bar_24px.svg
new file mode 100644
index 0000000..6e03e50
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_signal_wifi_3_bar_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_signal_wifi_3_bar_lock_24px.svg b/src/material-widgets/icons/device/svg/production/ic_signal_wifi_3_bar_lock_24px.svg
new file mode 100755
index 0000000..10ff8c0
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_signal_wifi_3_bar_lock_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_signal_wifi_4_bar_24px.svg b/src/material-widgets/icons/device/svg/production/ic_signal_wifi_4_bar_24px.svg
new file mode 100644
index 0000000..d013bfd
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_signal_wifi_4_bar_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_signal_wifi_4_bar_lock_24px.svg b/src/material-widgets/icons/device/svg/production/ic_signal_wifi_4_bar_lock_24px.svg
new file mode 100755
index 0000000..45a8294
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_signal_wifi_4_bar_lock_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_signal_wifi_off_24px.svg b/src/material-widgets/icons/device/svg/production/ic_signal_wifi_off_24px.svg
new file mode 100644
index 0000000..fcf92d0
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_signal_wifi_off_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_storage_24px.svg b/src/material-widgets/icons/device/svg/production/ic_storage_24px.svg
new file mode 100644
index 0000000..8cae0c1
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_storage_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_usb_24px.svg b/src/material-widgets/icons/device/svg/production/ic_usb_24px.svg
new file mode 100644
index 0000000..b08014a
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_usb_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_wallpaper_24px.svg b/src/material-widgets/icons/device/svg/production/ic_wallpaper_24px.svg
new file mode 100644
index 0000000..74c082b
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_wallpaper_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_widgets_24px.svg b/src/material-widgets/icons/device/svg/production/ic_widgets_24px.svg
new file mode 100644
index 0000000..fcc2293
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_widgets_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_wifi_lock_24px.svg b/src/material-widgets/icons/device/svg/production/ic_wifi_lock_24px.svg
new file mode 100644
index 0000000..710d716
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_wifi_lock_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/device/svg/production/ic_wifi_tethering_24px.svg b/src/material-widgets/icons/device/svg/production/ic_wifi_tethering_24px.svg
new file mode 100644
index 0000000..f16f282
--- /dev/null
+++ b/src/material-widgets/icons/device/svg/production/ic_wifi_tethering_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_attach_file_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_attach_file_24px.svg
new file mode 100644
index 0000000..471fb99
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_attach_file_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_attach_money_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_attach_money_24px.svg
new file mode 100644
index 0000000..76e3e17
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_attach_money_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_border_all_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_border_all_24px.svg
new file mode 100644
index 0000000..4537456
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_border_all_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_border_bottom_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_border_bottom_24px.svg
new file mode 100644
index 0000000..61be129
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_border_bottom_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_border_clear_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_border_clear_24px.svg
new file mode 100644
index 0000000..a585f80
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_border_clear_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_border_color_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_border_color_24px.svg
new file mode 100644
index 0000000..4f6e788
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_border_color_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_border_horizontal_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_border_horizontal_24px.svg
new file mode 100644
index 0000000..f84b852
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_border_horizontal_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_border_inner_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_border_inner_24px.svg
new file mode 100644
index 0000000..a5a4677
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_border_inner_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_border_left_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_border_left_24px.svg
new file mode 100644
index 0000000..894c809
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_border_left_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_border_outer_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_border_outer_24px.svg
new file mode 100644
index 0000000..23fbba8
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_border_outer_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_border_right_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_border_right_24px.svg
new file mode 100644
index 0000000..f8965e1
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_border_right_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_border_style_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_border_style_24px.svg
new file mode 100644
index 0000000..179e8d6
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_border_style_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_border_top_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_border_top_24px.svg
new file mode 100644
index 0000000..7f6795f
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_border_top_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_border_vertical_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_border_vertical_24px.svg
new file mode 100644
index 0000000..719ddf6
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_border_vertical_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_bubble_chart_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_bubble_chart_24px.svg
new file mode 100644
index 0000000..35d0fbb
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_bubble_chart_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_drag_handle_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_drag_handle_24px.svg
new file mode 100644
index 0000000..a292338
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_drag_handle_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_format_align_center_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_format_align_center_24px.svg
new file mode 100644
index 0000000..82214e6
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_format_align_center_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_format_align_justify_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_format_align_justify_24px.svg
new file mode 100644
index 0000000..3dd6fed
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_format_align_justify_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_format_align_left_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_format_align_left_24px.svg
new file mode 100644
index 0000000..77d7810
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_format_align_left_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_format_align_right_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_format_align_right_24px.svg
new file mode 100644
index 0000000..a786d99
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_format_align_right_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_format_bold_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_format_bold_24px.svg
new file mode 100644
index 0000000..2b7d0f1
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_format_bold_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_format_clear_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_format_clear_24px.svg
new file mode 100644
index 0000000..bb78cd7
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_format_clear_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_format_color_fill_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_format_color_fill_24px.svg
new file mode 100644
index 0000000..1cc9972
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_format_color_fill_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_format_color_reset_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_format_color_reset_24px.svg
new file mode 100644
index 0000000..4027103
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_format_color_reset_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_format_color_text_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_format_color_text_24px.svg
new file mode 100644
index 0000000..49858ad
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_format_color_text_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_format_indent_decrease_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_format_indent_decrease_24px.svg
new file mode 100644
index 0000000..61dc59f
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_format_indent_decrease_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_format_indent_increase_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_format_indent_increase_24px.svg
new file mode 100644
index 0000000..d46f676
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_format_indent_increase_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_format_italic_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_format_italic_24px.svg
new file mode 100644
index 0000000..c8acbb8
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_format_italic_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_format_line_spacing_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_format_line_spacing_24px.svg
new file mode 100644
index 0000000..ff11d3a
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_format_line_spacing_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_format_list_bulleted_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_format_list_bulleted_24px.svg
new file mode 100644
index 0000000..4beb2cd
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_format_list_bulleted_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_format_list_numbered_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_format_list_numbered_24px.svg
new file mode 100644
index 0000000..82f85bb
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_format_list_numbered_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_format_paint_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_format_paint_24px.svg
new file mode 100644
index 0000000..6d988b3
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_format_paint_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_format_quote_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_format_quote_24px.svg
new file mode 100644
index 0000000..9d8fa8b
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_format_quote_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_format_shapes_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_format_shapes_24px.svg
new file mode 100644
index 0000000..a14bb86
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_format_shapes_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_format_size_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_format_size_24px.svg
new file mode 100644
index 0000000..51d9371
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_format_size_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_format_strikethrough_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_format_strikethrough_24px.svg
new file mode 100644
index 0000000..1ce6765
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_format_strikethrough_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_format_textdirection_l_to_r_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_format_textdirection_l_to_r_24px.svg
new file mode 100644
index 0000000..f9e7290
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_format_textdirection_l_to_r_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_format_textdirection_r_to_l_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_format_textdirection_r_to_l_24px.svg
new file mode 100644
index 0000000..7259c4e
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_format_textdirection_r_to_l_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_format_underlined_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_format_underlined_24px.svg
new file mode 100644
index 0000000..24f0729
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_format_underlined_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_functions_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_functions_24px.svg
new file mode 100644
index 0000000..003ef30
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_functions_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_highlight_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_highlight_24px.svg
new file mode 100644
index 0000000..ac55df1
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_highlight_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_insert_chart_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_insert_chart_24px.svg
new file mode 100644
index 0000000..cc7768b
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_insert_chart_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_insert_comment_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_insert_comment_24px.svg
new file mode 100644
index 0000000..c82fbff
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_insert_comment_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_insert_drive_file_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_insert_drive_file_24px.svg
new file mode 100644
index 0000000..6aa287e
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_insert_drive_file_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_insert_emoticon_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_insert_emoticon_24px.svg
new file mode 100644
index 0000000..57bea0f
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_insert_emoticon_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_insert_invitation_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_insert_invitation_24px.svg
new file mode 100644
index 0000000..1b084e8
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_insert_invitation_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_insert_link_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_insert_link_24px.svg
new file mode 100644
index 0000000..f39e2a7
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_insert_link_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_insert_photo_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_insert_photo_24px.svg
new file mode 100644
index 0000000..6ccc16a
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_insert_photo_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_linear_scale_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_linear_scale_24px.svg
new file mode 100644
index 0000000..9b57080
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_linear_scale_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_merge_type_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_merge_type_24px.svg
new file mode 100644
index 0000000..b10772d
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_merge_type_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_mode_comment_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_mode_comment_24px.svg
new file mode 100644
index 0000000..912954d
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_mode_comment_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_mode_edit_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_mode_edit_24px.svg
new file mode 100644
index 0000000..f5ddfe1
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_mode_edit_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_monetization_on_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_monetization_on_24px.svg
new file mode 100644
index 0000000..fbd8735
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_monetization_on_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_money_off_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_money_off_24px.svg
new file mode 100755
index 0000000..c48bc8c
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_money_off_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_multiline_chart_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_multiline_chart_24px.svg
new file mode 100644
index 0000000..c2a1e0b
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_multiline_chart_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_pie_chart_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_pie_chart_24px.svg
new file mode 100644
index 0000000..d6d96a4
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_pie_chart_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_pie_chart_outlined_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_pie_chart_outlined_24px.svg
new file mode 100644
index 0000000..c8c8aa8
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_pie_chart_outlined_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_publish_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_publish_24px.svg
new file mode 100644
index 0000000..88faf16
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_publish_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_short_text_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_short_text_24px.svg
new file mode 100644
index 0000000..f73c4f8
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_short_text_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_show_chart_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_show_chart_24px.svg
new file mode 100644
index 0000000..bc01b79
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_show_chart_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_space_bar_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_space_bar_24px.svg
new file mode 100755
index 0000000..0f1e7c5
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_space_bar_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_strikethrough_s_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_strikethrough_s_24px.svg
new file mode 100644
index 0000000..7f218d0
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_strikethrough_s_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_text_fields_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_text_fields_24px.svg
new file mode 100644
index 0000000..705cd75
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_text_fields_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_title_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_title_24px.svg
new file mode 100644
index 0000000..c09ac43
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_title_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_vertical_align_bottom_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_vertical_align_bottom_24px.svg
new file mode 100644
index 0000000..070f193
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_vertical_align_bottom_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_vertical_align_center_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_vertical_align_center_24px.svg
new file mode 100644
index 0000000..b0272c7
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_vertical_align_center_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_vertical_align_top_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_vertical_align_top_24px.svg
new file mode 100644
index 0000000..7a1cadd
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_vertical_align_top_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/editor/svg/production/ic_wrap_text_24px.svg b/src/material-widgets/icons/editor/svg/production/ic_wrap_text_24px.svg
new file mode 100644
index 0000000..3e11084
--- /dev/null
+++ b/src/material-widgets/icons/editor/svg/production/ic_wrap_text_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/file/svg/production/ic_attachment_24px.svg b/src/material-widgets/icons/file/svg/production/ic_attachment_24px.svg
new file mode 100644
index 0000000..d244845
--- /dev/null
+++ b/src/material-widgets/icons/file/svg/production/ic_attachment_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/file/svg/production/ic_cloud_24px.svg b/src/material-widgets/icons/file/svg/production/ic_cloud_24px.svg
new file mode 100644
index 0000000..63f946c
--- /dev/null
+++ b/src/material-widgets/icons/file/svg/production/ic_cloud_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/file/svg/production/ic_cloud_circle_24px.svg b/src/material-widgets/icons/file/svg/production/ic_cloud_circle_24px.svg
new file mode 100644
index 0000000..859be00
--- /dev/null
+++ b/src/material-widgets/icons/file/svg/production/ic_cloud_circle_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/file/svg/production/ic_cloud_done_24px.svg b/src/material-widgets/icons/file/svg/production/ic_cloud_done_24px.svg
new file mode 100644
index 0000000..96e49c4
--- /dev/null
+++ b/src/material-widgets/icons/file/svg/production/ic_cloud_done_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/file/svg/production/ic_cloud_download_24px.svg b/src/material-widgets/icons/file/svg/production/ic_cloud_download_24px.svg
new file mode 100644
index 0000000..25d4096
--- /dev/null
+++ b/src/material-widgets/icons/file/svg/production/ic_cloud_download_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/file/svg/production/ic_cloud_off_24px.svg b/src/material-widgets/icons/file/svg/production/ic_cloud_off_24px.svg
new file mode 100644
index 0000000..16e58c5
--- /dev/null
+++ b/src/material-widgets/icons/file/svg/production/ic_cloud_off_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/file/svg/production/ic_cloud_queue_24px.svg b/src/material-widgets/icons/file/svg/production/ic_cloud_queue_24px.svg
new file mode 100644
index 0000000..22ddd7d
--- /dev/null
+++ b/src/material-widgets/icons/file/svg/production/ic_cloud_queue_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/file/svg/production/ic_cloud_upload_24px.svg b/src/material-widgets/icons/file/svg/production/ic_cloud_upload_24px.svg
new file mode 100644
index 0000000..69a9622
--- /dev/null
+++ b/src/material-widgets/icons/file/svg/production/ic_cloud_upload_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/file/svg/production/ic_create_new_folder_24px.svg b/src/material-widgets/icons/file/svg/production/ic_create_new_folder_24px.svg
new file mode 100644
index 0000000..3c9da3d
--- /dev/null
+++ b/src/material-widgets/icons/file/svg/production/ic_create_new_folder_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/file/svg/production/ic_file_download_24px.svg b/src/material-widgets/icons/file/svg/production/ic_file_download_24px.svg
new file mode 100644
index 0000000..ef421c3
--- /dev/null
+++ b/src/material-widgets/icons/file/svg/production/ic_file_download_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/file/svg/production/ic_file_upload_24px.svg b/src/material-widgets/icons/file/svg/production/ic_file_upload_24px.svg
new file mode 100644
index 0000000..0fe9aad
--- /dev/null
+++ b/src/material-widgets/icons/file/svg/production/ic_file_upload_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/file/svg/production/ic_folder_24px.svg b/src/material-widgets/icons/file/svg/production/ic_folder_24px.svg
new file mode 100644
index 0000000..e70b01c
--- /dev/null
+++ b/src/material-widgets/icons/file/svg/production/ic_folder_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/file/svg/production/ic_folder_open_24px.svg b/src/material-widgets/icons/file/svg/production/ic_folder_open_24px.svg
new file mode 100644
index 0000000..0f59689
--- /dev/null
+++ b/src/material-widgets/icons/file/svg/production/ic_folder_open_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/file/svg/production/ic_folder_shared_24px.svg b/src/material-widgets/icons/file/svg/production/ic_folder_shared_24px.svg
new file mode 100644
index 0000000..348100e
--- /dev/null
+++ b/src/material-widgets/icons/file/svg/production/ic_folder_shared_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/hardware/svg/production/ic_cast_24px.svg b/src/material-widgets/icons/hardware/svg/production/ic_cast_24px.svg
new file mode 100644
index 0000000..5686cc4
--- /dev/null
+++ b/src/material-widgets/icons/hardware/svg/production/ic_cast_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/hardware/svg/production/ic_cast_connected_24px.svg b/src/material-widgets/icons/hardware/svg/production/ic_cast_connected_24px.svg
new file mode 100644
index 0000000..38ca2c7
--- /dev/null
+++ b/src/material-widgets/icons/hardware/svg/production/ic_cast_connected_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/hardware/svg/production/ic_computer_24px.svg b/src/material-widgets/icons/hardware/svg/production/ic_computer_24px.svg
new file mode 100644
index 0000000..6a0af7e
--- /dev/null
+++ b/src/material-widgets/icons/hardware/svg/production/ic_computer_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/hardware/svg/production/ic_desktop_mac_24px.svg b/src/material-widgets/icons/hardware/svg/production/ic_desktop_mac_24px.svg
new file mode 100644
index 0000000..8e408af
--- /dev/null
+++ b/src/material-widgets/icons/hardware/svg/production/ic_desktop_mac_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/hardware/svg/production/ic_desktop_windows_24px.svg b/src/material-widgets/icons/hardware/svg/production/ic_desktop_windows_24px.svg
new file mode 100644
index 0000000..56d3324
--- /dev/null
+++ b/src/material-widgets/icons/hardware/svg/production/ic_desktop_windows_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/hardware/svg/production/ic_developer_board_24px.svg b/src/material-widgets/icons/hardware/svg/production/ic_developer_board_24px.svg
new file mode 100755
index 0000000..4efcd93
--- /dev/null
+++ b/src/material-widgets/icons/hardware/svg/production/ic_developer_board_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/hardware/svg/production/ic_device_hub_24px.svg b/src/material-widgets/icons/hardware/svg/production/ic_device_hub_24px.svg
new file mode 100644
index 0000000..f1c8e73
--- /dev/null
+++ b/src/material-widgets/icons/hardware/svg/production/ic_device_hub_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/hardware/svg/production/ic_devices_other_24px.svg b/src/material-widgets/icons/hardware/svg/production/ic_devices_other_24px.svg
new file mode 100644
index 0000000..43768e8
--- /dev/null
+++ b/src/material-widgets/icons/hardware/svg/production/ic_devices_other_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/hardware/svg/production/ic_dock_24px.svg b/src/material-widgets/icons/hardware/svg/production/ic_dock_24px.svg
new file mode 100644
index 0000000..ee94230
--- /dev/null
+++ b/src/material-widgets/icons/hardware/svg/production/ic_dock_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/hardware/svg/production/ic_gamepad_24px.svg b/src/material-widgets/icons/hardware/svg/production/ic_gamepad_24px.svg
new file mode 100644
index 0000000..62a4c9b
--- /dev/null
+++ b/src/material-widgets/icons/hardware/svg/production/ic_gamepad_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/hardware/svg/production/ic_headset_24px.svg b/src/material-widgets/icons/hardware/svg/production/ic_headset_24px.svg
new file mode 100644
index 0000000..bdeb1eb
--- /dev/null
+++ b/src/material-widgets/icons/hardware/svg/production/ic_headset_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/hardware/svg/production/ic_headset_mic_24px.svg b/src/material-widgets/icons/hardware/svg/production/ic_headset_mic_24px.svg
new file mode 100644
index 0000000..dba0e66
--- /dev/null
+++ b/src/material-widgets/icons/hardware/svg/production/ic_headset_mic_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/hardware/svg/production/ic_keyboard_24px.svg b/src/material-widgets/icons/hardware/svg/production/ic_keyboard_24px.svg
new file mode 100644
index 0000000..acbf11c
--- /dev/null
+++ b/src/material-widgets/icons/hardware/svg/production/ic_keyboard_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/hardware/svg/production/ic_keyboard_arrow_down_24px.svg b/src/material-widgets/icons/hardware/svg/production/ic_keyboard_arrow_down_24px.svg
new file mode 100644
index 0000000..ed92639
--- /dev/null
+++ b/src/material-widgets/icons/hardware/svg/production/ic_keyboard_arrow_down_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/hardware/svg/production/ic_keyboard_arrow_left_24px.svg b/src/material-widgets/icons/hardware/svg/production/ic_keyboard_arrow_left_24px.svg
new file mode 100644
index 0000000..7002d84
--- /dev/null
+++ b/src/material-widgets/icons/hardware/svg/production/ic_keyboard_arrow_left_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/hardware/svg/production/ic_keyboard_arrow_right_24px.svg b/src/material-widgets/icons/hardware/svg/production/ic_keyboard_arrow_right_24px.svg
new file mode 100644
index 0000000..e74898b
--- /dev/null
+++ b/src/material-widgets/icons/hardware/svg/production/ic_keyboard_arrow_right_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/hardware/svg/production/ic_keyboard_arrow_up_24px.svg b/src/material-widgets/icons/hardware/svg/production/ic_keyboard_arrow_up_24px.svg
new file mode 100644
index 0000000..607eb15
--- /dev/null
+++ b/src/material-widgets/icons/hardware/svg/production/ic_keyboard_arrow_up_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/hardware/svg/production/ic_keyboard_backspace_24px.svg b/src/material-widgets/icons/hardware/svg/production/ic_keyboard_backspace_24px.svg
new file mode 100644
index 0000000..26fc18e
--- /dev/null
+++ b/src/material-widgets/icons/hardware/svg/production/ic_keyboard_backspace_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/hardware/svg/production/ic_keyboard_capslock_24px.svg b/src/material-widgets/icons/hardware/svg/production/ic_keyboard_capslock_24px.svg
new file mode 100644
index 0000000..2420341
--- /dev/null
+++ b/src/material-widgets/icons/hardware/svg/production/ic_keyboard_capslock_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/hardware/svg/production/ic_keyboard_hide_24px.svg b/src/material-widgets/icons/hardware/svg/production/ic_keyboard_hide_24px.svg
new file mode 100644
index 0000000..7f279fa
--- /dev/null
+++ b/src/material-widgets/icons/hardware/svg/production/ic_keyboard_hide_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/hardware/svg/production/ic_keyboard_return_24px.svg b/src/material-widgets/icons/hardware/svg/production/ic_keyboard_return_24px.svg
new file mode 100644
index 0000000..48b52b6
--- /dev/null
+++ b/src/material-widgets/icons/hardware/svg/production/ic_keyboard_return_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/hardware/svg/production/ic_keyboard_tab_24px.svg b/src/material-widgets/icons/hardware/svg/production/ic_keyboard_tab_24px.svg
new file mode 100644
index 0000000..7348895
--- /dev/null
+++ b/src/material-widgets/icons/hardware/svg/production/ic_keyboard_tab_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/hardware/svg/production/ic_keyboard_voice_24px.svg b/src/material-widgets/icons/hardware/svg/production/ic_keyboard_voice_24px.svg
new file mode 100644
index 0000000..513e0fd
--- /dev/null
+++ b/src/material-widgets/icons/hardware/svg/production/ic_keyboard_voice_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/hardware/svg/production/ic_laptop_24px.svg b/src/material-widgets/icons/hardware/svg/production/ic_laptop_24px.svg
new file mode 100755
index 0000000..405ef0a
--- /dev/null
+++ b/src/material-widgets/icons/hardware/svg/production/ic_laptop_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/hardware/svg/production/ic_laptop_chromebook_24px.svg b/src/material-widgets/icons/hardware/svg/production/ic_laptop_chromebook_24px.svg
new file mode 100644
index 0000000..0918cf8
--- /dev/null
+++ b/src/material-widgets/icons/hardware/svg/production/ic_laptop_chromebook_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/hardware/svg/production/ic_laptop_mac_24px.svg b/src/material-widgets/icons/hardware/svg/production/ic_laptop_mac_24px.svg
new file mode 100644
index 0000000..e630d7e
--- /dev/null
+++ b/src/material-widgets/icons/hardware/svg/production/ic_laptop_mac_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/hardware/svg/production/ic_laptop_windows_24px.svg b/src/material-widgets/icons/hardware/svg/production/ic_laptop_windows_24px.svg
new file mode 100644
index 0000000..0522324
--- /dev/null
+++ b/src/material-widgets/icons/hardware/svg/production/ic_laptop_windows_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/hardware/svg/production/ic_memory_24px.svg b/src/material-widgets/icons/hardware/svg/production/ic_memory_24px.svg
new file mode 100644
index 0000000..b7fe44f
--- /dev/null
+++ b/src/material-widgets/icons/hardware/svg/production/ic_memory_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/hardware/svg/production/ic_mouse_24px.svg b/src/material-widgets/icons/hardware/svg/production/ic_mouse_24px.svg
new file mode 100644
index 0000000..ff5184c
--- /dev/null
+++ b/src/material-widgets/icons/hardware/svg/production/ic_mouse_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/hardware/svg/production/ic_phone_android_24px.svg b/src/material-widgets/icons/hardware/svg/production/ic_phone_android_24px.svg
new file mode 100644
index 0000000..b7a256b
--- /dev/null
+++ b/src/material-widgets/icons/hardware/svg/production/ic_phone_android_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/hardware/svg/production/ic_phone_iphone_24px.svg b/src/material-widgets/icons/hardware/svg/production/ic_phone_iphone_24px.svg
new file mode 100644
index 0000000..91ad0e0
--- /dev/null
+++ b/src/material-widgets/icons/hardware/svg/production/ic_phone_iphone_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/hardware/svg/production/ic_phonelink_24px.svg b/src/material-widgets/icons/hardware/svg/production/ic_phonelink_24px.svg
new file mode 100644
index 0000000..266e993
--- /dev/null
+++ b/src/material-widgets/icons/hardware/svg/production/ic_phonelink_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/hardware/svg/production/ic_phonelink_off_24px.svg b/src/material-widgets/icons/hardware/svg/production/ic_phonelink_off_24px.svg
new file mode 100644
index 0000000..33b4771
--- /dev/null
+++ b/src/material-widgets/icons/hardware/svg/production/ic_phonelink_off_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/hardware/svg/production/ic_power_input_24px.svg b/src/material-widgets/icons/hardware/svg/production/ic_power_input_24px.svg
new file mode 100755
index 0000000..353d4ce
--- /dev/null
+++ b/src/material-widgets/icons/hardware/svg/production/ic_power_input_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/hardware/svg/production/ic_router_24px.svg b/src/material-widgets/icons/hardware/svg/production/ic_router_24px.svg
new file mode 100755
index 0000000..0c38782
--- /dev/null
+++ b/src/material-widgets/icons/hardware/svg/production/ic_router_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/hardware/svg/production/ic_scanner_24px.svg b/src/material-widgets/icons/hardware/svg/production/ic_scanner_24px.svg
new file mode 100755
index 0000000..827c151
--- /dev/null
+++ b/src/material-widgets/icons/hardware/svg/production/ic_scanner_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/hardware/svg/production/ic_security_24px.svg b/src/material-widgets/icons/hardware/svg/production/ic_security_24px.svg
new file mode 100644
index 0000000..f855309
--- /dev/null
+++ b/src/material-widgets/icons/hardware/svg/production/ic_security_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/hardware/svg/production/ic_sim_card_24px.svg b/src/material-widgets/icons/hardware/svg/production/ic_sim_card_24px.svg
new file mode 100644
index 0000000..b717193
--- /dev/null
+++ b/src/material-widgets/icons/hardware/svg/production/ic_sim_card_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/hardware/svg/production/ic_smartphone_24px.svg b/src/material-widgets/icons/hardware/svg/production/ic_smartphone_24px.svg
new file mode 100644
index 0000000..db4537f
--- /dev/null
+++ b/src/material-widgets/icons/hardware/svg/production/ic_smartphone_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/hardware/svg/production/ic_speaker_24px.svg b/src/material-widgets/icons/hardware/svg/production/ic_speaker_24px.svg
new file mode 100644
index 0000000..fe95bef
--- /dev/null
+++ b/src/material-widgets/icons/hardware/svg/production/ic_speaker_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/hardware/svg/production/ic_speaker_group_24px.svg b/src/material-widgets/icons/hardware/svg/production/ic_speaker_group_24px.svg
new file mode 100755
index 0000000..5ea98a7
--- /dev/null
+++ b/src/material-widgets/icons/hardware/svg/production/ic_speaker_group_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/hardware/svg/production/ic_tablet_24px.svg b/src/material-widgets/icons/hardware/svg/production/ic_tablet_24px.svg
new file mode 100644
index 0000000..f5390cc
--- /dev/null
+++ b/src/material-widgets/icons/hardware/svg/production/ic_tablet_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/hardware/svg/production/ic_tablet_android_24px.svg b/src/material-widgets/icons/hardware/svg/production/ic_tablet_android_24px.svg
new file mode 100755
index 0000000..9e4301b
--- /dev/null
+++ b/src/material-widgets/icons/hardware/svg/production/ic_tablet_android_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/hardware/svg/production/ic_tablet_mac_24px.svg b/src/material-widgets/icons/hardware/svg/production/ic_tablet_mac_24px.svg
new file mode 100644
index 0000000..cb4ae22
--- /dev/null
+++ b/src/material-widgets/icons/hardware/svg/production/ic_tablet_mac_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/hardware/svg/production/ic_toys_24px.svg b/src/material-widgets/icons/hardware/svg/production/ic_toys_24px.svg
new file mode 100755
index 0000000..faef6a0
--- /dev/null
+++ b/src/material-widgets/icons/hardware/svg/production/ic_toys_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/hardware/svg/production/ic_tv_24px.svg b/src/material-widgets/icons/hardware/svg/production/ic_tv_24px.svg
new file mode 100644
index 0000000..6954135
--- /dev/null
+++ b/src/material-widgets/icons/hardware/svg/production/ic_tv_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/hardware/svg/production/ic_videogame_asset_24px.svg b/src/material-widgets/icons/hardware/svg/production/ic_videogame_asset_24px.svg
new file mode 100644
index 0000000..af4c4b0
--- /dev/null
+++ b/src/material-widgets/icons/hardware/svg/production/ic_videogame_asset_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/hardware/svg/production/ic_watch_24px.svg b/src/material-widgets/icons/hardware/svg/production/ic_watch_24px.svg
new file mode 100644
index 0000000..a759e1b
--- /dev/null
+++ b/src/material-widgets/icons/hardware/svg/production/ic_watch_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_add_a_photo_24px.svg b/src/material-widgets/icons/image/svg/production/ic_add_a_photo_24px.svg
new file mode 100644
index 0000000..98c6d86
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_add_a_photo_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_add_to_photos_24px.svg b/src/material-widgets/icons/image/svg/production/ic_add_to_photos_24px.svg
new file mode 100644
index 0000000..baea3e9
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_add_to_photos_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_adjust_24px.svg b/src/material-widgets/icons/image/svg/production/ic_adjust_24px.svg
new file mode 100644
index 0000000..a096236
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_adjust_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_assistant_24px.svg b/src/material-widgets/icons/image/svg/production/ic_assistant_24px.svg
new file mode 100755
index 0000000..a183f73
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_assistant_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_assistant_photo_24px.svg b/src/material-widgets/icons/image/svg/production/ic_assistant_photo_24px.svg
new file mode 100644
index 0000000..eaf3ff4
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_assistant_photo_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_audiotrack_24px.svg b/src/material-widgets/icons/image/svg/production/ic_audiotrack_24px.svg
new file mode 100644
index 0000000..0cda5dd
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_audiotrack_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_blur_circular_24px.svg b/src/material-widgets/icons/image/svg/production/ic_blur_circular_24px.svg
new file mode 100644
index 0000000..3a91b1d
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_blur_circular_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_blur_linear_24px.svg b/src/material-widgets/icons/image/svg/production/ic_blur_linear_24px.svg
new file mode 100644
index 0000000..1f2590f
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_blur_linear_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_blur_off_24px.svg b/src/material-widgets/icons/image/svg/production/ic_blur_off_24px.svg
new file mode 100644
index 0000000..532ef8f
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_blur_off_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_blur_on_24px.svg b/src/material-widgets/icons/image/svg/production/ic_blur_on_24px.svg
new file mode 100644
index 0000000..0983b48
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_blur_on_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_brightness_1_24px.svg b/src/material-widgets/icons/image/svg/production/ic_brightness_1_24px.svg
new file mode 100644
index 0000000..575b111
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_brightness_1_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_brightness_2_24px.svg b/src/material-widgets/icons/image/svg/production/ic_brightness_2_24px.svg
new file mode 100644
index 0000000..c963e0b
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_brightness_2_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_brightness_3_24px.svg b/src/material-widgets/icons/image/svg/production/ic_brightness_3_24px.svg
new file mode 100644
index 0000000..3048e31
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_brightness_3_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_brightness_4_24px.svg b/src/material-widgets/icons/image/svg/production/ic_brightness_4_24px.svg
new file mode 100644
index 0000000..2566874
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_brightness_4_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_brightness_5_24px.svg b/src/material-widgets/icons/image/svg/production/ic_brightness_5_24px.svg
new file mode 100644
index 0000000..2b6d29d
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_brightness_5_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_brightness_6_24px.svg b/src/material-widgets/icons/image/svg/production/ic_brightness_6_24px.svg
new file mode 100644
index 0000000..dc29999
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_brightness_6_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_brightness_7_24px.svg b/src/material-widgets/icons/image/svg/production/ic_brightness_7_24px.svg
new file mode 100644
index 0000000..f4a2b29
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_brightness_7_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_broken_image_24px.svg b/src/material-widgets/icons/image/svg/production/ic_broken_image_24px.svg
new file mode 100644
index 0000000..fe22b4b
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_broken_image_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_brush_24px.svg b/src/material-widgets/icons/image/svg/production/ic_brush_24px.svg
new file mode 100644
index 0000000..5f79966
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_brush_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_burst_mode_24px.svg b/src/material-widgets/icons/image/svg/production/ic_burst_mode_24px.svg
new file mode 100644
index 0000000..6923324
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_burst_mode_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_camera_24px.svg b/src/material-widgets/icons/image/svg/production/ic_camera_24px.svg
new file mode 100644
index 0000000..e78e6b3
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_camera_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_camera_alt_24px.svg b/src/material-widgets/icons/image/svg/production/ic_camera_alt_24px.svg
new file mode 100644
index 0000000..94960bf
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_camera_alt_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_camera_front_24px.svg b/src/material-widgets/icons/image/svg/production/ic_camera_front_24px.svg
new file mode 100644
index 0000000..43ea4d2
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_camera_front_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_camera_rear_24px.svg b/src/material-widgets/icons/image/svg/production/ic_camera_rear_24px.svg
new file mode 100644
index 0000000..3c6fbb1
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_camera_rear_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_camera_roll_24px.svg b/src/material-widgets/icons/image/svg/production/ic_camera_roll_24px.svg
new file mode 100644
index 0000000..06c7023
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_camera_roll_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_center_focus_strong_24px.svg b/src/material-widgets/icons/image/svg/production/ic_center_focus_strong_24px.svg
new file mode 100644
index 0000000..85b0d4b
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_center_focus_strong_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_center_focus_weak_24px.svg b/src/material-widgets/icons/image/svg/production/ic_center_focus_weak_24px.svg
new file mode 100644
index 0000000..330a82f
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_center_focus_weak_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_collections_24px.svg b/src/material-widgets/icons/image/svg/production/ic_collections_24px.svg
new file mode 100644
index 0000000..3af788b
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_collections_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_collections_bookmark_24px.svg b/src/material-widgets/icons/image/svg/production/ic_collections_bookmark_24px.svg
new file mode 100644
index 0000000..7f7c541
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_collections_bookmark_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_color_lens_24px.svg b/src/material-widgets/icons/image/svg/production/ic_color_lens_24px.svg
new file mode 100644
index 0000000..c5fc873
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_color_lens_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_colorize_24px.svg b/src/material-widgets/icons/image/svg/production/ic_colorize_24px.svg
new file mode 100644
index 0000000..ccdd273
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_colorize_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_compare_24px.svg b/src/material-widgets/icons/image/svg/production/ic_compare_24px.svg
new file mode 100644
index 0000000..131506b
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_compare_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_control_point_24px.svg b/src/material-widgets/icons/image/svg/production/ic_control_point_24px.svg
new file mode 100644
index 0000000..9275b0e
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_control_point_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_control_point_duplicate_24px.svg b/src/material-widgets/icons/image/svg/production/ic_control_point_duplicate_24px.svg
new file mode 100644
index 0000000..fe09988
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_control_point_duplicate_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_crop_16_9_24px.svg b/src/material-widgets/icons/image/svg/production/ic_crop_16_9_24px.svg
new file mode 100644
index 0000000..7be7919
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_crop_16_9_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_crop_24px.svg b/src/material-widgets/icons/image/svg/production/ic_crop_24px.svg
new file mode 100644
index 0000000..f508de3
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_crop_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_crop_3_2_24px.svg b/src/material-widgets/icons/image/svg/production/ic_crop_3_2_24px.svg
new file mode 100644
index 0000000..3dee425
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_crop_3_2_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_crop_5_4_24px.svg b/src/material-widgets/icons/image/svg/production/ic_crop_5_4_24px.svg
new file mode 100644
index 0000000..13c5050
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_crop_5_4_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_crop_7_5_24px.svg b/src/material-widgets/icons/image/svg/production/ic_crop_7_5_24px.svg
new file mode 100644
index 0000000..8a48573
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_crop_7_5_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_crop_din_24px.svg b/src/material-widgets/icons/image/svg/production/ic_crop_din_24px.svg
new file mode 100644
index 0000000..7a2362a
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_crop_din_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_crop_free_24px.svg b/src/material-widgets/icons/image/svg/production/ic_crop_free_24px.svg
new file mode 100644
index 0000000..99f7183
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_crop_free_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_crop_landscape_24px.svg b/src/material-widgets/icons/image/svg/production/ic_crop_landscape_24px.svg
new file mode 100644
index 0000000..13c5050
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_crop_landscape_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_crop_original_24px.svg b/src/material-widgets/icons/image/svg/production/ic_crop_original_24px.svg
new file mode 100644
index 0000000..4084151
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_crop_original_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_crop_portrait_24px.svg b/src/material-widgets/icons/image/svg/production/ic_crop_portrait_24px.svg
new file mode 100644
index 0000000..78a7fe1
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_crop_portrait_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_crop_rotate_24px.svg b/src/material-widgets/icons/image/svg/production/ic_crop_rotate_24px.svg
new file mode 100644
index 0000000..3661fff
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_crop_rotate_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_crop_square_24px.svg b/src/material-widgets/icons/image/svg/production/ic_crop_square_24px.svg
new file mode 100644
index 0000000..ac46175
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_crop_square_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_dehaze_24px.svg b/src/material-widgets/icons/image/svg/production/ic_dehaze_24px.svg
new file mode 100644
index 0000000..bae2109
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_dehaze_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_details_24px.svg b/src/material-widgets/icons/image/svg/production/ic_details_24px.svg
new file mode 100644
index 0000000..3eca3fb
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_details_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_edit_24px.svg b/src/material-widgets/icons/image/svg/production/ic_edit_24px.svg
new file mode 100644
index 0000000..f5ddfe1
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_edit_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_exposure_24px.svg b/src/material-widgets/icons/image/svg/production/ic_exposure_24px.svg
new file mode 100644
index 0000000..c5a3382
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_exposure_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_exposure_neg_1_24px.svg b/src/material-widgets/icons/image/svg/production/ic_exposure_neg_1_24px.svg
new file mode 100644
index 0000000..71be874
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_exposure_neg_1_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_exposure_neg_2_24px.svg b/src/material-widgets/icons/image/svg/production/ic_exposure_neg_2_24px.svg
new file mode 100644
index 0000000..b1f453d
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_exposure_neg_2_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_exposure_plus_1_24px.svg b/src/material-widgets/icons/image/svg/production/ic_exposure_plus_1_24px.svg
new file mode 100644
index 0000000..f5921c2
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_exposure_plus_1_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_exposure_plus_2_24px.svg b/src/material-widgets/icons/image/svg/production/ic_exposure_plus_2_24px.svg
new file mode 100644
index 0000000..14c3e09
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_exposure_plus_2_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_exposure_zero_24px.svg b/src/material-widgets/icons/image/svg/production/ic_exposure_zero_24px.svg
new file mode 100644
index 0000000..cf710bb
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_exposure_zero_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_filter_1_24px.svg b/src/material-widgets/icons/image/svg/production/ic_filter_1_24px.svg
new file mode 100644
index 0000000..0e81a46
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_filter_1_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_filter_24px.svg b/src/material-widgets/icons/image/svg/production/ic_filter_24px.svg
new file mode 100644
index 0000000..40ccd8c
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_filter_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_filter_2_24px.svg b/src/material-widgets/icons/image/svg/production/ic_filter_2_24px.svg
new file mode 100644
index 0000000..101c3b3
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_filter_2_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_filter_3_24px.svg b/src/material-widgets/icons/image/svg/production/ic_filter_3_24px.svg
new file mode 100644
index 0000000..57d2cd7
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_filter_3_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_filter_4_24px.svg b/src/material-widgets/icons/image/svg/production/ic_filter_4_24px.svg
new file mode 100644
index 0000000..2bb6ee7
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_filter_4_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_filter_5_24px.svg b/src/material-widgets/icons/image/svg/production/ic_filter_5_24px.svg
new file mode 100644
index 0000000..6e4a763
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_filter_5_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_filter_6_24px.svg b/src/material-widgets/icons/image/svg/production/ic_filter_6_24px.svg
new file mode 100644
index 0000000..e3f31f3
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_filter_6_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_filter_7_24px.svg b/src/material-widgets/icons/image/svg/production/ic_filter_7_24px.svg
new file mode 100644
index 0000000..76e3aaf
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_filter_7_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_filter_8_24px.svg b/src/material-widgets/icons/image/svg/production/ic_filter_8_24px.svg
new file mode 100644
index 0000000..fc7305d
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_filter_8_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_filter_9_24px.svg b/src/material-widgets/icons/image/svg/production/ic_filter_9_24px.svg
new file mode 100644
index 0000000..636b205
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_filter_9_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_filter_9_plus_24px.svg b/src/material-widgets/icons/image/svg/production/ic_filter_9_plus_24px.svg
new file mode 100644
index 0000000..5f30216
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_filter_9_plus_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_filter_b_and_w_24px.svg b/src/material-widgets/icons/image/svg/production/ic_filter_b_and_w_24px.svg
new file mode 100644
index 0000000..1c97939
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_filter_b_and_w_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_filter_center_focus_24px.svg b/src/material-widgets/icons/image/svg/production/ic_filter_center_focus_24px.svg
new file mode 100644
index 0000000..c501264
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_filter_center_focus_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_filter_drama_24px.svg b/src/material-widgets/icons/image/svg/production/ic_filter_drama_24px.svg
new file mode 100644
index 0000000..6e12efc
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_filter_drama_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_filter_frames_24px.svg b/src/material-widgets/icons/image/svg/production/ic_filter_frames_24px.svg
new file mode 100644
index 0000000..1332006
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_filter_frames_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_filter_hdr_24px.svg b/src/material-widgets/icons/image/svg/production/ic_filter_hdr_24px.svg
new file mode 100644
index 0000000..b239af7
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_filter_hdr_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_filter_none_24px.svg b/src/material-widgets/icons/image/svg/production/ic_filter_none_24px.svg
new file mode 100644
index 0000000..36f86a3
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_filter_none_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_filter_tilt_shift_24px.svg b/src/material-widgets/icons/image/svg/production/ic_filter_tilt_shift_24px.svg
new file mode 100644
index 0000000..a2ce281
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_filter_tilt_shift_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_filter_vintage_24px.svg b/src/material-widgets/icons/image/svg/production/ic_filter_vintage_24px.svg
new file mode 100644
index 0000000..a78b53b
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_filter_vintage_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_flare_24px.svg b/src/material-widgets/icons/image/svg/production/ic_flare_24px.svg
new file mode 100644
index 0000000..198a483
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_flare_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_flash_auto_24px.svg b/src/material-widgets/icons/image/svg/production/ic_flash_auto_24px.svg
new file mode 100644
index 0000000..beeccfd
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_flash_auto_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_flash_off_24px.svg b/src/material-widgets/icons/image/svg/production/ic_flash_off_24px.svg
new file mode 100644
index 0000000..b0ec0ee
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_flash_off_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_flash_on_24px.svg b/src/material-widgets/icons/image/svg/production/ic_flash_on_24px.svg
new file mode 100644
index 0000000..e948043
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_flash_on_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_flip_24px.svg b/src/material-widgets/icons/image/svg/production/ic_flip_24px.svg
new file mode 100644
index 0000000..4131540
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_flip_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_gradient_24px.svg b/src/material-widgets/icons/image/svg/production/ic_gradient_24px.svg
new file mode 100644
index 0000000..8320b4a
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_gradient_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_grain_24px.svg b/src/material-widgets/icons/image/svg/production/ic_grain_24px.svg
new file mode 100644
index 0000000..66c0588
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_grain_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_grid_off_24px.svg b/src/material-widgets/icons/image/svg/production/ic_grid_off_24px.svg
new file mode 100644
index 0000000..58702c8
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_grid_off_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_grid_on_24px.svg b/src/material-widgets/icons/image/svg/production/ic_grid_on_24px.svg
new file mode 100644
index 0000000..3caf213
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_grid_on_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_hdr_off_24px.svg b/src/material-widgets/icons/image/svg/production/ic_hdr_off_24px.svg
new file mode 100644
index 0000000..1232bbf
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_hdr_off_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_hdr_on_24px.svg b/src/material-widgets/icons/image/svg/production/ic_hdr_on_24px.svg
new file mode 100755
index 0000000..9acaafa
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_hdr_on_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_hdr_strong_24px.svg b/src/material-widgets/icons/image/svg/production/ic_hdr_strong_24px.svg
new file mode 100644
index 0000000..cf68b9e
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_hdr_strong_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_hdr_weak_24px.svg b/src/material-widgets/icons/image/svg/production/ic_hdr_weak_24px.svg
new file mode 100644
index 0000000..1554922
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_hdr_weak_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_healing_24px.svg b/src/material-widgets/icons/image/svg/production/ic_healing_24px.svg
new file mode 100644
index 0000000..cf4ec96
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_healing_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_image_24px.svg b/src/material-widgets/icons/image/svg/production/ic_image_24px.svg
new file mode 100644
index 0000000..6ccc16a
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_image_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_image_aspect_ratio_24px.svg b/src/material-widgets/icons/image/svg/production/ic_image_aspect_ratio_24px.svg
new file mode 100644
index 0000000..4a8b293
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_image_aspect_ratio_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_iso_24px.svg b/src/material-widgets/icons/image/svg/production/ic_iso_24px.svg
new file mode 100644
index 0000000..873aaa2
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_iso_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_landscape_24px.svg b/src/material-widgets/icons/image/svg/production/ic_landscape_24px.svg
new file mode 100644
index 0000000..b239af7
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_landscape_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_leak_add_24px.svg b/src/material-widgets/icons/image/svg/production/ic_leak_add_24px.svg
new file mode 100644
index 0000000..9b861bc
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_leak_add_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_leak_remove_24px.svg b/src/material-widgets/icons/image/svg/production/ic_leak_remove_24px.svg
new file mode 100644
index 0000000..546c3d8
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_leak_remove_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_lens_24px.svg b/src/material-widgets/icons/image/svg/production/ic_lens_24px.svg
new file mode 100644
index 0000000..ced343a
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_lens_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_linked_camera_24px.svg b/src/material-widgets/icons/image/svg/production/ic_linked_camera_24px.svg
new file mode 100644
index 0000000..ec78871
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_linked_camera_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_looks_24px.svg b/src/material-widgets/icons/image/svg/production/ic_looks_24px.svg
new file mode 100644
index 0000000..b4ca971
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_looks_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_looks_3_24px.svg b/src/material-widgets/icons/image/svg/production/ic_looks_3_24px.svg
new file mode 100644
index 0000000..114d59a
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_looks_3_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_looks_4_24px.svg b/src/material-widgets/icons/image/svg/production/ic_looks_4_24px.svg
new file mode 100644
index 0000000..393b327
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_looks_4_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_looks_5_24px.svg b/src/material-widgets/icons/image/svg/production/ic_looks_5_24px.svg
new file mode 100644
index 0000000..6a1d1ed
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_looks_5_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_looks_6_24px.svg b/src/material-widgets/icons/image/svg/production/ic_looks_6_24px.svg
new file mode 100644
index 0000000..c323da8
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_looks_6_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_looks_one_24px.svg b/src/material-widgets/icons/image/svg/production/ic_looks_one_24px.svg
new file mode 100644
index 0000000..b399d47
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_looks_one_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_looks_two_24px.svg b/src/material-widgets/icons/image/svg/production/ic_looks_two_24px.svg
new file mode 100644
index 0000000..845b590
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_looks_two_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_loupe_24px.svg b/src/material-widgets/icons/image/svg/production/ic_loupe_24px.svg
new file mode 100644
index 0000000..dcd1a4b
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_loupe_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_monochrome_photos_24px.svg b/src/material-widgets/icons/image/svg/production/ic_monochrome_photos_24px.svg
new file mode 100755
index 0000000..2b72560
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_monochrome_photos_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_movie_creation_24px.svg b/src/material-widgets/icons/image/svg/production/ic_movie_creation_24px.svg
new file mode 100644
index 0000000..8bbbb53
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_movie_creation_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_movie_filter_24px.svg b/src/material-widgets/icons/image/svg/production/ic_movie_filter_24px.svg
new file mode 100644
index 0000000..8c6473d
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_movie_filter_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_music_note_24px.svg b/src/material-widgets/icons/image/svg/production/ic_music_note_24px.svg
new file mode 100755
index 0000000..cdc42fc
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_music_note_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_nature_24px.svg b/src/material-widgets/icons/image/svg/production/ic_nature_24px.svg
new file mode 100644
index 0000000..1d1e1c7
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_nature_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_nature_people_24px.svg b/src/material-widgets/icons/image/svg/production/ic_nature_people_24px.svg
new file mode 100644
index 0000000..28a2e89
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_nature_people_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_navigate_before_24px.svg b/src/material-widgets/icons/image/svg/production/ic_navigate_before_24px.svg
new file mode 100644
index 0000000..36e6e99
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_navigate_before_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_navigate_next_24px.svg b/src/material-widgets/icons/image/svg/production/ic_navigate_next_24px.svg
new file mode 100644
index 0000000..47ed5fe
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_navigate_next_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_palette_24px.svg b/src/material-widgets/icons/image/svg/production/ic_palette_24px.svg
new file mode 100644
index 0000000..c5fc873
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_palette_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_panorama_24px.svg b/src/material-widgets/icons/image/svg/production/ic_panorama_24px.svg
new file mode 100644
index 0000000..312bb52
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_panorama_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_panorama_fish_eye_24px.svg b/src/material-widgets/icons/image/svg/production/ic_panorama_fish_eye_24px.svg
new file mode 100644
index 0000000..81123c6
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_panorama_fish_eye_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_panorama_horizontal_24px.svg b/src/material-widgets/icons/image/svg/production/ic_panorama_horizontal_24px.svg
new file mode 100644
index 0000000..56791f0
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_panorama_horizontal_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_panorama_vertical_24px.svg b/src/material-widgets/icons/image/svg/production/ic_panorama_vertical_24px.svg
new file mode 100644
index 0000000..5f428f5
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_panorama_vertical_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_panorama_wide_angle_24px.svg b/src/material-widgets/icons/image/svg/production/ic_panorama_wide_angle_24px.svg
new file mode 100644
index 0000000..45996f8
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_panorama_wide_angle_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_photo_24px.svg b/src/material-widgets/icons/image/svg/production/ic_photo_24px.svg
new file mode 100644
index 0000000..6ccc16a
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_photo_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_photo_album_24px.svg b/src/material-widgets/icons/image/svg/production/ic_photo_album_24px.svg
new file mode 100644
index 0000000..5da0d40
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_photo_album_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_photo_camera_24px.svg b/src/material-widgets/icons/image/svg/production/ic_photo_camera_24px.svg
new file mode 100644
index 0000000..94960bf
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_photo_camera_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_photo_filter_24px.svg b/src/material-widgets/icons/image/svg/production/ic_photo_filter_24px.svg
new file mode 100644
index 0000000..e627995
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_photo_filter_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_photo_library_24px.svg b/src/material-widgets/icons/image/svg/production/ic_photo_library_24px.svg
new file mode 100644
index 0000000..3af788b
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_photo_library_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_photo_size_select_actual_24px.svg b/src/material-widgets/icons/image/svg/production/ic_photo_size_select_actual_24px.svg
new file mode 100644
index 0000000..1102b34
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_photo_size_select_actual_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_photo_size_select_large_24px.svg b/src/material-widgets/icons/image/svg/production/ic_photo_size_select_large_24px.svg
new file mode 100644
index 0000000..074d75a
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_photo_size_select_large_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_photo_size_select_small_24px.svg b/src/material-widgets/icons/image/svg/production/ic_photo_size_select_small_24px.svg
new file mode 100644
index 0000000..7dbd961
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_photo_size_select_small_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_picture_as_pdf_24px.svg b/src/material-widgets/icons/image/svg/production/ic_picture_as_pdf_24px.svg
new file mode 100755
index 0000000..e50f55f
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_picture_as_pdf_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_portrait_24px.svg b/src/material-widgets/icons/image/svg/production/ic_portrait_24px.svg
new file mode 100644
index 0000000..685a339
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_portrait_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_remove_red_eye_24px.svg b/src/material-widgets/icons/image/svg/production/ic_remove_red_eye_24px.svg
new file mode 100644
index 0000000..5c700e3
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_remove_red_eye_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_rotate_90_degrees_ccw_24px.svg b/src/material-widgets/icons/image/svg/production/ic_rotate_90_degrees_ccw_24px.svg
new file mode 100755
index 0000000..4268bb7
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_rotate_90_degrees_ccw_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_rotate_left_24px.svg b/src/material-widgets/icons/image/svg/production/ic_rotate_left_24px.svg
new file mode 100644
index 0000000..6766814
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_rotate_left_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_rotate_right_24px.svg b/src/material-widgets/icons/image/svg/production/ic_rotate_right_24px.svg
new file mode 100644
index 0000000..0269224
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_rotate_right_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_slideshow_24px.svg b/src/material-widgets/icons/image/svg/production/ic_slideshow_24px.svg
new file mode 100644
index 0000000..079a6be
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_slideshow_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_straighten_24px.svg b/src/material-widgets/icons/image/svg/production/ic_straighten_24px.svg
new file mode 100644
index 0000000..d161c5e
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_straighten_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_style_24px.svg b/src/material-widgets/icons/image/svg/production/ic_style_24px.svg
new file mode 100644
index 0000000..cce7564
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_style_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_switch_camera_24px.svg b/src/material-widgets/icons/image/svg/production/ic_switch_camera_24px.svg
new file mode 100644
index 0000000..979b015
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_switch_camera_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_switch_video_24px.svg b/src/material-widgets/icons/image/svg/production/ic_switch_video_24px.svg
new file mode 100644
index 0000000..821e50d
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_switch_video_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_tag_faces_24px.svg b/src/material-widgets/icons/image/svg/production/ic_tag_faces_24px.svg
new file mode 100644
index 0000000..57bea0f
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_tag_faces_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_texture_24px.svg b/src/material-widgets/icons/image/svg/production/ic_texture_24px.svg
new file mode 100644
index 0000000..b86bf95
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_texture_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_timelapse_24px.svg b/src/material-widgets/icons/image/svg/production/ic_timelapse_24px.svg
new file mode 100644
index 0000000..6a3e4fe
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_timelapse_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_timer_10_24px.svg b/src/material-widgets/icons/image/svg/production/ic_timer_10_24px.svg
new file mode 100644
index 0000000..95c3304
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_timer_10_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_timer_24px.svg b/src/material-widgets/icons/image/svg/production/ic_timer_24px.svg
new file mode 100644
index 0000000..e113e76
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_timer_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_timer_3_24px.svg b/src/material-widgets/icons/image/svg/production/ic_timer_3_24px.svg
new file mode 100644
index 0000000..88b7b90
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_timer_3_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_timer_off_24px.svg b/src/material-widgets/icons/image/svg/production/ic_timer_off_24px.svg
new file mode 100644
index 0000000..aea789e
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_timer_off_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_tonality_24px.svg b/src/material-widgets/icons/image/svg/production/ic_tonality_24px.svg
new file mode 100644
index 0000000..5a34a05
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_tonality_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_transform_24px.svg b/src/material-widgets/icons/image/svg/production/ic_transform_24px.svg
new file mode 100644
index 0000000..b11ce4a
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_transform_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_tune_24px.svg b/src/material-widgets/icons/image/svg/production/ic_tune_24px.svg
new file mode 100644
index 0000000..24dbcd6
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_tune_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_view_comfy_24px.svg b/src/material-widgets/icons/image/svg/production/ic_view_comfy_24px.svg
new file mode 100755
index 0000000..07cefea
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_view_comfy_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_view_compact_24px.svg b/src/material-widgets/icons/image/svg/production/ic_view_compact_24px.svg
new file mode 100755
index 0000000..77c2483
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_view_compact_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_vignette_24px.svg b/src/material-widgets/icons/image/svg/production/ic_vignette_24px.svg
new file mode 100644
index 0000000..c54a045
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_vignette_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_wb_auto_24px.svg b/src/material-widgets/icons/image/svg/production/ic_wb_auto_24px.svg
new file mode 100644
index 0000000..1b76925
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_wb_auto_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_wb_cloudy_24px.svg b/src/material-widgets/icons/image/svg/production/ic_wb_cloudy_24px.svg
new file mode 100644
index 0000000..47f8947
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_wb_cloudy_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_wb_incandescent_24px.svg b/src/material-widgets/icons/image/svg/production/ic_wb_incandescent_24px.svg
new file mode 100644
index 0000000..4cac930
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_wb_incandescent_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_wb_iridescent_24px.svg b/src/material-widgets/icons/image/svg/production/ic_wb_iridescent_24px.svg
new file mode 100644
index 0000000..1a54d92
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_wb_iridescent_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/image/svg/production/ic_wb_sunny_24px.svg b/src/material-widgets/icons/image/svg/production/ic_wb_sunny_24px.svg
new file mode 100644
index 0000000..d83b6ca
--- /dev/null
+++ b/src/material-widgets/icons/image/svg/production/ic_wb_sunny_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_add_location_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_add_location_24px.svg
new file mode 100644
index 0000000..6d2721b
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_add_location_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_beenhere_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_beenhere_24px.svg
new file mode 100644
index 0000000..36264e3
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_beenhere_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_directions_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_directions_24px.svg
new file mode 100644
index 0000000..dd924bf
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_directions_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_directions_bike_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_directions_bike_24px.svg
new file mode 100755
index 0000000..025c7e2
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_directions_bike_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_directions_boat_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_directions_boat_24px.svg
new file mode 100644
index 0000000..5226b67
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_directions_boat_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_directions_bus_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_directions_bus_24px.svg
new file mode 100644
index 0000000..ade3c4d
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_directions_bus_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_directions_car_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_directions_car_24px.svg
new file mode 100644
index 0000000..7cd866c
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_directions_car_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_directions_railway_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_directions_railway_24px.svg
new file mode 100644
index 0000000..b7bdcba
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_directions_railway_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_directions_run_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_directions_run_24px.svg
new file mode 100755
index 0000000..7296105
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_directions_run_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_directions_subway_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_directions_subway_24px.svg
new file mode 100644
index 0000000..22a47ce
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_directions_subway_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_directions_transit_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_directions_transit_24px.svg
new file mode 100644
index 0000000..22a47ce
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_directions_transit_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_directions_walk_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_directions_walk_24px.svg
new file mode 100755
index 0000000..3572cb3
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_directions_walk_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_edit_location_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_edit_location_24px.svg
new file mode 100644
index 0000000..b14fc61
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_edit_location_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_ev_station_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_ev_station_24px.svg
new file mode 100644
index 0000000..fb06f9e
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_ev_station_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_flight_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_flight_24px.svg
new file mode 100644
index 0000000..240d1b6
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_flight_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_hotel_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_hotel_24px.svg
new file mode 100644
index 0000000..f1cca2c
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_hotel_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_layers_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_layers_24px.svg
new file mode 100644
index 0000000..02160fa
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_layers_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_layers_clear_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_layers_clear_24px.svg
new file mode 100644
index 0000000..b0a40d4
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_layers_clear_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_local_activity_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_local_activity_24px.svg
new file mode 100644
index 0000000..cb28463
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_local_activity_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_local_airport_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_local_airport_24px.svg
new file mode 100644
index 0000000..2fe1dea
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_local_airport_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_local_atm_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_local_atm_24px.svg
new file mode 100644
index 0000000..a893448
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_local_atm_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_local_bar_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_local_bar_24px.svg
new file mode 100644
index 0000000..9232c7d
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_local_bar_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_local_cafe_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_local_cafe_24px.svg
new file mode 100644
index 0000000..dfdee9c
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_local_cafe_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_local_car_wash_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_local_car_wash_24px.svg
new file mode 100644
index 0000000..611f73d
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_local_car_wash_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_local_convenience_store_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_local_convenience_store_24px.svg
new file mode 100644
index 0000000..8070a89
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_local_convenience_store_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_local_dining_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_local_dining_24px.svg
new file mode 100644
index 0000000..3be0060
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_local_dining_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_local_drink_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_local_drink_24px.svg
new file mode 100644
index 0000000..4ba9152
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_local_drink_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_local_florist_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_local_florist_24px.svg
new file mode 100644
index 0000000..bf9d45f
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_local_florist_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_local_gas_station_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_local_gas_station_24px.svg
new file mode 100644
index 0000000..08cb670
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_local_gas_station_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_local_grocery_store_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_local_grocery_store_24px.svg
new file mode 100644
index 0000000..ee758e6
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_local_grocery_store_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_local_hospital_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_local_hospital_24px.svg
new file mode 100644
index 0000000..85da4ff
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_local_hospital_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_local_hotel_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_local_hotel_24px.svg
new file mode 100644
index 0000000..f1cca2c
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_local_hotel_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_local_laundry_service_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_local_laundry_service_24px.svg
new file mode 100644
index 0000000..a519c04
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_local_laundry_service_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_local_library_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_local_library_24px.svg
new file mode 100644
index 0000000..5fa5109
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_local_library_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_local_mall_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_local_mall_24px.svg
new file mode 100644
index 0000000..35683c7
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_local_mall_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_local_movies_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_local_movies_24px.svg
new file mode 100644
index 0000000..74652a6
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_local_movies_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_local_offer_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_local_offer_24px.svg
new file mode 100644
index 0000000..20ad1fe
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_local_offer_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_local_parking_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_local_parking_24px.svg
new file mode 100644
index 0000000..0cc3198
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_local_parking_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_local_pharmacy_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_local_pharmacy_24px.svg
new file mode 100644
index 0000000..7272010
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_local_pharmacy_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_local_phone_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_local_phone_24px.svg
new file mode 100644
index 0000000..5908b6a
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_local_phone_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_local_pizza_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_local_pizza_24px.svg
new file mode 100644
index 0000000..d67936e
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_local_pizza_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_local_play_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_local_play_24px.svg
new file mode 100644
index 0000000..cb28463
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_local_play_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_local_post_office_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_local_post_office_24px.svg
new file mode 100644
index 0000000..f2c5b4f
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_local_post_office_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_local_printshop_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_local_printshop_24px.svg
new file mode 100644
index 0000000..6128bd8
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_local_printshop_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_local_see_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_local_see_24px.svg
new file mode 100644
index 0000000..94960bf
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_local_see_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_local_shipping_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_local_shipping_24px.svg
new file mode 100644
index 0000000..c928262
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_local_shipping_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_local_taxi_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_local_taxi_24px.svg
new file mode 100644
index 0000000..e3559e9
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_local_taxi_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_map_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_map_24px.svg
new file mode 100644
index 0000000..5fd9669
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_map_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_my_location_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_my_location_24px.svg
new file mode 100644
index 0000000..394dc36
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_my_location_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_navigation_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_navigation_24px.svg
new file mode 100644
index 0000000..2891c58
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_navigation_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_near_me_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_near_me_24px.svg
new file mode 100644
index 0000000..33afbe0
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_near_me_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_person_pin_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_person_pin_24px.svg
new file mode 100644
index 0000000..1955081
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_person_pin_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_person_pin_circle_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_person_pin_circle_24px.svg
new file mode 100644
index 0000000..f21fb22
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_person_pin_circle_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_pin_drop_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_pin_drop_24px.svg
new file mode 100644
index 0000000..498d663
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_pin_drop_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_place_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_place_24px.svg
new file mode 100644
index 0000000..490afe9
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_place_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_rate_review_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_rate_review_24px.svg
new file mode 100644
index 0000000..ce447b6
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_rate_review_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_restaurant_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_restaurant_24px.svg
new file mode 100644
index 0000000..70830b0
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_restaurant_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_restaurant_menu_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_restaurant_menu_24px.svg
new file mode 100644
index 0000000..3be0060
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_restaurant_menu_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_satellite_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_satellite_24px.svg
new file mode 100644
index 0000000..ef3e5ff
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_satellite_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_store_mall_directory_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_store_mall_directory_24px.svg
new file mode 100644
index 0000000..2b06cc5
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_store_mall_directory_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_streetview_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_streetview_24px.svg
new file mode 100644
index 0000000..abd2294
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_streetview_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_subway_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_subway_24px.svg
new file mode 100644
index 0000000..0d0f350
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_subway_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_terrain_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_terrain_24px.svg
new file mode 100644
index 0000000..b239af7
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_terrain_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_traffic_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_traffic_24px.svg
new file mode 100644
index 0000000..9560743
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_traffic_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_train_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_train_24px.svg
new file mode 100644
index 0000000..e18c9ae
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_train_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_tram_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_tram_24px.svg
new file mode 100644
index 0000000..69fe39c
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_tram_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_transfer_within_a_station_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_transfer_within_a_station_24px.svg
new file mode 100644
index 0000000..3779847
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_transfer_within_a_station_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/maps/svg/production/ic_zoom_out_map_24px.svg b/src/material-widgets/icons/maps/svg/production/ic_zoom_out_map_24px.svg
new file mode 100644
index 0000000..587ef03
--- /dev/null
+++ b/src/material-widgets/icons/maps/svg/production/ic_zoom_out_map_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/navigation/svg/production/ic_apps_24px.svg b/src/material-widgets/icons/navigation/svg/production/ic_apps_24px.svg
new file mode 100644
index 0000000..b0ccb6c
--- /dev/null
+++ b/src/material-widgets/icons/navigation/svg/production/ic_apps_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/navigation/svg/production/ic_arrow_back_24px.svg b/src/material-widgets/icons/navigation/svg/production/ic_arrow_back_24px.svg
new file mode 100644
index 0000000..00d44bf
--- /dev/null
+++ b/src/material-widgets/icons/navigation/svg/production/ic_arrow_back_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/navigation/svg/production/ic_arrow_downward_24px.svg b/src/material-widgets/icons/navigation/svg/production/ic_arrow_downward_24px.svg
new file mode 100644
index 0000000..27ddfa1
--- /dev/null
+++ b/src/material-widgets/icons/navigation/svg/production/ic_arrow_downward_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/navigation/svg/production/ic_arrow_drop_down_24px.svg b/src/material-widgets/icons/navigation/svg/production/ic_arrow_drop_down_24px.svg
new file mode 100644
index 0000000..6e4510d
--- /dev/null
+++ b/src/material-widgets/icons/navigation/svg/production/ic_arrow_drop_down_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/navigation/svg/production/ic_arrow_drop_down_circle_24px.svg b/src/material-widgets/icons/navigation/svg/production/ic_arrow_drop_down_circle_24px.svg
new file mode 100644
index 0000000..689107c
--- /dev/null
+++ b/src/material-widgets/icons/navigation/svg/production/ic_arrow_drop_down_circle_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/navigation/svg/production/ic_arrow_drop_up_24px.svg b/src/material-widgets/icons/navigation/svg/production/ic_arrow_drop_up_24px.svg
new file mode 100644
index 0000000..b9aa2cc
--- /dev/null
+++ b/src/material-widgets/icons/navigation/svg/production/ic_arrow_drop_up_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/navigation/svg/production/ic_arrow_forward_24px.svg b/src/material-widgets/icons/navigation/svg/production/ic_arrow_forward_24px.svg
new file mode 100644
index 0000000..c4a2c18
--- /dev/null
+++ b/src/material-widgets/icons/navigation/svg/production/ic_arrow_forward_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/navigation/svg/production/ic_arrow_upward_24px.svg b/src/material-widgets/icons/navigation/svg/production/ic_arrow_upward_24px.svg
new file mode 100644
index 0000000..e4d9a7e
--- /dev/null
+++ b/src/material-widgets/icons/navigation/svg/production/ic_arrow_upward_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/navigation/svg/production/ic_cancel_24px.svg b/src/material-widgets/icons/navigation/svg/production/ic_cancel_24px.svg
new file mode 100644
index 0000000..d6e55da
--- /dev/null
+++ b/src/material-widgets/icons/navigation/svg/production/ic_cancel_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/navigation/svg/production/ic_check_24px.svg b/src/material-widgets/icons/navigation/svg/production/ic_check_24px.svg
new file mode 100644
index 0000000..a608f7d
--- /dev/null
+++ b/src/material-widgets/icons/navigation/svg/production/ic_check_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/navigation/svg/production/ic_chevron_left_24px.svg b/src/material-widgets/icons/navigation/svg/production/ic_chevron_left_24px.svg
new file mode 100644
index 0000000..36e6e99
--- /dev/null
+++ b/src/material-widgets/icons/navigation/svg/production/ic_chevron_left_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/navigation/svg/production/ic_chevron_right_24px.svg b/src/material-widgets/icons/navigation/svg/production/ic_chevron_right_24px.svg
new file mode 100644
index 0000000..47ed5fe
--- /dev/null
+++ b/src/material-widgets/icons/navigation/svg/production/ic_chevron_right_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/navigation/svg/production/ic_close_24px.svg b/src/material-widgets/icons/navigation/svg/production/ic_close_24px.svg
new file mode 100644
index 0000000..865788b
--- /dev/null
+++ b/src/material-widgets/icons/navigation/svg/production/ic_close_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/navigation/svg/production/ic_expand_less_24px.svg b/src/material-widgets/icons/navigation/svg/production/ic_expand_less_24px.svg
new file mode 100644
index 0000000..1b5a326
--- /dev/null
+++ b/src/material-widgets/icons/navigation/svg/production/ic_expand_less_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/navigation/svg/production/ic_expand_more_24px.svg b/src/material-widgets/icons/navigation/svg/production/ic_expand_more_24px.svg
new file mode 100644
index 0000000..e3e13c5
--- /dev/null
+++ b/src/material-widgets/icons/navigation/svg/production/ic_expand_more_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/navigation/svg/production/ic_first_page_24px.svg b/src/material-widgets/icons/navigation/svg/production/ic_first_page_24px.svg
new file mode 100644
index 0000000..9da64ba
--- /dev/null
+++ b/src/material-widgets/icons/navigation/svg/production/ic_first_page_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/navigation/svg/production/ic_fullscreen_24px.svg b/src/material-widgets/icons/navigation/svg/production/ic_fullscreen_24px.svg
new file mode 100644
index 0000000..e5eb6a2
--- /dev/null
+++ b/src/material-widgets/icons/navigation/svg/production/ic_fullscreen_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/navigation/svg/production/ic_fullscreen_exit_24px.svg b/src/material-widgets/icons/navigation/svg/production/ic_fullscreen_exit_24px.svg
new file mode 100644
index 0000000..9d3ff86
--- /dev/null
+++ b/src/material-widgets/icons/navigation/svg/production/ic_fullscreen_exit_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/navigation/svg/production/ic_last_page_24px.svg b/src/material-widgets/icons/navigation/svg/production/ic_last_page_24px.svg
new file mode 100644
index 0000000..93cfd96
--- /dev/null
+++ b/src/material-widgets/icons/navigation/svg/production/ic_last_page_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/navigation/svg/production/ic_menu_24px.svg b/src/material-widgets/icons/navigation/svg/production/ic_menu_24px.svg
new file mode 100644
index 0000000..ae7c36c
--- /dev/null
+++ b/src/material-widgets/icons/navigation/svg/production/ic_menu_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/navigation/svg/production/ic_more_horiz_24px.svg b/src/material-widgets/icons/navigation/svg/production/ic_more_horiz_24px.svg
new file mode 100644
index 0000000..afb392c
--- /dev/null
+++ b/src/material-widgets/icons/navigation/svg/production/ic_more_horiz_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/navigation/svg/production/ic_more_vert_24px.svg b/src/material-widgets/icons/navigation/svg/production/ic_more_vert_24px.svg
new file mode 100644
index 0000000..f2427f8
--- /dev/null
+++ b/src/material-widgets/icons/navigation/svg/production/ic_more_vert_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/navigation/svg/production/ic_refresh_24px.svg b/src/material-widgets/icons/navigation/svg/production/ic_refresh_24px.svg
new file mode 100644
index 0000000..f5d626c
--- /dev/null
+++ b/src/material-widgets/icons/navigation/svg/production/ic_refresh_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/navigation/svg/production/ic_subdirectory_arrow_left_24px.svg b/src/material-widgets/icons/navigation/svg/production/ic_subdirectory_arrow_left_24px.svg
new file mode 100644
index 0000000..a64ef9f
--- /dev/null
+++ b/src/material-widgets/icons/navigation/svg/production/ic_subdirectory_arrow_left_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/navigation/svg/production/ic_subdirectory_arrow_right_24px.svg b/src/material-widgets/icons/navigation/svg/production/ic_subdirectory_arrow_right_24px.svg
new file mode 100644
index 0000000..dd10ac6
--- /dev/null
+++ b/src/material-widgets/icons/navigation/svg/production/ic_subdirectory_arrow_right_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/navigation/svg/production/ic_unfold_less_24px.svg b/src/material-widgets/icons/navigation/svg/production/ic_unfold_less_24px.svg
new file mode 100644
index 0000000..d84a82d
--- /dev/null
+++ b/src/material-widgets/icons/navigation/svg/production/ic_unfold_less_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/navigation/svg/production/ic_unfold_more_24px.svg b/src/material-widgets/icons/navigation/svg/production/ic_unfold_more_24px.svg
new file mode 100644
index 0000000..5cb8b46
--- /dev/null
+++ b/src/material-widgets/icons/navigation/svg/production/ic_unfold_more_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/notification/svg/production/ic_adb_24px.svg b/src/material-widgets/icons/notification/svg/production/ic_adb_24px.svg
new file mode 100644
index 0000000..ca94af5
--- /dev/null
+++ b/src/material-widgets/icons/notification/svg/production/ic_adb_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/notification/svg/production/ic_airline_seat_flat_24px.svg b/src/material-widgets/icons/notification/svg/production/ic_airline_seat_flat_24px.svg
new file mode 100644
index 0000000..a1bd66d
--- /dev/null
+++ b/src/material-widgets/icons/notification/svg/production/ic_airline_seat_flat_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/notification/svg/production/ic_airline_seat_flat_angled_24px.svg b/src/material-widgets/icons/notification/svg/production/ic_airline_seat_flat_angled_24px.svg
new file mode 100644
index 0000000..fa89cc0
--- /dev/null
+++ b/src/material-widgets/icons/notification/svg/production/ic_airline_seat_flat_angled_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/notification/svg/production/ic_airline_seat_individual_suite_24px.svg b/src/material-widgets/icons/notification/svg/production/ic_airline_seat_individual_suite_24px.svg
new file mode 100644
index 0000000..5539558
--- /dev/null
+++ b/src/material-widgets/icons/notification/svg/production/ic_airline_seat_individual_suite_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/notification/svg/production/ic_airline_seat_legroom_extra_24px.svg b/src/material-widgets/icons/notification/svg/production/ic_airline_seat_legroom_extra_24px.svg
new file mode 100644
index 0000000..dff07be
--- /dev/null
+++ b/src/material-widgets/icons/notification/svg/production/ic_airline_seat_legroom_extra_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/notification/svg/production/ic_airline_seat_legroom_normal_24px.svg b/src/material-widgets/icons/notification/svg/production/ic_airline_seat_legroom_normal_24px.svg
new file mode 100644
index 0000000..6ecb22b
--- /dev/null
+++ b/src/material-widgets/icons/notification/svg/production/ic_airline_seat_legroom_normal_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/notification/svg/production/ic_airline_seat_legroom_reduced_24px.svg b/src/material-widgets/icons/notification/svg/production/ic_airline_seat_legroom_reduced_24px.svg
new file mode 100644
index 0000000..a640230
--- /dev/null
+++ b/src/material-widgets/icons/notification/svg/production/ic_airline_seat_legroom_reduced_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/notification/svg/production/ic_airline_seat_recline_extra_24px.svg b/src/material-widgets/icons/notification/svg/production/ic_airline_seat_recline_extra_24px.svg
new file mode 100644
index 0000000..eaf3b35
--- /dev/null
+++ b/src/material-widgets/icons/notification/svg/production/ic_airline_seat_recline_extra_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/notification/svg/production/ic_airline_seat_recline_normal_24px.svg b/src/material-widgets/icons/notification/svg/production/ic_airline_seat_recline_normal_24px.svg
new file mode 100644
index 0000000..46d6d9b
--- /dev/null
+++ b/src/material-widgets/icons/notification/svg/production/ic_airline_seat_recline_normal_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/notification/svg/production/ic_bluetooth_audio_24px.svg b/src/material-widgets/icons/notification/svg/production/ic_bluetooth_audio_24px.svg
new file mode 100644
index 0000000..8bb176e
--- /dev/null
+++ b/src/material-widgets/icons/notification/svg/production/ic_bluetooth_audio_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/notification/svg/production/ic_confirmation_number_24px.svg b/src/material-widgets/icons/notification/svg/production/ic_confirmation_number_24px.svg
new file mode 100644
index 0000000..1206bad
--- /dev/null
+++ b/src/material-widgets/icons/notification/svg/production/ic_confirmation_number_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/notification/svg/production/ic_disc_full_24px.svg b/src/material-widgets/icons/notification/svg/production/ic_disc_full_24px.svg
new file mode 100644
index 0000000..fd462d8
--- /dev/null
+++ b/src/material-widgets/icons/notification/svg/production/ic_disc_full_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/notification/svg/production/ic_do_not_disturb_24px.svg b/src/material-widgets/icons/notification/svg/production/ic_do_not_disturb_24px.svg
new file mode 100644
index 0000000..065210c
--- /dev/null
+++ b/src/material-widgets/icons/notification/svg/production/ic_do_not_disturb_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/notification/svg/production/ic_do_not_disturb_alt_24px.svg b/src/material-widgets/icons/notification/svg/production/ic_do_not_disturb_alt_24px.svg
new file mode 100644
index 0000000..9f91150
--- /dev/null
+++ b/src/material-widgets/icons/notification/svg/production/ic_do_not_disturb_alt_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/notification/svg/production/ic_do_not_disturb_off_24px.svg b/src/material-widgets/icons/notification/svg/production/ic_do_not_disturb_off_24px.svg
new file mode 100644
index 0000000..e54f566
--- /dev/null
+++ b/src/material-widgets/icons/notification/svg/production/ic_do_not_disturb_off_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/notification/svg/production/ic_do_not_disturb_on_24px.svg b/src/material-widgets/icons/notification/svg/production/ic_do_not_disturb_on_24px.svg
new file mode 100644
index 0000000..0f978ec
--- /dev/null
+++ b/src/material-widgets/icons/notification/svg/production/ic_do_not_disturb_on_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/notification/svg/production/ic_drive_eta_24px.svg b/src/material-widgets/icons/notification/svg/production/ic_drive_eta_24px.svg
new file mode 100644
index 0000000..85b07ca
--- /dev/null
+++ b/src/material-widgets/icons/notification/svg/production/ic_drive_eta_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/notification/svg/production/ic_enhanced_encryption_24px.svg b/src/material-widgets/icons/notification/svg/production/ic_enhanced_encryption_24px.svg
new file mode 100644
index 0000000..2d0ddf8
--- /dev/null
+++ b/src/material-widgets/icons/notification/svg/production/ic_enhanced_encryption_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/notification/svg/production/ic_event_available_24px.svg b/src/material-widgets/icons/notification/svg/production/ic_event_available_24px.svg
new file mode 100644
index 0000000..035b5c8
--- /dev/null
+++ b/src/material-widgets/icons/notification/svg/production/ic_event_available_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/notification/svg/production/ic_event_busy_24px.svg b/src/material-widgets/icons/notification/svg/production/ic_event_busy_24px.svg
new file mode 100644
index 0000000..d3e6d7f
--- /dev/null
+++ b/src/material-widgets/icons/notification/svg/production/ic_event_busy_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/notification/svg/production/ic_event_note_24px.svg b/src/material-widgets/icons/notification/svg/production/ic_event_note_24px.svg
new file mode 100644
index 0000000..5beeb71
--- /dev/null
+++ b/src/material-widgets/icons/notification/svg/production/ic_event_note_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/notification/svg/production/ic_folder_special_24px.svg b/src/material-widgets/icons/notification/svg/production/ic_folder_special_24px.svg
new file mode 100644
index 0000000..adccedd
--- /dev/null
+++ b/src/material-widgets/icons/notification/svg/production/ic_folder_special_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/notification/svg/production/ic_live_tv_24px.svg b/src/material-widgets/icons/notification/svg/production/ic_live_tv_24px.svg
new file mode 100644
index 0000000..67e98e7
--- /dev/null
+++ b/src/material-widgets/icons/notification/svg/production/ic_live_tv_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/notification/svg/production/ic_mms_24px.svg b/src/material-widgets/icons/notification/svg/production/ic_mms_24px.svg
new file mode 100644
index 0000000..f15436c
--- /dev/null
+++ b/src/material-widgets/icons/notification/svg/production/ic_mms_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/notification/svg/production/ic_more_24px.svg b/src/material-widgets/icons/notification/svg/production/ic_more_24px.svg
new file mode 100644
index 0000000..ad5567a
--- /dev/null
+++ b/src/material-widgets/icons/notification/svg/production/ic_more_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/notification/svg/production/ic_network_check_24px.svg b/src/material-widgets/icons/notification/svg/production/ic_network_check_24px.svg
new file mode 100644
index 0000000..6b31ab9
--- /dev/null
+++ b/src/material-widgets/icons/notification/svg/production/ic_network_check_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/notification/svg/production/ic_network_locked_24px.svg b/src/material-widgets/icons/notification/svg/production/ic_network_locked_24px.svg
new file mode 100644
index 0000000..3a5c0d6
--- /dev/null
+++ b/src/material-widgets/icons/notification/svg/production/ic_network_locked_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/notification/svg/production/ic_no_encryption_24px.svg b/src/material-widgets/icons/notification/svg/production/ic_no_encryption_24px.svg
new file mode 100644
index 0000000..0528c12
--- /dev/null
+++ b/src/material-widgets/icons/notification/svg/production/ic_no_encryption_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/notification/svg/production/ic_ondemand_video_24px.svg b/src/material-widgets/icons/notification/svg/production/ic_ondemand_video_24px.svg
new file mode 100644
index 0000000..239690b
--- /dev/null
+++ b/src/material-widgets/icons/notification/svg/production/ic_ondemand_video_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/notification/svg/production/ic_personal_video_24px.svg b/src/material-widgets/icons/notification/svg/production/ic_personal_video_24px.svg
new file mode 100644
index 0000000..a4169e9
--- /dev/null
+++ b/src/material-widgets/icons/notification/svg/production/ic_personal_video_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/notification/svg/production/ic_phone_bluetooth_speaker_24px.svg b/src/material-widgets/icons/notification/svg/production/ic_phone_bluetooth_speaker_24px.svg
new file mode 100644
index 0000000..69f9398
--- /dev/null
+++ b/src/material-widgets/icons/notification/svg/production/ic_phone_bluetooth_speaker_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/notification/svg/production/ic_phone_forwarded_24px.svg b/src/material-widgets/icons/notification/svg/production/ic_phone_forwarded_24px.svg
new file mode 100644
index 0000000..c21cfc1
--- /dev/null
+++ b/src/material-widgets/icons/notification/svg/production/ic_phone_forwarded_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/notification/svg/production/ic_phone_in_talk_24px.svg b/src/material-widgets/icons/notification/svg/production/ic_phone_in_talk_24px.svg
new file mode 100644
index 0000000..c73964c
--- /dev/null
+++ b/src/material-widgets/icons/notification/svg/production/ic_phone_in_talk_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/notification/svg/production/ic_phone_locked_24px.svg b/src/material-widgets/icons/notification/svg/production/ic_phone_locked_24px.svg
new file mode 100644
index 0000000..aca754f
--- /dev/null
+++ b/src/material-widgets/icons/notification/svg/production/ic_phone_locked_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/notification/svg/production/ic_phone_missed_24px.svg b/src/material-widgets/icons/notification/svg/production/ic_phone_missed_24px.svg
new file mode 100644
index 0000000..bb68b75
--- /dev/null
+++ b/src/material-widgets/icons/notification/svg/production/ic_phone_missed_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/notification/svg/production/ic_phone_paused_24px.svg b/src/material-widgets/icons/notification/svg/production/ic_phone_paused_24px.svg
new file mode 100644
index 0000000..2aa7400
--- /dev/null
+++ b/src/material-widgets/icons/notification/svg/production/ic_phone_paused_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/notification/svg/production/ic_power_24px.svg b/src/material-widgets/icons/notification/svg/production/ic_power_24px.svg
new file mode 100644
index 0000000..3cb2846
--- /dev/null
+++ b/src/material-widgets/icons/notification/svg/production/ic_power_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/notification/svg/production/ic_priority_high_24px.svg b/src/material-widgets/icons/notification/svg/production/ic_priority_high_24px.svg
new file mode 100644
index 0000000..326d004
--- /dev/null
+++ b/src/material-widgets/icons/notification/svg/production/ic_priority_high_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/notification/svg/production/ic_rv_hookup_24px.svg b/src/material-widgets/icons/notification/svg/production/ic_rv_hookup_24px.svg
new file mode 100644
index 0000000..c261516
--- /dev/null
+++ b/src/material-widgets/icons/notification/svg/production/ic_rv_hookup_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/notification/svg/production/ic_sd_card_24px.svg b/src/material-widgets/icons/notification/svg/production/ic_sd_card_24px.svg
new file mode 100644
index 0000000..15ab481
--- /dev/null
+++ b/src/material-widgets/icons/notification/svg/production/ic_sd_card_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/notification/svg/production/ic_sim_card_alert_24px.svg b/src/material-widgets/icons/notification/svg/production/ic_sim_card_alert_24px.svg
new file mode 100644
index 0000000..f471892
--- /dev/null
+++ b/src/material-widgets/icons/notification/svg/production/ic_sim_card_alert_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/notification/svg/production/ic_sms_24px.svg b/src/material-widgets/icons/notification/svg/production/ic_sms_24px.svg
new file mode 100644
index 0000000..b427d45
--- /dev/null
+++ b/src/material-widgets/icons/notification/svg/production/ic_sms_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/notification/svg/production/ic_sms_failed_24px.svg b/src/material-widgets/icons/notification/svg/production/ic_sms_failed_24px.svg
new file mode 100644
index 0000000..72b0945
--- /dev/null
+++ b/src/material-widgets/icons/notification/svg/production/ic_sms_failed_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/notification/svg/production/ic_sync_24px.svg b/src/material-widgets/icons/notification/svg/production/ic_sync_24px.svg
new file mode 100644
index 0000000..327ff63
--- /dev/null
+++ b/src/material-widgets/icons/notification/svg/production/ic_sync_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/notification/svg/production/ic_sync_disabled_24px.svg b/src/material-widgets/icons/notification/svg/production/ic_sync_disabled_24px.svg
new file mode 100644
index 0000000..cb82f21
--- /dev/null
+++ b/src/material-widgets/icons/notification/svg/production/ic_sync_disabled_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/notification/svg/production/ic_sync_problem_24px.svg b/src/material-widgets/icons/notification/svg/production/ic_sync_problem_24px.svg
new file mode 100644
index 0000000..797674e
--- /dev/null
+++ b/src/material-widgets/icons/notification/svg/production/ic_sync_problem_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/notification/svg/production/ic_system_update_24px.svg b/src/material-widgets/icons/notification/svg/production/ic_system_update_24px.svg
new file mode 100644
index 0000000..1013886
--- /dev/null
+++ b/src/material-widgets/icons/notification/svg/production/ic_system_update_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/notification/svg/production/ic_tap_and_play_24px.svg b/src/material-widgets/icons/notification/svg/production/ic_tap_and_play_24px.svg
new file mode 100644
index 0000000..6951de4
--- /dev/null
+++ b/src/material-widgets/icons/notification/svg/production/ic_tap_and_play_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/notification/svg/production/ic_time_to_leave_24px.svg b/src/material-widgets/icons/notification/svg/production/ic_time_to_leave_24px.svg
new file mode 100644
index 0000000..85b07ca
--- /dev/null
+++ b/src/material-widgets/icons/notification/svg/production/ic_time_to_leave_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/notification/svg/production/ic_vibration_24px.svg b/src/material-widgets/icons/notification/svg/production/ic_vibration_24px.svg
new file mode 100644
index 0000000..789d044
--- /dev/null
+++ b/src/material-widgets/icons/notification/svg/production/ic_vibration_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/notification/svg/production/ic_voice_chat_24px.svg b/src/material-widgets/icons/notification/svg/production/ic_voice_chat_24px.svg
new file mode 100644
index 0000000..9e72309
--- /dev/null
+++ b/src/material-widgets/icons/notification/svg/production/ic_voice_chat_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/notification/svg/production/ic_vpn_lock_24px.svg b/src/material-widgets/icons/notification/svg/production/ic_vpn_lock_24px.svg
new file mode 100644
index 0000000..6c4c795
--- /dev/null
+++ b/src/material-widgets/icons/notification/svg/production/ic_vpn_lock_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/notification/svg/production/ic_wc_24px.svg b/src/material-widgets/icons/notification/svg/production/ic_wc_24px.svg
new file mode 100644
index 0000000..022dcde
--- /dev/null
+++ b/src/material-widgets/icons/notification/svg/production/ic_wc_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/notification/svg/production/ic_wifi_24px.svg b/src/material-widgets/icons/notification/svg/production/ic_wifi_24px.svg
new file mode 100644
index 0000000..cafae9c
--- /dev/null
+++ b/src/material-widgets/icons/notification/svg/production/ic_wifi_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/places/svg/production/ic_ac_unit_24px.svg b/src/material-widgets/icons/places/svg/production/ic_ac_unit_24px.svg
new file mode 100644
index 0000000..c4cc71f
--- /dev/null
+++ b/src/material-widgets/icons/places/svg/production/ic_ac_unit_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/places/svg/production/ic_airport_shuttle_24px.svg b/src/material-widgets/icons/places/svg/production/ic_airport_shuttle_24px.svg
new file mode 100644
index 0000000..392d651
--- /dev/null
+++ b/src/material-widgets/icons/places/svg/production/ic_airport_shuttle_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/places/svg/production/ic_all_inclusive_24px.svg b/src/material-widgets/icons/places/svg/production/ic_all_inclusive_24px.svg
new file mode 100644
index 0000000..090d242
--- /dev/null
+++ b/src/material-widgets/icons/places/svg/production/ic_all_inclusive_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/places/svg/production/ic_beach_access_24px.svg b/src/material-widgets/icons/places/svg/production/ic_beach_access_24px.svg
new file mode 100644
index 0000000..3c32044
--- /dev/null
+++ b/src/material-widgets/icons/places/svg/production/ic_beach_access_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/places/svg/production/ic_business_center_24px.svg b/src/material-widgets/icons/places/svg/production/ic_business_center_24px.svg
new file mode 100644
index 0000000..a979c93
--- /dev/null
+++ b/src/material-widgets/icons/places/svg/production/ic_business_center_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/places/svg/production/ic_casino_24px.svg b/src/material-widgets/icons/places/svg/production/ic_casino_24px.svg
new file mode 100644
index 0000000..ea9b900
--- /dev/null
+++ b/src/material-widgets/icons/places/svg/production/ic_casino_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/places/svg/production/ic_child_care_24px.svg b/src/material-widgets/icons/places/svg/production/ic_child_care_24px.svg
new file mode 100644
index 0000000..f73f9df
--- /dev/null
+++ b/src/material-widgets/icons/places/svg/production/ic_child_care_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/places/svg/production/ic_child_friendly_24px.svg b/src/material-widgets/icons/places/svg/production/ic_child_friendly_24px.svg
new file mode 100644
index 0000000..ba51048
--- /dev/null
+++ b/src/material-widgets/icons/places/svg/production/ic_child_friendly_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/places/svg/production/ic_fitness_center_24px.svg b/src/material-widgets/icons/places/svg/production/ic_fitness_center_24px.svg
new file mode 100644
index 0000000..828dba8
--- /dev/null
+++ b/src/material-widgets/icons/places/svg/production/ic_fitness_center_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/places/svg/production/ic_free_breakfast_24px.svg b/src/material-widgets/icons/places/svg/production/ic_free_breakfast_24px.svg
new file mode 100644
index 0000000..c56a433
--- /dev/null
+++ b/src/material-widgets/icons/places/svg/production/ic_free_breakfast_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/places/svg/production/ic_golf_course_24px.svg b/src/material-widgets/icons/places/svg/production/ic_golf_course_24px.svg
new file mode 100644
index 0000000..500a00f
--- /dev/null
+++ b/src/material-widgets/icons/places/svg/production/ic_golf_course_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/places/svg/production/ic_hot_tub_24px.svg b/src/material-widgets/icons/places/svg/production/ic_hot_tub_24px.svg
new file mode 100644
index 0000000..865ea75
--- /dev/null
+++ b/src/material-widgets/icons/places/svg/production/ic_hot_tub_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/places/svg/production/ic_kitchen_24px.svg b/src/material-widgets/icons/places/svg/production/ic_kitchen_24px.svg
new file mode 100644
index 0000000..aa0616a
--- /dev/null
+++ b/src/material-widgets/icons/places/svg/production/ic_kitchen_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/places/svg/production/ic_pool_24px.svg b/src/material-widgets/icons/places/svg/production/ic_pool_24px.svg
new file mode 100644
index 0000000..b08944e
--- /dev/null
+++ b/src/material-widgets/icons/places/svg/production/ic_pool_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/places/svg/production/ic_room_service_24px.svg b/src/material-widgets/icons/places/svg/production/ic_room_service_24px.svg
new file mode 100644
index 0000000..560f160
--- /dev/null
+++ b/src/material-widgets/icons/places/svg/production/ic_room_service_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/places/svg/production/ic_rv_hookup_24px.svg b/src/material-widgets/icons/places/svg/production/ic_rv_hookup_24px.svg
new file mode 100644
index 0000000..c261516
--- /dev/null
+++ b/src/material-widgets/icons/places/svg/production/ic_rv_hookup_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/places/svg/production/ic_smoke_free_24px.svg b/src/material-widgets/icons/places/svg/production/ic_smoke_free_24px.svg
new file mode 100644
index 0000000..0bed46f
--- /dev/null
+++ b/src/material-widgets/icons/places/svg/production/ic_smoke_free_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/places/svg/production/ic_smoking_rooms_24px.svg b/src/material-widgets/icons/places/svg/production/ic_smoking_rooms_24px.svg
new file mode 100644
index 0000000..e8aec2d
--- /dev/null
+++ b/src/material-widgets/icons/places/svg/production/ic_smoking_rooms_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/places/svg/production/ic_spa_24px.svg b/src/material-widgets/icons/places/svg/production/ic_spa_24px.svg
new file mode 100644
index 0000000..7300651
--- /dev/null
+++ b/src/material-widgets/icons/places/svg/production/ic_spa_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/social/svg/production/ic_cake_24px.svg b/src/material-widgets/icons/social/svg/production/ic_cake_24px.svg
new file mode 100644
index 0000000..23dc09f
--- /dev/null
+++ b/src/material-widgets/icons/social/svg/production/ic_cake_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/social/svg/production/ic_domain_24px.svg b/src/material-widgets/icons/social/svg/production/ic_domain_24px.svg
new file mode 100644
index 0000000..bfaefa1
--- /dev/null
+++ b/src/material-widgets/icons/social/svg/production/ic_domain_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/social/svg/production/ic_group_24px.svg b/src/material-widgets/icons/social/svg/production/ic_group_24px.svg
new file mode 100644
index 0000000..bd9a133
--- /dev/null
+++ b/src/material-widgets/icons/social/svg/production/ic_group_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/social/svg/production/ic_group_add_24px.svg b/src/material-widgets/icons/social/svg/production/ic_group_add_24px.svg
new file mode 100644
index 0000000..f863fa5
--- /dev/null
+++ b/src/material-widgets/icons/social/svg/production/ic_group_add_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/social/svg/production/ic_location_city_24px.svg b/src/material-widgets/icons/social/svg/production/ic_location_city_24px.svg
new file mode 100644
index 0000000..357849b
--- /dev/null
+++ b/src/material-widgets/icons/social/svg/production/ic_location_city_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/social/svg/production/ic_mood_24px.svg b/src/material-widgets/icons/social/svg/production/ic_mood_24px.svg
new file mode 100644
index 0000000..57bea0f
--- /dev/null
+++ b/src/material-widgets/icons/social/svg/production/ic_mood_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/social/svg/production/ic_mood_bad_24px.svg b/src/material-widgets/icons/social/svg/production/ic_mood_bad_24px.svg
new file mode 100644
index 0000000..400f4da
--- /dev/null
+++ b/src/material-widgets/icons/social/svg/production/ic_mood_bad_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/social/svg/production/ic_notifications_24px.svg b/src/material-widgets/icons/social/svg/production/ic_notifications_24px.svg
new file mode 100644
index 0000000..cdb3331
--- /dev/null
+++ b/src/material-widgets/icons/social/svg/production/ic_notifications_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/social/svg/production/ic_notifications_active_24px.svg b/src/material-widgets/icons/social/svg/production/ic_notifications_active_24px.svg
new file mode 100644
index 0000000..6d72315
--- /dev/null
+++ b/src/material-widgets/icons/social/svg/production/ic_notifications_active_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/social/svg/production/ic_notifications_none_24px.svg b/src/material-widgets/icons/social/svg/production/ic_notifications_none_24px.svg
new file mode 100644
index 0000000..7509df6
--- /dev/null
+++ b/src/material-widgets/icons/social/svg/production/ic_notifications_none_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/social/svg/production/ic_notifications_off_24px.svg b/src/material-widgets/icons/social/svg/production/ic_notifications_off_24px.svg
new file mode 100644
index 0000000..0827f2a
--- /dev/null
+++ b/src/material-widgets/icons/social/svg/production/ic_notifications_off_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/social/svg/production/ic_notifications_paused_24px.svg b/src/material-widgets/icons/social/svg/production/ic_notifications_paused_24px.svg
new file mode 100644
index 0000000..06ed575
--- /dev/null
+++ b/src/material-widgets/icons/social/svg/production/ic_notifications_paused_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/social/svg/production/ic_pages_24px.svg b/src/material-widgets/icons/social/svg/production/ic_pages_24px.svg
new file mode 100644
index 0000000..c8a0421
--- /dev/null
+++ b/src/material-widgets/icons/social/svg/production/ic_pages_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/social/svg/production/ic_party_mode_24px.svg b/src/material-widgets/icons/social/svg/production/ic_party_mode_24px.svg
new file mode 100644
index 0000000..12a8ee3
--- /dev/null
+++ b/src/material-widgets/icons/social/svg/production/ic_party_mode_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/social/svg/production/ic_people_24px.svg b/src/material-widgets/icons/social/svg/production/ic_people_24px.svg
new file mode 100644
index 0000000..bd9a133
--- /dev/null
+++ b/src/material-widgets/icons/social/svg/production/ic_people_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/social/svg/production/ic_people_outline_24px.svg b/src/material-widgets/icons/social/svg/production/ic_people_outline_24px.svg
new file mode 100644
index 0000000..901e72c
--- /dev/null
+++ b/src/material-widgets/icons/social/svg/production/ic_people_outline_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/social/svg/production/ic_person_24px.svg b/src/material-widgets/icons/social/svg/production/ic_person_24px.svg
new file mode 100644
index 0000000..e22d151
--- /dev/null
+++ b/src/material-widgets/icons/social/svg/production/ic_person_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/social/svg/production/ic_person_add_24px.svg b/src/material-widgets/icons/social/svg/production/ic_person_add_24px.svg
new file mode 100644
index 0000000..97e4d3a
--- /dev/null
+++ b/src/material-widgets/icons/social/svg/production/ic_person_add_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/social/svg/production/ic_person_outline_24px.svg b/src/material-widgets/icons/social/svg/production/ic_person_outline_24px.svg
new file mode 100644
index 0000000..a1ac943
--- /dev/null
+++ b/src/material-widgets/icons/social/svg/production/ic_person_outline_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/social/svg/production/ic_plus_one_24px.svg b/src/material-widgets/icons/social/svg/production/ic_plus_one_24px.svg
new file mode 100644
index 0000000..09b83d6
--- /dev/null
+++ b/src/material-widgets/icons/social/svg/production/ic_plus_one_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/social/svg/production/ic_poll_24px.svg b/src/material-widgets/icons/social/svg/production/ic_poll_24px.svg
new file mode 100644
index 0000000..cc7768b
--- /dev/null
+++ b/src/material-widgets/icons/social/svg/production/ic_poll_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/social/svg/production/ic_public_24px.svg b/src/material-widgets/icons/social/svg/production/ic_public_24px.svg
new file mode 100644
index 0000000..6356e73
--- /dev/null
+++ b/src/material-widgets/icons/social/svg/production/ic_public_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/social/svg/production/ic_school_24px.svg b/src/material-widgets/icons/social/svg/production/ic_school_24px.svg
new file mode 100644
index 0000000..3a6524b
--- /dev/null
+++ b/src/material-widgets/icons/social/svg/production/ic_school_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/social/svg/production/ic_sentiment_dissatisfied_24px.svg b/src/material-widgets/icons/social/svg/production/ic_sentiment_dissatisfied_24px.svg
new file mode 100644
index 0000000..7d4f065
--- /dev/null
+++ b/src/material-widgets/icons/social/svg/production/ic_sentiment_dissatisfied_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/social/svg/production/ic_sentiment_neutral_24px.svg b/src/material-widgets/icons/social/svg/production/ic_sentiment_neutral_24px.svg
new file mode 100644
index 0000000..f4e174b
--- /dev/null
+++ b/src/material-widgets/icons/social/svg/production/ic_sentiment_neutral_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/social/svg/production/ic_sentiment_satisfied_24px.svg b/src/material-widgets/icons/social/svg/production/ic_sentiment_satisfied_24px.svg
new file mode 100644
index 0000000..ce09a92
--- /dev/null
+++ b/src/material-widgets/icons/social/svg/production/ic_sentiment_satisfied_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/social/svg/production/ic_sentiment_very_dissatisfied_24px.svg b/src/material-widgets/icons/social/svg/production/ic_sentiment_very_dissatisfied_24px.svg
new file mode 100644
index 0000000..59a5ee3
--- /dev/null
+++ b/src/material-widgets/icons/social/svg/production/ic_sentiment_very_dissatisfied_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/social/svg/production/ic_sentiment_very_satisfied_24px.svg b/src/material-widgets/icons/social/svg/production/ic_sentiment_very_satisfied_24px.svg
new file mode 100644
index 0000000..2d1f227
--- /dev/null
+++ b/src/material-widgets/icons/social/svg/production/ic_sentiment_very_satisfied_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/social/svg/production/ic_share_24px.svg b/src/material-widgets/icons/social/svg/production/ic_share_24px.svg
new file mode 100644
index 0000000..ed3e530
--- /dev/null
+++ b/src/material-widgets/icons/social/svg/production/ic_share_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/social/svg/production/ic_whatshot_24px.svg b/src/material-widgets/icons/social/svg/production/ic_whatshot_24px.svg
new file mode 100644
index 0000000..d064899
--- /dev/null
+++ b/src/material-widgets/icons/social/svg/production/ic_whatshot_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/toggle/svg/production/ic_check_box_24px.svg b/src/material-widgets/icons/toggle/svg/production/ic_check_box_24px.svg
new file mode 100644
index 0000000..36658a4
--- /dev/null
+++ b/src/material-widgets/icons/toggle/svg/production/ic_check_box_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/toggle/svg/production/ic_check_box_outline_blank_24px.svg b/src/material-widgets/icons/toggle/svg/production/ic_check_box_outline_blank_24px.svg
new file mode 100644
index 0000000..03aea59
--- /dev/null
+++ b/src/material-widgets/icons/toggle/svg/production/ic_check_box_outline_blank_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/toggle/svg/production/ic_indeterminate_check_box_24px.svg b/src/material-widgets/icons/toggle/svg/production/ic_indeterminate_check_box_24px.svg
new file mode 100644
index 0000000..4a7533d
--- /dev/null
+++ b/src/material-widgets/icons/toggle/svg/production/ic_indeterminate_check_box_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/toggle/svg/production/ic_radio_button_checked_24px.svg b/src/material-widgets/icons/toggle/svg/production/ic_radio_button_checked_24px.svg
new file mode 100644
index 0000000..2cb138b
--- /dev/null
+++ b/src/material-widgets/icons/toggle/svg/production/ic_radio_button_checked_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/toggle/svg/production/ic_radio_button_unchecked_24px.svg b/src/material-widgets/icons/toggle/svg/production/ic_radio_button_unchecked_24px.svg
new file mode 100644
index 0000000..acce6d1
--- /dev/null
+++ b/src/material-widgets/icons/toggle/svg/production/ic_radio_button_unchecked_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/toggle/svg/production/ic_star_24px.svg b/src/material-widgets/icons/toggle/svg/production/ic_star_24px.svg
new file mode 100644
index 0000000..46d104b
--- /dev/null
+++ b/src/material-widgets/icons/toggle/svg/production/ic_star_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/toggle/svg/production/ic_star_border_24px.svg b/src/material-widgets/icons/toggle/svg/production/ic_star_border_24px.svg
new file mode 100644
index 0000000..98e7040
--- /dev/null
+++ b/src/material-widgets/icons/toggle/svg/production/ic_star_border_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/icons/toggle/svg/production/ic_star_half_24px.svg b/src/material-widgets/icons/toggle/svg/production/ic_star_half_24px.svg
new file mode 100644
index 0000000..a07f7d0
--- /dev/null
+++ b/src/material-widgets/icons/toggle/svg/production/ic_star_half_24px.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/material-widgets/layouts/qtmaterialsnackbarlayout.cpp b/src/material-widgets/layouts/qtmaterialsnackbarlayout.cpp
new file mode 100644
index 0000000..e69de29
diff --git a/src/material-widgets/layouts/qtmaterialsnackbarlayout.h b/src/material-widgets/layouts/qtmaterialsnackbarlayout.h
new file mode 100644
index 0000000..c194fec
--- /dev/null
+++ b/src/material-widgets/layouts/qtmaterialsnackbarlayout.h
@@ -0,0 +1,4 @@
+#ifndef QTMATERIALSNACKBARLAYOUT_H
+#define QTMATERIALSNACKBARLAYOUT_H
+
+#endif // QTMATERIALSNACKBARLAYOUT_H
diff --git a/src/material-widgets/layouts/qtmaterialsnackbarlayout_p.h b/src/material-widgets/layouts/qtmaterialsnackbarlayout_p.h
new file mode 100644
index 0000000..6c2dd5d
--- /dev/null
+++ b/src/material-widgets/layouts/qtmaterialsnackbarlayout_p.h
@@ -0,0 +1,4 @@
+#ifndef QTMATERIALSNACKBARLAYOUT_P_H
+#define QTMATERIALSNACKBARLAYOUT_P_H
+
+#endif // QTMATERIALSNACKBARLAYOUT_P_H
diff --git a/src/material-widgets/lib/qtmaterialcheckable.cpp b/src/material-widgets/lib/qtmaterialcheckable.cpp
new file mode 100644
index 0000000..ee4e0bd
--- /dev/null
+++ b/src/material-widgets/lib/qtmaterialcheckable.cpp
@@ -0,0 +1,419 @@
+#include "lib/qtmaterialcheckable.h"
+#include "lib/qtmaterialcheckable_p.h"
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include "lib/qtmaterialrippleoverlay.h"
+#include "lib/qtmaterialripple.h"
+#include "lib/qtmaterialstyle.h"
+#include "lib/qtmaterialcheckable_internal.h"
+
+/*!
+ * \class QtMaterialCheckablePrivate
+ * \internal
+ */
+
+QtMaterialCheckablePrivate::QtMaterialCheckablePrivate(QtMaterialCheckable *q)
+ : q_ptr(q)
+{
+}
+
+QtMaterialCheckablePrivate::~QtMaterialCheckablePrivate()
+{
+}
+
+void QtMaterialCheckablePrivate::init()
+{
+ Q_Q(QtMaterialCheckable);
+
+ rippleOverlay = new QtMaterialRippleOverlay;
+ checkedIcon = new QtMaterialCheckableIcon(QIcon(":/icons/icons/toggle/svg/production/ic_check_box_24px.svg"), q);
+ uncheckedIcon = new QtMaterialCheckableIcon(QIcon(":/icons/icons/toggle/svg/production/ic_check_box_outline_blank_24px.svg"), q);
+ stateMachine = new QStateMachine(q);
+ uncheckedState = new QState;
+ checkedState = new QState;
+ disabledUncheckedState = new QState;
+ disabledCheckedState = new QState;
+ uncheckedTransition = new QSignalTransition(q, SIGNAL(toggled(bool)));
+ checkedTransition = new QSignalTransition(q, SIGNAL(toggled(bool)));
+ labelPosition = QtMaterialCheckable::LabelPositionRight;
+ useThemeColors = true;
+
+ rippleOverlay->setParent(q->parentWidget());
+ rippleOverlay->installEventFilter(q);
+
+ q->setCheckable(true);
+ q->setStyle(&QtMaterialStyle::instance());
+ q->setFont(QFont("Roboto", 11, QFont::Normal));
+
+ stateMachine->addState(uncheckedState);
+ stateMachine->addState(checkedState);
+ stateMachine->addState(disabledUncheckedState);
+ stateMachine->addState(disabledCheckedState);
+ stateMachine->setInitialState(uncheckedState);
+
+ // Transition to checked
+
+ uncheckedTransition->setTargetState(checkedState);
+ uncheckedState->addTransition(uncheckedTransition);
+
+ // Transition to unchecked
+
+ checkedTransition->setTargetState(uncheckedState);
+ checkedState->addTransition(checkedTransition);
+
+ QAbstractTransition *transition;
+
+ // Transitions enabled <==> disabled
+
+ transition = new QEventTransition(q, QEvent::EnabledChange);
+ transition->setTargetState(disabledUncheckedState);
+ uncheckedState->addTransition(transition);
+
+ transition = new QEventTransition(q, QEvent::EnabledChange);
+ transition->setTargetState(uncheckedState);
+ disabledUncheckedState->addTransition(transition);
+
+ transition = new QEventTransition(q, QEvent::EnabledChange);
+ transition->setTargetState(disabledCheckedState);
+ checkedState->addTransition(transition);
+
+ transition = new QEventTransition(q, QEvent::EnabledChange);
+ transition->setTargetState(checkedState);
+ disabledCheckedState->addTransition(transition);
+
+ transition = new QSignalTransition(q, SIGNAL(toggled(bool)));
+ transition->setTargetState(disabledCheckedState);
+ disabledUncheckedState->addTransition(transition);
+
+ transition = new QSignalTransition(q, SIGNAL(toggled(bool)));
+ transition->setTargetState(disabledUncheckedState);
+ disabledCheckedState->addTransition(transition);
+
+ //
+
+ checkedState->assignProperty(checkedIcon, "opacity", 1);
+ checkedState->assignProperty(uncheckedIcon, "opacity", 0);
+
+ uncheckedState->assignProperty(checkedIcon, "opacity", 0);
+ uncheckedState->assignProperty(uncheckedIcon, "opacity", 1);
+
+ disabledCheckedState->assignProperty(checkedIcon, "opacity", 1);
+ disabledCheckedState->assignProperty(uncheckedIcon, "opacity", 0);
+
+ disabledUncheckedState->assignProperty(checkedIcon, "opacity", 0);
+ disabledUncheckedState->assignProperty(uncheckedIcon, "opacity", 1);
+
+ checkedState->assignProperty(checkedIcon, "color", q->checkedColor());
+ checkedState->assignProperty(uncheckedIcon, "color", q->checkedColor());
+
+ uncheckedState->assignProperty(uncheckedIcon, "color", q->uncheckedColor());
+ uncheckedState->assignProperty(uncheckedIcon, "color", q->uncheckedColor());
+
+ disabledUncheckedState->assignProperty(uncheckedIcon, "color", q->disabledColor());
+ disabledCheckedState->assignProperty(checkedIcon, "color", q->disabledColor());
+
+ stateMachine->start();
+ QCoreApplication::processEvents();
+}
+
+/*!
+ * \class QtMaterialCheckable
+ */
+
+QtMaterialCheckable::QtMaterialCheckable(QWidget *parent)
+ : QAbstractButton(parent),
+ d_ptr(new QtMaterialCheckablePrivate(this))
+{
+ d_func()->init();
+}
+
+QtMaterialCheckable::~QtMaterialCheckable()
+{
+}
+
+void QtMaterialCheckable::setLabelPosition(LabelPosition placement)
+{
+ Q_D(QtMaterialCheckable);
+
+ d->labelPosition = placement;
+ update();
+}
+
+QtMaterialCheckable::LabelPosition QtMaterialCheckable::labelPosition() const
+{
+ Q_D(const QtMaterialCheckable);
+
+ return d->labelPosition;
+}
+
+void QtMaterialCheckable::setUseThemeColors(bool value)
+{
+ Q_D(QtMaterialCheckable);
+
+ if (d->useThemeColors == value) {
+ return;
+ }
+
+ d->useThemeColors = value;
+ setupProperties();
+}
+
+bool QtMaterialCheckable::useThemeColors() const
+{
+ Q_D(const QtMaterialCheckable);
+
+ return d->useThemeColors;
+}
+
+void QtMaterialCheckable::setCheckedColor(const QColor &color)
+{
+ Q_D(QtMaterialCheckable);
+
+ d->checkedColor = color;
+
+ MATERIAL_DISABLE_THEME_COLORS
+ setupProperties();
+}
+
+QColor QtMaterialCheckable::checkedColor() const
+{
+ Q_D(const QtMaterialCheckable);
+
+ if (d->useThemeColors || !d->checkedColor.isValid()) {
+ return QtMaterialStyle::instance().themeColor("primary1");
+ } else {
+ return d->checkedColor;
+ }
+}
+
+void QtMaterialCheckable::setUncheckedColor(const QColor &color)
+{
+ Q_D(QtMaterialCheckable);
+
+ d->uncheckedColor = color;
+
+ MATERIAL_DISABLE_THEME_COLORS
+ setupProperties();
+}
+
+QColor QtMaterialCheckable::uncheckedColor() const
+{
+ Q_D(const QtMaterialCheckable);
+
+ if (d->useThemeColors || !d->uncheckedColor.isValid()) {
+ return QtMaterialStyle::instance().themeColor("text");
+ } else {
+ return d->uncheckedColor;
+ }
+}
+
+void QtMaterialCheckable::setTextColor(const QColor &color)
+{
+ Q_D(QtMaterialCheckable);
+
+ d->textColor = color;
+
+ MATERIAL_DISABLE_THEME_COLORS
+ setupProperties();
+}
+
+QColor QtMaterialCheckable::textColor() const
+{
+ Q_D(const QtMaterialCheckable);
+
+ if (d->useThemeColors || !d->textColor.isValid()) {
+ return QtMaterialStyle::instance().themeColor("text");
+ } else {
+ return d->textColor;
+ }
+}
+
+void QtMaterialCheckable::setDisabledColor(const QColor &color)
+{
+ Q_D(QtMaterialCheckable);
+
+ d->disabledColor = color;
+
+ MATERIAL_DISABLE_THEME_COLORS
+ setupProperties();
+}
+
+QColor QtMaterialCheckable::disabledColor() const
+{
+ Q_D(const QtMaterialCheckable);
+
+ if (d->useThemeColors || !d->disabledColor.isValid()) {
+ return QtMaterialStyle::instance().themeColor("accent3");
+ } else {
+ return d->disabledColor;
+ }
+}
+
+void QtMaterialCheckable::setCheckedIcon(const QIcon &icon)
+{
+ Q_D(QtMaterialCheckable);
+
+ d->checkedIcon->setIcon(icon);
+ update();
+}
+
+QIcon QtMaterialCheckable::checkedIcon() const
+{
+ Q_D(const QtMaterialCheckable);
+
+ return d->checkedIcon->icon();
+}
+
+void QtMaterialCheckable::setUncheckedIcon(const QIcon &icon)
+{
+ Q_D(QtMaterialCheckable);
+
+ d->uncheckedIcon->setIcon(icon);
+ update();
+}
+
+QIcon QtMaterialCheckable::uncheckedIcon() const
+{
+ Q_D(const QtMaterialCheckable);
+
+ return d->uncheckedIcon->icon();
+}
+
+/*!
+ * \reimp
+ */
+QSize QtMaterialCheckable::sizeHint() const
+{
+ if (text().isEmpty()) {
+ return QSize(40, 40);
+ }
+ return QSize(fontMetrics().size(Qt::TextShowMnemonic, text()).width()+52, 40);
+}
+
+QtMaterialCheckable::QtMaterialCheckable(QtMaterialCheckablePrivate &d, QWidget *parent)
+ : QAbstractButton(parent),
+ d_ptr(&d)
+{
+ d_func()->init();
+}
+
+/*!
+ * \reimp
+ */
+bool QtMaterialCheckable::event(QEvent *event)
+{
+ Q_D(QtMaterialCheckable);
+
+ switch (event->type())
+ {
+ case QEvent::Resize:
+ case QEvent::Move:
+ d->checkedIcon->setGeometry(rect());
+ d->uncheckedIcon->setGeometry(rect());
+ d->rippleOverlay->setGeometry(geometry().adjusted(-8, -8, 8, 8));
+ break;
+ case QEvent::ParentChange:
+ QWidget *widget;
+ if ((widget = parentWidget())) {
+ d->rippleOverlay->setParent(widget);
+ }
+ break;
+ default:
+ break;
+ }
+ return QAbstractButton::event(event);
+}
+
+/*!
+ * \reimp
+ */
+bool QtMaterialCheckable::eventFilter(QObject *obj, QEvent *event)
+{
+ if (QEvent::Resize == event->type())
+ {
+ Q_D(QtMaterialCheckable);
+
+ d->rippleOverlay->setGeometry(geometry().adjusted(-8, -8, 8, 8));
+ }
+ return QAbstractButton::eventFilter(obj, event);
+}
+
+/*!
+ * \reimp
+ */
+void QtMaterialCheckable::mousePressEvent(QMouseEvent *event)
+{
+ Q_UNUSED(event)
+
+ Q_D(QtMaterialCheckable);
+
+ if (!isEnabled()) {
+ return;
+ }
+
+ QtMaterialRipple *ripple;
+ if (QtMaterialCheckable::LabelPositionLeft == d->labelPosition) {
+ ripple = new QtMaterialRipple(QPoint(width()-14, 28));
+ } else {
+ ripple = new QtMaterialRipple(QPoint(28, 28));
+ }
+ ripple->setRadiusEndValue(22);
+ ripple->setColor(isChecked() ? checkedColor() : uncheckedColor());
+ if (isChecked()) {
+ ripple->setOpacityStartValue(1);
+ }
+ d->rippleOverlay->addRipple(ripple);
+
+ setChecked(!isChecked());
+}
+
+/*!
+ * \reimp
+ */
+void QtMaterialCheckable::paintEvent(QPaintEvent *event)
+{
+ Q_UNUSED(event)
+
+ Q_D(QtMaterialCheckable);
+
+ QPainter painter(this);
+
+ QPen pen;
+ pen.setColor(isEnabled() ? textColor() : disabledColor());
+ painter.setPen(pen);
+
+ if (QtMaterialCheckable::LabelPositionLeft == d->labelPosition) {
+ painter.drawText(4, 25, text());
+ } else {
+ painter.drawText(48, 25, text());
+ }
+}
+
+void QtMaterialCheckable::setupProperties()
+{
+ Q_D(QtMaterialCheckable);
+
+ d->checkedState->assignProperty(d->checkedIcon, "color", checkedColor());
+ d->checkedState->assignProperty(d->uncheckedIcon, "color", checkedColor());
+ d->uncheckedState->assignProperty(d->uncheckedIcon, "color", uncheckedColor());
+ d->disabledUncheckedState->assignProperty(d->uncheckedIcon, "color", disabledColor());
+ d->disabledCheckedState->assignProperty(d->checkedIcon, "color", disabledColor());
+
+ if (isEnabled()) {
+ if (isChecked()) {
+ d->checkedIcon->setColor(checkedColor());
+ } else {
+ d->uncheckedIcon->setColor(uncheckedColor());
+ }
+ } else {
+ d->checkedIcon->setColor(disabledColor());
+ d->uncheckedIcon->setColor(disabledColor());
+ }
+
+ update();
+}
diff --git a/src/material-widgets/lib/qtmaterialcheckable.h b/src/material-widgets/lib/qtmaterialcheckable.h
new file mode 100644
index 0000000..c4cc574
--- /dev/null
+++ b/src/material-widgets/lib/qtmaterialcheckable.h
@@ -0,0 +1,64 @@
+#ifndef QTMATERIALCHECKABLE_H
+#define QTMATERIALCHECKABLE_H
+
+#include
+
+class QtMaterialCheckablePrivate;
+
+class QtMaterialCheckable : public QAbstractButton
+{
+ Q_OBJECT
+
+public:
+ enum LabelPosition {
+ LabelPositionLeft,
+ LabelPositionRight,
+ };
+
+ explicit QtMaterialCheckable(QWidget *parent = 0);
+ ~QtMaterialCheckable();
+
+ void setLabelPosition(LabelPosition placement);
+ LabelPosition labelPosition() const;
+
+ void setUseThemeColors(bool value);
+ bool useThemeColors() const;
+
+ void setCheckedColor(const QColor &color);
+ QColor checkedColor() const;
+
+ void setUncheckedColor(const QColor &color);
+ QColor uncheckedColor() const;
+
+ void setTextColor(const QColor &color);
+ QColor textColor() const;
+
+ void setDisabledColor(const QColor &color);
+ QColor disabledColor() const;
+
+ void setCheckedIcon(const QIcon &icon);
+ QIcon checkedIcon() const;
+
+ void setUncheckedIcon(const QIcon &icon);
+ QIcon uncheckedIcon() const;
+
+ QSize sizeHint() const Q_DECL_OVERRIDE;
+
+protected:
+ QtMaterialCheckable(QtMaterialCheckablePrivate &d, QWidget *parent = 0);
+
+ bool event(QEvent *event) Q_DECL_OVERRIDE;
+ bool eventFilter(QObject *obj, QEvent *event) Q_DECL_OVERRIDE;
+ void mousePressEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
+ void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE;
+
+ virtual void setupProperties();
+
+ const QScopedPointer d_ptr;
+
+private:
+ Q_DISABLE_COPY(QtMaterialCheckable)
+ Q_DECLARE_PRIVATE(QtMaterialCheckable)
+};
+
+#endif // QTMATERIALCHECKABLE_H
diff --git a/src/material-widgets/lib/qtmaterialcheckable_internal.cpp b/src/material-widgets/lib/qtmaterialcheckable_internal.cpp
new file mode 100644
index 0000000..4a7eb9a
--- /dev/null
+++ b/src/material-widgets/lib/qtmaterialcheckable_internal.cpp
@@ -0,0 +1,63 @@
+#include "lib/qtmaterialcheckable_internal.h"
+#include
+#include
+#include
+#include "lib/qtmaterialcheckable.h"
+
+/*!
+ * \class QtMaterialCheckableIcon
+ * \internal
+ */
+
+QtMaterialCheckableIcon::QtMaterialCheckableIcon(const QIcon &icon, QtMaterialCheckable *parent)
+ : QWidget(parent),
+ m_checkable(parent),
+ m_color(Qt::black),
+ m_icon(icon),
+ m_iconSize(24),
+ m_opacity(1.0)
+{
+ Q_ASSERT(parent);
+
+ setAttribute(Qt::WA_TransparentForMouseEvents);
+}
+
+QtMaterialCheckableIcon::~QtMaterialCheckableIcon()
+{
+}
+
+QSize QtMaterialCheckableIcon::sizeHint() const
+{
+ return QSize(m_iconSize, m_iconSize);
+}
+
+void QtMaterialCheckableIcon::paintEvent(QPaintEvent *event)
+{
+ Q_UNUSED(event)
+
+ QPainter painter(this);
+ painter.setRenderHint(QPainter::Antialiasing);
+ painter.setOpacity(m_opacity);
+
+ QPixmap pixmap = icon().pixmap(24, 24);
+
+ if (!pixmap.isNull())
+ {
+ const qreal p = static_cast((height())-m_iconSize)/2;
+ const qreal z = m_iconSize/24;
+
+ QTransform t;
+ if (QtMaterialCheckable::LabelPositionLeft == m_checkable->labelPosition()) {
+ t.translate(p+width()-42, p);
+ } else {
+ t.translate(p, p);
+ }
+ t.scale(z, z);
+ painter.setTransform(t);
+
+ QPainter icon(&pixmap);
+ icon.setCompositionMode(QPainter::CompositionMode_SourceIn);
+ icon.fillRect(pixmap.rect(), color());
+ painter.drawPixmap(0, 0, pixmap);
+ }
+}
diff --git a/src/material-widgets/lib/qtmaterialcheckable_internal.h b/src/material-widgets/lib/qtmaterialcheckable_internal.h
new file mode 100644
index 0000000..3fb3d94
--- /dev/null
+++ b/src/material-widgets/lib/qtmaterialcheckable_internal.h
@@ -0,0 +1,93 @@
+#ifndef QTMATERIALCHECKABLE_INTERNAL_H
+#define QTMATERIALCHECKABLE_INTERNAL_H
+
+#include
+#include
+#include
+
+class QtMaterialCheckable;
+
+class QtMaterialCheckableIcon : public QWidget
+{
+ Q_OBJECT
+
+ Q_PROPERTY(QColor color READ color WRITE setColor)
+ Q_PROPERTY(qreal iconSize READ iconSize WRITE setIconSize)
+ Q_PROPERTY(qreal opacity READ opacity WRITE setOpacity)
+
+public:
+ QtMaterialCheckableIcon(const QIcon &icon, QtMaterialCheckable *parent);
+ ~QtMaterialCheckableIcon();
+
+ QSize sizeHint() const Q_DECL_OVERRIDE;
+
+ inline void setIcon(const QIcon &icon);
+ inline QIcon icon() const;
+
+ inline void setColor(const QColor &color);
+ inline QColor color() const;
+
+ inline void setIconSize(qreal size);
+ inline qreal iconSize() const;
+
+ inline void setOpacity(qreal opacity);
+ inline qreal opacity() const;
+
+protected:
+ void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE;
+
+private:
+ Q_DISABLE_COPY(QtMaterialCheckableIcon)
+
+ QtMaterialCheckable *const m_checkable;
+ QColor m_color;
+ QIcon m_icon;
+ qreal m_iconSize;
+ qreal m_opacity;
+};
+
+inline void QtMaterialCheckableIcon::setIcon(const QIcon &icon)
+{
+ m_icon = icon;
+ update();
+}
+
+inline QIcon QtMaterialCheckableIcon::icon() const
+{
+ return m_icon;
+}
+
+inline void QtMaterialCheckableIcon::setColor(const QColor &color)
+{
+ m_color = color;
+ update();
+}
+
+inline QColor QtMaterialCheckableIcon::color() const
+{
+ return m_color;
+}
+
+inline void QtMaterialCheckableIcon::setIconSize(qreal size)
+{
+ m_iconSize = size;
+ update();
+}
+
+inline qreal QtMaterialCheckableIcon::iconSize() const
+{
+ return m_iconSize;
+}
+
+inline void QtMaterialCheckableIcon::setOpacity(qreal opacity)
+{
+ m_opacity = opacity;
+ update();
+}
+
+inline qreal QtMaterialCheckableIcon::opacity() const
+{
+ return m_opacity;
+}
+
+#endif // QTMATERIALCHECKABLE_INTERNAL_H
diff --git a/src/material-widgets/lib/qtmaterialcheckable_p.h b/src/material-widgets/lib/qtmaterialcheckable_p.h
new file mode 100644
index 0000000..e678df7
--- /dev/null
+++ b/src/material-widgets/lib/qtmaterialcheckable_p.h
@@ -0,0 +1,43 @@
+#ifndef QTMATERIALCHECKABLE_P_H
+#define QTMATERIALCHECKABLE_P_H
+
+#include
+#include "lib/qtmaterialcheckable.h"
+
+class QStateMachine;
+class QState;
+class QSignalTransition;
+class QtMaterialRippleOverlay;
+class QtMaterialCheckableIcon;
+
+class QtMaterialCheckablePrivate
+{
+ Q_DISABLE_COPY(QtMaterialCheckablePrivate)
+ Q_DECLARE_PUBLIC(QtMaterialCheckable)
+
+public:
+ QtMaterialCheckablePrivate(QtMaterialCheckable *q);
+ virtual ~QtMaterialCheckablePrivate();
+
+ void init();
+
+ QtMaterialCheckable *const q_ptr;
+ QtMaterialRippleOverlay *rippleOverlay;
+ QtMaterialCheckableIcon *checkedIcon;
+ QtMaterialCheckableIcon *uncheckedIcon;
+ QStateMachine *stateMachine;
+ QState *uncheckedState;
+ QState *checkedState;
+ QState *disabledUncheckedState;
+ QState *disabledCheckedState;
+ QSignalTransition *uncheckedTransition;
+ QSignalTransition *checkedTransition;
+ QtMaterialCheckable::LabelPosition labelPosition;
+ QColor checkedColor;
+ QColor uncheckedColor;
+ QColor textColor;
+ QColor disabledColor;
+ bool useThemeColors;
+};
+
+#endif // QTMATERIALCHECKABLE_P_H
diff --git a/src/material-widgets/lib/qtmaterialoverlaywidget.cpp b/src/material-widgets/lib/qtmaterialoverlaywidget.cpp
new file mode 100644
index 0000000..ec0e7fe
--- /dev/null
+++ b/src/material-widgets/lib/qtmaterialoverlaywidget.cpp
@@ -0,0 +1,72 @@
+#include "lib/qtmaterialoverlaywidget.h"
+#include
+
+/*!
+ * \class QtMaterialOverlayWidget
+ * \internal
+ */
+
+QtMaterialOverlayWidget::QtMaterialOverlayWidget(QWidget *parent)
+ : QWidget(parent)
+{
+ if (parent) {
+ parent->installEventFilter(this);
+ }
+}
+
+QtMaterialOverlayWidget::~QtMaterialOverlayWidget()
+{
+}
+
+/*!
+ * \reimp
+ */
+bool QtMaterialOverlayWidget::event(QEvent *event)
+{
+ if (!parent()) {
+ return QWidget::event(event);
+ }
+ switch (event->type())
+ {
+ case QEvent::ParentChange:
+ {
+ parent()->installEventFilter(this);
+ setGeometry(overlayGeometry());
+ break;
+ }
+ case QEvent::ParentAboutToChange:
+ {
+ parent()->removeEventFilter(this);
+ break;
+ }
+ default:
+ break;
+ }
+ return QWidget::event(event);
+}
+
+/*!
+ * \reimp
+ */
+bool QtMaterialOverlayWidget::eventFilter(QObject *obj, QEvent *event)
+{
+ switch (event->type())
+ {
+ case QEvent::Move:
+ case QEvent::Resize:
+ setGeometry(overlayGeometry());
+ break;
+ default:
+ break;
+ }
+ return QWidget::eventFilter(obj, event);
+}
+
+QRect QtMaterialOverlayWidget::overlayGeometry() const
+{
+ QWidget *widget = parentWidget();
+ if (!widget) {
+ return QRect();
+ }
+ return widget->rect();
+}
diff --git a/src/material-widgets/lib/qtmaterialoverlaywidget.h b/src/material-widgets/lib/qtmaterialoverlaywidget.h
new file mode 100644
index 0000000..11acba0
--- /dev/null
+++ b/src/material-widgets/lib/qtmaterialoverlaywidget.h
@@ -0,0 +1,24 @@
+#ifndef QTMATERIALOVERLAYWIDGET_H
+#define QTMATERIALOVERLAYWIDGET_H
+
+#include
+
+class QtMaterialOverlayWidget : public QWidget
+{
+ Q_OBJECT
+
+public:
+ explicit QtMaterialOverlayWidget(QWidget *parent = 0);
+ ~QtMaterialOverlayWidget();
+
+protected:
+ bool event(QEvent *event) Q_DECL_OVERRIDE;
+ bool eventFilter(QObject *obj, QEvent *event) Q_DECL_OVERRIDE;
+
+ virtual QRect overlayGeometry() const;
+
+private:
+ Q_DISABLE_COPY(QtMaterialOverlayWidget)
+};
+
+#endif // QTMATERIALOVERLAYWIDGET_H
diff --git a/src/material-widgets/lib/qtmaterialripple.cpp b/src/material-widgets/lib/qtmaterialripple.cpp
new file mode 100644
index 0000000..82125cb
--- /dev/null
+++ b/src/material-widgets/lib/qtmaterialripple.cpp
@@ -0,0 +1,119 @@
+#include "qtmaterialripple.h"
+#include "lib/qtmaterialrippleoverlay.h"
+
+/*!
+ * \class QtMaterialRipple
+ * \internal
+ */
+
+QtMaterialRipple::QtMaterialRipple(const QPoint ¢er, QObject *parent)
+ : QParallelAnimationGroup(parent),
+ m_overlay(0),
+ m_radiusAnimation(animate("radius")),
+ m_opacityAnimation(animate("opacity")),
+ m_radius(0),
+ m_opacity(0),
+ m_center(center)
+{
+ init();
+}
+
+QtMaterialRipple::QtMaterialRipple(const QPoint ¢er,
+ QtMaterialRippleOverlay *overlay,
+ QObject *parent)
+ : QParallelAnimationGroup(parent),
+ m_overlay(overlay),
+ m_radiusAnimation(animate("radius")),
+ m_opacityAnimation(animate("opacity")),
+ m_radius(0),
+ m_opacity(0),
+ m_center(center)
+{
+ init();
+}
+
+QtMaterialRipple::~QtMaterialRipple()
+{
+}
+
+void QtMaterialRipple::setRadius(qreal radius)
+{
+ Q_ASSERT(m_overlay);
+
+ if (m_radius == radius) {
+ return;
+ }
+ m_radius = radius;
+ m_overlay->update();
+}
+
+void QtMaterialRipple::setOpacity(qreal opacity)
+{
+ Q_ASSERT(m_overlay);
+
+ if (m_opacity == opacity) {
+ return;
+ }
+ m_opacity = opacity;
+ m_overlay->update();
+}
+
+void QtMaterialRipple::setColor(const QColor &color)
+{
+ if (m_brush.color() == color) {
+ return;
+ }
+ m_brush.setColor(color);
+
+ if (m_overlay) {
+ m_overlay->update();
+ }
+}
+
+void QtMaterialRipple::setBrush(const QBrush &brush)
+{
+ m_brush = brush;
+
+ if (m_overlay) {
+ m_overlay->update();
+ }
+}
+
+void QtMaterialRipple::destroy()
+{
+ Q_ASSERT(m_overlay);
+
+ m_overlay->removeRipple(this);
+}
+
+/*!
+ * \internal
+ */
+QPropertyAnimation *QtMaterialRipple::animate(const QByteArray &property,
+ const QEasingCurve &easing,
+ int duration)
+{
+ QPropertyAnimation *animation = new QPropertyAnimation;
+ animation->setTargetObject(this);
+ animation->setPropertyName(property);
+ animation->setEasingCurve(easing);
+ animation->setDuration(duration);
+ addAnimation(animation);
+ return animation;
+}
+
+/*!
+ * \internal
+ */
+void QtMaterialRipple::init()
+{
+ setOpacityStartValue(0.5);
+ setOpacityEndValue(0);
+ setRadiusStartValue(0);
+ setRadiusEndValue(300);
+
+ m_brush.setColor(Qt::black);
+ m_brush.setStyle(Qt::SolidPattern);
+
+ connect(this, SIGNAL(finished()), this, SLOT(destroy()));
+}
diff --git a/src/material-widgets/lib/qtmaterialripple.h b/src/material-widgets/lib/qtmaterialripple.h
new file mode 100644
index 0000000..d263c76
--- /dev/null
+++ b/src/material-widgets/lib/qtmaterialripple.h
@@ -0,0 +1,136 @@
+#ifndef QTMATERIALRIPPLE_H
+#define QTMATERIALRIPPLE_H
+
+#include
+#include
+#include
+#include
+#include
+
+class QtMaterialRippleOverlay;
+
+class QtMaterialRipple : public QParallelAnimationGroup
+{
+ Q_OBJECT
+
+ Q_PROPERTY(qreal radius WRITE setRadius READ radius)
+ Q_PROPERTY(qreal opacity WRITE setOpacity READ opacity)
+
+public:
+ explicit QtMaterialRipple(const QPoint ¢er, QObject *parent = 0);
+ QtMaterialRipple(const QPoint ¢er, QtMaterialRippleOverlay *overlay, QObject *parent = 0);
+ ~QtMaterialRipple();
+
+ inline void setOverlay(QtMaterialRippleOverlay *overlay);
+
+ void setRadius(qreal radius);
+ inline qreal radius() const;
+
+ void setOpacity(qreal opacity);
+ inline qreal opacity() const;
+
+ void setColor(const QColor &color);
+ inline QColor color() const;
+
+ void setBrush(const QBrush &brush);
+ inline QBrush brush() const;
+
+ inline QPoint center() const;
+
+ inline QPropertyAnimation *radiusAnimation() const;
+ inline QPropertyAnimation *opacityAnimation() const;
+
+ inline void setOpacityStartValue(qreal value);
+ inline void setOpacityEndValue(qreal value);
+ inline void setRadiusStartValue(qreal value);
+ inline void setRadiusEndValue(qreal value);
+ inline void setDuration(int msecs);
+
+protected slots:
+ void destroy();
+
+private:
+ Q_DISABLE_COPY(QtMaterialRipple)
+
+ QPropertyAnimation *animate(const QByteArray &property,
+ const QEasingCurve &easing = QEasingCurve::OutQuad,
+ int duration = 800);
+
+ void init();
+
+ QtMaterialRippleOverlay *m_overlay;
+ QPropertyAnimation *const m_radiusAnimation;
+ QPropertyAnimation *const m_opacityAnimation;
+ qreal m_radius;
+ qreal m_opacity;
+ QPoint m_center;
+ QBrush m_brush;
+};
+
+inline void QtMaterialRipple::setOverlay(QtMaterialRippleOverlay *overlay)
+{
+ m_overlay = overlay;
+}
+
+inline qreal QtMaterialRipple::radius() const
+{
+ return m_radius;
+}
+
+inline qreal QtMaterialRipple::opacity() const
+{
+ return m_opacity;
+}
+
+inline QColor QtMaterialRipple::color() const
+{
+ return m_brush.color();
+}
+
+inline QBrush QtMaterialRipple::brush() const
+{
+ return m_brush;
+}
+
+inline QPoint QtMaterialRipple::center() const
+{
+ return m_center;
+}
+
+inline QPropertyAnimation *QtMaterialRipple::radiusAnimation() const
+{
+ return m_radiusAnimation;
+}
+
+inline QPropertyAnimation *QtMaterialRipple::opacityAnimation() const
+{
+ return m_opacityAnimation;
+}
+
+inline void QtMaterialRipple::setOpacityStartValue(qreal value)
+{
+ m_opacityAnimation->setStartValue(value);
+}
+
+inline void QtMaterialRipple::setOpacityEndValue(qreal value)
+{
+ m_opacityAnimation->setEndValue(value);
+}
+
+inline void QtMaterialRipple::setRadiusStartValue(qreal value)
+{
+ m_radiusAnimation->setStartValue(value);
+}
+
+inline void QtMaterialRipple::setRadiusEndValue(qreal value)
+{
+ m_radiusAnimation->setEndValue(value);
+}
+
+inline void QtMaterialRipple::setDuration(int msecs)
+{
+ m_radiusAnimation->setDuration(msecs);
+ m_opacityAnimation->setDuration(msecs);
+}
+
+#endif // QTMATERIALRIPPLE_H
diff --git a/src/material-widgets/lib/qtmaterialrippleoverlay.cpp b/src/material-widgets/lib/qtmaterialrippleoverlay.cpp
new file mode 100644
index 0000000..062d215
--- /dev/null
+++ b/src/material-widgets/lib/qtmaterialrippleoverlay.cpp
@@ -0,0 +1,75 @@
+#include "lib/qtmaterialrippleoverlay.h"
+#include
+#include "lib/qtmaterialripple.h"
+
+/*!
+ * \class QtMaterialRippleOverlay
+ * \internal
+ */
+
+QtMaterialRippleOverlay::QtMaterialRippleOverlay(QWidget *parent)
+ : QtMaterialOverlayWidget(parent),
+ m_useClip(false)
+{
+ setAttribute(Qt::WA_TransparentForMouseEvents);
+ setAttribute(Qt::WA_NoSystemBackground);
+}
+
+QtMaterialRippleOverlay::~QtMaterialRippleOverlay()
+{
+}
+
+void QtMaterialRippleOverlay::addRipple(QtMaterialRipple *ripple)
+{
+ ripple->setOverlay(this);
+ m_ripples.push_back(ripple);
+ ripple->start();
+
+ connect(this, SIGNAL(destroyed(QObject*)), ripple, SLOT(stop()));
+ connect(this, SIGNAL(destroyed(QObject*)), ripple, SLOT(deleteLater()));
+}
+
+void QtMaterialRippleOverlay::addRipple(const QPoint &position, qreal radius)
+{
+ QtMaterialRipple *ripple = new QtMaterialRipple(position);
+ ripple->setRadiusEndValue(radius);
+ addRipple(ripple);
+}
+
+void QtMaterialRippleOverlay::removeRipple(QtMaterialRipple *ripple)
+{
+ if (m_ripples.removeOne(ripple)) {
+ delete ripple;
+ update();
+ }
+}
+
+/*!
+ * \reimp
+ */
+void QtMaterialRippleOverlay::paintEvent(QPaintEvent *event)
+{
+ Q_UNUSED(event)
+
+ QPainter painter(this);
+ painter.setRenderHint(QPainter::Antialiasing);
+ painter.setPen(Qt::NoPen);
+
+ if (m_useClip) {
+ painter.setClipPath(m_clipPath);
+ }
+
+ QList::const_iterator i;
+ for (i = m_ripples.begin(); i != m_ripples.end(); ++i) {
+ paintRipple(&painter, *i);
+ }
+}
+
+void QtMaterialRippleOverlay::paintRipple(QPainter *painter, QtMaterialRipple *ripple)
+{
+ const qreal radius = ripple->radius();
+ const QPointF center = ripple->center();
+ painter->setOpacity(ripple->opacity());
+ painter->setBrush(ripple->brush());
+ painter->drawEllipse(center, radius, radius);
+}
diff --git a/src/material-widgets/lib/qtmaterialrippleoverlay.h b/src/material-widgets/lib/qtmaterialrippleoverlay.h
new file mode 100644
index 0000000..436c2b9
--- /dev/null
+++ b/src/material-widgets/lib/qtmaterialrippleoverlay.h
@@ -0,0 +1,64 @@
+#ifndef QTMATERIALRIPPLEOVERLAY_H
+#define QTMATERIALRIPPLEOVERLAY_H
+
+#include
+#include "lib/qtmaterialoverlaywidget.h"
+
+class QtMaterialRipple;
+
+class QtMaterialRippleOverlay : public QtMaterialOverlayWidget
+{
+ Q_OBJECT
+
+public:
+ explicit QtMaterialRippleOverlay(QWidget *parent = 0);
+ ~QtMaterialRippleOverlay();
+
+ void addRipple(QtMaterialRipple *ripple);
+ void addRipple(const QPoint &position, qreal radius = 300);
+
+ void removeRipple(QtMaterialRipple *ripple);
+
+ inline void setClipping(bool enable);
+ inline bool hasClipping() const;
+
+ inline void setClipPath(const QPainterPath &path);
+
+protected:
+ void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE;
+
+ inline QList ripples() const;
+
+private:
+ Q_DISABLE_COPY(QtMaterialRippleOverlay)
+
+ void paintRipple(QPainter *painter, QtMaterialRipple *ripple);
+
+ QList m_ripples;
+ QPainterPath m_clipPath;
+ bool m_useClip;
+};
+
+inline void QtMaterialRippleOverlay::setClipping(bool enable)
+{
+ m_useClip = enable;
+ update();
+}
+
+inline bool QtMaterialRippleOverlay::hasClipping() const
+{
+ return m_useClip;
+}
+
+inline void QtMaterialRippleOverlay::setClipPath(const QPainterPath &path)
+{
+ m_clipPath = path;
+ update();
+}
+
+inline QList QtMaterialRippleOverlay::ripples() const
+{
+ return m_ripples;
+}
+
+#endif // QTMATERIALRIPPLEOVERLAY_H
diff --git a/src/material-widgets/lib/qtmaterialstatetransition.cpp b/src/material-widgets/lib/qtmaterialstatetransition.cpp
new file mode 100644
index 0000000..75f1faf
--- /dev/null
+++ b/src/material-widgets/lib/qtmaterialstatetransition.cpp
@@ -0,0 +1,19 @@
+#include "lib/qtmaterialstatetransition.h"
+
+QtMaterialStateTransition::QtMaterialStateTransition(QtMaterialStateTransitionType type)
+ : m_type(type)
+{
+}
+
+bool QtMaterialStateTransition::eventTest(QEvent *event)
+{
+ if (event->type() != QEvent::Type(QEvent::User + 1)) {
+ return false;
+ }
+ QtMaterialStateTransitionEvent *transition = static_cast(event);
+ return (m_type == transition->type);
+}
+
+void QtMaterialStateTransition::onTransition(QEvent *)
+{
+}
diff --git a/src/material-widgets/lib/qtmaterialstatetransition.h b/src/material-widgets/lib/qtmaterialstatetransition.h
new file mode 100644
index 0000000..d501302
--- /dev/null
+++ b/src/material-widgets/lib/qtmaterialstatetransition.h
@@ -0,0 +1,22 @@
+#ifndef QTMATERIALSTATETRANSITION_H
+#define QTMATERIALSTATETRANSITION_H
+
+#include
+#include "lib/qtmaterialstatetransitionevent.h"
+
+class QtMaterialStateTransition : public QAbstractTransition
+{
+ Q_OBJECT
+
+public:
+ QtMaterialStateTransition(QtMaterialStateTransitionType type);
+
+protected:
+ virtual bool eventTest(QEvent *event);
+ virtual void onTransition(QEvent *);
+
+private:
+ QtMaterialStateTransitionType m_type;
+};
+
+#endif // QTMATERIALSTATETRANSITION_H
diff --git a/src/material-widgets/lib/qtmaterialstatetransitionevent.h b/src/material-widgets/lib/qtmaterialstatetransitionevent.h
new file mode 100644
index 0000000..1c64ec6
--- /dev/null
+++ b/src/material-widgets/lib/qtmaterialstatetransitionevent.h
@@ -0,0 +1,42 @@
+#ifndef QTMATERIALSTATETRANSITIONEVENT_H
+#define QTMATERIALSTATETRANSITIONEVENT_H
+
+#include
+
+enum QtMaterialStateTransitionType {
+ // Snackbar
+ SnackbarShowTransition = 1,
+ SnackbarHideTransition,
+ SnackbarWaitTransition,
+ SnackbarNextTransition,
+ // FlatButton
+ FlatButtonPressedTransition,
+ FlatButtonCheckedTransition,
+ FlatButtonUncheckedTransition,
+ // CollapsibleMenu
+ CollapsibleMenuExpand,
+ CollapsibleMenuCollapse,
+ // Slider
+ SliderChangedToMinimum,
+ SliderChangedFromMinimum,
+ SliderNoFocusMouseEnter,
+ SliderNoFocusMouseLeave,
+ // Dialog
+ DialogShowTransition,
+ DialogHideTransition,
+ //
+ MaxTransitionType = 65535
+};
+
+struct QtMaterialStateTransitionEvent : public QEvent
+{
+ QtMaterialStateTransitionEvent(QtMaterialStateTransitionType type)
+ : QEvent(QEvent::Type(QEvent::User + 1)),
+ type(type)
+ {
+ }
+
+ QtMaterialStateTransitionType type;
+};
+
+#endif // QTMATERIALSTATETRANSITIONEVENT_H
diff --git a/src/material-widgets/lib/qtmaterialstyle.cpp b/src/material-widgets/lib/qtmaterialstyle.cpp
new file mode 100644
index 0000000..83bbab8
--- /dev/null
+++ b/src/material-widgets/lib/qtmaterialstyle.cpp
@@ -0,0 +1,57 @@
+#include "lib/qtmaterialstyle.h"
+#include
+#include "lib/qtmaterialtheme.h"
+
+/*!
+ * \class QtMaterialStylePrivate
+ * \internal
+ */
+
+QtMaterialStylePrivate::QtMaterialStylePrivate(QtMaterialStyle *q)
+ : q_ptr(q)
+{
+}
+
+QtMaterialStylePrivate::~QtMaterialStylePrivate()
+{
+}
+
+void QtMaterialStylePrivate::init()
+{
+ Q_Q(QtMaterialStyle);
+
+ QFontDatabase::addApplicationFont(":/fonts/roboto_regular");
+ QFontDatabase::addApplicationFont(":/fonts/roboto_medium");
+ QFontDatabase::addApplicationFont(":/fonts/roboto_bold");
+
+ q->setTheme(new QtMaterialTheme);
+}
+
+/*!
+ * \class QtMaterialStyle
+ * \internal
+ */
+
+void QtMaterialStyle::setTheme(QtMaterialTheme *theme)
+{
+ Q_D(QtMaterialStyle);
+
+ d->theme = theme;
+ theme->setParent(this);
+}
+
+QColor QtMaterialStyle::themeColor(const QString &key) const
+{
+ Q_D(const QtMaterialStyle);
+
+ Q_ASSERT(d->theme);
+
+ return d->theme->getColor(key);
+}
+
+QtMaterialStyle::QtMaterialStyle()
+ : QCommonStyle(),
+ d_ptr(new QtMaterialStylePrivate(this))
+{
+ d_func()->init();
+}
diff --git a/src/material-widgets/lib/qtmaterialstyle.h b/src/material-widgets/lib/qtmaterialstyle.h
new file mode 100644
index 0000000..e16289b
--- /dev/null
+++ b/src/material-widgets/lib/qtmaterialstyle.h
@@ -0,0 +1,40 @@
+#ifndef QTMATERIALSTYLE_H
+#define QTMATERIALSTYLE_H
+
+#include
+#include "lib/qtmaterialstyle_p.h"
+
+#define MATERIAL_DISABLE_THEME_COLORS \
+ if (d->useThemeColors == true) { d->useThemeColors = false; }
+
+class QtMaterialTheme;
+
+class QtMaterialStyle : public QCommonStyle
+{
+ Q_OBJECT
+
+public:
+ inline static QtMaterialStyle &instance();
+
+ void setTheme(QtMaterialTheme *theme);
+ QColor themeColor(const QString &key) const;
+
+protected:
+ const QScopedPointer d_ptr;
+
+private:
+ Q_DECLARE_PRIVATE(QtMaterialStyle)
+
+ QtMaterialStyle();
+
+ QtMaterialStyle(QtMaterialStyle const &);
+ void operator=(QtMaterialStyle const &);
+};
+
+inline QtMaterialStyle &QtMaterialStyle::instance()
+{
+ static QtMaterialStyle instance;
+ return instance;
+}
+
+#endif // QTMATERIALSTYLE_H
diff --git a/src/material-widgets/lib/qtmaterialstyle_p.h b/src/material-widgets/lib/qtmaterialstyle_p.h
new file mode 100644
index 0000000..d59ca41
--- /dev/null
+++ b/src/material-widgets/lib/qtmaterialstyle_p.h
@@ -0,0 +1,24 @@
+#ifndef QTMATERIALSTYLE_P_H
+#define QTMATERIALSTYLE_P_H
+
+#include
+
+class QtMaterialStyle;
+class QtMaterialTheme;
+
+class QtMaterialStylePrivate
+{
+ Q_DISABLE_COPY(QtMaterialStylePrivate)
+ Q_DECLARE_PUBLIC(QtMaterialStyle)
+
+public:
+ QtMaterialStylePrivate(QtMaterialStyle *q);
+ ~QtMaterialStylePrivate();
+
+ void init();
+
+ QtMaterialStyle *const q_ptr;
+ QtMaterialTheme *theme;
+};
+
+#endif // QTMATERIALSTYLE_P_H
diff --git a/src/material-widgets/lib/qtmaterialtheme.cpp b/src/material-widgets/lib/qtmaterialtheme.cpp
new file mode 100644
index 0000000..725c954
--- /dev/null
+++ b/src/material-widgets/lib/qtmaterialtheme.cpp
@@ -0,0 +1,159 @@
+#include "lib/qtmaterialtheme.h"
+#include "lib/qtmaterialtheme_p.h"
+#include
+#include
+#include
+
+/*!material
+ * \class QtMaterialThemePrivate
+ * \internal
+ */
+
+QtMaterialThemePrivate::QtMaterialThemePrivate(QtMaterialTheme *q)
+ : q_ptr(q)
+{
+}
+
+QtMaterialThemePrivate::~QtMaterialThemePrivate()
+{
+}
+
+QColor QtMaterialThemePrivate::rgba(int r, int g, int b, qreal a) const
+{
+ QColor color(r, g, b);
+ color.setAlphaF(a);
+ return color;
+}
+
+/*!
+ * \class QtMaterialTheme
+ */
+
+QtMaterialTheme::QtMaterialTheme(QObject *parent)
+ : QObject(parent),
+ d_ptr(new QtMaterialThemePrivate(this))
+{
+ setColor("primary1", Material::cyan500);
+ setColor("primary2", Material::cyan700);
+ setColor("primary3", Material::lightBlack);
+ setColor("accent1", Material::pinkA200);
+ setColor("accent2", Material::grey100);
+ setColor("accent3", Material::grey500);
+ setColor("text", Material::darkBlack);
+ setColor("alternateText", Material::white);
+ setColor("canvas", Material::white);
+ setColor("border", Material::grey300);
+ setColor("disabled", Material::minBlack);
+ setColor("disabled2", Material::faintBlack);
+ setColor("disabled3", Material::grey300);
+}
+
+QtMaterialTheme::~QtMaterialTheme()
+{
+}
+
+QColor QtMaterialTheme::getColor(const QString &key) const
+{
+ Q_D(const QtMaterialTheme);
+
+ if (!d->colors.contains(key)) {
+ qWarning() << "A theme color matching the key '" << key << "' could not be found.";
+ return QColor();
+ }
+ return d->colors.value(key);
+}
+
+void QtMaterialTheme::setColor(const QString &key, const QColor &color)
+{
+ Q_D(QtMaterialTheme);
+
+ d->colors.insert(key, color);
+}
+
+void QtMaterialTheme::setColor(const QString &key, Material::Color color)
+{
+ Q_D(QtMaterialTheme);
+
+ static const QColor palette[] = {
+ QColor("#ffebee"), QColor("#ffcdd2"), QColor("#ef9a9a"), QColor("#e57373"),
+ QColor("#ef5350"), QColor("#f44336"), QColor("#e53935"), QColor("#d32f2f"),
+ QColor("#c62828"), QColor("#b71c1c"), QColor("#ff8a80"), QColor("#ff5252"),
+ QColor("#ff1744"), QColor("#d50000"), QColor("#fce4ec"), QColor("#f8bbd0"),
+ QColor("#f48fb1"), QColor("#f06292"), QColor("#ec407a"), QColor("#e91e63"),
+ QColor("#d81b60"), QColor("#c2185b"), QColor("#ad1457"), QColor("#880e4f"),
+ QColor("#ff80ab"), QColor("#ff4081"), QColor("#f50057"), QColor("#c51162"),
+ QColor("#f3e5f5"), QColor("#e1bee7"), QColor("#ce93d8"), QColor("#ba68c8"),
+ QColor("#ab47bc"), QColor("#9c27b0"), QColor("#8e24aa"), QColor("#7b1fa2"),
+ QColor("#6a1b9a"), QColor("#4a148c"), QColor("#ea80fc"), QColor("#e040fb"),
+ QColor("#d500f9"), QColor("#aa00ff"), QColor("#ede7f6"), QColor("#d1c4e9"),
+ QColor("#b39ddb"), QColor("#9575cd"), QColor("#7e57c2"), QColor("#673ab7"),
+ QColor("#5e35b1"), QColor("#512da8"), QColor("#4527a0"), QColor("#311b92"),
+ QColor("#b388ff"), QColor("#7c4dff"), QColor("#651fff"), QColor("#6200ea"),
+ QColor("#e8eaf6"), QColor("#c5cae9"), QColor("#9fa8da"), QColor("#7986cb"),
+ QColor("#5c6bc0"), QColor("#3f51b5"), QColor("#3949ab"), QColor("#303f9f"),
+ QColor("#283593"), QColor("#1a237e"), QColor("#8c9eff"), QColor("#536dfe"),
+ QColor("#3d5afe"), QColor("#304ffe"), QColor("#e3f2fd"), QColor("#bbdefb"),
+ QColor("#90caf9"), QColor("#64b5f6"), QColor("#42a5f5"), QColor("#2196f3"),
+ QColor("#1e88e5"), QColor("#1976d2"), QColor("#1565c0"), QColor("#0d47a1"),
+ QColor("#82b1ff"), QColor("#448aff"), QColor("#2979ff"), QColor("#2962ff"),
+ QColor("#e1f5fe"), QColor("#b3e5fc"), QColor("#81d4fa"), QColor("#4fc3f7"),
+ QColor("#29b6f6"), QColor("#03a9f4"), QColor("#039be5"), QColor("#0288d1"),
+ QColor("#0277bd"), QColor("#01579b"), QColor("#80d8ff"), QColor("#40c4ff"),
+ QColor("#00b0ff"), QColor("#0091ea"), QColor("#e0f7fa"), QColor("#b2ebf2"),
+ QColor("#80deea"), QColor("#4dd0e1"), QColor("#26c6da"), QColor("#00bcd4"),
+ QColor("#00acc1"), QColor("#0097a7"), QColor("#00838f"), QColor("#006064"),
+ QColor("#84ffff"), QColor("#18ffff"), QColor("#00e5ff"), QColor("#00b8d4"),
+ QColor("#e0f2f1"), QColor("#b2dfdb"), QColor("#80cbc4"), QColor("#4db6ac"),
+ QColor("#26a69a"), QColor("#009688"), QColor("#00897b"), QColor("#00796b"),
+ QColor("#00695c"), QColor("#004d40"), QColor("#a7ffeb"), QColor("#64ffda"),
+ QColor("#1de9b6"), QColor("#00bfa5"), QColor("#e8f5e9"), QColor("#c8e6c9"),
+ QColor("#a5d6a7"), QColor("#81c784"), QColor("#66bb6a"), QColor("#4caf50"),
+ QColor("#43a047"), QColor("#388e3c"), QColor("#2e7d32"), QColor("#1b5e20"),
+ QColor("#b9f6ca"), QColor("#69f0ae"), QColor("#00e676"), QColor("#00c853"),
+ QColor("#f1f8e9"), QColor("#dcedc8"), QColor("#c5e1a5"), QColor("#aed581"),
+ QColor("#9ccc65"), QColor("#8bc34a"), QColor("#7cb342"), QColor("#689f38"),
+ QColor("#558b2f"), QColor("#33691e"), QColor("#ccff90"), QColor("#b2ff59"),
+ QColor("#76ff03"), QColor("#64dd17"), QColor("#f9fbe7"), QColor("#f0f4c3"),
+ QColor("#e6ee9c"), QColor("#dce775"), QColor("#d4e157"), QColor("#cddc39"),
+ QColor("#c0ca33"), QColor("#afb42b"), QColor("#9e9d24"), QColor("#827717"),
+ QColor("#f4ff81"), QColor("#eeff41"), QColor("#c6ff00"), QColor("#aeea00"),
+ QColor("#fffde7"), QColor("#fff9c4"), QColor("#fff59d"), QColor("#fff176"),
+ QColor("#ffee58"), QColor("#ffeb3b"), QColor("#fdd835"), QColor("#fbc02d"),
+ QColor("#f9a825"), QColor("#f57f17"), QColor("#ffff8d"), QColor("#ffff00"),
+ QColor("#ffea00"), QColor("#ffd600"), QColor("#fff8e1"), QColor("#ffecb3"),
+ QColor("#ffe082"), QColor("#ffd54f"), QColor("#ffca28"), QColor("#ffc107"),
+ QColor("#ffb300"), QColor("#ffa000"), QColor("#ff8f00"), QColor("#ff6f00"),
+ QColor("#ffe57f"), QColor("#ffd740"), QColor("#ffc400"), QColor("#ffab00"),
+ QColor("#fff3e0"), QColor("#ffe0b2"), QColor("#ffcc80"), QColor("#ffb74d"),
+ QColor("#ffa726"), QColor("#ff9800"), QColor("#fb8c00"), QColor("#f57c00"),
+ QColor("#ef6c00"), QColor("#e65100"), QColor("#ffd180"), QColor("#ffab40"),
+ QColor("#ff9100"), QColor("#ff6d00"), QColor("#fbe9e7"), QColor("#ffccbc"),
+ QColor("#ffab91"), QColor("#ff8a65"), QColor("#ff7043"), QColor("#ff5722"),
+ QColor("#f4511e"), QColor("#e64a19"), QColor("#d84315"), QColor("#bf360c"),
+ QColor("#ff9e80"), QColor("#ff6e40"), QColor("#ff3d00"), QColor("#dd2c00"),
+ QColor("#efebe9"), QColor("#d7ccc8"), QColor("#bcaaa4"), QColor("#a1887f"),
+ QColor("#8d6e63"), QColor("#795548"), QColor("#6d4c41"), QColor("#5d4037"),
+ QColor("#4e342e"), QColor("#3e2723"), QColor("#eceff1"), QColor("#cfd8dc"),
+ QColor("#b0bec5"), QColor("#90a4ae"), QColor("#78909c"), QColor("#607d8b"),
+ QColor("#546e7a"), QColor("#455a64"), QColor("#37474f"), QColor("#263238"),
+ QColor("#fafafa"), QColor("#f5f5f5"), QColor("#eeeeee"), QColor("#e0e0e0"),
+ QColor("#bdbdbd"), QColor("#9e9e9e"), QColor("#757575"), QColor("#616161"),
+ QColor("#424242"), QColor("#212121"), QColor("#000000"), QColor("#ffffff"),
+ d->rgba(0, 0, 0, 0),
+ d->rgba(0, 0, 0, 1),
+ d->rgba(0, 0, 0, 0.87),
+ d->rgba(0, 0, 0, 0.54),
+ d->rgba(0, 0, 0, 0.26),
+ d->rgba(0, 0, 0, 0.12),
+ d->rgba(255, 255, 255, 1),
+ d->rgba(255, 255, 255, 0.87),
+ d->rgba(255, 255, 255, 0.54)
+ };
+
+ d->colors.insert(key, palette[color]);
+}
+
+QIcon QtMaterialTheme::icon(QString category, QString icon)
+{
+ return QIcon(":/icons/icons/" % category % "/svg/production/ic_" % icon % "_24px.svg");
+}
diff --git a/src/material-widgets/lib/qtmaterialtheme.h b/src/material-widgets/lib/qtmaterialtheme.h
new file mode 100644
index 0000000..fe4a11c
--- /dev/null
+++ b/src/material-widgets/lib/qtmaterialtheme.h
@@ -0,0 +1,344 @@
+#ifndef QTMATERIALTHEME_H
+#define QTMATERIALTHEME_H
+
+#include
+#include
+#include
+#include
+
+namespace Material
+{
+ enum ButtonPreset {
+ FlatPreset,
+ CheckablePreset
+ };
+
+ enum RippleStyle {
+ CenteredRipple,
+ PositionedRipple,
+ NoRipple
+ };
+
+ enum OverlayStyle {
+ NoOverlay,
+ TintedOverlay,
+ GrayOverlay
+ };
+
+ enum Role {
+ Default,
+ Primary,
+ Secondary
+ };
+
+ enum ButtonIconPlacement {
+ LeftIcon,
+ RightIcon
+ };
+
+ enum ProgressType {
+ DeterminateProgress,
+ IndeterminateProgress
+ };
+
+ enum AvatarType {
+ ImageAvatar,
+ IconAvatar,
+ LetterAvatar
+ };
+
+ enum Color {
+ red50,
+ red100,
+ red200,
+ red300,
+ red400,
+ red500,
+ red600,
+ red700,
+ red800,
+ red900,
+ redA100,
+ redA200,
+ redA400,
+ redA700,
+ pink50,
+ pink100,
+ pink200,
+ pink300,
+ pink400,
+ pink500,
+ pink600,
+ pink700,
+ pink800,
+ pink900,
+ pinkA100,
+ pinkA200,
+ pinkA400,
+ pinkA700,
+ purple50,
+ purple100,
+ purple200,
+ purple300,
+ purple400,
+ purple500,
+ purple600,
+ purple700,
+ purple800,
+ purple900,
+ purpleA100,
+ purpleA200,
+ purpleA400,
+ purpleA700,
+ deepPurple50,
+ deepPurple100,
+ deepPurple200,
+ deepPurple300,
+ deepPurple400,
+ deepPurple500,
+ deepPurple600,
+ deepPurple700,
+ deepPurple800,
+ deepPurple900,
+ deepPurpleA100,
+ deepPurpleA200,
+ deepPurpleA400,
+ deepPurpleA700,
+ indigo50,
+ indigo100,
+ indigo200,
+ indigo300,
+ indigo400,
+ indigo500,
+ indigo600,
+ indigo700,
+ indigo800,
+ indigo900,
+ indigoA100,
+ indigoA200,
+ indigoA400,
+ indigoA700,
+ blue50,
+ blue100,
+ blue200,
+ blue300,
+ blue400,
+ blue500,
+ blue600,
+ blue700,
+ blue800,
+ blue900,
+ blueA100,
+ blueA200,
+ blueA400,
+ blueA700,
+ lightBlue50,
+ lightBlue100,
+ lightBlue200,
+ lightBlue300,
+ lightBlue400,
+ lightBlue500,
+ lightBlue600,
+ lightBlue700,
+ lightBlue800,
+ lightBlue900,
+ lightBlueA100,
+ lightBlueA200,
+ lightBlueA400,
+ lightBlueA700,
+ cyan50,
+ cyan100,
+ cyan200,
+ cyan300,
+ cyan400,
+ cyan500,
+ cyan600,
+ cyan700,
+ cyan800,
+ cyan900,
+ cyanA100,
+ cyanA200,
+ cyanA400,
+ cyanA700,
+ teal50,
+ teal100,
+ teal200,
+ teal300,
+ teal400,
+ teal500,
+ teal600,
+ teal700,
+ teal800,
+ teal900,
+ tealA100,
+ tealA200,
+ tealA400,
+ tealA700,
+ green50,
+ green100,
+ green200,
+ green300,
+ green400,
+ green500,
+ green600,
+ green700,
+ green800,
+ green900,
+ greenA100,
+ greenA200,
+ greenA400,
+ greenA700,
+ lightGreen50,
+ lightGreen100,
+ lightGreen200,
+ lightGreen300,
+ lightGreen400,
+ lightGreen500,
+ lightGreen600,
+ lightGreen700,
+ lightGreen800,
+ lightGreen900,
+ lightGreenA100,
+ lightGreenA200,
+ lightGreenA400,
+ lightGreenA700,
+ lime50,
+ lime100,
+ lime200,
+ lime300,
+ lime400,
+ lime500,
+ lime600,
+ lime700,
+ lime800,
+ lime900,
+ limeA100,
+ limeA200,
+ limeA400,
+ limeA700,
+ yellow50,
+ yellow100,
+ yellow200,
+ yellow300,
+ yellow400,
+ yellow500,
+ yellow600,
+ yellow700,
+ yellow800,
+ yellow900,
+ yellowA100,
+ yellowA200,
+ yellowA400,
+ yellowA700,
+ amber50,
+ amber100,
+ amber200,
+ amber300,
+ amber400,
+ amber500,
+ amber600,
+ amber700,
+ amber800,
+ amber900,
+ amberA100,
+ amberA200,
+ amberA400,
+ amberA700,
+ orange50,
+ orange100,
+ orange200,
+ orange300,
+ orange400,
+ orange500,
+ orange600,
+ orange700,
+ orange800,
+ orange900,
+ orangeA100,
+ orangeA200,
+ orangeA400,
+ orangeA700,
+ deepOrange50,
+ deepOrange100,
+ deepOrange200,
+ deepOrange300,
+ deepOrange400,
+ deepOrange500,
+ deepOrange600,
+ deepOrange700,
+ deepOrange800,
+ deepOrange900,
+ deepOrangeA100,
+ deepOrangeA200,
+ deepOrangeA400,
+ deepOrangeA700,
+ brown50,
+ brown100,
+ brown200,
+ brown300,
+ brown400,
+ brown500,
+ brown600,
+ brown700,
+ brown800,
+ brown900,
+ blueGrey50,
+ blueGrey100,
+ blueGrey200,
+ blueGrey300,
+ blueGrey400,
+ blueGrey500,
+ blueGrey600,
+ blueGrey700,
+ blueGrey800,
+ blueGrey900,
+ grey50,
+ grey100,
+ grey200,
+ grey300,
+ grey400,
+ grey500,
+ grey600,
+ grey700,
+ grey800,
+ grey900,
+ black,
+ white,
+ transparent,
+ fullBlack,
+ darkBlack,
+ lightBlack,
+ minBlack,
+ faintBlack,
+ fullWhite,
+ darkWhite,
+ lightWhite
+ };
+}
+
+class QtMaterialThemePrivate;
+
+class QtMaterialTheme : public QObject
+{
+ Q_OBJECT
+
+public:
+ explicit QtMaterialTheme(QObject *parent = 0);
+ ~QtMaterialTheme();
+
+ QColor getColor(const QString &key) const;
+
+ void setColor(const QString &key, const QColor &color);
+ void setColor(const QString &key, Material::Color color);
+
+ static QIcon icon(QString category, QString icon);
+
+protected:
+ const QScopedPointer d_ptr;
+
+private:
+ Q_DISABLE_COPY(QtMaterialTheme)
+ Q_DECLARE_PRIVATE(QtMaterialTheme)
+};
+
+#endif // QTMATERIALTHEME_H
diff --git a/src/material-widgets/lib/qtmaterialtheme_p.h b/src/material-widgets/lib/qtmaterialtheme_p.h
new file mode 100644
index 0000000..d0ef178
--- /dev/null
+++ b/src/material-widgets/lib/qtmaterialtheme_p.h
@@ -0,0 +1,24 @@
+#ifndef QTMATERIALTHEME_P_H
+#define QTMATERIALTHEME_P_H
+
+#include
+#include
+
+class QtMaterialTheme;
+
+class QtMaterialThemePrivate
+{
+ Q_DISABLE_COPY(QtMaterialThemePrivate)
+ Q_DECLARE_PUBLIC(QtMaterialTheme)
+
+public:
+ QtMaterialThemePrivate(QtMaterialTheme *q);
+ ~QtMaterialThemePrivate();
+
+ QColor rgba(int r, int g, int b, qreal a) const;
+
+ QtMaterialTheme *const q_ptr;
+ QHash colors;
+};
+
+#endif // QTMATERIALTHEME_P_H
diff --git a/src/material-widgets/libcomponents.a b/src/material-widgets/libcomponents.a
new file mode 100644
index 0000000..9949aa0
Binary files /dev/null and b/src/material-widgets/libcomponents.a differ
diff --git a/src/material-widgets/qtmaterialappbar.cpp b/src/material-widgets/qtmaterialappbar.cpp
new file mode 100644
index 0000000..2170ca4
--- /dev/null
+++ b/src/material-widgets/qtmaterialappbar.cpp
@@ -0,0 +1,139 @@
+#include "qtmaterialappbar.h"
+#include "qtmaterialappbar_p.h"
+#include
+#include
+#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_ptr(new QtMaterialAppBarPrivate(this))
+{
+ 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;
+ }
+}
diff --git a/src/material-widgets/qtmaterialappbar.h b/src/material-widgets/qtmaterialappbar.h
new file mode 100644
index 0000000..4c60564
--- /dev/null
+++ b/src/material-widgets/qtmaterialappbar.h
@@ -0,0 +1,48 @@
+#ifndef QTMATERIALAPPBAR_H
+#define QTMATERIALAPPBAR_H
+
+#include
+#include
+
+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;
+
+ inline QHBoxLayout *appBarLayout() const;
+
+protected:
+ void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE;
+
+ const QScopedPointer d_ptr;
+
+private:
+ Q_DISABLE_COPY(QtMaterialAppBar)
+ Q_DECLARE_PRIVATE(QtMaterialAppBar)
+};
+
+inline QHBoxLayout *QtMaterialAppBar::appBarLayout() const
+{
+ return static_cast(layout());
+}
+
+#endif // QTMATERIALAPPBAR_H
diff --git a/src/material-widgets/qtmaterialappbar_p.h b/src/material-widgets/qtmaterialappbar_p.h
new file mode 100644
index 0000000..0586556
--- /dev/null
+++ b/src/material-widgets/qtmaterialappbar_p.h
@@ -0,0 +1,26 @@
+#ifndef QTMATERIALAPPBAR_P_H
+#define QTMATERIALAPPBAR_P_H
+
+#include
+#include
+
+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
diff --git a/src/material-widgets/qtmaterialautocomplete.cpp b/src/material-widgets/qtmaterialautocomplete.cpp
new file mode 100644
index 0000000..df006a6
--- /dev/null
+++ b/src/material-widgets/qtmaterialautocomplete.cpp
@@ -0,0 +1,242 @@
+#include "qtmaterialautocomplete.h"
+#include "qtmaterialautocomplete_p.h"
+#include
+#include
+#include
+#include
+#include
+#include
+#include "qtmaterialautocomplete_internal.h"
+#include "qtmaterialflatbutton.h"
+
+/*!
+ * \class QtMaterialAutoCompletePrivate
+ * \internal
+ */
+
+/*!
+ * \internal
+ */
+QtMaterialAutoCompletePrivate::QtMaterialAutoCompletePrivate(QtMaterialAutoComplete *q)
+ : QtMaterialTextFieldPrivate(q)
+{
+}
+
+/*!
+ * \internal
+ */
+QtMaterialAutoCompletePrivate::~QtMaterialAutoCompletePrivate()
+{
+}
+
+/*!
+ * \internal
+ */
+void QtMaterialAutoCompletePrivate::init()
+{
+ Q_Q(QtMaterialAutoComplete);
+
+ menu = new QWidget;
+ frame = new QWidget;
+ stateMachine = new QtMaterialAutoCompleteStateMachine(menu);
+ menuLayout = new QVBoxLayout;
+ maxWidth = 0;
+
+ menu->setParent(q->parentWidget());
+ frame->setParent(q->parentWidget());
+
+ menu->installEventFilter(q);
+ frame->installEventFilter(q);
+
+ QGraphicsDropShadowEffect *effect = new QGraphicsDropShadowEffect;
+ effect->setBlurRadius(11);
+ effect->setColor(QColor(0, 0, 0, 50));
+ effect->setOffset(0, 3);
+
+ frame->setGraphicsEffect(effect);
+ frame->setVisible(false);
+
+ menu->setLayout(menuLayout);
+ menu->setVisible(false);
+
+ menuLayout->setContentsMargins(0, 0, 0, 0);
+ menuLayout->setSpacing(0);
+
+ QObject::connect(q, SIGNAL(textEdited(QString)), q, SLOT(updateResults(QString)));
+
+ stateMachine->start();
+}
+
+/*!
+ * \class QtMaterialAutoComplete
+ */
+
+QtMaterialAutoComplete::QtMaterialAutoComplete(QWidget *parent)
+ : QtMaterialTextField(*new QtMaterialAutoCompletePrivate(this), parent)
+{
+ d_func()->init();
+}
+
+QtMaterialAutoComplete::~QtMaterialAutoComplete()
+{
+}
+
+void QtMaterialAutoComplete::setDataSource(const QStringList &data)
+{
+ Q_D(QtMaterialAutoComplete);
+
+ d->dataSource = data;
+ update();
+}
+
+void QtMaterialAutoComplete::updateResults(QString text)
+{
+ Q_D(QtMaterialAutoComplete);
+
+ QStringList results;
+ QString trimmed(text.trimmed());
+
+ if (!trimmed.isEmpty()) {
+ QString lookup(trimmed.toLower());
+ QStringList::iterator i;
+ for (i = d->dataSource.begin(); i != d->dataSource.end(); ++i) {
+ if (i->toLower().indexOf(lookup) != -1) {
+ results.push_back(*i);
+ }
+ }
+ }
+
+ const int diff = results.length() - d->menuLayout->count();
+ QFont font("Roboto", 12, QFont::Normal);
+
+ if (diff > 0) {
+ for (int c = 0; c < diff; c++) {
+ QtMaterialFlatButton *item = new QtMaterialFlatButton;
+ item->setFont(font);
+ item->setTextAlignment(Qt::AlignLeft);
+ item->setCornerRadius(0);
+ item->setHaloVisible(false);
+ item->setFixedHeight(50);
+ item->setOverlayStyle(Material::TintedOverlay);
+ d->menuLayout->addWidget(item);
+ item->installEventFilter(this);
+ }
+ } else if (diff < 0) {
+ for (int c = 0; c < -diff; c++) {
+ QWidget *widget = d->menuLayout->itemAt(0)->widget();
+ if (widget) {
+ d->menuLayout->removeWidget(widget);
+ delete widget;
+ }
+ }
+ }
+
+ QFontMetrics *fm = new QFontMetrics(font);
+ d->maxWidth = 0;
+
+ for (int i = 0; i < results.count(); ++i) {
+ QWidget *widget = d->menuLayout->itemAt(i)->widget();
+ QtMaterialFlatButton *item;
+ if ((item = static_cast(widget))) {
+ QString text = results.at(i);
+ QRect rect = fm->boundingRect(text);
+ d->maxWidth = qMax(d->maxWidth, rect.width());
+ item->setText(text);
+ }
+ }
+
+ if (!results.count()) {
+ emit d->stateMachine->shouldClose();
+ } else {
+ emit d->stateMachine->shouldOpen();
+ }
+
+ d->menu->setFixedHeight(results.length()*50);
+ d->menu->setFixedWidth(qMax(d->maxWidth + 24, width()));
+ d->menu->update();
+}
+
+bool QtMaterialAutoComplete::QtMaterialAutoComplete::event(QEvent *event)
+{
+ Q_D(QtMaterialAutoComplete);
+
+ switch (event->type())
+ {
+ case QEvent::Move:
+ case QEvent::Resize: {
+ d->menu->move(pos() + QPoint(0, height() + 6));
+ break;
+ }
+ case QEvent::ParentChange: {
+ QWidget *widget = static_cast(parent());
+ if (widget) {
+ d->menu->setParent(widget);
+ d->frame->setParent(widget);
+ }
+ break;
+ }
+ default:
+ break;
+ }
+ return QtMaterialTextField::event(event);
+}
+
+bool QtMaterialAutoComplete::eventFilter(QObject *watched, QEvent *event)
+{
+ Q_D(QtMaterialAutoComplete);
+
+ if (d->frame == watched)
+ {
+ switch (event->type())
+ {
+ case QEvent::Paint: {
+ QPainter painter(d->frame);
+ painter.fillRect(d->frame->rect(), Qt::white);
+ break;
+ }
+ default:
+ break;
+ }
+ }
+ else if (d->menu == watched)
+ {
+ switch (event->type())
+ {
+ case QEvent::Resize:
+ case QEvent::Move: {
+ d->frame->setGeometry(d->menu->geometry());
+ break;
+ }
+ case QEvent::Show: {
+ d->frame->show();
+ d->menu->raise();
+ break;
+ }
+ case QEvent::Hide: {
+ d->frame->hide();
+ break;
+ }
+ default:
+ break;
+ }
+ }
+ else
+ {
+ switch (event->type())
+ {
+ case QEvent::MouseButtonPress: {
+ emit d->stateMachine->shouldFade();
+ QtMaterialFlatButton *widget;
+ if ((widget = static_cast(watched))) {
+ QString text(widget->text());
+ setText(text);
+ emit itemSelected(text);
+ }
+ break;
+ }
+ default:
+ break;
+ }
+ }
+ return QtMaterialTextField::eventFilter(watched, event);
+}
diff --git a/src/material-widgets/qtmaterialautocomplete.h b/src/material-widgets/qtmaterialautocomplete.h
new file mode 100644
index 0000000..8b46861
--- /dev/null
+++ b/src/material-widgets/qtmaterialautocomplete.h
@@ -0,0 +1,33 @@
+#ifndef QTMATERIALAUTOCOMPLETE_H
+#define QTMATERIALAUTOCOMPLETE_H
+
+#include "qtmaterialtextfield.h"
+
+class QtMaterialAutoCompletePrivate;
+
+class QtMaterialAutoComplete : public QtMaterialTextField
+{
+ Q_OBJECT
+
+public:
+ explicit QtMaterialAutoComplete(QWidget *parent = 0);
+ ~QtMaterialAutoComplete();
+
+ void setDataSource(const QStringList &data);
+
+signals:
+ void itemSelected(QString);
+
+protected slots:
+ void updateResults(QString text);
+
+protected:
+ bool event(QEvent *event) Q_DECL_OVERRIDE;
+ bool eventFilter(QObject *watched, QEvent *event) Q_DECL_OVERRIDE;
+
+private:
+ Q_DISABLE_COPY(QtMaterialAutoComplete)
+ Q_DECLARE_PRIVATE(QtMaterialAutoComplete)
+};
+
+#endif // QTMATERIALAUTOCOMPLETE_H
diff --git a/src/material-widgets/qtmaterialautocomplete_internal.cpp b/src/material-widgets/qtmaterialautocomplete_internal.cpp
new file mode 100644
index 0000000..e01848d
--- /dev/null
+++ b/src/material-widgets/qtmaterialautocomplete_internal.cpp
@@ -0,0 +1,69 @@
+#include "qtmaterialautocomplete_internal.h"
+#include
+#include
+#include
+#include
+
+/*!
+ * \class QtMaterialAutoCompleteStateMachine
+ * \internal
+ */
+
+/*!
+ * \internal
+ */
+QtMaterialAutoCompleteStateMachine::QtMaterialAutoCompleteStateMachine(QWidget *menu)
+ : QStateMachine(menu),
+ m_menu(menu),
+ m_closedState(new QState),
+ m_openState(new QState),
+ m_closingState(new QState)
+{
+ Q_ASSERT(menu);
+
+ addState(m_closedState);
+ addState(m_openState);
+ addState(m_closingState);
+ setInitialState(m_closedState);
+
+ QSignalTransition *transition;
+
+ transition = new QSignalTransition(this, SIGNAL(shouldOpen()));
+ transition->setTargetState(m_openState);
+ m_closedState->addTransition(transition);
+
+ transition = new QSignalTransition(this, SIGNAL(shouldClose()));
+ transition->setTargetState(m_closedState);
+ m_openState->addTransition(transition);
+
+ transition = new QSignalTransition(this, SIGNAL(shouldFade()));
+ transition->setTargetState(m_closingState);
+ m_openState->addTransition(transition);
+
+ m_closedState->assignProperty(menu, "visible", false);
+ m_openState->assignProperty(menu, "visible", true);
+
+ QGraphicsOpacityEffect *effect = new QGraphicsOpacityEffect;
+ menu->setGraphicsEffect(effect);
+
+ m_openState->assignProperty(effect, "opacity", 1);
+ m_closingState->assignProperty(effect, "opacity", 0);
+ m_closedState->assignProperty(effect, "opacity", 0);
+
+ QPropertyAnimation *animation;
+
+ animation = new QPropertyAnimation(effect, "opacity", this);
+ animation->setDuration(240);
+ addDefaultAnimation(animation);
+
+ transition = new QSignalTransition(animation, SIGNAL(finished()));
+ transition->setTargetState(m_closedState);
+ m_closingState->addTransition(transition);
+}
+
+/*!
+ * \internal
+ */
+QtMaterialAutoCompleteStateMachine::~QtMaterialAutoCompleteStateMachine()
+{
+}
diff --git a/src/material-widgets/qtmaterialautocomplete_internal.h b/src/material-widgets/qtmaterialautocomplete_internal.h
new file mode 100644
index 0000000..7e76bd5
--- /dev/null
+++ b/src/material-widgets/qtmaterialautocomplete_internal.h
@@ -0,0 +1,29 @@
+#ifndef QTMATERIALAUTOCOMPLETESTATEMACHINE_H
+#define QTMATERIALAUTOCOMPLETESTATEMACHINE_H
+
+#include
+#include "qtmaterialautocomplete.h"
+
+class QtMaterialAutoCompleteStateMachine : public QStateMachine
+{
+ Q_OBJECT
+
+public:
+ explicit QtMaterialAutoCompleteStateMachine(QWidget *menu);
+ ~QtMaterialAutoCompleteStateMachine();
+
+signals:
+ void shouldOpen();
+ void shouldClose();
+ void shouldFade();
+
+private:
+ Q_DISABLE_COPY(QtMaterialAutoCompleteStateMachine)
+
+ QWidget *const m_menu;
+ QState *const m_closedState;
+ QState *const m_openState;
+ QState *const m_closingState;
+};
+
+#endif // QTMATERIALAUTOCOMPLETESTATEMACHINE_H
diff --git a/src/material-widgets/qtmaterialautocomplete_p.h b/src/material-widgets/qtmaterialautocomplete_p.h
new file mode 100644
index 0000000..4fd405b
--- /dev/null
+++ b/src/material-widgets/qtmaterialautocomplete_p.h
@@ -0,0 +1,30 @@
+#ifndef QTMATERIALAUTOCOMPLETE_P_H
+#define QTMATERIALAUTOCOMPLETE_P_H
+
+#include "qtmaterialtextfield_p.h"
+
+class QWidget;
+class QVBoxLayout;
+class QtMaterialAutoCompleteOverlay;
+class QtMaterialAutoCompleteStateMachine;
+
+class QtMaterialAutoCompletePrivate : public QtMaterialTextFieldPrivate
+{
+ Q_DISABLE_COPY(QtMaterialAutoCompletePrivate)
+ Q_DECLARE_PUBLIC(QtMaterialAutoComplete)
+
+public:
+ QtMaterialAutoCompletePrivate(QtMaterialAutoComplete *q);
+ virtual ~QtMaterialAutoCompletePrivate();
+
+ void init();
+
+ QWidget *menu;
+ QWidget *frame;
+ QtMaterialAutoCompleteStateMachine *stateMachine;
+ QVBoxLayout *menuLayout;
+ QStringList dataSource;
+ int maxWidth;
+};
+
+#endif // QTMATERIALAUTOCOMPLETE_P_H
diff --git a/src/material-widgets/qtmaterialavatar.cpp b/src/material-widgets/qtmaterialavatar.cpp
new file mode 100644
index 0000000..9d77734
--- /dev/null
+++ b/src/material-widgets/qtmaterialavatar.cpp
@@ -0,0 +1,293 @@
+#include "qtmaterialavatar.h"
+#include "qtmaterialavatar_p.h"
+#include
+#include "lib/qtmaterialstyle.h"
+
+/*!
+ * \class QtMaterialAvatarPrivate
+ * \internal
+ */
+
+/*!
+ * \internal
+ */
+QtMaterialAvatarPrivate::QtMaterialAvatarPrivate(QtMaterialAvatar *q)
+ : q_ptr(q)
+{
+}
+
+/*!
+ * \internal
+ */
+QtMaterialAvatarPrivate::~QtMaterialAvatarPrivate()
+{
+}
+
+/*!
+ * \internal
+ */
+void QtMaterialAvatarPrivate::init()
+{
+ Q_Q(QtMaterialAvatar);
+
+ size = 40;
+ type = Material::LetterAvatar;
+ useThemeColors = true;
+
+ QFont font(q->font());
+ font.setPointSizeF(16);
+ q->setFont(font);
+
+ QSizePolicy policy(QSizePolicy::MinimumExpanding,
+ QSizePolicy::MinimumExpanding);
+ q->setSizePolicy(policy);
+}
+
+/*!
+ * \class QtMaterialAvatar
+ */
+
+QtMaterialAvatar::QtMaterialAvatar(QWidget *parent)
+ : QWidget(parent),
+ d_ptr(new QtMaterialAvatarPrivate(this))
+{
+ d_func()->init();
+}
+
+QtMaterialAvatar::QtMaterialAvatar(const QIcon &icon, QWidget *parent)
+ : QWidget(parent),
+ d_ptr(new QtMaterialAvatarPrivate(this))
+{
+ d_func()->init();
+
+ setIcon(icon);
+}
+
+QtMaterialAvatar::QtMaterialAvatar(const QChar &letter, QWidget *parent)
+ : QWidget(parent),
+ d_ptr(new QtMaterialAvatarPrivate(this))
+{
+ d_func()->init();
+
+ setLetter(letter);
+}
+
+QtMaterialAvatar::QtMaterialAvatar(const QImage &image, QWidget *parent)
+ : QWidget(parent),
+ d_ptr(new QtMaterialAvatarPrivate(this))
+{
+ d_func()->init();
+
+ setImage(image);
+}
+
+QtMaterialAvatar::~QtMaterialAvatar()
+{
+}
+
+void QtMaterialAvatar::setUseThemeColors(bool value)
+{
+ Q_D(QtMaterialAvatar);
+
+ if (d->useThemeColors == value) {
+ return;
+ }
+
+ d->useThemeColors = value;
+ update();
+}
+
+bool QtMaterialAvatar::useThemeColors() const
+{
+ Q_D(const QtMaterialAvatar);
+
+ return d->useThemeColors;
+}
+
+void QtMaterialAvatar::setTextColor(const QColor &color)
+{
+ Q_D(QtMaterialAvatar);
+
+ d->textColor = color;
+
+ MATERIAL_DISABLE_THEME_COLORS
+ update();
+}
+
+QColor QtMaterialAvatar::textColor() const
+{
+ Q_D(const QtMaterialAvatar);
+
+ if (d->useThemeColors || !d->textColor.isValid()) {
+ return QtMaterialStyle::instance().themeColor("canvas");
+ } else {
+ return d->textColor;
+ }
+}
+
+void QtMaterialAvatar::setBackgroundColor(const QColor &color)
+{
+ Q_D(QtMaterialAvatar);
+
+ d->backgroundColor = color;
+
+ MATERIAL_DISABLE_THEME_COLORS
+ update();
+}
+
+QColor QtMaterialAvatar::backgroundColor() const
+{
+ Q_D(const QtMaterialAvatar);
+
+ if (d->useThemeColors || !d->backgroundColor.isValid()) {
+ return QtMaterialStyle::instance().themeColor("primary1");
+ } else {
+ return d->backgroundColor;
+ }
+}
+
+/*!
+ * \reimp
+ */
+QSize QtMaterialAvatar::sizeHint() const
+{
+ Q_D(const QtMaterialAvatar);
+
+ return QSize(d->size+2, d->size+2);
+}
+
+void QtMaterialAvatar::setSize(int size)
+{
+ Q_D(QtMaterialAvatar);
+
+ d->size = size;
+
+ if (!d->image.isNull()) {
+ d->pixmap = QPixmap::fromImage(d->image.scaled(d->size, d->size,
+ Qt::IgnoreAspectRatio,
+ Qt::SmoothTransformation));
+ }
+
+ QFont f(font());
+ f.setPointSizeF(size*16/40);
+ setFont(f);
+
+ update();
+}
+
+int QtMaterialAvatar::size() const
+{
+ Q_D(const QtMaterialAvatar);
+
+ return d->size;
+}
+
+void QtMaterialAvatar::setLetter(const QChar &letter)
+{
+ Q_D(QtMaterialAvatar);
+
+ d->letter = letter;
+ d->type = Material::LetterAvatar;
+ update();
+}
+
+void QtMaterialAvatar::setImage(const QImage &image)
+{
+ Q_D(QtMaterialAvatar);
+
+ d->image = image;
+ d->type = Material::ImageAvatar;
+
+ d->pixmap = QPixmap::fromImage(image.scaled(d->size, d->size,
+ Qt::IgnoreAspectRatio,
+ Qt::SmoothTransformation));
+ update();
+}
+
+void QtMaterialAvatar::setIcon(const QIcon &icon)
+{
+ Q_D(QtMaterialAvatar);
+
+ d->icon = icon;
+ d->type = Material::IconAvatar;
+ update();
+}
+
+Material::AvatarType QtMaterialAvatar::type() const
+{
+ Q_D(const QtMaterialAvatar);
+
+ return d->type;
+}
+
+/*!
+ * \reimp
+ */
+void QtMaterialAvatar::paintEvent(QPaintEvent *event)
+{
+ Q_UNUSED(event)
+
+ Q_D(QtMaterialAvatar);
+
+ QPainter painter(this);
+ painter.setRenderHint(QPainter::Antialiasing);
+
+ QRect r = rect();
+ const qreal hs = d->size/2;
+
+ if (!isEnabled())
+ {
+ QBrush brush;
+ brush.setStyle(Qt::SolidPattern);
+ brush.setColor(QtMaterialStyle::instance().themeColor("disabled"));
+ painter.setPen(Qt::NoPen);
+ painter.setBrush(brush);
+ painter.drawEllipse(QRectF((width()-d->size)/2, (height()-d->size)/2,
+ d->size, d->size));
+ return;
+ }
+
+ if (Material::ImageAvatar != d->type)
+ {
+ QBrush brush;
+ brush.setStyle(Qt::SolidPattern);
+ brush.setColor(backgroundColor());
+ painter.setPen(Qt::NoPen);
+ painter.setBrush(brush);
+ painter.drawEllipse(QRectF((width()-d->size)/2, (height()-d->size)/2,
+ d->size, d->size));
+ }
+
+ switch (d->type)
+ {
+ case Material::ImageAvatar:
+ {
+ QPainterPath path;
+ path.addEllipse(width()/2-hs, height()/2-hs, d->size, d->size);
+ painter.setClipPath(path);
+
+ painter.drawPixmap(QRect(width()/2-hs, height()/2-hs, d->size, d->size),
+ d->pixmap);
+ break;
+ }
+ case Material::IconAvatar:
+ {
+ QRect iconGeometry((width()-hs)/2, (height()-hs)/2, hs, hs);
+ QPixmap pixmap = d->icon.pixmap(hs, hs);
+ QPainter icon(&pixmap);
+ icon.setCompositionMode(QPainter::CompositionMode_SourceIn);
+ icon.fillRect(pixmap.rect(), textColor());
+ painter.drawPixmap(iconGeometry, pixmap);
+ break;
+ }
+ case Material::LetterAvatar:
+ {
+ painter.setPen(textColor());
+ painter.setBrush(Qt::NoBrush);
+ painter.drawText(r, Qt::AlignCenter, QString(d->letter));
+ break;
+ }
+ default:
+ break;
+ }
+}
diff --git a/src/material-widgets/qtmaterialavatar.h b/src/material-widgets/qtmaterialavatar.h
new file mode 100644
index 0000000..9b99ef2
--- /dev/null
+++ b/src/material-widgets/qtmaterialavatar.h
@@ -0,0 +1,50 @@
+#ifndef QTMATERIALAVATAR_H
+#define QTMATERIALAVATAR_H
+
+#include
+#include "lib/qtmaterialtheme.h"
+
+class QtMaterialAvatarPrivate;
+
+class QtMaterialAvatar : public QWidget
+{
+ Q_OBJECT
+
+public:
+ explicit QtMaterialAvatar(QWidget *parent = 0);
+ explicit QtMaterialAvatar(const QIcon &icon, QWidget *parent = 0);
+ explicit QtMaterialAvatar(const QChar &letter, QWidget *parent = 0);
+ explicit QtMaterialAvatar(const QImage &image, QWidget *parent = 0);
+ ~QtMaterialAvatar();
+
+ 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::AvatarType type() const;
+
+protected:
+ void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE;
+
+ const QScopedPointer d_ptr;
+
+private:
+ Q_DISABLE_COPY(QtMaterialAvatar)
+ Q_DECLARE_PRIVATE(QtMaterialAvatar)
+};
+
+#endif // QTMATERIALAVATAR_H
diff --git a/src/material-widgets/qtmaterialavatar_p.h b/src/material-widgets/qtmaterialavatar_p.h
new file mode 100644
index 0000000..44b378e
--- /dev/null
+++ b/src/material-widgets/qtmaterialavatar_p.h
@@ -0,0 +1,37 @@
+#ifndef QTMATERIALAVATAR_P_H
+#define QTMATERIALAVATAR_P_H
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include "lib/qtmaterialtheme.h"
+
+class QtMaterialAvatar;
+
+class QtMaterialAvatarPrivate
+{
+ Q_DISABLE_COPY(QtMaterialAvatarPrivate)
+ Q_DECLARE_PUBLIC(QtMaterialAvatar)
+
+public:
+ QtMaterialAvatarPrivate(QtMaterialAvatar *q);
+ ~QtMaterialAvatarPrivate();
+
+ void init();
+
+ QtMaterialAvatar *const q_ptr;
+ int size;
+ Material::AvatarType type;
+ QChar letter;
+ QImage image;
+ QIcon icon;
+ QPixmap pixmap;
+ bool useThemeColors;
+ QColor textColor;
+ QColor backgroundColor;
+};
+
+#endif // QTMATERIALAVATAR_P_H
diff --git a/src/material-widgets/qtmaterialbadge.cpp b/src/material-widgets/qtmaterialbadge.cpp
new file mode 100644
index 0000000..b30aa95
--- /dev/null
+++ b/src/material-widgets/qtmaterialbadge.cpp
@@ -0,0 +1,294 @@
+#include "qtmaterialbadge.h"
+#include "qtmaterialbadge_p.h"
+#include
+#include "lib/qtmaterialstyle.h"
+
+/*!
+ * \class QtMaterialBadgePrivate
+ * \internal
+ */
+
+/*!
+ * \internal
+ */
+QtMaterialBadgePrivate::QtMaterialBadgePrivate(QtMaterialBadge *q)
+ : q_ptr(q)
+{
+}
+
+/*!
+ * \internal
+ */
+QtMaterialBadgePrivate::~QtMaterialBadgePrivate()
+{
+}
+
+/*!
+ * \internal
+ */
+void QtMaterialBadgePrivate::init()
+{
+ Q_Q(QtMaterialBadge);
+
+ x = 0;
+ y = 0;
+ padding = 10;
+ useThemeColors = true;
+
+ q->setAttribute(Qt::WA_TransparentForMouseEvents);
+
+ QFont font(q->font());
+ font.setPointSizeF(10);
+ font.setStyleName("Bold");
+ q->setFont(font);
+
+ q->setText("+1");
+}
+
+/*!
+ * \class QtMaterialBadge
+ */
+
+QtMaterialBadge::QtMaterialBadge(QWidget *parent)
+ : QtMaterialOverlayWidget(parent),
+ d_ptr(new QtMaterialBadgePrivate(this))
+{
+ d_func()->init();
+}
+
+QtMaterialBadge::QtMaterialBadge(const QIcon &icon, QWidget *parent)
+ : QtMaterialOverlayWidget(parent),
+ d_ptr(new QtMaterialBadgePrivate(this))
+{
+ d_func()->init();
+
+ setIcon(icon);
+}
+
+QtMaterialBadge::QtMaterialBadge(const QString &text, QWidget *parent)
+ : QtMaterialOverlayWidget(parent),
+ d_ptr(new QtMaterialBadgePrivate(this))
+{
+ d_func()->init();
+
+ setText(text);
+}
+
+QtMaterialBadge::~QtMaterialBadge()
+{
+}
+
+void QtMaterialBadge::setUseThemeColors(bool value)
+{
+ Q_D(QtMaterialBadge);
+
+ if (d->useThemeColors == value) {
+ return;
+ }
+
+ d->useThemeColors = value;
+ update();
+}
+
+bool QtMaterialBadge::useThemeColors() const
+{
+ Q_D(const QtMaterialBadge);
+
+ return d->useThemeColors;
+}
+
+void QtMaterialBadge::setTextColor(const QColor &color)
+{
+ Q_D(QtMaterialBadge);
+
+ d->textColor = color;
+
+ MATERIAL_DISABLE_THEME_COLORS
+ update();
+}
+
+QColor QtMaterialBadge::textColor() const
+{
+ Q_D(const QtMaterialBadge);
+
+ if (d->useThemeColors || !d->textColor.isValid()) {
+ return QtMaterialStyle::instance().themeColor("canvas");
+ } else {
+ return d->textColor;
+ }
+}
+
+void QtMaterialBadge::setBackgroundColor(const QColor &color)
+{
+ Q_D(QtMaterialBadge);
+
+ d->backgroundColor = color;
+
+ MATERIAL_DISABLE_THEME_COLORS
+ update();
+}
+
+QColor QtMaterialBadge::backgroundColor() const
+{
+ Q_D(const QtMaterialBadge);
+
+ if (d->useThemeColors || !d->backgroundColor.isValid()) {
+ return QtMaterialStyle::instance().themeColor("accent1");
+ } else {
+ return d->backgroundColor;
+ }
+}
+
+void QtMaterialBadge::setRelativePosition(const QPointF &pos)
+{
+ setRelativePosition(pos.x(), pos.y());
+}
+
+void QtMaterialBadge::setRelativePosition(qreal x, qreal y)
+{
+ Q_D(QtMaterialBadge);
+
+ d->x = x;
+ d->y = y;
+ update();
+}
+
+QPointF QtMaterialBadge::relativePosition() const
+{
+ Q_D(const QtMaterialBadge);
+
+ return QPointF(d->x, d->y);
+}
+
+void QtMaterialBadge::setRelativeXPosition(qreal x)
+{
+ Q_D(QtMaterialBadge);
+
+ d->x = x;
+ update();
+}
+
+qreal QtMaterialBadge::relativeXPosition() const
+{
+ Q_D(const QtMaterialBadge);
+
+ return d->x;
+}
+
+void QtMaterialBadge::setRelativeYPosition(qreal y)
+{
+ Q_D(QtMaterialBadge);
+
+ d->y = y;
+ update();
+}
+
+qreal QtMaterialBadge::relativeYPosition() const
+{
+ Q_D(const QtMaterialBadge);
+
+ return d->y;
+}
+
+/*!
+ * \reimp
+ */
+QSize QtMaterialBadge::sizeHint() const
+{
+ const int s = getDiameter();
+ return QSize(s+4, s+4);
+}
+
+void QtMaterialBadge::setIcon(const QIcon &icon)
+{
+ Q_D(QtMaterialBadge);
+
+ d->icon = icon;
+ update();
+}
+
+QIcon QtMaterialBadge::icon() const
+{
+ Q_D(const QtMaterialBadge);
+
+ return d->icon;
+}
+
+void QtMaterialBadge::setText(const QString &text)
+{
+ Q_D(QtMaterialBadge);
+
+ d->text = text;
+
+ if (!d->icon.isNull()) {
+ d->icon = QIcon();
+ }
+
+ d->size = fontMetrics().size(Qt::TextShowMnemonic, text);
+
+ update();
+}
+
+QString QtMaterialBadge::text() const
+{
+ Q_D(const QtMaterialBadge);
+
+ return d->text;
+}
+
+/*!
+ * \reimp
+ */
+void QtMaterialBadge::paintEvent(QPaintEvent *event)
+{
+ Q_UNUSED(event)
+
+ Q_D(QtMaterialBadge);
+
+ QPainter painter(this);
+ painter.setRenderHint(QPainter::Antialiasing);
+
+ painter.translate(d->x, d->y);
+
+ QBrush brush;
+ brush.setStyle(Qt::SolidPattern);
+ brush.setColor(isEnabled() ? backgroundColor()
+ : QtMaterialStyle::instance().themeColor("disabled"));
+ painter.setBrush(brush);
+ painter.setPen(Qt::NoPen);
+
+ const int s = getDiameter();
+
+ QRectF r(0, 0, s, s);
+ r.translate(QPointF((width()-s), (height()-s))/2);
+
+ if (d->icon.isNull())
+ {
+ painter.drawEllipse(r);
+ painter.setPen(textColor());
+ painter.setBrush(Qt::NoBrush);
+ painter.drawText(r.translated(0, -0.5), Qt::AlignCenter, d->text);
+ }
+ else
+ {
+ painter.drawEllipse(r);
+ QRectF q(0, 0, 16, 16);
+ q.moveCenter(r.center());
+ QPixmap pixmap = icon().pixmap(16, 16);
+ QPainter icon(&pixmap);
+ icon.setCompositionMode(QPainter::CompositionMode_SourceIn);
+ icon.fillRect(pixmap.rect(), textColor());
+ painter.drawPixmap(q.toRect(), pixmap);
+ }
+}
+
+int QtMaterialBadge::getDiameter() const
+{
+ Q_D(const QtMaterialBadge);
+
+ if (d->icon.isNull()) {
+ return qMax(d->size.width(), d->size.height()) + d->padding;
+ } else {
+ return 24;
+ }
+}
diff --git a/src/material-widgets/qtmaterialbadge.h b/src/material-widgets/qtmaterialbadge.h
new file mode 100644
index 0000000..deac3ab
--- /dev/null
+++ b/src/material-widgets/qtmaterialbadge.h
@@ -0,0 +1,61 @@
+#ifndef QTMATERIALBADGE_H
+#define QTMATERIALBADGE_H
+
+#include "lib/qtmaterialoverlaywidget.h"
+
+class QtMaterialBadgePrivate;
+
+class QtMaterialBadge : public QtMaterialOverlayWidget
+{
+ Q_OBJECT
+
+ Q_PROPERTY(QColor textColor WRITE setTextColor READ textColor)
+ Q_PROPERTY(QColor backgroundColor WRITE setBackgroundColor READ backgroundColor)
+ Q_PROPERTY(QPointF relativePosition WRITE setRelativePosition READ relativePosition)
+
+public:
+ explicit QtMaterialBadge(QWidget *parent = 0);
+ explicit QtMaterialBadge(const QIcon &icon, QWidget *parent = 0);
+ explicit QtMaterialBadge(const QString &text, QWidget *parent = 0);
+ ~QtMaterialBadge();
+
+ void setUseThemeColors(bool value);
+ bool useThemeColors() const;
+
+ void setTextColor(const QColor &color);
+ QColor textColor() const;
+
+ void setBackgroundColor(const QColor &color);
+ QColor backgroundColor() const;
+
+ void setRelativePosition(const QPointF &pos);
+ void setRelativePosition(qreal x, qreal y);
+ QPointF relativePosition() const;
+
+ void setRelativeXPosition(qreal x);
+ qreal relativeXPosition() const;
+
+ void setRelativeYPosition(qreal y);
+ qreal relativeYPosition() const;
+
+ QSize sizeHint() const Q_DECL_OVERRIDE;
+
+ void setIcon(const QIcon &icon);
+ QIcon icon() const;
+
+ void setText(const QString &text);
+ QString text() const;
+
+protected:
+ void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE;
+
+ int getDiameter() const;
+
+ const QScopedPointer d_ptr;
+
+private:
+ Q_DISABLE_COPY(QtMaterialBadge)
+ Q_DECLARE_PRIVATE(QtMaterialBadge)
+};
+
+#endif // QTMATERIALBADGE_H
diff --git a/src/material-widgets/qtmaterialbadge_p.h b/src/material-widgets/qtmaterialbadge_p.h
new file mode 100644
index 0000000..19757e7
--- /dev/null
+++ b/src/material-widgets/qtmaterialbadge_p.h
@@ -0,0 +1,34 @@
+#ifndef QTMATERIALBADGE_P_H
+#define QTMATERIALBADGE_P_H
+
+#include
+#include
+#include
+#include
+
+class QtMaterialBadge;
+
+class QtMaterialBadgePrivate
+{
+ Q_DISABLE_COPY(QtMaterialBadgePrivate)
+ Q_DECLARE_PUBLIC(QtMaterialBadge)
+
+public:
+ QtMaterialBadgePrivate(QtMaterialBadge *q);
+ ~QtMaterialBadgePrivate();
+
+ void init();
+
+ QtMaterialBadge *const q_ptr;
+ QString text;
+ QColor textColor;
+ QColor backgroundColor;
+ QSize size;
+ QIcon icon;
+ qreal x;
+ qreal y;
+ int padding;
+ bool useThemeColors;
+};
+
+#endif // QTMATERIALBADGE_P_H
diff --git a/src/material-widgets/qtmaterialcheckbox.cpp b/src/material-widgets/qtmaterialcheckbox.cpp
new file mode 100644
index 0000000..b693a90
--- /dev/null
+++ b/src/material-widgets/qtmaterialcheckbox.cpp
@@ -0,0 +1,85 @@
+#include "qtmaterialcheckbox.h"
+#include "qtmaterialcheckbox_p.h"
+#include
+#include
+#include
+#include "lib/qtmaterialcheckable_internal.h"
+
+/*!
+ * \class QtMaterialCheckBoxPrivate
+ * \internal
+ */
+
+/*!
+ * \internal
+ */
+QtMaterialCheckBoxPrivate::QtMaterialCheckBoxPrivate(QtMaterialCheckBox *q)
+ : QtMaterialCheckablePrivate(q)
+{
+}
+
+/*!
+ * \internal
+ */
+QtMaterialCheckBoxPrivate::~QtMaterialCheckBoxPrivate()
+{
+}
+
+/*!
+ * \internal
+ */
+void QtMaterialCheckBoxPrivate::init()
+{
+ Q_Q(QtMaterialCheckBox);
+
+ checkedState->assignProperty(checkedIcon, "iconSize", 24);
+ uncheckedState->assignProperty(checkedIcon, "iconSize", 0);
+
+ QPropertyAnimation *animation;
+
+ animation = new QPropertyAnimation(checkedIcon, "iconSize", q);
+ animation->setDuration(300);
+ uncheckedTransition->addAnimation(animation);
+
+ animation = new QPropertyAnimation(checkedIcon, "iconSize", q);
+ animation->setDuration(1300);
+ checkedTransition->addAnimation(animation);
+
+ animation = new QPropertyAnimation(checkedIcon, "opacity", q);
+ animation->setDuration(440);
+ checkedTransition->addAnimation(animation);
+
+ animation = new QPropertyAnimation(checkedIcon, "opacity", q);
+ animation->setDuration(440);
+ uncheckedTransition->addAnimation(animation);
+
+ animation = new QPropertyAnimation(uncheckedIcon, "opacity", q);
+ animation->setDuration(440);
+ checkedTransition->addAnimation(animation);
+
+ animation = new QPropertyAnimation(uncheckedIcon, "opacity", q);
+ animation->setDuration(440);
+ uncheckedTransition->addAnimation(animation);
+
+ animation = new QPropertyAnimation(uncheckedIcon, "color", q);
+ animation->setDuration(440);
+ checkedTransition->addAnimation(animation);
+
+ animation = new QPropertyAnimation(uncheckedIcon, "color", q);
+ animation->setDuration(440);
+ uncheckedTransition->addAnimation(animation);
+}
+
+/*!
+ * \class QtMaterialCheckBox
+ */
+
+QtMaterialCheckBox::QtMaterialCheckBox(QWidget *parent)
+ : QtMaterialCheckable(*new QtMaterialCheckBoxPrivate(this), parent)
+{
+ d_func()->init();
+}
+
+QtMaterialCheckBox::~QtMaterialCheckBox()
+{
+}
diff --git a/src/material-widgets/qtmaterialcheckbox.h b/src/material-widgets/qtmaterialcheckbox.h
new file mode 100644
index 0000000..5aaa8f4
--- /dev/null
+++ b/src/material-widgets/qtmaterialcheckbox.h
@@ -0,0 +1,21 @@
+#ifndef QTMATERIALCHECKBOX_H
+#define QTMATERIALCHECKBOX_H
+
+#include "lib/qtmaterialcheckable.h"
+
+class QtMaterialCheckBoxPrivate;
+
+class QtMaterialCheckBox : public QtMaterialCheckable
+{
+ Q_OBJECT
+
+public:
+ explicit QtMaterialCheckBox(QWidget *parent = 0);
+ ~QtMaterialCheckBox();
+
+private:
+ Q_DISABLE_COPY(QtMaterialCheckBox)
+ Q_DECLARE_PRIVATE(QtMaterialCheckBox)
+};
+
+#endif // QTMATERIALCHECKBOX_H
diff --git a/src/material-widgets/qtmaterialcheckbox_p.h b/src/material-widgets/qtmaterialcheckbox_p.h
new file mode 100644
index 0000000..daa62d7
--- /dev/null
+++ b/src/material-widgets/qtmaterialcheckbox_p.h
@@ -0,0 +1,20 @@
+#ifndef QTMATERIALCHECKBOX_P_H
+#define QTMATERIALCHECKBOX_P_H
+
+#include "lib/qtmaterialcheckable_p.h"
+
+class QtMaterialCheckBox;
+
+class QtMaterialCheckBoxPrivate : public QtMaterialCheckablePrivate
+{
+ Q_DISABLE_COPY(QtMaterialCheckBoxPrivate)
+ Q_DECLARE_PUBLIC(QtMaterialCheckBox)
+
+public:
+ QtMaterialCheckBoxPrivate(QtMaterialCheckBox *q);
+ ~QtMaterialCheckBoxPrivate();
+
+ void init();
+};
+
+#endif // QTMATERIALCHECKBOX_P_H
diff --git a/src/material-widgets/qtmaterialcircularprogress.cpp b/src/material-widgets/qtmaterialcircularprogress.cpp
new file mode 100644
index 0000000..c783f75
--- /dev/null
+++ b/src/material-widgets/qtmaterialcircularprogress.cpp
@@ -0,0 +1,254 @@
+#include "qtmaterialcircularprogress.h"
+#include "qtmaterialcircularprogress_p.h"
+#include
+#include
+#include
+#include "qtmaterialcircularprogress_internal.h"
+#include "lib/qtmaterialstyle.h"
+
+/*!
+ * \class QtMaterialCircularProgressPrivate
+ * \internal
+ */
+
+QtMaterialCircularProgressPrivate::QtMaterialCircularProgressPrivate(QtMaterialCircularProgress *q)
+ : q_ptr(q)
+{
+}
+
+QtMaterialCircularProgressPrivate::~QtMaterialCircularProgressPrivate()
+{
+}
+
+void QtMaterialCircularProgressPrivate::init()
+{
+ Q_Q(QtMaterialCircularProgress);
+
+ delegate = new QtMaterialCircularProgressDelegate(q);
+ progressType = Material::IndeterminateProgress;
+ penWidth = 6.25;
+ size = 64;
+ useThemeColors = true;
+
+ q->setSizePolicy(QSizePolicy(QSizePolicy::MinimumExpanding,
+ QSizePolicy::MinimumExpanding));
+
+ QParallelAnimationGroup *group = new QParallelAnimationGroup(q);
+ group->setLoopCount(-1);
+
+ QPropertyAnimation *animation;
+
+ animation = new QPropertyAnimation(q);
+ animation->setPropertyName("dashLength");
+ animation->setTargetObject(delegate);
+ animation->setEasingCurve(QEasingCurve::InOutQuad);
+ animation->setStartValue(0.1);
+ animation->setKeyValueAt(0.15, 0.2);
+ animation->setKeyValueAt(0.6, 20);
+ animation->setKeyValueAt(0.7, 20);
+ animation->setEndValue(20);
+ animation->setDuration(2050);
+
+ group->addAnimation(animation);
+
+ animation = new QPropertyAnimation(q);
+ animation->setPropertyName("dashOffset");
+ animation->setTargetObject(delegate);
+ animation->setEasingCurve(QEasingCurve::InOutSine);
+ animation->setStartValue(0);
+ animation->setKeyValueAt(0.15, 0);
+ animation->setKeyValueAt(0.6, -7);
+ animation->setKeyValueAt(0.7, -7);
+ animation->setEndValue(-25);
+ animation->setDuration(2050);
+
+ group->addAnimation(animation);
+
+ animation = new QPropertyAnimation(q);
+ animation->setPropertyName("angle");
+ animation->setTargetObject(delegate);
+ animation->setStartValue(0);
+ animation->setEndValue(719);
+ animation->setDuration(2050);
+
+ group->addAnimation(animation);
+
+ group->start();
+}
+
+/*!
+ * \class QtMaterialCircularProgress
+ */
+
+QtMaterialCircularProgress::QtMaterialCircularProgress(QWidget *parent)
+ : QProgressBar(parent),
+ d_ptr(new QtMaterialCircularProgressPrivate(this))
+{
+ d_func()->init();
+}
+
+QtMaterialCircularProgress::~QtMaterialCircularProgress()
+{
+}
+
+void QtMaterialCircularProgress::setProgressType(Material::ProgressType type)
+{
+ Q_D(QtMaterialCircularProgress);
+
+ d->progressType = type;
+ update();
+}
+
+Material::ProgressType QtMaterialCircularProgress::progressType() const
+{
+ Q_D(const QtMaterialCircularProgress);
+
+ return d->progressType;
+}
+
+void QtMaterialCircularProgress::setUseThemeColors(bool value)
+{
+ Q_D(QtMaterialCircularProgress);
+
+ if (d->useThemeColors == value) {
+ return;
+ }
+
+ d->useThemeColors = value;
+ update();
+}
+
+bool QtMaterialCircularProgress::useThemeColors() const
+{
+ Q_D(const QtMaterialCircularProgress);
+
+ return d->useThemeColors;
+}
+
+void QtMaterialCircularProgress::setLineWidth(qreal width)
+{
+ Q_D(QtMaterialCircularProgress);
+
+ d->penWidth = width;
+ update();
+ updateGeometry();
+}
+
+qreal QtMaterialCircularProgress::lineWidth() const
+{
+ Q_D(const QtMaterialCircularProgress);
+
+ return d->penWidth;
+}
+
+void QtMaterialCircularProgress::setSize(int size)
+{
+ Q_D(QtMaterialCircularProgress);
+
+ d->size = size;
+ update();
+ updateGeometry();
+}
+
+int QtMaterialCircularProgress::size() const
+{
+ Q_D(const QtMaterialCircularProgress);
+
+ return d->size;
+}
+
+void QtMaterialCircularProgress::setColor(const QColor &color)
+{
+ Q_D(QtMaterialCircularProgress);
+
+ d->color = color;
+
+ MATERIAL_DISABLE_THEME_COLORS
+ update();
+}
+
+QColor QtMaterialCircularProgress::color() const
+{
+ Q_D(const QtMaterialCircularProgress);
+
+ if (d->useThemeColors || !d->color.isValid()) {
+ return QtMaterialStyle::instance().themeColor("primary1");
+ } else {
+ return d->color;
+ }
+}
+
+/*!
+ * \reimp
+ */
+QSize QtMaterialCircularProgress::sizeHint() const
+{
+ Q_D(const QtMaterialCircularProgress);
+
+ const qreal s = d->size+d->penWidth+8;
+ return QSize(s, s);
+}
+
+/*!
+ * \reimp
+ */
+void QtMaterialCircularProgress::paintEvent(QPaintEvent *event)
+{
+ Q_UNUSED(event)
+
+ Q_D(QtMaterialCircularProgress);
+
+ QPainter painter(this);
+ painter.setRenderHint(QPainter::Antialiasing);
+
+ if (!isEnabled())
+ {
+ QPen pen;
+ pen.setCapStyle(Qt::RoundCap);
+ pen.setWidthF(d->penWidth);
+ pen.setColor(QtMaterialStyle::instance().themeColor("border"));
+ painter.setPen(pen);
+ painter.drawLine(rect().center()-QPointF(20, 20), rect().center()+QPointF(20, 20));
+ painter.drawLine(rect().center()+QPointF(20, -20), rect().center()-QPointF(20, -20));
+ return;
+ }
+
+ if (Material::IndeterminateProgress == d->progressType)
+ {
+ painter.translate(width()/2, height()/2);
+ painter.rotate(d->delegate->angle());
+ }
+
+ QPen pen;
+ pen.setCapStyle(Qt::RoundCap);
+ pen.setWidthF(d->penWidth);
+ pen.setColor(color());
+
+ if (Material::IndeterminateProgress == d->progressType)
+ {
+ QVector pattern;
+ pattern << d->delegate->dashLength()*d->size/50 << 30*d->size/50;
+
+ pen.setDashOffset(d->delegate->dashOffset()*d->size/50);
+ pen.setDashPattern(pattern);
+
+ painter.setPen(pen);
+
+ painter.drawEllipse(QPoint(0, 0), d->size/2, d->size/2);
+ }
+ else
+ {
+ painter.setPen(pen);
+
+ const qreal x = (width()-d->size)/2;
+ const qreal y = (height()-d->size)/2;
+
+ const qreal a = 360*(value()-minimum())/(maximum()-minimum());
+
+ QPainterPath path;
+ path.arcMoveTo(x, y, d->size, d->size, 0);
+ path.arcTo(x, y, d->size, d->size, 0, a);
+
+ painter.drawPath(path);
+ }
+}
diff --git a/src/material-widgets/qtmaterialcircularprogress.h b/src/material-widgets/qtmaterialcircularprogress.h
new file mode 100644
index 0000000..dfc306e
--- /dev/null
+++ b/src/material-widgets/qtmaterialcircularprogress.h
@@ -0,0 +1,48 @@
+#ifndef QTMATERIALCIRCULARPROGRESS_H
+#define QTMATERIALCIRCULARPROGRESS_H
+
+#include
+#include "lib/qtmaterialtheme.h"
+
+class QtMaterialCircularProgressPrivate;
+
+class QtMaterialCircularProgress : public QProgressBar
+{
+ Q_OBJECT
+
+ Q_PROPERTY(qreal lineWidth WRITE setLineWidth READ lineWidth)
+ Q_PROPERTY(qreal size WRITE setSize READ size)
+ Q_PROPERTY(QColor color WRITE setColor READ color)
+
+public:
+ explicit QtMaterialCircularProgress(QWidget *parent = 0);
+ ~QtMaterialCircularProgress();
+
+ void setProgressType(Material::ProgressType type);
+ Material::ProgressType progressType() const;
+
+ void setUseThemeColors(bool value);
+ bool useThemeColors() const;
+
+ void setLineWidth(qreal width);
+ qreal lineWidth() const;
+
+ void setSize(int size);
+ int size() const;
+
+ void setColor(const QColor &color);
+ QColor color() const;
+
+ QSize sizeHint() const Q_DECL_OVERRIDE;
+
+protected:
+ void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE;
+
+ const QScopedPointer d_ptr;
+
+private:
+ Q_DISABLE_COPY(QtMaterialCircularProgress)
+ Q_DECLARE_PRIVATE(QtMaterialCircularProgress)
+};
+
+#endif // QTMATERIALCIRCULARPROGRESS_H
diff --git a/src/material-widgets/qtmaterialcircularprogress_internal.cpp b/src/material-widgets/qtmaterialcircularprogress_internal.cpp
new file mode 100644
index 0000000..b11a25f
--- /dev/null
+++ b/src/material-widgets/qtmaterialcircularprogress_internal.cpp
@@ -0,0 +1,20 @@
+#include "qtmaterialcircularprogress_internal.h"
+
+/*!
+ * \class QtMaterialCircularProgressDelegate
+ * \internal
+ */
+
+QtMaterialCircularProgressDelegate::QtMaterialCircularProgressDelegate(QtMaterialCircularProgress *parent)
+ : QObject(parent),
+ m_progress(parent),
+ m_dashOffset(0),
+ m_dashLength(89),
+ m_angle(0)
+{
+ Q_ASSERT(parent);
+}
+
+QtMaterialCircularProgressDelegate::~QtMaterialCircularProgressDelegate()
+{
+}
diff --git a/src/material-widgets/qtmaterialcircularprogress_internal.h b/src/material-widgets/qtmaterialcircularprogress_internal.h
new file mode 100644
index 0000000..a05bd63
--- /dev/null
+++ b/src/material-widgets/qtmaterialcircularprogress_internal.h
@@ -0,0 +1,70 @@
+#ifndef QTMATERIALCIRCULARPROGRESS_INTERNAL_H
+#define QTMATERIALCIRCULARPROGRESS_INTERNAL_H
+
+#include
+#include "qtmaterialcircularprogress.h"
+
+class QtMaterialCircularProgressDelegate : public QObject
+{
+ Q_OBJECT
+
+ Q_PROPERTY(qreal dashOffset WRITE setDashOffset READ dashOffset)
+ Q_PROPERTY(qreal dashLength WRITE setDashLength READ dashLength)
+ Q_PROPERTY(int angle WRITE setAngle READ angle)
+
+public:
+ QtMaterialCircularProgressDelegate(QtMaterialCircularProgress *parent);
+ ~QtMaterialCircularProgressDelegate();
+
+ inline void setDashOffset(qreal offset);
+ inline qreal dashOffset() const;
+
+ inline void setDashLength(qreal length);
+ inline qreal dashLength() const;
+
+ inline void setAngle(int angle);
+ inline int angle() const;
+
+private:
+ Q_DISABLE_COPY(QtMaterialCircularProgressDelegate)
+
+ QtMaterialCircularProgress *const m_progress;
+ qreal m_dashOffset;
+ qreal m_dashLength;
+ int m_angle;
+};
+
+inline void QtMaterialCircularProgressDelegate::setDashOffset(qreal offset)
+{
+ m_dashOffset = offset;
+ m_progress->update();
+}
+
+inline qreal QtMaterialCircularProgressDelegate::dashOffset() const
+{
+ return m_dashOffset;
+}
+
+inline void QtMaterialCircularProgressDelegate::setDashLength(qreal length)
+{
+ m_dashLength = length;
+ m_progress->update();
+}
+
+inline qreal QtMaterialCircularProgressDelegate::dashLength() const
+{
+ return m_dashLength;
+}
+
+inline void QtMaterialCircularProgressDelegate::setAngle(int angle)
+{
+ m_angle = angle;
+ m_progress->update();
+}
+
+inline int QtMaterialCircularProgressDelegate::angle() const
+{
+ return m_angle;
+}
+
+#endif // QTMATERIALCIRCULARPROGRESS_INTERNAL_H
diff --git a/src/material-widgets/qtmaterialcircularprogress_p.h b/src/material-widgets/qtmaterialcircularprogress_p.h
new file mode 100644
index 0000000..451bc9c
--- /dev/null
+++ b/src/material-widgets/qtmaterialcircularprogress_p.h
@@ -0,0 +1,30 @@
+#ifndef QTMATERIALCIRCULARPROGRESS_P_H
+#define QTMATERIALCIRCULARPROGRESS_P_H
+
+#include
+#include "lib/qtmaterialtheme.h"
+
+class QtMaterialCircularProgress;
+class QtMaterialCircularProgressDelegate;
+
+class QtMaterialCircularProgressPrivate
+{
+ Q_DISABLE_COPY(QtMaterialCircularProgressPrivate)
+ Q_DECLARE_PUBLIC(QtMaterialCircularProgress)
+
+public:
+ QtMaterialCircularProgressPrivate(QtMaterialCircularProgress *q);
+ ~QtMaterialCircularProgressPrivate();
+
+ void init();
+
+ QtMaterialCircularProgress *const q_ptr;
+ QtMaterialCircularProgressDelegate *delegate;
+ Material::ProgressType progressType;
+ QColor color;
+ qreal penWidth;
+ int size;
+ bool useThemeColors;
+};
+
+#endif // QTMATERIALCIRCULARPROGRESS_P_H
diff --git a/src/material-widgets/qtmaterialdialog.cpp b/src/material-widgets/qtmaterialdialog.cpp
new file mode 100644
index 0000000..82afc89
--- /dev/null
+++ b/src/material-widgets/qtmaterialdialog.cpp
@@ -0,0 +1,167 @@
+#include "qtmaterialdialog.h"
+#include "qtmaterialdialog_p.h"
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include "qtmaterialdialog_internal.h"
+#include "lib/qtmaterialstatetransition.h"
+
+/*!
+ * \class QtMaterialDialogPrivate
+ * \internal
+ */
+
+QtMaterialDialogPrivate::QtMaterialDialogPrivate(QtMaterialDialog *q)
+ : q_ptr(q)
+{
+}
+
+QtMaterialDialogPrivate::~QtMaterialDialogPrivate()
+{
+}
+
+void QtMaterialDialogPrivate::init()
+{
+ Q_Q(QtMaterialDialog);
+
+ dialogWindow = new QtMaterialDialogWindow(q);
+ proxyStack = new QStackedLayout;
+ stateMachine = new QStateMachine(q);
+ proxy = new QtMaterialDialogProxy(dialogWindow, proxyStack, q);
+
+ QVBoxLayout *layout = new QVBoxLayout;
+ q->setLayout(layout);
+
+ QWidget *widget = new QWidget;
+ widget->setLayout(proxyStack);
+ widget->setMinimumWidth(400);
+
+ QGraphicsDropShadowEffect *effect = new QGraphicsDropShadowEffect;
+ effect->setColor(QColor(0, 0, 0, 200));
+ effect->setBlurRadius(64);
+ effect->setOffset(0, 13);
+ widget->setGraphicsEffect(effect);
+
+ layout->addWidget(widget);
+ layout->setAlignment(widget, Qt::AlignCenter);
+
+ proxyStack->addWidget(dialogWindow);
+ proxyStack->addWidget(proxy);
+ proxyStack->setCurrentIndex(1);
+
+ q->setAttribute(Qt::WA_TransparentForMouseEvents);
+
+ QState *hiddenState = new QState;
+ QState *visibleState = new QState;
+
+ stateMachine->addState(hiddenState);
+ stateMachine->addState(visibleState);
+ stateMachine->setInitialState(hiddenState);
+
+ QtMaterialStateTransition *transition;
+
+ transition = new QtMaterialStateTransition(DialogShowTransition);
+ transition->setTargetState(visibleState);
+ hiddenState->addTransition(transition);
+
+ transition = new QtMaterialStateTransition(DialogHideTransition);
+ transition->setTargetState(hiddenState);
+ visibleState->addTransition(transition);
+
+ visibleState->assignProperty(proxy, "opacity", 1);
+ visibleState->assignProperty(effect, "color", QColor(0, 0, 0, 200));
+ visibleState->assignProperty(dialogWindow, "offset", 0);
+ hiddenState->assignProperty(proxy, "opacity", 0);
+ hiddenState->assignProperty(effect, "color", QColor(0, 0, 0, 0));
+ hiddenState->assignProperty(dialogWindow, "offset", 200);
+
+ QPropertyAnimation *animation;
+
+ animation = new QPropertyAnimation(proxy, "opacity", q);
+ animation->setDuration(280);
+ stateMachine->addDefaultAnimation(animation);
+
+ animation = new QPropertyAnimation(effect, "color", q);
+ animation->setDuration(280);
+ stateMachine->addDefaultAnimation(animation);
+
+ animation = new QPropertyAnimation(dialogWindow, "offset", q);
+ animation->setDuration(280);
+ animation->setEasingCurve(QEasingCurve::OutCirc);
+ stateMachine->addDefaultAnimation(animation);
+
+ QObject::connect(visibleState, SIGNAL(propertiesAssigned()),
+ proxy, SLOT(makeOpaque()));
+ QObject::connect(hiddenState, SIGNAL(propertiesAssigned()),
+ proxy, SLOT(makeTransparent()));
+
+ stateMachine->start();
+ QCoreApplication::processEvents();
+}
+
+/*!
+ * \class QtMaterialDialog
+ */
+
+QtMaterialDialog::QtMaterialDialog(QWidget *parent)
+ : QtMaterialOverlayWidget(parent),
+ d_ptr(new QtMaterialDialogPrivate(this))
+{
+ d_func()->init();
+}
+
+QtMaterialDialog::~QtMaterialDialog()
+{
+}
+
+QLayout *QtMaterialDialog::windowLayout() const
+{
+ Q_D(const QtMaterialDialog);
+
+ return d->dialogWindow->layout();
+}
+
+void QtMaterialDialog::setWindowLayout(QLayout *layout)
+{
+ Q_D(QtMaterialDialog);
+
+ d->dialogWindow->setLayout(layout);
+}
+
+void QtMaterialDialog::showDialog()
+{
+ Q_D(QtMaterialDialog);
+
+ d->stateMachine->postEvent(new QtMaterialStateTransitionEvent(DialogShowTransition));
+ raise();
+}
+
+void QtMaterialDialog::hideDialog()
+{
+ Q_D(QtMaterialDialog);
+
+ d->stateMachine->postEvent(new QtMaterialStateTransitionEvent(DialogHideTransition));
+ setAttribute(Qt::WA_TransparentForMouseEvents);
+ d->proxyStack->setCurrentIndex(1);
+}
+
+void QtMaterialDialog::paintEvent(QPaintEvent *event)
+{
+ Q_UNUSED(event)
+
+ Q_D(QtMaterialDialog);
+
+ QPainter painter(this);
+
+ QBrush brush;
+ brush.setStyle(Qt::SolidPattern);
+ brush.setColor(Qt::black);
+ painter.setBrush(brush);
+ painter.setPen(Qt::NoPen);
+ painter.setOpacity(d->proxy->opacity()/2.4);
+ painter.drawRect(rect());
+}
diff --git a/src/material-widgets/qtmaterialdialog.h b/src/material-widgets/qtmaterialdialog.h
new file mode 100644
index 0000000..822a5d9
--- /dev/null
+++ b/src/material-widgets/qtmaterialdialog.h
@@ -0,0 +1,35 @@
+#ifndef QTMATERIALDIALOG_H
+#define QTMATERIALDIALOG_H
+
+#include
+#include "lib/qtmaterialoverlaywidget.h"
+
+class QLayout;
+class QtMaterialDialogPrivate;
+
+class QtMaterialDialog : public QtMaterialOverlayWidget
+{
+ Q_OBJECT
+
+public:
+ explicit QtMaterialDialog(QWidget *parent = 0);
+ ~QtMaterialDialog();
+
+ QLayout *windowLayout() const;
+ void setWindowLayout(QLayout *layout);
+
+public slots:
+ void showDialog();
+ void hideDialog();
+
+protected:
+ void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE;
+
+ const QScopedPointer d_ptr;
+
+private:
+ Q_DISABLE_COPY(QtMaterialDialog)
+ Q_DECLARE_PRIVATE(QtMaterialDialog)
+};
+
+#endif // QTMATERIALDIALOG_H
diff --git a/src/material-widgets/qtmaterialdialog_internal.cpp b/src/material-widgets/qtmaterialdialog_internal.cpp
new file mode 100644
index 0000000..6cac9b8
--- /dev/null
+++ b/src/material-widgets/qtmaterialdialog_internal.cpp
@@ -0,0 +1,127 @@
+#include "qtmaterialdialog_internal.h"
+#include
+#include
+#include
+#include
+#include "qtmaterialdialog.h"
+
+/*!
+ * \class QtMaterialDialogProxy
+ * \internal
+ */
+
+QtMaterialDialogProxy::QtMaterialDialogProxy(
+ QtMaterialDialogWindow *source,
+ QStackedLayout *layout,
+ QtMaterialDialog *dialog,
+ QWidget *parent)
+ : QWidget(parent),
+ m_source(source),
+ m_layout(layout),
+ m_dialog(dialog),
+ m_opacity(0),
+ m_mode(Transparent)
+{
+}
+
+QtMaterialDialogProxy::~QtMaterialDialogProxy()
+{
+}
+
+void QtMaterialDialogProxy::setOpacity(qreal opacity)
+{
+ m_opacity = opacity;
+ m_mode = SemiTransparent;
+ update();
+ m_dialog->update();
+}
+
+
+void QtMaterialDialogProxy::makeOpaque()
+{
+ m_dialog->setAttribute(Qt::WA_TransparentForMouseEvents, false);
+ m_layout->setCurrentIndex(0);
+ m_opacity = 1.0;
+ m_mode = Opaque;
+ update();
+}
+
+void QtMaterialDialogProxy::makeTransparent()
+{
+ m_opacity = 0.0;
+ m_mode = Transparent;
+ update();
+}
+
+QSize QtMaterialDialogProxy::sizeHint() const
+{
+ return m_source->sizeHint();
+}
+
+bool QtMaterialDialogProxy::event(QEvent *event)
+{
+ const QEvent::Type type = event->type();
+
+ if (QEvent::Move == type || QEvent::Resize == type) {
+ m_source->setGeometry(geometry());
+ }
+ return QWidget::event(event);
+}
+
+void QtMaterialDialogProxy::paintEvent(QPaintEvent *event)
+{
+ Q_UNUSED(event)
+
+ QPainter painter(this);
+
+ if (Transparent == m_mode) {
+ return;
+ } else if (Opaque != m_mode) {
+ painter.setOpacity(m_opacity);
+ }
+ QPixmap pm = m_source->grab(m_source->rect());
+ painter.drawPixmap(0, 0, pm);
+}
+
+/*!
+ * \class QtMaterialDialogWindow
+ * \internal
+ */
+
+QtMaterialDialogWindow::QtMaterialDialogWindow(
+ QtMaterialDialog *dialog,
+ QWidget *parent)
+ : QWidget(parent),
+ m_dialog(dialog)
+{
+}
+
+QtMaterialDialogWindow::~QtMaterialDialogWindow()
+{
+}
+
+void QtMaterialDialogWindow::setOffset(int offset)
+{
+ QMargins margins = m_dialog->layout()->contentsMargins();
+ margins.setBottom(offset);
+ m_dialog->layout()->setContentsMargins(margins);
+}
+
+int QtMaterialDialogWindow::offset() const
+{
+ return m_dialog->layout()->contentsMargins().bottom();
+}
+
+void QtMaterialDialogWindow::paintEvent(QPaintEvent *event)
+{
+ Q_UNUSED(event)
+
+ QPainter painter(this);
+
+ QBrush brush;
+ brush.setStyle(Qt::SolidPattern);
+ brush.setColor(Qt::white);
+ painter.setPen(Qt::NoPen);
+ painter.setBrush(brush);
+ painter.drawRect(rect());
+}
diff --git a/src/material-widgets/qtmaterialdialog_internal.h b/src/material-widgets/qtmaterialdialog_internal.h
new file mode 100644
index 0000000..52f5a05
--- /dev/null
+++ b/src/material-widgets/qtmaterialdialog_internal.h
@@ -0,0 +1,79 @@
+#ifndef QTMATERIALDIALOG_INTERNAL_H
+#define QTMATERIALDIALOG_INTERNAL_H
+
+#include
+
+class QStackedLayout;
+class QtMaterialDialog;
+class QtMaterialDialogWindow;
+
+class QtMaterialDialogProxy : public QWidget
+{
+ Q_OBJECT
+
+ Q_PROPERTY(qreal opacity WRITE setOpacity READ opacity)
+
+ enum TransparencyMode {
+ Transparent,
+ SemiTransparent,
+ Opaque,
+ };
+
+public:
+ QtMaterialDialogProxy(QtMaterialDialogWindow *source,
+ QStackedLayout *layout,
+ QtMaterialDialog *dialog,
+ QWidget *parent = 0);
+ ~QtMaterialDialogProxy();
+
+ void setOpacity(qreal opacity);
+ inline qreal opacity() const;
+
+protected slots:
+ void makeOpaque();
+ void makeTransparent();
+
+ QSize sizeHint() const Q_DECL_OVERRIDE;
+
+protected:
+ bool event(QEvent *event) Q_DECL_OVERRIDE;
+ void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE;
+
+private:
+ Q_DISABLE_COPY(QtMaterialDialogProxy)
+
+ QtMaterialDialogWindow *const m_source;
+ QStackedLayout *const m_layout;
+ QtMaterialDialog *const m_dialog;
+ qreal m_opacity;
+ TransparencyMode m_mode;
+};
+
+inline qreal QtMaterialDialogProxy::opacity() const
+{
+ return m_opacity;
+}
+
+class QtMaterialDialogWindow : public QWidget
+{
+ Q_OBJECT
+
+ Q_PROPERTY(int offset WRITE setOffset READ offset)
+
+public:
+ explicit QtMaterialDialogWindow(QtMaterialDialog *dialog, QWidget *parent = 0);
+ ~QtMaterialDialogWindow();
+
+ void setOffset(int offset);
+ int offset() const;
+
+protected:
+ void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE;
+
+private:
+ Q_DISABLE_COPY(QtMaterialDialogWindow)
+
+ QtMaterialDialog *const m_dialog;
+};
+
+#endif // QTMATERIALDIALOG_INTERNAL_H
diff --git a/src/material-widgets/qtmaterialdialog_p.h b/src/material-widgets/qtmaterialdialog_p.h
new file mode 100644
index 0000000..b10088e
--- /dev/null
+++ b/src/material-widgets/qtmaterialdialog_p.h
@@ -0,0 +1,30 @@
+#ifndef QTMATERIALDIALOG_P_H
+#define QTMATERIALDIALOG_P_H
+
+#include
+
+class QStateMachine;
+class QtMaterialDialog;
+class QStackedLayout;
+class QtMaterialDialogWindow;
+class QtMaterialDialogProxy;
+
+class QtMaterialDialogPrivate
+{
+ Q_DISABLE_COPY(QtMaterialDialogPrivate)
+ Q_DECLARE_PUBLIC(QtMaterialDialog)
+
+public:
+ QtMaterialDialogPrivate(QtMaterialDialog *q);
+ ~QtMaterialDialogPrivate();
+
+ void init();
+
+ QtMaterialDialog *const q_ptr;
+ QtMaterialDialogWindow *dialogWindow;
+ QStackedLayout *proxyStack;
+ QStateMachine *stateMachine;
+ QtMaterialDialogProxy *proxy;
+};
+
+#endif // QTMATERIALDIALOG_P_H
diff --git a/src/material-widgets/qtmaterialdrawer.cpp b/src/material-widgets/qtmaterialdrawer.cpp
new file mode 100644
index 0000000..1bddd47
--- /dev/null
+++ b/src/material-widgets/qtmaterialdrawer.cpp
@@ -0,0 +1,234 @@
+#include "qtmaterialdrawer.h"
+#include "qtmaterialdrawer_p.h"
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include "qtmaterialdrawer_internal.h"
+
+/*!
+ * \class QtMaterialDrawerPrivate
+ * \internal
+ */
+
+/*!
+ * \internal
+ */
+QtMaterialDrawerPrivate::QtMaterialDrawerPrivate(QtMaterialDrawer *q)
+ : q_ptr(q)
+{
+}
+
+/*!
+ * \internal
+ */
+QtMaterialDrawerPrivate::~QtMaterialDrawerPrivate()
+{
+}
+
+/*!
+ * \internal
+ */
+void QtMaterialDrawerPrivate::init()
+{
+ Q_Q(QtMaterialDrawer);
+
+ widget = new QtMaterialDrawerWidget;
+ stateMachine = new QtMaterialDrawerStateMachine(widget, q);
+ window = new QWidget;
+ width = 250;
+ clickToClose = false;
+ autoRaise = true;
+ closed = true;
+ overlay = false;
+
+ QVBoxLayout *layout = new QVBoxLayout;
+ layout->addWidget(window);
+
+ widget->setLayout(layout);
+ widget->setFixedWidth(width+16);
+
+ widget->setParent(q);
+
+ stateMachine->start();
+ QCoreApplication::processEvents();
+}
+
+/*!
+ * \class QtMaterialDrawer
+ */
+
+QtMaterialDrawer::QtMaterialDrawer(QWidget *parent)
+ : QtMaterialOverlayWidget(parent),
+ d_ptr(new QtMaterialDrawerPrivate(this))
+{
+ d_func()->init();
+}
+
+QtMaterialDrawer::~QtMaterialDrawer()
+{
+}
+
+void QtMaterialDrawer::setDrawerWidth(int width)
+{
+ Q_D(QtMaterialDrawer);
+
+ d->width = width;
+ d->stateMachine->updatePropertyAssignments();
+ d->widget->setFixedWidth(width+16);
+}
+
+int QtMaterialDrawer::drawerWidth() const
+{
+ Q_D(const QtMaterialDrawer);
+
+ return d->width;
+}
+
+void QtMaterialDrawer::setDrawerLayout(QLayout *layout)
+{
+ Q_D(QtMaterialDrawer);
+
+ d->window->setLayout(layout);
+}
+
+QLayout *QtMaterialDrawer::drawerLayout() const
+{
+ Q_D(const QtMaterialDrawer);
+
+ return d->window->layout();
+}
+
+void QtMaterialDrawer::setClickOutsideToClose(bool state)
+{
+ Q_D(QtMaterialDrawer);
+
+ d->clickToClose = state;
+}
+
+bool QtMaterialDrawer::clickOutsideToClose() const
+{
+ Q_D(const QtMaterialDrawer);
+
+ return d->clickToClose;
+}
+
+void QtMaterialDrawer::setAutoRaise(bool state)
+{
+ Q_D(QtMaterialDrawer);
+
+ d->autoRaise = state;
+}
+
+bool QtMaterialDrawer::autoRaise() const
+{
+ Q_D(const QtMaterialDrawer);
+
+ return d->autoRaise;
+}
+
+void QtMaterialDrawer::setOverlayMode(bool value)
+{
+ Q_D(QtMaterialDrawer);
+
+ d->overlay = value;
+ update();
+}
+
+bool QtMaterialDrawer::overlayMode() const
+{
+ Q_D(const QtMaterialDrawer);
+
+ return d->overlay;
+}
+
+void QtMaterialDrawer::openDrawer()
+{
+ Q_D(QtMaterialDrawer);
+
+ emit d->stateMachine->signalOpen();
+
+ if (d->autoRaise) {
+ raise();
+ }
+ setAttribute(Qt::WA_TransparentForMouseEvents, false);
+ setAttribute(Qt::WA_NoSystemBackground, false);
+}
+
+void QtMaterialDrawer::closeDrawer()
+{
+ Q_D(QtMaterialDrawer);
+
+ emit d->stateMachine->signalClose();
+
+ if (d->overlay) {
+ setAttribute(Qt::WA_TransparentForMouseEvents);
+ setAttribute(Qt::WA_NoSystemBackground);
+ }
+}
+
+bool QtMaterialDrawer::event(QEvent *event)
+{
+ Q_D(QtMaterialDrawer);
+
+ switch (event->type())
+ {
+ case QEvent::Move:
+ case QEvent::Resize:
+ if (!d->overlay) {
+ setMask(QRegion(d->widget->rect()));
+ }
+ break;
+ default:
+ break;
+ }
+ return QtMaterialOverlayWidget::event(event);
+}
+
+bool QtMaterialDrawer::eventFilter(QObject *obj, QEvent *event)
+{
+ Q_D(QtMaterialDrawer);
+
+ switch (event->type())
+ {
+ case QEvent::MouseButtonPress: {
+ QMouseEvent *mouseEvent;
+ if ((mouseEvent = static_cast(event))) {
+ const bool canClose = d->clickToClose || d->overlay;
+ if (!d->widget->geometry().contains(mouseEvent->pos()) && canClose) {
+ closeDrawer();
+ }
+ }
+ break;
+ }
+ case QEvent::Move:
+ case QEvent::Resize: {
+ QLayout *lw = d->widget->layout();
+ if (lw && 16 != lw->contentsMargins().right()) {
+ lw->setContentsMargins(0, 0, 16, 0);
+ }
+ break;
+ }
+ default:
+ break;
+ }
+ return QtMaterialOverlayWidget::eventFilter(obj, event);
+}
+
+void QtMaterialDrawer::paintEvent(QPaintEvent *event)
+{
+ Q_UNUSED(event)
+
+ Q_D(QtMaterialDrawer);
+
+ if (!d->overlay || d->stateMachine->isInClosedState()) {
+ return;
+ }
+ QPainter painter(this);
+ painter.setOpacity(d->stateMachine->opacity());
+ painter.fillRect(rect(), Qt::SolidPattern);
+}
diff --git a/src/material-widgets/qtmaterialdrawer.h b/src/material-widgets/qtmaterialdrawer.h
new file mode 100644
index 0000000..7bf3219
--- /dev/null
+++ b/src/material-widgets/qtmaterialdrawer.h
@@ -0,0 +1,48 @@
+#ifndef QTMATERIALDRAWER_H
+#define QTMATERIALDRAWER_H
+
+#include "lib/qtmaterialoverlaywidget.h"
+
+class QtMaterialDrawerPrivate;
+class QtMaterialDrawerStateMachine;
+
+class QtMaterialDrawer : public QtMaterialOverlayWidget
+{
+ Q_OBJECT
+
+public:
+ explicit QtMaterialDrawer(QWidget *parent = 0);
+ ~QtMaterialDrawer();
+
+ void setDrawerWidth(int width);
+ int drawerWidth() const;
+
+ void setDrawerLayout(QLayout *layout);
+ QLayout *drawerLayout() const;
+
+ void setClickOutsideToClose(bool state);
+ bool clickOutsideToClose() const;
+
+ void setAutoRaise(bool state);
+ bool autoRaise() const;
+
+ void setOverlayMode(bool value);
+ bool overlayMode() const;
+
+public slots:
+ void openDrawer();
+ void closeDrawer();
+
+protected:
+ bool event(QEvent *event) Q_DECL_OVERRIDE;
+ bool eventFilter(QObject *obj, QEvent *event) Q_DECL_OVERRIDE;
+ void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE;
+
+ const QScopedPointer d_ptr;
+
+private:
+ Q_DISABLE_COPY(QtMaterialDrawer)
+ Q_DECLARE_PRIVATE(QtMaterialDrawer)
+};
+
+#endif // QTMATERIALDRAWER_H
diff --git a/src/material-widgets/qtmaterialdrawer_internal.cpp b/src/material-widgets/qtmaterialdrawer_internal.cpp
new file mode 100644
index 0000000..7f32700
--- /dev/null
+++ b/src/material-widgets/qtmaterialdrawer_internal.cpp
@@ -0,0 +1,169 @@
+#include "qtmaterialdrawer_internal.h"
+#include
+#include
+#include
+#include
+#include
+#include "qtmaterialdrawer.h"
+
+/*!
+ * \class QtMaterialDrawerStateMachine
+ * \internal
+ */
+
+QtMaterialDrawerStateMachine::QtMaterialDrawerStateMachine(QtMaterialDrawerWidget *drawer, QtMaterialDrawer *parent)
+ : QStateMachine(parent),
+ m_drawer(drawer),
+ m_main(parent),
+ m_openingState(new QState),
+ m_openedState(new QState),
+ m_closingState(new QState),
+ m_closedState(new QState),
+ m_opacity(0)
+{
+ addState(m_openingState);
+ addState(m_openedState);
+ addState(m_closingState);
+ addState(m_closedState);
+
+ setInitialState(m_closedState);
+
+ QSignalTransition *transition;
+ QPropertyAnimation *animation;
+
+ transition = new QSignalTransition(this, SIGNAL(signalOpen()));
+ transition->setTargetState(m_openingState);
+ m_closedState->addTransition(transition);
+
+ animation = new QPropertyAnimation(drawer, "offset", this);
+ animation->setDuration(220);
+ animation->setEasingCurve(QEasingCurve::OutCirc);
+ transition->addAnimation(animation);
+
+ animation = new QPropertyAnimation(this, "opacity", this);
+ animation->setDuration(220);
+ transition->addAnimation(animation);
+
+ transition = new QSignalTransition(animation, SIGNAL(finished()));
+ transition->setTargetState(m_openedState);
+ m_openingState->addTransition(transition);
+
+ transition = new QSignalTransition(this, SIGNAL(signalClose()));
+ transition->setTargetState(m_closingState);
+ m_openingState->addTransition(transition);
+
+ animation = new QPropertyAnimation(this, "opacity", this);
+ animation->setDuration(220);
+ transition->addAnimation(animation);
+
+ animation = new QPropertyAnimation(drawer, "offset", this);
+ animation->setDuration(220);
+ animation->setEasingCurve(QEasingCurve::InCirc);
+ transition->addAnimation(animation);
+
+ transition = new QSignalTransition(animation, SIGNAL(finished()));
+ transition->setTargetState(m_closedState);
+ m_closingState->addTransition(transition);
+
+ transition = new QSignalTransition(this, SIGNAL(signalClose()));
+ transition->setTargetState(m_closingState);
+ m_openedState->addTransition(transition);
+
+ animation = new QPropertyAnimation(drawer, "offset", this);
+ animation->setDuration(220);
+ animation->setEasingCurve(QEasingCurve::InCirc);
+ transition->addAnimation(animation);
+
+ animation = new QPropertyAnimation(this, "opacity", this);
+ animation->setDuration(220);
+ transition->addAnimation(animation);
+
+ transition = new QSignalTransition(animation, SIGNAL(finished()));
+ transition->setTargetState(m_closedState);
+ m_closingState->addTransition(transition);
+
+ updatePropertyAssignments();
+}
+
+QtMaterialDrawerStateMachine::~QtMaterialDrawerStateMachine()
+{
+}
+
+void QtMaterialDrawerStateMachine::setOpacity(qreal opacity)
+{
+ m_opacity = opacity;
+ m_main->update();
+}
+
+bool QtMaterialDrawerStateMachine::isInClosedState() const
+{
+ return m_closedState->active();
+}
+
+void QtMaterialDrawerStateMachine::updatePropertyAssignments()
+{
+ const qreal closedOffset = -(m_drawer->width()+32);
+
+ m_closingState->assignProperty(m_drawer, "offset", closedOffset);
+ m_closedState->assignProperty(m_drawer, "offset", closedOffset);
+
+ m_closingState->assignProperty(this, "opacity", 0);
+ m_closedState->assignProperty(this, "opacity", 0);
+
+ m_openingState->assignProperty(m_drawer, "offset", 0);
+ m_openingState->assignProperty(this, "opacity", 0.4);
+}
+
+/*!
+ * \class QtMaterialDrawerWidget
+ * \internal
+ */
+
+QtMaterialDrawerWidget::QtMaterialDrawerWidget(QWidget *parent)
+ : QtMaterialOverlayWidget(parent),
+ m_offset(0)
+{
+}
+
+QtMaterialDrawerWidget::~QtMaterialDrawerWidget()
+{
+}
+
+void QtMaterialDrawerWidget::setOffset(int offset)
+{
+ m_offset = offset;
+
+ QWidget *widget = parentWidget();
+ if (widget) {
+ setGeometry(widget->rect().translated(offset, 0));
+ }
+ update();
+}
+
+void QtMaterialDrawerWidget::paintEvent(QPaintEvent *event)
+{
+ Q_UNUSED(event)
+
+ QPainter painter(this);
+
+ QBrush brush;
+ brush.setStyle(Qt::SolidPattern);
+ brush.setColor(Qt::white);
+ painter.setBrush(brush);
+ painter.setPen(Qt::NoPen);
+
+ painter.drawRect(rect().adjusted(0, 0, -16, 0));
+
+ QLinearGradient gradient(QPointF(width()-16, 0), QPointF(width(), 0));
+ gradient.setColorAt(0, QColor(0, 0, 0, 80));
+ gradient.setColorAt(0.5, QColor(0, 0, 0, 20));
+ gradient.setColorAt(1, QColor(0, 0, 0, 0));
+ painter.setBrush(QBrush(gradient));
+
+ painter.drawRect(width()-16, 0, 16, height());
+}
+
+QRect QtMaterialDrawerWidget::overlayGeometry() const
+{
+ return QtMaterialOverlayWidget::overlayGeometry().translated(m_offset, 0);
+}
diff --git a/src/material-widgets/qtmaterialdrawer_internal.h b/src/material-widgets/qtmaterialdrawer_internal.h
new file mode 100644
index 0000000..76d219d
--- /dev/null
+++ b/src/material-widgets/qtmaterialdrawer_internal.h
@@ -0,0 +1,76 @@
+#ifndef DRAWER_INTERNAL_H
+#define DRAWER_INTERNAL_H
+
+#include
+#include "lib/qtmaterialoverlaywidget.h"
+
+class QtMaterialDrawer;
+class QtMaterialDrawerWidget;
+
+class QtMaterialDrawerStateMachine : public QStateMachine
+{
+ Q_OBJECT
+
+ Q_PROPERTY(qreal opacity WRITE setOpacity READ opacity)
+
+public:
+ explicit QtMaterialDrawerStateMachine(QtMaterialDrawerWidget *drawer,
+ QtMaterialDrawer *parent);
+ ~QtMaterialDrawerStateMachine();
+
+ void setOpacity(qreal opacity);
+ inline qreal opacity() const;
+
+ bool isInClosedState() const;
+
+ void updatePropertyAssignments();
+
+signals:
+ void signalOpen();
+ void signalClose();
+
+private:
+ Q_DISABLE_COPY(QtMaterialDrawerStateMachine)
+
+ QtMaterialDrawerWidget *const m_drawer;
+ QtMaterialDrawer *const m_main;
+ QState *const m_openingState;
+ QState *const m_openedState;
+ QState *const m_closingState;
+ QState *const m_closedState;
+ qreal m_opacity;
+};
+
+inline qreal QtMaterialDrawerStateMachine::opacity() const
+{
+ return m_opacity;
+}
+
+class QtMaterialDrawerWidget : public QtMaterialOverlayWidget
+{
+ Q_OBJECT
+
+ Q_PROPERTY(int offset WRITE setOffset READ offset)
+
+public:
+ explicit QtMaterialDrawerWidget(QWidget *parent = 0);
+ ~QtMaterialDrawerWidget();
+
+ void setOffset(int offset);
+ inline int offset() const;
+
+protected:
+ void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE;
+
+ QRect overlayGeometry() const Q_DECL_OVERRIDE;
+
+private:
+ int m_offset;
+};
+
+inline int QtMaterialDrawerWidget::offset() const
+{
+ return m_offset;
+}
+
+#endif // DRAWER_INTERNAL_H
diff --git a/src/material-widgets/qtmaterialdrawer_p.h b/src/material-widgets/qtmaterialdrawer_p.h
new file mode 100644
index 0000000..cdd064d
--- /dev/null
+++ b/src/material-widgets/qtmaterialdrawer_p.h
@@ -0,0 +1,33 @@
+#ifndef DRAWER_P_H
+#define DRAWER_P_H
+
+#include
+
+class QtMaterialDrawer;
+class QtMaterialDrawerWidget;
+class QtMaterialDrawerStateMachine;
+
+class QtMaterialDrawerPrivate
+{
+ Q_DISABLE_COPY(QtMaterialDrawerPrivate)
+ Q_DECLARE_PUBLIC(QtMaterialDrawer)
+
+public:
+ QtMaterialDrawerPrivate(QtMaterialDrawer *q);
+ ~QtMaterialDrawerPrivate();
+
+ void init();
+ void setClosed(bool value = true);
+
+ QtMaterialDrawer *const q_ptr;
+ QtMaterialDrawerWidget *widget;
+ QtMaterialDrawerStateMachine *stateMachine;
+ QWidget *window;
+ int width;
+ bool clickToClose;
+ bool autoRaise;
+ bool closed;
+ bool overlay;
+};
+
+#endif // DRAWER_P_H
diff --git a/src/material-widgets/qtmaterialfab.cpp b/src/material-widgets/qtmaterialfab.cpp
new file mode 100644
index 0000000..3c3de8a
--- /dev/null
+++ b/src/material-widgets/qtmaterialfab.cpp
@@ -0,0 +1,321 @@
+#include "qtmaterialfab.h"
+#include "qtmaterialfab_p.h"
+#include
+#include
+#include
+#include
+#include "lib/qtmaterialrippleoverlay.h"
+
+/*!
+ * \class QtMaterialFloatingActionButtonPrivate
+ * \internal
+ */
+
+/*!
+ * \internal
+ */
+QtMaterialFloatingActionButtonPrivate::QtMaterialFloatingActionButtonPrivate(QtMaterialFloatingActionButton *q)
+ : QtMaterialRaisedButtonPrivate(q)
+{
+}
+
+/*!
+ * \internal
+ */
+QtMaterialFloatingActionButtonPrivate::~QtMaterialFloatingActionButtonPrivate()
+{
+}
+
+/*!
+ * \internal
+ */
+void QtMaterialFloatingActionButtonPrivate::init()
+{
+ Q_Q(QtMaterialFloatingActionButton);
+
+ corner = Qt::BottomRightCorner;
+ mini = false;
+ offsX = 34;
+ offsY = 36;
+
+ q->setRole(Material::Primary);
+ q->setFixedSize(DefaultDiameter, DefaultDiameter);
+ q->setGeometry(fabGeometry());
+
+ setupProperties();
+
+ if (q->parentWidget()) {
+ q->parentWidget()->installEventFilter(q);
+ }
+
+ q->setFixedRippleRadius(50);
+}
+
+/*!
+ * \internal
+ */
+QRect QtMaterialFloatingActionButtonPrivate::fabGeometry() const
+{
+ Q_Q(const QtMaterialFloatingActionButton);
+
+ QWidget *parent = q->parentWidget();
+ if (!parent) {
+ return QRect();
+ }
+
+ const int s = mini ? MiniDiameter : DefaultDiameter;
+
+ switch (corner)
+ {
+ case Qt::TopLeftCorner:
+ return QRect(offsX, offsY, s, s);
+ case Qt::TopRightCorner:
+ return QRect(parent->width()-(offsX+s), offsY, s, s);
+ case Qt::BottomLeftCorner:
+ return QRect(offsX, parent->height()-(offsY+s), s, s);
+ case Qt::BottomRightCorner:
+ default:
+ break;
+ }
+ return QRect(parent->width()-(offsX+s), parent->height()-(offsY+s), s, s);
+}
+
+/*!
+ * \internal
+ */
+void QtMaterialFloatingActionButtonPrivate::setupProperties()
+{
+ if (mini) {
+ effect->setColor(QColor(0, 0, 0, 80));
+ normalState->assignProperty(effect, "offset", QPointF(0, 3));
+ normalState->assignProperty(effect, "blurRadius", 13);
+ pressedState->assignProperty(effect, "offset", QPointF(0, 7));
+ pressedState->assignProperty(effect, "blurRadius", 20);
+ } else {
+ effect->setColor(QColor(0, 0, 0, 105));
+ normalState->assignProperty(effect, "offset", QPointF(0, 6));
+ normalState->assignProperty(effect, "blurRadius", 16);
+ pressedState->assignProperty(effect, "offset", QPointF(0, 11));
+ pressedState->assignProperty(effect, "blurRadius", 28);
+ }
+}
+
+/*!
+ * \class QtMaterialFloatingActionButton
+ */
+
+QtMaterialFloatingActionButton::QtMaterialFloatingActionButton(const QIcon &icon, QWidget *parent)
+ : QtMaterialRaisedButton(*new QtMaterialFloatingActionButtonPrivate(this), parent)
+{
+ d_func()->init();
+
+ setIcon(icon);
+}
+
+QtMaterialFloatingActionButton::~QtMaterialFloatingActionButton()
+{
+}
+
+/*!
+ * \reimp
+ */
+QSize QtMaterialFloatingActionButton::sizeHint() const
+{
+ Q_D(const QtMaterialFloatingActionButton);
+
+ if (d->mini) {
+ return QSize(QtMaterialFloatingActionButtonPrivate::MiniDiameter,
+ QtMaterialFloatingActionButtonPrivate::MiniDiameter);
+ } else {
+ return QSize(QtMaterialFloatingActionButtonPrivate::DefaultDiameter,
+ QtMaterialFloatingActionButtonPrivate::DefaultDiameter);
+ }
+}
+
+void QtMaterialFloatingActionButton::setMini(bool state)
+{
+ Q_D(QtMaterialFloatingActionButton);
+
+ if (d->mini == state) {
+ return;
+ }
+
+ d->mini = state;
+
+ setFixedSize(d->diameter(), d->diameter());
+ setFixedRippleRadius(state ? 30 : 50);
+
+ d->setupProperties();
+ updateClipPath();
+ setGeometry(d->fabGeometry());
+ update();
+}
+
+bool QtMaterialFloatingActionButton::isMini() const
+{
+ Q_D(const QtMaterialFloatingActionButton);
+
+ return d->mini;
+}
+
+void QtMaterialFloatingActionButton::setCorner(Qt::Corner corner)
+{
+ Q_D(QtMaterialFloatingActionButton);
+
+ if (d->corner == corner) {
+ return;
+ }
+
+ d->corner = corner;
+ setGeometry(d->fabGeometry());
+ update();
+}
+
+Qt::Corner QtMaterialFloatingActionButton::corner() const
+{
+ Q_D(const QtMaterialFloatingActionButton);
+
+ return d->corner;
+}
+
+void QtMaterialFloatingActionButton::setOffset(int x, int y)
+{
+ Q_D(QtMaterialFloatingActionButton);
+
+ d->offsX = x;
+ d->offsY = y;
+ setGeometry(d->fabGeometry());
+ update();
+}
+
+QSize QtMaterialFloatingActionButton::offset() const
+{
+ Q_D(const QtMaterialFloatingActionButton);
+
+ return QSize(d->offsX, d->offsY);
+}
+
+void QtMaterialFloatingActionButton::setXOffset(int x)
+{
+ Q_D(QtMaterialFloatingActionButton);
+
+ d->offsX = x;
+ setGeometry(d->fabGeometry());
+ update();
+}
+
+int QtMaterialFloatingActionButton::xOffset() const
+{
+ Q_D(const QtMaterialFloatingActionButton);
+
+ return d->offsX;
+}
+
+void QtMaterialFloatingActionButton::setYOffset(int y)
+{
+ Q_D(QtMaterialFloatingActionButton);
+
+ d->offsY = y;
+ setGeometry(d->fabGeometry());
+ update();
+}
+
+int QtMaterialFloatingActionButton::yOffset() const
+{
+ Q_D(const QtMaterialFloatingActionButton);
+
+ return d->offsY;
+}
+
+/*!
+ * \reimp
+ */
+bool QtMaterialFloatingActionButton::event(QEvent *event)
+{
+ Q_D(QtMaterialFloatingActionButton);
+
+ if (!parent()) {
+ return QtMaterialRaisedButton::event(event);
+ }
+ switch (event->type())
+ {
+ case QEvent::ParentChange:
+ {
+ parent()->installEventFilter(this);
+ setGeometry(d->fabGeometry());
+ break;
+ }
+ case QEvent::ParentAboutToChange:
+ {
+ parent()->removeEventFilter(this);
+ break;
+ }
+ default:
+ break;
+ }
+ return QtMaterialRaisedButton::event(event);
+}
+
+/*!
+ * \reimp
+ */
+bool QtMaterialFloatingActionButton::eventFilter(QObject *obj, QEvent *event)
+{
+ const QEvent::Type type = event->type();
+
+ if (QEvent::Move == type || QEvent::Resize == type)
+ {
+ Q_D(QtMaterialFloatingActionButton);
+ setGeometry(d->fabGeometry());
+ }
+
+ return QtMaterialRaisedButton::eventFilter(obj, event);
+}
+
+/*!
+ * \reimp
+ */
+void QtMaterialFloatingActionButton::paintEvent(QPaintEvent *event)
+{
+ Q_UNUSED(event)
+
+ Q_D(QtMaterialFloatingActionButton);
+
+ QRect square = QRect(0, 0, d->diameter(), d->diameter());
+ square.moveCenter(rect().center());
+
+ QPainter painter(this);
+ painter.setRenderHints(QPainter::Antialiasing);
+
+ QBrush brush;
+ brush.setStyle(Qt::SolidPattern);
+
+ if (isEnabled()) {
+ brush.setColor(backgroundColor());
+ } else {
+ brush.setColor(disabledBackgroundColor());
+ }
+
+ painter.setBrush(brush);
+ painter.setPen(Qt::NoPen);
+ painter.drawEllipse(square);
+
+ QRect iconGeometry(0, 0, d->iconSize(), d->iconSize());
+ iconGeometry.moveCenter(square.center());
+
+ QPixmap pixmap = icon().pixmap(QSize(d->iconSize(), d->iconSize()));
+ QPainter icon(&pixmap);
+ icon.setCompositionMode(QPainter::CompositionMode_SourceIn);
+ icon.fillRect(pixmap.rect(), isEnabled() ? foregroundColor()
+ : disabledForegroundColor());
+ painter.drawPixmap(iconGeometry, pixmap);
+}
+
+void QtMaterialFloatingActionButton::updateClipPath()
+{
+ Q_D(QtMaterialFloatingActionButton);
+
+ QPainterPath path;
+ path.addEllipse(0, 0, d->diameter(), d->diameter());
+ d->rippleOverlay->setClipPath(path);
+}
diff --git a/src/material-widgets/qtmaterialfab.h b/src/material-widgets/qtmaterialfab.h
new file mode 100644
index 0000000..78838b1
--- /dev/null
+++ b/src/material-widgets/qtmaterialfab.h
@@ -0,0 +1,46 @@
+#ifndef QTMATERIALFAB_H
+#define QTMATERIALFAB_H
+
+#include "qtmaterialraisedbutton.h"
+
+class QtMaterialFloatingActionButtonPrivate;
+
+class QtMaterialFloatingActionButton : public QtMaterialRaisedButton
+{
+ Q_OBJECT
+
+public:
+ explicit QtMaterialFloatingActionButton(const QIcon &icon, QWidget *parent = 0);
+ ~QtMaterialFloatingActionButton();
+
+ QSize sizeHint() const Q_DECL_OVERRIDE;
+
+ void setMini(bool state);
+ bool isMini() const;
+
+ void setCorner(Qt::Corner corner);
+ Qt::Corner corner() const;
+
+ void setOffset(int x, int y);
+ QSize offset() const;
+
+ void setXOffset(int x);
+ int xOffset() const;
+
+ void setYOffset(int y);
+ int yOffset() const;
+
+protected:
+ bool event(QEvent *event) Q_DECL_OVERRIDE;
+ bool eventFilter(QObject *obj, QEvent *event) Q_DECL_OVERRIDE;
+ void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE;
+
+ void updateClipPath() Q_DECL_OVERRIDE;
+
+private:
+ Q_DISABLE_COPY(QtMaterialFloatingActionButton)
+ Q_DECLARE_PRIVATE(QtMaterialFloatingActionButton)
+
+};
+
+#endif // QTMATERIALFAB_H
diff --git a/src/material-widgets/qtmaterialfab_p.h b/src/material-widgets/qtmaterialfab_p.h
new file mode 100644
index 0000000..fae2d3a
--- /dev/null
+++ b/src/material-widgets/qtmaterialfab_p.h
@@ -0,0 +1,50 @@
+#ifndef QTMATERIALFAB_P_H
+#define QTMATERIALFAB_P_H
+
+#include "qtmaterialraisedbutton_p.h"
+
+class QtMaterialFloatingActionButton;
+
+class QtMaterialFloatingActionButtonPrivate : public QtMaterialRaisedButtonPrivate
+{
+ Q_DISABLE_COPY(QtMaterialFloatingActionButtonPrivate)
+ Q_DECLARE_PUBLIC(QtMaterialFloatingActionButton)
+
+public:
+ enum {
+ DefaultDiameter = 56,
+ MiniDiameter = 40
+ };
+
+ enum {
+ DefaultIconSize = 24,
+ MiniIconSize = 18
+ };
+
+ QtMaterialFloatingActionButtonPrivate(QtMaterialFloatingActionButton *q);
+ ~QtMaterialFloatingActionButtonPrivate();
+
+ void init();
+ QRect fabGeometry() const;
+ void setupProperties();
+
+ inline int diameter() const;
+ inline int iconSize() const;
+
+ Qt::Corner corner;
+ bool mini;
+ int offsX;
+ int offsY;
+};
+
+inline int QtMaterialFloatingActionButtonPrivate::diameter() const
+{
+ return mini ? MiniDiameter : DefaultDiameter;
+}
+
+inline int QtMaterialFloatingActionButtonPrivate::iconSize() const
+{
+ return mini ? MiniIconSize : DefaultIconSize;
+}
+
+#endif // QTMATERIALFAB_P_H
diff --git a/src/material-widgets/qtmaterialflatbutton.cpp b/src/material-widgets/qtmaterialflatbutton.cpp
new file mode 100644
index 0000000..b9d84d7
--- /dev/null
+++ b/src/material-widgets/qtmaterialflatbutton.cpp
@@ -0,0 +1,741 @@
+#include "qtmaterialflatbutton.h"
+#include "qtmaterialflatbutton_p.h"
+#include
+#include
+#include
+#include
+#include
+#include
+#include "lib/qtmaterialrippleoverlay.h"
+#include "lib/qtmaterialripple.h"
+#include "lib/qtmaterialstyle.h"
+#include "qtmaterialflatbutton_internal.h"
+
+/*!
+ * \class QtMaterialFlatButtonPrivate
+ * \internal
+ */
+
+/*!
+ * \internal
+ */
+QtMaterialFlatButtonPrivate::QtMaterialFlatButtonPrivate(QtMaterialFlatButton *q)
+ : q_ptr(q)
+{
+}
+
+/*!
+ * \internal
+ */
+QtMaterialFlatButtonPrivate::~QtMaterialFlatButtonPrivate()
+{
+}
+
+/*!
+ * \internal
+ */
+void QtMaterialFlatButtonPrivate::init()
+{
+ Q_Q(QtMaterialFlatButton);
+
+ rippleOverlay = new QtMaterialRippleOverlay(q);
+ stateMachine = new QtMaterialFlatButtonStateMachine(q);
+ role = Material::Default;
+ rippleStyle = Material::PositionedRipple;
+ iconPlacement = Material::LeftIcon;
+ overlayStyle = Material::GrayOverlay;
+ bgMode = Qt::TransparentMode;
+ textAlignment = Qt::AlignHCenter;
+ fixedRippleRadius = 64;
+ cornerRadius = 3;
+ baseOpacity = 0.13;
+ fontSize = 10; // 10.5;
+ useThemeColors = true;
+ useFixedRippleRadius = false;
+ haloVisible = true;
+
+ q->setStyle(&QtMaterialStyle::instance());
+ q->setAttribute(Qt::WA_Hover);
+ q->setMouseTracking(true);
+
+ QFont font("Roboto", fontSize, QFont::Medium);
+ font.setCapitalization(QFont::AllUppercase);
+ q->setFont(font);
+
+ QPainterPath path;
+ path.addRoundedRect(q->rect(), cornerRadius, cornerRadius);
+ rippleOverlay->setClipPath(path);
+ rippleOverlay->setClipping(true);
+
+ stateMachine->setupProperties();
+ stateMachine->startAnimations();
+}
+
+/*!
+ * \class QtMaterialFlatButton
+ */
+
+QtMaterialFlatButton::QtMaterialFlatButton(QWidget *parent, Material::ButtonPreset preset)
+ : QPushButton(parent),
+ d_ptr(new QtMaterialFlatButtonPrivate(this))
+{
+ d_func()->init();
+
+ applyPreset(preset);
+}
+
+QtMaterialFlatButton::QtMaterialFlatButton(const QString &text, QWidget *parent, Material::ButtonPreset preset)
+ : QPushButton(text, parent),
+ d_ptr(new QtMaterialFlatButtonPrivate(this))
+{
+ d_func()->init();
+
+ applyPreset(preset);
+}
+
+QtMaterialFlatButton::QtMaterialFlatButton(const QString &text, Material::Role role, QWidget *parent, Material::ButtonPreset preset)
+ : QPushButton(text, parent),
+ d_ptr(new QtMaterialFlatButtonPrivate(this))
+{
+ d_func()->init();
+
+ applyPreset(preset);
+ setRole(role);
+}
+
+QtMaterialFlatButton::~QtMaterialFlatButton()
+{
+}
+
+void QtMaterialFlatButton::applyPreset(Material::ButtonPreset preset)
+{
+ switch (preset)
+ {
+ case Material::FlatPreset:
+ setOverlayStyle(Material::NoOverlay);
+ break;
+ case Material::CheckablePreset:
+ setOverlayStyle(Material::NoOverlay);
+ setCheckable(true);
+ setHaloVisible(false);
+ break;
+ default:
+ break;
+ }
+}
+
+void QtMaterialFlatButton::setUseThemeColors(bool value)
+{
+ Q_D(QtMaterialFlatButton);
+
+ if (d->useThemeColors == value) {
+ return;
+ }
+
+ d->useThemeColors = value;
+ d->stateMachine->setupProperties();
+}
+
+bool QtMaterialFlatButton::useThemeColors() const
+{
+ Q_D(const QtMaterialFlatButton);
+
+ return d->useThemeColors;
+}
+
+void QtMaterialFlatButton::setRole(Material::Role role)
+{
+ Q_D(QtMaterialFlatButton);
+
+ d->role = role;
+ d->stateMachine->setupProperties();
+}
+
+Material::Role QtMaterialFlatButton::role() const
+{
+ Q_D(const QtMaterialFlatButton);
+
+ return d->role;
+}
+
+void QtMaterialFlatButton::setForegroundColor(const QColor &color)
+{
+ Q_D(QtMaterialFlatButton);
+
+ d->foregroundColor = color;
+
+ MATERIAL_DISABLE_THEME_COLORS
+ update();
+}
+
+QColor QtMaterialFlatButton::foregroundColor() const
+{
+ Q_D(const QtMaterialFlatButton);
+
+ if (d->useThemeColors || !d->foregroundColor.isValid())
+ {
+ if (Qt::OpaqueMode == d->bgMode) {
+ return QtMaterialStyle::instance().themeColor("canvas");
+ }
+ switch (d->role)
+ {
+ case Material::Primary:
+ return QtMaterialStyle::instance().themeColor("primary1");
+ case Material::Secondary:
+ return QtMaterialStyle::instance().themeColor("accent1");
+ case Material::Default:
+ default:
+ return QtMaterialStyle::instance().themeColor("text");
+ }
+ }
+ return d->foregroundColor;
+}
+
+void QtMaterialFlatButton::setBackgroundColor(const QColor &color)
+{
+ Q_D(QtMaterialFlatButton);
+
+ d->backgroundColor = color;
+
+ MATERIAL_DISABLE_THEME_COLORS
+ update();
+}
+
+QColor QtMaterialFlatButton::backgroundColor() const
+{
+ Q_D(const QtMaterialFlatButton);
+
+ if (d->useThemeColors || !d->backgroundColor.isValid())
+ {
+ switch (d->role)
+ {
+ case Material::Primary:
+ return QtMaterialStyle::instance().themeColor("primary1");
+ case Material::Secondary:
+ return QtMaterialStyle::instance().themeColor("accent1");
+ case Material::Default:
+ default:
+ return QtMaterialStyle::instance().themeColor("text");
+ }
+ }
+ return d->backgroundColor;
+}
+
+void QtMaterialFlatButton::setOverlayColor(const QColor &color)
+{
+ Q_D(QtMaterialFlatButton);
+
+ d->overlayColor = color;
+
+ MATERIAL_DISABLE_THEME_COLORS
+
+ setOverlayStyle(Material::TintedOverlay);
+ update();
+}
+
+QColor QtMaterialFlatButton::overlayColor() const
+{
+ Q_D(const QtMaterialFlatButton);
+
+ if (d->useThemeColors || !d->overlayColor.isValid()) {
+ return foregroundColor();
+ }
+ return d->overlayColor;
+}
+
+void QtMaterialFlatButton::setDisabledForegroundColor(const QColor &color)
+{
+ Q_D(QtMaterialFlatButton);
+
+ d->disabledColor = color;
+
+ MATERIAL_DISABLE_THEME_COLORS
+ update();
+}
+
+QColor QtMaterialFlatButton::disabledForegroundColor() const
+{
+ Q_D(const QtMaterialFlatButton);
+
+ if (d->useThemeColors || !d->disabledColor.isValid()) {
+ return QtMaterialStyle::instance().themeColor("disabled");
+ } else {
+ return d->disabledColor;
+ }
+}
+
+void QtMaterialFlatButton::setDisabledBackgroundColor(const QColor &color)
+{
+ Q_D(QtMaterialFlatButton);
+
+ d->disabledBackgroundColor = color;
+
+ MATERIAL_DISABLE_THEME_COLORS
+ update();
+}
+
+QColor QtMaterialFlatButton::disabledBackgroundColor() const
+{
+ Q_D(const QtMaterialFlatButton);
+
+ if (d->useThemeColors || !d->disabledBackgroundColor.isValid()) {
+ return QtMaterialStyle::instance().themeColor("disabled3");
+ } else {
+ return d->disabledBackgroundColor;
+ }
+}
+
+void QtMaterialFlatButton::setFontSize(qreal size)
+{
+ Q_D(QtMaterialFlatButton);
+
+ d->fontSize = size;
+
+ QFont f(font());
+ f.setPointSizeF(size);
+ setFont(f);
+
+ update();
+}
+
+qreal QtMaterialFlatButton::fontSize() const
+{
+ Q_D(const QtMaterialFlatButton);
+
+ return d->fontSize;
+}
+
+void QtMaterialFlatButton::setHaloVisible(bool visible)
+{
+ Q_D(QtMaterialFlatButton);
+
+ d->haloVisible = visible;
+ update();
+}
+
+bool QtMaterialFlatButton::isHaloVisible() const
+{
+ Q_D(const QtMaterialFlatButton);
+
+ return d->haloVisible;
+}
+
+void QtMaterialFlatButton::setOverlayStyle(Material::OverlayStyle style)
+{
+ Q_D(QtMaterialFlatButton);
+
+ d->overlayStyle = style;
+ update();
+}
+
+Material::OverlayStyle QtMaterialFlatButton::overlayStyle() const
+{
+ Q_D(const QtMaterialFlatButton);
+
+ return d->overlayStyle;
+}
+
+void QtMaterialFlatButton::setRippleStyle(Material::RippleStyle style)
+{
+ Q_D(QtMaterialFlatButton);
+
+ d->rippleStyle = style;
+}
+
+Material::RippleStyle QtMaterialFlatButton::rippleStyle() const
+{
+ Q_D(const QtMaterialFlatButton);
+
+ return d->rippleStyle;
+}
+
+void QtMaterialFlatButton::setIconPlacement(Material::ButtonIconPlacement placement)
+{
+ Q_D(QtMaterialFlatButton);
+
+ d->iconPlacement = placement;
+ update();
+}
+
+Material::ButtonIconPlacement QtMaterialFlatButton::iconPlacement() const
+{
+ Q_D(const QtMaterialFlatButton);
+
+ return d->iconPlacement;
+}
+
+void QtMaterialFlatButton::setCornerRadius(qreal radius)
+{
+ Q_D(QtMaterialFlatButton);
+
+ d->cornerRadius = radius;
+ updateClipPath();
+ update();
+}
+
+qreal QtMaterialFlatButton::cornerRadius() const
+{
+ Q_D(const QtMaterialFlatButton);
+
+ return d->cornerRadius;
+}
+
+void QtMaterialFlatButton::setBackgroundMode(Qt::BGMode mode)
+{
+ Q_D(QtMaterialFlatButton);
+
+ d->bgMode = mode;
+ d->stateMachine->setupProperties();
+}
+
+Qt::BGMode QtMaterialFlatButton::backgroundMode() const
+{
+ Q_D(const QtMaterialFlatButton);
+
+ return d->bgMode;
+}
+
+void QtMaterialFlatButton::setBaseOpacity(qreal opacity)
+{
+ Q_D(QtMaterialFlatButton);
+
+ d->baseOpacity = opacity;
+ d->stateMachine->setupProperties();
+}
+
+qreal QtMaterialFlatButton::baseOpacity() const
+{
+ Q_D(const QtMaterialFlatButton);
+
+ return d->baseOpacity;
+}
+
+void QtMaterialFlatButton::setCheckable(bool value)
+{
+ Q_D(QtMaterialFlatButton);
+
+ d->stateMachine->updateCheckedStatus();
+
+ QPushButton::setCheckable(value);
+}
+
+void QtMaterialFlatButton::setHasFixedRippleRadius(bool value)
+{
+ Q_D(QtMaterialFlatButton);
+
+ d->useFixedRippleRadius = value;
+}
+
+bool QtMaterialFlatButton::hasFixedRippleRadius() const
+{
+ Q_D(const QtMaterialFlatButton);
+
+ return d->useFixedRippleRadius;
+}
+
+void QtMaterialFlatButton::setFixedRippleRadius(qreal radius)
+{
+ Q_D(QtMaterialFlatButton);
+
+ d->fixedRippleRadius = radius;
+ setHasFixedRippleRadius(true);
+}
+
+void QtMaterialFlatButton::setTextAlignment(Qt::Alignment alignment)
+{
+ Q_D(QtMaterialFlatButton);
+
+ d->textAlignment = alignment;
+}
+
+Qt::Alignment QtMaterialFlatButton::textAlignment() const
+{
+ Q_D(const QtMaterialFlatButton);
+
+ return d->textAlignment;
+}
+
+/*!
+ * \reimp
+ */
+QSize QtMaterialFlatButton::sizeHint() const
+{
+ ensurePolished();
+
+ QSize label(fontMetrics().size(Qt::TextSingleLine, text()));
+
+ int w = 20 + label.width();
+ int h = label.height();
+ if (!icon().isNull()) {
+ w += iconSize().width() + QtMaterialFlatButton::IconPadding;
+ h = qMax(h, iconSize().height());
+ }
+ return QSize(w, 20 + h);
+}
+
+QtMaterialFlatButton::QtMaterialFlatButton(QtMaterialFlatButtonPrivate &d,QWidget *parent, Material::ButtonPreset preset)
+ : QPushButton(parent),
+ d_ptr(&d)
+{
+ d_func()->init();
+
+ applyPreset(preset);
+}
+
+/*!
+ * \reimp
+ */
+void QtMaterialFlatButton::checkStateSet()
+{
+ Q_D(QtMaterialFlatButton);
+
+ d->stateMachine->updateCheckedStatus();
+
+ QPushButton::checkStateSet();
+}
+
+/*!
+ * \reimp
+ */
+void QtMaterialFlatButton::mousePressEvent(QMouseEvent *event)
+{
+ Q_D(QtMaterialFlatButton);
+
+ if (Material::NoRipple != d->rippleStyle)
+ {
+ QPoint pos;
+ qreal radiusEndValue;
+
+ if (Material::CenteredRipple == d->rippleStyle) {
+ pos = rect().center();
+ } else {
+ pos = event->pos();
+ }
+
+ if (d->useFixedRippleRadius) {
+ radiusEndValue = d->fixedRippleRadius;
+ } else {
+ radiusEndValue = static_cast(width())/2;
+ }
+
+ QtMaterialRipple *ripple = new QtMaterialRipple(pos);
+
+ ripple->setRadiusEndValue(radiusEndValue);
+ ripple->setOpacityStartValue(0.35);
+ ripple->setColor(foregroundColor());
+ ripple->radiusAnimation()->setDuration(600);
+ ripple->opacityAnimation()->setDuration(1300);
+
+ d->rippleOverlay->addRipple(ripple);
+ }
+
+ QPushButton::mousePressEvent(event);
+}
+
+/*!
+ * \reimp
+ */
+void QtMaterialFlatButton::mouseReleaseEvent(QMouseEvent *event)
+{
+ Q_D(QtMaterialFlatButton);
+
+ QPushButton::mouseReleaseEvent(event);
+
+ d->stateMachine->updateCheckedStatus();
+}
+
+void QtMaterialFlatButton::resizeEvent(QResizeEvent *event)
+{
+ QPushButton::resizeEvent(event);
+
+ updateClipPath();
+}
+
+/*!
+ * \reimp
+ */
+void QtMaterialFlatButton::paintEvent(QPaintEvent *event)
+{
+ Q_UNUSED(event)
+
+ Q_D(QtMaterialFlatButton);
+
+ QPainter painter(this);
+ painter.setRenderHint(QPainter::Antialiasing);
+
+ const qreal cr = d->cornerRadius;
+
+ if (cr > 0)
+ {
+ QPainterPath path;
+ path.addRoundedRect(rect(), cr, cr);
+
+ painter.setClipPath(path);
+ painter.setClipping(true);
+ }
+
+ paintBackground(&painter);
+ paintHalo(&painter);
+
+ painter.setOpacity(1);
+ painter.setClipping(false);
+
+ paintForeground(&painter);
+}
+
+/*!
+ * \internal
+ */
+void QtMaterialFlatButton::paintBackground(QPainter *painter)
+{
+ Q_D(QtMaterialFlatButton);
+
+ const qreal overlayOpacity = d->stateMachine->overlayOpacity();
+ const qreal checkedProgress = d->stateMachine->checkedOverlayProgress();
+
+ if (Qt::OpaqueMode == d->bgMode) {
+ QBrush brush;
+ brush.setStyle(Qt::SolidPattern);
+ if (isEnabled()) {
+ brush.setColor(backgroundColor());
+ } else {
+ brush.setColor(disabledBackgroundColor());
+ }
+ painter->setOpacity(1);
+ painter->setBrush(brush);
+ painter->setPen(Qt::NoPen);
+ painter->drawRect(rect());
+ }
+
+ QBrush brush;
+ brush.setStyle(Qt::SolidPattern);
+ painter->setPen(Qt::NoPen);
+
+ if (!isEnabled()) {
+ return;
+ }
+
+ if ((Material::NoOverlay != d->overlayStyle) && (overlayOpacity > 0)) {
+ if (Material::TintedOverlay == d->overlayStyle) {
+ brush.setColor(overlayColor());
+ } else {
+ brush.setColor(Qt::gray);
+ }
+ painter->setOpacity(overlayOpacity);
+ painter->setBrush(brush);
+ painter->drawRect(rect());
+ }
+
+ if (isCheckable() && checkedProgress > 0) {
+ const qreal q = Qt::TransparentMode == d->bgMode ? 0.45 : 0.7;
+ brush.setColor(foregroundColor());
+ painter->setOpacity(q*checkedProgress);
+ painter->setBrush(brush);
+ QRect r(rect());
+ r.setHeight(static_cast(r.height())*checkedProgress);
+ painter->drawRect(r);
+ }
+}
+
+/*!
+ * \internal
+ */
+void QtMaterialFlatButton::paintHalo(QPainter *painter)
+{
+ Q_D(QtMaterialFlatButton);
+
+ if (!d->haloVisible) {
+ return;
+ }
+
+ const qreal opacity = d->stateMachine->haloOpacity();
+ const qreal s = d->stateMachine->haloScaleFactor()*d->stateMachine->haloSize();
+ const qreal radius = static_cast(width())*s;
+
+ if (isEnabled() && opacity > 0) {
+ QBrush brush;
+ brush.setStyle(Qt::SolidPattern);
+ brush.setColor(foregroundColor());
+ painter->setOpacity(opacity);
+ painter->setBrush(brush);
+ painter->setPen(Qt::NoPen);
+ const QPointF center = rect().center();
+ painter->drawEllipse(center, radius, radius);
+ }
+}
+
+#define COLOR_INTERPOLATE(CH) (1-progress)*source.CH() + progress*dest.CH()
+
+/*!
+ * \internal
+ */
+void QtMaterialFlatButton::paintForeground(QPainter *painter)
+{
+ Q_D(QtMaterialFlatButton);
+
+ if (isEnabled()) {
+ painter->setPen(foregroundColor());
+ const qreal progress = d->stateMachine->checkedOverlayProgress();
+ if (isCheckable() && progress > 0) {
+ QColor source = foregroundColor();
+ QColor dest = Qt::TransparentMode == d->bgMode ? Qt::white
+ : backgroundColor();
+ if (qFuzzyCompare(1, progress)) {
+ painter->setPen(dest);
+ } else {
+ painter->setPen(QColor(COLOR_INTERPOLATE(red),
+ COLOR_INTERPOLATE(green),
+ COLOR_INTERPOLATE(blue),
+ COLOR_INTERPOLATE(alpha)));
+ }
+ }
+ } else {
+ painter->setPen(disabledForegroundColor());
+ }
+
+ if (icon().isNull()) {
+ if (Qt::AlignLeft == d->textAlignment) {
+ painter->drawText(rect().adjusted(12, 0, 0, 0), Qt::AlignLeft | Qt::AlignVCenter, text());
+ } else {
+ painter->drawText(rect(), Qt::AlignCenter, text());
+ }
+ return;
+ }
+
+ QSize textSize(fontMetrics().size(Qt::TextSingleLine, text()));
+ QSize base(size()-textSize);
+
+ const int iw = iconSize().width() + IconPadding;
+ QPoint pos(Qt::AlignLeft == d->textAlignment ? 12 : (base.width()-iw)/2, 0);
+
+ QRect textGeometry(pos + QPoint(0, base.height()/2), textSize);
+ QRect iconGeometry(pos + QPoint(0, (height()-iconSize().height())/2), iconSize());
+
+ if (Material::LeftIcon == d->iconPlacement) {
+ textGeometry.translate(iw, 0);
+ } else {
+ iconGeometry.translate(textSize.width() + IconPadding, 0);
+ }
+
+ painter->drawText(textGeometry, Qt::AlignCenter, text());
+
+ QPixmap pixmap = icon().pixmap(iconSize());
+ QPainter icon(&pixmap);
+ icon.setCompositionMode(QPainter::CompositionMode_SourceIn);
+ icon.fillRect(pixmap.rect(), painter->pen().color());
+ painter->drawPixmap(iconGeometry, pixmap);
+}
+
+/*!
+ * \internal
+ */
+void QtMaterialFlatButton::updateClipPath()
+{
+ Q_D(QtMaterialFlatButton);
+
+ const qreal radius = d->cornerRadius;
+
+ QPainterPath path;
+ path.addRoundedRect(rect(), radius, radius);
+ d->rippleOverlay->setClipPath(path);
+}
diff --git a/src/material-widgets/qtmaterialflatbutton.h b/src/material-widgets/qtmaterialflatbutton.h
new file mode 100644
index 0000000..a74ab6a
--- /dev/null
+++ b/src/material-widgets/qtmaterialflatbutton.h
@@ -0,0 +1,112 @@
+#ifndef QTMATERIALFLATBUTTON_H
+#define QTMATERIALFLATBUTTON_H
+
+#include
+#include
+#include "lib/qtmaterialtheme.h"
+
+class QtMaterialFlatButtonPrivate;
+
+class QtMaterialFlatButton : public QPushButton
+{
+ Q_OBJECT
+
+ Q_PROPERTY(QColor foregroundColor WRITE setForegroundColor READ foregroundColor)
+ Q_PROPERTY(QColor backgroundColor WRITE setBackgroundColor READ backgroundColor)
+ Q_PROPERTY(QColor overlayColor WRITE setOverlayColor READ overlayColor)
+ Q_PROPERTY(QColor disabledForegroundColor WRITE setDisabledForegroundColor READ disabledForegroundColor)
+ Q_PROPERTY(QColor disabledBackgroundColor WRITE setDisabledBackgroundColor READ disabledBackgroundColor)
+ Q_PROPERTY(qreal fontSize WRITE setFontSize READ fontSize)
+
+public:
+ explicit QtMaterialFlatButton(QWidget *parent = 0, Material::ButtonPreset preset = Material::FlatPreset);
+ explicit QtMaterialFlatButton(const QString &text, QWidget *parent = 0, Material::ButtonPreset preset = Material::FlatPreset);
+ QtMaterialFlatButton(const QString &text, Material::Role role, QWidget *parent = 0, Material::ButtonPreset preset = Material::FlatPreset);
+ ~QtMaterialFlatButton();
+
+ void applyPreset(Material::ButtonPreset preset);
+
+ void setUseThemeColors(bool value);
+ bool useThemeColors() const;
+
+ void setRole(Material::Role role);
+ Material::Role role() const;
+
+ void setForegroundColor(const QColor &color);
+ QColor foregroundColor() const;
+
+ void setBackgroundColor(const QColor &color);
+ QColor backgroundColor() const;
+
+ void setOverlayColor(const QColor &color);
+ QColor overlayColor() const;
+
+ void setDisabledForegroundColor(const QColor &color);
+ QColor disabledForegroundColor() const;
+
+ void setDisabledBackgroundColor(const QColor &color);
+ QColor disabledBackgroundColor() const;
+
+ void setFontSize(qreal size);
+ qreal fontSize() const;
+
+ void setHaloVisible(bool visible);
+ bool isHaloVisible() const;
+
+ void setOverlayStyle(Material::OverlayStyle style);
+ Material::OverlayStyle overlayStyle() const;
+
+ void setRippleStyle(Material::RippleStyle style);
+ Material::RippleStyle rippleStyle() const;
+
+ void setIconPlacement(Material::ButtonIconPlacement placement);
+ Material::ButtonIconPlacement iconPlacement() const;
+
+ void setCornerRadius(qreal radius);
+ qreal cornerRadius() const;
+
+ void setBackgroundMode(Qt::BGMode mode);
+ Qt::BGMode backgroundMode() const;
+
+ void setBaseOpacity(qreal opacity);
+ qreal baseOpacity() const;
+
+ void setCheckable(bool value);
+
+ void setHasFixedRippleRadius(bool value);
+ bool hasFixedRippleRadius() const;
+
+ void setFixedRippleRadius(qreal radius);
+
+ void setTextAlignment(Qt::Alignment alignment);
+ Qt::Alignment textAlignment() const;
+
+ QSize sizeHint() const Q_DECL_OVERRIDE;
+
+protected:
+ enum {
+ IconPadding = 12
+ };
+
+ QtMaterialFlatButton(QtMaterialFlatButtonPrivate &d, QWidget *parent = 0, Material::ButtonPreset preset = Material::FlatPreset);
+
+ void checkStateSet() Q_DECL_OVERRIDE;
+ void mousePressEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
+ void mouseReleaseEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
+ void resizeEvent(QResizeEvent *event) Q_DECL_OVERRIDE;
+ void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE;
+
+ virtual void paintBackground(QPainter *painter);
+ virtual void paintHalo(QPainter *painter);
+ virtual void paintForeground(QPainter *painter);
+
+ virtual void updateClipPath();
+
+ const QScopedPointer d_ptr;
+
+private:
+ Q_DISABLE_COPY(QtMaterialFlatButton)
+ Q_DECLARE_PRIVATE(QtMaterialFlatButton)
+};
+
+#endif // QTMATERIALFLATBUTTON_H
diff --git a/src/material-widgets/qtmaterialflatbutton_internal.cpp b/src/material-widgets/qtmaterialflatbutton_internal.cpp
new file mode 100644
index 0000000..0709a45
--- /dev/null
+++ b/src/material-widgets/qtmaterialflatbutton_internal.cpp
@@ -0,0 +1,232 @@
+#include "qtmaterialflatbutton_internal.h"
+#include
+#include
+#include
+#include
+#include "qtmaterialflatbutton.h"
+#include "lib/qtmaterialstatetransition.h"
+
+/*!
+ * \class QtMaterialFlatButtonStateMachine
+ * \internal
+ */
+
+QtMaterialFlatButtonStateMachine::QtMaterialFlatButtonStateMachine(QtMaterialFlatButton *parent)
+ : QStateMachine(parent),
+ m_button(parent),
+ m_topLevelState(new QState(QState::ParallelStates)),
+ m_configState(new QState(m_topLevelState)),
+ m_checkableState(new QState(m_topLevelState)),
+ m_checkedState(new QState(m_checkableState)),
+ m_uncheckedState(new QState(m_checkableState)),
+ m_neutralState(new QState(m_configState)),
+ m_neutralFocusedState(new QState(m_configState)),
+ m_hoveredState(new QState(m_configState)),
+ m_hoveredFocusedState(new QState(m_configState)),
+ m_pressedState(new QState(m_configState)),
+ m_haloAnimation(new QSequentialAnimationGroup(this)),
+ m_overlayOpacity(0),
+ m_checkedOverlayProgress(parent->isChecked() ? 1 : 0),
+ m_haloOpacity(0),
+ m_haloSize(0.8),
+ m_haloScaleFactor(1),
+ m_wasChecked(false)
+{
+ Q_ASSERT(parent);
+
+ parent->installEventFilter(this);
+
+ m_configState->setInitialState(m_neutralState);
+ addState(m_topLevelState);
+ setInitialState(m_topLevelState);
+
+ m_checkableState->setInitialState(parent->isChecked() ? m_checkedState
+ : m_uncheckedState);
+ QtMaterialStateTransition *transition;
+ QPropertyAnimation *animation;
+
+ transition = new QtMaterialStateTransition(FlatButtonCheckedTransition);
+ transition->setTargetState(m_checkedState);
+ m_uncheckedState->addTransition(transition);
+
+ animation = new QPropertyAnimation(this, "checkedOverlayProgress", this);
+ animation->setDuration(200);
+ transition->addAnimation(animation);
+
+ transition = new QtMaterialStateTransition(FlatButtonUncheckedTransition);
+ transition->setTargetState(m_uncheckedState);
+ m_checkedState->addTransition(transition);
+
+ animation = new QPropertyAnimation(this, "checkedOverlayProgress", this);
+ animation->setDuration(200);
+ transition->addAnimation(animation);
+
+ addTransition(m_button, QEvent::FocusIn, m_neutralState, m_neutralFocusedState);
+ addTransition(m_button, QEvent::FocusOut, m_neutralFocusedState, m_neutralState);
+ addTransition(m_button, QEvent::Enter, m_neutralState, m_hoveredState);
+ addTransition(m_button, QEvent::Leave, m_hoveredState, m_neutralState);
+ addTransition(m_button, QEvent::Enter, m_neutralFocusedState, m_hoveredFocusedState);
+ addTransition(m_button, QEvent::Leave, m_hoveredFocusedState, m_neutralFocusedState);
+ addTransition(m_button, QEvent::FocusIn, m_hoveredState, m_hoveredFocusedState);
+ addTransition(m_button, QEvent::FocusOut, m_hoveredFocusedState, m_hoveredState);
+
+ transition = new QtMaterialStateTransition(FlatButtonPressedTransition);
+ transition->setTargetState(m_pressedState);
+ m_hoveredState->addTransition(transition);
+
+ addTransition(m_button, QEvent::Leave, m_pressedState, m_neutralFocusedState);
+ addTransition(m_button, QEvent::FocusOut, m_pressedState, m_hoveredState);
+
+ m_neutralState->assignProperty(this, "haloSize", 0);
+ m_neutralFocusedState->assignProperty(this, "haloSize", 0.7);
+ m_hoveredState->assignProperty(this, "haloSize", 0);
+ m_pressedState->assignProperty(this, "haloSize", 4);
+ m_hoveredFocusedState->assignProperty(this, "haloSize", 0.7);
+
+ QPropertyAnimation *grow = new QPropertyAnimation(this);
+ QPropertyAnimation *shrink = new QPropertyAnimation(this);
+
+ grow->setTargetObject(this);
+ grow->setPropertyName("haloScaleFactor");
+ grow->setStartValue(0.56);
+ grow->setEndValue(0.63);
+ grow->setEasingCurve(QEasingCurve::InOutSine);
+ grow->setDuration(840);
+
+ shrink->setTargetObject(this);
+ shrink->setPropertyName("haloScaleFactor");
+ shrink->setStartValue(0.63);
+ shrink->setEndValue(0.56);
+ shrink->setEasingCurve(QEasingCurve::InOutSine);
+ shrink->setDuration(840);
+
+ m_haloAnimation->addAnimation(grow);
+ m_haloAnimation->addAnimation(shrink);
+ m_haloAnimation->setLoopCount(-1);
+}
+
+QtMaterialFlatButtonStateMachine::~QtMaterialFlatButtonStateMachine()
+{
+}
+
+void QtMaterialFlatButtonStateMachine::setOverlayOpacity(qreal opacity)
+{
+ m_overlayOpacity = opacity;
+ m_button->update();
+}
+
+void QtMaterialFlatButtonStateMachine::setCheckedOverlayProgress(qreal progress)
+{
+ m_checkedOverlayProgress = progress;
+ m_button->update();
+}
+
+void QtMaterialFlatButtonStateMachine::setHaloOpacity(qreal opacity)
+{
+ m_haloOpacity = opacity;
+ m_button->update();
+}
+
+void QtMaterialFlatButtonStateMachine::setHaloSize(qreal size)
+{
+ m_haloSize = size;
+ m_button->update();
+}
+
+void QtMaterialFlatButtonStateMachine::setHaloScaleFactor(qreal factor)
+{
+ m_haloScaleFactor = factor;
+ m_button->update();
+}
+
+void QtMaterialFlatButtonStateMachine::startAnimations()
+{
+ m_haloAnimation->start();
+ start();
+}
+
+void QtMaterialFlatButtonStateMachine::setupProperties()
+{
+ QColor overlayColor;
+
+ if (Qt::TransparentMode == m_button->backgroundMode()) {
+ overlayColor = m_button->backgroundColor();
+ } else {
+ overlayColor = m_button->foregroundColor();
+ }
+
+ const qreal baseOpacity = m_button->baseOpacity();
+
+ m_neutralState->assignProperty(this, "overlayOpacity", 0);
+ m_neutralState->assignProperty(this, "haloOpacity", 0);
+ m_neutralFocusedState->assignProperty(this, "overlayOpacity", 0);
+ m_neutralFocusedState->assignProperty(this, "haloOpacity", baseOpacity);
+ m_hoveredState->assignProperty(this, "overlayOpacity", baseOpacity);
+ m_hoveredState->assignProperty(this, "haloOpacity", 0);
+ m_hoveredFocusedState->assignProperty(this, "overlayOpacity", baseOpacity);
+ m_hoveredFocusedState->assignProperty(this, "haloOpacity", baseOpacity);
+ m_pressedState->assignProperty(this, "overlayOpacity", baseOpacity);
+ m_pressedState->assignProperty(this, "haloOpacity", 0);
+ m_checkedState->assignProperty(this, "checkedOverlayProgress", 1);
+ m_uncheckedState->assignProperty(this, "checkedOverlayProgress", 0);
+
+ m_button->update();
+}
+
+void QtMaterialFlatButtonStateMachine::updateCheckedStatus()
+{
+ const bool checked = m_button->isChecked();
+ if (m_wasChecked != checked) {
+ m_wasChecked = checked;
+ if (checked) {
+ postEvent(new QtMaterialStateTransitionEvent(FlatButtonCheckedTransition));
+ } else {
+ postEvent(new QtMaterialStateTransitionEvent(FlatButtonUncheckedTransition));
+ }
+ }
+}
+
+bool QtMaterialFlatButtonStateMachine::eventFilter(QObject *watched,
+ QEvent *event)
+{
+ if (QEvent::FocusIn == event->type()) {
+ QFocusEvent *focusEvent = static_cast(event);
+ if (focusEvent && Qt::MouseFocusReason == focusEvent->reason()) {
+ postEvent(new QtMaterialStateTransitionEvent(FlatButtonPressedTransition));
+ return true;
+ }
+ }
+ return QStateMachine::eventFilter(watched, event);
+}
+
+void QtMaterialFlatButtonStateMachine::addTransition(QObject *object,
+ QEvent::Type eventType,
+ QState *fromState,
+ QState *toState)
+{
+ addTransition(new QEventTransition(object, eventType), fromState, toState);
+}
+
+void QtMaterialFlatButtonStateMachine::addTransition(QAbstractTransition *transition,
+ QState *fromState,
+ QState *toState)
+{
+ transition->setTargetState(toState);
+
+ QPropertyAnimation *animation;
+
+ animation = new QPropertyAnimation(this, "overlayOpacity", this);
+ animation->setDuration(150);
+ transition->addAnimation(animation);
+
+ animation = new QPropertyAnimation(this, "haloOpacity", this);
+ animation->setDuration(170);
+ transition->addAnimation(animation);
+
+ animation = new QPropertyAnimation(this, "haloSize", this);
+ animation->setDuration(350);
+ animation->setEasingCurve(QEasingCurve::OutCubic);
+ transition->addAnimation(animation);
+
+ fromState->addTransition(transition);
+}
diff --git a/src/material-widgets/qtmaterialflatbutton_internal.h b/src/material-widgets/qtmaterialflatbutton_internal.h
new file mode 100644
index 0000000..ff93972
--- /dev/null
+++ b/src/material-widgets/qtmaterialflatbutton_internal.h
@@ -0,0 +1,103 @@
+#ifndef QTMATERIALFLATBUTTON_INTERNAL_H
+#define QTMATERIALFLATBUTTON_INTERNAL_H
+
+#include
+#include
+
+class QtMaterialFlatButton;
+class QSequentialAnimationGroup;
+
+class QtMaterialFlatButtonStateMachine : public QStateMachine
+{
+ Q_OBJECT
+
+ Q_PROPERTY(qreal overlayOpacity WRITE setOverlayOpacity READ overlayOpacity)
+ Q_PROPERTY(qreal checkedOverlayProgress WRITE setCheckedOverlayProgress READ checkedOverlayProgress)
+ Q_PROPERTY(qreal haloOpacity WRITE setHaloOpacity READ haloOpacity)
+ Q_PROPERTY(qreal haloSize WRITE setHaloSize READ haloSize)
+ Q_PROPERTY(qreal haloScaleFactor WRITE setHaloScaleFactor READ haloScaleFactor)
+
+public:
+ explicit QtMaterialFlatButtonStateMachine(QtMaterialFlatButton *parent);
+ ~QtMaterialFlatButtonStateMachine();
+
+ void setOverlayOpacity(qreal opacity);
+ inline qreal overlayOpacity() const;
+
+ void setCheckedOverlayProgress(qreal progress);
+ inline qreal checkedOverlayProgress() const;
+
+ void setHaloOpacity(qreal opacity);
+ inline qreal haloOpacity() const;
+
+ void setHaloSize(qreal size);
+ inline qreal haloSize() const;
+
+ void setHaloScaleFactor(qreal factor);
+ inline qreal haloScaleFactor() const;
+
+ void startAnimations();
+ void setupProperties();
+ void updateCheckedStatus();
+
+signals:
+ void buttonPressed();
+ void buttonChecked();
+ void buttonUnchecked();
+
+protected:
+ bool eventFilter(QObject *watched, QEvent *event) Q_DECL_OVERRIDE;
+
+private:
+ Q_DISABLE_COPY(QtMaterialFlatButtonStateMachine)
+
+ void addTransition(QObject *object, QEvent::Type eventType, QState *fromState, QState *toState);
+ void addTransition(QAbstractTransition *transition, QState *fromState, QState *toState);
+
+ QtMaterialFlatButton *const m_button;
+ QState *const m_topLevelState;
+ QState *const m_configState;
+ QState *const m_checkableState;
+ QState *const m_checkedState;
+ QState *const m_uncheckedState;
+ QState *const m_neutralState;
+ QState *const m_neutralFocusedState;
+ QState *const m_hoveredState;
+ QState *const m_hoveredFocusedState;
+ QState *const m_pressedState;
+ QSequentialAnimationGroup
+ *const m_haloAnimation;
+ qreal m_overlayOpacity;
+ qreal m_checkedOverlayProgress;
+ qreal m_haloOpacity;
+ qreal m_haloSize;
+ qreal m_haloScaleFactor;
+ bool m_wasChecked;
+};
+
+inline qreal QtMaterialFlatButtonStateMachine::overlayOpacity() const
+{
+ return m_overlayOpacity;
+}
+
+inline qreal QtMaterialFlatButtonStateMachine::checkedOverlayProgress() const
+{
+ return m_checkedOverlayProgress;
+}
+
+inline qreal QtMaterialFlatButtonStateMachine::haloOpacity() const
+{
+ return m_haloOpacity;
+}
+
+inline qreal QtMaterialFlatButtonStateMachine::haloSize() const
+{
+ return m_haloSize;
+}
+
+inline qreal QtMaterialFlatButtonStateMachine::haloScaleFactor() const
+{
+ return m_haloScaleFactor;
+}
+
+#endif // QTMATERIALFLATBUTTON_INTERNAL_H
diff --git a/src/material-widgets/qtmaterialflatbutton_p.h b/src/material-widgets/qtmaterialflatbutton_p.h
new file mode 100644
index 0000000..1ab3d22
--- /dev/null
+++ b/src/material-widgets/qtmaterialflatbutton_p.h
@@ -0,0 +1,46 @@
+#ifndef QTMATERIALFLATBUTTON_P_H
+#define QTMATERIALFLATBUTTON_P_H
+
+#include
+#include
+#include "lib/qtmaterialtheme.h"
+
+class QtMaterialFlatButton;
+class QtMaterialRippleOverlay;
+class QtMaterialFlatButtonStateMachine;
+
+class QtMaterialFlatButtonPrivate
+{
+ Q_DISABLE_COPY(QtMaterialFlatButtonPrivate)
+ Q_DECLARE_PUBLIC(QtMaterialFlatButton)
+
+public:
+ QtMaterialFlatButtonPrivate(QtMaterialFlatButton *q);
+ virtual ~QtMaterialFlatButtonPrivate();
+
+ void init();
+
+ QtMaterialFlatButton *const q_ptr;
+ QtMaterialRippleOverlay *rippleOverlay;
+ QtMaterialFlatButtonStateMachine *stateMachine;
+ Material::Role role;
+ Material::RippleStyle rippleStyle;
+ Material::ButtonIconPlacement iconPlacement;
+ Material::OverlayStyle overlayStyle;
+ Qt::BGMode bgMode;
+ Qt::Alignment textAlignment;
+ QColor backgroundColor;
+ QColor foregroundColor;
+ QColor overlayColor;
+ QColor disabledColor;
+ QColor disabledBackgroundColor;
+ qreal fixedRippleRadius;
+ qreal cornerRadius;
+ qreal baseOpacity;
+ qreal fontSize;
+ bool useThemeColors;
+ bool useFixedRippleRadius;
+ bool haloVisible;
+};
+
+#endif // QTMATERIALFLATBUTTON_P_H
diff --git a/src/material-widgets/qtmaterialiconbutton.cpp b/src/material-widgets/qtmaterialiconbutton.cpp
new file mode 100644
index 0000000..525d6b2
--- /dev/null
+++ b/src/material-widgets/qtmaterialiconbutton.cpp
@@ -0,0 +1,212 @@
+#include "qtmaterialiconbutton.h"
+#include "qtmaterialiconbutton_p.h"
+#include
+#include
+#include "lib/qtmaterialstyle.h"
+#include "lib/qtmaterialrippleoverlay.h"
+
+/*!
+ * \class QtMaterialIconButtonPrivate
+ * \internal
+ */
+
+QtMaterialIconButtonPrivate::QtMaterialIconButtonPrivate(QtMaterialIconButton *q)
+ : q_ptr(q)
+{
+}
+
+QtMaterialIconButtonPrivate::~QtMaterialIconButtonPrivate()
+{
+}
+
+void QtMaterialIconButtonPrivate::init()
+{
+ Q_Q(QtMaterialIconButton);
+
+ rippleOverlay = new QtMaterialRippleOverlay(q->parentWidget());
+ useThemeColors = true;
+
+ rippleOverlay->installEventFilter(q);
+
+ q->setStyle(&QtMaterialStyle::instance());
+
+ QSizePolicy policy;
+ policy.setWidthForHeight(true);
+ q->setSizePolicy(policy);
+}
+
+void QtMaterialIconButtonPrivate::updateRipple()
+{
+ Q_Q(QtMaterialIconButton);
+
+ QRect r(q->rect());
+ r.setSize(QSize(q->width()*2, q->height()*2));
+ r.moveCenter(q->geometry().center());
+ rippleOverlay->setGeometry(r);
+}
+
+/*!
+ * \class QtMaterialIconButton
+ */
+
+QtMaterialIconButton::QtMaterialIconButton(const QIcon &icon, QWidget *parent)
+ : QAbstractButton(parent),
+ d_ptr(new QtMaterialIconButtonPrivate(this))
+{
+ d_func()->init();
+
+ setIcon(icon);
+}
+
+QtMaterialIconButton::~QtMaterialIconButton()
+{
+}
+
+/*!
+ * \reimp
+ */
+QSize QtMaterialIconButton::sizeHint() const
+{
+ return iconSize();
+}
+
+void QtMaterialIconButton::setUseThemeColors(bool value)
+{
+ Q_D(QtMaterialIconButton);
+
+ if (d->useThemeColors == value) {
+ return;
+ }
+
+ d->useThemeColors = value;
+ update();
+}
+
+bool QtMaterialIconButton::useThemeColors() const
+{
+ Q_D(const QtMaterialIconButton);
+
+ return d->useThemeColors;
+}
+
+void QtMaterialIconButton::setColor(const QColor &color)
+{
+ Q_D(QtMaterialIconButton);
+
+ d->color = color;
+
+ MATERIAL_DISABLE_THEME_COLORS
+ update();
+}
+
+QColor QtMaterialIconButton::color() const
+{
+ Q_D(const QtMaterialIconButton);
+
+ if (d->useThemeColors || !d->color.isValid()) {
+ return QtMaterialStyle::instance().themeColor("text");
+ }
+ return d->color;
+}
+
+void QtMaterialIconButton::setDisabledColor(const QColor &color)
+{
+ Q_D(QtMaterialIconButton);
+
+ d->disabledColor = color;
+
+ MATERIAL_DISABLE_THEME_COLORS
+ update();
+}
+
+QColor QtMaterialIconButton::disabledColor() const
+{
+ Q_D(const QtMaterialIconButton);
+
+ if (d->useThemeColors || !d->disabledColor.isValid()) {
+ return QtMaterialStyle::instance().themeColor("disabled");
+ }
+ return d->disabledColor;
+}
+
+QtMaterialIconButton::QtMaterialIconButton(QtMaterialIconButtonPrivate &d, QWidget *parent)
+ : QAbstractButton(parent),
+ d_ptr(&d)
+{
+ d_func()->init();
+}
+
+/*!
+ * \reimp
+ */
+bool QtMaterialIconButton::event(QEvent *event)
+{
+ Q_D(QtMaterialIconButton);
+
+ switch (event->type())
+ {
+ case QEvent::Move:
+ case QEvent::Resize:
+ d->updateRipple();
+ break;
+ case QEvent::ParentChange: {
+ QWidget *widget;
+ if ((widget = parentWidget())) {
+ d->rippleOverlay->setParent(widget);
+ }
+ break;
+ }
+ default:
+ break;
+ }
+ return QAbstractButton::event(event);
+}
+
+/*!
+ * \reimp
+ */
+bool QtMaterialIconButton::eventFilter(QObject *obj, QEvent *event)
+{
+ if (QEvent::Resize == event->type())
+ {
+ Q_D(QtMaterialIconButton);
+
+ d->updateRipple();
+ }
+ return QAbstractButton::eventFilter(obj, event);
+}
+
+/*!
+ * \reimp
+ */
+void QtMaterialIconButton::mousePressEvent(QMouseEvent *event)
+{
+ Q_D(QtMaterialIconButton);
+
+ d->rippleOverlay->addRipple(QPoint(d->rippleOverlay->width(),
+ d->rippleOverlay->height())/2,
+ iconSize().width());
+ emit clicked();
+
+ QAbstractButton::mousePressEvent(event);
+}
+
+/*!
+ * \reimp
+ */
+void QtMaterialIconButton::paintEvent(QPaintEvent *event)
+{
+ Q_UNUSED(event)
+
+ QPainter painter(this);
+
+ QPixmap pixmap = icon().pixmap(iconSize());
+ QPainter icon(&pixmap);
+ icon.setCompositionMode(QPainter::CompositionMode_SourceIn);
+ icon.fillRect(pixmap.rect(), isEnabled() ? color() : disabledColor());
+
+ QRect r(rect());
+ const qreal w = pixmap.width();
+ const qreal h = pixmap.height();
+ painter.drawPixmap(QRect((r.width()-w)/2, (r.height()-h)/2, w, h), pixmap);
+}
diff --git a/src/material-widgets/qtmaterialiconbutton.h b/src/material-widgets/qtmaterialiconbutton.h
new file mode 100644
index 0000000..5c2afc4
--- /dev/null
+++ b/src/material-widgets/qtmaterialiconbutton.h
@@ -0,0 +1,42 @@
+#ifndef QTMATERIALICONBUTTON_H
+#define QTMATERIALICONBUTTON_H
+
+#include
+
+class QtMaterialIconButtonPrivate;
+
+class QtMaterialIconButton : public QAbstractButton
+{
+ Q_OBJECT
+
+public:
+ explicit QtMaterialIconButton(const QIcon &icon, QWidget *parent = 0);
+ ~QtMaterialIconButton();
+
+ QSize sizeHint() const Q_DECL_OVERRIDE;
+
+ void setUseThemeColors(bool value);
+ bool useThemeColors() const;
+
+ void setColor(const QColor &color);
+ QColor color() const;
+
+ void setDisabledColor(const QColor &color);
+ QColor disabledColor() const;
+
+protected:
+ QtMaterialIconButton(QtMaterialIconButtonPrivate &d, QWidget *parent = 0);
+
+ bool event(QEvent *event) Q_DECL_OVERRIDE;
+ bool eventFilter(QObject *obj, QEvent *event) Q_DECL_OVERRIDE;
+ void mousePressEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
+ void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE;
+
+ const QScopedPointer d_ptr;
+
+private:
+ Q_DISABLE_COPY(QtMaterialIconButton)
+ Q_DECLARE_PRIVATE(QtMaterialIconButton)
+};
+
+#endif // QTMATERIALICONBUTTON_H
diff --git a/src/material-widgets/qtmaterialiconbutton_p.h b/src/material-widgets/qtmaterialiconbutton_p.h
new file mode 100644
index 0000000..a532abc
--- /dev/null
+++ b/src/material-widgets/qtmaterialiconbutton_p.h
@@ -0,0 +1,29 @@
+#ifndef QTMATERIALICONBUTTON_P_H
+#define QTMATERIALICONBUTTON_P_H
+
+#include
+
+class QtMaterialIconButton;
+class QtMaterialRippleOverlay;
+class QColor;
+
+class QtMaterialIconButtonPrivate
+{
+ Q_DISABLE_COPY(QtMaterialIconButtonPrivate)
+ Q_DECLARE_PUBLIC(QtMaterialIconButton)
+
+public:
+ QtMaterialIconButtonPrivate(QtMaterialIconButton *q);
+ virtual ~QtMaterialIconButtonPrivate();
+
+ void init();
+ void updateRipple();
+
+ QtMaterialIconButton *const q_ptr;
+ QtMaterialRippleOverlay *rippleOverlay;
+ QColor color;
+ QColor disabledColor;
+ bool useThemeColors;
+};
+
+#endif // QTMATERIALICONBUTTON_P_H
diff --git a/src/material-widgets/qtmateriallist.cpp b/src/material-widgets/qtmateriallist.cpp
new file mode 100644
index 0000000..e6b1aee
--- /dev/null
+++ b/src/material-widgets/qtmateriallist.cpp
@@ -0,0 +1,2 @@
+#include "qtmateriallist.h"
+#include "qtmateriallist_p.h"
diff --git a/src/material-widgets/qtmateriallist.h b/src/material-widgets/qtmateriallist.h
new file mode 100644
index 0000000..7ace66a
--- /dev/null
+++ b/src/material-widgets/qtmateriallist.h
@@ -0,0 +1,4 @@
+#ifndef QTMATERIALLIST_H
+#define QTMATERIALLIST_H
+
+#endif // QTMATERIALLIST_H
diff --git a/src/material-widgets/qtmateriallist_p.h b/src/material-widgets/qtmateriallist_p.h
new file mode 100644
index 0000000..c92b2d6
--- /dev/null
+++ b/src/material-widgets/qtmateriallist_p.h
@@ -0,0 +1,4 @@
+#ifndef QTMATERIALLIST_P_H
+#define QTMATERIALLIST_P_H
+
+#endif // QTMATERIALLIST_P_H
diff --git a/src/material-widgets/qtmateriallistitem.cpp b/src/material-widgets/qtmateriallistitem.cpp
new file mode 100644
index 0000000..67a7cd8
--- /dev/null
+++ b/src/material-widgets/qtmateriallistitem.cpp
@@ -0,0 +1,2 @@
+#include "qtmateriallistitem.h"
+#include "qtmateriallistitem_p.h"
diff --git a/src/material-widgets/qtmateriallistitem.h b/src/material-widgets/qtmateriallistitem.h
new file mode 100644
index 0000000..9abc65b
--- /dev/null
+++ b/src/material-widgets/qtmateriallistitem.h
@@ -0,0 +1,4 @@
+#ifndef QTMATERIALLISTITEM_H
+#define QTMATERIALLISTITEM_H
+
+#endif // QTMATERIALLISTITEM_H
diff --git a/src/material-widgets/qtmateriallistitem_p.h b/src/material-widgets/qtmateriallistitem_p.h
new file mode 100644
index 0000000..fb7ebd4
--- /dev/null
+++ b/src/material-widgets/qtmateriallistitem_p.h
@@ -0,0 +1,4 @@
+#ifndef QTMATERIALLISTITEM_P_H
+#define QTMATERIALLISTITEM_P_H
+
+#endif // QTMATERIALLISTITEM_P_H
diff --git a/src/material-widgets/qtmaterialmenu.cpp b/src/material-widgets/qtmaterialmenu.cpp
new file mode 100644
index 0000000..5808a99
--- /dev/null
+++ b/src/material-widgets/qtmaterialmenu.cpp
@@ -0,0 +1,11 @@
+#include "qtmaterialmenu.h"
+#include "qtmaterialmenu_p.h"
+
+QtMaterialMenu::QtMaterialMenu(QWidget *parent)
+ : QWidget(parent)
+{
+}
+
+QtMaterialMenu::~QtMaterialMenu()
+{
+}
diff --git a/src/material-widgets/qtmaterialmenu.h b/src/material-widgets/qtmaterialmenu.h
new file mode 100644
index 0000000..beb01b5
--- /dev/null
+++ b/src/material-widgets/qtmaterialmenu.h
@@ -0,0 +1,15 @@
+#ifndef QTMATERIALMENU_H
+#define QTMATERIALMENU_H
+
+#include
+
+class QtMaterialMenu : public QWidget
+{
+ Q_OBJECT
+
+public:
+ explicit QtMaterialMenu(QWidget *parent = 0);
+ ~QtMaterialMenu();
+};
+
+#endif // QTMATERIALMENU_H
diff --git a/src/material-widgets/qtmaterialmenu_internal.cpp b/src/material-widgets/qtmaterialmenu_internal.cpp
new file mode 100644
index 0000000..e69de29
diff --git a/src/material-widgets/qtmaterialmenu_internal.h b/src/material-widgets/qtmaterialmenu_internal.h
new file mode 100644
index 0000000..fb79235
--- /dev/null
+++ b/src/material-widgets/qtmaterialmenu_internal.h
@@ -0,0 +1,4 @@
+#ifndef QTMATERIALMENU_INTERNAL_H
+#define QTMATERIALMENU_INTERNAL_H
+
+#endif // QTMATERIALMENU_INTERNAL_H
diff --git a/src/material-widgets/qtmaterialmenu_p.h b/src/material-widgets/qtmaterialmenu_p.h
new file mode 100644
index 0000000..1328bdc
--- /dev/null
+++ b/src/material-widgets/qtmaterialmenu_p.h
@@ -0,0 +1,4 @@
+#ifndef QTMATERIALMENU_P_H
+#define QTMATERIALMENU_P_H
+
+#endif // QTMATERIALMENU_P_H
diff --git a/src/material-widgets/qtmaterialpaper.cpp b/src/material-widgets/qtmaterialpaper.cpp
new file mode 100644
index 0000000..ad7dfa0
--- /dev/null
+++ b/src/material-widgets/qtmaterialpaper.cpp
@@ -0,0 +1,2 @@
+#include "qtmaterialpaper.h"
+#include "qtmaterialpaper_p.h"
diff --git a/src/material-widgets/qtmaterialpaper.h b/src/material-widgets/qtmaterialpaper.h
new file mode 100644
index 0000000..f305836
--- /dev/null
+++ b/src/material-widgets/qtmaterialpaper.h
@@ -0,0 +1,4 @@
+#ifndef QTMATERIALPAPER_H
+#define QTMATERIALPAPER_H
+
+#endif // QTMATERIALPAPER_H
diff --git a/src/material-widgets/qtmaterialpaper_p.h b/src/material-widgets/qtmaterialpaper_p.h
new file mode 100644
index 0000000..65972a6
--- /dev/null
+++ b/src/material-widgets/qtmaterialpaper_p.h
@@ -0,0 +1,4 @@
+#ifndef QTMATERIALPAPER_P_H
+#define QTMATERIALPAPER_P_H
+
+#endif // QTMATERIALPAPER_P_H
diff --git a/src/material-widgets/qtmaterialprogress.cpp b/src/material-widgets/qtmaterialprogress.cpp
new file mode 100644
index 0000000..da8c40c
--- /dev/null
+++ b/src/material-widgets/qtmaterialprogress.cpp
@@ -0,0 +1,172 @@
+#include "qtmaterialprogress.h"
+#include "qtmaterialprogress_p.h"
+#include
+#include
+#include "qtmaterialprogress_internal.h"
+#include "lib/qtmaterialstyle.h"
+
+/*!
+ * \class QtMaterialProgressPrivate
+ * \internal
+ */
+
+QtMaterialProgressPrivate::QtMaterialProgressPrivate(QtMaterialProgress *q)
+ : q_ptr(q)
+{
+}
+
+QtMaterialProgressPrivate::~QtMaterialProgressPrivate()
+{
+}
+
+void QtMaterialProgressPrivate::init()
+{
+ Q_Q(QtMaterialProgress);
+
+ delegate = new QtMaterialProgressDelegate(q);
+ progressType = Material::IndeterminateProgress;
+ useThemeColors = true;
+
+ QPropertyAnimation *animation;
+
+ animation = new QPropertyAnimation(q);
+ animation->setPropertyName("offset");
+ animation->setTargetObject(delegate);
+ animation->setStartValue(0);
+ animation->setEndValue(1);
+ animation->setDuration(1000);
+
+ animation->setLoopCount(-1);
+
+ animation->start();
+}
+
+/*!
+ * \class QtMaterialProgress
+ */
+
+QtMaterialProgress::QtMaterialProgress(QWidget *parent)
+ : QProgressBar(parent),
+ d_ptr(new QtMaterialProgressPrivate(this))
+{
+ d_func()->init();
+}
+
+QtMaterialProgress::~QtMaterialProgress()
+{
+}
+
+void QtMaterialProgress::setProgressType(Material::ProgressType type)
+{
+ Q_D(QtMaterialProgress);
+
+ d->progressType = type;
+ update();
+}
+
+Material::ProgressType QtMaterialProgress::progressType() const
+{
+ Q_D(const QtMaterialProgress);
+
+ return d->progressType;
+}
+
+void QtMaterialProgress::setUseThemeColors(bool state)
+{
+ Q_D(QtMaterialProgress);
+
+ if (d->useThemeColors == state) {
+ return;
+ }
+
+ d->useThemeColors = state;
+ update();
+}
+
+bool QtMaterialProgress::useThemeColors() const
+{
+ Q_D(const QtMaterialProgress);
+
+ return d->useThemeColors;
+}
+
+void QtMaterialProgress::setProgressColor(const QColor &color)
+{
+ Q_D(QtMaterialProgress);
+
+ d->progressColor = color;
+
+ MATERIAL_DISABLE_THEME_COLORS
+ update();
+}
+
+QColor QtMaterialProgress::progressColor() const
+{
+ Q_D(const QtMaterialProgress);
+
+ if (d->useThemeColors || !d->progressColor.isValid()) {
+ return QtMaterialStyle::instance().themeColor("primary1");
+ } else {
+ return d->progressColor;
+ }
+}
+
+void QtMaterialProgress::setBackgroundColor(const QColor &color)
+{
+ Q_D(QtMaterialProgress);
+
+ d->backgroundColor = color;
+
+ MATERIAL_DISABLE_THEME_COLORS
+ update();
+}
+
+QColor QtMaterialProgress::backgroundColor() const
+{
+ Q_D(const QtMaterialProgress);
+
+ if (d->useThemeColors || !d->backgroundColor.isValid()) {
+ return QtMaterialStyle::instance().themeColor("border");
+ } else {
+ return d->backgroundColor;
+ }
+}
+
+/*!
+ * \reimp
+ */
+void QtMaterialProgress::paintEvent(QPaintEvent *event)
+{
+ Q_UNUSED(event)
+
+ Q_D(QtMaterialProgress);
+
+ QPainter painter(this);
+ painter.setRenderHint(QPainter::Antialiasing);
+
+ QBrush brush;
+ brush.setStyle(Qt::SolidPattern);
+ brush.setColor(isEnabled() ? backgroundColor()
+ : QtMaterialStyle::instance().themeColor("disabled"));
+ painter.setBrush(brush);
+ painter.setPen(Qt::NoPen);
+
+ QPainterPath path;
+ path.addRoundedRect(0, height()/2-3, width(), 6, 3, 3);
+ painter.setClipPath(path);
+
+ painter.drawRect(0, 0, width(), height());
+
+ if (isEnabled())
+ {
+ brush.setColor(progressColor());
+ painter.setBrush(brush);
+
+ if (Material::IndeterminateProgress == d->progressType) {
+ painter.drawRect(d->delegate->offset()*width()*2-width(), 0, width(), height());
+ } else {
+ qreal p = static_cast(width())*(value()-minimum())/(maximum()-minimum());
+ painter.drawRect(0, 0, p, height());
+ }
+ }
+}
diff --git a/src/material-widgets/qtmaterialprogress.h b/src/material-widgets/qtmaterialprogress.h
new file mode 100644
index 0000000..0e69b1d
--- /dev/null
+++ b/src/material-widgets/qtmaterialprogress.h
@@ -0,0 +1,42 @@
+#ifndef QTMATERIALPROGRESS_H
+#define QTMATERIALPROGRESS_H
+
+#include
+#include "lib/qtmaterialtheme.h"
+
+class QtMaterialProgressPrivate;
+
+class QtMaterialProgress : public QProgressBar
+{
+ Q_OBJECT
+
+ Q_PROPERTY(QColor progressColor WRITE setProgressColor READ progressColor)
+ Q_PROPERTY(QColor backgroundColor WRITE setProgressColor READ backgroundColor)
+
+public:
+ explicit QtMaterialProgress(QWidget *parent = 0);
+ ~QtMaterialProgress();
+
+ void setProgressType(Material::ProgressType type);
+ Material::ProgressType progressType() const;
+
+ void setUseThemeColors(bool state);
+ bool useThemeColors() const;
+
+ void setProgressColor(const QColor &color);
+ QColor progressColor() const;
+
+ void setBackgroundColor(const QColor &color);
+ QColor backgroundColor() const;
+
+protected:
+ void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE;
+
+ const QScopedPointer d_ptr;
+
+private:
+ Q_DISABLE_COPY(QtMaterialProgress)
+ Q_DECLARE_PRIVATE(QtMaterialProgress)
+};
+
+#endif // QTMATERIALPROGRESS_H
diff --git a/src/material-widgets/qtmaterialprogress_internal.cpp b/src/material-widgets/qtmaterialprogress_internal.cpp
new file mode 100644
index 0000000..0544bae
--- /dev/null
+++ b/src/material-widgets/qtmaterialprogress_internal.cpp
@@ -0,0 +1,18 @@
+#include "qtmaterialprogress_internal.h"
+
+/*!
+ * \class QtMaterialProgressDelegate
+ * \internal
+ */
+
+QtMaterialProgressDelegate::QtMaterialProgressDelegate(QtMaterialProgress *parent)
+ : QObject(parent),
+ m_progress(parent),
+ m_offset(0)
+{
+ Q_ASSERT(parent);
+}
+
+QtMaterialProgressDelegate::~QtMaterialProgressDelegate()
+{
+}
diff --git a/src/material-widgets/qtmaterialprogress_internal.h b/src/material-widgets/qtmaterialprogress_internal.h
new file mode 100644
index 0000000..811e3d6
--- /dev/null
+++ b/src/material-widgets/qtmaterialprogress_internal.h
@@ -0,0 +1,38 @@
+#ifndef QTMATERIALPROGRESS_INTERNAL_H
+#define QTMATERIALPROGRESS_INTERNAL_H
+
+#include
+#include "qtmaterialprogress.h"
+
+class QtMaterialProgressDelegate : public QObject
+{
+ Q_OBJECT
+
+ Q_PROPERTY(qreal offset WRITE setOffset READ offset)
+
+public:
+ QtMaterialProgressDelegate(QtMaterialProgress *parent);
+ ~QtMaterialProgressDelegate();
+
+ inline void setOffset(qreal offset);
+ inline qreal offset() const;
+
+private:
+ Q_DISABLE_COPY(QtMaterialProgressDelegate)
+
+ QtMaterialProgress *const m_progress;
+ qreal m_offset;
+};
+
+inline void QtMaterialProgressDelegate::setOffset(qreal offset)
+{
+ m_offset = offset;
+ m_progress->update();
+}
+
+inline qreal QtMaterialProgressDelegate::offset() const
+{
+ return m_offset;
+}
+
+#endif // QTMATERIALPROGRESS_INTERNAL_H
diff --git a/src/material-widgets/qtmaterialprogress_p.h b/src/material-widgets/qtmaterialprogress_p.h
new file mode 100644
index 0000000..b55fb02
--- /dev/null
+++ b/src/material-widgets/qtmaterialprogress_p.h
@@ -0,0 +1,30 @@
+#ifndef QTMATERIALPROGRESS_P_H
+#define QTMATERIALPROGRESS_P_H
+
+#include
+#include
+#include "lib/qtmaterialtheme.h"
+
+class QtMaterialProgress;
+class QtMaterialProgressDelegate;
+
+class QtMaterialProgressPrivate
+{
+ Q_DISABLE_COPY(QtMaterialProgressPrivate)
+ Q_DECLARE_PUBLIC(QtMaterialProgress)
+
+public:
+ QtMaterialProgressPrivate(QtMaterialProgress *q);
+ ~QtMaterialProgressPrivate();
+
+ void init();
+
+ QtMaterialProgress *const q_ptr;
+ QtMaterialProgressDelegate *delegate;
+ Material::ProgressType progressType;
+ QColor progressColor;
+ QColor backgroundColor;
+ bool useThemeColors;
+};
+
+#endif // QTMATERIALPROGRESS_P_H
diff --git a/src/material-widgets/qtmaterialradiobutton.cpp b/src/material-widgets/qtmaterialradiobutton.cpp
new file mode 100644
index 0000000..86427c7
--- /dev/null
+++ b/src/material-widgets/qtmaterialradiobutton.cpp
@@ -0,0 +1,100 @@
+#include "qtmaterialradiobutton.h"
+#include "qtmaterialradiobutton_p.h"
+#include
+#include
+#include
+#include
+#include "lib/qtmaterialcheckable_internal.h"
+
+/*!
+ * \class QtMaterialRadioButtonPrivate
+ * \internal
+ */
+
+QtMaterialRadioButtonPrivate::QtMaterialRadioButtonPrivate(QtMaterialRadioButton *q)
+ : QtMaterialCheckablePrivate(q)
+{
+}
+
+QtMaterialRadioButtonPrivate::~QtMaterialRadioButtonPrivate()
+{
+}
+
+void QtMaterialRadioButtonPrivate::init()
+{
+ Q_Q(QtMaterialRadioButton);
+
+ q->setAutoExclusive(true);
+
+ q->setCheckedIcon(QIcon(":/icons/icons/toggle/svg/production/ic_radio_button_checked_24px.svg"));
+ q->setUncheckedIcon(QIcon(":/icons/icons/toggle/svg/production/ic_radio_button_unchecked_24px.svg"));
+
+ uncheckedState->assignProperty(checkedIcon, "iconSize", 0);
+ uncheckedState->assignProperty(uncheckedIcon, "iconSize", 24);
+
+ disabledUncheckedState->assignProperty(checkedIcon, "iconSize", 0);
+ disabledUncheckedState->assignProperty(uncheckedIcon, "iconSize", 24);
+
+ checkedState->assignProperty(uncheckedIcon, "iconSize", 0);
+ checkedState->assignProperty(checkedIcon, "iconSize", 24);
+
+ disabledCheckedState->assignProperty(uncheckedIcon, "iconSize", 0);
+ disabledCheckedState->assignProperty(checkedIcon, "iconSize", 24);
+
+ uncheckedState->assignProperty(checkedIcon, "opacity", 0);
+ uncheckedState->assignProperty(uncheckedIcon, "opacity", 1);
+
+ checkedState->assignProperty(uncheckedIcon, "opacity", 0);
+ checkedState->assignProperty(checkedIcon, "opacity", 1);
+
+ checkedIcon->setIconSize(0);
+
+ //
+
+ checkedState->assignProperty(checkedIcon, "color", q->checkedColor());
+ checkedState->assignProperty(uncheckedIcon, "color", q->uncheckedColor());
+ uncheckedState->assignProperty(uncheckedIcon, "color", q->uncheckedColor());
+
+ QPropertyAnimation *animation;
+
+ animation = new QPropertyAnimation(checkedIcon, "iconSize", q);
+ animation->setDuration(250);
+ stateMachine->addDefaultAnimation(animation);
+
+ animation = new QPropertyAnimation(uncheckedIcon, "iconSize", q);
+ animation->setDuration(250);
+ stateMachine->addDefaultAnimation(animation);
+
+ animation = new QPropertyAnimation(uncheckedIcon, "opacity", q);
+ animation->setDuration(250);
+ stateMachine->addDefaultAnimation(animation);
+
+ animation = new QPropertyAnimation(checkedIcon, "opacity", q);
+ animation->setDuration(250);
+ stateMachine->addDefaultAnimation(animation);
+}
+
+/*!
+ * \class QtMaterialRadioButton
+ */
+
+QtMaterialRadioButton::QtMaterialRadioButton(QWidget *parent)
+ : QtMaterialCheckable(*new QtMaterialRadioButtonPrivate(this), parent)
+{
+ d_func()->init();
+}
+
+QtMaterialRadioButton::~QtMaterialRadioButton()
+{
+}
+
+void QtMaterialRadioButton::setupProperties()
+{
+ QtMaterialCheckable::setupProperties();
+
+ Q_D(QtMaterialRadioButton);
+
+ d->checkedState->assignProperty(d->checkedIcon, "color", checkedColor());
+ d->checkedState->assignProperty(d->uncheckedIcon, "color", uncheckedColor());
+ d->uncheckedState->assignProperty(d->uncheckedIcon, "color", uncheckedColor());
+}
diff --git a/src/material-widgets/qtmaterialradiobutton.h b/src/material-widgets/qtmaterialradiobutton.h
new file mode 100644
index 0000000..adc535c
--- /dev/null
+++ b/src/material-widgets/qtmaterialradiobutton.h
@@ -0,0 +1,24 @@
+#ifndef QTMATERIALRADIOBUTTON_H
+#define QTMATERIALRADIOBUTTON_H
+
+#include "lib/qtmaterialcheckable.h"
+
+class QtMaterialRadioButtonPrivate;
+
+class QtMaterialRadioButton : public QtMaterialCheckable
+{
+ Q_OBJECT
+
+public:
+ explicit QtMaterialRadioButton(QWidget *parent = 0);
+ ~QtMaterialRadioButton();
+
+protected:
+ void setupProperties();
+
+private:
+ Q_DISABLE_COPY(QtMaterialRadioButton)
+ Q_DECLARE_PRIVATE(QtMaterialRadioButton)
+};
+
+#endif // QTMATERIALRADIOBUTTON_H
diff --git a/src/material-widgets/qtmaterialradiobutton_p.h b/src/material-widgets/qtmaterialradiobutton_p.h
new file mode 100644
index 0000000..6bb954a
--- /dev/null
+++ b/src/material-widgets/qtmaterialradiobutton_p.h
@@ -0,0 +1,20 @@
+#ifndef QTMATERIALRADIOBUTTON_P_H
+#define QTMATERIALRADIOBUTTON_P_H
+
+#include "lib/qtmaterialcheckable_p.h"
+
+class QtMaterialRadioButton;
+
+class QtMaterialRadioButtonPrivate : public QtMaterialCheckablePrivate
+{
+ Q_DISABLE_COPY(QtMaterialRadioButtonPrivate)
+ Q_DECLARE_PUBLIC(QtMaterialRadioButton)
+
+public:
+ QtMaterialRadioButtonPrivate(QtMaterialRadioButton *q);
+ ~QtMaterialRadioButtonPrivate();
+
+ void init();
+};
+
+#endif // QTMATERIALRADIOBUTTON_P_H
diff --git a/src/material-widgets/qtmaterialraisedbutton.cpp b/src/material-widgets/qtmaterialraisedbutton.cpp
new file mode 100644
index 0000000..1607c70
--- /dev/null
+++ b/src/material-widgets/qtmaterialraisedbutton.cpp
@@ -0,0 +1,128 @@
+#include "qtmaterialraisedbutton.h"
+#include "qtmaterialraisedbutton_p.h"
+#include
+#include
+#include
+#include
+
+/*!
+ * \class QtMaterialRaisedButtonPrivate
+ * \internal
+ */
+
+/*!
+ * \internal
+ */
+QtMaterialRaisedButtonPrivate::QtMaterialRaisedButtonPrivate(QtMaterialRaisedButton *q)
+ : QtMaterialFlatButtonPrivate(q)
+{
+}
+
+/*!
+ * \internal
+ */
+QtMaterialRaisedButtonPrivate::~QtMaterialRaisedButtonPrivate()
+{
+}
+
+/*!
+ * \internal
+ */
+void QtMaterialRaisedButtonPrivate::init()
+{
+ Q_Q(QtMaterialRaisedButton);
+
+ shadowStateMachine = new QStateMachine(q);
+ normalState = new QState;
+ pressedState = new QState;
+ effect = new QGraphicsDropShadowEffect;
+
+ effect->setBlurRadius(7);
+ effect->setOffset(QPointF(0, 2));
+ effect->setColor(QColor(0, 0, 0, 75));
+
+ q->setBackgroundMode(Qt::OpaqueMode);
+ q->setMinimumHeight(42);
+ q->setGraphicsEffect(effect);
+ q->setBaseOpacity(0.3);
+
+ shadowStateMachine->addState(normalState);
+ shadowStateMachine->addState(pressedState);
+
+ normalState->assignProperty(effect, "offset", QPointF(0, 2));
+ normalState->assignProperty(effect, "blurRadius", 7);
+
+ pressedState->assignProperty(effect, "offset", QPointF(0, 5));
+ pressedState->assignProperty(effect, "blurRadius", 29);
+
+ QAbstractTransition *transition;
+
+ transition = new QEventTransition(q, QEvent::MouseButtonPress);
+ transition->setTargetState(pressedState);
+ normalState->addTransition(transition);
+
+ transition = new QEventTransition(q, QEvent::MouseButtonDblClick);
+ transition->setTargetState(pressedState);
+ normalState->addTransition(transition);
+
+ transition = new QEventTransition(q, QEvent::MouseButtonRelease);
+ transition->setTargetState(normalState);
+ pressedState->addTransition(transition);
+
+ QPropertyAnimation *animation;
+
+ animation = new QPropertyAnimation(effect, "offset", q);
+ animation->setDuration(100);
+ shadowStateMachine->addDefaultAnimation(animation);
+
+ animation = new QPropertyAnimation(effect, "blurRadius", q);
+ animation->setDuration(100);
+ shadowStateMachine->addDefaultAnimation(animation);
+
+ shadowStateMachine->setInitialState(normalState);
+ shadowStateMachine->start();
+}
+
+/*!
+ * \class QtMaterialRaisedButton
+ */
+
+QtMaterialRaisedButton::QtMaterialRaisedButton(QWidget *parent)
+ : QtMaterialFlatButton(*new QtMaterialRaisedButtonPrivate(this), parent)
+{
+ d_func()->init();
+}
+
+QtMaterialRaisedButton::QtMaterialRaisedButton(const QString &text, QWidget *parent)
+ : QtMaterialFlatButton(*new QtMaterialRaisedButtonPrivate(this), parent)
+{
+ d_func()->init();
+
+ setText(text);
+}
+
+QtMaterialRaisedButton::~QtMaterialRaisedButton()
+{
+}
+
+QtMaterialRaisedButton::QtMaterialRaisedButton(QtMaterialRaisedButtonPrivate &d, QWidget *parent)
+ : QtMaterialFlatButton(d, parent)
+{
+ d_func()->init();
+}
+
+bool QtMaterialRaisedButton::event(QEvent *event)
+{
+ Q_D(QtMaterialRaisedButton);
+
+ if (QEvent::EnabledChange == event->type()) {
+ if (isEnabled()) {
+ d->shadowStateMachine->start();
+ d->effect->setEnabled(true);
+ } else {
+ d->shadowStateMachine->stop();
+ d->effect->setEnabled(false);
+ }
+ }
+ return QtMaterialFlatButton::event(event);
+}
diff --git a/src/material-widgets/qtmaterialraisedbutton.h b/src/material-widgets/qtmaterialraisedbutton.h
new file mode 100644
index 0000000..d8b4ef9
--- /dev/null
+++ b/src/material-widgets/qtmaterialraisedbutton.h
@@ -0,0 +1,27 @@
+#ifndef QTMATERIALRAISEDBUTTON_H
+#define QTMATERIALRAISEDBUTTON_H
+
+#include "qtmaterialflatbutton.h"
+
+class QtMaterialRaisedButtonPrivate;
+
+class QtMaterialRaisedButton : public QtMaterialFlatButton
+{
+ Q_OBJECT
+
+public:
+ explicit QtMaterialRaisedButton(QWidget *parent = 0);
+ explicit QtMaterialRaisedButton(const QString &text, QWidget *parent = 0);
+ ~QtMaterialRaisedButton();
+
+protected:
+ QtMaterialRaisedButton(QtMaterialRaisedButtonPrivate &d, QWidget *parent = 0);
+
+ bool event(QEvent *event) Q_DECL_OVERRIDE;
+
+private:
+ Q_DISABLE_COPY(QtMaterialRaisedButton)
+ Q_DECLARE_PRIVATE(QtMaterialRaisedButton)
+};
+
+#endif // QTMATERIALRAISEDBUTTON_H
diff --git a/src/material-widgets/qtmaterialraisedbutton_p.h b/src/material-widgets/qtmaterialraisedbutton_p.h
new file mode 100644
index 0000000..12df43c
--- /dev/null
+++ b/src/material-widgets/qtmaterialraisedbutton_p.h
@@ -0,0 +1,28 @@
+#ifndef QTMATERIALRAISEDBUTTON_P_H
+#define QTMATERIALRAISEDBUTTON_P_H
+
+#include "qtmaterialflatbutton_p.h"
+
+class QStateMachine;
+class QState;
+class QGraphicsDropShadowEffect;
+class QtMaterialRaisedButton;
+
+class QtMaterialRaisedButtonPrivate : public QtMaterialFlatButtonPrivate
+{
+ Q_DISABLE_COPY(QtMaterialRaisedButtonPrivate)
+ Q_DECLARE_PUBLIC(QtMaterialRaisedButton)
+
+public:
+ QtMaterialRaisedButtonPrivate(QtMaterialRaisedButton *q);
+ ~QtMaterialRaisedButtonPrivate();
+
+ void init();
+
+ QStateMachine *shadowStateMachine;
+ QState *normalState;
+ QState *pressedState;
+ QGraphicsDropShadowEffect *effect;
+};
+
+#endif // QTMATERIALRAISEDBUTTON_P_H
diff --git a/src/material-widgets/qtmaterialscrollbar.cpp b/src/material-widgets/qtmaterialscrollbar.cpp
new file mode 100644
index 0000000..46386b2
--- /dev/null
+++ b/src/material-widgets/qtmaterialscrollbar.cpp
@@ -0,0 +1,211 @@
+#include "qtmaterialscrollbar.h"
+#include "qtmaterialscrollbar_p.h"
+#include
+#include
+#include "qtmaterialscrollbar_internal.h"
+#include "lib/qtmaterialstyle.h"
+
+/*!
+ * \class QtMaterialScrollBarPrivate
+ * \internal
+ */
+
+QtMaterialScrollBarPrivate::QtMaterialScrollBarPrivate(QtMaterialScrollBar *q)
+ : q_ptr(q)
+{
+}
+
+QtMaterialScrollBarPrivate::~QtMaterialScrollBarPrivate()
+{
+}
+
+void QtMaterialScrollBarPrivate::init()
+{
+ Q_Q(QtMaterialScrollBar);
+
+ stateMachine = new QtMaterialScrollBarStateMachine(q);
+ hideOnMouseOut = true;
+ useThemeColors = true;
+
+ q->setMouseTracking(true);
+ q->setStyle(&QtMaterialStyle::instance());
+ q->setStyleSheet("QScrollBar:vertical { margin: 0; }"
+ "QScrollBar::add-line:vertical { height: 0; margin: 0; }"
+ "QScrollBar::sub-line:vertical { height: 0; margin: 0; }");
+
+ stateMachine->start();
+}
+
+/*!
+ * \class QtMaterialScrollBar
+ */
+
+QtMaterialScrollBar::QtMaterialScrollBar(QWidget *parent)
+ : QScrollBar(parent),
+ d_ptr(new QtMaterialScrollBarPrivate(this))
+{
+ d_func()->init();
+}
+
+QtMaterialScrollBar::~QtMaterialScrollBar()
+{
+}
+
+/*!
+ * \reimp
+ */
+QSize QtMaterialScrollBar::sizeHint() const
+{
+ if (Qt::Horizontal == orientation()) {
+ return QSize(1, 10);
+ } else {
+ return QSize(10, 1);
+ }
+}
+
+void QtMaterialScrollBar::setUseThemeColors(bool value)
+{
+ Q_D(QtMaterialScrollBar);
+
+ if (d->useThemeColors == value) {
+ return;
+ }
+
+ d->useThemeColors = value;
+ update();
+}
+
+bool QtMaterialScrollBar::useThemeColors() const
+{
+ Q_D(const QtMaterialScrollBar);
+
+ return d->useThemeColors;
+}
+
+void QtMaterialScrollBar::setCanvasColor(const QColor &color)
+{
+ Q_D(QtMaterialScrollBar);
+
+ d->canvasColor = color;
+
+ MATERIAL_DISABLE_THEME_COLORS
+ update();
+}
+
+QColor QtMaterialScrollBar::canvasColor() const
+{
+ Q_D(const QtMaterialScrollBar);
+
+ if (d->useThemeColors || !d->canvasColor.isValid()) {
+ return parentWidget()->palette().color(backgroundRole());
+ } else {
+ return d->canvasColor;
+ }
+}
+
+void QtMaterialScrollBar::setBackgroundColor(const QColor &color)
+{
+ Q_D(QtMaterialScrollBar);
+
+ d->backgroundColor = color;
+
+ MATERIAL_DISABLE_THEME_COLORS
+ update();
+}
+
+QColor QtMaterialScrollBar::backgroundColor() const
+{
+ Q_D(const QtMaterialScrollBar);
+
+ if (d->useThemeColors || !d->backgroundColor.isValid()) {
+ return QtMaterialStyle::instance().themeColor("border");
+ } else {
+ return d->backgroundColor;
+ }
+}
+
+void QtMaterialScrollBar::setSliderColor(const QColor &color)
+{
+ Q_D(QtMaterialScrollBar);
+
+ d->sliderColor = color;
+
+ MATERIAL_DISABLE_THEME_COLORS
+ update();
+}
+
+QColor QtMaterialScrollBar::sliderColor() const
+{
+ Q_D(const QtMaterialScrollBar);
+
+ if (d->useThemeColors || !d->sliderColor.isValid()) {
+ return QtMaterialStyle::instance().themeColor("primary1");
+ } else {
+ return d->sliderColor;
+ }
+}
+
+void QtMaterialScrollBar::setHideOnMouseOut(bool value)
+{
+ Q_D(QtMaterialScrollBar);
+
+ d->hideOnMouseOut = value;
+ update();
+}
+
+bool QtMaterialScrollBar::hideOnMouseOut() const
+{
+ Q_D(const QtMaterialScrollBar);
+
+ return d->hideOnMouseOut;
+}
+
+/*!
+ * \reimp
+ */
+void QtMaterialScrollBar::paintEvent(QPaintEvent *event)
+{
+ Q_UNUSED(event)
+
+ Q_D(QtMaterialScrollBar);
+
+ QPainter painter(this);
+ painter.setRenderHint(QPainter::Antialiasing);
+
+ painter.fillRect(rect(), canvasColor());
+
+ int x, y, w, h;
+ rect().getRect(&x, &y, &w, &h);
+
+ QMargins margins(2, 2, 2, 2);
+
+ QBrush brush;
+ brush.setStyle(Qt::SolidPattern);
+ brush.setColor(backgroundColor());
+ painter.setBrush(brush);
+ painter.setPen(Qt::NoPen);
+
+ if (d->hideOnMouseOut) {
+ painter.setOpacity(d->stateMachine->opacity());
+ }
+
+ QRect trimmed(rect().marginsRemoved(margins));
+
+ QPainterPath path;
+ path.addRoundedRect(trimmed, 3, 3);
+ painter.setClipPath(path);
+
+ painter.drawRect(trimmed);
+
+ const qreal q = (Qt::Horizontal == orientation() ? w : h) /
+ static_cast(maximum()-minimum()+pageStep()-1);
+
+ QRect handle = Qt::Horizontal == orientation()
+ ? QRect(sliderPosition()*q, y, pageStep()*q, h)
+ : QRect(x, sliderPosition()*q, w, pageStep()*q);
+
+ brush.setColor(sliderColor());
+ painter.setBrush(brush);
+
+ painter.drawRoundedRect(handle, 9, 9);
+}
diff --git a/src/material-widgets/qtmaterialscrollbar.h b/src/material-widgets/qtmaterialscrollbar.h
new file mode 100644
index 0000000..591c9f1
--- /dev/null
+++ b/src/material-widgets/qtmaterialscrollbar.h
@@ -0,0 +1,47 @@
+#ifndef QTMATERIALSCROLLBAR_H
+#define QTMATERIALSCROLLBAR_H
+
+#include
+
+class QtMaterialScrollBarPrivate;
+
+class QtMaterialScrollBar : public QScrollBar
+{
+ Q_OBJECT
+
+ Q_PROPERTY(QColor canvasColor WRITE setCanvasColor READ canvasColor)
+ Q_PROPERTY(QColor backgroundColor WRITE setBackgroundColor READ backgroundColor)
+ Q_PROPERTY(QColor sliderColor WRITE setSliderColor READ sliderColor)
+
+public:
+ explicit QtMaterialScrollBar(QWidget *parent = 0);
+ ~QtMaterialScrollBar();
+
+ QSize sizeHint() const Q_DECL_OVERRIDE;
+
+ void setUseThemeColors(bool value);
+ bool useThemeColors() const;
+
+ void setCanvasColor(const QColor &color);
+ QColor canvasColor() const;
+
+ void setBackgroundColor(const QColor &color);
+ QColor backgroundColor() const;
+
+ void setSliderColor(const QColor &color);
+ QColor sliderColor() const;
+
+ void setHideOnMouseOut(bool value);
+ bool hideOnMouseOut() const;
+
+protected:
+ void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE;
+
+ const QScopedPointer d_ptr;
+
+private:
+ Q_DISABLE_COPY(QtMaterialScrollBar)
+ Q_DECLARE_PRIVATE(QtMaterialScrollBar)
+};
+
+#endif // QTMATERIALSCROLLBAR_H
diff --git a/src/material-widgets/qtmaterialscrollbar_internal.cpp b/src/material-widgets/qtmaterialscrollbar_internal.cpp
new file mode 100644
index 0000000..248d91a
--- /dev/null
+++ b/src/material-widgets/qtmaterialscrollbar_internal.cpp
@@ -0,0 +1,51 @@
+#include "qtmaterialscrollbar_internal.h"
+#include
+#include
+
+/*!
+ * \class QtMaterialScrollBarStateMachine
+ * \internal
+ */
+
+/*!
+ * \internal
+ */
+QtMaterialScrollBarStateMachine::QtMaterialScrollBarStateMachine(QtMaterialScrollBar *parent)
+ : QStateMachine(parent),
+ m_scrollBar(parent),
+ m_focusState(new QState),
+ m_blurState(new QState),
+ m_opacity(0)
+{
+ Q_ASSERT(parent);
+
+ addState(m_focusState);
+ addState(m_blurState);
+ setInitialState(m_blurState);
+
+ QEventTransition *transition;
+
+ transition = new QEventTransition(parent, QEvent::Enter);
+ transition->setTargetState(m_focusState);
+ m_blurState->addTransition(transition);
+
+ transition = new QEventTransition(parent, QEvent::Leave);
+ transition->setTargetState(m_blurState);
+ m_focusState->addTransition(transition);
+
+ m_focusState->assignProperty(this, "opacity", 1);
+ m_blurState->assignProperty(this, "opacity", 0);
+
+ QPropertyAnimation *animation;
+
+ animation = new QPropertyAnimation(this, "opacity", this);
+ animation->setDuration(340);
+ addDefaultAnimation(animation);
+}
+
+/*!
+ * \internal
+ */
+QtMaterialScrollBarStateMachine::~QtMaterialScrollBarStateMachine()
+{
+}
diff --git a/src/material-widgets/qtmaterialscrollbar_internal.h b/src/material-widgets/qtmaterialscrollbar_internal.h
new file mode 100644
index 0000000..7b1cc92
--- /dev/null
+++ b/src/material-widgets/qtmaterialscrollbar_internal.h
@@ -0,0 +1,40 @@
+#ifndef QTMATERIALSCROLLBAR_INTERNAL_H
+#define QTMATERIALSCROLLBAR_INTERNAL_H
+
+#include
+#include "qtmaterialscrollbar.h"
+
+class QtMaterialScrollBarStateMachine : public QStateMachine
+{
+ Q_OBJECT
+
+ Q_PROPERTY(qreal opacity WRITE setOpacity READ opacity)
+
+public:
+ QtMaterialScrollBarStateMachine(QtMaterialScrollBar *parent);
+ ~QtMaterialScrollBarStateMachine();
+
+ inline void setOpacity(qreal opacity);
+ inline qreal opacity() const;
+
+private:
+ Q_DISABLE_COPY(QtMaterialScrollBarStateMachine)
+
+ QtMaterialScrollBar *const m_scrollBar;
+ QState *const m_focusState;
+ QState *const m_blurState;
+ qreal m_opacity;
+};
+
+inline void QtMaterialScrollBarStateMachine::setOpacity(qreal opacity)
+{
+ m_opacity = opacity;
+ m_scrollBar->update();
+}
+
+inline qreal QtMaterialScrollBarStateMachine::opacity() const
+{
+ return m_opacity;
+}
+
+#endif // QTMATERIALSCROLLBAR_INTERNAL_H
diff --git a/src/material-widgets/qtmaterialscrollbar_p.h b/src/material-widgets/qtmaterialscrollbar_p.h
new file mode 100644
index 0000000..1d22cc0
--- /dev/null
+++ b/src/material-widgets/qtmaterialscrollbar_p.h
@@ -0,0 +1,30 @@
+#ifndef QTMATERIALSCROLLBAR_P_H
+#define QTMATERIALSCROLLBAR_P_H
+
+#include
+#include
+
+class QtMaterialScrollBar;
+class QtMaterialScrollBarStateMachine;
+
+class QtMaterialScrollBarPrivate
+{
+ Q_DISABLE_COPY(QtMaterialScrollBarPrivate)
+ Q_DECLARE_PUBLIC(QtMaterialScrollBar)
+
+public:
+ QtMaterialScrollBarPrivate(QtMaterialScrollBar *q);
+ ~QtMaterialScrollBarPrivate();
+
+ void init();
+
+ QtMaterialScrollBar *const q_ptr;
+ QtMaterialScrollBarStateMachine *stateMachine;
+ QColor backgroundColor;
+ QColor sliderColor;
+ QColor canvasColor;
+ bool hideOnMouseOut;
+ bool useThemeColors;
+};
+
+#endif // QTMATERIALSCROLLBAR_P_H
diff --git a/src/material-widgets/qtmaterialslider.cpp b/src/material-widgets/qtmaterialslider.cpp
new file mode 100644
index 0000000..a0d17dc
--- /dev/null
+++ b/src/material-widgets/qtmaterialslider.cpp
@@ -0,0 +1,407 @@
+#include "qtmaterialslider.h"
+#include "qtmaterialslider_p.h"
+#include
+#include
+#include "qtmaterialslider_internal.h"
+#include "lib/qtmaterialstyle.h"
+#include "lib/qtmaterialstatetransitionevent.h"
+
+/*!
+ * \class QtMaterialSliderPrivate
+ * \internal
+ */
+
+QtMaterialSliderPrivate::QtMaterialSliderPrivate(QtMaterialSlider *q)
+ : q_ptr(q)
+{
+}
+
+QtMaterialSliderPrivate::~QtMaterialSliderPrivate()
+{
+}
+
+void QtMaterialSliderPrivate::init()
+{
+ Q_Q(QtMaterialSlider);
+
+ thumb = new QtMaterialSliderThumb(q);
+ track = new QtMaterialSliderTrack(thumb, q);
+ stateMachine = new QtMaterialSliderStateMachine(q, thumb, track);
+ stepTo = 0;
+ oldValue = q->value();
+ trackWidth = 2;
+ hoverTrack = false;
+ hoverThumb = false;
+ hover = false;
+ step = false;
+ pageStepMode = true;
+ useThemeColors = true;
+
+ q->setMouseTracking(true);
+ q->setFocusPolicy(Qt::StrongFocus);
+ q->setPageStep(1);
+
+ QSizePolicy sp(QSizePolicy::Expanding,
+ QSizePolicy::Fixed);
+
+ if (q->orientation() == Qt::Vertical) {
+ sp.transpose();
+ }
+
+ q->setSizePolicy(sp);
+ q->setAttribute(Qt::WA_WState_OwnSizePolicy, false);
+
+ stateMachine->start();
+ QCoreApplication::processEvents();
+}
+
+QRectF QtMaterialSliderPrivate::trackBoundingRect() const
+{
+ Q_Q(const QtMaterialSlider);
+
+ qreal hw = static_cast(trackWidth)/2;
+
+ return Qt::Horizontal == q->orientation()
+ ? QRectF(QT_MATERIAL_SLIDER_MARGIN, q->height()/2 - hw,
+ q->width() - QT_MATERIAL_SLIDER_MARGIN*2, hw*2)
+ : QRectF(q->width()/2 - hw, QT_MATERIAL_SLIDER_MARGIN, hw*2,
+ q->height() - QT_MATERIAL_SLIDER_MARGIN*2);
+}
+
+QRectF QtMaterialSliderPrivate::thumbBoundingRect() const
+{
+ Q_Q(const QtMaterialSlider);
+
+ return Qt::Horizontal == q->orientation()
+ ? QRectF(thumb->offset(), q->height()/2 - QT_MATERIAL_SLIDER_MARGIN,
+ QT_MATERIAL_SLIDER_MARGIN*2, QT_MATERIAL_SLIDER_MARGIN*2)
+ : QRectF(q->width()/2 - QT_MATERIAL_SLIDER_MARGIN, thumb->offset(),
+ QT_MATERIAL_SLIDER_MARGIN*2, QT_MATERIAL_SLIDER_MARGIN*2);
+}
+
+int QtMaterialSliderPrivate::valueFromPosition(const QPoint &pos) const
+{
+ Q_Q(const QtMaterialSlider);
+
+ const int position = Qt::Horizontal == q->orientation() ? pos.x() : pos.y();
+
+ const int span = Qt::Horizontal == q->orientation()
+ ? q->width() - QT_MATERIAL_SLIDER_MARGIN*2
+ : q->height() - QT_MATERIAL_SLIDER_MARGIN*2;
+
+ return QtMaterialStyle::sliderValueFromPosition(
+ q->minimum(),
+ q->maximum(),
+ position - QT_MATERIAL_SLIDER_MARGIN,
+ span,
+ q->invertedAppearance());
+}
+
+void QtMaterialSliderPrivate::setHovered(bool status)
+{
+ Q_Q(QtMaterialSlider);
+
+ if (hover == status) {
+ return;
+ }
+
+ hover = status;
+
+ if (!q->hasFocus()) {
+ if (status) {
+ stateMachine->postEvent(new QtMaterialStateTransitionEvent(SliderNoFocusMouseEnter));
+ } else {
+ stateMachine->postEvent(new QtMaterialStateTransitionEvent(SliderNoFocusMouseLeave));
+ }
+ }
+
+ q->update();
+}
+
+/*!
+ * \class QtMaterialSlider
+ */
+
+QtMaterialSlider::QtMaterialSlider(QWidget *parent)
+ : QAbstractSlider(parent),
+ d_ptr(new QtMaterialSliderPrivate(this))
+{
+ d_func()->init();
+}
+
+QtMaterialSlider::~QtMaterialSlider()
+{
+}
+
+void QtMaterialSlider::setUseThemeColors(bool value)
+{
+ Q_D(QtMaterialSlider);
+
+ if (d->useThemeColors == value) {
+ return;
+ }
+
+ d->useThemeColors = value;
+ d->stateMachine->setupProperties();
+}
+
+bool QtMaterialSlider::useThemeColors() const
+{
+ Q_D(const QtMaterialSlider);
+
+ return d->useThemeColors;
+}
+
+void QtMaterialSlider::setThumbColor(const QColor &color)
+{
+ Q_D(QtMaterialSlider);
+
+ d->thumbColor = color;
+
+ MATERIAL_DISABLE_THEME_COLORS
+ d->stateMachine->setupProperties();
+ update();
+}
+
+QColor QtMaterialSlider::thumbColor() const
+{
+ Q_D(const QtMaterialSlider);
+
+ if (d->useThemeColors || !d->thumbColor.isValid()) {
+ return QtMaterialStyle::instance().themeColor("primary1");
+ } else {
+ return d->thumbColor;
+ }
+}
+
+void QtMaterialSlider::setTrackColor(const QColor &color)
+{
+ Q_D(QtMaterialSlider);
+
+ d->trackColor = color;
+
+ MATERIAL_DISABLE_THEME_COLORS
+ d->stateMachine->setupProperties();
+ update();
+}
+
+QColor QtMaterialSlider::trackColor() const
+{
+ Q_D(const QtMaterialSlider);
+
+ if (d->useThemeColors || !d->trackColor.isValid()) {
+ return QtMaterialStyle::instance().themeColor("accent3");
+ } else {
+ return d->trackColor;
+ }
+}
+
+void QtMaterialSlider::setDisabledColor(const QColor &color)
+{
+ Q_D(QtMaterialSlider);
+
+ d->disabledColor = color;
+
+ MATERIAL_DISABLE_THEME_COLORS
+ d->stateMachine->setupProperties();
+ update();
+}
+
+QColor QtMaterialSlider::disabledColor() const
+{
+ Q_D(const QtMaterialSlider);
+
+ if (d->useThemeColors || !d->disabledColor.isValid()) {
+ return QtMaterialStyle::instance().themeColor("disabled");
+ } else {
+ return d->disabledColor;
+ }
+}
+
+void QtMaterialSlider::setPageStepMode(bool pageStep)
+{
+ Q_D(QtMaterialSlider);
+
+ d->pageStepMode = pageStep;
+}
+
+bool QtMaterialSlider::pageStepMode() const
+{
+ Q_D(const QtMaterialSlider);
+
+ return d->pageStepMode;
+}
+
+/*!
+ * \remip
+ */
+QSize QtMaterialSlider::minimumSizeHint() const
+{
+ return Qt::Horizontal == orientation()
+ ? QSize(130, 34)
+ : QSize(34, 130);
+}
+
+void QtMaterialSlider::setInvertedAppearance(bool value)
+{
+ QAbstractSlider::setInvertedAppearance(value);
+
+ updateThumbOffset();
+}
+
+/*!
+ * \remip
+ */
+void QtMaterialSlider::sliderChange(SliderChange change)
+{
+ Q_D(QtMaterialSlider);
+
+ if (SliderOrientationChange == change)
+ {
+ QSizePolicy sp(QSizePolicy::Expanding, QSizePolicy::Fixed);
+ if (orientation() == Qt::Vertical) {
+ sp.transpose();
+ }
+ setSizePolicy(sp);
+ }
+ else if (SliderValueChange == change)
+ {
+ if (minimum() == value()) {
+ triggerAction(SliderToMinimum);
+ d->stateMachine->postEvent(new QtMaterialStateTransitionEvent(SliderChangedToMinimum));
+ } else if (maximum() == value()) {
+ triggerAction(SliderToMaximum);
+ }
+ if (minimum() == d->oldValue) {
+ d->stateMachine->postEvent(new QtMaterialStateTransitionEvent(SliderChangedFromMinimum));
+ }
+ d->oldValue = value();
+ }
+
+ updateThumbOffset();
+
+ QAbstractSlider::sliderChange(change);
+}
+
+/*!
+ * \remip
+ */
+void QtMaterialSlider::mouseMoveEvent(QMouseEvent *event)
+{
+ Q_D(QtMaterialSlider);
+
+ if (isSliderDown())
+ {
+ setSliderPosition(d->valueFromPosition(event->pos()));
+ }
+ else
+ {
+ QRectF track(d->trackBoundingRect().adjusted(-2, -2, 2, 2));
+
+ if (track.contains(event->pos()) != d->hoverTrack) {
+ d->hoverTrack = !d->hoverTrack;
+ update();
+ }
+
+ QRectF thumb(0, 0, 16, 16);
+ thumb.moveCenter(d->thumbBoundingRect().center());
+
+ if (thumb.contains(event->pos()) != d->hoverThumb) {
+ d->hoverThumb = !d->hoverThumb;
+ update();
+ }
+
+ d->setHovered(d->hoverTrack || d->hoverThumb);
+ }
+
+ QAbstractSlider::mouseMoveEvent(event);
+}
+
+/*!
+ * \remip
+ */
+void QtMaterialSlider::mousePressEvent(QMouseEvent *event)
+{
+ Q_D(QtMaterialSlider);
+
+ const QPoint pos = event->pos();
+
+ QRectF thumb(0, 0, 16, 16);
+ thumb.moveCenter(d->thumbBoundingRect().center());
+
+ if (thumb.contains(pos)) {
+ setSliderDown(true);
+ return;
+ }
+
+ if (!d->pageStepMode) {
+ setSliderPosition(d->valueFromPosition(event->pos()));
+ d->thumb->setHaloSize(0);
+ setSliderDown(true);
+ return;
+ }
+
+ d->step = true;
+ d->stepTo = d->valueFromPosition(pos);
+
+ SliderAction action = d->stepTo > sliderPosition()
+ ? SliderPageStepAdd
+ : SliderPageStepSub;
+
+ triggerAction(action);
+ setRepeatAction(action, 400, 8);
+}
+
+/*!
+ * \remip
+ */
+void QtMaterialSlider::mouseReleaseEvent(QMouseEvent *event)
+{
+ Q_D(QtMaterialSlider);
+
+ if (isSliderDown()) {
+ setSliderDown(false);
+ } else if (d->step) {
+ d->step = false;
+ setRepeatAction(SliderNoAction, 0);
+ }
+
+ QAbstractSlider::mouseReleaseEvent(event);
+}
+
+/*!
+ * \remip
+ */
+void QtMaterialSlider::leaveEvent(QEvent *event)
+{
+ Q_D(QtMaterialSlider);
+
+ if (d->hoverTrack) {
+ d->hoverTrack = false;
+ update();
+ }
+ if (d->hoverThumb) {
+ d->hoverThumb = false;
+ update();
+ }
+
+ d->setHovered(false);
+
+ QAbstractSlider::leaveEvent(event);
+}
+
+void QtMaterialSlider::updateThumbOffset()
+{
+ Q_D(QtMaterialSlider);
+
+ const int offset = QtMaterialStyle::sliderPositionFromValue(
+ minimum(),
+ maximum(),
+ sliderPosition(),
+ Qt::Horizontal == orientation()
+ ? width() - QT_MATERIAL_SLIDER_MARGIN*2
+ : height() - QT_MATERIAL_SLIDER_MARGIN*2,
+ invertedAppearance());
+
+ d->thumb->setOffset(offset);
+}
diff --git a/src/material-widgets/qtmaterialslider.h b/src/material-widgets/qtmaterialslider.h
new file mode 100644
index 0000000..f8e642d
--- /dev/null
+++ b/src/material-widgets/qtmaterialslider.h
@@ -0,0 +1,58 @@
+#ifndef QTMATERIALSLIDER_H
+#define QTMATERIALSLIDER_H
+
+#include
+#include
+
+#define QT_MATERIAL_SLIDER_MARGIN 30
+
+class QtMaterialSliderPrivate;
+
+class QtMaterialSlider : public QAbstractSlider
+{
+ Q_OBJECT
+
+ Q_PROPERTY(QColor thumbColor WRITE setThumbColor READ thumbColor)
+ Q_PROPERTY(QColor trackColor WRITE setTrackColor READ trackColor)
+ Q_PROPERTY(QColor disabledColor WRITE setDisabledColor READ disabledColor)
+
+public:
+ explicit QtMaterialSlider(QWidget *parent = 0);
+ ~QtMaterialSlider();
+
+ void setUseThemeColors(bool value);
+ bool useThemeColors() const;
+
+ void setThumbColor(const QColor &color);
+ QColor thumbColor() const;
+
+ void setTrackColor(const QColor &color);
+ QColor trackColor() const;
+
+ void setDisabledColor(const QColor &color);
+ QColor disabledColor() const;
+
+ void setPageStepMode(bool pageStep);
+ bool pageStepMode() const;
+
+ QSize minimumSizeHint() const Q_DECL_OVERRIDE;
+
+ void setInvertedAppearance(bool value);
+
+protected:
+ void sliderChange(SliderChange change) Q_DECL_OVERRIDE;
+ void mouseMoveEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
+ void mousePressEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
+ void mouseReleaseEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
+ void leaveEvent(QEvent *event) Q_DECL_OVERRIDE;
+
+ void updateThumbOffset();
+
+ const QScopedPointer d_ptr;
+
+private:
+ Q_DISABLE_COPY(QtMaterialSlider)
+ Q_DECLARE_PRIVATE(QtMaterialSlider)
+};
+
+#endif // QTMATERIALSLIDER_H
diff --git a/src/material-widgets/qtmaterialslider_internal.cpp b/src/material-widgets/qtmaterialslider_internal.cpp
new file mode 100644
index 0000000..fd2d50b
--- /dev/null
+++ b/src/material-widgets/qtmaterialslider_internal.cpp
@@ -0,0 +1,408 @@
+#include "qtmaterialslider_internal.h"
+#include
+#include
+#include
+#include
+#include
+#include
+#include "qtmaterialslider.h"
+#include "lib/qtmaterialstyle.h"
+#include "lib/qtmaterialstatetransition.h"
+
+/*!
+ * \class QtMaterialSliderStateMachine
+ * \internal
+ */
+
+QtMaterialSliderStateMachine::QtMaterialSliderStateMachine(
+ QtMaterialSlider *slider,
+ QtMaterialSliderThumb *thumb,
+ QtMaterialSliderTrack *track)
+ : QStateMachine(slider),
+ m_slider(slider),
+ m_thumb(thumb),
+ m_track(track),
+ m_topState(new QState(QState::ParallelStates)),
+ m_fstState(new QState(m_topState)),
+ m_sndState(new QState(m_topState)),
+ m_inactiveState(new QState(m_fstState)),
+ m_focusState(new QState(m_fstState)),
+ m_slidingState(new QState(m_fstState)),
+ m_pulseOutState(new QState(m_focusState)),
+ m_pulseInState(new QState(m_focusState)),
+ m_minState(new QState(m_sndState)),
+ m_normalState(new QState(m_sndState))
+{
+ addState(m_topState);
+ setInitialState(m_topState);
+
+ m_fstState->setInitialState(m_inactiveState);
+ m_focusState->setInitialState(m_pulseOutState);
+
+ m_inactiveState->assignProperty(thumb, "haloSize", 0);
+ m_slidingState->assignProperty(thumb, "haloSize", 0);
+
+ m_pulseOutState->assignProperty(thumb, "haloSize", 35);
+ m_pulseInState->assignProperty(thumb, "haloSize", 28);
+
+ m_inactiveState->assignProperty(thumb, "diameter", 11);
+ m_focusState->assignProperty(thumb, "diameter", 11);
+ m_slidingState->assignProperty(thumb, "diameter", 17);
+
+ QAbstractTransition *transition;
+ QtMaterialStateTransition *customTransition;
+ QPropertyAnimation *animation;
+
+ // Show halo on mouse enter
+
+ customTransition = new QtMaterialStateTransition(SliderNoFocusMouseEnter);
+ customTransition->setTargetState(m_focusState);
+
+ animation = new QPropertyAnimation(thumb, "haloSize", this);
+ animation->setEasingCurve(QEasingCurve::InOutSine);
+ customTransition->addAnimation(animation);
+ customTransition->addAnimation(new QPropertyAnimation(track, "fillColor", this));
+ m_inactiveState->addTransition(customTransition);
+
+ // Show halo on focus in
+
+ transition = new QEventTransition(slider, QEvent::FocusIn);
+ transition->setTargetState(m_focusState);
+
+ animation = new QPropertyAnimation(thumb, "haloSize", this);
+ animation->setEasingCurve(QEasingCurve::InOutSine);
+ transition->addAnimation(animation);
+ transition->addAnimation(new QPropertyAnimation(track, "fillColor", this));
+ m_inactiveState->addTransition(transition);
+
+ // Hide halo on focus out
+
+ transition = new QEventTransition(slider, QEvent::FocusOut);
+ transition->setTargetState(m_inactiveState);
+
+ animation = new QPropertyAnimation(thumb, "haloSize", this);
+ animation->setEasingCurve(QEasingCurve::InOutSine);
+ transition->addAnimation(animation);
+ transition->addAnimation(new QPropertyAnimation(track, "fillColor", this));
+ m_focusState->addTransition(transition);
+
+ // Hide halo on mouse leave, except if widget has focus
+
+ customTransition = new QtMaterialStateTransition(SliderNoFocusMouseLeave);
+ customTransition->setTargetState(m_inactiveState);
+
+ animation = new QPropertyAnimation(thumb, "haloSize", this);
+ animation->setEasingCurve(QEasingCurve::InOutSine);
+ customTransition->addAnimation(animation);
+ customTransition->addAnimation(new QPropertyAnimation(track, "fillColor", this));
+ m_focusState->addTransition(customTransition);
+
+ // Pulse in
+
+ transition = new QSignalTransition(m_pulseOutState, SIGNAL(propertiesAssigned()));
+ transition->setTargetState(m_pulseInState);
+
+ animation = new QPropertyAnimation(thumb, "haloSize", this);
+ animation->setEasingCurve(QEasingCurve::InOutSine);
+ animation->setDuration(1000);
+ transition->addAnimation(animation);
+ m_pulseOutState->addTransition(transition);
+
+ // Pulse out
+
+ transition = new QSignalTransition(m_pulseInState, SIGNAL(propertiesAssigned()));
+ transition->setTargetState(m_pulseOutState);
+
+ animation = new QPropertyAnimation(thumb, "haloSize", this);
+ animation->setEasingCurve(QEasingCurve::InOutSine);
+ animation->setDuration(1000);
+ transition->addAnimation(animation);
+ m_pulseInState->addTransition(transition);
+
+ // Slider pressed
+
+ transition = new QSignalTransition(slider, SIGNAL(sliderPressed()));
+ transition->setTargetState(m_slidingState);
+ animation = new QPropertyAnimation(thumb, "diameter", this);
+ animation->setDuration(70);
+ transition->addAnimation(animation);
+
+ animation = new QPropertyAnimation(thumb, "haloSize", this);
+ animation->setEasingCurve(QEasingCurve::InOutSine);
+ transition->addAnimation(animation);
+ m_focusState->addTransition(transition);
+
+ // Slider released
+
+ transition = new QSignalTransition(slider, SIGNAL(sliderReleased()));
+ transition->setTargetState(m_focusState);
+ animation = new QPropertyAnimation(thumb, "diameter", this);
+ animation->setDuration(70);
+ transition->addAnimation(animation);
+
+ animation = new QPropertyAnimation(thumb, "haloSize", this);
+ animation->setEasingCurve(QEasingCurve::InOutSine);
+ transition->addAnimation(animation);
+ m_slidingState->addTransition(transition);
+
+ // Min. value transitions
+
+ m_minState->assignProperty(thumb, "borderWidth", 2);
+ m_normalState->assignProperty(thumb, "borderWidth", 0);
+
+ m_sndState->setInitialState(m_minState);
+
+ customTransition = new QtMaterialStateTransition(SliderChangedFromMinimum);
+ customTransition->setTargetState(m_normalState);
+
+ animation = new QPropertyAnimation(thumb, "fillColor", this);
+ animation->setDuration(200);
+ customTransition->addAnimation(animation);
+
+ animation = new QPropertyAnimation(thumb, "haloColor", this);
+ animation->setDuration(300);
+ customTransition->addAnimation(animation);
+
+ animation = new QPropertyAnimation(thumb, "borderColor", this);
+ animation->setDuration(200);
+ customTransition->addAnimation(animation);
+
+ animation = new QPropertyAnimation(thumb, "borderWidth", this);
+ animation->setDuration(200);
+ customTransition->addAnimation(animation);
+
+ m_minState->addTransition(customTransition);
+
+ customTransition = new QtMaterialStateTransition(SliderChangedToMinimum);
+ customTransition->setTargetState(m_minState);
+
+ animation = new QPropertyAnimation(thumb, "fillColor", this);
+ animation->setDuration(200);
+ customTransition->addAnimation(animation);
+
+ animation = new QPropertyAnimation(thumb, "haloColor", this);
+ animation->setDuration(300);
+ customTransition->addAnimation(animation);
+
+ animation = new QPropertyAnimation(thumb, "borderColor", this);
+ animation->setDuration(200);
+ customTransition->addAnimation(animation);
+
+ animation = new QPropertyAnimation(thumb, "borderWidth", this);
+ animation->setDuration(200);
+ customTransition->addAnimation(animation);
+
+ m_normalState->addTransition(customTransition);
+
+ setupProperties();
+}
+
+QtMaterialSliderStateMachine::~QtMaterialSliderStateMachine()
+{
+}
+
+void QtMaterialSliderStateMachine::setupProperties()
+{
+ QColor trackColor = m_slider->trackColor();
+ QColor thumbColor = m_slider->thumbColor();
+
+ m_inactiveState->assignProperty(m_track, "fillColor", trackColor.lighter(130));
+ m_slidingState->assignProperty(m_track, "fillColor", trackColor);
+ m_focusState->assignProperty(m_track, "fillColor", trackColor);
+
+ QColor holeColor = m_slider->palette().color(QPalette::Base);
+
+ if (m_slider->parentWidget()) {
+ holeColor = m_slider->parentWidget()->palette().color(m_slider->backgroundRole());
+ }
+
+ m_minState->assignProperty(m_thumb, "fillColor", holeColor);
+
+ m_minState->assignProperty(m_thumb, "haloColor", trackColor);
+ m_minState->assignProperty(m_thumb, "borderColor", trackColor);
+
+ m_normalState->assignProperty(m_thumb, "fillColor", thumbColor);
+ m_normalState->assignProperty(m_thumb, "haloColor", thumbColor);
+ m_normalState->assignProperty(m_thumb, "borderColor", thumbColor);
+
+ m_slider->update();
+}
+
+/*!
+ * \class QtMaterialSliderThumb
+ * \internal
+ */
+
+QtMaterialSliderThumb::QtMaterialSliderThumb(QtMaterialSlider *slider)
+ : QtMaterialOverlayWidget(slider->parentWidget()),
+ m_slider(slider),
+ m_diameter(11),
+ m_borderWidth(2),
+ m_haloSize(0),
+ m_offset(0)
+{
+ slider->installEventFilter(this);
+
+ setAttribute(Qt::WA_TransparentForMouseEvents, true);
+}
+
+QtMaterialSliderThumb::~QtMaterialSliderThumb()
+{
+}
+
+bool QtMaterialSliderThumb::eventFilter(QObject *obj, QEvent *event)
+{
+ if (QEvent::ParentChange == event->type()) {
+ setParent(m_slider->parentWidget());
+ }
+
+ return QtMaterialOverlayWidget::eventFilter(obj, event);
+}
+
+void QtMaterialSliderThumb::paintEvent(QPaintEvent *event)
+{
+ Q_UNUSED(event)
+
+ QPainter painter(this);
+ painter.setRenderHint(QPainter::Antialiasing);
+
+ // Halo
+
+ QBrush brush;
+ brush.setStyle(Qt::SolidPattern);
+ brush.setColor(m_haloColor);
+ painter.setBrush(brush);
+ painter.setPen(Qt::NoPen);
+
+ QPointF disp = Qt::Horizontal == m_slider->orientation()
+ ? QPointF(QT_MATERIAL_SLIDER_MARGIN + m_offset, m_slider->height()/2)
+ : QPointF(m_slider->width()/2, QT_MATERIAL_SLIDER_MARGIN + m_offset);
+
+ QRectF halo((m_slider->pos() - QPointF(m_haloSize, m_haloSize)/2) + disp,
+ QSizeF(m_haloSize, m_haloSize));
+
+ painter.setOpacity(0.15);
+ painter.drawEllipse(halo);
+
+ // Knob
+
+ const bool isMin = m_slider->value() == m_slider->minimum();
+
+ brush.setColor(m_slider->isEnabled()
+ ? m_fillColor
+ : m_slider->disabledColor());
+ painter.setBrush(!m_slider->isEnabled() && isMin
+ ? Qt::NoBrush
+ : brush);
+
+ if (m_slider->isEnabled() || isMin) {
+ QPen pen;
+ pen.setColor(m_borderColor);
+ pen.setWidthF((isMin && !m_slider->isEnabled()) ? 1.7 : m_borderWidth);
+ painter.setPen(pen);
+ } else {
+ painter.setPen(Qt::NoPen);
+ }
+
+ QRectF geometry = Qt::Horizontal == m_slider->orientation()
+ ? QRectF(m_offset, m_slider->height()/2 - QT_MATERIAL_SLIDER_MARGIN,
+ QT_MATERIAL_SLIDER_MARGIN*2, QT_MATERIAL_SLIDER_MARGIN*2).translated(m_slider->pos())
+ : QRectF(m_slider->width()/2 - QT_MATERIAL_SLIDER_MARGIN, m_offset,
+ QT_MATERIAL_SLIDER_MARGIN*2, QT_MATERIAL_SLIDER_MARGIN*2).translated(m_slider->pos());
+
+ qreal s = m_slider->isEnabled() ? m_diameter : 7;
+
+ QRectF thumb(0, 0, s, s);
+
+ thumb.moveCenter(geometry.center());
+
+ painter.setOpacity(1);
+ painter.drawEllipse(thumb);
+}
+
+/*!
+ * \class QtMaterialSliderTrack
+ * \internal
+ */
+
+QtMaterialSliderTrack::QtMaterialSliderTrack(QtMaterialSliderThumb *thumb, QtMaterialSlider *slider)
+ : QtMaterialOverlayWidget(slider->parentWidget()),
+ m_slider(slider),
+ m_thumb(thumb),
+ m_trackWidth(2)
+{
+ slider->installEventFilter(this);
+
+ setAttribute(Qt::WA_TransparentForMouseEvents, true);
+
+ connect(slider, SIGNAL(sliderMoved(int)), this, SLOT(update()));
+}
+
+QtMaterialSliderTrack::~QtMaterialSliderTrack()
+{
+}
+
+bool QtMaterialSliderTrack::eventFilter(QObject *obj, QEvent *event)
+{
+ if (QEvent::ParentChange == event->type()) {
+ setParent(m_slider->parentWidget());
+ }
+
+ return QtMaterialOverlayWidget::eventFilter(obj, event);
+}
+
+void QtMaterialSliderTrack::paintEvent(QPaintEvent *event)
+{
+ Q_UNUSED(event)
+
+ QPainter painter(this);
+ painter.setRenderHint(QPainter::Antialiasing);
+
+ QBrush fg;
+ fg.setStyle(Qt::SolidPattern);
+ fg.setColor(m_slider->isEnabled() ? m_slider->thumbColor()
+ : m_slider->disabledColor());
+ QBrush bg;
+ bg.setStyle(Qt::SolidPattern);
+ bg.setColor(m_slider->isEnabled() ? m_fillColor
+ : m_slider->disabledColor());
+
+ qreal offset = m_thumb->offset();
+
+ if (Qt::Horizontal == m_slider->orientation()) {
+ painter.translate(m_slider->x() + QT_MATERIAL_SLIDER_MARGIN,
+ m_slider->y() + m_slider->height()/2
+ - static_cast(m_trackWidth)/2);
+ } else {
+ painter.translate(m_slider->x() + m_slider->width()/2
+ - static_cast(m_trackWidth)/2,
+ m_slider->y() + QT_MATERIAL_SLIDER_MARGIN);
+ }
+
+ QRectF geometry = Qt::Horizontal == m_slider->orientation()
+ ? QRectF(0, 0, m_slider->width() - QT_MATERIAL_SLIDER_MARGIN*2, m_trackWidth)
+ : QRectF(0, 0, m_trackWidth, m_slider->height() - QT_MATERIAL_SLIDER_MARGIN*2);
+
+ QRectF bgRect;
+ QRectF fgRect;
+
+ if (Qt::Horizontal == m_slider->orientation()) {
+ fgRect = QRectF(0, 0, offset, m_trackWidth);
+ bgRect = QRectF(offset, 0, m_slider->width(), m_trackWidth).intersected(geometry);
+ } else {
+ fgRect = QRectF(0, 0, m_trackWidth, offset);
+ bgRect = QRectF(0, offset, m_trackWidth, m_slider->height()).intersected(geometry);
+ }
+
+ if (!m_slider->isEnabled()) {
+ fgRect = fgRect.width() < 9 ? QRectF() : fgRect.adjusted(0, 0, -6, 0);
+ bgRect = bgRect.width() < 9 ? QRectF() : bgRect.adjusted(6, 0, 0, 0);
+ }
+
+ if (m_slider->invertedAppearance()) {
+ qSwap(bgRect, fgRect);
+ }
+
+ painter.fillRect(bgRect, bg);
+ painter.fillRect(fgRect, fg);
+}
diff --git a/src/material-widgets/qtmaterialslider_internal.h b/src/material-widgets/qtmaterialslider_internal.h
new file mode 100644
index 0000000..6f2649e
--- /dev/null
+++ b/src/material-widgets/qtmaterialslider_internal.h
@@ -0,0 +1,222 @@
+#ifndef QTMATERIALSLIDER_INTERNAL_H
+#define QTMATERIALSLIDER_INTERNAL_H
+
+#include
+#include "lib/qtmaterialoverlaywidget.h"
+
+class QtMaterialSlider;
+class QtMaterialSliderThumb;
+class QtMaterialSliderTrack;
+
+class QtMaterialSliderStateMachine : public QStateMachine
+{
+ Q_OBJECT
+
+public:
+ QtMaterialSliderStateMachine(QtMaterialSlider *slider,
+ QtMaterialSliderThumb *thumb,
+ QtMaterialSliderTrack *track);
+ ~QtMaterialSliderStateMachine();
+
+ void setupProperties();
+
+private:
+ Q_DISABLE_COPY(QtMaterialSliderStateMachine)
+
+ QtMaterialSlider *const m_slider;
+ QtMaterialSliderThumb *const m_thumb;
+ QtMaterialSliderTrack *const m_track;
+ QState *const m_topState;
+ QState *const m_fstState;
+ QState *const m_sndState;
+ QState *const m_inactiveState;
+ QState *const m_focusState;
+ QState *const m_slidingState;
+ QState *const m_pulseOutState;
+ QState *const m_pulseInState;
+ QState *const m_minState;
+ QState *const m_normalState;
+};
+
+class QtMaterialSliderThumb : public QtMaterialOverlayWidget
+{
+ Q_OBJECT
+
+ Q_PROPERTY(qreal diameter WRITE setDiameter READ diameter)
+ Q_PROPERTY(qreal borderWidth WRITE setBorderWidth READ borderWidth)
+ Q_PROPERTY(QColor borderColor WRITE setBorderColor READ borderColor)
+ Q_PROPERTY(QColor fillColor WRITE setFillColor READ fillColor)
+ Q_PROPERTY(qreal haloSize WRITE setHaloSize READ haloSize)
+ Q_PROPERTY(QColor haloColor WRITE setHaloColor READ haloColor)
+
+public:
+ explicit QtMaterialSliderThumb(QtMaterialSlider *slider);
+ ~QtMaterialSliderThumb();
+
+ inline void setDiameter(qreal diameter);
+ inline qreal diameter() const;
+
+ inline void setBorderWidth(qreal width);
+ inline qreal borderWidth() const;
+
+ inline void setBorderColor(const QColor &color);
+ inline QColor borderColor() const;
+
+ inline void setFillColor(const QColor &color);
+ inline QColor fillColor() const;
+
+ inline void setHaloSize(qreal size);
+ inline qreal haloSize() const;
+
+ inline void setHaloColor(const QColor &color);
+ inline QColor haloColor() const;
+
+ inline void setOffset(int offset);
+ inline int offset() const;
+
+protected:
+ bool eventFilter(QObject *obj, QEvent *event) Q_DECL_OVERRIDE;
+ void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE;
+
+private:
+ Q_DISABLE_COPY(QtMaterialSliderThumb)
+
+ const QtMaterialSlider *const m_slider;
+ QColor m_borderColor;
+ QColor m_fillColor;
+ QColor m_haloColor;
+ qreal m_diameter;
+ qreal m_borderWidth;
+ qreal m_haloSize;
+ int m_offset;
+};
+
+inline void QtMaterialSliderThumb::setDiameter(qreal diameter)
+{
+ m_diameter = diameter;
+ update();
+}
+
+inline qreal QtMaterialSliderThumb::diameter() const
+{
+ return m_diameter;
+}
+
+inline void QtMaterialSliderThumb::setBorderWidth(qreal width)
+{
+ m_borderWidth = width;
+ update();
+}
+
+inline qreal QtMaterialSliderThumb::borderWidth() const
+{
+ return m_borderWidth;
+}
+
+inline void QtMaterialSliderThumb::setBorderColor(const QColor &color)
+{
+ m_borderColor = color;
+ update();
+}
+
+inline QColor QtMaterialSliderThumb::borderColor() const
+{
+ return m_borderColor;
+}
+
+inline void QtMaterialSliderThumb::setFillColor(const QColor &color)
+{
+ m_fillColor = color;
+ update();
+}
+
+inline QColor QtMaterialSliderThumb::fillColor() const
+{
+ return m_fillColor;
+}
+
+inline void QtMaterialSliderThumb::setHaloSize(qreal size)
+{
+ m_haloSize = size;
+ update();
+}
+
+inline qreal QtMaterialSliderThumb::haloSize() const
+{
+ return m_haloSize;
+}
+
+inline void QtMaterialSliderThumb::setHaloColor(const QColor &color)
+{
+ m_haloColor = color;
+ update();
+}
+
+inline QColor QtMaterialSliderThumb::haloColor() const
+{
+ return m_haloColor;
+}
+
+inline void QtMaterialSliderThumb::setOffset(int offset)
+{
+ m_offset = offset;
+ update();
+}
+
+inline int QtMaterialSliderThumb::offset() const
+{
+ return m_offset;
+}
+
+class QtMaterialSliderTrack : public QtMaterialOverlayWidget
+{
+ Q_OBJECT
+
+ Q_PROPERTY(QColor fillColor WRITE setFillColor READ fillColor)
+
+public:
+ explicit QtMaterialSliderTrack(QtMaterialSliderThumb *thumb, QtMaterialSlider *slider);
+ ~QtMaterialSliderTrack();
+
+ inline void setFillColor(const QColor &color);
+ inline QColor fillColor() const;
+
+ inline void setTrackWidth(int width);
+ inline int trackWidth() const;
+
+protected:
+ bool eventFilter(QObject *obj, QEvent *event) Q_DECL_OVERRIDE;
+ void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE;
+
+private:
+ Q_DISABLE_COPY(QtMaterialSliderTrack)
+
+ const QtMaterialSlider *const m_slider;
+ QtMaterialSliderThumb *const m_thumb;
+ QColor m_fillColor;
+ int m_trackWidth;
+};
+
+inline void QtMaterialSliderTrack::setFillColor(const QColor &color)
+{
+ m_fillColor = color;
+ update();
+}
+
+inline QColor QtMaterialSliderTrack::fillColor() const
+{
+ return m_fillColor;
+}
+
+void QtMaterialSliderTrack::setTrackWidth(int width)
+{
+ m_trackWidth = width;
+ update();
+}
+
+int QtMaterialSliderTrack::trackWidth() const
+{
+ return m_trackWidth;
+}
+
+#endif // QTMATERIALSLIDER_INTERNAL_H
diff --git a/src/material-widgets/qtmaterialslider_p.h b/src/material-widgets/qtmaterialslider_p.h
new file mode 100644
index 0000000..ff6b7ca
--- /dev/null
+++ b/src/material-widgets/qtmaterialslider_p.h
@@ -0,0 +1,49 @@
+#ifndef QTMATERIALSLIDER_P_H
+#define QTMATERIALSLIDER_P_H
+
+#include
+#include
+#include
+
+class QtMaterialSlider;
+class QtMaterialSliderThumb;
+class QtMaterialSliderTrack;
+class QtMaterialSliderStateMachine;
+
+class QtMaterialSliderPrivate
+{
+ Q_DISABLE_COPY(QtMaterialSliderPrivate)
+ Q_DECLARE_PUBLIC(QtMaterialSlider)
+
+public:
+ QtMaterialSliderPrivate(QtMaterialSlider *q);
+ ~QtMaterialSliderPrivate();
+
+ void init();
+
+ QRectF trackBoundingRect() const;
+ QRectF thumbBoundingRect() const;
+
+ int valueFromPosition(const QPoint &pos) const;
+
+ void setHovered(bool status);
+
+ QtMaterialSlider *const q_ptr;
+ QtMaterialSliderThumb *thumb;
+ QtMaterialSliderTrack *track;
+ QtMaterialSliderStateMachine *stateMachine;
+ QColor thumbColor;
+ QColor trackColor;
+ QColor disabledColor;
+ int stepTo;
+ int oldValue;
+ int trackWidth;
+ bool hoverTrack;
+ bool hoverThumb;
+ bool hover;
+ bool step;
+ bool pageStepMode;
+ bool useThemeColors;
+};
+
+#endif // QTMATERIALSLIDER_P_H
diff --git a/src/material-widgets/qtmaterialsnackbar.cpp b/src/material-widgets/qtmaterialsnackbar.cpp
new file mode 100644
index 0000000..323ff20
--- /dev/null
+++ b/src/material-widgets/qtmaterialsnackbar.cpp
@@ -0,0 +1,270 @@
+#include "qtmaterialsnackbar.h"
+#include "qtmaterialsnackbar_p.h"
+#include
+#include
+#include "qtmaterialsnackbar_internal.h"
+#include "lib/qtmaterialstyle.h"
+#include "lib/qtmaterialstatetransition.h"
+#include
+
+/*!
+ * \class QtMaterialSnackbarPrivate
+ * \internal
+ */
+
+QtMaterialSnackbarPrivate::QtMaterialSnackbarPrivate(QtMaterialSnackbar *q)
+ : q_ptr(q)
+{
+}
+
+QtMaterialSnackbarPrivate::~QtMaterialSnackbarPrivate()
+{
+}
+
+void QtMaterialSnackbarPrivate::init()
+{
+ Q_Q(QtMaterialSnackbar);
+
+ stateMachine = new QtMaterialSnackbarStateMachine(q);
+ bgOpacity = 0.9;
+ duration = 3000;
+ boxWidth = 300;
+ clickDismiss = false;
+ useThemeColors = true;
+
+ q->setAttribute(Qt::WA_TransparentForMouseEvents);
+
+ QFont font("Roboto", 10, QFont::Medium);
+ font.setCapitalization(QFont::AllUppercase);
+ q->setFont(font);
+
+ stateMachine->start();
+ QCoreApplication::processEvents();
+}
+
+/*!
+ * \class QtMaterialSnackbar
+ */
+
+QtMaterialSnackbar::QtMaterialSnackbar(QWidget *parent)
+ : QtMaterialOverlayWidget(parent),
+ d_ptr(new QtMaterialSnackbarPrivate(this))
+{
+ d_func()->init();
+}
+
+QtMaterialSnackbar::~QtMaterialSnackbar()
+{
+}
+
+void QtMaterialSnackbar::setAutoHideDuration(int duration)
+{
+ Q_D(QtMaterialSnackbar);
+
+ d->duration = duration;
+}
+
+int QtMaterialSnackbar::autoHideDuration() const
+{
+ Q_D(const QtMaterialSnackbar);
+
+ return d->duration;
+}
+
+void QtMaterialSnackbar::setUseThemeColors(bool value)
+{
+ Q_D(QtMaterialSnackbar);
+
+ if (d->useThemeColors == value) {
+ return;
+ }
+
+ d->useThemeColors = value;
+ update();
+}
+
+bool QtMaterialSnackbar::useThemeColors() const
+{
+ Q_D(const QtMaterialSnackbar);
+
+ return d->useThemeColors;
+}
+
+void QtMaterialSnackbar::setBackgroundColor(const QColor &color)
+{
+ Q_D(QtMaterialSnackbar);
+
+ d->backgroundColor = color;
+
+ MATERIAL_DISABLE_THEME_COLORS
+ update();
+}
+
+QColor QtMaterialSnackbar::backgroundColor() const
+{
+ Q_D(const QtMaterialSnackbar);
+
+ if (d->useThemeColors || !d->backgroundColor.isValid()) {
+ return QtMaterialStyle::instance().themeColor("text");
+ } else {
+ return d->backgroundColor;
+ }
+}
+
+void QtMaterialSnackbar::setBackgroundOpacity(qreal opacity)
+{
+ Q_D(QtMaterialSnackbar);
+
+ d->bgOpacity = opacity;
+ update();
+}
+
+qreal QtMaterialSnackbar::backgroundOpacity() const
+{
+ Q_D(const QtMaterialSnackbar);
+
+ return d->bgOpacity;
+}
+
+void QtMaterialSnackbar::setTextColor(const QColor &color)
+{
+ Q_D(QtMaterialSnackbar);
+
+ d->textColor = color;
+
+ MATERIAL_DISABLE_THEME_COLORS
+ update();
+}
+
+QColor QtMaterialSnackbar::textColor() const
+{
+ Q_D(const QtMaterialSnackbar);
+
+ if (d->useThemeColors || !d->textColor.isValid()) {
+ return QtMaterialStyle::instance().themeColor("canvas");
+ } else {
+ return d->textColor;
+ }
+}
+
+void QtMaterialSnackbar::setFontSize(qreal size)
+{
+ QFont f(font());
+ f.setPointSizeF(size);
+ setFont(f);
+
+ update();
+}
+
+qreal QtMaterialSnackbar::fontSize() const
+{
+ return font().pointSizeF();
+}
+
+void QtMaterialSnackbar::setBoxWidth(int width)
+{
+ Q_D(QtMaterialSnackbar);
+
+ d->boxWidth = width;
+ update();
+}
+
+int QtMaterialSnackbar::boxWidth() const
+{
+ Q_D(const QtMaterialSnackbar);
+
+ return d->boxWidth;
+}
+
+void QtMaterialSnackbar::setClickToDismissMode(bool value)
+{
+ Q_D(QtMaterialSnackbar);
+
+ d->clickDismiss = value;
+}
+
+bool QtMaterialSnackbar::clickToDismissMode() const
+{
+ Q_D(const QtMaterialSnackbar);
+
+ return d->clickDismiss;
+}
+
+void QtMaterialSnackbar::addMessage(const QString &message)
+{
+ Q_D(QtMaterialSnackbar);
+
+ d->messages.push_back(message);
+ d->stateMachine->postEvent(new QtMaterialStateTransitionEvent(SnackbarShowTransition));
+ raise();
+}
+
+void QtMaterialSnackbar::addInstantMessage(const QString &message)
+{
+ Q_D(QtMaterialSnackbar);
+
+ if (d->messages.isEmpty()) {
+ d->messages.push_back(message);
+ } else {
+ d->messages.insert(1, message);
+ }
+
+ d->stateMachine->progress();
+}
+
+void QtMaterialSnackbar::dequeue()
+{
+ Q_D(QtMaterialSnackbar);
+
+ if (d->messages.isEmpty()) {
+ return;
+ }
+
+ d->messages.removeFirst();
+
+ if (!d->messages.isEmpty()) {
+ d->stateMachine->postEvent(new QtMaterialStateTransitionEvent(SnackbarNextTransition));
+ } else {
+ d->stateMachine->postEvent(new QtMaterialStateTransitionEvent(SnackbarWaitTransition));
+ }
+}
+
+void QtMaterialSnackbar::paintEvent(QPaintEvent *event)
+{
+ Q_UNUSED(event)
+
+ Q_D(QtMaterialSnackbar);
+
+ if (d->messages.isEmpty()) {
+ return;
+ }
+
+ QString message = d->messages.first();
+
+ QPainter painter(this);
+ painter.setRenderHint(QPainter::Antialiasing);
+
+ QBrush brush;
+ brush.setStyle(Qt::SolidPattern);
+ brush.setColor(backgroundColor());
+ painter.setBrush(brush);
+ painter.setOpacity(d->bgOpacity);
+
+ QRect r(0, 0, d->boxWidth, 40);
+
+ painter.setPen(Qt::white);
+ QRect br = painter.boundingRect(r, Qt::AlignHCenter | Qt::AlignTop | Qt::TextWordWrap, message);
+
+ painter.setPen(Qt::NoPen);
+ r = br.united(r).adjusted(-10, -10, 10, 20);
+
+ const qreal s = 1-d->stateMachine->offset();
+
+ painter.translate((width()-(r.width()-20))/2,
+ height()+10-s*(r.height()));
+
+ br.moveCenter(r.center());
+ painter.drawRoundedRect(r.adjusted(0, 0, 0, 3), 3, 3);
+ painter.setPen(textColor());
+ painter.drawText(br, Qt::AlignHCenter | Qt::AlignTop | Qt::TextWordWrap, message);
+}
diff --git a/src/material-widgets/qtmaterialsnackbar.h b/src/material-widgets/qtmaterialsnackbar.h
new file mode 100644
index 0000000..6d94740
--- /dev/null
+++ b/src/material-widgets/qtmaterialsnackbar.h
@@ -0,0 +1,57 @@
+#ifndef QTMATERIALSNACKBAR_H
+#define QTMATERIALSNACKBAR_H
+
+#include "lib/qtmaterialoverlaywidget.h"
+
+class QtMaterialSnackbarPrivate;
+
+class QtMaterialSnackbar : public QtMaterialOverlayWidget
+{
+ Q_OBJECT
+
+public:
+ explicit QtMaterialSnackbar(QWidget *parent = 0);
+ ~QtMaterialSnackbar();
+
+ void setAutoHideDuration(int duration);
+ int autoHideDuration() const;
+
+ void setUseThemeColors(bool value);
+ bool useThemeColors() const;
+
+ void setBackgroundColor(const QColor &color);
+ QColor backgroundColor() const;
+
+ void setBackgroundOpacity(qreal opacity);
+ qreal backgroundOpacity() const;
+
+ void setTextColor(const QColor &color);
+ QColor textColor() const;
+
+ void setFontSize(qreal size);
+ qreal fontSize() const;
+
+ void setBoxWidth(int width);
+ int boxWidth() const;
+
+ void setClickToDismissMode(bool value);
+ bool clickToDismissMode() const;
+
+public slots:
+ void addMessage(const QString &message);
+ void addInstantMessage(const QString &message);
+
+protected slots:
+ void dequeue();
+
+protected:
+ void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE;
+
+ const QScopedPointer d_ptr;
+
+private:
+ Q_DISABLE_COPY(QtMaterialSnackbar)
+ Q_DECLARE_PRIVATE(QtMaterialSnackbar)
+};
+
+#endif // QTMATERIALSNACKBAR_H
diff --git a/src/material-widgets/qtmaterialsnackbar_internal.cpp b/src/material-widgets/qtmaterialsnackbar_internal.cpp
new file mode 100644
index 0000000..9e6167d
--- /dev/null
+++ b/src/material-widgets/qtmaterialsnackbar_internal.cpp
@@ -0,0 +1,99 @@
+#include "qtmaterialsnackbar_internal.h"
+#include
+#include "qtmaterialsnackbar.h"
+#include "lib/qtmaterialstatetransition.h"
+#include
+
+QtMaterialSnackbarStateMachine::QtMaterialSnackbarStateMachine(QtMaterialSnackbar *parent)
+ : QStateMachine(parent),
+ m_snackbar(parent)
+{
+ m_timer.setSingleShot(true);
+
+ QState *hiddenState = new QState;
+ QState *visibleState = new QState;
+ QState *finalState = new QState;
+
+ addState(hiddenState);
+ addState(visibleState);
+ addState(finalState);
+
+ setInitialState(hiddenState);
+
+ QtMaterialStateTransition *transition;
+
+ transition = new QtMaterialStateTransition(SnackbarShowTransition);
+ transition->setTargetState(visibleState);
+ hiddenState->addTransition(transition);
+
+ transition = new QtMaterialStateTransition(SnackbarHideTransition);
+ transition->setTargetState(visibleState);
+ hiddenState->addTransition(transition);
+
+ transition = new QtMaterialStateTransition(SnackbarHideTransition);
+ transition->setTargetState(finalState);
+ visibleState->addTransition(transition);
+
+ transition = new QtMaterialStateTransition(SnackbarWaitTransition);
+ transition->setTargetState(hiddenState);
+ finalState->addTransition(transition);
+
+ transition = new QtMaterialStateTransition(SnackbarNextTransition);
+ transition->setTargetState(visibleState);
+ finalState->addTransition(transition);
+
+ connect(visibleState, SIGNAL(propertiesAssigned()),
+ this, SLOT(snackbarShown()));
+ connect(finalState, SIGNAL(propertiesAssigned()),
+ m_snackbar, SLOT(dequeue()));
+
+ QPropertyAnimation *animation;
+
+ animation = new QPropertyAnimation(this, "offset", this);
+ animation->setEasingCurve(QEasingCurve::OutCubic);
+ animation->setDuration(300);
+ addDefaultAnimation(animation);
+
+ hiddenState->assignProperty(this, "offset", 1);
+ visibleState->assignProperty(this, "offset", 0);
+ finalState->assignProperty(this, "offset", 1);
+
+ connect(&m_timer, SIGNAL(timeout()), this, SLOT(progress()));
+
+ m_snackbar->installEventFilter(this);
+}
+
+QtMaterialSnackbarStateMachine::~QtMaterialSnackbarStateMachine()
+{
+}
+
+bool QtMaterialSnackbarStateMachine::eventFilter(QObject *watched, QEvent *event)
+{
+ if (QEvent::MouseButtonPress == event->type() && m_snackbar->clickToDismissMode()) {
+ progress();
+ }
+ return QStateMachine::eventFilter(watched, event);
+}
+
+void QtMaterialSnackbarStateMachine::setOffset(qreal offset)
+{
+ m_offset = offset;
+ m_snackbar->update();
+}
+
+void QtMaterialSnackbarStateMachine::progress()
+{
+ m_timer.stop();
+ postEvent(new QtMaterialStateTransitionEvent(SnackbarHideTransition));
+ if (m_snackbar->clickToDismissMode()) {
+ m_snackbar->setAttribute(Qt::WA_TransparentForMouseEvents, true);
+ }
+}
+
+void QtMaterialSnackbarStateMachine::snackbarShown()
+{
+ m_timer.start(m_snackbar->autoHideDuration());
+ if (m_snackbar->clickToDismissMode()) {
+ m_snackbar->setAttribute(Qt::WA_TransparentForMouseEvents, false);
+ }
+}
diff --git a/src/material-widgets/qtmaterialsnackbar_internal.h b/src/material-widgets/qtmaterialsnackbar_internal.h
new file mode 100644
index 0000000..117a8e5
--- /dev/null
+++ b/src/material-widgets/qtmaterialsnackbar_internal.h
@@ -0,0 +1,44 @@
+#ifndef QTMATERIALSNACKBAR_INTERNAL_H
+#define QTMATERIALSNACKBAR_INTERNAL_H
+
+#include
+#include
+
+class QtMaterialSnackbar;
+
+class QtMaterialSnackbarStateMachine : public QStateMachine
+{
+ Q_OBJECT
+
+ Q_PROPERTY(qreal offset WRITE setOffset READ offset)
+
+public:
+ QtMaterialSnackbarStateMachine(QtMaterialSnackbar *parent);
+ ~QtMaterialSnackbarStateMachine();
+
+ void setOffset(qreal offset);
+ inline qreal offset() const;
+
+public slots:
+ void progress();
+
+protected slots:
+ void snackbarShown();
+
+protected:
+ bool eventFilter(QObject *watched, QEvent *event) Q_DECL_OVERRIDE;
+
+private:
+ Q_DISABLE_COPY(QtMaterialSnackbarStateMachine)
+
+ QtMaterialSnackbar *const m_snackbar;
+ QTimer m_timer;
+ qreal m_offset;
+};
+
+inline qreal QtMaterialSnackbarStateMachine::offset() const
+{
+ return m_offset;
+}
+
+#endif // QTMATERIALSNACKBAR_INTERNAL_H
diff --git a/src/material-widgets/qtmaterialsnackbar_p.h b/src/material-widgets/qtmaterialsnackbar_p.h
new file mode 100644
index 0000000..39501fd
--- /dev/null
+++ b/src/material-widgets/qtmaterialsnackbar_p.h
@@ -0,0 +1,33 @@
+#ifndef QTMATERIALSNACKBAR_P_H
+#define QTMATERIALSNACKBAR_P_H
+
+#include
+#include
+
+class QtMaterialSnackbar;
+class QtMaterialSnackbarStateMachine;
+
+class QtMaterialSnackbarPrivate
+{
+ Q_DISABLE_COPY(QtMaterialSnackbarPrivate)
+ Q_DECLARE_PUBLIC(QtMaterialSnackbar)
+
+public:
+ QtMaterialSnackbarPrivate(QtMaterialSnackbar *q);
+ ~QtMaterialSnackbarPrivate();
+
+ void init();
+
+ QtMaterialSnackbar *const q_ptr;
+ QtMaterialSnackbarStateMachine *stateMachine;
+ QColor backgroundColor;
+ QColor textColor;
+ qreal bgOpacity;
+ QList messages;
+ int duration;
+ int boxWidth;
+ bool clickDismiss;
+ bool useThemeColors;
+};
+
+#endif // QTMATERIALSNACKBAR_P_H
diff --git a/src/material-widgets/qtmaterialtable.cpp b/src/material-widgets/qtmaterialtable.cpp
new file mode 100644
index 0000000..171c04a
--- /dev/null
+++ b/src/material-widgets/qtmaterialtable.cpp
@@ -0,0 +1,2 @@
+#include "qtmaterialtable.h"
+#include "qtmaterialtable_p.h"
diff --git a/src/material-widgets/qtmaterialtable.h b/src/material-widgets/qtmaterialtable.h
new file mode 100644
index 0000000..b8953fa
--- /dev/null
+++ b/src/material-widgets/qtmaterialtable.h
@@ -0,0 +1,4 @@
+#ifndef QTMATERIALTABLE_H
+#define QTMATERIALTABLE_H
+
+#endif // QTMATERIALTABLE_H
diff --git a/src/material-widgets/qtmaterialtable_p.h b/src/material-widgets/qtmaterialtable_p.h
new file mode 100644
index 0000000..d3232a0
--- /dev/null
+++ b/src/material-widgets/qtmaterialtable_p.h
@@ -0,0 +1,4 @@
+#ifndef QTMATERIALTABLE_P_H
+#define QTMATERIALTABLE_P_H
+
+#endif // QTMATERIALTABLE_P_H
diff --git a/src/material-widgets/qtmaterialtabs.cpp b/src/material-widgets/qtmaterialtabs.cpp
new file mode 100644
index 0000000..dbc55bd
--- /dev/null
+++ b/src/material-widgets/qtmaterialtabs.cpp
@@ -0,0 +1,242 @@
+#include "qtmaterialtabs.h"
+#include "qtmaterialtabs_p.h"
+#include
+#include "qtmaterialtabs_internal.h"
+#include "lib/qtmaterialstyle.h"
+
+/*!
+ * \QtMaterialTabsPrivate
+ * \internal
+ */
+
+QtMaterialTabsPrivate::QtMaterialTabsPrivate(QtMaterialTabs *q)
+ : q_ptr(q)
+{
+}
+
+QtMaterialTabsPrivate::~QtMaterialTabsPrivate()
+{
+}
+
+void QtMaterialTabsPrivate::QtMaterialTabsPrivate::init()
+{
+ Q_Q(QtMaterialTabs);
+
+ inkBar = new QtMaterialTabsInkBar(q);
+ tabLayout = new QHBoxLayout;
+ rippleStyle = Material::CenteredRipple;
+ tab = -1;
+ showHalo = true;
+ useThemeColors = true;
+
+ q->setLayout(tabLayout);
+ q->setStyle(&QtMaterialStyle::instance());
+
+ tabLayout->setSpacing(0);
+ tabLayout->setMargin(0);
+}
+
+/*!
+ * \QtMaterialTabs
+ */
+
+QtMaterialTabs::QtMaterialTabs(QWidget *parent)
+ : QWidget(parent),
+ d_ptr(new QtMaterialTabsPrivate(this))
+{
+ d_func()->init();
+}
+
+QtMaterialTabs::~QtMaterialTabs()
+{
+}
+
+void QtMaterialTabs::setUseThemeColors(bool value)
+{
+ Q_D(QtMaterialTabs);
+
+ d->useThemeColors = value;
+}
+
+bool QtMaterialTabs::useThemeColors() const
+{
+ Q_D(const QtMaterialTabs);
+
+ return d->useThemeColors;
+}
+
+void QtMaterialTabs::setHaloVisible(bool value)
+{
+ Q_D(QtMaterialTabs);
+
+ d->showHalo = value;
+ updateTabs();
+}
+
+bool QtMaterialTabs::isHaloVisible() const
+{
+ Q_D(const QtMaterialTabs);
+
+ return d->showHalo;
+}
+
+void QtMaterialTabs::setRippleStyle(Material::RippleStyle style)
+{
+ Q_D(QtMaterialTabs);
+
+ d->rippleStyle = style;
+ updateTabs();
+}
+
+Material::RippleStyle QtMaterialTabs::rippleStyle() const
+{
+ Q_D(const QtMaterialTabs);
+
+ return d->rippleStyle;
+}
+
+void QtMaterialTabs::setInkColor(const QColor &color)
+{
+ Q_D(QtMaterialTabs);
+
+ d->inkColor = color;
+
+ MATERIAL_DISABLE_THEME_COLORS
+ d->inkBar->update();
+ update();
+}
+
+QColor QtMaterialTabs::inkColor() const
+{
+ Q_D(const QtMaterialTabs);
+
+ if (d->useThemeColors || !d->inkColor.isValid()) {
+ return QtMaterialStyle::instance().themeColor("accent1");
+ } else {
+ return d->inkColor;
+ }
+}
+
+void QtMaterialTabs::setBackgroundColor(const QColor &color)
+{
+ Q_D(QtMaterialTabs);
+
+ d->backgroundColor = color;
+
+ MATERIAL_DISABLE_THEME_COLORS
+ updateTabs();
+ update();
+}
+
+QColor QtMaterialTabs::backgroundColor() const
+{
+ Q_D(const QtMaterialTabs);
+
+ if (d->useThemeColors || !d->backgroundColor.isValid()) {
+ return QtMaterialStyle::instance().themeColor("primary1");
+ } else {
+ return d->backgroundColor;
+ }
+}
+
+void QtMaterialTabs::setTextColor(const QColor &color)
+{
+ Q_D(QtMaterialTabs);
+
+ d->textColor = color;
+
+ MATERIAL_DISABLE_THEME_COLORS
+ updateTabs();
+ update();
+}
+
+QColor QtMaterialTabs::textColor() const
+{
+ Q_D(const QtMaterialTabs);
+
+ if (d->useThemeColors || !d->textColor.isValid()) {
+ return QtMaterialStyle::instance().themeColor("canvas");
+ } else {
+ return d->textColor;
+ }
+}
+
+void QtMaterialTabs::setCurrentTab(QtMaterialTab *tab)
+{
+ Q_D(QtMaterialTabs);
+
+ setCurrentTab(d->tabLayout->indexOf(tab));
+}
+
+void QtMaterialTabs::setCurrentTab(int index)
+{
+ Q_D(QtMaterialTabs);
+
+ setTabActive(d->tab, false);
+ d->tab = index;
+ setTabActive(index, true);
+ d->inkBar->animate();
+
+ emit currentChanged(index);
+}
+
+void QtMaterialTabs::addTab(const QString &text, const QIcon &icon)
+{
+ Q_D(QtMaterialTabs);
+
+ QtMaterialTab *tab = new QtMaterialTab(this);
+ tab->setText(text);
+ tab->setHaloVisible(isHaloVisible());
+ tab->setRippleStyle(rippleStyle());
+
+ if (!icon.isNull()) {
+ tab->setIcon(icon);
+ tab->setIconSize(QSize(22, 22));
+ }
+
+ d->tabLayout->addWidget(tab);
+
+ if (-1 == d->tab) {
+ d->tab = 0;
+ d->inkBar->refreshGeometry();
+ d->inkBar->raise();
+ tab->setActive(true);
+ }
+}
+
+int QtMaterialTabs::currentIndex() const
+{
+ Q_D(const QtMaterialTabs);
+
+ return d->tab;
+}
+
+void QtMaterialTabs::setTabActive(int index, bool active)
+{
+ Q_D(QtMaterialTabs);
+
+ QtMaterialTab *tab;
+
+ if (index > -1) {
+ tab = static_cast(d->tabLayout->itemAt(index)->widget());
+ if (tab) {
+ tab->setActive(active);
+ }
+ }
+}
+
+void QtMaterialTabs::updateTabs()
+{
+ Q_D(QtMaterialTabs);
+
+ QtMaterialTab *tab;
+ for (int i = 0; i < d->tabLayout->count(); ++i) {
+ QLayoutItem *item = d->tabLayout->itemAt(i);
+ if ((tab = static_cast(item->widget()))) {
+ tab->setRippleStyle(d->rippleStyle);
+ tab->setHaloVisible(d->showHalo);
+ tab->setBackgroundColor(backgroundColor());
+ tab->setForegroundColor(textColor());
+ }
+ }
+}
diff --git a/src/material-widgets/qtmaterialtabs.h b/src/material-widgets/qtmaterialtabs.h
new file mode 100644
index 0000000..11a122e
--- /dev/null
+++ b/src/material-widgets/qtmaterialtabs.h
@@ -0,0 +1,58 @@
+#ifndef QTMATERIALTABS_H
+#define QTMATERIALTABS_H
+
+#include
+#include
+#include "lib/qtmaterialtheme.h"
+
+class QtMaterialTabsPrivate;
+class QtMaterialTab;
+
+class QtMaterialTabs : public QWidget
+{
+ Q_OBJECT
+
+public:
+ explicit QtMaterialTabs(QWidget *parent = 0);
+ ~QtMaterialTabs();
+
+ void setUseThemeColors(bool value);
+ bool useThemeColors() const;
+
+ void setHaloVisible(bool value);
+ bool isHaloVisible() const;
+
+ void setRippleStyle(Material::RippleStyle style);
+ Material::RippleStyle rippleStyle() const;
+
+ void setInkColor(const QColor &color);
+ QColor inkColor() const;
+
+ void setBackgroundColor(const QColor &color);
+ QColor backgroundColor() const;
+
+ void setTextColor(const QColor &color);
+ QColor textColor() const;
+
+ void addTab(const QString &text, const QIcon &icon = QIcon());
+
+ void setCurrentTab(QtMaterialTab *tab);
+ void setCurrentTab(int index);
+
+ int currentIndex() const;
+
+signals:
+ void currentChanged(int);
+
+protected:
+ void setTabActive(int index, bool active = true);
+ void updateTabs();
+
+ const QScopedPointer d_ptr;
+
+private:
+ Q_DISABLE_COPY(QtMaterialTabs)
+ Q_DECLARE_PRIVATE(QtMaterialTabs)
+};
+
+#endif // QTMATERIALTABS_H
diff --git a/src/material-widgets/qtmaterialtabs_internal.cpp b/src/material-widgets/qtmaterialtabs_internal.cpp
new file mode 100644
index 0000000..e952c02
--- /dev/null
+++ b/src/material-widgets/qtmaterialtabs_internal.cpp
@@ -0,0 +1,178 @@
+#include "qtmaterialtabs_internal.h"
+#include
+#include
+#include
+#include
+#include
+#include "qtmaterialtabs.h"
+#include
+
+/*!
+ * \class QtMaterialTabsInkBar
+ * \internal
+ */
+
+QtMaterialTabsInkBar::QtMaterialTabsInkBar(QtMaterialTabs *parent)
+ : QtMaterialOverlayWidget(parent),
+ m_tabs(parent),
+ m_animation(new QPropertyAnimation(parent)),
+ m_tween(0)
+{
+ Q_ASSERT(parent);
+
+ m_animation->setPropertyName("tweenValue");
+ m_animation->setEasingCurve(QEasingCurve::OutCirc);
+ m_animation->setTargetObject(this);
+ m_animation->setDuration(700);
+
+ m_tabs->installEventFilter(this);
+
+ setAttribute(Qt::WA_TransparentForMouseEvents);
+ setAttribute(Qt::WA_NoSystemBackground);
+}
+
+QtMaterialTabsInkBar::~QtMaterialTabsInkBar()
+{
+}
+
+void QtMaterialTabsInkBar::refreshGeometry()
+{
+ QLayoutItem *item = m_tabs->layout()->itemAt(m_tabs->currentIndex());
+
+ if (item)
+ {
+ const QRect r(item->geometry());
+ const qreal s = 1-m_tween;
+
+ if (QAbstractAnimation::Running != m_animation->state()) {
+ m_geometry = QRect(r.left(), r.bottom()-1, r.width(), 2);
+ } else {
+ const qreal left = m_previousGeometry.left()*s + r.left()*m_tween;
+ const qreal width = m_previousGeometry.width()*s + r.width()*m_tween;
+ m_geometry = QRect(left, r.bottom()-1, width, 2);
+ }
+ m_tabs->update();
+ }
+}
+
+void QtMaterialTabsInkBar::animate()
+{
+ raise();
+
+ m_previousGeometry = m_geometry;
+
+ m_animation->stop();
+ m_animation->setStartValue(0);
+ m_animation->setEndValue(1);
+ m_animation->start();
+}
+
+bool QtMaterialTabsInkBar::eventFilter(QObject *obj, QEvent *event)
+{
+ switch (event->type())
+ {
+ case QEvent::Move:
+ case QEvent::Resize:
+ {
+ refreshGeometry();
+ break;
+ }
+ default:
+ break;
+ }
+ return QtMaterialOverlayWidget::eventFilter(obj, event);
+}
+
+void QtMaterialTabsInkBar::paintEvent(QPaintEvent *event)
+{
+ Q_UNUSED(event)
+
+ QPainter painter(this);
+
+ painter.setOpacity(1);
+ painter.fillRect(m_geometry, m_tabs->inkColor());
+}
+
+/*!
+ * \class QtMaterialTab
+ * \internal
+ */
+
+QtMaterialTab::QtMaterialTab(QtMaterialTabs *parent)
+ : QtMaterialFlatButton(parent),
+ m_tabs(parent),
+ m_active(false)
+{
+ Q_ASSERT(parent);
+
+ setMinimumHeight(50);
+
+ QFont f(font());
+ f.setStyleName("Normal");
+ setFont(f);
+
+ setCornerRadius(0);
+ setRole(Material::Primary);
+ setBackgroundMode(Qt::OpaqueMode);
+ setBaseOpacity(0.25);
+
+ connect(this, SIGNAL(clicked(bool)), this, SLOT(activateTab()));
+}
+
+QtMaterialTab::~QtMaterialTab()
+{
+}
+
+QSize QtMaterialTab::sizeHint() const
+{
+ if (icon().isNull()) {
+ return QtMaterialFlatButton::sizeHint();
+ } else {
+ return QSize(40, iconSize().height()+46);
+ }
+}
+
+void QtMaterialTab::activateTab()
+{
+ m_tabs->setCurrentTab(this);
+}
+
+void QtMaterialTab::paintForeground(QPainter *painter)
+{
+ painter->setPen(foregroundColor());
+
+ if (!icon().isNull()) {
+ painter->translate(0, 12);
+ }
+
+ QSize textSize(fontMetrics().size(Qt::TextSingleLine, text()));
+ QSize base(size()-textSize);
+
+ QRect textGeometry(QPoint(base.width(), base.height())/2, textSize);
+
+ painter->drawText(textGeometry, Qt::AlignCenter, text());
+
+ if (!icon().isNull())
+ {
+ const QSize &size = iconSize();
+ QRect iconRect(QPoint((width()-size.width())/2, 0), size);
+
+ QPixmap pixmap = icon().pixmap(iconSize());
+ QPainter icon(&pixmap);
+ icon.setCompositionMode(QPainter::CompositionMode_SourceIn);
+ icon.fillRect(pixmap.rect(), painter->pen().color());
+ painter->drawPixmap(iconRect, pixmap);
+ }
+
+ if (!m_active)
+ {
+ if (!icon().isNull()) {
+ painter->translate(0, -12);
+ }
+ QBrush overlay;
+ overlay.setStyle(Qt::SolidPattern);
+ overlay.setColor(backgroundColor());
+ painter->setOpacity(0.36);
+ painter->fillRect(rect(), overlay);
+ }
+}
diff --git a/src/material-widgets/qtmaterialtabs_internal.h b/src/material-widgets/qtmaterialtabs_internal.h
new file mode 100644
index 0000000..75dc034
--- /dev/null
+++ b/src/material-widgets/qtmaterialtabs_internal.h
@@ -0,0 +1,88 @@
+#ifndef QTMATERIALTABS_INTERNAL_H
+#define QTMATERIALTABS_INTERNAL_H
+
+#include "lib/qtmaterialoverlaywidget.h"
+#include "qtmaterialflatbutton.h"
+
+class QPropertyAnimation;
+class QtMaterialTabs;
+
+class QtMaterialTabsInkBar : public QtMaterialOverlayWidget
+{
+ Q_OBJECT
+
+ Q_PROPERTY(qreal tweenValue WRITE setTweenValue READ tweenValue)
+
+public:
+ QtMaterialTabsInkBar(QtMaterialTabs *parent);
+ ~QtMaterialTabsInkBar();
+
+ inline void setTweenValue(qreal value);
+ inline qreal tweenValue() const;
+
+ void refreshGeometry();
+ void animate();
+
+protected:
+ bool eventFilter(QObject *obj, QEvent *event) Q_DECL_OVERRIDE;
+ void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE;
+
+private:
+ Q_DISABLE_COPY(QtMaterialTabsInkBar)
+
+ QtMaterialTabs *const m_tabs;
+ QPropertyAnimation *const m_animation;
+ QRect m_geometry;
+ QRect m_previousGeometry;
+ qreal m_tween;
+};
+
+inline void QtMaterialTabsInkBar::setTweenValue(qreal value)
+{
+ m_tween = value;
+ refreshGeometry();
+}
+
+inline qreal QtMaterialTabsInkBar::tweenValue() const
+{
+ return m_tween;
+}
+
+class QtMaterialTab : public QtMaterialFlatButton
+{
+ Q_OBJECT
+
+public:
+ explicit QtMaterialTab(QtMaterialTabs *parent);
+ ~QtMaterialTab();
+
+ inline void setActive(bool state);
+ inline bool isActive() const;
+
+ QSize sizeHint() const Q_DECL_OVERRIDE;
+
+protected slots:
+ void activateTab();
+
+protected:
+ void paintForeground(QPainter *painter) Q_DECL_OVERRIDE;
+
+private:
+ Q_DISABLE_COPY(QtMaterialTab)
+
+ QtMaterialTabs *const m_tabs;
+ bool m_active;
+};
+
+inline void QtMaterialTab::setActive(bool state)
+{
+ m_active = state;
+ update();
+}
+
+inline bool QtMaterialTab::isActive() const
+{
+ return m_active;
+}
+
+#endif // QTMATERIALTABS_INTERNAL_H
diff --git a/src/material-widgets/qtmaterialtabs_p.h b/src/material-widgets/qtmaterialtabs_p.h
new file mode 100644
index 0000000..1f32b04
--- /dev/null
+++ b/src/material-widgets/qtmaterialtabs_p.h
@@ -0,0 +1,34 @@
+#ifndef QTMATERIALTABS_P_H
+#define QTMATERIALTABS_P_H
+
+#include
+#include "lib/qtmaterialtheme.h"
+
+class QHBoxLayout;
+class QtMaterialTabs;
+class QtMaterialTabsInkBar;
+
+class QtMaterialTabsPrivate
+{
+ Q_DISABLE_COPY(QtMaterialTabsPrivate)
+ Q_DECLARE_PUBLIC(QtMaterialTabs)
+
+public:
+ QtMaterialTabsPrivate(QtMaterialTabs *q);
+ ~QtMaterialTabsPrivate();
+
+ void init();
+
+ QtMaterialTabs *const q_ptr;
+ QtMaterialTabsInkBar *inkBar;
+ QHBoxLayout *tabLayout;
+ Material::RippleStyle rippleStyle;
+ QColor inkColor;
+ QColor backgroundColor;
+ QColor textColor;
+ int tab;
+ bool showHalo;
+ bool useThemeColors;
+};
+
+#endif // QTMATERIALTABS_P_H
diff --git a/src/material-widgets/qtmaterialtextfield.cpp b/src/material-widgets/qtmaterialtextfield.cpp
new file mode 100644
index 0000000..080da82
--- /dev/null
+++ b/src/material-widgets/qtmaterialtextfield.cpp
@@ -0,0 +1,326 @@
+#include "qtmaterialtextfield.h"
+#include "qtmaterialtextfield_p.h"
+#include
+#include
+#include "qtmaterialtextfield_internal.h"
+#include "lib/qtmaterialstyle.h"
+#include
+
+/*!
+ * \class QtMaterialTextFieldPrivate
+ * \internal
+ */
+
+QtMaterialTextFieldPrivate::QtMaterialTextFieldPrivate(QtMaterialTextField *q)
+ : q_ptr(q)
+{
+}
+
+QtMaterialTextFieldPrivate::~QtMaterialTextFieldPrivate()
+{
+}
+
+void QtMaterialTextFieldPrivate::init()
+{
+ Q_Q(QtMaterialTextField);
+
+ stateMachine = new QtMaterialTextFieldStateMachine(q);
+ label = 0;
+ labelFontSize = 9.5;
+ showLabel = false;
+ showInputLine = true;
+ useThemeColors = true;
+
+ q->setFrame(false);
+ q->setStyle(&QtMaterialStyle::instance());
+ q->setAttribute(Qt::WA_Hover);
+ q->setMouseTracking(true);
+ q->setTextMargins(0, 2, 0, 4);
+
+ q->setFont(QFont("Roboto", 11, QFont::Normal));
+
+ stateMachine->start();
+ QCoreApplication::processEvents();
+}
+
+/*!
+ * \class QtMaterialTextField
+ */
+
+QtMaterialTextField::QtMaterialTextField(QWidget *parent)
+ : QLineEdit(parent),
+ d_ptr(new QtMaterialTextFieldPrivate(this))
+{
+ d_func()->init();
+}
+
+QtMaterialTextField::~QtMaterialTextField()
+{
+}
+
+void QtMaterialTextField::setUseThemeColors(bool value)
+{
+ Q_D(QtMaterialTextField);
+
+ if (d->useThemeColors == value) {
+ return;
+ }
+
+ d->useThemeColors = value;
+ d->stateMachine->setupProperties();
+}
+
+bool QtMaterialTextField::useThemeColors() const
+{
+ Q_D(const QtMaterialTextField);
+
+ return d->useThemeColors;
+}
+
+void QtMaterialTextField::setShowLabel(bool value)
+{
+ Q_D(QtMaterialTextField);
+
+ if (d->showLabel == value) {
+ return;
+ }
+
+ d->showLabel = value;
+
+ if (!d->label && value) {
+ d->label = new QtMaterialTextFieldLabel(this);
+ d->stateMachine->setLabel(d->label);
+ }
+
+ if (value) {
+ setContentsMargins(0, 23, 0, 0);
+ } else {
+ setContentsMargins(0, 0, 0, 0);
+ }
+}
+
+bool QtMaterialTextField::hasLabel() const
+{
+ Q_D(const QtMaterialTextField);
+
+ return d->showLabel;
+}
+
+void QtMaterialTextField::setLabelFontSize(qreal size)
+{
+ Q_D(QtMaterialTextField);
+
+ d->labelFontSize = size;
+
+ if (d->label)
+ {
+ QFont font(d->label->font());
+ font.setPointSizeF(size);
+ d->label->setFont(font);
+ d->label->update();
+ }
+}
+
+qreal QtMaterialTextField::labelFontSize() const
+{
+ Q_D(const QtMaterialTextField);
+
+ return d->labelFontSize;
+}
+
+void QtMaterialTextField::setLabel(const QString &label)
+{
+ Q_D(QtMaterialTextField);
+
+ d->labelString = label;
+ setShowLabel(true);
+ d->label->update();
+}
+
+QString QtMaterialTextField::label() const
+{
+ Q_D(const QtMaterialTextField);
+
+ return d->labelString;
+}
+
+void QtMaterialTextField::setTextColor(const QColor &color)
+{
+ Q_D(QtMaterialTextField);
+
+ d->textColor = color;
+ setStyleSheet(QString("QLineEdit { color: %1; }").arg(color.name()));
+
+ MATERIAL_DISABLE_THEME_COLORS
+ d->stateMachine->setupProperties();
+}
+
+QColor QtMaterialTextField::textColor() const
+{
+ Q_D(const QtMaterialTextField);
+
+ if (d->useThemeColors || !d->textColor.isValid()) {
+ return QtMaterialStyle::instance().themeColor("text");
+ } else {
+ return d->textColor;
+ }
+}
+
+void QtMaterialTextField::setLabelColor(const QColor &color)
+{
+ Q_D(QtMaterialTextField);
+
+ d->labelColor = color;
+
+ MATERIAL_DISABLE_THEME_COLORS
+ d->stateMachine->setupProperties();
+}
+
+QColor QtMaterialTextField::labelColor() const
+{
+ Q_D(const QtMaterialTextField);
+
+ if (d->useThemeColors || !d->labelColor.isValid()) {
+ return QtMaterialStyle::instance().themeColor("accent3");
+ } else {
+ return d->labelColor;
+ }
+}
+
+void QtMaterialTextField::setInkColor(const QColor &color)
+{
+ Q_D(QtMaterialTextField);
+
+ d->inkColor = color;
+
+ MATERIAL_DISABLE_THEME_COLORS
+ d->stateMachine->setupProperties();
+}
+
+QColor QtMaterialTextField::inkColor() const
+{
+ Q_D(const QtMaterialTextField);
+
+ if (d->useThemeColors || !d->inkColor.isValid()) {
+ return QtMaterialStyle::instance().themeColor("primary1");
+ } else {
+ return d->inkColor;
+ }
+}
+
+void QtMaterialTextField::setInputLineColor(const QColor &color)
+{
+ Q_D(QtMaterialTextField);
+
+ d->inputLineColor = color;
+
+ MATERIAL_DISABLE_THEME_COLORS
+ d->stateMachine->setupProperties();
+}
+
+QColor QtMaterialTextField::inputLineColor() const
+{
+ Q_D(const QtMaterialTextField);
+
+ if (d->useThemeColors || !d->inputLineColor.isValid()) {
+ return QtMaterialStyle::instance().themeColor("border");
+ } else {
+ return d->inputLineColor;
+ }
+}
+
+void QtMaterialTextField::setShowInputLine(bool value)
+{
+ Q_D(QtMaterialTextField);
+
+ if (d->showInputLine == value) {
+ return;
+ }
+
+ d->showInputLine = value;
+ update();
+}
+
+bool QtMaterialTextField::hasInputLine() const
+{
+ Q_D(const QtMaterialTextField);
+
+ return d->showInputLine;
+}
+
+QtMaterialTextField::QtMaterialTextField(QtMaterialTextFieldPrivate &d, QWidget *parent)
+ : QLineEdit(parent),
+ d_ptr(&d)
+{
+ d_func()->init();
+}
+
+/*!
+ * \reimp
+ */
+bool QtMaterialTextField::event(QEvent *event)
+{
+ Q_D(QtMaterialTextField);
+
+ switch (event->type())
+ {
+ case QEvent::Resize:
+ case QEvent::Move: {
+ if (d->label) {
+ d->label->setGeometry(rect());
+ }
+ }
+ default:
+ break;
+ }
+ return QLineEdit::event(event);
+}
+
+/*!
+ * \reimp
+ */
+void QtMaterialTextField::paintEvent(QPaintEvent *event)
+{
+ Q_D(QtMaterialTextField);
+
+ QLineEdit::paintEvent(event);
+
+ QPainter painter(this);
+
+ const qreal progress = d->stateMachine->progress();
+
+ if (text().isEmpty() && progress < 1)
+ {
+ painter.setOpacity(1-progress);
+ painter.fillRect(rect(), parentWidget()->palette().color(backgroundRole()));
+ }
+
+ const int y = height()-1;
+ const int wd = width()-5;
+
+ if (d->showInputLine)
+ {
+ QPen pen;
+ pen.setWidth(1);
+ pen.setColor(inputLineColor());
+
+ if (!isEnabled())
+ pen.setStyle(Qt::DashLine);
+
+ painter.setPen(pen);
+ painter.setOpacity(1);
+ painter.drawLine(QLineF(2.5, y, wd, y));
+
+ QBrush brush;
+ brush.setStyle(Qt::SolidPattern);
+ brush.setColor(inkColor());
+
+ if (progress > 0)
+ {
+ painter.setPen(Qt::NoPen);
+ painter.setBrush(brush);
+ const int w = (1-progress)*static_cast(wd/2);
+ painter.drawRect(w+2.5, height()-2, wd-w*2, 2);
+ }
+ }
+}
diff --git a/src/material-widgets/qtmaterialtextfield.h b/src/material-widgets/qtmaterialtextfield.h
new file mode 100644
index 0000000..dead5cc
--- /dev/null
+++ b/src/material-widgets/qtmaterialtextfield.h
@@ -0,0 +1,61 @@
+#ifndef QTMATERIALTEXTFIELD_H
+#define QTMATERIALTEXTFIELD_H
+
+#include
+#include
+
+class QtMaterialTextFieldPrivate;
+
+class QtMaterialTextField : public QLineEdit
+{
+ Q_OBJECT
+
+ Q_PROPERTY(QColor textColor WRITE setTextColor READ textColor)
+ Q_PROPERTY(QColor inkColor WRITE setInkColor READ inkColor)
+ Q_PROPERTY(QColor inputLineColor WRITE setInputLineColor READ inputLineColor)
+
+public:
+ explicit QtMaterialTextField(QWidget *parent = 0);
+ ~QtMaterialTextField();
+
+ void setUseThemeColors(bool value);
+ bool useThemeColors() const;
+
+ void setShowLabel(bool value);
+ bool hasLabel() const;
+
+ void setLabelFontSize(qreal size);
+ qreal labelFontSize() const;
+
+ void setLabel(const QString &label);
+ QString label() const;
+
+ void setTextColor(const QColor &color);
+ QColor textColor() const;
+
+ void setLabelColor(const QColor &color);
+ QColor labelColor() const;
+
+ void setInkColor(const QColor &color);
+ QColor inkColor() const;
+
+ void setInputLineColor(const QColor &color);
+ QColor inputLineColor() const;
+
+ void setShowInputLine(bool value);
+ bool hasInputLine() const;
+
+protected:
+ QtMaterialTextField(QtMaterialTextFieldPrivate &d, QWidget *parent = 0);
+
+ bool event(QEvent *event) Q_DECL_OVERRIDE;
+ void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE;
+
+ const QScopedPointer d_ptr;
+
+private:
+ Q_DISABLE_COPY(QtMaterialTextField)
+ Q_DECLARE_PRIVATE(QtMaterialTextField)
+};
+
+#endif // QTMATERIALTEXTFIELD_H
diff --git a/src/material-widgets/qtmaterialtextfield_internal.cpp b/src/material-widgets/qtmaterialtextfield_internal.cpp
new file mode 100644
index 0000000..b8b4ce7
--- /dev/null
+++ b/src/material-widgets/qtmaterialtextfield_internal.cpp
@@ -0,0 +1,164 @@
+#include "qtmaterialtextfield_internal.h"
+#include
+#include
+#include
+#include "qtmaterialtextfield.h"
+
+/*!
+ * \class QtMaterialTextFieldStateMachine
+ * \internal
+ */
+
+QtMaterialTextFieldStateMachine::QtMaterialTextFieldStateMachine(QtMaterialTextField *parent)
+ : QStateMachine(parent),
+ m_textField(parent),
+ m_normalState(new QState),
+ m_focusedState(new QState),
+ m_label(0),
+ m_offsetAnimation(0),
+ m_colorAnimation(0),
+ m_progress(0.0)
+{
+ Q_ASSERT(parent);
+
+ addState(m_normalState);
+ addState(m_focusedState);
+
+ setInitialState(m_normalState);
+
+ QEventTransition *transition;
+ QPropertyAnimation *animation;
+
+ transition = new QEventTransition(parent, QEvent::FocusIn);
+ transition->setTargetState(m_focusedState);
+ m_normalState->addTransition(transition);
+
+ animation = new QPropertyAnimation(this, "progress", this);
+ animation->setEasingCurve(QEasingCurve::InCubic);
+ animation->setDuration(310);
+ transition->addAnimation(animation);
+
+ transition = new QEventTransition(parent, QEvent::FocusOut);
+ transition->setTargetState(m_normalState);
+ m_focusedState->addTransition(transition);
+
+ animation = new QPropertyAnimation(this, "progress", this);
+ animation->setEasingCurve(QEasingCurve::OutCubic);
+ animation->setDuration(310);
+ transition->addAnimation(animation);
+
+ m_normalState->assignProperty(this, "progress", 0);
+ m_focusedState->assignProperty(this, "progress", 1);
+
+ setupProperties();
+
+ connect(m_textField, SIGNAL(textChanged(QString)), this, SLOT(setupProperties()));
+}
+
+QtMaterialTextFieldStateMachine::~QtMaterialTextFieldStateMachine()
+{
+}
+
+void QtMaterialTextFieldStateMachine::setLabel(QtMaterialTextFieldLabel *label)
+{
+ if (m_label) {
+ delete m_label;
+ }
+
+ if (m_offsetAnimation) {
+ removeDefaultAnimation(m_offsetAnimation);
+ delete m_offsetAnimation;
+ }
+
+ if (m_colorAnimation) {
+ removeDefaultAnimation(m_colorAnimation);
+ delete m_colorAnimation;
+ }
+
+ m_label = label;
+
+ if (m_label)
+ {
+ m_offsetAnimation = new QPropertyAnimation(m_label, "offset", this);
+ m_offsetAnimation->setDuration(210);
+ m_offsetAnimation->setEasingCurve(QEasingCurve::OutCubic);
+ addDefaultAnimation(m_offsetAnimation);
+
+ m_colorAnimation = new QPropertyAnimation(m_label, "color", this);
+ m_colorAnimation->setDuration(210);
+ addDefaultAnimation(m_colorAnimation);
+ }
+
+ setupProperties();
+}
+
+void QtMaterialTextFieldStateMachine::setupProperties()
+{
+ if (m_label)
+ {
+ const int m = m_textField->textMargins().top();
+
+ if (m_textField->text().isEmpty()) {
+ m_normalState->assignProperty(m_label, "offset", QPointF(0, 26));
+ } else {
+ m_normalState->assignProperty(m_label, "offset", QPointF(0, 0-m));
+ }
+
+ m_focusedState->assignProperty(m_label, "offset", QPointF(0, 0-m));
+ m_focusedState->assignProperty(m_label, "color", m_textField->inkColor());
+ m_normalState->assignProperty(m_label, "color", m_textField->labelColor());
+
+ if (0 != m_label->offset().y() && !m_textField->text().isEmpty()) {
+ m_label->setOffset(QPointF(0, 0-m));
+ } else if (!m_textField->hasFocus() && m_label->offset().y() <= 0 && m_textField->text().isEmpty()) {
+ m_label->setOffset(QPointF(0, 26));
+ }
+ }
+
+ m_textField->update();
+}
+
+/*!
+ * \class QtMaterialTextFieldLabel
+ * \internal
+ */
+
+QtMaterialTextFieldLabel::QtMaterialTextFieldLabel(QtMaterialTextField *parent)
+ : QWidget(parent),
+ m_textField(parent),
+ m_scale(1),
+ m_posX(0),
+ m_posY(26),
+ m_color(parent->labelColor())
+{
+ Q_ASSERT(parent);
+
+ QFont font("Roboto", parent->labelFontSize(), QFont::Medium);
+ font.setLetterSpacing(QFont::PercentageSpacing, 102);
+ setFont(font);
+}
+
+QtMaterialTextFieldLabel::~QtMaterialTextFieldLabel()
+{
+}
+
+/*!
+ * \reimp
+ */
+void QtMaterialTextFieldLabel::paintEvent(QPaintEvent *event)
+{
+ Q_UNUSED(event)
+
+ if (!m_textField->hasLabel()) {
+ return;
+ }
+
+ QPainter painter(this);
+ painter.setRenderHint(QPainter::Antialiasing);
+ painter.scale(m_scale, m_scale);
+ painter.setPen(m_color);
+ painter.setOpacity(1);
+
+ QPointF pos(2+m_posX, height()-36+m_posY);
+ painter.drawText(pos.x(), pos.y(), m_textField->label());
+}
diff --git a/src/material-widgets/qtmaterialtextfield_internal.h b/src/material-widgets/qtmaterialtextfield_internal.h
new file mode 100644
index 0000000..e510287
--- /dev/null
+++ b/src/material-widgets/qtmaterialtextfield_internal.h
@@ -0,0 +1,120 @@
+#ifndef QTMATERIALTEXTFIELD_INTERNAL_H
+#define QTMATERIALTEXTFIELD_INTERNAL_H
+
+#include
+#include
+#include "qtmaterialtextfield.h"
+
+class QPropertyAnimation;
+class QtMaterialTextFieldLabel;
+
+class QtMaterialTextFieldStateMachine : public QStateMachine
+{
+ Q_OBJECT
+
+ Q_PROPERTY(qreal progress WRITE setProgress READ progress)
+
+public:
+ QtMaterialTextFieldStateMachine(QtMaterialTextField *parent);
+ ~QtMaterialTextFieldStateMachine();
+
+ void setLabel(QtMaterialTextFieldLabel *label);
+
+ inline void setProgress(qreal progress);
+ inline qreal progress() const;
+
+public slots:
+ void setupProperties();
+
+private:
+ Q_DISABLE_COPY(QtMaterialTextFieldStateMachine)
+
+ QtMaterialTextField *const m_textField;
+ QState *const m_normalState;
+ QState *const m_focusedState;
+ QtMaterialTextFieldLabel *m_label;
+ QPropertyAnimation *m_offsetAnimation;
+ QPropertyAnimation *m_colorAnimation;
+ qreal m_progress;
+};
+
+inline void QtMaterialTextFieldStateMachine::setProgress(qreal progress)
+{
+ m_progress = progress;
+ m_textField->update();
+}
+
+inline qreal QtMaterialTextFieldStateMachine::progress() const
+{
+ return m_progress;
+}
+
+class QtMaterialTextFieldLabel : public QWidget
+{
+ Q_OBJECT
+
+ Q_PROPERTY(qreal scale WRITE setScale READ scale)
+ Q_PROPERTY(QPointF offset WRITE setOffset READ offset)
+ Q_PROPERTY(QColor color WRITE setColor READ color)
+
+public:
+ QtMaterialTextFieldLabel(QtMaterialTextField *parent);
+ ~QtMaterialTextFieldLabel();
+
+ inline void setScale(qreal scale);
+ inline qreal scale() const;
+
+ inline void setOffset(const QPointF &pos);
+ inline QPointF offset() const;
+
+ inline void setColor(const QColor &color);
+ inline QColor color() const;
+
+protected:
+ void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE;
+
+private:
+ Q_DISABLE_COPY(QtMaterialTextFieldLabel)
+
+ QtMaterialTextField *const m_textField;
+ qreal m_scale;
+ qreal m_posX;
+ qreal m_posY;
+ QColor m_color;
+};
+
+inline void QtMaterialTextFieldLabel::setScale(qreal scale)
+{
+ m_scale = scale;
+ update();
+}
+
+inline qreal QtMaterialTextFieldLabel::scale() const
+{
+ return m_scale;
+}
+
+inline void QtMaterialTextFieldLabel::setOffset(const QPointF &pos)
+{
+ m_posX = pos.x();
+ m_posY = pos.y();
+ update();
+}
+
+inline QPointF QtMaterialTextFieldLabel::offset() const
+{
+ return QPointF(m_posX, m_posY);
+}
+
+inline void QtMaterialTextFieldLabel::setColor(const QColor &color)
+{
+ m_color = color;
+ update();
+}
+
+inline QColor QtMaterialTextFieldLabel::color() const
+{
+ return m_color;
+}
+
+#endif // QTMATERIALTEXTFIELD_INTERNAL_H
diff --git a/src/material-widgets/qtmaterialtextfield_p.h b/src/material-widgets/qtmaterialtextfield_p.h
new file mode 100644
index 0000000..9e8c835
--- /dev/null
+++ b/src/material-widgets/qtmaterialtextfield_p.h
@@ -0,0 +1,36 @@
+#ifndef QTMATERIALTEXTFIELD_P_H
+#define QTMATERIALTEXTFIELD_P_H
+
+#include
+#include
+
+class QtMaterialTextField;
+class QtMaterialTextFieldStateMachine;
+class QtMaterialTextFieldLabel;
+
+class QtMaterialTextFieldPrivate
+{
+ Q_DISABLE_COPY(QtMaterialTextFieldPrivate)
+ Q_DECLARE_PUBLIC(QtMaterialTextField)
+
+public:
+ QtMaterialTextFieldPrivate(QtMaterialTextField *q);
+ virtual ~QtMaterialTextFieldPrivate();
+
+ void init();
+
+ QtMaterialTextField *const q_ptr;
+ QtMaterialTextFieldStateMachine *stateMachine;
+ QtMaterialTextFieldLabel *label;
+ QColor textColor;
+ QColor labelColor;
+ QColor inkColor;
+ QColor inputLineColor;
+ QString labelString;
+ qreal labelFontSize;
+ bool showLabel;
+ bool showInputLine;
+ bool useThemeColors;
+};
+
+#endif // QTMATERIALTEXTFIELD_P_H
diff --git a/src/material-widgets/qtmaterialtoggle.cpp b/src/material-widgets/qtmaterialtoggle.cpp
new file mode 100644
index 0000000..6d11fc9
--- /dev/null
+++ b/src/material-widgets/qtmaterialtoggle.cpp
@@ -0,0 +1,298 @@
+#include "qtmaterialtoggle.h"
+#include "qtmaterialtoggle_p.h"
+#include
+#include
+#include
+#include
+#include "qtmaterialtoggle_internal.h"
+#include "lib/qtmaterialstyle.h"
+
+/*!
+ * \class QtMaterialTogglePrivate
+ * \internal
+ */
+
+QtMaterialTogglePrivate::QtMaterialTogglePrivate(QtMaterialToggle *q)
+ : q_ptr(q)
+{
+}
+
+QtMaterialTogglePrivate::~QtMaterialTogglePrivate()
+{
+}
+
+void QtMaterialTogglePrivate::init()
+{
+ Q_Q(QtMaterialToggle);
+
+ track = new QtMaterialToggleTrack(q);
+ thumb = new QtMaterialToggleThumb(q);
+ rippleOverlay = new QtMaterialToggleRippleOverlay(thumb, track, q);
+ stateMachine = new QStateMachine(q);
+ offState = new QState;
+ onState = new QState;
+ orientation = Qt::Horizontal;
+ useThemeColors = true;
+
+ q->setCheckable(true);
+ q->setChecked(false);
+ q->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum);
+
+ stateMachine->addState(offState);
+ stateMachine->addState(onState);
+ stateMachine->setInitialState(offState);
+
+ offState->assignProperty(thumb, "shift", 0);
+ onState->assignProperty(thumb, "shift", 1);
+
+ QSignalTransition *transition;
+ QPropertyAnimation *animation;
+
+ //
+
+ transition = new QSignalTransition(q, SIGNAL(toggled(bool)));
+ transition->setTargetState(onState);
+ offState->addTransition(transition);
+
+ animation = new QPropertyAnimation(q);
+ animation->setPropertyName("shift");
+ animation->setTargetObject(thumb);
+ animation->setDuration(200);
+ animation->setEasingCurve(QEasingCurve::OutQuad);
+ transition->addAnimation(animation);
+
+ animation = new QPropertyAnimation(q);
+ animation->setPropertyName("trackColor");
+ animation->setTargetObject(track);
+ animation->setDuration(150);
+ transition->addAnimation(animation);
+
+ animation = new QPropertyAnimation(q);
+ animation->setPropertyName("thumbColor");
+ animation->setTargetObject(thumb);
+ animation->setDuration(150);
+ transition->addAnimation(animation);
+
+ //
+
+ transition = new QSignalTransition(q, SIGNAL(toggled(bool)));
+ transition->setTargetState(offState);
+ onState->addTransition(transition);
+
+ animation = new QPropertyAnimation(q);
+ animation->setPropertyName("shift");
+ animation->setTargetObject(thumb);
+ animation->setDuration(200);
+ animation->setEasingCurve(QEasingCurve::OutQuad);
+ transition->addAnimation(animation);
+
+ animation = new QPropertyAnimation(q);
+ animation->setPropertyName("trackColor");
+ animation->setTargetObject(track);
+ animation->setDuration(150);
+ transition->addAnimation(animation);
+
+ animation = new QPropertyAnimation(q);
+ animation->setPropertyName("thumbColor");
+ animation->setTargetObject(thumb);
+ animation->setDuration(150);
+ transition->addAnimation(animation);
+
+ //
+
+ setupProperties();
+
+ stateMachine->start();
+ QCoreApplication::processEvents();
+}
+
+void QtMaterialTogglePrivate::setupProperties()
+{
+ Q_Q(QtMaterialToggle);
+
+ if (q->isEnabled()) {
+ const qreal shift = thumb->shift();
+ if (qFuzzyCompare(shift, 1)) {
+ thumb->setThumbColor(q->activeColor());
+ track->setTrackColor(q->activeColor().lighter(110));
+ } else if (qFuzzyCompare(1+shift, 1)) {
+ thumb->setThumbColor(q->inactiveColor());
+ track->setTrackColor(q->trackColor());
+ }
+ }
+
+ offState->assignProperty(track, "trackColor", q->trackColor().lighter(110));
+ onState->assignProperty(track, "trackColor", q->activeColor().lighter(110));
+
+ offState->assignProperty(thumb, "thumbColor", q->inactiveColor());
+ onState->assignProperty(thumb, "thumbColor", q->activeColor());
+
+ q->update();
+}
+
+/*!
+ * \class QtMaterialToggle
+ */
+
+QtMaterialToggle::QtMaterialToggle(QWidget *parent)
+ : QAbstractButton(parent),
+ d_ptr(new QtMaterialTogglePrivate(this))
+{
+ d_func()->init();
+}
+
+QtMaterialToggle::~QtMaterialToggle()
+{
+}
+
+void QtMaterialToggle::setUseThemeColors(bool value)
+{
+ Q_D(QtMaterialToggle);
+
+ d->useThemeColors = value;
+ d->setupProperties();
+}
+
+bool QtMaterialToggle::useThemeColors() const
+{
+ Q_D(const QtMaterialToggle);
+
+ return d->useThemeColors;
+}
+
+void QtMaterialToggle::setDisabledColor(const QColor &color)
+{
+ Q_D(QtMaterialToggle);
+
+ d->disabledColor = color;
+
+ MATERIAL_DISABLE_THEME_COLORS
+ d->setupProperties();
+}
+
+QColor QtMaterialToggle::disabledColor() const
+{
+ Q_D(const QtMaterialToggle);
+
+ if (d->useThemeColors || !d->disabledColor.isValid()) {
+ return QtMaterialStyle::instance().themeColor("disabled");
+ } else {
+ return d->disabledColor;
+ }
+}
+
+void QtMaterialToggle::setActiveColor(const QColor &color)
+{
+ Q_D(QtMaterialToggle);
+
+ d->activeColor = color;
+
+ MATERIAL_DISABLE_THEME_COLORS
+ d->setupProperties();
+}
+
+QColor QtMaterialToggle::activeColor() const
+{
+ Q_D(const QtMaterialToggle);
+
+ if (d->useThemeColors || !d->activeColor.isValid()) {
+ return QtMaterialStyle::instance().themeColor("primary1");
+ } else {
+ return d->activeColor;
+ }
+}
+
+void QtMaterialToggle::setInactiveColor(const QColor &color)
+{
+ Q_D(QtMaterialToggle);
+
+ d->inactiveColor = color;
+
+ MATERIAL_DISABLE_THEME_COLORS
+ d->setupProperties();
+}
+
+QColor QtMaterialToggle::inactiveColor() const
+{
+ Q_D(const QtMaterialToggle);
+
+ if (d->useThemeColors || !d->inactiveColor.isValid()) {
+ return QtMaterialStyle::instance().themeColor("canvas");
+ } else {
+ return d->inactiveColor;
+ }
+}
+
+void QtMaterialToggle::setTrackColor(const QColor &color)
+{
+ Q_D(QtMaterialToggle);
+
+ d->trackColor = color;
+
+ MATERIAL_DISABLE_THEME_COLORS
+ d->setupProperties();
+}
+
+QColor QtMaterialToggle::trackColor() const
+{
+ Q_D(const QtMaterialToggle);
+
+ if (d->useThemeColors || !d->trackColor.isValid()) {
+ return QtMaterialStyle::instance().themeColor("accent3");
+ } else {
+ return d->trackColor;
+ }
+}
+
+void QtMaterialToggle::setOrientation(Qt::Orientation orientation)
+{
+ Q_D(QtMaterialToggle);
+
+ if (d->orientation == orientation) {
+ return;
+ }
+
+ d->orientation = orientation;
+ updateGeometry();
+}
+
+Qt::Orientation QtMaterialToggle::orientation() const
+{
+ Q_D(const QtMaterialToggle);
+
+ return d->orientation;
+}
+
+QSize QtMaterialToggle::sizeHint() const
+{
+ Q_D(const QtMaterialToggle);
+
+ return Qt::Horizontal == d->orientation
+ ? QSize(64, 48)
+ : QSize(48, 64);
+}
+
+bool QtMaterialToggle::event(QEvent *event)
+{
+ Q_D(QtMaterialToggle);
+
+ switch (event->type())
+ {
+ case QEvent::ParentChange:
+ {
+ QWidget *widget;
+ if ((widget = parentWidget())) {
+ d->rippleOverlay->setParent(widget);
+ }
+ break;
+ }
+ default:
+ break;
+ }
+ return QAbstractButton::event(event);
+}
+
+void QtMaterialToggle::paintEvent(QPaintEvent *event)
+{
+ Q_UNUSED(event)
+}
diff --git a/src/material-widgets/qtmaterialtoggle.h b/src/material-widgets/qtmaterialtoggle.h
new file mode 100644
index 0000000..5d5a557
--- /dev/null
+++ b/src/material-widgets/qtmaterialtoggle.h
@@ -0,0 +1,52 @@
+#ifndef QTMATERIALTOGGLE_H
+#define QTMATERIALTOGGLE_H
+
+#include
+
+class QtMaterialTogglePrivate;
+
+class QtMaterialToggle : public QAbstractButton
+{
+ Q_OBJECT
+
+ Q_PROPERTY(QColor disabledColor WRITE setDisabledColor READ disabledColor)
+ Q_PROPERTY(QColor activeColor WRITE setActiveColor READ activeColor)
+ Q_PROPERTY(QColor inactiveColor WRITE setInactiveColor READ inactiveColor)
+ Q_PROPERTY(QColor trackColor WRITE setTrackColor READ trackColor)
+
+public:
+ explicit QtMaterialToggle(QWidget *parent = 0);
+ ~QtMaterialToggle();
+
+ void setUseThemeColors(bool value);
+ bool useThemeColors() const;
+
+ void setDisabledColor(const QColor &color);
+ QColor disabledColor() const;
+
+ void setActiveColor(const QColor &color);
+ QColor activeColor() const;
+
+ void setInactiveColor(const QColor &color);
+ QColor inactiveColor() const;
+
+ void setTrackColor(const QColor &color);
+ QColor trackColor() const;
+
+ void setOrientation(Qt::Orientation orientation);
+ Qt::Orientation orientation() const;
+
+ QSize sizeHint() const Q_DECL_OVERRIDE;
+
+protected:
+ bool event(QEvent *event) Q_DECL_OVERRIDE;
+ void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE;
+
+ const QScopedPointer d_ptr;
+
+private:
+ Q_DISABLE_COPY(QtMaterialToggle)
+ Q_DECLARE_PRIVATE(QtMaterialToggle)
+};
+
+#endif // QTMATERIALTOGGLE_H
diff --git a/src/material-widgets/qtmaterialtoggle_internal.cpp b/src/material-widgets/qtmaterialtoggle_internal.cpp
new file mode 100644
index 0000000..9bcf823
--- /dev/null
+++ b/src/material-widgets/qtmaterialtoggle_internal.cpp
@@ -0,0 +1,231 @@
+#include "qtmaterialtoggle_internal.h"
+#include
+#include
+#include
+#include "qtmaterialtoggle.h"
+#include "lib/qtmaterialripple.h"
+
+/*!
+ * \class QtMaterialToggleRippleOverlay
+ * \internal
+ */
+
+QtMaterialToggleRippleOverlay::QtMaterialToggleRippleOverlay(
+ QtMaterialToggleThumb *thumb,
+ QtMaterialToggleTrack *track,
+ QtMaterialToggle *parent)
+ : QtMaterialRippleOverlay(parent->parentWidget()),
+ m_toggle(parent),
+ m_thumb(thumb),
+ m_track(track)
+{
+ connect(parent, SIGNAL(toggled(bool)), this, SLOT(addToggleRipple()));
+
+ thumb->installEventFilter(this);
+}
+
+QtMaterialToggleRippleOverlay::~QtMaterialToggleRippleOverlay()
+{
+}
+
+void QtMaterialToggleRippleOverlay::addToggleRipple()
+{
+ if (!m_toggle->isEnabled()) {
+ return;
+ }
+
+ int t, w;
+
+ if (Qt::Horizontal == m_toggle->orientation()) {
+ t = m_toggle->height()/2;
+ w = m_thumb->height()/2+10;
+ } else {
+ t = m_toggle->width()/2;
+ w = m_thumb->width()/2+10;
+ }
+
+ QtMaterialRipple *ripple = new QtMaterialRipple(QPoint(10+t, 20+t));
+ ripple->setColor(m_track->trackColor());
+ ripple->setRadiusEndValue(w);
+ ripple->setOpacityStartValue(0.8);
+
+ addRipple(ripple);
+}
+
+bool QtMaterialToggleRippleOverlay::eventFilter(QObject *obj, QEvent *event)
+{
+ if (QEvent::Paint == event->type()) {
+ setGeometry(overlayGeometry());
+ QList::const_iterator i;
+ QList items = ripples();
+ QColor color = m_track->trackColor();
+ for (i = items.begin(); i != items.end(); ++i) {
+ (*i)->setColor(color);
+ }
+ }
+ return QtMaterialRippleOverlay::eventFilter(obj, event);
+}
+
+QRect QtMaterialToggleRippleOverlay::overlayGeometry() const
+{
+ const qreal offset = m_thumb->offset();
+ if (Qt::Horizontal == m_toggle->orientation()) {
+ return m_toggle->geometry().adjusted(-10+offset, -20, 10+offset, 20);
+ } else {
+ return m_toggle->geometry().adjusted(-10, -20+offset, 10, 20+offset);
+ }
+}
+
+/*!
+ * \class QtMaterialToggleThumb
+ * \internal
+ */
+
+QtMaterialToggleThumb::QtMaterialToggleThumb(QtMaterialToggle *parent)
+ : QWidget(parent),
+ m_toggle(parent),
+ m_shift(0),
+ m_offset(0)
+{
+ Q_ASSERT(parent);
+
+ QGraphicsDropShadowEffect *effect = new QGraphicsDropShadowEffect;
+ effect->setBlurRadius(6);
+ effect->setColor(QColor(0, 0, 0, 80));
+ effect->setOffset(QPointF(0, 1));
+ setGraphicsEffect(effect);
+
+ parent->installEventFilter(this);
+}
+
+QtMaterialToggleThumb::~QtMaterialToggleThumb()
+{
+}
+
+void QtMaterialToggleThumb::setShift(qreal shift)
+{
+ if (m_shift == shift) {
+ return;
+ }
+
+ m_shift = shift;
+ updateOffset();
+}
+
+bool QtMaterialToggleThumb::eventFilter(QObject *obj, QEvent *event)
+{
+ const QEvent::Type type = event->type();
+
+ if (QEvent::Resize == type || QEvent::Move == type)
+ {
+ setGeometry(m_toggle->rect().adjusted(8, 8, -8, -8));
+ updateOffset();
+ }
+ return QWidget::eventFilter(obj, event);
+}
+
+void QtMaterialToggleThumb::paintEvent(QPaintEvent *event)
+{
+ Q_UNUSED(event)
+
+ QPainter painter(this);
+ painter.setRenderHint(QPainter::Antialiasing);
+
+ QBrush brush;
+ brush.setStyle(Qt::SolidPattern);
+ brush.setColor(m_toggle->isEnabled() ? m_thumbColor : Qt::white);
+
+ painter.setBrush(brush);
+ painter.setPen(Qt::NoPen);
+
+ int s;
+ QRectF r;
+
+ if (Qt::Horizontal == m_toggle->orientation()) {
+ s = height()-10;
+ r = QRectF(5+m_offset, 5, s, s);
+ } else {
+ s = width()-10;
+ r = QRectF(5, 5+m_offset, s, s);
+ }
+
+ painter.drawEllipse(r);
+
+ if (!m_toggle->isEnabled()) {
+ brush.setColor(m_toggle->disabledColor());
+ painter.setBrush(brush);
+ painter.drawEllipse(r);
+ }
+}
+
+void QtMaterialToggleThumb::updateOffset()
+{
+ const QSize s(Qt::Horizontal == m_toggle->orientation()
+ ? size() : size().transposed());
+ m_offset = m_shift*static_cast(s.width()-s.height());
+ update();
+}
+
+/*!
+ * \class QtMaterialToggleTrack
+ * \internal
+ */
+
+QtMaterialToggleTrack::QtMaterialToggleTrack(QtMaterialToggle *parent)
+ : QWidget(parent),
+ m_toggle(parent)
+{
+ Q_ASSERT(parent);
+
+ parent->installEventFilter(this);
+}
+
+QtMaterialToggleTrack::~QtMaterialToggleTrack()
+{
+}
+
+void QtMaterialToggleTrack::setTrackColor(const QColor &color)
+{
+ m_trackColor = color;
+ update();
+}
+
+bool QtMaterialToggleTrack::eventFilter(QObject *obj, QEvent *event)
+{
+ const QEvent::Type type = event->type();
+
+ if (QEvent::Resize == type || QEvent::Move == type) {
+ setGeometry(m_toggle->rect());
+ }
+ return QWidget::eventFilter(obj, event);
+}
+
+void QtMaterialToggleTrack::paintEvent(QPaintEvent *event)
+{
+ Q_UNUSED(event)
+
+ QPainter painter(this);
+ painter.setRenderHint(QPainter::Antialiasing);
+
+ QBrush brush;
+ if (m_toggle->isEnabled()) {
+ brush.setColor(m_trackColor);
+ painter.setOpacity(0.8);
+ } else {
+ brush.setColor(m_toggle->disabledColor());
+ painter.setOpacity(0.6);
+ }
+ brush.setStyle(Qt::SolidPattern);
+ painter.setBrush(brush);
+ painter.setPen(Qt::NoPen);
+
+ if (Qt::Horizontal == m_toggle->orientation()) {
+ const int h = height()/2;
+ const QRect r(0, h/2, width(), h);
+ painter.drawRoundedRect(r.adjusted(14, 4, -14, -4), h/2-4, h/2-4);
+ } else {
+ const int w = width()/2;
+ const QRect r(w/2, 0, w, height());
+ painter.drawRoundedRect(r.adjusted(4, 14, -4, -14), w/2-4, w/2-4);
+ }
+}
diff --git a/src/material-widgets/qtmaterialtoggle_internal.h b/src/material-widgets/qtmaterialtoggle_internal.h
new file mode 100644
index 0000000..079e369
--- /dev/null
+++ b/src/material-widgets/qtmaterialtoggle_internal.h
@@ -0,0 +1,120 @@
+#ifndef QTMATERIALTOGGLE_INTERNAL_H
+#define QTMATERIALTOGGLE_INTERNAL_H
+
+#include
+#include "lib/qtmaterialrippleoverlay.h"
+
+class QtMaterialToggle;
+class QtMaterialToggleThumb;
+class QtMaterialToggleTrack;
+
+class QtMaterialToggleRippleOverlay : public QtMaterialRippleOverlay
+{
+ Q_OBJECT
+
+public:
+ QtMaterialToggleRippleOverlay(QtMaterialToggleThumb *thumb,
+ QtMaterialToggleTrack *track,
+ QtMaterialToggle *parent);
+ ~QtMaterialToggleRippleOverlay();
+
+protected slots:
+ void addToggleRipple();
+
+protected:
+ bool eventFilter(QObject *obj, QEvent *event) Q_DECL_OVERRIDE;
+ QRect overlayGeometry() const Q_DECL_OVERRIDE;
+
+private:
+ Q_DISABLE_COPY(QtMaterialToggleRippleOverlay)
+
+ QtMaterialToggle *const m_toggle;
+ QtMaterialToggleThumb *const m_thumb;
+ QtMaterialToggleTrack *const m_track;
+};
+
+class QtMaterialToggleThumb : public QWidget
+{
+ Q_OBJECT
+
+ Q_PROPERTY(qreal shift WRITE setShift READ shift)
+ Q_PROPERTY(QColor thumbColor WRITE setThumbColor READ thumbColor)
+
+public:
+ QtMaterialToggleThumb(QtMaterialToggle *parent);
+ ~QtMaterialToggleThumb();
+
+ void setShift(qreal shift);
+ inline qreal shift() const;
+
+ inline qreal offset() const;
+
+ inline void setThumbColor(const QColor &color);
+ inline QColor thumbColor() const;
+
+protected:
+ bool eventFilter(QObject *obj, QEvent *event) Q_DECL_OVERRIDE;
+ void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE;
+
+private:
+ Q_DISABLE_COPY(QtMaterialToggleThumb)
+
+ void updateOffset();
+
+ QtMaterialToggle *const m_toggle;
+ QColor m_thumbColor;
+ qreal m_shift;
+ qreal m_offset;
+};
+
+inline qreal QtMaterialToggleThumb::shift() const
+{
+ return m_shift;
+}
+
+inline qreal QtMaterialToggleThumb::offset() const
+{
+ return m_offset;
+}
+
+inline void QtMaterialToggleThumb::setThumbColor(const QColor &color)
+{
+ m_thumbColor = color;
+ update();
+}
+
+inline QColor QtMaterialToggleThumb::thumbColor() const
+{
+ return m_thumbColor;
+}
+
+class QtMaterialToggleTrack : public QWidget
+{
+ Q_OBJECT
+
+ Q_PROPERTY(QColor trackColor WRITE setTrackColor READ trackColor)
+
+public:
+ QtMaterialToggleTrack(QtMaterialToggle *parent);
+ ~QtMaterialToggleTrack();
+
+ void setTrackColor(const QColor &color);
+ inline QColor trackColor() const;
+
+protected:
+ bool eventFilter(QObject *obj, QEvent *event) Q_DECL_OVERRIDE;
+ void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE;
+
+private:
+ Q_DISABLE_COPY(QtMaterialToggleTrack)
+
+ QtMaterialToggle *const m_toggle;
+ QColor m_trackColor;
+};
+
+inline QColor QtMaterialToggleTrack::trackColor() const
+{
+ return m_trackColor;
+}
+
+#endif // QTMATERIALTOGGLE_INTERNAL_H
diff --git a/src/material-widgets/qtmaterialtoggle_p.h b/src/material-widgets/qtmaterialtoggle_p.h
new file mode 100644
index 0000000..f50d5b3
--- /dev/null
+++ b/src/material-widgets/qtmaterialtoggle_p.h
@@ -0,0 +1,41 @@
+#ifndef QTMATERIALTOGGLE_P_H
+#define QTMATERIALTOGGLE_P_H
+
+#include