open() alone does not set intendedToBeVisible, so the drawer
immediately closes itself. Call the proper toggle path instead.
Also hide the drag handle since convergence users click.
The page dots were non-interactive so clicks fell through to the
swipe area and closed the drawer. Set interactive:true and sync
the index back to the SwipeView so clicking a dot switches pages.
Reintroduce StatusNotifierModel-based system tray icons, gated on
convergenceModeEnabled. Desktop apps (KDE Connect, nm-applet, etc.)
expose tray icons that were removed in 1914e9be as unusable on
phone screens.
The status bar wrapper is raised above the ActionDrawerOpenSurface
so tray icon MouseAreas receive click events while non-interactive
areas still fall through to the swipe handler.
TaskWidget.qml supports left-click (Activate), right-click
(ContextMenu), hover tooltip, and hides Passive/ApplicationStatus
items. The lockscreen SIGABRT guard (disableSystemTray) is restored
on the action drawer's StatusBar instance.
Use the new SwipeArea clicked() signal to open/close the action
drawer on a single click when convergence mode is enabled. The
existing swipe gesture remains available as a fallback.
The system tray has not been useful on mobile and isn't particularly
interactable due to its small size. Remove the system tray from the
status bar, if we need its functionality it would be more appropriate to
create a larger "tray UI" in the quicksettings area
This commit changes the action drawer colorsets to be contextually correct. The panel background would use the window background colors (instead of the view ones), and quicksettings delegates would use colors from the Button color set (rather than the view).
This also changes the background scrim to always be dark even in light mode. I think this is important to do because we have two views (notifications, and quick settings), which currently don't have much in the way of colours to distinguish the two.
This commit also makes some changes to the notifications widget in order for its card foreground to be the standard theme colors.
{width=200}
{width=200}
{width=300}
{width=200}
{width=200}
{width=300}
This changeset makes the shell respect the quickSettingsColumns mobile
shell setting. It renders the number of columns correctly and makes the
drawer wider, as needed.
As a side-effect, the width is now more dpi-independant since it
switches from raw pixel values to gridUnit.
Another side effect is that we make the individual quicksettings buttons
ever so slightly wider (5.333 gridUnits before, gridUnits now).
Signed-off-by: Sebastian Kügler <sebas@kde.org>
This converts many of the animation durations to Kirigami units so that
they can be controlled system wide. It also speeds up several of the
animation durations (ex. in folio) from 800ms to 400ms to improve the
feel and responsiveness of the shell.
Fixes typos in various source comments.
Found via `codespell -S "*.po,*.svg,*.pgm,*.xml,./po,*.desktop,*.json,*.actions" -L aline,aparent,childs,distroname,indexin,indx,logicaly,lokal,nd,splitted,te`
The globbing pattern for finding QML files is problematic because it
breaks when we add/delete a file (requiring us to delete
~/kde/build/plasma-mobile). It also placed every file (both public and
internal files) in the same flat namespace, carrying the risk of name
collisions between unrelated folders.
This commit manually specifies every file in the package. It also moves internal files in the actiondrawer folder into its own namespace. Followup MRs will do this process for other folders.
We so far have been recreating the background elements for all the item throughout the shell. This merge request simplifies this by unifying these elements into a single component, making is easier to keep things at a consistent design while also being able to adjust things when needed in the future.
Per request, I tried to keep thing looking mostly the same as before.
The first picture is what the action drawer looks like now, the one after is with these changes.


This merge request moves the location where the action drawer panel opacity gets set to the top of the background item stack to resolve an issue with the opacity not changing properly when the brightness is adjusted.
Draw our own background in the action drawer instead of using the svg, because it loads faster when visible: true/false is set, and we do a bunch of resizing animations.
This merge request fixes an issue with notification list scrolling and also adds a few general improvements.
To accomplish this, the notification widget was moved outside of the action drawer swipe area and lock screen swipe area, separating them from the parent-child relationship. Instead, the notification widget is now layered separately on top. This change seems to fix the conflict when both areas are accepting swipes from the same direction.
Additionally, changes were made to the notification list widget for the action drawer to make it behave similarly to the folio home screen app library. Specifically, when at the top of the list, one can swipe down over the notification area to expand the action drawer. In landscape mode, the media widget, clock, and date were also added to the notification list to provide more room for viewing notifications when scrolling.
Closes https://invent.kde.org/plasma/plasma-mobile/-/issues/318
These changes make the navigation and status bar accessible from within fullscreen applications by allowing the user to tap on the top or tap or drag on the bottom of the screen.
Also, since the top panel is now over top of all fullscreen applications, this moves the action drawer swipe area back into the status bar.

Currently the user can only expand to the expanded state after the initial minimized animation finishes. This animation gets reset as soon as a finger is pressed down, causing the user to have to wait until the animation completely finishes before being able to go to the expanded state.
Bypass the need to wait for the animation to finish by setting the open state immediately if the offset already is past the minimized threshold.
Make sure that the view colorset is correct, remove unnecessary layer
(clip is enabled), and remove unnecessary visibility hack for the
notifications widget.
This avoids having to completely load the quicksettings, status bar,
media widget, and notifications list from scratch when the view changes.
We now have a single instance of each component which is reparented to
the new view (portrait/landscape).
Fixes https://invent.kde.org/plasma/plasma-mobile/-/issues/406
This change allows scaling of the statusbar (the top panel).
As we have to accommodate for a wide variety of devices with different
physical pixel sizes, we need a way to scale the top panel / status bar.
This change introduces a config value (in plasmamobilerc, such as other
shell settings) that controls this size.
For example (plasmamobilerc):
[General]
statusBarScaleFactor=1.5
(Config UI in kcm mobileshell in separate patch)
Signed-off-by: Sebastian Kügler <sebas@kde.org>
Currently, Quick Settings in landscape mode is not scrollable, due to issues with `scrollViewComponent`. This causes some buttons to become unseen in landscape mode but not portrait. This has been solved by deleting `scrollViewComponent` and replacing it with `swipeViewComponent`, to allow swiping to access other buttons in Quick Settings.
Before (docked mode and hotspot are missing):

After (docked mode and hotspot are there):

However, with this setup, `resetSwipeView()` doesn't work, and Quick Settings remains at the page it was left at.
This is partially an emergency fix also for
https://invent.kde.org/plasma/plasma-mobile/-/issues/404, which was
potentially introduced by https://invent.kde.org/plasma/plasma-mobile/-/merge_requests/582
This MR extracts the screen brightness implementation from initialstart
to a QML plugin, and also ports the action drawer brightness slider
implementation to it. This avoids importing the powerdevil screen
brightness plugin on the lockscreen, which apparently has a race
condition that causes it to sometimes segfault.
This adds support for touchpad scrolling in various shell components, such as the lockscreen, homescreen and action drawer.
Currently TODO because it appears to be very buggy when there is a control underneath that also accepts touchpad input (ex. flickable). The touchpad scroll start appears to get called by Qt, but not the end event, so I am unable to "let go" of the flick. Not sure if it's a wayland issue.
This also appears to not work in the nested KWin session, not sure if it's because of libinput or something
Adjusted the colors of the notifications and media controls to help them fit in better together.


Fixes an issue where if the media controls were active and the action drawer was flicked opened, sometimes it would not fully open.
Changes include:
1. Media controls will now no longer animate its height if `implicitHeight` is 0
2. The action drawer animation code was reworked to allow its height to change dynamically.