ScrollView: Avoid unintentional contraints on X/Y properties
[platform/core/uifw/dali-toolkit.git] / base / dali-toolkit / internal / focus-manager / focus-manager-impl.cpp
index 2ca17e5..cb1ce25 100644 (file)
@@ -548,16 +548,6 @@ bool FocusManager::GetWrapMode() const
   return mIsWrapped;
 }
 
-void FocusManager::SetEndCapFeedbackEnabled(bool enabled)
-{
-  mIsEndcapFeedbackEnabled = enabled;
-}
-
-bool FocusManager::GetEndCapFeedbackEnabled() const
-{
-  return mIsEndcapFeedbackEnabled;
-}
-
 void FocusManager::SetFocusIndicatorActor(Actor indicator)
 {
   mFocusIndicatorActor = indicator;
@@ -576,22 +566,22 @@ bool FocusManager::DoMoveFocus(FocusIDIter focusIDIter, bool forward, bool wrapp
   if( (forward && ++focusIDIter == mFocusIDContainer.end())
     || (!forward && focusIDIter-- == mFocusIDContainer.begin()) )
   {
-    if(wrapped)
+    if(mIsEndcapFeedbackEnabled)
     {
-      if(mIsEndcapFeedbackEnabled)
+      if(mIsEndcapFeedbackPlayed == false)
       {
-        if(mIsEndcapFeedbackPlayed == false)
-        {
-          // play sound & skip to move once
-          Dali::SoundPlayer soundPlayer = Dali::SoundPlayer::Get();
-          soundPlayer.PlaySound(FOCUS_CHAIN_END_SOUND_FILE);
+        // play sound & skip moving once
+        Dali::SoundPlayer soundPlayer = Dali::SoundPlayer::Get();
+        soundPlayer.PlaySound(FOCUS_CHAIN_END_SOUND_FILE);
 
-          mIsEndcapFeedbackPlayed = true;
-          return true;
-        }
-        mIsEndcapFeedbackPlayed = false;
+        mIsEndcapFeedbackPlayed = true;
+        return true;
       }
+      mIsEndcapFeedbackPlayed = false;
+    }
 
+    if(wrapped)
+    {
       if(forward)
       {
         focusIDIter = mFocusIDContainer.begin();
@@ -604,12 +594,6 @@ bool FocusManager::DoMoveFocus(FocusIDIter focusIDIter, bool forward, bool wrapp
     }
     else
     {
-      if(mIsEndcapFeedbackEnabled)
-      {
-        Dali::SoundPlayer soundPlayer = Dali::SoundPlayer::Get();
-        soundPlayer.PlaySound(FOCUS_CHAIN_END_SOUND_FILE);
-      }
-
       DALI_LOG_INFO( gLogFilter, Debug::General, "[%s:%d] Overshot\n", __FUNCTION__, __LINE__);
       // Send notification for handling overshooted situation
       mFocusOvershotSignalV2.Emit(GetCurrentFocusActor(), forward ? Toolkit::FocusManager::OVERSHOT_NEXT : Toolkit::FocusManager::OVERSHOT_PREVIOUS);
@@ -708,10 +692,11 @@ bool FocusManager::ChangeAccessibilityStatus()
   return true;
 }
 
-bool FocusManager::AccessibilityActionNext()
+bool FocusManager::AccessibilityActionNext(bool allowEndFeedback)
 {
   if(mIsAccessibilityTtsEnabled)
   {
+    mIsEndcapFeedbackEnabled = allowEndFeedback;
     return MoveFocusForward();
   }
   else
@@ -720,10 +705,11 @@ bool FocusManager::AccessibilityActionNext()
   }
 }
 
-bool FocusManager::AccessibilityActionPrevious()
+bool FocusManager::AccessibilityActionPrevious(bool allowEndFeedback)
 {
   if(mIsAccessibilityTtsEnabled)
   {
+    mIsEndcapFeedbackEnabled = allowEndFeedback;
     return MoveFocusBackward();
   }
   else
@@ -772,7 +758,7 @@ bool FocusManager::AccessibilityActionRead(bool allowReadAgain)
   return ret;
 }
 
-bool FocusManager::AccessibilityActionReadNext()
+bool FocusManager::AccessibilityActionReadNext(bool allowEndFeedback)
 {
   if(mIsAccessibilityTtsEnabled)
   {
@@ -784,7 +770,7 @@ bool FocusManager::AccessibilityActionReadNext()
   }
 }
 
-bool FocusManager::AccessibilityActionReadPrevious()
+bool FocusManager::AccessibilityActionReadPrevious(bool allowEndFeedback)
 {
   if(mIsAccessibilityTtsEnabled)
   {
@@ -858,6 +844,21 @@ bool FocusManager::AccessibilityActionBack()
   return mIsAccessibilityTtsEnabled;
 }
 
+bool FocusManager::AccessibilityActionTouch(const TouchEvent& touchEvent)
+{
+  bool handled = false;
+
+  // TODO: Need to convert the touchevent for the focused actor?
+
+  Dali::Toolkit::Control control = Dali::Toolkit::Control::DownCast(GetCurrentFocusActor());
+  if(control)
+  {
+    handled = control.GetImplementation().OnAccessibilityTouch(touchEvent);
+  }
+
+  return handled;
+}
+
 bool FocusManager::HandlePanGesture(const Integration::PanGestureEvent& panEvent)
 {
   bool handled = false;