using namespace std;
-static const string __SHOW_TOOLTIP_INVOCATION = "show tooltip";
-static const string __SHOW_NUMBER_INVOCATION = "show numbers";
-static const string __SHOW_GRID_INVOCATION = "show grid";
-
-static const vector<string> __SHOW_NUMBER_KOKR = {"힌트 보여줘", "숫자 힌트 보여줘", "숫자 보여줘", "숫자"};
-static const vector<string> __SHOW_LABEL_KOKR = {"힌트 메세지 보여줘", "텍스트 보여줘", "텍스트", "텍스트 힌트 보여줘"};
-static const vector<string> __SHOW_GRID_KOKR = {"그리드", "그리드 모드", "그리드로 보여줘", "그리드 보여줘"};
-static const vector<string> __REFRESH_WINDOW_INFO = {"화면 갱신해줘", "화면 업데이트", "리프레시", "새로고침", "새로 고침"};
-static const vector<string> __TURN_OF_REQUEST = {"동작 그만", "이제 그만"};
+static const string __PRE_DEFINED_COMMANDS_FILE_PATH = "/usr/share/iu/voice_touch_commands.json";
+
+static const string __PRE_DEFINED_SHOW_NUMBER = "SHOW_NUMBER";
+static const string __PRE_DEFINED_SHOW_LABEL = "SHOW_LABEL";
+static const string __PRE_DEFINED_SHOW_GRID = "SHOW_GRID";
+static const string __PRE_DEFINED_REFRESH_WINDOW_INFO = "REFRESH_WINDOW_INFO";
+static const string __PRE_DEFINED_REQUEST_TURNING_OFF = "REQUEST_TURNING_OFF";
+static const string __PRE_DEFINED_OPERATION_PRESS_BACK = "OPERATION_PRESS_BACK";
+static const string __PRE_DEFINED_OPERATION_PRESS_UP = "OPERATION_PRESS_UP";
+static const string __PRE_DEFINED_OPERATION_PRESS_DOWN = "OPERATION_PRESS_DOWN";
+static const string __PRE_DEFINED_OPERATION_PRESS_LEFT = "OPERATION_PRESS_LEFT";
+static const string __PRE_DEFINED_OPERATION_PRESS_RIGHT = "OPERATION_PRESS_RIGHT";
+static const string __PRE_DEFINED_OPERATION_PRESS_RETURN = "OPERATION_PRESS_RETURN";
+static const string __PRE_DEFINED_OPERATION_TRAY_ON = "OPERATION_TRAY_ON";
+static const string __PRE_DEFINED_OPERATION_TRAY_OFF = "OPERATION_TRAY_OFF";
+static const string __PRE_DEFINED_OPERATION_PANEL_ON = "OPERATION_PANEL_ON";
+static const string __PRE_DEFINED_OPERATION_PANEL_OFF = "OPERATION_PANEL_OFF";
+
static const map<string, int> __OPERATION_REQUEST = {
- {"뒤로", MMI_VOICE_TOUCH_OPERATION_PRESS_BACK},
- {"위", MMI_VOICE_TOUCH_OPERATION_PRESS_UP}, {"위로", MMI_VOICE_TOUCH_OPERATION_PRESS_UP},
- {"아래", MMI_VOICE_TOUCH_OPERATION_PRESS_DOWN}, {"아래로", MMI_VOICE_TOUCH_OPERATION_PRESS_DOWN},
- {"왼쪽", MMI_VOICE_TOUCH_OPERATION_PRESS_LEFT}, {"왼쪽으로", MMI_VOICE_TOUCH_OPERATION_PRESS_LEFT},
- {"오른쪽", MMI_VOICE_TOUCH_OPERATION_PRESS_RIGHT}, {"오른쪽으로", MMI_VOICE_TOUCH_OPERATION_PRESS_RIGHT},
- {"선택", MMI_VOICE_TOUCH_OPERATION_PRESS_RETURN}, {"선택해줘", MMI_VOICE_TOUCH_OPERATION_PRESS_RETURN}, {"클릭", MMI_VOICE_TOUCH_OPERATION_PRESS_RETURN},
- {"트레이 열어", MMI_VOICE_TOUCH_OPERATION_TRAY_ON}, {"트레이 올려", MMI_VOICE_TOUCH_OPERATION_TRAY_ON},
- {"트레이 닫아", MMI_VOICE_TOUCH_OPERATION_TRAY_OFF}, {"트레이 내려", MMI_VOICE_TOUCH_OPERATION_TRAY_OFF},
- {"패널 열어", MMI_VOICE_TOUCH_OPERATION_PANEL_ON}, {"패널 내려", MMI_VOICE_TOUCH_OPERATION_PANEL_ON},
- {"패널 닫아", MMI_VOICE_TOUCH_OPERATION_PANEL_OFF}, {"패널 올려", MMI_VOICE_TOUCH_OPERATION_PANEL_OFF},
+ {__PRE_DEFINED_OPERATION_PRESS_BACK, MMI_VOICE_TOUCH_OPERATION_PRESS_BACK},
+ {__PRE_DEFINED_OPERATION_PRESS_UP, MMI_VOICE_TOUCH_OPERATION_PRESS_UP},
+ {__PRE_DEFINED_OPERATION_PRESS_DOWN, MMI_VOICE_TOUCH_OPERATION_PRESS_DOWN},
+ {__PRE_DEFINED_OPERATION_PRESS_LEFT, MMI_VOICE_TOUCH_OPERATION_PRESS_LEFT},
+ {__PRE_DEFINED_OPERATION_PRESS_RIGHT, MMI_VOICE_TOUCH_OPERATION_PRESS_RIGHT},
+ {__PRE_DEFINED_OPERATION_PRESS_RETURN, MMI_VOICE_TOUCH_OPERATION_PRESS_RETURN},
+ {__PRE_DEFINED_OPERATION_TRAY_ON, MMI_VOICE_TOUCH_OPERATION_TRAY_ON},
+ {__PRE_DEFINED_OPERATION_TRAY_OFF, MMI_VOICE_TOUCH_OPERATION_TRAY_OFF},
+ {__PRE_DEFINED_OPERATION_PANEL_ON, MMI_VOICE_TOUCH_OPERATION_PANEL_ON},
+ {__PRE_DEFINED_OPERATION_PANEL_OFF, MMI_VOICE_TOUCH_OPERATION_PANEL_OFF},
};
static const int __DEFAULT_DISPLAY_WIDTH = 1920;
__findCommandTimer = nullptr;
__makeClickableItemResultTimer = nullptr;
+ __preDefinedCommands.setCommandFilePath(__PRE_DEFINED_COMMANDS_FILE_PATH);
+
InitializeMembers();
}
return false;
}
-static bool __is_exist_in_candidates(const string &text, const vector<string> &candidates)
-{
- for (auto &candidate : candidates) {
- if (0 == text.compare(candidate)) {
- return true;
- }
- }
-
- return false;
-}
-
static void __refresh_screen_inform_event_free(void *data EINA_UNUSED, void *event)
{
mmi_event_refresh_screen_inform *ev = (mmi_event_refresh_screen_inform *)event;
setFinalAsrResult(asrResult, timestamp, provider);
invokeOutputResultCallback(provider.jsonToString());
- bool isRefreshNeed = __is_exist_in_candidates(asrResult, __REFRESH_WINDOW_INFO);
- if (isRefreshNeed) {
+ __preDefinedCommands.setLanguage(voiceEvent->language);
+ auto preDefinedCommand = __preDefinedCommands.findCommand(asrResult);
+
+ if (preDefinedCommand == __PRE_DEFINED_REFRESH_WINDOW_INFO) {
_I("[VoiceTouchEngine] Request to refresh clickable object information.");
setAndSendPreDefinedCommandResult(timestamp, MMI_VOICE_TOUCH_OPERATION_PRESS_BACK);
__invoke_event_for_refreshing_window();
return true;
}
- bool isVoiceTouchOff = __is_exist_in_candidates(asrResult, __TURN_OF_REQUEST);
- if (isVoiceTouchOff) {
+ if (preDefinedCommand == __PRE_DEFINED_REQUEST_TURNING_OFF) {
JsonProvider finishProvider;
finishProvider.setInputEvent(MMI_KEY_VOICE_TOUCH);
setTurnOffEventResult(timestamp, finishProvider);
return true;
}
- auto operationIterator = __OPERATION_REQUEST.find(asrResult);
+ auto operationIterator = __OPERATION_REQUEST.find(preDefinedCommand);
if (operationIterator != __OPERATION_REQUEST.end()) {
int operation = operationIterator->second;
setAndSendPreDefinedCommandResult(timestamp, operation);
return true;
}
- voice_touch_mode_e mode = getVoiceTouchMode(asrResult);
+ voice_touch_mode_e mode = getVoiceTouchMode(preDefinedCommand);
if (mode == VOICE_TOUCH_MODE_INVALID) {
_I("[VoiceTouchEngine] This is not mode command. Try to find proper command");
__asrResult = asrResult;
}
}
-voice_touch_mode_e VoiceTouchEngine::getVoiceTouchMode(const std::string &text)
+voice_touch_mode_e VoiceTouchEngine::getVoiceTouchMode(const std::string &preDefinedCommand)
{
- string loweredText = StringUtil::makeLowerCase(text);
voice_touch_mode_e mode = VOICE_TOUCH_MODE_INVALID;
- if (__is_exist_in_candidates(loweredText, __SHOW_LABEL_KOKR)) {
+ if (preDefinedCommand == __PRE_DEFINED_SHOW_LABEL) {
mode = VOICE_TOUCH_MODE_TOOLTIP_TEXT;
- } else if (__is_exist_in_candidates(loweredText, __SHOW_NUMBER_KOKR)) {
+ } else if (preDefinedCommand == __PRE_DEFINED_SHOW_NUMBER) {
mode = VOICE_TOUCH_MODE_TOOLTIP_NUMBER;
- } else if (__is_exist_in_candidates(loweredText, __SHOW_GRID_KOKR)) {
+ } else if (preDefinedCommand == __PRE_DEFINED_SHOW_GRID) {
mode = VOICE_TOUCH_MODE_GRID;
}
- _I("[VoiceTouchEngine] Mode from text(%s) is (%d)", text.c_str(), static_cast<int>(mode));
+ _I("[VoiceTouchEngine] Mode from pre-defined command(%s) is (%d)", preDefinedCommand.c_str(), static_cast<int>(mode));
return mode;
}