2 * Copyright (C) 2023 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.
9 #include "PictureFolderImageFileLoader.h"
12 #include "FileItemList.h"
14 #include "ServiceBroker.h"
15 #include "TextureCache.h"
16 #include "filesystem/Directory.h"
17 #include "guilib/Texture.h"
18 #include "settings/Settings.h"
19 #include "settings/SettingsComponent.h"
20 #include "utils/FileExtensionProvider.h"
22 using namespace XFILE
;
24 bool CPictureFolderImageFileLoader::CanLoad(const std::string
& specialType
) const
26 return specialType
== "picturefolder";
29 std::unique_ptr
<CTexture
> CPictureFolderImageFileLoader::Load(const std::string
& specialType
,
30 const std::string
& filePath
,
31 unsigned int preferredWidth
,
32 unsigned int preferredHeight
) const
34 CFileItemList imagesInFolder
;
35 CDirectory::GetDirectory(filePath
, imagesInFolder
,
36 CServiceBroker::GetFileExtensionProvider().GetPictureExtensions(),
37 DIR_FLAG_NO_FILE_DIRS
);
39 for (int i
= 0; i
< imagesInFolder
.Size();)
41 if (!imagesInFolder
[i
]->IsPicture() || imagesInFolder
[i
]->IsZIP() ||
42 imagesInFolder
[i
]->IsRAR() || imagesInFolder
[i
]->IsPlayList())
44 imagesInFolder
.Remove(i
);
49 if (imagesInFolder
.IsEmpty())
54 imagesInFolder
.Randomize();
55 std::vector
<std::string
> imagesToTile
;
56 int size
= std::min(4, imagesInFolder
.Size());
57 imagesToTile
.reserve(size
);
58 for (int thumb
= 0; thumb
< size
; thumb
++)
60 imagesToTile
.push_back(imagesInFolder
[thumb
]->GetPath());
63 return CPicture::CreateTiledThumb(imagesToTile
);