diff options
-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; |