summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPekka Pessi <Pekka.Pessi@nokia.com>2010-10-12 18:33:24 +0300
committerPekka Pessi <Pekka.Pessi@nokia.com>2010-10-12 18:34:16 +0300
commit66c14dc4ad4984d3641cc7073e2482b28ac21377 (patch)
treef1d7b0b4a85719accab169684d6cdc3c6870201c
parente99ee97cdc99f3315e10c35393199cf67c3cd866 (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.c17
-rw-r--r--src/ring-text-manager.c26
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;