xbmc
FavouritesService.h
1 /*
2  * Copyright (C) 2005-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 "FileItem.h"
12 #include "threads/CriticalSection.h"
13 #include "utils/EventStream.h"
14 
15 #include <string>
16 #include <vector>
17 
19 {
20 public:
21  explicit CFavouritesService(std::string userDataFolder);
22  virtual ~CFavouritesService() = default;
23 
25  void ReInit(std::string userDataFolder);
26 
27  bool IsFavourited(const CFileItem& item, int contextWindow) const;
28  void GetAll(CFileItemList& items) const;
29  bool AddOrRemove(const CFileItem& item, int contextWindow);
30  bool Save(const CFileItemList& items);
31 
34  void RefreshFavourites();
35 
36  struct FavouritesUpdated { };
37 
38  CEventStream<FavouritesUpdated>& Events() { return m_events; }
39 
40 private:
41  CFavouritesService() = delete;
42  CFavouritesService(const CFavouritesService&) = delete;
43  CFavouritesService& operator=(const CFavouritesService&) = delete;
45  CFavouritesService& operator=(CFavouritesService&&) = delete;
46 
47  void OnUpdated();
48  bool Persist();
49  std::string GetFavouritesUrl(const CFileItem &item, int contextWindow) const;
50 
51  std::string m_userDataFolder;
52  CFileItemList m_favourites;
54  mutable CCriticalSection m_criticalSection;
55 };
56 
Definition: FavouritesService.h:18
Definition: EventStream.h:65
Represents a list of files.
Definition: FileItem.h:713
Definition: FavouritesService.h:36
void ReInit(std::string userDataFolder)
For profiles.
Definition: FavouritesService.cpp:147
Represents a file on a share.
Definition: FileItem.h:102
Definition: EventStream.h:22
void RefreshFavourites()
Refresh favourites for directory providers, e.g. the GUI needs to be updated.
Definition: FavouritesService.cpp:270