summaryrefslogtreecommitdiff
path: root/lib/dialer/ph-dialer-utils.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/dialer/ph-dialer-utils.c')
-rwxr-xr-xlib/dialer/ph-dialer-utils.c305
1 files changed, 271 insertions, 34 deletions
diff --git a/lib/dialer/ph-dialer-utils.c b/lib/dialer/ph-dialer-utils.c
index 133d51e..9450234 100755
--- a/lib/dialer/ph-dialer-utils.c
+++ b/lib/dialer/ph-dialer-utils.c
@@ -20,59 +20,74 @@
#include <vconf-keys.h>
#include <bundle.h>
#include <aul.h>
-#include <TapiCommon.h>
+#include <tapi_common.h>
#include <ITapiSim.h>
-#include <appsvc.h>
+#include <TapiUtility.h>
+#include <feedback.h>
#include "phone.h"
#include "phone-dialer.h"
+#include "phone-speed.h"
#include "ph-dialer-utils.h"
#include "ph-dialer-view.h"
+#include "ph-dialer-search.h"
#define PH_DIALER_KEY_MAX_LEN 256
+ph_speeddial_info* ph_dialer_util_get_speeddial_by_number(void *data, int number)
+{
+ ph_speeddial_info * find_sd = NULL;
+ ph_dialer_data *dial_d = data;
+ Eina_List *l;
+
+ p_retvm_if(NULL == dial_d->speeddial_list, NULL, "There is no speeddial list");
+
+ EINA_LIST_FOREACH(dial_d->speeddial_list, l, find_sd) {
+ if (!find_sd) continue;
+ if (number == find_sd->dial_number && find_sd->ph_number)
+ break;
+ }
+ return find_sd;
+}
+
void ph_dialer_util_entry_clear(ph_dialer_data *dial_d)
{
ph_dialer_util_del_all_number(dial_d);
- ph_dialer_entry_set_number(dial_d, "", 0, TRUE);
+ ph_dialer_entry_set_number(dial_d, "", 0);
if (dial_d->has_focus) {
elm_object_focus_set(dial_d->entry, EINA_FALSE);
dial_d->has_focus = false;
}
+ ph_dialer_search_request(dial_d, FALSE);
}
void ph_dialer_util_launch_call(ph_dialer_data *dial_d)
{
char num[PH_TEXT_MAX_LEN] = {0};
- char buf[PH_TEXT_MAX_LEN] = {0};
int text_len;
- bundle* b;
+ bundle* kb;
p_retm_if(dial_d == NULL, "Invalid argument: ph_dialer_data *is NULL");
text_len = ph_dialer_util_get_pure_numstr_with_plus(dial_d, num);
if (0 < text_len) {
- b = bundle_create();
- p_retm_if(NULL == b, "bundle_create() Failed");
-
if (PH_DAILER_EMERGENCY == dial_d->run_mode) {
- bundle_add(b, "launch-type", "EMERGENCY");
- bundle_add(b, "number", num);
- aul_launch_app(VOICECALL_PKG, b);
+ kb = bundle_create();
+ p_retm_if(NULL == kb, "bundle_create() Failed");
+ bundle_add(kb, "launch-type", "EMERGENCY");
+ bundle_add(kb, "number", num);
+ aul_launch_app(VOICECALL_PKG, kb);
+ bundle_free(kb);
}
- else {
- appsvc_set_operation(b, APPSVC_OPERATION_CALL);
- snprintf(buf, sizeof(buf), "tel:%s", (char*)num);
- appsvc_set_uri(b, buf);
- appsvc_run_service(b, 0, NULL, NULL);
- }
- bundle_free(b);
+ else
+ phone_launch_voice_call(-1, num);
}
ph_dialer_util_entry_clear(dial_d);
}
+
int ph_dialer_util_get_cursor_pos(ph_dialer_data *dial_d)
{
InputNumber *node;
@@ -200,33 +215,45 @@ static int dialer_util_is_num_length_over(int len)
int ph_dialer_util_append_node_from_numstr(ph_dialer_data *dial_d, char *string)
{
int i = 0;
+ int j = 0;
int len = 0;
InputNumber *node;
InputNumber *tmp_node = NULL;
+ char* tmp_string = NULL;
ph_dialer_util_del_all_number(dial_d);
+ p_retvm_if(NULL == string, 0, "string data is null");
+
node = &dial_d->number_head;
+
len = strlen(string);
if (dialer_util_is_num_length_over(len-1) == TRUE) {
- if (dial_d->popup)
- evas_object_del(dial_d->popup);
- dial_d->popup = phone_create_popup(dial_d->win, T_(PH_GET_TEXT_BASIC, PHTEXT_EXCEED_NUM_MAX_LENGTH), 2.0);
- evas_object_smart_callback_add(dial_d->popup, "timeout", ph_dialer_util_popup_response_cb, dial_d);
+ phone_show_popup(dial_d->navi, T_(PH_GET_TEXT_BASIC, PHTEXT_EXCEED_NUM_MAX_LENGTH), 2.0);
len = PH_DIALER_KEY_MAX_LEN;
string[len] = '\0';
}
- for (; i<len; i++) {
+ tmp_string = calloc(1, len);
+ for(i = 0; i<len; i++) {
+ if(string[i] >= '0' && string[i] <= '9') {
+ tmp_string[j++] = string[i];
+ }
+ }
+ len = strlen(tmp_string);
+ tmp_string[len] = '\0';
+
+ for (i = 0; i<len; i++) {
tmp_node = calloc(1, sizeof(InputNumber));
tmp_node->next = NULL;
tmp_node->prev = node;
- tmp_node->num = string[i];
+ tmp_node->num = tmp_string[i];
node->next = tmp_node;
node = node->next;
}
dial_d->number_cursor = tmp_node;
+ free(tmp_string);
return len;
}
@@ -241,10 +268,7 @@ int ph_dialer_util_append_node_from_numstr_with_strip(ph_dialer_data *dial_d, ch
node = &dial_d->number_head;
len = strlen(string);
if (dialer_util_is_num_length_over(len-1) == TRUE) {
- if (dial_d->popup)
- evas_object_del(dial_d->popup);
- dial_d->popup = phone_create_popup(dial_d->win, T_(PH_GET_TEXT_BASIC, PHTEXT_EXCEED_NUM_MAX_LENGTH), 2.0);
- evas_object_smart_callback_add(dial_d->popup, "timeout", ph_dialer_util_popup_response_cb, dial_d);
+ phone_show_popup(dial_d->navi, T_(PH_GET_TEXT_BASIC, PHTEXT_EXCEED_NUM_MAX_LENGTH), 2.0);
len = PH_DIALER_KEY_MAX_LEN;
string[len] = '\0';
}
@@ -266,6 +290,90 @@ int ph_dialer_util_append_node_from_numstr_with_strip(ph_dialer_data *dial_d, ch
return cnt;
}
+char ph_dialer_util_get_value_word(char in)
+{
+ switch (in) {
+ case '2':
+ return 'a';
+ case '3':
+ return 'd';
+ case '4':
+ return 'g';
+ case '5':
+ return 'j';
+ case '6':
+ return 'm';
+ case '7':
+ return 'p';
+ case '8':
+ return 't';
+ case '9':
+ return 'w';
+ default:
+ return ' ';
+ }
+}
+
+char ph_dialer_util_get_next_value_abcmode(char in)
+{
+ switch (in) {
+ case 'a':
+ return 'b';
+ case 'b':
+ return 'c';
+ case 'c':
+ return 'a';
+ case 'd':
+ return 'e';
+ case 'e':
+ return 'f';
+ case 'f':
+ return 'd';
+ case 'g':
+ return 'h';
+ case 'h':
+ return 'i';
+ case 'i':
+ return 'g';
+ case 'j':
+ return 'k';
+ case 'k':
+ return 'l';
+ case 'l':
+ return 'j';
+ case 'm':
+ return 'n';
+ case 'n':
+ return 'o';
+ case 'o':
+ return 'm';
+ case 'p':
+ return 'q';
+ case 'q':
+ return 'r';
+ case 'r':
+ return 's';
+ case 's':
+ return 'p';
+ case 't':
+ return 'u';
+ case 'u':
+ return 'v';
+ case 'v':
+ return 't';
+ case 'w':
+ return 'x';
+ case 'x':
+ return 'y';
+ case 'y':
+ return 'z';
+ case 'z':
+ return 'w';
+ default:
+ return ' ';
+ }
+}
+
static InputNumber* dialer_util_insert_number_after(InputNumber *node, char num)
{
InputNumber *tmp;
@@ -298,10 +406,7 @@ void ph_dialer_util_insert_number_at_cursor(ph_dialer_data *dial_d, char num)
/* check length */
len = ph_dialer_util_get_numstr_from_node(dial_d, buf);
if (dialer_util_is_num_length_over(len) == TRUE) {
- if (dial_d->popup)
- evas_object_del(dial_d->popup);
- dial_d->popup = phone_create_popup(dial_d->win, T_(PH_GET_TEXT_BASIC, PHTEXT_EXCEED_NUM_MAX_LENGTH), 2.0);
- evas_object_smart_callback_add(dial_d->popup, "timeout", ph_dialer_util_popup_response_cb, dial_d);
+ phone_show_popup(dial_d->navi, T_(PH_GET_TEXT_BASIC, PHTEXT_EXCEED_NUM_MAX_LENGTH), 2.0);
return;
}
@@ -460,13 +565,98 @@ void ph_dialer_util_add_dashes(ph_dialer_data *dial_d, DashMode kMode)
}
}
-void ph_dialer_util_popup_response_cb(void *data, Evas_Object *obj, void *event_info)
+void ph_dialer_util_highlight_substring(char *dest, int dest_len, char *string,
+ char *substr)
+{
+ char middle[PH_TEXT_MAX_LEN] = {0};
+ char first[PH_TEXT_MAX_LEN] = {0};
+ const char *highlight_color = "#00ffff";
+ const char *default_color = "#737373";
+
+ p_retm_if(NULL == string, "string is null");
+
+ if (substr && *substr) {
+ int len = strlen(substr);
+ snprintf(first, sizeof(first), "%s", string);
+ char *last = strcasestr(first, substr);
+ if (last) {
+ int ret;
+ snprintf(middle, strlen(substr)+1, "%s", last);
+ *(last) = '\0';
+ ret = snprintf(dest, dest_len-7, "<left><color=%s>%s</><color=%s>%s</><color=%s>%s</></>",
+ default_color, first, highlight_color, middle, default_color, last+len);
+ snprintf(dest+ret, 7, "</></>");
+ }
+ else
+ snprintf(dest, dest_len, "<left><color=%s>%s</></>", default_color, string);
+ }
+ else
+ snprintf(dest, dest_len, "<left><color=%s>%s</></>", default_color, string);
+}
+
+void ph_dialer_util_highlight_substring_with_pos(char *dest, int dest_len, char *string,
+ int position, int length)
+{
+ char middle[PH_TEXT_MAX_LEN] = {0};
+ char first[PH_TEXT_MAX_LEN] = {0};
+ const char *highlight_color = "#00ffff";
+ const char *default_color = "#737373";
+
+ p_retm_if(NULL == string, "string is null");
+
+ if (0 < length) {
+ int ret;
+ snprintf(first, sizeof(first), "%s", string);
+ snprintf(middle, length+1, "%s", string + position);
+ first[position] = '\0';
+ ret = snprintf(dest, dest_len-7, "<left><color=%s>%s</><color=%s>%s</><color=%s>%s</></>",
+ default_color, first, highlight_color, middle, default_color, string + position + length);
+ snprintf(dest+ret, 7, "</></>");
+ }
+ else
+ snprintf(dest, dest_len, "<left>%s</>", string);
+}
+
+int ph_dialer_util_show_matched_one_number(ph_dialer_data *dial_d, char *name, char *number)
+{
+ PH_FN_CALL;
+ p_retvm_if(dial_d==NULL, 0, "dialer data is null");
+
+ if (dial_d->slide) {
+ edje_object_signal_emit(_EDJ(dial_d->layout), "elm,state,slide,stop", "elm");
+ dial_d->slide = false;
+ }
+
+ edje_object_signal_emit(_EDJ(dial_d->layout), "viewcontrol/search_result", "viewcontrol");
+ edje_object_part_text_set(_EDJ(dial_d->layout), "search_result/item/number/textblock", number);
+
+ if (name && *name) {
+ edje_object_part_text_set(_EDJ(dial_d->layout), "search_result/item/name/text", name);
+ edje_object_signal_emit(_EDJ(dial_d->layout), "viewobject/search_result/search_number", "viewobject/search_result");
+ }
+ else
+ edje_object_signal_emit(_EDJ(dial_d->layout), "viewcontrol/noname", "viewcontrol");
+
+ ph_dialer_update_cnt_btn(dial_d, 1);
+ dial_d->is_show_items = true;
+ return 0;
+}
+
+void ph_dialer_util_speeddial_show_cb(void *data, Evas_Object *obj, void *event_info)
{
ph_dialer_data *dial_d = data;
- evas_object_del(obj);
+ phone_create_speeddial_view(dial_d->ug, dial_d->win, dial_d->navi);
+ evas_object_del(dial_d->popup);
dial_d->popup = NULL;
}
+void ph_dialer_util_show_speeddial_msg(ph_dialer_data *dial_d, const char *msg)
+{
+ char dest[PH_TEXT_MAX_LEN] = {0};
+ snprintf(dest, sizeof(dest), "%s", msg);
+ phone_create_confirm_popup(&dial_d->popup, dial_d->win, msg, ph_dialer_util_speeddial_show_cb, dial_d);
+}
+
void ph_dialer_util_setup_run_mode(ph_dialer_data *dial_d)
{
int ret = 0;
@@ -499,3 +689,50 @@ void ph_dialer_util_setup_run_mode(ph_dialer_data *dial_d)
}
}
+void ph_dialer_util_init_sim_value(ph_dialer_data *dial_d)
+{
+ /* Network MCC */
+ int value = 0;
+ int ret;
+ TelSimImsiInfo_t sim_imsi_info;
+ TapiHandle *handle;
+ ret = vconf_get_int(VCONFKEY_TELEPHONY_PLMN, &value);
+ if (ret < 0)
+ dial_d->cur_mcc = -1;
+ else
+ dial_d->cur_mcc = value / 1000;
+
+ /* SIM MCC/MNC */
+ dial_d->cur_sim_mcc = -1;
+ handle = tel_init(NULL);
+ if (NULL == handle) {
+ ERR("tel_init() Failed");
+ }
+ else {
+ ret = tel_get_sim_imsi(handle, &sim_imsi_info);
+ if (0 == ret)
+ dial_d->cur_sim_mcc = atoi(sim_imsi_info.szMcc);
+ else
+ ERR("tel_get_sim_imsi() Failed(%d)", ret);
+ tel_deinit(handle);
+ }
+ dial_d->cur_cc_index = -1;
+
+ ret = vconf_get_int(VCONFKEY_TELEPHONY_SVC_ROAM, &value);
+ if (ret < 0)
+ dial_d->roaming = 0;
+ else
+ dial_d->roaming = value;
+}
+
+void ph_dialer_util_svi_play(int vibration_key, int sound_key)
+{
+ int effect_status = FALSE;
+ vconf_get_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, &effect_status);
+ if (effect_status)
+ feedback_play_type(FEEDBACK_TYPE_SOUND, sound_key);
+
+ vconf_get_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, &effect_status);
+ if (effect_status)
+ feedback_play_type(FEEDBACK_TYPE_VIBRATION, vibration_key);
+}