From 9466290ff39ec82559b91af35070955c74b13cc0 Mon Sep 17 00:00:00 2001 From: "Jasper v. Blanckenburg" Date: Wed, 24 May 2023 00:44:32 +0200 Subject: [PATCH] Make debug view scrollable --- .../debugview_screen/DebugViewViewBase.hpp | 17 +++++++++-- .../debugview_screen/DebugViewViewBase.cpp | 27 +++++++++++++++-- .../gui/debugview_screen/DebugViewView.hpp | 7 +++++ .../src/debugview_screen/DebugViewView.cpp | 23 +++++++++++++++ TouchGFX/steering-wheel.touchgfx | 29 +++++++++++++++++-- 5 files changed, 95 insertions(+), 8 deletions(-) diff --git a/TouchGFX/generated/gui_generated/include/gui_generated/debugview_screen/DebugViewViewBase.hpp b/TouchGFX/generated/gui_generated/include/gui_generated/debugview_screen/DebugViewViewBase.hpp index e13daf0..7ed9ef1 100644 --- a/TouchGFX/generated/gui_generated/include/gui_generated/debugview_screen/DebugViewViewBase.hpp +++ b/TouchGFX/generated/gui_generated/include/gui_generated/debugview_screen/DebugViewViewBase.hpp @@ -8,7 +8,7 @@ #include #include #include -#include +#include #include #include #include @@ -24,6 +24,19 @@ public: { // Override and implement this function in DebugView } + virtual void handleKeyEvent(uint8_t key); + + /* + * Virtual Action Handlers + */ + virtual void scrollUp() + { + // Override and implement this function in DebugView + } + virtual void scrollDown() + { + // Override and implement this function in DebugView + } protected: FrontendApplication& application() { @@ -34,7 +47,7 @@ protected: * Member Declarations */ touchgfx::Box __background; - touchgfx::ScrollList list; + touchgfx::ScrollWheel list; touchgfx::DrawableListItems listListItems; touchgfx::Line line1; touchgfx::PainterRGB565 line1Painter; diff --git a/TouchGFX/generated/gui_generated/src/debugview_screen/DebugViewViewBase.cpp b/TouchGFX/generated/gui_generated/src/debugview_screen/DebugViewViewBase.cpp index 393645d..d8c1f41 100644 --- a/TouchGFX/generated/gui_generated/src/debugview_screen/DebugViewViewBase.cpp +++ b/TouchGFX/generated/gui_generated/src/debugview_screen/DebugViewViewBase.cpp @@ -17,14 +17,14 @@ DebugViewViewBase::DebugViewViewBase() : list.setPosition(15, 15, 450, 290); list.setHorizontal(false); list.setCircular(true); - list.setEasingEquation(touchgfx::EasingEquations::backEaseOut); + list.setEasingEquation(touchgfx::EasingEquations::linearEaseOut); list.setSwipeAcceleration(10); list.setDragAcceleration(10); list.setNumberOfItems(1); - list.setPadding(0, 0); - list.setSnapping(false); + list.setSelectedItemOffset(0); list.setDrawableSize(26, 0); list.setDrawables(listListItems, updateItemCallback); + list.animateToItem(0, 0); add(list); line1.setPosition(15, 15, 1, 290); @@ -69,6 +69,27 @@ void DebugViewViewBase::setupScreen() } } +void DebugViewViewBase::handleKeyEvent(uint8_t key) +{ + if(104 == key) + { + //ScrollUp + //When hardware button 104 clicked call virtual function + //Call scrollUp + scrollUp(); + + } + + if(108 == key) + { + //ScrollDown + //When hardware button 108 clicked call virtual function + //Call scrollDown + scrollDown(); + + } +} + void DebugViewViewBase::updateItemCallbackHandler(touchgfx::DrawableListItemsInterface* items, int16_t containerIndex, int16_t itemIndex) { if (items == &listListItems) diff --git a/TouchGFX/gui/include/gui/debugview_screen/DebugViewView.hpp b/TouchGFX/gui/include/gui/debugview_screen/DebugViewView.hpp index 7c5993f..dd5113a 100644 --- a/TouchGFX/gui/include/gui/debugview_screen/DebugViewView.hpp +++ b/TouchGFX/gui/include/gui/debugview_screen/DebugViewView.hpp @@ -13,9 +13,16 @@ public: virtual void listUpdateItem(DebugViewLine &line, int16_t itemIndex) override; + void scrollUp() override; + void scrollDown() override; + void updateFieldValues(); protected: +private: + void updateScrollIndex(size_t index); + + size_t scrollIndex; }; #endif // DEBUGVIEWVIEW_HPP diff --git a/TouchGFX/gui/src/debugview_screen/DebugViewView.cpp b/TouchGFX/gui/src/debugview_screen/DebugViewView.cpp index 54c4cf6..a160fa3 100644 --- a/TouchGFX/gui/src/debugview_screen/DebugViewView.cpp +++ b/TouchGFX/gui/src/debugview_screen/DebugViewView.cpp @@ -32,3 +32,26 @@ void DebugViewView::updateFieldValues() { el.updateFieldValues(); } } + +void DebugViewView::scrollUp() { + if (scrollIndex == 0) { + updateScrollIndex(list.getNumberOfItems() - 1); + } else { + updateScrollIndex(scrollIndex - 1); + } +} + +void DebugViewView::scrollDown() { + updateScrollIndex((scrollIndex + 1) % list.getNumberOfItems()); +} + +void DebugViewView::updateScrollIndex(size_t index) { + scrollIndex = index; + if (scrollIndex == 0) { + // Just animating to 0 looks very broken when scrolling forwards. Animating + // to numItems looks good in both directions. + list.animateToItem(list.getNumberOfItems(), 2); + } else { + list.animateToItem(scrollIndex, 2); + } +} diff --git a/TouchGFX/steering-wheel.touchgfx b/TouchGFX/steering-wheel.touchgfx index 132785b..abfb160 100644 --- a/TouchGFX/steering-wheel.touchgfx +++ b/TouchGFX/steering-wheel.touchgfx @@ -854,7 +854,7 @@ "CanvasBufferSize": 7200, "Components": [ { - "Type": "ScrollList", + "Type": "ScrollWheel", "Name": "list", "X": 15, "Y": 15, @@ -863,7 +863,7 @@ "IsCircular": true, "ItemTemplateName": "DebugViewLine", "NumberofItems": 1, - "Easing": "Back", + "Easing": "Linear", "EasingOption": "Out", "SwipeAcceleration": 1.0, "DragAcceleration": 1.0 @@ -917,7 +917,30 @@ "LineEndingStyle": "Round" } ], - "Interactions": [] + "Interactions": [ + { + "InteractionName": "ScrollUp", + "Trigger": { + "Type": "TriggerPhysicalButtonClicked", + "ButtonKey": 104 + }, + "Action": { + "Type": "ActionCustom", + "FunctionName": "scrollUp" + } + }, + { + "InteractionName": "ScrollDown", + "Trigger": { + "Type": "TriggerPhysicalButtonClicked", + "ButtonKey": 108 + }, + "Action": { + "Type": "ActionCustom", + "FunctionName": "scrollDown" + } + } + ] }, { "Name": "VehicleConfig",