[GSoC 2017] Calendar Application: Final Report

Blog post by AkshayAgarwal007 on Mon, 2017-08-28 11:55

Hello Everyone!

Google Summer of Code 2017 is off to an end and in this report I'll be summarizing the work done throughout the summer.

Introductory blog post

Source code: https://github.com/HaikuArchives/Calendar

List of all blog posts: https://www.haiku-os.org/blog/akshayagarwal007/

List of all Commits:
https://github.com/HaikuArchives/Calendar/commits/master
https://github.com/haiku/haiku/commits?author=AkshayAgarwal007

What has been completed

Calendar App

The Calendar app currently has the following features implemented:

  • Create, modify and delete events.
  • Generate notifications for events.
  • Display Day Calendar view.
  • Event categorization.
  • Set all day long events.
  • Fetching events from Google Calendar using Google Calendar API.
  • SQLite backend for storing events.
  • Setting preferences like 'First day of week', 'Display week number in Calendar'.
  • App localization: DateTime strings are localised and updates with locale preferences changes but GUI string still needs to be localised.

What's left to do (After GSoC)

  • Localizing the app's GUI strings
  • Implement month view
  • Fix adding/updating events to Google Calendar

There are many features that a Calendar app in the present world requires and all of it couldn't be completed in the summer. Apart from the 'future features' which I already mentioned in the proposal, throughout the course of the work I came across many features (based on discussions throughout the project and suggestions on my blog posts) which the app would require and I opened issues for the same in the repo so that they don't get lost.

Other work

Apart from working on the Calendar App I also submitted patches to Haiku mostly involving the Locale Kit.

  • Implemented a Relative DateTime formatter. This takes in a time_t value and gives a formatted string such as '2 hours ago', 'in 2 hours', relative to the current time.
    https://dev.haiku-os.org/ticket/13679
  • <li> Wrote tests for BRelativeDateTimeFormat, fixed bugs in tests for
    BDateFormat/BDateTimeFormat, and added test cases for changes I made in
    BDurationFormat. In the process I got familiar with how unit testing is
    done in Haiku.<br>
    <a href="https://dev.haiku-os.org/ticket/13682">
    https://dev.haiku-os.org/ticket/13682</a><br>
    <a href="https://dev.haiku-os.org/ticket/13684">
    https://dev.haiku-os.org/ticket/13684</a><br>
    <a href="https://dev.haiku-os.org/ticket/13685">
    https://dev.haiku-os.org/ticket/13685</a></li>
        
    <li> I worked on parts of the existing codebase to make use of locale kit
    for doing relative datetime formatting. For e.g the Web+ downloads Window
    doesn't make use of it completely. This is still under progress.<br>
    <a href="https://dev.haiku-os.org/ticket/13686">
    https://dev.haiku-os.org/ticket/13686</a></li>
    
    <li> Fix style formatting issues in BTimeUnitFormat/BDurationFormat.</li>
    
    <li>Highlight the current system date in the Calendar View.<br>
    <a href="https://dev.haiku-os.org/ticket/13592">
    https://dev.haiku-os.org/ticket/13592</a></li>
    
    <li> Implement functions to get localized long/short dayofweek name and short
    month name in BDateFormat. Some other improvements that is required also
    came along is discussions which I would also be working on. This is still
    under progress.<br>
    <a href="https://dev.haiku-os.org/ticket/13606">
    https://dev.haiku-os.org/ticket/13606</a></li>
    

All my commits can be viewed here at a glance. https://github.com/haiku/haiku/commits?author=AkshayAgarwal007

Plans after GSoC

  • Fix adding/updating events to Google Calendar.
  • Work on the features I have opened as issues in the repo and maintain the code.
  • Complete the work left in the pending trac tickets. Work on improving the locale kit and pick some other areas concerning the Haiku source, and try to contribute to Haiku regularly.

Learnings

  • C++ and coding skills in general have improved.
  • Git skills have improved.
  • Communications skills: Convey myself to the mentors properly.
  • Localization and Internationalization.
  • Good indentation practices while coding.
  • Getting familiar with operating system internals.

Note of Thanks

My sincere thanks to my mentors Scott McCreary and Kacper Kasper for their support and help throughout the project. Special thanks to Scott McCreary and Adrien Destuges to help me out in every issue I faced right from day one(GSoC proposal period) from getting Haiku installed to be able to complete the project. I'm very grateful to the Haiku members: Waddlesplash, Humdingerb, Brian and everyone there, community members and also my fellow GSoC mates for their help throughout.

Thanks for reading.