diff options
Diffstat (limited to '')
-rw-r--r-- | xbmc/MediaSource.h | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/xbmc/MediaSource.h b/xbmc/MediaSource.h new file mode 100644 index 0000000..1afbea2 --- /dev/null +++ b/xbmc/MediaSource.h @@ -0,0 +1,109 @@ +/* + * Copyright (C) 2005-2020 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 "LockType.h" +#include "media/MediaLockState.h" + +#include <string> +#include <vector> + +/*! +\ingroup windows +\brief Represents a share. +\sa VECMediaSource, IVECSOURCES +*/ +class CMediaSource final +{ +public: + enum SourceType + { + SOURCE_TYPE_UNKNOWN = 0, + SOURCE_TYPE_LOCAL = 1, + SOURCE_TYPE_DVD = 2, + SOURCE_TYPE_VIRTUAL_DVD = 3, + SOURCE_TYPE_REMOTE = 4, + SOURCE_TYPE_VPATH = 5, + SOURCE_TYPE_REMOVABLE = 6 + }; + + bool operator==(const CMediaSource &right) const; + + void FromNameAndPaths(const std::string &category, const std::string &name, const std::vector<std::string> &paths); + bool IsWritable() const; + std::string strName; ///< Name of the share, can be chosen freely. + std::string strStatus; ///< Status of the share (eg has disk etc.) + std::string strDiskUniqueId; ///< removable:// + DVD Label + DVD ID for resume point storage, if available + std::string strPath; ///< Path of the share, eg. iso9660:// or F: + + /*! + \brief The type of the media source. + + Value can be: + - SOURCE_TYPE_UNKNOWN \n + Unknown source, maybe a wrong path. + - SOURCE_TYPE_LOCAL \n + Harddisk source. + - SOURCE_TYPE_DVD \n + DVD-ROM source of the build in drive, strPath may vary. + - SOURCE_TYPE_VIRTUAL_DVD \n + DVD-ROM source, strPath is fix. + - SOURCE_TYPE_REMOTE \n + Network source. + */ + SourceType m_iDriveType = SOURCE_TYPE_UNKNOWN; + + /*! + \brief The type of Lock UI to show when accessing the media source. + + Value can be: + - CMediaSource::LOCK_MODE_EVERYONE \n + Default value. No lock UI is shown, user can freely access the source. + - LOCK_MODE_NUMERIC \n + Lock code is entered via OSD numpad or IrDA remote buttons. + - LOCK_MODE_GAMEPAD \n + Lock code is entered via XBOX gamepad buttons. + - LOCK_MODE_QWERTY \n + Lock code is entered via OSD keyboard or PC USB keyboard. + - LOCK_MODE_SAMBA \n + Lock code is entered via OSD keyboard or PC USB keyboard and passed directly to SMB for authentication. + - LOCK_MODE_EEPROM_PARENTAL \n + Lock code is retrieved from XBOX EEPROM and entered via XBOX gamepad or remote. + - LOCK_MODE_UNKNOWN \n + Value is unknown or unspecified. + */ + LockType m_iLockMode = LOCK_MODE_EVERYONE; + std::string m_strLockCode; ///< Input code for Lock UI to verify, can be chosen freely. + int m_iHasLock = LOCK_STATE_NO_LOCK; + int m_iBadPwdCount = 0; ///< Number of wrong passwords user has entered since share was last unlocked + + std::string m_strThumbnailImage; ///< Path to a thumbnail image for the share, or blank for default + + std::vector<std::string> vecPaths; + bool m_ignore = false; /// <Do not store in xml + bool m_allowSharing = true; /// <Allow browsing of source from UPnP / WebServer +}; + +/*! +\ingroup windows +\brief A vector to hold CMediaSource objects. +\sa CMediaSource, IVECSOURCES +*/ +typedef std::vector<CMediaSource> VECSOURCES; + +/*! +\ingroup windows +\brief Iterator of VECSOURCES. +\sa CMediaSource, VECSOURCES +*/ +typedef std::vector<CMediaSource>::iterator IVECSOURCES; +typedef std::vector<CMediaSource>::const_iterator CIVECSOURCES; + +void AddOrReplace(VECSOURCES& sources, const VECSOURCES& extras); +void AddOrReplace(VECSOURCES& sources, const CMediaSource& source); |