[GSoC 2017] Calendar Application: Final Report
Google Summer of Code 2017 is off to an end and in this report I'll be summarizing the work done throughout the summer.
Source code: https://github.com/HaikuArchives/Calendar
List of all blog posts: https://www.haiku-os.org/blog/akshayagarwal007/
What has been completed
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.
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.
- 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.
- 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.
- Fix style formatting issues in BTimeUnitFormat/BDurationFormat.
- Highlight the current system date in the Calendar View.
- 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
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.
- 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.
- Repository Update
- Haiku monthly activity report - 08/2018
- R1/beta1 release plans - at last
- [GSoC 2018: SDHCI MMC Driver]: Week #11
- [GSoC 2018: SDHCI MMC Driver]: Week #10
- Haiku monthly activity report - 07/2018
- [GSoC 2018 - TrackGit] Progress Report 13
- [GSoC 2018: SDHCI MMC Driver]: Week #9
- [GSoC 2018 - TrackGit] Progress Report 12
- [GSoC 2018 - TrackGit] Progress Report 11