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
zcmV;S244AzP)<h;3K|Lk000e1NJLTq003kF003kN1^@s6aN?Cz00004b3#c}2nYxW
zd<bNS00009a7bBm003M@003M@0Th%&K>z>%8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H11|CU7K~#90?VMX|6jdCDzcaI?0v2LWAd*O%5P3k1m!+*06B@w_
zi6)XrVhDz)(4=4@B4P#GX}JV~Rs$r)2i`PM&_s<Q5tNb$>6R+^fPnx(5~3l3*OnHx
zJAWURRZ2VC-RX2@XZC!r=bZof&3u{J-7|9*G#ZUYqtR$I8jVJy(P%W9aG<ibiYQt-
zA4AzQQA70g5?h_8sqzEg<|`naPqK9&hB5XNkSBf2^FKl}O;uJPa|ejw*kX=e9+(UO
zMH9^lE3o+k!dZx@c|PVCoFbIsECe;yzZh9aOW7QB48O=Cq<~PYDHbW=5CTObB|Ji)
zD5Qi-2t-~=_=G^DrG!%mL{>_8g+L^wgj)ziPKxtdR!heLkU9QEi9CJ4_h77|an>QH
zPT{{o!b1$G0{a`R_Pd=rX(9eoieW5wYSco4;ZCOpEu_HELJABmq`=TZ3Jfizz=#DM
zARvAM_JTSGVuMUU)LazzGt`?nBTTUgIgZFmnyU8=($>I+L>yb*0rjBo$*xgMx2!$b
zm#ZCQq*+(h$)s2<ik&{@>PN8%If`vQjaAz<WY4;IlIiE_fW0FhYaqoT#E^Qd_~o4Y
zFI<?ymZd<?$b}l5Vi0nWb=B>8kFu)I1G~MClbz@bQGDrotnh`0Npd3kLg19^kz$|m
zFh@>AUC2d5xff#U&k(P;2&w`5as`c*$K98SP4O;Ljx+i_;RtgHVF#t=+q@S4YuMFn
zdye0~+oK}n5=!1;RNoHP%>Kudiq`Q_sIEnx)XIaf3-Mk=2BYgGpxo1%IS^JMBPRl2
zefuK_8$GX^1BD{wG{QcV`UQnTq#T$F+;Ky{OF%27$?bWG*!06~B$KN_dYK$sPhC7Y
zXun;%OioU%M|hKf&P}jF6vu#7yixV-fHq4E%)|mjwE|-pj)=ZwJ&LiQ;6iFKEs1x*
z*oWP93d(HE<W$6*#|d5lnd#Z_xga<pN<JdhvjnTQchGiA*}%tGNB1+jJC(PHzT_+P
zC6}i~^rIZu0`?Y+F+d8$0L0yKcuYV-R2vh`#njafe(Sg%>)t<eE_=NQ28aj+K?q4=
z_bsKaW@s6?Vs+k%O0A$Txe^%XS=|5#Ldb5cn$w<C%3Kko>Vca*sTnZ-3la7Cuxq5R
zh|H}i5+X7LASC5}v2Szdc&?-xP^rj?$PmEdVoB~#?rx;lu0XMZh{}K<gqX?6uE$!H
z$B30wAZ!J?y$e-11aO6z4-ISh>-YUeQ`M{3W;sGL@V7U)3IqRzh%92)E_2v*toTKm
zsw`q9)1q|61o41sIw#AQc~&iR#YE&*7R(bvkybWz)OcDmB4UEv^m!Rk%d-A+oFxY4
zk(G#)x?WgR)H84y<#&)aP(LFg80vO}hk=Q14kUk68;zB<gSI%1@og8b971@HSZqIQ
z<G%v1K2d?lJd}D7;jU{Phqv^e7Sj#VfL-=J){LwD`dMP25>KJjW?-5phvrB@3+cyI
z(znrUKUm#~u?|h7#8j-UzL33N`#20f1oe2%weu!CLh`|#m|SQ*Jen@^ATZ0*y8q!U
zB+Rb?O#n7>rQ|Hl35(60<2|eVa!n7m`7G(p{=O1sAsHs1XyR(>4C~t)*z#SOCsnQZ
z36SA0gyu;Ugk+e2s7+icIqR7i;ZqNC<wcZ)Wauwu>yPfA94h04hq-bhib67^#q{>L
z-=3zF@9Shy7LrDk`_*L;_hVfWeIf9G>yb)kdzd39ib2Q%tj;lckFvx-cxD9hWThB{
zOvFsB&U=)RSOU!OJk3zk`aNMF2<vE0JeqTVtK%L}+eR>vBgG*EVkkbNrTw`fdp37G
zfgx=K^rBs%ylm|UrJ#1woOmA8HpKo4t2+I)w)OC6y45_yr~{cFWXNI?l15PjQiD>^
zlK2Bi(&g84kfA9)A^o`}=m0lTET18vK?^A`w2%Tr3n?(N2$4{}MiUO4&uum#Z6lCG
zlV;$a%4;|avCFoBa{l)<ja$BElDXZfG5a4!SYlvy%*Q4U+~jq#BBK{LLSy9~lq!rJ
rrW%b#qtR$I8jVJy(P%Up%`o^Et)}udlWF|g00000NkvXXu0mjfy0s84

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
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
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
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

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