1 /*
2  *  Copyright (C) 2013-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 #include "FileItemListModification.h"
10 
11 #include "music/windows/MusicFileItemListModifier.h"
12 #include "playlists/SmartPlaylistFileItemListModifier.h"
13 #include "video/windows/VideoFileItemListModifier.h"
14 
CFileItemListModification()15 CFileItemListModification::CFileItemListModification()
16 {
17   m_modifiers.insert(new CSmartPlaylistFileItemListModifier());
18   m_modifiers.insert(new CMusicFileItemListModifier());
19   m_modifiers.insert(new CVideoFileItemListModifier());
20 }
21 
~CFileItemListModification()22 CFileItemListModification::~CFileItemListModification()
23 {
24   for (std::set<IFileItemListModifier*>::const_iterator modifier = m_modifiers.begin(); modifier != m_modifiers.end(); ++modifier)
25     delete *modifier;
26 
27   m_modifiers.clear();
28 }
29 
GetInstance()30 CFileItemListModification& CFileItemListModification::GetInstance()
31 {
32   static CFileItemListModification instance;
33   return instance;
34 }
35 
CanModify(const CFileItemList & items) const36 bool CFileItemListModification::CanModify(const CFileItemList &items) const
37 {
38   for (std::set<IFileItemListModifier*>::const_iterator modifier = m_modifiers.begin(); modifier != m_modifiers.end(); ++modifier)
39   {
40     if ((*modifier)->CanModify(items))
41       return true;
42   }
43 
44   return false;
45 }
46 
Modify(CFileItemList & items) const47 bool CFileItemListModification::Modify(CFileItemList &items) const
48 {
49   bool result = false;
50   for (std::set<IFileItemListModifier*>::const_iterator modifier = m_modifiers.begin(); modifier != m_modifiers.end(); ++modifier)
51     result |= (*modifier)->Modify(items);
52 
53   return result;
54 }
55