I’m livestreaming Kalendar development!

Today (Wednesday 27th Oct) at 18:00 CEST I will be streaming some Kalendar development live on YouTube and on KDE’s Peertube instance.

KDE Peertube (Kockatoo): https://tube.kockatoo.org/c/clau_cambra/videos

My YouTube channel: https://www.youtube.com/watch?v=etAlv78LaIE

If you are curious about contributing to Kalendar, have questions for me, or just want to hang out, come say hi! 😁

Some big usability improvements and fixes, fixes, fixes — Kalendar devlog 20

In our last week of KDE Review, we have been focused on fixing as many bugs — big and small — as we have been able to. Thank you to everyone who has reported bugs, and thank you even more if you have helped in fixing them!

Besides bug-fixes, we also have some pretty nifty usability improvements in store that should make Kalendar more intuitive, more user-friendly, and more pleasant to use than ever!

Note: Kalendar is still under heavy development. You’re free to poke around and try it out, but it is not yet final software! If you want to contribute to its development, join us in Kalendar’s Matrix room.

Our progress on KDE review

We have continued fixing bugs and making improvements during this week of KDE Review. This Sunday, KDE Review will be over, and (hopefully!) we will have passed! From then on, we will be able to start using KDE’s infrastructure to create actual releases. Exciting!

More exciting is the fact that we will be sharing more details about a beta very, very soon…

But first, this week’s improvements!

The sidebar is now collapsible

!129: Make it possible to collapse the sidebar (Felipe Kinoshita)
Commit 95d6429b: Sidebar collapsed-ness now remembered by Kalendar (Claudio Cambra)

If you don’t need to access your tags and calendars very often, you might find that the sidebar is an unnecessary use of the application window’s horizontal space. Or, maybe you would like to have Kalendar in a small window and find that the sidebar is too wide to see the current calendar view.

That’s why this week we have added a new feature: the sidebar is now collapsible into a thin strip. This thin strip only shows the buttons to switch views, meaning that you can retain access to your most needed actions while taking up the least horizontal space possible.

Kalendar also makes sure to remember which state you put the sidebar in, saving you from having to collapse the sidebar every single time you open up the app.

Note that this only affects the desktop mode; on mobile, the drawer still works as usual.

Improving the week view’s multi and all day view header

!135: Make week view all day header auto-adjust height to incidences and enable manual change of this view’s height (Claudio Cambra)

The week view’s multi and all day view has seen a significant improvement in how it handles its height. Whereas before the header’s size was consistent regardless of the number of incidences it had to show, it now automatically adjusts its height to that of the lines of incidences it shows.

Additionally, you can now click on the bottom edge of the header and drag to vertically resize this header, letting you set this header’s height as you please. A handy little ‘Reset’ button appears in the bottom-left corner when you do so, letting you return it to automatic height.

Making incidence editing/creation easier, faster and more intuitive

!130: Remember the last collection used when adding an incidence (Claudio Cambra)
Commit 1bb8bfd3: Setting an incidence start now makes the incidence end follow it (Claudio Cambra)

Several changes have been merged this week that improve the process of creating and editing incidences.

The first is that Kalendar now remembers the last calendar to which you added an incidence. This means that when you go ahead and add a new task or event, the incidence editor will automatically be set to the last calendar you added an incidence too. This should hopefully save you from having to pick your desired calendar when creating new tasks and events. Kalendar also differentiates between task and event calendars, meaning you won’t, for example, accidentally add an event to your last used task calendar — your last used event calendar will be pre-selected.

We have also reworked the way that time selection works for incidences. Before, start and end times were selected completely independently. This often lead to warnings about end times preceding start times, even though you hadn’t even had a chance to select an end time. Now, changing the start time of an incidence will automatically move the end time too, saving you from accidental errors. It should also make it easier to change the time of an event if you, for example, selected the wrong date, since upon changing the start date the end date will be changed too. The end date and time is always changed in accordance to the prior difference between start and end time, so if you had selected an incidence to start at 4 and end at 5, if you change the start time to 2 the incidence will now end at 3.

Improving the time picker on desktop

!131: Time pickers now respond to mouse scroll, making them more intuitive to use on desktop (Claudio Cambra)

Another time-related improvement relates to the time picker, used to select times in the incidence editor. This component can now be used with the mouse scroll wheel — meaning if you preferred to use the picker rather than type into the time field, this will now be a lot quicker and easier.

Date navigation in the menu bars

!128: Add a go menu to window and global menus (Claudio Cambra)

