-#ifndef __DALI_INPUT_METHOD_CONTEXT_H__
-#define __DALI_INPUT_METHOD_CONTEXT_H__
+#ifndef DALI_INPUT_METHOD_CONTEXT_H
+#define DALI_INPUT_METHOD_CONTEXT_H
/*
- * Copyright (c) 2018 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2019 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.
// EXTERNAL INCLUDES
#include <dali/public-api/events/key-event.h>
+#include <dali/public-api/common/dali-vector.h>
// EXTERNAL INCLUDES
#include <dali/public-api/object/base-handle.h>
}
}
+class Actor;
+
/**
* @brief The InputMethodContext class
*
public:
/**
- * @brief The direction of text.
- */
+ * @brief The direction of text.
+ */
enum TextDirection
{
LeftToRight,
};
/**
+ * @brief Enumeration for the language mode of the input panel.
+ */
+ enum class InputPanelLanguage
+ {
+ AUTOMATIC, ///< IME Language automatically set depending on the system display
+ ALPHABET ///< Latin alphabet at all times
+ };
+
+ /**
+ * @brief Enumeration for the preedit style types.
+ */
+ enum class PreeditStyle
+ {
+ NONE, ///< None style
+ UNDERLINE, ///< Underline substring style
+ REVERSE, ///< Reverse substring style
+ HIGHLIGHT, ///< Highlight substring style
+ CUSTOM_PLATFORM_STYLE_1, ///< Custom style for platform
+ CUSTOM_PLATFORM_STYLE_2, ///< Custom style for platform
+ CUSTOM_PLATFORM_STYLE_3, ///< Custom style for platform
+ CUSTOM_PLATFORM_STYLE_4 ///< Custom style for platform
+ };
+
+ /**
+ * @brief This structure is for the preedit style types and indices.
+ */
+ struct PreeditAttributeData
+ {
+ PreeditAttributeData()
+ : preeditType( PreeditStyle::NONE ),
+ startIndex( 0 ),
+ endIndex( 0 )
+ {
+ }
+
+ PreeditStyle preeditType; /// The preedit style type
+ unsigned int startIndex; /// The start index of preedit
+ unsigned int endIndex; /// The end index of preedit
+ };
+
+ /**
* @brief This structure is used to pass on data from the InputMethodContext regarding predictive text.
*/
struct EventData
typedef Signal< void ( KeyboardType ) > KeyboardTypeSignalType; ///< keyboard type
typedef Signal< void ( int ) > KeyboardResizedSignalType; ///< Keyboard resized signal
typedef Signal< void ( int ) > LanguageChangedSignalType; ///< Language changed signal
+ typedef Signal< void ( const std::string&, const std::string&, const std::string& ) > ContentReceivedSignalType; ///< Content received signal
+
+ using PreEditAttributeDataContainer = Vector< Dali::InputMethodContext::PreeditAttributeData >;
public:
static InputMethodContext New();
/**
+ * @brief Create a new instance of an InputMethodContext.
+ *
+ * @param[in] actor The actor that uses the new InputMethodContext instance.
+ */
+ static InputMethodContext New( Actor actor );
+
+ /**
* @brief Copy constructor.
*
* @param[in] inputMethodContext InputMethodContext to copy. The copied inputMethodContext will point at the same implementation.
std::string GetInputPanelLocale();
/**
+ * @brief Sets the allowed MIME Types to deliver to the input panel.
+ *
+ * ex) std::string mimeTypes = "text/plain,image/png,image/gif,application/pdf";
+ *
+ * You can receive a media content URI and its MIME type from ContentReceivedSignal(). @see ContentReceivedSignal
+ * @param[in] mimeTypes The allowed MIME types
+ */
+ void SetContentMIMETypes( const std::string& mimeTypes );
+
+ /**
* @brief Process event key down or up, whether filter a key to isf.
*
* @param[in] keyEvent The event key to be handled.
* @return Whether the IM allow text prediction or not.
*/
bool IsTextPredictionAllowed() const;
+
+ /**
+ * @brief Sets the language of the input panel.
+ *
+ * This method can be used when you want to show the English keyboard.
+ * @param[in] language The language to be set to the input panel
+ */
+ void SetInputPanelLanguage( InputPanelLanguage language );
+
+ /**
+ * @brief Gets the language of the input panel.
+ *
+ * @return The language of the input panel
+ */
+ InputPanelLanguage GetInputPanelLanguage() const;
+
+ /**
+ * @brief Sets the x,y coordinates of the input panel.
+ *
+ * @param[in] x The top-left x coordinate of the input panel
+ * @param[in] y The top-left y coordinate of the input panel
+ */
+ void SetInputPanelPosition( unsigned int x, unsigned int y );
+
+ /**
+ * @brief Gets the preedit attributes data.
+ *
+ * @param[out] attrs The preedit attributes data.
+ */
+ void GetPreeditStyle( PreEditAttributeDataContainer& attrs ) const;
+
public:
// Signals
*/
KeyboardTypeSignalType& KeyboardTypeChangedSignal();
+ /**
+ * @brief Connect to this signal to be notified when the content, such as images, of input method is received.
+ *
+ * A callback of the following type may be connected:
+ * @code
+ * void YourCallbackName( const std::string& contentUri, const std::string& description, const std::string& contentMIMEType );
+ * @endcode
+ *
+ * @return The signal to connect to.
+ */
+ ContentReceivedSignalType& ContentReceivedSignal();
+
public:
/**
} // namespace Dali
-#endif // __DALI_INPUT_METHOD_CONTEXT_H__
+#endif // DALI_INPUT_METHOD_CONTEXT_H