aboutsummaryrefslogtreecommitdiffstats
path: root/tests/manual/widgets
diff options
context:
space:
mode:
authorAlessandro Portale <alessandro.portale@qt.io>2017-11-15 23:34:50 +0100
committerAlessandro Portale <alessandro.portale@qt.io>2017-11-27 14:07:40 +0000
commit8895ef1ddbb95488dfec6dcffeed8781b839048e (patch)
treecbebd657061e21393ffc41dbb853de4df74b9518 /tests/manual/widgets
parent8efb598e60906abe5f9f28af539f976713aa2d37 (diff)
Utils: Add a manual test for Utils::CrumblePath
Using a small test app for testing the CrumblePath is less clumsy than doing that in Qt Quick Designer. Change-Id: I4a1d739aa303adfd799df33eb00fb8cd513304c3 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Diffstat (limited to 'tests/manual/widgets')
-rw-r--r--tests/manual/widgets/crumblepath/crumblepath.pro13
-rw-r--r--tests/manual/widgets/crumblepath/tst_crumblepath.cpp128
-rw-r--r--tests/manual/widgets/crumblepath/tst_crumblepath.qrc9
-rw-r--r--tests/manual/widgets/widgets.pro3
4 files changed, 153 insertions, 0 deletions
diff --git a/tests/manual/widgets/crumblepath/crumblepath.pro b/tests/manual/widgets/crumblepath/crumblepath.pro
new file mode 100644
index 0000000000..40bc396895
--- /dev/null
+++ b/tests/manual/widgets/crumblepath/crumblepath.pro
@@ -0,0 +1,13 @@
+SOURCES += \
+ tst_crumblepath.cpp
+
+RESOURCES += \
+ tst_crumblepath.qrc
+
+QTC_LIB_DEPENDS += \
+ utils
+
+QTC_PLUGIN_DEPENDS += \
+ coreplugin
+
+include(../../../auto/qttest.pri)
diff --git a/tests/manual/widgets/crumblepath/tst_crumblepath.cpp b/tests/manual/widgets/crumblepath/tst_crumblepath.cpp
new file mode 100644
index 0000000000..303d40438f
--- /dev/null
+++ b/tests/manual/widgets/crumblepath/tst_crumblepath.cpp
@@ -0,0 +1,128 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of Qt Creator.
+**
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+****************************************************************************/
+
+#include <QApplication>
+#include <QBoxLayout>
+#include <QSettings>
+#include <QTimer>
+#include <QDebug>
+
+#include <utils/crumblepath.h>
+#include <utils/styledbar.h>
+#include <utils/stylehelper.h>
+#include <utils/theme/theme.h>
+#include <utils/theme/theme_p.h>
+
+#include <coreplugin/manhattanstyle.h>
+
+using namespace Utils;
+
+QWidget *crumblePathWithMenu()
+{
+ auto *cp = new CrumblePath;
+ cp->pushElement("Ene", QVariant(1));
+ cp->addChild("Ene child 1", QVariant(1));
+ cp->addChild("Ene child 2", QVariant(2));
+ cp->pushElement("Mene", QVariant(2));
+ cp->pushElement("Mopel", QVariant(3));
+ cp->addChild("Mopel child 1", QVariant(1));
+ cp->addChild("Mopel child 2", QVariant(2));
+ return cp;
+}
+
+QWidget *disabledCrumblePathWithMenu()
+{
+ QWidget *cp = crumblePathWithMenu();
+ cp->setDisabled(true);
+ return cp;
+}
+
+QWidget *growingCrumblePath()
+{
+ auto *cp = new CrumblePath;
+ auto *timer = new QTimer(cp);
+ timer->start();
+ QObject::connect(timer, &QTimer::timeout, cp, [cp, timer]() {
+ const int elementId = cp->length() + 1;
+ cp->pushElement(QStringLiteral("Element %1").arg(elementId), elementId);
+ if (cp->length() == 5)
+ timer->stop();
+ else
+ timer->setInterval(2000);
+ });
+
+ return cp;
+}
+
+QWidget *shrinkingCrumblePath()
+{
+ auto *cp = new CrumblePath;
+ for (const auto &title : {"Ene", "Mene", "Mopel", "Zicke", "Zacke"})
+ cp->pushElement(title, title);
+
+ auto *timer = new QTimer(cp);
+ timer->setInterval(2000);
+ timer->start();
+ QObject::connect(timer, &QTimer::timeout, cp, [cp, timer](){
+ cp->popElement();
+ if (cp->length() == 1)
+ timer->stop();
+ });
+
+ return cp;
+}
+
+int main(int argc, char *argv[])
+{
+ QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
+
+ QApplication app(argc, argv);
+
+ Theme theme("");
+ QSettings settings(":/flat.creatortheme", QSettings::IniFormat);
+ theme.readSettings(settings);
+ setCreatorTheme(&theme);
+ StyleHelper::setBaseColor(QColor(StyleHelper::DEFAULT_BASE_COLOR));
+ QApplication::setStyle(new ManhattanStyle(creatorTheme()->preferredStyles().value(0)));
+
+ auto *widget = new QWidget;
+ auto *layout = new QVBoxLayout(widget);
+ for (auto creatorFunction : {crumblePathWithMenu,
+ disabledCrumblePathWithMenu,
+ growingCrumblePath,
+ shrinkingCrumblePath}) {
+ auto *cpToolBar = new Utils::StyledBar(widget);
+ auto *cpLayout = new QHBoxLayout(cpToolBar);
+ cpLayout->setContentsMargins(0, 0, 0, 0);
+ cpLayout->addWidget(creatorFunction());
+ layout->addWidget(cpToolBar);
+ }
+ layout->addStretch();
+
+ widget->resize(600, 200);
+ widget->show();
+
+ return app.exec();
+}
diff --git a/tests/manual/widgets/crumblepath/tst_crumblepath.qrc b/tests/manual/widgets/crumblepath/tst_crumblepath.qrc
new file mode 100644
index 0000000000..d596e9c0eb
--- /dev/null
+++ b/tests/manual/widgets/crumblepath/tst_crumblepath.qrc
@@ -0,0 +1,9 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource prefix="/">
+ <file alias="dark.creatortheme">../../../../share/qtcreator/themes/dark.creatortheme</file>
+ <file alias="default.creatortheme">../../../../share/qtcreator/themes/default.creatortheme</file>
+ <file alias="flat-dark.creatortheme">../../../../share/qtcreator/themes/flat-dark.creatortheme</file>
+ <file alias="flat-light.creatortheme">../../../../share/qtcreator/themes/flat-light.creatortheme</file>
+ <file alias="flat.creatortheme">../../../../share/qtcreator/themes/flat.creatortheme</file>
+</qresource>
+</RCC>
diff --git a/tests/manual/widgets/widgets.pro b/tests/manual/widgets/widgets.pro
new file mode 100644
index 0000000000..aa0a4e874e
--- /dev/null
+++ b/tests/manual/widgets/widgets.pro
@@ -0,0 +1,3 @@
+TEMPLATE = subdirs
+SUBDIRS = \
+ crumblepath