\r
#include <isf_control.h>\r
\r
-#include <FAppPkgPackageInfo.h>\r
+#include <FAppPkgPackageAppInfo.h>\r
+#include <FAppPkgPackageManager.h>\r
#include <FBaseColArrayList.h>\r
#include <FBaseColTypes.h>\r
#include <FBaseString.h>\r
using namespace Tizen::Base::Collection;\r
using namespace Tizen::Locales;\r
\r
-static const AppId _PRELOADED_IME_APPID = "PRIVTIME01.ise-default";\r
-static const char* _PRELOADED_IME_UUID = "12aa3425-f88d-45f4-a509-cee8dfe904e3";\r
-\r
namespace Tizen { namespace Ui { namespace Ime {\r
\r
_InputMethodManagerImpl::_InputMethodManagerImpl(void)\r
{\r
result r = E_SUCCESS;\r
\r
- int ospImeCount = 0;\r
-\r
InputMethodInfo* pInputMethodInfo = null;\r
_InputMethodInfoImpl* pInputMethodInfoImpl = null;\r
+ IList* pLanguageList = null;\r
\r
- std::unique_ptr<IList> pLanguageList(null);\r
+ const AppId* pAppId = null;\r
+ const PackageManager* pPackageManager = null;\r
+ PackageAppInfo* pPackageAppInfo = null;\r
\r
std::unique_ptr<ArrayList> pInputMethodInfoList(new(std::nothrow) ArrayList(SingleObjectDeleter));\r
SysTryReturn(NID_UI_IME, pInputMethodInfoList, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");\r
r = pInputMethodInfoList->Construct();\r
SysTryReturn(NID_UI_IME, r == E_SUCCESS, null, r, "[%s] Propagating.", GetErrorMessage(r));\r
\r
- char* pAppRootPath = null;\r
-\r
- // get preloaded IME info\r
+ // add the input method info\r
char** dpList = null;\r
- int preloadedImeCount = isf_control_get_ise_list(&dpList);\r
- SysTryReturn(NID_UI_IME, (dpList != null) && (preloadedImeCount > 0), null, E_SYSTEM, "[E_SYSTEM] A failure occurs from the underlying system.");\r
+ int iseCount = isf_control_get_ise_list(&dpList);\r
+ SysTryReturn(NID_UI_IME, (dpList != null) && (iseCount > 0), null, E_SYSTEM, "[E_SYSTEM] A failure occurs from the underlying system.");\r
\r
int ret = -1;\r
char* pName = null;\r
ISE_TYPE_T type;\r
int option = 0;\r
\r
- int preloadedImeIndex = -1;\r
-\r
- for (int i = 0; i < preloadedImeCount; i++)\r
+ for (int i = 0; i < iseCount; i++)\r
{\r
- if (!strcmp(dpList[i], _PRELOADED_IME_UUID))\r
- {\r
- ret = isf_control_get_ise_info(dpList[i], &pName, &pLanguage, &type, &option);\r
- SysTryCatch(NID_UI_IME, ret == 0, , E_SYSTEM, "[E_SYSTEM] A failure occurs from the underlying system.");\r
-\r
- preloadedImeCount = 1;\r
- preloadedImeIndex = i;\r
- break;\r
- }\r
- }\r
+ ret = isf_control_get_ise_info(dpList[i], &pName, &pLanguage, &type, &option);\r
+ SysTryCatch(NID_UI_IME, ret == 0, , E_SYSTEM, "[E_SYSTEM] A failure occurs from the underlying system.");\r
\r
- // get osp IME info\r
- r = RequestInputMethodAppIdList();\r
- SysTryCatch(NID_UI_IME, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));\r
+ if (type == SOFTWARE_KEYBOARD_ISE)\r
+ {\r
+ pInputMethodInfo = new(std::nothrow) InputMethodInfo();\r
+ SysTryCatch(NID_UI_IME, pInputMethodInfo, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");\r
\r
- // add preloaded IME info\r
- pInputMethodInfo = new(std::nothrow) InputMethodInfo();\r
- SysTryCatch(NID_UI_IME, pInputMethodInfo, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");\r
+ pInputMethodInfoImpl = _InputMethodInfoImpl::GetInstance(*pInputMethodInfo);\r
+ r = GetLastResult();\r
+ SysTryCatch(NID_UI_IME, pInputMethodInfoImpl, , r, "[%s] Propagating.", GetErrorMessage(r));\r
\r
- pInputMethodInfoImpl = _InputMethodInfoImpl::GetInstance(*pInputMethodInfo);\r
- r = GetLastResult();\r
- SysTryCatch(NID_UI_IME, pInputMethodInfoImpl, , r, "[%s] Propagating.", GetErrorMessage(r));\r
+ pInputMethodInfoImpl->SetUuid(dpList[i]);\r
+ pInputMethodInfoImpl->SetName(String(pName));\r
+ pInputMethodInfoImpl->SetType(_ScimDataConverter::ConvertType(type));\r
\r
- pInputMethodInfoImpl->SetAppId(_PRELOADED_IME_APPID);\r
- pInputMethodInfoImpl->SetUuid(dpList[preloadedImeIndex]);\r
- pInputMethodInfoImpl->SetName(String(pName));\r
- pInputMethodInfoImpl->SetType(_ScimDataConverter::ConvertType(type));\r
- pLanguageList.reset(GetInputMethodLanguageListN(pLanguage));\r
- r = GetLastResult();\r
- SysTryCatch(NID_UI_IME, pLanguageList, , r, "[%s] Propagating.", GetErrorMessage(r));\r
- r = pInputMethodInfoImpl->SetLanguageList(*(pLanguageList.get()));\r
- SysTryCatch(NID_UI_IME, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));\r
-\r
- SysSecureLog(NID_UI_IME, "The UUID of the preloaded IME application is %s.", dpList[preloadedImeIndex]);\r
+ pLanguageList = GetInputMethodLanguageListN(pLanguage);\r
+ r = GetLastResult();\r
+ SysTryCatch(NID_UI_IME, pLanguageList, , r, "[%s] Propagating.", GetErrorMessage(r));\r
+ r = pInputMethodInfoImpl->SetLanguageList(*pLanguageList);\r
+ SysTryCatch(NID_UI_IME, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));\r
+ delete pLanguageList;\r
+ pLanguageList = null;\r
+\r
+ r = pInputMethodInfoList->Add(pInputMethodInfo);\r
+ SysTryCatch(NID_UI_IME, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));\r
+ pInputMethodInfo = null;\r
+ }\r
\r
- r = pInputMethodInfoList->Add(pInputMethodInfo);\r
- SysTryCatch(NID_UI_IME, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));\r
- pInputMethodInfo = null;\r
+ free(pName);\r
+ free(pLanguage);\r
+ }\r
\r
free(dpList);\r
- free(pName);\r
- free(pLanguage);\r
\r
- // add osp IME info\r
- ospImeCount = __pInputMethodAppIdList->GetCount();\r
+ // add the appid of the input method\r
+ r = RequestInputMethodAppIdList();\r
+ SysTryCatch(NID_UI_IME, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));\r
\r
- for (int i = 0; i < ospImeCount; i++)\r
+ for (int i = 0; i < __pInputMethodAppIdList->GetCount(); i++)\r
{\r
- AppId* pAppId = static_cast<AppId*>(__pInputMethodAppIdList->GetAt(i));\r
+ pAppId = static_cast<const AppId*>(__pInputMethodAppIdList->GetAt(i));\r
r = GetLastResult();\r
SysTryCatch(NID_UI_IME, pAppId, , r, "[%s] Propagating.", GetErrorMessage(r));\r
\r
- const wchar_t _RESERVED_APP_ID[] = L"PRIVT";\r
- const int _RESERVED_APP_ID_LENGTH = 5;\r
- if (!wcsncmp(pAppId->GetPointer(), _RESERVED_APP_ID, _RESERVED_APP_ID_LENGTH))\r
- {\r
- continue;\r
- }\r
-\r
- String appRootPath;\r
- r = _AppManagerImpl::GetAppRootPath(*pAppId, appRootPath);\r
- SysTryCatch(NID_UI_IME, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));\r
-\r
- pAppRootPath = _StringConverter::CopyToCharArrayN(appRootPath.GetPointer());\r
+ pPackageManager = PackageManager::GetInstance();\r
r = GetLastResult();\r
- SysTryCatch(NID_UI_IME, pAppRootPath, , r, "[%s] Propagating.", GetErrorMessage(r));\r
+ SysTryCatch(NID_UI_IME, pPackageManager, , r, "[%s] Propagating.", GetErrorMessage(r));\r
\r
- pInputMethodInfo = GetInputMethodInfoN(pAppRootPath);\r
+ pPackageAppInfo = pPackageManager->GetPackageAppInfoN(*pAppId);\r
r = GetLastResult();\r
- SysTryCatch(NID_UI_IME, pInputMethodInfo, , r, "[%s] Propagating.", GetErrorMessage(r));\r
+ SysTryCatch(NID_UI_IME, pPackageAppInfo, , r, "[%s] Propagating.", GetErrorMessage(r));\r
\r
- r = pInputMethodInfoList->Add(pInputMethodInfo);\r
- SysTryCatch(NID_UI_IME, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));\r
+ for (int j = 0; j < pInputMethodInfoList->GetCount(); j++)\r
+ {\r
+ pInputMethodInfo = static_cast<InputMethodInfo*>(pInputMethodInfoList->GetAt(j));\r
+ r = GetLastResult();\r
+ SysTryCatch(NID_UI_IME, pInputMethodInfo, , r, "[%s] Propagating.", GetErrorMessage(r));\r
+\r
+ SysLog(NID_UI_IME, "The registered input method names are %S, %S.",\r
+ pInputMethodInfo->GetName().GetPointer(),\r
+ pPackageAppInfo->GetAppDisplayName().GetPointer());\r
+ if (pInputMethodInfo->GetName() == pPackageAppInfo->GetAppDisplayName())\r
+ {\r
+ pInputMethodInfoImpl = _InputMethodInfoImpl::GetInstance(*pInputMethodInfo);\r
+ r = GetLastResult();\r
+ SysTryCatch(NID_UI_IME, pInputMethodInfoImpl, , r, "[%s] Propagating.", GetErrorMessage(r));\r
+\r
+ pInputMethodInfoImpl->SetAppId(*pAppId);\r
+ SysSecureLog(NID_UI_IME, "The AppId, UUID, and the name of the input method is %S, %s, %S respectively.",\r
+ pInputMethodInfoImpl->GetAppId().GetPointer(),\r
+ pInputMethodInfoImpl->GetUuid(),\r
+ pInputMethodInfoImpl->GetName().GetPointer());\r
\r
- delete[] pAppRootPath;\r
+ break;\r
+ }\r
+ }\r
+\r
+ delete pPackageAppInfo;\r
}\r
\r
return pInputMethodInfoList.release();\r
free(pLanguage);\r
\r
delete pInputMethodInfo;\r
- delete[] pAppRootPath;\r
+ delete pLanguageList;\r
+ delete pPackageAppInfo;\r
\r
return null;\r
}\r
{\r
result r = E_SUCCESS;\r
\r
- std::unique_ptr<char[]> pLog(_StringConverter::CopyToCharArrayN(id.GetPointer()));\r
- SysSecureLog(NID_UI_IME, "The application ID is %s.", pLog.get());\r
+ PackageManager* pPackageManager = PackageManager::GetInstance();\r
+ r = GetLastResult();\r
+ SysTryReturnResult(NID_UI_IME, pPackageManager, r, "Propagating.");\r
+\r
+ std::unique_ptr<PackageAppInfo> pPackageAppInfo(pPackageManager->GetPackageAppInfoN(id));\r
+ r = GetLastResult();\r
+ SysTryReturnResult(NID_UI_IME, pPackageAppInfo, r, "Propagating.");\r
+\r
+ std::unique_ptr<IList> pInputMethodInfoList(GetInputMethodInfoListN());\r
+ r = GetLastResult();\r
+ SysTryReturnResult(NID_UI_IME, pInputMethodInfoList, r, "Propagating.");\r
\r
- if (id == _PRELOADED_IME_APPID)\r
+ for (int i = 0; i < pInputMethodInfoList->GetCount(); i++)\r
{\r
- char** dpList = null;\r
- int preloadedImeCount = isf_control_get_ise_list(&dpList);\r
- SysTryReturnResult(NID_UI_IME, (dpList != null) && (preloadedImeCount > 0), E_SYSTEM, "A failure occurs from the underlying system.");\r
+ InputMethodInfo* pInputMethodInfo = static_cast<InputMethodInfo*>(pInputMethodInfoList->GetAt(i));\r
+ r = GetLastResult();\r
+ SysTryReturnResult(NID_UI_IME, pInputMethodInfo, r, "Propagating.");\r
\r
- for (int i = 0; i < preloadedImeCount; i++)\r
+ if (pInputMethodInfo->GetName() == pPackageAppInfo->GetAppDisplayName())\r
{\r
- if (!strcmp(dpList[i], _PRELOADED_IME_UUID))\r
- {\r
- isf_control_set_active_ise_by_uuid(dpList[i]);\r
- break;\r
- }\r
- }\r
+ _InputMethodInfoImpl* pInputMethodInfoImpl = _InputMethodInfoImpl::GetInstance(*pInputMethodInfo);\r
+ r = GetLastResult();\r
+ SysTryReturnResult(NID_UI_IME, pInputMethodInfoImpl, r, "Propagating.");\r
\r
- free(dpList);\r
+ isf_control_set_active_ise_by_uuid(pInputMethodInfoImpl->GetUuid());\r
+ SysSecureLog(NID_UI_IME, "The UUID of the input method to be set is %s.", pInputMethodInfoImpl->GetUuid());\r
\r
- return r;\r
+ break;\r
+ }\r
}\r
\r
- String appRootPath;\r
- r = _AppManagerImpl::GetAppRootPath(id, appRootPath);\r
- SysTryReturnResult(NID_UI_IME, r == E_SUCCESS, r, "Propagating.");\r
-\r
- std::unique_ptr<char[]> pAppRootPath(_StringConverter::CopyToCharArrayN(appRootPath.GetPointer()));\r
- r = GetLastResult();\r
- SysTryReturnResult(NID_UI_IME, pAppRootPath, r, "Propagating.");\r
-\r
- std::unique_ptr<InputMethodInfo> pInputMethodInfo(GetInputMethodInfoN(pAppRootPath.get()));\r
- r = GetLastResult();\r
- SysTryReturnResult(NID_UI_IME, pInputMethodInfo, r, "Propagating.");\r
-\r
- _InputMethodInfoImpl* pInputMethodInfoImpl = _InputMethodInfoImpl::GetInstance(*(pInputMethodInfo.get()));\r
- isf_control_set_active_ise_by_uuid(pInputMethodInfoImpl->GetUuid());\r
-\r
return r;\r
}\r
\r