X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=plugins%2Fdali-swig%2Fexamples%2Fcontrol-dashboard.cs;h=2b5de66a9f2347c4517465b6d3701ac53247e93f;hp=ef41bbc598e55165a07c4f7157a4753b64c034ed;hb=1730389b12a4a189b54c04ce357a7dba026dd7b8;hpb=e3e8aab0456784f0280e4a1b71eac8def6ff64b8 diff --git a/plugins/dali-swig/examples/control-dashboard.cs b/plugins/dali-swig/examples/control-dashboard.cs index ef41bbc..2b5de66 100755 --- a/plugins/dali-swig/examples/control-dashboard.cs +++ b/plugins/dali-swig/examples/control-dashboard.cs @@ -1,19 +1,18 @@ -/* - * Copyright (c) 2016 Samsung Electronics Co., Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ +/** Copyright (c) 2017 Samsung Electronics Co., Ltd. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +* +*/ using System; using System.Runtime.InteropServices; @@ -40,16 +39,19 @@ namespace MyCSharpExample private Dali.Application _application; private TableView _contentContainer; + private Timer _timer; private Stage _stage; + private Popup _popup; + private ProgressBar _progressBar; // List of items private Item[] mViewList = { - new Item("PushButton", true), new Item("DropDown", false), new Item("Toggle", false), - new Item("InputField", false), new Item("AnimateGif", false), new Item("Loading", false), - new Item("ProgressBar", false), new Item("CheckBox", false), new Item("RadioButton", true), - new Item("Tooltip", false), new Item("Popup", false), new Item("Toast", false), - new Item("ItemView", false), new Item("CheckBox", true) - }; + new Item("PushButton", true), new Item("DropDown", false), new Item("Toggle", true), + new Item("InputField", false), new Item("AnimateGif", false), new Item("Loading", false), + new Item("ProgressBar", true), new Item("CheckBox", false), new Item("RadioButton", true), + new Item("Tooltip", true), new Item("Popup", true), new Item("Toast", true), + new Item("ItemView", false), new Item("CheckBox", true) + }; public Example(Dali.Application application) { @@ -57,7 +59,7 @@ namespace MyCSharpExample _application.Initialized += OnInitialize; } - public void OnInitialize(object source, AUIApplicationInitEventArgs e) + public void OnInitialize(object source, NUIApplicationInitEventArgs e) { Console.WriteLine("Customized Application Initialize event handler"); _stage = Stage.GetCurrent(); @@ -68,8 +70,8 @@ namespace MyCSharpExample topLabel.SetResizePolicy(ResizePolicyType.FILL_TO_PARENT, DimensionType.WIDTH); topLabel.SetResizePolicy(ResizePolicyType.SIZE_RELATIVE_TO_PARENT, DimensionType.HEIGHT); topLabel.AnchorPoint = NDalic.AnchorPointTopCenter; - topLabel.ParentOrigin = NDalic.ParentOriginTopCenter; - topLabel.SetSizeModeFactor(new Vector3( 0.0f, 0.1f, 0.0f ) ); + topLabel.Position = new Position(0, 0, 0); + topLabel.SetSizeModeFactor(new Vector3(0.0f, 0.1f, 0.0f)); topLabel.BackgroundColor = new Color(43.0f / 255.0f, 145.0f / 255.0f, 175.0f / 255.0f, 1.0f); topLabel.TextColor = NDalic.WHITE; topLabel.Text = " DALi Views"; @@ -82,9 +84,9 @@ namespace MyCSharpExample _contentContainer = new TableView(6, 5); _contentContainer.SetResizePolicy(ResizePolicyType.FILL_TO_PARENT, DimensionType.WIDTH); _contentContainer.SetResizePolicy(ResizePolicyType.SIZE_RELATIVE_TO_PARENT, DimensionType.HEIGHT); - _contentContainer.SetSizeModeFactor(new Vector3( 0.0f, 0.9f, 0.0f ) ); + _contentContainer.SetSizeModeFactor(new Vector3(0.0f, 0.9f, 0.0f)); _contentContainer.AnchorPoint = NDalic.AnchorPointBottomCenter; - _contentContainer.ParentOrigin = NDalic.ParentOriginBottomCenter; + _contentContainer.Position = new Position(0, _stage.Size.Height * 0.1f, 0); _contentContainer.SetRelativeHeight(0, 0.07f); _contentContainer.SetRelativeHeight(1, 0.26f); _contentContainer.SetRelativeHeight(2, 0.07f); @@ -96,11 +98,11 @@ namespace MyCSharpExample CreateContent(); - KeyboardFocusManager.Get().PreFocusChange += OnPreFocusChange; + FocusManager.Instance.PreFocusChange += OnPreFocusChange; } // Callback for KeyboardFocusManager - private Actor OnPreFocusChange(object source, KeyboardFocusManager.PreFocusChangeEventArgs e) + private Actor OnPreFocusChange(object source, FocusManager.PreFocusChangeEventArgs e) { if (!e.Proposed && !e.Current) { @@ -121,7 +123,7 @@ namespace MyCSharpExample { // Make label for item TextLabel itemLabel = new TextLabel(" " + item.name); - itemLabel.Size = new Vector3(_stage.GetSize().width * 0.2f, _stage.GetSize().height * 0.05f, 0.0f); + itemLabel.Size = new Vector3(_stage.GetSize().Width * 0.2f, _stage.GetSize().Height * 0.05f, 0.0f); itemLabel.HorizontalAlignment = "BEGIN"; itemLabel.VerticalAlignment = "BOTTOM"; itemLabel.PointSize = 18.0f; @@ -136,12 +138,12 @@ namespace MyCSharpExample pushButton.LabelText = "Push Button"; pushButton.SetResizePolicy(ResizePolicyType.FILL_TO_PARENT, DimensionType.WIDTH); pushButton.SetResizePolicy(ResizePolicyType.FILL_TO_PARENT, DimensionType.HEIGHT); - pushButton.UnselectedColor = new Vector4(1.0f,0.0f,0.0f,1.0f); - pushButton.SelectedColor = new Vector4(0.0f,1.0f,0.0f,1.0f); + pushButton.UnselectedColor = new Vector4(1.0f, 0.0f, 0.0f, 1.0f); + pushButton.SelectedColor = new Vector4(0.0f, 1.0f, 0.0f, 1.0f); pushButton.Clicked += (obj, e) => { e.Button.LabelText = "Click Me"; - e.Button.UnselectedColor = new Vector4(0.0f,0.0f,1.0f,1.0f); + e.Button.UnselectedColor = new Vector4(0.0f, 0.0f, 1.0f, 1.0f); return true; }; @@ -153,7 +155,28 @@ namespace MyCSharpExample } if (item.name.CompareTo("Toggle") == 0) { + ToggleButton toggleButton = new ToggleButton(); + Dali.Property.Array array = new Dali.Property.Array(); + array.Add(new Dali.Property.Value("./images/star-highlight.png")); + array.Add(new Dali.Property.Value("./images/star-mod.png")); + array.Add(new Dali.Property.Value("./images/star-dim.png")); + toggleButton.StateVisuals = array; + + Dali.Property.Array tooltips = new Dali.Property.Array(); + tooltips.Add(new Dali.Property.Value("State A")); + tooltips.Add(new Dali.Property.Value("State B")); + tooltips.Add(new Dali.Property.Value("State C")); + toggleButton.Tooltips = tooltips; + + toggleButton.WidthResizePolicy = "FILL_TO_PARENT"; + toggleButton.HeightResizePolicy = "FILL_TO_PARENT"; + toggleButton.Clicked += (obj, e) => + { + Console.WriteLine("Toggle button state changed."); + return true; + }; + _contentContainer.AddChild(toggleButton, new TableView.CellPosition(((uint)idx / 5) * 2 + 1, (uint)idx % 5)); } if (item.name.CompareTo("InputField") == 0) { @@ -169,7 +192,33 @@ namespace MyCSharpExample } if (item.name.CompareTo("ProgressBar") == 0) { + _progressBar = new ProgressBar(); + _progressBar.SetResizePolicy(ResizePolicyType.FILL_TO_PARENT, DimensionType.WIDTH); + _progressBar.SetResizePolicy(ResizePolicyType.FIXED, DimensionType.HEIGHT); + _progressBar.SetSize(0, 50); + + _progressBar.ValueChanged += OnProgressBarValueChanged; + + _timer = new Timer(100); + _timer.Tick += (obj, e) => + { + float progress = (float)Math.Round(_progressBar.ProgressValue, 2); + + if (progress == 1.0f) + { + _progressBar.ProgressValue = 0.0f; + _progressBar.SecondaryProgressValue = 0.01f; + } + else + { + _progressBar.ProgressValue = progress + 0.01f; + _progressBar.SecondaryProgressValue = progress + 0.21f; + } + return true; + }; + _timer.Start(); + _contentContainer.AddChild(_progressBar, new TableView.CellPosition(((uint)idx / 5) * 2 + 1, (uint)idx % 5)); } if (item.name.CompareTo("ScrollBar") == 0) { @@ -191,6 +240,7 @@ namespace MyCSharpExample RadioButton rButton = new RadioButton(); rButton.LabelText = "Yes"; rButton.Selected = true; + tableView.AddChild(rButton, new TableView.CellPosition(0, 0)); rButton = new RadioButton(); @@ -202,15 +252,107 @@ namespace MyCSharpExample } if (item.name.CompareTo("Tooltip") == 0) { + TableView tableView = new TableView(2, 1); + tableView.SetResizePolicy(ResizePolicyType.FILL_TO_PARENT, DimensionType.WIDTH); + tableView.SetResizePolicy(ResizePolicyType.FILL_TO_PARENT, DimensionType.HEIGHT); + // Create two push buttons and add them to a table view + PushButton buttonWithSimpleTooltip = new PushButton(); + buttonWithSimpleTooltip.LabelText = "Tooltip with text only"; + buttonWithSimpleTooltip.UnselectedColor = new Vector4(0.5f, 0.5f, 0.7f, 1.0f); + buttonWithSimpleTooltip.SelectedColor = new Vector4(0.7f, 0.5f, 0.7f, 1.0f); + buttonWithSimpleTooltip.WidthResizePolicy = "FILL_TO_PARENT"; + tableView.AddChild(buttonWithSimpleTooltip, new TableView.CellPosition(0, 0)); + + PushButton buttonWithIconTooltip = new PushButton(); + buttonWithIconTooltip.LabelText = "Tooltip with Text and Icon"; + buttonWithIconTooltip.WidthResizePolicy = "FILL_TO_PARENT"; + buttonWithIconTooltip.UnselectedColor = new Vector4(0.5f, 0.5f, 0.7f, 1.0f); + buttonWithIconTooltip.SelectedColor = new Vector4(0.7f, 0.5f, 0.7f, 1.0f); + + tableView.AddChild(buttonWithIconTooltip, new TableView.CellPosition(1, 0)); + + // Add a simple text only tooltip to the first push button + buttonWithSimpleTooltip.TooltipText = "Simple Tooltip"; + + // Create a property map for a tooltip with one icon and one text + Property.Array iconTooltipContent = new Property.Array(); + + Property.Map iconVisual = new Property.Map(); + iconVisual.Add(Dali.Constants.Visual.Property.Type, new Property.Value((int)Dali.Constants.Visual.Type.Image)) + .Add(Dali.Constants.ImageVisualProperty.URL, new Property.Value("./images/star-highlight.png")); + iconTooltipContent.Add(new Property.Value(iconVisual)); + + Property.Map textVisual = new Property.Map(); + textVisual.Add(Dali.Constants.Visual.Property.Type, new Property.Value((int)Dali.Constants.Visual.Type.Text)) + .Add(Dali.Constants.TextVisualProperty.Text, new Property.Value("Tooltip with Icon")); + iconTooltipContent.Add(new Property.Value(textVisual)); + + Property.Map iconTooltip = new Property.Map(); + iconTooltip.Add(Dali.Constants.Tooltip.Property.Content, new Property.Value(iconTooltipContent)) + .Add(Dali.Constants.Tooltip.Property.Tail, new Property.Value(true)); + + // Add the tooltip with icon and text to the second push button + buttonWithIconTooltip.Tooltip = iconTooltip; + + _contentContainer.AddChild(tableView, new TableView.CellPosition(((uint)idx / 5) * 2 + 1, (uint)idx % 5)); } if (item.name.CompareTo("Popup") == 0) { - + PushButton button = new PushButton(); + button.LabelText = "Popup"; + button.ParentOrigin = NDalic.ParentOriginCenter; + button.AnchorPoint = NDalic.AnchorPointCenter; + button.MaximumSize = new Vector2(90.0f, 50.0f); + _popup = CreatePopup(); + _popup.SetTitle(CreateTitle("Popup")); + + TextLabel text = new TextLabel("This will erase the file permanently. Are you sure?"); + text.BackgroundColor = Color.White; + text.MultiLine = true; + text.SetResizePolicy(ResizePolicyType.FILL_TO_PARENT, DimensionType.WIDTH); + text.SetResizePolicy(ResizePolicyType.DIMENSION_DEPENDENCY, DimensionType.HEIGHT); + text.SetPadding(new PaddingType(10.0f, 10.0f, 20.0f, 0.0f)); + _popup.SetContent(text); + _popup.SetKeyboardFocusable(true); + _popup.SetDisplayState(Popup.DisplayStateType.HIDDEN); + + button.Clicked += (obj, ee) => + { + _stage.Add(_popup); + _popup.SetDisplayState(Popup.DisplayStateType.SHOWN); + FocusManager.Instance.SetCurrentFocusActor((_popup.FindChildByName("Footer")).FindChildByName("OKButton")); + return true; + }; + _contentContainer.AddChild(button, new TableView.CellPosition(((uint)idx / 5) * 2 + 1, (uint)idx % 5)); } if (item.name.CompareTo("Toast") == 0) { - + PushButton button = new PushButton(); + button.LabelText = "Toast"; + button.ParentOrigin = NDalic.ParentOriginCenter; + button.AnchorPoint = NDalic.AnchorPointCenter; + button.Clicked += (obj, ee) => + { + TypeInfo typeInfo = new TypeInfo(TypeRegistry.Get().GetTypeInfo("PopupToast")); + if (typeInfo) + { + BaseHandle baseHandle = typeInfo.CreateInstance(); + if (baseHandle) + { + Popup toast = Popup.DownCast(baseHandle); + TextLabel text = new TextLabel("This is a Toast.\nIt will auto-hide itself"); + text.TextColor = Color.White; + text.MultiLine = true; + text.HorizontalAlignment = "center"; + toast.SetTitle(text); + _stage.Add(toast); + toast.SetDisplayState(Popup.DisplayStateType.SHOWN); + } + } + return true; + }; + _contentContainer.AddChild(button, new TableView.CellPosition(((uint)idx / 5) * 2 + 1, (uint)idx % 5)); } if (item.name.CompareTo("ItemView") == 0) { @@ -220,11 +362,100 @@ namespace MyCSharpExample else { ImageView notSupportView = new ImageView("images/not_yet_sign.png"); - notSupportView.Size = new Vector3(_stage.GetSize().width * 0.2f, _stage.GetSize().height * 0.25f, 0.0f); + notSupportView.Size = new Vector3(_stage.GetSize().Width * 0.2f, _stage.GetSize().Height * 0.25f, 0.0f); notSupportView.SetKeyboardFocusable(true); + _contentContainer.AddChild(notSupportView, new TableView.CellPosition(((uint)idx / 5) * 2 + 1, (uint)idx % 5)); } } + Popup CreatePopup() + { + Popup confirmationPopup = new Popup(); + + Actor footer = new Actor(); + footer.SetName("Footer"); + footer.SetResizePolicy(ResizePolicyType.FILL_TO_PARENT, DimensionType.WIDTH); + footer.SetResizePolicy(ResizePolicyType.FIXED, DimensionType.HEIGHT); + footer.SetSize(0.0f, 80.0f); + footer.ParentOrigin = NDalic.ParentOriginCenter; + footer.AnchorPoint = NDalic.AnchorPointCenter; + + PushButton okButton = CreateOKButton(); + okButton.ParentOrigin = NDalic.ParentOriginCenter; + okButton.AnchorPoint = NDalic.AnchorPointCenter; + okButton.SetResizePolicy(ResizePolicyType.SIZE_FIXED_OFFSET_FROM_PARENT, DimensionType.ALL_DIMENSIONS); + okButton.SetSizeModeFactor(new Vector3(-20.0f, -20.0f, 0.0f)); + + + PushButton cancelButton = CreateCancelButton(); + cancelButton.ParentOrigin = NDalic.ParentOriginCenter; + cancelButton.AnchorPoint = NDalic.AnchorPointCenter; + cancelButton.SetResizePolicy(ResizePolicyType.SIZE_FIXED_OFFSET_FROM_PARENT, DimensionType.ALL_DIMENSIONS); + cancelButton.SetSizeModeFactor(new Vector3(-20.0f, -20.0f, 0.0f)); + + + TableView controlLayout = new TableView(1, 2); + controlLayout.ParentOrigin = NDalic.ParentOriginCenter; + controlLayout.AnchorPoint = NDalic.AnchorPointCenter; + controlLayout.SetResizePolicy(ResizePolicyType.FILL_TO_PARENT, DimensionType.ALL_DIMENSIONS); + controlLayout.SetCellPadding(new Size2D(10, 10)); + controlLayout.SetRelativeWidth(0, 0.5f); + controlLayout.SetRelativeWidth(1, 0.5f); + controlLayout.SetCellAlignment(new TableView.CellPosition(0, 0), HorizontalAlignmentType.CENTER, VerticalAlignmentType.CENTER); + controlLayout.SetCellAlignment(new TableView.CellPosition(0, 1), HorizontalAlignmentType.CENTER, VerticalAlignmentType.CENTER); + controlLayout.AddChild(okButton, new TableView.CellPosition(0, 0)); + controlLayout.AddChild(cancelButton, new TableView.CellPosition(0, 1)); + + + footer.Add(controlLayout); + + confirmationPopup.SetFooter(footer); + return confirmationPopup; + } + Actor CreateTitle(string title) + { + TextLabel titleActor = new TextLabel(title); + titleActor.TextColor = Color.White; + titleActor.MultiLine = true; + titleActor.HorizontalAlignment = "center"; + + return titleActor; + } + + PushButton CreateOKButton() + { + PushButton okayButton = new PushButton(); + okayButton.SetName("OKButton"); + okayButton.LabelText = "OK"; + okayButton.SetKeyboardFocusable(true); + okayButton.Clicked += (obj, ee) => + { + _popup.SetDisplayState(Popup.DisplayStateType.HIDDEN); + return true; + }; + return okayButton; + } + PushButton CreateCancelButton() + { + PushButton cancelButton = new PushButton(); + cancelButton.LabelText = "Cancel"; + cancelButton.SetKeyboardFocusable(true); + cancelButton.Clicked += (obj, ee) => + { + _popup.SetDisplayState(Popup.DisplayStateType.HIDDEN); + return true; + }; + return cancelButton; + } + + void OnProgressBarValueChanged(object source, ProgressBar.ValueChangedEventArgs e) + { + Property.Map labelVisual = new Property.Map(); + labelVisual.Add(Dali.Constants.Visual.Property.Type, new Property.Value((int)Dali.Constants.Visual.Type.Text)) + .Add(Dali.Constants.TextVisualProperty.Text, new Property.Value(Math.Round(e.ProgressBar.ProgressValue, 2) + " / " + Math.Round(e.ProgressBar.SecondaryProgressValue, 2))); + e.ProgressBar.LabelVisual = labelVisual; + return; + } public void MainLoop() { @@ -240,8 +471,9 @@ namespace MyCSharpExample { Console.WriteLine("Hello Mono World"); - Example example = new Example(Application.NewApplication()); + Example example = new Example(Application.NewApplication("json/control-dashboard.json")); example.MainLoop(); } } } +