xbmc
BaseEvent.h
1 /*
2  * Copyright (C) 2015-2018 Team Kodi
3  * This file is part of Kodi - https://kodi.tv
4  *
5  * SPDX-License-Identifier: GPL-2.0-or-later
6  * See LICENSES/README.md for more information.
7  */
8 
9 #pragma once
10 
11 #include "XBDateTime.h"
12 #include "events/IEvent.h"
13 #include "utils/Variant.h"
14 
15 class CBaseEvent : public IEvent
16 {
17 public:
18  ~CBaseEvent() override = default;
19 
20  std::string GetIdentifier() const override { return m_identifier; }
21  EventLevel GetLevel() const override { return m_level; }
22  std::string GetLabel() const override;
23  std::string GetIcon() const override { return m_icon; }
24  std::string GetDescription() const override;
25  std::string GetDetails() const override;
26  std::string GetExecutionLabel() const override;
27  CDateTime GetDateTime() const override { return m_dateTime; }
28 
29  bool CanExecute() const override { return !GetExecutionLabel().empty(); }
30 
31  void ToSortable(SortItem& sortable, Field field) const override;
32 
33 protected:
34  CBaseEvent(const std::string& identifier, const CVariant& label, const CVariant& description, EventLevel level = EventLevel::Information);
35  CBaseEvent(const std::string& identifier, const CVariant& label, const CVariant& description, const std::string& icon, EventLevel level = EventLevel::Information);
36  CBaseEvent(const std::string& identifier, const CVariant& label, const CVariant& description, const std::string& icon, const CVariant& details, EventLevel level = EventLevel::Information);
37  CBaseEvent(const std::string& identifier, const CVariant& label, const CVariant& description, const std::string& icon, const CVariant& details, const CVariant& executionLabel, EventLevel level = EventLevel::Information);
38 
39  EventLevel m_level;
40  std::string m_identifier;
41  std::string m_icon;
42  CVariant m_label;
43  CVariant m_description;
44  CVariant m_details;
45  CVariant m_executionLabel;
46 
47 private:
48  static std::string VariantToLocalizedString(const CVariant& variant);
49  static uint64_t GetInternalTimestamp();
50 
51  uint64_t m_timestamp; // high res internal time stamp
52  CDateTime m_dateTime; // user interface time stamp
53 };
Definition: Variant.h:29
Definition: BaseEvent.h:15
Definition: IEvent.h:26
DateTime class, which uses FileTime as it's base.
Definition: XBDateTime.h:63