xbmc
IDirectory.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 "utils/Variant.h"
12 
13 #include <string>
14 
15 class CFileItemList;
16 class CProfileManager;
17 class CURL;
18 class CFileItem;
19 
20 namespace XFILE
21 {
22  enum DIR_CACHE_TYPE
23  {
24  DIR_CACHE_NEVER = 0,
25  DIR_CACHE_ONCE,
26  DIR_CACHE_ALWAYS
27  };
28 
33  enum DIR_FLAG
34  {
35  DIR_FLAG_DEFAULTS = 0,
36  DIR_FLAG_NO_FILE_DIRS = (2 << 0),
37  DIR_FLAG_ALLOW_PROMPT = (2 << 1),
38  DIR_FLAG_NO_FILE_INFO = (2 << 2),
39  DIR_FLAG_GET_HIDDEN = (2 << 3),
40  DIR_FLAG_READ_CACHE = (2 << 4),
41  DIR_FLAG_BYPASS_CACHE = (2 << 5)
42  };
52 {
53 public:
54  static void RegisterProfileManager(const CProfileManager &profileManager);
55  static void UnregisterProfileManager();
56 
57  IDirectory();
58  virtual ~IDirectory(void);
66  virtual bool GetDirectory(const CURL& url, CFileItemList &items) = 0;
72  virtual float GetProgress() const { return 0.0f; }
77  virtual void CancelDirectory() {}
84  virtual bool Create(const CURL& url) { return false; }
91  virtual bool Exists(const CURL& url) { return false; }
97  virtual bool Remove(const CURL& url) { return false; }
98 
104  virtual bool RemoveRecursive(const CURL& url) { return false; }
105 
111  virtual bool IsAllowed(const CURL& url) const;
112 
116  virtual bool AllowAll() const { return false; }
117 
123  virtual DIR_CACHE_TYPE GetCacheType(const CURL& url) const { return DIR_CACHE_ONCE; }
124 
125  void SetMask(const std::string& strMask);
126  void SetFlags(int flags);
127 
135  bool ProcessRequirements();
136 
143  virtual bool Resolve(CFileItem& item) const { return true; };
144 
145 protected:
155  bool GetKeyboardInput(const CVariant &heading, std::string &input, bool hiddenInput = false);
156 
165  void SetErrorDialog(const CVariant &heading, const CVariant &line1, const CVariant &line2 = 0, const CVariant &line3 = 0);
166 
174  void RequireAuthentication(const CURL& url);
175 
176  static const CProfileManager *m_profileManager;
177 
178  std::string m_strFileMask;
179 
180  int m_flags;
181 
182  CVariant m_requirements;
183 };
184 }
virtual bool Create(const CURL &url)
Create the directory.
Definition: IDirectory.h:84
virtual bool RemoveRecursive(const CURL &url)
Recursively removes the directory.
Definition: IDirectory.h:104
Interface to the directory on a file system.
Definition: IDirectory.h:51
virtual bool Remove(const CURL &url)
Removes the directory.
Definition: IDirectory.h:97
Definition: Scraper.h:41
virtual bool Exists(const CURL &url)
Check for directory existence.
Definition: IDirectory.h:91
Represents a list of files.
Definition: FileItem.h:721
Definition: URL.h:21
virtual float GetProgress() const
Retrieve the progress of the current directory fetch (if possible).
Definition: IDirectory.h:72
bool GetKeyboardInput(const CVariant &heading, std::string &input, bool hiddenInput=false)
Prompt the user for some keyboard input Call this method from the GetDirectory method to retrieve add...
Definition: IDirectory.cpp:148
Definition: Variant.h:31
virtual bool IsAllowed(const CURL &url) const
Whether this file should be listed.
Definition: IDirectory.cpp:48
virtual void CancelDirectory()
Cancel the current directory fetch (if possible).
Definition: IDirectory.h:77
std::string m_strFileMask
Holds the file mask specified by SetMask()
Definition: IDirectory.h:178
void RequireAuthentication(const CURL &url)
Prompt the user for authentication of a URL. Call this method from the GetDirectory method when authe...
Definition: IDirectory.cpp:172
int m_flags
Directory flags - see DIR_FLAG.
Definition: IDirectory.h:180
bool ProcessRequirements()
Process additional requirements before the directory fetch is performed. Some directory fetches may r...
Definition: IDirectory.cpp:119
void SetMask(const std::string &strMask)
Set a mask of extensions for the files in the directory.
Definition: IDirectory.cpp:101
void SetFlags(int flags)
Set the flags for this directory handler.
Definition: IDirectory.cpp:114
Definition: ProfileManager.h:25
virtual bool GetDirectory(const CURL &url, CFileItemList &items)=0
Get the items of the directory strPath.
virtual bool AllowAll() const
Whether to allow all files/folders to be listed.
Definition: IDirectory.h:116
virtual DIR_CACHE_TYPE GetCacheType(const CURL &url) const
How this directory should be cached.
Definition: IDirectory.h:123
void SetErrorDialog(const CVariant &heading, const CVariant &line1, const CVariant &line2=0, const CVariant &line3=0)
Show an error dialog on failure of GetDirectory call Call this method from the GetDirectory method to...
Definition: IDirectory.cpp:162
virtual bool Resolve(CFileItem &item) const
Resolves a given item to a playable item.
Definition: IDirectory.h:143
Represents a file on a share.
Definition: FileItem.h:102