/// <summary> /// First screen demo Application initialisation /// </summary> private void OnInitialize() { Tizen.Log.Debug("NUI", "OnInitialize() is called!"); _hideScrollContainer = null; _stage = Window.Instance; _stageSize = _stage.Size; _totalPostersContainers = Constants.TotalPostersContainers; _imagePath = Constants.ImageResourcePath; _postersContainer = new List <ScrollContainer>(); _menuContainer = new ScrollContainer(); _hideBottomContainerAnimation = new Animation(250); _showBottomContainerAnimation = new Animation(250); // Create a Top Container for poster items _topContainer = new View(); _topContainer.Size2D = new Vector2(_stageSize.Width, _stageSize.Height * Constants.TopContainerHeightFactor); _topContainer.Position = new Position(0.0f, _stageSize.Height * Constants.TopContainerPositionFactor - 80, 0.0f); _topContainer.ParentOrigin = ParentOrigin.TopLeft; _topContainer.PivotPoint = PivotPoint.TopLeft; _topContainer.PositionUsesPivotPoint = true; // Add a background to Top container PropertyMap visual = new PropertyMap(); visual.Insert(Visual.Property.Type, new PropertyValue((int)Visual.Type.Image)); visual.Insert(ImageVisualProperty.URL, new PropertyValue(_imagePath + "/focuseffect/background.png")); _topContainer.Background = visual; _topContainer.Name = "TopControl"; // Create a Bottom Container _bottomContainer = new View(); _bottomContainer.Size2D = new Vector2(_stageSize.Width, _stageSize.Height * Constants.BottomContainerHeightFactor); _bottomContainer.Position = new Position(0.0f, _stageSize.Height * Constants.BottomContainerHidePositionFactor, 0.0f); _bottomContainer.ParentOrigin = ParentOrigin.TopLeft; _bottomContainer.PivotPoint = PivotPoint.TopLeft; _bottomContainer.PositionUsesPivotPoint = true; // Add a background to Bottom Container visual = new PropertyMap(); visual.Insert(Visual.Property.Type, new PropertyValue((int)Visual.Type.Image)); visual.Insert(ImageVisualProperty.URL, new PropertyValue(_imagePath + "/focuseffect/background.png")); _bottomContainer.Background = visual; _bottomContainer.Name = "BottomControl"; // Add both Top and Bottom Containers to Stage _stage.GetDefaultLayer().Add(_topContainer); _stage.GetDefaultLayer().Add(_bottomContainer); // Add a clip layer to Top Container _topClipLayer = new View(); _topClipLayer.ParentOrigin = ParentOrigin.BottomCenter; _topClipLayer.PivotPoint = PivotPoint.BottomCenter; _topClipLayer.PositionUsesPivotPoint = true; _topContainer.Add(_topClipLayer); // Create a SpotLight for items / images of both // Poster and Menu ScrollContainers ImageView spotLight = new ImageView(_imagePath + "/focuseffect/highlight_spot.png"); spotLight.WidthResizePolicy = ResizePolicyType.UseNaturalSize; spotLight.HeightResizePolicy = ResizePolicyType.UseNaturalSize; spotLight.ParentOrigin = ParentOrigin.Center; spotLight.PivotPoint = PivotPoint.Center; spotLight.PositionUsesPivotPoint = true; spotLight.Name = "spotLight"; // Create a shadowBorder for items / images of Poster ScrollContainers ImageView shadowBorder = new ImageView(_imagePath + "/focuseffect/thumbnail_shadow.9.png"); shadowBorder.ParentOrigin = ParentOrigin.Center; shadowBorder.PivotPoint = PivotPoint.Center; shadowBorder.PositionUsesPivotPoint = true; shadowBorder.WidthResizePolicy = ResizePolicyType.SizeFixedOffsetFromParent; shadowBorder.HeightResizePolicy = ResizePolicyType.SizeFixedOffsetFromParent; shadowBorder.SizeModeFactor = (new Vector3(32.0f, 41.0f, 0.0f)); shadowBorder.Name = "poster shadowBorder"; // Create Poster Containers and add them to Top Clip layer for (int i = 0; i < _totalPostersContainers; i++) { _postersContainer.Add(new ScrollContainer()); _postersContainer[i].Container.Name = "poster" + i; if (i == 0) { _postersContainer[i].ItemSize = new Vector2((_stageSize.Width * Constants.Poster0ItemWidthFactor) - Constants.PostersContainerPadding, _stageSize.Height * Constants.PostersItemHeightFactor); } else { _postersContainer[i].ItemSize = new Vector2((_stageSize.Width * Constants.Poster1ItemWidthFactor) - Constants.PostersContainerPadding, _stageSize.Height * Constants.PostersItemHeightFactor); } _postersContainer[i].Gap = Constants.PostersContainerPadding; _postersContainer[i].MarginX = Constants.PostersContainerMargin; _postersContainer[i].OffsetYFator = Constants.PostersContainerOffsetYFactor; _postersContainer[i].Width = _stageSize.Width; _postersContainer[i].Height = _stageSize.Height * Constants.PostersContainerHeightFactor; _postersContainer[i].ShadowBorder = shadowBorder; _postersContainer[i].ShadowBorder.Position = new Position(0.0f, 4.0f, 0.0f); _topClipLayer.Add(_postersContainer[i]); } // Add a clip layer to Bottom Container _bottomClipLayer = new View(); _bottomClipLayer.PivotPoint = PivotPoint.BottomLeft; _bottomClipLayer.PositionUsesPivotPoint = true; _bottomClipLayer.ParentOrigin = ParentOrigin.BottomLeft; _bottomClipLayer.Position = new Position(Constants.LauncherWidth, 35, 0); _bottomClipLayer.SizeWidth = _stageSize.Width - Constants.LauncherWidth; _bottomClipLayer.SizeHeight = _stageSize.Height * Constants.MenuContainerHeightFactor; _bottomContainer.ClippingMode = ClippingModeType.ClipChildren; _bottomContainer.Add(_bottomClipLayer); // Add Launcher items to Bottom Container. Launcher is used // to display three images on left of Menu ScrollContainer launcherIcon = new ImageView[Convert.ToInt32(Constants.LauncherItemsCount)]; for (int launcherIndex = 0; launcherIndex < Constants.LauncherItemsCount; launcherIndex++) { launcherIcon[launcherIndex] = new ImageView(_imagePath + "/focuseffect/" + launcherIndex + "-normal.png"); launcherIcon[launcherIndex].Name = "launcherIcon" + launcherIndex; launcherIcon[launcherIndex].WidthResizePolicy = ResizePolicyType.UseNaturalSize; launcherIcon[launcherIndex].HeightResizePolicy = ResizePolicyType.UseNaturalSize; launcherIcon[launcherIndex].ParentOrigin = ParentOrigin.CenterLeft; launcherIcon[launcherIndex].PivotPoint = PivotPoint.CenterLeft; launcherIcon[launcherIndex].PositionUsesPivotPoint = true; launcherIcon[launcherIndex].Position = new Position(Constants.LauncherIconWidth * launcherIndex + Constants.LauncherLeftMargin, 0.0f, 0.0f); _bottomContainer.Add(launcherIcon[launcherIndex]); } // Add a shadow seperator image between last Launcher // icon and Menu ScrollContainer _launcherSeparator = new ImageView(_imagePath + "/focuseffect/focus_launcher_shadow_n.png"); _launcherSeparator.Name = "launcherSeparator"; _launcherSeparator.WidthResizePolicy = ResizePolicyType.UseNaturalSize; _launcherSeparator.HeightResizePolicy = ResizePolicyType.FillToParent; _launcherSeparator.ParentOrigin = ParentOrigin.CenterLeft; _launcherSeparator.PivotPoint = PivotPoint.CenterLeft; _launcherSeparator.PositionUsesPivotPoint = true; _launcherSeparator.Position = new Position(Constants.LauncherIconWidth * Constants.LauncherItemsCount + Constants.LauncherLeftMargin, 0.0f, 0.0f); _bottomContainer.Add(_launcherSeparator); // Create Menu Container and add it to Bottom Clip Layer Vector2 menuItemSize = new Vector2((_stageSize.Width * Constants.MenuItemWidthFactor) - Constants.MenuContainerPadding, _stageSize.Height * Constants.MenuItemHeightFactor); _menuContainer.Container.Name = "menu"; _menuContainer.ItemSize = new Vector2(110, 110); Tizen.Log.Fatal("NUI", "ItemSize.Width: " + _menuContainer.ItemSize.Width + " ItemSize.Height: " + _menuContainer.ItemSize.Height); _menuContainer.Gap = Constants.MenuContainerPadding; _menuContainer.MarginX = Constants.MenuContainerMargin; _menuContainer.OffsetYFator = Constants.MenuContainerOffsetYFactor; _menuContainer.OffsetX = Constants.LauncherWidth; _menuContainer.Width = _stageSize.Width - Constants.LauncherWidth; _menuContainer.Height = _stageSize.Height * Constants.MenuContainerHeightFactor; _menuContainer.ShadowBorder = new ImageView(_imagePath + "/focuseffect/focus_launcher_shadow.9.png"); _menuContainer.ShadowBorder.Name = "_menuContainer.ShadowBorder"; _menuContainer.ShadowBorder.Size2D = new Vector2(_menuContainer.ItemSize.Width + 40.0f, _menuContainer.ItemSize.Height + 50.0f); _menuContainer.ShadowBorder.Position = new Position(0.0f, 0.0f, 0.0f); _menuContainer.ShadowBorder.ParentOrigin = ParentOrigin.Center; _menuContainer.ShadowBorder.PivotPoint = PivotPoint.Center; _menuContainer.ShadowBorder.PositionUsesPivotPoint = true; _menuContainer.ClippingMode = ClippingModeType.ClipChildren; _bottomClipLayer.Add(_menuContainer); // Create Items for Poster ScrollContainer CreatePosters(); // Create Items for Menu ScrollContainer CreateMenu(); // Initialize PreFocusChange event of KeyboardFocusManager _keyboardFocusManager = FocusManager.Instance; _keyboardFocusManager.PreFocusChange += OnKeyboardPreFocusChangeSignal; _keyboardFocusIndicator = new ImageView(_imagePath + "/focuseffect/highlight_stroke.9.png"); _keyboardFocusIndicator.ParentOrigin = ParentOrigin.Center; _keyboardFocusIndicator.PivotPoint = PivotPoint.Center; _keyboardFocusIndicator.PositionUsesPivotPoint = true; _keyboardFocusIndicator.WidthResizePolicy = ResizePolicyType.FillToParent; _keyboardFocusIndicator.HeightResizePolicy = ResizePolicyType.FillToParent; _keyboardFocusManager.FocusIndicator = (_keyboardFocusIndicator); _keyboardFocusManager.SetAsFocusGroup(_menuContainer, true); _keyboardFocusManager.SetAsFocusGroup(_postersContainer[0], true); _keyboardFocusManager.SetAsFocusGroup(_postersContainer[1], true); _keyboardFocusManager.FocusGroupLoop = (true); _focusEffect = new FocusEffect(); // Move Focus to Bottom Container (Menu ScrollContainer) ShowBottomContainer(); _menuContainer.Focusable = true; _menuContainer.SetFocused(true); #if true //test. TextLabel guide = new TextLabel(); guide = new TextLabel(); guide.HorizontalAlignment = HorizontalAlignment.Center; guide.VerticalAlignment = VerticalAlignment.Center; guide.PositionUsesPivotPoint = true; guide.ParentOrigin = ParentOrigin.TopLeft; guide.PivotPoint = PivotPoint.TopLeft; guide.Size2D = new Size2D(1920, 100); guide.FontFamily = "Samsung One 600"; guide.Position2D = new Position2D(0, 0); guide.MultiLine = false; guide.PointSize = 15.0f; guide.Text = "FirstScreen"; guide.TextColor = Color.White; guide.BackgroundColor = new Color(43.0f / 255.0f, 145.0f / 255.0f, 175.0f / 255.0f, 1.0f); Window.Instance.GetDefaultLayer().Add(guide); #endif Window.Instance.KeyEvent += AppBack; }
/// <summary> /// Callback when the keyboard focus is going to be changed. /// </summary> /// <param name="source">FocusManager.Instance</param> /// <param name="e">event</param> /// <returns> The view to move the keyboard focus to.</returns> private View OnKeyboardPreFocusChangeSignal(object source, FocusManager.PreFocusChangeEventArgs e) { if (!e.CurrentView && !e.ProposedView) { return(_menuContainer); } View actor = _menuContainer.Container; if (e.Direction == View.FocusDirection.Up) { // Move the Focus to Poster ScrollContainer and hide Bottom Container (Menu ScrollContainer) if (_menuContainer.IsFocused) { actor = _postersContainer[_currentPostersContainerID].GetCurrentFocusedActor(); _menuContainer.SetFocused(false); _postersContainer[_currentPostersContainerID].SetFocused(true); //HideBottomContainer(); } } else if (e.Direction == View.FocusDirection.Down) { // Show Bottom Container (Menu ScrollContainer) and move the Focus to it if (!_menuContainer.IsFocused) { ShowBottomContainer(); actor = _menuContainer.GetCurrentFocusedActor(); _postersContainer[_currentPostersContainerID].SetFocused(false); _menuContainer.SetFocused(true); } } else { // Set the next focus view. actor = e.ProposedView; } if (e.Direction == View.FocusDirection.Left) { if (_menuContainer.IsFocused) { int id = _menuContainer.FocusedItemID % _totalPostersContainers; if (id != _currentPostersContainerID) { Hide(_postersContainer[_currentPostersContainerID]); _currentPostersContainerID = id; Show(_postersContainer[_currentPostersContainerID]); } } } else if (e.Direction == View.FocusDirection.Right) { if (_menuContainer.IsFocused) { int id = _menuContainer.FocusedItemID % _totalPostersContainers; if (id != _currentPostersContainerID) { Hide(_postersContainer[_currentPostersContainerID]); _currentPostersContainerID = id; Show(_postersContainer[_currentPostersContainerID]); } } } return((View)actor); }