summaryrefslogtreecommitdiffstats
path: root/xbmc/events/EventLog.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--xbmc/events/EventLog.h62
1 files changed, 62 insertions, 0 deletions
diff --git a/xbmc/events/EventLog.h b/xbmc/events/EventLog.h
new file mode 100644
index 0000000..035e448
--- /dev/null
+++ b/xbmc/events/EventLog.h
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2015-2018 Team Kodi
+ * This file is part of Kodi - https://kodi.tv
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ * See LICENSES/README.md for more information.
+ */
+
+#pragma once
+
+#include "events/IEvent.h"
+#include "threads/CriticalSection.h"
+
+#include <map>
+#include <string>
+#include <vector>
+
+#define NOTIFICATION_DISPLAY_TIME 5000
+#define NOTIFICATION_MESSAGE_TIME 1000
+
+typedef std::vector<EventPtr> Events;
+
+class CEventLog
+{
+public:
+ CEventLog() = default;
+ CEventLog(const CEventLog&) = delete;
+ CEventLog& operator=(CEventLog const&) = delete;
+ ~CEventLog() = default;
+
+ Events Get() const;
+ Events Get(EventLevel level, bool includeHigherLevels = false) const;
+ EventPtr Get(const std::string& eventIdentifier) const;
+
+ void Add(const EventPtr& event);
+ void Add(const EventPtr& event, bool withNotification, bool withSound = true);
+ void AddWithNotification(const EventPtr& event,
+ unsigned int displayTime = NOTIFICATION_DISPLAY_TIME,
+ unsigned int messageTime = NOTIFICATION_MESSAGE_TIME,
+ bool withSound = true);
+ void AddWithNotification(const EventPtr& event, bool withSound);
+ void Remove(const EventPtr& event);
+ void Remove(const std::string& eventIdentifier);
+ void Clear();
+ void Clear(EventLevel level, bool includeHigherLevels = false);
+
+ bool Execute(const std::string& eventIdentifier);
+
+ static std::string EventLevelToString(EventLevel level);
+ static EventLevel EventLevelFromString(const std::string& level);
+
+ void ShowFullEventLog(EventLevel level = EventLevel::Basic, bool includeHigherLevels = true);
+
+private:
+ void SendMessage(const EventPtr& event, int message);
+
+ typedef std::vector<EventPtr> EventsList;
+ typedef std::map<std::string, EventPtr> EventsMap;
+ EventsList m_events;
+ EventsMap m_eventsMap;
+ mutable CCriticalSection m_critical;
+};