https://bugs.kde.org/show_bug.cgi?id=481166

--- Comment #6 from Flossy Cat <flossy-...@online.de> ---
(In reply to David Jarvie from comment #5)
> Yes, KAlarm is for both technical and non-technical users, but to serve the
> latter, it needs a simple interface. More advanced users can expand the
> range of displayed options, and use such things as command alarms.

A good solution.

> Currently, if the user configures KAlarm to access in read-write mode a
> calendar which has been created by another application, KAlarm will write
> its own custom properties into the VEVENTs and VALARMs in order, for
> example, to track when recurrences were last triggered by it. If alarms are
> subsequently created or edited, they also will contain KAlarm custom
> properties. If the user also accesses the calendar file from another
> application such as KOrganizer, the KAlarm specific data may or may not
> survive, so this could alter how KAlarm functions for these alarms.

(My answers rest on https://github.com/KDE/kalarm/tree/master/src – 
I hope this is the correct repository (it still has Akonadi-calls in it and you 
mentioned the docs where outdated, because Akonadi support was dropped …))

As your custom properties have the RFC-conformant custom property prefix 
you at least have done anything possible to make it work – but of course you
are right: alas that is no guarantee …

For KOrganizer I can report: it works correctly with an ICS file both share in
R/W mode.
(Both detect if the other application changed content and reread the file, but
of
course there are no provisions for avoiding concurrent changes (which would
either corrupt the file or loose changes of one application) – but careful
handling by the user …))
(Therefore my question about ICAL directory calendar sources – they, for
various reasons, reduce this risk significantly …)

Actually, there might be a really good solution for this: 
The "Related To" property (see
https://www.rfc-editor.org/rfc/rfc5545#section-3.8.4.5).

KAlarm would then generate a dependent object (child), referencing back to the
parent object in the r/o ICS of the other application.

With any luck »kcal« already has implemented it, and might even has a complete
view of all calendars within KAlarm, so that it just works …

In effect the child would have access to changes of the parent, especially
deletion or start/end changes (for relative alarms) and any need to write
anything back into the shared ICS would vanish …

> Having thought about what you've said, I realise that KAlarm could handle
> alarms within VTODOs similarly to those in VEVENTs, and update them with its
> own custom properties to keep track. There isn't any need to copy VTODO
> alarms into VEVENTs - they can just stay in the VTODOs, and KAlarm would
> simply ignore the todo-specific data.

We are on the same page.

> Consideration would need to be given to:
> 
> 1) How to handle VTODOs with multiple alarms. Currently, KAlarm stores each
> user-configured alarm in a separate VEVENT (although it often creates
> multiple VALARM instances within the VEVENT to handle different aspects of
> what to the user is a single alarm: for example, a display alarm which also
> plays a sound would contain a VALARM for display and a VALARM for sound, but
> there are other less obvious reasons to have multiple VALARMs). This scheme
> would not be able to handle two completely separate alarms in a VTODO (and
> indeed doesn't handle two completely separate alarms in a VEVENT either).

RFC 5545 not only allows but advocates that VEVENT/VTODO can each have multiple
VALARMs with absolute or relative time specifications triggering at different
points in time (and actually each VALARM can have its own summary and
description, which is useful for some use-cases (example see below)).

KAlarm should be capable to cope with this and the ICAL library may already is
…

> 2) When a VTODO alarm is edited in KAlarm, should it be saved as a
> replacement VTODO? I presume yes.

Well, KAlarm has its native entries (via command line parameters, via its own
GUI, via imported ICSes or perhaps in the future from D-BUS messages – see
below). For these of course: yes.

Then it has external entries from ICS files shared with another ICAL-aware
application.

I can imagine many use-cases where KAlarm and the other application act as
peers, both writing changes back with collision avoidance done by some outside
mechanism.

Finally I see some asymmetric use-cases where KAlarm is ancillary as a reminder
manager for a calendaring application.
The calendaring application is the owner/manager of the events and todos – and
the place for editing them.
KAlarm allows fine-tuned managing of the reminders and has r/o access to the
calendar of the other application.

Technically I hope "Related To" works as solution.

>From the user's point of view:
When a "Related To" alarm is edited, the GUI shows the summary and description
of the event/todo as read-only together with some hint of the managing
application (typically indicated in the ICAL file) and the external calendar
and an indication that the event itself must be managed there, whereas KAlarm
only manages the reminder. The timing, summary (name), and description
(message) of the alarm proper can still be edited by the user as normal. 