The menu bars now have a new menu: the ‘Go’ menu. This menu contains several entries that should make date navigation more accessible.

We have put the standard ‘Backwards’ and ‘Forwards’ actions here, as you would expect, which moves the different date views forwards or backwards one screen — whether this is a month in the month and schedule views, or a week in the week view. Also included is an action which lets you go back to today.

Additionally, we have added an action that brings up the date changer popup. We realised it’s not immediately obvious that the views’ date title is a button that brings up the date changer. The new ‘To Date…’ action in the ‘Go’ menu provides a more discoverable way to bring up the date changer, making Kalendar slightly more usable.

Pressing escape now dismisses dialogs and overlay elements

!122: Pressing Escape now closes dialog windows, overlay sheets, and incidence info (in that order) (Claudio Cambra)

Power users always request quicker ways to do things — to do things, open things, and close things. Well, now we’re making closing things a lot quicker: the Escape key now closes dialog windows, overlay sheets, and drawers. So you can quickly dismiss an incidence, or the incidence editor, or the delete confirmation sheet.

Use real windows on desktop for completed tasks and for picking a quick task’s calendar

!132: Use real window instead of OverlaySheet for tasks (Carl Schwan)

In the tasks view, opening the completed tasks on the desktop now brings up a separate window instead of an integrated overlay sheet. This should make this window more manipulable on the desktop, while retaining the sheet on mobile.

This also applies to the calendar selection dialog invoked when adding a quick task in the tasks view.

Improved link handling in the incidence information drawer

!125: Display hovered link in the bottom left (Carl Schwan)

Links are now easier to handle than they were before. When you hover above a link in the incidence information drawer — whether this is an attendee’s email address, a website in the description, or the URL for a meeting — you can now see the link’s URL in the bottom-left of the Kalendar window, just like you would in your browser.

Additionally, you can now drag-click and highlight (and then copy and paste) links too.

Bug-fixes and other changes

Commit b851709e: Fix typo in CMakeLists (Fabian Vogt)
Commit a19114fa: Fix multiple top-level definitions of enum Roles breaking ODR (Fabian Vogt)

  • Fixed backend typos and breakage due to typos in CMakeLists and badly defined Enum

Commit 7b48c205: Fixed touch on mobile, broken by deselectormousearea (Claudio Cambra)

  • Fixed view navigation and incidence selection on mobile

Commit c5213a06: Capitalization fixes (Justin Zobel)

  • Capitalisation of labels in settings now match rest of app

Commit 374f3920: Fix menu layout consistency (Justin Zobel)

  • Menu bar toggle is now above configure button in both hamburger and menu bar menus

Commit 60f68793: Deboldened Summary label in incidence editor (Claudio Cambra)

  • Deboldened the ‘Summary’ label in the incidence editor. This prevents borkage in the formatting of this label after pressing ‘Alt’ key.

Commit 5d94e5c0: Weekdays fixed in date picker (Claudio Cambra)

  • Week day labels now appear in the date picker everywhere

Commit a3b95a7b: Week view incidence squares now clip and font becomes small when space restricted (Claudio Cambra)

  • Incidences in the week view now have small labels instead of having text clipping through the rectangle

Commit ae746ce5: Fixed touch scroll on weekview (Claudio Cambra)

  • Week view vertical scroll now works correctly on mobile

Commit 56321a1d: Fixed hour label misalignment in different locales (Claudio Cambra)

  • Week view should now start from 00:00 regardless of what time locale is set on the system

Commit 5489bb9c: Fixed crashing when switching views and about page open (Claudio Cambra)

  • Switching views when the about page is open should no longer cause Kalendar to crash

Commit 69665e7b: Fixed week view incidence delegate binding loop for property isTinyHeight (Claudio Cambra)
Commit e187993a: Fixed TodoTreeView todoItemContents width property binding loop (Claudio Cambra)

  • Fixed binding loops, which would create masses of warnings in console output

Commit 5f1b9216: Fixed alignment of labels in tasks without occurrence details in tasks view (Claudio Cambra)

  • Labels in the tasks view should now be vertically centred when there is no detail about due times or recurrence

Commit 17527867: Make “Month View Settings” separator consistent with other separators (Felipe Kinoshita)

  • Separator for ‘Month View Settings’ section in view settings now consistent with other section separators

Commit a23778c3: Remove unused “getCurrentView” function (Felipe Kinoshita)

  • Removed an unused function in sidebar code

Commit b36f1274: Fixed sidebar behaviour on desktop when not widescreen (Claudio Cambra)
Commit 248a22e6: Fixed super glitchy sidebar collapse behaviour on window resize (Claudio Cambra)
Commit 9d99eb41: Fixed drawer on mobile when wide (Claudio Cambra)

  • A battery of fixes for the newly merged collapsible sidebar. Long story short: glitches fixed, behaviour is as you would expect across different devices and window sizes.

Coming up next

Is there anything you’d like to see added to Kalendar? Get in touch! I’m @clau-cambra:kde.org on Matrix.

Blasting bugs and passing reviews — Kalendar devlog 19


First of all: happy birthday to KDE! If you hadn’t heard, KDE is now 25 years old (which means that KDE is 3 years older than I am — oof). I first started using KDE (3) on Mandrake after, out of the blue, my dad decided to nuke our family computer’s Windows 95 installation. I was 3 at the time, and very angry at the fact that I would no longer be able to play Monster Truck Madness. Now, here we are, almost 20 years later!

Without the efforts of the KDE community and its amazing software, Kalendar wouldn’t exist. We depend on so many different things — Kirigami, Akonadi, the KFrameworks, and more — that without two and a half decades of prior efforts from other community members, this application just wouldn’t exist. So, from myself and from everyone who has been involved in creating Kalendar — thanks!!

Back to Kalendar. Last Sunday, we submitted Kalendar for KDE Review… and we received our first review! That has meant fixing bugs, improving UI stuff, and more. Seriously — scroll to the bugfix section and check it out. As always, though, we have some new features to show off too.

Note: Kalendar is still under heavy development. You’re free to poke around and try it out, but it is not yet final software! If you want to contribute to its development, join us in Kalendar’s Matrix room.

Our progress on KDE review

Last Sunday, we received our first round of feedback for KDE Review (thanks Albert!) and have spent this week addressing the issues brought up there. These were mainly technical, but we also had some useful UI feedback which we have taken on board and addressed (and are included in this update post).

You can follow the KDE Review process for Kalendar on the mailing list, or keep tuning in to the weekly updates, where we will let you know how things are going.

Tweaks to Kalendar’s logo

Every week we tweak and adjust the UI to make sure it is as good as it can be. The same goes for our logo 😉

Icon Kalendar

After revealing our new logo last week, we had some feedback that the large number of small squares would be difficult to distinguish as a small icon. We therefore have tweaked the logo to have just four, larger squares rather than the 6 it previously had, which should make them much easier to distinguish at the small size of an icon.

We are now on apps.kde.org and plasma-mobile.org!

Kalendar now shows up on both apps.kde.org and plasma-mobile.org. You can find find information about our app, our repository, and more in these sites.

Improved support for mirrored layouts

!117: Layout mirroring support for menubar (Carl Schwan)


Kalendar should now adapt better to languages and locales where the layouts are right-to-left thanks to some changes in how the the relevant components assign actions to action slots. This should make Kalendar’s layout more logical when using it in right-to-left mode!

Resizeable incidence information drawer!

!86: Make it possible to resize the right drawer (Carl Schwan)

Since we first introduced the incidence information drawer, we thought it would be nice to make it resizeable on the desktop and to let the user decide how much space it should take up. Well, we now have this feature, and it works pretty dang well!

The set size of the incidence information drawer is remembered so it will remain consistent once it is set by you, no matter which incidence you open or how many times you have closed Kalendar.

Improved date picker

!119: Rewrite date picker and unify infinite calendar view models (Claudio Cambra)

We have completely rewritten the date picker. Why? Well, to improve it!

Our previous iteration was buggy and difficult to use on mobile, owing to the fact that you had to interact with tiny buttons up in the picker’s header. Now, the datepicker is bug-free, and you can interact with it as you would expect to interact with any of Kalendar’s other calendar views.

The month, year, and decade views are all infinitely swipeable, letting you select any date you would like by simply swiping to it and tapping it. You can also easily return to the current day by tapping the ‘Today’ button. We have made sure to retain the same design as Plasma’s Calendar widget, which should make this picker feel very familiar.

We have also submitted a merge request to include this date picker in the Kirigami Addons package, which hopefully means that it will be easily usable by other KDE app developers in the near future!

Easy deselection of incidences by clicking on empty space

!121: Deselect incidence upon clicking on empty space (Claudio Cambra)

You can now easily deselect an incidence (and, by extension, close the incidence information drawer) on the desktop by clicking on empty space within your current calendar view. This makes Kalendar behave more as you would expect it to, and help you easily dismiss the drawer when you don’t want it to be there.

Bug-fixes and other changes

Pretty sure this is one of our longest bug-fix sections yet…

