Skip to content

Commit

Permalink
🎈Добавлена анимация текущего проигрывающегося трэка.
Browse files Browse the repository at this point in the history
🎈Некоторые исправления.
  • Loading branch information
MaKrotos committed Jan 10, 2024
1 parent 8112165 commit 0a8086e
Show file tree
Hide file tree
Showing 25 changed files with 460 additions and 108 deletions.
2 changes: 1 addition & 1 deletion SetupLib/AppUpdater.cs
Original file line number Diff line number Diff line change
Expand Up @@ -253,7 +253,7 @@ static bool IsAppInstalled(string appName)
Arguments = $"-Command \"{command}\"",
RedirectStandardOutput = true,
UseShellExecute = false,
CreateNoWindow = false,
CreateNoWindow = true,
};
Process process = new Process() { StartInfo = startInfo };
process.Start();
Expand Down
6 changes: 5 additions & 1 deletion VK UI3/App.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,11 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:VK_UI3">
<Application.Resources>
<ResourceDictionary>

<ResourceDictionary x:Key="Default">
<AcrylicBrush x:Key="CustomAcrylicInAppBrush"
TintOpacity="0.1" Opacity="0.9" TintColor="#FF000000" FallbackColor="#FF008000" />

<ResourceDictionary.MergedDictionaries>
<XamlControlsResources xmlns="using:Microsoft.UI.Xaml.Controls" />
<!-- Other merged dictionaries here -->
Expand Down
13 changes: 6 additions & 7 deletions VK UI3/Controllers/AudioPlayer.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -593,17 +593,17 @@ internal static void PlayPreviousTrack()
iVKGetAudio.getPreviusTrackForPlay();
PlayTrack();


}

private async static void PlayTrack(long? v = null)
{
if (v != null) iVKGetAudio.currentTrack = (long)v;


iVKGetAudio.ChangePlayAudio();


var mediaSource = Windows.Media.Core.MediaSource.CreateFromUri(new Uri(_TrackDataThis.Url.ToString()));
var mediaPlaybackItem = new Windows.Media.Playback.MediaPlaybackItem(mediaSource);
var mediaSource = Windows.Media.Core.MediaSource.CreateFromUri(new Uri(_TrackDataThis.Url.ToString()));
var mediaPlaybackItem = new Windows.Media.Playback.MediaPlaybackItem(mediaSource);



Expand Down Expand Up @@ -640,7 +640,7 @@ private async static void PlayTrack(long? v = null)
mediaPlayer.Volume = 1;
mediaPlayer.Source = mediaPlaybackItem;
mediaPlayer.Play();

}


Expand Down Expand Up @@ -836,10 +836,9 @@ private void NextBTN_Tapped(object sender, TappedRoutedEventArgs e)

}

internal static void PlayList(UserAudio userAudio)
internal static void PlayList(IVKGetAudio userAudio)
{
iVKGetAudio = userAudio;
iVKGetAudio.getSetNumberPlay();
AudioPlayer.PlayTrack();
NotifyoniVKUpdate();
}
Expand Down
13 changes: 10 additions & 3 deletions VK UI3/Controllers/ChooseLoginWayControl.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,15 @@ public ChooseLoginWayControl()

