Commit graph

379 commits

Author SHA1 Message Date
Devin Lin
7cecb980d7 popups: Use dark background and consistent outlines with action drawer
Have popup views use a similar coloring scheme as the action drawer,
which was introduced with
https://invent.kde.org/plasma/plasma-mobile/-/merge_requests/827
2025-10-08 23:13:46 -04:00
Devin Lin
ddc04069a3 startupfeedback: Revert to original animation 2025-10-08 22:21:48 -04:00
Devin Lin
3ce21b972e startupfeedback: Always tint background with theme color
Currently with a light theme, often colors calculated from icons are incredible bright and vivid. This can cause the user to be flashed all of a sudden with a bright color when launching an app. This commit adopt the dark background blending scheme for all usecases.
2025-10-08 21:49:10 -04:00
Devin Lin
06b647fcde volumeosd: Only highlight when delegate is pressed
There is already the radio button to denote selected audio widgets, it's
otherwise very jarring.
2025-10-08 19:23:39 -04:00
Devin Lin
da53fe4a82 volumeosd: Don't highlight audio device when there is only one entry 2025-10-08 09:45:30 -07:00
Sebastian Kügler
ae4bf8be60 respect user's choice of convergence mode
When plasmashell is started and the user had set docked mode, it may get
reset. This patch makes sure  that we don't change the user's choice
after hotplugging/unplugging a display. The initial setting of
convergendeMode (if true) is now remembered.

Signed-off-by: Sebastian Kügler <sebas@kde.org>
2025-10-07 09:53:26 +02:00
Devin Lin
5fd7d99b09 wallpaperselector: Fix previews not loading
The API changed in
https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/5478,
now we need to use the "preview" property
2025-10-06 07:10:07 -04:00
Devin Lin
e196a91c8b actiondrawer: Use contextually correct colors and dark background at all times
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.

![image](/uploads/b4e42984da926bc266d6c53d59a323b7/image.png){width=200}
![image](/uploads/4dc71502cdf85b5cbf6a2497a2384939/image.png){width=200}
![image](/uploads/ebd2d57ed46161ec8bb240a36c7069e7/image.png){width=300}

![image](/uploads/99656ee4cc322ee7412d7aef1c696893/image.png){width=200}
![image](/uploads/c0521a64069077fbe7e44b23159227e7/image.png){width=200}
![image](/uploads/6567a1bf42092d914a56d03ac5d7be54/image.png){width=300}
2025-09-18 09:29:53 -04:00
Devin Lin
f803c55a73 volumeosd: Ensure visibility of children is set
This ensures that all elements in the volume OSD get the window
visibility and can turn off any listeners. This avoids excessive
bindings being triggered when the osd is closed and audio is played.
2025-09-17 12:01:34 -04:00
Devin Lin
dc1fa9b187 homescreens/folio: Add keyboard navigation on pages
Implements the rest of https://invent.kde.org/plasma/plasma-mobile/-/issues/219
2025-09-15 15:47:38 -04:00
Sebastian Kügler
a3723c7e7b implement configurable column number in quicksettings panel
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>
2025-09-15 19:46:12 +02:00
Devin Lin
082323baa8 quicksettings/audio: Fix displayed volume fetching
Fixes https://invent.kde.org/plasma/plasma-mobile/-/issues/422

This commit simplifies the AudioInfo data provider to fetch the volume
directly, rather than relying on a series of complicated connections. It
also does some cleanup of AudioInfo, removing unused functions.
2025-09-14 15:30:37 -04: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
Devin Lin
929cde56db animation: Make fast animations less jolty
Use less steep animation curves to avoid "jolty" behaviour.
2025-09-14 08:07:52 -04:00
Devin Lin
a95598d5e4 panels: Fix panels having partial opacity and convoluted vkbd colors
A custom 0.95 opacity was added to the panels in
https://invent.kde.org/plasma/plasma-mobile/-/merge_requests/642 for
overlaying applications. This
required some complicated logic and layering to mix with other modes of
operation. Since this broke at some point, simplify the logic completely
so that it's just a flat colour. This also fixes the navigation panel
not having a colour when the keyboard is shown over the homescreen.
2025-09-13 22:18:32 -04:00
Devin Lin
447049d570 volumeosd: Listen to osd service for opening the popup
Fixes: https://invent.kde.org/plasma/plasma-mobile/-/issues/423

