GSoC/2016/StatusReports/harishnavnit

From KDE Community Wiki

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 browser 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
  • Data from the publictransport dataengine is now consumable in Qml
    • Needed porting the dataengine to QVariantMap from QVariantHash
  • Designed a simple plasmoid that consumes data coming from the publictransport dataengine and displays data in a timetable format

Screenshots

FItZB97.png OyYFhV7.png

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 of QtScript being obsolete now, it was impossible to pass qt.* extensions to QScriptEngine, rendering Scripted service providers useless as things stand.

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