From 4c36bb854cb8deaa2841bf2aba7e71ea4b1a06dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lucie=20G=C3=A9rard?= Date: Wed, 15 Nov 2023 10:24:42 +0100 Subject: [PATCH] Remove undocumented embedded examples Task-number: QTBUG-119117 Change-Id: I7fd104742771e2ce6d4ad7afd66e2beca3b4f672 Reviewed-by: Joerg Bornemann --- examples/CMakeLists.txt | 1 - examples/embedded/CMakeLists.txt | 12 - examples/embedded/digiflip/CMakeLists.txt | 36 -- examples/embedded/digiflip/digiflip.cpp | 372 ---------------- examples/embedded/digiflip/digiflip.pro | 6 - examples/embedded/embedded.pro | 7 - examples/embedded/flickable/CMakeLists.txt | 37 -- examples/embedded/flickable/flickable.cpp | 246 ----------- examples/embedded/flickable/flickable.h | 40 -- examples/embedded/flickable/flickable.pro | 7 - examples/embedded/flickable/main.cpp | 190 -------- examples/embedded/flightinfo/CMakeLists.txt | 50 --- examples/embedded/flightinfo/aircraft.png | Bin 20200 -> 0 bytes examples/embedded/flightinfo/flightinfo.cpp | 352 --------------- examples/embedded/flightinfo/flightinfo.pro | 9 - examples/embedded/flightinfo/flightinfo.qrc | 5 - examples/embedded/flightinfo/form.ui | 226 ---------- examples/embedded/lightmaps/CMakeLists.txt | 40 -- examples/embedded/lightmaps/lightmaps.cpp | 238 ---------- examples/embedded/lightmaps/lightmaps.h | 50 --- examples/embedded/lightmaps/lightmaps.pro | 12 - examples/embedded/lightmaps/main.cpp | 18 - examples/embedded/lightmaps/mapzoom.cpp | 58 --- examples/embedded/lightmaps/mapzoom.h | 28 -- examples/embedded/lightmaps/slippymap.cpp | 164 ------- examples/embedded/lightmaps/slippymap.h | 52 --- examples/embedded/raycasting/CMakeLists.txt | 48 -- examples/embedded/raycasting/raycasting.cpp | 336 -------------- examples/embedded/raycasting/raycasting.pro | 7 - examples/embedded/raycasting/raycasting.qrc | 5 - examples/embedded/raycasting/textures.png | Bin 17669 -> 0 bytes examples/embedded/styleexample/CMakeLists.txt | 56 --- examples/embedded/styleexample/files/add.png | Bin 1474 -> 0 bytes .../styleexample/files/application.qss | 125 ------ examples/embedded/styleexample/files/blue.qss | 38 -- .../embedded/styleexample/files/khaki.qss | 99 ----- .../embedded/styleexample/files/nature_1.jpg | Bin 167443 -> 0 bytes .../embedded/styleexample/files/nostyle.qss | 0 .../embedded/styleexample/files/remove.png | Bin 865 -> 0 bytes .../styleexample/files/transparent.qss | 139 ------ examples/embedded/styleexample/main.cpp | 20 - .../embedded/styleexample/styleexample.pro | 9 - .../embedded/styleexample/styleexample.qrc | 13 - .../embedded/styleexample/stylewidget.cpp | 74 ---- examples/embedded/styleexample/stylewidget.h | 27 -- examples/embedded/styleexample/stylewidget.ui | 417 ------------------ examples/examples.pro | 3 +- 47 files changed, 1 insertion(+), 3671 deletions(-) delete mode 100644 examples/embedded/CMakeLists.txt delete mode 100644 examples/embedded/digiflip/CMakeLists.txt delete mode 100644 examples/embedded/digiflip/digiflip.cpp delete mode 100644 examples/embedded/digiflip/digiflip.pro delete mode 100644 examples/embedded/embedded.pro delete mode 100644 examples/embedded/flickable/CMakeLists.txt delete mode 100644 examples/embedded/flickable/flickable.cpp delete mode 100644 examples/embedded/flickable/flickable.h delete mode 100644 examples/embedded/flickable/flickable.pro delete mode 100644 examples/embedded/flickable/main.cpp delete mode 100644 examples/embedded/flightinfo/CMakeLists.txt delete mode 100644 examples/embedded/flightinfo/aircraft.png delete mode 100644 examples/embedded/flightinfo/flightinfo.cpp delete mode 100644 examples/embedded/flightinfo/flightinfo.pro delete mode 100644 examples/embedded/flightinfo/flightinfo.qrc delete mode 100644 examples/embedded/flightinfo/form.ui delete mode 100644 examples/embedded/lightmaps/CMakeLists.txt delete mode 100644 examples/embedded/lightmaps/lightmaps.cpp delete mode 100644 examples/embedded/lightmaps/lightmaps.h delete mode 100644 examples/embedded/lightmaps/lightmaps.pro delete mode 100644 examples/embedded/lightmaps/main.cpp delete mode 100644 examples/embedded/lightmaps/mapzoom.cpp delete mode 100644 examples/embedded/lightmaps/mapzoom.h delete mode 100644 examples/embedded/lightmaps/slippymap.cpp delete mode 100644 examples/embedded/lightmaps/slippymap.h delete mode 100644 examples/embedded/raycasting/CMakeLists.txt delete mode 100644 examples/embedded/raycasting/raycasting.cpp delete mode 100644 examples/embedded/raycasting/raycasting.pro delete mode 100644 examples/embedded/raycasting/raycasting.qrc delete mode 100644 examples/embedded/raycasting/textures.png delete mode 100644 examples/embedded/styleexample/CMakeLists.txt delete mode 100644 examples/embedded/styleexample/files/add.png delete mode 100644 examples/embedded/styleexample/files/application.qss delete mode 100644 examples/embedded/styleexample/files/blue.qss delete mode 100644 examples/embedded/styleexample/files/khaki.qss delete mode 100644 examples/embedded/styleexample/files/nature_1.jpg delete mode 100644 examples/embedded/styleexample/files/nostyle.qss delete mode 100644 examples/embedded/styleexample/files/remove.png delete mode 100644 examples/embedded/styleexample/files/transparent.qss delete mode 100644 examples/embedded/styleexample/main.cpp delete mode 100644 examples/embedded/styleexample/styleexample.pro delete mode 100644 examples/embedded/styleexample/styleexample.qrc delete mode 100644 examples/embedded/styleexample/stylewidget.cpp delete mode 100644 examples/embedded/styleexample/stylewidget.h delete mode 100644 examples/embedded/styleexample/stylewidget.ui diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index e7ed9033f4..a1ca646a96 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -6,7 +6,6 @@ qt_examples_build_begin(EXTERNAL_BUILD) add_compile_definitions(QT_NO_CONTEXTLESS_CONNECT) add_subdirectory(corelib) -add_subdirectory(embedded) if(TARGET Qt6::DBus) add_subdirectory(dbus) endif() diff --git a/examples/embedded/CMakeLists.txt b/examples/embedded/CMakeLists.txt deleted file mode 100644 index 1eb8bc7537..0000000000 --- a/examples/embedded/CMakeLists.txt +++ /dev/null @@ -1,12 +0,0 @@ -# Copyright (C) 2022 The Qt Company Ltd. -# SPDX-License-Identifier: BSD-3-Clause - -if(NOT TARGET Qt6::Gui OR (NOT embedded AND NOT x11)) - return() -endif() -qt_internal_add_example(styleexample) -qt_internal_add_example(raycasting) -qt_internal_add_example(flickable) -qt_internal_add_example(digiflip) -qt_internal_add_example(lightmaps) -qt_internal_add_example(flightinfo) diff --git a/examples/embedded/digiflip/CMakeLists.txt b/examples/embedded/digiflip/CMakeLists.txt deleted file mode 100644 index 9678c74772..0000000000 --- a/examples/embedded/digiflip/CMakeLists.txt +++ /dev/null @@ -1,36 +0,0 @@ -# Copyright (C) 2022 The Qt Company Ltd. -# SPDX-License-Identifier: BSD-3-Clause - -cmake_minimum_required(VERSION 3.16) -project(digiflip LANGUAGES CXX) - -if(NOT DEFINED INSTALL_EXAMPLESDIR) - set(INSTALL_EXAMPLESDIR "examples") -endif() - -set(INSTALL_EXAMPLEDIR "${INSTALL_EXAMPLESDIR}/embedded/digiflip") - -find_package(Qt6 REQUIRED COMPONENTS Core Gui Widgets) - -qt_standard_project_setup() - -qt_add_executable(digiflip - digiflip.cpp -) - -set_target_properties(digiflip PROPERTIES - WIN32_EXECUTABLE TRUE - MACOSX_BUNDLE TRUE -) - -target_link_libraries(digiflip PRIVATE - Qt6::Core - Qt6::Gui - Qt6::Widgets -) - -install(TARGETS digiflip - RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" - BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" - LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}" -) diff --git a/examples/embedded/digiflip/digiflip.cpp b/examples/embedded/digiflip/digiflip.cpp deleted file mode 100644 index ab5075a4ec..0000000000 --- a/examples/embedded/digiflip/digiflip.cpp +++ /dev/null @@ -1,372 +0,0 @@ -// Copyright (C) 2016 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause - -#include -#include - -class Digits: public QWidget -{ - Q_OBJECT - -public: - - enum { - Slide, - Flip, - Rotate - }; - - Digits(QWidget *parent) - : QWidget(parent) - , m_number(0) - , m_transition(Slide) - { - setAttribute(Qt::WA_OpaquePaintEvent, true); - setAttribute(Qt::WA_NoSystemBackground, true); - connect(&m_animator, &QTimeLine::frameChanged, - this, qOverload<>(&Digits::update)); - m_animator.setFrameRange(0, 100); - m_animator.setDuration(600); - m_animator.setEasingCurve(QEasingCurve::InOutSine); - } - - void setTransition(int tr) { - m_transition = tr; - } - - int transition() const { - return m_transition; - } - - void setNumber(int n) { - if (m_number != n) { - m_number = qBound(0, n, 99); - preparePixmap(); - update(); - } - } - - void flipTo(int n) { - if (m_number != n) { - m_number = qBound(0, n, 99); - m_lastPixmap = m_pixmap; - preparePixmap(); - m_animator.stop(); - m_animator.start(); - } - } - -protected: - - void drawFrame(QPainter *p, const QRect &rect) { - p->setPen(Qt::NoPen); - QLinearGradient gradient(rect.topLeft(), rect.bottomLeft()); - gradient.setColorAt(0.00, QColor(245, 245, 245)); - gradient.setColorAt(0.49, QColor(192, 192, 192)); - gradient.setColorAt(0.51, QColor(245, 245, 245)); - gradient.setColorAt(1.00, QColor(192, 192, 192)); - p->setBrush(gradient); - QRect r = rect; - p->drawRoundedRect(r, 15, 15, Qt::RelativeSize); - r.adjust(1, 4, -1, -4); - p->setPen(QColor(181, 181, 181)); - p->setBrush(Qt::NoBrush); - p->drawRoundedRect(r, 15, 15, Qt::RelativeSize); - p->setPen(QColor(159, 159, 159)); - int y = rect.top() + rect.height() / 2 - 1; - p->drawLine(rect.left(), y, rect.right(), y); - } - - QPixmap drawDigits(int n, const QRect &rect) { - - int scaleFactor = 2; - - QString str = QString::number(n); - if (str.length() == 1) - str.prepend('0'); - - QFont font; - font.setFamily("Helvetica"); - int fontHeight = scaleFactor * 0.55 * rect.height(); - font.setPixelSize(fontHeight); - font.setBold(true); - - QPixmap pixmap(rect.size() * scaleFactor); - pixmap.fill(Qt::transparent); - - QLinearGradient gradient(QPoint(0, 0), QPoint(0, pixmap.height())); - gradient.setColorAt(0.00, QColor(128, 128, 128)); - gradient.setColorAt(0.49, QColor(64, 64, 64)); - gradient.setColorAt(0.51, QColor(128, 128, 128)); - gradient.setColorAt(1.00, QColor(16, 16, 16)); - - QPainter p; - p.begin(&pixmap); - p.setFont(font); - QPen pen; - pen.setBrush(QBrush(gradient)); - p.setPen(pen); - p.drawText(pixmap.rect(), Qt::AlignCenter, str); - p.end(); - - return pixmap.scaledToWidth(width(), Qt::SmoothTransformation); - } - - void preparePixmap() { - m_pixmap = QPixmap(size()); - m_pixmap.fill(Qt::transparent); - QPainter p; - p.begin(&m_pixmap); - p.drawPixmap(0, 0, drawDigits(m_number, rect())); - p.end(); - } - - void resizeEvent(QResizeEvent*) { - preparePixmap(); - update(); - } - - void paintStatic() { - QPainter p(this); - p.fillRect(rect(), Qt::black); - - int pad = width() / 10; - drawFrame(&p, rect().adjusted(pad, pad, -pad, -pad)); - p.drawPixmap(0, 0, m_pixmap); - } - - void paintSlide() { - QPainter p(this); - p.fillRect(rect(), Qt::black); - - int pad = width() / 10; - QRect fr = rect().adjusted(pad, pad, -pad, -pad); - drawFrame(&p, fr); - p.setClipRect(fr); - - int y = height() * m_animator.currentFrame() / 100; - p.drawPixmap(0, y, m_lastPixmap); - p.drawPixmap(0, y - height(), m_pixmap); - } - - void paintFlip() { - QPainter p(this); - p.setRenderHint(QPainter::SmoothPixmapTransform, true); - p.setRenderHint(QPainter::Antialiasing, true); - p.fillRect(rect(), Qt::black); - - int hw = width() / 2; - int hh = height() / 2; - - // behind is the new pixmap - int pad = width() / 10; - QRect fr = rect().adjusted(pad, pad, -pad, -pad); - drawFrame(&p, fr); - p.drawPixmap(0, 0, m_pixmap); - - int index = m_animator.currentFrame(); - - if (index <= 50) { - - // the top part of the old pixmap is flipping - int angle = -180 * index / 100; - QTransform transform; - transform.translate(hw, hh); - transform.rotate(angle, Qt::XAxis); - p.setTransform(transform); - drawFrame(&p, fr.adjusted(-hw, -hh, -hw, -hh)); - p.drawPixmap(-hw, -hh, m_lastPixmap); - - // the bottom part is still the old pixmap - p.resetTransform(); - p.setClipRect(0, hh, width(), hh); - drawFrame(&p, fr); - p.drawPixmap(0, 0, m_lastPixmap); - } else { - - p.setClipRect(0, hh, width(), hh); - - // the bottom part is still the old pixmap - drawFrame(&p, fr); - p.drawPixmap(0, 0, m_lastPixmap); - - // the bottom part of the new pixmap is flipping - int angle = 180 - 180 * m_animator.currentFrame() / 100; - QTransform transform; - transform.translate(hw, hh); - transform.rotate(angle, Qt::XAxis); - p.setTransform(transform); - drawFrame(&p, fr.adjusted(-hw, -hh, -hw, -hh)); - p.drawPixmap(-hw, -hh, m_pixmap); - - } - - } - - void paintRotate() { - QPainter p(this); - - int pad = width() / 10; - QRect fr = rect().adjusted(pad, pad, -pad, -pad); - drawFrame(&p, fr); - p.setClipRect(fr); - - int angle1 = -180 * m_animator.currentFrame() / 100; - int angle2 = 180 - 180 * m_animator.currentFrame() / 100; - int angle = (m_animator.currentFrame() <= 50) ? angle1 : angle2; - QPixmap pix = (m_animator.currentFrame() <= 50) ? m_lastPixmap : m_pixmap; - - QTransform transform; - transform.translate(width() / 2, height() / 2); - transform.rotate(angle, Qt::XAxis); - - p.setTransform(transform); - p.setRenderHint(QPainter::SmoothPixmapTransform, true); - p.drawPixmap(-width() / 2, -height() / 2, pix); - } - - void paintEvent(QPaintEvent *event) { - Q_UNUSED(event); - if (m_animator.state() == QTimeLine::Running) { - if (m_transition == Slide) - paintSlide(); - if (m_transition == Flip) - paintFlip(); - if (m_transition == Rotate) - paintRotate(); - } else { - paintStatic(); - } - } - -private: - int m_number; - int m_transition; - QPixmap m_pixmap; - QPixmap m_lastPixmap; - QTimeLine m_animator; -}; - -class DigiFlip : public QMainWindow -{ - Q_OBJECT - -public: - DigiFlip(QWidget *parent = nullptr) - : QMainWindow(parent) - { - m_hour = new Digits(this); - m_hour->show(); - m_minute = new Digits(this); - m_minute->show(); - - QPalette pal = palette(); - pal.setColor(QPalette::Window, Qt::black); - setPalette(pal); - - m_ticker.start(1000, this); - QTime t = QTime::currentTime(); - m_hour->setNumber(t.hour()); - m_minute->setNumber(t.minute()); - updateTime(); - - QAction *slideAction = new QAction("&Slide", this); - QAction *flipAction = new QAction("&Flip", this); - QAction *rotateAction = new QAction("&Rotate", this); - connect(slideAction, &QAction::triggered, this, &DigiFlip::chooseSlide); - connect(flipAction, &QAction::triggered, this, &DigiFlip::chooseFlip); - connect(rotateAction, &QAction::triggered, this, &DigiFlip::chooseRotate); - addAction(slideAction); - addAction(flipAction); - addAction(rotateAction); - setContextMenuPolicy(Qt::ActionsContextMenu); - } - - void updateTime() { - QTime t = QTime::currentTime(); - m_hour->flipTo(t.hour()); - m_minute->flipTo(t.minute()); - QString str = t.toString("hh:mm:ss"); - str.prepend(": "); - if (m_hour->transition() == Digits::Slide) - str.prepend("Slide"); - if (m_hour->transition() == Digits::Flip) - str.prepend("Flip"); - if (m_hour->transition() == Digits::Rotate) - str.prepend("Rotate"); - setWindowTitle(str); - } - - void switchTransition(int delta) { - int i = (m_hour->transition() + delta + 3) % 3; - m_hour->setTransition(i); - m_minute->setTransition(i); - updateTime(); - } - -protected: - void resizeEvent(QResizeEvent*) { - int digitsWidth = width() / 2; - int digitsHeight = digitsWidth * 1.2; - - int y = (height() - digitsHeight) / 3; - - m_hour->resize(digitsWidth, digitsHeight); - m_hour->move(0, y); - - m_minute->resize(digitsWidth, digitsHeight); - m_minute->move(width() / 2, y); - } - - void timerEvent(QTimerEvent*) { - updateTime(); - } - - void keyPressEvent(QKeyEvent *event) { - if (event->key() == Qt::Key_Right) { - switchTransition(1); - event->accept(); - } - if (event->key() == Qt::Key_Left) { - switchTransition(-1); - event->accept(); - } - } - -private slots: - void chooseSlide() { - m_hour->setTransition(0); - m_minute->setTransition(0); - updateTime(); - } - - void chooseFlip() { - m_hour->setTransition(1); - m_minute->setTransition(1); - updateTime(); - } - - void chooseRotate() { - m_hour->setTransition(2); - m_minute->setTransition(2); - updateTime(); - } - -private: - QBasicTimer m_ticker; - Digits *m_hour; - Digits *m_minute; -}; - -#include "digiflip.moc" - -int main(int argc, char *argv[]) -{ - QApplication app(argc, argv); - - DigiFlip time; - time.resize(320, 240); - time.show(); - - return app.exec(); -} diff --git a/examples/embedded/digiflip/digiflip.pro b/examples/embedded/digiflip/digiflip.pro deleted file mode 100644 index af6c2773c8..0000000000 --- a/examples/embedded/digiflip/digiflip.pro +++ /dev/null @@ -1,6 +0,0 @@ -QT += widgets - -SOURCES = digiflip.cpp - -target.path = $$[QT_INSTALL_EXAMPLES]/embedded/digiflip -INSTALLS += target diff --git a/examples/embedded/embedded.pro b/examples/embedded/embedded.pro deleted file mode 100644 index e772eb88aa..0000000000 --- a/examples/embedded/embedded.pro +++ /dev/null @@ -1,7 +0,0 @@ -requires(if(embedded|x11):qtHaveModule(gui)) - -TEMPLATE = subdirs -SUBDIRS = styleexample raycasting flickable digiflip - -SUBDIRS += lightmaps -SUBDIRS += flightinfo diff --git a/examples/embedded/flickable/CMakeLists.txt b/examples/embedded/flickable/CMakeLists.txt deleted file mode 100644 index 835d4ec77a..0000000000 --- a/examples/embedded/flickable/CMakeLists.txt +++ /dev/null @@ -1,37 +0,0 @@ -# Copyright (C) 2022 The Qt Company Ltd. -# SPDX-License-Identifier: BSD-3-Clause - -cmake_minimum_required(VERSION 3.16) -project(flickable LANGUAGES CXX) - -if(NOT DEFINED INSTALL_EXAMPLESDIR) - set(INSTALL_EXAMPLESDIR "examples") -endif() - -set(INSTALL_EXAMPLEDIR "${INSTALL_EXAMPLESDIR}/embedded/flickable") - -find_package(Qt6 REQUIRED COMPONENTS Core Gui Widgets) - -qt_standard_project_setup() - -qt_add_executable(flickable - flickable.cpp flickable.h - main.cpp -) - -set_target_properties(flickable PROPERTIES - WIN32_EXECUTABLE TRUE - MACOSX_BUNDLE TRUE -) - -target_link_libraries(flickable PRIVATE - Qt6::Core - Qt6::Gui - Qt6::Widgets -) - -install(TARGETS flickable - RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" - BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" - LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}" -) diff --git a/examples/embedded/flickable/flickable.cpp b/examples/embedded/flickable/flickable.cpp deleted file mode 100644 index 5b19d96193..0000000000 --- a/examples/embedded/flickable/flickable.cpp +++ /dev/null @@ -1,246 +0,0 @@ -// Copyright (C) 2016 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause - -#include "flickable.h" - -#include -#include - -class FlickableTicker: QObject -{ -public: - FlickableTicker(Flickable *scroller) { - m_scroller = scroller; - } - - void start(int interval) { - if (!m_timer.isActive()) - m_timer.start(interval, this); - } - - void stop() { - m_timer.stop(); - } - -protected: - void timerEvent(QTimerEvent *event) { - Q_UNUSED(event); - m_scroller->tick(); - } - -private: - Flickable *m_scroller; - QBasicTimer m_timer; -}; - -class FlickablePrivate -{ -public: - typedef enum { - Steady, - Pressed, - ManualScroll, - AutoScroll, - Stop - } State; - - State state; - int threshold; - QPoint pressPos; - QPoint offset; - QPoint delta; - QPoint speed; - FlickableTicker *ticker; - QElapsedTimer timeStamp; - QWidget *target; - QList ignoreList; -}; - -Flickable::Flickable() -{ - d = new FlickablePrivate; - d->state = FlickablePrivate::Steady; - d->threshold = 10; - d->ticker = new FlickableTicker(this); - d->timeStamp.start(); - d->target = 0; -} - -Flickable::~Flickable() -{ - delete d; -} - -void Flickable::setThreshold(int th) -{ - if (th >= 0) - d->threshold = th; -} - -int Flickable::threshold() const -{ - return d->threshold; -} - -void Flickable::setAcceptMouseClick(QWidget *target) -{ - d->target = target; -} - -static QPoint deaccelerate(const QPoint &speed, int a = 1, int max = 64) -{ - int x = qBound(-max, speed.x(), max); - int y = qBound(-max, speed.y(), max); - x = (x == 0) ? x : (x > 0) ? qMax(0, x - a) : qMin(0, x + a); - y = (y == 0) ? y : (y > 0) ? qMax(0, y - a) : qMin(0, y + a); - return QPoint(x, y); -} - -void Flickable::handleMousePress(QMouseEvent *event) -{ - event->ignore(); - - if (event->button() != Qt::LeftButton) - return; - - if (d->ignoreList.removeAll(event)) - return; - - switch (d->state) { - - case FlickablePrivate::Steady: - event->accept(); - d->state = FlickablePrivate::Pressed; - d->pressPos = event->position().toPoint(); - break; - - case FlickablePrivate::AutoScroll: - event->accept(); - d->state = FlickablePrivate::Stop; - d->speed = QPoint(0, 0); - d->pressPos = event->position().toPoint(); - d->offset = scrollOffset(); - d->ticker->stop(); - break; - - default: - break; - } -} - -void Flickable::handleMouseRelease(QMouseEvent *event) -{ - event->ignore(); - - if (event->button() != Qt::LeftButton) - return; - - if (d->ignoreList.removeAll(event)) - return; - - QPoint delta; - - switch (d->state) { - - case FlickablePrivate::Pressed: - event->accept(); - d->state = FlickablePrivate::Steady; - if (d->target) { - QMouseEvent *event1 = new QMouseEvent(QEvent::MouseButtonPress, - d->pressPos, Qt::LeftButton, - Qt::LeftButton, Qt::NoModifier); - QMouseEvent *event2 = event->clone(); - d->ignoreList << event1; - d->ignoreList << event2; - QApplication::postEvent(d->target, event1); - QApplication::postEvent(d->target, event2); - } - break; - - case FlickablePrivate::ManualScroll: - event->accept(); - delta = event->position().toPoint() - d->pressPos; - if (d->timeStamp.elapsed() > 100) { - d->timeStamp.start(); - d->speed = delta - d->delta; - d->delta = delta; - } - d->offset = scrollOffset(); - d->pressPos = event->position().toPoint(); - if (d->speed == QPoint(0, 0)) { - d->state = FlickablePrivate::Steady; - } else { - d->speed /= 4; - d->state = FlickablePrivate::AutoScroll; - d->ticker->start(20); - } - break; - - case FlickablePrivate::Stop: - event->accept(); - d->state = FlickablePrivate::Steady; - d->offset = scrollOffset(); - break; - - default: - break; - } -} - -void Flickable::handleMouseMove(QMouseEvent *event) -{ - event->ignore(); - - if (!(event->buttons() & Qt::LeftButton)) - return; - - if (d->ignoreList.removeAll(event)) - return; - - QPoint delta; - - switch (d->state) { - - case FlickablePrivate::Pressed: - case FlickablePrivate::Stop: - delta = event->position().toPoint() - d->pressPos; - if (delta.x() > d->threshold || delta.x() < -d->threshold || - delta.y() > d->threshold || delta.y() < -d->threshold) { - d->timeStamp.start(); - d->state = FlickablePrivate::ManualScroll; - d->delta = QPoint(0, 0); - d->pressPos = event->position().toPoint(); - event->accept(); - } - break; - - case FlickablePrivate::ManualScroll: - event->accept(); - delta = event->position().toPoint() - d->pressPos; - setScrollOffset(d->offset - delta); - if (d->timeStamp.elapsed() > 100) { - d->timeStamp.start(); - d->speed = delta - d->delta; - d->delta = delta; - } - break; - - default: - break; - } -} - -void Flickable::tick() -{ - if (d->state == FlickablePrivate:: AutoScroll) { - d->speed = deaccelerate(d->speed); - setScrollOffset(d->offset - d->speed); - d->offset = scrollOffset(); - if (d->speed == QPoint(0, 0)) { - d->state = FlickablePrivate::Steady; - d->ticker->stop(); - } - } else { - d->ticker->stop(); - } -} diff --git a/examples/embedded/flickable/flickable.h b/examples/embedded/flickable/flickable.h deleted file mode 100644 index e34b08d49a..0000000000 --- a/examples/embedded/flickable/flickable.h +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright (C) 2016 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause - -#ifndef FLICKABLE_H -#define FLICKABLE_H - -#include - -class FlickableTicker; -class FlickablePrivate; - -class Flickable -{ -public: - - Flickable(); - virtual ~Flickable(); - - void setThreshold(int threshold); - int threshold() const; - - void setAcceptMouseClick(QWidget *target); - - void handleMousePress(QMouseEvent *event); - void handleMouseMove(QMouseEvent *event); - void handleMouseRelease(QMouseEvent *event); - -protected: - virtual QPoint scrollOffset() const = 0; - virtual void setScrollOffset(const QPoint &offset) = 0; - -private: - void tick(); - -private: - FlickablePrivate *d; - friend class FlickableTicker; -}; - -#endif // FLICKABLE_H diff --git a/examples/embedded/flickable/flickable.pro b/examples/embedded/flickable/flickable.pro deleted file mode 100644 index 5929207414..0000000000 --- a/examples/embedded/flickable/flickable.pro +++ /dev/null @@ -1,7 +0,0 @@ -QT += widgets - -SOURCES = flickable.cpp main.cpp -HEADERS = flickable.h - -target.path = $$[QT_INSTALL_EXAMPLES]/embedded/flickable -INSTALLS += target diff --git a/examples/embedded/flickable/main.cpp b/examples/embedded/flickable/main.cpp deleted file mode 100644 index ba229c5245..0000000000 --- a/examples/embedded/flickable/main.cpp +++ /dev/null @@ -1,190 +0,0 @@ -// Copyright (C) 2016 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause - -#include -#include - -#include "flickable.h" - -// Returns a list of two-word color names -static QStringList colorPairs(int max) -{ - // capitalize the first letter - QStringList colors = QColor::colorNames(); - colors.removeAll("transparent"); - int num = colors.count(); - for (int c = 0; c < num; ++c) - colors[c] = colors[c][0].toUpper() + colors[c].mid(1); - - // combine two colors, e.g. "lime skyblue" - QStringList combinedColors; - for (int i = 0; i < num; ++i) - for (int j = 0; j < num; ++j) - combinedColors << QString("%1 %2").arg(colors[i]).arg(colors[j]); - - // randomize it - colors.clear(); - while (combinedColors.count()) { - int i = QRandomGenerator::global()->bounded(combinedColors.count()); - colors << combinedColors[i]; - combinedColors.removeAt(i); - if (colors.count() == max) - break; - } - - return colors; -} - -class ColorList : public QWidget, public Flickable -{ - Q_OBJECT - -public: - ColorList(QWidget *parent = nullptr) - : QWidget(parent) { - m_offset = 0; - m_height = QFontMetrics(font()).height() + 5; - m_highlight = -1; - m_selected = -1; - - QStringList colors = colorPairs(999); - for (int i = 0; i < colors.count(); ++i) { - const QString c = colors[i]; - const QString str = QString::asprintf("%4d", i + 1); - m_colorNames << (str + " " + c); - - QStringList duet = c.split(' '); - m_firstColor << QColor::fromString(duet[0]); - m_secondColor << QColor::fromString(duet[1]); - } - - setAttribute(Qt::WA_OpaquePaintEvent, true); - setAttribute(Qt::WA_NoSystemBackground, true); - - setMouseTracking(true); - Flickable::setAcceptMouseClick(this); - } - -protected: - // reimplement from Flickable - virtual QPoint scrollOffset() const { - return QPoint(0, m_offset); - } - - // reimplement from Flickable - virtual void setScrollOffset(const QPoint &offset) { - int yy = offset.y(); - if (yy != m_offset) { - m_offset = qBound(0, yy, m_height * m_colorNames.count() - height()); - update(); - } - } - -protected: - void paintEvent(QPaintEvent *event) { - QPainter p(this); - p.fillRect(event->rect(), Qt::white); - int start = m_offset / m_height; - int y = start * m_height - m_offset; - if (m_offset <= 0) { - start = 0; - y = -m_offset; - } - int end = start + height() / m_height + 1; - if (end > m_colorNames.count() - 1) - end = m_colorNames.count() - 1; - for (int i = start; i <= end; ++i, y += m_height) { - - p.setBrush(Qt::NoBrush); - p.setPen(Qt::black); - if (i == m_highlight) { - p.fillRect(0, y, width(), m_height, QColor(0, 64, 128)); - p.setPen(Qt::white); - } - if (i == m_selected) { - p.fillRect(0, y, width(), m_height, QColor(0, 128, 240)); - p.setPen(Qt::white); - } - - p.drawText(m_height + 2, y, width(), m_height, Qt::AlignVCenter, m_colorNames[i]); - - p.setPen(Qt::NoPen); - p.setBrush(m_firstColor[i]); - p.drawRect(1, y + 1, m_height - 2, m_height - 2); - p.setBrush(m_secondColor[i]); - p.drawRect(5, y + 5, m_height - 11, m_height - 11); - } - p.end(); - } - - void keyReleaseEvent(QKeyEvent *event) { - if (event->key() == Qt::Key_Down) { - m_offset += 20; - event->accept(); - update(); - return; - } - if (event->key() == Qt::Key_Up) { - m_offset -= 20; - event->accept(); - update(); - return; - } - } - - void mousePressEvent(QMouseEvent *event) { - Flickable::handleMousePress(event); - if (event->isAccepted()) - return; - - if (event->button() == Qt::LeftButton) { - int y = event->position().toPoint().y() + m_offset; - int i = y / m_height; - if (i != m_highlight) { - m_highlight = i; - m_selected = -1; - update(); - } - event->accept(); - } - } - - void mouseMoveEvent(QMouseEvent *event) { - Flickable::handleMouseMove(event); - } - - void mouseReleaseEvent(QMouseEvent *event) { - Flickable::handleMouseRelease(event); - if (event->isAccepted()) - return; - - if (event->button() == Qt::LeftButton) { - m_selected = m_highlight; - event->accept(); - update(); - } - } - -private: - int m_offset; - int m_height; - int m_highlight; - int m_selected; - QStringList m_colorNames; - QList m_firstColor; - QList m_secondColor; -}; - -#include "main.moc" - -int main(int argc, char *argv[]) -{ - QApplication app(argc, argv); - - ColorList list; - list.setWindowTitle("Kinetic Scrolling"); - list.resize(320, 320); - list.show(); - - return app.exec(); -} diff --git a/examples/embedded/flightinfo/CMakeLists.txt b/examples/embedded/flightinfo/CMakeLists.txt deleted file mode 100644 index 8e31aedd49..0000000000 --- a/examples/embedded/flightinfo/CMakeLists.txt +++ /dev/null @@ -1,50 +0,0 @@ -# Copyright (C) 2022 The Qt Company Ltd. -# SPDX-License-Identifier: BSD-3-Clause - -cmake_minimum_required(VERSION 3.16) -project(flightinfo LANGUAGES CXX) - -if(NOT DEFINED INSTALL_EXAMPLESDIR) - set(INSTALL_EXAMPLESDIR "examples") -endif() - -set(INSTALL_EXAMPLEDIR "${INSTALL_EXAMPLESDIR}/embedded/flightinfo") - -find_package(Qt6 REQUIRED COMPONENTS Core Gui Network Widgets) - -qt_standard_project_setup() - -qt_add_executable(flightinfo - flightinfo.cpp - form.ui -) - -set_target_properties(flightinfo PROPERTIES - WIN32_EXECUTABLE TRUE - MACOSX_BUNDLE TRUE -) - -target_link_libraries(flightinfo PRIVATE - Qt6::Core - Qt6::Gui - Qt6::Network - Qt6::Widgets -) - -# Resources: -set(flightinfo_resource_files - "aircraft.png" -) - -qt_add_resources(flightinfo "flightinfo" - PREFIX - "/" - FILES - ${flightinfo_resource_files} -) - -install(TARGETS flightinfo - RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" - BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" - LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}" -) diff --git a/examples/embedded/flightinfo/aircraft.png b/examples/embedded/flightinfo/aircraft.png deleted file mode 100644 index 2312bcc9f0a1858e79179fd657abbbb5f5f625ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20200 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 diff --git a/examples/embedded/flightinfo/flightinfo.cpp b/examples/embedded/flightinfo/flightinfo.cpp deleted file mode 100644 index f9d4b6e0c3..0000000000 --- a/examples/embedded/flightinfo/flightinfo.cpp +++ /dev/null @@ -1,352 +0,0 @@ -// Copyright (C) 2020 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause - -#include -#include -#include - -#include "ui_form.h" - -#define FLIGHTVIEW_URL "http://mobile.flightview.com/TrackByFlight.aspx" -#define FLIGHTVIEW_RANDOM "http://mobile.flightview.com/TrackSampleFlight.aspx" - -// strips all invalid constructs that might trip QXmlStreamReader -static QString sanitized(const QString &xml) -{ - QString data = xml; - - // anything up to the html tag - int i = data.indexOf(" 0) - data.remove(0, i - 1); - - // everything inside the head tag - i = data.indexOf(" 0) - data.remove(i, data.indexOf("") - i + 7); - - // invalid link for JavaScript code - while (true) { - i = data.indexOf("onclick=\"gotoUrl("); - if (i < 0) - break; - data.remove(i, data.indexOf('\"', i + 9) - i + 1); - } - - // all inline frames - while (true) { - i = data.indexOf("") - i + 8); - } - - // entities - data.remove(" "); - data.remove("©"); - - return data; -} - -class FlightInfo : public QMainWindow -{ - Q_OBJECT - -private: - - Ui_Form ui; - QUrl m_url; - QDate m_searchDate; - QPixmap m_map; - QNetworkAccessManager m_manager; - QList mapReplies; - -public: - - FlightInfo(QMainWindow *parent = nullptr): QMainWindow(parent) { - - QWidget *w = new QWidget(this); - ui.setupUi(w); - setCentralWidget(w); - - ui.searchBar->hide(); - ui.infoBox->hide(); - connect(ui.searchButton, &QPushButton::clicked, this, &FlightInfo::startSearch); - connect(ui.flightEdit, &QLineEdit::returnPressed, this, &FlightInfo::startSearch); - - setWindowTitle("Flight Info"); - - // Rendered from the public-domain vectorized aircraft - // http://openclipart.org/media/people/Jarno - m_map = QPixmap(":/aircraft.png"); - - QAction *searchTodayAction = new QAction("Today's Flight", this); - QAction *searchYesterdayAction = new QAction("Yesterday's Flight", this); - QAction *randomAction = new QAction("Random Flight", this); - connect(searchTodayAction, &QAction::triggered, this, &FlightInfo::today); - connect(searchYesterdayAction, &QAction::triggered, this, &FlightInfo::yesterday); - connect(randomAction, &QAction::triggered, this, &FlightInfo::randomFlight); - connect(&m_manager, &QNetworkAccessManager::finished, - this, &FlightInfo::handleNetworkData); - addAction(searchTodayAction); - addAction(searchYesterdayAction); - addAction(randomAction); - setContextMenuPolicy(Qt::ActionsContextMenu); - } - -private slots: - - void handleNetworkData(QNetworkReply *networkReply) { - if (!networkReply->error()) { - if (!mapReplies.contains(networkReply)) { - // Assume UTF-8 encoded - QByteArray data = networkReply->readAll(); - QString xml = QString::fromUtf8(data); - digest(xml); - } else { - mapReplies.removeOne(networkReply); - m_map.loadFromData(networkReply->readAll()); - update(); - } - } - networkReply->deleteLater(); - } - - void today() { - QDateTime timestamp = QDateTime::currentDateTime(); - m_searchDate = timestamp.date(); - searchFlight(); - } - - void yesterday() { - QDateTime timestamp = QDateTime::currentDateTime(); - timestamp = timestamp.addDays(-1); - m_searchDate = timestamp.date(); - searchFlight(); - } - - void searchFlight() { - ui.searchBar->show(); - ui.infoBox->hide(); - ui.flightStatus->hide(); - ui.flightName->setText("Enter flight number"); - ui.flightEdit->setFocus(); -#ifdef QT_KEYPAD_NAVIGATION - ui.flightEdit->setEditFocus(true); -#endif - m_map = QPixmap(); - update(); - } - - void startSearch() { - ui.searchBar->hide(); - QString flight = ui.flightEdit->text().simplified(); - if (!flight.isEmpty()) - request(flight, m_searchDate); - } - - void randomFlight() { - request(QString(), QDate::currentDate()); - } - -public slots: - - void request(const QString &flightCode, QDate date) { - - setWindowTitle("Loading..."); - - QString code = flightCode.simplified(); - QString airlineCode = code.left(2).toUpper(); - QString flightNumber = code.mid(2, code.length()); - - ui.flightName->setText("Searching for " + code); - - QUrlQuery query; - query.addQueryItem("view", "detail"); - query.addQueryItem("al", airlineCode); - query.addQueryItem("fn", flightNumber); - query.addQueryItem("dpdat", date.toString("yyyyMMdd")); - m_url = QUrl(FLIGHTVIEW_URL); - m_url.setQuery(query); - - if (code.isEmpty()) { - // random flight as sample - m_url = QUrl(FLIGHTVIEW_RANDOM); - ui.flightName->setText("Getting a random flight..."); - } - - m_manager.get(QNetworkRequest(m_url)); - } - - -private: - - void digest(const QString &content) { - - setWindowTitle("Flight Info"); - QString data = sanitized(content); - - // do we only get the flight list? - // we grab the first leg in the flight list - // then fetch another URL for the real flight info - int i = data.indexOf("a href=\"?view=detail"); - if (i > 0) { - QString href = data.mid(i, data.indexOf('\"', i + 8) - i + 1); - QRegularExpression regex("dpap=([A-Za-z0-9]+)"); - QRegularExpressionMatch match = regex.match(href); - QString airport = match.captured(1); - QUrlQuery query(m_url); - query.addQueryItem("dpap", airport); - m_url.setQuery(query); - m_manager.get(QNetworkRequest(m_url)); - return; - } - - QXmlStreamReader xml(data); - bool inFlightName = false; - bool inFlightStatus = false; - bool inFlightMap = false; - bool inFieldName = false; - bool inFieldValue = false; - - QString flightName; - QString flightStatus; - QStringList fieldNames; - QStringList fieldValues; - - while (!xml.atEnd()) { - xml.readNext(); - - if (xml.tokenType() == QXmlStreamReader::StartElement) { - auto className = xml.attributes().value("class"); - inFlightName |= xml.name() == u"h1"; - inFlightStatus |= className == u"FlightDetailHeaderStatus"; - inFlightMap |= className == u"flightMap"; - if (xml.name() == u"td" && !className.isEmpty()) { - if (className.contains(u"fieldTitle")) { - inFieldName = true; - fieldNames += QString(); - fieldValues += QString(); - } - if (className.contains(u"fieldValue")) - inFieldValue = true; - } - if (xml.name() == u"img" && inFlightMap) { - const QByteArray encoded - = ("http://mobile.flightview.com/" % xml.attributes().value("src")).toLatin1(); - QUrl url = QUrl::fromPercentEncoding(encoded); - mapReplies.append(m_manager.get(QNetworkRequest(url))); - } - } - - if (xml.tokenType() == QXmlStreamReader::EndElement) { - inFlightName &= xml.name() != u"h1"; - inFlightStatus &= xml.name() != u"div"; - inFlightMap &= xml.name() != u"div"; - inFieldName &= xml.name() != u"td"; - inFieldValue &= xml.name() != u"td"; - } - - if (xml.tokenType() == QXmlStreamReader::Characters) { - if (inFlightName) - flightName += xml.text(); - if (inFlightStatus) - flightStatus += xml.text(); - if (inFieldName) - fieldNames.last() += xml.text(); - if (inFieldValue) - fieldValues.last() += xml.text(); - } - } - - if (fieldNames.isEmpty()) { - QString code = ui.flightEdit->text().simplified().left(10); - QString msg = QString("Flight %1 is not found").arg(code); - ui.flightName->setText(msg); - return; - } - - ui.flightName->setText(flightName); - flightStatus.remove("Status: "); - ui.flightStatus->setText(flightStatus); - ui.flightStatus->show(); - - QStringList whiteList; - whiteList << "Departure"; - whiteList << "Arrival"; - whiteList << "Scheduled"; - whiteList << "Takeoff"; - whiteList << "Estimated"; - whiteList << "Term-Gate"; - - QString text; - text = QString("").arg(width() - 25); - for (int i = 0; i < fieldNames.count(); i++) { - QString fn = fieldNames[i].simplified(); - if (fn.endsWith(':')) - fn = fn.left(fn.length() - 1); - if (!whiteList.contains(fn)) - continue; - - QString fv = fieldValues[i].simplified(); - bool special = false; - special |= fn.startsWith("Departure"); - special |= fn.startsWith("Arrival"); - text += ""; - if (special) { - text += ""; - } else { - text += ""; - text += ""; - } - text += ""; - } - text += "
"; - text += "" + fv + ""; - text += ""; - text += fn; - text += " : "; - text += " "; - text += ""; - text += fv; - text += "
"; - ui.detailedInfo->setText(text); - ui.infoBox->show(); - } - - void resizeEvent(QResizeEvent *event) { - Q_UNUSED(event); - ui.detailedInfo->setMaximumWidth(width() - 25); - } - - void paintEvent(QPaintEvent *event) { - QMainWindow::paintEvent(event); - QPainter p(this); - p.fillRect(rect(), QColor(131, 171, 210)); - if (!m_map.isNull()) { - int x = (width() - m_map.width()) / 2; - int space = ui.infoBox->pos().y(); - if (!ui.infoBox->isVisible()) - space = height(); - int top = ui.titleBox->height(); - int y = qMax(top, (space - m_map.height()) / 2); - p.drawPixmap(x, y, m_map); - } - p.end(); - } - -}; - - -#include "flightinfo.moc" - -int main(int argc, char **argv) -{ - QApplication app(argc, argv); - - FlightInfo w; - w.resize(360, 504); - w.show(); - - return app.exec(); -} diff --git a/examples/embedded/flightinfo/flightinfo.pro b/examples/embedded/flightinfo/flightinfo.pro deleted file mode 100644 index 4e62b24576..0000000000 --- a/examples/embedded/flightinfo/flightinfo.pro +++ /dev/null @@ -1,9 +0,0 @@ -TEMPLATE = app -TARGET = flightinfo -SOURCES = flightinfo.cpp -FORMS += form.ui -RESOURCES = flightinfo.qrc -QT += network widgets - -target.path = $$[QT_INSTALL_EXAMPLES]/embedded/flightinfo -INSTALLS += target diff --git a/examples/embedded/flightinfo/flightinfo.qrc b/examples/embedded/flightinfo/flightinfo.qrc deleted file mode 100644 index babea7e0cb..0000000000 --- a/examples/embedded/flightinfo/flightinfo.qrc +++ /dev/null @@ -1,5 +0,0 @@ - - - aircraft.png - - diff --git a/examples/embedded/flightinfo/form.ui b/examples/embedded/flightinfo/form.ui deleted file mode 100644 index 3a24c758a6..0000000000 --- a/examples/embedded/flightinfo/form.ui +++ /dev/null @@ -1,226 +0,0 @@ - - - Form - - - - 0 - 0 - 220 - 171 - - - - Form - - - - 0 - - - 0 - - - - - QFrame { -background-color: #45629a; -} - -QLabel { -color: white; -} - - - QFrame::NoFrame - - - QFrame::Raised - - - 0 - - - - 0 - - - 4 - - - - - - 0 - 0 - - - - Powered by FlightView - - - - - - - - 0 - 0 - - - - - 75 - true - - - - background-color: white; -color: #45629a; - - - 0 - - - Ready - - - Qt::AlignCenter - - - 4 - - - - - - - - - - QFrame::NoFrame - - - QFrame::Raised - - - - 5 - - - - - color: black; -border: 1px solid black; -background: white; -selection-background-color: lightgray; - - - - - - - color: rgb(255, 255, 255); -background-color: rgb(85, 85, 255); -padding: 2px; -border: 2px solid rgb(0, 0, 127); - - - Search - - - Qt::ToolButtonTextBesideIcon - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - Qt::Vertical - - - - 20 - 58 - - - - - - - - - 0 - 0 - - - - QFrame { border: 2px solid white; -border-radius: 10px; -margin: 5px; -background-color: rgba(69, 98, 154, 192); } - - - QFrame::NoFrame - - - QFrame::Raised - - - - 0 - - - 5 - - - - - - 0 - 0 - - - - color: white; -border: none; -background-color: none; - - - - - - Qt::RichText - - - true - - - Qt::NoTextInteraction - - - - - - - - - - - diff --git a/examples/embedded/lightmaps/CMakeLists.txt b/examples/embedded/lightmaps/CMakeLists.txt deleted file mode 100644 index c637aa705c..0000000000 --- a/examples/embedded/lightmaps/CMakeLists.txt +++ /dev/null @@ -1,40 +0,0 @@ -# Copyright (C) 2022 The Qt Company Ltd. -# SPDX-License-Identifier: BSD-3-Clause - -cmake_minimum_required(VERSION 3.16) -project(lightmaps LANGUAGES CXX) - -if(NOT DEFINED INSTALL_EXAMPLESDIR) - set(INSTALL_EXAMPLESDIR "examples") -endif() - -set(INSTALL_EXAMPLEDIR "${INSTALL_EXAMPLESDIR}/embedded/lightmaps") - -find_package(Qt6 REQUIRED COMPONENTS Core Gui Network Widgets) - -qt_standard_project_setup() - -qt_add_executable(lightmaps - lightmaps.cpp lightmaps.h - main.cpp - mapzoom.cpp mapzoom.h - slippymap.cpp slippymap.h -) - -set_target_properties(lightmaps PROPERTIES - WIN32_EXECUTABLE TRUE - MACOSX_BUNDLE TRUE -) - -target_link_libraries(lightmaps PRIVATE - Qt6::Core - Qt6::Gui - Qt6::Network - Qt6::Widgets -) - -install(TARGETS lightmaps - RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" - BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" - LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}" -) diff --git a/examples/embedded/lightmaps/lightmaps.cpp b/examples/embedded/lightmaps/lightmaps.cpp deleted file mode 100644 index 566ba243ee..0000000000 --- a/examples/embedded/lightmaps/lightmaps.cpp +++ /dev/null @@ -1,238 +0,0 @@ -// Copyright (C) 2016 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause - -#include -#include -#include - -#include "lightmaps.h" -#include "slippymap.h" - -// how long (milliseconds) the user need to hold (after a tap on the screen) -// before triggering the magnifying glass feature -// 701, a prime number, is the sum of 229, 233, 239 -// (all three are also prime numbers, consecutive!) -#define HOLD_TIME 701 - -// maximum size of the magnifier -// Hint: see above to find why I picked this one :) -#define MAX_MAGNIFIER 229 - -LightMaps::LightMaps(QWidget *parent) - : QWidget(parent), pressed(false), snapped(false), zoomed(false), - invert(false) -{ - m_normalMap = new SlippyMap(this); - m_largeMap = new SlippyMap(this); - connect(m_normalMap, &SlippyMap::updated, this, &LightMaps::updateMap); - connect(m_largeMap, &SlippyMap::updated, this, &LightMaps::updateMap); -} - -void LightMaps::setCenter(qreal lat, qreal lng) -{ - m_normalMap->latitude = lat; - m_normalMap->longitude = lng; - m_normalMap->invalidate(); - m_largeMap->latitude = lat; - m_largeMap->longitude = lng; - m_largeMap->invalidate(); -} - -void LightMaps::toggleNightMode() -{ - invert = !invert; - update(); -} - -void LightMaps::updateMap(const QRect &r) -{ - update(r); -} - -void LightMaps::activateZoom() -{ - zoomed = true; - tapTimer.stop(); - m_largeMap->zoom = m_normalMap->zoom + 1; - m_largeMap->width = m_normalMap->width * 2; - m_largeMap->height = m_normalMap->height * 2; - m_largeMap->latitude = m_normalMap->latitude; - m_largeMap->longitude = m_normalMap->longitude; - m_largeMap->invalidate(); - update(); -} - -void LightMaps::resizeEvent(QResizeEvent *) -{ - m_normalMap->width = width(); - m_normalMap->height = height(); - m_normalMap->invalidate(); - m_largeMap->width = m_normalMap->width * 2; - m_largeMap->height = m_normalMap->height * 2; - m_largeMap->invalidate(); -} - -void LightMaps::paintEvent(QPaintEvent *event) -{ - QPainter p; - p.begin(this); - m_normalMap->render(&p, event->rect()); - p.setPen(Qt::black); - p.drawText(rect(), Qt::AlignBottom | Qt::TextWordWrap, - "Map data CCBYSA 2009 OpenStreetMap.org contributors"); - p.end(); - - if (zoomed) { - int dim = qMin(width(), height()); - int magnifierSize = qMin(MAX_MAGNIFIER, dim * 2 / 3); - int radius = magnifierSize / 2; - int ring = radius - 15; - QSize box = QSize(magnifierSize, magnifierSize); - - // reupdate our mask - if (maskPixmap.size() != box) { - maskPixmap = QPixmap(box); - maskPixmap.fill(Qt::transparent); - - QRadialGradient g; - g.setCenter(radius, radius); - g.setFocalPoint(radius, radius); - g.setRadius(radius); - g.setColorAt(1.0, QColor(255, 255, 255, 0)); - g.setColorAt(0.5, QColor(128, 128, 128, 255)); - - QPainter mask(&maskPixmap); - mask.setRenderHint(QPainter::Antialiasing); - mask.setCompositionMode(QPainter::CompositionMode_Source); - mask.setBrush(g); - mask.setPen(Qt::NoPen); - mask.drawRect(maskPixmap.rect()); - mask.setBrush(QColor(Qt::transparent)); - mask.drawEllipse(g.center(), ring, ring); - mask.end(); - } - - QPoint center = dragPos - QPoint(0, radius); - center = center + QPoint(0, radius / 2); - QPoint corner = center - QPoint(radius, radius); - - QPoint xy = center * 2 - QPoint(radius, radius); - - // only set the dimension to the magnified portion - if (zoomPixmap.size() != box) { - zoomPixmap = QPixmap(box); - zoomPixmap.fill(Qt::lightGray); - } - if (true) { - QPainter p(&zoomPixmap); - p.translate(-xy); - m_largeMap->render(&p, QRect(xy, box)); - p.end(); - } - - QPainterPath clipPath; - clipPath.addEllipse(center, ring, ring); - - QPainter p(this); - p.setRenderHint(QPainter::Antialiasing); - p.setClipPath(clipPath); - p.drawPixmap(corner, zoomPixmap); - p.setClipping(false); - p.drawPixmap(corner, maskPixmap); - p.setPen(Qt::gray); - p.drawPath(clipPath); - } - if (invert) { - QPainter p(this); - p.setCompositionMode(QPainter::CompositionMode_Difference); - p.fillRect(event->rect(), Qt::white); - p.end(); - } -} - -void LightMaps::timerEvent(QTimerEvent *) -{ - if (!zoomed) - activateZoom(); - update(); -} - -void LightMaps::mousePressEvent(QMouseEvent *event) -{ - if (event->buttons() != Qt::LeftButton) - return; - pressed = snapped = true; - pressPos = dragPos = event->position().toPoint(); - tapTimer.stop(); - tapTimer.start(HOLD_TIME, this); -} - -void LightMaps::mouseMoveEvent(QMouseEvent *event) -{ - if (!event->buttons()) - return; - if (!zoomed) { - if (!pressed || !snapped) { - QPoint delta = event->position().toPoint() - pressPos; - pressPos = event->position().toPoint(); - m_normalMap->pan(delta); - return; - } else { - const int threshold = 10; - QPoint delta = event->position().toPoint() - pressPos; - if (snapped) { - snapped &= delta.x() < threshold; - snapped &= delta.y() < threshold; - snapped &= delta.x() > -threshold; - snapped &= delta.y() > -threshold; - } - if (!snapped) - tapTimer.stop(); - } - } else { - dragPos = event->position().toPoint(); - update(); - } -} - -void LightMaps::mouseReleaseEvent(QMouseEvent *) -{ - zoomed = false; - update(); -} - -void LightMaps::keyPressEvent(QKeyEvent *event) -{ - if (!zoomed) { - if (event->key() == Qt::Key_Left) - m_normalMap->pan(QPoint(20, 0)); - if (event->key() == Qt::Key_Right) - m_normalMap->pan(QPoint(-20, 0)); - if (event->key() == Qt::Key_Up) - m_normalMap->pan(QPoint(0, 20)); - if (event->key() == Qt::Key_Down) - m_normalMap->pan(QPoint(0, -20)); - if (event->key() == Qt::Key_Z || event->key() == Qt::Key_Select) { - dragPos = QPoint(width() / 2, height() / 2); - activateZoom(); - } - } else { - if (event->key() == Qt::Key_Z || event->key() == Qt::Key_Select) { - zoomed = false; - update(); - } - QPoint delta(0, 0); - if (event->key() == Qt::Key_Left) - delta = QPoint(-15, 0); - if (event->key() == Qt::Key_Right) - delta = QPoint(15, 0); - if (event->key() == Qt::Key_Up) - delta = QPoint(0, -15); - if (event->key() == Qt::Key_Down) - delta = QPoint(0, 15); - if (delta != QPoint(0, 0)) { - dragPos += delta; - update(); - } - } -} diff --git a/examples/embedded/lightmaps/lightmaps.h b/examples/embedded/lightmaps/lightmaps.h deleted file mode 100644 index d932fe2ce4..0000000000 --- a/examples/embedded/lightmaps/lightmaps.h +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright (C) 2016 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause - -#ifndef LIGHTMAPS_H -#define LIGHTMAPS_H - -#include -#include - -class SlippyMap; - -class LightMaps: public QWidget -{ - Q_OBJECT - -public: - LightMaps(QWidget *parent = nullptr); - void setCenter(qreal lat, qreal lng); - -public slots: - void toggleNightMode(); - -protected: - void activateZoom(); - void resizeEvent(QResizeEvent *); - void paintEvent(QPaintEvent *event); - void timerEvent(QTimerEvent *); - void mousePressEvent(QMouseEvent *event); - void mouseMoveEvent(QMouseEvent *event); - void mouseReleaseEvent(QMouseEvent *); - void keyPressEvent(QKeyEvent *event); - -private slots: - void updateMap(const QRect &r); - -private: - SlippyMap *m_normalMap; - SlippyMap *m_largeMap; - bool pressed; - bool snapped; - QPoint pressPos; - QPoint dragPos; - QBasicTimer tapTimer; - bool zoomed; - QPixmap zoomPixmap; - QPixmap maskPixmap; - bool invert; -}; - -#endif diff --git a/examples/embedded/lightmaps/lightmaps.pro b/examples/embedded/lightmaps/lightmaps.pro deleted file mode 100644 index bb75cf0a9c..0000000000 --- a/examples/embedded/lightmaps/lightmaps.pro +++ /dev/null @@ -1,12 +0,0 @@ -TEMPLATE = app -HEADERS = lightmaps.h \ - mapzoom.h \ - slippymap.h -SOURCES = lightmaps.cpp \ - main.cpp \ - mapzoom.cpp \ - slippymap.cpp -QT += network widgets - -target.path = $$[QT_INSTALL_EXAMPLES]/embedded/lightmaps -INSTALLS += target diff --git a/examples/embedded/lightmaps/main.cpp b/examples/embedded/lightmaps/main.cpp deleted file mode 100644 index 9719eec837..0000000000 --- a/examples/embedded/lightmaps/main.cpp +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright (C) 2016 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause - -#include -#include "mapzoom.h" - -int main(int argc, char **argv) -{ - - QApplication app(argc, argv); - app.setApplicationName("LightMaps"); - - MapZoom w; - w.resize(600, 450); - w.show(); - - return app.exec(); -} diff --git a/examples/embedded/lightmaps/mapzoom.cpp b/examples/embedded/lightmaps/mapzoom.cpp deleted file mode 100644 index f29dcfa8fe..0000000000 --- a/examples/embedded/lightmaps/mapzoom.cpp +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright (C) 2016 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause - -#include -#include -#include "lightmaps.h" -#include "mapzoom.h" - -MapZoom::MapZoom() - : QMainWindow(0) -{ - map = new LightMaps(this); - setCentralWidget(map); - map->setFocus(); - - QAction *osloAction = new QAction(tr("&Oslo"), this); - QAction *berlinAction = new QAction(tr("&Berlin"), this); - QAction *jakartaAction = new QAction(tr("&Jakarta"), this); - QAction *nightModeAction = new QAction(tr("Night Mode"), this); - nightModeAction->setCheckable(true); - nightModeAction->setChecked(false); - QAction *osmAction = new QAction(tr("About OpenStreetMap"), this); - connect(osloAction, SIGNAL(triggered()), SLOT(chooseOslo())); - connect(berlinAction, SIGNAL(triggered()), SLOT(chooseBerlin())); - connect(jakartaAction, SIGNAL(triggered()), SLOT(chooseJakarta())); - connect(nightModeAction, SIGNAL(triggered()), map, SLOT(toggleNightMode())); - connect(osmAction, SIGNAL(triggered()), SLOT(aboutOsm())); - - QMenu *menu = menuBar()->addMenu(tr("&Options")); - menu->addAction(osloAction); - menu->addAction(berlinAction); - menu->addAction(jakartaAction); - menu->addSeparator(); - menu->addAction(nightModeAction); - menu->addAction(osmAction); - - setWindowTitle(tr("Light Maps")); -} - -void MapZoom::chooseOslo() -{ - map->setCenter(59.9138204, 10.7387413); -} - -void MapZoom::chooseBerlin() -{ - map->setCenter(52.52958999943302, 13.383053541183472); -} - -void MapZoom::chooseJakarta() -{ - map->setCenter(-6.211544, 106.845172); -} - -void MapZoom::aboutOsm() -{ - QDesktopServices::openUrl(QUrl("http://www.openstreetmap.org")); -} diff --git a/examples/embedded/lightmaps/mapzoom.h b/examples/embedded/lightmaps/mapzoom.h deleted file mode 100644 index 2f1425988b..0000000000 --- a/examples/embedded/lightmaps/mapzoom.h +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (C) 2016 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause - -#ifndef MAPZOOM_H -#define MAPZOOM_H - -#include - -class LightMaps; - -class MapZoom : public QMainWindow -{ - Q_OBJECT - -public: - MapZoom(); - -private slots: - void chooseOslo(); - void chooseBerlin(); - void chooseJakarta(); - void aboutOsm(); - -private: - LightMaps *map; -}; - -#endif diff --git a/examples/embedded/lightmaps/slippymap.cpp b/examples/embedded/lightmaps/slippymap.cpp deleted file mode 100644 index 76ac80bfaa..0000000000 --- a/examples/embedded/lightmaps/slippymap.cpp +++ /dev/null @@ -1,164 +0,0 @@ -// Copyright (C) 2016 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause - -#include -#include -#include "slippymap.h" -#include "qmath.h" - -// tile size in pixels -const int tdim = 256; - -QPointF tileForCoordinate(qreal lat, qreal lng, int zoom) -{ - qreal radianLat = qDegreesToRadians(lat); - qreal zn = static_cast(1 << zoom); - qreal tx = (lng + 180.0) / 360.0; - qreal ty = 0.5 - log(tan(radianLat) + 1.0 / cos(radianLat)) / M_PI / 2.0; - return QPointF(tx * zn, ty * zn); -} - -qreal longitudeFromTile(qreal tx, int zoom) -{ - qreal zn = static_cast(1 << zoom); - qreal lat = tx / zn * 360.0 - 180.0; - return lat; -} - -qreal latitudeFromTile(qreal ty, int zoom) -{ - qreal zn = static_cast(1 << zoom); - qreal n = M_PI - 2 * M_PI * ty / zn; - return qRadiansToDegrees(atan(sinh(n))); -} - - -SlippyMap::SlippyMap(QObject *parent) - : QObject(parent), width(400), height(300), zoom(15), - latitude(59.9138204), longitude(10.7387413) -{ - m_emptyTile = QPixmap(tdim, tdim); - m_emptyTile.fill(Qt::lightGray); - - QNetworkDiskCache *cache = new QNetworkDiskCache; - cache->setCacheDirectory(QStandardPaths::writableLocation(QStandardPaths::CacheLocation)); - m_manager.setCache(cache); - connect(&m_manager, SIGNAL(finished(QNetworkReply*)), - this, SLOT(handleNetworkData(QNetworkReply*))); -} - -void SlippyMap::invalidate() -{ - if (width <= 0 || height <= 0) - return; - - QPointF ct = tileForCoordinate(latitude, longitude, zoom); - qreal tx = ct.x(); - qreal ty = ct.y(); - - // top-left corner of the center tile - int xp = width / 2 - (tx - floor(tx)) * tdim; - int yp = height / 2 - (ty - floor(ty)) * tdim; - - // first tile vertical and horizontal - int xa = (xp + tdim - 1) / tdim; - int ya = (yp + tdim - 1) / tdim; - int xs = static_cast(tx) - xa; - int ys = static_cast(ty) - ya; - - // offset for top-left tile - m_offset = QPoint(xp - xa * tdim, yp - ya * tdim); - - // last tile vertical and horizontal - int xe = static_cast(tx) + (width - xp - 1) / tdim; - int ye = static_cast(ty) + (height - yp - 1) / tdim; - - // build a rect - m_tilesRect = QRect(xs, ys, xe - xs + 1, ye - ys + 1); - - if (m_url.isEmpty()) - download(); - - emit updated(QRect(0, 0, width, height)); -} - -void SlippyMap::render(QPainter *p, const QRect &rect) -{ - for (int x = 0; x <= m_tilesRect.width(); ++x) - for (int y = 0; y <= m_tilesRect.height(); ++y) { - QPoint tp(x + m_tilesRect.left(), y + m_tilesRect.top()); - QRect box = tileRect(tp); - if (rect.intersects(box)) { - if (m_tilePixmaps.contains(tp)) - p->drawPixmap(box, m_tilePixmaps.value(tp)); - else - p->drawPixmap(box, m_emptyTile); - } - } -} - -void SlippyMap::pan(const QPoint &delta) -{ - QPointF dx = QPointF(delta) / qreal(tdim); - QPointF center = tileForCoordinate(latitude, longitude, zoom) - dx; - latitude = latitudeFromTile(center.y(), zoom); - longitude = longitudeFromTile(center.x(), zoom); - invalidate(); -} - -void SlippyMap::handleNetworkData(QNetworkReply *reply) -{ - QImage img; - QPoint tp = reply->request().attribute(QNetworkRequest::User).toPoint(); - if (!reply->error()) - if (!img.load(reply, 0)) - img = QImage(); - reply->deleteLater(); - m_tilePixmaps[tp] = QPixmap::fromImage(img); - if (img.isNull()) - m_tilePixmaps[tp] = m_emptyTile; - emit updated(tileRect(tp)); - - // purge unused spaces - const QRect bound = m_tilesRect.adjusted(-2, -2, 2, 2); - for (auto it = m_tilePixmaps.keyBegin(); it != m_tilePixmaps.keyEnd(); ++it) { - const QPoint &tp = *it; - if (!bound.contains(tp)) - m_tilePixmaps.remove(tp); - } - - download(); -} - -void SlippyMap::download() -{ - QPoint grab(0, 0); - for (int x = 0; x <= m_tilesRect.width(); ++x) - for (int y = 0; y <= m_tilesRect.height(); ++y) { - QPoint tp = m_tilesRect.topLeft() + QPoint(x, y); - if (!m_tilePixmaps.contains(tp)) { - grab = tp; - break; - } - } - if (grab == QPoint(0, 0)) { - m_url = QUrl(); - return; - } - - QString path = "http://tile.openstreetmap.org/%1/%2/%3.png"; - m_url = QUrl(path.arg(zoom).arg(grab.x()).arg(grab.y())); - QNetworkRequest request; - request.setUrl(m_url); - request.setRawHeader("User-Agent", "The Qt Company (Qt) Graphics Dojo 1.0"); - request.setAttribute(QNetworkRequest::User, QVariant(grab)); - m_manager.get(request); -} - -QRect SlippyMap::tileRect(const QPoint &tp) -{ - QPoint t = tp - m_tilesRect.topLeft(); - int x = t.x() * tdim + m_offset.x(); - int y = t.y() * tdim + m_offset.y(); - return QRect(x, y, tdim, tdim); -} diff --git a/examples/embedded/lightmaps/slippymap.h b/examples/embedded/lightmaps/slippymap.h deleted file mode 100644 index 85afac09dc..0000000000 --- a/examples/embedded/lightmaps/slippymap.h +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright (C) 2016 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause - -#ifndef SLIPPYMAP_H -#define SLIPPYMAP_H - -#include -#include -#include - -QT_BEGIN_NAMESPACE -class QNetworkReply; -class QPainter; -QT_END_NAMESPACE - -class SlippyMap: public QObject -{ - Q_OBJECT - -public: - SlippyMap(QObject *parent = nullptr); - void invalidate(); - void render(QPainter *p, const QRect &rect); - void pan(const QPoint &delta); - - int width; - int height; - int zoom; - qreal latitude; - qreal longitude; - -signals: - void updated(const QRect &rect); - -private slots: - void handleNetworkData(QNetworkReply *reply); - void download(); - -protected: - QRect tileRect(const QPoint &tp); - -private: - QPoint m_offset; - QRect m_tilesRect; - QPixmap m_emptyTile; - QHash m_tilePixmaps; - QNetworkAccessManager m_manager; - QUrl m_url; -}; - -#endif - diff --git a/examples/embedded/raycasting/CMakeLists.txt b/examples/embedded/raycasting/CMakeLists.txt deleted file mode 100644 index 7186fddb8f..0000000000 --- a/examples/embedded/raycasting/CMakeLists.txt +++ /dev/null @@ -1,48 +0,0 @@ -# Copyright (C) 2022 The Qt Company Ltd. -# SPDX-License-Identifier: BSD-3-Clause - -cmake_minimum_required(VERSION 3.16) -project(raycasting LANGUAGES CXX) - -if(NOT DEFINED INSTALL_EXAMPLESDIR) - set(INSTALL_EXAMPLESDIR "examples") -endif() - -set(INSTALL_EXAMPLEDIR "${INSTALL_EXAMPLESDIR}/embedded/raycasting") - -find_package(Qt6 REQUIRED COMPONENTS Core Gui Widgets) - -qt_standard_project_setup() - -qt_add_executable(raycasting - raycasting.cpp -) - -set_target_properties(raycasting PROPERTIES - WIN32_EXECUTABLE TRUE - MACOSX_BUNDLE TRUE -) - -target_link_libraries(raycasting PRIVATE - Qt6::Core - Qt6::Gui - Qt6::Widgets -) - -# Resources: -set(raycasting_resource_files - "textures.png" -) - -qt_add_resources(raycasting "raycasting" - PREFIX - "/" - FILES - ${raycasting_resource_files} -) - -install(TARGETS raycasting - RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" - BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" - LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}" -) diff --git a/examples/embedded/raycasting/raycasting.cpp b/examples/embedded/raycasting/raycasting.cpp deleted file mode 100644 index 1823974f8c..0000000000 --- a/examples/embedded/raycasting/raycasting.cpp +++ /dev/null @@ -1,336 +0,0 @@ -// Copyright (C) 2016 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause - -#include -#include -#include - -#define WORLD_SIZE 8 -int world_map[WORLD_SIZE][WORLD_SIZE] = { - { 1, 1, 1, 1, 6, 1, 1, 1 }, - { 1, 0, 0, 1, 0, 0, 0, 7 }, - { 1, 1, 0, 1, 0, 1, 1, 1 }, - { 6, 0, 0, 0, 0, 0, 0, 3 }, - { 1, 8, 8, 0, 8, 0, 8, 1 }, - { 2, 2, 0, 0, 8, 8, 7, 1 }, - { 3, 0, 0, 0, 0, 0, 0, 5 }, - { 2, 2, 2, 2, 7, 4, 4, 4 }, -}; - -#define TEXTURE_SIZE 64 -#define TEXTURE_BLOCK (TEXTURE_SIZE * TEXTURE_SIZE) - -class Raycasting: public QWidget -{ -public: - Raycasting(QWidget *parent = nullptr) - : QWidget(parent) - , angle(0.5) - , playerPos(1.5, 1.5) - , angleDelta(0) - , moveDelta(0) - , touchDevice(false) { - - // http://www.areyep.com/RIPandMCS-TextureLibrary.html - textureImg.load(":/textures.png"); - textureImg = textureImg.convertToFormat(QImage::Format_ARGB32); - Q_ASSERT(textureImg.width() == TEXTURE_SIZE * 2); - Q_ASSERT(textureImg.bytesPerLine() == 4 * TEXTURE_SIZE * 2); - textureCount = textureImg.height() / TEXTURE_SIZE; - - watch.start(); - ticker.start(25, this); - setAttribute(Qt::WA_OpaquePaintEvent, true); - setMouseTracking(false); - } - - void updatePlayer() { - int interval = qBound(20ll, watch.elapsed(), 250ll); - watch.start(); - angle += angleDelta * interval / 1000; - qreal step = moveDelta * interval / 1000; - qreal dx = cos(angle) * step; - qreal dy = sin(angle) * step; - QPointF pos = playerPos + 3 * QPointF(dx, dy); - int xi = static_cast(pos.x()); - int yi = static_cast(pos.y()); - if (world_map[yi][xi] == 0) - playerPos = playerPos + QPointF(dx, dy); - } - - void showFps() { - static QElapsedTimer frameTick; - static int totalFrame = 0; - if (!(totalFrame & 31)) { - const qint64 elapsed = frameTick.elapsed(); - frameTick.start(); - int fps = 32 * 1000 / (1 + elapsed); - setWindowTitle(QString("Raycasting (%1 FPS)").arg(fps)); - } - totalFrame++; - } - - void render() { - - // setup the screen surface - if (buffer.size() != bufferSize) - buffer = QImage(bufferSize, QImage::Format_ARGB32); - int bufw = buffer.width(); - int bufh = buffer.height(); - if (bufw <= 0 || bufh <= 0) - return; - - // we intentionally cheat here, to avoid detach - const uchar *ptr = buffer.bits(); - QRgb *start = (QRgb*)(ptr); - QRgb stride = buffer.bytesPerLine() / 4; - QRgb *finish = start + stride * bufh; - - // prepare the texture pointer - const uchar *src = textureImg.bits(); - const QRgb *texsrc = reinterpret_cast(src); - - // cast all rays here - qreal sina = sin(angle); - qreal cosa = cos(angle); - qreal u = cosa - sina; - qreal v = sina + cosa; - qreal du = 2 * sina / bufw; - qreal dv = -2 * cosa / bufw; - - for (int ray = 0; ray < bufw; ++ray, u += du, v += dv) { - // every time this ray advances 'u' units in x direction, - // it also advanced 'v' units in y direction - qreal uu = (u < 0) ? -u : u; - qreal vv = (v < 0) ? -v : v; - qreal duu = 1 / uu; - qreal dvv = 1 / vv; - int stepx = (u < 0) ? -1 : 1; - int stepy = (v < 0) ? -1 : 1; - - // the cell in the map that we need to check - qreal px = playerPos.x(); - qreal py = playerPos.y(); - int mapx = static_cast(px); - int mapy = static_cast(py); - - // the position and texture for the hit - int texture = 0; - qreal hitdist = 0.1; - qreal texofs = 0; - bool dark = false; - - // first hit at constant x and constant y lines - qreal distx = (u > 0) ? (mapx + 1 - px) * duu : (px - mapx) * duu; - qreal disty = (v > 0) ? (mapy + 1 - py) * dvv : (py - mapy) * dvv; - - // loop until we hit something - while (texture <= 0) { - if (distx > disty) { - // shorter distance to a hit in constant y line - hitdist = disty; - disty += dvv; - mapy += stepy; - texture = world_map[mapy][mapx]; - if (texture > 0) { - dark = true; - if (stepy > 0) { - qreal ofs = px + u * (mapy - py) / v; - texofs = ofs - floor(ofs); - } else { - qreal ofs = px + u * (mapy + 1 - py) / v; - texofs = ofs - floor(ofs); - } - } - } else { - // shorter distance to a hit in constant x line - hitdist = distx; - distx += duu; - mapx += stepx; - texture = world_map[mapy][mapx]; - if (texture > 0) { - if (stepx > 0) { - qreal ofs = py + v * (mapx - px) / u; - texofs = ofs - floor(ofs); - } else { - qreal ofs = py + v * (mapx + 1 - px) / u; - texofs = ceil(ofs) - ofs; - } - } - } - } - - // get the texture, note that the texture image - // has two textures horizontally, "normal" vs "dark" - int col = static_cast(texofs * TEXTURE_SIZE); - col = qBound(0, col, TEXTURE_SIZE - 1); - texture = (texture - 1) % textureCount; - const QRgb *tex = texsrc + TEXTURE_BLOCK * texture * 2 + - (TEXTURE_SIZE * 2 * col); - if (dark) - tex += TEXTURE_SIZE; - - // start from the texture center (horizontally) - int h = static_cast(bufw / hitdist / 2); - int dy = (TEXTURE_SIZE << 12) / h; - int p1 = ((TEXTURE_SIZE / 2) << 12) - dy; - int p2 = p1 + dy; - - // start from the screen center (vertically) - // y1 will go up (decrease), y2 will go down (increase) - int y1 = bufh / 2; - int y2 = y1 + 1; - QRgb *pixel1 = start + y1 * stride + ray; - QRgb *pixel2 = pixel1 + stride; - - // map the texture to the sliver - while (y1 >= 0 && y2 < bufh && p1 >= 0) { - *pixel1 = tex[p1 >> 12]; - *pixel2 = tex[p2 >> 12]; - p1 -= dy; - p2 += dy; - --y1; - ++y2; - pixel1 -= stride; - pixel2 += stride; - } - - // ceiling and floor - for (; pixel1 > start; pixel1 -= stride) - *pixel1 = qRgb(0, 0, 0); - for (; pixel2 < finish; pixel2 += stride) - *pixel2 = qRgb(96, 96, 96); - } - - update(QRect(QPoint(0, 0), bufferSize)); - } - -protected: - - void resizeEvent(QResizeEvent*) { - touchDevice = false; - if (touchDevice) { - if (width() < height()) { - trackPad = QRect(0, height() / 2, width(), height() / 2); - centerPad = QPoint(width() / 2, height() * 3 / 4); - bufferSize = QSize(width(), height() / 2); - } else { - trackPad = QRect(width() / 2, 0, width() / 2, height()); - centerPad = QPoint(width() * 3 / 4, height() / 2); - bufferSize = QSize(width() / 2, height()); - } - } else { - trackPad = QRect(); - bufferSize = size(); - } - update(); - } - - void timerEvent(QTimerEvent*) { - updatePlayer(); - render(); - showFps(); - } - - void paintEvent(QPaintEvent *event) { - QPainter p(this); - p.setCompositionMode(QPainter::CompositionMode_Source); - - p.drawImage(event->rect(), buffer, event->rect()); - - if (touchDevice && event->rect().intersects(trackPad)) { - p.fillRect(trackPad, Qt::white); - p.setPen(QPen(QColor(224, 224, 224), 6)); - int rad = qMin(trackPad.width(), trackPad.height()) * 0.3; - p.drawEllipse(centerPad, rad, rad); - - p.setPen(Qt::NoPen); - p.setBrush(Qt::gray); - - QPolygon poly; - poly << QPoint(-30, 0); - poly << QPoint(0, -40); - poly << QPoint(30, 0); - - p.translate(centerPad); - for (int i = 0; i < 4; ++i) { - p.rotate(90); - p.translate(0, 20 - rad); - p.drawPolygon(poly); - p.translate(0, rad - 20); - } - } - - p.end(); - } - - void keyPressEvent(QKeyEvent *event) { - event->accept(); - if (event->key() == Qt::Key_Left) - angleDelta = 1.3 * M_PI; - if (event->key() == Qt::Key_Right) - angleDelta = -1.3 * M_PI; - if (event->key() == Qt::Key_Up) - moveDelta = 2.5; - if (event->key() == Qt::Key_Down) - moveDelta = -2.5; - } - - void keyReleaseEvent(QKeyEvent *event) { - event->accept(); - if (event->key() == Qt::Key_Left) - angleDelta = (angleDelta > 0) ? 0 : angleDelta; - if (event->key() == Qt::Key_Right) - angleDelta = (angleDelta < 0) ? 0 : angleDelta; - if (event->key() == Qt::Key_Up) - moveDelta = (moveDelta > 0) ? 0 : moveDelta; - if (event->key() == Qt::Key_Down) - moveDelta = (moveDelta < 0) ? 0 : moveDelta; - } - - void mousePressEvent(QMouseEvent *event) { - qreal dx = centerPad.x() - event->position().toPoint().x(); - qreal dy = centerPad.y() - event->position().toPoint().y(); - angleDelta = dx * 2 * M_PI / width(); - moveDelta = dy * 10 / height(); - } - - void mouseMoveEvent(QMouseEvent *event) { - qreal dx = centerPad.x() - event->position().toPoint().x(); - qreal dy = centerPad.y() - event->position().toPoint().y(); - angleDelta = dx * 2 * M_PI / width(); - moveDelta = dy * 10 / height(); - } - - void mouseReleaseEvent(QMouseEvent*) { - angleDelta = 0; - moveDelta = 0; - } - -private: - QElapsedTimer watch; - QBasicTimer ticker; - QImage buffer; - qreal angle; - QPointF playerPos; - qreal angleDelta; - qreal moveDelta; - QImage textureImg; - int textureCount; - bool touchDevice; - QRect trackPad; - QPoint centerPad; - QSize bufferSize; -}; - -int main(int argc, char **argv) -{ - QApplication app(argc, argv); - - Raycasting w; - w.setWindowTitle("Raycasting"); - w.resize(640, 480); - w.show(); - - return app.exec(); -} diff --git a/examples/embedded/raycasting/raycasting.pro b/examples/embedded/raycasting/raycasting.pro deleted file mode 100644 index 51bf4bf4b0..0000000000 --- a/examples/embedded/raycasting/raycasting.pro +++ /dev/null @@ -1,7 +0,0 @@ -TEMPLATE = app -QT += widgets -SOURCES = raycasting.cpp -RESOURCES += raycasting.qrc - -target.path = $$[QT_INSTALL_EXAMPLES]/embedded/raycasting -INSTALLS += target diff --git a/examples/embedded/raycasting/raycasting.qrc b/examples/embedded/raycasting/raycasting.qrc deleted file mode 100644 index 974a06093c..0000000000 --- a/examples/embedded/raycasting/raycasting.qrc +++ /dev/null @@ -1,5 +0,0 @@ - - - textures.png - - diff --git a/examples/embedded/raycasting/textures.png b/examples/embedded/raycasting/textures.png deleted file mode 100644 index 2eb1ba7ff6a19b9c85129c1f34e2005683493e0f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17669 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 diff --git a/examples/embedded/styleexample/files/application.qss b/examples/embedded/styleexample/files/application.qss deleted file mode 100644 index 432fe6bc76..0000000000 --- a/examples/embedded/styleexample/files/application.qss +++ /dev/null @@ -1,125 +0,0 @@ -QWidget#StyleWidget -{ - background-color: none; - background-image: url(icons:nature_1.jpg); -} - -QLabel, QAbstractButton -{ - font: bold; - color: beige; -} - -QAbstractButton -{ - background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 rgba(173,216,230,60%), stop:1 rgba(0,0,139,60%) ); - border-color: black; - border-style: solid; - border-width: 3px; - border-radius: 6px; -} - -QAbstractButton:pressed, QAbstractButton:checked -{ - background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 rgba(0,0,139,60%), stop:1 rgba(173,216,230,60%) ); -} - -QSpinBox { - padding-left: 24px; - padding-right: 24px; - border-color: darkkhaki; - border-style: solid; - border-radius: 5; - border-width: 3; -} - -QSpinBox::up-button -{ - subcontrol-origin: padding; - subcontrol-position: right; /* position at the top right corner */ - width: 24px; - height: 24px; - border-width: 3px; - -} - -QSpinBox::up-arrow -{ - image: url(icons:add.png); - width: 18px; - height: 18px; -} - - -QSpinBox::down-button -{ - subcontrol-origin: border; - subcontrol-position: left; - width: 24px; - height: 24px; - border-width: 3px; -} - -QSpinBox::down-arrow -{ - image: url(icons:remove.png); - width: 18px; - height: 18px; -} - - -QScrollBar:horizontal -{ - border: 1px solid black; - background: qlineargradient(x1:0, y1:0, x2:1, y2:0, stop:0 rgba(0,0,139,60%), stop:1 rgba(173,216,230,60%) ); - height: 15px; - margin: 0px 20px 0 20px; -} - -QScrollBar::handle:horizontal -{ - border: 1px solid black; - background: rgba(0,0,139,60%); - min-width: 20px; -} - -QScrollBar::add-line:horizontal -{ - border: 1px solid black; - background: rgba(0,0,139,60%); - width: 20px; - subcontrol-position: right; - subcontrol-origin: margin; -} - -QScrollBar::sub-line:horizontal -{ - border: 1px solid black; - background: rgba(0,0,139,60%); - width: 20px; - subcontrol-position: left; - subcontrol-origin: margin; -} - -QScrollBar:left-arrow:horizontal, QScrollBar::right-arrow:horizontal -{ - border: none; - width: 16px; - height: 16px; -} - -QScrollBar:left-arrow:horizontal -{ - image: url(icons:add.png) -} - -QScrollBar::right-arrow:horizontal -{ - image: url(icons:remove.png) -} - -QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal -{ - background: none; -} - diff --git a/examples/embedded/styleexample/files/blue.qss b/examples/embedded/styleexample/files/blue.qss deleted file mode 100644 index ac8671b5e4..0000000000 --- a/examples/embedded/styleexample/files/blue.qss +++ /dev/null @@ -1,38 +0,0 @@ -* -{ - color: beige; -} - -QLabel, QAbstractButton -{ - font: bold; - color: yellow; -} - -QFrame -{ - background-color: rgba(96,96,255,60%); - border-color: rgb(32,32,196); - border-width: 3px; - border-style: solid; - border-radius: 5; - padding: 3px; -} - -QAbstractButton -{ - background: qlineargradient(x1:0, y1:0, x2:0, y2:1, - stop:0 lightblue, stop:0.5 darkblue); - border-width: 3px; - border-color: darkblue; - border-style: solid; - border-radius: 5; - padding: 3px; -} - -QAbstractButton:pressed -{ - background: qlineargradient(x1:0, y1:0, x2:0, y2:1, - stop:0.5 darkblue, stop:1 lightblue); - border-color: beige; -} diff --git a/examples/embedded/styleexample/files/khaki.qss b/examples/embedded/styleexample/files/khaki.qss deleted file mode 100644 index b0d4a0fa6f..0000000000 --- a/examples/embedded/styleexample/files/khaki.qss +++ /dev/null @@ -1,99 +0,0 @@ - -QWidget#StartScreen, QWidget#MainWidget { - border: none; -} - -QWidget#StartScreen, .QFrame { - background-color: beige; -} - -QPushButton, QToolButton { - background-color: palegoldenrod; - border-width: 2px; - border-color: darkkhaki; - border-style: solid; - border-radius: 5; - padding: 3px; - /* min-width: 96px; */ - /* min-height: 48px; */ -} - -QPushButton:hover, QToolButton:hover { - background-color: khaki; -} - -QPushButton:pressed, QToolButton:pressed { - padding-left: 5px; - padding-top: 5px; - background-color: #d0d67c; -} - -QLabel, QAbstractButton { - font: italic "Times New Roman"; -} - -QFrame, QLabel#title { - border-width: 2px; - padding: 1px; - border-style: solid; - border-color: darkkhaki; - border-radius: 5px; -} - -QFrame:focus { - border-width: 3px; - padding: 0px; -} - - -QLabel { - border: none; - padding: 0; - background: none; -} - -QLabel#title { - font: 32px bold; -} - -QSpinBox { - padding-left: 24px; - padding-right: 24px; - border-color: darkkhaki; - border-style: solid; - border-radius: 5; - border-width: 3; -} - -QSpinBox::up-button -{ - subcontrol-origin: padding; - subcontrol-position: right; /* position at the top right corner */ - width: 24px; - height: 24px; - border-width: 3px; - border-image: url(:/files/spindownpng) 1; -} - -QSpinBox::up-arrow { - image: url(:/files/add.png); - width: 12px; - height: 12px; - } - - -QSpinBox::down-button -{ - subcontrol-origin: border; - subcontrol-position: left; - width: 24px; - height: 24px; - border-width: 3px; - border-image: url(:/files/spindownpng) 1; -} - -QSpinBox::down-arrow { - image: url(:/files/remove.png); - width: 12px; - height: 12px; - } diff --git a/examples/embedded/styleexample/files/nature_1.jpg b/examples/embedded/styleexample/files/nature_1.jpg deleted file mode 100644 index 3a04edb96a0510b15531f68a107eee1db5c44172..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 167443 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

