#include <dali-toolkit/internal/text/text-selectable-control-interface.h>
#include <dali-toolkit/public-api/text/text-enumerations.h>
-namespace Dali
-{
-namespace Toolkit
-{
-namespace Text
+namespace Dali::Toolkit::Text
{
class Controller;
class ControlInterface;
*/
enum SelectionType
{
- INTERACTIVE = 0x0000,
- ALL = 0x0001,
- NONE = 0x0002
+ INTERACTIVE = 0x0000, ///< Select the word where the cursor is located.
+ ALL = 0x0001, ///< Select the whole text.
+ NONE = 0x0002, ///< Unselect the whole text.
+ RANGE = 0x0003 ///< Select the range text.
};
typedef IntrusivePtr<Controller> ControllerPtr;
*
* @return A pointer to a new Controller.
*/
- static ControllerPtr New();
+ static ControllerPtr New()
+ {
+ return ControllerPtr(new Controller());
+ }
/**
* @brief Create a new instance of a Controller.
*
* @return A pointer to a new Controller.
*/
- static ControllerPtr New(ControlInterface* controlInterface);
+ static ControllerPtr New(ControlInterface* controlInterface)
+ {
+ return ControllerPtr(new Controller(controlInterface));
+ }
/**
* @brief Create a new instance of a Controller.
static ControllerPtr New(ControlInterface* controlInterface,
EditableControlInterface* editableControlInterface,
SelectableControlInterface* selectableControlInterface,
- AnchorControlInterface* anchorControlInterface);
+ AnchorControlInterface* anchorControlInterface)
+ {
+ return ControllerPtr(new Controller(controlInterface,
+ editableControlInterface,
+ selectableControlInterface,
+ anchorControlInterface));
+ }
public: // Configure the text controller.
/**
bool IsMarkupProcessorEnabled() const;
/**
+ * @brief Retrieves whether the current text contains anchors.
+ *
+ * @return @e true if the current text contains anchors. @e false.
+ */
+ bool HasAnchors() const;
+
+ /**
* @brief Enables/disables the auto text scrolling
*
* By default is disabled.
* @brief Used to set the Primary cursor position.
*
* @param[in] index for the Primary cursor position.
+ * @param[in] focused true if UI control has gained focus to receive key event, false otherwise.
* @return[in] true if cursor position changed, false otherwise.
*/
- bool SetPrimaryCursorPosition(CharacterIndex index);
+ bool SetPrimaryCursorPosition(CharacterIndex index, bool focused);
/**
* @brief Creates a selection event.
void SelectEvent(float x, float y, SelectionType selection);
/**
+ * @brief Creates a selection event with a selection index.
+ *
+ * It could be called from the SelectText().
+ * The start and end parameters are passed through the event.
+ *
+ * @param[in] start The start selection position.
+ * @param[in] end The end selection position.
+ * @param[in] selection type like the range.
+ */
+ void SelectEvent(const uint32_t start, const uint32_t end, SelectionType selection);
+
+ /**
* @copydoc Text::SelectableControlInterface::SetTextSelectionRange()
*/
void SetTextSelectionRange(const uint32_t* start, const uint32_t* end);
void SelectWholeText();
/**
+ * @copydoc Text::EditableControlInterface::CopyText()
+ */
+ string CopyText();
+
+ /**
+ * @copydoc Text::EditableControlInterface::CutText()
+ */
+ string CutText();
+
+ /**
+ * @copydoc Text::EditableControlInterface::PasteText()
+ */
+ void PasteText();
+
+ /**
* @copydoc Text::SelectableControlInterface::SelectNone()
*/
void SelectNone();
/**
+ * @copydoc Text::SelectableControlInterface::SelectText()
+ */
+ void SelectText(const uint32_t start, const uint32_t end);
+
+ /**
* @copydoc Text::SelectableControlInterface::GetSelectedText()
*/
string GetSelectedText() const;
void InsertText(const std::string& text, InsertType type);
/**
- * @brief Paste given string into Text model
- * @param[in] stringToPaste this string will be inserted into the text model
+ * @copydoc Text::EditableControlInterface::PasteText()
*/
void PasteText(const std::string& stringToPaste);
*/
void ShowPlaceholderText();
- /**
- * @brief Helper to clear font-specific data (only).
- */
- void ClearFontData();
-
- /**
- * @brief Helper to clear text's style data.
- */
- void ClearStyleData();
-
- /**
- * @brief Used to reset the scroll position after setting a new text.
- */
- void ResetScrollPosition();
-
private: // Private contructors & copy operator.
/**
* @brief Private constructor.
*/
- Controller();
+ Controller()
+ : Controller(nullptr, nullptr, nullptr, nullptr)
+ {
+ }
/**
* @brief Private constructor.
*/
- Controller(ControlInterface* controlInterface);
+ Controller(ControlInterface* controlInterface)
+ : Controller(controlInterface, nullptr, nullptr, nullptr)
+ {
+ }
/**
* @brief Private constructor.
SelectableControlInterface* selectableControlInterface,
AnchorControlInterface* anchorControlInterface);
- // Undefined
- Controller(const Controller& handle);
-
- // Undefined
- Controller& operator=(const Controller& handle);
+ Controller(const Controller& handle) = delete;
+ Controller& operator=(const Controller& handle) = delete;
protected: // Destructor.
/**
private:
struct EventHandler;
struct InputFontHandler;
+ struct InputProperties;
struct PlaceholderHandler;
struct Relayouter;
struct TextUpdater;
Impl* mImpl;
};
-} // namespace Text
-
-} // namespace Toolkit
-
-} // namespace Dali
+} // namespace Dali::Toolkit::Text
#endif // DALI_TOOLKIT_TEXT_CONTROLLER_H