Today, we bring you a new report on the Maui Project progress.
Are you a developer and want to start developing cross-platform and convergent apps, targeting, among other things, the upcoming Linux Mobile devices? Then join us on Telegram: https://t.me/mauiproject.
If you are interested in testing this project and helping out with translations or documentation, you are also more than welcome.
The Maui Project is free software from the KDE Community developed by the Nitrux team. This post contains some code snippets to give you an idea of how to use MauiKit. For more detailed documentation, get in touch with us or subscribe to the news feed to keep up to date with the upcoming tutorial.
We are present on Twitter and Mastodon:
This year we will have two talks on QtCon Brasil and Akademy discussing and sharing the experiences with the Maui Project; the discussions will be virtual, so anyone interested in knowing a bit more about this project can join us and ask any questions.
QtCon Brasil – Convergence
Akademy 2020 – Maui Project Updates
Maui Release 1.1.0 and 1.1.1
Since the last weekly posts reporting on the stable releases of the Maui Project, the Nitrux team has been organizing, planning, and working on the next stable release of the MauiKit framework and the set of applications.
This post covers some of the updates and bug fixes coming to the 1.2.0 stable release due in October.
The Maui team is aiming for a six months release cycle to bring the new features, updates, and fixes more quickly.
https://nxos.org/maui/mauikit-1-1-0-release/
https://nxos.org/maui/mauikit-and-maui-apps-1-1-1/
For getting the latest stable release packages to check the official Maui Project webpage
RoadMap to 1.2 and Invent
The next stable release is planned to be out by October, the new features and issues are being organized and tracked under Invent, so if you want to report an issue or make a feature request, you can follow the links to open a ticket.
The Maui Project is now organized into the /maui/ namespace under KDE Invent.
- Mauikit—https://invent.kde.org/maui
- Index—https://invent.kde.org/maui/index-fm.
- Pix—https://invent.kde.org/maui/pix.
- VVave—https://invent.kde.org/maui/vvave.
- Buho—https://invent.kde.org/maui/buho.
- Nota—https://invent.kde.org/maui/nota.
- Station—https://invent.kde.org/maui/station.
Maui @ KDE Review
For the upcoming release, we are going through the KDE review process for Index, VVave, Pix, and MauiKit. The next batch of applications to follow is Buho, Nota, and Station.
For more information about this process, you can check https://community.kde.org/Policies/Application_Lifecycle#kdereview.
Documentation
The documentation of the MauiKit framework is a work-in-progress; right now, the progress is around 70% done, missing inline documentation to QML files. For the next stable release, we expect it to be ready and up on the webpage.
For this labor, we are making use of the Doxygen tool, and once the documentation is done, the next step is to generate the HTML files to be added to the MauiKit documentation webpage at Gitbook:
And then update the page with more up-to-date information on the Human Interface Guidelines, the references, and examples.
If you are interested in contributing to the Maui Project, this would be an excellent place to start; you would help to document while getting to know the framework components.
Translations
The project now makes usage of KDE Frameworks i18n instead of the Qt built-in system is used across all the supported platforms.
What’s new
We have been working on polishing the look and feel of our applications and making it easier to achieve a cohesive look from the MauiKit framework built-in components without too much hassle from the application side, with new and updated controls. We are also working on bringing convergent elements that can adapt UI and UX wise to different screens sizes, forms factors, inputs, and platforms, putting convergence to the front line.
We have bumped all the projects to make usage of Qt 5.15 on all supported platforms: Linux, Windows, Android, and macOS, updating the source code by fixing warnings and issues with deprecated lines.
MauiKit
- MauiKit now makes usage of the KDE formatting style and has an autoformatting tool to keep the code clean.
Fixes
- The accounts dialog for handling online accounts has been fixed and now shows up correctly.
- AppViews issue making the viewport buttons non-auto exclusive has been fixed.
Tagging
The Tagging utility has been cleaned up, and it is getting ready for a big performance boost. This utility allows us to tag files and share the tags across all the applications. Right now, Nota, Index, Pix, and VVave make use of it, so any tag added on one of then can be browsed in another application.
- Besides adding tags to files, it had support for tagging abstract items, this support will be dropped, and it will focus only on tagging files.
Dialogs
The dialog popups have been clean up and now have a much more neat look. The overlay close button has been moved inside the popup, and the default action buttons style is used more widely.
Some of the API changes are:
- Different actions can be added using the actions property. Such actions are styled as the default buttons.
- By default, the dialog is managed by a column layout, so any item placed on it should make use of the Layout attached properties for positioning its children. The contents are scrollable by default, so when adding items to the dialog, they should have an implicitHeight or a Layout.prefferredHeight, to preserve the scrollable behavior.
- To override the default dialog scrollable layout, there is a stack property that places the content on top of the layout implementation. The stack fills the whole available space of the dialog and is also handled by a column layout.
- A dialog can be marked as persistent or not; if it is persistent, then the dialog only gets dismissed using an ESC shortcut, or by manually closing it; otherwise, the dialog can be closed by pressing outside of it.
SettingsSection, SettingTemplate and SettingsDialog
The settings dialog has received some UI fixes, and the sections represented by SettingsSection now make use of a more uniform layout.
- The SettingsSection now makes usage of the LisItemTemplate for displaying the information, so besides adding a title and a description to a section, one can manipulate the display information using the template alias property, by adding, for example, an icon or image, or another column of labels.
ListItemTemplate
This template represents a row layout containing an icon or image and two columns of labels. This template can be expanded by appending more items to the row. This template is widely used in many other components, like the SettingsSection, the AboutDialog, the TabButton, and as delegates in list views, etc. It has been cleaned up and now is more efficient to be used as delegates for models.
ItemTemplate
Drag and drop support for touch devices has been added; before, it only worked for desktops with mouse input.
Drag and drop behavior has this workflow on touch inputs:
- long press + release = right click.
- long press + drag = drag.
An animation is triggered once the drag is ready.
The following video shows the workflow on a touch screen under Linux.
GridView and ListBrowser
Lasso selection now also works for touch inputs and has been added to the MauiKit GridView and ListBrowser components, so any app previously using such components now can also have lasso selection ready for touch screens.
The workflow is similar to drag and drop; a long press and drag on an empty area will activate the lasso selection.
FilePreviewer
- Now for audio and video previews, the progress bar is displayed correctly.
- The information list is now scrollable and makes consistent usage of the ListItemTemplate for the delegates.
- The previewer allows to swipe to the next and previous items; this has been made more discoverable by adding navigation arrows to the header bar.
TagsDialog
- Now the dialog has a filter text field for filtering long lists of tags.
- The Tagging backend now makes usage fo the Maui templated models, which allows quick filtering and sorting.
- The Tagging component will drop support for tagging abstract items and will instead focus on tagging local files.
Doodle
- The doodle component now has support for changing the brush type, shape, opacity, size, and color.
The doodle is being tested to taking notes on PDF files for the Maui Library app, which is still under development.
Share and OpenWith Dialog
- Now both make usage of the MauiKit ListItemTemplate and have a more consistent look.
SelectionBar
- Now displays by default the action’s text beside the icon when the width available is wide enough.
AboutDialog
- Now is styled more consistently and takes full advantage of the new MauiKit scrollable Dialog layout.
Maui Apps
For the upcoming release, the stable apps continue to improve, and few new ones will enter a beta state.
- Stable: Index, VVave, Pix, Nota, Buho, Station
- Beta: Communicator, Library, Cinema, NX Software Center
- Alpha: Sol (Web browser)
Index
- Under process for KDE Review.
- Does not longer lists all the tags in the places sidebar. Instead, tags are accessible through the tags place-item.
- The grid view now has better spacing between items for more accessible lasso selection and readability of file names.
- The Index file manager now allows for installing APKs on Android.
- Added shortcuts for quickly creating a new file or folder: Ctrl+N = new folder, Ctrl+Shift+N = new file.
- Fix and unified the removing files dialog.
- Optimized the destruction of splits and tabs.
Vvave
- Under process for KDE Review.
- Quicker delegates.
- Playlists now make use of the MauiKit Tagging component, so playlists are tagged audio files, so they also can be browsed in the file manager.
- The Playlist view has been reworked to follow the style of the albums and artists’ views.
- The albums and artists’ view now is more responsive: on constrained spaces, the grid becomes a list.
- The artist artwork fetching is now back and uses the Spotify API, instead of LastFM. The Pulpo backend, which allows us to retrieve contextual information about the music files, has been cleanup and improved, updating the existing services like LastFM, Spotify, MusicBrainz, and genius.
- Adding and removing sources now works as expected.
- Cleaned up the database model, so if you experience issues, try removing the previous database file at ~/.local/share/vvave/collection.db.
Pix
- Under process for KDE Review.
- Better grid view spacing when the image titles are visible.
- The tags and folders view delegates have been improved and now display the tag or folder contents as a collage.
- Add icon for macOS.
- Added initial support for image metadata reading with exiv2.
- New information dialog.
- Initial support for basic image editing thanks to the work from https://invent.kde.org/libraries/kquickimageeditor
- Fixed wrong links to the project web page and issues report page.
Buho
- The links feature to save web pages as bookmarks offline have been removed, and it is planned to move to the upcoming Maui Web browser.
- Settings for managing the syncing of the notes and books have been added.
- The UI has been cleanup. And a substantial visual design is to be unveiled.
Nota
- Added more actions to the selection bar, and the recent and document views now have a contextual menu to trigger relevant actions, like sharing, exporting, removing, and tagging.
- Unified the unsaved files dialog warning and now correctly gets triggered.
- We optimized the destruction of splits and tabs.
- Correctly install the Nota text editor icon on Linux.
- Add the option to open a blank file by default on launch.
- Split views can now be closed on demand.
Contacts/Communicator
- Renamed to Communicator.
Cinema
- Added views to browse the file system video files to the app.
Sol
- Initial work on the web browser. Initial UI layout
Maui Style
- Improve styling of the buttons and menus and menu items and scrollbars.
- Better Menus padding
- Better styling support for Windows
- A fix is on the way to use this style by default on all the platforms and keep a consistent look, no matter the platform.
Whats’ Next
Enable syncing of data and images on Pix, files in the Index file manager, and of contacts in Communicator.
Make Cinema and Surf initial beta release.
Our plans for 2021 are:
- Move fully to CMake.
- Add IOS support.
- Data syncing using NextCloud.
- Performance boost.
- Cohesive look and feel across all platforms.
- Move beta apps to stable.
- More documentation.