Rather than relying on `Plasmoid` from deep down in `NotificationItem` code,
which is not possible when run inside the popup.
In `Globals` we have access to our own `plasmoid` property directly.
This commit re-implements the critical notification to be inside the
notification popup, not the notification item. This yields several
benefits:
- It's the semantically correct place to implement it since critical
notifications don't appear in the history, so there's no reason to
implement it in a component that's re-used for the history view
- The line extends down to the bottom for critical notifications that
have buttons, job progress, text input fields, files, or screenshots
- Simpler code overall
This reverts commit be7efa5ec2.
This reverts commit 93355636de.
This was not the best way to implement the feature, as it failed to take
into account the fact that critical notifications can have more content
than just text. A better place to implement it would be in the popup
itself.
Prevent `TextArea` in SelectableLabel from accepting wheel
events when the notification item is in FullRepresentation,
and pass wheel events to `ListView` in FullRepresentation when the
cursor is over the `TextArea`.
BUG: 443840
FIXED-IN: 5.24
We get intermittent user complaints and bug reports about notifications
not being visible enough, especially on large or cluttered screens.
This commit attempts to remedy the situation by tinting the header for
on the left side for critical notifications using the color scheme's
"warning" color. Only critical notifications receive this treatment
since they're the only ones that the user really does need to see.
BUG: 420541
FIXED-IN: 5.24
The app name in the header has poor text contrast because it is 40%
transparent and sits on a gray background. It is also using a
semantically incorrect UI component (DescriptiveLabel) which was meant
for de-emphasized subtitles, not titles. The correct component for that
is a Heading, so let's use that.
Because this means that we will hve two identically-sized headings in
close proximity, we need to distinguish the text for the notification
title without making it huge, which is overkill for a notification. To
accomplish this, this MR uses the Heading's "Primary" type which was
made for this purpose.
These properties were not set correctly and produced a flood of console
spam instead of the desired effect. However the desired effect (header
that touched the edges of the popup) was already achieved anyway through
other means, so they are not needed at all. This commit removes the
offending properties.
This property applies to FrameSVGItem, but notifications were ported to
use PlasmoidHeading directly in dcc448f72f.
Let's remove the now-unused properly so it doesn't cause an error and
spam the log.
There's a custom PlasmoidHeading implementation in notifications now.
This patch ports it to use the generic component. If some changes get made to the component, they will now be reflected in notifications.
There's no API to set `linkColor` on `TextEdit` and it would use the
system link color potentially clashing with the Plasma theme.
BUG: 438366
FIXED-IN: 5.22.3
The context property version is slower to access and won't be supported
in Qt6. Let's port away from it and use the singleton version instead.
Here was my full process for making this change:
1. Made the change with `find . -name '*.qml' | xargs perl -pi -e 's/units\./PlasmaCore\.Units\./g'`
2. Verified no more occurrences with `grep -r " units."`
3. Made sure this didn't change any comments in a silly way by inspecting the output of `git diff | grep "+ " | grep "//"`
4. Manually inspected the full git diff to make sure there were no other unintentional or silly changes (there were none)
5. verified that all changed files have the PlasmaCore import with the correct name with `for FILE in `git status | grep modified | cut -d ":" -f 3`; do grep -q "as PlasmaCore" $FILE || echo "$FILE needs the PlasmaCore import"; done`
Ensures built-in functionality like double- and triple-clicking text works.
Also lets us get rid of the custom text selection handling, replacing it with
an even filter class.
BUG: 431398
FIXED-IN: 5.22.0
For some reason beyond me when all elements in the JobItem turn invisible,
e.g. when a job finishes (its progress bar hideS), and there are no action
buttons (e.g. when a job fails), the Loader does not collapse properly.
This brings the PlasmoidHeading used in the notification item into
visual consistency with other PlasmoidHeadings, once we merge
https://invent.kde.org/frameworks/plasma-framework/-/merge_requests/98.
When using a color scheme that lacks Header colors, there is no visual
change whatsoever.
This begins the process of porting plasma-workspace to PlasmaComponents3. At
this point, only the relatively easy work is done. Every file not ported
now has been given the reason for still using PC2 in a comment on the import
line so you can see at a glance what the blocker is by running
`grep -r "org.kde.plasma.components 2.0"` in the repo.
Everything is tested and there are no breakages or functional regressions. In
the process, a few unused imports are removed.
Here are the remaining PC3 omissions blocking what's left from getting easily
ported:
- No Highlight
- No ListItem
- No PageStack
- No ContextMenu
- No QueryDialog
- No ModelContextMenu
- TabBar has no left and right tab states
- ToolButton has no built-in method to show a menu when clicked
Summary: The negative top margin was not necessary and causes missing round corners.
Test Plan:
No visual change on master
With D29479, rounded corners should appear again
Reviewers: #plasma, ngraham
Reviewed By: ngraham
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D29490
Summary: This hides the plasmoidHeading on history for not grouped notifications
Test Plan:
After:
{F8288756}
Reviewers: broulik, ngraham
Reviewed By: broulik, ngraham
Subscribers: ngraham, plasma-devel
Tags: #plasma
Maniphest Tasks: T10470
Differential Revision: https://phabricator.kde.org/D29474
This mutates the source array.
In practice actions don't really change in existing notifications but still better to not do that.
Differential Revision: https://phabricator.kde.org/D28650
Makes it more obvious that there is an inline reply rather than having a "Reply" button where the user must guess what it'll do.
Differential Revision: https://phabricator.kde.org/D26796
This adds a quick reply feature with a text field inline in the notification popup.
An action named "inline-reply" will spawn the text field and a NotificationReplied signal is emitted then.
There's additional kde hints for changing the placeholder text (defaults to "Type a reply..."),
submit button text (defaults to "Send") and submit button icon name (defaults to "document-send",
that paper aeroplane icon).
This adds a file icon to a finished job for a single total file which can be dragged anywhere for convenience.
Differential Revision: https://phabricator.kde.org/D25782
Summary:
This uses the new KQuickCharts framework to render the notification timeout bar as a small
circular progress bar, around the close button.
Video:
{F7818131}
Test Plan:
notify-send -t 15000 test will first show a notification with no indicator, then once the
timeout gets to 10s or less it will show a decreasing circular progress bar.
Reviewers: #plasma, broulik, ngraham
Reviewed By: #plasma, broulik, ngraham
Subscribers: ngraham, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D25993
This edge touches the notification text and as such shouldn't "bleed in" as with the other edges that touch the dialog borders.
Previously this wasn't an issue as there was a bug causing excess bottom padding on the dialog.
Differential Revision: https://phabricator.kde.org/D21569
The popup is a pure QML singleton and as such doesn't inherit the i18n context from the applet. Use i18nd explicitly.
BUG: 407927
Differential Revision: https://phabricator.kde.org/D21422
This makes it a bit more generic. Advertise that this may also be used to indicate what email account a notification came from.
Differential Revision: https://phabricator.kde.org/D21137
- Fix leak and crash when job goes away before being shown
- Some emit and signal fixes
- Always create services watchers
- Update unity job percentage in destructor, fixes the progress lingering around when disabling in settings
Also tell the world that we're merely proxying a job progress
- Don't hardcode KIO error codes
- Honor "show critical on top of full screen" setting
- Don't show generic "dialog-information" icon, it's pointlessly generic
* Make dataengines work fully standalone
* Fix panel icon sizing
There's still an issue with the popup size when resizing the vertical panel smaller so it collapses
* Implement keyboard navigation for the list with focus hacks...
Delete key closes notifications or groups, Arrow left/right expand/collapse groups, Enter invokes default action, if any
* Fix DND times that are supposed to be hidden showing
ModelContextMenu doesn't respect "visible" property
* Move "Notifications" header to ListView header so it scrolls away and leaves more room for the notifications in systray popup
* Fix finished jobs in history showing as failed when app is closed
* Don't remember apps that spawned jobs, only for notifications
* Use CriticalNotification window type (patches pending)
It is supposed to broadcast application job progress to multiple interested parties.
However, effectively it was just plasmashell. Cut the middleman, including its never finished and unused UI,
and talk to plasmashell directly.
The applicationjobs dataengine is adjusted to use the new infrastructure instead.
Since it works only in the same process now, Unity launcher API is used to at least broadcast basic
application progress information for use in e.g. Latte Dock.
Also, introduce JobViewServerV2 and JobViewV3 APIs which are using desktop entries for identification rather
than application names, and more importantly are extensible using a QVariantMap hints, so adding new
fields in the future should be significantly less painful with Frameworks, Applications, and Plasma all having
their own release schedule. :)
* Ship some more default rules in plasmanotifyrc
* Improved do not disturb menu (add "for 4 hours" and "until disabled")
* Expand unread notifications by default, overall improved expansion/collapse handling
* Show unread count in panel and reset when plasmoid is closed again
* Move notification sanitizer and its test from dataengine to lib
* Load pixmaps into model also for files and limit their physical size
* Enforce maximum limit for notifications (1000...)
- Rename some of the classes:
NotificationServer -> Server (there's namespaces, you know)
NotificationModel -> NotificationsModel (so it's plural like JobsModel)
- Introduce NotificationGroupingCollapse
- Wire up PulseAudio-qt for eventual notification silence in dnd mode
- Touch up notification looks
- Add indentation and "line" for grouped plasmoids
- Rethink "show more" button to be at the end
- Fix buttons overlapping
- Remove NotificationDelegate item and do those few adjustments in FullRepresentation
- Cleanup job details, handle when processed > total
- Use States {} more
- Show low urgency popups by default but don't add them to history
- Rework compact representation animations a bit
For some reason they often got stuck
- Implement do not disturb mode for applications
- Add fallback timeout to ensure notifications eventually timeout
Otherwise when disabling dnd mode you will get spammed
and we would also keep apps running indefinitely waiting for the notification to close
- Install plasmanotifyrc with some sane defaults
So far only lets Spectacle show its screenshot notifications in dnd mode
- Introduce Closable role rather than hardcoding that behavior everywhere in the view
- Better app identification/grouping for jobs
- Be more lenient about app identification (firefox will match Firefox, too)
- Cleanups
- Add basic do not disturb mode
Can set a time until it enabled, persisted across reboots
Whitelist for apps missing right not
Inhibition API not wired up yet
- d-pointer JobDetails
- Use KFilePlacesModel for prettier destUrl reporting "Copying to Home"
- Expose default action in history as button
- Improved right-to-left language support
- Let NotificationServer just lurk (without registering a service)
- Catch when plasmoid is deleted and stick to another one
Our dear friend Notification plasmoid has slipped the surly bonds of Earth
to touch the face of eternal preservation in Git history. It leaves a huge
emptiness in the hearts of all of us who loved it, many who here its friends.
Originally concveived in 2011 as a "New QML based notifications plasmoid
for mobile", it quickly outgrew its creator's vision and became a vital
component of the Plasma Desktop. When the new kid on the block arrived in
the form of Plasma 5, it showed its willpower to survive this stark transition
and served us for another half a decade. It taught us to seize every
opportunity to increase productivity and improve user experience,
yet it became evident that it reached its limits and so on April Fools' Day 2019
its heart beat for the last time.
Farewell!
Summary:
This patch lifts up the text content of notifications in which the combination of a single line of body text and its heading are taller than their icon and thereby prevents the notification content from drooping too far down and having too much of a bottom margin if it should become much larger than the icon. Seeing as the icon and its margins are never going to be taller than the content in question and the icon is always going to have 1 units.smallSpacing above it, this patch adjusts the height accordingly (0.5 units of smallSpacing above + 0.5 for the spacing below the heading + 0.5 below the content, accommodating the text) to achieve more even padding.
This patch should also improve padding with fonts greater than 10 pt in size.
BUG: 404407
FIXED-IN: 5.15.3
Test Plan:
Before (left) and after (right):
{F6616780}
Reviewers: #plasma, #vdg, broulik, ngraham, filipf
Reviewed By: #vdg, ngraham, filipf
Subscribers: cfeck, anthonyfieroni, filipf, ngraham, abetts, broulik, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D19036