Commit graph

52 commits

Author SHA1 Message Date
8017e4eaa0 Show applet popup on tile long-press in convergence
Long-pressing a mapped quick-settings tile in convergence
mode opens a floating popup with the Plasma applet UI
instead of launching System Settings. Unmapped tiles still
open Settings.

AppletHost creates a standalone Corona to host applets
outside the shell containment tree.
2026-04-15 14:58:25 +02:00
e12e6b3a66 Add system tray to status bar in convergence mode
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.
2026-04-08 20:12:16 +02:00
Micah Stanley
db98f2cd86 statusbar: fix hidden batteries from taking up space in the statusbar
I noticed at some point after updating my main phone, that non visible external device batteries started taking up extra space in the statusbar. This fixes the issue by filtering out external device batteries by using KSortFilterProxyModel.

Before (with external peripheral connected)

![Screenshot_20260303_124043](/uploads/a469eda41ff6d2a10b85c6a3de88785f/Screenshot_20260303_124043.png){width=399 height=28}

After

![Screenshot_20260303_123956](/uploads/521a7dc7bb16cf08ef026c3ef0655b93/Screenshot_20260303_123956.png){width=399 height=28}
2026-03-05 20:13:34 -05:00
Devin Lin
1914e9be44 statusbar: Remove system tray
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
2026-02-06 19:19:02 -05:00
Devin Lin
28f7224a5b gestures: Add optional gesture guide panel
This adds a gesture handle mode to the navigation panel, which can be
enabled during gesture-only mode. This reserves space for the system
gesture to be able to be used, allowing us to extend the height in KWin
of the gesture recognition area (which is currently far too short for devices such as Pixel 3a).

This also allows for navigation with a mouse; clicking on the handle
triggers the task switcher, holding it triggers the "home" action.
2025-12-14 18:36:42 -05:00
Devin Lin
67ca0fd6fc volumeosd: Refactor and simplify logic
This commit makes a much needed cleanup and overhaul of the volume OSD.

Changes:
- Fix context menus for app streams
- Remove dedicated mute button in cards (simplifies the UI for touch
  devices)
- Add selection background for card delegates
- Sync audio models with plasma-pa
- Simplify implementation of cards
- Sync volume slider implementation with plasma-pa
2025-09-14 14:06:46 -04:00
Sebastian Kügler
569d268c49 kscreenosd popup: auto-switch to convergenceMode
This popupprovider takes care of automatically enabling and disabling
convergence / docked mode when a monitor is plugged in or unplugged.

It uses the plugin that is provided with the kscreenosd quicksetting,
which essentially notifies of outputs being added and removed.

Signed-off-by: Sebastian Kügler <sebas@kde.org>
2025-08-18 10:59:49 +02:00
Devin Lin
bc3e80c479 mobileshell: Manually specify QML files, and private some internal files
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.
2025-07-18 11:01:26 -04:00
Micah Stanley
d4eaf693c6 Folio/Halcyon: Expand Background Blur Effect using a MaskLayer
This merge request expands upon the folio and halcyon background blur effects, making the folio background blur include the backgrounds of folder icons, the favorites bar, and wallpaper selector, and for halcyon, it now includes the folder icons, app library, search, and wallpaper selector. To accomplish this, a mask layer plugin was created to easily attach to these elements. This way, we can use a `OpacityMask` to cut out from the existing blur layer, thus hopefully keeping the performance cost low. And with my limited testing, it does at least seems to run about the same on my oneplus 6t, though it is not really a low end device, so I can not fairly judge the impact for something slower (eg. PinePhone). To be on the safe side, a third option was also added to the folio settings, allowing for the ability to toggle back to the old functionality if needed.

![Screenshot_20250613_135521](/uploads/d5aa81d6589b61fbba675e4a6e621b55/Screenshot_20250613_135521.png)
![Screenshot_20250613_135536](/uploads/bd726459a131f736e2711ced3fe90d4f/Screenshot_20250613_135536.png)
![Screenshot_20250613_135505](/uploads/c603627b4e65d4b956a1e0b6463d28f3/Screenshot_20250613_135505.png)
![Screenshot_20250627_093729](/uploads/e5f1ad672361c2b9bae23e57905336eb/Screenshot_20250627_093729.png)
2025-06-27 14:27:30 -04:00
Micah Stanley
121fd39f12 MobileShell: Fix CMake Set Source Files Properties
I noticed that properties in `MobileShell.Constants` were not being applied correctly, causing values to show up as undefined. After investigating, it seem to be a recent change attempted to condense multiple `set_source_files_properties` calls in `MobileShell/CMakeList.txt` into one call. However, the issue seems to be that the properties were still being set inline with each file, instead of listing all files together followed by a single `PROPERTIES` keyword. This merge requests resolves this issue by moving the property specification to the end of the file list, ensuring that all files receive the intended properties.
2025-04-26 02:58:40 -04:00
Devin Lin
ee1a311af7 components/mobileshell: Introduce singleton for plasma-nm lib
We currently create several instances of the plasma-nm objects over the shell. Use a single singleton to avoid having to load it multiple times.
2025-04-25 14:58:18 -04:00
Micah Stanley
a3cfa885ee Mobileshell: Reorganize File Structure of Popup Items
Consolidate the popup items into a single folder for better organization.
2025-03-23 03:55:04 +00:00
Micah Stanley
eba6074161 notifications: Implement popup notifications
This merge request implements a more mobile optimized solution for popup notification.
- 

