Blasting bugs and passing reviews — Kalendar devlog 19

https://25years.kde.org/assets/img/banner_blue_2500.webp

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)

image

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.

Getting ready for KDE review — Kalendar devlog 18

Good news! We have spent time this week preparing Kalendar for KDE Review — the two-week process that new KDE applications are subjected to before initial release. Don’t worry, we’re going to go over what that means in a second. We will also go through some of the refactoring, tweaking, and boatload bug-fixing that has been happening in anticipation for KDE Review. Oh… and our new logo!

That doesn’t mean we’ve stopped working on new features, however. Far from it! We have some new cool stuff to show off, including timezone management and expanded tag filtering capabilities.

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.

What is KDE Review?

Before an application is released as a beta or stable version under the KDE umbrella, they must go through a two-week review process. This process involves experienced members of the KDE development community looking through the project and ensuring that it is up to the standard expected from KDE software. This also involves administrative tasks such as ensuring that the software is properly licensed.

There is a detailed wiki page on the KDE community wiki that goes into more detail about this process.

As preparation for this process, we have been making sure that Kalendar is up to scratch. It also means we have finally decided on a logo!

Kalendar’s new logo!

We asked the talented folks in KDE’s Visual Design Group if they could come up with a logo for Kalendar. We received three!

Unfortunately, we could only select one. And though we liked all of the entries, we liked one the most:

https://kde.modular.im/_matrix/media/r0/download/matrix.org/gLohnasRXstaURTDJIXGpxJC

This is Kalendar’s logo! With a slick gradient, a subtle K motif, and a very breezy design, we though it was perfect for the app. A massive thanks to Áron Kovács for creating it and for taking our suggestions on board. We love it!

We also loved this entry from Andy Betts. The tick going through the K was super ingenious and the bright colours made for a cheerful logo. Thank you, Andy!

https://kde.modular.im/_matrix/media/r0/download/kde.org/30c60f43a1993c8210fbf5e4af2e55b222c2d437

This last runner-up was submitted by Bugsbane. Simple and clear, this was a great logo. Thank you, Bugsbane!

https://kde.modular.im/_matrix/media/r0/download/matrix.org/HjZUEiAKsjgmmiLPLHrMZjiw

Now, onto features!

Set incidences’ timezones

!109: Add ability to pick incidence timezone (Claudio Cambra)

Kalendar’s incidence editor now lets you set an incidence’s timezone. This can be changed using a simple combo box that contains all the timezones you will need. While you are editing the incidence, you will be able to set the time and date as if it were in the selected timezone, and when you go back to Kalendar’s incidence views, you will be able to see these incidences’ dates and times in your own timezone. This will be handy if you travel a lot, or if must arrange meetings with people overseas!

Add filtering capabilities to all views

!104: Add filtering to all views (Claudio Cambra)
!106: Make set filters persist across view changes (Claudio Cambra)

You can now filter incidences by tags in all of Kalendar’s views, much like you previously could in the tasks view. Doing so brings up a nice persistent header that shows which tags you are filtering by. And that’s another thing — you can now filter with multiple tags, so you can find incidences that have tag A or tag B!

As a result, you can also now carry over the tags you are filtering by when you switch across views.

Tweaking the visuals of static elements

!104: Add filtering to all views (Claudio Cambra)
!97: Improve presentation of scrollable sidebar area and alignment fixes (Claudio Cambra)

We have taken care to make static heading elements look consistent and be more suggestive as to their static-ness. What does this mean? Well, you can see that they all have shadows, which we thought was a good way to show these elements as being “above” scrolling elements. It should look a little less jarring now when you scroll through your calendars in the sidebar, for instance — it’ll look like your list of calendars is going beneath the navigation buttons, and not simply getting cut off.

The aforementioned filter header has a similar shadow, as it stays in place when you scroll horizontally through the months or weeks in Kalendar’s views.

A new merge request template

!101: Add merge request template (Felipe Kinoshita)

For those of you who are thinking about providing your first contribution to Kalendar, we have added a new merge request template that should make it easy for you to tell us what you are adding and how you are changing things around!

Bug-fixes and other changes

!85: Fix regression sort shortcut not configurable (Carl Schwan)

  • Tasks view now saves your set sort properly

!87: Fix saving last opened view (Carl Schwan)
!88: Save selected calendars after closing app with Ctrl+C (Carl Schwan)

  • Kalendar now saves your selected calendars (i.e. the ones you have set as visible) correctly even if the application crashes or is killed (i.e. CTRL+C)

!89: Fix source selection dialog (Carl Schwan)

  • The calendar source section of the settings now looks and works as intended

!90: Refactor singleton registration (Tobias Fella)

  • Our singleton registration code in main.cpp is now cleaner

!91: Add common command line options (Tobias Fella)

  • Kalendar should now process standard Qt application command line options

!92: Raise required Qt version to 5.15.2 (Tobias Fella)

  • The Qt version required by Kalendar now matches the Qt version demanded by KFrameworks

!93: Port navigations actions from ListView to Repeater (Felipe Kinoshita)

  • There should no longer be weird behaviour when dragging the view switching actions in the sidebar

!96: Use config enums on settings pages (Felipe Kinoshita)

  • Settings in the settings pages now can use KConfig enums thanks to upstream changes!

!98: Add settings option in the hamburger menu (Felipe Kinoshita)
!107: Add a “Configure” section to the hamburger menu (Felipe Kinoshita)

  • The hamburger menu should now show configuration and settings actions, like the window and global menus

!99: Don’t base the settings window size on the application window size (Felipe Kinoshita)

  • Settings window on desktop now has a more consistent and reasonable size

