Skip to content

Instantly share code, notes, and snippets.

Created October 18, 2013 01:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anonymous/7034894 to your computer and use it in GitHub Desktop.
Save anonymous/7034894 to your computer and use it in GitHub Desktop.
<phone:PhoneApplicationPage
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:mmppf="clr-namespace:Microsoft.PlayerFramework;assembly=Microsoft.PlayerFramework"
xmlns:smmedia="clr-namespace:SM.Media.MediaPlayer;assembly=SM.Media.MediaPlayer.WP8"
xmlns:System="clr-namespace:System;assembly=mscorlib" x:Class="SamplePlayer.WP8.MainPage"
mc:Ignorable="d"
SupportedOrientations="Landscape"
Orientation="Landscape"
shell:SystemTray.IsVisible="False">
<phone:PhoneApplicationPage.Resources>
<SolidColorBrush x:Key="ItemBackgroundThemeBrush" Color="#44000000" />
<SolidColorBrush x:Key="ButtonForegroundThemeBrush" Color="#FFFFFFFF" />
<SolidColorBrush x:Key="ButtonPointerOverForegroundThemeBrush" Color="#FFFFFFFF" />
<SolidColorBrush x:Key="ButtonPressedForegroundThemeBrush" Color="#FF000000" />
<Style x:Key="ControlPanelStyle" TargetType="mmppf:ControlPanel">
<Setter Property="Height" Value="NaN"/>
<Setter Property="VerticalAlignment" Value="Stretch"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="mmppf:ControlPanel">
<Grid>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="MediaStates">
<VisualState x:Name="Opening"/>
<VisualState x:Name="Paused"/>
<VisualState x:Name="Playing"/>
<VisualState x:Name="Closed"/>
<VisualState x:Name="Buffering"/>
</VisualStateGroup>
<VisualStateGroup x:Name="LayoutStates">
<VisualState x:Name="Compact"/>
<VisualState x:Name="Normal"/>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Border x:Name="Border" DataContext="{TemplateBinding ViewModel}">
<Border.Resources>
<mmppf:BoolToVisibilityConverter x:Key="VisibleIfConverter"/>
</Border.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center">
<StackPanel Orientation="Horizontal" x:Name="NonEssentialsNearLeft">
<mmppf:SkipPreviousButton x:Name="SkipPreviousButton" ViewModel="{TemplateBinding ViewModel}" Visibility="{Binding IsSkipPreviousButtonVisible, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource VisibleIfConverter}}" Size="70" FontSize="40" Margin="10,0,10,0" StrokeThickness="0" Background="{StaticResource ItemBackgroundThemeBrush}"/>
<mmppf:RewindButton x:Name="RewindButton" ViewModel="{TemplateBinding ViewModel}" Visibility="{Binding IsRewindButtonVisible, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource VisibleIfConverter}}" Size="70" FontSize="40" Padding="0,0,5,7" Margin="10,0,10,0" StrokeThickness="0" Background="{StaticResource ItemBackgroundThemeBrush}"/>
<mmppf:SkipBackButton x:Name="SkipBackButton" ViewModel="{TemplateBinding ViewModel}" Visibility="{Binding IsSkipBackButtonVisible, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource VisibleIfConverter}}" Size="70" FontSize="40" Margin="10,0,10,0" Padding="0,-10,0,0" StrokeThickness="0" Background="{StaticResource ItemBackgroundThemeBrush}"/>
</StackPanel>
<mmppf:PlayPauseButton x:Name="PlayPauseButton" ViewModel="{TemplateBinding ViewModel}" Visibility="{Binding IsPlayPauseButtonVisible, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource VisibleIfConverter}}" Size="140" FontSize="80" Margin="25,0,25,0" StrokeThickness="0" Background="{StaticResource ItemBackgroundThemeBrush}"/>
<StackPanel Orientation="Horizontal" x:Name="NonEssentialsNearRight">
<mmppf:SkipAheadButton x:Name="SkipAheadButton" ViewModel="{TemplateBinding ViewModel}" Visibility="{Binding IsSkipAheadButtonVisible, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource VisibleIfConverter}}" Size="70" FontSize="40" Margin="10,0,10,0" Padding="0,-10,0,0" StrokeThickness="0" Background="{StaticResource ItemBackgroundThemeBrush}"/>
<mmppf:FastForwardButton x:Name="FastForwardButton" ViewModel="{TemplateBinding ViewModel}" Visibility="{Binding IsFastForwardButtonVisible, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource VisibleIfConverter}}" Size="70" FontSize="40" Padding="5,0,0,7" Margin="10,0,10,0" StrokeThickness="0" Background="{StaticResource ItemBackgroundThemeBrush}"/>
<mmppf:SkipNextButton x:Name="SkipNextButton" ViewModel="{TemplateBinding ViewModel}" Visibility="{Binding IsSkipNextButtonVisible, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource VisibleIfConverter}}" Size="70" FontSize="40" Margin="10,0,10,0" StrokeThickness="0" Background="{StaticResource ItemBackgroundThemeBrush}"/>
</StackPanel>
</StackPanel>
<Grid x:Name="TimelineContainer" Grid.Row="1" Background="{StaticResource ItemBackgroundThemeBrush}">
<Grid Margin="30,4,30,7">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<mmppf:TimeElapsedButton x:Name="TimeElapsedButton" Grid.Column="0" ViewModel="{TemplateBinding ViewModel}" Visibility="{Binding IsTimeElapsedButtonVisible, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource VisibleIfConverter}}" Margin="8,0,8,0"/>
<!--<mmppf:Timeline x:Name="Timeline" Grid.Column="1" ViewModel="{TemplateBinding ViewModel}" Visibility="{Binding IsTimelineVisible, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource VisibleIfConverter}}" Margin="8,0,8,0"/>-->
<mmppf:Timeline Height="25" Padding="0,10,0,10" x:Name="Timeline" Grid.Column="1" ViewModel="{TemplateBinding ViewModel}" Visibility="{Binding IsTimelineVisible, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource VisibleIfConverter}}" Margin="8,0,8,0">
<mmppf:Timeline.SliderStyle>
<Style TargetType="mmppf:SeekableSlider">
<Setter Property="Foreground" Value="{StaticResource ButtonForegroundThemeBrush}"/>
<Setter Property="SliderTrackDecreasePressedBackground" Value="{StaticResource ButtonPressedForegroundThemeBrush}" />
<Setter Property="SliderTrackDecreasePointerOverBackground" Value="{StaticResource ButtonPointerOverForegroundThemeBrush}" />
<Setter Property="SliderThumbStyle">
<Setter.Value>
<Style TargetType="Thumb">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Thumb">
<Canvas HorizontalAlignment="Center" VerticalAlignment="Top" Margin="-18,-38,18,0">
<Grid>
<Ellipse Stroke="{StaticResource ButtonForegroundThemeBrush}" Fill="{StaticResource ButtonPressedForegroundThemeBrush}" StrokeThickness="2" Width="35" Height="35"/>
<Path Fill="{StaticResource ButtonForegroundThemeBrush}" Margin="0,0,0,-7" VerticalAlignment="Bottom" HorizontalAlignment="Center" Data="M 0,0 8,0 4,8Z"/>
</Grid>
</Canvas>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Setter.Value>
</Setter>
</Style>
</mmppf:Timeline.SliderStyle>
</mmppf:Timeline>
<mmppf:TimeRemainingButton x:Name="TimeRemainingButton" Grid.Column="2" ViewModel="{TemplateBinding ViewModel}" Visibility="{Binding IsTimeRemainingButtonVisible, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource VisibleIfConverter}}" Margin="8,0,8,0"/>
<mmppf:DurationButton x:Name="DurationButton" Grid.Column="2" ViewModel="{TemplateBinding ViewModel}" Visibility="{Binding IsDurationButtonVisible, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource VisibleIfConverter}}" Margin="8,0,8,0"/>
</Grid>
</Grid>
</Grid>
</Border>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="MediaPlayerStyle" TargetType="mmppf:MediaPlayer">
<Setter Property="InteractiveDeactivationMode" Value="All"/>
<Setter Property="AutoHideBehavior" Value="All"/>
<Setter Property="IsTimeRemainingVisible" Value="False"/>
<Setter Property="IsDurationVisible" Value="True"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="mmppf:MediaPlayer">
<Grid x:Name="LayoutRoot" Background="{TemplateBinding Background}">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="FullScreenStates">
<VisualState x:Name="FullScreen"/>
<VisualState x:Name="NotFullScreen"/>
</VisualStateGroup>
<VisualStateGroup x:Name="CaptionsStates">
<VisualState x:Name="CaptionsActive">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Control.Visibility)" Storyboard.TargetName="CaptionsContainer">
<DiscreteObjectKeyFrame KeyTime="0" Value="Visible"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="CaptionsInactive"/>
</VisualStateGroup>
<VisualStateGroup x:Name="AdvertisingStates">
<VisualState x:Name="LoadingAd">
<Storyboard>
<DoubleAnimation Duration="0:0:0.5" To="0" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="MediaContainer"/>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Control.Visibility)" Storyboard.TargetName="LoadingAdvertisment">
<DiscreteObjectKeyFrame KeyTime="0" Value="Visible"/>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="IsIndeterminate" Storyboard.TargetName="AdvertisementLoadingProgressBar">
<DiscreteObjectKeyFrame KeyTime="0">
<DiscreteObjectKeyFrame.Value>
<System:Boolean>True</System:Boolean>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="LinearAd">
<Storyboard>
<DoubleAnimation Duration="0" To="0" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="MediaContainer"/>
</Storyboard>
</VisualState>
<VisualState x:Name="NonLinearAd">
<Storyboard>
<DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="MediaContainer"/>
</Storyboard>
</VisualState>
<VisualState x:Name="NoAd">
<Storyboard>
<DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="MediaContainer"/>
</Storyboard>
</VisualState>
</VisualStateGroup>
<VisualStateGroup x:Name="InteractiveStates">
<VisualState x:Name="StartInteracting">
<Storyboard>
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity" Storyboard.TargetName="InteractivityContainer">
<EasingDoubleKeyFrame KeyTime="0:0:0.4" Value="1"/>
</DoubleAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Control.Visibility)" Storyboard.TargetName="InteractivityContainer">
<DiscreteObjectKeyFrame KeyTime="0" Value="Visible"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="StopInteracting">
<Storyboard>
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity" Storyboard.TargetName="InteractivityContainer">
<EasingDoubleKeyFrame KeyTime="0:0:0.4" Value="0"/>
</DoubleAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Control.Visibility)" Storyboard.TargetName="InteractivityContainer">
<DiscreteObjectKeyFrame KeyTime="0:0:0.4" Value="Collapsed"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="Visible">
<Storyboard>
<DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="InteractivityContainer"/>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Control.Visibility)" Storyboard.TargetName="InteractivityContainer">
<DiscreteObjectKeyFrame KeyTime="0" Value="Visible"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="Hidden">
<Storyboard>
<DoubleAnimation Duration="0" To="0" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="InteractivityContainer"/>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Control.Visibility)" Storyboard.TargetName="InteractivityContainer">
<DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
<VisualStateGroup x:Name="MediaStates">
<VisualState x:Name="Opening">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Control.Visibility)" Storyboard.TargetName="BufferingContainer">
<DiscreteObjectKeyFrame KeyTime="0" Value="Visible"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="Paused"/>
<VisualState x:Name="Playing"/>
<VisualState x:Name="Closed"/>
<VisualState x:Name="Buffering">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Control.Visibility)" Storyboard.TargetName="BufferingContainer">
<DiscreteObjectKeyFrame KeyTime="0" Value="Visible"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
<VisualStateGroup x:Name="PlayerStates">
<VisualState x:Name="Unloaded"/>
<VisualState x:Name="Pending">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Control.Visibility)" Storyboard.TargetName="LoaderViewContainer">
<DiscreteObjectKeyFrame KeyTime="0" Value="Visible"/>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Control.Visibility)" Storyboard.TargetName="PosterContainer">
<DiscreteObjectKeyFrame KeyTime="0" Value="Visible"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="Loading"/>
<VisualState x:Name="Loaded"/>
<VisualState x:Name="Opened">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Control.Visibility)" Storyboard.TargetName="InteractivityContainer">
<DiscreteObjectKeyFrame KeyTime="0" Value="Visible"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="Starting">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Control.Visibility)" Storyboard.TargetName="InteractivityContainer">
<DiscreteObjectKeyFrame KeyTime="0" Value="Visible"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="Started">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Control.Visibility)" Storyboard.TargetName="InteractivityContainer">
<DiscreteObjectKeyFrame KeyTime="0" Value="Visible"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="Ending">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Control.Visibility)" Storyboard.TargetName="InteractivityContainer">
<DiscreteObjectKeyFrame KeyTime="0" Value="Visible"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="Failed">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Control.Visibility)" Storyboard.TargetName="ErrorsContainer">
<DiscreteObjectKeyFrame KeyTime="0" Value="Visible"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Grid x:Name="MediaContainer">
<Grid x:Name="CaptionsContainer" IsHitTestVisible="False" Visibility="Collapsed"/>
</Grid>
<Grid x:Name="PosterContainer" IsHitTestVisible="False" Visibility="Collapsed"/>
<Grid x:Name="AdvertisingContainer" Visibility="Collapsed">
<Grid x:Name="LoadingAdvertisment" Background="#00000000" Visibility="Collapsed">
<ProgressBar x:Name="AdvertisementLoadingProgressBar" HorizontalAlignment="Stretch" IsIndeterminate="False" VerticalAlignment="Center"/>
</Grid>
</Grid>
<Grid x:Name="ErrorsContainer" Visibility="Collapsed"/>
<Grid x:Name="InteractivityContainer" Visibility="Collapsed">
<mmppf:ControlPanel x:Name="ControlPanel" IsFullScreenButtonVisible="{TemplateBinding IsFullScreenVisible}" IsRewindButtonVisible="{TemplateBinding IsRewindVisible}" IsSkipPreviousButtonVisible="{TemplateBinding IsSkipPreviousVisible}" IsStopButtonVisible="{TemplateBinding IsStopVisible}" IsPlayPauseButtonVisible="{TemplateBinding IsPlayPauseVisible}" IsResolutionIndicatorVisible="{TemplateBinding IsResolutionIndicatorVisible}" IsSkipBackButtonVisible="{TemplateBinding IsSkipBackVisible}" IsGoLiveButtonVisible="{TemplateBinding IsGoLiveVisible}" IsSlowMotionButtonVisible="{TemplateBinding IsSlowMotionVisible}" IsAudioSelectionButtonVisible="{TemplateBinding IsAudioSelectionVisible}" IsTimelineVisible="{TemplateBinding IsTimelineVisible}" IsReplayButtonVisible="{TemplateBinding IsReplayVisible}" IsTimeRemainingButtonVisible="{TemplateBinding IsTimeRemainingVisible}" IsSignalStrengthVisible="{TemplateBinding IsSignalStrengthVisible}" IsSkipNextButtonVisible="{TemplateBinding IsSkipNextVisible}" IsFastForwardButtonVisible="{TemplateBinding IsFastForwardVisible}" IsDurationButtonVisible="{TemplateBinding IsDurationVisible}" IsTimeElapsedButtonVisible="{TemplateBinding IsTimeElapsedVisible}" IsCaptionSelectionButtonVisible="{TemplateBinding IsCaptionSelectionVisible}" IsVolumeButtonVisible="{TemplateBinding IsVolumeVisible}" IsSkipAheadButtonVisible="{TemplateBinding IsSkipAheadVisible}" ViewModel="{TemplateBinding InteractiveViewModel}" Style="{StaticResource ControlPanelStyle}"/>
</Grid>
<Grid x:Name="LoaderViewContainer" Visibility="Collapsed"/>
<Grid x:Name="BufferingContainer" Visibility="Collapsed"/>
<Grid x:Name="SettingsContainer" Visibility="Collapsed"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</phone:PhoneApplicationPage.Resources>
<phone:PhoneApplicationPage.FontFamily>
<StaticResource ResourceKey="PhoneFontFamilyNormal"/>
</phone:PhoneApplicationPage.FontFamily>
<phone:PhoneApplicationPage.FontSize>
<StaticResource ResourceKey="PhoneFontSizeNormal"/>
</phone:PhoneApplicationPage.FontSize>
<phone:PhoneApplicationPage.Foreground>
<StaticResource ResourceKey="PhoneForegroundBrush"/>
</phone:PhoneApplicationPage.Foreground>
<Grid x:Name="LayoutRoot"
Background="Transparent">
<mmppf:MediaPlayer x:Name="player" Source="http://smf.blob.core.windows.net/samples/videos/wildlife.mp4" Style="{StaticResource MediaPlayerStyle}"/>
</Grid>
</phone:PhoneApplicationPage>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment