diff options
author | Pekka Pessi <Pekka.Pessi@nokia.com> | 2010-10-12 18:33:24 +0300 |
---|---|---|
committer | Pekka Pessi <Pekka.Pessi@nokia.com> | 2010-10-12 18:34:16 +0300 |
commit | 66c14dc4ad4984d3641cc7073e2482b28ac21377 (patch) | |
tree | f1d7b0b4a85719accab169684d6cdc3c6870201c | |
parent | e99ee97cdc99f3315e10c35393199cf67c3cd866 (diff) |
ring-text-manager: add connected check
Allow connection to become connected without SMS. Text manager is
considered connected if both connection and ModemSMSService are
connected.
-rw-r--r-- | src/ring-connection.c | 17 | ||||
-rw-r--r-- | src/ring-text-manager.c | 26 |
2 files changed, 33 insertions, 10 deletions
diff --git a/src/ring-connection.c b/src/ring-connection.c index dfe165d..bda967e 100644 --- a/src/ring-connection.c +++ b/src/ring-connection.c @@ -1056,12 +1056,19 @@ ring_connection_modem_connected(ModemService *modem, } } - if (!ring_text_manager_start_connecting(priv->text, - modem_path, &error)) { + /* + * XXX if sms atom is added after transition to online + * we don't ever get text manager connected + * Only way to use SMS is to start ring after modem is in online + */ + if (modem_service_supports_sms(modem)) { + if (!ring_text_manager_start_connecting(priv->text, + modem_path, &error)) { - DEBUG("ring_text_manager_start_connecting: " GERROR_MSG_FMT, - GERROR_MSG_CODE(error)); - g_clear_error(&error); + DEBUG("ring_text_manager_start_connecting: " GERROR_MSG_FMT, + GERROR_MSG_CODE(error)); + g_clear_error(&error); + } } } diff --git a/src/ring-text-manager.c b/src/ring-text-manager.c index 578d689..58b99dc 100644 --- a/src/ring-text-manager.c +++ b/src/ring-text-manager.c @@ -109,6 +109,8 @@ static void on_connection_status_changed(RingConnection *connection, static void on_sms_service_connected(ModemSMSService *sms, gpointer _self); +static void ring_text_manager_connected(RingTextManager *self); + static void ring_text_manager_disconnect(RingTextManager *self); static gboolean ring_text_requestotron(RingTextManager *self, @@ -402,11 +404,7 @@ on_connection_status_changed(RingConnection *connection, break; case TP_CONNECTION_STATUS_CONNECTED: - if (priv->smsc && strlen(priv->smsc)) - modem_sms_set_sc_address(priv->sms_service, priv->smsc, NULL, NULL); - - /* XXX - get list of spooled sms */ - + ring_text_manager_connected(self); break; case TP_CONNECTION_STATUS_DISCONNECTED: @@ -433,10 +431,28 @@ on_sms_service_connected(ModemSMSService *sms, else priv->status = TP_CONNECTION_STATUS_DISCONNECTED; + ring_text_manager_connected(self); + ring_connection_check_status(RING_CONNECTION(priv->connection)); } static void +ring_text_manager_connected(RingTextManager *self) +{ + RingTextManagerPrivate *priv = self->priv; + + if (priv->status != TP_CONNECTION_STATUS_CONNECTED) + return; + if (priv->cstatus != TP_CONNECTION_STATUS_CONNECTED) + return; + + if (priv->smsc && strlen(priv->smsc)) + modem_sms_set_sc_address(priv->sms_service, priv->smsc, NULL, NULL); + + /* XXX - get list of spooled sms */ +} + +static void ring_text_manager_disconnect(RingTextManager *self) { RingTextManagerPrivate *priv = self->priv; |