The inhibition handling (e.g. combining time-based, screen mirrored, etc) is done inside the applet.
The Server knows nothing about it and only reports Inhibited as true when an external application
requested one, not when the user enabled it in the applet.
This patch exposes the NotificationManager.Server as singleton QML type and adds a way for the
applet to tell it the effective inhibition state.
Exposing the server to QML could also be used in the future to provide better error reporting
to the user when the service isn't running and/or owned by someone else (e.g. Dunst)
Differential Revision: https://phabricator.kde.org/D24486
The notification popup typically gets in the way of the system tray popup.
In case it would cover a Plasma dialog, hide the notification popup.
It doesn't specifically check for System Tray but then it will also get out of the way of your
calendar and other widgets you might have placed in the respective corner.
Differential Revision: https://phabricator.kde.org/D24208
Currently, a notification is considered "unread" when it was created or updated after the last time the user opened the history.
To alleviate this, when the notification popup is hovered, e.g. because the user wanted to drag an image out, select some text,
or open the "More" menu, it is considered read. It will still end up in the history but will not needlessly show the "unread notification" bell icon.
Moreover, job finished notifications are always considered read, as they are either from long-standing jobs which the user is likely aware of,
or confirmation of short tasks the user doesn't need explicit confirmation about. For example, extracting an archive in Dolphin,
I get an "Extracting (Finished)" but I don't want to explicitly acknowledge that notification because I can just enter the folder that was just created in Dolphin.
This surely doesn't fix the underlying problem of notification expiration and history, and the user might just interact wiht some
tray icons or the clock and not actually deal with the notification popup but this is imho an acceptable stopgap until a proper
solution is found, which won't happen in time for Plasma 5.17 anyway.
Differential Revision: https://phabricator.kde.org/D23977
Usually it's not very long, so in the common case of just an application name, it won't be truncated anyway.
But in case an origin is set, it might be. In this case, we want to make sure the end of the origin is shown, in case it is for identifying a website domain.
Differential Revision: https://phabricator.kde.org/D23690
This makes it group notifications of different "origins" not group together,
e.g. FooApp notifications from phone A won't be grouped together with FooApp notifications from phone B.
Also, email notifications from different accounts wouldn't be grouped together.
Finally, show the origin in the grouped header.
Differential Revision: https://phabricator.kde.org/D23583
Summary:
One thing that has been bugging me a bit with notifications is how close the pop-up is
to the screen corners/edges. It's so close that it obscures various things that live very
close to screen edges, such as windows' titlebars and the text input field in chat apps.
The latter case is really annoying in particular because if you have multiple chat apps
running, notifications from the app that's in the background will obscure what you're
typing in the text input field of the foreground chat app.
This patch fixes these types of issues by doing the following:
- Adjusting the popup positioning algorithm make popups that are in a corner equidistant from both adjacent screen edges, rather than only one
- Doubling the defualt distance from the nearest corner/edge
The combination of these changes allows pop-ups to no longer obscure window titlebars
and chat windows' input fields.
BUG: 401500
FIXED-IN: 5.16.5
Test Plan:
Top corner popup position no longer obscures window titlebar text and buttons: {F7259424}
Bottom corner popup position no longer obscures chat app's text input field: {F7259425}
Reviewers: broulik, #plasma, #vdg
Reviewed By: broulik, #plasma
Subscribers: cblack, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D23253
When two screens overlap during e.g. a presentation, automatically enable do not disturb mode.
As per usual with automatic do not disturb, it can be overruled by unchecking the checkbox in the notification plasmoid
where it will be disabled until the screen configuration changes again and it still find a mirrored screen setup.
Differential Revision: https://phabricator.kde.org/D22856
When switching to "unread" state, animate the bell icon.
It only animates for the transition to unread so you can see where it's going,
but not every time a notification comes in, as that would be annoying.
Differential Revision: https://phabricator.kde.org/D23044
Summary:
Text inside a small circle has a lot of problems with fitting in there
and being properly aligned.
Test Plan:
Breeze:
{F7180340, size=full}
Breeze (with D23019):
{F7178197, size=full}
Air:
{F7178312, size=full}
Oxygen:
{F7178315, size=full}
Reviewers: #vdg, #plasma, ngraham
Reviewed By: #vdg, ngraham
Subscribers: ngraham, broulik, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D23018
Summary: Currently, it uses `notification-disabled for a non-disabled state
Reviewers: #vdg, #plasma
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D23033
Summary:
When the notification count is in double digits, the numbers can overflow the icons which is meant to contain them.
This patch checks if there is more than 1 digit and then slightly reduces the size of the numbers.
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D22878
Since it is a custom `TextEdit` to make text selectable the workaround in the style didn't apply to it.
Differential Revision: https://phabricator.kde.org/D22858
When a new notification comes in, we first displace the existing ones to make room and then animate in the new one.
However, due to the PauseAnimation the item appears with its full opacity ontop of the existing notifications that move out of the way.
Add a PropertyAction to ensure the item has an opacity of zero initially.
Differential Revision: https://phabricator.kde.org/D22760
This makes it consistent with the configure button of the items in the list below.
BUG: 409140
FIXED-IN: 5.16.2
Differential Revision: https://phabricator.kde.org/D22075
The popup width is fixed, so don't rely on the actual dialog window width which might be bollocks.
More importantly, place the popups immediately and before they are shown so they show up
correctly and don't fly all over the place.
It can happen that the popup contents aren't readily laid out when we enter positionPopups() after
object creation, so don't reserve any space for the popup until it
Differential Revision: https://phabricator.kde.org/D22045
Summary:
If this entry is not added, kpackagetool5 tries to load the specific
packagestructure plugin, fails to load it and then writes the metainfo
as it is "application" instead of add-on
Reviewers: apol, ngraham
Reviewed By: ngraham
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D21991
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
This tries to use fontSizeMode but in conjunction with QtRendering to achieve better number alignment.
Since this is more "part of an icon" than "proper text" using QtRendering is acceptable.
Differential Revision: https://phabricator.kde.org/D21408
This was meant to provide some separation but since the arrow icon has so much padding around it anyway and more importantly,
it breaks alignment in the list, remove it.
Differential Revision: https://phabricator.kde.org/D21471
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
It is redundant with the title added by system tray. Even when added standalone it is kind of obvious that this is notifications.
The clear button is moved next to the configure button.
Differential Revision: https://phabricator.kde.org/D21361
AppletInterface does not emit change signals for screen properties, only ContainmentInterface does it.
Since a fix will only be in a future Frameworks version 5.16 won't depend on, mitigate the effect by not caching the property.
The property was only a lazy Connections replacement anyway.
Also, compress screen change updates to avoid flickery animation of the popup as you resize the panel.
CCBUG: 407504
BUG: 399257
Differential Revision: https://phabricator.kde.org/D21365
Summary:
The availableScreenRect is relative to the current screen, so if the notification
applet is not on the top-left screen, the notification popup will not appear next
to where the applet is but on the top-left screen instead. Adding the absolute
screen geometry to the availableScreenRect ensures that the popup is positioned
on the right screen.
Test Plan:
Position two screens above each other, place the panel on the bottom screen, the
notification now correctly appears on the bottom screen next to the applet.
Reviewers: broulik, davidedmundson, lbeltrame
Reviewed By: broulik, davidedmundson, lbeltrame
Subscribers: lbeltrame, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D21184
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
* Use index(n, m, parent) instead of parent.child(n, m)
* Update unity count when job is closed without stopping it first
* Iterate whole dataChanged range [topLeft, bottomRight] when group is resolved
* Generate roleNames from meta object
* Use checkIndex()
* Increase default timeout for notifications with thumbnail
* Improved keyboard nav, support Home/End, let Return open thumbnail