December/January in KDE Itinerary
A lot has happened since the last update on KDE Itinerary, with the transition to Qt 6 finally completed, public transport coverage extended to more countries, a new journey map view and many more fixes and improvements.
New Features
Journey map view
Mathis added a map view to the journey details page, so besides a list view of all stops you can now alternatively look at the route of a bus or train trip on a map as well.
Clicking on intermediate or final stops will show additional information such as the platform and provides access to the detailed station map.
Extended public transport coverage
Jonah has put quite some effort into filling the gaps in public transport data coverage in Europe, adding support for the following providers to the KPublicTransport library:
- Pasažieru vilciens (Latvia)
- LTG Link (Lithuania)
- Željeznički prevoz Crne Gore (ŽPCG) (Montenegro)
- Srbijavoz (Serbia)
This not only benefits Itinerary but also KTrip.
Swapping arrival and departure location
A small but often requested convenience feature for the journey search has been added, the ability to swap arrival and departure stations with a single action.
Infrastructure Work
Qt 6 port
Itinerary and all its dependencies finally completed the switch to Qt 6 in December. Despite the lengthy preparations for this a number of issues were only uncovered in the final steps of that process:
- Kirigami’s new way of displaying context actions clashes with Itinerary’s custom navigation bottom bar.
- Subtle changes in
QVariantcomparison behavior resulted in excessive timeline updates. - Various default values in Kirigami and/or the Qt Quick Controls styles changed
affecting list elements,
ListViewclipping, dialog/overlay placements, etc. - There’s a behavior change for file dialog file type filters that lead to several support file types not being selectable on Android.
- Behavior changes in how Kirigami handles non-square icons required changes in how we display public transport line icons.
There’s also immediate benefits from this of course:
- Itinerary now uses the Breeze style on Android, which not only looks better but also reduces differences with the Linux version simplifying development and testing.
- Qt 6 allowed us to optimize the initial data loading by skipping expensive CBOR/JSON compatibility checks.
Qt 6 based Flatpak and Android nightly builds
Users of the nightly builds already get the new Qt 6 based version. For Android that has been a seamless switch, Flaptpaks moved to a new location though:
flatpak install https://cdn.kde.org/flatpak/itinerary-nightly/org.kde.itinerary.flatpakref
With Itineray being one of the more complex Android apps of KDE switching that to Qt 6 also exposed a number of remaining issues in the entire stack:
- Temporary
content:URIs like used when sharing attachments from an email program to Itinerary were not readable by Qt anymore (fixed in Qt). - Timezone lookup by IANA id performance is rather poor with Qt 6, which affects startup time if you have lot of data in Itinerary (partially worked around, fix for Qt pending).
- Reporting of flipped video frames in Qt Multimedia now works correctly on Android, resulting in a previous workaround for that causing upside-down barcode geometries (workaround removed in KF::Prison).
- Qt Multimedia camera access crashed when being used after an app had been suspended (fixed in Qt).
- Kirigami Addon’s new date and time picker didn’t correctly use Android’s native controls (fixed in Kirigami Addons).
- Remaining uses of Qt5Compat and
Qt.labs.platformcomponents in Kirigami and Kirigami Addons were removed, decreasing the APK size noticeably.
All of this also benefits other KDE Android apps.
Accessibility
Motivated by getting automated UI tests set up using the AT-SPI Selenium driver, interaction with Itinerary using the accessibility interface has been improved in many places. Besides changes in the application itself this has also resulted in improvements in Kirigami and Kirigami Addons and thus helping all apps using those.
There’s more work to do though, around combo boxes and the date picker for example.
And even though this is not yet integrated in the CI pipeline, the first few automated tests created that way have already caught regressions in the application and in the Kirigami framework.
OSM raw data tile server update
The fixes for OSM raw data tile server powering e.g. Itinerary’s train station maps addressing node order loss on directional lines as well as improving tile generation performance have now finally been deployed on maps.kde.org. This unblocks work on rendering directional features, and it’s also crucial for the investigations around routing mentioned below.
Indoor map routing
As mentioned in my report from 37C3 we now have a very promising looking approach for routing in our train station maps. Compared to “outdoor” routing this is challenging as this has to work with areas rather than graphs, and on multiple floors.
Implementation of a proof of concept continued and is meanwhile running integrated in our indoor map demo application.
Fixes & Improvements
Travel document extractor
- New or improved travel document extractors for Accor, B&B Hotels, BlaBlaBus, Deutsche Bahn, Egencia, Emirates, Hilton, Iberia, IRCTC, Lufthansa, Meininger, NS, Pretix, SNCB, SpiceJet.
- Improved generic extractor for RCT2 tickets crossing the end-of-year boundary.
- Improved generic extractor for schema.org JSON-LD or Microdata events.
- Fix crash on action-less PDF links.
- Improved support for full-day events.
- Added schema.org annotations on foss.events making events from there directly importable.
All of this has been made possible thanks to your travel document donations!
Itinerary app
- Improved support for actions defined by providers via schema.org annotations, such as registering for an event or reserving a table at an restaurants.
- Onboard live data is now merged into the current journey state when available.
- Automatically pick an appropriate text color for Apple Wallet passes that don’t specify a text color themselves but use a background image. This fixes passes sometimes being rendered unreadable under these conditions.
- Fix manually selecting transfers in the timeline.
- Request camera runtime permissions on Android when using the barcode scanner.
- Move loading indicator out of the way once the first results of a public transport search are displayed.
- Fixed public transport stop searches after changing the country combo box.
- Fixed seat section in train page not sometimes showing up correctly.
- Added average speed statistics on the journey page.
- Fixed import of large backups on Android.
FOSDEM
If you are at FOSDEM tomorrow or the day after don’t miss to meet us at the KDE stand, in building H this time!
How you can help
Feedback and travel document samples are very much welcome, as are all other forms of contributions. The KDE Itinerary workboard or the more specialized indoor map workboard show what’s on the todo list, and are a good place for collecting new ideas. For questions and suggestions, please feel free to join us in the KDE Itinerary Matrix channel.