Internal::Adaptor::ImfManager::GetImplementation(*this).ApplyOptions( options );
}
+void ImfManager::SetInputPanelUserData( const std::string& data )
+{
+ Internal::Adaptor::ImfManager::GetImplementation(*this).SetInputPanelUserData( data );
+}
+
+void ImfManager::GetInputPanelUserData( std::string& data )
+{
+ Internal::Adaptor::ImfManager::GetImplementation(*this).GetInputPanelUserData( data );
+}
+
+Dali::ImfManager::State ImfManager::GetInputPanelState()
+{
+ return Internal::Adaptor::ImfManager::GetImplementation(*this).GetInputPanelState();
+}
+
+void ImfManager::SetReturnKeyState( bool visible )
+{
+ Internal::Adaptor::ImfManager::GetImplementation(*this).SetReturnKeyState( visible );
+}
+
+void ImfManager::AutoEnableInputPanel( bool enabled )
+{
+ Internal::Adaptor::ImfManager::GetImplementation(*this).AutoEnableInputPanel( enabled );
+}
+
+void ImfManager::ShowInputPanel()
+{
+ Internal::Adaptor::ImfManager::GetImplementation(*this).ShowInputPanel();
+}
+
+void ImfManager::HideInputPanel()
+{
+ Internal::Adaptor::ImfManager::GetImplementation(*this).HideInputPanel();
+}
+
ImfManager::ImfManagerSignalType& ImfManager::ActivatedSignal()
{
return Internal::Adaptor::ImfManager::GetImplementation(*this).ActivatedSignal();
PREEDIT, ///< Pre-Edit changed
COMMIT, ///< Commit recieved
DELETESURROUNDING, ///< Event to delete a range of characters from the string
- GETSURROUNDING ///< Event to query string and cursor position
+ GETSURROUNDING, ///< Event to query string and cursor position
+ PRIVATECOMMAND ///< Private command sent from the input panel
+ };
+
+ /**
+ * @brief Enumeration for state of the input panel.
+ */
+ enum State
+ {
+ DEFAULT = 0, ///< Unknown state
+ SHOW, ///< Input panel is shown
+ HIDE, ///< Input panel is hidden
+ WILL_SHOW ///< Input panel in process of being shown
};
/**
*/
void ApplyOptions( const InputMethodOptions& options );
+ /**
+ * @brief Sets up the input-panel specific data.
+ * @param[in] data The specific data to be set to the input panel
+ */
+ void SetInputPanelUserData( const std::string& data );
+
+ /**
+ * @brief Gets the specific data of the current active input panel.
+ * @param[in] data The specific data to be got from the input panel
+ */
+ void GetInputPanelUserData( std::string& data );
+
+ /**
+ * @brief Gets the state of the current active input panel.
+ * @return The state of the input panel.
+ */
+ State GetInputPanelState();
+
+ /**
+ * @brief Sets the return key on the input panel to be visible or invisible.
+ *
+ * The default is true.
+ * @param[in] visible True if the return key is visible(enabled), false otherwise.
+ */
+ void SetReturnKeyState( bool visible );
+
+ /**
+ * @brief Enable to show the input panel automatically when focused.
+ * @param[in] enabled If true, the input panel will be shown when focused
+ */
+ void AutoEnableInputPanel( bool enabled );
+
+ /**
+ * @brief Shows the input panel.
+ */
+ void ShowInputPanel();
+
+ /**
+ * @brief Hides the input panel.
+ */
+ void HideInputPanel();
public:
}
}
+/**
+ * Called when the input method sends a private command.
+ */
+void PrivateCommand( void *data, Ecore_IMF_Context *imfContext, void *event_info )
+{
+ if ( data )
+ {
+ ImfManager* imfManager = reinterpret_cast< ImfManager* > ( data );
+ imfManager->SendPrivateCommand( data, imfContext, event_info );
+ }
+}
+
BaseHandle Create()
{
return ImfManager::Get();
if ( mIMFContext )
{
+ ecore_imf_context_del( mIMFContext );
mIMFContext = NULL;
}
}
{
DALI_LOG_INFO( gLogFilter, Debug::General, "ImfManager::ConnectCallbacks\n" );
- ecore_imf_context_event_callback_add( mIMFContext, ECORE_IMF_CALLBACK_PREEDIT_CHANGED, PreEdit, this );
- ecore_imf_context_event_callback_add( mIMFContext, ECORE_IMF_CALLBACK_COMMIT, Commit, this );
- ecore_imf_context_event_callback_add( mIMFContext, ECORE_IMF_CALLBACK_DELETE_SURROUNDING, ImfDeleteSurrounding, this );
+ ecore_imf_context_event_callback_add( mIMFContext, ECORE_IMF_CALLBACK_PREEDIT_CHANGED, PreEdit, this );
+ ecore_imf_context_event_callback_add( mIMFContext, ECORE_IMF_CALLBACK_COMMIT, Commit, this );
+ ecore_imf_context_event_callback_add( mIMFContext, ECORE_IMF_CALLBACK_DELETE_SURROUNDING, ImfDeleteSurrounding, this );
+ ecore_imf_context_event_callback_add( mIMFContext, ECORE_IMF_CALLBACK_PRIVATE_COMMAND_SEND, PrivateCommand, this );
ecore_imf_context_input_panel_event_callback_add( mIMFContext, ECORE_IMF_INPUT_PANEL_STATE_EVENT, InputPanelStateChangeCallback, this );
ecore_imf_context_input_panel_event_callback_add( mIMFContext, ECORE_IMF_INPUT_PANEL_LANGUAGE_EVENT, InputPanelLanguageChangeCallback, this );
{
DALI_LOG_INFO( gLogFilter, Debug::General, "ImfManager::DisconnectCallbacks\n" );
- ecore_imf_context_event_callback_del( mIMFContext, ECORE_IMF_CALLBACK_PREEDIT_CHANGED, PreEdit );
- ecore_imf_context_event_callback_del( mIMFContext, ECORE_IMF_CALLBACK_COMMIT, Commit );
- ecore_imf_context_event_callback_del( mIMFContext, ECORE_IMF_CALLBACK_DELETE_SURROUNDING, ImfDeleteSurrounding );
+ ecore_imf_context_event_callback_del( mIMFContext, ECORE_IMF_CALLBACK_PREEDIT_CHANGED, PreEdit );
+ ecore_imf_context_event_callback_del( mIMFContext, ECORE_IMF_CALLBACK_COMMIT, Commit );
+ ecore_imf_context_event_callback_del( mIMFContext, ECORE_IMF_CALLBACK_DELETE_SURROUNDING, ImfDeleteSurrounding );
+ ecore_imf_context_event_callback_del( mIMFContext, ECORE_IMF_CALLBACK_PRIVATE_COMMAND_SEND, PrivateCommand );
ecore_imf_context_input_panel_event_callback_del( mIMFContext, ECORE_IMF_INPUT_PANEL_STATE_EVENT, InputPanelStateChangeCallback );
ecore_imf_context_input_panel_event_callback_del( mIMFContext, ECORE_IMF_INPUT_PANEL_LANGUAGE_EVENT, InputPanelLanguageChangeCallback );
}
}
+/**
+ * Called when the input method sends a private command.
+ */
+void ImfManager::SendPrivateCommand( void* data, Ecore_IMF_Context* imfContext, void* event_info )
+{
+ DALI_LOG_INFO( gLogFilter, Debug::General, "ImfManager::SendPrivateCommand\n" );
+
+ if( Dali::Adaptor::IsAvailable() )
+ {
+ const char* privateCommandSendEvent = static_cast<const char*>( event_info );
+
+ Dali::ImfManager::ImfEventData imfData( Dali::ImfManager::PRIVATECOMMAND, privateCommandSendEvent, 0, 0 );
+ Dali::ImfManager handle( this );
+ mEventSignal.Emit( handle, imfData );
+ }
+}
+
void ImfManager::NotifyCursorPosition()
{
DALI_LOG_INFO( gLogFilter, Debug::General, "ImfManager::NotifyCursorPosition\n" );
}
}
+void ImfManager::SetInputPanelUserData( const std::string& data )
+{
+ DALI_LOG_INFO( gLogFilter, Debug::General, "ImfManager::SetInputPanelUserData\n" );
+
+ if( mIMFContext )
+ {
+ int length = data.length();
+ ecore_imf_context_input_panel_imdata_set( mIMFContext, &data, length );
+ }
+}
+
+void ImfManager::GetInputPanelUserData( std::string& data )
+{
+ DALI_LOG_INFO( gLogFilter, Debug::General, "ImfManager::GetInputPanelUserData\n" );
+
+ if( mIMFContext )
+ {
+ int* length = NULL;
+ ecore_imf_context_input_panel_imdata_get( mIMFContext, &data, length );
+ }
+}
+
+Dali::ImfManager::State ImfManager::GetInputPanelState()
+{
+ DALI_LOG_INFO( gLogFilter, Debug::General, "ImfManager::GetInputPanelState\n" );
+
+ if( mIMFContext )
+ {
+ int value;
+ value = ecore_imf_context_input_panel_state_get( mIMFContext );
+
+ switch (value)
+ {
+ case ECORE_IMF_INPUT_PANEL_STATE_SHOW:
+ {
+ return Dali::ImfManager::SHOW;
+ break;
+ }
+
+ case ECORE_IMF_INPUT_PANEL_STATE_HIDE:
+ {
+ return Dali::ImfManager::HIDE;
+ break;
+ }
+
+ case ECORE_IMF_INPUT_PANEL_STATE_WILL_SHOW:
+ {
+ return Dali::ImfManager::WILL_SHOW;
+ break;
+ }
+
+ default:
+ {
+ return Dali::ImfManager::DEFAULT;
+ }
+ }
+ }
+ return Dali::ImfManager::DEFAULT;
+}
+
+void ImfManager::SetReturnKeyState( bool visible )
+{
+ DALI_LOG_INFO( gLogFilter, Debug::General, "ImfManager::SetReturnKeyState\n" );
+
+ if( mIMFContext )
+ {
+ ecore_imf_context_input_panel_return_key_disabled_set( mIMFContext, !visible );
+ }
+}
+
+void ImfManager::AutoEnableInputPanel( bool enabled )
+{
+ DALI_LOG_INFO( gLogFilter, Debug::General, "ImfManager::AutoEnableInputPanel\n" );
+
+ if( mIMFContext )
+ {
+ ecore_imf_context_input_panel_enabled_set( mIMFContext, enabled );
+ }
+}
+
+void ImfManager::ShowInputPanel()
+{
+ DALI_LOG_INFO( gLogFilter, Debug::General, "ImfManager::ShowInputPanel\n" );
+
+ if( mIMFContext )
+ {
+ ecore_imf_context_input_panel_show( mIMFContext );
+ }
+}
+
+void ImfManager::HideInputPanel()
+{
+ DALI_LOG_INFO( gLogFilter, Debug::General, "ImfManager::HideInputPanel\n" );
+
+ if( mIMFContext )
+ {
+ ecore_imf_context_focus_out( mIMFContext );
+ ecore_imf_context_input_panel_hide( mIMFContext );
+ }
+}
+
} // Adaptor
} // Internal
/**
* Connect Callbacks required for IMF.
* If you don't connect imf callbacks, you can't get the key events.
- * The events are PreeditChanged, Commit and DeleteSurrounding.
+ * The events are PreeditChanged, Commit, DeleteSurrounding and PrivateCommand.
*/
void ConnectCallbacks();
*/
void DeleteSurrounding( void *data, Ecore_IMF_Context *imfContext, void *event_info );
+ /**
+ * @copydoc Dali::ImfManager::SendPrivateCommand()
+ */
+ void SendPrivateCommand( void* data, Ecore_IMF_Context* imfContext, void* event_info );
+
// Cursor related
/**
* @copydoc Dali::ImfManager::NotifyCursorPosition()
*/
void ApplyOptions( const InputMethodOptions& options );
+ /**
+ * @copydoc Dali::ImfManager::SetInputPanelUserData()
+ */
+ void SetInputPanelUserData( const std::string& data );
+
+ /**
+ * @copydoc Dali::ImfManager::GetInputPanelUserData()
+ */
+ void GetInputPanelUserData( std::string& data );
+
+ /**
+ * @copydoc Dali::ImfManager::GetInputPanelState()
+ */
+ Dali::ImfManager::State GetInputPanelState();
+
+ /**
+ * @copydoc Dali::ImfManager::SetReturnKeyState()
+ */
+ void SetReturnKeyState( bool visible );
+
+ /**
+ * @copydoc Dali::ImfManager::AutoEnableInputPanel()
+ */
+ void AutoEnableInputPanel( bool enabled );
+
+ /**
+ * @copydoc Dali::ImfManager::ShowInputPanel()
+ */
+ void ShowInputPanel();
+
+ /**
+ * @copydoc Dali::ImfManager::HideInputPanel()
+ */
+ void HideInputPanel();
+
public: // Signals
/**
*/
void ApplyOptions( const InputMethodOptions& options );
+ /**
+ * @copydoc Dali::ImfManager::SetInputPanelUserData()
+ */
+ void SetInputPanelUserData( const std::string& data );
+
+ /**
+ * @copydoc Dali::ImfManager::GetInputPanelUserData()
+ */
+ void GetInputPanelUserData( std::string& data );
+
+ /**
+ * @copydoc Dali::ImfManager::GetInputPanelState()
+ */
+ Dali::ImfManager::State GetInputPanelState();
+
+ /**
+ * @copydoc Dali::ImfManager::SetReturnKeyState()
+ */
+ void SetReturnKeyState( bool visible );
+
+ /**
+ * @copydoc Dali::ImfManager::AutoEnableInputPanel()
+ */
+ void AutoEnableInputPanel( bool enabled );
+
+ /**
+ * @copydoc Dali::ImfManager::ShowInputPanel()
+ */
+ void ShowInputPanel();
+
+ /**
+ * @copydoc Dali::ImfManager::HideInputPanel()
+ */
+ void HideInputPanel();
+
public: // Signals
/**
{
}
+void ImfManager::SetInputPanelUserData( const std::string& data )
+{
+}
+
+void ImfManager::GetInputPanelUserData( std::string& data )
+{
+}
+
+Dali::ImfManager::State ImfManager::GetInputPanelState()
+{
+ return Dali::ImfManager::DEFAULT;
+}
+
+void ImfManager::SetReturnKeyState( bool visible )
+{
+}
+
+void ImfManager::AutoEnableInputPanel( bool enabled )
+{
+}
+
+void ImfManager::ShowInputPanel()
+{
+}
+
+void ImfManager::HideInputPanel()
+{
+}
+
Dali::ImfManager::TextDirection ImfManager::GetTextDirection()
{
TextInputManager::SeatInfo& info = mTextInputManager.GetLastActiveSeat();
*/
void ApplyOptions( const InputMethodOptions& options );
+ /**
+ * @copydoc Dali::ImfManager::SetInputPanelUserData()
+ */
+ void SetInputPanelUserData( const std::string& data );
+
+ /**
+ * @copydoc Dali::ImfManager::GetInputPanelUserData()
+ */
+ void GetInputPanelUserData( std::string& data );
+
+ /**
+ * @copydoc Dali::ImfManager::GetInputPanelState()
+ */
+ Dali::ImfManager::State GetInputPanelState();
+
+ /**
+ * @copydoc Dali::ImfManager::SetReturnKeyState()
+ */
+ void SetReturnKeyState( bool visible );
+
+ /**
+ * @copydoc Dali::ImfManager::AutoEnableInputPanel()
+ */
+ void AutoEnableInputPanel( bool enabled );
+
+ /**
+ * @copydoc Dali::ImfManager::ShowInputPanel()
+ */
+ void ShowInputPanel();
+
+ /**
+ * @copydoc Dali::ImfManager::HideInputPanel()
+ */
+ void HideInputPanel();
+
public: // Signals
/**
if ( mIMFContext )
{
+ ecore_imf_context_del( mIMFContext );
mIMFContext = NULL;
}
}
}
}
+void ImfManager::SetInputPanelUserData( const std::string& data )
+{
+ DALI_LOG_INFO( gLogFilter, Debug::General, "ImfManager::SetInputPanelUserData\n" );
+
+ if( mIMFContext )
+ {
+ int length = data.length();
+ ecore_imf_context_input_panel_imdata_set( mIMFContext, &data, length );
+ }
+}
+
+void ImfManager::GetInputPanelUserData( std::string& data )
+{
+ DALI_LOG_INFO( gLogFilter, Debug::General, "ImfManager::GetInputPanelUserData\n" );
+
+ if( mIMFContext )
+ {
+ int* length = NULL;
+ ecore_imf_context_input_panel_imdata_get( mIMFContext, &data, length );
+ }
+}
+
+Dali::ImfManager::State ImfManager::GetInputPanelState()
+{
+ DALI_LOG_INFO( gLogFilter, Debug::General, "ImfManager::GetInputPanelState\n" );
+
+ if( mIMFContext )
+ {
+ int value;
+ value = ecore_imf_context_input_panel_state_get( mIMFContext );
+
+ switch (value)
+ {
+ case ECORE_IMF_INPUT_PANEL_STATE_SHOW:
+ {
+ return Dali::ImfManager::SHOW;
+ break;
+ }
+
+ case ECORE_IMF_INPUT_PANEL_STATE_HIDE:
+ {
+ return Dali::ImfManager::HIDE;
+ break;
+ }
+
+ case ECORE_IMF_INPUT_PANEL_STATE_WILL_SHOW:
+ {
+ return Dali::ImfManager::WILL_SHOW;
+ break;
+ }
+
+ default:
+ {
+ return Dali::ImfManager::DEFAULT;
+ }
+ }
+ }
+ return Dali::ImfManager::DEFAULT;
+}
+
+void ImfManager::SetReturnKeyState( bool visible )
+{
+ DALI_LOG_INFO( gLogFilter, Debug::General, "ImfManager::SetReturnKeyState\n" );
+
+ if( mIMFContext )
+ {
+ ecore_imf_context_input_panel_return_key_disabled_set( mIMFContext, !visible );
+ }
+}
+
+void ImfManager::AutoEnableInputPanel( bool enabled )
+{
+ DALI_LOG_INFO( gLogFilter, Debug::General, "ImfManager::AutoEnableInputPanel\n" );
+
+ if( mIMFContext )
+ {
+ ecore_imf_context_input_panel_enabled_set( mIMFContext, enabled );
+ }
+}
+
+void ImfManager::ShowInputPanel()
+{
+ DALI_LOG_INFO( gLogFilter, Debug::General, "ImfManager::ShowInputPanel\n" );
+
+ if( mIMFContext )
+ {
+ ecore_imf_context_input_panel_show( mIMFContext );
+ }
+}
+
+void ImfManager::HideInputPanel()
+{
+ DALI_LOG_INFO( gLogFilter, Debug::General, "ImfManager::HideInputPanel\n" );
+
+ if( mIMFContext )
+ {
+ ecore_imf_context_focus_out( mIMFContext );
+ ecore_imf_context_input_panel_hide( mIMFContext );
+ }
+}
+
} // Adaptor
} // Internal