Тема: 36-часовое смещение для ДР в календаре: как изменить?
Все добавленные из книги контактов ДР приобретают дату начала вида ДД-ММ-ГГГГ-00:00:00, а offset срабатывания получают минус 36 часов. Это мне не нравится, хочется, чтобы в 11:00 утра нужного дня, а не в 12 утра за двое суток до.
Что уже сделано.
1. Найден и поковырян файл /home/user/.calendar/db, в котором лежит sqlite-база для календарей и заметок. Там есть таблица Alarms, в которой заданы смещения для сигнала. Для ДР это -129600 (то есть, -36 часов). Вручную заменить на 39600 (то есть, +11 часов) можно, не вопрос. Но что потом сделать, чтобы аларм-лист обновился - неясно. ДР с уже заменённым смещением у меня сначала отработал за 36 часов. Потом было много и перезагрузок, и изменений таблицы, и ещё чёрта лысого, и вот сегодня в 11:00 этот ДР снова отработал.
После чего в /var/cache/timed/aegis/events.data именно для этого события указалось 11:00 текущего дня для 2013 года. Но вряд ли это аларм-лист. К тому же, я не смог пока его ни изменить, ни удалить вручную.
{
attr =
[
{ key = "APPLICATION", val = "libextendedkcal" },
{ key = "PLUGIN", val = "libCalendarReminder" },
{ key = "TITLE", val = "Григорий Ганжа" },
{ key = "alarmtime", val = "2013-04-28T11:00:00" },
{ key = "allday", val = "true" },
{ key = "notebook", val = "b1376da7-5555-1111-2222-227549c4e570" },
{ key = "recurs", val = "true" },
{ key = "time", val = "2013-04-28T00:00:00" },
{ key = "type", val = "event" },
{ key = "uid", val = "com.nokia.birthday/111265" }
],
b_attr =
[
{
attr =
[
{ key = "label", val = "Snooze 15 minutes" },
{ key = "snooze_value", val = "15" }
]
},
{
attr =
[
{ key = "label", val = "Snooze 10 minutes" },
{ key = "snooze_value", val = "10" }
]
},
{
attr =
[
{ key = "label", val = "Snooze 5 minutes" },
{ key = "snooze_value", val = "5" }
]
},
{ attr = [ { key = "label", val = "Close" } ] }
],
cookie = 676,
flags = $aligned_snooze|$backup|$hide1|$reminder|$trigger_if_missed|$user_mode,
snooze = [ 1, 900, 600, 300, 0 ],
ticker = 1367132400
},
2. Обнаружено, что в файле /usr/lib/contactsd-1.0/plugins/libbirthdayplugin.so перед вызовом функции KCalCore::Alarm::setStartOffset идёт закидывание числа -129600 в регистр:
SUB R4, R11,#-var_80
MOV R1, #0x5C0
MOV R2, #0
MOVT R1, #0xFFFE
MOV R0, R4
LDR R6, [R11,#var_A0]
BL _ZN8KCalCore8DurationC1EiNS0_4TypeE
MOV R0, R6
MOV R1, R4
BL _ZN8KCalCore5Alarm14setStartOffsetERKNS_8DurationE
Однако прямая замена числа FFFE05C0 на любое, хотя бы FFFE05B0 уже приводит к тому, что при записи ДР в календарь происходит какой-то сбой, по-моему, библиотека просто не грузится.
3. Предположил какое-нибудь сравнение с -129600 где-то в вызываемых функциях. Посмотрел на эту тему libkcalcoren.so.4.2.5+0m7 (идой также). Ничего путного на эту тему не нашёл. Глянул исходники этой KCalCore - что-то тоже ничего такого не увидел.
4. Просмотрены талки на маемо.орг. Там есть тема по этой проблеме, но внутри ничего вообще, кроме вопроса "как?" и двух страниц с сообщением "+1".
Куда ещё можно рыть?