mirror of
				https://github.com/chibicitiberiu/drumkit.git
				synced 2024-02-24 10:53:32 +00:00 
			
		
		
		
	Added 'show key bindings' feature.
This commit is contained in:
		
										
											Binary file not shown.
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -1,314 +1,316 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 | 
			
		||||
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
 | 
			
		||||
  <PropertyGroup>
 | 
			
		||||
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
 | 
			
		||||
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
 | 
			
		||||
    <ProjectGuid>{9A5D3F55-DFD5-45DB-99FF-C82EFCC3294D}</ProjectGuid>
 | 
			
		||||
    <OutputType>AppContainerExe</OutputType>
 | 
			
		||||
    <AppDesignerFolder>Properties</AppDesignerFolder>
 | 
			
		||||
    <RootNamespace>DrumKit</RootNamespace>
 | 
			
		||||
    <AssemblyName>DrumKit</AssemblyName>
 | 
			
		||||
    <DefaultLanguage>en-US</DefaultLanguage>
 | 
			
		||||
    <FileAlignment>512</FileAlignment>
 | 
			
		||||
    <ProjectTypeGuids>{BC8A1FFA-BEE3-4634-8014-F334798102B3};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
 | 
			
		||||
    <PackageCertificateKeyFile>DrumKit_StoreKey.pfx</PackageCertificateKeyFile>
 | 
			
		||||
    <AppxAutoIncrementPackageRevision>True</AppxAutoIncrementPackageRevision>
 | 
			
		||||
    <PackageCertificateThumbprint>4FCCD6DD6F5D1EEA43AC26BB8D451F1B54209922</PackageCertificateThumbprint>
 | 
			
		||||
    <AppxSymbolPackageEnabled>True</AppxSymbolPackageEnabled>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
 | 
			
		||||
    <PlatformTarget>AnyCPU</PlatformTarget>
 | 
			
		||||
    <DebugSymbols>true</DebugSymbols>
 | 
			
		||||
    <DebugType>full</DebugType>
 | 
			
		||||
    <Optimize>false</Optimize>
 | 
			
		||||
    <OutputPath>bin\Debug\</OutputPath>
 | 
			
		||||
    <DefineConstants>DEBUG;TRACE;NETFX_CORE</DefineConstants>
 | 
			
		||||
    <ErrorReport>prompt</ErrorReport>
 | 
			
		||||
    <WarningLevel>4</WarningLevel>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
 | 
			
		||||
    <PlatformTarget>AnyCPU</PlatformTarget>
 | 
			
		||||
    <DebugType>pdbonly</DebugType>
 | 
			
		||||
    <Optimize>true</Optimize>
 | 
			
		||||
    <OutputPath>bin\Release\</OutputPath>
 | 
			
		||||
    <DefineConstants>TRACE;NETFX_CORE</DefineConstants>
 | 
			
		||||
    <ErrorReport>prompt</ErrorReport>
 | 
			
		||||
    <WarningLevel>4</WarningLevel>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|ARM'">
 | 
			
		||||
    <DebugSymbols>true</DebugSymbols>
 | 
			
		||||
    <OutputPath>bin\ARM\Debug\</OutputPath>
 | 
			
		||||
    <DefineConstants>DEBUG;TRACE;NETFX_CORE</DefineConstants>
 | 
			
		||||
    <NoWarn>;2008</NoWarn>
 | 
			
		||||
    <DebugType>full</DebugType>
 | 
			
		||||
    <PlatformTarget>ARM</PlatformTarget>
 | 
			
		||||
    <UseVSHostingProcess>false</UseVSHostingProcess>
 | 
			
		||||
    <ErrorReport>prompt</ErrorReport>
 | 
			
		||||
    <Prefer32Bit>true</Prefer32Bit>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|ARM'">
 | 
			
		||||
    <OutputPath>bin\ARM\Release\</OutputPath>
 | 
			
		||||
    <DefineConstants>TRACE;NETFX_CORE</DefineConstants>
 | 
			
		||||
    <Optimize>true</Optimize>
 | 
			
		||||
    <NoWarn>;2008</NoWarn>
 | 
			
		||||
    <DebugType>pdbonly</DebugType>
 | 
			
		||||
    <PlatformTarget>ARM</PlatformTarget>
 | 
			
		||||
    <UseVSHostingProcess>false</UseVSHostingProcess>
 | 
			
		||||
    <ErrorReport>prompt</ErrorReport>
 | 
			
		||||
    <Prefer32Bit>true</Prefer32Bit>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
 | 
			
		||||
    <DebugSymbols>true</DebugSymbols>
 | 
			
		||||
    <OutputPath>bin\x64\Debug\</OutputPath>
 | 
			
		||||
    <DefineConstants>DEBUG;TRACE;NETFX_CORE</DefineConstants>
 | 
			
		||||
    <NoWarn>;2008</NoWarn>
 | 
			
		||||
    <DebugType>full</DebugType>
 | 
			
		||||
    <PlatformTarget>x64</PlatformTarget>
 | 
			
		||||
    <UseVSHostingProcess>false</UseVSHostingProcess>
 | 
			
		||||
    <ErrorReport>prompt</ErrorReport>
 | 
			
		||||
    <Prefer32Bit>true</Prefer32Bit>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
 | 
			
		||||
    <OutputPath>bin\x64\Release\</OutputPath>
 | 
			
		||||
    <DefineConstants>TRACE;NETFX_CORE</DefineConstants>
 | 
			
		||||
    <Optimize>true</Optimize>
 | 
			
		||||
    <NoWarn>;2008</NoWarn>
 | 
			
		||||
    <DebugType>pdbonly</DebugType>
 | 
			
		||||
    <PlatformTarget>x64</PlatformTarget>
 | 
			
		||||
    <UseVSHostingProcess>false</UseVSHostingProcess>
 | 
			
		||||
    <ErrorReport>prompt</ErrorReport>
 | 
			
		||||
    <Prefer32Bit>true</Prefer32Bit>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
 | 
			
		||||
    <DebugSymbols>true</DebugSymbols>
 | 
			
		||||
    <OutputPath>bin\x86\Debug\</OutputPath>
 | 
			
		||||
    <DefineConstants>DEBUG;TRACE;NETFX_CORE</DefineConstants>
 | 
			
		||||
    <NoWarn>;2008</NoWarn>
 | 
			
		||||
    <DebugType>full</DebugType>
 | 
			
		||||
    <PlatformTarget>x86</PlatformTarget>
 | 
			
		||||
    <UseVSHostingProcess>false</UseVSHostingProcess>
 | 
			
		||||
    <ErrorReport>prompt</ErrorReport>
 | 
			
		||||
    <Prefer32Bit>true</Prefer32Bit>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
 | 
			
		||||
    <OutputPath>bin\x86\Release\</OutputPath>
 | 
			
		||||
    <DefineConstants>TRACE;NETFX_CORE</DefineConstants>
 | 
			
		||||
    <Optimize>true</Optimize>
 | 
			
		||||
    <NoWarn>;2008</NoWarn>
 | 
			
		||||
    <DebugType>pdbonly</DebugType>
 | 
			
		||||
    <PlatformTarget>x86</PlatformTarget>
 | 
			
		||||
    <UseVSHostingProcess>false</UseVSHostingProcess>
 | 
			
		||||
    <ErrorReport>prompt</ErrorReport>
 | 
			
		||||
    <Prefer32Bit>true</Prefer32Bit>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <Compile Include="App.xaml.cs">
 | 
			
		||||
      <DependentUpon>App.xaml</DependentUpon>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="Controller\DataController.cs" />
 | 
			
		||||
    <Compile Include="Controller\ControllerException.cs" />
 | 
			
		||||
    <Compile Include="Domain\AppInstallInfo.cs" />
 | 
			
		||||
    <Compile Include="Domain\AppSettings.cs" />
 | 
			
		||||
    <Compile Include="Domain\Sound.cs" />
 | 
			
		||||
    <Compile Include="Recorder.cs" />
 | 
			
		||||
    <Compile Include="UI\DrumPlayUI.xaml.cs">
 | 
			
		||||
      <DependentUpon>DrumPlayUI.xaml</DependentUpon>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="UI\DrumEditUI.xaml.cs">
 | 
			
		||||
      <DependentUpon>DrumEditUI.xaml</DependentUpon>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="UI\EditorPage.xaml.cs">
 | 
			
		||||
      <DependentUpon>EditorPage.xaml</DependentUpon>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="UI\Settings\LayoutsSettingsControl.xaml.cs">
 | 
			
		||||
      <DependentUpon>LayoutsSettingsControl.xaml</DependentUpon>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="Utils\UIHelper.cs" />
 | 
			
		||||
    <Compile Include="UI\Settings\ExperimentsSettingsControl.xaml.cs">
 | 
			
		||||
      <DependentUpon>ExperimentsSettingsControl.xaml</DependentUpon>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="UI\CommonControls\FileControl.xaml.cs">
 | 
			
		||||
      <DependentUpon>FileControl.xaml</DependentUpon>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="UI\Settings\DrumsSettingsControl.xaml.cs">
 | 
			
		||||
      <DependentUpon>DrumsSettingsControl.xaml</DependentUpon>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="UI\Settings\DrumkitsSettingsControl.xaml.cs">
 | 
			
		||||
      <DependentUpon>DrumkitsSettingsControl.xaml</DependentUpon>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="UI\Settings\GeneralSettingsControl.xaml.cs">
 | 
			
		||||
      <DependentUpon>GeneralSettingsControl.xaml</DependentUpon>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="Repository\LogRepository.cs" />
 | 
			
		||||
    <Compile Include="Repository\DataRepository.cs" />
 | 
			
		||||
    <Compile Include="Repository\SoundRepository.cs" />
 | 
			
		||||
    <Compile Include="UI\SettingsPage.xaml.cs">
 | 
			
		||||
      <DependentUpon>SettingsPage.xaml</DependentUpon>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="Repository\RepositoryException.cs" />
 | 
			
		||||
    <Compile Include="Utils\IOHelper.cs" />
 | 
			
		||||
    <Compile Include="Log.cs" />
 | 
			
		||||
    <Compile Include="Domain\Drum.cs" />
 | 
			
		||||
    <Compile Include="Domain\DrumConfig.cs" />
 | 
			
		||||
    <Compile Include="Domain\Drumkit.cs" />
 | 
			
		||||
    <Compile Include="Domain\DrumkitConfig.cs" />
 | 
			
		||||
    <Compile Include="Domain\DrumkitLayout.cs" />
 | 
			
		||||
    <Compile Include="Domain\DrumkitLayoutCollection.cs" />
 | 
			
		||||
    <Compile Include="Domain\DrumkitLayoutTargetView.cs" />
 | 
			
		||||
    <Compile Include="Domain\DrumLayout.cs" />
 | 
			
		||||
    <Compile Include="Repository\DrumkitRepository.cs" />
 | 
			
		||||
    <Compile Include="UI\LoadingPage.xaml.cs">
 | 
			
		||||
      <DependentUpon>LoadingPage.xaml</DependentUpon>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="UI\MainPage.xaml.cs">
 | 
			
		||||
      <DependentUpon>MainPage.xaml</DependentUpon>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="Properties\AssemblyInfo.cs" />
 | 
			
		||||
    <Compile Include="SoundPool.cs" />
 | 
			
		||||
    <Compile Include="Domain\SoundSource.cs" />
 | 
			
		||||
    <Compile Include="UI\Settings\LogControl.xaml.cs">
 | 
			
		||||
      <DependentUpon>LogControl.xaml</DependentUpon>
 | 
			
		||||
    </Compile>
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <AppxManifest Include="Package.appxmanifest">
 | 
			
		||||
      <SubType>Designer</SubType>
 | 
			
		||||
    </AppxManifest>
 | 
			
		||||
    <Content Include="Assets\ApplicationData.tar" />
 | 
			
		||||
    <Content Include="Features.txt" />
 | 
			
		||||
    <None Include="Build\7z.exe" />
 | 
			
		||||
    <None Include="Build\ApplicationData\Drumkits\Default\config.xml" />
 | 
			
		||||
    <None Include="Build\ApplicationData\Drumkits\Default\drumkit.xml" />
 | 
			
		||||
    <None Include="Build\ApplicationData\Drumkits\Default\Images\drum.png" />
 | 
			
		||||
    <None Include="Build\ApplicationData\Drumkits\Default\Images\drumPressed.png" />
 | 
			
		||||
    <None Include="Build\ApplicationData\Drumkits\Default\Images\kick.png" />
 | 
			
		||||
    <None Include="Build\ApplicationData\Drumkits\Default\Images\kickPressed.png" />
 | 
			
		||||
    <None Include="Build\ApplicationData\Drumkits\Default\Images\pedal.png" />
 | 
			
		||||
    <None Include="Build\ApplicationData\Drumkits\Default\Images\pedalPressed.png" />
 | 
			
		||||
    <None Include="Build\ApplicationData\Drumkits\Default\Images\plate.png" />
 | 
			
		||||
    <None Include="Build\ApplicationData\Drumkits\Default\Images\platePressed.png" />
 | 
			
		||||
    <None Include="Build\ApplicationData\Drumkits\Default\layout.xml" />
 | 
			
		||||
    <None Include="Build\ApplicationData\Drumkits\Default\Sounds\Crash05.wav" />
 | 
			
		||||
    <None Include="Build\ApplicationData\Drumkits\Default\Sounds\Floor04.wav" />
 | 
			
		||||
    <None Include="Build\ApplicationData\Drumkits\Default\Sounds\Hat04.WAV" />
 | 
			
		||||
    <None Include="Build\ApplicationData\Drumkits\Default\Sounds\HiHatClosed04.wav" />
 | 
			
		||||
    <None Include="Build\ApplicationData\Drumkits\Default\Sounds\HiHatOpen04.wav" />
 | 
			
		||||
    <None Include="Build\ApplicationData\Drumkits\Default\Sounds\Kick07.wav" />
 | 
			
		||||
    <None Include="Build\ApplicationData\Drumkits\Default\Sounds\Ride04.wav" />
 | 
			
		||||
    <None Include="Build\ApplicationData\Drumkits\Default\Sounds\Snare08.wav" />
 | 
			
		||||
    <None Include="Build\ApplicationData\Drumkits\Default\Sounds\TomHigh04.wav" />
 | 
			
		||||
    <None Include="Build\ApplicationData\Drumkits\Default\Sounds\TomLow04.wav" />
 | 
			
		||||
    <None Include="DrumKit_StoreKey.pfx" />
 | 
			
		||||
    <None Include="DrumKit_TemporaryKey.pfx" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <Content Include="Assets\bg.png" />
 | 
			
		||||
    <Content Include="Assets\Logos\BadgeIcon.png" />
 | 
			
		||||
    <Content Include="Assets\Logos\SplashScreen.scale-140.png" />
 | 
			
		||||
    <Content Include="Assets\Logos\SplashScreen.scale-180.png" />
 | 
			
		||||
    <Content Include="Assets\Logos\WideLogo.png" />
 | 
			
		||||
    <Content Include="Assets\Logos\Logo.png" />
 | 
			
		||||
    <Content Include="Assets\Logos\SmallLogo.png" />
 | 
			
		||||
    <Content Include="Assets\Logos\SplashScreen.scale-100.png" />
 | 
			
		||||
    <Content Include="Assets\Logos\StoreLogo.png" />
 | 
			
		||||
    <None Include="Package.StoreAssociation.xml" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <ApplicationDefinition Include="App.xaml">
 | 
			
		||||
      <Generator>MSBuild:Compile</Generator>
 | 
			
		||||
      <SubType>Designer</SubType>
 | 
			
		||||
    </ApplicationDefinition>
 | 
			
		||||
    <Page Include="Common\StandardStyles.xaml">
 | 
			
		||||
      <Generator>MSBuild:Compile</Generator>
 | 
			
		||||
      <SubType>Designer</SubType>
 | 
			
		||||
    </Page>
 | 
			
		||||
    <Page Include="Common\TextButtonStyles.xaml">
 | 
			
		||||
      <SubType>Designer</SubType>
 | 
			
		||||
      <Generator>MSBuild:Compile</Generator>
 | 
			
		||||
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
 | 
			
		||||
    </Page>
 | 
			
		||||
    <Page Include="UI\DrumPlayUI.xaml">
 | 
			
		||||
      <SubType>Designer</SubType>
 | 
			
		||||
      <Generator>MSBuild:Compile</Generator>
 | 
			
		||||
    </Page>
 | 
			
		||||
    <Page Include="UI\DrumEditUI.xaml">
 | 
			
		||||
      <SubType>Designer</SubType>
 | 
			
		||||
      <Generator>MSBuild:Compile</Generator>
 | 
			
		||||
    </Page>
 | 
			
		||||
    <Page Include="UI\EditorPage.xaml">
 | 
			
		||||
      <SubType>Designer</SubType>
 | 
			
		||||
      <Generator>MSBuild:Compile</Generator>
 | 
			
		||||
    </Page>
 | 
			
		||||
    <Page Include="UI\Settings\LayoutsSettingsControl.xaml">
 | 
			
		||||
      <SubType>Designer</SubType>
 | 
			
		||||
      <Generator>MSBuild:Compile</Generator>
 | 
			
		||||
    </Page>
 | 
			
		||||
    <Page Include="UI\Settings\ExperimentsSettingsControl.xaml">
 | 
			
		||||
      <SubType>Designer</SubType>
 | 
			
		||||
      <Generator>MSBuild:Compile</Generator>
 | 
			
		||||
    </Page>
 | 
			
		||||
    <Page Include="UI\CommonControls\FileControl.xaml">
 | 
			
		||||
      <SubType>Designer</SubType>
 | 
			
		||||
      <Generator>MSBuild:Compile</Generator>
 | 
			
		||||
    </Page>
 | 
			
		||||
    <Page Include="UI\Settings\DrumsSettingsControl.xaml">
 | 
			
		||||
      <Generator>MSBuild:Compile</Generator>
 | 
			
		||||
      <SubType>Designer</SubType>
 | 
			
		||||
    </Page>
 | 
			
		||||
    <Page Include="UI\Settings\DrumkitsSettingsControl.xaml">
 | 
			
		||||
      <SubType>Designer</SubType>
 | 
			
		||||
      <Generator>MSBuild:Compile</Generator>
 | 
			
		||||
    </Page>
 | 
			
		||||
    <Page Include="UI\Settings\GeneralSettingsControl.xaml">
 | 
			
		||||
      <SubType>Designer</SubType>
 | 
			
		||||
      <Generator>MSBuild:Compile</Generator>
 | 
			
		||||
    </Page>
 | 
			
		||||
    <Page Include="UI\SettingsPage.xaml">
 | 
			
		||||
      <SubType>Designer</SubType>
 | 
			
		||||
      <Generator>MSBuild:Compile</Generator>
 | 
			
		||||
    </Page>
 | 
			
		||||
    <Page Include="UI\LoadingPage.xaml">
 | 
			
		||||
      <SubType>Designer</SubType>
 | 
			
		||||
      <Generator>MSBuild:Compile</Generator>
 | 
			
		||||
    </Page>
 | 
			
		||||
    <Page Include="UI\MainPage.xaml">
 | 
			
		||||
      <Generator>MSBuild:Compile</Generator>
 | 
			
		||||
      <SubType>Designer</SubType>
 | 
			
		||||
    </Page>
 | 
			
		||||
    <Page Include="UI\Settings\LogControl.xaml">
 | 
			
		||||
      <SubType>Designer</SubType>
 | 
			
		||||
      <Generator>MSBuild:Compile</Generator>
 | 
			
		||||
    </Page>
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <Reference Include="SharpDX, Version=2.4.2.0, Culture=neutral, PublicKeyToken=627a3d6d1956f55a, processorArchitecture=MSIL">
 | 
			
		||||
      <SpecificVersion>False</SpecificVersion>
 | 
			
		||||
      <HintPath>..\..\..\..\WebDownloads\SharpDX242\Bin\Signed-winrt\SharpDX.dll</HintPath>
 | 
			
		||||
    </Reference>
 | 
			
		||||
    <Reference Include="SharpDX.XAudio2, Version=2.4.2.0, Culture=neutral, PublicKeyToken=627a3d6d1956f55a, processorArchitecture=MSIL">
 | 
			
		||||
      <SpecificVersion>False</SpecificVersion>
 | 
			
		||||
      <HintPath>..\..\..\..\WebDownloads\SharpDX242\Bin\Signed-winrt\SharpDX.XAudio2.dll</HintPath>
 | 
			
		||||
    </Reference>
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <ProjectReference Include="..\Tarball\Tarball.csproj">
 | 
			
		||||
      <Project>{5cb567d7-572e-4bae-802f-7e3f62cddf64}</Project>
 | 
			
		||||
      <Name>Tarball</Name>
 | 
			
		||||
    </ProjectReference>
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <PropertyGroup Condition=" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' < '11.0' ">
 | 
			
		||||
    <VisualStudioVersion>11.0</VisualStudioVersion>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <Import Project="$(MSBuildExtensionsPath)\Microsoft\WindowsXaml\v$(VisualStudioVersion)\Microsoft.Windows.UI.Xaml.CSharp.targets" />
 | 
			
		||||
  <PropertyGroup>
 | 
			
		||||
    <PreBuildEvent>"$(ProjectDir)\Build\7z.exe" a -ttar -y "$(ProjectDir)\Assets\ApplicationData.tar" "$(ProjectDir)\Build\ApplicationData\*"</PreBuildEvent>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
 | 
			
		||||
       Other similar extension points exist, see Microsoft.Common.targets.
 | 
			
		||||
  <Target Name="BeforeBuild">
 | 
			
		||||
  </Target>
 | 
			
		||||
  <Target Name="AfterBuild">
 | 
			
		||||
  </Target>
 | 
			
		||||
  -->
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 | 
			
		||||
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
 | 
			
		||||
  <PropertyGroup>
 | 
			
		||||
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
 | 
			
		||||
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
 | 
			
		||||
    <ProjectGuid>{9A5D3F55-DFD5-45DB-99FF-C82EFCC3294D}</ProjectGuid>
 | 
			
		||||
    <OutputType>AppContainerExe</OutputType>
 | 
			
		||||
    <AppDesignerFolder>Properties</AppDesignerFolder>
 | 
			
		||||
    <RootNamespace>DrumKit</RootNamespace>
 | 
			
		||||
    <AssemblyName>DrumKit</AssemblyName>
 | 
			
		||||
    <DefaultLanguage>en-US</DefaultLanguage>
 | 
			
		||||
    <FileAlignment>512</FileAlignment>
 | 
			
		||||
    <ProjectTypeGuids>{BC8A1FFA-BEE3-4634-8014-F334798102B3};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
 | 
			
		||||
    <PackageCertificateKeyFile>DrumKit_StoreKey.pfx</PackageCertificateKeyFile>
 | 
			
		||||
    <AppxAutoIncrementPackageRevision>True</AppxAutoIncrementPackageRevision>
 | 
			
		||||
    <PackageCertificateThumbprint>4FCCD6DD6F5D1EEA43AC26BB8D451F1B54209922</PackageCertificateThumbprint>
 | 
			
		||||
    <AppxSymbolPackageEnabled>True</AppxSymbolPackageEnabled>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
 | 
			
		||||
    <PlatformTarget>AnyCPU</PlatformTarget>
 | 
			
		||||
    <DebugSymbols>true</DebugSymbols>
 | 
			
		||||
    <DebugType>full</DebugType>
 | 
			
		||||
    <Optimize>false</Optimize>
 | 
			
		||||
    <OutputPath>bin\Debug\</OutputPath>
 | 
			
		||||
    <DefineConstants>DEBUG;TRACE;NETFX_CORE</DefineConstants>
 | 
			
		||||
    <ErrorReport>prompt</ErrorReport>
 | 
			
		||||
    <WarningLevel>4</WarningLevel>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
 | 
			
		||||
    <PlatformTarget>AnyCPU</PlatformTarget>
 | 
			
		||||
    <DebugType>pdbonly</DebugType>
 | 
			
		||||
    <Optimize>true</Optimize>
 | 
			
		||||
    <OutputPath>bin\Release\</OutputPath>
 | 
			
		||||
    <DefineConstants>TRACE;NETFX_CORE</DefineConstants>
 | 
			
		||||
    <ErrorReport>prompt</ErrorReport>
 | 
			
		||||
    <WarningLevel>4</WarningLevel>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|ARM'">
 | 
			
		||||
    <DebugSymbols>true</DebugSymbols>
 | 
			
		||||
    <OutputPath>bin\ARM\Debug\</OutputPath>
 | 
			
		||||
    <DefineConstants>DEBUG;TRACE;NETFX_CORE</DefineConstants>
 | 
			
		||||
    <NoWarn>;2008</NoWarn>
 | 
			
		||||
    <DebugType>full</DebugType>
 | 
			
		||||
    <PlatformTarget>ARM</PlatformTarget>
 | 
			
		||||
    <UseVSHostingProcess>false</UseVSHostingProcess>
 | 
			
		||||
    <ErrorReport>prompt</ErrorReport>
 | 
			
		||||
    <Prefer32Bit>true</Prefer32Bit>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|ARM'">
 | 
			
		||||
    <OutputPath>bin\ARM\Release\</OutputPath>
 | 
			
		||||
    <DefineConstants>TRACE;NETFX_CORE</DefineConstants>
 | 
			
		||||
    <Optimize>true</Optimize>
 | 
			
		||||
    <NoWarn>;2008</NoWarn>
 | 
			
		||||
    <DebugType>pdbonly</DebugType>
 | 
			
		||||
    <PlatformTarget>ARM</PlatformTarget>
 | 
			
		||||
    <UseVSHostingProcess>false</UseVSHostingProcess>
 | 
			
		||||
    <ErrorReport>prompt</ErrorReport>
 | 
			
		||||
    <Prefer32Bit>true</Prefer32Bit>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
 | 
			
		||||
    <DebugSymbols>true</DebugSymbols>
 | 
			
		||||
    <OutputPath>bin\x64\Debug\</OutputPath>
 | 
			
		||||
    <DefineConstants>DEBUG;TRACE;NETFX_CORE</DefineConstants>
 | 
			
		||||
    <NoWarn>;2008</NoWarn>
 | 
			
		||||
    <DebugType>full</DebugType>
 | 
			
		||||
    <PlatformTarget>x64</PlatformTarget>
 | 
			
		||||
    <UseVSHostingProcess>false</UseVSHostingProcess>
 | 
			
		||||
    <ErrorReport>prompt</ErrorReport>
 | 
			
		||||
    <Prefer32Bit>true</Prefer32Bit>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
 | 
			
		||||
    <OutputPath>bin\x64\Release\</OutputPath>
 | 
			
		||||
    <DefineConstants>TRACE;NETFX_CORE</DefineConstants>
 | 
			
		||||
    <Optimize>true</Optimize>
 | 
			
		||||
    <NoWarn>;2008</NoWarn>
 | 
			
		||||
    <DebugType>pdbonly</DebugType>
 | 
			
		||||
    <PlatformTarget>x64</PlatformTarget>
 | 
			
		||||
    <UseVSHostingProcess>false</UseVSHostingProcess>
 | 
			
		||||
    <ErrorReport>prompt</ErrorReport>
 | 
			
		||||
    <Prefer32Bit>true</Prefer32Bit>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
 | 
			
		||||
    <DebugSymbols>true</DebugSymbols>
 | 
			
		||||
    <OutputPath>bin\x86\Debug\</OutputPath>
 | 
			
		||||
    <DefineConstants>DEBUG;TRACE;NETFX_CORE</DefineConstants>
 | 
			
		||||
    <NoWarn>;2008</NoWarn>
 | 
			
		||||
    <DebugType>full</DebugType>
 | 
			
		||||
    <PlatformTarget>x86</PlatformTarget>
 | 
			
		||||
    <UseVSHostingProcess>false</UseVSHostingProcess>
 | 
			
		||||
    <ErrorReport>prompt</ErrorReport>
 | 
			
		||||
    <Prefer32Bit>true</Prefer32Bit>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
 | 
			
		||||
    <OutputPath>bin\x86\Release\</OutputPath>
 | 
			
		||||
    <DefineConstants>TRACE;NETFX_CORE</DefineConstants>
 | 
			
		||||
    <Optimize>true</Optimize>
 | 
			
		||||
    <NoWarn>;2008</NoWarn>
 | 
			
		||||
    <DebugType>pdbonly</DebugType>
 | 
			
		||||
    <PlatformTarget>x86</PlatformTarget>
 | 
			
		||||
    <UseVSHostingProcess>false</UseVSHostingProcess>
 | 
			
		||||
    <ErrorReport>prompt</ErrorReport>
 | 
			
		||||
    <Prefer32Bit>true</Prefer32Bit>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <Compile Include="App.xaml.cs">
 | 
			
		||||
      <DependentUpon>App.xaml</DependentUpon>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="Controller\DataController.cs" />
 | 
			
		||||
    <Compile Include="Controller\ControllerException.cs" />
 | 
			
		||||
    <Compile Include="Domain\AppInstallInfo.cs" />
 | 
			
		||||
    <Compile Include="Domain\AppSettings.cs" />
 | 
			
		||||
    <Compile Include="Domain\Sound.cs" />
 | 
			
		||||
    <Compile Include="Recorder.cs" />
 | 
			
		||||
    <Compile Include="UI\DrumPlayUI.xaml.cs">
 | 
			
		||||
      <DependentUpon>DrumPlayUI.xaml</DependentUpon>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="UI\DrumEditUI.xaml.cs">
 | 
			
		||||
      <DependentUpon>DrumEditUI.xaml</DependentUpon>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="UI\EditorPage.xaml.cs">
 | 
			
		||||
      <DependentUpon>EditorPage.xaml</DependentUpon>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="UI\Settings\LayoutsSettingsControl.xaml.cs">
 | 
			
		||||
      <DependentUpon>LayoutsSettingsControl.xaml</DependentUpon>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="Utils\UIHelper.cs" />
 | 
			
		||||
    <Compile Include="UI\Settings\ExperimentsSettingsControl.xaml.cs">
 | 
			
		||||
      <DependentUpon>ExperimentsSettingsControl.xaml</DependentUpon>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="UI\CommonControls\FileControl.xaml.cs">
 | 
			
		||||
      <DependentUpon>FileControl.xaml</DependentUpon>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="UI\Settings\DrumsSettingsControl.xaml.cs">
 | 
			
		||||
      <DependentUpon>DrumsSettingsControl.xaml</DependentUpon>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="UI\Settings\DrumkitsSettingsControl.xaml.cs">
 | 
			
		||||
      <DependentUpon>DrumkitsSettingsControl.xaml</DependentUpon>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="UI\Settings\GeneralSettingsControl.xaml.cs">
 | 
			
		||||
      <DependentUpon>GeneralSettingsControl.xaml</DependentUpon>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="Repository\LogRepository.cs" />
 | 
			
		||||
    <Compile Include="Repository\DataRepository.cs" />
 | 
			
		||||
    <Compile Include="Repository\SoundRepository.cs" />
 | 
			
		||||
    <Compile Include="UI\SettingsPage.xaml.cs">
 | 
			
		||||
      <DependentUpon>SettingsPage.xaml</DependentUpon>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="Repository\RepositoryException.cs" />
 | 
			
		||||
    <Compile Include="Utils\IOHelper.cs" />
 | 
			
		||||
    <Compile Include="Log.cs" />
 | 
			
		||||
    <Compile Include="Domain\Drum.cs" />
 | 
			
		||||
    <Compile Include="Domain\DrumConfig.cs" />
 | 
			
		||||
    <Compile Include="Domain\Drumkit.cs" />
 | 
			
		||||
    <Compile Include="Domain\DrumkitConfig.cs" />
 | 
			
		||||
    <Compile Include="Domain\DrumkitLayout.cs" />
 | 
			
		||||
    <Compile Include="Domain\DrumkitLayoutCollection.cs" />
 | 
			
		||||
    <Compile Include="Domain\DrumkitLayoutTargetView.cs" />
 | 
			
		||||
    <Compile Include="Domain\DrumLayout.cs" />
 | 
			
		||||
    <Compile Include="Repository\DrumkitRepository.cs" />
 | 
			
		||||
    <Compile Include="UI\LoadingPage.xaml.cs">
 | 
			
		||||
      <DependentUpon>LoadingPage.xaml</DependentUpon>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="UI\MainPage.xaml.cs">
 | 
			
		||||
      <DependentUpon>MainPage.xaml</DependentUpon>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="Properties\AssemblyInfo.cs" />
 | 
			
		||||
    <Compile Include="SoundPool.cs" />
 | 
			
		||||
    <Compile Include="Domain\SoundSource.cs" />
 | 
			
		||||
    <Compile Include="UI\Settings\LogControl.xaml.cs">
 | 
			
		||||
      <DependentUpon>LogControl.xaml</DependentUpon>
 | 
			
		||||
    </Compile>
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <AppxManifest Include="Package.appxmanifest">
 | 
			
		||||
      <SubType>Designer</SubType>
 | 
			
		||||
    </AppxManifest>
 | 
			
		||||
    <Content Include="Assets\ApplicationData.tar" />
 | 
			
		||||
    <Content Include="Features.txt" />
 | 
			
		||||
    <None Include="Build\7z.exe" />
 | 
			
		||||
    <None Include="Build\ApplicationData\Drumkits\Default\config.xml" />
 | 
			
		||||
    <None Include="Build\ApplicationData\Drumkits\Default\drumkit.xml" />
 | 
			
		||||
    <None Include="Build\ApplicationData\Drumkits\Default\Images\drum.png" />
 | 
			
		||||
    <None Include="Build\ApplicationData\Drumkits\Default\Images\drumPressed.png" />
 | 
			
		||||
    <None Include="Build\ApplicationData\Drumkits\Default\Images\kick.png" />
 | 
			
		||||
    <None Include="Build\ApplicationData\Drumkits\Default\Images\kickPressed.png" />
 | 
			
		||||
    <None Include="Build\ApplicationData\Drumkits\Default\Images\pedal.png" />
 | 
			
		||||
    <None Include="Build\ApplicationData\Drumkits\Default\Images\pedalPressed.png" />
 | 
			
		||||
    <None Include="Build\ApplicationData\Drumkits\Default\Images\plate.png" />
 | 
			
		||||
    <None Include="Build\ApplicationData\Drumkits\Default\Images\platePressed.png" />
 | 
			
		||||
    <None Include="Build\ApplicationData\Drumkits\Default\layout.xml" />
 | 
			
		||||
    <None Include="Build\ApplicationData\Drumkits\Default\Sounds\Crash05.wav" />
 | 
			
		||||
    <None Include="Build\ApplicationData\Drumkits\Default\Sounds\Floor04.wav" />
 | 
			
		||||
    <None Include="Build\ApplicationData\Drumkits\Default\Sounds\Hat04.WAV" />
 | 
			
		||||
    <None Include="Build\ApplicationData\Drumkits\Default\Sounds\HiHatClosed04.wav" />
 | 
			
		||||
    <None Include="Build\ApplicationData\Drumkits\Default\Sounds\HiHatOpen04.wav" />
 | 
			
		||||
    <None Include="Build\ApplicationData\Drumkits\Default\Sounds\Kick07.wav" />
 | 
			
		||||
    <None Include="Build\ApplicationData\Drumkits\Default\Sounds\Ride04.wav" />
 | 
			
		||||
    <None Include="Build\ApplicationData\Drumkits\Default\Sounds\Snare08.wav" />
 | 
			
		||||
    <None Include="Build\ApplicationData\Drumkits\Default\Sounds\TomHigh04.wav" />
 | 
			
		||||
    <None Include="Build\ApplicationData\Drumkits\Default\Sounds\TomLow04.wav" />
 | 
			
		||||
    <None Include="DrumKit_StoreKey.pfx" />
 | 
			
		||||
    <None Include="DrumKit_TemporaryKey.pfx" />
 | 
			
		||||
    <None Include="packages.config" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <Content Include="Assets\bg.png" />
 | 
			
		||||
    <Content Include="Assets\Logos\BadgeIcon.png" />
 | 
			
		||||
    <Content Include="Assets\Logos\SplashScreen.scale-140.png" />
 | 
			
		||||
    <Content Include="Assets\Logos\SplashScreen.scale-180.png" />
 | 
			
		||||
    <Content Include="Assets\Logos\WideLogo.png" />
 | 
			
		||||
    <Content Include="Assets\Logos\Logo.png" />
 | 
			
		||||
    <Content Include="Assets\Logos\SmallLogo.png" />
 | 
			
		||||
    <Content Include="Assets\Logos\SplashScreen.scale-100.png" />
 | 
			
		||||
    <Content Include="Assets\Logos\StoreLogo.png" />
 | 
			
		||||
    <None Include="Package.StoreAssociation.xml" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <ApplicationDefinition Include="App.xaml">
 | 
			
		||||
      <Generator>MSBuild:Compile</Generator>
 | 
			
		||||
      <SubType>Designer</SubType>
 | 
			
		||||
    </ApplicationDefinition>
 | 
			
		||||
    <Page Include="Common\StandardStyles.xaml">
 | 
			
		||||
      <Generator>MSBuild:Compile</Generator>
 | 
			
		||||
      <SubType>Designer</SubType>
 | 
			
		||||
    </Page>
 | 
			
		||||
    <Page Include="Common\TextButtonStyles.xaml">
 | 
			
		||||
      <SubType>Designer</SubType>
 | 
			
		||||
      <Generator>MSBuild:Compile</Generator>
 | 
			
		||||
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
 | 
			
		||||
    </Page>
 | 
			
		||||
    <Page Include="UI\DrumPlayUI.xaml">
 | 
			
		||||
      <SubType>Designer</SubType>
 | 
			
		||||
      <Generator>MSBuild:Compile</Generator>
 | 
			
		||||
    </Page>
 | 
			
		||||
    <Page Include="UI\DrumEditUI.xaml">
 | 
			
		||||
      <SubType>Designer</SubType>
 | 
			
		||||
      <Generator>MSBuild:Compile</Generator>
 | 
			
		||||
    </Page>
 | 
			
		||||
    <Page Include="UI\EditorPage.xaml">
 | 
			
		||||
      <SubType>Designer</SubType>
 | 
			
		||||
      <Generator>MSBuild:Compile</Generator>
 | 
			
		||||
    </Page>
 | 
			
		||||
    <Page Include="UI\Settings\LayoutsSettingsControl.xaml">
 | 
			
		||||
      <SubType>Designer</SubType>
 | 
			
		||||
      <Generator>MSBuild:Compile</Generator>
 | 
			
		||||
    </Page>
 | 
			
		||||
    <Page Include="UI\Settings\ExperimentsSettingsControl.xaml">
 | 
			
		||||
      <SubType>Designer</SubType>
 | 
			
		||||
      <Generator>MSBuild:Compile</Generator>
 | 
			
		||||
    </Page>
 | 
			
		||||
    <Page Include="UI\CommonControls\FileControl.xaml">
 | 
			
		||||
      <SubType>Designer</SubType>
 | 
			
		||||
      <Generator>MSBuild:Compile</Generator>
 | 
			
		||||
    </Page>
 | 
			
		||||
    <Page Include="UI\Settings\DrumsSettingsControl.xaml">
 | 
			
		||||
      <Generator>MSBuild:Compile</Generator>
 | 
			
		||||
      <SubType>Designer</SubType>
 | 
			
		||||
    </Page>
 | 
			
		||||
    <Page Include="UI\Settings\DrumkitsSettingsControl.xaml">
 | 
			
		||||
      <SubType>Designer</SubType>
 | 
			
		||||
      <Generator>MSBuild:Compile</Generator>
 | 
			
		||||
    </Page>
 | 
			
		||||
    <Page Include="UI\Settings\GeneralSettingsControl.xaml">
 | 
			
		||||
      <SubType>Designer</SubType>
 | 
			
		||||
      <Generator>MSBuild:Compile</Generator>
 | 
			
		||||
    </Page>
 | 
			
		||||
    <Page Include="UI\SettingsPage.xaml">
 | 
			
		||||
      <SubType>Designer</SubType>
 | 
			
		||||
      <Generator>MSBuild:Compile</Generator>
 | 
			
		||||
    </Page>
 | 
			
		||||
    <Page Include="UI\LoadingPage.xaml">
 | 
			
		||||
      <SubType>Designer</SubType>
 | 
			
		||||
      <Generator>MSBuild:Compile</Generator>
 | 
			
		||||
    </Page>
 | 
			
		||||
    <Page Include="UI\MainPage.xaml">
 | 
			
		||||
      <Generator>MSBuild:Compile</Generator>
 | 
			
		||||
      <SubType>Designer</SubType>
 | 
			
		||||
    </Page>
 | 
			
		||||
    <Page Include="UI\Settings\LogControl.xaml">
 | 
			
		||||
      <SubType>Designer</SubType>
 | 
			
		||||
      <Generator>MSBuild:Compile</Generator>
 | 
			
		||||
    </Page>
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <ProjectReference Include="..\Tarball\Tarball.csproj">
 | 
			
		||||
      <Project>{5cb567d7-572e-4bae-802f-7e3f62cddf64}</Project>
 | 
			
		||||
      <Name>Tarball</Name>
 | 
			
		||||
    </ProjectReference>
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <WCFMetadata Include="Service References\" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <Reference Include="SharpDX">
 | 
			
		||||
      <HintPath>..\packages\SharpDX.2.5.0\lib\win8\SharpDX.dll</HintPath>
 | 
			
		||||
    </Reference>
 | 
			
		||||
    <Reference Include="SharpDX.XAudio2">
 | 
			
		||||
      <HintPath>..\packages\SharpDX.XAudio2.2.5.0\lib\win8\SharpDX.XAudio2.dll</HintPath>
 | 
			
		||||
    </Reference>
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <PropertyGroup Condition=" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' < '11.0' ">
 | 
			
		||||
    <VisualStudioVersion>11.0</VisualStudioVersion>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <Import Project="$(MSBuildExtensionsPath)\Microsoft\WindowsXaml\v$(VisualStudioVersion)\Microsoft.Windows.UI.Xaml.CSharp.targets" />
 | 
			
		||||
  <PropertyGroup>
 | 
			
		||||
    <PreBuildEvent>"$(ProjectDir)\Build\7z.exe" a -ttar -y "$(ProjectDir)\Assets\ApplicationData.tar" "$(ProjectDir)\Build\ApplicationData\*"</PreBuildEvent>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
 | 
			
		||||
       Other similar extension points exist, see Microsoft.Common.targets.
 | 
			
		||||
  <Target Name="BeforeBuild">
 | 
			
		||||
  </Target>
 | 
			
		||||
  <Target Name="AfterBuild">
 | 
			
		||||
  </Target>
 | 
			
		||||
  -->
 | 
			
		||||
