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.
We are present on Twitter and Mastodon:
On the 26th of September, we will be giving a talk at QtCon Brasil 2020, where we will share our experience in building a convergent environment; you can join us and ask us any questions:
QtCon Brasil 2020 – Convergence
KDE Review
For the next stable release, we have submitted MauiKit and Index to KDE Review. Projects move into KDE Review when they are ready to start making beta or stable releases. It allows for the KDE community to check over for minimum standards.
The next projects to be submitted are going to be VVave and Pix. We expect, as an outcome of the review, to improve on many aspects suggested by the reviewers.
The documentation of MauiKit controls is still an ongoing task.
MauiKit
This week’s updates bring polished and refined components, more cohesive styling, better touch, and mouse inputs support in different navigation patterns, and code refactoring and clean up for better maintainability and performance.
Some of the highlights are:
Controls
The MauiKit controls premise is to be convergent, meaning: to have a responsive layout under-constrained or wide spaces, adaptable, feature-rich, and react to touch or mouse-based inputs accordingly. With this in mind, we keep on improving the core controls we ship with MauiKit.
The SettingsDialog, SettingSection and SettingSectionTemplate
The SettingsDialog layout is now more uniform, and its SettingsSection now uses a background color to differentiate items and target the right one more promptly. The SettingTemplate, which is used to contain each different setting option in the section, now has a setting property that allows to quickly store persistent values in configuration file dependent on the app; you just need to set a key and group to the setting value to be stored, and when the value is changed just save it with setting.setValue(newValue)
Maui.SettingTemplate { id: _autoScan label1.text: i18n("Auto Scan") label2.text: i18n("Scan all the music sources on startup to keep your collection updated.") setting.key: "ScanCollectionOnStartUp" setting.group: "Settings" setting.defaultValue: true Switch { checkable: true checked: _autoScan.setting.value() == "true" onToggled: _autoScan.setting.setValue(checked) } }
The SettingSection can also now be collapsed.
ItemDelegate and Templates
A widely used set of controls are the templates, which provide a feature-rich and responsive experience out of the box. Most of the MauiKit template controls have received nice papercut fixes, from the ListItemTemplate and GridItemtemplate to the ListBrowser and GridView.
The ItemDelegate now draws borders to better hint about its boundaries; this is done if the item is marked as draggable, this helps to be aware of the relationship of the item with its context, for example, when performing a drag and drop or doing a lasso selection and action can be more precise.
Some quirks and bugs about the ItemDelegate implementation have been fixed, such as correct parenting and feedback on performed actions, so with a MauiKit ItemDelegate, you get a draggable item, with feedback as a response on performing actions on touch or mouse input devices, and a predefined styling.
The ListItemTemplate layout information in a row, in the following order:
Now the initial item Icon/Image can be changed to any item by using the iconComponent property. Before you can add even more items to it by appending them.
The GridItemTemplate image now correctly follows and masks the image in a fit or fill mode. Also, it sees a nice fix to the label displayed under the icon/image, which previously had a loop bug due to the wrong calculation of its best size.
The ListBrowser and GridView implementations are now cleaner and perform better with touch or mouse-based interactions. This view templates have some other nice features such as adaptable cellWidth, lasso selection, predefined styling for spacing and margins, etc.
Dialogs
The default action buttons’ borders are now styled as other borders.
The dialog title is now shown in the header for more consistency.
The AboutDialog now uses KAboutData to get information about the application, such as authors, name, version, licensing, and libraries.
A bug causing the inline notification dialog to have a wrong size has been fixed.
MauiApp
The main menu layout has been reordered, so the default About and Quit actions are always at the bottom.
Separator
A custom control for a separator has been added; this separator is composed of two lines, one darker and the other lighter, for better contrast.
Use a more cohesive look with the title in the title bar.
BackEnd
The backend utils for Mauikit have been cleaned up; this goes from the FileManagement utilities to the template data modeling and platform integration classes.
- FMH functions have been moved from the header to an implementation file to clear all the unused warnings that were being generated.
- Thumbnail previews for PDF and videos files were added thanks to KIO; this can be used by appending the prefix “thumbnail://”
- A FileLoader class was added to the FileManagement utilities for asynchronous loading files; this is now being used to fetch files for Index, VVave, Pix, Shelf, Nota, and Cinema.
- Android integration: removed old source code for contacts and moved to Communicator.
- The MauiModel and MauiList have gained a few more useful methods to get the one or all items are out of the model.
- The structure of the utility sources has been cleanup.
Apps
Currently, the Maui project maintains ten core applications to provide an essential experience: Index, VVave, Pix, Nota, Buho, Shelf, Station, Cinema, Communicator, and Sol, while some are at a stable state, some others are just recently entering a beta state.
This week’s progress includes many nice feature fixes to the current stable apps and upgrades to the beta ones.
Index
- The file manager now has a more cohesive context menu for opening paths in split view and new tabs.
- Now when making multiple selections and removing an item, the removed item is cleared from the selection bar instead of clearing all the selection.
- The search functionality is now working again.
- Now we have PDF and video thumbnail previews.
- Items can be dragged over the tabs to switching between them and also between splits.
- The sidebar’s new-files counter badge is back. It lets you know when a bookmarked folder has new content.
VVave
- VVave code has been cleaned up and improved for better performance. Now when clicking Play all or Append all actions, the tracks are copied to the playlist much more quickly. The player interface has been improved, and code redundancy has been removed.
- A new Playlist controller in C++ has been added.
- The AlbumsView for Artists and Albums have been improved not to be overloaded with not needed elements, same for the folders and playlists views.
- The Folders view now has a filter field and can be switched to a list for better recognize folder path URLs
- Now VVave has mpris2 support for Linux.
Pix
- Better time date formats in delegates in the list view.
- Fix build for macOS and Windows
- Larger items in list view
- Images in the viewer do not longer jump to the next or previous when resizing the window
- The image viewer logic has been improved, clearing out small issues with the navigation
Nota
- The Documents view now will group documents in their directories for easier browsing.
Buho
- The Books view has been redesigned and the booklet views too. It nows lists all the “chapters” in a horizontal orientation.
- The Notes view now switches from a grid to a list depending on the available space.
- The new floating button now performs the expected action depending on the current view.
- The notes cards now pick the right color for text and background.
- Unfinished features with graphical items have been removed.
Cinema
The video player now has more features and has entered a beta state.
- Videos view for browsing the video collection.
- Tags view to browse tagged files.
- Contextual actions for the collection, like sharing, copying, tagging, etc.
- Video thumbnail previews.
- The player view now has support for playlists, with a responsive UI.
Station
- Correctly close inactive splits
- Update application information
Sol
- Tabs support.
Shelf
- Renamed from Library to Shelf
- PDF thumbnail previews
- Now using new MauiKit FileLoader
What’s Next
- Enable syncing of data and images on Pix, files in the Index file manager, and of contacts in Communicator.
- Make Cinema and Sol initial beta release.
Our plans for 2021 are:
- Fully utilize CMake.
- Improve iOS support.
- Improve data synchronization using NextCloud.
- Improve performance.
- Improve the UI cohesion on all supported platforms.
- Move beta apps to stable.
- Improve documentation.