summaryrefslogtreecommitdiffstats
path: root/xbmc/dialogs/GUIDialogFileBrowser.h
diff options
context:
space:
mode:
Diffstat (limited to 'xbmc/dialogs/GUIDialogFileBrowser.h')
-rw-r--r--xbmc/dialogs/GUIDialogFileBrowser.h88
1 files changed, 88 insertions, 0 deletions
diff --git a/xbmc/dialogs/GUIDialogFileBrowser.h b/xbmc/dialogs/GUIDialogFileBrowser.h
new file mode 100644
index 0000000..8cafaba
--- /dev/null
+++ b/xbmc/dialogs/GUIDialogFileBrowser.h
@@ -0,0 +1,88 @@
+/*
+ * Copyright (C) 2005-2018 Team Kodi
+ * This file is part of Kodi - https://kodi.tv
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ * See LICENSES/README.md for more information.
+ */
+
+#pragma once
+
+#include "filesystem/DirectoryHistory.h"
+#include "filesystem/VirtualDirectory.h"
+#include "guilib/GUIDialog.h"
+#include "pictures/PictureThumbLoader.h"
+#include "view/GUIViewControl.h"
+
+#include <string>
+#include <vector>
+
+class CFileItem;
+class CFileItemList;
+
+class CGUIDialogFileBrowser : public CGUIDialog, public IBackgroundLoaderObserver
+{
+public:
+ CGUIDialogFileBrowser(void);
+ ~CGUIDialogFileBrowser(void) override;
+ bool OnMessage(CGUIMessage& message) override;
+ bool OnAction(const CAction &action) override;
+ bool OnBack(int actionID) override;
+ void FrameMove() override;
+ void OnWindowLoaded() override;
+ void OnWindowUnload() override;
+ bool IsConfirmed() { return m_bConfirmed; }
+ void SetHeading(const std::string &heading);
+
+ static bool ShowAndGetDirectory(const VECSOURCES &shares, const std::string &heading, std::string &path, bool bWriteOnly=false);
+ static bool ShowAndGetFile(const VECSOURCES &shares, const std::string &mask, const std::string &heading, std::string &path, bool useThumbs = false, bool useFileDirectories = false);
+ 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);
+ static bool ShowAndGetSource(std::string &path, bool allowNetworkShares, VECSOURCES* additionalShare = NULL, const std::string& strType="");
+ 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);
+ static bool ShowAndGetImage(const VECSOURCES &shares, const std::string &heading, std::string &path);
+ static bool ShowAndGetImage(const CFileItemList &items, const VECSOURCES &shares, const std::string &heading, std::string &path, bool* flip=NULL, int label=21371);
+ static bool ShowAndGetImageList(const VECSOURCES &shares, const std::string &heading, std::vector<std::string> &path);
+
+ void SetSources(const VECSOURCES &shares);
+
+ void OnItemLoaded(CFileItem *item) override {};
+
+ bool HasListItems() const override { return true; }
+ CFileItemPtr GetCurrentListItem(int offset = 0) override;
+ int GetViewContainerID() const override { return m_viewControl.GetCurrentControl(); }
+
+protected:
+ void GoParentFolder();
+ void OnClick(int iItem);
+ void OnSort();
+ void ClearFileItems();
+ void Update(const std::string &strDirectory);
+ bool HaveDiscOrConnection( int iDriveType );
+ bool OnPopupMenu(int iItem);
+ void OnAddNetworkLocation();
+ void OnAddMediaSource();
+ void OnEditMediaSource(CFileItem* pItem);
+ CGUIControl *GetFirstFocusableControl(int id) override;
+
+ VECSOURCES m_shares;
+ XFILE::CVirtualDirectory m_rootDir;
+ CFileItemList* m_vecItems;
+ CFileItem* m_Directory;
+ std::string m_strParentPath;
+ std::string m_selectedPath;
+ CDirectoryHistory m_history;
+ int m_browsingForFolders; // 0 - no, 1 - yes, 2 - yes, only writable
+ bool m_bConfirmed;
+ int m_bFlip;
+ bool m_addNetworkShareEnabled;
+ bool m_flipEnabled;
+ std::string m_addSourceType;
+ bool m_browsingForImages;
+ bool m_useFileDirectories;
+ bool m_singleList; // if true, we have no shares or anything
+ bool m_multipleSelection;
+ std::vector<std::string> m_markedPath;
+
+ CPictureThumbLoader m_thumbLoader;
+ CGUIViewControl m_viewControl;
+};