The current controls are:
- Swipe up to move the notification to the notification center.
- Swipe left/right to dismiss the notification entirely.
- If multiple popup notifications are grouped together, tap on the bottom area to view them in a expanded view.

What still needs to be done:
- ~~For notification without a default action, tapping on them should probably open up the associated app.~~ Note: I think I will add this in a separate merge request as it probably should be the case regardless if the notification is a popup
- ~~Swiping down on a notification currently does nothing. Maybe we should map this to a notification action?~~ Note: I have some ideas I will try later, though for now, I will leave this action blank
- ~~The expanded view of notifications should be able to be dismissed by swiping up/down on the top/bottom of the list.~~ Note: Added
- Investigate further into how to remove the current desktop popup notifications.
- ~~Code clean up.~~ Note: The code is at least a bit better

Single popup notification:

![notification_1](/uploads/63d12be6da1dd2676de17940dcadbdfa/notification_1.gif)

Multiple popup notifications:

![notification_2](/uploads/907a14b772f66f46040c28342f4dcf02/notification_2.gif)

Multiple popup notifications in the expanded view:

![notification_3](/uploads/9a7cd09a6bb8a0f7ee70e5bcf7c29c6b/notification_3.gif)

Any feedback would be greatly appreciated.
2024-11-07 16:13:06 +00:00
Nicolas Fella
6da6f3fd55 Port to KStandardActions 2024-10-31 08:41:01 +00:00
Nicolas Fella
d49143456e Drop unused link libraries 2024-10-31 08:41:01 +00:00
Micah Stanley
681d1683f5 VolumeOSD: Improve design, and prevent touch events from being taken from outside the osd
Fixes: https://invent.kde.org/plasma/plasma-mobile/-/issues/274

Any feedback on these changes would be much appreciated.

![Screenshot_20241024_093458-1](/uploads/7b4f89ace1a53c559737d1c05d591329/Screenshot_20241024_093458-1.png)
![Screenshot_20241023_070919](/uploads/c7b9a8de7c9bba2de01d734408e02b2b/Screenshot_20241023_070919.png)

Change Log:
- NanoShell FullScreenOverlay was changed to a LayerShellQt Window to keep it on the top layer and to prevent the popup from obsorbing all touch inputs.
- New animations were added to the volume popup.
- User can now change the volume by touching and dragging on the popup
- The mute button on the popup was fixed
- Mute buttons were added next to the volume sliders in the AudioApplet page
- Volume icons now dynamically update to the volume level
- Visual design adjustments
2024-10-25 15:52:49 +00:00
Devin Lin
8f79654989 widgets/notifications: Remove accidental dependency on being an applet
Followup to https://invent.kde.org/plasma/plasma-mobile/-/merge_requests/558 and removes the dependency on being an applet, as it causes the notifications to break on the lockscreen
2024-07-28 14:54:14 -04:00
Devin Lin
2d2b7407a6 startupfeedback: Change to be window based and controlled by a model
This makes the startup feedback more robust, by having instances be controlled by a model which can listen to window changes. Being window based also allows for the close button and gestures to work properly with it, since it will show up in the task switcher as well.

