in the old implementation KNotificationManager was not locked but it is
global static so it is subject to thread-safety issues thus it has to be
mutex-locked
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
questionable but the old implementation was doing it, as for why it is
questionable - it is more like a description rather than application name
(e.g. "Crash notifier" rather than "kcrash")
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
while in most cases it is the same as the main component name the always
correct value (now anyway) is the main group which is part of the event ID
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
because the old KNotification implementation did not look for sounds
recursively it was not possible to set a relative sound file that is
supposed to not be in one of the main sound directories (e.g a sound in a
sub-directory like /usr/share/sounds/freedesktop/stereo/message.oga, for
such files the full path had to be set in the notification config but no
more)
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
another rewrite of bits dating back to 1997 done:
https://ibb.co/5GKtQT1
while working on it the idea of writing custom widget that will act as
checkbox but look something like a slider and using that instead of tables
popped up (the widget design itself is not new but using the widget in new
UIs will be).
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
cleaning up the mess, everything but KNotificationConfigWidget is
implemented.
not only does it not require additional D-Bus service (knotify) to
function but also does not transmit pixmaps over D-Bus, the features
to execute command or log to file are dropped and will not be
implemented.
also about markup support in notifications - if the server does not
support markup then it is supposed to strip it, see the spec:
https://specifications.freedesktop.org/notification-spec/notification-spec-latest.html#backwards-compat
meaning nothing should be done by KNotification itself because it is not
a server, it is just a proxy.
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
because the status notifier data engine (see
kde-workspace/plasma/dataengines/statusnotifieritem/statusnotifieritemsource.cpp)
assumes that pixmaps are not larger than KIconLoader::SizeLarge
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
does nothing but slow down the image serialization on little endian really,
the image data is not ment to be saved and passed around to other host
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
the methods and signals were implemenented for compat with libdbusmenu-qt
but KStatusNotifierItem tracks status by itself for example, internal menu
synchronization (e.g. triggering importer action when exporter action is
triggered) can be implemented via the D-Bus adaptor and interface but is
currently not required
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
Katana (or any interface designed around key and mouse events) is not
for blind people, trying to slap text-to-speech on top of it was the
wrong thing to do to begin with
side note: speech-dispatcher tends to hang if the output device is not
configured properly (i.e. editing /etc/speech-dispatcher/speechd.conf
manually)
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
KGlobalAccelPrivate uses service watcher and the interface is invalid until
the service is activated (either by the first call of the interface or some
other lazy-initialization method), however KNotificationManager does
connect to signals immediately (which should work regardless) but the error
may have been logged before
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
creating QDBusInterface should start the services, in case the services
cannot be started tho delays may be experienced (such as the UI freezing
while waiting for D-Bus reply to finish) thus logging error
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
it cannot be detached even if not copied (as done when it is not in
QImage::Format_ARGB32 format) because image is constant reference but if it
is converted it will be actually detached, also QByteArray takes ownership
of the data
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>