[PVR][Estuary] Timer settings dialog: Show client name in timer type selection dialog...
[xbmc.git] / xbmc / filesystem / EventsDirectory.cpp
blobd533475eccfe75b38f885394acc05a101061c70b
1 /*
2 * Copyright (C) 2015-2018 Team Kodi
3 * This file is part of Kodi - https://kodi.tv
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
7 */
10 #include "EventsDirectory.h"
12 #include "FileItem.h"
13 #include "ServiceBroker.h"
14 #include "URL.h"
15 #include "events/EventLog.h"
16 #include "utils/StringUtils.h"
18 using namespace XFILE;
20 bool CEventsDirectory::GetDirectory(const CURL& url, CFileItemList &items)
22 items.ClearProperties();
23 items.SetContent("events");
25 auto log = CServiceBroker::GetEventLog();
26 Events events;
28 std::string hostname = url.GetHostName();
29 if (hostname.empty())
30 events = log->Get();
31 else
33 bool includeHigherLevels = false;
34 // check if we should only retrieve events from a specific level or
35 // also from all higher levels
36 if (StringUtils::EndsWith(hostname, "+"))
38 includeHigherLevels = true;
40 // remove the "+" from the end of the hostname
41 hostname = hostname.substr(0, hostname.size() - 1);
44 EventLevel level = CEventLog::EventLevelFromString(hostname);
46 // get the events of the specified level(s)
47 events = log->Get(level, includeHigherLevels);
50 for (const auto& eventItem : events)
51 items.Add(EventToFileItem(eventItem));
53 return true;
56 std::shared_ptr<CFileItem> CEventsDirectory::EventToFileItem(
57 const std::shared_ptr<const IEvent>& eventItem)
59 if (!eventItem)
60 return CFileItemPtr();
62 CFileItemPtr item(new CFileItem(eventItem));
64 item->SetProperty(PROPERTY_EVENT_IDENTIFIER, eventItem->GetIdentifier());
65 item->SetProperty(PROPERTY_EVENT_LEVEL, CEventLog::EventLevelToString(eventItem->GetLevel()));
66 item->SetProperty(PROPERTY_EVENT_DESCRIPTION, eventItem->GetDescription());
68 return item;