[empathy] Only show the "Remember password" tickybox if we can do that
- From: Guillaume Desmottes <gdesmott src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [empathy] Only show the "Remember password" tickybox if we can do that
- Date: Thu, 3 Mar 2011 09:26:24 +0000 (UTC)
commit 855095a0e0c5c50f0713caf11afad2329428827b
Author: Danielle Madeley <danielle madeley collabora co uk>
Date: Thu Mar 3 13:35:45 2011 +1100
Only show the "Remember password" tickybox if we can do that
libempathy-gtk/empathy-password-dialog.c | 5 +++-
libempathy/empathy-server-sasl-handler.c | 37 ++++++++++++++++++++++++++++++
libempathy/empathy-server-sasl-handler.h | 3 ++
3 files changed, 44 insertions(+), 1 deletions(-)
---
diff --git a/libempathy-gtk/empathy-password-dialog.c b/libempathy-gtk/empathy-password-dialog.c
index 6a01cd2..a06b71d 100644
--- a/libempathy-gtk/empathy-password-dialog.c
+++ b/libempathy-gtk/empathy-password-dialog.c
@@ -311,7 +311,10 @@ empathy_password_dialog_constructed (GObject *object)
priv->ticky = gtk_check_button_new_with_label (_("Remember password"));
gtk_box_pack_start (box, priv->ticky, FALSE, FALSE, 0);
- gtk_widget_show (priv->ticky);
+
+ /* only show it if we actually support it */
+ if (empathy_server_sasl_handler_can_save_response_somewhere (priv->handler))
+ gtk_widget_show (priv->ticky);
g_signal_connect (dialog, "response",
G_CALLBACK (password_dialog_response_cb), dialog);
diff --git a/libempathy/empathy-server-sasl-handler.c b/libempathy/empathy-server-sasl-handler.c
index b0909e2..d6c81a8 100644
--- a/libempathy/empathy-server-sasl-handler.c
+++ b/libempathy/empathy-server-sasl-handler.c
@@ -498,3 +498,40 @@ empathy_server_sasl_handler_has_password (EmpathyServerSASLHandler *handler)
return (priv->password != NULL);
}
+
+/**
+ * empathy_server_sasl_handler_can_save_response_somewhere:
+ * @self:
+ *
+ * Returns: %TRUE if the response can be saved somewhere, either the keyring
+ * or via Ch.I.CredentialsStorage
+ */
+gboolean
+empathy_server_sasl_handler_can_save_response_somewhere (
+ EmpathyServerSASLHandler *self)
+{
+ EmpathyServerSASLHandlerPriv *priv;
+ gboolean may_save_response, may_save_response_valid;
+ gboolean has_storage_iface;
+
+ g_return_val_if_fail (EMPATHY_IS_SERVER_SASL_HANDLER (self), FALSE);
+
+ priv = self->priv;
+
+ /* determine if we are permitted to save the password locally */
+ may_save_response = tp_asv_get_boolean (
+ tp_channel_borrow_immutable_properties (priv->channel),
+ TP_PROP_CHANNEL_INTERFACE_SASL_AUTHENTICATION_MAY_SAVE_RESPONSE,
+ &may_save_response_valid);
+
+ if (!may_save_response_valid)
+ {
+ DEBUG ("MaySaveResponse unknown, assuming TRUE");
+ may_save_response = TRUE;
+ }
+
+ has_storage_iface = tp_proxy_has_interface_by_id (priv->channel,
+ EMP_IFACE_QUARK_CHANNEL_INTERFACE_CREDENTIALS_STORAGE);
+
+ return may_save_response || has_storage_iface;
+}
diff --git a/libempathy/empathy-server-sasl-handler.h b/libempathy/empathy-server-sasl-handler.h
index 1eedc5b..d89a406 100644
--- a/libempathy/empathy-server-sasl-handler.h
+++ b/libempathy/empathy-server-sasl-handler.h
@@ -77,6 +77,9 @@ TpAccount * empathy_server_sasl_handler_get_account (
gboolean empathy_server_sasl_handler_has_password (
EmpathyServerSASLHandler *handler);
+gboolean empathy_server_sasl_handler_can_save_response_somewhere (
+ EmpathyServerSASLHandler *self);
+
G_END_DECLS
#endif /* #ifndef __EMPATHY_SERVER_SASL_HANDLER_H__*/
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]