From 1d3d261e389e78cff8645078c1de15bad977b9a5 Mon Sep 17 00:00:00 2001 From: J-P Nurmi <jpnurmi@gmail.com> Date: Mon, 29 Oct 2018 11:17:04 +0100 Subject: [PATCH] Setup wizard: implement an animated and interactive slide show --- src/gui/CMakeLists.txt | 1 + src/gui/wizard/owncloudsetupnocredspage.ui | 35 +--- src/gui/wizard/owncloudsetuppage.cpp | 35 ++-- src/gui/wizard/owncloudsetuppage.h | 7 - src/gui/wizard/slideshow.cpp | 193 +++++++++++++++++++++ src/gui/wizard/slideshow.h | 83 +++++++++ theme.qrc | 12 +- theme/colored/wizard-files.png | Bin 0 -> 1697 bytes theme/colored/wizard-files@2x.png | Bin 0 -> 3201 bytes theme/colored/wizard-groupware.png | Bin 0 -> 2476 bytes theme/colored/wizard-groupware@2x.png | Bin 0 -> 5042 bytes theme/colored/wizard-nextcloud.png | Bin 0 -> 2633 bytes theme/colored/wizard-nextcloud@2x.png | Bin 0 -> 5377 bytes theme/colored/wizard-talk.png | Bin 0 -> 2992 bytes theme/colored/wizard-talk@2x.png | Bin 0 -> 6161 bytes 15 files changed, 301 insertions(+), 65 deletions(-) create mode 100644 src/gui/wizard/slideshow.cpp create mode 100644 src/gui/wizard/slideshow.h create mode 100644 theme/colored/wizard-files.png create mode 100644 theme/colored/wizard-files@2x.png create mode 100644 theme/colored/wizard-groupware.png create mode 100644 theme/colored/wizard-groupware@2x.png create mode 100644 theme/colored/wizard-nextcloud.png create mode 100644 theme/colored/wizard-nextcloud@2x.png create mode 100644 theme/colored/wizard-talk.png create mode 100644 theme/colored/wizard-talk@2x.png diff --git a/src/gui/CMakeLists.txt b/src/gui/CMakeLists.txt index 4684e9117..e626ebce4 100644 --- a/src/gui/CMakeLists.txt +++ b/src/gui/CMakeLists.txt @@ -116,6 +116,7 @@ set(client_SRCS wizard/owncloudwizardresultpage.cpp wizard/webviewpage.cpp wizard/webview.cpp + wizard/slideshow.cpp ) IF(NOT NO_SHIBBOLETH) diff --git a/src/gui/wizard/owncloudsetupnocredspage.ui b/src/gui/wizard/owncloudsetupnocredspage.ui index facd616f6..e28271815 100644 --- a/src/gui/wizard/owncloudsetupnocredspage.ui +++ b/src/gui/wizard/owncloudsetupnocredspage.ui @@ -190,28 +190,6 @@ </item> </layout> </item> - <item row="1" column="0"> - <widget class="QLabel" name="slideImage"> - <property name="minimumSize"> - <size> - <width>0</width> - <height>100</height> - </size> - </property> - <property name="text"> - <string/> - </property> - <property name="pixmap"> - <pixmap resource="../../../theme.qrc">:/client/theme/colored/wizard-files.svg</pixmap> - </property> - <property name="scaledContents"> - <bool>false</bool> - </property> - <property name="alignment"> - <set>Qt::AlignCenter</set> - </property> - </widget> - </item> <item row="6" column="0"> <spacer name="verticalSpacer_4"> <property name="orientation"> @@ -229,7 +207,7 @@ </spacer> </item> <item row="2" column="0"> - <widget class="QLabel" name="slideLabel"> + <widget class="OCC::SlideShow" name="slideShow"> <property name="font"> <font> <pointsize>12</pointsize> @@ -237,12 +215,6 @@ <bold>true</bold> </font> </property> - <property name="text"> - <string>SlideshowLabel</string> - </property> - <property name="alignment"> - <set>Qt::AlignCenter</set> - </property> </widget> </item> <item row="4" column="0"> @@ -437,6 +409,11 @@ <extends>QLineEdit</extends> <header>wizard/postfixlineedit.h</header> </customwidget> + <customwidget> + <class>OCC::SlideShow</class> + <extends>QWidget</extends> + <header>wizard/slideshow.h</header> + </customwidget> </customwidgets> <resources> <include location="../../../theme.qrc"/> diff --git a/src/gui/wizard/owncloudsetuppage.cpp b/src/gui/wizard/owncloudsetuppage.cpp index eb5291a77..994f65bf9 100644 --- a/src/gui/wizard/owncloudsetuppage.cpp +++ b/src/gui/wizard/owncloudsetuppage.cpp @@ -31,6 +31,7 @@ #include "wizard/owncloudwizardcommon.h" #include "wizard/owncloudsetuppage.h" #include "wizard/owncloudconnectionmethoddialog.h" +#include "wizard/slideshow.h" #include "theme.h" #include "account.h" #include "config.h" @@ -80,18 +81,16 @@ OwncloudSetupPage::OwncloudSetupPage(QWidget *parent) connect(_ui.createAccountButton, &QPushButton::clicked, this, &OwncloudSetupPage::slotGotoProviderList); _ui.login->hide(); - _slideshow.append(qMakePair(QString("nextcloud"), tr("Keep your data secure and under your control"))); - _slideshow.append(qMakePair(QString("files"), tr("Secure collaboration & file exchange"))); - _slideshow.append(qMakePair(QString("groupware"), tr("Easy-to-use web mail, calendaring & contacts"))); - _slideshow.append(qMakePair(QString("talk"), tr("Screensharing, online meetings & web conferences"))); + _ui.slideShow->addSlide(Theme::hidpiFileName(":/client/theme/colored/wizard-nextcloud.png"), tr("Keep your data secure and under your control")); + _ui.slideShow->addSlide(Theme::hidpiFileName(":/client/theme/colored/wizard-files.png"), tr("Secure collaboration & file exchange")); + _ui.slideShow->addSlide(Theme::hidpiFileName(":/client/theme/colored/wizard-groupware.png"), tr("Easy-to-use web mail, calendaring & contacts")); + _ui.slideShow->addSlide(Theme::hidpiFileName(":/client/theme/colored/wizard-talk.png"), tr("Screensharing, online meetings & web conferences")); + connect(_ui.slideShow, &SlideShow::clicked, _ui.slideShow, &SlideShow::nextSlide); + _ui.slideShow->startShow(2500); - _ui.slideLabel->setStyleSheet(QString("color:%1;").arg(theme->wizardHeaderBackgroundColor().name())); - _currentSlide = -1; - nextSlide(); - - QTimer *timer = new QTimer(this); - connect(timer, SIGNAL(timeout()), this, SLOT(nextSlide())); - timer->start(2500); + QPalette pal = _ui.slideShow->palette(); + pal.setColor(QPalette::WindowText, theme->wizardHeaderBackgroundColor()); + _ui.slideShow->setPalette(pal); #else _ui.createAccountButton->hide(); _ui.slideImage->hide(); @@ -102,20 +101,6 @@ OwncloudSetupPage::OwncloudSetupPage(QWidget *parent) setStyleSheet(QString("background-color:%1; color:%2 QLabel { color:%2; } QSpacerItem { color: red; }").arg(theme->wizardHeaderBackgroundColor().name(), theme->wizardHeaderTitleColor().name())); } -#ifdef WITH_PROVIDERS -void OwncloudSetupPage::nextSlide() -{ - if (_currentSlide < _slideshow.length() - 1) { - _currentSlide++; - } else { - _currentSlide = 0; - } - QPixmap pixmap = QIcon(Theme::hidpiFileName(":/client/theme/colored/wizard-" + _slideshow.at(_currentSlide).first + ".svg")).pixmap(QSize(1024, 1024)); - _ui.slideImage->setPixmap(pixmap.scaled(QSize(_ui.slideImage->size().height(), _ui.slideImage->size().height()), Qt::KeepAspectRatio, Qt::SmoothTransformation)); - _ui.slideLabel->setText(_slideshow.at(_currentSlide).second); -} -#endif - void OwncloudSetupPage::setServerUrl(const QString &newUrl) { _ocWizard->setRegistration(false); diff --git a/src/gui/wizard/owncloudsetuppage.h b/src/gui/wizard/owncloudsetuppage.h index 3b0772f07..b8893d271 100644 --- a/src/gui/wizard/owncloudsetuppage.h +++ b/src/gui/wizard/owncloudsetuppage.h @@ -62,9 +62,6 @@ public slots: void startSpinner(); void stopSpinner(); void slotCertificateAccepted(); -#ifdef WITH_PROVIDERS - void nextSlide(); -#endif protected slots: void slotUrlChanged(const QString &); @@ -96,10 +93,6 @@ private: QString _remoteFolder; AddCertificateDialog *addCertDial; OwncloudWizard *_ocWizard; - - QList<QPair<QString, QString>> _slideshow; - int _currentSlide; - }; } // namespace OCC diff --git a/src/gui/wizard/slideshow.cpp b/src/gui/wizard/slideshow.cpp new file mode 100644 index 000000000..37b4a3f3f --- /dev/null +++ b/src/gui/wizard/slideshow.cpp @@ -0,0 +1,193 @@ +/* + * Copyright (C) 2018 by J-P Nurmi <jpnurmi@gmail.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + */ + +#include "slideshow.h" +#include <QGuiApplication> +#include <QMouseEvent> +#include <QPainter> +#include <QStyle> +#include <QStyleHints> + +namespace OCC { + +static const int Spacing = 6; +static const int SlideDuration = 250; +static const int SlideDistance = 200; + +SlideShow::SlideShow(QWidget *parent) : QWidget(parent) +{ + setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); +} + +void SlideShow::addSlide(const QPixmap &pixmap, const QString &label) +{ + _labels += label; + _pixmaps += pixmap; + updateGeometry(); +} + +bool SlideShow::isActive() const +{ + return _timer.isActive(); +} + +int SlideShow::interval() const +{ + return _interval; +} + +void SlideShow::setInterval(int interval) +{ + if (_interval == interval) + return; + + _interval = interval; + maybeRestartTimer(); +} + +int SlideShow::currentSlide() const +{ + return _currentIndex; +} + +void SlideShow::setCurrentSlide(int index) +{ + if (_currentIndex == index) + return; + + if (!_animation) { + _animation = new QVariantAnimation(this); + _animation->setDuration(SlideDuration); + _animation->setEasingCurve(QEasingCurve::OutCubic); + _animation->setStartValue(static_cast<qreal>(_currentIndex)); + connect(_animation.data(), SIGNAL(valueChanged(QVariant)), this, SLOT(update())); + } + _animation->setEndValue(static_cast<qreal>(index)); + _animation->start(QAbstractAnimation::DeleteWhenStopped); + + _reverse = index < _currentIndex; + _currentIndex = index; + maybeRestartTimer(); + update(); + emit currentSlideChanged(index); +} + +QSize SlideShow::sizeHint() const +{ + QFontMetrics fm = fontMetrics(); + QSize labelSize(0, fm.height()); + for (const QString &label : _labels) { + labelSize.setWidth(std::max(fm.width(label), labelSize.width())); + } + QSize pixmapSize; + for (const QPixmap &pixmap : _pixmaps) { + pixmapSize.setWidth(std::max(pixmap.width(), pixmapSize.width())); + pixmapSize.setHeight(std::max(pixmap.height(), pixmapSize.height())); + } + return QSize(std::max(labelSize.width(), pixmapSize.width()), labelSize.height() + Spacing + pixmapSize.height()); +} + +void SlideShow::startShow(int interval) +{ + if (interval > 0) + _interval = interval; + _timer.start(_interval, this); +} + +void SlideShow::stopShow() +{ + _timer.stop(); +} + +void SlideShow::nextSlide() +{ + setCurrentSlide((_currentIndex + 1) % _labels.count()); + _reverse = false; +} + +void SlideShow::previousSlide() +{ + setCurrentSlide((_currentIndex > 0 ? _currentIndex : _labels.count()) - 1); + _reverse = true; +} + +void SlideShow::reset() +{ + stopShow(); + _pixmaps.clear(); + _labels.clear(); + updateGeometry(); + update(); +} + +void SlideShow::mousePressEvent(QMouseEvent *event) +{ + _pressPoint = event->pos(); +} + +void SlideShow::mouseReleaseEvent(QMouseEvent *event) +{ + if (QLineF(_pressPoint, event->pos()).length() < QGuiApplication::styleHints()->startDragDistance()) + emit clicked(); +} + +void SlideShow::paintEvent(QPaintEvent *) +{ + QPainter painter(this); + + if (_animation) { + int from = _animation->startValue().toInt(); + int to = _animation->endValue().toInt(); + qreal progress = _animation->easingCurve().valueForProgress(_animation->currentTime() / static_cast<qreal>(_animation->duration())); + + painter.save(); + painter.setOpacity(1.0 - progress); + painter.translate(progress * (_reverse ? SlideDistance : -SlideDistance), 0); + drawSlide(&painter, from); + + painter.restore(); + painter.setOpacity(progress); + painter.translate((1.0 - progress) * (_reverse ? -SlideDistance : SlideDistance), 0); + drawSlide(&painter, to); + } else { + drawSlide(&painter, _currentIndex); + } +} + +void SlideShow::timerEvent(QTimerEvent *event) +{ + if (event->timerId() == _timer.timerId()) + nextSlide(); +} + +void SlideShow::maybeRestartTimer() +{ + if (!isActive()) + return; + + startShow(); +} + +void SlideShow::drawSlide(QPainter *painter, int index) +{ + QString label = _labels.value(index); + QRect labelRect = style()->itemTextRect(fontMetrics(), rect(), Qt::AlignBottom | Qt::AlignHCenter, isEnabled(), label); + style()->drawItemText(painter, labelRect, Qt::AlignCenter, palette(), isEnabled(), label, QPalette::WindowText); + + QPixmap pixmap = _pixmaps.value(index); + QRect pixmapRect = style()->itemPixmapRect(QRect(0, 0, width(), labelRect.top() - Spacing), Qt::AlignCenter, pixmap); + style()->drawItemPixmap(painter, pixmapRect, Qt::AlignCenter, pixmap); +} + +} // namespace OCC diff --git a/src/gui/wizard/slideshow.h b/src/gui/wizard/slideshow.h new file mode 100644 index 000000000..e00236a40 --- /dev/null +++ b/src/gui/wizard/slideshow.h @@ -0,0 +1,83 @@ +/* + * Copyright (C) 2018 by J-P Nurmi <jpnurmi@gmail.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + */ + +#ifndef OCC_SLIDESHOW_H +#define OCC_SLIDESHOW_H + +#include <QWidget> +#include <QBasicTimer> +#include <QPointer> +#include <QVariantAnimation> + +namespace OCC { + +/** + * @brief The SlideShow class + * @ingroup gui + */ +class SlideShow : public QWidget +{ + Q_OBJECT + Q_PROPERTY(int interval READ interval WRITE setInterval) + Q_PROPERTY(int currentSlide READ currentSlide WRITE setCurrentSlide NOTIFY currentSlideChanged) + +public: + explicit SlideShow(QWidget* parent = nullptr); + + void addSlide(const QPixmap &pixmap, const QString &label); + + bool isActive() const; + + int interval() const; + void setInterval(int interval); + + int currentSlide() const; + void setCurrentSlide(int index); + + QSize sizeHint() const override; + +public slots: + void startShow(int interval = 0); + void stopShow(); + void nextSlide(); + void previousSlide(); + void reset(); + +signals: + void clicked(); + void currentSlideChanged(int index); + +protected: + void mousePressEvent(QMouseEvent *event); + void mouseReleaseEvent(QMouseEvent *event); + void paintEvent(QPaintEvent *event); + void timerEvent(QTimerEvent *event); + +private: + void maybeRestartTimer(); + void drawSlide(QPainter *painter, int index); + + bool _reverse = false; + int _interval = 2500; + int _currentIndex = 0; + QPoint _pressPoint; + QBasicTimer _timer; + QStringList _labels; + QVector<QPixmap> _pixmaps; + QPointer<QVariantAnimation> _animation = nullptr; +}; + +} // namespace OCC + +#endif // OCC_SLIDESHOW_H diff --git a/theme.qrc b/theme.qrc index 630400835..11641c386 100644 --- a/theme.qrc +++ b/theme.qrc @@ -117,9 +117,13 @@ <file>theme/white/state-warning-64.png</file> <file>theme/white/state-warning-128.png</file> <file>theme/white/state-warning-256.png</file> - <file>theme/colored/wizard-files.svg</file> - <file>theme/colored/wizard-groupware.svg</file> - <file>theme/colored/wizard-nextcloud.svg</file> - <file>theme/colored/wizard-talk.svg</file> + <file>theme/colored/wizard-files.png</file> + <file>theme/colored/wizard-files@2x.png</file> + <file>theme/colored/wizard-groupware.png</file> + <file>theme/colored/wizard-groupware@2x.png</file> + <file>theme/colored/wizard-nextcloud.png</file> + <file>theme/colored/wizard-nextcloud@2x.png</file> + <file>theme/colored/wizard-talk.png</file> + <file>theme/colored/wizard-talk@2x.png</file> </qresource> </RCC> diff --git a/theme/colored/wizard-files.png b/theme/colored/wizard-files.png new file mode 100644 index 0000000000000000000000000000000000000000..236bfa773706ed71c74b3ae2d6285a90d0d0d2a4 GIT binary patch literal 1697 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 literal 0 HcmV?d00001 diff --git a/theme/colored/wizard-files@2x.png b/theme/colored/wizard-files@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..4f1eb74acb8bb2a10e8f05118a5c3682a9f2b559 GIT binary patch literal 3201 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 EKN@rO@c;k- literal 0 HcmV?d00001 diff --git a/theme/colored/wizard-groupware.png b/theme/colored/wizard-groupware.png new file mode 100644 index 0000000000000000000000000000000000000000..417629bb9df180024bb2d58c718c89cecd94f28e GIT binary patch literal 2476 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 literal 0 HcmV?d00001 diff --git a/theme/colored/wizard-groupware@2x.png b/theme/colored/wizard-groupware@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..cea41d3c614b1f513493cd9d66781090076cd054 GIT binary patch literal 5042 zcmZWtcTf|+(hmw!LPw+qLJ^4wp|?m02I)$#0wN&2qX8jGLcmZBT>$|p3P_Qn^dh|} zO%Nfp&{bM!LIA(`-uK_TnY)|a+r9hU-E5hSF}|b2#K6k{005ZubP=YMx$j@6yF?kw ztt)aU6LpZ5o;e+*h10p<C^Wslu1ydCP#^!VQw<$9K`Bh0U~TJQGrxzyNT)zo01}Cm z^6>Qva(41}mGTR8%i6lh3jlCH^$>9LknGLbuwZ-FSG~L2ds~G?T%JDKa5jePmyNwV zG7Gs<WzBn%cGa~_cuZK`5~g`}8T1;n5UFu_j~>?2xCqHv4n#x_Da*~}TaRVSe=?^| z3iN>IIk@K?y;UK<(lE_tsQRMfw!PQtwsu_B{h+)e`{=AZh%~59KJ=CD;dYLf`JcfI zvI}aDHzrunF1@%$q&B~HAtgc&hY)8tk^lJ^b58Y$Pvto2%MDxeeNfY+4P0xY>JTv^ zXRHR={|K%G{50Tp0_;2C9Twa~M?Hzr<Qn=cM@u|DxWcEfcunZUa$%kEVaVkPJ6yg+ z?a<bj`=^8|%%3YqhQi5l#$RdgloE$ngihtOTXO0{?Ks!UA(pI;#4SjDV|Sk5MTd2n ze#He<_J-v8fVf_Mcs0g+hSd7xDXgBmkV%<<%)a;=(2(6_Z$$Voh<s^m4KFRJaZ`^W zbB%oelNiX_20tjc;n6ya#IsVCoI)Md>|%3u{)m1g<p7mT1tnK&n1=r(63u+Vtv}w_ zf?a}CAYT50>GKG5HXsvLMI0>gH$HN$0+0YRluk*zfVtFty`{EeW@6+X2wazbWsdO_ zKP^Su?u45|gx!6<4OXAJA`0A$3PSUtRp(7ii%zbl%Rd`K#(P#{3Vl4b9Yvn-g-Y}a z_Gfr_o$Aa(O1l}7-@ZX53IaI7b^51@Y8C8PVF(3l_!xVonn1=W|I6PneNIuj?ZS^6 z8sW74nVh0b0pFbv99vok=JO_{?zAykw{DU%S|eTh6CV_PPH20Wns)KNu+*^?F|79w zbMjRQ-6GW|b9CWdNXEMl7e3XUFehCl$6Ca^Z|bcQX`~H_+7=gJ!gv+>96p(cSKqh8 z>;J~ta?h>+iX)fx=Y^^t*x>`aTXcx~Lid}u#o?@Kag(dt<isS!8BFTnE>9Uht-s^W zYcTK=4WxHua>?m__O>`WRL#doV-F;3MBzSPx=_YHeC^&cOl!IfTx7~QvWM!WOD0K4 z*&(sp+#c1K)Y2Lxm4EX#H=1{_73H@}(X+&xUL`Tlvth(YV)JZcE;Nv|b(>ZZtPxjr zb7d+gIPxJ4L|bQ3c_FRUncA1VO)z@}hOnh<Z~STvre!4Fh|f^C9>ZBE+7D^v_=Y1i z-?hXi*QcPa71Jl@YKT&Zb@w*u0PM2(JpI@M8ps#-`qzp~DdDubah!$n4aW;|=~+kp z45pdQm6plrc+2ui9A}pc9QEJzL*t<&o_!El(h@&r4Zkg>w4FlHirEGzbTG*3udKem z)l&v8F!xpe6Tf-*U$Ni2puF3^|6gZ$HFDV6ckY^mu1DbBXE*)5J#`zneo_I8x>*P1 z(*FQyC#wJP_V|yC9_gRV%2BIGVK;**`w{Ity(gy652f=TtajnF#Y~x5lDeDfF(3CT zoFS7&I{VfL2fB!AmMKgSi){T8R~K+h-7hJtE&kQOs8!iC1Xnszb$Ebl6<kRWZ4P(e z@CiNdp3uACd+IO^Y{{!*o0uIcV!CUY4WCNR1vb>Ao_<AQYO!sNVP(v9hxbMdB2otU zT>-(I?2pD&$=_YwHh#Z0$VaA~os0^{+!6MzpGU^aV_R6pS|5v5)Y0yX4M1tzx$#GD z`qgf1p2-F{h7KQa-%vM!M~@1lH?zW@>l)P4Y>0<5CM&f6zN}NO6D(6vk3Q^(A9I{L z75^a7eKT}Fi}CQRnZ6QSr8*6C)V8@4|HVDs>H>1qM7gQZsyi95@=Ti#BtQazjhr|U z7B~h+T6No~A7Xg~{oYK|j9-5(#5_n^`*6zRUbcj*hRql^e2A4xgwN`$0+~df#aP3c z^}T_~F-2-Xlj)m7H*>Id_2CD7>7}Dx41v-ytHkw*nhtSYf&yET*KURzZ`e<$;OO1k zdUtzlJnii5E4S%97z)6$TjT9jPv!iDKwiu!@dnqerDbm&dF>ZPfm({-b0B+VZhT)a zsu%Fn_;{c0+2OlaVkI`o@5^bi#;i&^>I*cj&WuSxxbK2b(4H$_uVYKp@@Xi5SKGh? zVJIEtc4e3OH@WcjGH|Eq45m<GD+g2f<ZW|czMBBa%{EJbYU_)-q0x_9#7T;cE4I-j zHNMhZR_NSI*g1Ye+Vpn*mYvJ4w7ezD-$oOVz3}LK5u}u#tAD8+Ov`@$9f`dWGDoYY z75-qnkD0qGND#3xsBFL#)A|brzjAs7u>x)Ws?nS@j}Utj6s_X<+!I>P)NoU2nJhl( zFucd&HjjHIOBC}~G4=ON+orSGwZ~KaV=vP*)E?L2=2D%~ZKX8>9DV064(n9OcS-7c z6iE(P#ILSJ)77yL4}MWwA6^L)6z#&qhXXILDyaboNk*x>VA9=I5tsf?;9;vLV(+Y6 z@da0cN5`f%VTkl_KlrDx*Uyx-p7mFHcsMYfbTW=%jn?-;LS8v_V5$o9V%s@VK7AaI z{R{V|$jP^YWacD=HX1$oW=v|+xi2AHa6LA)6YB}h=OQzkFg*pb@8Z56KQCx(`2BrS zk1utXv;44je7boQiSyhEm$Zxkg6kRd!}P|@zyVL3v<i_jsJ%YlyI-l=Xc`JPAX;{; zs!0Rs<)JZT+eE+OX<X2@(`dfQUajN2+ZdIWs$sGF*{}rfVtzEreRq?tO&4OujctnA zm$&5=+yfP5UJ%Dc?|*+RvODxnLf~pnQ(7Z>99<FH%h0*`P3K*ZN07B0`TC9{9!v4P z{t*);3HuG>C$CyVg>+#b!yp5Ij%)5d;jmnvkRBwr;3=1=Z!62Pz`P8=*yt!HT01Vb zRzV7WV7Q=ElK8sCNEyjnZuA{2>zNx%Yy$(5%l1K3Q&E#=;FP2cd1TUMw}`p){y!T{ zktb*~k5{jow7K;;Z^L7|f1zg`<Zy)S4Yi3~LV2xXi`QSPiim!Ow|-AyxiBC3>|vEc zX$JOTGH5_aP0TnI>Z%@x8=I`BmLKtYxqRK$?U{=_s7EbTn&HAizQiu_;>2dHf~6l% zu4qH_&SL^c@@HuL>RG}f)(k%x{oJ^f=(OtQZ{ctvpVP!CTKnjuBIAlIEyFu7p!Bsl z*=Bj*0rXm%`7_f46&5Mznzt#ZC7ihGqkLppy2sz%k|+2;Z#==`<*(y=#@BS=6sw_s z4{krd73X##OE!BYKzB~lZcj-zdubt7swE{k%`DbgYk(tuhvCA=WNkFU4P4k}8$D)J zSmU0xguF_s4*>3@erNpa7j!*iYT5WD4f;)`UAfU3TFM~cn}U0-^h>W;`Ioeq^D$(E zag-h2E#|3OOI5v0F-^Mm)*groz_e_d3y5;Wr>~OHsgw4B8hUQowOEp-@kh)l&mtEB z0hegfaqd&J<rUC%%HGF$lPF37FHRC!OLu@53irK9VVy98Y;2WtwyroW5M#zi!-i6h zf)6;x3rT2yI!**=+E<SwvBnd(;ifkE^7MY3hpJpX<VsbNj(WVTQ@G}H(KKkEm@tG| z&j#G~QX52xl*OI};L`Eyf{{xSEXmdRunr_OAb-7x5@|~n8Hma%Q6_ivo#KO45)VOC z5uz%Sl<lLcVg$cV%q~p{v@k8+OpSuX{}G-BqVgoTVfD$wLq~1?pDvMD&62Fh|By3` z&B+0kUw}vs*b>MKb)bt%*ssd`7UWe?33snMOZ*0}f)m>sSn{TSQ^0gg1)M#Y2Xb@Y z6kOiU8+c}srjF-a|C-hXd~ELebp>_c&2uV&@V(Sy>H0NtChn&Szs-@Fl&AP6m6pm{ z9XMc-I{RF$j}{%{P}BYxpC;P9(iJr6Dtn8d1cE#TEM9CkkbPAkYX?7njjd!;n%jgK z(v>>mtwAQ+cE;+=H;PYAMQSds@CJWJ;<(Ho<5V0pc$9X0&4+agWs1Tlj5X`gC+jl> zk4BY?AHvg*CTfa8q&nQ_c5!1niXtS7pR<pyo+TGEyjJrAAgKmm5w_~XANUp(*&C={ z&uZUzBdM5F@*5bq5>5Ymjx011hjy0Dh4Rgyy<+xbBj*fAQMoO6)WI|0J!;t&&y7+y zj)4S3q|%5iwAlbDi?@dpTX*Y;I_SGp&;jq9pVLv*{Am)0^K8n6C?k$O9nG(AKGj_j zNdx>%7zn&Gz29=PvLNj#Jl%(XP|i*xK9Jtu<>%6KC#AkXEUj@1>&p!oUgw2yAgCMt zD`rh&5oS0&CZSu#yn(vb!6no_sA@PFn`d8Kwov$`ZpHO|@*Ox)VcdVqPLumuYrG$e z&^?2IolC?}$Sl)OofS&(&Q2gnF6;~}z0CdrBrx>LZoltKEvd%bkj#$Sanww`!=GZO z&(fDM`nt|C+_xll07}V0M#)|a78~6%1??%~62)up$$~`QS`zSI+93MlUb55eNKiY& zy<Jb+RrM{{P_EhMGcfvIjHl-WVu3?+v@`f}s~&-CIc9<c6t*?^&iTqe0UoMR5dz(e z%JP5??SR%bSGW*WVRVL>{2%D7@9H>l2HfRECRvs>qww`%3{oezepD*0j<93xAY)pD zWuMP&q)%Yed2Cvz%ix<+ro=E0=sknx>A?<m*DHm}N-O+5rz(%yY3ffL$LD4`CT1;K zxN8Y0ys=-f?6Cq{Z6s*)_H>xKVVQ+Z(!2diJuBar?OSSgXqk;(nTOa^fqNvl?V3xY z*3%71!bdlCOXj7lk@!Z3^uwH#75O4AL@gwezbDmMIA6j88Xi+Gk#e<6ABt=2l<jje zY@q%_?R$#Ek$c{$h49$niJOeGfgXmsUvI~15aUo#-Jp>%;F#jOh>`S%bk3$i@^aFD zn9R*!I#zRUswdwL7d#R8pimC(DZDiY58I|4=Pf^V?l;KvqvUJU6%m>_sV<BWJ0-QB zgdwvja|&!q=aP)}-jA=`hmm@q0YHz}XPvRn^+X19abaSM%idTy<JTGEG~W#WRJ<+U zAnMchpJO@)CqeLl`J1UK?eEcMfUx^<{ptQn<wl&9R;z2Vgg50wkamdpIBOz#>F=UA z^p)Y9sA#tcZp|_n3~4r)T&n0?*x_1=h2A>o#_>my1hC)9i4Q&F`?B19PIL96>9*<3 zb}?%01?0bcV-CtQb^>Ni>^_&SU)S}y*~RhjnEAdZ-gx&><RX{omP+QS6vn4|!g}Kv zzXKGOok3EY)x7<%zjn=1R`U-{Ri)KicHa;AGo77KoHg9=YGFPNbEi~asRi5AiQQXa z6{$WHG?&Wo5Y+jtHYKL%T`HOQ0Z8n+!<?y4pCm!H)19J$&n>{v{Zx{FkHiTW#`3V> z%x!Kl+Elp#lt(>HfR`JU8LC%W1w16`;5gapT~G1U1>1CDO2YZ*<CSJ<0!AE&(veol zUy;n<dkC)}NK?W7I*o}2K2d=JYrtWLHvl~+iB5rtgGcu)#Y1xyhcLxo_duVQ6AP?Q zsvDfHP^-)#FQn+0lG0kxSGp#D$nuPg`N^=<fc0Ncj(IK``r%s!wJmE4&7T$uE~`%_ zskx~q`O-jkCBIuXzhTk+9QL;f_efSp(!dKJ3O%msHvNN-n3M_ibW?#c)qw#%2?nfZ zw0Y~W*b*BSBH>5)sYTdeXuuQ=mAlXRz&Tk<@g(tqXZ)Cv@Vfwy&Xg5qwx@7_EpHPK za>_7u_+k^PSLQPx_2zQldN8p^GL7-_+*rYL_9Om;pg1^`+7v}d@4t8~#rSDN@hHdq zwt+J%lvoi{AFzhG$C$kUOWZZu?r1P@_h^>;V&YW?9=82>ooLmY6SLj~pNp0xNoRWB zveD~$R4aerDg)o-TGkv?Of33a($>|lBJOud>^RZIG$Wz{-jK7qWVu_y1FOlt;Yg!0 zLiyq&!97*PSH!{48Bp^ZIni~Xnl@OW<C!Ucb5zJV$3&)b8%=0M$eBw%$_>9Bj(r%N zE)QCQrSn*_B{7L3^G~@SX$bpHt%&rkL;8XwXOz=@&T0-dZarZ3zwXapaICiLMmsP| zH!F^mRkZ!$#+S1TV)&i0c(+?E#edX`6(u?F%NQlu0cl@sEm-NZynnIu7psj9dwHY{ z3#$PUHsxOi78(6<CM&PXwt{_=<r}Pe>v{SMp{{qq$5zw=7X<(fETd$ThTO(Ra{cnR z%trkg2Gf}O_lb=%P?3_{=%4Zn%KYQTDp&T!7gpLs+Jxk)_(J$Y*h3gs*sw;$H!%Yu z{8wKDm~^TS^O!l&^xG2T=#?|YpFlF3FFReQH$y|{%+OpyhVY}me1^q=9kbxGyfg7L zx-(6U_3`5UrCPzXr{=i`0*C0q3y$IN#sQv|DhyU^OO^5Gy9I(dPE5r22K@ov5P<;m zsIpz(@*i1y+A<UM^ZdP~EA7CDW5Bf;_$4Z1RJ7<1J(Rr$`P0$%GxyT}ElB;RNR{&H a??u^*yo68>u2M>U4WOre2T`GQAM<}9B!ja6 literal 0 HcmV?d00001 diff --git a/theme/colored/wizard-nextcloud.png b/theme/colored/wizard-nextcloud.png new file mode 100644 index 0000000000000000000000000000000000000000..321f83e31ab4fa2c6b0955f4d09076c6381ce81d GIT binary patch literal 2633 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 literal 0 HcmV?d00001 diff --git a/theme/colored/wizard-nextcloud@2x.png b/theme/colored/wizard-nextcloud@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..a73e467d8a125fc4e3bbdaa8dfc129a86bd8e8d8 GIT binary patch literal 5377 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 W{5CBAcAwgn07Y44Xr;7q;C}!?drOS~ literal 0 HcmV?d00001 diff --git a/theme/colored/wizard-talk.png b/theme/colored/wizard-talk.png new file mode 100644 index 0000000000000000000000000000000000000000..e1c3839a169210e4f9b6a04346b84ab907283928 GIT binary patch literal 2992 zcmV;h3s3ZkP)<h;3K|Lk000e1NJLTq003kF003kN1^@s6aN?Cz00004b3#c}2nYxW zd<bNS00009a7bBm003M@003M@0Th%&K>z>%8FWQhbW?9;ba!ELWdL_~cP?peYja~^ zaAhuUa%Y?FJQ@H13oS`RK~#90?VWpYTvZ*%Kfk-1mZWJds8GtIP-sgn4g)mL0&VJu z1A;)oh(f_p9s)Cp9V}DZO>VLYTC~N##0riIIMje0toVSjghFVO5OD_S3wgC7Euc_Z z(zH$P{rSg6LFnDRyXV~9P1w&&XF7Av`JS`;%{_abzY8TwlqgZ6M2Qk5>?4J4Kxl63 z`8Y#N2bqETQ$dczp#s%$z=TvL*^SVTYCp=q5$7fFwoo?oJWI}gyP)k4NpTvYDzx-` z8poLj+5pS}K53}>2Cxz2F&OG3QTH4oYT8uW6ptaQLVM2~Jh>9#Qs5I2*Z2mo7PyB* zbyu;NQ+Pw%uE{v@8$hlEPAE_-UPkpkl%L|(zFMF*0EILp*>fVQH-lUYlozZW|IZ-8 zYH->~RBbCn1M+W(+jl%M@B1i?KrHX|hr>fyjSMYi*_`e9tT=y$tm-S{jiDP+Ndn{Z zR<9WYD7SO?5#QsR(+=dL!u%ML+&B+)RsqxVQlE8nD~@wL%c`G<x~6Ci>F9{DWl92J z8O7T@g+)<rXXf^$G&XusRT7;c?cGP=IroBoHnKVjf;^6Y@Cw|sUW-IM3Q<~nt3V$H zj*LXV@a)3(KaX4YjBR1Zwjjx#`JjJh^qK)M3CCGaOV8(Q3)?j$*}DMc_xx{dX;f2* zu$I>D%WaC<>#|zAF9-P*Q9O0UjSuo=nyNc&h}khD*)t#I55QO}dLxg6C|{tt<`GjN zb3@vCX5-TdR2plIZ1#dS&{X>u6A?2*+BO`6AA5$v{(!#&(x3XTjsrecz_#qdm(y{p zcjYROyCEGNF}6-w2h7b`BRk#()`PA`*o=7FSX#g1L(Ar_I?#PQF_{iB3uW$b8z<(e zo$K(c&&3r#m%_Ol($eE1H0NAC9D9HVapac_Rdwb1A?fIdvF*6CA$Aq2mlE|TP^5`O zbuy=-IaS!&I~Q~v(JhDUL}UeC|0>*ucdaVBot4BYZa`TCOtPx|9v+U)V_9uiwgs~{ z#N9Lo=iO(48CjRj%m6|=-o6#M4f`X|e~*<L%IS~ag6a~Y*^k-8QL)pxe)eECg|eSB zIQ@%=#*B3cvq;pmM{WkdqWS?6)k%EkRG>408fNkO(6_QJl-(2Jb{~r)Td+IC^-+Eh z^(tywRE4(Q#VGCA?S}W^41Fq_O|E!W@{TOWt{M9fzC=^a!xlBOCpA)APIBWG)LD(a zF02BLw*X%a-IUPM$-a|NZyWahf_8&*0Zmm;S<<sZTlZP`@;mGelLztr>9}>TgvlKK zH$?r#*fV1QM=vZoGXR#=cH!uGK))r$GQ?RNHgmWqq`mKGJntpouv}a9K0JhrNffx7 z%0x@|MTo4y&SL2S{K2VVHnqZ4HZ*htcFX{@wdl<NXs-P&s_mB4#^S`U36n9iA*zDN z6~;|Uu@1kc&5~C1%-qoethXa33sKG3BV{%u*;fxtwa}sgeCN8Hmp=+YW21+}z7E)! z7oAM9w>DFz5KoA2=jjmIajRakqLoh)vtLA6ZbeI3m?=woLsVt>;Ik<^@%F8-pi>ye zd&_~>jdesW%9JI&A<2!WVq>pEB>J_fC|OiLfN+PokWR+!J0)F?3|&^t#$LxBy#7@d zbPCIu!5;&AjddJ<e%j>prM1Dh0m1{;m(UBrt!M28{f)7X=)82v84Qs*#tl%p*I1)i z5DTA0sZW<2Y{>VXJRCU6u=?Gc@=Dg5G)2pd?dyTvhANX;-W7QIKiCkj%*LKaXTg@# zqoA?T12H`TFAT({1tq32gup`K(a4YQ=N~nnxjRnaNGsiMh`AxcW@C+FL&U;o(vyQy z(iq|#VO*~l-)gK;bg22=LzTe2mS961HQgEX;mm^GXpMv!+jjtFSE!xfV@Sb<sG8mb z>>p7JiD5|%QudjN1pl$8>#__D5%XDX@v_ILv`P-cUbHA88;nu{zxQ;87%q1hcX`E( z;Zal#?DEnLd(9q87?(QuJj&?khyfKw8X^NhNol??F<lUJh;KN~P^0+ReBu;LuW|VD zub`xKqb&3IQW}fm$Z27Tsd?}NM|TD$1r`!{!MI{%mbpgJVg8wX4LlB%rpxjz%t$%M zSfkibHQ%(0#R9+EU_<=FY=kG8H~b?wI&eGVVEjj>lpWX-lo)J?d-`r5=eu&lOibNe z8YRfMxtQN!d?mH}cxW;WOS=s#2X!(YeHk%0YT>hJ+Vjlm4G|tQZvdC2+aVh<xZM*_ z7MKe;8`GwyE$cZpZWc}8VA(e;=oA*mxe*(I*ThTvou;4Qs0zv6otW>f@1oM1%A)$f z8ER4E_Eq3`FJpd2?FE`@(r)}^=(0o+U2E6~fJyYnZ?T|L7##mr>;y;1_+5rL+iU3< zkLnWKr)?bC&M)qUlR-mYxJi$!&XgmwA&KfPz{VlzavcBe5j8JyJL5>~XV|$Lvzeyq zr!!^BY>0@0+-IRd01a%JlCY!|JyPK!wpJVT=V5Y%TORlQy8t_3QiTL9-5F1T7o248 z0)!=&)b`?!y*o_CaE7?GuOfPnQIp<Zr^x-Z_7v|7zODBhRP6<0Q|=yK`N&8X6~>nX zLpe6-gOmeni_(;~-gEGEE!OT-vY(iQzRD2Zki_g4K{JjLvS1?cNKtiP$=(I{`Uo~- zZYg)Ntok2evuF26`thaMyT1)kj>sBXx?2l6`f@wtwDh#0`T+Kx41j}Z?6zzQWM_yw zdj~>JaiG$+K_tP}DeFk~on%=%Gs*60NX0sYrPvSPIR-SV5K!4Sz^l9i2wcxMU@q!C zN3y4xl^ddeeTCasL2GXdD$m**+8zQ&ug)fWZkzR~AHK(kE`ZtVz)Hpr-kEOiASaf0 zjpx9an?S!!equ%L#NT&3ZbPU6QSPTFl0D5RZqDVyk-A2v+{4TrPvm^p#O;hD<L2V% z!r>+K{B8%Rb3V;ge+-i~cSBrtaC#pFK9jRXcDw_U3WBL@!r^(m>g^voKkTXleJ2c` z4w*H)2R@fVM%xzsHHq3#5wOk97rDKYaP+T47rQVFdx8I+A*-Y~Uly|;f6UQgCWmID z3b%R}c;{k%@6Lqrz|q71iqQ;!!;rx*hRJ9?%xkLu8{%Jrop>Ol7x6=lw(N|%6LpWH zTm_7t3!c`I`qbV^dhAVvnrj|FxQx=15`^Hy4TH~QOQPl>#6J&s$ExnAL9fmfGt2&U zfkfTo`2Kt#@IdiLm?@cJW<_&<!>xOUc-d*dpCZv8*<6q=F}e#i-#z0^64mD;dNYt! zxb4x6T$naBFKuXjdJf|M1m)Dc)K~2IgU19#D9z86v!<%2I5Kty=y!N;Ry`7U3y~(^ zA;8`hZ;4k0CFSo9;PtZyX{!ApzRm>w1;yQs9RT?ezBi3Tb&{r<OYog(z)I|lAkPd+ zDBSD2-Hj(8&SHeGQ9Lgb>jzfh53UFddhB*q5-YzNm79Q>Io9(aO*MyHN-35X++Q>N zf_n=Qh;m{RqIco>_u|&S6{>`)(AqN(ksE=F$?nAlkJ40g$d^(U-jMgx+Ea(JFcrO1 zCr4b{izsV|IS;a|s@F)#?V5~~U5CiEq1r9nPom~4hfXS1+`dzY`3<Pf2Wo+14b&8P znbZZOClP-=i8}k+&~9g(SowUAMwCl{Lq}9ny^QACL&k3`UPC^J+gXWIJ_D8Mq~7o| zAr-MmCZdc7jU)0lFof!xh`ff%Kf(Ju{{BsQ55(zq#&OC|17{BCnWXlN_Mohxx#s@7 mwxvXg5+zEMC{f}g&wl_F$4S?;W+>1A0000<MNUMnLSTX+Zn+5n literal 0 HcmV?d00001 diff --git a/theme/colored/wizard-talk@2x.png b/theme/colored/wizard-talk@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..92a36806229457398cc86f2414e27d1b87c29fca GIT binary patch literal 6161 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 literal 0 HcmV?d00001