X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=plugins%2Fdali-swig%2Fexamples%2Fscroll-view.cs;h=93554fc2299306412fe6a4b7682b968bf7eb4dd4;hp=9710c0ed72a3bc4b6a419310b6f1b3b975839841;hb=4d81316f7df2eefaaf7c15b322ba6ef1f5b655f4;hpb=5b71e5d95f63c4aad74ffefe112fd13813cd90dc diff --git a/plugins/dali-swig/examples/scroll-view.cs b/plugins/dali-swig/examples/scroll-view.cs index 9710c0e..93554fc 100644 --- a/plugins/dali-swig/examples/scroll-view.cs +++ b/plugins/dali-swig/examples/scroll-view.cs @@ -21,125 +21,184 @@ using Dali; namespace MyCSharpExample { - class Example - { - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - delegate void CallbackDelegate(IntPtr data); + class Example + { + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + delegate void CallbackDelegate(IntPtr data); - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - delegate void ActorCallbackDelegate(IntPtr data); + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + delegate void ActorCallbackDelegate(IntPtr data); - private Dali.Application _application; - private ScrollView _scrollView; - private ScrollBar _scrollBar; + private Dali.Application _application; + private ScrollView _scrollView; + private ScrollBar _scrollBar; + private Animation _animation; + private TextLabel _text; - public Example(Dali.Application application) - { - _application = application; - _application.Initialized += Initialize; - } + public Example(Dali.Application application) + { + _application = application; + _application.Initialized += Initialize; + } - public void Initialize(object source, AUIApplicationInitEventArgs e) - { - CreateScrollView(); - } + public void Initialize(object source, AUIApplicationInitEventArgs e) + { + CreateScrollView(); + } - private void CreateScrollView() + private void CreateScrollView() + { + Stage stage = Stage.GetCurrent(); + stage.BackgroundColor = NDalic.WHITE; + + // Create a scroll view + _scrollView = new ScrollView(); + Vector2 stageSize = stage.Size; + _scrollView.Size = new Vector3(stageSize.x, stageSize.y, 0.0f); + _scrollView.ParentOrigin = NDalic.ParentOriginCenter; + _scrollView.AnchorPoint = NDalic.AnchorPointCenter; + stage.Add(_scrollView); + + // Add actors to a scroll view with 3 pages + int pageRows = 1; + int pageColumns = 3; + for(int pageRow = 0; pageRow < pageRows; pageRow++) + { + for(int pageColumn = 0; pageColumn < pageColumns; pageColumn++) { - Stage stage = Stage.GetCurrent(); - stage.BackgroundColor = NDalic.WHITE; - - // Create a scroll view - _scrollView = new ScrollView(); - Vector2 stageSize = stage.Size; - _scrollView.Size = new Vector3(stageSize.x, stageSize.y, 0.0f); - _scrollView.ParentOrigin = NDalic.ParentOriginCenter; - _scrollView.AnchorPoint = NDalic.AnchorPointCenter; - stage.Add(_scrollView); - - // Add actors to a scroll view with 3 pages - int pageRows = 1; - int pageColumns = 3; - for(int pageRow = 0; pageRow < pageRows; pageRow++) + View pageActor = new View(); + pageActor.SetResizePolicy(ResizePolicyType.FILL_TO_PARENT, DimensionType.ALL_DIMENSIONS); + pageActor.ParentOrigin = NDalic.ParentOriginCenter; + pageActor.AnchorPoint = NDalic.AnchorPointCenter; + pageActor.Position = new Vector3(pageColumn * stageSize.x, pageRow * stageSize.y, 0.0f); + + // Add images in a 3x4 grid layout for each page + int imageRows = 4; + int imageColumns = 3; + float margin = 10.0f; + Vector3 imageSize = new Vector3((stageSize.x / imageColumns) - margin, (stageSize.y / imageRows) - margin, 0.0f); + + for(int row = 0; row < imageRows; row++) + { + for(int column = 0; column < imageColumns;column++) { - for(int pageColumn = 0; pageColumn < pageColumns; pageColumn++) - { - View pageActor = new View(); - pageActor.SetResizePolicy(ResizePolicyType.FILL_TO_PARENT, DimensionType.ALL_DIMENSIONS); - pageActor.ParentOrigin = NDalic.ParentOriginCenter; - pageActor.AnchorPoint = NDalic.AnchorPointCenter; - pageActor.Position = new Vector3(pageColumn * stageSize.x, pageRow * stageSize.y, 0.0f); - - // Add images in a 3x4 grid layout for each page - int imageRows = 4; - int imageColumns = 3; - float margin = 10.0f; - Vector3 imageSize = new Vector3((stageSize.x / imageColumns) - margin, (stageSize.y / imageRows) - margin, 0.0f); - - for(int row = 0; row < imageRows; row++) - { - for(int column = 0; column < imageColumns;column++) - { - int imageId = (row * imageColumns + column) % 2 + 1; - ImageView imageView = new ImageView("images/image-" + imageId + ".jpg"); - imageView.ParentOrigin = NDalic.ParentOriginCenter; - imageView.AnchorPoint = NDalic.AnchorPointCenter; - imageView.Size = imageSize; - imageView.Position = new Vector3( margin * 0.5f + (imageSize.x + margin) * column - stageSize.x * 0.5f + imageSize.x * 0.5f, - margin * 0.5f + (imageSize.y + margin) * row - stageSize.y * 0.5f + imageSize.y * 0.5f, 0.0f ); - pageActor.Add(imageView); - } - } - - _scrollView.Add(pageActor); - } + int imageId = (row * imageColumns + column) % 2 + 1; + ImageView imageView = new ImageView("images/image-" + imageId + ".jpg"); + imageView.ParentOrigin = NDalic.ParentOriginCenter; + imageView.AnchorPoint = NDalic.AnchorPointCenter; + imageView.Size = imageSize; + imageView.Position = new Vector3( margin * 0.5f + (imageSize.x + margin) * column - stageSize.x * 0.5f + imageSize.x * 0.5f, + margin * 0.5f + (imageSize.y + margin) * row - stageSize.y * 0.5f + imageSize.y * 0.5f, 0.0f ); + pageActor.Add(imageView); } + } - _scrollView.SetAxisAutoLock(true); - - // Set scroll view to have 3 pages in X axis and allow page snapping, - // and also disable scrolling in Y axis. - RulerPtr scrollRulerX = new RulerPtr(new FixedRuler(stageSize.width)); - RulerPtr scrollRulerY = new RulerPtr(new DefaultRuler()); - scrollRulerX.SetDomain(new RulerDomain(0.0f, stageSize.width * pageColumns, true)); - scrollRulerY.Disable(); - _scrollView.SetRulerX(scrollRulerX); - _scrollView.SetRulerY(scrollRulerY); - - // Create a horizontal scroll bar in the bottom of scroll view (which is optional) - _scrollBar = new ScrollBar(); - _scrollBar.ParentOrigin = NDalic.ParentOriginBottomLeft; - _scrollBar.AnchorPoint = NDalic.AnchorPointTopLeft; - _scrollBar.SetResizePolicy(ResizePolicyType.FIT_TO_CHILDREN, DimensionType.WIDTH); - _scrollBar.SetResizePolicy(ResizePolicyType.FILL_TO_PARENT, DimensionType.HEIGHT); - _scrollBar.Orientation = new Quaternion( new Radian( new Degree( 270.0f ) ), Vector3.ZAXIS ); - _scrollBar.SetScrollDirection(ScrollBar.Direction.Horizontal); - _scrollView.Add(_scrollBar); - - // Connect to the OnRelayout signal - _scrollView.OnRelayoutEvent += OnScrollViewRelayout; + _scrollView.Add(pageActor); } + } + + _scrollView.SetAxisAutoLock(true); + + // Set scroll view to have 3 pages in X axis and allow page snapping, + // and also disable scrolling in Y axis. + RulerPtr scrollRulerX = new RulerPtr(new FixedRuler(stageSize.width)); + RulerPtr scrollRulerY = new RulerPtr(new DefaultRuler()); + scrollRulerX.SetDomain(new RulerDomain(0.0f, stageSize.width * pageColumns, true)); + scrollRulerY.Disable(); + _scrollView.SetRulerX(scrollRulerX); + _scrollView.SetRulerY(scrollRulerY); + + // Create a horizontal scroll bar in the bottom of scroll view (which is optional) + _scrollBar = new ScrollBar(); + _scrollBar.ParentOrigin = NDalic.ParentOriginBottomLeft; + _scrollBar.AnchorPoint = NDalic.AnchorPointTopLeft; + _scrollBar.SetResizePolicy(ResizePolicyType.FIT_TO_CHILDREN, DimensionType.WIDTH); + _scrollBar.SetResizePolicy(ResizePolicyType.FILL_TO_PARENT, DimensionType.HEIGHT); + _scrollBar.Orientation = new Quaternion( new Radian( new Degree( 270.0f ) ), Vector3.ZAXIS ); + _scrollBar.SetScrollDirection(ScrollBar.Direction.Horizontal); + _scrollView.Add(_scrollBar); + + // Connect to the OnRelayout signal + _scrollView.OnRelayoutEvent += OnScrollViewRelayout; + _scrollView.Touched += OnTouch; + _scrollView.WheelMoved += Onwheel; + _scrollView.KeyInputFocusGained += OnKey; + _text = new TextLabel("View Touch Event Handler Test"); + _text.ParentOrigin = NDalic.ParentOriginCenter; + _text.AnchorPoint = NDalic.AnchorPointCenter; + _text.HorizontalAlignment = "CENTER"; + _text.PointSize = 48.0f; + + _scrollView.Add(_text); + } - private void OnScrollViewRelayout(object source, View.OnRelayoutEventArgs e) - { - // Set the correct scroll bar size after size negotiation of scroll view is done - _scrollBar.Size = new Vector3(0.0f, _scrollView.GetRelayoutSize(DimensionType.WIDTH), 0.0f); - } + // Callback for _animation finished signal handling + public void AnimationFinished(object source, Animation.FinishedEventArgs e) + { + Console.WriteLine("Customized Animation Finished Event handler"); + Console.WriteLine("Animation finished: duration = " + e.Animation.Duration); + } + private void OnKey(object source, View.KeyInputFocusGainedEventArgs e) + { + Console.WriteLine("View Keyevent EVENT callback...."); + } - public void MainLoop() - { - _application.MainLoop (); - } + private bool Onwheel(object source, View.WheelEventArgs e) + { + Console.WriteLine("View Wheel EVENT callback...."); + return true; + } - /// - /// The main entry point for the application. - /// - [STAThread] - static void Main(string[] args) + private bool OnTouch(object source, View.TouchEventArgs e) + { + Console.WriteLine("View TOUCH EVENT callback...."); + + // Only animate the _text label when touch down happens + if( e.TouchData.GetState(0) == PointStateType.DOWN ) + { + Console.WriteLine("Customized Stage Touch event handler"); + // Create a new _animation + if( _animation ) { - Example example = new Example(Application.NewApplication()); - example.MainLoop (); + _animation.Reset(); } + + _animation = new Animation(1.0f); // 1 second of duration + + _animation.AnimateTo(new Property(_text, Actor.Property.ORIENTATION), new Property.Value(new Quaternion( new Radian( new Degree( 180.0f ) ), Vector3.XAXIS )), new AlphaFunction(AlphaFunction.BuiltinFunction.LINEAR), new TimePeriod(0.0f, 0.5f)); + _animation.AnimateTo(new Property(_text, Actor.Property.ORIENTATION), new Property.Value(new Quaternion( new Radian( new Degree( 0.0f ) ), Vector3.XAXIS )), new AlphaFunction(AlphaFunction.BuiltinFunction.LINEAR), new TimePeriod(0.5f, 0.5f)); + + // Connect the signal callback for animaiton finished signal + _animation.Finished += AnimationFinished; + + // Play the _animation + _animation.Play(); + } + return true; } + + private void OnScrollViewRelayout(object source, View.OnRelayoutEventArgs e) + { + Console.WriteLine("View OnRelayoutEventArgs EVENT callback...."); + + // Set the correct scroll bar size after size negotiation of scroll view is done + _scrollBar.Size = new Vector3(0.0f, _scrollView.GetRelayoutSize(DimensionType.WIDTH), 0.0f); + } + + public void MainLoop() + { + _application.MainLoop (); + } + + /// + /// The main entry point for the application. + /// + [STAThread] + static void Main(string[] args) + { + Example example = new Example(Application.NewApplication()); + example.MainLoop (); + } + } }