> 3) It isn't just snooze information which currently isn't stored for
> read-only calendars. Also, data on the last triggered recurrence would be
> needed in order for read-only alarms to operate in the same way as
> read-write ones. I suppose that snooze data could perhaps be stored in
> KAlarm's default calendar, and if when the snooze expired the original
> read-only alarm or calendar was no longer available, the snooze would be
> ignored and the snooze data deleted. 

Again "Related To" hopefully solves this for us.

> I'm less sure about keeping recurrence
> trigger data in the default calendar, since that is much longer lasting, but
> in principle it could also be done (as long as it is deleted if the
> read-only alarm or calendar becomes unavailable).

We have two types of recurrences: 
Recurrence definition of the VEVENT/VTODO itself, and recurrence definitions
within a VALARM.

I give a practical us-case example to make the discussion more concrete:

Here, cars have to have a technical inspection every 2 years. 
In my calendaring this is a todo, recurring every 2 years, starting with the
first of the relevant month and due with the end of this month. 
(I use a todo as an event would visually clutter a whole month …)

A VALARM is set to remind me one month in advance before the start.

If this alarm is reported by KAlarm – say on a late friday afternoon – I know
that calling the garage will be in vain till Monday. So I defer the alarm
accordingly – solely within KAlarm without any change in the todo (which sits
protected in a r/o calendar anyhow, waiting to trigger again in 2 years).

Let's say on Monday their answering machine tells me, they are on vacation till
next Monday.
I defer the alarm again, by 1 week and 1 day (i.e. till Tuesday), because next
Monday they will be flooded by calls. Perhaps I lay down some short note in the
alarm description, why I postpone till Tuesday (still leaving the actual todo
unchanged, because this note only applies to the current year and my current
workflow, which is managed by KAlarm).

Say, on Tuesday we fix a date for the inspection: I add an event (showing up in
the calendar view) at the date in my calendaring application with some
appropriate reminder setting and close/deactivate the alarm within KAlarm,
because it has fulfilled its job.

When the reminder for the car inspection triggers, I tidy up the car for
inspection, and set a deferred alarm for driving the car to the garage.

Let's discuss within the workflow of this use-case.

If a calendar is used in PARENT/CHILD mode I would ignore the recurrences of
the event/todo – this is the sole responsibility of the parent calendaring
application as it has nothing to do with reminder management and KAlarm is NOT
the owner of the event, just of the reminder.

I'm unsure about recurrence definitions in the VALARM stanzas – I've never used
them and personally see no real use-case, because I delay my reminders
according circumstances – as lined out above. But may I'm just not imaginative
enough. Therefore I'd suggest to honor recurrences with VALARMs within
PARENT/CHILD mode.

With native KAlarm events I'd actually would see good uses for VALARM
recurrences, anyhow.

> 4) I don't understand what you are proposing about D-BUS
> events/notifications. Do you mean events/notifications not sent to KAlarm?

Yes.

> If so, what types? 

Probably solely/mainly those addressed to »org.freedesktop.notification«.

Here two sample use cases:

1. capture reminders send to the desktop notification service by calendaring
applications
This implements are more loose coupling than the "Related To" approach and
allows interfacing with calendaring applications not using ICAL files. The user
would configure KAlarm to act upon the D-BUS message (by configuring a template
with an D-BUS filter expression – the template being populated by the content
of the DBUS message and instantiated into an alarm). To avoid double
notification the user may silence the corresponding notifier action in the
desktop notifier.

2. react upon events like loosing contact to a bluetooth device and the like
This specifically could – together with a command alarm – implement something
like »bluelock«, i.e. screen-locking a device when separated from a bluetooth
token (smart watch, headset, etc.) worn by the owner.
(I know, 
2.1 this is not completely secure, as the bluetooth connection could be relayed
over quite a distance by a skillful opponent – nevertheless it is a useful
precaution against random theft or spying …
2.2 actually that is a job for UDEV. While I dauntlessly edit UDEV rules
(always with the documention in view ;-), I know many technical users
(rightfully claiming this category) which wont … And UDEV works system-wide
(ok, for my laptops), while KAlarm would easily allow user-login-session
specific actions …

If you find this interesting, I'd go into technical detail.

> Also, if you're saying that this stuff wouldn't work on
> KDE, then I don't think it really belongs in a KDE application.

Technically there is absolutely no obstacle.
The existing functionality is just arbitrarily removed by solitary
short-sighted unimaginative decision making …
(see https://bugs.kde.org/show_bug.cgi?id=481068 and
https://bugs.kde.org/show_bug.cgi?id=481069)

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to