Commit graph

328 commits

Author SHA1 Message Date
Devin Lin
c76e19037c Ensure i18n is used with double quotes and add CI check
Apparently i18n doesn't support string literals with single quotes as
parameters. Fix occurrences of this and add a CI check to ensure this
won't happen in the future.
2025-08-11 18:19:41 -04:00
Devin Lin
f7f657131b folio: Port to plasma_add_applet
Use plasma_add_applet to deploy as a module: https://invent.kde.org/plasma/libplasma/-/merge_requests/1116
2025-07-16 23:21:46 -04:00
Devin Lin
32584ebd54 halcyon: Move settings to config group
Similar to
https://invent.kde.org/plasma/plasma-mobile/-/merge_requests/784 but for
halcyon (see rationale there).
2025-07-16 16:09:50 -04:00
Devin Lin
7dc2d980aa folio: Move settings to config group, and consolidate
Currently Folio's settings are being written to the main KConfigGroup of the
containment, when can interfere with other generic containment settings.
ShellCorona in plasma-workspace also expects the settings to be in
sub-config group when it preserves them when changing containments.

This commit moves all of the settings to its own config group, and also
consolidates config read/write for favourites and pages into
FolioSettings.
2025-07-16 15:44:59 -04:00
Devin Lin
5139984e94 halcyon: Restore translation flag
It was accidentally removed with the plasma_add_applet port
2025-07-16 13:05:56 -04:00
Florian RICHER
78312b6c44 folio: ApplicationListModel initialize m_homeScreen 2025-07-16 11:32:32 -04:00
Devin Lin
8a0b3d4f56 homescreens/halcyon: Port to plasma_add_applet 2025-07-15 18:14:55 -04:00
Devin Lin
ecefc446a6 homescreens/folio: Do not initialize shared_ptr with a QObject parent
This MR ensures that delegates created with make_shared do not also get
initialized with a QObject parent. Some of the classes used the same
constructor parameter for HomeScreen and used it as a parent simultaneously. This was refactored
so that they are separated.
2025-07-15 18:10:03 -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
Florian RICHER
11792ae565 Add NewStuff Button 2025-07-07 22:36:55 -04:00
Florian RICHER
78a7e641e2 Add model.isSupported checking 2025-07-05 10:30:30 -04:00
Florian RICHER
ceeb3b3770 folio: Load SettingsComponent as Async
Avoid to load SettingsComponent in same time as Homescreen because it take ~200ms to load.
2025-07-03 15:41:43 -04:00
Devin Lin
6af5d97595 folio: Ensure y anim signals don't get emitted if value didn't change
This ensures extraneous signals from being emitted when values don't
change in y animations. This fixes the vkbd in the search widget getting
in a weird stuck state due to multiple focuses on the search widget.
2025-06-28 11:04:11 -04:00
Devin Lin
47a886988f homescreen: Use generic app name when X-KDE-PlasmaMobile-UseGenericName is set in a .desktop file
This commit adds support for using the generic app name when the "X-KDE-PlasmaMobile-UseGenericName" .desktop key is set.

This allows us to have applications that we consider "system apps" to have a generic name, without needing to change the "Name" tag itself when used in other desktop environments (ex. Plasma Desktop).
2025-06-28 00:19:50 -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
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
Florian RICHER (aka MrDev023)
43672a5ec5 homescreens/folio: Block propagation if edit mode is active to avoid widget to trigger event
Fixes https://invent.kde.org/plasma/plasma-mobile/-/issues/387 and https://invent.kde.org/plasma/plasma-mobile/-/issues/353

I can't only block the touch events because it blocks also MouseEvent.
> I think because it's used to convert it by QT into Mouse Event with source == MouseEventSynthesizedByQt or MouseEventSynthesizedBySystem.

So the solution, it's to check if mouse event is a synthetized event and if edit mode has been triggered to block or not the event propagation

Test:

