EventManager.cpp 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. /*
  2. * Copyright (c) 2023, the SerenityOS developers.
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #include "EventManager.h"
  7. #include <AK/JsonParser.h>
  8. #include <LibConfig/Client.h>
  9. #include <LibFileSystemAccessClient/Client.h>
  10. namespace Calendar {
  11. EventManager::EventManager()
  12. {
  13. }
  14. OwnPtr<EventManager> EventManager::create()
  15. {
  16. return adopt_own(*new EventManager());
  17. }
  18. ErrorOr<void> EventManager::add_event(JsonObject event)
  19. {
  20. TRY(m_events.append(move(event)));
  21. set_dirty(true);
  22. on_events_change();
  23. return {};
  24. }
  25. void EventManager::set_events(JsonArray events)
  26. {
  27. m_events = move(events);
  28. on_events_change();
  29. }
  30. ErrorOr<void> EventManager::save(FileSystemAccessClient::File& file)
  31. {
  32. set_filename(file.filename());
  33. set_dirty(false);
  34. auto stream = file.release_stream();
  35. TRY(stream->write_some(m_events.to_deprecated_string().bytes()));
  36. stream->close();
  37. return {};
  38. }
  39. ErrorOr<void> EventManager::load_file(FileSystemAccessClient::File& file)
  40. {
  41. set_filename(file.filename());
  42. set_dirty(false);
  43. auto content = TRY(file.stream().read_until_eof());
  44. auto events = TRY(AK::JsonParser(content).parse());
  45. set_events(events.as_array());
  46. return {};
  47. }
  48. }