Implemented scalable changes for Player. 49/271949/2
authoraman.jeph <aman.jeph@samsung.com>
Thu, 3 Mar 2022 13:45:06 +0000 (19:15 +0530)
committeraman.jeph <aman.jeph@samsung.com>
Mon, 7 Mar 2022 11:37:41 +0000 (17:07 +0530)
Fix padding and Background color issues in Views

Change-Id: Ib4cd04fd2001456862e03dac1942076eb57b4171
Signed-off-by: aman.jeph <aman.jeph@samsung.com>
music-player/ViewModels/PlayerViewModel.cs
music-player/Views/BaseContentView.cs
music-player/Views/BaseSubContentView.cs
music-player/Views/BaseView.cs
music-player/Views/ListItemLayout.cs
music-player/Views/PlayerView.cs
packaging/org.tizen.MusicPlayer-1.0.0.tpk

index 4789dbf8eaef2c220de38f54ce1c232bc6189b6e..dbc44c8a9d41215838f2f58eaa1c9c80c3b74737 100755 (executable)
@@ -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;
index 9708f76d7fd3ef874ceaeb7c4ef20941ebf94e8a..47e750fc34e6f0ebab50eaf0e19b52ff5d4ae69b 100755 (executable)
@@ -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);
index 364a76a3c5e59c4c85e5736979083810b1e16a3c..7da21d8a5db0260499be844016a8c75e18198b5d 100755 (executable)
@@ -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,
index b1fbfdfa93edc5b5c4013a50bee36bace8fbe1f5..a3b223e7910f1f2a83bd38e3b535e6a17a2bedd0 100755 (executable)
@@ -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);
index ae2547a5030a1f84dfae214b084ed7f651327410..4c19bcb12f4dec980c4797facc89a6c967e741ed 100755 (executable)
@@ -59,7 +59,7 @@ defaultValueCreator: (bindable) => ((ListItemLayout)bindable).playingStatus);
             AnimationRequired = animationRequired;\r
             WidthSpecification = LayoutParamPolicies.MatchParent;\r
             HeightSpecification = height.DpToPx();\r
-\r
+            BackgroundColor = Color.Transparent;\r
             Layout = new RelativeLayout()\r
             {\r
                 Padding = (DeviceInfo.IsPortrait ? new Extents(32, 32, 0, 0) : new Extents(64, 64, 0, 0)).DpToPx(),\r
@@ -77,6 +77,7 @@ defaultValueCreator: (bindable) => ((ListItemLayout)bindable).playingStatus);
 \r
             textView = new View()\r
             {\r
+                BackgroundColor = Color.Transparent,\r
                 HeightSpecification = 76.DpToPx(),\r
                 Layout = new LinearLayout()\r
                 {\r
index deaa755ec138e467c720935c7873ca3919eab2b7..61fdf606583f09957836f8b72c2b41f885c2099e 100755 (executable)
@@ -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<ThemeType, Dictionary<string, StringSelector>>()
                 {
                     {
@@ -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<ThemeType, Dictionary<string, StringSelector>>()
                 {
@@ -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<ThemeType, Dictionary<string, StringSelector>>()
                 {
                     {
@@ -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<ThemeType, Dictionary<string, StringSelector>>()
                 {
                     {
@@ -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();
         }
index a4f7c26dcfd0095a44d0c948743d5a688d110c97..d00fe57635dc88a4c9fed822f56810747760eff6 100755 (executable)
Binary files a/packaging/org.tizen.MusicPlayer-1.0.0.tpk and b/packaging/org.tizen.MusicPlayer-1.0.0.tpk differ