- On VM with kwin_wayland command
- On mobile
2025-06-18 05:53:15 -04:00
Micah Stanley
8e3e05ddea Folio: Add Haptic Feedback
This merge request adds haptic feedback to the folio home screen when:
- Pressing and holding on an app icon
- Pressing and holding on an widget
- Pressing and holding for opening the settings component
2025-05-01 05:04:38 -04:00
l10n daemon script
efb518c817 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2025-04-27 01:31:31 +00:00
Micah Stanley
5fade2d5eb Folio: Search Widget View State Bugfix
Fixes a bug where if one swipes up from the app drawer and immediately swipes up again to the search widget, then lets the widget fully appear, then after that at any point swipes down to dismiss it, it will cause the swipe action to reveal the app drawer instead of the home screen. This was resolved by making sure when `closeAppDrawerAnim` is active, to only set the view state to `PageView` if the view state equals `AppDrawerView`. This prevents `closeAppDrawerAnim` from overwriting the `SearchWidgetView` state and making it seem to think we are still on the home screen when swiping down.

Here is a video of the bug in question.

![Screencast_20250424_225241__online-video-cutter.com_](/uploads/f5d03324850688028628ef8fc18f6c28/Screencast_20250424_225241__online-video-cutter.com_.mp4)
2025-04-25 12:39:05 +00:00
Micah Stanley
06e5a89ca7 Folio: Make SettingsComponent Buttons Match FavoritesBar Location
This merge request makes the SettingsComponent buttons match the FavoritesBar location. This helps better utilize the available screen space as before the buttons would exclusively remain at the bottom and could cause them to overlap with the HomeScreenPage or navbar.

Before:

![Screenshot_20250424_093156](/uploads/be3b3ef255333052a8f2b74b8645a906/Screenshot_20250424_093156.png)

After:

![Screenshot_20250423_181926](/uploads/7823b8e2d1ba41c376bc83b80ea56136/Screenshot_20250423_181926.png)
2025-04-25 01:23:48 +00:00
Micah Stanley
a452bc3030 Folio: Settings Component Bugfix
Fixes a bug where if one presses and holds the home screen to bring up the settings component, then swipes up to access the application drawer while the settings component open animation is playing, both the drawer and settings component will be visible on screen at the same time. Fixing this was achieved by setting swipe state back to none whenever the settings component is opening and a onSwipeMove event happens.

Video of the bug.

![Screencast_20250423_151033](/uploads/7f4f04617c42d5898322a8fa5ef306b8/Screencast_20250423_151033.webm)
2025-04-24 13:42:16 +00:00
Micah Stanley
036cc8502b Folio: Add ability to lock layout
Adds a new setting to lock the layout of the home screen so one will not accidentally modify it.

Closes https://invent.kde.org/plasma/plasma-mobile/-/issues/459
2025-04-21 14:01:54 +00:00
Devin Lin
d621b23eb0 folio: Delete delegates if the application is removed
When an application is detected to be removed from the system, remove the delegate from the homescreen layout as well.
2025-03-19 23:40:11 -04:00
Micah Stanley
e4323f4ef0 notification list: fix notification scrolling within action drawer and lockscreen
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
2025-03-20 02:06:33 +00:00
Devin Lin
df6fb87ac8 folio: Add visual placeholder for favourites bar
This adds a visual placeholder when dropping applications on the
favourites bar, making it consistent with dropping applications on a
page.
2025-03-19 21:50:27 +00:00
Devin Lin
3afdafd8c2 folio: Use dynamic list insert/delete for changes
Should help reduce the effect of https://invent.kde.org/plasma/plasma-mobile/-/issues/440

Instead of fully resetting the application list when the ksycoca db
changes, calculate which items are removed and added based on the
storageId and emit targeted signals for them.
2025-03-19 21:45:06 +00:00
Devin Lin
c5f0d15b14 folio: Fix AppDelegate null errors
Sometimes due to model changes the application will be null, which
causes a lot of errors in the console. Add null checks to avoid this.
2025-03-19 18:23:35 +00:00
Devin Lin
3550caa580 folio: Use smart pointers to manage delegate lifetimes
Currently delegates do not get deleted when removed from models. Due to
the complexity of drag state and other objects, we can't simply delete
the delegate when removed from the model because they might still be
involved in animations or other state at the time of removal. Use smart
pointers to have the delegate objects deleted instead.

QML unfortunately doesn't support QSharedPointer, so we need to expose raw pointers to it.
2025-02-21 18:06:24 +00:00
Devin Lin
7d9054f74e applicationlistmodel: Space out application list refreshes
Use the same behavior as kickoff on desktop, to limit application list
refreshes to once every 100ms.

