Plasma Mobile update week 11 of 2020

In contrast to our usual bi-weekly blog format, this post wraps up only the most important changes that happened while no post was released. We are sorry for the lack of news in this period of time, but the good news is that as you will see in this post, the long break was not caused by a lack of content, but by a lack of time to write the post.

In the meantime, we held a sprint in Berlin, if you are interested in the improvements we made there, please see the specific post.

First of all we gained a couple of new apps!

Cahfofpai started the calculator application Kalk: He forked Liri calculator and ported it to Kirigami. The project is still a work in progress and contributions of all kinds are welcome.

Kongress, a companion application for conference attendees has also been added to the Plasma Mobile ecosystem. It provides practical information about conferences, showing information about the talks in various ways, e.g. in daily views, by talk category, etc. The user can also add conference talks to favorites and navigate to the web page of each talk.

Plasma Camera

Plasma Camera, Plasma Mobile’s default camera application, gained various improvements by Sebastian Pettke, who fixed video recording using cameras that don’t allow setting FPS count. As part of his work, he added a label which displays elapsed recording time. Previously it was possible to trigger unexpected issues by switching the camera mode while recording, this is fixed now. The choice of icons used all over the app was also improved, as well as error handling.

The area that previously already displayed the most recently taken photo gained support for showing a thumbnail for recorded videos.

In addition to that, the app now highlights the currently active setting.

Calindori

Calindori now allows changing an event’s start date, in case one picked the wrong date in the calendar initially. Moreover, the flat “all events” page now uses a list view instead of a list of cards in order to improve user experience and performance.

With regards to more usability improvements, the global drawer actions have been separated into two sections: “active calendar” related (show monthly agenda, show events, show tasks) and “general” (create new, import, activate, delete other calendars). The actions of the active calendar are accessible with a single click - no need to display a new drawer page.

Spacebar

Spacebar, the SMS and general telepathy client gained several improvements by the Telepathy maintainer, Alexander Akulich. Its integrated contact search is now case insensitive. A very important part, starting new conversations was fixed: Make it possible to start a new chat from NewConversation page. For telepathy backends that support it, Spacebar is now able to show the contact’s avatar picture in the conversation list.

Jonah Brüchert fixed starting conversations with non-ktp contacts, like typically required for SMS. Other chat protocols of course provide their own contact list, so they were not affected by this, but SMS requires local contacts.

Upstream in the KDE Telepathy library, various modernizations were done by Alexander Akulich and Jonah Brüchert. Even more importantly, the additional patches to it that Spacebar depended on were upstreamed, so Spacebar doesn’t require patching KTp anymore.

Angelfish

Thanks to the work done by Rinigus Saar to enable installing Flatpak applications in SailfishOS, various Plasma Mobile apps now run on SailfishOS as well. Due to this development, Rinigus gained interest in contributing to Angelfish, our webbrowser, which is seemingly worth using on SailfishOS due to its better support for modern web standards than Jolla’s default browser. So Angelfish got more attention than usual:

To improve performance in scrollable list views, Angelfish now uses a DelegateRecycler from Kirigami in most places. Rinigus contributed a patch to drop scrollbars on mobile, which made angelfish not display the very desktop-like chromium scrollbars. In order to help Angelfish to run on different platforms, translations with non-KDE styles were fixed by Jonah.

While debugging performance issues, Rinigus found out that interestingly the busy indicator used a significant amount of rendering power. We decided that using a busy indicator in browser navigation bars wasn’t a modern design anyway, so we removed it

To simplify the code and and use a less memory heavy approach for tabs, Rinigus reimplemented the tabs view using a repeater instead of a list view. He also refactored various pages to be shown as pages, not layers, which allows for using swipe gestures to navigate in the tabs view, settings and various other pages. The tab switcher was afterwards redesigned by him. As part of this effort, the tab thumbnails , which broke after one of the recent Qt updates, were fixed.

As a result of more work by Rinigus, Angelfish now restores open tabs after restarts.

To enable automated unit testing and centralize the tab code in one place, Jonah rewrote the tab model, which was previously based on a mix of java script and QML, in c++. The address entry was moved into an overlay by Rinigus, to make more space for the text field.

Later Jonah implemented various JavaScript dialogs, which are used by many websites to ask the user for text input or confirmations. Those dialogs are now handled in the application window, instead of QtWebEngine’s default behaviour of opening a new window that hides the actual browser window. He also fixed visual inconsistencies in settings.

To improve private mode, Rinigus disabled text prediction in private mode. In the second large refactoring project in the timespan covered by this post, he rewrote the storage backend to use SQLite instead of JSON, which should improve loading, saving and especially filtering performance. Tobias Fella soon after fixed a crash that happend if the data location doesn’t exist yet, which was unfortunately introduced by accident in the previous effort.

Koko

As Qt seems to be reworking the QML engine internally in preparation for Qt 6, the scoping of properties changed in a way that made it necessary to fix Koko’s AlbumDelegate. This restores thumbnails in the application.

Plasma Phonebook

Our contacts app saw an important fix, which restores the functionality to remove phone numbers and instant messenger contacts (for real this time). Jonah also made scaling of contact pictures scale factor aware.

This timespan’s changes also contain a design improvement: Text fields now fill all available width.

XDG-desktop-portal-kirigami

As a new feature, we started an xdg-desktop-portal implementation for Plasma Mobile, which is based on KDE’s desktop implementation. The Mobile variant already gained a mobile file and app chooser. You can find more about this work in the sprint blog post, but much of the work was already done before the sprint.

Settings

Leinir fixed the accounts module, and is currently working on expanding and beautifing the module.

Flatpak-kde-applications

KDE’s repository of Flatpak applications saw many additions by the Plasma Mobile team: Jonah added plasma-phonebook and fixed koko’s failing build on the binary factory. He also fixed thumbnails in the Koko Flatpak, which was missing kio-extras which contains the thumbnailer code. Nicolas contributed KTrip’s and calindori’s manifest. Jonah later packaged the Kirigami version of Okular as Flatpak, and Linus Jahn added his app PlasmaTube. Dimitris recently enabled building the Kongress app’s Flatpak on the binary-factory.

KWin Wayland

A patchset for enabling rotation in KWin/Wayland was merged into libKScreen, KScreen and KWin. You can find the complete patchset on phabricator. Currently there’s a small bug which prevents auto-rotation from working, and the option needs to be toggled manually. We hope to solve this in the upcoming days.

Kirigami

Arjen Hiemstra added a new component: ShadowedRectangle in Kirigami. which is a rectangle with a shadow. It uses a custom shader that draws the rectangle and the shadow below it using distance fields, which has significantly better performance compared to the DropShadow effect. It also supports rounded corners, which the current Card code does not. It is planned to be used in current Card components in Kirigami.

Announcements

This time we have a happy announcement to make: plasma-phone-components, which contains the most crucial parts of the Plasma Mobile GUI, and its dependency plasma-nano are for the first time part of a Plasma release. The first Plasma release containing them is 5.18. We hope to enable distributions to start packaging them by this.

Want to help?

This post shows what a difference new contributors can make. Do you want to be part of our team as well? Just in case we prepared a few ideas for tasks new contributors can work on.