This is for jobs, such as "Loading archive" or "Examining..."
which are purely informational and provide no meaningful
action once finished. When this property is set, a job will
not show a "Finished" notification when finished successfully.
This ensures that the first `update()` call with the summary will be shown
atomically to the user rather than show an empty job popup briefly.
Also handle the delay on a per-job basis, previously there was a common
timer, which made no sense.
This ensures that an error message the app might have sent in response to the
cancel request is still shown.
Also, while at it deduplicate code by calling into `terminate` from the
service watcher.
This implements a new JobViewV3 which uses extensible variant maps rather than individual function calls,
allowing for compression of calls and extensibility.
The new API uses infoMessage correctly as a state message, e.g. "Connecting to host" rather than mixing it with the "Copying..." heading.
It also supports an "immediate" flag that the caller can use to indicate progress should be immediately shown,
so in cases where the user is likely to want to use the file afterwards (e.g. download through p-b-i or receiving a file
through KDE Connect) a job popup is shown even for small/short transfers.
Differential Revision: https://phabricator.kde.org/D23293
Register notification and job tracker services with "allow replacement" flag if not plasmashell,
so when it eventually comes up, it can claim the service and then cling on to it.
BUG: 408250
FIXED-IN: 5.16.2
Differential Revision: https://phabricator.kde.org/D22017
This is a similar situation we have with Flatpak when the desktop entry the application thinks it owns is actually different.
In Snap this environment variable is passed to the process. When no service was found, try reading it.
CHANGELOG: Improved notification identification for Snap applications
Differential Revision: https://phabricator.kde.org/D21881
We watch the service owner so that when it dies without finishing the job we communicate an error to the user.
When the job is stopped, the job is "done" and we don't need to watch the service anymore.
Differential Revision: https://phabricator.kde.org/D21366
Should Plasma be too busy to process a request and the app that requested it quit before Plasma processed it,
we will get a defunct job view that cannot be canceled because the app that owned it isn't listening anymore.
Differential Revision: https://phabricator.kde.org/D21180
- 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
* 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. :)