TrackSummaryο
Overviewο
The TrackSummary widget is a custom container component for TouchGFX designed to display comprehensive track activity summary information including distance traveled, average pace, elapsed time, and a visual track map. It presents fitness tracking data in a clean, organized layout optimized for wearable device interfaces and activity summary screens.
Purposeο
The primary purpose of the TrackSummary widget is to provide a detailed overview of completed fitness activities in embedded applications. It displays key metrics (distance, pace, time) alongside a visual representation of the track path, making it ideal for post-activity summaries, workout history screens, and performance tracking interfaces in wearable fitness devices.
Componentsο
The widget consists of the following visual components arranged in a structured layout:
Distance Section (top-left):
distanceValue: Distance value in numeric format (e.g., β23.98β)distanceUnits: Distance units (βkmβ or βmi.β)
Average Pace Section (top-right):
avgPaceValue: Average pace in MM:SS format (e.g., β4:46β)avgPaceText: Label βAVG PACEβ
Timer Section (bottom-left):
timerValue: Elapsed time in HH:MM:SS format (e.g., β2:03:44β)timerText: Label βTIMERβ
Track Map Section (bottom-right):
track: PolyLine component rendering the visual track path with rounded line caps
All text elements use Poppins fonts in various weights and sizes for optimal readability on small screens.
Functionalityο
The widgetβs core functionality centers on activity data display and track visualization:
Distance Display: Accepts distance in meters, automatically converts to kilometers or miles based on imperial flag, displays with appropriate precision (1-2 decimal places)
Pace Display: Accepts average pace in seconds per meter, converts to minutes per kilometer/mile, formats as MM:SS
Timer Display: Accepts elapsed time in seconds, formats as HH:MM:SS
Track Visualization: Accepts track map data with coordinate points, renders as a yellow polyline with configurable positioning and scaling
The widget automatically invalidates and redraws text areas when data changes, ensuring immediate visual updates. The track map uses a custom PolyLine component for efficient canvas-based rendering with smooth rounded line caps.
Usage in TouchGFX Designerο
Import the Custom Container Package:
Open TouchGFX Designer
Go to
Custom ContainersβImportSelect the TrackSummary package file (manifest.xml)
Add to Screen:
Drag the TrackSummary custom container from the Custom Containers panel onto your screen
Position as needed (recommended size accommodates all components)
The widget includes TrackSummary and PolyLine custom containers
Configure Properties:
The widget has no configurable properties in Designer beyond standard container properties
All data (distance, pace, time, track map) is controlled programmatically
Usage in C++ Codeο
Include the Header:
#include <gui/containers/TrackSummary.hpp>
Declare in View: In your View class (e.g.,
MainView.hpp):TrackSummary trackSummary;
Initialize in Constructor/Setup:
add(trackSummary); trackSummary.setPosition(x, y, width, height);
Update Distance:
// Set distance in meters, imperial flag for units trackSummary.setDistance(23980.0f, false); // Displays "23.98 km" trackSummary.setDistance(15000.0f, true); // Displays "9.32 mi."
Update Average Pace:
// Set average pace in seconds per meter, imperial flag for units trackSummary.setAvgPace(286.0f, false); // Displays "4:46" (min/km) trackSummary.setAvgPace(286.0f, true); // Displays "7:32" (min/mi)
Update Timer:
// Set elapsed time in seconds trackSummary.setTimer(7424); // Displays "2:03:44"
Update Track Map:
// Set track map data SDK::TrackMapScreen map = getTrackData(); trackSummary.setMap(map);
Complete Example:
void MainView::updateTrackSummary(float distance, float avgPace, uint32_t time, const SDK::TrackMapScreen& map) { trackSummary.setDistance(distance, isImperialUnits); trackSummary.setAvgPace(avgPace, isImperialUnits); trackSummary.setTimer(time); trackSummary.setMap(map); }
Files Includedο
manifest.xml: Package manifestcontent/CustomContainerExport.touchgfx: Designer export definitioncontent/CustomContainerManifest.xml: Container manifest with TrackSummary and PolyLinecontent/texts.xml: Text database with labels, units, and templatesfiles/gui/include/gui/containers/TrackSummary.hpp: Header filefiles/gui/src/containers/TrackSummary.cpp: Implementation filefiles/gui/include/gui/containers/PolyLine.hpp: PolyLine header filefiles/gui/src/containers/PolyLine.cpp: PolyLine implementation filefiles/assets/fonts/: 3 Poppins font variants (Medium, Regular, SemiBold)
Dependenciesο
TouchGFX Framework (minimum version 4.26.0)
PolyLine custom container for track visualization
SDK::TrackMapScreenstructure for track dataApp::Utilsutilities for unit conversions and time formattingStandard TouchGFX container and text components