We currently listen to when the volume changes, which wouldn't happen if
the user reaches 0% or 100% and continues trying to press the volume
button. Instead, listen to OSD events for determining when to open the
popup.
2025-09-13 08:54:11 -04:00
Devin Lin
674c5034ae animations: Use Kirigami units and speed up several of them
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.
2025-09-12 05:41:20 -04:00
Kunda Ki
7f3dcab42b Fix various typos
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`
2025-09-05 12:21:15 +00: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
f6b6c51921 homescreen: Fix initial zoom state
This code seemed to depend on the task switcher state changing for
having the initial state being correct.
https://invent.kde.org/plasma/plasma-mobile/-/merge_requests/800 exposed
this since the signal no longer gets emitted at the beginning.
2025-08-13 23:50:26 -04:00
Devin Lin
54cd4d548e notifications: Ensure correct state is being set for do not disturb
Change the "toggleDoNotDisturbMode" function to "setDoNotDisturbMode"
and add a parameter so that we actually set the mode to the intended
value, not just flip it.
2025-08-07 12:10:37 -04: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
Devin Lin
d0b1df97a6 homescreens/halcyon: Unify search widget with folio
This commit drops halcyon's search widget in favour of using the same
widget as folio to share code. This also brings over its keyboard
navigation features.
2025-07-10 17:04:42 -04:00
Devin Lin
0bcab0ae3a homescreens/folio: Add keyboard navigation to app drawer and fix on
search

This commit is a subset of
https://invent.kde.org/plasma/plasma-mobile/-/merge_requests/694 to add
keyboard navigation to the app drawer.

Pressing the arrow keys while in the app drawer will allow you to
navigate between the apps and the search bar, and going up will exit the
app drawer. Escape/Back is also supported for unfocusing the search bar
and exiting the view.

This also fixes an issue in the keyboard navigation on the search screen
where it wouldn't close when there are no search results.
2025-07-10 17:04:08 -04:00
Devin Lin
3b6951bf1e panel: Overlay over lockscreen
Overlay the shell's status panel and quicksettings panel over the lockscreen, instead of rendering a second copy in the lockscreen theme. This will allow us to improve the lockscreen loading speed.

Key changes:
- Overlay quicksettings window and the status bar over the lockscreen when it is shown
- Refactor the top panel's showing logic to be cleaner (as it supports various overlay modes over fullscreen apps already)
- Implement lockscreen support to the status bar and quicksettings panel in the to panel
- Forward quicksettings panel requests for "unlock" over DBus to the lockscreen
- Add "raiselockscreen" QML plugin to easily request a window to be raised over the lockscreen

Notes:
- Now that we are sharing the quicksettings panel from the shell, notifications that are already there will be shown on the lockscreen (compared to right now, where only new notifications would be shown)

Depends on: 
- https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/2339
- https://invent.kde.org/plasma/kscreenlocker/-/merge_requests/283
- https://invent.kde.org/plasma/kwin/-/merge_requests/7839

Implements: https://invent.kde.org/plasma/plasma-mobile/-/issues/199

![Screencast_20250612_013325](/uploads/49e9981cb863056b4c0c46a144e5ee7d/Screencast_20250612_013325.webm)
2025-07-02 10:27:33 -04:00
Micah Stanley
d2ba42b503 MaskLayer: Rename Homescreen Scale Property 2025-06-30 11:10:57 -04:00
Devin Lin
147e949ee7 actiondrawer: Fix color detection
PanelBackground supplies color through the `panelColor` property, not
`color`.
2025-06-28 10:48: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
Devin Lin
d4f1c78d61 doubletaptolock: Simplify, and use "lock" instead of "sleep"
This MR does several things as a followup to
https://invent.kde.org/plasma/plasma-mobile/-/merge_requests/748:
- Use the word "lock" instead of "sleep" since we are locking the
  device, not putting it to sleep
- Simplify usage by using existing MouseAreas instead of including our
  own for this feature (I encountered several focus captures in folio that prevented the
SwipeArea from getting events)
2025-06-27 00:14:26 -04:00
Devin Lin
1d3ceb5801 homescreens/halcyon: Add settings page
Add a settings page to halcyon, which allows for toggling whether the
wallpaper is blurred and double tapping on the homescreen to lock the
device. This also does a bit of refactoring for folio and halcyon to
share the same wallpaper blurring item.
2025-06-26 18:57:12 -04:00
Devin Lin
ca9696b84d notifications: Fix do-not-disturb
The implementation of do-not-disturb broke after the port to our own
notification popups. Since the notification widget is quite deep in the
ActionDrawer, just implement the DBus listening directly in
NotificationsWidget. Also add the missing pulseAudio object in
NotificationPopupProvider to implement notification inhibition.
2025-06-25 20:08:38 -04:00
Devin Lin
46578fde73 singletons: Initialize singletons in shell desktop, not panel
We have some singletons (ex. for notification popups, volume, dbus) that
need to be initialized somewhere in plasmashell. Currently they are done
from the panel containment, which is a bit of a strange location. There isn't really
any offical way it seems to do this, so move it to the shell package
which feels more central.
2025-06-25 19:33:00 -04:00
Devin Lin
7c07dc0122 components: Remove unused ExtendedAbstractButton
This component is not used anywhere in the shell, remove it.
2025-06-25 16:47:01 -04:00
Devin Lin
3cc22dd7fb volumeosd: Fix qml errors when undefined
Sometimes the HasVolume property apparently is undefined? Handle this
case gracefully so it doesn't spam the console.
2025-06-25 16:40:29 -04:00
Florian RICHER
2b51e0c30c homescreens/folio: Add options to turn off and lock the phone after a double tap on screen
Linked to issue: https://invent.kde.org/teams/plasma-mobile/issues/-/issues/318
2025-06-25 16:39:36 -04:00
Micah Stanley
7e2019cb0e MobileShell: Unify Item Background Elements
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.

![Screenshot_20250621_154201](/uploads/7bd5129d942c8fbc3706dd1728b3a1dd/Screenshot_20250621_154201.png)
![Screenshot_20250621_155520](/uploads/9d2e925c9483579dec765813465e4d2d/Screenshot_20250621_155520.png)
2025-06-22 20:16:16 -04:00
Micah Stanley
775d612d3e ActionDrawer: Fix Panel Opacity when Brightness is Adjusted
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.
2025-06-18 17:02:12 -04:00
Devin Lin
19ea9f5164 actiondrawer: Draw our own background
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.
2025-06-17 18:00:41 -04:00
Florian RICHER
6a869007fc Load minimized Quicksettings as Async 2025-06-16 15:16:03 -04:00
Devin Lin
7f8c9f8d5e notifications: Don't factor action drawer state in expiry
Currently opening the action drawer causes notification popups to
"expire", causing some unintended behaviour (ex. dismiss alarm/timer).

This commit removes this behaviour, and also fixes notification popup
expiry while the action drawer is open.

Fixes https://invent.kde.org/plasma/plasma-mobile/-/issues/468
2025-06-14 19:16:02 -04:00
Micah Stanley
a9ddcf726d MarqueeLabel: Smooth Scrolling
This merge request reworks the MarqueeLabel to add smooth scrolling, giving it a more clean appearance while also improving scrolling when filled when characters of different lengths.

Before:

![margueeLabel_before__トリミング_](/uploads/b162949db828a0e243b0ef109456bfdd/margueeLabel_before__トリミング_.webm)

After:

![margueeLabel__トリミング_](/uploads/7ec2a2b72799a56412b08d04b2f6eb00/margueeLabel__トリミング_.webm)
2025-06-12 08:25:42 -04:00
Bhushan Shah
73b5595139 notifications: do not expire notificationa after invoking action
This may close notification before action is passed and this causes the
action to not work.
2025-05-22 20:04:58 +05:30
Micah Stanley
d39bdbedb8 VolumeOSD/NotificationPopup: Animation Adjustments
This merge request adjust animations in the VolumeOSD and NotificationPopup to bring consistency and to make it feel better when swiping up a notification.
2025-04-30 03:50:22 +00: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
0a7ef60e43 NotificationPopup: Bugfixes
This fixes a bug where other sources dismissing the current popup notification would cause notifications in waiting to be assigned to the popup index of -1. This would cause these remaining notifications height to get set to a very thin strip at the top of the screen and would no longer automatically dismiss. This also fixes a bug where notifications in the popup drawer would become bunched up together at the top.
2025-04-22 12:09:18 +00:00
Micah Stanley
9bd4f0b747 GestureNavigation: Screen Rotation Popup Button
Implementation of a popup button to rotate the screen while using gesture navigation.

The button is set to appear when the device rotates while auto rotation is off. Then the button will be visible for a short period of time before disappearing.
2025-04-21 22:09:14 +00:00
Micah Stanley
8c45aba84d actiondrawer: notification scroll bugfix 2025-04-17 18:16:21 +00:00
Devin Lin
1a398d9fdb wallpaperselector: Fix delegate dimensions and icon color
The previews in the delegates pop outside of the delegate itself. Fix
this, and do some refactoring to simplify the code. Also fix an issue
with the "+" delegate not being white.
2025-04-16 21:22:33 -04:00
Devin Lin
23797660ac statusbar: Don't show internet icon and loading indicator at same time
Ensure that the internet icon and the loading indicator do not show at the same time.
2025-04-07 00:03:06 +00: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