!100: Use the ellipsis character instead of triple periods (Felipe Kinoshita)

  • Actions now use ellipsis character

!102: Fix saving month view’s border width configuration (Felipe Kinoshita)

  • Changing the month view’s border width now actually gets saved in the config

!105: Viewed incidence in task view now retained after scrolling or changing views (Claudio Cambra)

  • A viewed incidence in the task view now stays open regardless of scrolling or changing views

!108: Change settings window title to “Configure” for consistency sake (Felipe Kinoshita)

  • Kalendar’s settings window now has title “Configure”

Commit 2fac6288: Fixed choosing calendar colour in the calendars settings (Claudio Cambra)

  • Can now set a calendar’s colour again

Coming up next

With KDE Review starting, we are going to have a bunch of fixes coming in for the remaining bugs in Kalendar. We’ll try to sneak in some new features too!

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

Massive new features: a new week view, KCommandBar, and more — Kalendar devlog 17

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.

Up until now, Kalendar has allowed you to view your events on a day-by-day basis through both the month view and the schedule view. This week, we are introducing the week view, which gives you a more detailed perspective of your incidences.

Another big new feature: we have reimplemented the KCommandBar in QML. What does this mean? Well, those of you who are power users will be able to leverage the same Command Bar you have enjoyed using in other KDE apps in Kalendar too.

Lastly, we have some improvements for the month view on mobile that should make it far better to view your incidences.

Let’s get on with it!

Adding a new week view

!80: Add a week view to Kalendar (Claudio Cambra)

The new week view provides an hour-by-hour, day-by-day overview of your calendar’s incidences. We have focused on preserving the same aesthetics as in the rest of Kalendar, and ensuring it is as simple to view and as fast to use as the rest of the app.

When using the week view, you will be able to see your incidences positioned according to the day they occur and the hours during which they take place. All-day and multi-day events are placed in a small view at the top of the week-view, which displays incidences in the same way as the month view. This clears up your week view so that you can focus on the incidences with the most specific start and end times.

The current time is marked with a line, and the present day is highlighted. You can navigate through weeks forwards and backwards, as well as by using the date changer popup as you would expect to do in any of Kalendar’s views.

This view is a brand new addition, so bugs are to be expected! If you decide to take Kalendar’s in-development version for a spin and find any bugs, please report them 🙂

Re-implement KCommandBar in QML and include in Kalendar

!79: Implement kcommandbar in QML (Carl Schwan)

If you are a power user of some other KDE apps, you might have used KCommandBar — a KRunner-like popup that lets you quickly search for and trigger actions within the application you are using.

This week, we have reimplemented this component in QML and included it in Kalendar. Our KCommandBar can be invoked with the key combination CTRL+ALT+i, and you can immediately invoke Kalendar’s actions such as creating events, sorting todos, or switching views.

Making the month view more readable

!81: Improve readability of month view incidences in mobile/horizontally constricted environments (Claudio Cambra)

We have changed the displaying of incidences in the month view to be more readable when there isn’t much horizontal space. Now, when incidence lines are narrow, they will not elide, will feature smaller text, and will have less padding to ensure that their names are always visible. This will be a particularly helpful change on mobile.

Improving visual and interactive consistency

!82: Separate multi day view incidence delegate into own component (Claudio Cambra)
Commit b4744ad9: Separated incidence background onto own component and added glow in dark mode (Claudio Cambra)
!83: Improve calendar selector in task view (Carl Schwan)

We have unified several components that have been used across the different views, including the incidence lines presented in the week and month views as well as the backgrounds of incidences in the month, week, and schedule views. The result is improved visual consistency now, as well as future consistency if any changes are made. Incidences in the month view, for example, now feature subtle shadows just like in the week and schedule views.

Additionally, the calendar picker that is invoked when you add a task using the quick-add field in the task view now works in the same way as the sidebar’s calendar list.

image

Toggle-able menu bar: finally here!

!41: Make Menubar toggleable (Felipe Kinoshita)

We showed off our toggle-able menubar a few weeks ago, but little bugs have kept this from being merged. Up until now! Those of you who would like to switch between a hamburger menu or a menu bar can now do so from either thanks to a check-able “Show menubar” action. If you use a global menu, neither of these components will appear.

Bug-fixes and other changes

Commit d0b610b5: Make it compile with new akonadi includes (Laurent Montel)

  • Kalendar now shows incidences correctly when using most up-to-date versions of Akonadi (e.g. from kdesrc-build)

Commit 4e42c4d5: Fixed schedule view not defaulting to current day (Claudio Cambra)

  • Schedule view now once again opens up to current day when not explicitly moved to different month

Commit 0b3e512e: Fixed collection picker in all tasks page quick add field (Claudio Cambra)

  • When adding a task from the quick-add textfield and in the ‘All Tasks’ page, the collection picker presented to let you select what calendar this task will be put into once again presents calendars correctly

Commit ada0e9c7: Fixed incidence radius in week view incidences (Claudio Cambra)

  • Incidences’ corners in the week view now have the correct radius instead of sharp corners

Commit 81431239: Fixed separator size not taking into account the horizontal scrollbar width (Claudio Cambra)

  • The background separator in the week view’s alll day/multi day events header no longer extends beyond this view, removing the ugly gray background to the right of incidences

Commit 55f72978: Fixed list view dragging on week view elements (Claudio Cambra)

  • Scrolling in the week view now works correctly in mobile, with dragging anywhere scrolling vertically the entire page and not just select items

Coming up next

Some big new features this week mean that next week will inevitably be full of bug-fixes, so expect lots of those. There are several smaller features that we still want to implement from our feature-list, so expect some of those too.

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