if (loginWay != null)
{
if (loginWay.Name == LoginWay.Push)


if (loginWay.Name == LoginWay.Codegen)
{
fontIcon.Glyph = "\uECAD";
MainTxT.Text = "Ãåíåðàòîð êîäà";
secondTXT.Text = "Âîñïîëüçóéòåñü êîäîì èç ïðèëîæåíèÿ ãåíåðàöèè êîäîâ àâòîðèçàöèè";
}
else if (loginWay.Name == LoginWay.Push)
{
fontIcon.Glyph = "\uE90A";
MainTxT.Text = "PUSH óâåäîìëåíèå";
Expand Down Expand Up @@ -74,15 +82,14 @@ public ChooseLoginWayControl()
MainTxT.Text = "Ýëåêòðîííàÿ ïî÷òà";
secondTXT.Text = "Âàì áóäåò îòïðàâëåí êîä íà ýëåêòðîííóþ ïî÷òó";
}
else if (loginWay.Name.ToString() == "password")
else if (loginWay.Name == LoginWay.Password)
{
fontIcon.Glyph = "\uE8AC";
MainTxT.Text = "Ïàðîëü";
secondTXT.Text = "Ââåäèòå ïàðîëü äëÿ âõîäà â ñâîé àêêàóíò.";
}
else
{

fontIcon.Glyph = "?";
MainTxT.Text = "Íåðåàëèçîâàííûé ìåòîä ("+loginWay.Name.ToString()+")";
secondTXT.Text = "???";
Expand Down
48 changes: 45 additions & 3 deletions VK UI3/Controllers/TrackController.xaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
<UserControl Margin="4" IsHitTestVisible="True"

x:Name="UCcontrol"
x:Class="VK_UI3.Controllers.TrackController"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Expand All @@ -9,17 +10,42 @@
xmlns:local1="using:VK_UI3.Converters"
xmlns:local2="using:VK_UI3.Helpers.Animations"
mc:Ignorable="d"
CornerRadius="8" d:DesignHeight="153.764" d:DesignWidth="425.452">
PointerEntered="UCcontrol_PointerEntered"
PointerExited="UCcontrol_PointerExited"

Translation="0,0,16"
CornerRadius="8" d:DesignHeight="153.764" d:DesignWidth="425.452">
<UserControl.Shadow>
<ThemeShadow />
</UserControl.Shadow>
<UserControl.Transform3D>
<CompositeTransform3D x:Name="UCTransform" TranslateX="0" TranslateY="0" TranslateZ="0"/>
</UserControl.Transform3D>
<UserControl.Resources>
<local1:SecondsToTimeConverter x:Key="SecondsToTimeConverter"/>

<Storyboard x:Name="FadeInAnimation">

<DoubleAnimationUsingKeyFrames Storyboard.TargetName="UCTransform"
Storyboard.TargetProperty="TranslateZ">
<EasingDoubleKeyFrame KeyTime="0:0:1" Value="25"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
<Storyboard x:Name="FadeOutAnimation">

<DoubleAnimationUsingKeyFrames Storyboard.TargetName="UCTransform"
Storyboard.TargetProperty="TranslateZ">
<EasingDoubleKeyFrame KeyTime="0:0:1" Value="0"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</UserControl.Resources>
<Grid x:Name="GridXvan" IsHitTestVisible="True" CornerRadius="8" Background="{StaticResource SystemControlAcrylicElementMediumHighBrush}" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>

<Grid
<Grid
Padding="0"
CornerRadius="8"
Background="{ThemeResource SystemControlAltHighAcrylicElementBrush}" Tapped="Ellipse_Tapped" Height="100" Width="100"
Expand All @@ -29,7 +55,23 @@


</Image>

<Grid x:Name="GridPlayIcon" Opacity="0" CornerRadius="8" Background="{StaticResource CustomAcrylicInAppBrush}">
<SymbolIcon x:Name="PlayBTN" Symbol="Play"/>
<Grid.Resources>
<!-- Анимация прозрачности от 0 до 1 -->
<Storyboard x:Name="FadeInAnimationGridPlayIcon">
<DoubleAnimation Storyboard.TargetName="GridPlayIcon"
Storyboard.TargetProperty="Opacity"
To="1" Duration="0:0:0.25"/>
</Storyboard>
<!-- Анимация прозрачности от 1 до 0 -->
<Storyboard x:Name="FadeOutAnimationGridPlayIcon">
<DoubleAnimation Storyboard.TargetName="GridPlayIcon"
Storyboard.TargetProperty="Opacity"
To="0" Duration="0:0:0.25"/>
</Storyboard>
</Grid.Resources>
</Grid>
</Grid>

<StackPanel HorizontalAlignment="Stretch" Padding="8" Grid.Column="1" VerticalAlignment="Center">
Expand Down
110 changes: 102 additions & 8 deletions VK UI3/Controllers/TrackController.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
using Microsoft.UI.Xaml.Media.Animation;
using Windows.UI.Text;
using VkNet.Model.Attachments;
using System.Linq;

// To learn more about WinUI, the WinUI project structure,
// and more about our project templates, see: http://aka.ms/winui-project-info.
Expand Down Expand Up @@ -96,14 +97,27 @@ public TrackController()
this.InitializeComponent();
changeImage = new AnimationsChangeImage(this.ImageThumb, DispatcherQueue);
this.DataContextChanged += (s, e) => {
Bindings.Update();
LoadImage();
};
this.DefaultStyleKey = typeof(TrackController);
Bindings.Update();
LoadImage();

changeIconPlayBTN = new AnimationsChangeIcon(PlayBTN);
if (TrackData != null)
{
//

if (!attached)
{
TrackData.userAudio.AudioPlayedChangeEvent += UserAudio_AudioPlayedChangeEvent;
attached = true;
}



Symbol symbol = TrackData.PlayThis ? Symbol.Pause : Symbol.Play;
ChangeSymbolIcon(symbol);
HandleAnimation(TrackData.PlayThis);
}
};
this.DefaultStyleKey = typeof(TrackController);
Loaded += TrackController_Loaded;

//this.Image.ImageSource = new BitmapImage(new Uri(Cover));
Expand All @@ -113,9 +127,49 @@ public TrackController()

}

private void UserAudio_AudioPlayedChangeEvent(object sender, EventArgs e)
{
try
{
Symbol symbol = TrackData.PlayThis ? Symbol.Pause : Symbol.Play;
ChangeSymbolIcon(symbol);
HandleAnimation(TrackData.PlayThis);
}
catch (Exception ex) { }
}

