From 16ff2f652c809310b48bb9c7825162e4f7f660c5 Mon Sep 17 00:00:00 2001 From: Hyerim Kim Date: Tue, 25 Apr 2017 19:32:36 +0900 Subject: [PATCH] Implements Apps according to UI/GUI guideline v0.51 - Add Header Area : Additional Information - Changes resource when apps list icon is selected. Change-Id: Ida1e066d803906f8c4eff76adaafe9f034b8ddd1 Signed-off-by: Hyerim Kim --- TVApps/TVApps/Controls/AppItemCell.xaml | 14 +++--- TVApps/TVApps/Controls/AppItemCell.xaml.cs | 41 +++++++++------- TVApps/TVApps/ViewModels/AppsHolder.cs | 8 ++- TVApps/TVApps/ViewModels/MainPageViewModel.cs | 33 +++++++++++++ TVApps/TVApps/Views/MainPage.xaml | 54 ++++++++++----------- TVApps/TVApps/Views/MainPage.xaml.cs | 54 +++++++++++++++++++-- TVHome/TVHome.TizenTV/TVHome.TizenTV.csproj | 1 + TVHome/TVHome.TizenTV/res/img_apps_list_stroke.png | Bin 0 -> 5182 bytes 8 files changed, 147 insertions(+), 58 deletions(-) mode change 100644 => 100755 TVApps/TVApps/ViewModels/AppsHolder.cs create mode 100755 TVHome/TVHome.TizenTV/res/img_apps_list_stroke.png diff --git a/TVApps/TVApps/Controls/AppItemCell.xaml b/TVApps/TVApps/Controls/AppItemCell.xaml index 9c55546..d89ffdb 100755 --- a/TVApps/TVApps/Controls/AppItemCell.xaml +++ b/TVApps/TVApps/Controls/AppItemCell.xaml @@ -16,15 +16,15 @@ RelativeLayout.WidthConstraint="{ConstraintExpression Type=RelativeToView, ElementName=ButtonImage, Property=Width, Factor=1}" RelativeLayout.YConstraint="{ConstraintExpression Type=RelativeToParent, Property=Height, Factor=0.2923}" RelativeLayout.XConstraint="{ConstraintExpression Type=RelativeToParent, Property=Width, Factor=0.1583}" - Source="img_tizen_apps_list_dimmed_check.png" + Source="img_apps_list_dimmed_check.png" Opacity="0" Scale="0" /> - + /// 19 px height size + /// + private int height19 = SizeUtils.GetHeightSize(19); + + /// /// 28 px height size /// private int height28 = SizeUtils.GetHeightSize(28); @@ -188,15 +193,16 @@ namespace TVApps.Controls { ButtonImage.ScaleTo(1.32, 150); TextArea.TranslateTo(0.0, height28, 150); - CheckImage.FadeTo((IsChecked) ? 0.99 : 0.0, 150); + StrokeImage.FadeTo((IsChecked) ? 0.99 : 0.0, 150); DimImage.FadeTo((IsChecked) ? 0.99 : 0.0, 150); DimImage.TranslateTo(0.0, (IsChecked) ? height2 : 0.0, 150); + StrokeImage.ScaleTo((IsChecked) ? 1.34 : 0.0, 300); DimImage.ScaleTo((IsChecked) ? 1.34 : 0.0, 300); }); } else { - CheckImage.FadeTo((IsChecked) ? 0.99 : 0.0, 300); + StrokeImage.FadeTo((IsChecked) ? 0.99 : 0.0, 300); DimImage.FadeTo((IsChecked) ? 0.99 : 0.0, 300); DimImage.TranslateTo(0.0, (IsChecked) ? height2 : 0.0, 300); DimImage.ScaleTo((IsChecked) ? 1.34 : 0.0, 300); @@ -221,9 +227,9 @@ namespace TVApps.Controls /// IconSize for change scale and position public void ChangeIconSize(IconSize size) { - ButtonImage.ScaleTo((size == IconSize.Normal) ? 1.0 : 1.32, 50); - ButtonImage.TranslateTo(0.0, (size == IconSize.Normal) ? 0.0 : height2, 100); - TextArea.TranslateTo(0.0, (size == IconSize.Normal) ? 0.0 : height28, 50); + ButtonImage.ScaleTo((size == IconSize.Normal) ? 1.0 : 1.32, 167); + ButtonImage.TranslateTo(0.0, (size == IconSize.Normal) ? 0.0 : height2, 167); + TextArea.TranslateTo(0.0, (size == IconSize.Normal) ? 0.0 : height19, 167); } /// @@ -232,10 +238,11 @@ namespace TVApps.Controls /// A flag indicates whether the option menu should be showed or not public void ShowOptionMenu(bool isShow) { - ButtonImage.TranslateTo(0, (isShow) ? -height90 : 0, 100); - TextArea.TranslateTo(0, (isShow) ? -height90 : 0, 100); + ButtonImage.ScaleTo((isShow) ? 1 : 1.32, 167); + ButtonImage.TranslateTo(0, (isShow) ? -height90 : 0, 334); + TextArea.TranslateTo(0, (isShow) ? -height19 : height19, 167); TextArea.FadeTo((isShow) ? 0.0 : 0.99, 100); - OptionMenuArea.TranslateTo(0, (isShow) ? -height144 : 0, 100); + OptionMenuArea.TranslateTo(0, (isShow) ? -height144 : 0, 334); OptionMenuPinToggleButton.IsEnabled = (isShow) ? true : false; OptionMenuDeleteButton.IsEnabled = (isShow) ? true : false; } @@ -275,16 +282,16 @@ namespace TVApps.Controls OnFocusedCommand?.Execute(""); - if (!IsShowOptions) + if (IsChecked) { - ChangeIconSize(IconSize.Focused); + DimImage.ScaleTo(1.34, 167); + StrokeImage.ScaleTo(1.34, 167); + DimImage.TranslateTo(0.0, height2, 167); } - if (IsChecked) + if (!IsShowOptions) { - DimImage.ScaleTo(1.34, 300); - DimImage.TranslateTo(0.0, height2, 300); - CheckImage.TranslateTo(0.0, height2, 300); + ChangeIconSize(IconSize.Focused); } } @@ -305,9 +312,9 @@ namespace TVApps.Controls if (IsChecked) { - DimImage.ScaleTo(1.1, 300); - DimImage.TranslateTo(0.0, 0.0, 300); - CheckImage.TranslateTo(0.0, 0.0, 300); + DimImage.ScaleTo(1.1, 167); + DimImage.TranslateTo(0.0, 0.0, 167); + StrokeImage.ScaleTo(1.1, 167); } } } diff --git a/TVApps/TVApps/ViewModels/AppsHolder.cs b/TVApps/TVApps/ViewModels/AppsHolder.cs old mode 100644 new mode 100755 index 8858546..1e16964 --- a/TVApps/TVApps/ViewModels/AppsHolder.cs +++ b/TVApps/TVApps/ViewModels/AppsHolder.cs @@ -51,6 +51,9 @@ namespace TVApps.ViewModels /// public Dictionary PinnedApps; + public string PinnedAppName; + public string UnpinnedAppName; + /// /// A constructor /// Initializes installed and pinned app list @@ -178,6 +181,8 @@ namespace TVApps.ViewModels selectedApp.IsChecked = false; selectedApp.IsPinned = false; PinnedApps.Remove(appID); + UnpinnedAppName = selectedApp.CurrentStateDescription.Label; + ViewModel.OnPropertyChanged("UnpinnedAppName"); } else { @@ -185,6 +190,8 @@ namespace TVApps.ViewModels selectedApp.IsChecked = true; selectedApp.IsPinned = true; PinnedApps.Add(appID, appID); + PinnedAppName = selectedApp.CurrentStateDescription.Label; + ViewModel.OnPropertyChanged("PinnedAppName"); } UpdatePinnedApps(); @@ -414,7 +421,6 @@ namespace TVApps.ViewModels List pinnedAppList = new List(); foreach (var item in PinnedApps) { - DebuggingUtils.Dbg("Pinned App : " + item.Key); pinnedAppList.Add(new AppShortcutInfo() { AppID = item.Key, diff --git a/TVApps/TVApps/ViewModels/MainPageViewModel.cs b/TVApps/TVApps/ViewModels/MainPageViewModel.cs index 163bd59..050cf62 100755 --- a/TVApps/TVApps/ViewModels/MainPageViewModel.cs +++ b/TVApps/TVApps/ViewModels/MainPageViewModel.cs @@ -96,6 +96,22 @@ namespace TVApps.ViewModels set; } + public string PinnedAppName + { + get + { + return appsHolder.PinnedAppName; + } + } + + public string UnpinnedAppName + { + get + { + return appsHolder.UnpinnedAppName; + } + } + /// /// A command will be executed if the cancel button in FooterDeleteStatus is clicked /// @@ -154,8 +170,14 @@ namespace TVApps.ViewModels } } + /// + /// Additional info font size + /// int addtionalInfoTextSize; + /// + /// Additional info font size + /// public int AddtionalInfoTextSize { get @@ -170,6 +192,17 @@ namespace TVApps.ViewModels } /// + /// Additional info layout's spacing size + /// + public int AdditionalInfoSpacing + { + get + { + return SizeUtils.GetWidthSize(12); + } + } + + /// /// Regular text font size /// int regularFontSize; diff --git a/TVApps/TVApps/Views/MainPage.xaml b/TVApps/TVApps/Views/MainPage.xaml index 6f940f2..b191d31 100755 --- a/TVApps/TVApps/Views/MainPage.xaml +++ b/TVApps/TVApps/Views/MainPage.xaml @@ -11,7 +11,9 @@ IsPinAppRequested="{Binding IsPinAppRequested}" DeletePopupAppLabel="{Binding DeletePopupAppLabel}" DeletePopupCommand="{Binding DeletePopupCommand}" - SumOfCheckedApp="{Binding SumOfCheckedApp}"> + SumOfCheckedApp="{Binding SumOfCheckedApp}" + PinnedAppName="{Binding PinnedAppName}" + UnpinnedAppName="{Binding UnpinnedAppName}"> @@ -74,34 +76,28 @@ Text="APPS" x:Name="TitleLabel"/> - - - - - - - - - - - - - - - - + + diff --git a/TVApps/TVApps/Views/MainPage.xaml.cs b/TVApps/TVApps/Views/MainPage.xaml.cs index 0fa0ccb..ad1693a 100755 --- a/TVApps/TVApps/Views/MainPage.xaml.cs +++ b/TVApps/TVApps/Views/MainPage.xaml.cs @@ -39,6 +39,7 @@ namespace TVApps.Views private DropdownList sortList; private Button doneButton; private Button cancelButton; + private static int pinnedAppCount = 0; /// /// SubPanel icon's transition height value when it focused. @@ -129,8 +130,35 @@ namespace TVApps.Views set { SetValue(SumOfCheckedAppProperty, value); } } + /// + /// Identifies the PinnedAppName bindable property + /// + public static readonly BindableProperty PinnedAppNameProperty = BindableProperty.Create("PinnedAppName", typeof(string), typeof(MainPage), ""); - private async void PlayHideAnimation() + /// + /// Gets or sets name of pinned app + /// + public string PinnedAppName + { + get { return (string)GetValue(PinnedAppNameProperty); } + set { SetValue(PinnedAppNameProperty, value); } + } + + /// + /// Identifies the PinnedAppName bindable property + /// + public static readonly BindableProperty UnpinnedAppNameProperty = BindableProperty.Create("UnpinnedAppName", typeof(string), typeof(MainPage), ""); + + /// + /// Gets or sets name of unpinned app + /// + public string UnpinnedAppName + { + get { return (string)GetValue(UnpinnedAppNameProperty); } + set { SetValue(UnpinnedAppNameProperty, value); } + } + + private void PlayHideAnimation() { var animation = new Animation(); var headerAnimation = new Animation(v => Header.Opacity = v, 1, 0); @@ -164,7 +192,8 @@ namespace TVApps.Views BackKeyInfoImage.HeightRequest = backKeyImageSize; BackKeyInfo.FontSize = SizeUtils.GetFontSize(28); BackKeyInfo.Margin = new Thickness(SizeUtils.GetWidthSize(6), 0, 0, 0); - + AdditionalInfoText1.FontSize = SizeUtils.GetFontSize(32); + AdditionalInfoText2.FontSize = SizeUtils.GetFontSize(32); PropertyChanged += MainPagePropertyChanged; SetCurrentStatus(AppsStatus.Default); @@ -200,6 +229,8 @@ namespace TVApps.Views await Task.Delay(1); AppList.InitializeFocus(); MakeFocusChaining(); + + pinnedAppCount = SumOfCheckedApp; } private void MakeFocusChaining() @@ -423,8 +454,23 @@ namespace TVApps.Views } else if (e.PropertyName.Equals("SumOfCheckedApp")) { - AdditionalInfoText1.Text = SumOfCheckedApp.ToString() + " Apps"; - AdditionalInfoText2.Text = "Checked"; + if (CurrentStatus == AppsStatus.Pin) + { + AddtionalInfo.IsVisible = true; + TitleLabel.IsVisible = false; + if (pinnedAppCount > SumOfCheckedApp) + { + AdditionalInfoText1.Text = UnpinnedAppName; + AdditionalInfoText2.Text = "Unpinned"; + } + else + { + AdditionalInfoText1.Text = PinnedAppName; + AdditionalInfoText2.Text = "Pinned"; + } + + pinnedAppCount = SumOfCheckedApp; + } } } diff --git a/TVHome/TVHome.TizenTV/TVHome.TizenTV.csproj b/TVHome/TVHome.TizenTV/TVHome.TizenTV.csproj index a1e47b9..29ffaa2 100755 --- a/TVHome/TVHome.TizenTV/TVHome.TizenTV.csproj +++ b/TVHome/TVHome.TizenTV/TVHome.TizenTV.csproj @@ -132,6 +132,7 @@ + diff --git a/TVHome/TVHome.TizenTV/res/img_apps_list_stroke.png b/TVHome/TVHome.TizenTV/res/img_apps_list_stroke.png new file mode 100755 index 0000000000000000000000000000000000000000..8730c813c3bb44849d6701ecbcb87ec50d425de8 GIT binary patch literal 5182 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 j_r36H`gZnv;0_-3!A