summaryrefslogtreecommitdiffstats
path: root/src/stk.c
diff options
context:
space:
mode:
authorPhilippe Nunes <philippe.nunes@linux.intel.com>2011-03-30 12:27:42 +0200
committerDenis Kenzior <denkenz@gmail.com>2011-03-30 12:07:49 -0500
commit5ba49490c807002f9f5ffdbc30589f5783dd633a (patch)
tree035b514656f708af3e5ba5c1dc0921fffccaf247 /src/stk.c
parent91d8423458e215bc70d59e46e809f35888545518 (diff)
downloadofono-5ba49490c807002f9f5ffdbc30589f5783dd633a.tar.bz2
stk: Handle user termination for Send DTMF
Diffstat (limited to 'src/stk.c')
-rw-r--r--src/stk.c26
1 files changed, 21 insertions, 5 deletions
diff --git a/src/stk.c b/src/stk.c
index 94ad396f..780e0c24 100644
--- a/src/stk.c
+++ b/src/stk.c
@@ -473,6 +473,16 @@ static void emit_menu_changed(struct ofono_stk *stk)
g_dbus_send_message(conn, signal);
}
+static void user_termination_cb(enum stk_agent_result result, void *user_data)
+{
+ struct ofono_stk *stk = user_data;
+
+ if (result == STK_AGENT_RESULT_TERMINATE) {
+ stk->respond_on_exit = FALSE;
+ send_simple_response(stk, STK_RESULT_TYPE_USER_TERMINATED);
+ }
+}
+
static void stk_alpha_id_set(struct ofono_stk *stk,
const char *text, const struct stk_text_attribute *attr,
const struct stk_icon_id *icon)
@@ -484,7 +494,13 @@ static void stk_alpha_id_set(struct ofono_stk *stk,
* and no alpha identifier cases equally. This may be changed once
* better idea is found out.
*/
- if (alpha != NULL)
+ if (alpha == NULL)
+ return;
+
+ if (stk->respond_on_exit)
+ stk_agent_display_action(stk->current_agent, alpha, icon,
+ user_termination_cb, stk, NULL);
+ else
stk_agent_display_action_info(stk->current_agent, alpha, icon);
g_free(alpha);
@@ -2329,10 +2345,6 @@ static gboolean handle_command_send_dtmf(const struct stk_command *cmd,
return TRUE;
}
- stk_alpha_id_set(stk, cmd->send_dtmf.alpha_id,
- &cmd->send_dtmf.text_attr,
- &cmd->send_dtmf.icon_id);
-
/*
* Note that we don't strictly require an agent to be connected,
* but to comply with 6.4.24 we need to send a End Session when
@@ -2342,6 +2354,10 @@ static gboolean handle_command_send_dtmf(const struct stk_command *cmd,
stk->cancel_cmd = send_dtmf_cancel;
stk->dtmf_id = err;
+ stk_alpha_id_set(stk, cmd->send_dtmf.alpha_id,
+ &cmd->send_dtmf.text_attr,
+ &cmd->send_dtmf.icon_id);
+
return FALSE;
}