</Project>
 | 
			
		||||
@@ -1,65 +1,88 @@
 | 
			
		||||
<UserControl
 | 
			
		||||
    x:Class="DrumKit.DrumPlayUI"
 | 
			
		||||
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 | 
			
		||||
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 | 
			
		||||
    xmlns:local="using:DrumKit"
 | 
			
		||||
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
 | 
			
		||||
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
 | 
			
		||||
    mc:Ignorable="d"
 | 
			
		||||
    d:DesignHeight="300"
 | 
			
		||||
    d:DesignWidth="400">
 | 
			
		||||
 | 
			
		||||
    <Grid Name="grid" Background="Transparent"
 | 
			
		||||
          PointerPressed="Grid_PointerPressed">
 | 
			
		||||
 | 
			
		||||
        <VisualStateManager.VisualStateGroups>
 | 
			
		||||
            
 | 
			
		||||
            <VisualStateGroup x:Name="DrumGroups">
 | 
			
		||||
                
 | 
			
		||||
                <VisualState x:Name="DrumNormal">
 | 
			
		||||
                    <Storyboard>
 | 
			
		||||
                        <DoubleAnimation Storyboard.TargetName="imagePressed"
 | 
			
		||||
                                         Storyboard.TargetProperty="Opacity"
 | 
			
		||||
                                         BeginTime="0:0:0.1" Duration="0:0:0.7" To="0" >
 | 
			
		||||
                            <DoubleAnimation.EasingFunction>
 | 
			
		||||
                                <SineEase EasingMode="EaseInOut" />
 | 
			
		||||
                            </DoubleAnimation.EasingFunction>
 | 
			
		||||
                        </DoubleAnimation>
 | 
			
		||||
 | 
			
		||||
                        <DoubleAnimation Storyboard.TargetName="image"
 | 
			
		||||
                                         Storyboard.TargetProperty="Opacity"
 | 
			
		||||
                                         Duration="0:0:0.3" To="1" >
 | 
			
		||||
                            <DoubleAnimation.EasingFunction>
 | 
			
		||||
                                <SineEase EasingMode="EaseIn" />
 | 
			
		||||
                            </DoubleAnimation.EasingFunction>
 | 
			
		||||
                        </DoubleAnimation>
 | 
			
		||||
                    </Storyboard>
 | 
			
		||||
                </VisualState>
 | 
			
		||||
                
 | 
			
		||||
                <VisualState x:Name="DrumHit">
 | 
			
		||||
                    <Storyboard>
 | 
			
		||||
                        <DoubleAnimation Storyboard.TargetName="imagePressed"
 | 
			
		||||
                                         Storyboard.TargetProperty="Opacity"
 | 
			
		||||
                                         Duration="0" To="1" />
 | 
			
		||||
                        <DoubleAnimation Storyboard.TargetName="image"
 | 
			
		||||
                                         Storyboard.TargetProperty="Opacity"
 | 
			
		||||
                                         Duration="0" To=".3" />
 | 
			
		||||
                    </Storyboard>
 | 
			
		||||
                </VisualState>
 | 
			
		||||
                
 | 
			
		||||
                
 | 
			
		||||
            </VisualStateGroup>
 | 
			
		||||
            
 | 
			
		||||
        </VisualStateManager.VisualStateGroups>
 | 
			
		||||
        
 | 
			
		||||
        <Image Name="image" IsHitTestVisible="False"
 | 
			
		||||
               HorizontalAlignment="Stretch" 
 | 
			
		||||
               VerticalAlignment="Stretch" />
 | 
			
		||||
 | 
			
		||||
        <Image Name="imagePressed" IsHitTestVisible="False"
 | 
			
		||||
               HorizontalAlignment="Stretch" 
 | 
			
		||||
               VerticalAlignment="Stretch" 
 | 
			
		||||
               Opacity="0" />
 | 
			
		||||
 | 
			
		||||
    </Grid>
 | 
			
		||||
