Commit graph

42 commits

Author SHA1 Message Date
7c51f76cc0 Reduce dynamic tile drag jitter 2026-05-19 10:00:43 +02:00
c6bd37dfc3 Stabilize automatic tile layouts 2026-05-19 09:55:25 +02:00
e0e51d7ffd Add dynamic tile drag preview 2026-05-19 09:47:45 +02:00
6df3bd6ff5 Fix REUSE parsing of theme test 2026-05-19 09:26:51 +02:00
8a9f31aee2 Drop po rename invariant 2026-05-19 09:19:57 +02:00
d095eb97bc Guard convergence shell geometry 2026-05-19 09:18:46 +02:00
8dd3bfbb07 tools: install local preview QML stubs
openSUSE Tumbleweed's plasma6-nm 6.6.4 does not ship the org.kde.plasma.networkmanagement.cellular QML submodule that SignalStrengthInfo.qml imports unconditionally. Without it the MobileShell QML namespace fails to load and preview boots to a black screen.

Keep a minimal fallback module under tools/preview-stubs and install it only for local .prefix preview installs by default, with SHIFT_INSTALL_PREVIEW_QML_STUBS=AUTO/ON/OFF for explicit control. Add a CTest guard so qmldir entries stay backed by real files and the fallback remains tied to the QML import tree.
2026-05-19 09:18:46 +02:00
8e25b68355 quicksettings: request -symbolic icons for masked tiles
Kirigami.Icon { isMask: true } flattens an SVG to its alpha, so when a quick-setting tile resolves to a colored preferences/scalable glyph the whole rounded background collapses into a solid square. Append -symbolic to the five icon names that collided with colored tiles and add symlink aliases where no real symbolic variant exists yet. Guard the regression with a check in tests/check-shift-icon-theme.sh.
2026-05-19 09:18:46 +02:00
d1e55a47a7 Guard explicit Breeze QQC2 fallback
Keep Breeze QQC2 as an intentional dependency until Shift ships a real QQC2 or widget style. Extend the theme identity test to reject fake Shift style selectors and require the fallback to stay documented in launch paths.
2026-05-19 09:18:46 +02:00
1de58ed486 Add initial Shift desktop theme frame assets
Provide the first real Shift Plasma desktop theme SVGs for panel and widget frames used directly by the shell. Cover dark and light modes, including solid panel backgrounds for opaque panel states.

Extend the theme identity test so the desktop themes cannot regress to metadata-only packages.
2026-05-19 09:18:45 +02:00
65efc37410 Unify Shift theme identity 2026-05-19 09:18:32 +02:00
e54696b5c6 Make icon theme test BusyBox-compatible
BusyBox find does not support GNU find's -xtype predicate, which
caused shift-icon-theme-coverage to fail in CI. Iterate symlinks with
portable find -type l -print0 and let Bash check whether each target
exists instead.
2026-05-17 18:31:58 +02:00
40d0828343 Add SPDX header to icon theme REUSE test 2026-05-17 17:46:43 +02:00
f00a29bd21 Brand KCM and KDED metadata as SHIFT
Point the mobile shell, navigation, and Waydroid KCM metadata at the Shift repository. Brand the KDED startup and APN autodetect module names and descriptions as SHIFT while keeping existing plasma-mobile plugin/library identifiers stable.

Add a guard for these metadata surfaces so upstream project URLs and translated Plasma Mobile overrides are not reintroduced.
2026-05-17 16:31:45 +02:00
82316c393e Brand containment metadata as SHIFT
Point homescreen and panel containment metadata at the Shift repository. Update the panel and task-panel descriptions from Plasma Mobile to SHIFT, and remove translated descriptions that would override the corrected base metadata.

