GSoC/2016/StatusReports/harishnavnit
Title: Plasma PublicTransport
Plasma's Publictransport project in KDE4 was an applet that displayed useful public transport timetable data for your location. This is a handy application to have at it doesn't need internet connectivity, barring the initial setup, and all the data you would otherwise browse in a web browser was just a click away in your desktop.
Over time, the public transport applet developed into a rather large suite, providing useful features like adding multiple locations/service providers, configuring alarms for a stop/vehicle and also provided stop completion when adding a stop name.
This applet is however, incompatible with the latest Plasma frameworks, KDE Frameworks 5(KF5) and Qt5 and porting the applet to Plasma5/Qt5 was the aim of this project.
Work report
During the summer the following were achieved,
- The publictransport dataengine was ported to KF5/Qt5
- Now accessible via
plasmaengineexplorer
- Now accessible via
- Data from the publictransport dataengine is now consumable in Qml
- Needed porting the dataengine to
QVariantMap
fromQVariantHash
- Needed porting the dataengine to
- Designed a simple plasmoid that consumes data coming from the publictransport dataengine and displays data in a timetable format
Screenshots
Challenges faced
Working on this project has been an awesome experience but it has thrown up it's fair share of challenges. Listing some of them below:
- Unfamiliarity with the coding language to be used
- I'm a Qml noob, but had contributed some minor patches in Qml, to the plasma-mediacenter repository in the past.
- Qml being so similar/based on a Javascript engine helped a great deal as I've had some exposure to Javsascript in the past
- Unfamiliarity with the codebase and the application
- Inability to test real-time data for my location
- General Transit Feed Specification(GTFS) data for public transport are not existent to the best of my knowledge, in India
- Even if they did, they'd be rather useless/misleading. Lot of factors determine the arrival/departure time of a vehicle.
- I eventually ended up testing a transit feed for Oslo, Norway.
QtScript
deprecation in Qt 5.5 and onwards- Scripted type service providers made use of
QScriptEngine
. Because ofQtScript
being obsolete now, it was impossible to passqt.*
extensions toQScriptEngine
, rendering Scripted service providers useless as things stand.
- Scripted type service providers made use of
Work to be done
The publictransport applet/plasmoid is near complete at the moment, but still needs some tweaking before it becomes release-ready. Some of them are,
- Replace scripted service providers with GTFS service providers
- This has nothing to do with the applet or the engine code
- Add an option in the plasmoid to download new service providers via GHNS
- Design and usability review
- At this stage, we'd have a minimal release ready plasmoid
- Display meta-data like route stops and delay in a journey
- Implement advanced features like alarm configurations and stop completion
- Port timetablemate to Plasma5.
- timetablemate is a simple editor which provides support for users to add new service providers
References
- kf5 branch of the publictransport repository
- publictransport-applet repository
- Scribbled Notes
- Blog posts