Commit 5864c59e: Fixed incidence editor not letting you save edited task when clicking edit in incidence info from tasks view (Claudio Cambra)

  • The gigantic commit message explains exactly what was fixed: if you went to click ‘edit’ in the incidence information drawer after selecting a task in the tasks view, it wouldn’t let you save the changes to the task. Now fixed.

Commit 4fe0bd89: Full reuse compliance (Carl Schwan)

  • Kalendar now has full REUSE compliance and we added a bunch of legal-related files and headers.

Commit 5bf9ce59: Fix sort read (Claudio Cambra)
Commit 1ccf7700: Fix sorting in tasks view and ensure that when sorting by values, null values are always at bottom (Claudio Cambra)
Commit c6bdd120: More sort fixes (Claudio Cambra)

  • Fixed numerous issues with sorting in the tasks view. Sorting should now behave as expected: null values are always at the bottom, with non-null values being sorted in the expected order above them.
  • Sort options are now correctly saved and restored after closing the application.

Commit cfa95dd9: Add KLocalizedString::setApplicationDomain(kalendar) (Claudio Cambra)

  • Kalendar now properly sets KLocalizedString domain, needed to have any translations at all (!!)

Commit bf476940: Fixed kf.i18n: ‘0 instead of 1 arguments to message…’ error (Claudio Cambra)

  • Opening an incidence no longer outputs a console error about i18n arguments

Commit 6f3b5348: TitleDateButton now uses i18n based standaloneMonthName month-year strings (Claudio Cambra)
Commit 37536b54: Date picker no uses standaloneMonthName (Claudio Cambra)

  • Various parts of Kalendar now use i18n based standaloneMonthName month-year strings to avoid risk of ‘of Month’ strings in certain languages (e.g. of November 2019 in the page title)

Commit edcc6bb6: Moved regex out of AttendeeStatusModel constructor loop (Claudio Cambra)

  • Improved efficiency of AttendeeStatusModel constructor, which should improve performance a little (though admittedly not a huge amount)

Commit aaadf2af: Fixed property warnings (Claudio Cambra)

  • Compiling Kalendar should no longer result in several warnings regarding Q_PROPERTY properties of a number of classes

Commit 9602d477: Remove not needed kpackage dependency (Carl Schwan)

  • Removed an unneeded dependency, reducing the number of required packages to install for Kalendar

Commit a0672920: Fix deletion of attachments from incidence editor (Claudio Cambra)

  • Deleting attachments now works again

Commit 1a198c46: Todo page now loads correctly when opening Kalendar (Claudio Cambra)

  • The todo page now loads correctly when opening Kalendar, instead of getting stuck in a half-loaded state and without correct sorting.
  • Additionally, adding a new task should make it appear in the correct place according to the current sorting.

Commit 97f6f42c: Fixed some error messages (Claudio Cambra)
Commit c4433124: Fixed some more error messages (Claudio Cambra)

  • Fixed a bunch of QML errors regarding undefined/null variables

Commit ac6fbac2: Links in incidence info now have pointy hand cursor (Claudio Cambra)

  • Hovering above a link — whether it is a location website, an attendee’s email, or something else — should now change your cursor into a pointing hand cursor, as you would expect

Commit 9ebc2bc6: Make IncidenceEditor’s description text area wrap it’s text (Felipe Kinoshita)

  • The incidence editor’s description text area no longer expands in width before wrapping its contained text

!120: Add vendored TreeView components (Claudio Cambra)

  • This is an important change: you no longer need to have Kirigami Addons installed in order to run Kalendar. This has been necessary for passing KDE Review as Kirigami Addons is still technically an unstable project, and something we cannot depend on until it is considered stable. This should make it a lot easier for you to test and run Kalendar on your own system.

Commit 2547d957: Remove minor build warning (Carl Schwan)

  • This eliminates yet another compilation warning.

Commit 1df8a16a: Fix not being able to interact with task tree view (Carl Schwan)

  • This eliminates a regression caused by MR 121 which prevented you from clicking on certain parts of the task view’s tree list.

Commit edfcf7a5: Fix QML warning in task view (Carl Schwan)

  • Fix warnings caused by grid layout used by incidence delegates in the tasks tree view

Commit 149b594c: Fixed leak in AttendeeStatusModel constructor (Claudio Cambra)

  • Fixed Valgrind issue caused by AttendeeStatusModel constructor

Coming up next

Is there anything you’d like to see added to Kalendar? Get in touch! I’m @clau-cambra:kde.org on Matrix.