mirror of
https://github.com/WinampDesktop/winamp.git
synced 2025-06-17 10:55:45 -04:00
Initial community commit
This commit is contained in:
5
Src/Components/wac_playlists/wac_playlists.h
Normal file
5
Src/Components/wac_playlists/wac_playlists.h
Normal file
@ -0,0 +1,5 @@
|
||||
#pragma once
|
||||
|
||||
#include "wac_playlists_playlist.h"
|
||||
|
||||
|
257
Src/Components/wac_playlists/wac_playlists.vcxproj
Normal file
257
Src/Components/wac_playlists/wac_playlists.vcxproj
Normal file
@ -0,0 +1,257 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<VCProjectVersion>16.0</VCProjectVersion>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<ProjectGuid>{7399d85c-6cc7-4a19-ab66-77b1e01dfa44}</ProjectGuid>
|
||||
<RootNamespace>wac_playlists</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0.19041.0</WindowsTargetPlatformVersion>
|
||||
<ProjectName>wac_playlists</ProjectName>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="Shared">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<OutDir>$(PlatformShortName)_$(Configuration)\</OutDir>
|
||||
<IntDir>$(PlatformShortName)_$(Configuration)\</IntDir>
|
||||
<TargetExt>.w5s</TargetExt>
|
||||
<IncludePath>$(IncludePath)</IncludePath>
|
||||
<LibraryPath>$(LibraryPath)</LibraryPath>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<OutDir>$(PlatformShortName)_$(Configuration)\</OutDir>
|
||||
<IntDir>$(PlatformShortName)_$(Configuration)\</IntDir>
|
||||
<TargetExt>.w5s</TargetExt>
|
||||
<IncludePath>$(IncludePath)</IncludePath>
|
||||
<LibraryPath>$(LibraryPath)</LibraryPath>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<OutDir>$(PlatformShortName)_$(Configuration)\</OutDir>
|
||||
<IntDir>$(PlatformShortName)_$(Configuration)\</IntDir>
|
||||
<TargetExt>.w5s</TargetExt>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<OutDir>$(PlatformShortName)_$(Configuration)\</OutDir>
|
||||
<IntDir>$(PlatformShortName)_$(Configuration)\</IntDir>
|
||||
<TargetExt>.w5s</TargetExt>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Label="Vcpkg" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<VcpkgTriplet>x86-windows-static-md</VcpkgTriplet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Label="Vcpkg" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<VcpkgTriplet>x86-windows-static-md</VcpkgTriplet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Label="Vcpkg" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<VcpkgTriplet>x86-windows-static-md</VcpkgTriplet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Label="Vcpkg" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<VcpkgTriplet>x86-windows-static-md</VcpkgTriplet>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||
<AdditionalIncludeDirectories>..\..\Wasabi;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<SupportJustMyCode>false</SupportJustMyCode>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>
|
||||
</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
|
||||
<RandomizedBaseAddress>false</RandomizedBaseAddress>
|
||||
</Link>
|
||||
<Lib>
|
||||
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
</Lib>
|
||||
<PostBuildEvent>
|
||||
<Message>Post build event: 'xcopy /Y /D $(OutDir)$(TargetName)$(TargetExt) ..\..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\System'</Message>
|
||||
<Command>xcopy /Y /D $(OutDir)$(TargetName)$(TargetExt) ..\..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\System\
|
||||
xcopy /Y /D $(IntDir)$(TargetName).pdb ..\..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\System\</Command>
|
||||
</PostBuildEvent>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile>
|
||||
</PrecompiledHeaderFile>
|
||||
<AdditionalIncludeDirectories>..\..\Wasabi;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<DebugInformationFormat>None</DebugInformationFormat>
|
||||
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>
|
||||
</SubSystem>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
|
||||
</Link>
|
||||
<Lib>
|
||||
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
</Lib>
|
||||
<PostBuildEvent>
|
||||
<Message>Post build event: 'xcopy /Y /D $(OutDir)$(TargetName)$(TargetExt) ..\..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\System'</Message>
|
||||
<Command>xcopy /Y /D $(OutDir)$(TargetName)$(TargetExt) ..\..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\System\</Command>
|
||||
</PostBuildEvent>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||
<AdditionalIncludeDirectories>..\..\Wasabi;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<SupportJustMyCode>false</SupportJustMyCode>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>
|
||||
</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<RandomizedBaseAddress>false</RandomizedBaseAddress>
|
||||
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
|
||||
</Link>
|
||||
<Lib>
|
||||
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
</Lib>
|
||||
<PostBuildEvent>
|
||||
<Message>Post build event: 'xcopy /Y /D $(OutDir)$(TargetName)$(TargetExt) ..\..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\System'</Message>
|
||||
<Command>xcopy /Y /D $(OutDir)$(TargetName)$(TargetExt) ..\..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\System\
|
||||
xcopy /Y /D $(IntDir)$(TargetName).pdb ..\..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\System\</Command>
|
||||
</PostBuildEvent>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||
<AdditionalIncludeDirectories>..\..\Wasabi;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<DebugInformationFormat>None</DebugInformationFormat>
|
||||
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>
|
||||
</SubSystem>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
|
||||
</Link>
|
||||
<Lib>
|
||||
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
</Lib>
|
||||
<PostBuildEvent>
|
||||
<Message>Post build event: 'xcopy /Y /D $(OutDir)$(TargetName)$(TargetExt) ..\..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\System'</Message>
|
||||
<Command>xcopy /Y /D $(OutDir)$(TargetName)$(TargetExt) ..\..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\System\</Command>
|
||||
</PostBuildEvent>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="wac_playlists.h" />
|
||||
<ClInclude Include="wac_playlists_entry.h" />
|
||||
<ClInclude Include="wac_playlists_playlist.h" />
|
||||
<ClInclude Include="wac_playlists_playlist_cb.h" />
|
||||
<ClInclude Include="wac_playlists_cb.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="wac_playlists_entry.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\Wasabi\Wasabi.vcxproj">
|
||||
<Project>{3e0bfa8a-b86a-42e9-a33f-ec294f823f7f}</Project>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
39
Src/Components/wac_playlists/wac_playlists.vcxproj.filters
Normal file
39
Src/Components/wac_playlists/wac_playlists.vcxproj.filters
Normal file
@ -0,0 +1,39 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Resource Files">
|
||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="wac_playlists_entry.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="wac_playlists.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="wac_playlists_cb.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="wac_playlists_playlist.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="wac_playlists_playlist_cb.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="wac_playlists_entry.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
4
Src/Components/wac_playlists/wac_playlists_cb.h
Normal file
4
Src/Components/wac_playlists/wac_playlists_cb.h
Normal file
@ -0,0 +1,4 @@
|
||||
#pragma once
|
||||
|
||||
#include "wac_playlists_playlist_cb.h"
|
||||
|
261
Src/Components/wac_playlists/wac_playlists_entry.cpp
Normal file
261
Src/Components/wac_playlists/wac_playlists_entry.cpp
Normal file
@ -0,0 +1,261 @@
|
||||
#include "wac_playlists_entry.h"
|
||||
|
||||
|
||||
wa::Components::playlists::playlist_entry::playlist_entry( const std::wstring &p_filename, const std::wstring &p_title, int p_length_ms )
|
||||
{
|
||||
this->__filename = p_filename;
|
||||
this->__filetitle = p_title;
|
||||
|
||||
SetLengthMilliseconds( p_length_ms );
|
||||
}
|
||||
|
||||
wa::Components::playlists::playlist_entry::playlist_entry( const std::wstring &p_filename, const std::wstring &p_title, int p_length_ms, int p_size )
|
||||
{
|
||||
this->__filename = p_filename;
|
||||
this->__filetitle = p_title;
|
||||
|
||||
SetLengthMilliseconds( p_length_ms );
|
||||
SetSizeBytes( p_size );
|
||||
}
|
||||
|
||||
wa::Components::playlists::playlist_entry::playlist_entry( const std::wstring &p_filename, const std::wstring &p_title, int p_length_ms, ifc_plentryinfo *p_info )
|
||||
{
|
||||
this->__filename = p_filename;
|
||||
this->__filetitle = p_title;
|
||||
|
||||
SetLengthMilliseconds( p_length_ms );
|
||||
|
||||
if ( p_info )
|
||||
{
|
||||
SetMediahash( p_info->GetExtendedInfo( _CONST_PLAYLIST_INFO_MEDIAHASH ) );
|
||||
SetMetahash( p_info->GetExtendedInfo( _CONST_PLAYLIST_INFO_METAHASH ) );
|
||||
SetCloudID( p_info->GetExtendedInfo( _CONST_PLAYLIST_INFO_CLOUD_ID ) );
|
||||
SetCloudStatus( p_info->GetExtendedInfo( _CONST_PLAYLIST_INFO_CLOUD_STATUS ) );
|
||||
SetCloudDevices( p_info->GetExtendedInfo( _CONST_PLAYLIST_INFO_CLOUD_DEVICES ) );
|
||||
}
|
||||
}
|
||||
|
||||
wa::Components::playlists::playlist_entry::playlist_entry( const std::wstring &p_filename, const std::wstring &p_title, int p_length_ms, int p_size, ifc_plentryinfo *p_info )
|
||||
{
|
||||
this->__filename = p_filename;
|
||||
this->__filetitle = p_title;
|
||||
|
||||
SetLengthMilliseconds( p_length_ms );
|
||||
SetSizeBytes( p_size );
|
||||
|
||||
if ( p_info )
|
||||
{
|
||||
SetMediahash( p_info->GetExtendedInfo( _CONST_PLAYLIST_INFO_MEDIAHASH ) );
|
||||
SetMetahash( p_info->GetExtendedInfo( _CONST_PLAYLIST_INFO_METAHASH ) );
|
||||
SetCloudID( p_info->GetExtendedInfo( _CONST_PLAYLIST_INFO_CLOUD_ID ) );
|
||||
SetCloudStatus( p_info->GetExtendedInfo( _CONST_PLAYLIST_INFO_CLOUD_STATUS ) );
|
||||
SetCloudDevices( p_info->GetExtendedInfo( _CONST_PLAYLIST_INFO_CLOUD_DEVICES ) );
|
||||
}
|
||||
}
|
||||
|
||||
wa::Components::playlists::playlist_entry::playlist_entry( const std::wstring &p_filename, const std::wstring &p_title, int p_length_ms,
|
||||
const std::wstring &p_mediahash, const std::wstring &p_metahash, const std::wstring &p_cloud_id, const std::wstring &p_cloud_status, const std::wstring &p_cloud_devices )
|
||||
{
|
||||
this->__filename = p_filename;
|
||||
this->__filetitle = p_title;
|
||||
|
||||
SetLengthMilliseconds( p_length_ms );
|
||||
|
||||
this->__mediahash = p_mediahash;
|
||||
this->__metahash = p_metahash;
|
||||
|
||||
SetCloudID( p_cloud_id );
|
||||
SetCloudStatus( p_cloud_status );
|
||||
|
||||
this->__cloud_devices = p_cloud_devices;
|
||||
}
|
||||
|
||||
wa::Components::playlists::playlist_entry::playlist_entry( const std::wstring &p_filename, const std::wstring &p_title, int p_length_ms, int p_size,
|
||||
const std::wstring &p_mediahash, const std::wstring &p_metahash, const std::wstring &p_cloud_id, const std::wstring &p_cloud_status, const std::wstring &p_cloud_devices )
|
||||
{
|
||||
this->__filename = p_filename;
|
||||
this->__filetitle = p_title;
|
||||
|
||||
SetLengthMilliseconds( p_length_ms );
|
||||
SetSizeBytes( p_size );
|
||||
|
||||
this->__mediahash = p_mediahash;
|
||||
this->__metahash = p_metahash;
|
||||
|
||||
SetCloudID( p_cloud_id );
|
||||
SetCloudStatus( p_cloud_status );
|
||||
|
||||
this->__cloud_devices = p_cloud_devices;
|
||||
}
|
||||
|
||||
size_t wa::Components::playlists::playlist_entry::GetFilename( std::wstring &p_filename, size_t p_filename_max_length )
|
||||
{
|
||||
if ( p_filename.empty() )
|
||||
return this->__filename.size();
|
||||
|
||||
if ( this->__filename.empty() )
|
||||
return 0;
|
||||
|
||||
p_filename = this->__filename.substr( 0, p_filename_max_length );
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
size_t wa::Components::playlists::playlist_entry::GetTitle( std::wstring &p_title, size_t p_title_max_length )
|
||||
{
|
||||
if ( p_title.empty() )
|
||||
return this->__filetitle.size();
|
||||
|
||||
if ( this->__filetitle.empty() )
|
||||
return 0;
|
||||
|
||||
p_title = this->__filetitle.substr( 0, p_title_max_length );
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
size_t wa::Components::playlists::playlist_entry::GetExtendedInfo( const std::wstring &p_metadata, std::wstring &p_result, const size_t p_result_max_length )
|
||||
{
|
||||
if ( !__cloud_id.empty() )
|
||||
{
|
||||
if ( p_metadata.compare( _CONST_PLAYLIST_INFO_MEDIAHASH ) == 0 )
|
||||
{
|
||||
if ( !__mediahash.empty() )
|
||||
{
|
||||
p_result = __mediahash.substr( 0, p_result_max_length );
|
||||
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
else if ( p_metadata.compare( _CONST_PLAYLIST_INFO_METAHASH ) == 0 )
|
||||
{
|
||||
if ( !__metahash.empty() )
|
||||
{
|
||||
p_result = __metahash.substr( 0, p_result_max_length );
|
||||
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
else if ( p_metadata.compare( _CONST_PLAYLIST_INFO_CLOUD_ID ) == 0 )
|
||||
{
|
||||
if ( !__cloud_id.empty() )
|
||||
{
|
||||
p_result = __cloud_id.substr( 0, p_result_max_length );
|
||||
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
else if ( p_metadata.compare( _CONST_PLAYLIST_INFO_CLOUD_STATUS ) == 0 )
|
||||
{
|
||||
if ( !__cloud_status.empty() )
|
||||
{
|
||||
p_result = __cloud_status.substr( 0, p_result_max_length );
|
||||
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
else if ( p_metadata.compare( _CONST_PLAYLIST_INFO_CLOUD_DEVICES ) == 0 )
|
||||
{
|
||||
if ( !__cloud_devices.empty() )
|
||||
{
|
||||
p_result = __cloud_devices.substr( 0, p_result_max_length );
|
||||
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
else if ( p_metadata.compare( _CONST_PLAYLIST_INFO_CLOUD ) == 0 )
|
||||
{
|
||||
if ( _wtoi( __cloud_id.c_str() ) > 0 )
|
||||
{
|
||||
wchar_t l_result_buffer[ 500 ] = {0};
|
||||
|
||||
swprintf_s( l_result_buffer, p_result_max_length, L"#EXT-X-NS-CLOUD:mediahash=%s,metahash=%s,cloud_id=%s,cloud_status=%s,cloud_devices=%s", __mediahash.c_str(), __metahash.c_str(), __cloud_id.c_str(), __cloud_status.c_str(), __cloud_devices.c_str() );
|
||||
|
||||
p_result = std::wstring( l_result_buffer );
|
||||
|
||||
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
void wa::Components::playlists::playlist_entry::SetFilename( const std::wstring &p_filename )
|
||||
{
|
||||
this->__filename = p_filename;
|
||||
|
||||
if ( p_filename.size() > 4 )
|
||||
__is_local_file = this->__filename.substr( 0, 4 ).compare( L"http" ) != 0;
|
||||
}
|
||||
|
||||
void wa::Components::playlists::playlist_entry::SetTitle( const std::wstring &p_title )
|
||||
{
|
||||
this->__filetitle = p_title;
|
||||
this->__is_cached = !p_title.empty();
|
||||
}
|
||||
|
||||
|
||||
void wa::Components::playlists::playlist_entry::SetLengthMilliseconds( int p_length_ms )
|
||||
{
|
||||
if ( p_length_ms <= 0 )
|
||||
this->__length_ms = -1000;
|
||||
else
|
||||
this->__length_ms = p_length_ms;
|
||||
}
|
||||
|
||||
|
||||
void wa::Components::playlists::playlist_entry::SetMediahash( const std::wstring &p_mediahash )
|
||||
{
|
||||
this->__mediahash = p_mediahash;
|
||||
}
|
||||
|
||||
void wa::Components::playlists::playlist_entry::SetSizeBytes( int p_size )
|
||||
{
|
||||
if ( p_size <= 0 )
|
||||
this->__size = 0;
|
||||
else
|
||||
this->__size = p_size;
|
||||
}
|
||||
|
||||
void wa::Components::playlists::playlist_entry::SetMetahash( const std::wstring &p_metahash )
|
||||
{
|
||||
this->__metahash = p_metahash;
|
||||
}
|
||||
|
||||
void wa::Components::playlists::playlist_entry::SetCloudID( const std::wstring &p_cloud_id )
|
||||
{
|
||||
if ( _wtoi( p_cloud_id.c_str() ) > 0 )
|
||||
this->__cloud_id = p_cloud_id;
|
||||
else
|
||||
this->__cloud_id.clear();
|
||||
}
|
||||
|
||||
void wa::Components::playlists::playlist_entry::SetCloudStatus( const std::wstring &p_cloud_status )
|
||||
{
|
||||
if ( _wtoi( p_cloud_status.c_str() ) > 0 )
|
||||
this->__cloud_status = p_cloud_status;
|
||||
else
|
||||
this->__cloud_status.clear();
|
||||
}
|
||||
|
||||
void wa::Components::playlists::playlist_entry::SetCloudDevices( const std::wstring &p_cloud_devices )
|
||||
{
|
||||
this->__cloud_devices = p_cloud_devices;
|
||||
}
|
||||
|
||||
|
||||
|
115
Src/Components/wac_playlists/wac_playlists_entry.h
Normal file
115
Src/Components/wac_playlists/wac_playlists_entry.h
Normal file
@ -0,0 +1,115 @@
|
||||
#pragma once
|
||||
|
||||
#ifndef _WA_PLAYLISTS_H
|
||||
#define _WA_PLAYLISTS_H
|
||||
|
||||
#include <iostream> // for std::wstring
|
||||
|
||||
#include "bfc\dispatch.h"
|
||||
#include "bfc\platform\types.h"
|
||||
|
||||
namespace wa
|
||||
{
|
||||
namespace Components
|
||||
{
|
||||
namespace playlists
|
||||
{
|
||||
//
|
||||
// CONST
|
||||
//
|
||||
static const std::wstring _CONST_PLAYLIST_INFO_MEDIAHASH = L"mediahash";
|
||||
static const std::wstring _CONST_PLAYLIST_INFO_METAHASH = L"metahash";
|
||||
static const std::wstring _CONST_PLAYLIST_INFO_CLOUD_ID = L"cloud_id";
|
||||
static const std::wstring _CONST_PLAYLIST_INFO_CLOUD_STATUS = L"cloud_status";
|
||||
static const std::wstring _CONST_PLAYLIST_INFO_CLOUD_DEVICES = L"cloud_devices";
|
||||
static const std::wstring _CONST_PLAYLIST_INFO_CLOUD = L"cloud";
|
||||
|
||||
|
||||
//
|
||||
// ifc_plentryinfo
|
||||
//
|
||||
class ifc_plentryinfo : public Dispatchable
|
||||
{
|
||||
protected:
|
||||
ifc_plentryinfo() {}
|
||||
~ifc_plentryinfo() {}
|
||||
|
||||
public:
|
||||
virtual const std::wstring GetExtendedInfo( const std::wstring &p_parameter );
|
||||
|
||||
DISPATCH_CODES
|
||||
{
|
||||
IFC_PLENTRYINFO_GETEXTENDEDINFO = 10,
|
||||
};
|
||||
};
|
||||
|
||||
inline const std::wstring ifc_plentryinfo::GetExtendedInfo( const std::wstring &p_parameter )
|
||||
{
|
||||
return std::wstring( _call( IFC_PLENTRYINFO_GETEXTENDEDINFO, (const wchar_t *)0, p_parameter.c_str() ) );
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// playlist_entry
|
||||
//
|
||||
class playlist_entry
|
||||
{
|
||||
public:
|
||||
playlist_entry() {}
|
||||
playlist_entry( const std::wstring &p_filename, const std::wstring &p_title, int p_length_ms );
|
||||
playlist_entry( const std::wstring &p_filename, const std::wstring &p_title, int p_length_ms, int p_size );
|
||||
playlist_entry( const std::wstring &p_filename, const std::wstring &p_title, int p_length_ms, ifc_plentryinfo *p_info );
|
||||
playlist_entry( const std::wstring &p_filename, const std::wstring &p_title, int p_length_ms, int p_size, ifc_plentryinfo *p_info );
|
||||
playlist_entry( const std::wstring &p_filename, const std::wstring &p_title, int p_length_ms,
|
||||
const std::wstring &p_mediahash, const std::wstring &p_metahash, const std::wstring &p_cloud_id, const std::wstring &p_cloud_status, const std::wstring &p_cloud_devices );
|
||||
playlist_entry( const std::wstring &p_filename, const std::wstring &p_title, int p_length_ms, int p_size,
|
||||
const std::wstring &p_mediahash, const std::wstring &p_metahash, const std::wstring &p_cloud_id, const std::wstring &p_cloud_status, const std::wstring &p_cloud_devices );
|
||||
|
||||
virtual ~playlist_entry() {}
|
||||
|
||||
virtual size_t GetFilename( std::wstring &p_filename, const size_t p_filename_max_length );
|
||||
virtual size_t GetTitle( std::wstring &p_title, const size_t p_title_max_length );
|
||||
|
||||
virtual int GetLengthInMilliseconds() const { return this->__length_ms; }
|
||||
virtual int GetSizeInBytes() const { return this->__size; }
|
||||
|
||||
virtual size_t GetExtendedInfo( const std::wstring &p_metadata, std::wstring &p_result, const size_t p_result_max_length );
|
||||
|
||||
virtual void SetFilename( const std::wstring &p_filename );
|
||||
virtual void SetTitle( const std::wstring &p_title );
|
||||
|
||||
virtual void SetLengthMilliseconds( int p_length_ms );
|
||||
virtual void SetSizeBytes( int p_size );
|
||||
|
||||
virtual void SetMediahash( const std::wstring &p_mediahash );
|
||||
virtual void SetMetahash( const std::wstring &p_metahash );
|
||||
virtual void SetCloudID( const std::wstring &p_cloud_id );
|
||||
virtual void SetCloudStatus( const std::wstring &p_cloud_status );
|
||||
virtual void SetCloudDevices( const std::wstring &p_cloud_devices );
|
||||
|
||||
virtual bool isCached() const { return __is_cached; }
|
||||
virtual bool isLocalFile() const { return __is_local_file; }
|
||||
|
||||
|
||||
protected:
|
||||
std::wstring __filename;
|
||||
std::wstring __filetitle;
|
||||
|
||||
std::wstring __mediahash;
|
||||
std::wstring __metahash;
|
||||
std::wstring __cloud_id;
|
||||
std::wstring __cloud_status;
|
||||
std::wstring __cloud_devices;
|
||||
|
||||
int __length_ms = -1;
|
||||
int __size = 0;
|
||||
|
||||
bool __is_cached = false;
|
||||
bool __is_local_file = false;
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#endif // !_WA_PLAYLISTS_H
|
25
Src/Components/wac_playlists/wac_playlists_playlist.h
Normal file
25
Src/Components/wac_playlists/wac_playlists_playlist.h
Normal file
@ -0,0 +1,25 @@
|
||||
#pragma once
|
||||
|
||||
#include "wac_playlists_entry.h"
|
||||
|
||||
#include <bfc/multipatch.h>
|
||||
|
||||
namespace wa
|
||||
{
|
||||
namespace components
|
||||
{
|
||||
namespace playlists
|
||||
{
|
||||
enum
|
||||
{
|
||||
patch_playlist,
|
||||
patch_playlistloadercallback
|
||||
};
|
||||
|
||||
class playlist : public MultiPatch<patch_playlist, ifc_playlist>, public MultiPatch<patch_playlistloadercallback, ifc_playlistloadercallback>
|
||||
{
|
||||
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
4
Src/Components/wac_playlists/wac_playlists_playlist_cb.h
Normal file
4
Src/Components/wac_playlists/wac_playlists_playlist_cb.h
Normal file
@ -0,0 +1,4 @@
|
||||
#pragma once
|
||||
|
||||
#include "wac_playlists_entry.h"
|
||||
|
Reference in New Issue
Block a user