Add alignment button in LinearExample. 93/187293/2
authorAnton Obzhirov <a.obzhirov@samsung.com>
Tue, 21 Aug 2018 17:20:27 +0000 (18:20 +0100)
committerAnton Obzhirov <a.obzhirov@samsung.com>
Thu, 23 Aug 2018 10:34:52 +0000 (11:34 +0100)
Change-Id: I1a1005f16497d57fe1df817b8d53e3d6fc81d75b

examples/layouting/linear-example.cpp
examples/layouting/linear-example.h

index 156baeb..d544ce0 100644 (file)
@@ -39,6 +39,9 @@ const char* RTL_SELECTED_IMAGE( DEMO_IMAGE_DIR "icon-reverse-selected.png" );
 const char* ROTATE_CLOCKWISE_IMAGE( DEMO_IMAGE_DIR "icon-reset.png" );
 const char* ROTATE_CLOCKWISE_SELECTED_IMAGE( DEMO_IMAGE_DIR "icon-reset-selected.png" );
 
+const char* ALIGN_IMAGE( DEMO_IMAGE_DIR "icon-replace.png" );
+const char* ALIGN_SELECTED_IMAGE( DEMO_IMAGE_DIR "icon-replace-selected.png" );
+
 // Child image filenames
 const char* IMAGE_PATH[] = {
   DEMO_IMAGE_DIR "application-icon-101.png",
@@ -97,11 +100,22 @@ void LinearExample::Create()
   mRotateButton.SetSize(75, 75);
   stage.Add( mRotateButton );
 
+  mAlignmentButton = PushButton::New();
+  mAlignmentButton.SetProperty( PushButton::Property::UNSELECTED_ICON, ALIGN_IMAGE );
+  mAlignmentButton.SetProperty( PushButton::Property::SELECTED_ICON, ALIGN_SELECTED_IMAGE );
+  mAlignmentButton.ClickedSignal().Connect( this, &LinearExample::OnAlignmentClicked );
+  mAlignmentButton.SetParentOrigin( ParentOrigin::BOTTOM_CENTER );
+  mAlignmentButton.SetAnchorPoint( AnchorPoint::BOTTOM_CENTER );
+  mAlignmentButton.SetSize(75, 75);
+
+  stage.Add( mAlignmentButton );
+
   // Create a linear layout
   mLinearContainer = Control::New();
   auto layout = LinearLayout::New();
   layout.SetAnimateLayout(true);
-  layout.SetOrientation( LinearLayout::Orientation::VERTICAL );
+  layout.SetOrientation( LinearLayout::Orientation::HORIZONTAL );
+  layout.SetAlignment( LinearLayout::Alignment::CENTER_VERTICAL );
   DevelControl::SetLayout( mLinearContainer, layout );
 
   mLinearContainer.SetParentOrigin( ParentOrigin::CENTER );
@@ -127,6 +141,7 @@ void LinearExample::Remove()
   {
     UnparentAndReset( mDirectionButton );
     UnparentAndReset( mRotateButton );
+    UnparentAndReset( mAlignmentButton );
     UnparentAndReset( mLinearContainer);
   }
 }
@@ -134,6 +149,8 @@ void LinearExample::Remove()
 // Mirror items in layout
 bool LinearExample::OnDirectionClicked( Button button )
 {
+  auto layout = LinearLayout::DownCast( DevelControl::GetLayout( mLinearContainer ) );
+  layout.SetOrientation( LinearLayout::Orientation::HORIZONTAL );
   if( !mLTRDirection )
   {
     mDirectionButton.SetProperty( PushButton::Property::UNSELECTED_ICON, LTR_IMAGE );
@@ -157,10 +174,41 @@ bool LinearExample::OnRotateClicked( Button button )
   if( layout.GetOrientation() == LinearLayout::Orientation::VERTICAL )
   {
     layout.SetOrientation( LinearLayout::Orientation::HORIZONTAL );
+    layout.SetAlignment(LinearLayout::Alignment::CENTER_VERTICAL );
   }
   else
   {
     layout.SetOrientation( LinearLayout::Orientation::VERTICAL );
+    layout.SetAlignment( LinearLayout::Alignment::CENTER_HORIZONTAL );
+  }
+  return true;
+}
+
+bool LinearExample::OnAlignmentClicked( Button button )
+{
+  auto layout = LinearLayout::DownCast( DevelControl::GetLayout( mLinearContainer ) );
+  if ( layout.GetAlignment() == LinearLayout::Alignment::CENTER_VERTICAL ) {
+    layout.SetAlignment( LinearLayout::Alignment::BEGIN );
+  }
+  else if ( layout.GetAlignment() == LinearLayout::Alignment::BEGIN )
+  {
+    layout.SetAlignment( LinearLayout::Alignment::END );
+  }
+  else if ( layout.GetAlignment() == LinearLayout::Alignment::END )
+  {
+    layout.SetAlignment( LinearLayout::Alignment::CENTER_HORIZONTAL);
+  }
+  else if ( layout.GetAlignment() == LinearLayout::Alignment::CENTER_HORIZONTAL )
+  {
+    layout.SetAlignment( LinearLayout::Alignment::TOP );
+  }
+  else if ( layout.GetAlignment() == LinearLayout::Alignment::TOP )
+  {
+    layout.SetAlignment( LinearLayout::Alignment::BOTTOM );
+  }
+  else if ( layout.GetAlignment() == LinearLayout::Alignment::BOTTOM )
+  {
+    layout.SetAlignment( LinearLayout::Alignment::CENTER_VERTICAL );
   }
   return true;
 }
index c170e0f..ac7b33c 100644 (file)
@@ -53,9 +53,13 @@ private:
   // Alternates the linear layout from horizontal to vertical
   bool OnRotateClicked( Button button );
 
+  // Cycles through alignment options
+  bool OnAlignmentClicked( Button button );
+
 private:
   PushButton mDirectionButton;
   PushButton mRotateButton;
+  PushButton mAlignmentButton;
   Control mLinearContainer;
   bool mLTRDirection;
 }; // class LinearContainer