https://invent.kde.org/plasma/plasma-mobile/-/issues/440
2025-02-17 15:22:38 +00:00
l10n daemon script
b993b510a4 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2024-12-15 01:40:00 +00:00
Micah Stanley
3a6a2f78da homescreen/folio: fix icon drop position misalignment within folder and outside folder view check not accounting for size differences
This fixes an issue with folder app icon drop positions being misaligned. Noticeably causing issues when placing apps within folders when using gesture only mode.
Also, this fixes an issue with the outsideView calculation not accounting for folder icon size differences. Causing an issues with some apps still being interactive when outside the current page.
2024-11-20 03:20:01 +00:00
Devin Lin
b9d4ff6455 Revert "homescreens: Use WheelHandler on app list"
This reverts commit 11a45f94d2.
2024-11-10 21:01:28 -08:00
Devin Lin
a8068ff2bb homescreen/folio: Fix favourites bar reordering when full
Fix the favourites bar reordering when it is already full, currently it
prevents any changes on a full bar, requiring users to move the delegate
out and back in again.
2024-11-10 19:22:32 +00:00
Micah Stanley
ca7b79e0b7 homescreen/folio: Fix folder apps still being Interactable when outside current page
This fixes an issue where apps in the folder can still be interacted with when outside the current page.
2024-11-10 00:05:10 +00:00
Micah Stanley
f52bf0bd71 homescreens/folio: Homescreen folder page snapping position bugfix
This fixes an issue where if the device is rotated in a folder, the page would not snap immediately back to the right position, but would instead animate icon position changes.

To achieve this, the following changes were made.
- changes were made to how the folder gird size is calculated to prevent an issue with the grid size changing for a brief period of time during screen rotation, causing problems with snapping to the correct page.
- icons position animations are now done by a animated index value to prevent it from animating when the device rotates
- when the device screen size changes (ex: device rotation), it now snaps to the current folder page, as before it would just stay in between the two pages.
2024-11-09 19:04:24 +00:00
Devin Lin
c2731f650e homescreens/folio: Fix goToPage call not updated with new parameter 2024-11-09 09:34:57 -08:00
Devin Lin
aa3e42f65a homescreens/folio: Fix favourites bar ghost position when drag out
Fix the scenario where the favourites bar ghost position is not removed
when the user drags the delegate out of the bar area.
2024-11-09 17:12:04 +00:00
Micah Stanley
2a5dec9cf0 homescreens/folio: FavouritesBar: Icon position animation bugfix
This fixes in issue where the favorites bar icons would previously animate based off of position changes. This was causing unwanted animations in situations like screen rotation and login.
2024-11-07 05:17:57 +00:00
Micah Stanley
f5728e1a21 homescreens/folio: Homescreen page snapping position Bugfix
This fixes an issue where if the device is rotated on the 2nd or further page, the page would not snap immediately back to the right position, but would instead animate.
2024-11-07 05:12:47 +00:00
Devin Lin
3fd81679ed homescreens/folio: Remove icon on one of the settings delegates
None of the other settings delegates have icons, it makes it look
strange.
2024-10-31 03:15:22 +00:00
Devin Lin
57caf24504 homescreens/folio: Never open both search and app drawer
This ensures that the search widget and app drawer never simultaneously
both get opened.
2024-10-31 02:55:24 +00:00
Devin Lin
11a45f94d2 homescreens: Use WheelHandler on app list
Use Kirigami.WheelHandler on the app list to give a native feeling
scrolling experience with the mouse wheel.
2024-10-31 00:49:41 +00:00
Devin Lin
159e3bb3a6 homescreens/folio: Fix app icons being rounded to predefined sizes
This fixes the app icon size setting, which used to round to predefined
sizes regardless of the actual size setting.
2024-10-29 19:23:25 -07:00
Marco Mattiolo
4371c95194 Flag unused parameters with Q_UNUSED() 2024-09-28 06:31:00 +00:00
l10n daemon script
62a2633f72 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2024-08-28 01:30:06 +00:00
Laurent Montel
8c2faecb96 Remove virtual keyword when we use override 2024-08-19 07:39:01 +02:00