* Danielle Madeley <danielle.madeley@collabora.co.uk>
*/
-#include <config.h>
+#include "config.h"
-#include <string.h>
-
-#include <gtk/gtk.h>
#include <glib/gi18n-lib.h>
-#include <gio/gdesktopappinfo.h>
-
#include <libempathy/empathy-utils.h>
-#include <telepathy-glib/account.h>
-#include <telepathy-glib/account-manager.h>
-#include <telepathy-glib/connection-manager.h>
-#include <telepathy-glib/util.h>
#include <dbus/dbus-protocol.h>
-#include "empathy-account-widget.h"
#include "empathy-account-widget-private.h"
#include "empathy-account-widget-sip.h"
#include "empathy-account-widget-irc.h"
LAST_SIGNAL
};
-static void account_widget_apply_and_log_in (EmpathyAccountWidget *);
-
enum {
RESPONSE_LAUNCH
};
/* Based on http://www.ietf.org/rfc/rfc2812.txt (section 2.3.1) */
#define IRC_SPECIAL "_\\[\\]{}\\\\|`^"
#define IRC_NICK_NAME "(["ALPHA IRC_SPECIAL"]["ALPHADIGITDASH IRC_SPECIAL"]*)"
-/* user = 1*( %x01-09 / %x0B-0C / %x0E-1F / %x21-3F / %x41-FF )
- * ; any octet except NUL, CR, LF, " " and "@"
- *
- * so technically, like so many other places in IRC, we should be using arrays
- * of bytes here rather than UTF-8 strings. Life: too short. In practice this
- * will always be ASCII.
- */
-#define IRC_USER_NAME "([^\r\n@ ])+"
/* Based on http://www.ietf.org/rfc/rfc4622.txt (section 2.2)
* We just exclude invalid characters to avoid ucschars and other redundant
#define ACCOUNT_REGEX_ICQ "^"ICQ_USER_NAME"$"
#define ACCOUNT_REGEX_IRC "^"IRC_NICK_NAME"$"
-#define USERNAME_REGEX_IRC "^"IRC_USER_NAME"$"
#define ACCOUNT_REGEX_JABBER "^"JABBER_USER_NAME"@[^@/]+"
#define ACCOUNT_REGEX_MSN "^"MSN_USER_NAME"@"HOST"$"
#define ACCOUNT_REGEX_YAHOO "^"YAHOO_USER_NAME"$"
EmpathyAccountWidget *self)
{
if (gtk_widget_get_sensitive (self->priv->apply_button))
- account_widget_apply_and_log_in (self);
+ empathy_account_widget_apply_and_log_in (self);
}
static void
EmpathyAccountWidget *self)
{
if (gtk_widget_get_sensitive (self->priv->apply_button))
- account_widget_apply_and_log_in (self);
+ empathy_account_widget_apply_and_log_in (self);
}
void
g_object_unref (self);
}
-static void
-account_widget_apply_and_log_in (EmpathyAccountWidget *self)
+void
+empathy_account_widget_apply_and_log_in (EmpathyAccountWidget *self)
{
gboolean display_name_overridden;
account_widget_apply_clicked_cb (GtkWidget *button,
EmpathyAccountWidget *self)
{
- account_widget_apply_and_log_in (self);
+ empathy_account_widget_apply_and_log_in (self);
}
static void
empathy_account_settings_set_regex (self->priv->settings, "account",
ACCOUNT_REGEX_IRC);
- empathy_account_settings_set_regex (self->priv->settings, "username",
- USERNAME_REGEX_IRC);
if (self->priv->simple)
{
remember_password_toggled_cb (GtkToggleButton *button,
EmpathyAccountWidget *self)
{
- if (gtk_toggle_button_get_active (button))
- {
- gtk_widget_set_sensitive (self->priv->param_password_widget, TRUE);
- }
- else
- {
- gtk_widget_set_sensitive (self->priv->param_password_widget, FALSE);
- gtk_entry_set_text (GTK_ENTRY (self->priv->param_password_widget), "");
- empathy_account_settings_unset (self->priv->settings, "password");
- }
+ empathy_account_settings_set_remember_password (self->priv->settings,
+ gtk_toggle_button_get_active (button));
+
+ if (!self->priv->automatic_change)
+ empathy_account_widget_changed (self);
}
static void
password = empathy_account_settings_dup_string (
self->priv->settings, "password");
+ /* We have to do this so that when we call gtk_entry_set_text,
+ * the ::changed callback doesn't think the user made the
+ * change. This is also used in remember_password_toggled_cb. */
+ self->priv->automatic_change = TRUE;
+
if (password != NULL)
{
- /* We have to do this so that when we call gtk_entry_set_text,
- * the ::changed callback doesn't think the user made the
- * change. */
- self->priv->automatic_change = TRUE;
gtk_entry_set_text (GTK_ENTRY (self->priv->param_password_widget),
password);
- self->priv->automatic_change = FALSE;
}
gtk_toggle_button_set_active (
GTK_TOGGLE_BUTTON (self->priv->remember_password_widget),
!EMP_STR_EMPTY (password));
+ self->priv->automatic_change = FALSE;
+
g_free (password);
}
password = empathy_account_settings_dup_string (self->priv->settings,
"password");
+ /* FIXME: we should enable this checkbox only if the password is
+ * stored for good in the password storage, not only for the session
+ * (bgo #683571) */
gtk_toggle_button_set_active (
GTK_TOGGLE_BUTTON (self->priv->remember_password_widget),
!EMP_STR_EMPTY (password));
g_signal_connect (self->priv->remember_password_widget, "toggled",
G_CALLBACK (remember_password_toggled_cb), self);
+ self->priv->automatic_change = TRUE;
remember_password_toggled_cb (
GTK_TOGGLE_BUTTON (self->priv->remember_password_widget), self);
+ self->priv->automatic_change = FALSE;
}
else if (self->priv->remember_password_widget != NULL
&& !empathy_account_settings_supports_sasl (self->priv->settings))
{
gtk_widget_set_visible (self->priv->remember_password_widget, FALSE);
+ empathy_account_settings_set_remember_password (self->priv->settings,
+ TRUE);
}
/* dup and init the account-manager */