<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ImportGroup Label="PropertySheets">
    <Import Project="basedir.props" Condition=" '$(BaseDirImported)' == ''"/>
  </ImportGroup>

  <PropertyGroup>
    <sounds_dirImported>true</sounds_dirImported>
  </PropertyGroup>

  <UsingTask TaskName="GetSoundsDirTask" 
             TaskFactory="CodeTaskFactory"  
             AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
             <ParameterGroup>  
                <SoundsDir ParameterType="System.String" Output="True"/>   
             </ParameterGroup>  
             <Task>  
                <Reference Include="Microsoft.Build" />
                <Reference Include="Microsoft.Build.Framework" />
                <Code Type="Class" Language="cs">
<![CDATA[  
using System;
using System.IO;
using Microsoft.Build.Framework;

    public class GetSoundsDirTask : Microsoft.Build.Utilities.Task
    {
        [Output]        
        public string SoundsDir { get; set; }

        public override bool Execute()
        {
            /*SoundsDir = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData);
            SoundsDir += "\\FreeSWITCH\\sounds"; */

            string platform = (@"$(Platform)" == "x86") ? "Win32" : @"$(Platform)";

            SoundsDir = @"$(SolutionDir)" + platform + @"\$(Configuration)\sounds";

            Directory.CreateDirectory(SoundsDir);

            return true;
        }
    }
]]>  
                </Code>  
             </Task>  
  </UsingTask>  

  <Target Name="GetSoundsDirTarget" BeforeTargets="CustomBuild;Build">  
      <GetSoundsDirTask>         
           <Output PropertyName="SoundsDir" TaskParameter="SoundsDir" /> 
      </GetSoundsDirTask>         
      <Message Importance="High" Text="SoundsDir is set to: $(SoundsDir)"/> 
  </Target> 

  <UsingTask TaskName="GetSoundFileNameTask" 
             TaskFactory="CodeTaskFactory"  
             AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
             <ParameterGroup>  
                <SoundPrimaryName Required="true" />
                <SoundQuality Required="true" />
                <SoundFileName ParameterType="System.String" Output="True"/>   
             </ParameterGroup>  
             <Task>  
                <Reference Include="Microsoft.Build" />
                <Reference Include="Microsoft.Build.Framework" />
                <Code Type="Class" Language="cs">
<![CDATA[  
using System;
using System.IO;
using Microsoft.Build.Framework;

    public class GetSoundFileNameTask : Microsoft.Build.Utilities.Task
    {
        [Required]
        public string SoundPrimaryName { get; set; }
        public string SoundQuality { get; set; }

        [Output]        
        public string SoundFileName { get; set; }

        public override bool Execute()
        {
            string SoundVersion = "";

            string SoundVersionFile = "";
            if (SoundPrimaryName == "music") {
                SoundVersion = File.ReadAllText(@"$(BaseDir)build/moh_version.txt").Trim();
            } else {
                foreach (string line in File.ReadLines(@"$(BaseDir)build/sounds_version.txt")) {
                    var items = line.Split(' ');
                    if ( items[0] == SoundPrimaryName ) {
                        SoundVersion = items[1].Trim();
                        break;
                    }                           
                }
            }

            SoundFileName = "freeswitch-sounds-" + SoundPrimaryName + "-" + SoundQuality + "-" + SoundVersion + ".tar.gz";
            return true;
        }
    }
]]>  
                </Code>  
             </Task>  
  </UsingTask>  

</Project>