20using namespace LibICal;
23#include "icalerror_p.h"
30VComponent::VComponent()
60void VComponent::detach()
65VComponent::~VComponent()
70VComponent::VComponent(icalcomponent *v)
86VComponent::VComponent(
const std::string &str)
105std::string VComponent::as_ical_string()
116bool VComponent::is_valid()
130bool VComponent::isa_component(
const void *component)
135void VComponent::new_from_string(
const std::string &str)
154int VComponent::count_properties(
const icalproperty_kind &kind)
163 return ((t != NULL) ?
new ICalProperty(t) : NULL);
166ICalProperty *VComponent::get_first_property(
const icalproperty_kind &kind)
169 return ((t != NULL) ?
new ICalProperty(t) : NULL);
172ICalProperty *VComponent::get_next_property(
const icalproperty_kind &kind)
175 return ((t != NULL) ?
new ICalProperty(t) : NULL);
185void VComponent::add_component(
VComponent *child)
190void VComponent::remove_component(
VComponent *child)
210 return ((t != NULL) ?
new VComponent(t) : NULL);
232 result =
new VToDo(t);
247 VComponent *result = NULL;
252 result =
new VAlarm(t);
255 result =
new VCalendar(t);
258 result =
new VEvent(t);
261 result =
new VQuery(t);
264 result =
new VToDo(t);
267 result =
new VAgenda(t);
270 result =
new VComponent(t);
298VComponent *VComponent::current(icalcompiter *i)
337void VComponent::set_dtstart(
const struct icaltimetype &v)
367void VComponent::set_due(
const struct icaltimetype &v)
372struct icaldurationtype
VComponent::get_duration() const
377void VComponent::set_duration(
const struct icaldurationtype &v)
382icalproperty_method VComponent::get_method()
const
387void VComponent::set_method(
const icalproperty_method &method)
392struct icaltimetype
VComponent::get_dtstamp() const
397void VComponent::set_dtstamp(
const struct icaltimetype &v)
402std::string VComponent::get_summary()
const
407void VComponent::set_summary(
const std::string &v)
412std::string VComponent::get_location()
const
417void VComponent::set_location(
const std::string &v)
422std::string VComponent::get_description()
const
427void VComponent::set_description(
const std::string &v)
432std::string VComponent::get_comment()
const
437void VComponent::set_comment(
const std::string &v)
442std::string VComponent::get_uid()
const
447void VComponent::set_uid(
const std::string &v)
452std::string VComponent::get_relcalid()
const
457void VComponent::set_relcalid(
const std::string &v)
462struct icaltimetype
VComponent::get_recurrenceid() const
467void VComponent::set_recurrenceid(
const struct icaltimetype &v)
472int VComponent::get_sequence()
const
477void VComponent::set_sequence(
const int &v)
487void VComponent::set_status(
const enum icalproperty_status &v)
505bool VComponent::recurrence_is_excluded(
struct icaltimetype *dtstart,
515 if (this->isa() != fromVC.isa()) {
520 ICalPropertyTmpPtr propToBeRemoved;
521 for (propToBeRemoved = fromVC.get_first_property(ICAL_ANY_PROPERTY);
522 propToBeRemoved != NULL;
523 propToBeRemoved = fromVC.get_next_property(ICAL_ANY_PROPERTY)) {
525 ICalPropertyTmpPtr next_prop;
526 ICalPropertyTmpPtr p;
527 for (p = this->get_first_property(propToBeRemoved->isa()); p != NULL; p = next_prop) {
528 next_prop = this->get_next_property(propToBeRemoved->isa());
530 this->remove_property(p);
532 if (p == propToBeRemoved) {
533 this->remove_property(p);
541 VComponentTmpPtr comp;
544 const std::string fromCompUid = comp->get_uid();
546 for (c = this->get_first_component(comp->isa()); c != NULL;
547 c = this->get_next_component(comp->isa())) {
548 if (strcmp(fromCompUid.c_str(), c->get_uid().c_str()) == 0) {
550 c->
remove(*comp, ignoreValue);
553 if ((c->count_properties(ICAL_ANY_PROPERTY) == 0) &&
555 this->remove_component(c);
568bool VComponent::update(
VComponent &fromC,
bool removeMissing)
571 if (this->isa() != fromC.isa()) {
576 ICalPropertyTmpPtr prop;
577 for (prop = fromC.get_first_property(ICAL_ANY_PROPERTY); prop != NULL;
578 prop = fromC.get_next_property(ICAL_ANY_PROPERTY)) {
579 ICalPropertyTmpPtr thisProp;
580 thisProp = this->get_first_property(prop->isa());
581 if (thisProp == NULL) {
585 const ICalValue *tempValue = prop->get_value();
586 const ICalValue *value =
new ICalValue(*tempValue);
593 VComponentTmpPtr comp;
596 VComponentTmpPtr thisComp;
597 thisComp = this->get_first_component(comp->isa());
598 if (thisComp == NULL) {
599 thisComp =
new VComponent(comp->isa());
600 this->add_component(thisComp);
602 const bool err = thisComp->update(*comp, removeMissing);
614 if (this->isa() != fromC.isa()) {
619 ICalPropertyTmpPtr prop;
620 for (prop = fromC.get_first_property(ICAL_ANY_PROPERTY); prop != NULL;
621 prop = fromC.get_next_property(ICAL_ANY_PROPERTY)) {
623 ICalProperty *p =
new ICalProperty(*prop);
629 VComponentTmpPtr comp;
632 VComponent *c =
new VComponent(comp->isa());
640VCalendar::VCalendar()
655 VComponent::operator=(v);
660VCalendar::~VCalendar()
664VCalendar::VCalendar(icalcomponent *v)
669VCalendar::VCalendar(
const std::string &str)
681VEvent::VEvent(
const VEvent &v)
691 VComponent::operator=(v);
700VEvent::VEvent(icalcomponent *v)
705VEvent::VEvent(
const std::string &str)
717VToDo::VToDo(
const VToDo &v)
727 VComponent::operator=(v);
736VToDo::VToDo(icalcomponent *v)
741VToDo::VToDo(
const std::string &str)
753VAgenda::VAgenda(
const VAgenda &v)
763 VComponent::operator=(v);
772VAgenda::VAgenda(icalcomponent *v)
777VAgenda::VAgenda(
const std::string &str)
789VQuery::VQuery(
const VQuery &v)
799 VComponent::operator=(v);
808VQuery::VQuery(icalcomponent *v)
813VQuery::VQuery(
const std::string &str)
825VJournal::VJournal(
const VJournal &v)
835 VComponent::operator=(v);
844VJournal::VJournal(icalcomponent *v)
849VJournal::VJournal(
const std::string &str)
861VAlarm::VAlarm(
const VAlarm &v)
871 VComponent::operator=(v);
880VAlarm::VAlarm(icalcomponent *v)
885VAlarm::VAlarm(
const std::string &str)
892 ICalPropertyTmpPtr trigger_prop = this->get_first_property(ICAL_TRIGGER_PROPERTY);
895 if (trigger_prop == NULL) {
899 *tr = trigger_prop->get_trigger();
912 if ((related_param != NULL) && related_param->is_valid()) {
914 const icalparameter_related related = related_param->get_related();
918 case ICAL_RELATED_END:
924 const struct icaltimetype recur_time = c.get_recurrenceid();
931 const struct icaltimetype recur_time = c.get_recurrenceid();
938 case ICAL_RELATED_START:
940 case ICAL_RELATED_NONE:
942 tt = c.get_dtstart();
943 const struct icaltimetype recur_time = c.get_recurrenceid();
955 const struct icaltimetype recur_time = c.get_recurrenceid();
959 tt = c.get_dtstart();
965 delete related_param;
982VFreeBusy::VFreeBusy()
997 VComponent::operator=(v);
1002VFreeBusy::~VFreeBusy()
1006VFreeBusy::VFreeBusy(icalcomponent *v)
1011VFreeBusy::VFreeBusy(
const std::string &str)
1018VTimezone::VTimezone()
1033 VComponent::operator=(v);
1038VTimezone::~VTimezone()
1042VTimezone::VTimezone(icalcomponent *v)
1047VTimezone::VTimezone(
const std::string &str)
1054XStandard::XStandard()
1069 VComponent::operator=(v);
1074XStandard::~XStandard()
1078XStandard::XStandard(icalcomponent *v)
1083XStandard::XStandard(
const std::string &str)
1090XDaylight::XDaylight()
1105 VComponent::operator=(v);
1110XDaylight::~XDaylight()
1114XDaylight::XDaylight(icalcomponent *v)
1119XDaylight::XDaylight(
const std::string &str)
ICalParameter * get_first_parameter(const icalparameter_kind &kind)
void set_value(const ICalValue &val)
icalrequeststatus getTriggerTime(VComponent &c, struct icaltriggertype *tr)
A class wrapping the libical icalcomponent functions.
void strip_errors()
Remove all X-LIC-ERROR properties.
virtual struct icaltime_span get_span()
static icalcomponent_kind string_to_kind(const std::string &str)
Kind conversion routines.
struct icaltimetype get_dtend() const
int count_errors()
Working with embedded error properties.
VComponent * get_current_component()
Iterate through components.
void add_property(ICalProperty *property)
Working with properties.
VComponent * get_first_real_component()
icalcompiter begin_component(const icalcomponent_kind &kind)
Using external iterators.
bool remove(VComponent &, bool ignoreValue)
Note: the VComponent kind have to be the same.
void convert_errors()
Convert some X-LIC-ERROR properties into RETURN-STATUS properties.
void icalcomponent_convert_errors(icalcomponent *component)
icalcomponent * icalcomponent_new_xstandard(void)
void icalcomponent_set_relcalid(icalcomponent *comp, const char *v)
bool icalcomponent_is_valid(const icalcomponent *component)
icalcomponent * icalcomponent_new_vagenda(void)
void icalcomponent_set_uid(icalcomponent *comp, const char *v)
icalcomponent_kind icalcomponent_string_to_kind(const char *string)
struct icaltimetype icalcomponent_get_dtend(icalcomponent *comp)
struct icaltimetype icalcomponent_get_dtstart(icalcomponent *comp)
icalproperty * icalcomponent_get_first_property(icalcomponent *c, icalproperty_kind kind)
int icalcomponent_count_properties(icalcomponent *component, icalproperty_kind kind)
icalproperty_method icalcomponent_get_method(icalcomponent *comp)
void icalcomponent_set_recurrenceid(icalcomponent *comp, struct icaltimetype v)
struct icaltimetype icalcomponent_get_recurrenceid(icalcomponent *comp)
icalcomponent * icalcompiter_next(icalcompiter *i)
void icalcomponent_set_location(icalcomponent *comp, const char *v)
const char * icalcomponent_get_description(icalcomponent *comp)
icalcomponent * icalcomponent_get_next_component(icalcomponent *c, icalcomponent_kind kind)
icalcomponent * icalcomponent_get_first_component(icalcomponent *c, icalcomponent_kind kind)
void icalcomponent_set_dtstart(icalcomponent *comp, struct icaltimetype v)
void icalcomponent_set_dtstamp(icalcomponent *comp, struct icaltimetype v)
void icalcomponent_strip_errors(icalcomponent *component)
icalcomponent * icalcomponent_new_vcalendar(void)
icalcomponent * icalcomponent_get_current_component(icalcomponent *component)
void icalcomponent_remove_property(icalcomponent *component, icalproperty *property)
char * icalcomponent_as_ical_string(const icalcomponent *component)
const char * icalcomponent_kind_to_string(icalcomponent_kind kind)
enum icalproperty_status icalcomponent_get_status(icalcomponent *comp)
icalcomponent * icalcomponent_new_vjournal(void)
void icalcomponent_remove_component(icalcomponent *parent, icalcomponent *child)
icalcomponent * icalcomponent_new_vfreebusy(void)
icalcomponent * icalcompiter_deref(icalcompiter *i)
void icalcomponent_set_method(icalcomponent *comp, icalproperty_method method)
icalcomponent * icalcomponent_new(icalcomponent_kind kind)
void icalcomponent_set_summary(icalcomponent *comp, const char *v)
void icalcomponent_set_sequence(icalcomponent *comp, int v)
icalcomponent * icalcomponent_get_inner(icalcomponent *comp)
const char * icalcomponent_get_comment(icalcomponent *comp)
const char * icalcomponent_get_summary(icalcomponent *comp)
icaltime_span icalcomponent_get_span(icalcomponent *comp)
const char * icalcomponent_get_relcalid(icalcomponent *comp)
icalcomponent * icalcomponent_get_first_real_component(const icalcomponent *c)
icalcomponent * icalcomponent_new_vtimezone(void)
struct icaltimetype icalcomponent_get_due(icalcomponent *comp)
bool icalproperty_recurrence_is_excluded(icalcomponent *comp, struct icaltimetype *dtstart, struct icaltimetype *recurtime)
Decides if a recurrence is acceptable.
int icalcomponent_count_errors(icalcomponent *component)
struct icaldurationtype icalcomponent_get_duration(icalcomponent *comp)
icalcomponent * icalcomponent_clone(const icalcomponent *old)
icalproperty * icalcomponent_get_current_property(icalcomponent *component)
void icalcomponent_set_dtend(icalcomponent *comp, struct icaltimetype v)
const char * icalcomponent_get_uid(icalcomponent *comp)
int icalcomponent_get_sequence(icalcomponent *comp)
icalcompiter icalcomponent_end_component(icalcomponent *component, icalcomponent_kind kind)
icalcomponent * icalcomponent_new_xdaylight(void)
icalcomponent * icalcomponent_new_valarm(void)
void icalcomponent_add_property(icalcomponent *component, icalproperty *property)
void icalcomponent_set_duration(icalcomponent *comp, struct icaldurationtype v)
icalcompiter icalcomponent_begin_component(icalcomponent *component, icalcomponent_kind kind)
icalcomponent_kind icalcomponent_isa(const icalcomponent *component)
icalcomponent * icalcompiter_prior(icalcompiter *i)
icalcomponent * icalcomponent_new_vtodo(void)
void icalcomponent_set_status(icalcomponent *comp, enum icalproperty_status v)
const char * icalcomponent_get_location(icalcomponent *comp)
void icalcomponent_free(icalcomponent *c)
icalcomponent * icalcomponent_new_vevent(void)
void icalcomponent_set_due(icalcomponent *comp, struct icaltimetype v)
void icalcomponent_add_component(icalcomponent *parent, icalcomponent *child)
icalproperty * icalcomponent_get_next_property(icalcomponent *c, icalproperty_kind kind)
void icalcomponent_set_description(icalcomponent *comp, const char *v)
icalcomponent * icalcomponent_new_from_string(const char *str)
int icalcomponent_count_components(icalcomponent *component, icalcomponent_kind kind)
void icalcomponent_set_comment(icalcomponent *comp, const char *v)
icalcomponent * icalcomponent_new_vquery(void)
bool icalcomponent_isa_component(const void *component)
struct icaltimetype icalcomponent_get_dtstamp(icalcomponent *comp)
struct icaldurationtype icalduration_from_times(struct icaltimetype t1, struct icaltimetype t2)
Creates a duration from two icaltimetype endpoints.
struct icaltimetype icalduration_extend(struct icaltimetype t, struct icaldurationtype d)
Extends a time duration.
@ ICAL_VCALENDAR_COMPONENT
@ ICAL_3_1_INVPROPVAL_STATUS
@ ICAL_2_0_SUCCESS_STATUS
#define icalerrno
Access the current icalerrno value.
Common memory management routines.
Definition of C++ Wrapper for icalparameter.c.
void icalproperty_free(icalproperty *p)
Definition of C++ Wrapper for icalproperty.c.
bool icaltime_is_null_time(const struct icaltimetype t)
struct icaltimetype icaltime_null_time(void)
Definition of C++ Wrapper for icalvalue.c.
struct icaldurationtype duration
C++ classes for the icalcomponent wrapper (VToDo VEvent, etc..).