Add a containment metadata guard while preserving the existing org.kde.plasma.mobile.* applet target IDs.
2026-05-17 16:27:48 +02:00
d0967c100f Brand quick settings metadata as SHIFT
Update quick setting package metadata to use SHIFT-facing descriptions and repository links while preserving org.kde.plasma.quicksetting.* package IDs. Drop translated Description entries that could override the corrected base descriptions, update the Caffeine inhibition reason, and add a guard for future regressions.
2026-05-17 16:09:52 +02:00
4b34bca697 Brand initial setup module metadata as SHIFT
Update first-run KPackage descriptions and websites so package-visible metadata points at SHIFT while keeping the existing mobileinitialstart package IDs stable. Remove localized Description entries that could override the new SHIFT-facing base descriptions. Add a CTest guard for the first-run module metadata.
2026-05-17 15:54:55 +02:00
18bef9a573 Brand product metadata as SHIFT
Update session, AppStream, service, shell metadata, and initial setup about/defaults to use SHIFT-facing product metadata while keeping runtime package IDs and executable names stable. Install Shift AppStream metadata and remove stale upstream metainfo from existing prefixes. Add a guard for product metadata branding.
2026-05-17 15:44:56 +02:00
e6f076ed54 Add Shift icon theme and coverage guard
Install org.shift.icons as the look-and-feel icon theme while keeping the Plasma style on breeze-dark. Add the icon-theme coverage guard and CTest registration so shell, System Settings, KCM, and installed Plasma icon names do not silently fall back to missing Breeze-only assets.

Document the theme rules and add scoped REUSE metadata for the Phosphor-derived SVG glyphs.
2026-05-17 08:56:33 +02:00
e72165ec98 Unify convergence dock geometry and add invariant test
Introduce shared dock height/reveal constants and use them in folio and taskpanel to keep overlay and exclusion zone aligned. Keep dock backing stationary while only content slides, and add a CTest invariant script to prevent regressions.
2026-05-04 11:43:41 +02:00
5c319d2e7e Rename look-and-feel package to org.shift.mobile
Update the package ID in metadata.json, the translation catalog
name in Messages.sh, the compile-time default in envmanager, and
the test suite --lookandfeel flag. Rename the 41 .po files from
the old org.kde.breeze.mobile catalog name.
2026-05-04 11:40:41 +02:00
Devin Lin
a8b858dc3e Remove kirigami version in imports
This fixes potential issues stemming from pinning versions on Kirigami
qml api imports
2026-03-06 22:08:07 -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
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
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
Devin Lin
76882f5b5d actiondrawer: Share components between portrait and landscape
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
2024-10-31 15:27:00 +00:00
Marco Mattiolo
ac91c9fe11 Drop semicolon after Q_UNUSED() for consistency through the repo 2024-09-28 06:31:00 +00:00
Laurent Montel
8c2faecb96 Remove virtual keyword when we use override 2024-08-19 07:39:01 +02:00
Devin Lin
eb9509ce68 Remove trailing whitespace 2024-07-26 23:47:44 -04:00
Devin Lin
89efc8bc7f tests: Add plasma-mobile-notificationtest binary
This will make it easier to test all sorts of notifications with our notification widget. Just run `plasma-mobile-notificationtest [test-name]`.
2024-07-26 20:28:55 +00:00
Devin Lin
e044c84219 lockscreen: Fix potential cause of input unresponsiveness
BUG: 484054
This is a potential fix for the input to stop working. There was unused code for passwordless login that could cause the "waitingForAuth" variable to never be set to false after user input.
2024-06-23 13:03:12 -04:00
Yari Polla
4f45654af6 Port mobileshell plugins to ecm_add_qml_module 2023-11-02 11:08:17 +00:00
Devin Lin
93395acd02 lockscreen: Port to new API 2023-10-28 18:47:00 +00:00
Yari Polla
0070848cfb remove versions from notificationmanager import 2023-10-21 11:31:55 +02:00
Devin Lin
04ea2c4453 tests: Fix themes 2023-07-25 14:34:47 -04:00
Alexey Andreyev
127bbdf653 Port away from PlasmaCore and PlasmaExtras to Kirigami
See also:

https://pointieststick.com/2023/06/14/call-to-action-easy-porting-opportunity-in-plasma/
2023-07-25 01:13:52 +00:00
Devin Lin
fe7a453ddd lookandfeel: Rename folder to be have a consistent name with other shells 2023-04-02 19:58:41 -07:00
Devin Lin
1dbb1c78f6 Port to Qt6/KF6 2023-03-03 06:01:23 +00:00
Seshan Ravikumar
979d35ef06 tests: Update readme with ksmserver-logout-greeter info for power menu
Updates the tests README.md with the command to launch ksmserver-logout-greeter with the phone look and feel.

Requires https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/2293
2022-11-02 23:44:23 +00:00
Devin Lin
4b3eb8008c tests: Add LockScreenTest 2022-06-18 17:09:10 -04:00
Devin Lin
8d1263722c tests: Fix license 2022-06-06 21:29:28 -04:00
Devin Lin
ee13948d37 tests: Add new folder for test snippets, and add QuickSettingsTest 2022-06-06 21:26:37 -04:00