Fixes:
* https://invent.kde.org/plasma/plasma-mobile/-/issues/357
* https://invent.kde.org/plasma/plasma-mobile/-/issues/338
* https://invent.kde.org/plasma/plasma-mobile/-/issues/335 (dark themes now tint the background color)
* https://invent.kde.org/plasma/plasma-mobile/-/issues/330
* https://invent.kde.org/plasma/plasma-mobile/-/issues/30
2024-07-13 16:30:07 +00:00
Nicolas Fella
628d248be2 Add QML module dependency 2024-06-09 22:56:32 +02:00
Nicolas Fella
0f99a3c8c1 Adapt to plasma-framework targets being renamed 2023-11-23 23:42:47 +01:00
Jonathan Esk-Riddell
67af6f35a6 use renamed kwayland 2023-11-23 18:54:43 +00:00
Yari Polla
4f45654af6 Port mobileshell plugins to ecm_add_qml_module 2023-11-02 11:08:17 +00:00
Devin Lin
2d37ef0771 components: Introduce SwipeArea component 2023-09-29 22:56:49 -07:00
Devin Lin
76b3c4ec4d mobileshell: Remove unused displaysmodel 2023-03-18 19:34:35 -07:00
Devin Lin
79e99a9cfe shellsettingsplugin: Extract out from mobileshell component 2023-03-18 12:28:28 -07:00
Devin Lin
462d99b83f quicksettings: Extract out from mobileshell into separate plugin 2023-03-16 19:44:36 -07:00
Devin Lin
0775c56153 windowplugin: Extract out windowutil from mobileshell to separate plugin
This allows us in the future to use mobileshell without having the WindowUtil singleton loaded (which does a bunch of wayland calls that aren't necessary for most applications).
2023-03-15 15:12:23 +00:00
Devin Lin
1dbb1c78f6 Port to Qt6/KF6 2023-03-03 06:01:23 +00:00
David Redondo
750d5581ef Revert "Show all headers in qtc6"
There was no consensus for this in Plasma.
This reverts commit c79ca828f3.
2023-01-24 08:51:18 +01:00
Laurent Montel
c79ca828f3 Show all headers in qtc6 2023-01-22 18:30:45 +00:00
Nicolas Fella
a0fe7284ee Add missing KPackage link 2022-11-28 13:10:21 +01:00
Devin Lin
df65a0e0f2 mobileshell: Remove compile time QtFeedback dependency, and make it optional 2022-11-12 11:15:36 -05:00
Devin Lin
7d3bf39750 mobileshell: Refactor and extract state to mobileshellstate plugin
This avoids mixing plasmashell state with our MobileShell component library (which really shouldn't have state at all).
2022-11-12 11:15:36 -05:00
Devin Lin
6ed9a7d65a quicksettings: Move related files into folder 2022-06-18 17:14:21 -04:00
Devin Lin
b41e1f2b8a homescreen: Start refactoring and cleaning
fix
2022-06-18 15:42:39 -04:00
Yari Polla
0f7dc0cf05 quicksettings: implement swipe view 2022-05-17 00:55:31 +00:00
Volker Krause
4b1c8dcc59 Use version-less macro for Qt6 2022-05-13 17:30:45 +02:00
Laurent Montel
2da23eae0a Adapt build system for building against qt6 2022-05-13 08:27:13 +02:00
Devin Lin
2201ebd1d7 Remove QtFeedback dependency 2022-04-29 18:59:14 -04:00
Devin Lin
3353cfc498 kcm: Add vibration setting for shell, and add vibrations
We can control shell vibrations from here, which can be replaced once there is a mechanism to control system-wide vibrations for QtFeedback.
2022-04-29 16:15:59 -04:00
Devin Lin
2deea1b4d0 components: Port Direction enum to c++ to improve load times
According to flame graph testing with qmlprofiler, this caused quite some overhead in QML.
2022-04-10 13:28:32 -04:00
Devin Lin
3969973e51 mobileshell: Refactor and collapse stackBefore and stackAfter into ShellUtil 2022-04-07 10:52:12 -04:00
Devin Lin
f861e2df3f mobileshell: Move KWayland related window functions to utility class 2022-04-06 17:18:20 -04:00
Devin Lin
2e6c1f837e homescreen: Collapse library into mobileshell and containment 2022-04-05 22:06:05 -04:00
Devin Lin
210042a6bf libmobileshell: Move back to QML plugin
Move from a C++ library + QML plugin to a QML plugin only for simplicity, since the homescreen switching architecture will be done from Plasma, and so use of the shell library only needs to be from QML.
2022-03-21 10:00:09 -04:00
Devin Lin
cf7e48e65c components/mobileshell: Move to libmobileshell library 2022-03-16 23:20:51 -04:00
Devin Lin
b92ba78e00 mobileshell: Move quicksettings to folder 2022-03-10 23:52:53 -05:00
Devin Lin
5e04c65550 Add option to toggle qt quick compiler 2022-03-10 22:40:21 -05:00
Devin Lin
e1d1f8ee1a components/mobileshell: Use qrc and qtquickcompiler to improve load times
Also enables us to check for QML syntax errors and compile time.
2022-03-05 13:52:26 -05:00
Devin Lin
8f9f722ca7 navigationpanel: Add ability to toggle between gesture only and shown navigation panel modes
Addresses: https://invent.kde.org/plasma/plasma-phone-components/-/issues/140
2022-02-13 04:23:57 +00:00