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;
374 bool IsResumable()
const;
402 inline bool HasPictureInfoTag()
const 404 return m_pictureInfoTag != NULL;
409 return m_pictureInfoTag;
412 bool HasAddonInfo()
const {
return m_addonInfo !=
nullptr; }
413 const std::shared_ptr<const ADDON::IAddon> GetAddonInfo()
const {
return m_addonInfo; }
415 inline bool HasGameInfoTag()
const 417 return m_gameInfoTag != NULL;
424 return m_gameInfoTag;
434 std::string GetLocalFanart()
const;
443 std::string GetLocalArtBaseFilename()
const;
451 std::string GetLocalArtBaseFilename(
bool& useFolder)
const;
460 std::string GetLocalArt(
const std::string& artFile,
bool useFolder =
false)
const;
469 std::string FindLocalArt(
const std::string &artFile,
bool useFolder)
const;
475 bool SkipLocalArt()
const;
482 std::string GetThumbHideIfUnwatched(
const CFileItem* item)
const;
485 std::string GetTBNFile()
const;
487 std::string GetFolderThumb(
const std::string &folderJPG =
"folder.jpg")
const;
489 std::string GetMovieName(
bool bUseFolderNames =
false)
const;
498 std::string GetBaseMoviePath(
bool useFolderNames)
const;
501 std::string GetUserMusicThumb(
bool alwaysCheckRemote =
false,
bool fallbackToFolder =
false)
const;
515 std::string GetLocalMetadataPath()
const;
518 std::string FindTrailer()
const;
531 const std::string& GetMimeType()
const {
return m_mimetype; }
534 void SetMimeType(
const std::string& mimetype) { m_mimetype = mimetype; } ;
541 void FillInMimeType(
bool lookup =
true);
553 void SetMimeTypeForInternetFile();
562 void SetExtraInfo(
const std::string& info) { m_extrainfo = info; }
563 const std::string& GetExtraInfo()
const {
return m_extrainfo; }
573 void UpdateInfo(
const CFileItem &item,
bool replaceLabels =
true);
583 bool IsSamePath(
const CFileItem *item)
const;
585 bool IsAlbum()
const;
604 void SetFromAlbum(
const CAlbum &album);
610 void SetFromSong(
const CSong &song);
616 std::string m_strDVDLabel;
617 std::string m_strTitle;
620 int m_lStartPartNumber;
621 LockType m_iLockMode;
622 std::string m_strLockCode;
626 void SetCueDocument(
const CCueDocumentPtr& cuePtr);
627 void LoadEmbeddedCue();
628 bool HasCueDocument()
const;
646 void FillMusicInfoTag(
const std::shared_ptr<PVR::CPVREpgInfoTag>& tag);
648 std::string m_strPath;
649 std::string m_strDynPath;
651 SortSpecial m_specialSort;
652 bool m_bIsParentFolder;
654 bool m_bLabelPreformatted;
655 std::string m_mimetype;
656 std::string m_extrainfo;
657 bool m_doContentLookup;
660 std::shared_ptr<PVR::CPVREpgInfoTag> m_epgInfoTag;
661 std::shared_ptr<PVR::CPVREpgSearchFilter> m_epgSearchFilter;
662 std::shared_ptr<PVR::CPVRRecording> m_pvrRecordingInfoTag;
663 std::shared_ptr<PVR::CPVRTimerInfoTag> m_pvrTimerInfoTag;
664 std::shared_ptr<PVR::CPVRChannelGroupMember> m_pvrChannelGroupMemberInfoTag;
666 std::shared_ptr<const ADDON::IAddon> m_addonInfo;
668 EventPtr m_eventLogEntry;
670 int64_t m_lStartOffset;
671 int64_t m_lEndOffset;
673 CCueDocumentPtr m_cueDocument;
706 typedef bool (*FILEITEMLISTCOMPARISONFUNC) (
const CFileItemPtr &pItem1,
const CFileItemPtr &pItem2);
707 typedef void (*FILEITEMFILLFUNC) (CFileItemPtr &item);
716 enum CACHE_TYPE { CACHE_NEVER = 0, CACHE_IF_SLOW, CACHE_ALWAYS };
721 void Archive(
CArchive& ar)
override;
722 CFileItemPtr operator[] (
int iItem);
723 const CFileItemPtr operator[] (
int iItem)
const;
724 CFileItemPtr operator[] (
const std::string& strPath);
725 const CFileItemPtr operator[] (
const std::string& strPath)
const;
728 void Add(CFileItemPtr item);
730 void AddFront(
const CFileItemPtr &pItem,
int itemPosition);
732 void Remove(
int iItem);
733 CFileItemPtr Get(
int iItem)
const;
735 CFileItemPtr Get(
const std::string& strPath)
const;
737 bool IsEmpty()
const;
739 void Assign(
const CFileItemList& itemlist,
bool append =
false);
740 bool Copy (
const CFileItemList& item,
bool copyItems =
true);
741 void Reserve(
size_t iCount);
742 void Sort(
SortBy sortBy, SortOrder sortOrder, SortAttribute sortAttributes = SortAttributeNone);
752 void FillInDefaultIcons();
753 int GetFolderCount()
const;
754 int GetFileCount()
const;
755 int GetSelectedCount()
const;
756 int GetObjectCount()
const;
757 void FilterCueItems();
758 void RemoveExtensions();
759 void SetIgnoreURLOptions(
bool ignoreURLOptions);
760 void SetFastLookup(
bool fastLookup);
761 bool Contains(
const std::string& fileName)
const;
762 bool GetFastLookup()
const {
return m_fastLookup; }
769 void Stack(
bool stackFiles =
true);
771 SortOrder GetSortOrder()
const {
return m_sortDescription.sortOrder; }
772 SortBy GetSortMethod()
const {
return m_sortDescription.sortBy; }
773 void SetSortOrder(SortOrder sortOrder) { m_sortDescription.sortOrder = sortOrder; }
774 void SetSortMethod(
SortBy sortBy) { m_sortDescription.sortBy = sortBy; }
786 bool Load(
int windowID = 0);
798 bool Save(
int windowID = 0);
799 void SetCacheToDisc(CACHE_TYPE cacheToDisc) { m_cacheToDisc = cacheToDisc; }
800 bool CacheToDiscAlways()
const {
return m_cacheToDisc == CACHE_ALWAYS; }
801 bool CacheToDiscIfSlow()
const {
return m_cacheToDisc == CACHE_IF_SLOW; }
811 void RemoveDiscCache(
int windowID = 0)
const;
812 void RemoveDiscCache(
const std::string& cachefile)
const;
813 void RemoveDiscCacheCRC(
const std::string& crc)
const;
814 bool AlwaysCache()
const;
816 void Swap(
unsigned int item1,
unsigned int item2);
824 void AddSortMethod(
SortBy sortBy,
int buttonLabel,
const LABEL_MASKS &labelMasks, SortAttribute sortAttributes = SortAttributeNone);
825 void AddSortMethod(
SortBy sortBy, SortAttribute sortAttributes,
int buttonLabel,
const LABEL_MASKS &labelMasks);
827 bool HasSortDetails()
const {
return m_sortDetails.size() != 0; }
828 const std::vector<GUIViewSortDetails> &GetSortDetails()
const {
return m_sortDetails; }
837 bool GetReplaceListing()
const {
return m_replaceListing; }
838 void SetReplaceListing(
bool replace);
839 void SetContent(
const std::string& content) { m_content = content; }
840 const std::string& GetContent()
const {
return m_content; }
842 void ClearSortState();
844 VECFILEITEMS::iterator begin() {
return m_items.begin(); }
845 VECFILEITEMS::iterator end() {
return m_items.end(); }
846 VECFILEITEMS::iterator erase(VECFILEITEMS::iterator first, VECFILEITEMS::iterator last);
847 VECFILEITEMS::const_iterator begin()
const {
return m_items.begin(); }
848 VECFILEITEMS::const_iterator end()
const {
return m_items.end(); }
849 VECFILEITEMS::const_iterator cbegin()
const {
return m_items.cbegin(); }
850 VECFILEITEMS::const_iterator cend()
const {
return m_items.cend(); }
851 std::reverse_iterator<VECFILEITEMS::const_iterator> rbegin()
const {
return m_items.rbegin(); }
852 std::reverse_iterator<VECFILEITEMS::const_iterator> rend()
const {
return m_items.rend(); }
855 void Sort(FILEITEMLISTCOMPARISONFUNC func);
856 void FillSortFields(FILEITEMFILLFUNC func);
857 std::string GetDiscFileCache(
int windowID)
const;
873 bool m_ignoreURLOptions =
false;
874 bool m_fastLookup =
false;
876 bool m_sortIgnoreFolders =
false;
877 CACHE_TYPE m_cacheToDisc = CACHE_IF_SLOW;
878 bool m_replaceListing =
false;
879 std::string m_content;
881 std::vector<GUIViewSortDetails> m_sortDetails;
883 mutable CCriticalSection m_lock;
CDateTime m_dateTime
file creation date & time
Definition: FileItem.h:614
Definition: GUIListItem.h:30
int64_t m_dwSize
file size (0 for folders)
Definition: FileItem.h:615
std::shared_ptr< CFileItem > CFileItemPtr
A shared pointer to CFileItem.
Definition: FileItem.h:680
Definition: ContextMenuManager.h:24
std::vector< CFileItemPtr >::iterator IVECFILEITEMS
Iterator for VECFILEITEMS.
Definition: FileItem.h:692
Represents a list of files.
Definition: FileItem.h:713
int64_t GetStartOffset() const
Get the offset where start the playback.
Definition: FileItem.h:381
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:836
void SetStartOffset(const int64_t offset)
Set the offset where start the playback.
Definition: FileItem.h:388
Definition: GameInfoTag.h:21
Definition: LabelFormatter.h:21
int64_t GetEndOffset() const
Get the end offset.
Definition: FileItem.h:394
Definition: ISerializable.h:13
Controller configuration window.
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:613
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:547
SortBy
Definition: SortUtils.h:49
std::map< std::string, CFileItemPtr > MAPFILEITEMS
A map of pointers to CFileItem.
Definition: FileItem.h:698
std::vector< CFileItemPtr > VECFILEITEMS
A vector of pointer to CFileItem.
Definition: FileItem.h:686
void SetContentLookup(bool enable)
Lookup via HTTP HEAD request might not be needed, use this setter to disable ContentLookup.
Definition: FileItem.h:559
bool m_bIsShareOrDrive
is this a root share/drive
Definition: FileItem.h:612
Definition: PictureInfoTag.h:30
Definition: SortUtils.h:176
std::pair< std::string, CFileItemPtr > MAPFILEITEMSPAIR
Pair for MAPFILEITEMS.
Definition: FileItem.h:704
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:400
Definition: Application.h:79