123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- #include <kopano/platform.h>
- #include <mapi.h>
- #include <mapidefs.h>
- #include <mapix.h>
- #include <mapiutil.h>
- #include <kopano/mapiext.h>
- #include <kopano/mapiguidext.h>
- #include "valarm.h"
- #include "recurrence.h"
- #include <kopano/namedprops.h>
- #include <kopano/CommonUtil.h>
- #include <kopano/Util.h>
- #include <kopano/stringutil.h>
- namespace KC {
- HRESULT HrParseReminder(LONG lRemindBefore, time_t ttReminderTime, bool bTask, icalcomponent **lppAlarm)
- {
- icalcomponent *lpVAlarm = NULL;
- icaltriggertype sittTrigger;
- if (lppAlarm == NULL)
- return MAPI_E_INVALID_PARAMETER;
- if (lRemindBefore == 1525252321)
- lRemindBefore = 15;
- memset(&sittTrigger, 0, sizeof(icaltriggertype));
- if (ttReminderTime && bTask) {
- sittTrigger.time = icaltime_from_timet_with_zone(ttReminderTime, false, nullptr);
- sittTrigger.time.is_utc = 1;
- } else
- sittTrigger.duration = icaldurationtype_from_int(-1 * lRemindBefore * 60);
- lpVAlarm = icalcomponent_new_valarm();
- icalcomponent_add_property(lpVAlarm, icalproperty_new_trigger(sittTrigger));
- icalcomponent_add_property(lpVAlarm, icalproperty_new_action(ICAL_ACTION_DISPLAY));
- icalcomponent_add_property(lpVAlarm, icalproperty_new_description("Reminder"));
- *lppAlarm = lpVAlarm;
- return hrSuccess;
- }
- HRESULT HrParseVAlarm(icalcomponent *lpicAlarm, LONG *lplRemindBefore, time_t *lpttReminderTime, bool *lpbReminderSet) {
- HRESULT hr = hrSuccess;
- icalproperty *lpTrigger = NULL;
- icalproperty *lpAction = NULL;
- icaltriggertype sittTrigger;
- icalproperty_action eipaAction;
- std::string strValue;
- LONG lRemindBefore = 0;
- time_t ttReminderTime = 0;
- bool bReminderSet = false;
- lpTrigger = icalcomponent_get_first_property(lpicAlarm, ICAL_TRIGGER_PROPERTY);
- lpAction = icalcomponent_get_first_property(lpicAlarm, ICAL_ACTION_PROPERTY);
- if (lpTrigger != NULL) {
- sittTrigger = icalproperty_get_trigger(lpTrigger);
- ttReminderTime = icaltime_as_timet(sittTrigger.time);
- lRemindBefore = -1 * (icaldurationtype_as_int(sittTrigger.duration) / 60);
-
-
-
-
- if (lRemindBefore < 0)
- lRemindBefore = 0;
- }
- if (lpAction != NULL) {
- eipaAction = icalproperty_get_action(lpAction);
-
- if (eipaAction > ICAL_ACTION_X && eipaAction < ICAL_ACTION_NONE)
- bReminderSet = true;
- }
- if (lplRemindBefore)
- *lplRemindBefore = lRemindBefore;
- if (lpttReminderTime)
- *lpttReminderTime = ttReminderTime;
- if (lpbReminderSet)
- *lpbReminderSet = bReminderSet;
- return hr;
- }
- }
|