sYjnlQAuItwPS}mciV* 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

|yX2a>9ANu~rc-YjgfLg8Pch8!Gr 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�w@h?zL3j^<1S6&^^^=}dB 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 QPvry3#z;QqiUP;~*+?E}rvLx| diff --git a/examples/embedded/styleexample/files/nostyle.qss b/examples/embedded/styleexample/files/nostyle.qss deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/examples/embedded/styleexample/files/remove.png b/examples/embedded/styleexample/files/remove.png deleted file mode 100644 index a0ab1fa21a66178f08c40ba1c245567c5fadb520..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 865 zcmV-n1D^beP)47p7=__?eS4qz$rutl!69ivD3It-B&ZM+h#R1!rQzo2Nrk9UM3GdH5>~iY#;sjGiSq`u;~EF6ht@)fiNK2FcLOM%p}qYf`erxWzuGpA;DZQ7lLfb z^4;s)`07g-dpV81IlPS#W7;2m{UP=GKDxdS0d2iuc)2D|H{{6SYo~M1!;nfxI-@Qd4ScRB{m=_U6ln~Sa!+dYS@An@fAqnc*Gn{5j^Wy$PhVvd8 zFbm3Z4qd>|$ZbP?LZ58Ml4GHJFvcJcI(~ zdkdb83uX~OQjH-*8dx{jGz^TVBg3#I2+FJwRnW}o(AYHbd`#9hSOl=A!r`prFbb;@ z)FPH$(3PO8fq||QT6OH)NFY?GR*;6ow6lhH1_jjyDiCaUm9z6?E0Kni962!zh9t0) zn^AZ>3X1~E8Z3*bC7=oya23=*UGU0{1(gugp_#N9Y<7L2WsnLC^fm)xlV+3VtR+Wj zPJmS@ECFGzMaNsEFjulCaYce69H1&Fpa|3jr3BB$k%dhN>MVB{sKDxtj=D>b8Ep)- zX40a!*jU_b=1~t%`^J?Jx66zhC3t6^+!W-3_1m{tOFLBhabGXew9I~fhP zt`^Gv9tFgOx;Z@~BtHM)k(fY`Oe&aIMf~f#k3Zm-$1mB8i6U4?7*R-s5U*JOex%wK!BM- r93NamHdBe?KVEVv5K{ - -#include "stylewidget.h" - -int main(int argc, char *argv[]) -{ - QApplication app(argc, argv); - - app.setApplicationName("style"); - app.setOrganizationName("QtProject"); - app.setOrganizationDomain("www.qt-project.org"); - - StyleWidget widget; - widget.showFullScreen(); - - return app.exec(); -} - diff --git a/examples/embedded/styleexample/styleexample.pro b/examples/embedded/styleexample/styleexample.pro deleted file mode 100644 index 8f29203df2..0000000000 --- a/examples/embedded/styleexample/styleexample.pro +++ /dev/null @@ -1,9 +0,0 @@ -QT += widgets - -HEADERS += stylewidget.h -FORMS += stylewidget.ui -SOURCES += main.cpp stylewidget.cpp -RESOURCES += styleexample.qrc - -target.path = $$[QT_INSTALL_EXAMPLES]/embedded/styleexample -INSTALLS += target diff --git a/examples/embedded/styleexample/styleexample.qrc b/examples/embedded/styleexample/styleexample.qrc deleted file mode 100644 index 96237d4203..0000000000 --- a/examples/embedded/styleexample/styleexample.qrc +++ /dev/null @@ -1,13 +0,0 @@ - - - files/add.png - files/blue.qss - files/khaki.qss - files/nostyle.qss - files/transparent.qss - files/application.qss - files/nature_1.jpg - files/remove.png - - - diff --git a/examples/embedded/styleexample/stylewidget.cpp b/examples/embedded/styleexample/stylewidget.cpp deleted file mode 100644 index 5b1eab4d12..0000000000 --- a/examples/embedded/styleexample/stylewidget.cpp +++ /dev/null @@ -1,74 +0,0 @@ -// Copyright (C) 2016 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause -#include -#include -#include - -#include "stylewidget.h" - - - -StyleWidget::StyleWidget(QWidget *parent) - : QFrame(parent) -{ - m_ui.setupUi(this); -} - - -void StyleWidget::on_close_clicked() -{ - close(); -} - -void StyleWidget::on_blueStyle_clicked() -{ - QFile styleSheet(":/files/blue.qss"); - - if (!styleSheet.open(QIODevice::ReadOnly)) { - qWarning("Unable to open :/files/blue.qss"); - return; - } - - qApp->setStyleSheet(styleSheet.readAll()); -} - -void StyleWidget::on_khakiStyle_clicked() -{ - QFile styleSheet(":/files/khaki.qss"); - - if (!styleSheet.open(QIODevice::ReadOnly)) { - qWarning("Unable to open :/files/khaki.qss"); - return; - } - - qApp->setStyleSheet(styleSheet.readAll()); -} - - -void StyleWidget::on_noStyle_clicked() -{ - QFile styleSheet(":/files/nostyle.qss"); - - if (!styleSheet.open(QIODevice::ReadOnly)) { - qWarning("Unable to open :/files/nostyle.qss"); - return; - } - - qApp->setStyleSheet(styleSheet.readAll()); -} - - -void StyleWidget::on_transparentStyle_clicked() -{ - QFile styleSheet(":/files/transparent.qss"); - - if (!styleSheet.open(QIODevice::ReadOnly)) { - qWarning("Unable to open :/files/transparent.qss"); - return; - } - - qApp->setStyleSheet(styleSheet.readAll()); -} - - - diff --git a/examples/embedded/styleexample/stylewidget.h b/examples/embedded/styleexample/stylewidget.h deleted file mode 100644 index 739830a74d..0000000000 --- a/examples/embedded/styleexample/stylewidget.h +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright (C) 2016 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause -#ifndef STYLEWIDGET_H -#define STYLEWIDGET_H - -#include - -#include "ui_stylewidget.h" - -class StyleWidget : public QFrame -{ - Q_OBJECT -public: - StyleWidget(QWidget *parent = nullptr); - -private: - Ui_StyleWidget m_ui; - -private slots: - void on_close_clicked(); - void on_blueStyle_clicked(); - void on_khakiStyle_clicked(); - void on_noStyle_clicked(); - void on_transparentStyle_clicked(); -}; - -#endif diff --git a/examples/embedded/styleexample/stylewidget.ui b/examples/embedded/styleexample/stylewidget.ui deleted file mode 100644 index ebe2961ec6..0000000000 --- a/examples/embedded/styleexample/stylewidget.ui +++ /dev/null @@ -1,417 +0,0 @@ - - - StyleWidget - - - - 0 - 0 - 184 - 245 - - - - Form - - - - - - Styles - - - - 4 - - - 4 - - - - - - 0 - 0 - - - - Qt::StrongFocus - - - Transp. - - - true - - - false - - - true - - - - - - - - 0 - 0 - - - - Qt::StrongFocus - - - Blue - - - true - - - false - - - true - - - - - - - - 0 - 0 - - - - Qt::StrongFocus - - - Khaki - - - true - - - false - - - true - - - - - - - - 0 - 0 - - - - Qt::StrongFocus - - - None - - - true - - - true - - - true - - - - - - - - - - Qt::Vertical - - - - 0 - 0 - - - - - - - - 4 - - - - - - 0 - 0 - - - - Value: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Qt::WheelFocus - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - false - - - - - - - - - - 0 - 0 - - - - - 0 - 24 - - - - Qt::TabFocus - - - Qt::Horizontal - - - - - - - - 0 - 0 - - - - - 0 - 24 - - - - Qt::TabFocus - - - Qt::Horizontal - - - - - - - - 0 - 0 - - - - Qt::StrongFocus - - - Show - - - true - - - true - - - false - - - - - - - - 0 - 0 - - - - Qt::StrongFocus - - - Enable - - - true - - - true - - - false - - - - - - - Qt::Vertical - - - QSizePolicy::Expanding - - - - 0 - 0 - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Qt::StrongFocus - - - Close - - - - - - - - - - - horizontalScrollBar - valueChanged(int) - horizontalScrollBar_2 - setValue(int) - - - 84 - 147 - - - 166 - 147 - - - - - horizontalScrollBar_2 - valueChanged(int) - horizontalScrollBar - setValue(int) - - - 166 - 147 - - - 84 - 147 - - - - - pushButton - clicked(bool) - horizontalScrollBar_2 - setEnabled(bool) - - - 166 - 175 - - - 166 - 147 - - - - - pushButton_2 - clicked(bool) - horizontalScrollBar - setVisible(bool) - - - 84 - 175 - - - 84 - 147 - - - - - spinBox - valueChanged(int) - horizontalScrollBar_2 - setValue(int) - - - 166 - 115 - - - 166 - 147 - - - - - horizontalScrollBar_2 - valueChanged(int) - spinBox - setValue(int) - - - 132 - 132 - - - 135 - 110 - - - - - diff --git a/examples/examples.pro b/examples/examples.pro index 15e8167f32..87f00ca060 100644 --- a/examples/examples.pro +++ b/examples/examples.pro @@ -2,8 +2,7 @@ TEMPLATE = subdirs CONFIG += no_docs_target SUBDIRS = \ - corelib \ - embedded + corelib !contains(TEMPLATE, "vc.*") { # QTBUG-91033 qtHaveModule(dbus): SUBDIRS += dbus