xbmc
GUIDialogFileBrowser.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 "filesystem/DirectoryHistory.h"
12 #include "filesystem/VirtualDirectory.h"
13 #include "guilib/GUIDialog.h"
14 #include "pictures/PictureThumbLoader.h"
15 #include "view/GUIViewControl.h"
16 
17 #include <string>
18 #include <vector>
19 
20 class CFileItem;
21 class CFileItemList;
22 
24 {
25 public:
27  ~CGUIDialogFileBrowser(void) override;
28  bool OnMessage(CGUIMessage& message) override;
29  bool OnAction(const CAction &action) override;
30  bool OnBack(int actionID) override;
31  void FrameMove() override;
32  void OnWindowLoaded() override;
33  void OnWindowUnload() override;
34  bool IsConfirmed() { return m_bConfirmed; }
35  void SetHeading(const std::string &heading);
36 
37  static bool ShowAndGetDirectory(const VECSOURCES &shares, const std::string &heading, std::string &path, bool bWriteOnly=false);
38  static bool ShowAndGetFile(const VECSOURCES &shares, const std::string &mask, const std::string &heading, std::string &path, bool useThumbs = false, bool useFileDirectories = false);
39  static bool ShowAndGetFile(const std::string &directory, const std::string &mask, const std::string &heading, std::string &path, bool useThumbs = false, bool useFileDirectories = false, bool singleList = false);
40  static bool ShowAndGetSource(std::string &path, bool allowNetworkShares, VECSOURCES* additionalShare = NULL, const std::string& strType="");
41  static bool ShowAndGetFileList(const VECSOURCES &shares, const std::string &mask, const std::string &heading, std::vector<std::string> &path, bool useThumbs = false, bool useFileDirectories = false);
42  static bool ShowAndGetImage(const VECSOURCES &shares, const std::string &heading, std::string &path);
43  static bool ShowAndGetImage(const CFileItemList &items, const VECSOURCES &shares, const std::string &heading, std::string &path, bool* flip=NULL, int label=21371);
44  static bool ShowAndGetImageList(const VECSOURCES &shares, const std::string &heading, std::vector<std::string> &path);
45 
46  void SetSources(const VECSOURCES &shares);
47 
48  void OnItemLoaded(CFileItem *item) override {};
49 
50  bool HasListItems() const override { return true; }
51  CFileItemPtr GetCurrentListItem(int offset = 0) override;
52  int GetViewContainerID() const override { return m_viewControl.GetCurrentControl(); }
53 
54 protected:
55  void GoParentFolder();
56  void OnClick(int iItem);
57  void OnSort();
58  void ClearFileItems();
59  void Update(const std::string &strDirectory);
60  bool HaveDiscOrConnection( int iDriveType );
61  bool OnPopupMenu(int iItem);
62  void OnAddNetworkLocation();
63  void OnAddMediaSource();
64  void OnEditMediaSource(CFileItem* pItem);
65  CGUIControl *GetFirstFocusableControl(int id) override;
66 
67  VECSOURCES m_shares;
68  XFILE::CVirtualDirectory m_rootDir;
69  CFileItemList* m_vecItems;
70  CFileItem* m_Directory;
71  std::string m_strParentPath;
72  std::string m_selectedPath;
73  CDirectoryHistory m_history;
74  int m_browsingForFolders; // 0 - no, 1 - yes, 2 - yes, only writable
75  bool m_bConfirmed;
76  int m_bFlip;
77  bool m_addNetworkShareEnabled;
78  bool m_flipEnabled;
79  std::string m_addSourceType;
80  bool m_browsingForImages;
81  bool m_useFileDirectories;
82  bool m_singleList; // if true, we have no shares or anything
83  bool m_multipleSelection;
84  std::vector<std::string> m_markedPath;
85 
86  CPictureThumbLoader m_thumbLoader;
87  CGUIViewControl m_viewControl;
88 };
Definition: GUIViewControl.h:19
Definition: PictureThumbLoader.h:14
bool HaveDiscOrConnection(int iDriveType)
Definition: GUIDialogFileBrowser.cpp:558
Represents a list of files.
Definition: FileItem.h:713
Definition: BackgroundInfoLoader.h:22
Base class for controls.
Definition: GUIControl.h:75
Definition: GUIDialogFileBrowser.h:23
void FrameMove() override
Main update function, called every frame prior to rendering Any window that requires updating on a fr...
Definition: GUIDialogFileBrowser.cpp:470
class encapsulating information regarding a particular user action to be sent to windows and controls...
Definition: Action.h:22
Definition: GUIDialog.h:35
Get access to shares and it&#39;s directories.
Definition: VirtualDirectory.h:24
Definition: GUIMessage.h:365
Definition: DirectoryHistory.h:15
Represents a file on a share.
Definition: FileItem.h:102