private void ChangeSymbolIcon(Symbol symbol)
{
if (GridPlayIcon.Opacity != 0)
{
changeIconPlayBTN.ChangeSymbolIconWithAnimation(symbol);
}
else
{
PlayBTN.Symbol = symbol;
}
}

private void HandleAnimation(bool playThis)
{
if (playThis)
{
FadeOutAnimationGridPlayIcon.Pause();
FadeInAnimationGridPlayIcon.Begin();
}
else if (!entered)
{
FadeInAnimationGridPlayIcon.Pause();
FadeOutAnimationGridPlayIcon.Begin();
}
}


bool attached = false;

private void TrackController_Loaded(object sender, RoutedEventArgs e)
{

}

private async Task<IRandomAccessStream> GetImageStreamAsync(string uri)
Expand Down Expand Up @@ -145,15 +199,16 @@ public async void getIMG(Audio audio)
}

}
AnimationsChangeIcon changeIconPlayBTN = null;
private bool entered = false;

private void Ellipse_Tapped(object sender, TappedRoutedEventArgs e)
{



// AudioPlayer.PlayTrack(TrackData.AudioList, TrackData.NumberList);
TrackData.PlayThis = true;
AudioPlayer.PlayList(TrackData.userAudio);


// Ïîëó÷åíèå îáúåêòà MediaPlaybackSession
//var playbackSession = AudioPlayer.mediaPlayer.PlaybackSession;
Expand All @@ -175,6 +230,14 @@ private void Ellipse_Tapped(object sender, TappedRoutedEventArgs e)
}
*/

// AudioPlayer.PlayTrack(TrackData.AudioList, TrackData.NumberList);

TrackData.userAudio.currentTrack = TrackData.NumberInList;
AudioPlayer.PlayList(TrackData.userAudio);





}

Expand All @@ -192,5 +255,36 @@ private void TextBlock_PointerExited(object sender, PointerRoutedEventArgs e)
TextBlock textBlock = sender as TextBlock;
textBlock.TextDecorations = TextDecorations.None;
}

private void UCcontrol_PointerEntered(object sender, PointerRoutedEventArgs e)
{
//FadeInAnimation.Begin();
entered = true;

Symbol symbol = TrackData.PlayThis ? Symbol.Pause : Symbol.Play;
if (GridPlayIcon.Opacity != 0)
{
changeIconPlayBTN.ChangeSymbolIconWithAnimation(symbol);
}
else
{
PlayBTN.Symbol = symbol;
}


FadeOutAnimationGridPlayIcon.Pause();
FadeInAnimationGridPlayIcon.Begin();
}

private void UCcontrol_PointerExited(object sender, PointerRoutedEventArgs e)
{

entered = false;
if (TrackData.PlayThis) return;
FadeInAnimationGridPlayIcon.Pause();
FadeOutAnimationGridPlayIcon.Begin();

//FadeOutAnimation.Begin();
}
}
}
4 changes: 2 additions & 2 deletions VK UI3/Helpers/Animations/AnimationsChangeIcon.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public async void ChangeSymbolIconWithAnimation(Symbol newSymbol)

if (storyboard == null) storyboard = new Storyboard();

if (symbolNow != null && symbolNow == newSymbol) return;
if (symbolNow != null && (symbolNow == newSymbol && iconControl.Symbol == newSymbol)) return;

symbolNow = newSymbol;

Expand All @@ -40,7 +40,7 @@ public async void ChangeSymbolIconWithAnimation(Symbol newSymbol)
{
From = iconControl.Opacity,
To = 0.0,
Duration = TimeSpan.FromMilliseconds(50),
Duration = TimeSpan.FromMilliseconds(100),
};

// Создаем объект Storyboard для управления анимацией
Expand Down
16 changes: 11 additions & 5 deletions VK UI3/Helpers/ExtendedAudio.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using VK_UI3.Interfaces;
using VK_UI3.VKs;
using VkNet.Model;
using VkNet.Model.Attachments;
Expand All @@ -12,7 +13,8 @@ namespace VK_UI3.Helpers
{
public class ExtendedAudio
{




public ExtendedAudio(Audio audio, UserAudio userAudio)
{
Expand All @@ -22,14 +24,18 @@ public ExtendedAudio(Audio audio, UserAudio userAudio)
this.userAudio = userAudio;
}

public bool PlayThis { get; set; } = false;
public bool PlayThis { get {
if (NumberInList == null) return false;
return (NumberInList == userAudio.currentTrack);
}
}

public Audio Audio { get; set; }

// public int NumberList { get; set; }
// public int NumberList { get; set; }


public long? NumberInList = null;

public UserAudio userAudio { get; set; }
public IVKGetAudio userAudio { get; set; }
}
}
Loading

0 comments on commit 0a8086e

Please sign in to comment.