</UserControl>
 | 
			
		||||
<UserControl
 | 
			
		||||
    x:Class="DrumKit.DrumPlayUI"
 | 
			
		||||
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 | 
			
		||||
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 | 
			
		||||
    xmlns:local="using:DrumKit"
 | 
			
		||||
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
 | 
			
		||||
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
 | 
			
		||||
    mc:Ignorable="d"
 | 
			
		||||
    d:DesignHeight="300"
 | 
			
		||||
    d:DesignWidth="400">
 | 
			
		||||
 | 
			
		||||
    <Grid Background="Transparent">
 | 
			
		||||
 | 
			
		||||
        <VisualStateManager.VisualStateGroups>
 | 
			
		||||
 | 
			
		||||
            <VisualStateGroup x:Name="DrumGroups">
 | 
			
		||||
 | 
			
		||||
                <VisualState x:Name="DrumNormal">
 | 
			
		||||
                    <Storyboard>
 | 
			
		||||
                        <DoubleAnimation Storyboard.TargetName="imagePressed"
 | 
			
		||||
                                         Storyboard.TargetProperty="Opacity"
 | 
			
		||||
                                         BeginTime="0:0:0.1" Duration="0:0:0.7" To="0" >
 | 
			
		||||
                            <DoubleAnimation.EasingFunction>
 | 
			
		||||
                                <SineEase EasingMode="EaseInOut" />
 | 
			
		||||
                            </DoubleAnimation.EasingFunction>
 | 
			
		||||
                        </DoubleAnimation>
 | 
			
		||||
 | 
			
		||||
                        <DoubleAnimation Storyboard.TargetName="image"
 | 
			
		||||
                                         Storyboard.TargetProperty="Opacity"
 | 
			
		||||
                                         Duration="0:0:0.3" To="1" >
 | 
			
		||||
                            <DoubleAnimation.EasingFunction>
 | 
			
		||||
                                <SineEase EasingMode="EaseIn" />
 | 
			
		||||
                            </DoubleAnimation.EasingFunction>
 | 
			
		||||
                        </DoubleAnimation>
 | 
			
		||||
                    </Storyboard>
 | 
			
		||||
                </VisualState>
 | 
			
		||||
 | 
			
		||||
                <VisualState x:Name="DrumHit">
 | 
			
		||||
                    <Storyboard>
 | 
			
		||||
                        <DoubleAnimation Storyboard.TargetName="imagePressed"
 | 
			
		||||
                                         Storyboard.TargetProperty="Opacity"
 | 
			
		||||
                                         Duration="0" To="1" />
 | 
			
		||||
                        <DoubleAnimation Storyboard.TargetName="image"
 | 
			
		||||
                                         Storyboard.TargetProperty="Opacity"
 | 
			
		||||
                                         Duration="0" To=".3" />
 | 
			
		||||
                    </Storyboard>
 | 
			
		||||
                </VisualState>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            </VisualStateGroup>
 | 
			
		||||
 | 
			
		||||
        </VisualStateManager.VisualStateGroups>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        <Grid Name="grid" Background="Transparent"
 | 
			
		||||
              PointerPressed="Grid_PointerPressed">
 | 
			
		||||
 | 
			
		||||
            <Image Name="image" IsHitTestVisible="False"
 | 
			
		||||
                   HorizontalAlignment="Stretch" 
 | 
			
		||||
                   VerticalAlignment="Stretch" />
 | 
			
		||||
 | 
			
		||||
            <Image Name="imagePressed" IsHitTestVisible="False"
 | 
			
		||||
                   HorizontalAlignment="Stretch" 
 | 
			
		||||
                   VerticalAlignment="Stretch" 
 | 
			
		||||
                   Opacity="0" />
 | 
			
		||||
        </Grid>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        <TextBlock Name="textKeyShadow"
 | 
			
		||||
                   Text="{Binding ElementName=textKey, Path=Text}"
 | 
			
		||||
                   Style="{StaticResource TitleTextStyle}"
 | 
			
		||||
                   Foreground="Black"
 | 
			
		||||
                   IsHitTestVisible="False"
 | 
			
		||||
                   VerticalAlignment="Bottom"
 | 
			
		||||
                   HorizontalAlignment="Center"
 | 
			
		||||
                   Margin="2,0,0,13"
 | 
			
		||||
                   Opacity="0.6" />
 | 
			
		||||
        
 | 
			
		||||
        <TextBlock Name="textKey" 
 | 
			
		||||
                IsHitTestVisible="False"
 | 
			
		||||
                Style="{StaticResource TitleTextStyle}"
 | 
			
		||||
                VerticalAlignment="Bottom"
 | 
			
		||||
                HorizontalAlignment="Center"
 | 
			
		||||
                Margin="0,0,0,14"
 | 
			
		||||
                Opacity="0.8" />
 | 
			
		||||
        
 | 
			
		||||
    </Grid>
 | 
			
		||||
</UserControl>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,122 +1,162 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.IO;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using Windows.Foundation;
 | 
			
		||||
using Windows.Foundation.Collections;
 | 
			
		||||
using Windows.UI.Xaml;
 | 
			
		||||
using Windows.UI.Xaml.Controls;
 | 
			
		||||
using Windows.UI.Xaml.Controls.Primitives;
 | 
			
		||||
using Windows.UI.Xaml.Data;
 | 
			
		||||
using Windows.UI.Xaml.Input;
 | 
			
		||||
using Windows.UI.Xaml.Media;
 | 
			
		||||
using Windows.UI.Xaml.Navigation;
 | 
			
		||||
 | 
			
		||||
// The User Control item template is documented at http://go.microsoft.com/fwlink/?LinkId=234236
 | 
			
		||||
 | 
			
		||||
namespace DrumKit
 | 
			
		||||
{
 | 
			
		||||
    public sealed partial class DrumPlayUI : UserControl
 | 
			
		||||
    {
 | 
			
		||||
        #region Public events
 | 
			
		||||
        public event PointerEventHandler Hit;
 | 
			
		||||
 | 
			
		||||
        #endregion
 | 
			
		||||
 | 
			
		||||
        #region Properties
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Gets or sets the rotation of the drum
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        public double Angle
 | 
			
		||||
        {
 | 
			
		||||
            get
 | 
			
		||||
            {
 | 
			
		||||
                // Get rotated grid
 | 
			
		||||
                var transform = grid.RenderTransform as RotateTransform;
 | 
			
		||||
 | 
			
		||||
                // Get angle
 | 
			
		||||
                if (transform != null)
 | 
			
		||||
                    return transform.Angle;
 | 
			
		||||
 | 
			
		||||
                // No rotation
 | 
			
		||||
                return 0;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            set
 | 
			
		||||
            {
 | 
			
		||||
                // Set rotation transformation
 | 
			
		||||
                RotateTransform rot = new RotateTransform();
 | 
			
		||||
                rot.CenterX = this.Width / 2;
 | 
			
		||||
                rot.CenterY = this.Height / 2;
 | 
			
		||||
                rot.Angle = value;
 | 
			
		||||
 | 
			
		||||
                grid.RenderTransform = rot;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Gets the drum id.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        public string DrumID { get; private set; }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Enables or disables the hit animation.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private bool IsAnimationEnabled {
 | 
			
		||||
            get {
 | 
			
		||||
                return DataController.Settings.Animations;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        #endregion
 | 
			
		||||
 | 
			
		||||
        #region Constructor
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Creates a new instance of DrumPlayUI
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="drum"></param>
 | 
			
		||||
        public DrumPlayUI(Drum drum)
 | 
			
		||||
        {
 | 
			
		||||
            // Initialize
 | 
			
		||||
            this.InitializeComponent();
 | 
			
		||||
 | 
			
		||||
            // Set drum properties
 | 
			
		||||
            this.DrumID = drum.Id;
 | 
			
		||||
            // TODO: key
 | 
			
		||||
            this.image.Source = drum.LoadedImageSource;
 | 
			
		||||
            this.imagePressed.Source = drum.LoadedImagePressedSource;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        #endregion
 | 
			
		||||
 | 
			
		||||
        #region UI handlers
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Handles the drum pressed event.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private void Grid_PointerPressed(object sender, PointerRoutedEventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            // Call hit event immediately
 | 
			
		||||
            if (this.Hit != null)
 | 
			
		||||
                this.Hit(this, e);
 | 
			
		||||
 | 
			
		||||
            // Play animation
 | 
			
		||||
            this.PerformHit();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        #endregion
 | 
			
		||||
 | 
			
		||||
        #region Misc
 | 
			
		||||
 | 
			
		||||
        public void PerformHit()
 | 
			
		||||
        {
 | 
			
		||||
            // Play animation
 | 
			
		||||
            if (this.IsAnimationEnabled)
 | 
			
		||||
            {
 | 
			
		||||
                VisualStateManager.GoToState(this, "DrumHit", true);
 | 
			
		||||
                VisualStateManager.GoToState(this, "DrumNormal", true);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        #endregion
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.IO;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using Windows.Foundation;
 | 
			
		||||
using Windows.Foundation.Collections;
 | 
			
		||||
using Windows.UI.Xaml;
 | 
			
		||||
using Windows.UI.Xaml.Controls;
 | 
			
		||||
using Windows.UI.Xaml.Controls.Primitives;
 | 
			
		||||
using Windows.UI.Xaml.Data;
 | 
			
		||||
using Windows.UI.Xaml.Input;
 | 
			
		||||
using Windows.UI.Xaml.Media;
 | 
			
		||||
using Windows.UI.Xaml.Navigation;
 | 
			
		||||
 | 
			
		||||
// The User Control item template is documented at http://go.microsoft.com/fwlink/?LinkId=234236
 | 
			
		||||
 | 
			
		||||
namespace DrumKit
 | 
			
		||||
{
 | 
			
		||||
    public sealed partial class DrumPlayUI : UserControl
 | 
			
		||||
    {
 | 
			
		||||
        #region Public events
 | 
			
		||||
        public event PointerEventHandler Hit;
 | 
			
		||||
 | 
			
		||||
        #endregion
 | 
			
		||||
 | 
			
		||||
        #region Properties
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Gets or sets the rotation of the drum
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        public double Angle
 | 
			
		||||
        {
 | 
			
		||||
            get
 | 
			
		||||
            {
 | 
			
		||||
                // Get rotated grid
 | 
			
		||||
                var transform = grid.RenderTransform as RotateTransform;
 | 
			
		||||
 | 
			
		||||
                // Get angle
 | 
			
		||||
                if (transform != null)
 | 
			
		||||
                    return transform.Angle;
 | 
			
		||||
 | 
			
		||||
                // No rotation
 | 
			
		||||
                return 0;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            set
 | 
			
		||||
            {
 | 
			
		||||
                // Set rotation transformation
 | 
			
		||||
                RotateTransform rot = new RotateTransform();
 | 
			
		||||
                rot.CenterX = this.Width / 2;
 | 
			
		||||
                rot.CenterY = this.Height / 2;
 | 
			
		||||
                rot.Angle = value;
 | 
			
		||||
 | 
			
		||||
                grid.RenderTransform = rot;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Gets the drum id.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        public string DrumID { get; private set; }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Enables or disables the hit animation.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private bool IsAnimationEnabled
 | 
			
		||||
        {
 | 
			
		||||
            get
 | 
			
		||||
            {
 | 
			
		||||
                return DataController.Settings.Animations;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Sets the key string for display
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        public string KeyString
 | 
			
		||||
        {
 | 
			
		||||
            set
 | 
			
		||||
            {
 | 
			
		||||
                if (!String.IsNullOrEmpty(value))
 | 
			
		||||
                    this.textKey.Text = String.Format("{0} [{1}]", DrumName, value);
 | 
			
		||||
 | 
			
		||||
                else this.textKey.Text = DrumName;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Gets or sets a value indicating if the key is visible
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        public bool IsKeyVisible
 | 
			
		||||
        {
 | 
			
		||||
            get
 | 
			
		||||
            {
 | 
			
		||||
                return this.textKey.Visibility == Windows.UI.Xaml.Visibility.Visible;
 | 
			
		||||
            }
 | 
			
		||||
            set
 | 
			
		||||
            {
 | 
			
		||||
                this.textKey.Visibility = (value) ? Visibility.Visible : Visibility.Collapsed;
 | 
			
		||||
                this.textKeyShadow.Visibility = (value) ? Visibility.Visible : Visibility.Collapsed;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Gets or sets the drum name
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private string DrumName { get; set; }
 | 
			
		||||
 | 
			
		||||
        #endregion
 | 
			
		||||
 | 
			
		||||
        #region Constructor
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Creates a new instance of DrumPlayUI
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="drum"></param>
 | 
			
		||||
        public DrumPlayUI(Drum drum)
 | 
			
		||||
        {
 | 
			
		||||
            // Initialize
 | 
			
		||||
            this.InitializeComponent();
 | 
			
		||||
 | 
			
		||||
            // Set drum properties
 | 
			
		||||
            this.DrumID = drum.Id;
 | 
			
		||||
            this.DrumName = drum.Name;
 | 
			
		||||
            this.KeyString = null;
 | 
			
		||||
            this.image.Source = drum.LoadedImageSource;
 | 
			
		||||
            this.imagePressed.Source = drum.LoadedImagePressedSource;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        #endregion
 | 
			
		||||
 | 
			
		||||
        #region UI handlers
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Handles the drum pressed event.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private void Grid_PointerPressed(object sender, PointerRoutedEventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            // Call hit event immediately
 | 
			
		||||
            if (this.Hit != null)
 | 
			
		||||
                this.Hit(this, e);
 | 
			
		||||
 | 
			
		||||
            // Play animation
 | 
			
		||||
            this.PerformHit();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        #endregion
 | 
			
		||||
 | 
			
		||||
        #region Misc
 | 
			
		||||
 | 
			
		||||
        public void PerformHit()
 | 
			
		||||
        {
 | 
			
		||||
            // Play animation
 | 
			
		||||
            if (this.IsAnimationEnabled)
 | 
			
		||||
            {
 | 
			
		||||
                VisualStateManager.GoToState(this, "DrumHit", true);
 | 
			
		||||
                VisualStateManager.GoToState(this, "DrumNormal", true);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        #endregion
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,97 +1,104 @@
 | 
			
		||||
<Page
 | 
			
		||||
    x:Class="DrumKit.MainPage"
 | 
			
		||||
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 | 
			
		||||
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 | 
			
		||||
    xmlns:local="using:DrumKit"
 | 
			
		||||
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
 | 
			
		||||
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
 | 
			
		||||
    mc:Ignorable="d">
 | 
			
		||||
 | 
			
		||||
    <Page.Resources>
 | 
			
		||||
 | 
			
		||||
        <ImageBrush x:Key="MainpageBackgroundBrush" ImageSource="ms-appx:///Assets/bg.png" Stretch="UniformToFill" />
 | 
			
		||||
 | 
			
		||||
    </Page.Resources>
 | 
			
		||||
 | 
			
		||||
    <Grid
 | 
			
		||||
        Background="{StaticResource MainpageBackgroundBrush}">
 | 
			
		||||
 | 
			
		||||
        <Canvas Name="canvas" />
 | 
			
		||||
 | 
			
		||||
        <!--<Grid Visibility="Collapsed">
 | 
			
		||||
            <Border Margin="7"
 | 
			
		||||
                    CornerRadius="10" 
 | 
			
		||||
                    BorderBrush="Red" 
 | 
			
		||||
                    BorderThickness="5" />
 | 
			
		||||
 | 
			
		||||
            <Canvas Name="recCanvas">
 | 
			
		||||
                <Ellipse Width="18" Height="18" Fill="Red"
 | 
			
		||||
                         Canvas.Left="20"
 | 
			
		||||
                         Canvas.Top="20"/>
 | 
			
		||||
                <TextBlock
 | 
			
		||||
                           FontFamily="Consolas"
 | 
			
		||||
                           FontSize="16"
 | 
			
		||||
                           Foreground="Red"
 | 
			
		||||
                           Canvas.Left="42"
 | 
			
		||||
                           Canvas.Top="19">REC
 | 
			
		||||
                </TextBlock>
 | 
			
		||||
                
 | 
			
		||||
                <Canvas.Triggers>
 | 
			
		||||
                    <EventTrigger RoutedEvent="Canvas.Loaded">
 | 
			
		||||
                        <BeginStoryboard>
 | 
			
		||||
                            <Storyboard RepeatBehavior="Forever" >
 | 
			
		||||
                                <DoubleAnimation
 | 
			
		||||
                                    Storyboard.TargetName="recCanvas"
 | 
			
		||||
                                    Storyboard.TargetProperty="Opacity"
 | 
			
		||||
                                    Duration="0:0:1" BeginTime="0:0:1" From="1" To="0.1" />
 | 
			
		||||
                            </Storyboard>
 | 
			
		||||
                        </BeginStoryboard>
 | 
			
		||||
                    </EventTrigger>
 | 
			
		||||
                </Canvas.Triggers>
 | 
			
		||||
            </Canvas>
 | 
			
		||||
            <StackPanel Orientation="Horizontal"
 | 
			
		||||
                        HorizontalAlignment="Left"
 | 
			
		||||
                        VerticalAlignment="Top">
 | 
			
		||||
                <Button>Record</Button>
 | 
			
		||||
                <Button>Stop</Button>
 | 
			
		||||
            </StackPanel>
 | 
			
		||||
        </Grid>-->
 | 
			
		||||
 | 
			
		||||
    </Grid>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    <Page.BottomAppBar>
 | 
			
		||||
        <AppBar>
 | 
			
		||||
            <Grid>
 | 
			
		||||
                <Grid.ColumnDefinitions>
 | 
			
		||||
                    <ColumnDefinition />
 | 
			
		||||
                    <ColumnDefinition Width="Auto" />
 | 
			
		||||
                </Grid.ColumnDefinitions>
 | 
			
		||||
 | 
			
		||||
                <StackPanel Grid.Column="0" Orientation="Horizontal">
 | 
			
		||||
 | 
			
		||||
                    <ToggleButton
 | 
			
		||||
                        Name="buttonAnimations"
 | 
			
		||||
                        Click="buttonAnimations_Click"
 | 
			
		||||
                        AutomationProperties.Name="Animations"
 | 
			
		||||
                        IsChecked="True"
 | 
			
		||||
                        Style="{StaticResource VideoAppBarButtonStyle}" />
 | 
			
		||||
 | 
			
		||||
                    <Button
 | 
			
		||||
                        Name="buttonEditMode"
 | 
			
		||||
                        Click="ButtonEditMode_Click"
 | 
			
		||||
                        Style="{StaticResource EditAppBarButtonStyle}" />
 | 
			
		||||
                    
 | 
			
		||||
                </StackPanel>
 | 
			
		||||
 | 
			
		||||
                <StackPanel Grid.Column="1" Orientation="Horizontal" >
 | 
			
		||||
                    <Button 
 | 
			
		||||
                        Name="buttonSettings"
 | 
			
		||||
                        Click="ButtonSettings_Click"
 | 
			
		||||
                        AutomationProperties.Name="Settings"
 | 
			
		||||
                        Style="{StaticResource SettingsAppBarButtonStyle}" />
 | 
			
		||||
                </StackPanel>
 | 
			
		||||
            </Grid>
 | 
			
		||||
        </AppBar>
 | 
			
		||||
    </Page.BottomAppBar>
 | 
			
		||||
</Page>
 | 
			
		||||
<Page
 | 
			
		||||
    x:Class="DrumKit.MainPage"
 | 
			
		||||
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 | 
			
		||||
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 | 
			
		||||
    xmlns:local="using:DrumKit"
 | 
			
		||||
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
 | 
			
		||||
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
 | 
			
		||||
    mc:Ignorable="d">
 | 
			
		||||
 | 
			
		||||
    <Page.Resources>
 | 
			
		||||
 | 
			
		||||
        <ImageBrush x:Key="MainpageBackgroundBrush" ImageSource="ms-appx:///Assets/bg.png" Stretch="UniformToFill" />
 | 
			
		||||
 | 
			
		||||
    </Page.Resources>
 | 
			
		||||
 | 
			
		||||
    <Grid
 | 
			
		||||
        Background="{StaticResource MainpageBackgroundBrush}">
 | 
			
		||||
 | 
			
		||||
        <Canvas Name="canvas" />
 | 
			
		||||
 | 
			
		||||
        <!--<Grid Visibility="Collapsed">
 | 
			
		||||
            <Border Margin="7"
 | 
			
		||||
                    CornerRadius="10" 
 | 
			
		||||
                    BorderBrush="Red" 
 | 
			
		||||
                    BorderThickness="5" />
 | 
			
		||||
 | 
			
		||||
            <Canvas Name="recCanvas">
 | 
			
		||||
                <Ellipse Width="18" Height="18" Fill="Red"
 | 
			
		||||
                         Canvas.Left="20"
 | 
			
		||||
                         Canvas.Top="20"/>
 | 
			
		||||
                <TextBlock
 | 
			
		||||
                           FontFamily="Consolas"
 | 
			
		||||
                           FontSize="16"
 | 
			
		||||
                           Foreground="Red"
 | 
			
		||||
                           Canvas.Left="42"
 | 
			
		||||
                           Canvas.Top="19">REC
 | 
			
		||||
                </TextBlock>
 | 
			
		||||
                
 | 
			
		||||
                <Canvas.Triggers>
 | 
			
		||||
                    <EventTrigger RoutedEvent="Canvas.Loaded">
 | 
			
		||||
                        <BeginStoryboard>
 | 
			
		||||
                            <Storyboard RepeatBehavior="Forever" >
 | 
			
		||||
                                <DoubleAnimation
 | 
			
		||||
                                    Storyboard.TargetName="recCanvas"
 | 
			
		||||
                                    Storyboard.TargetProperty="Opacity"
 | 
			
		||||
                                    Duration="0:0:1" BeginTime="0:0:1" From="1" To="0.1" />
 | 
			
		||||
                            </Storyboard>
 | 
			
		||||
                        </BeginStoryboard>
 | 
			
		||||
                    </EventTrigger>
 | 
			
		||||
                </Canvas.Triggers>
 | 
			
		||||
            </Canvas>
 | 
			
		||||
            <StackPanel Orientation="Horizontal"
 | 
			
		||||
                        HorizontalAlignment="Left"
 | 
			
		||||
                        VerticalAlignment="Top">
 | 
			
		||||
                <Button>Record</Button>
 | 
			
		||||
                <Button>Stop</Button>
 | 
			
		||||
            </StackPanel>
 | 
			
		||||
        </Grid>-->
 | 
			
		||||
 | 
			
		||||
    </Grid>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    <Page.BottomAppBar>
 | 
			
		||||
        <AppBar>
 | 
			
		||||
            <Grid>
 | 
			
		||||
                <Grid.ColumnDefinitions>
 | 
			
		||||
                    <ColumnDefinition />
 | 
			
		||||
                    <ColumnDefinition Width="Auto" />
 | 
			
		||||
                </Grid.ColumnDefinitions>
 | 
			
		||||
 | 
			
		||||
                <StackPanel Grid.Column="0" Orientation="Horizontal">
 | 
			
		||||
 | 
			
		||||
                    <ToggleButton
 | 
			
		||||
                        Name="buttonAnimations"
 | 
			
		||||
                        Click="buttonAnimations_Click"
 | 
			
		||||
                        AutomationProperties.Name="Animations"
 | 
			
		||||
                        IsChecked="True"
 | 
			
		||||
                        Style="{StaticResource VideoAppBarButtonStyle}" />
 | 
			
		||||
 | 
			
		||||
                    <Button
 | 
			
		||||
                        Name="buttonEditMode"
 | 
			
		||||
                        Click="ButtonEditMode_Click"
 | 
			
		||||
                        Style="{StaticResource EditAppBarButtonStyle}" />
 | 
			
		||||
 | 
			
		||||
                    <ToggleButton
 | 
			
		||||
                        Name="buttonKeys"
 | 
			
		||||
                        Click="buttonKeys_Click"
 | 
			
		||||
                        AutomationProperties.Name="Show keys"
 | 
			
		||||
                        IsChecked="True"
 | 
			
		||||
                        Style="{StaticResource KeyboardAppBarButtonStyle}" />
 | 
			
		||||
 | 
			
		||||
                </StackPanel>
 | 
			
		||||
 | 
			
		||||
                <StackPanel Grid.Column="1" Orientation="Horizontal" >
 | 
			
		||||
                    <Button 
 | 
			
		||||
                        Name="buttonSettings"
 | 
			
		||||
                        Click="ButtonSettings_Click"
 | 
			
		||||
                        AutomationProperties.Name="Settings"
 | 
			
		||||
                        Style="{StaticResource SettingsAppBarButtonStyle}" />
 | 
			
		||||
                </StackPanel>
 | 
			
		||||
            </Grid>
 | 
			
		||||
        </AppBar>
 | 
			
		||||
    </Page.BottomAppBar>
 | 
			
		||||
</Page>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,350 +1,389 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.IO;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
using Windows.Foundation;
 | 
			
		||||
using Windows.Foundation.Collections;
 | 
			
		||||
using Windows.Storage;
 | 
			
		||||
using Windows.System;
 | 
			
		||||
using Windows.UI.ApplicationSettings;
 | 
			
		||||
using Windows.UI.ViewManagement;
 | 
			
		||||
using Windows.UI.Xaml;
 | 
			
		||||
using Windows.UI.Xaml.Controls;
 | 
			
		||||
using Windows.UI.Xaml.Controls.Primitives;
 | 
			
		||||
using Windows.UI.Xaml.Data;
 | 
			
		||||
using Windows.UI.Xaml.Input;
 | 
			
		||||
using Windows.UI.Xaml.Media;
 | 
			
		||||
using Windows.UI.Xaml.Navigation;
 | 
			
		||||
 | 
			
		||||
// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238
 | 
			
		||||
 | 
			
		||||
namespace DrumKit
 | 
			
		||||
{
 | 
			
		||||
    /// <summary>
 | 
			
		||||
    /// An empty page that can be used on its own or navigated to within a Frame.
 | 
			
		||||
    /// </summary>
 | 
			
		||||
    public sealed partial class MainPage : Page
 | 
			
		||||
    {
 | 
			
		||||
        #region Fields: Private members
 | 
			
		||||
        private Dictionary<string, DrumPlayUI> DrumUIs { get; set; }
 | 
			
		||||
        private Dictionary<VirtualKey, string> Keymap { get; set; }
 | 
			
		||||
        private int CurrentLayout { get; set; }
 | 
			
		||||
        
 | 
			
		||||
        #endregion
 | 
			
		||||
 | 
			
		||||
        #region Initialization
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Creates a new instance of MainPage.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        public MainPage()
 | 
			
		||||
        {
 | 
			
		||||
            // Create private members
 | 
			
		||||
            this.DrumUIs = new Dictionary<string, DrumPlayUI>();
 | 
			
		||||
            this.Keymap = new Dictionary<VirtualKey, string>();
 | 
			
		||||
            CurrentLayout = 0;
 | 
			
		||||
 | 
			
		||||
            // Initialize page
 | 
			
		||||
            this.InitializeComponent();
 | 
			
		||||
            this.SizeChanged += MainPage_SizeChanged;
 | 
			
		||||
            this.Loaded += MainPage_Loaded;
 | 
			
		||||
 | 
			
		||||
            SettingsPane.GetForCurrentView().CommandsRequested += MainPage_CommandsRequested;
 | 
			
		||||
 | 
			
		||||
            // Initialize drums
 | 
			
		||||
            this.InitializeDrums();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Sets up a single drum
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="drum">The drum.</param>
 | 
			
		||||
        private void InitializeDrum(Drum drum)
 | 
			
		||||
        {
 | 
			
		||||
            // Create object
 | 
			
		||||
            DrumPlayUI d = new DrumPlayUI(drum);
 | 
			
		||||
 | 
			
		||||
            // Set up callbacks
 | 
			
		||||
            d.Hit += HandlerDrumPointerPressed;
 | 
			
		||||
 | 
			
		||||
            // Add to lists
 | 
			
		||||
            canvas.Children.Add(d);
 | 
			
		||||
            this.DrumUIs.Add(drum.Id, d);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Sets up the drums.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private void InitializeDrums()
 | 
			
		||||
        {
 | 
			
		||||
            // Clear previous stuff if any
 | 
			
		||||
            this.DrumUIs.Clear();
 | 
			
		||||
            this.Keymap.Clear();
 | 
			
		||||
 | 
			
		||||
            // Load drums
 | 
			
		||||
            foreach (var i in DataController.CurrentDrumkit.DrumsList)
 | 
			
		||||
                InitializeDrum(i);
 | 
			
		||||
 | 
			
		||||
            // Load drum configurations
 | 
			
		||||
            foreach (var i in DataController.CurrentConfig.DrumsList)
 | 
			
		||||
            {
 | 
			
		||||
                // Unload if disabled
 | 
			
		||||
                if (!i.IsEnabled)
 | 
			
		||||
                {
 | 
			
		||||
                    canvas.Children.Remove(this.DrumUIs[i.TargetId]);
 | 
			
		||||
                    this.DrumUIs.Remove(i.TargetId);
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                // Keyboard mapping
 | 
			
		||||
                if (!Keymap.ContainsKey(i.Key))
 | 
			
		||||
                    Keymap.Add(i.Key, i.TargetId);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        #endregion
 | 
			
		||||
 | 
			
		||||
        #region UI: Settings charm
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Triggered when the settings pane requests commands/
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        void MainPage_CommandsRequested(SettingsPane sender, SettingsPaneCommandsRequestedEventArgs args)
 | 
			
		||||
        {
 | 
			
		||||
            args.Request.ApplicationCommands.Clear();
 | 
			
		||||
            SettingsCommand general = new SettingsCommand("general", "General", new Windows.UI.Popups.UICommandInvokedHandler(MainPage_SettingsCommand));
 | 
			
		||||
            SettingsCommand drumkits = new SettingsCommand("drumkits", "Manage drumkits", new Windows.UI.Popups.UICommandInvokedHandler(MainPage_SettingsCommand));
 | 
			
		||||
            SettingsCommand drums = new SettingsCommand("drums", "Manage drums", new Windows.UI.Popups.UICommandInvokedHandler(MainPage_SettingsCommand));
 | 
			
		||||
            SettingsCommand layouts = new SettingsCommand("layouts", "Layouts", new Windows.UI.Popups.UICommandInvokedHandler(MainPage_SettingsCommand));
 | 
			
		||||
 | 
			
		||||
            args.Request.ApplicationCommands.Add(general);
 | 
			
		||||
            args.Request.ApplicationCommands.Add(drumkits);
 | 
			
		||||
            args.Request.ApplicationCommands.Add(drums);
 | 
			
		||||
            args.Request.ApplicationCommands.Add(layouts);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Handles the settings charms
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        void MainPage_SettingsCommand(Windows.UI.Popups.IUICommand command)
 | 
			
		||||
        {
 | 
			
		||||
            Frame.Navigate(typeof(SettingsPage), command.Id);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        #endregion
 | 
			
		||||
 | 
			
		||||
        #region Layouts
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Figures out which is the best layout available, and uses it.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private int PickBestLayout()
 | 
			
		||||
        {
 | 
			
		||||
            // Smaller index is better
 | 
			
		||||
            int[] picks = {-1, -1, -1, -1, -1, -1};
 | 
			
		||||
 | 
			
		||||
            // Get current layout
 | 
			
		||||
            var view = UIHelper.ToDrumkitLayoutView(Windows.UI.ViewManagement.ApplicationView.Value);
 | 
			
		||||
 | 
			
		||||
            // Find best option
 | 
			
		||||
            for (int index = 0; index < DataController.CurrentLayouts.Items.Count; index++ )
 | 
			
		||||
            {
 | 
			
		||||
                var i = DataController.CurrentLayouts.Items[index];
 | 
			
		||||
 | 
			
		||||
                bool isSame = (i.TargetView == view);
 | 
			
		||||
                bool contains = (i.TargetView & view) > 0;
 | 
			
		||||
                bool all = i.TargetView == DrumkitLayoutTargetView.All;
 | 
			
		||||
 | 
			
		||||
                if (i.IsDefault)
 | 
			
		||||
                {
 | 
			
		||||
                    if (isSame) picks[0] = index;
 | 
			
		||||
                    if (contains) picks[1] = index;
 | 
			
		||||
                    if (all) picks[2] = index;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    if (isSame) picks[3] = index;
 | 
			
		||||
                    if (contains) picks[4] = index;
 | 
			
		||||
                    if (all) picks[5] = index;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // Return first value different than -1, or 0
 | 
			
		||||
            foreach (var i in picks)
 | 
			
		||||
                if (i != -1) return i;
 | 
			
		||||
 | 
			
		||||
            return 0;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Sets up the layout
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private void ReloadLayout()
 | 
			
		||||
        {
 | 
			
		||||
            // Get current size
 | 
			
		||||
            double w = canvas.ActualWidth;
 | 
			
		||||
            double h = canvas.ActualHeight;
 | 
			
		||||
 | 
			
		||||
            if (double.IsNaN(w) || double.IsNaN(h) || double.IsInfinity(w) || double.IsInfinity(h))
 | 
			
		||||
                return;
 | 
			
		||||
 | 
			
		||||
            // Pick a layout
 | 
			
		||||
            this.CurrentLayout = PickBestLayout();
 | 
			
		||||
 | 
			
		||||
            Log.Write("Layout change: picked_layout={0}, w={1}, h={2}", this.CurrentLayout, w, h); 
 | 
			
		||||
 | 
			
		||||
            // Apply layout
 | 
			
		||||
            foreach (var i in DataController.CurrentLayouts.Items[CurrentLayout].Drums)
 | 
			
		||||
            {
 | 
			
		||||
                if (!DrumUIs.ContainsKey(i.Key))
 | 
			
		||||
                    continue;
 | 
			
		||||
 | 
			
		||||
                // Set angle
 | 
			
		||||
                DrumUIs[i.Key].Angle = i.Value.Angle;
 | 
			
		||||
 | 
			
		||||
                // Set scale
 | 
			
		||||
                DrumUIs[i.Key].Width = i.Value.Size * w;
 | 
			
		||||
                DrumUIs[i.Key].Height = i.Value.Size * w;
 | 
			
		||||
 | 
			
		||||
                // Set position
 | 
			
		||||
                Canvas.SetLeft(DrumUIs[i.Key], w * i.Value.X);
 | 
			
		||||
                Canvas.SetTop(DrumUIs[i.Key], h * i.Value.Y);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        #endregion
 | 
			
		||||
 | 
			
		||||
        #region UI: Drums
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Handles drum hit using mouse/finger
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        void HandlerDrumPointerPressed(object sender, PointerRoutedEventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            var button = sender as DrumPlayUI;
 | 
			
		||||
 | 
			
		||||
            if (button != null)
 | 
			
		||||
                this.HandlerDrumClickedCommon(button.DrumID);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Handles drum hit using keyboard
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        public void HandlerKeyDown(Windows.UI.Core.CoreWindow sender, Windows.UI.Core.KeyEventArgs args)
 | 
			
		||||
        {
 | 
			
		||||
            string drum;
 | 
			
		||||
 | 
			
		||||
            // Key repeat or something
 | 
			
		||||
            if (args.KeyStatus.WasKeyDown)
 | 
			
		||||
                return;
 | 
			
		||||
 | 
			
		||||
            // If key in key map, perform "click"
 | 
			
		||||
            if (this.Keymap.TryGetValue(args.VirtualKey, out drum))
 | 
			
		||||
                HandlerDrumClickedCommon(drum);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Handles drum hit.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private void HandlerDrumClickedCommon(string drum_id)
 | 
			
		||||
        { 
 | 
			
		||||
            try
 | 
			
		||||
            {
 | 
			
		||||
                DataController.PlaySound(drum_id, 0);
 | 
			
		||||
 | 
			
		||||
                if (DataController.Settings.Animations)
 | 
			
		||||
                    this.DrumUIs[drum_id].PerformHit();
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            catch (Exception ex)
 | 
			
		||||
            {
 | 
			
		||||
                Log.Error("Error at playback!!! Drum id: {0}", drum_id);
 | 
			
		||||
                Log.Except(ex);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        #endregion
 | 
			
		||||
 | 
			
		||||
        #region UI: Page events
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Handles page size change event.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        void MainPage_SizeChanged(object sender, SizeChangedEventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            this.ReloadLayout();
 | 
			
		||||
            this.ReloadLayout();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Handles page load event.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        void MainPage_Loaded(object sender, RoutedEventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            // Set layout
 | 
			
		||||
            this.ReloadLayout();
 | 
			
		||||
 | 
			
		||||
            // Set toggles
 | 
			
		||||
            buttonAnimations.IsChecked = DataController.Settings.Animations;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Invoked when this page is about to be displayed in a Frame.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="e">Event data that describes how this page was reached.  The Parameter
 | 
			
		||||
        /// property is typically used to configure the page.</param>
 | 
			
		||||
        protected override void OnNavigatedTo(NavigationEventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            Log.Write("Navigated to main page.");
 | 
			
		||||
         
 | 
			
		||||
            Window.Current.CoreWindow.KeyDown += this.HandlerKeyDown;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Invoked when the page is about to be destroyed.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        protected override void OnNavigatedFrom(NavigationEventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            Window.Current.CoreWindow.KeyDown -= this.HandlerKeyDown;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        #endregion
 | 
			
		||||
 | 
			
		||||
        #region UI: Buttons
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Handles the edit button, going into the editor.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private void ButtonEditMode_Click(object sender, RoutedEventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            Frame.Navigate(typeof(EditorPage), DataController.CurrentLayouts.Items[CurrentLayout]);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Handles the animations enabled toggle button.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private void buttonAnimations_Click(object sender, RoutedEventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            var button = sender as ToggleButton;
 | 
			
		||||
            if (button == null) return;
 | 
			
		||||
 | 
			
		||||
            bool isChecked = (button.IsChecked.HasValue && button.IsChecked.Value);
 | 
			
		||||
 | 
			
		||||
            // Fix togglebuton style bug
 | 
			
		||||
            VisualStateManager.GoToState(button, isChecked ? "Checked" : "Unchecked", false);
 | 
			
		||||
 | 
			
		||||
            // Change animation setting
 | 
			
		||||
            DataController.Settings.Animations = isChecked;
 | 
			
		||||
 | 
			
		||||
            // Save modified setting
 | 
			
		||||
            DataController.SaveSettings();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Goes to application settings.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private void ButtonSettings_Click(object sender, RoutedEventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            Frame.Navigate(typeof(SettingsPage), this);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        #endregion
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.IO;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
using Windows.Foundation;
 | 
			
		||||
using Windows.Foundation.Collections;
 | 
			
		||||
using Windows.Storage;
 | 
			
		||||
using Windows.System;
 | 
			
		||||
using Windows.UI.ApplicationSettings;
 | 
			
		||||
using Windows.UI.ViewManagement;
 | 
			
		||||
using Windows.UI.Xaml;
 | 
			
		||||
using Windows.UI.Xaml.Controls;
 | 
			
		||||
using Windows.UI.Xaml.Controls.Primitives;
 | 
			
		||||
using Windows.UI.Xaml.Data;
 | 
			
		||||
using Windows.UI.Xaml.Input;
 | 
			
		||||
using Windows.UI.Xaml.Media;
 | 
			
		||||
using Windows.UI.Xaml.Navigation;
 | 
			
		||||
 | 
			
		||||
// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238
 | 
			
		||||
 | 
			
		||||
namespace DrumKit
 | 
			
		||||
{
 | 
			
		||||
    /// <summary>
 | 
			
		||||
    /// An empty page that can be used on its own or navigated to within a Frame.
 | 
			
		||||
    /// </summary>
 | 
			
		||||
    public sealed partial class MainPage : Page
 | 
			
		||||
    {
 | 
			
		||||
        #region Fields: Private members
 | 
			
		||||
        private Dictionary<string, DrumPlayUI> DrumUIs { get; set; }
 | 
			
		||||
        private Dictionary<VirtualKey, string> Keymap { get; set; }
 | 
			
		||||
        private int CurrentLayout { get; set; }
 | 
			
		||||
        
 | 
			
		||||
        #endregion
 | 
			
		||||
 | 
			
		||||
        #region Initialization
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Creates a new instance of MainPage.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        public MainPage()
 | 
			
		||||
        {
 | 
			
		||||
            // Create private members
 | 
			
		||||
            this.DrumUIs = new Dictionary<string, DrumPlayUI>();
 | 
			
		||||
            this.Keymap = new Dictionary<VirtualKey, string>();
 | 
			
		||||
            CurrentLayout = 0;
 | 
			
		||||
 | 
			
		||||
            // Initialize page
 | 
			
		||||
            this.InitializeComponent();
 | 
			
		||||
            this.SizeChanged += MainPage_SizeChanged;
 | 
			
		||||
            this.Loaded += MainPage_Loaded;
 | 
			
		||||
 | 
			
		||||
            SettingsPane.GetForCurrentView().CommandsRequested += MainPage_CommandsRequested;
 | 
			
		||||
 | 
			
		||||
            // Initialize drums
 | 
			
		||||
            this.InitializeDrums();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Sets up a single drum
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="drum">The drum.</param>
 | 
			
		||||
        private void InitializeDrum(Drum drum)
 | 
			
		||||
        {
 | 
			
		||||
            // Create object
 | 
			
		||||
            DrumPlayUI d = new DrumPlayUI(drum);
 | 
			
		||||
 | 
			
		||||
            // Set up callbacks
 | 
			
		||||
            d.Hit += HandlerDrumPointerPressed;
 | 
			
		||||
 | 
			
		||||
            // Add to lists
 | 
			
		||||
            canvas.Children.Add(d);
 | 
			
		||||
            this.DrumUIs.Add(drum.Id, d);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Sets up the drums.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private void InitializeDrums()
 | 
			
		||||
        {
 | 
			
		||||
            // Clear previous stuff if any
 | 
			
		||||
            this.DrumUIs.Clear();
 | 
			
		||||
 | 
			
		||||
            // Load drums
 | 
			
		||||
            foreach (var i in DataController.CurrentDrumkit.DrumsList)
 | 
			
		||||
                InitializeDrum(i);
 | 
			
		||||
 | 
			
		||||
            UpdateDrumConfig();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Sets up the drum configurations
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private void UpdateDrumConfig()
 | 
			
		||||
        {
 | 
			
		||||
            this.Keymap.Clear();
 | 
			
		||||
 | 
			
		||||
            // Load drum configurations
 | 
			
		||||
            foreach (var i in DataController.CurrentConfig.DrumsList)
 | 
			
		||||
            {
 | 
			
		||||
                // Unload if disabled
 | 
			
		||||
                if (!i.IsEnabled)
 | 
			
		||||
                {
 | 
			
		||||
                    canvas.Children.Remove(this.DrumUIs[i.TargetId]);
 | 
			
		||||
                    this.DrumUIs.Remove(i.TargetId);
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    // Set drum key
 | 
			
		||||
                    this.DrumUIs[i.TargetId].KeyString = UIHelper.GetPrettifiedVKeyName(i.Key);
 | 
			
		||||
                    this.DrumUIs[i.TargetId].IsKeyVisible = DataController.Settings.ShowKeyBindings;
 | 
			
		||||
 | 
			
		||||
                    // Keyboard mapping
 | 
			
		||||
                    if (!Keymap.ContainsKey(i.Key))
 | 
			
		||||
                        Keymap.Add(i.Key, i.TargetId);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        #endregion
 | 
			
		||||
 | 
			
		||||
        #region UI: Settings charm
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Triggered when the settings pane requests commands/
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        void MainPage_CommandsRequested(SettingsPane sender, SettingsPaneCommandsRequestedEventArgs args)
 | 
			
		||||
        {
 | 
			
		||||
            args.Request.ApplicationCommands.Clear();
 | 
			
		||||
            SettingsCommand general = new SettingsCommand("general", "General", new Windows.UI.Popups.UICommandInvokedHandler(MainPage_SettingsCommand));
 | 
			
		||||
            SettingsCommand drumkits = new SettingsCommand("drumkits", "Manage drumkits", new Windows.UI.Popups.UICommandInvokedHandler(MainPage_SettingsCommand));
 | 
			
		||||
            SettingsCommand drums = new SettingsCommand("drums", "Manage drums", new Windows.UI.Popups.UICommandInvokedHandler(MainPage_SettingsCommand));
 | 
			
		||||
            SettingsCommand layouts = new SettingsCommand("layouts", "Layouts", new Windows.UI.Popups.UICommandInvokedHandler(MainPage_SettingsCommand));
 | 
			
		||||
 | 
			
		||||
            args.Request.ApplicationCommands.Add(general);
 | 
			
		||||
            args.Request.ApplicationCommands.Add(drumkits);
 | 
			
		||||
            args.Request.ApplicationCommands.Add(drums);
 | 
			
		||||
            args.Request.ApplicationCommands.Add(layouts);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Handles the settings charms
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        void MainPage_SettingsCommand(Windows.UI.Popups.IUICommand command)
 | 
			
		||||
        {
 | 
			
		||||
            Frame.Navigate(typeof(SettingsPage), command.Id);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        #endregion
 | 
			
		||||
 | 
			
		||||
        #region Layouts
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Figures out which is the best layout available, and uses it.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private int PickBestLayout()
 | 
			
		||||
        {
 | 
			
		||||
            // Smaller index is better
 | 
			
		||||
            int[] picks = {-1, -1, -1, -1, -1, -1};
 | 
			
		||||
 | 
			
		||||
            // Get current layout
 | 
			
		||||
            var view = UIHelper.ToDrumkitLayoutView(Windows.UI.ViewManagement.ApplicationView.Value);
 | 
			
		||||
 | 
			
		||||
            // Find best option
 | 
			
		||||
            for (int index = 0; index < DataController.CurrentLayouts.Items.Count; index++ )
 | 
			
		||||
            {
 | 
			
		||||
                var i = DataController.CurrentLayouts.Items[index];
 | 
			
		||||
 | 
			
		||||
                bool isSame = (i.TargetView == view);
 | 
			
		||||
                bool contains = (i.TargetView & view) > 0;
 | 
			
		||||
                bool all = i.TargetView == DrumkitLayoutTargetView.All;
 | 
			
		||||
 | 
			
		||||
                if (i.IsDefault)
 | 
			
		||||
                {
 | 
			
		||||
                    if (isSame) picks[0] = index;
 | 
			
		||||
                    if (contains) picks[1] = index;
 | 
			
		||||
                    if (all) picks[2] = index;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    if (isSame) picks[3] = index;
 | 
			
		||||
                    if (contains) picks[4] = index;
 | 
			
		||||
                    if (all) picks[5] = index;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // Return first value different than -1, or 0
 | 
			
		||||
            foreach (var i in picks)
 | 
			
		||||
                if (i != -1) return i;
 | 
			
		||||
 | 
			
		||||
            return 0;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Sets up the layout
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private void ReloadLayout()
 | 
			
		||||
        {
 | 
			
		||||
            // Get current size
 | 
			
		||||
            double w = canvas.ActualWidth;
 | 
			
		||||
            double h = canvas.ActualHeight;
 | 
			
		||||
 | 
			
		||||
            if (double.IsNaN(w) || double.IsNaN(h) || double.IsInfinity(w) || double.IsInfinity(h))
 | 
			
		||||
                return;
 | 
			
		||||
 | 
			
		||||
            // Pick a layout
 | 
			
		||||
            this.CurrentLayout = PickBestLayout();
 | 
			
		||||
 | 
			
		||||
            Log.Write("Layout change: picked_layout={0}, w={1}, h={2}", this.CurrentLayout, w, h); 
 | 
			
		||||
 | 
			
		||||
            // Apply layout
 | 
			
		||||
            foreach (var i in DataController.CurrentLayouts.Items[CurrentLayout].Drums)
 | 
			
		||||
            {
 | 
			
		||||
                if (!DrumUIs.ContainsKey(i.Key))
 | 
			
		||||
                    continue;
 | 
			
		||||
 | 
			
		||||
                // Set angle
 | 
			
		||||
                DrumUIs[i.Key].Angle = i.Value.Angle;
 | 
			
		||||
 | 
			
		||||
                // Set scale
 | 
			
		||||
                DrumUIs[i.Key].Width = i.Value.Size * w;
 | 
			
		||||
                DrumUIs[i.Key].Height = i.Value.Size * w;
 | 
			
		||||
 | 
			
		||||
                // Set position
 | 
			
		||||
                Canvas.SetLeft(DrumUIs[i.Key], w * i.Value.X);
 | 
			
		||||
                Canvas.SetTop(DrumUIs[i.Key], h * i.Value.Y);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        #endregion
 | 
			
		||||
 | 
			
		||||
        #region UI: Drums
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Handles drum hit using mouse/finger
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        void HandlerDrumPointerPressed(object sender, PointerRoutedEventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            var button = sender as DrumPlayUI;
 | 
			
		||||
 | 
			
		||||
            if (button != null)
 | 
			
		||||
                this.HandlerDrumClickedCommon(button.DrumID);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Handles drum hit using keyboard
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        public void HandlerKeyDown(Windows.UI.Core.CoreWindow sender, Windows.UI.Core.KeyEventArgs args)
 | 
			
		||||
        {
 | 
			
		||||
            string drum;
 | 
			
		||||
 | 
			
		||||
            // Key repeat or something
 | 
			
		||||
            if (args.KeyStatus.WasKeyDown)
 | 
			
		||||
                return;
 | 
			
		||||
 | 
			
		||||
            // If key in key map, perform "click"
 | 
			
		||||
            if (this.Keymap.TryGetValue(args.VirtualKey, out drum))
 | 
			
		||||
                HandlerDrumClickedCommon(drum);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Handles drum hit.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private void HandlerDrumClickedCommon(string drum_id)
 | 
			
		||||
        { 
 | 
			
		||||
            try
 | 
			
		||||
            {
 | 
			
		||||
                DataController.PlaySound(drum_id, 0);
 | 
			
		||||
 | 
			
		||||
                if (DataController.Settings.Animations)
 | 
			
		||||
                    this.DrumUIs[drum_id].PerformHit();
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            catch (Exception ex)
 | 
			
		||||
            {
 | 
			
		||||
                Log.Error("Error at playback!!! Drum id: {0}", drum_id);
 | 
			
		||||
                Log.Except(ex);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        #endregion
 | 
			
		||||
 | 
			
		||||
        #region UI: Page events
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Handles page size change event.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        void MainPage_SizeChanged(object sender, SizeChangedEventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            this.ReloadLayout();
 | 
			
		||||
            this.ReloadLayout();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Handles page load event.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        void MainPage_Loaded(object sender, RoutedEventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            // Set layout
 | 
			
		||||
            this.ReloadLayout();
 | 
			
		||||
 | 
			
		||||
            // Set toggles
 | 
			
		||||
            buttonAnimations.IsChecked = DataController.Settings.Animations;
 | 
			
		||||
            buttonKeys.IsChecked = DataController.Settings.ShowKeyBindings;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Invoked when this page is about to be displayed in a Frame.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="e">Event data that describes how this page was reached.  The Parameter
 | 
			
		||||
        /// property is typically used to configure the page.</param>
 | 
			
		||||
        protected override void OnNavigatedTo(NavigationEventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            Log.Write("Navigated to main page.");
 | 
			
		||||
         
 | 
			
		||||
            Window.Current.CoreWindow.KeyDown += this.HandlerKeyDown;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Invoked when the page is about to be destroyed.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        protected override void OnNavigatedFrom(NavigationEventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            Window.Current.CoreWindow.KeyDown -= this.HandlerKeyDown;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        #endregion
 | 
			
		||||
 | 
			
		||||
        #region UI: Buttons
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Handles the edit button, going into the editor.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private void ButtonEditMode_Click(object sender, RoutedEventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            Frame.Navigate(typeof(EditorPage), DataController.CurrentLayouts.Items[CurrentLayout]);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Handles the animations enabled toggle button.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private void buttonAnimations_Click(object sender, RoutedEventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            var button = sender as ToggleButton;
 | 
			
		||||
            if (button == null) return;
 | 
			
		||||
 | 
			
		||||
            bool isChecked = (button.IsChecked.HasValue && button.IsChecked.Value);
 | 
			
		||||
 | 
			
		||||
            // Fix togglebuton style bug
 | 
			
		||||
            VisualStateManager.GoToState(button, isChecked ? "Checked" : "Unchecked", false);
 | 
			
		||||
 | 
			
		||||
            // Change animation setting
 | 
			
		||||
            DataController.Settings.Animations = isChecked;
 | 
			
		||||
 | 
			
		||||
            // Save modified setting
 | 
			
		||||
            DataController.SaveSettings();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Handles the 'show keys' toggle button
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private void buttonKeys_Click(object sender, RoutedEventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            var button = sender as ToggleButton;
 | 
			
		||||
            if (button == null) return;
 | 
			
		||||
 | 
			
		||||
            bool isChecked = (button.IsChecked.HasValue && button.IsChecked.Value);
 | 
			
		||||
 | 
			
		||||
            // Fix togglebuton style bug
 | 
			
		||||
            VisualStateManager.GoToState(button, isChecked ? "Checked" : "Unchecked", false);
 | 
			
		||||
 | 
			
		||||
            // Change setting
 | 
			
		||||
            DataController.Settings.ShowKeyBindings = isChecked;
 | 
			
		||||
 | 
			
		||||
            // Update UI
 | 
			
		||||
            UpdateDrumConfig();
 | 
			
		||||
 | 
			
		||||
            // Save modified setting
 | 
			
		||||
            DataController.SaveSettings();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Goes to application settings.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private void ButtonSettings_Click(object sender, RoutedEventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            Frame.Navigate(typeof(SettingsPage), this);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        #endregion
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,164 +1,164 @@
 | 
			
		||||
<UserControl
 | 
			
		||||
    x:Class="DrumKit.DrumsSettingsControl"
 | 
			
		||||
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 | 
			
		||||
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 | 
			
		||||
    xmlns:local="using:DrumKit"
 | 
			
		||||
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
 | 
			
		||||
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
 | 
			
		||||
    mc:Ignorable="d"
 | 
			
		||||
    d:DesignHeight="400"
 | 
			
		||||
    d:DesignWidth="400">
 | 
			
		||||
 | 
			
		||||
    <UserControl.Resources>
 | 
			
		||||
        <ResourceDictionary>
 | 
			
		||||
 | 
			
		||||
            <ResourceDictionary.MergedDictionaries>
 | 
			
		||||
                <ResourceDictionary Source="/Common/TextButtonStyles.xaml" />
 | 
			
		||||
            </ResourceDictionary.MergedDictionaries>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            <DataTemplate x:Key="DrumsListDataTemplate">
 | 
			
		||||
                <Grid Name="theGrid"
 | 
			
		||||
                      MinWidth="380">
 | 
			
		||||
                    <Grid.RowDefinitions>
 | 
			
		||||
                        <RowDefinition Height="Auto" />
 | 
			
		||||
                        <RowDefinition />
 | 
			
		||||
                        <RowDefinition />
 | 
			
		||||
                    </Grid.RowDefinitions>
 | 
			
		||||
 | 
			
		||||
                    <Grid.ColumnDefinitions>
 | 
			
		||||
                        <ColumnDefinition Width="Auto" />
 | 
			
		||||
                        <ColumnDefinition />
 | 
			
		||||
                        <ColumnDefinition Width="Auto" />
 | 
			
		||||
                    </Grid.ColumnDefinitions>
 | 
			
		||||
 | 
			
		||||
                    <!-- Left thing -->
 | 
			
		||||
                    <Border Name="yellowBorder"
 | 
			
		||||
                            Grid.Column="0" Grid.RowSpan="3" 
 | 
			
		||||
                            Background="Yellow" Width="10" />
 | 
			
		||||
 | 
			
		||||
                    <!-- Thumbnail -->
 | 
			
		||||
                    <Image Grid.Row="0" Grid.RowSpan="2"
 | 
			
		||||
                            Grid.Column="2"
 | 
			
		||||
                            VerticalAlignment="Center"
 | 
			
		||||
                            HorizontalAlignment="Center"
 | 
			
		||||
                            Width="60" Height="60"
 | 
			
		||||
                            Source="{Binding LoadedImageSource}" 
 | 
			
		||||
                            Stretch="Uniform" />
 | 
			
		||||
 | 
			
		||||
                    <!-- Name -->
 | 
			
		||||
                    <TextBox Grid.Column="1" Grid.Row="0" Margin="15,2,15,0"
 | 
			
		||||
                           FontSize="15.3"
 | 
			
		||||
                           Style="{StaticResource MyTextBoxStyle}" 
 | 
			
		||||
                           Text="{Binding Name}"
 | 
			
		||||
                           IsReadOnly="True" />
 | 
			
		||||
 | 
			
		||||
                    <!-- Configuration -->
 | 
			
		||||
                    <Grid 
 | 
			
		||||
                        Grid.Column="1" Grid.Row="1" Margin="15,0,15,2">
 | 
			
		||||
                        
 | 
			
		||||
                        <Grid.ColumnDefinitions>
 | 
			
		||||
                            
 | 
			
		||||
                            <ColumnDefinition Width="Auto" />
 | 
			
		||||
                            <ColumnDefinition Width="Auto" />
 | 
			
		||||
                            <ColumnDefinition />
 | 
			
		||||
                            
 | 
			
		||||
                        </Grid.ColumnDefinitions>
 | 
			
		||||
                        
 | 
			
		||||
                        <ToggleButton 
 | 
			
		||||
                            Name="toggleEnabled" Grid.Column="0"
 | 
			
		||||
                            Margin="0,-4,20,0" Padding="5,1"
 | 
			
		||||
                            Content="Enabled" 
 | 
			
		||||
                            Click="ToggleEnabled_Click" />
 | 
			
		||||
                        
 | 
			
		||||
                        <TextBlock 
 | 
			
		||||
                            Grid.Column="1"
 | 
			
		||||
                            Style="{StaticResource TitleTextStyle}" 
 | 
			
		||||
                            Text="Key:" />
 | 
			
		||||
                        
 | 
			
		||||
                        <TextBox 
 | 
			
		||||
                            Grid.Column="2"
 | 
			
		||||
                            Name="textKey"
 | 
			
		||||
                            Style="{StaticResource MyTextBoxStyle}"
 | 
			
		||||
                            KeyUp="TextKey_KeyUp" />
 | 
			
		||||
 | 
			
		||||
                    </Grid>
 | 
			
		||||
 | 
			
		||||
                    <Grid Grid.Column="1" Grid.Row="2" Margin="15,2,15,0">
 | 
			
		||||
                        
 | 
			
		||||
                        <Grid.ColumnDefinitions>
 | 
			
		||||
                            <ColumnDefinition Width="Auto" />
 | 
			
		||||
                            <ColumnDefinition />
 | 
			
		||||
                            <ColumnDefinition Width="Auto" />
 | 
			
		||||
                            <ColumnDefinition />
 | 
			
		||||
                        </Grid.ColumnDefinitions>
 | 
			
		||||
 | 
			
		||||
                        <TextBlock 
 | 
			
		||||
                            Grid.Column="0"
 | 
			
		||||
                            Style="{StaticResource TitleTextStyle}" 
 | 
			
		||||
                            Text="Volume left:" />
 | 
			
		||||
 | 
			
		||||
                        <Slider Name="sliderVolumeL"
 | 
			
		||||
                                Grid.Column="1"
 | 
			
		||||
                                Margin="5,-8,5,0"
 | 
			
		||||
                                Height="34"
 | 
			
		||||
                                Minimum="0" Maximum="1"
 | 
			
		||||
                                StepFrequency=".01"
 | 
			
		||||
                                ValueChanged="sliderVolumeL_ValueChanged"/>
 | 
			
		||||
 | 
			
		||||
                        <TextBlock 
 | 
			
		||||
                            Margin="10,0,0,0"
 | 
			
		||||
                            Grid.Column="2"
 | 
			
		||||
                            Style="{StaticResource TitleTextStyle}" 
 | 
			
		||||
                            Text="Right:" />
 | 
			
		||||
 | 
			
		||||
                        <Slider Name="sliderVolumeR"
 | 
			
		||||
                                Grid.Column="3"
 | 
			
		||||
                                Margin="5,-8,5,0"
 | 
			
		||||
                                Height="34"
 | 
			
		||||
                                Minimum="0" Maximum="1"
 | 
			
		||||
                                StepFrequency=".01" 
 | 
			
		||||
                                ValueChanged="sliderVolumeR_ValueChanged" />
 | 
			
		||||
 | 
			
		||||
                    </Grid>
 | 
			
		||||
                    
 | 
			
		||||
                </Grid>
 | 
			
		||||
 | 
			
		||||
            </DataTemplate>
 | 
			
		||||
 | 
			
		||||
            <Style x:Key="GridViewStretchItemStyle" TargetType="GridViewItem">
 | 
			
		||||
                <Setter Property="HorizontalContentAlignment" Value="Stretch" />
 | 
			
		||||
            </Style>
 | 
			
		||||
 | 
			
		||||
        </ResourceDictionary>
 | 
			
		||||
 | 
			
		||||
    </UserControl.Resources>
 | 
			
		||||
 | 
			
		||||
    <Grid>
 | 
			
		||||
        <Grid.RowDefinitions>
 | 
			
		||||
            <RowDefinition />
 | 
			
		||||
            <RowDefinition Height="Auto" />
 | 
			
		||||
        </Grid.RowDefinitions>
 | 
			
		||||
 | 
			
		||||
        <Grid.ColumnDefinitions>
 | 
			
		||||
            <ColumnDefinition />
 | 
			
		||||
        </Grid.ColumnDefinitions>
 | 
			
		||||
 | 
			
		||||
        <!-- Drums list -->
 | 
			
		||||
        <GridView Name="listDrums" 
 | 
			
		||||
                  Grid.Row="0" Grid.Column="0"
 | 
			
		||||
                  ItemTemplate="{StaticResource DrumsListDataTemplate}"
 | 
			
		||||
                  ItemContainerStyle="{StaticResource GridViewStretchItemStyle}" 
 | 
			
		||||
                  SelectionMode="Single" >
 | 
			
		||||
            <local:Drum ImageSource="/Assets/bg.png" Id="adda" Name="Hello world!" />
 | 
			
		||||
        </GridView>
 | 
			
		||||
 | 
			
		||||
        <!-- Buttons -->
 | 
			
		||||
        <!--<StackPanel Grid.Row="1" Grid.ColumnSpan="2" Orientation="Horizontal">
 | 
			
		||||
            <Button Style="{StaticResource MyButtonStyle}" Click="ButtonCreate_Click">Create</Button>
 | 
			
		||||
            <Button Style="{StaticResource MyButtonStyle}" Click="ButtonDelete_Click">Delete</Button>
 | 
			
		||||
        </StackPanel>-->
 | 
			
		||||
 | 
			
		||||
    </Grid>
 | 
			
		||||
 | 
			
		||||
</UserControl>
 | 
			
		||||
<UserControl
 | 
			
		||||
    x:Class="DrumKit.DrumsSettingsControl"
 | 
			
		||||
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 | 
			
		||||
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 | 
			
		||||
    xmlns:local="using:DrumKit"
 | 
			
		||||
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
 | 
			
		||||
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
 | 
			
		||||
    mc:Ignorable="d"
 | 
			
		||||
    d:DesignHeight="400"
 | 
			
		||||
    d:DesignWidth="400">
 | 
			
		||||
 | 
			
		||||
    <UserControl.Resources>
 | 
			
		||||
        <ResourceDictionary>
 | 
			
		||||
 | 
			
		||||
            <ResourceDictionary.MergedDictionaries>
 | 
			
		||||
                <ResourceDictionary Source="/Common/TextButtonStyles.xaml" />
 | 
			
		||||
            </ResourceDictionary.MergedDictionaries>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            <DataTemplate x:Key="DrumsListDataTemplate">
 | 
			
		||||
                <Grid Name="theGrid"
 | 
			
		||||
                      MinWidth="380">
 | 
			
		||||
                    <Grid.RowDefinitions>
 | 
			
		||||
                        <RowDefinition Height="Auto" />
 | 
			
		||||
                        <RowDefinition />
 | 
			
		||||
                        <RowDefinition />
 | 
			
		||||
                    </Grid.RowDefinitions>
 | 
			
		||||
 | 
			
		||||
                    <Grid.ColumnDefinitions>
 | 
			
		||||
                        <ColumnDefinition Width="Auto" />
 | 
			
		||||
                        <ColumnDefinition />
 | 
			
		||||
                        <ColumnDefinition Width="Auto" />
 | 
			
		||||
                    </Grid.ColumnDefinitions>
 | 
			
		||||
 | 
			
		||||
                    <!-- Left thing -->
 | 
			
		||||
                    <Border Name="yellowBorder"
 | 
			
		||||
                            Grid.Column="0" Grid.RowSpan="3" 
 | 
			
		||||
                            Background="Yellow" Width="10" />
 | 
			
		||||
 | 
			
		||||
                    <!-- Thumbnail -->
 | 
			
		||||
                    <Image Grid.Row="0" Grid.RowSpan="2"
 | 
			
		||||
                            Grid.Column="2"
 | 
			
		||||
                            VerticalAlignment="Center"
 | 
			
		||||
                            HorizontalAlignment="Center"
 | 
			
		||||
                            Width="60" Height="60"
 | 
			
		||||
                            Source="{Binding LoadedImageSource}" 
 | 
			
		||||
                            Stretch="Uniform" />
 | 
			
		||||
 | 
			
		||||
                    <!-- Name -->
 | 
			
		||||
                    <TextBox Grid.Column="1" Grid.Row="0" Margin="15,2,15,0"
 | 
			
		||||
                           FontSize="15.3"
 | 
			
		||||
                           Style="{StaticResource MyTextBoxStyle}" 
 | 
			
		||||
                           Text="{Binding Name}"
 | 
			
		||||
                           IsReadOnly="True" />
 | 
			
		||||
 | 
			
		||||
                    <!-- Configuration -->
 | 
			
		||||
                    <Grid 
 | 
			
		||||
                        Grid.Column="1" Grid.Row="1" Margin="15,0,15,2">
 | 
			
		||||
                        
 | 
			
		||||
                        <Grid.ColumnDefinitions>
 | 
			
		||||
                            
 | 
			
		||||
                            <ColumnDefinition Width="Auto" />
 | 
			
		||||
                            <ColumnDefinition Width="Auto" />
 | 
			
		||||
                            <ColumnDefinition />
 | 
			
		||||
                            
 | 
			
		||||
                        </Grid.ColumnDefinitions>
 | 
			
		||||
                        
 | 
			
		||||
                        <ToggleButton 
 | 
			
		||||
                            Name="toggleEnabled" Grid.Column="0"
 | 
			
		||||
                            Margin="0,-4,20,0" Padding="5,1"
 | 
			
		||||
                            Content="Visible" 
 | 
			
		||||
                            Click="ToggleEnabled_Click" />
 | 
			
		||||
                        
 | 
			
		||||
                        <TextBlock 
 | 
			
		||||
                            Grid.Column="1"
 | 
			
		||||
                            Style="{StaticResource TitleTextStyle}" 
 | 
			
		||||
                            Text="Key:" />
 | 
			
		||||
                        
 | 
			
		||||
                        <TextBox 
 | 
			
		||||
                            Grid.Column="2"
 | 
			
		||||
                            Name="textKey"
 | 
			
		||||
                            Style="{StaticResource MyTextBoxStyle}"
 | 
			
		||||
                            KeyUp="TextKey_KeyUp" />
 | 
			
		||||
 | 
			
		||||
                    </Grid>
 | 
			
		||||
 | 
			
		||||
                    <Grid Grid.Column="1" Grid.Row="2" Margin="15,2,15,0">
 | 
			
		||||
                        
 | 
			
		||||
                        <Grid.ColumnDefinitions>
 | 
			
		||||
                            <ColumnDefinition Width="Auto" />
 | 
			
		||||
                            <ColumnDefinition />
 | 
			
		||||
                            <ColumnDefinition Width="Auto" />
 | 
			
		||||
                            <ColumnDefinition />
 | 
			
		||||
                        </Grid.ColumnDefinitions>
 | 
			
		||||
 | 
			
		||||
                        <TextBlock 
 | 
			
		||||
                            Grid.Column="0"
 | 
			
		||||
                            Style="{StaticResource TitleTextStyle}" 
 | 
			
		||||
                            Text="Volume left:" />
 | 
			
		||||
 | 
			
		||||
                        <Slider Name="sliderVolumeL"
 | 
			
		||||
                                Grid.Column="1"
 | 
			
		||||
                                Margin="5,-8,5,0"
 | 
			
		||||
                                Height="34"
 | 
			
		||||
                                Minimum="0" Maximum="1"
 | 
			
		||||
                                StepFrequency=".01"
 | 
			
		||||
                                ValueChanged="sliderVolumeL_ValueChanged"/>
 | 
			
		||||
 | 
			
		||||
                        <TextBlock 
 | 
			
		||||
                            Margin="10,0,0,0"
 | 
			
		||||
                            Grid.Column="2"
 | 
			
		||||
                            Style="{StaticResource TitleTextStyle}" 
 | 
			
		||||
                            Text="Right:" />
 | 
			
		||||
 | 
			
		||||
                        <Slider Name="sliderVolumeR"
 | 
			
		||||
                                Grid.Column="3"
 | 
			
		||||
                                Margin="5,-8,5,0"
 | 
			
		||||
                                Height="34"
 | 
			
		||||
                                Minimum="0" Maximum="1"
 | 
			
		||||
                                StepFrequency=".01" 
 | 
			
		||||
                                ValueChanged="sliderVolumeR_ValueChanged" />
 | 
			
		||||
 | 
			
		||||
                    </Grid>
 | 
			
		||||
                    
 | 
			
		||||
                </Grid>
 | 
			
		||||
 | 
			
		||||
            </DataTemplate>
 | 
			
		||||
 | 
			
		||||
            <Style x:Key="GridViewStretchItemStyle" TargetType="GridViewItem">
 | 
			
		||||
                <Setter Property="HorizontalContentAlignment" Value="Stretch" />
 | 
			
		||||
            </Style>
 | 
			
		||||
 | 
			
		||||
        </ResourceDictionary>
 | 
			
		||||
 | 
			
		||||
    </UserControl.Resources>
 | 
			
		||||
 | 
			
		||||
    <Grid>
 | 
			
		||||
        <Grid.RowDefinitions>
 | 
			
		||||
            <RowDefinition />
 | 
			
		||||
            <RowDefinition Height="Auto" />
 | 
			
		||||
        </Grid.RowDefinitions>
 | 
			
		||||
 | 
			
		||||
        <Grid.ColumnDefinitions>
 | 
			
		||||
            <ColumnDefinition />
 | 
			
		||||
        </Grid.ColumnDefinitions>
 | 
			
		||||
 | 
			
		||||
        <!-- Drums list -->
 | 
			
		||||
        <GridView Name="listDrums" 
 | 
			
		||||
                  Grid.Row="0" Grid.Column="0"
 | 
			
		||||
                  ItemTemplate="{StaticResource DrumsListDataTemplate}"
 | 
			
		||||
                  ItemContainerStyle="{StaticResource GridViewStretchItemStyle}" 
 | 
			
		||||
                  SelectionMode="Single" >
 | 
			
		||||
            <local:Drum ImageSource="/Assets/bg.png" Id="adda" Name="Hello world!" />
 | 
			
		||||
        </GridView>
 | 
			
		||||
 | 
			
		||||
        <!-- Buttons -->
 | 
			
		||||
        <!--<StackPanel Grid.Row="1" Grid.ColumnSpan="2" Orientation="Horizontal">
 | 
			
		||||
            <Button Style="{StaticResource MyButtonStyle}" Click="ButtonCreate_Click">Create</Button>
 | 
			
		||||
            <Button Style="{StaticResource MyButtonStyle}" Click="ButtonDelete_Click">Delete</Button>
 | 
			
		||||
        </StackPanel>-->
 | 
			
		||||
 | 
			
		||||
    </Grid>
 | 
			
		||||
 | 
			
		||||
</UserControl>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,236 +1,221 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.IO;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using Windows.Foundation;
 | 
			
		||||
using Windows.Foundation.Collections;
 | 
			
		||||
using Windows.System;
 | 
			
		||||
using Windows.UI.Xaml;
 | 
			
		||||
using Windows.UI.Xaml.Controls;
 | 
			
		||||
using Windows.UI.Xaml.Controls.Primitives;
 | 
			
		||||
using Windows.UI.Xaml.Data;
 | 
			
		||||
using Windows.UI.Xaml.Input;
 | 
			
		||||
using Windows.UI.Xaml.Media;
 | 
			
		||||
using Windows.UI.Xaml.Navigation;
 | 
			
		||||
 | 
			
		||||
// The User Control item template is documented at http://go.microsoft.com/fwlink/?LinkId=234236
 | 
			
		||||
 | 
			
		||||
namespace DrumKit
 | 
			
		||||
{
 | 
			
		||||
    public sealed partial class DrumsSettingsControl : UserControl
 | 
			
		||||
    {
 | 
			
		||||
        #region Initialization
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Creates a new instance of DrumsSettingsControl
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        public DrumsSettingsControl()
 | 
			
		||||
        {
 | 
			
		||||
            this.InitializeComponent();
 | 
			
		||||
            this.Loaded += DrumsSettingsControl_Loaded;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Loads drum list at startup
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        void DrumsSettingsControl_Loaded(object sender, RoutedEventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            ReloadDrums();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        #endregion
 | 
			
		||||
 | 
			
		||||
        #region Reloads the list of drums
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Reloads the list of drums
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        async void ReloadDrums()
 | 
			
		||||
        {
 | 
			
		||||
            // Clear previous stuff
 | 
			
		||||
            listDrums.Items.Clear();
 | 
			
		||||
 | 
			
		||||
            // Add new stuff
 | 
			
		||||
            foreach (var i in DataController.CurrentDrumkit.Drums)
 | 
			
		||||
                this.listDrums.Items.Add(i.Value);
 | 
			
		||||
            
 | 
			
		||||
            // Wait for containers to be generated
 | 
			
		||||
            await System.Threading.Tasks.Task.Delay(50);
 | 
			
		||||
 | 
			
		||||
            // Update visual stuff
 | 
			
		||||
            DrumConfig config = null;
 | 
			
		||||
            foreach (var i in this.listDrums.Items)
 | 
			
		||||
            {
 | 
			
		||||
                // Get drum and configuration
 | 
			
		||||
                var drum = i as Drum;
 | 
			
		||||
                if (drum != null)
 | 
			
		||||
                    DataController.CurrentConfig.Drums.TryGetValue(drum.Id, out config);
 | 
			
		||||
 | 
			
		||||
                // No drum, no configuration?
 | 
			
		||||
                if (drum == null || config == null)
 | 
			
		||||
                    continue;
 | 
			
		||||
 | 
			
		||||
                // Set up other properties
 | 
			
		||||
                var container = listDrums.ItemContainerGenerator.ContainerFromItem(i) as FrameworkElement;
 | 
			
		||||
 | 
			
		||||
                ToggleButton enabled = UIHelper.FindChildByName(container, "toggleEnabled") as ToggleButton;
 | 
			
		||||
                if (enabled != null) enabled.IsChecked = config.IsEnabled;
 | 
			
		||||
 | 
			
		||||
                Slider volumeL = UIHelper.FindChildByName(container, "sliderVolumeL") as Slider;
 | 
			
		||||
                if (volumeL != null) volumeL.Value = config.VolumeL;
 | 
			
		||||
 | 
			
		||||
                Slider volumeR = UIHelper.FindChildByName(container, "sliderVolumeR") as Slider;
 | 
			
		||||
                if (volumeR != null) volumeR.Value = config.VolumeR;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            ReloadKeys();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        void ReloadKeys()
 | 
			
		||||
        {
 | 
			
		||||
            DrumConfig config = null;
 | 
			
		||||
            foreach (var i in this.listDrums.Items)
 | 
			
		||||
            {
 | 
			
		||||
                // Get drum and configuration
 | 
			
		||||
                var drum = i as Drum;
 | 
			
		||||
                if (drum != null)
 | 
			
		||||
                    DataController.CurrentConfig.Drums.TryGetValue(drum.Id, out config);
 | 
			
		||||
 | 
			
		||||
                // No drum, no configuration?
 | 
			
		||||
                if (drum == null || config == null)
 | 
			
		||||
                    continue;
 | 
			
		||||
 | 
			
		||||
                // Set up key
 | 
			
		||||
                var container = listDrums.ItemContainerGenerator.ContainerFromItem(i) as FrameworkElement;
 | 
			
		||||
                TextBox key = UIHelper.FindChildByName(container, "textKey") as TextBox;
 | 
			
		||||
 | 
			
		||||
                if (key != null)
 | 
			
		||||
                {
 | 
			
		||||
                    if (Enum.IsDefined(typeof(VirtualKey), config.Key))
 | 
			
		||||
                    {
 | 
			
		||||
                        // Get name
 | 
			
		||||
                        string text = Enum.GetName(typeof(VirtualKey), config.Key);
 | 
			
		||||
                        
 | 
			
		||||
                        // Prettify the name
 | 
			
		||||
                        if (text.StartsWith("Number"))
 | 
			
		||||
                            text = text.Substring("Number".Length);
 | 
			
		||||
                        
 | 
			
		||||
                        text = System.Text.RegularExpressions.Regex.Replace(text, "([a-z])([A-Z])", "${1} ${2}");
 | 
			
		||||
 | 
			
		||||
                        // Set the text
 | 
			
		||||
                        key.Text = text;
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    else key.Text = string.Format("Unnamed ({0})", (int)config.Key);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        #endregion
 | 
			
		||||
 | 
			
		||||
        #region UI Handlers: Items
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Handles "Landscape" toggle button.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private void ToggleEnabled_Click(object sender, RoutedEventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            // Get drum object
 | 
			
		||||
            var button = sender as ToggleButton;
 | 
			
		||||
            var drum = (sender as FrameworkElement).DataContext as Drum;
 | 
			
		||||
            
 | 
			
		||||
            // Change enabled property
 | 
			
		||||
            if (drum != null && DataController.CurrentConfig.Drums.ContainsKey(drum.Id))
 | 
			
		||||
            {
 | 
			
		||||
                DataController.CurrentConfig.Drums[drum.Id].IsEnabled = button.IsChecked.HasValue && button.IsChecked.Value;
 | 
			
		||||
 | 
			
		||||
                DataController.SaveConfig();
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Handles the "key press" event in the textbox
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="sender"></param>
 | 
			
		||||
        /// <param name="e"></param>
 | 
			
		||||
        private void TextKey_KeyUp(object sender, KeyRoutedEventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            // Get drum object
 | 
			
		||||
            var text = sender as TextBox;
 | 
			
		||||
            var drum = (sender as FrameworkElement).DataContext as Drum;
 | 
			
		||||
 | 
			
		||||
            // Set key
 | 
			
		||||
            if (text != null && drum != null && DataController.CurrentConfig.Drums.ContainsKey(drum.Id))
 | 
			
		||||
            {
 | 
			
		||||
                // Remove duplicates
 | 
			
		||||
                RemoveKeys(e.Key, drum.Id);
 | 
			
		||||
 | 
			
		||||
                // Set key
 | 
			
		||||
                DataController.CurrentConfig.Drums[drum.Id].Key = e.Key;
 | 
			
		||||
 | 
			
		||||
                // Display 
 | 
			
		||||
                ReloadKeys();
 | 
			
		||||
 | 
			
		||||
                // Save
 | 
			
		||||
                DataController.SaveConfig();
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void sliderVolumeL_ValueChanged(object sender, RangeBaseValueChangedEventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            // Get drum object
 | 
			
		||||
            var slider = sender as Slider;
 | 
			
		||||
            var drum = (sender as FrameworkElement).DataContext as Drum;
 | 
			
		||||
 | 
			
		||||
            // Set value
 | 
			
		||||
            if (slider != null && drum != null && DataController.CurrentConfig.Drums.ContainsKey(drum.Id))
 | 
			
		||||
            {
 | 
			
		||||
                DataController.CurrentConfig.Drums[drum.Id].VolumeL = e.NewValue;
 | 
			
		||||
                DataController.SaveConfig();
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void sliderVolumeR_ValueChanged(object sender, RangeBaseValueChangedEventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            // Get drum object
 | 
			
		||||
            var slider = sender as Slider;
 | 
			
		||||
            var drum = (sender as FrameworkElement).DataContext as Drum;
 | 
			
		||||
 | 
			
		||||
            // Set value
 | 
			
		||||
            if (slider != null && drum != null && DataController.CurrentConfig.Drums.ContainsKey(drum.Id))
 | 
			
		||||
            {
 | 
			
		||||
                DataController.CurrentConfig.Drums[drum.Id].VolumeR = e.NewValue;
 | 
			
		||||
                DataController.SaveConfig();
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        #endregion
 | 
			
		||||
 | 
			
		||||
        #region Misc
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Sets the keyboart shortcut to None for all the drums that have this key.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="key">The keyboard shortcut</param>
 | 
			
		||||
        private void RemoveKeys(VirtualKey key, string exception_id=null)
 | 
			
		||||
        {
 | 
			
		||||
            // See if any other drum has the same key
 | 
			
		||||
            foreach (var i in DataController.CurrentConfig.Drums)
 | 
			
		||||
                if (i.Value.Key == key && i.Key != exception_id)
 | 
			
		||||
                {
 | 
			
		||||
                    // Set to none
 | 
			
		||||
                    i.Value.Key = VirtualKey.None;
 | 
			
		||||
 | 
			
		||||
                    // Get drum
 | 
			
		||||
                    var drum = DataController.CurrentDrumkit.Drums[i.Key];
 | 
			
		||||
 | 
			
		||||
                    // Get key text box
 | 
			
		||||
                    var container = listDrums.ItemContainerGenerator.ContainerFromItem(drum) as FrameworkElement;
 | 
			
		||||
                    TextBox keytxt = UIHelper.FindChildByName(container, "textKey") as TextBox;
 | 
			
		||||
                    keytxt.Text = Enum.GetName(typeof(VirtualKey), i.Value.Key);
 | 
			
		||||
                }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        #endregion
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.IO;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using Windows.Foundation;
 | 
			
		||||
using Windows.Foundation.Collections;
 | 
			
		||||
using Windows.System;
 | 
			
		||||
using Windows.UI.Xaml;
 | 
			
		||||
using Windows.UI.Xaml.Controls;
 | 
			
		||||
using Windows.UI.Xaml.Controls.Primitives;
 | 
			
		||||
using Windows.UI.Xaml.Data;
 | 
			
		||||
using Windows.UI.Xaml.Input;
 | 
			
		||||
using Windows.UI.Xaml.Media;
 | 
			
		||||
using Windows.UI.Xaml.Navigation;
 | 
			
		||||
 | 
			
		||||
// The User Control item template is documented at http://go.microsoft.com/fwlink/?LinkId=234236
 | 
			
		||||
 | 
			
		||||
namespace DrumKit
 | 
			
		||||
{
 | 
			
		||||
    public sealed partial class DrumsSettingsControl : UserControl
 | 
			
		||||
    {
 | 
			
		||||
        #region Initialization
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Creates a new instance of DrumsSettingsControl
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        public DrumsSettingsControl()
 | 
			
		||||
        {
 | 
			
		||||
            this.InitializeComponent();
 | 
			
		||||
            this.Loaded += DrumsSettingsControl_Loaded;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Loads drum list at startup
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        void DrumsSettingsControl_Loaded(object sender, RoutedEventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            ReloadDrums();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        #endregion
 | 
			
		||||
 | 
			
		||||
        #region Reloads the list of drums
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Reloads the list of drums
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        async void ReloadDrums()
 | 
			
		||||
        {
 | 
			
		||||
            // Clear previous stuff
 | 
			
		||||
            listDrums.Items.Clear();
 | 
			
		||||
 | 
			
		||||
            // Add new stuff
 | 
			
		||||
            foreach (var i in DataController.CurrentDrumkit.Drums)
 | 
			
		||||
                this.listDrums.Items.Add(i.Value);
 | 
			
		||||
            
 | 
			
		||||
            // Wait for containers to be generated
 | 
			
		||||
            await System.Threading.Tasks.Task.Delay(50);
 | 
			
		||||
 | 
			
		||||
            // Update visual stuff
 | 
			
		||||
            DrumConfig config = null;
 | 
			
		||||
            foreach (var i in this.listDrums.Items)
 | 
			
		||||
            {
 | 
			
		||||
                // Get drum and configuration
 | 
			
		||||
                var drum = i as Drum;
 | 
			
		||||
                if (drum != null)
 | 
			
		||||
                    DataController.CurrentConfig.Drums.TryGetValue(drum.Id, out config);
 | 
			
		||||
 | 
			
		||||
                // No drum, no configuration?
 | 
			
		||||
                if (drum == null || config == null)
 | 
			
		||||
                    continue;
 | 
			
		||||
 | 
			
		||||
                // Set up other properties
 | 
			
		||||
                var container = listDrums.ItemContainerGenerator.ContainerFromItem(i) as FrameworkElement;
 | 
			
		||||
 | 
			
		||||
                ToggleButton enabled = UIHelper.FindChildByName(container, "toggleEnabled") as ToggleButton;
 | 
			
		||||
                if (enabled != null) enabled.IsChecked = config.IsEnabled;
 | 
			
		||||
 | 
			
		||||
                Slider volumeL = UIHelper.FindChildByName(container, "sliderVolumeL") as Slider;
 | 
			
		||||
                if (volumeL != null) volumeL.Value = config.VolumeL;
 | 
			
		||||
 | 
			
		||||
                Slider volumeR = UIHelper.FindChildByName(container, "sliderVolumeR") as Slider;
 | 
			
		||||
                if (volumeR != null) volumeR.Value = config.VolumeR;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            ReloadKeys();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        void ReloadKeys()
 | 
			
		||||
        {
 | 
			
		||||
            DrumConfig config = null;
 | 
			
		||||
            foreach (var i in this.listDrums.Items)
 | 
			
		||||
            {
 | 
			
		||||
                // Get drum and configuration
 | 
			
		||||
                var drum = i as Drum;
 | 
			
		||||
                if (drum != null)
 | 
			
		||||
                    DataController.CurrentConfig.Drums.TryGetValue(drum.Id, out config);
 | 
			
		||||
 | 
			
		||||
                // No drum, no configuration?
 | 
			
		||||
                if (drum == null || config == null)
 | 
			
		||||
                    continue;
 | 
			
		||||
 | 
			
		||||
                // Set up key
 | 
			
		||||
                var container = listDrums.ItemContainerGenerator.ContainerFromItem(i) as FrameworkElement;
 | 
			
		||||
                TextBox key = UIHelper.FindChildByName(container, "textKey") as TextBox;
 | 
			
		||||
 | 
			
		||||
                if (key != null)
 | 
			
		||||
                {
 | 
			
		||||
                    key.Text = UIHelper.GetPrettifiedVKeyName(config.Key);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        #endregion
 | 
			
		||||
 | 
			
		||||
        #region UI Handlers: Items
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Handles "Landscape" toggle button.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private void ToggleEnabled_Click(object sender, RoutedEventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            // Get drum object
 | 
			
		||||
            var button = sender as ToggleButton;
 | 
			
		||||
            var drum = (sender as FrameworkElement).DataContext as Drum;
 | 
			
		||||
            
 | 
			
		||||
            // Change enabled property
 | 
			
		||||
            if (drum != null && DataController.CurrentConfig.Drums.ContainsKey(drum.Id))
 | 
			
		||||
            {
 | 
			
		||||
                DataController.CurrentConfig.Drums[drum.Id].IsEnabled = button.IsChecked.HasValue && button.IsChecked.Value;
 | 
			
		||||
 | 
			
		||||
                DataController.SaveConfig();
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Handles the "key press" event in the textbox
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="sender"></param>
 | 
			
		||||
        /// <param name="e"></param>
 | 
			
		||||
        private void TextKey_KeyUp(object sender, KeyRoutedEventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            // Get drum object
 | 
			
		||||
            var text = sender as TextBox;
 | 
			
		||||
            var drum = (sender as FrameworkElement).DataContext as Drum;
 | 
			
		||||
 | 
			
		||||
            // Set key
 | 
			
		||||
            if (text != null && drum != null && DataController.CurrentConfig.Drums.ContainsKey(drum.Id))
 | 
			
		||||
            {
 | 
			
		||||
                // Remove duplicates
 | 
			
		||||
                RemoveKeys(e.Key, drum.Id);
 | 
			
		||||
 | 
			
		||||
                // Set key
 | 
			
		||||
                DataController.CurrentConfig.Drums[drum.Id].Key = e.Key;
 | 
			
		||||
 | 
			
		||||
                // Display 
 | 
			
		||||
                ReloadKeys();
 | 
			
		||||
 | 
			
		||||
                // Save
 | 
			
		||||
                DataController.SaveConfig();
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void sliderVolumeL_ValueChanged(object sender, RangeBaseValueChangedEventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            // Get drum object
 | 
			
		||||
            var slider = sender as Slider;
 | 
			
		||||
            var drum = (sender as FrameworkElement).DataContext as Drum;
 | 
			
		||||
 | 
			
		||||
            // Set value
 | 
			
		||||
            if (slider != null && drum != null && DataController.CurrentConfig.Drums.ContainsKey(drum.Id))
 | 
			
		||||
            {
 | 
			
		||||
                DataController.CurrentConfig.Drums[drum.Id].VolumeL = e.NewValue;
 | 
			
		||||
                DataController.SaveConfig();
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void sliderVolumeR_ValueChanged(object sender, RangeBaseValueChangedEventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            // Get drum object
 | 
			
		||||
            var slider = sender as Slider;
 | 
			
		||||
            var drum = (sender as FrameworkElement).DataContext as Drum;
 | 
			
		||||
 | 
			
		||||
            // Set value
 | 
			
		||||
            if (slider != null && drum != null && DataController.CurrentConfig.Drums.ContainsKey(drum.Id))
 | 
			
		||||
            {
 | 
			
		||||
                DataController.CurrentConfig.Drums[drum.Id].VolumeR = e.NewValue;
 | 
			
		||||
                DataController.SaveConfig();
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        #endregion
 | 
			
		||||
 | 
			
		||||
        #region Misc
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Sets the keyboart shortcut to None for all the drums that have this key.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="key">The keyboard shortcut</param>
 | 
			
		||||
        private void RemoveKeys(VirtualKey key, string exception_id=null)
 | 
			
		||||
        {
 | 
			
		||||
            // See if any other drum has the same key
 | 
			
		||||
            foreach (var i in DataController.CurrentConfig.Drums)
 | 
			
		||||
                if (i.Value.Key == key && i.Key != exception_id)
 | 
			
		||||
                {
 | 
			
		||||
                    // Set to none
 | 
			
		||||
                    i.Value.Key = VirtualKey.None;
 | 
			
		||||
 | 
			
		||||
                    // Get drum
 | 
			
		||||
                    var drum = DataController.CurrentDrumkit.Drums[i.Key];
 | 
			
		||||
 | 
			
		||||
                    // Get key text box
 | 
			
		||||
                    var container = listDrums.ItemContainerGenerator.ContainerFromItem(drum) as FrameworkElement;
 | 
			
		||||
                    TextBox keytxt = UIHelper.FindChildByName(container, "textKey") as TextBox;
 | 
			
		||||
                    keytxt.Text = Enum.GetName(typeof(VirtualKey), i.Value.Key);
 | 
			
		||||
                }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        #endregion
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,174 +1,174 @@
 | 
			
		||||
<UserControl
 | 
			
		||||
    x:Class="DrumKit.GeneralSettingsControl"
 | 
			
		||||
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 | 
			
		||||
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 | 
			
		||||
    xmlns:local="using:DrumKit"
 | 
			
		||||
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
 | 
			
		||||
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
 | 
			
		||||
    mc:Ignorable="d"
 | 
			
		||||
    d:DesignHeight="635.463"
 | 
			
		||||
    d:DesignWidth="1075.987">
 | 
			
		||||
    
 | 
			
		||||
    <Grid>
 | 
			
		||||
        <Grid.ColumnDefinitions>
 | 
			
		||||
            <ColumnDefinition />
 | 
			
		||||
            <ColumnDefinition />
 | 
			
		||||
        </Grid.ColumnDefinitions>
 | 
			
		||||
        
 | 
			
		||||
        <Grid.RowDefinitions>
 | 
			
		||||
            <RowDefinition Height="Auto" />
 | 
			
		||||
            <RowDefinition Height="Auto" />
 | 
			
		||||
            <RowDefinition Height="Auto" />
 | 
			
		||||
            <RowDefinition Height="Auto" />
 | 
			
		||||
            <RowDefinition Height="Auto" />
 | 
			
		||||
            <RowDefinition Height="Auto" />
 | 
			
		||||
            <RowDefinition Height="Auto" />
 | 
			
		||||
            <RowDefinition Height="Auto" />
 | 
			
		||||
            <RowDefinition Height="Auto" />
 | 
			
		||||
            <RowDefinition Height="Auto" />
 | 
			
		||||
            <RowDefinition Height="Auto" />
 | 
			
		||||
            <RowDefinition Height="Auto" />
 | 
			
		||||
            <RowDefinition Height="Auto" />
 | 
			
		||||
            <RowDefinition Height="Auto" />
 | 
			
		||||
            <RowDefinition Height="Auto" />
 | 
			
		||||
            <RowDefinition Height="Auto" />
 | 
			
		||||
            <RowDefinition />
 | 
			
		||||
            <RowDefinition Height="Auto" />
 | 
			
		||||
        </Grid.RowDefinitions>
 | 
			
		||||
 | 
			
		||||
        <Grid.Resources>
 | 
			
		||||
 | 
			
		||||
            <Style x:Key="MyTitleTextStyle" TargetType="TextBlock" BasedOn="{StaticResource TitleTextStyle}">
 | 
			
		||||
                <Setter Property="Margin" Value="20,24,2,2" />
 | 
			
		||||
                <Setter Property="Foreground" Value="#59FFFF" />
 | 
			
		||||
            </Style>
 | 
			
		||||
 | 
			
		||||
            <Style x:Key="MyItemTextStyle" TargetType="TextBlock" BasedOn="{StaticResource ItemTextStyle}">
 | 
			
		||||
                <Setter Property="Margin" Value="2,12,2,2" />
 | 
			
		||||
            </Style>
 | 
			
		||||
 | 
			
		||||
        </Grid.Resources>
 | 
			
		||||
        
 | 
			
		||||
        <!-- About section -->
 | 
			
		||||
        <TextBlock Style="{StaticResource MyTitleTextStyle}" 
 | 
			
		||||
                   Grid.Row="0" Margin="20,4,2,2">
 | 
			
		||||
            About</TextBlock>
 | 
			
		||||
 | 
			
		||||
        <!-- About section: Website -->
 | 
			
		||||
        <TextBlock Style="{StaticResource ItemTextStyle}" 
 | 
			
		||||
                   Grid.Row="1" Margin="2,12,2,2">
 | 
			
		||||
            Drumkit website</TextBlock>
 | 
			
		||||
 | 
			
		||||
        <Button Name="buttonWebsite"
 | 
			
		||||
                Style="{StaticResource TextButtonStyle}"
 | 
			
		||||
                Grid.Row="1" Grid.Column="1" VerticalAlignment="Bottom">
 | 
			
		||||
            drumkit8.blogspot.com</Button>
 | 
			
		||||
 | 
			
		||||
        <!-- About section: Support -->
 | 
			
		||||
        <TextBlock Style="{StaticResource ItemTextStyle}" 
 | 
			
		||||
                   Grid.Row="2" Margin="2,12,2,2">
 | 
			
		||||
            Support</TextBlock>
 | 
			
		||||
 | 
			
		||||
        <Button Name="buttonSupport"
 | 
			
		||||
                Style="{StaticResource TextButtonStyle}"
 | 
			
		||||
                Grid.Row="2" Grid.Column="1" VerticalAlignment="Bottom">
 | 
			
		||||
            chibicitiberiu@outlook.com</Button>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        <!-- About section: Version -->
 | 
			
		||||
        <TextBlock Style="{StaticResource ItemTextStyle}" 
 | 
			
		||||
                   Grid.Row="3" Margin="2,12,2,2">
 | 
			
		||||
            Version</TextBlock>
 | 
			
		||||
 | 
			
		||||
        <TextBlock Name="textVersion"
 | 
			
		||||
                   Grid.Row="3" Grid.Column="1" VerticalAlignment="Bottom"
 | 
			
		||||
                   Margin="0,2,2,2"
 | 
			
		||||
                   Style="{StaticResource BodyTextStyle}" >
 | 
			
		||||
            1.0
 | 
			
		||||
        </TextBlock>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        <!-- Sound section -->
 | 
			
		||||
        <TextBlock Style="{StaticResource MyTitleTextStyle}" 
 | 
			
		||||
                   Grid.Row="6">
 | 
			
		||||
            Sound</TextBlock>
 | 
			
		||||
 | 
			
		||||
        <!-- Sound section: Master volume -->
 | 
			
		||||
        <TextBlock Style="{StaticResource ItemTextStyle}" 
 | 
			
		||||
                   Grid.Row="7" Margin="2,7,2,2">
 | 
			
		||||
            Master volume</TextBlock>
 | 
			
		||||
 | 
			
		||||
        <Slider Name="masterVolumeSlider"
 | 
			
		||||
                Grid.Row="7" Grid.Column="1"
 | 
			
		||||
                Minimum="0" Maximum="100"
 | 
			
		||||
                StepFrequency="1"
 | 
			
		||||
                SmallChange=".05" LargeChange=".2"
 | 
			
		||||
                Width="100" Height="48"
 | 
			
		||||
                HorizontalAlignment="Left"/>
 | 
			
		||||
 | 
			
		||||
        <!-- Sound section: Polyphony -->
 | 
			
		||||
        <TextBlock Style="{StaticResource ItemTextStyle}" 
 | 
			
		||||
                   Grid.Row="8" Margin="2,7,2,2">
 | 
			
		||||
            Polyphony*</TextBlock>
 | 
			
		||||
 | 
			
		||||
        <Slider Name="polyphonySlider"
 | 
			
		||||
                Grid.Row="8" Grid.Column="1"
 | 
			
		||||
                Minimum="1" Maximum="256"
 | 
			
		||||
                StepFrequency="1"
 | 
			
		||||
                SmallChange="1" LargeChange="5"
 | 
			
		||||
                Width="100" Height="48"
 | 
			
		||||
                HorizontalAlignment="Left"/>
 | 
			
		||||
 | 
			
		||||
        <!-- Interface section -->
 | 
			
		||||
        <TextBlock Style="{StaticResource MyTitleTextStyle}" 
 | 
			
		||||
                   Grid.Row="9">
 | 
			
		||||
            Interface</TextBlock>
 | 
			
		||||
 | 
			
		||||
        <!-- Interface section: Animations -->
 | 
			
		||||
        <TextBlock Style="{StaticResource ItemTextStyle}" 
 | 
			
		||||
                   Grid.Row="10" Margin="2,12,2,2">
 | 
			
		||||
            Animations</TextBlock>
 | 
			
		||||
        
 | 
			
		||||
        <ToggleSwitch Name="animationsToggle"
 | 
			
		||||
                Grid.Row="10" Grid.Column="1"/>
 | 
			
		||||
 | 
			
		||||
        <!-- Interface section: Key bindings -->
 | 
			
		||||
        <!--<TextBlock Style="{StaticResource ItemTextStyle}" 
 | 
			
		||||
                   Grid.Row="11" Margin="2,12,2,2">
 | 
			
		||||
            Display key bindings</TextBlock>
 | 
			
		||||
 | 
			
		||||
        <ToggleSwitch Name="keyBindingsToggle"
 | 
			
		||||
                Grid.Row="11" Grid.Column="1"/>-->
 | 
			
		||||
 | 
			
		||||
        <!-- Miscellaneous section -->
 | 
			
		||||
        <TextBlock Style="{StaticResource MyTitleTextStyle}" 
 | 
			
		||||
                   Grid.Row="12">
 | 
			
		||||
            Miscellaneous</TextBlock>
 | 
			
		||||
 | 
			
		||||
        <!-- Miscellaneous section: Debugging mode -->
 | 
			
		||||
        <TextBlock Style="{StaticResource ItemTextStyle}" 
 | 
			
		||||
                   Grid.Row="13" Margin="2,12,2,2">
 | 
			
		||||
            Debugging mode</TextBlock>
 | 
			
		||||
 | 
			
		||||
        <ToggleSwitch Name="debuggingModeToggle"
 | 
			
		||||
                Grid.Row="13" Grid.Column="1"/>
 | 
			
		||||
 | 
			
		||||
        <TextBlock Style="{StaticResource ItemTextStyle}" 
 | 
			
		||||
                   Grid.Row="14" Margin="2,12,2,2">
 | 
			
		||||
            Factory reset*</TextBlock>
 | 
			
		||||
 | 
			
		||||
        <Button Name="buttonReset"
 | 
			
		||||
                Style="{StaticResource TextButtonStyle}"
 | 
			
		||||
                Grid.Row="14" Grid.Column="1" VerticalAlignment="Bottom">
 | 
			
		||||
            Reset</Button>
 | 
			
		||||
 | 
			
		||||
        <!-- Notes section -->
 | 
			
		||||
 | 
			
		||||
        <TextBlock Grid.Row="100" Style="{StaticResource MyItemTextStyle}"
 | 
			
		||||
                   FontSize="11"
 | 
			
		||||
                   Foreground="Silver">
 | 
			
		||||
            * Will be applied after the application is restarted.
 | 
			
		||||
        </TextBlock>
 | 
			
		||||
        
 | 
			
		||||
    </Grid>
 | 
			
		||||
</UserControl>
 | 
			
		||||
<UserControl
 | 
			
		||||
    x:Class="DrumKit.GeneralSettingsControl"
 | 
			
		||||
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 | 
			
		||||
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 | 
			
		||||
    xmlns:local="using:DrumKit"
 | 
			
		||||
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
 | 
			
		||||
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
 | 
			
		||||
    mc:Ignorable="d"
 | 
			
		||||
    d:DesignHeight="635.463"
 | 
			
		||||
    d:DesignWidth="1075.987">
 | 
			
		||||
    
 | 
			
		||||
    <Grid>
 | 
			
		||||
        <Grid.ColumnDefinitions>
 | 
			
		||||
            <ColumnDefinition />
 | 
			
		||||
            <ColumnDefinition />
 | 
			
		||||
        </Grid.ColumnDefinitions>
 | 
			
		||||
        
 | 
			
		||||
        <Grid.RowDefinitions>
 | 
			
		||||
            <RowDefinition Height="Auto" />
 | 
			
		||||
            <RowDefinition Height="Auto" />
 | 
			
		||||
            <RowDefinition Height="Auto" />
 | 
			
		||||
            <RowDefinition Height="Auto" />
 | 
			
		||||
            <RowDefinition Height="Auto" />
 | 
			
		||||
            <RowDefinition Height="Auto" />
 | 
			
		||||
            <RowDefinition Height="Auto" />
 | 
			
		||||
            <RowDefinition Height="Auto" />
 | 
			
		||||
            <RowDefinition Height="Auto" />
 | 
			
		||||
            <RowDefinition Height="Auto" />
 | 
			
		||||
            <RowDefinition Height="Auto" />
 | 
			
		||||
            <RowDefinition Height="Auto" />
 | 
			
		||||
            <RowDefinition Height="Auto" />
 | 
			
		||||
            <RowDefinition Height="Auto" />
 | 
			
		||||
            <RowDefinition Height="Auto" />
 | 
			
		||||
            <RowDefinition Height="Auto" />
 | 
			
		||||
            <RowDefinition />
 | 
			
		||||
            <RowDefinition Height="Auto" />
 | 
			
		||||
        </Grid.RowDefinitions>
 | 
			
		||||
 | 
			
		||||
        <Grid.Resources>
 | 
			
		||||
 | 
			
		||||
            <Style x:Key="MyTitleTextStyle" TargetType="TextBlock" BasedOn="{StaticResource TitleTextStyle}">
 | 
			
		||||
                <Setter Property="Margin" Value="20,24,2,2" />
 | 
			
		||||
                <Setter Property="Foreground" Value="#59FFFF" />
 | 
			
		||||
            </Style>
 | 
			
		||||
 | 
			
		||||
            <Style x:Key="MyItemTextStyle" TargetType="TextBlock" BasedOn="{StaticResource ItemTextStyle}">
 | 
			
		||||
                <Setter Property="Margin" Value="2,12,2,2" />
 | 
			
		||||
            </Style>
 | 
			
		||||
 | 
			
		||||
        </Grid.Resources>
 | 
			
		||||
        
 | 
			
		||||
        <!-- About section -->
 | 
			
		||||
        <TextBlock Style="{StaticResource MyTitleTextStyle}" 
 | 
			
		||||
                   Grid.Row="0" Margin="20,4,2,2">
 | 
			
		||||
            About</TextBlock>
 | 
			
		||||
 | 
			
		||||
        <!-- About section: Website -->
 | 
			
		||||
        <TextBlock Style="{StaticResource ItemTextStyle}" 
 | 
			
		||||
                   Grid.Row="1" Margin="2,12,2,2">
 | 
			
		||||
            Drumkit website</TextBlock>
 | 
			
		||||
 | 
			
		||||
        <Button Name="buttonWebsite"
 | 
			
		||||
                Style="{StaticResource TextButtonStyle}"
 | 
			
		||||
                Grid.Row="1" Grid.Column="1" VerticalAlignment="Bottom">
 | 
			
		||||
            drumkit8.blogspot.com</Button>
 | 
			
		||||
 | 
			
		||||
        <!-- About section: Support -->
 | 
			
		||||
        <TextBlock Style="{StaticResource ItemTextStyle}" 
 | 
			
		||||
                   Grid.Row="2" Margin="2,12,2,2">
 | 
			
		||||
            Support</TextBlock>
 | 
			
		||||
 | 
			
		||||
        <Button Name="buttonSupport"
 | 
			
		||||
                Style="{StaticResource TextButtonStyle}"
 | 
			
		||||
                Grid.Row="2" Grid.Column="1" VerticalAlignment="Bottom">
 | 
			
		||||
            chibicitiberiu@outlook.com</Button>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        <!-- About section: Version -->
 | 
			
		||||
        <TextBlock Style="{StaticResource ItemTextStyle}" 
 | 
			
		||||
                   Grid.Row="3" Margin="2,12,2,2">
 | 
			
		||||
            Version</TextBlock>
 | 
			
		||||
 | 
			
		||||
        <TextBlock Name="textVersion"
 | 
			
		||||
                   Grid.Row="3" Grid.Column="1" VerticalAlignment="Bottom"
 | 
			
		||||
                   Margin="0,2,2,2"
 | 
			
		||||
                   Style="{StaticResource BodyTextStyle}" >
 | 
			
		||||
            1.0
 | 
			
		||||
        </TextBlock>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        <!-- Sound section -->
 | 
			
		||||
        <TextBlock Style="{StaticResource MyTitleTextStyle}" 
 | 
			
		||||
                   Grid.Row="6">
 | 
			
		||||
            Sound</TextBlock>
 | 
			
		||||
 | 
			
		||||
        <!-- Sound section: Master volume -->
 | 
			
		||||
        <TextBlock Style="{StaticResource ItemTextStyle}" 
 | 
			
		||||
                   Grid.Row="7" Margin="2,7,2,2">
 | 
			
		||||
            Master volume</TextBlock>
 | 
			
		||||
 | 
			
		||||
        <Slider Name="masterVolumeSlider"
 | 
			
		||||
                Grid.Row="7" Grid.Column="1"
 | 
			
		||||
                Minimum="0" Maximum="100"
 | 
			
		||||
                StepFrequency="1"
 | 
			
		||||
                SmallChange=".05" LargeChange=".2"
 | 
			
		||||
                Width="100" Height="48"
 | 
			
		||||
                HorizontalAlignment="Left"/>
 | 
			
		||||
 | 
			
		||||
        <!-- Sound section: Polyphony -->
 | 
			
		||||
        <TextBlock Style="{StaticResource ItemTextStyle}" 
 | 
			
		||||
                   Grid.Row="8" Margin="2,7,2,2">
 | 
			
		||||
            Polyphony*</TextBlock>
 | 
			
		||||
 | 
			
		||||
        <Slider Name="polyphonySlider"
 | 
			
		||||
                Grid.Row="8" Grid.Column="1"
 | 
			
		||||
                Minimum="1" Maximum="256"
 | 
			
		||||
                StepFrequency="1"
 | 
			
		||||
                SmallChange="1" LargeChange="5"
 | 
			
		||||
                Width="100" Height="48"
 | 
			
		||||
                HorizontalAlignment="Left"/>
 | 
			
		||||
 | 
			
		||||
        <!-- Interface section -->
 | 
			
		||||
        <TextBlock Style="{StaticResource MyTitleTextStyle}" 
 | 
			
		||||
                   Grid.Row="9">
 | 
			
		||||
            Interface</TextBlock>
 | 
			
		||||
 | 
			
		||||
        <!-- Interface section: Animations -->
 | 
			
		||||
        <TextBlock Style="{StaticResource ItemTextStyle}" 
 | 
			
		||||
                   Grid.Row="10" Margin="2,12,2,2">
 | 
			
		||||
            Animations</TextBlock>
 | 
			
		||||
        
 | 
			
		||||
        <ToggleSwitch Name="animationsToggle"
 | 
			
		||||
                Grid.Row="10" Grid.Column="1"/>
 | 
			
		||||
 | 
			
		||||
        <!-- Interface section: Key bindings -->
 | 
			
		||||
        <TextBlock Style="{StaticResource ItemTextStyle}" 
 | 
			
		||||
                   Grid.Row="11" Margin="2,12,2,2">
 | 
			
		||||
            Display key bindings</TextBlock>
 | 
			
		||||
 | 
			
		||||
        <ToggleSwitch Name="keyBindingsToggle"
 | 
			
		||||
                Grid.Row="11" Grid.Column="1"/>
 | 
			
		||||
 | 
			
		||||
        <!-- Miscellaneous section -->
 | 
			
		||||
        <TextBlock Style="{StaticResource MyTitleTextStyle}" 
 | 
			
		||||
                   Grid.Row="12">
 | 
			
		||||
            Miscellaneous</TextBlock>
 | 
			
		||||
 | 
			
		||||
        <!-- Miscellaneous section: Debugging mode -->
 | 
			
		||||
        <TextBlock Style="{StaticResource ItemTextStyle}" 
 | 
			
		||||
                   Grid.Row="13" Margin="2,12,2,2">
 | 
			
		||||
            Debugging mode</TextBlock>
 | 
			
		||||
 | 
			
		||||
        <ToggleSwitch Name="debuggingModeToggle"
 | 
			
		||||
                Grid.Row="13" Grid.Column="1"/>
 | 
			
		||||
 | 
			
		||||
        <TextBlock Style="{StaticResource ItemTextStyle}" 
 | 
			
		||||
                   Grid.Row="14" Margin="2,12,2,2">
 | 
			
		||||
            Factory reset*</TextBlock>
 | 
			
		||||
 | 
			
		||||
        <Button Name="buttonReset"
 | 
			
		||||
                Style="{StaticResource TextButtonStyle}"
 | 
			
		||||
                Grid.Row="14" Grid.Column="1" VerticalAlignment="Bottom">
 | 
			
		||||
            Reset</Button>
 | 
			
		||||
 | 
			
		||||
        <!-- Notes section -->
 | 
			
		||||
 | 
			
		||||
        <TextBlock Grid.Row="100" Style="{StaticResource MyItemTextStyle}"
 | 
			
		||||
                   FontSize="11"
 | 
			
		||||
                   Foreground="Silver">
 | 
			
		||||
            * Will be applied after the application is restarted.
 | 
			
		||||
        </TextBlock>
 | 
			
		||||
        
 | 
			
		||||
    </Grid>
 | 
			
		||||
</UserControl>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,120 +1,120 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.IO;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using Windows.Foundation;
 | 
			
		||||
using Windows.Foundation.Collections;
 | 
			
		||||
using Windows.UI.Xaml;
 | 
			
		||||
using Windows.UI.Xaml.Controls;
 | 
			
		||||
using Windows.UI.Xaml.Controls.Primitives;
 | 
			
		||||
using Windows.UI.Xaml.Data;
 | 
			
		||||
using Windows.UI.Xaml.Input;
 | 
			
		||||
using Windows.UI.Xaml.Media;
 | 
			
		||||
using Windows.UI.Xaml.Navigation;
 | 
			
		||||
using System.Reflection;
 | 
			
		||||
using Windows.UI.Popups;
 | 
			
		||||
 | 
			
		||||
// The User Control item template is documented at http://go.microsoft.com/fwlink/?LinkId=234236
 | 
			
		||||
 | 
			
		||||
namespace DrumKit
 | 
			
		||||
{
 | 
			
		||||
    public sealed partial class GeneralSettingsControl : UserControl
 | 
			
		||||
    {
 | 
			
		||||
        public GeneralSettingsControl()
 | 
			
		||||
        {
 | 
			
		||||
            this.InitializeComponent();
 | 
			
		||||
            this.LoadSettings();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void LoadSettings()
 | 
			
		||||
        {
 | 
			
		||||
            // Version
 | 
			
		||||
            var version = typeof(GeneralSettingsControl).GetTypeInfo().Assembly.GetName().Version;
 | 
			
		||||
            this.textVersion.Text = String.Format("{0}.{1}", version.Major, version.Minor);
 | 
			
		||||
 | 
			
		||||
            // Other
 | 
			
		||||
            this.masterVolumeSlider.Value = DataController.MasterVolume * 100;
 | 
			
		||||
            this.polyphonySlider.Value = DataController.Settings.Polyphony;
 | 
			
		||||
            this.animationsToggle.IsOn = DataController.Settings.Animations;
 | 
			
		||||
            //this.keyBindingsToggle.IsOn = DataController.Settings.ShowKeyBindings;
 | 
			
		||||
            this.debuggingModeToggle.IsOn = DataController.Settings.DebugMode;
 | 
			
		||||
 | 
			
		||||
            // Set up events
 | 
			
		||||
            masterVolumeSlider.ValueChanged += masterVolumeSlider_ValueChanged;
 | 
			
		||||
            polyphonySlider.ValueChanged += polyphonySlider_ValueChanged;
 | 
			
		||||
            animationsToggle.Toggled += animationsToggle_Toggled;
 | 
			
		||||
            //keyBindingsToggle.Toggled += keyBindingsToggle_Toggled;
 | 
			
		||||
            buttonWebsite.Click += buttonWebsite_Click;
 | 
			
		||||
            buttonSupport.Click += buttonSupport_Click;
 | 
			
		||||
            buttonReset.Click += buttonReset_Click;
 | 
			
		||||
            debuggingModeToggle.Toggled += debuggingModeToggle_Toggled;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void masterVolumeSlider_ValueChanged(object sender, RangeBaseValueChangedEventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            DataController.MasterVolume = Convert.ToSingle(masterVolumeSlider.Value) / 100.0f;
 | 
			
		||||
            DataController.SaveSettings();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        void polyphonySlider_ValueChanged(object sender, RangeBaseValueChangedEventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            DataController.Settings.Polyphony = Convert.ToInt32(polyphonySlider.Value);
 | 
			
		||||
            DataController.SaveSettings();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void animationsToggle_Toggled(object sender, RoutedEventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            DataController.Settings.Animations = this.animationsToggle.IsOn;
 | 
			
		||||
            DataController.SaveSettings();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        //private void keyBindingsToggle_Toggled(object sender, RoutedEventArgs e)
 | 
			
		||||
        //{
 | 
			
		||||
        //    DataController.Settings.ShowKeyBindings = this.keyBindingsToggle.IsOn;
 | 
			
		||||
        //    DataController.SaveSettings();
 | 
			
		||||
        //}
 | 
			
		||||
 | 
			
		||||
        private async void buttonWebsite_Click(object sender, RoutedEventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            await Windows.System.Launcher.LaunchUriAsync(new Uri("http://drumkit8.blogspot.com/"));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private async void buttonSupport_Click(object sender, RoutedEventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            await Windows.System.Launcher.LaunchUriAsync(new Uri("mailto:chibicitiberiu@outlook.com"));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private async void buttonReset_Click(object sender, RoutedEventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            // Notify that the application needs to be restarted
 | 
			
		||||
            MessageDialog dialog = new MessageDialog("The application needs to be restarted in " +
 | 
			
		||||
                "order to reset to factory settings. Note that every customisation will be deleted.", 
 | 
			
		||||
                "Application restart required");
 | 
			
		||||
 | 
			
		||||
            dialog.Commands.Add(new UICommand("Continue", new UICommandInvokedHandler(UICommandFactoryResetHandler)));
 | 
			
		||||
            dialog.Commands.Add(new UICommand("Cancel"));
 | 
			
		||||
            dialog.DefaultCommandIndex = 1;
 | 
			
		||||
 | 
			
		||||
            await dialog.ShowAsync();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// UI Command that restarts the application, when current drumkit changes
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private void UICommandFactoryResetHandler(Windows.UI.Popups.IUICommand cmd)
 | 
			
		||||
        {
 | 
			
		||||
            if (Window.Current.Content is Frame)
 | 
			
		||||
            {
 | 
			
		||||
                Frame frame = (Frame) Window.Current.Content;
 | 
			
		||||
                frame.Navigate(typeof(LoadingPage), "reset");
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void debuggingModeToggle_Toggled(object sender, RoutedEventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            DataController.Settings.DebugMode = this.debuggingModeToggle.IsOn;
 | 
			
		||||
            DataController.SaveSettings();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.IO;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using Windows.Foundation;
 | 
			
		||||
using Windows.Foundation.Collections;
 | 
			
		||||
using Windows.UI.Xaml;
 | 
			
		||||
using Windows.UI.Xaml.Controls;
 | 
			
		||||
using Windows.UI.Xaml.Controls.Primitives;
 | 
			
		||||
using Windows.UI.Xaml.Data;
 | 
			
		||||
using Windows.UI.Xaml.Input;
 | 
			
		||||
using Windows.UI.Xaml.Media;
 | 
			
		||||
using Windows.UI.Xaml.Navigation;
 | 
			
		||||
using System.Reflection;
 | 
			
		||||
using Windows.UI.Popups;
 | 
			
		||||
 | 
			
		||||
// The User Control item template is documented at http://go.microsoft.com/fwlink/?LinkId=234236
 | 
			
		||||
 | 
			
		||||
namespace DrumKit
 | 
			
		||||
{
 | 
			
		||||
    public sealed partial class GeneralSettingsControl : UserControl
 | 
			
		||||
    {
 | 
			
		||||
        public GeneralSettingsControl()
 | 
			
		||||
        {
 | 
			
		||||
            this.InitializeComponent();
 | 
			
		||||
            this.LoadSettings();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void LoadSettings()
 | 
			
		||||
        {
 | 
			
		||||
            // Version
 | 
			
		||||
            var version = typeof(GeneralSettingsControl).GetTypeInfo().Assembly.GetName().Version;
 | 
			
		||||
            this.textVersion.Text = String.Format("{0}.{1}", version.Major, version.Minor);
 | 
			
		||||
 | 
			
		||||
            // Other
 | 
			
		||||
            this.masterVolumeSlider.Value = DataController.MasterVolume * 100;
 | 
			
		||||
            this.polyphonySlider.Value = DataController.Settings.Polyphony;
 | 
			
		||||
            this.animationsToggle.IsOn = DataController.Settings.Animations;
 | 
			
		||||
            this.keyBindingsToggle.IsOn = DataController.Settings.ShowKeyBindings;
 | 
			
		||||
            this.debuggingModeToggle.IsOn = DataController.Settings.DebugMode;
 | 
			
		||||
 | 
			
		||||
            // Set up events
 | 
			
		||||
            masterVolumeSlider.ValueChanged += masterVolumeSlider_ValueChanged;
 | 
			
		||||
            polyphonySlider.ValueChanged += polyphonySlider_ValueChanged;
 | 
			
		||||
            animationsToggle.Toggled += animationsToggle_Toggled;
 | 
			
		||||
            keyBindingsToggle.Toggled += keyBindingsToggle_Toggled;
 | 
			
		||||
            buttonWebsite.Click += buttonWebsite_Click;
 | 
			
		||||
            buttonSupport.Click += buttonSupport_Click;
 | 
			
		||||
            buttonReset.Click += buttonReset_Click;
 | 
			
		||||
            debuggingModeToggle.Toggled += debuggingModeToggle_Toggled;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void masterVolumeSlider_ValueChanged(object sender, RangeBaseValueChangedEventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            DataController.MasterVolume = Convert.ToSingle(masterVolumeSlider.Value) / 100.0f;
 | 
			
		||||
            DataController.SaveSettings();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        void polyphonySlider_ValueChanged(object sender, RangeBaseValueChangedEventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            DataController.Settings.Polyphony = Convert.ToInt32(polyphonySlider.Value);
 | 
			
		||||
            DataController.SaveSettings();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void animationsToggle_Toggled(object sender, RoutedEventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            DataController.Settings.Animations = this.animationsToggle.IsOn;
 | 
			
		||||
            DataController.SaveSettings();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void keyBindingsToggle_Toggled(object sender, RoutedEventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            DataController.Settings.ShowKeyBindings = this.keyBindingsToggle.IsOn;
 | 
			
		||||
            DataController.SaveSettings();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private async void buttonWebsite_Click(object sender, RoutedEventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            await Windows.System.Launcher.LaunchUriAsync(new Uri("http://drumkit8.blogspot.com/"));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private async void buttonSupport_Click(object sender, RoutedEventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            await Windows.System.Launcher.LaunchUriAsync(new Uri("mailto:chibicitiberiu@outlook.com"));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private async void buttonReset_Click(object sender, RoutedEventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            // Notify that the application needs to be restarted
 | 
			
		||||
            MessageDialog dialog = new MessageDialog("The application needs to be restarted in " +
 | 
			
		||||
                "order to reset to factory settings. Note that every customisation will be deleted.", 
 | 
			
		||||
                "Application restart required");
 | 
			
		||||
 | 
			
		||||
            dialog.Commands.Add(new UICommand("Continue", new UICommandInvokedHandler(UICommandFactoryResetHandler)));
 | 
			
		||||
            dialog.Commands.Add(new UICommand("Cancel"));
 | 
			
		||||
            dialog.DefaultCommandIndex = 1;
 | 
			
		||||
 | 
			
		||||
            await dialog.ShowAsync();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// UI Command that restarts the application, when current drumkit changes
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private void UICommandFactoryResetHandler(Windows.UI.Popups.IUICommand cmd)
 | 
			
		||||
        {
 | 
			
		||||
            if (Window.Current.Content is Frame)
 | 
			
		||||
            {
 | 
			
		||||
                Frame frame = (Frame) Window.Current.Content;
 | 
			
		||||
                frame.Navigate(typeof(LoadingPage), "reset");
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void debuggingModeToggle_Toggled(object sender, RoutedEventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            DataController.Settings.DebugMode = this.debuggingModeToggle.IsOn;
 | 
			
		||||
            DataController.SaveSettings();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,55 +1,75 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Text;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
using Windows.UI.ViewManagement;
 | 
			
		||||
using Windows.UI.Xaml;
 | 
			
		||||
using Windows.UI.Xaml.Media;
 | 
			
		||||
 | 
			
		||||
namespace DrumKit
 | 
			
		||||
{
 | 
			
		||||
    static class UIHelper
 | 
			
		||||
    {
 | 
			
		||||
        public static DrumkitLayoutTargetView ToDrumkitLayoutView(ApplicationViewState state)
 | 
			
		||||
        {
 | 
			
		||||
            switch (state)
 | 
			
		||||
            {
 | 
			
		||||
                case ApplicationViewState.Filled:
 | 
			
		||||
                    return DrumkitLayoutTargetView.Filled;
 | 
			
		||||
                    
 | 
			
		||||
                case ApplicationViewState.FullScreenLandscape:
 | 
			
		||||
                    return DrumkitLayoutTargetView.Landscape;
 | 
			
		||||
 | 
			
		||||
                case ApplicationViewState.FullScreenPortrait:
 | 
			
		||||
                    return DrumkitLayoutTargetView.Portrait;
 | 
			
		||||
 | 
			
		||||
                case ApplicationViewState.Snapped:
 | 
			
		||||
                    return DrumkitLayoutTargetView.Snapped;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return DrumkitLayoutTargetView.None;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public static FrameworkElement FindChildByName(FrameworkElement el, string name)
 | 
			
		||||
        {
 | 
			
		||||
            if (el == null || string.IsNullOrEmpty(name))
 | 
			
		||||
                return null;
 | 
			
		||||
 | 
			
		||||
            if (name == el.Name)
 | 
			
		||||
                return el;
 | 
			
		||||
 | 
			
		||||
            for (int i = 0; i < VisualTreeHelper.GetChildrenCount(el); i++)
 | 
			
		||||
            {
 | 
			
		||||
                var element = VisualTreeHelper.GetChild(el, i) as FrameworkElement;
 | 
			
		||||
                var result = FindChildByName(element, name);
 | 
			
		||||
 | 
			
		||||
                if (result != null)
 | 
			
		||||
                    return result;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return null;
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Text;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
using Windows.System;
 | 
			
		||||
using Windows.UI.ViewManagement;
 | 
			
		||||
using Windows.UI.Xaml;
 | 
			
		||||
using Windows.UI.Xaml.Media;
 | 
			
		||||
 | 
			
		||||
namespace DrumKit
 | 
			
		||||
{
 | 
			
		||||
    static class UIHelper
 | 
			
		||||
    {
 | 
			
		||||
        public static DrumkitLayoutTargetView ToDrumkitLayoutView(ApplicationViewState state)
 | 
			
		||||
        {
 | 
			
		||||
            switch (state)
 | 
			
		||||
            {
 | 
			
		||||
                case ApplicationViewState.Filled:
 | 
			
		||||
                    return DrumkitLayoutTargetView.Filled;
 | 
			
		||||
                    
 | 
			
		||||
                case ApplicationViewState.FullScreenLandscape:
 | 
			
		||||
                    return DrumkitLayoutTargetView.Landscape;
 | 
			
		||||
 | 
			
		||||
                case ApplicationViewState.FullScreenPortrait:
 | 
			
		||||
                    return DrumkitLayoutTargetView.Portrait;
 | 
			
		||||
 | 
			
		||||
                case ApplicationViewState.Snapped:
 | 
			
		||||
                    return DrumkitLayoutTargetView.Snapped;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return DrumkitLayoutTargetView.None;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public static FrameworkElement FindChildByName(FrameworkElement el, string name)
 | 
			
		||||
        {
 | 
			
		||||
            if (el == null || string.IsNullOrEmpty(name))
 | 
			
		||||
                return null;
 | 
			
		||||
 | 
			
		||||
            if (name == el.Name)
 | 
			
		||||
                return el;
 | 
			
		||||
 | 
			
		||||
            for (int i = 0; i < VisualTreeHelper.GetChildrenCount(el); i++)
 | 
			
		||||
            {
 | 
			
		||||
                var element = VisualTreeHelper.GetChild(el, i) as FrameworkElement;
 | 
			
		||||
                var result = FindChildByName(element, name);
 | 
			
		||||
 | 
			
		||||
                if (result != null)
 | 
			
		||||
                    return result;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return null;
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        public static string GetPrettifiedVKeyName(VirtualKey vkey)
 | 
			
		||||
        {
 | 
			
		||||
            if (Enum.IsDefined(typeof(VirtualKey), vkey))
 | 
			
		||||
            {
 | 
			
		||||
                // Get name
 | 
			
		||||
                string text = Enum.GetName(typeof(VirtualKey), vkey);
 | 
			
		||||
 | 
			
		||||
                // Prettify the name
 | 
			
		||||
                if (text.StartsWith("Number"))
 | 
			
		||||
                    text = text.Substring("Number".Length);
 | 
			
		||||
 | 
			
		||||
                text = System.Text.RegularExpressions.Regex.Replace(text, "([a-z])([A-Z])", "${1} ${2}");
 | 
			
		||||
 | 
			
		||||
                // Set the text
 | 
			
		||||
                return text;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            else return string.Format("Unnamed ({0})", (int)vkey);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										5
									
								
								DrumKit/packages.config
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								DrumKit/packages.config
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,5 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<packages>
 | 
			
		||||
  <package id="SharpDX" version="2.5.0" targetFramework="win" />
 | 
			
		||||
  <package id="SharpDX.XAudio2" version="2.5.0" targetFramework="win" />
 | 
			
		||||
</packages>
 | 
			
		||||
		Reference in New Issue
	
	Block a user