From: aman.jeph Date: Wed, 27 Apr 2022 11:30:00 +0000 (+0530) Subject: Fixing binding, animation and Title issue X-Git-Tag: submit/tizen/20220509.153423~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F93%2F274393%2F1;p=profile%2Fiot%2Fapps%2Fdotnet%2Fmusic-player.git Fixing binding, animation and Title issue Change-Id: I2f7d69a659da4644c5a837574c0a11674ab2f1da Signed-off-by: aman.jeph --- diff --git a/music-player/Views/ListItemLayout.cs b/music-player/Views/ListItemLayout.cs index 24f4f2f..8e18b9f 100755 --- a/music-player/Views/ListItemLayout.cs +++ b/music-player/Views/ListItemLayout.cs @@ -9,8 +9,6 @@ namespace MusicPlayer.Views { class ListItemLayout : RecyclerViewItem { - private static bool AnimationRequired; - private const int IconSize = 64; private const int SeperatorHeight = 2; @@ -22,6 +20,7 @@ namespace MusicPlayer.Views private Button playPauseIcon; private bool isAnimating = false; private bool isPlayingStatus = false; + private bool isAnimationRequired = false; public static readonly BindableProperty IsPlayingProperty = BindableProperty.Create(nameof(IsPlaying), typeof(bool), typeof(ListItemLayout), false, propertyChanged: (bindable, oldValue, newValue) => { @@ -56,7 +55,7 @@ defaultValueCreator: (bindable) => ((ListItemLayout)bindable).playingStatus); public ListItemLayout(bool animationRequired = false) : base() { OnInitialize(); - AnimationRequired = animationRequired; + isAnimationRequired = animationRequired; WidthSpecification = LayoutParamPolicies.MatchParent; HeightSpecification = 108.SpToPx(); BackgroundColor = Color.Transparent; @@ -207,11 +206,11 @@ defaultValueCreator: (bindable) => ((ListItemLayout)bindable).playingStatus); { subtitleLabel.TextColor = UIColors.HEX1473E6; } - if(AnimationRequired == true && isAnimating == false) + if(isAnimationRequired && isAnimating == false) { isAnimating = AddAnimation(); } - else if(AnimationRequired == false && isPlayingStatus == false ) + else if(isAnimationRequired == false && isPlayingStatus == false ) { isPlayingStatus = AddPlayingStatus(); } @@ -219,12 +218,12 @@ defaultValueCreator: (bindable) => ((ListItemLayout)bindable).playingStatus); else { UpdateLabelColors(); - if(AnimationRequired == true && isAnimating) + if(isAnimationRequired && isAnimating) { RemoveAnimation(); isAnimating = false; } - else if(AnimationRequired == false && isPlayingStatus == true) + else if(isAnimationRequired == false && isPlayingStatus == true) { RemovePlayingStatus(); isPlayingStatus = false; diff --git a/music-player/Views/LyricsView.cs b/music-player/Views/LyricsView.cs index d9602a2..091192b 100755 --- a/music-player/Views/LyricsView.cs +++ b/music-player/Views/LyricsView.cs @@ -42,13 +42,13 @@ namespace MusicPlayer.Views AddRiveAnimation(); lyricsViewModel.TrackThumbState += OnTrackStateChanged; - // This is set to the binding after the Lyrics is added to scene graph. - // If we set the binding before view is added to scene-graph/window than binding doesn't seem to work. - AddedToWindow += OnAddedToWindow; + BindingContextChanged += OnBindingContextChanged; } - private void OnAddedToWindow(object sender, System.EventArgs e) + private void OnBindingContextChanged(object sender, System.EventArgs e) { + //Don't set BindingContext for LyricsView in this callback. this will cause a infinite recursive loop. + //Only set Binding context for children of LyricsView class thumbView.BindingContext = lyricsViewModel.lyricsModel; thumbView.SetBinding(ImageView.ResourceUrlProperty, "ThumbPath"); @@ -84,7 +84,7 @@ namespace MusicPlayer.Views thumbView.Dispose(); thumbView = null; lyricsViewModel.TrackThumbState -= OnTrackStateChanged; - AddedToWindow -= OnAddedToWindow; + BindingContextChanged -= OnBindingContextChanged; } base.Dispose(type); } diff --git a/music-player/Views/PlayerView.cs b/music-player/Views/PlayerView.cs index 7a5bfc5..582175f 100755 --- a/music-player/Views/PlayerView.cs +++ b/music-player/Views/PlayerView.cs @@ -434,6 +434,28 @@ namespace MusicPlayer.Views }; rightView.Add(controlsView); AddControlElements(); + rightView.BindingContextChanged += OnControlsViewContextChanged; + } + + private void OnControlsViewContextChanged(object sender, EventArgs e) + { + shuffleButton.BindingContext = viewModel.playingListViewModel; + shuffleButton.SetBinding(MultiStateButton.CustomStateProperty, "ShuffleButtonState"); + + prevButton.BindingContext = viewModel; + prevButton.SetBinding(IsEnabledProperty, "HasPreviousTrack"); + + playButton.BindingContext = viewModel; + playButton.SetBinding(MultiStateButton.CustomStateProperty, "PlayButtonState"); + + nextButton.BindingContext = viewModel; + nextButton.SetBinding(IsEnabledProperty, "HasNextTrack"); + + repeatButton.BindingContext = viewModel.playingListViewModel; + repeatButton.SetBinding(MultiStateButton.CustomStateProperty, "RepeatButtonState"); + + volumeSlider.BindingContext = viewModel; + volumeSlider.SetBinding(Slider.CurrentValueProperty, "VolumeLevel"); } private void AddTitleLabel() @@ -1031,6 +1053,12 @@ namespace MusicPlayer.Views { viewModel.FavouriteStatusChanged(); }; + + actionButtonView.BindingContextChanged += (object o, System.EventArgs e) => + { + favouriteButton.BindingContext = viewModel; + favouriteButton.SetBinding(MultiStateButton.CustomStateProperty, "FavouriteButtonState"); + }; } private void OnListButtonClicked(object sender, ClickedEventArgs e) diff --git a/music-player/Views/PlaylistDetailView.cs b/music-player/Views/PlaylistDetailView.cs index e2f3bd5..f542809 100755 --- a/music-player/Views/PlaylistDetailView.cs +++ b/music-player/Views/PlaylistDetailView.cs @@ -55,6 +55,11 @@ namespace MusicPlayer.Views } } + public override string GetTitleText() + { + return viewModel.PlaylistName; + } + public override void DeleteSubView() { base.DeleteSubView(); diff --git a/music-player/music-player.csproj b/music-player/music-player.csproj index f655062..960ec0a 100755 --- a/music-player/music-player.csproj +++ b/music-player/music-player.csproj @@ -19,7 +19,7 @@ - + diff --git a/packaging/org.tizen.MusicPlayer-1.0.0.tpk b/packaging/org.tizen.MusicPlayer-1.0.0.tpk index b5b20fc..ed27737 100755 Binary files a/packaging/org.tizen.MusicPlayer-1.0.0.tpk and b/packaging/org.tizen.MusicPlayer-1.0.0.tpk differ