17 #include "XBDateTime.h" 19 #include "threads/CriticalSection.h" 20 #include "utils/IArchivable.h" 21 #include "utils/ISerializable.h" 22 #include "utils/ISortable.h" 23 #include "utils/SortUtils.h" 31 enum class VideoDbContentType;
56 class CPVRChannelGroupMember;
58 class CPVREpgSearchFilter;
60 class CPVRTimerInfoTag;
73 typedef std::shared_ptr<CCueDocument> CCueDocumentPtr;
76 typedef std::shared_ptr<const IEvent> EventPtr;
79 #define STARTOFFSET_RESUME (-1) 85 enum EFileFolderType {
86 EFILEFOLDER_TYPE_ALWAYS = 1<<0,
87 EFILEFOLDER_TYPE_ONCLICK = 1<<1,
88 EFILEFOLDER_TYPE_ONBROWSE = 1<<2,
90 EFILEFOLDER_MASK_ALL = 0xff,
91 EFILEFOLDER_MASK_ONCLICK = EFILEFOLDER_TYPE_ALWAYS
92 | EFILEFOLDER_TYPE_ONCLICK,
93 EFILEFOLDER_MASK_ONBROWSE = EFILEFOLDER_TYPE_ALWAYS
94 | EFILEFOLDER_TYPE_ONCLICK
95 | EFILEFOLDER_TYPE_ONBROWSE,
109 explicit CFileItem(
const std::string& strLabel);
110 explicit CFileItem(
const char* strLabel);
112 CFileItem(
const std::string& strPath,
bool bIsFolder);
121 explicit CFileItem(
const std::shared_ptr<PVR::CPVREpgInfoTag>& tag);
122 explicit CFileItem(
const std::shared_ptr<PVR::CPVREpgSearchFilter>& filter);
123 explicit CFileItem(
const std::shared_ptr<PVR::CPVRChannelGroupMember>& channelGroupMember);
124 explicit CFileItem(
const std::shared_ptr<PVR::CPVRRecording>& record);
125 explicit CFileItem(
const std::shared_ptr<PVR::CPVRTimerInfoTag>& timer);
127 explicit CFileItem(std::shared_ptr<const ADDON::IAddon> addonInfo);
128 explicit CFileItem(
const EventPtr& eventLogEntry);
133 const CURL GetURL()
const;
134 void SetURL(
const CURL& url);
135 bool IsURL(
const CURL& url)
const;
136 const std::string& GetPath()
const {
return m_strPath; }
137 void SetPath(
const std::string& path) { m_strPath = path; }
138 bool IsPath(
const std::string& path,
bool ignoreURLOptions =
false)
const;
140 const CURL GetDynURL()
const;
141 void SetDynURL(
const CURL& url);
142 const std::string &GetDynPath()
const;
143 void SetDynPath(
const std::string &path);
151 void Archive(
CArchive& ar)
override;
152 void Serialize(
CVariant& value)
const override;
153 void ToSortable(SortItem &sortable, Field field)
const override;
154 void ToSortable(SortItem &sortable,
const Fields &fields)
const;
155 bool IsFileItem()
const override {
return true; }
157 bool Exists(
bool bUseCache =
true)
const;
166 std::string GetOpticalMediaPath()
const;
172 bool IsVideo()
const;
174 bool IsDiscStub()
const;
181 bool IsPicture()
const;
182 bool IsLyrics()
const;
183 bool IsSubtitle()
const;
190 bool IsAudio()
const;
196 bool IsDeleted()
const;
202 bool IsAudioBook()
const;
205 bool IsCUESheet()
const;
206 bool IsInternetStream(
const bool bStrictCheck =
false)
const;
207 bool IsStreamedFilesystem()
const;
208 bool IsPlayList()
const;
209 bool IsSmartPlayList()
const;
210 bool IsLibraryFolder()
const;
211 bool IsPythonScript()
const;
212 bool IsPlugin()
const;
213 bool IsScript()
const;
214 bool IsAddonsPath()
const;
215 bool IsSourcesPath()
const;
217 bool IsDiscImage()
const;
218 bool IsOpticalMediaFile()
const;
219 bool IsDVDFile(
bool bVobs =
true,
bool bIfos =
true)
const;
220 bool IsBDFile()
const;
221 bool IsBluray()
const;
222 bool IsProtectedBlurayDisc()
const;
228 bool IsISO9660()
const;
231 bool IsOnDVD()
const;
232 bool IsOnLAN()
const;
235 bool IsRemote()
const;
238 bool IsStack()
const;
239 bool IsFavourite()
const;
240 bool IsMultiPath()
const;
241 bool IsMusicDb()
const;
242 bool IsVideoDb()
const;
244 bool IsPVRChannel()
const;
245 bool IsPVRChannelGroup()
const;
246 bool IsPVRRecording()
const;
247 bool IsUsablePVRRecording()
const;
248 bool IsDeletedPVRRecording()
const;
249 bool IsInProgressPVRRecording()
const;
250 bool IsPVRTimer()
const;
251 bool IsType(
const char *ext)
const;
252 bool IsVirtualDirectoryRoot()
const;
253 bool IsReadOnly()
const;
254 bool CanQueue()
const;
255 void SetCanQueue(
bool bYesNo);
256 bool IsParentFolder()
const;
257 bool IsFileFolder(EFileFolderType types = EFILEFOLDER_MASK_ALL)
const;
258 bool IsRemovable()
const;
260 bool IsLiveTV()
const;
262 bool IsAndroidApp()
const;
264 void RemoveExtension();
266 void FillInDefaultIcon();
267 void SetFileSizeLabel();
268 void SetLabel(
const std::string &strLabel)
override;
269 VideoDbContentType GetVideoContentType()
const;
270 bool IsLabelPreformatted()
const {
return m_bLabelPreformatted; }
271 void SetLabelPreformatted(
bool bYesNo) { m_bLabelPreformatted=bYesNo; }
272 bool SortsOnTop()
const {
return m_specialSort == SortSpecialOnTop; }
273 bool SortsOnBottom()
const {
return m_specialSort == SortSpecialOnBottom; }
274 void SetSpecialSort(SortSpecial sort) { m_specialSort = sort; }
276 inline bool HasMusicInfoTag()
const 278 return m_musicInfoTag != NULL;
285 return m_musicInfoTag;
288 bool HasVideoInfoTag()
const;
294 inline bool HasEPGInfoTag()
const 296 return m_epgInfoTag.get() != NULL;
299 inline const std::shared_ptr<PVR::CPVREpgInfoTag> GetEPGInfoTag()
const 304 bool HasEPGSearchFilter()
const {
return m_epgSearchFilter !=
nullptr; }
306 const std::shared_ptr<PVR::CPVREpgSearchFilter> GetEPGSearchFilter()
const 308 return m_epgSearchFilter;
311 inline bool HasPVRChannelGroupMemberInfoTag()
const 313 return m_pvrChannelGroupMemberInfoTag.get() !=
nullptr;
316 inline const std::shared_ptr<PVR::CPVRChannelGroupMember> GetPVRChannelGroupMemberInfoTag()
const 318 return m_pvrChannelGroupMemberInfoTag;
321 bool HasPVRChannelInfoTag()
const;
322 const std::shared_ptr<PVR::CPVRChannel> GetPVRChannelInfoTag()
const;
324 inline bool HasPVRRecordingInfoTag()
const 326 return m_pvrRecordingInfoTag.get() != NULL;
329 inline const std::shared_ptr<PVR::CPVRRecording> GetPVRRecordingInfoTag()
const 331 return m_pvrRecordingInfoTag;
334 inline bool HasPVRTimerInfoTag()
const 336 return m_pvrTimerInfoTag != NULL;
339 inline const std::shared_ptr<PVR::CPVRTimerInfoTag> GetPVRTimerInfoTag()
const 341 return m_pvrTimerInfoTag;
354 bool IsResumePointSet()
const;
360 double GetCurrentResumeTime()
const;
368 bool GetCurrentResumeTimeAndPartNumber(int64_t& startOffset,
int& partNumber)
const;
376 bool IsResumable()
const;
404 inline bool HasPictureInfoTag()
const 406 return m_pictureInfoTag != NULL;
411 return m_pictureInfoTag;
414 bool HasAddonInfo()
const {
return m_addonInfo !=
nullptr; }
415 const std::shared_ptr<const ADDON::IAddon> GetAddonInfo()
const {
return m_addonInfo; }
417 inline bool HasGameInfoTag()
const 419 return m_gameInfoTag != NULL;
426 return m_gameInfoTag;
436 std::string GetLocalFanart()
const;
445 std::string GetLocalArtBaseFilename()
const;
453 std::string GetLocalArtBaseFilename(
bool& useFolder)
const;
462 std::string GetLocalArt(
const std::string& artFile,
bool useFolder =
false)
const;
471 std::string FindLocalArt(
const std::string &artFile,
bool useFolder)
const;
477 bool SkipLocalArt()
const;
484 std::string GetThumbHideIfUnwatched(
const CFileItem* item)
const;
487 std::string GetTBNFile()
const;
489 std::string GetFolderThumb(
const std::string &folderJPG =
"folder.jpg")
const;
491 std::string GetMovieName(
bool bUseFolderNames =
false)
const;
500 std::string GetBaseMoviePath(
bool useFolderNames)
const;
503 std::string GetUserMusicThumb(
bool alwaysCheckRemote =
false,
bool fallbackToFolder =
false)
const;
517 std::string GetLocalMetadataPath()
const;
520 std::string FindTrailer()
const;
533 const std::string& GetMimeType()
const {
return m_mimetype; }
536 void SetMimeType(
const std::string& mimetype) { m_mimetype = mimetype; } ;
543 void FillInMimeType(
bool lookup =
true);
555 void SetMimeTypeForInternetFile();
564 void SetExtraInfo(
const std::string& info) { m_extrainfo = info; }
565 const std::string& GetExtraInfo()
const {
return m_extrainfo; }
575 void UpdateInfo(
const CFileItem &item,
bool replaceLabels =
true);
585 bool IsSamePath(
const CFileItem *item)
const;
587 bool IsAlbum()
const;
606 void SetFromAlbum(
const CAlbum &album);
612 void SetFromSong(
const CSong &song);
618 std::string m_strDVDLabel;
619 std::string m_strTitle;
622 int m_lStartPartNumber;
623 LockType m_iLockMode;
624 std::string m_strLockCode;
628 void SetCueDocument(
const CCueDocumentPtr& cuePtr);
629 void LoadEmbeddedCue();
630 bool HasCueDocument()
const;
643 void UpdateMimeType(
bool lookup =
true);
654 void FillMusicInfoTag(
const std::shared_ptr<PVR::CPVREpgInfoTag>& tag);
656 std::string m_strPath;
657 std::string m_strDynPath;
659 SortSpecial m_specialSort;
660 bool m_bIsParentFolder;
662 bool m_bLabelPreformatted;
663 std::string m_mimetype;
664 std::string m_extrainfo;
665 bool m_doContentLookup;
668 std::shared_ptr<PVR::CPVREpgInfoTag> m_epgInfoTag;
669 std::shared_ptr<PVR::CPVREpgSearchFilter> m_epgSearchFilter;
670 std::shared_ptr<PVR::CPVRRecording> m_pvrRecordingInfoTag;
671 std::shared_ptr<PVR::CPVRTimerInfoTag> m_pvrTimerInfoTag;
672 std::shared_ptr<PVR::CPVRChannelGroupMember> m_pvrChannelGroupMemberInfoTag;
674 std::shared_ptr<const ADDON::IAddon> m_addonInfo;
676 EventPtr m_eventLogEntry;
678 int64_t m_lStartOffset;
679 int64_t m_lEndOffset;
681 CCueDocumentPtr m_cueDocument;
714 typedef bool (*FILEITEMLISTCOMPARISONFUNC) (
const CFileItemPtr &pItem1,
const CFileItemPtr &pItem2);
715 typedef void (*FILEITEMFILLFUNC) (CFileItemPtr &item);
724 enum CACHE_TYPE { CACHE_NEVER = 0, CACHE_IF_SLOW, CACHE_ALWAYS };
729 void Archive(
CArchive& ar)
override;
730 CFileItemPtr operator[] (
int iItem);
731 const CFileItemPtr operator[] (
int iItem)
const;
732 CFileItemPtr operator[] (
const std::string& strPath);
733 const CFileItemPtr operator[] (
const std::string& strPath)
const;
736 void Add(CFileItemPtr item);
738 void AddFront(
const CFileItemPtr &pItem,
int itemPosition);
740 void Remove(
int iItem);
741 CFileItemPtr Get(
int iItem)
const;
743 CFileItemPtr Get(
const std::string& strPath)
const;
745 bool IsEmpty()
const;
747 void Assign(
const CFileItemList& itemlist,
bool append =
false);
748 bool Copy (
const CFileItemList& item,
bool copyItems =
true);
749 void Reserve(
size_t iCount);
750 void Sort(
SortBy sortBy, SortOrder sortOrder, SortAttribute sortAttributes = SortAttributeNone);
760 void FillInDefaultIcons();
761 int GetFolderCount()
const;
762 int GetFileCount()
const;
763 int GetSelectedCount()
const;
764 int GetObjectCount()
const;
765 void FilterCueItems();
766 void RemoveExtensions();
767 void SetIgnoreURLOptions(
bool ignoreURLOptions);
768 void SetFastLookup(
bool fastLookup);
769 bool Contains(
const std::string& fileName)
const;
770 bool GetFastLookup()
const {
return m_fastLookup; }
777 void Stack(
bool stackFiles =
true);
779 SortOrder GetSortOrder()
const {
return m_sortDescription.sortOrder; }
780 SortBy GetSortMethod()
const {
return m_sortDescription.sortBy; }
781 void SetSortOrder(SortOrder sortOrder) { m_sortDescription.sortOrder = sortOrder; }
782 void SetSortMethod(
SortBy sortBy) { m_sortDescription.sortBy = sortBy; }
794 bool Load(
int windowID = 0);
806 bool Save(
int windowID = 0);
807 void SetCacheToDisc(CACHE_TYPE cacheToDisc) { m_cacheToDisc = cacheToDisc; }
808 bool CacheToDiscAlways()
const {
return m_cacheToDisc == CACHE_ALWAYS; }
809 bool CacheToDiscIfSlow()
const {
return m_cacheToDisc == CACHE_IF_SLOW; }
819 void RemoveDiscCache(
int windowID = 0)
const;
820 void RemoveDiscCache(
const std::string& cachefile)
const;
821 void RemoveDiscCacheCRC(
const std::string& crc)
const;
822 bool AlwaysCache()
const;
824 void Swap(
unsigned int item1,
unsigned int item2);
832 void AddSortMethod(
SortBy sortBy,
int buttonLabel,
const LABEL_MASKS &labelMasks, SortAttribute sortAttributes = SortAttributeNone);
833 void AddSortMethod(
SortBy sortBy, SortAttribute sortAttributes,
int buttonLabel,
const LABEL_MASKS &labelMasks);
835 bool HasSortDetails()
const {
return m_sortDetails.size() != 0; }
836 const std::vector<GUIViewSortDetails> &GetSortDetails()
const {
return m_sortDetails; }
845 bool GetReplaceListing()
const {
return m_replaceListing; }
846 void SetReplaceListing(
bool replace);
847 void SetContent(
const std::string& content) { m_content = content; }
848 const std::string& GetContent()
const {
return m_content; }
850 void ClearSortState();
852 VECFILEITEMS::iterator begin() {
return m_items.begin(); }
853 VECFILEITEMS::iterator end() {
return m_items.end(); }
854 VECFILEITEMS::iterator erase(VECFILEITEMS::iterator first, VECFILEITEMS::iterator last);
855 VECFILEITEMS::const_iterator begin()
const {
return m_items.begin(); }
856 VECFILEITEMS::const_iterator end()
const {
return m_items.end(); }
857 VECFILEITEMS::const_iterator cbegin()
const {
return m_items.cbegin(); }
858 VECFILEITEMS::const_iterator cend()
const {
return m_items.cend(); }
859 std::reverse_iterator<VECFILEITEMS::const_iterator> rbegin()
const {
return m_items.rbegin(); }
860 std::reverse_iterator<VECFILEITEMS::const_iterator> rend()
const {
return m_items.rend(); }
863 void Sort(FILEITEMLISTCOMPARISONFUNC func);
864 void FillSortFields(FILEITEMFILLFUNC func);
865 std::string GetDiscFileCache(
int windowID)
const;
881 bool m_ignoreURLOptions =
false;
882 bool m_fastLookup =
false;
884 bool m_sortIgnoreFolders =
false;
885 CACHE_TYPE m_cacheToDisc = CACHE_IF_SLOW;
886 bool m_replaceListing =
false;
887 std::string m_content;
889 std::vector<GUIViewSortDetails> m_sortDetails;
891 mutable CCriticalSection m_lock;
CDateTime m_dateTime
file creation date & time
Definition: FileItem.h:616
Definition: GUIListItem.h:30
int64_t m_dwSize
file size (0 for folders)
Definition: FileItem.h:617
std::shared_ptr< CFileItem > CFileItemPtr
A shared pointer to CFileItem.
Definition: FileItem.h:688
Definition: ContextMenuManager.h:24
std::vector< CFileItemPtr >::iterator IVECFILEITEMS
Iterator for VECFILEITEMS.
Definition: FileItem.h:700
Represents a list of files.
Definition: FileItem.h:721
int64_t GetStartOffset() const
Get the offset where start the playback.
Definition: FileItem.h:383
Definition: Bookmark.h:14
void SetSortIgnoreFolders(bool sort)
Specify whether this list should be sorted with folders separate from files By default we sort with f...
Definition: FileItem.h:844
void SetStartOffset(const int64_t offset)
Set the offset where start the playback.
Definition: FileItem.h:390
Definition: GameInfoTag.h:24
Definition: LabelFormatter.h:21
int64_t GetEndOffset() const
Get the end offset.
Definition: FileItem.h:396
Definition: ISerializable.h:13
Definition: AudioDecoder.h:18
Definition: CueDocument.h:20
Class to store and read album information from CMusicDatabase.
Definition: Song.h:34
int m_iDriveType
If m_bIsShareOrDrive is true, use to get the share type. Types see: CMediaSource::m_iDriveType.
Definition: FileItem.h:615
DateTime class, which uses FileTime as it's base.
Definition: XBDateTime.h:63
Definition: ISortable.h:15
bool ContentLookup()
Some sources do not support HTTP HEAD request to determine i.e. mime type.
Definition: FileItem.h:549
SortBy
Definition: SortUtils.h:49
std::map< std::string, CFileItemPtr > MAPFILEITEMS
A map of pointers to CFileItem.
Definition: FileItem.h:706
std::vector< CFileItemPtr > VECFILEITEMS
A vector of pointer to CFileItem.
Definition: FileItem.h:694
void SetContentLookup(bool enable)
Lookup via HTTP HEAD request might not be needed, use this setter to disable ContentLookup.
Definition: FileItem.h:561
bool m_bIsShareOrDrive
is this a root share/drive
Definition: FileItem.h:614
Definition: PictureInfoTag.h:30
Definition: SortUtils.h:176
std::pair< std::string, CFileItemPtr > MAPFILEITEMSPAIR
Pair for MAPFILEITEMS.
Definition: FileItem.h:712
Definition: VideoInfoTag.h:51
Definition: MusicInfoTag.h:27
Definition: IArchivable.h:13
Class to store and read song information from CMusicDatabase.
Definition: Song.h:48
Represents a file on a share.
Definition: FileItem.h:102
void SetEndOffset(const int64_t offset)
Set the end offset.
Definition: FileItem.h:402
Definition: Application.h:79