GSoC 2022 Project: Improving the Calendar Application
Introduction
Hi! I’m Harshit Sharma, a 2nd year BTech Undergrad from India. I’ve submitted a Project Proposal for GSoC 2022 with Project Idea (Improving the Calendar Application) as follows:
I’d be a co-mentor of this GSoC project, if it gets accepted and suggested Harshit to discuss his plans on this forum to get feedback from users. @Harshit_Sharma: you may want to upload the document as PDF somewhere for people having issues with Google docs.
I have several ideas about the various items and mockups that I’ll post in separate comments.
1. Adding "Reminders"
I don’t see the need to have special “Reminders”. What’s the difference to an “Event” but an empty “Place” field?
We can just create differently coloured categories for events and reminders and tasks and whatever.
I do see the need for alarms to be added, but not just for reminders, but any event should get an option to notify the user a specified time before the appointment/reminder/task (let’s call it all ‘event’).
So that all boils down to adding a “Remind me x min/hours/days before the event” and maybe the method of notification (sound, notification, alert, email etc.) to the event manager.
I’m not sure doing the search and presenting the results in an extra window is ideal.
How about doing it all in the main window and just filter the displayed events? That way the user is kept in one single GUI environment and has all the familiar commands and options.
The Profile pop-up lets you choose what profile to display, once multiple profiles is implemented. The pop-up menu will have a checkmarkable list of the existnig profiles.
Same with the Categories
The emphasized textSearch text control filters for the search term.
The Clear button is a shortcut to remove all filters.
The above criteria always relate to what tab is currently active and are applied live. That is, if you’re on the Month tab, you’ll get only the events of this month filtered accordingly. Same for Week and Day.
We’d also need an Agenda view that’ll have all past, present and future events. This is a desirable view mode in any case, not just for the Filter&Search feature. We should add a Year mode as well, come to think of it.
For the search feature, I am not sure adding more stuff to the main window is elegant. It should either be an overlay or a search bar that is attached to the top or bottom edge. Fuzzy searching is welcome too (even better, no one likes to select from 24098 query drop-downs).
It’s just dawning to me that the above filter solution would solve the “multiple profile” feature as well. Instead of completely separated ‘accounts’ we’d still have just one, with an additional “Profile” attribute for all events, just like an “über-category”.
Then you just use the filter to show just one or all profiles.
I am not sure what is an Expando widget, but sounds okay I guess. How about something like this:
Have a search bar or a search button somewhere neat and doesn’t look disruptive (have the keyboard shortcut of course)
Upon typing, it can spawn a modal window that fuzzy searches the contents
Keyboard navigation can jump to the desired event and close the window
If not found, ESC dismisses the modal window
Bonus points for the modal window remembering its position before closing so that it can spawn again at the designated coordinates
I tend to lean to a multi-window approach, because most new software just puts everything into a single window and takes much screen estate. BeOS was a multi-window oriented system just like the Classic Mac OS was. That’s why I love applications like Paladin that gives full control over application widgets and freedom to position them as we choose. Anyways, enough with the philosophical talk.
Hmm… you may be right and I was overthinking it.
I still think the “profile = über-category” approach is good and should be explored. But maybe not as a pop-up menu that claims GUI estate in the main window, but as a regular menu in the menu bar.
The search term filter option could be implemented identically to Tracker’s type-ahead filtering. With the same SHIFT+Space separating search terms and ESC clearing the filter.
Maybe we should pause a bit to give Harshit a chance to digest and comment on our ideas.
Just my last comment on the remaining points in the proposal, as there’s probably not much to discuss:
3. Misc issues
Implement a functionality where users can choose in categories to show. (Issue #27)
That would be covered with the above discussed Filter&Search (my 2) approach.
Add appropriate graphics for common event categories like Birthdays, travel. (Issue #33)
I don’t think this a needed feature, and at the very least something to think about after the bigger fish are fried…
Add preferences to schedule a reminder a certain time(say 30 mins) before the event start time. (Issue #23)
Discussed above with the other “Reminders” (my 1).
The most pressing issue seems to be the im/exporting/syncing of events, as the first commenters on this topic prove. We need a way to exchange events with others, and for a huge number of people that’s syncing with their Google calender and the CalDAV protocol as the first priority.
That way, it will not take as much space on the window, also we can add the Search Results to the EventView itself and add the filter option (for the profiles) there as well.
The currently active tab will be applied live. That is, if you’re on the Month tab, you’ll get only the events of this month filtered accordingly. Same for Week and Day.
I trust you had the UX sorted out, but it would still be nice to see some mock-ups regarding how the filtered results will be displayed on each tab. No rush, you can post them as you build the layout in code.
I imagine getting a text control up there in the menu bar will look quite cramped. It’s not used in the GUI of any Haiku software so it will look alien.
I appreciate that doing it with a text control instead of like Tracker’s type-ahead filter would make the feature easier to discover. But, other than with Tracker windows, we do have quite a lot of empty gray space below the calender view. So maybe go with a regular BTextControl “Search terms:” there after all.
Anyway, how the search terms are gathered is a detail that can be tried out once the actual filtering feature is implemened.
I wouldn’t add “profiles” as additional filter option. We’ll just filter the currently set up view, e.g. the month and the currently selected profile(s). With the profiles as a checkmarkable menu in the menu bar, similar to the “View” menu.
The search term filter looks through event names, places, descriptions and categories.
The filtered event list would look exactly like the unfiltered list, just with only the matching events, ofc. Having a more prominent search term text control will make it obvious that we looking at a filtered list of events. We could also add some symbol to the tab label above, like “⬙ Month ⬙”, unfortunatley, among the thousands of weird symbols, there’s no funnel-symbol common for filters…
Or do additional tinting of the list background, though that’s not easy with the already existing tints for hidden and deleted events and keeping in mind people using custom or dark themes.