From 29a4323974a1877faf389637be40688e3bc1790d Mon Sep 17 00:00:00 2001 From: Matthias Rauter Date: Thu, 21 Dec 2023 13:09:09 +0100 Subject: [PATCH] Update visuals of remote controlled car example * Added icons to the controller. * Keep the car within the scene. * Removed the ui file because 4 buttons can be maintained in code easier. Change-Id: I10af821beb442939e1e7fbdd3ffbde67a272bb2f Reviewed-by: Volker Hilsheimer --- examples/dbus/remotecontrolledcar/car/car.cpp | 19 ++++++ .../dbus/remotecontrolledcar/car/main.cpp | 2 +- .../controller/CMakeLists.txt | 14 +++- .../controller/connected.svg | 4 ++ .../controller/connecting.svg | 4 ++ .../controller/controller.cpp | 45 ++++++++++-- .../controller/controller.h | 12 +++- .../controller/controller.pro | 2 +- .../controller/controller.ui | 64 ------------------ .../remotecontrolledcar/controller/down.svg | 3 + .../remotecontrolledcar/controller/icons.qrc | 10 +++ .../remotecontrolledcar/controller/left.svg | 3 + .../remotecontrolledcar/controller/right.svg | 3 + .../remotecontrolledcar/controller/up.svg | 3 + .../remotecontrolledcar-car-example.webp | Bin 14484 -> 8346 bytes .../remotecontrolledcar.pro | 2 +- 16 files changed, 114 insertions(+), 76 deletions(-) create mode 100644 examples/dbus/remotecontrolledcar/controller/connected.svg create mode 100644 examples/dbus/remotecontrolledcar/controller/connecting.svg delete mode 100644 examples/dbus/remotecontrolledcar/controller/controller.ui create mode 100644 examples/dbus/remotecontrolledcar/controller/down.svg create mode 100644 examples/dbus/remotecontrolledcar/controller/icons.qrc create mode 100644 examples/dbus/remotecontrolledcar/controller/left.svg create mode 100644 examples/dbus/remotecontrolledcar/controller/right.svg create mode 100644 examples/dbus/remotecontrolledcar/controller/up.svg diff --git a/examples/dbus/remotecontrolledcar/car/car.cpp b/examples/dbus/remotecontrolledcar/car/car.cpp index 7d12e540717..0920658281e 100644 --- a/examples/dbus/remotecontrolledcar/car/car.cpp +++ b/examples/dbus/remotecontrolledcar/car/car.cpp @@ -93,5 +93,24 @@ void Car::timerEvent(QTimerEvent *event) setTransform(QTransform().rotate(rotation), true); setTransform(QTransform::fromTranslate(0, -speed), true); + + if (!scene()->views().isEmpty()) { + QRect viewRect = scene()->views().at(0)->sceneRect().toRect(); + QTransform fx = transform(); + qreal dx = fx.dx(); + qreal dy = fx.dy(); + while (dx < viewRect.left() - 10) + dx += viewRect.width(); + while (dy < viewRect.top() - 10) + dy += viewRect.height(); + while (dx > viewRect.right() + 10) + dx -= viewRect.width(); + while (dy > viewRect.bottom() + 10) + dy -= viewRect.width(); + setTransform(QTransform(fx.m11(), fx.m12(), fx.m13(), + fx.m21(), fx.m22(), fx.m23(), + dx, dy, fx.m33())); + } + update(); } diff --git a/examples/dbus/remotecontrolledcar/car/main.cpp b/examples/dbus/remotecontrolledcar/car/main.cpp index 9c732fed5ef..81b8cdfc202 100644 --- a/examples/dbus/remotecontrolledcar/car/main.cpp +++ b/examples/dbus/remotecontrolledcar/car/main.cpp @@ -23,7 +23,7 @@ int main(int argc, char *argv[]) view.setRenderHint(QPainter::Antialiasing); view.setBackgroundBrush(Qt::darkGray); view.setWindowTitle(QT_TRANSLATE_NOOP(QGraphicsView, "Qt DBus Controlled Car")); - view.resize(400, 300); + view.resize(view.sizeHint()); view.show(); new CarInterfaceAdaptor(car); diff --git a/examples/dbus/remotecontrolledcar/controller/CMakeLists.txt b/examples/dbus/remotecontrolledcar/controller/CMakeLists.txt index e94d79a6344..acdf1c9efe3 100644 --- a/examples/dbus/remotecontrolledcar/controller/CMakeLists.txt +++ b/examples/dbus/remotecontrolledcar/controller/CMakeLists.txt @@ -16,11 +16,23 @@ qt_add_dbus_interface(controller_SRCS ) qt_add_executable(controller - controller.cpp controller.h controller.ui + controller.cpp controller.h main.cpp ${controller_SRCS} ) +qt_add_resources(controller + PREFIX + "/" + FILES + down.svg + left.svg + right.svg + up.svg + connected.svg + connecting.svg +) + set_target_properties(controller PROPERTIES WIN32_EXECUTABLE TRUE MACOSX_BUNDLE TRUE diff --git a/examples/dbus/remotecontrolledcar/controller/connected.svg b/examples/dbus/remotecontrolledcar/controller/connected.svg new file mode 100644 index 00000000000..a3616b769e3 --- /dev/null +++ b/examples/dbus/remotecontrolledcar/controller/connected.svg @@ -0,0 +1,4 @@ + + + + diff --git a/examples/dbus/remotecontrolledcar/controller/connecting.svg b/examples/dbus/remotecontrolledcar/controller/connecting.svg new file mode 100644 index 00000000000..4097d0b2767 --- /dev/null +++ b/examples/dbus/remotecontrolledcar/controller/connecting.svg @@ -0,0 +1,4 @@ + + + + diff --git a/examples/dbus/remotecontrolledcar/controller/controller.cpp b/examples/dbus/remotecontrolledcar/controller/controller.cpp index f5f0fa88662..ccff2b1743a 100644 --- a/examples/dbus/remotecontrolledcar/controller/controller.cpp +++ b/examples/dbus/remotecontrolledcar/controller/controller.cpp @@ -2,18 +2,47 @@ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause #include "controller.h" +#include +#include using org::example::Examples::CarInterface; Controller::Controller(QWidget *parent) : QWidget(parent) { - ui.setupUi(this); car = new CarInterface("org.example.CarExample", "/Car", QDBusConnection::sessionBus(), this); - connect(ui.accelerate, &QPushButton::clicked, car, &CarInterface::accelerate); - connect(ui.decelerate, &QPushButton::clicked, car, &CarInterface::decelerate); - connect(ui.left, &QPushButton::clicked, car, &CarInterface::turnLeft); - connect(ui.right, &QPushButton::clicked, car, &CarInterface::turnRight); + accelerate = new QPushButton(QIcon(":up.svg"), "", this); + accelerate->setFixedSize(80, 64); + accelerate->setIconSize(QSize(44, 44)); + decelerate = new QPushButton(QIcon(":down.svg"), "", this); + decelerate->setFixedSize(80, 64); + decelerate->setIconSize(QSize(44, 44)); + left = new QPushButton(QIcon(":left.svg"), "", this); + left->setFixedSize(64, 80); + left->setIconSize(QSize(44, 44)); + right = new QPushButton(QIcon(":right.svg"), "", this); + right->setFixedSize(64, 80); + right->setIconSize(QSize(44, 44)); + + status = new QLabel(this); + statusSymbol = new QLabel(this); + statusSymbol->setFixedHeight(24); + + QGridLayout *layout = new QGridLayout(this); + layout->addWidget(accelerate, 1, 1); + layout->addWidget(left, 2, 0); + layout->addWidget(right, 2, 2); + layout->addWidget(decelerate, 3, 1); + + QHBoxLayout *statusLayout = new QHBoxLayout(); + statusLayout->addWidget(status); + statusLayout->addWidget(statusSymbol); + layout->addLayout(statusLayout, 0, 1, 1, 2, Qt::AlignTop | Qt::AlignRight); + + connect(accelerate, &QPushButton::clicked, car, &CarInterface::accelerate); + connect(decelerate, &QPushButton::clicked, car, &CarInterface::decelerate); + connect(left, &QPushButton::clicked, car, &CarInterface::turnLeft); + connect(right, &QPushButton::clicked, car, &CarInterface::turnRight); startTimer(1000); } @@ -21,5 +50,9 @@ Controller::Controller(QWidget *parent) : QWidget(parent) void Controller::timerEvent(QTimerEvent *event) { Q_UNUSED(event); - ui.label->setText(car->isValid() ? tr("connected") : tr("disconnected")); + + static QPixmap connectedIcon = QPixmap::fromImage(QImage(":connected.svg")); + static QPixmap connectingIcon = QPixmap::fromImage(QImage(":connecting.svg")); + status->setText(car->isValid() ? tr("connected") : tr("searching...")); + statusSymbol->setPixmap(car->isValid() ? connectedIcon : connectingIcon); } diff --git a/examples/dbus/remotecontrolledcar/controller/controller.h b/examples/dbus/remotecontrolledcar/controller/controller.h index 4fd18333309..8df4ed2d1e6 100644 --- a/examples/dbus/remotecontrolledcar/controller/controller.h +++ b/examples/dbus/remotecontrolledcar/controller/controller.h @@ -4,7 +4,10 @@ #ifndef CONTROLLER_H #define CONTROLLER_H -#include "ui_controller.h" +#include +#include +#include + #include "car_interface.h" class Controller : public QWidget @@ -18,8 +21,13 @@ protected: void timerEvent(QTimerEvent *event) override; private: - Ui::Controller ui; org::example::Examples::CarInterface *car; + QPushButton *accelerate; + QPushButton *decelerate; + QPushButton *left; + QPushButton *right; + QLabel *statusSymbol; + QLabel *status; }; #endif diff --git a/examples/dbus/remotecontrolledcar/controller/controller.pro b/examples/dbus/remotecontrolledcar/controller/controller.pro index eddcbdefdf7..ce16f21f363 100644 --- a/examples/dbus/remotecontrolledcar/controller/controller.pro +++ b/examples/dbus/remotecontrolledcar/controller/controller.pro @@ -1,9 +1,9 @@ QT += dbus widgets DBUS_INTERFACES += ../common/car.xml -FORMS += controller.ui HEADERS += controller.h SOURCES += main.cpp controller.cpp +RESOURCES += icons.qrc # Work-around CI issue. Not needed in user code. CONFIG += no_batch diff --git a/examples/dbus/remotecontrolledcar/controller/controller.ui b/examples/dbus/remotecontrolledcar/controller/controller.ui deleted file mode 100644 index 379015bf303..00000000000 --- a/examples/dbus/remotecontrolledcar/controller/controller.ui +++ /dev/null @@ -1,64 +0,0 @@ - - Controller - - - - 0 - 0 - 255 - 111 - - - - Controller - - - - 9 - - - 6 - - - - - Controller - - - Qt::AlignCenter - - - - - - - Decelerate - - - - - - - Accelerate - - - - - - - Right - - - - - - - Left - - - - - - - - diff --git a/examples/dbus/remotecontrolledcar/controller/down.svg b/examples/dbus/remotecontrolledcar/controller/down.svg new file mode 100644 index 00000000000..f9a417b65eb --- /dev/null +++ b/examples/dbus/remotecontrolledcar/controller/down.svg @@ -0,0 +1,3 @@ + + + diff --git a/examples/dbus/remotecontrolledcar/controller/icons.qrc b/examples/dbus/remotecontrolledcar/controller/icons.qrc new file mode 100644 index 00000000000..0aad87cf327 --- /dev/null +++ b/examples/dbus/remotecontrolledcar/controller/icons.qrc @@ -0,0 +1,10 @@ + + + connected.svg + connecting.svg + down.svg + left.svg + right.svg + up.svg + + diff --git a/examples/dbus/remotecontrolledcar/controller/left.svg b/examples/dbus/remotecontrolledcar/controller/left.svg new file mode 100644 index 00000000000..12d6420f48f --- /dev/null +++ b/examples/dbus/remotecontrolledcar/controller/left.svg @@ -0,0 +1,3 @@ + + + diff --git a/examples/dbus/remotecontrolledcar/controller/right.svg b/examples/dbus/remotecontrolledcar/controller/right.svg new file mode 100644 index 00000000000..26a39a74caf --- /dev/null +++ b/examples/dbus/remotecontrolledcar/controller/right.svg @@ -0,0 +1,3 @@ + + + diff --git a/examples/dbus/remotecontrolledcar/controller/up.svg b/examples/dbus/remotecontrolledcar/controller/up.svg new file mode 100644 index 00000000000..ea5f1bfcfb8 --- /dev/null +++ b/examples/dbus/remotecontrolledcar/controller/up.svg @@ -0,0 +1,3 @@ + + + diff --git a/examples/dbus/remotecontrolledcar/doc/images/remotecontrolledcar-car-example.webp b/examples/dbus/remotecontrolledcar/doc/images/remotecontrolledcar-car-example.webp index cc2f1de3dca3f07276b48b578cd49be33626f8e0..958b466e9f1f8acb5858c994a4d18f2239bb76ae 100644 GIT binary patch literal 8346 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 Ju6}qS{s#?~s!9L= literal 14484 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 diff --git a/examples/dbus/remotecontrolledcar/remotecontrolledcar.pro b/examples/dbus/remotecontrolledcar/remotecontrolledcar.pro index 2a1fddb500e..dd275b10999 100644 --- a/examples/dbus/remotecontrolledcar/remotecontrolledcar.pro +++ b/examples/dbus/remotecontrolledcar/remotecontrolledcar.pro @@ -1,3 +1,3 @@ TEMPLATE = subdirs SUBDIRS = car \ - controller + controller