void AccessibilityAdaptor::EnableAccessibility(bool enabled)
{
+ SetForcedEnable( true );
if(enabled)
{
Internal::Adaptor::AccessibilityAdaptor::GetImplementation(*this).EnableAccessibility();
return Internal::Adaptor::AccessibilityAdaptor::GetImplementation(*this).IsEnabled();
}
+void AccessibilityAdaptor::SetForcedEnable( bool forced )
+{
+ Internal::Adaptor::AccessibilityAdaptor::GetImplementation(*this).SetForcedEnable(forced);
+}
+
void AccessibilityAdaptor::SetActionHandler(AccessibilityActionHandler& handler)
{
Internal::Adaptor::AccessibilityAdaptor::GetImplementation(*this).SetActionHandler(handler);
bool IsEnabled() const;
/**
+ * @brief Sets Accessibility enabled forcibly.
+ * @param forced Whether accessibility sets enabled forcibly
+ */
+ void SetForcedEnable( bool forced );
+
+ /**
* @brief Set the handler to handle accessibility actions.
*
* @param[in] handler The Accessibility action handler.
#include <dali/internal/accessibility/common/accessibility-adaptor-impl.h>
// EXTERNAL INCLUDES
+#include <system_settings.h>
#include <dali/public-api/object/type-registry.h>
#include <dali/integration-api/debug.h>
#include <dali/integration-api/events/touch-event-integ.h>
AccessibilityAdaptor::AccessibilityAdaptor()
: mReadPosition(),
mActionHandler( NULL ),
- mIsEnabled( false )
+ mIsEnabled( false ),
+ mIsForced( false )
{
mAccessibilityGestureDetector = new AccessibilityGestureDetector();
}
void AccessibilityAdaptor::EnableAccessibility()
{
+ bool accessibilityState = false;
+ system_settings_get_value_bool( SYSTEM_SETTINGS_KEY_ACCESSIBILITY_TTS, &accessibilityState );
+ if(accessibilityState == false)
+ {
+ DALI_LOG_ERROR("The Current Accessibility system cannot run. \n");
+ return;
+ }
+
if(mIsEnabled == false)
{
mIsEnabled = true;
return mIsEnabled;
}
+void AccessibilityAdaptor::SetForcedEnable( bool forced )
+{
+ mIsForced = forced;
+}
+
+bool AccessibilityAdaptor::IsForcedEnable() const
+{
+ return mIsForced;
+}
+
Vector2 AccessibilityAdaptor::GetReadPosition() const
{
return mReadPosition;
bool IsEnabled() const;
/**
+ * @copydoc Dali::AccessibilityAdaptor::SetForcedEnable()
+ */
+ void SetForcedEnable( bool forced );
+
+ /**
+ * Whether the accessibility is enabled forcibly or not
+ */
+ bool IsForcedEnable() const;
+
+ /**
* @copydoc Dali::AccessibilityAdaptor::GetReadPosition() const
*/
Vector2 GetReadPosition() const;
bool mIsEnabled : 1; ///< enable/disable the accessibility action
+ bool mIsForced : 1; ///< Is the accessibility enabled forcibly
+
public:
// Helpers for public-api forwarding methods
return;
}
+ if( !accessibilityAdaptor->IsEnabled() )
+ {
+ DALI_LOG_ERROR( "The current dali accessibility is not available. \n" );
+ return;
+ }
+
if( ( info.quickpanelInfo & ( 1 << QUICKPANEL_TYPE_SYSTEM_DEFAULT ) ) && ( info.quickpanelInfo & ( 1 << QUICKPANEL_TYPE_APPS_MENU ) ) )
{
DALI_LOG_ERROR("Quickpanel is top now, so all dali apps should be stopped \n");
}
if( ( ( info & ( 1 << QUICKPANEL_TYPE_SYSTEM_DEFAULT ) ) && ( info & ( 1 << QUICKPANEL_TYPE_APPS_MENU ) ) ) || // Both QuickPanel and Apps are shown
- ( info & ( 1 << QUICKPANEL_TYPE_APPS_MENU ) ) || // Only Apps menu (dali application) is shown
( info & ( 1 << QUICKPANEL_TYPE_SYSTEM_DEFAULT ) ) ) // QuickPanel is shown
{
// dali apps should be disabled.
+ DALI_LOG_INFO( gSelectionEventLogFilter, Debug::General, "OnAccessibilityQuickpanelChanged: Quickpanel show -> DisableAccessibility \n" );
accessibilityAdaptor->DisableAccessibility();
}
+ else if( info & ( 1 << QUICKPANEL_TYPE_APPS_MENU ) ) // Only Apps menu (dali application) is shown
+ {
+ if( !accessibilityAdaptor->IsForcedEnable() ) // It is not in case of that an application controls the accessibility status itself
+ {
+ DALI_LOG_INFO( gSelectionEventLogFilter, Debug::General, "OnAccessibilityQuickpanelChanged: Only Apps show, but not forced dali -> DisableAccessibility \n" );
+ accessibilityAdaptor->DisableAccessibility();
+ }
+ else
+ {
+ DALI_LOG_INFO( gSelectionEventLogFilter, Debug::General, "OnAccessibilityQuickpanelChanged: Only Apps show and it is a forced dali -> EnableAccessibility \n" );
+ accessibilityAdaptor->EnableAccessibility();
+ }
+ }
else
{
+ DALI_LOG_INFO( gSelectionEventLogFilter, Debug::General, "OnAccessibilityQuickpanelChanged: Nothing shows -> EnableAccessibility \n" );
// dali app should be enabled.
accessibilityAdaptor->EnableAccessibility();
}