Merge "Added IGNORE_SPACES_AFTER_TEXT property" into devel/master
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / internal / text / text-controller.h
index defb8b5..25bb13b 100755 (executable)
@@ -2,7 +2,7 @@
 #define DALI_TOOLKIT_TEXT_CONTROLLER_H
 
 /*
- * Copyright (c) 2017 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2018 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.
@@ -19,7 +19,7 @@
  */
 
 // EXTERNAL INCLUDES
-#include <dali/devel-api/adaptor-framework/imf-manager.h>
+#include <dali/devel-api/adaptor-framework/input-method-context.h>
 #include <dali/public-api/events/gesture.h>
 
 // INTERNAL INCLUDES
@@ -88,7 +88,7 @@ public: // Enumerated types.
   };
 
   /**
-   * @brief Used to distinguish between regular key events and IMF events
+   * @brief Used to distinguish between regular key events and InputMethodContext events
    */
   enum InsertType
   {
@@ -179,8 +179,9 @@ public: // Configure the text controller.
    *
    * @note Selectable or editable controls should call this once after Controller::New().
    * @param[in] decorator Used to create cursor, selection handle decorations etc.
+   * @param[in] inputMethodContext Used to manager ime.
    */
-  void EnableTextInput( DecoratorPtr decorator );
+  void EnableTextInput( DecoratorPtr decorator, InputMethodContext& inputMethodContext );
 
   /**
    * @brief Used to switch between bitmap & vector based glyphs
@@ -406,6 +407,20 @@ public: // Configure the text controller.
   bool IsShiftSelectionEnabled() const;
 
   /**
+   * @brief Enable or disable the grab handles for text selection.
+   *
+   * @param[in] enabled Whether to enable the grab handles
+   */
+  void SetGrabHandleEnabled( bool enabled );
+
+  /**
+   * @brief Returns whether the grab handles are enabled.
+   *
+   * @return True if the grab handles are enabled
+   */
+  bool IsGrabHandleEnabled() const;
+
+  /**
    * @brief Sets input type to password
    *
    * @note The string is displayed hidden character
@@ -856,6 +871,34 @@ public: // Default style & Input style
   unsigned int GetOutlineWidth() const;
 
   /**
+   * @brief Set the background color.
+   *
+   * @param[in] color color of background.
+   */
+  void SetBackgroundColor( const Vector4& color );
+
+  /**
+   * @brief Retrieve the background color.
+   *
+   * @return The background color.
+   */
+  const Vector4& GetBackgroundColor() const;
+
+  /**
+   * @brief Set the background enabled flag.
+   *
+   * @param[in] enabled The background enabled flag.
+   */
+  void SetBackgroundEnabled( bool enabled );
+
+  /**
+   * @brief Returns whether to enable text background or not.
+   *
+   * @return Whether text background is enabled.
+   */
+  bool IsBackgroundEnabled() const;
+
+  /**
    * @brief Sets the emboss's properties string.
    *
    * @note The string is stored to be recovered.
@@ -1188,6 +1231,18 @@ public: // Queries & retrieves.
    */
   void SetVerticalLineAlignment( Toolkit::DevelText::VerticalLineAlignment::Type alignment );
 
+  /**
+   * @brief Retrieves ignoreSpaceAfterText value from model
+   * @return The value of ignoreSpaceAfterText
+   */
+  bool IsIgnoreSpacesAfterText() const;
+
+  /**
+   * @brief Sets ignoreSpaceAfterText value to model
+   * @param[in] ignore The value of ignoreSpacesAfterText for the text
+   */
+  void SetIgnoreSpacesAfterText( bool ignore );
+
 public: // Relayout.
 
   /**
@@ -1236,7 +1291,7 @@ public: // Text-input Event Queuing.
    * @brief Called by editable UI controls when key events are received.
    *
    * @param[in] event The key event.
-   * @param[in] type Used to distinguish between regular key events and IMF events.
+   * @param[in] type Used to distinguish between regular key events and InputMethodContext events.
    */
   bool KeyEvent( const Dali::KeyEvent& event );
 
@@ -1266,13 +1321,13 @@ public: // Text-input Event Queuing.
   void LongPressEvent( Gesture::State state, float x, float y );
 
   /**
-   * @brief Event received from IMF manager
+   * @brief Event received from input method context
    *
-   * @param[in] imfManager The IMF manager.
-   * @param[in] imfEvent The event received.
+   * @param[in] inputMethodContext The input method context.
+   * @param[in] inputMethodContextEvent The event received.
    * @return A data struture indicating if update is needed, cursor position and current text.
    */
-  ImfManager::ImfCallbackData OnImfEvent( ImfManager& imfManager, const ImfManager::ImfEventData& imfEvent );
+  InputMethodContext::CallbackData OnInputMethodContextEvent( InputMethodContext& inputMethodContext, const InputMethodContext::EventData& inputMethodContextEvent );
 
   /**
    * @brief Event from Clipboard notifying an Item has been selected for pasting
@@ -1323,7 +1378,7 @@ private: // Update.
    * @brief Called by editable UI controls when key events are received.
    *
    * @param[in] text The text to insert.
-   * @param[in] type Used to distinguish between regular key events and IMF events.
+   * @param[in] type Used to distinguish between regular key events and InputMethodContext events.
    */
   void InsertText( const std::string& text, InsertType type );
 
@@ -1483,9 +1538,12 @@ protected: // Destructor.
    */
   virtual ~Controller();
 
+public:
+
+  struct Impl; ///< Made public for testing purposes
+
 private:
 
-  struct Impl;
   Impl* mImpl;
 };