You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

69 lines
1.7 KiB

  1. #include <ical/Event.h>
  2. #include <ical/Alarm.h>
  3. #include <db/db.h>
  4. namespace ical {
  5. Event::Event(icalcomponent* event_component) {
  6. parse(event_component);
  7. }
  8. void Event::parse(icalcomponent* event_component) {
  9. uid = icalcomponent_get_uid(event_component);
  10. dtstart = icaltime_as_timet(icalcomponent_get_dtstart(event_component));
  11. dtend = icaltime_as_timet(icalcomponent_get_dtend(event_component));
  12. summary = std::string(icalcomponent_get_summary(event_component));
  13. parse_alarms(event_component);
  14. }
  15. void Event::parse_alarms(icalcomponent* event_component) {
  16. icalcomponent* c;
  17. for(c = icalcomponent_get_first_component(event_component, ICAL_VALARM_COMPONENT);
  18. c != 0;
  19. c = icalcomponent_get_next_component(event_component, ICAL_VALARM_COMPONENT))
  20. {
  21. alarms.push_back(Alarm(c));
  22. }
  23. }
  24. std::string Event::get_uid() const {
  25. return uid;
  26. }
  27. std::string Event::get_summary() const {
  28. return summary;
  29. }
  30. uint32_t Event::get_dtstart() const {
  31. return dtstart;
  32. }
  33. uint32_t Event::get_dtend() const {
  34. return dtend;
  35. }
  36. std::vector<Alarm> Event::get_alarms() const {
  37. return alarms;
  38. }
  39. std::vector<std::string> Event::get_db_row() const {
  40. return {db_safe(uid),
  41. db_safe(summary),
  42. db_safe(std::to_string(dtstart)),
  43. db_safe(std::to_string(dtend))};
  44. }
  45. std::string Event::print() const {
  46. std::string s = "";
  47. s += "UID: " + uid + "\n";
  48. s += "DTSTART: " + std::to_string(dtstart) + "\n";
  49. s += "DTEND: " + std::to_string(dtend) + "\n";
  50. s += "SUMMARY: " + summary + "\n";
  51. s += "ALARMS:\n";
  52. for(auto const& a : alarms) {
  53. s += a.print();
  54. }
  55. return s;
  56. }
  57. }