From: aman.jeph Date: Thu, 3 Mar 2022 13:45:06 +0000 (+0530) Subject: Implemented scalable changes for Player. X-Git-Tag: submit/tizen/20220405.085546~5 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4bdf2b330ab37b36dbb8995f797fda766061434d;p=profile%2Fiot%2Fapps%2Fdotnet%2Fmusic-player.git Implemented scalable changes for Player. Fix padding and Background color issues in Views Change-Id: Ib4cd04fd2001456862e03dac1942076eb57b4171 Signed-off-by: aman.jeph --- diff --git a/music-player/ViewModels/PlayerViewModel.cs b/music-player/ViewModels/PlayerViewModel.cs index 4789dbf..dbc44c8 100755 --- a/music-player/ViewModels/PlayerViewModel.cs +++ b/music-player/ViewModels/PlayerViewModel.cs @@ -318,6 +318,19 @@ namespace MusicPlayer.ViewModels return new PlaylistSelectorViewModel(trackList); } + public void UpdateAlbumArtAnimationState() + { + PlayingStatus currentStatus = PlayingStatus; + if(currentStatus == PlayingStatus.Playing) + { + lyricsViewModel.UpdateTrackThumbState(AnimationState.AnimationPlay); + } + else + { + lyricsViewModel.UpdateTrackThumbState(AnimationState.AnimationPause); + } + } + private void UpdateCurrentPlayingTrack(Track newTrack) { playerModel.CurrentTrack = newTrack; diff --git a/music-player/Views/BaseContentView.cs b/music-player/Views/BaseContentView.cs index 9708f76..47e750f 100755 --- a/music-player/Views/BaseContentView.cs +++ b/music-player/Views/BaseContentView.cs @@ -38,7 +38,7 @@ namespace MusicPlayer.Views Layout = new LinearLayout() { LinearOrientation = LinearLayout.Orientation.Vertical, - Padding = new Extents(64, 64, 0, 0).DpToPx(), + Padding = DeviceInfo.IsPortrait ? new Extents(32, 32, 0, 0) : new Extents(64, 64, 0, 0).DpToPx(), }, }; base.Add(contentViewContainer); diff --git a/music-player/Views/BaseSubContentView.cs b/music-player/Views/BaseSubContentView.cs index 364a76a..7da21d8 100755 --- a/music-player/Views/BaseSubContentView.cs +++ b/music-player/Views/BaseSubContentView.cs @@ -35,7 +35,7 @@ namespace MusicPlayer.Views { LinearOrientation = LinearLayout.Orientation.Vertical, VerticalAlignment = VerticalAlignment.Top, - Padding = new Extents(64, 64, 0, 0).DpToPx(), + Padding = (DeviceInfo.IsPortrait ? new Extents(32, 32, 0, 0) : new Extents(64, 64, 0, 0)).DpToPx() }, BackgroundColor = Color.Transparent, WidthResizePolicy = ResizePolicyType.FillToParent, diff --git a/music-player/Views/BaseView.cs b/music-player/Views/BaseView.cs index b1fbfdf..a3b223e 100755 --- a/music-player/Views/BaseView.cs +++ b/music-player/Views/BaseView.cs @@ -45,7 +45,7 @@ namespace MusicPlayer.Views HeightSpecification = 120.DpToPx(), Layout = new RelativeLayout() { - Padding = new Extents(64, 64, 30, 30).DpToPx(), + Padding = (DeviceInfo.IsPortrait ? new Extents(32, 32, 30, 30) : new Extents(64, 64, 30, 30)).DpToPx(), }, }; base.Add(topView); diff --git a/music-player/Views/ListItemLayout.cs b/music-player/Views/ListItemLayout.cs index ae2547a..4c19bcb 100755 --- a/music-player/Views/ListItemLayout.cs +++ b/music-player/Views/ListItemLayout.cs @@ -59,7 +59,7 @@ defaultValueCreator: (bindable) => ((ListItemLayout)bindable).playingStatus); AnimationRequired = animationRequired; WidthSpecification = LayoutParamPolicies.MatchParent; HeightSpecification = height.DpToPx(); - + BackgroundColor = Color.Transparent; Layout = new RelativeLayout() { Padding = (DeviceInfo.IsPortrait ? new Extents(32, 32, 0, 0) : new Extents(64, 64, 0, 0)).DpToPx(), @@ -77,6 +77,7 @@ defaultValueCreator: (bindable) => ((ListItemLayout)bindable).playingStatus); textView = new View() { + BackgroundColor = Color.Transparent, HeightSpecification = 76.DpToPx(), Layout = new LinearLayout() { diff --git a/music-player/Views/PlayerView.cs b/music-player/Views/PlayerView.cs index deaa755..61fdf60 100755 --- a/music-player/Views/PlayerView.cs +++ b/music-player/Views/PlayerView.cs @@ -22,21 +22,25 @@ namespace MusicPlayer.Views private const int IconSize = 48; private const int TopBarSize = 120; private const int ControlViewWidth = 640; - private const int ControlViewHeight = 384; + private const int ControlViewHeightLandscape = 386; + private const int ControlViewHeightPortrait = 438; private const int ControlViewMargin = 315; private const int TitleLabelHeight = 48; private const int ArtistLabelHeight = 36; - private const int TopBarButtonsY = (TopBarSize / 2 - IconSize / 2); private View playerBackgroundView; + private View playerContentView; + private View contentView; private View leftView; private View rightView; private View rightViewBackground; + private View topView; private Button backButton; private Button moreButton; private View controlsView; private View sliderView; + private View playbackButtonsView; private MultiStateButton playButton; private Button prevButton; private Button nextButton; @@ -44,14 +48,17 @@ namespace MusicPlayer.Views private MultiStateButton repeatButton; private Slider volumeSlider; private Slider playbackSlider; + private View playbackSliderTextView; private TextLabel titleLabel; private TextLabel artistLabel; private TextLabel currentTime; private TextLabel totalTime; - + private View volumeSliderView; private ImageView leftVolumeIcon; private ImageView rightVolumeIcon; + private View topRightView; private ImageView thumb; + private View actionButtonView; private Button listButton; private Button playlistButton; private MultiStateButton favouriteButton; @@ -70,27 +77,34 @@ namespace MusicPlayer.Views StyleName = "AppBackground"; WidthResizePolicy = ResizePolicyType.FillToParent; HeightResizePolicy = ResizePolicyType.FillToParent; - AddPlayerBackground(); + AddRightViewBackground(); + playerContentView = new View() + { + BackgroundColor = Color.Transparent, + WidthSpecification = LayoutParamPolicies.MatchParent, + HeightSpecification =LayoutParamPolicies.MatchParent, + Layout = new FlexLayout() + { + Direction = FlexLayout.FlexDirection.Column, + Justification = FlexLayout.FlexJustification.FlexStart, + ItemsAlignment = FlexLayout.AlignmentType.Center, + Padding = (DeviceInfo.IsPortrait ? new Extents(32, 32, 0, 0) : new Extents(64, 64, 0, 0)).DpToPx(), + }, + }; + Add(playerContentView); viewState = PlayerViewState.AlbumArt; - leftView = CreateLeftView(); - rightView = CreateRightView(); - AddRightViewBackground(); - - AddTopButtons(); - AddControlView(); - AddControlElements(); - AddPlaybackSlider(); - AddListActionButtons(); - AddThumbnail(); - AddLyricsView(); + AddTopView(); + AddContentView(); + AddPlaybackSliderView(); TouchEvent += (object source, TouchEventArgs e) => false; } public void ShowView() { + viewModel.UpdateAlbumArtAnimationState(); Show(); } @@ -107,49 +121,94 @@ namespace MusicPlayer.Views }; WidthResizePolicy = ResizePolicyType.FillToParent; HeightResizePolicy = ResizePolicyType.FillToParent; - base.Add(playerBackgroundView); + Add(playerBackgroundView); playerBackgroundView.BackgroundColor = Color.Transparent; playerBackgroundView.BindingContext = viewModel; playerBackgroundView.SetBinding(BackgroundProperty, "PlayerBackground"); } - private View CreateLeftView() + private void AddContentView() { - View leftView = new View() + contentView = new View() { - BackgroundColor = Color.Transparent, - HeightResizePolicy = ResizePolicyType.FillToParent, - SizeWidth = Window.Instance.WindowSize.Width / 2, - Position2D = new Position2D(0, 0), + WidthSpecification = LayoutParamPolicies.MatchParent, + HeightSpecification = LayoutParamPolicies.MatchParent, + Layout = new LinearLayout() + { + LinearOrientation = DeviceInfo.IsPortrait ? LinearLayout.Orientation.Vertical : LinearLayout.Orientation.Horizontal, + HorizontalAlignment = HorizontalAlignment.Begin, + VerticalAlignment = VerticalAlignment.Top, + }, }; - base.Add(leftView); - return leftView; + playerContentView.Add(contentView); + FlexLayout.SetFlexGrow(contentView, 1); + FlexLayout.SetFlexShrink(contentView, 1); + CreateLeftView(); + CreateRightView(); } - private View CreateRightView() + private void CreateLeftView() { - View rightView = new View() + leftView = new View() { - BackgroundColor = Color.Transparent, - HeightResizePolicy = ResizePolicyType.FillToParent, - SizeWidth = Window.Instance.WindowSize.Width / 2, - Position2D = new Position2D(Window.Instance.WindowSize.Width / 2, 0), + WidthSpecification = LayoutParamPolicies.MatchParent, + HeightSpecification = LayoutParamPolicies.MatchParent, + Layout = new LinearLayout() + { + LinearOrientation = LinearLayout.Orientation.Vertical, + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Top, + }, + Weight = 0.5f, }; - base.Add(rightView); - return rightView; + contentView.Add(leftView); + if(DeviceInfo.IsPortrait) + { + AddActionButtonAndThumbnail(); + } + else + { + leftView.Layout.Padding = (new Extents(0, 64, 0, 0)).DpToPx(); + } + AddLyricsView(); } - private void AddRightViewBackground() + private void CreateRightView() { - rightViewBackground = new View() + rightView = new View() { - BackgroundColor = Color.Transparent, - SizeWidth = Window.Instance.WindowSize.Width / 2, - SizeHeight = Window.Instance.WindowSize.Height, - WidthResizePolicy = ResizePolicyType.FillToParent, - HeightResizePolicy = ResizePolicyType.FillToParent + WidthSpecification = LayoutParamPolicies.MatchParent, + HeightSpecification = LayoutParamPolicies.MatchParent, + Layout = new LinearLayout() + { + LinearOrientation = LinearLayout.Orientation.Vertical, + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Top, + }, + Weight = 0.5f, }; - rightView.Add(rightViewBackground); + contentView.Add(rightView); + if (DeviceInfo.IsPortrait == false) + { + AddActionButtonAndThumbnail(); + } + AddControlView(); + } + + private void AddRightViewBackground() + { + rightViewBackground = new View(); + if(DeviceInfo.IsPortrait) + { + rightViewBackground.Size2D = new Size2D(Window.Instance.WindowSize.Width, Window.Instance.WindowSize.Height / 2); + rightViewBackground.Position2D = new Position2D(0, 0); + } + else + { + rightViewBackground.Size2D = new Size2D(Window.Instance.WindowSize.Width / 2, Window.Instance.WindowSize.Height); + rightViewBackground.Position2D = new Position2D(Window.Instance.WindowSize.Width / 2, 0); + } + Add(rightViewBackground); rightViewBackground.BindingContext = viewModel; rightViewBackground.SetBinding(BackgroundProperty, "PlayerBackground"); rightViewBackground.Hide(); @@ -169,14 +228,25 @@ namespace MusicPlayer.Views } } - private void AddTopButtons() + private void AddTopView() { + topView = new View() + { + Layout = new RelativeLayout(), + WidthSpecification = LayoutParamPolicies.MatchParent, + HeightSpecification = 120.DpToPx(), + MaximumSize = new Size2D(Window.Instance.WindowSize.Width, (int)(Window.Instance.WindowSize.Height*0.111f)) + }; + playerContentView.Add(topView); + FlexLayout.SetFlexGrow(topView, 0); + FlexLayout.SetFlexShrink(topView, 0); backButton = new Button("BackButton") { ThemeChangeSensitive = true, - Position2D = new Position2D(LayoutPadding, TopBarButtonsY) }; - leftView.Add(backButton); + topView.Add(backButton); + RelativeLayout.SetHorizontalAlignment(backButton, RelativeLayout.Alignment.Start); + RelativeLayout.SetVerticalAlignment(backButton, RelativeLayout.Alignment.Center); backButton.Clicked += (object sender, ClickedEventArgs clickedEventArgs) => { Unparent(); @@ -186,9 +256,12 @@ namespace MusicPlayer.Views moreButton = new Button("MoreButton") { ThemeChangeSensitive = true, - Position2D = new Position2D(Window.Instance.WindowSize.Width / 2 - LayoutPadding - IconSize, TopBarButtonsY) }; - rightView.Add(moreButton); + topView.Add(moreButton); + RelativeLayout.SetLeftRelativeOffset(moreButton, 1.0f); + RelativeLayout.SetRightRelativeOffset(moreButton, 1.0f); + RelativeLayout.SetHorizontalAlignment(moreButton, RelativeLayout.Alignment.End); + RelativeLayout.SetVerticalAlignment(moreButton, RelativeLayout.Alignment.Center); moreButton.Clicked += OnMoreButtonClicked; } @@ -275,11 +348,16 @@ namespace MusicPlayer.Views { controlsView = new View() { - BackgroundColor = Color.Transparent, - Size2D = new Size2D(ControlViewWidth, ControlViewHeight), - Position2D = new Position2D((Window.Instance.WindowSize.Width / 4 - ControlViewWidth / 2), TopBarSize + ControlViewMargin), + WidthSpecification = 640.DpToPx(), + HeightSpecification = (DeviceInfo.IsPortrait ? ControlViewHeightPortrait : ControlViewHeightLandscape).DpToPx(), + Layout = new LinearLayout() + { + LinearOrientation = LinearLayout.Orientation.Vertical, + Margin = (new Extents(0, 0, 115, 0)).DpToPx(), + } }; rightView.Add(controlsView); + AddControlElements(); } private void AddTitleLabel() @@ -288,9 +366,9 @@ namespace MusicPlayer.Views { StyleName = "LabelText", ThemeChangeSensitive = true, - Size2D = new Size2D(ControlViewWidth, TitleLabelHeight), - Position2D = new Position2D(0, 0), - PixelSize = 36, + WidthSpecification = LayoutParamPolicies.MatchParent, + HeightSpecification = TitleLabelHeight.DpToPx(), + PixelSize = 36.DpToPx(), FontFamily = "BreezeSans", HorizontalAlignment = HorizontalAlignment.Center, VerticalAlignment = VerticalAlignment.Center, @@ -306,9 +384,9 @@ namespace MusicPlayer.Views { StyleName = "LabelText", ThemeChangeSensitive = true, - Size2D = new Size2D(ControlViewWidth, ArtistLabelHeight), - Position2D = new Position2D(0, 62), - PixelSize = 28, + WidthSpecification = LayoutParamPolicies.MatchParent, + HeightSpecification = ArtistLabelHeight.DpToPx(), + PixelSize = 28.DpToPx(), FontFamily = "BreezeSans", HorizontalAlignment = HorizontalAlignment.Center, VerticalAlignment = VerticalAlignment.Center, @@ -328,8 +406,8 @@ namespace MusicPlayer.Views { shuffleButton = new MultiStateButton() { - Size2D = new Size2D(IconSize, IconSize), - Position2D = new Position2D(0, 196), + Size2D = new Size2D(IconSize, IconSize).DpToPx(), + Margin = new Extents(0, 40, 0, 0).DpToPx(), IconResources = new Dictionary>() { { @@ -381,14 +459,13 @@ namespace MusicPlayer.Views { viewModel.ShuffleChanged(); }; - controlsView.Add(shuffleButton); + playbackButtonsView.Add(shuffleButton); } private void AddPreviousButton() { prevButton = new Button("PrevButton") { - Position2D = new Position2D(168, 196), ThemeChangeSensitive = true }; // TODO need to implement command instead @@ -398,15 +475,14 @@ namespace MusicPlayer.Views }; prevButton.BindingContext = viewModel; prevButton.SetBinding(Button.IsEnabledProperty, "HasPreviousTrack"); - controlsView.Add(prevButton); + playbackButtonsView.Add(prevButton); } private void AddPlayButton() { playButton = new MultiStateButton() { - Size2D = new Size2D(IconSize, IconSize), - Position2D = new Position2D(296, 196), + Size2D = new Size2D(IconSize, IconSize).DpToPx(), BackgroundColor = Color.Transparent, IconResources = new Dictionary>() { @@ -462,7 +538,7 @@ namespace MusicPlayer.Views }; playButton.BindingContext = viewModel; playButton.SetBinding(MultiStateButton.CustomStateProperty, "PlayButtonState"); - controlsView.Add(playButton); + playbackButtonsView.Add(playButton); // TODO need to implement command instead playButton.Clicked += (object sender, ClickedEventArgs e) => { @@ -474,7 +550,6 @@ namespace MusicPlayer.Views { nextButton = new Button("NextButton") { - Position2D = new Position2D(424, 196), ThemeChangeSensitive = true }; // TODO need to implement command instead @@ -484,15 +559,15 @@ namespace MusicPlayer.Views }; nextButton.BindingContext = viewModel; nextButton.SetBinding(Button.IsEnabledProperty, "HasNextTrack"); - controlsView.Add(nextButton); + playbackButtonsView.Add(nextButton); } private void AddRepeatButton() { repeatButton = new MultiStateButton() { - Size2D = new Size2D(IconSize, IconSize), - Position2D = new Position2D(592, 196), + Size2D = new Size2D(IconSize, IconSize).DpToPx(), + Margin = new Extents(40, 0, 0, 0).DpToPx(), IconResources = new Dictionary>() { { @@ -553,7 +628,7 @@ namespace MusicPlayer.Views }; repeatButton.BindingContext = viewModel.playingListViewModel; repeatButton.SetBinding(MultiStateButton.CustomStateProperty, "RepeatButtonState"); - controlsView.Add(repeatButton); + playbackButtonsView.Add(repeatButton); // TODO need to implement command instead repeatButton.Clicked += (object sender, ClickedEventArgs e) => { @@ -563,6 +638,20 @@ namespace MusicPlayer.Views private void AddButtonControlElements() { + playbackButtonsView = new View() + { + WidthSpecification = LayoutParamPolicies.MatchParent, + HeightSpecification = 48.DpToPx(), + Layout = new LinearLayout() + { + LinearOrientation = LinearLayout.Orientation.Horizontal, + HorizontalAlignment = HorizontalAlignment.Begin, + VerticalAlignment = VerticalAlignment.Center, + Margin = (DeviceInfo.IsPortrait ? new Extents(0, 0, 140, 104) : new Extents(0, 0, 100, 92)).DpToPx(), + CellPadding = new Size2D(80, 0).DpToPx(), + }, + }; + controlsView.Add(playbackButtonsView); AddShuffleButton(); AddPreviousButton(); AddPlayButton(); @@ -577,7 +666,7 @@ namespace MusicPlayer.Views ThemeChangeSensitive = true, StyleName = "LeftVolume", }; - controlsView.Add(leftVolumeIcon); + volumeSliderView.Add(leftVolumeIcon); } private void AddRightVolumeIcon() @@ -587,7 +676,7 @@ namespace MusicPlayer.Views ThemeChangeSensitive = true, StyleName = "RightVolume", }; - controlsView.Add(rightVolumeIcon); + volumeSliderView.Add(rightVolumeIcon); } private void AddVolumeSliderEventHandlers() @@ -611,15 +700,14 @@ namespace MusicPlayer.Views volumeSlider = new Slider("Slider") { ThemeChangeSensitive = true, - Size2D = new Size2D(496, 48), - Position2D = new Position2D(72, 336), - ThumbSize = new Tizen.NUI.Size(36, 36), + Size2D = new Size2D(496, 48).DpToPx(), + ThumbSize = new Tizen.NUI.Size(36, 36).DpToPx(), Direction = Slider.DirectionType.Horizontal, MinValue = 0, MaxValue = AudioManager.VolumeController.MaxLevel[AudioVolumeType.Media], CurrentValue = AudioManager.VolumeController.Level[AudioVolumeType.Media] }; - controlsView.Add(volumeSlider); + volumeSliderView.Add(volumeSlider); volumeSlider.BindingContext = viewModel; volumeSlider.SetBinding(Slider.CurrentValueProperty, "VolumeLevel"); AddVolumeSliderEventHandlers(); @@ -627,9 +715,22 @@ namespace MusicPlayer.Views private void AddVolumeSliderElements() { + volumeSliderView = new View() + { + WidthSpecification = LayoutParamPolicies.MatchParent, + HeightSpecification = 48.DpToPx(), + Layout = new LinearLayout() + { + CellPadding = (new Size2D(24, 0)).DpToPx(), + LinearOrientation = LinearLayout.Orientation.Horizontal, + HorizontalAlignment = HorizontalAlignment.Begin, + VerticalAlignment = VerticalAlignment.Center, + }, + }; + controlsView.Add(volumeSliderView); AddLeftVolumeIcon(); - AddRightVolumeIcon(); AddVolumeSlider(); + AddRightVolumeIcon(); } private void AddControlElements() @@ -655,16 +756,16 @@ namespace MusicPlayer.Views }; } - private void AddPlaybackSlider(View sliderView) + private void AddPlaybackSlider() { playbackSlider = new Slider("Slider") { ThemeChangeSensitive = true, MinValue = 0.0f, MaxValue = 1.0f, - WidthResizePolicy = ResizePolicyType.FillToParent, - SizeHeight = 44, - ThumbSize = new Tizen.NUI.Size(36, 36), + WidthSpecification = LayoutParamPolicies.MatchParent, + HeightSpecification = 44.DpToPx(), + ThumbSize = new Tizen.NUI.Size(36, 36).DpToPx(), Direction = Slider.DirectionType.Horizontal, }; playbackSlider.SetBinding(Slider.CurrentValueProperty, "ElapsedTime"); @@ -672,113 +773,134 @@ namespace MusicPlayer.Views AddPlaybackSliderEventHandler(); } - private void AddCurrentTimeLabel(View sliderView) + private void AddCurrentTimeLabel() { currentTime = new TextLabel() { StyleName = "LabelText", ThemeChangeSensitive = true, - Size2D = new Size2D(400, 32), - Position2D = new Position2D(0, 48), - PixelSize = 24, + Size2D = new Size2D(400, 32).DpToPx(), + PixelSize = 24.DpToPx(), FontFamily = "BreezeSans", Text = "00::00:00", HorizontalAlignment = HorizontalAlignment.Begin, }; currentTime.SetBinding(TextLabel.TextProperty, "PlayingTime"); - sliderView.Add(currentTime); + playbackSliderTextView.Add(currentTime); + RelativeLayout.SetHorizontalAlignment(currentTime, RelativeLayout.Alignment.Start); + RelativeLayout.SetLeftRelativeOffset(currentTime, 0.0f); } - private void AddTotalTimeLabel(View sliderView) + private void AddTotalTimeLabel() { totalTime = new TextLabel() { StyleName = "LabelText", ThemeChangeSensitive = true, - Size2D = new Size2D(400, 32), - Position2D = new Position2D(1792 - 400, 48), - PixelSize = 24, + Size2D = new Size2D(400, 32).DpToPx(), + PixelSize = 24.DpToPx(), FontFamily = "BreezeSans", HorizontalAlignment = HorizontalAlignment.End, Text = "59:59:59", }; totalTime.SetBinding(TextLabel.TextProperty, "TrackLength"); - sliderView.Add(totalTime); + playbackSliderTextView.Add(totalTime); + RelativeLayout.SetHorizontalAlignment(totalTime, RelativeLayout.Alignment.End); + RelativeLayout.SetRightRelativeOffset(totalTime, 1.0f); } - private void AddPlaybackSlider() + private void AddPlaybackSliderView() { sliderView = new View() { - Size2D = new Size2D(1792, 80), - Position2D = new Position2D(64, 950), - BackgroundColor = Color.Transparent, + WidthSpecification = LayoutParamPolicies.MatchParent, + HeightSpecification = 84.DpToPx(), + Layout = new LinearLayout() + { + LinearOrientation = LinearLayout.Orientation.Vertical, + HorizontalAlignment = HorizontalAlignment.Begin, + VerticalAlignment = VerticalAlignment.Center, + }, }; - Add(sliderView); + playerContentView.Add(sliderView); + FlexLayout.SetFlexShrink(sliderView, 0); + FlexLayout.SetFlexGrow(sliderView, 0); + AddPlaybackSlider(); + AddPlaybackSliderTextLabel(); + } - AddPlaybackSlider(sliderView); - AddCurrentTimeLabel(sliderView); - AddTotalTimeLabel(sliderView); - UpdatePlaybackSliderPosition(viewState); + private void AddPlaybackSliderTextLabel() + { + playbackSliderTextView = new View() + { + WidthSpecification = LayoutParamPolicies.MatchParent, + HeightSpecification = 32.DpToPx(), + Layout = new RelativeLayout() + { + Margin = (new Extents(0, 0, 8, 0)).DpToPx(), + }, + }; + sliderView.Add(playbackSliderTextView); + AddCurrentTimeLabel(); + AddTotalTimeLabel(); } - private void UpdatePlaybackSliderPosition(PlayerViewState state) + private void UpdateActionButtonView() { - if(state == PlayerViewState.AlbumArt) + topRightView.Remove(actionButtonView); + topRightView.Remove(thumb); + if (DeviceInfo.IsPortrait && viewState == PlayerViewState.AlbumArt) { - sliderView.Size2D = new Size2D(1792, 80); - sliderView.Position2D = new Position2D(64, 950); - currentTime.Size2D = new Size2D(400, 32); - currentTime.Position2D = new Position2D(0, 48); - totalTime.Size2D = new Size2D(400, 32); - totalTime.Position2D = new Position2D(1392, 48); + topRightView.Margin = new Extents(0, 0, 0, 24).DpToPx(); + leftView.Add(topRightView); + topRightView.HeightSpecification = 48.DpToPx(); + AddListActionButtons(); } else { - sliderView.Size2D = new Size2D(640, 80); - sliderView.Position2D = new Position2D(1120, 950); - currentTime.Size2D = new Size2D(180, 32); - currentTime.Position2D = new Position2D(0, 48); - totalTime.Size2D = new Size2D(180, 32); - totalTime.Position2D = new Position2D(460, 48); + rightView.Add(topRightView); + topRightView.HeightSpecification = 200.DpToPx(); + AddThumbnail(); + AddListActionButtons(); } } + private void AddActionButtonAndThumbnail() + { + topRightView = new View() + { + WidthSpecification = LayoutParamPolicies.MatchParent, + Layout = new LinearLayout() + { + LinearOrientation = LinearLayout.Orientation.Horizontal, + HorizontalAlignment = HorizontalAlignment.End, + VerticalAlignment = VerticalAlignment.Top, + CellPadding = new Size2D(92, 0).DpToPx(), + }, + }; + UpdateActionButtonView(); + } + private void AddListActionButtons() { - View actionButtonView = new View() + actionButtonView = new View() { - Size2D = new Size2D(224, 48), - Position2D = new Position2D((Window.Instance.WindowSize.Width / 2 - 224 - LayoutPadding), 120), + WidthSpecification = 224.DpToPx(), + HeightSpecification = 48.DpToPx(), + Layout = new LinearLayout() + { + LinearOrientation = LinearLayout.Orientation.Horizontal, + CellPadding = new Size2D(40, 0).DpToPx(), + }, BackgroundColor = Color.Transparent, }; - rightView.Add(actionButtonView); + topRightView.Add(actionButtonView); listButton = new Button("ListButton") { ThemeChangeSensitive = true, }; - listButton.Clicked += (object sender, ClickedEventArgs e) => - { - if(viewState == PlayerViewState.AlbumArt) - { - Tizen.Log.Debug(AppConstants.LogTag, "Adding Playing list view"); - viewState = PlayerViewState.TrackList; - RemoveLyricsView(); - AddPlayingListView(); - thumb.Show(); - } - else - { - Tizen.Log.Debug(AppConstants.LogTag, "Adding album art view"); - viewState = PlayerViewState.AlbumArt; - RemovePlayingListView(); - AddLyricsView(); - thumb.Hide(); - } - UpdatePlaybackSliderPosition(viewState); - UpdatePlayerViewBackground(viewState); - }; + listButton.Clicked += OnListButtonClicked; actionButtonView.Add(listButton); playlistButton = new Button("PlaylistButton") @@ -793,8 +915,7 @@ namespace MusicPlayer.Views favouriteButton = new MultiStateButton() { - Size2D = new Size2D(IconSize, IconSize), - Position2D = new Position2D(176, 0), + Size2D = new Size2D(IconSize, IconSize).DpToPx(), IconResources = new Dictionary>() { { @@ -848,6 +969,66 @@ namespace MusicPlayer.Views }; } + private void OnListButtonClicked(object sender, ClickedEventArgs e) + { + if (viewState == PlayerViewState.AlbumArt) + { + Tizen.Log.Debug(AppConstants.LogTag, "Adding Playing list view"); + viewState = PlayerViewState.TrackList; + RemoveLyricsView(); + playerContentView.Remove(sliderView); + if (DeviceInfo.IsPortrait) + { + sliderView.Margin = new Extents(32, 32, 0, 0).DpToPx(); + rightView.Remove(controlsView); + contentView.Remove(rightView); + contentView.Remove(leftView); + contentView.Add(rightView); + contentView.Add(leftView); + UpdateActionButtonView(); + controlsView.Margin = new Extents(0, 0, 40, 0).DpToPx(); + rightView.Add(controlsView); + } + else + { + leftView.Padding = new Extents(0, 64, 0, 64).DpToPx(); + sliderView.Margin = new Extents(0, 0, 84, 0).DpToPx(); + sliderView.WidthSpecification = 640.DpToPx(); + } + rightView.Add(sliderView); + AddPlayingListView(); + thumb.Show(); + } + else + { + Tizen.Log.Debug(AppConstants.LogTag, "Adding album art view"); + viewState = PlayerViewState.AlbumArt; + RemovePlayingListView(); + thumb.Hide(); + rightView.Remove(sliderView); + if (DeviceInfo.IsPortrait) + { + controlsView.Margin = new Extents(0, 0, 115, 0).DpToPx(); + sliderView.Margin = new Extents(0, 0, 0, 0).DpToPx(); + contentView.Remove(leftView); + contentView.Remove(rightView); + contentView.Add(leftView); + contentView.Add(rightView); + UpdateActionButtonView(); + } + else + { + leftView.Padding = new Extents(0, 64, 0, 0).DpToPx(); + sliderView.Margin = new Extents(0, 0, 0, 0).DpToPx(); + sliderView.WidthSpecification = LayoutParamPolicies.MatchParent; + } + playerContentView.Add(sliderView); + AddLyricsView(); + } + //UpdatePlaybackSliderPosition(viewState); + UpdatePlayerViewBackground(viewState); + } + private void OnPlaylistAdd() { if(isPlaylistAddViewCreated) @@ -874,22 +1055,23 @@ namespace MusicPlayer.Views thumb = new ImageView() { BackgroundColor = Color.Cyan, - Size2D = new Size2D(200, 200), - Position2D = new Position2D(380, 120), + Size2D = new Size2D(200, 200).DpToPx(), BoxShadow = new Shadow(6.0f, Color.Black, new Vector2(0, 3)), }; thumb.SetBinding(ImageView.ResourceUrlProperty, "ThumbnailPath"); - rightView.Add(thumb); + topRightView.Add(thumb); thumb.Hide(); } private void AddPlayingListView() { if (currentListView == null) + { currentListView = new PlayingListView(viewModel.CurrentPlayingListViewModel); + } - currentListView.Size2D = new Size2D(832, 900); - currentListView.Position2D = new Position2D(64, 108); + currentListView.WidthSpecification = LayoutParamPolicies.MatchParent; + currentListView.HeightSpecification = LayoutParamPolicies.MatchParent; leftView.Add(currentListView); currentListView.Show(); } @@ -912,8 +1094,6 @@ namespace MusicPlayer.Views lyricsView = new LyricsView(viewModel.lyricsViewModel); } - lyricsView.Size2D = new Size2D(784, 784); - lyricsView.Position2D = new Position2D(88, 120); leftView.Add(lyricsView); lyricsView.Show(); } diff --git a/packaging/org.tizen.MusicPlayer-1.0.0.tpk b/packaging/org.tizen.MusicPlayer-1.0.0.tpk index a4f7c26..d00fe57 100755 Binary files a/packaging/org.tizen.MusicPlayer-1.0.0.tpk and b/packaging/org.tizen.MusicPlayer-1.0.0.tpk differ