aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog15
-rw-r--r--configure.ac1
-rw-r--r--data/empathy.schemas.in15
-rw-r--r--libempathy-gtk/Makefile.am15
-rw-r--r--libempathy-gtk/empathy-account-widget-salut.c184
-rw-r--r--libempathy-gtk/empathy-account-widget-salut.glade395
-rw-r--r--libempathy-gtk/empathy-account-widget-salut.h34
-rw-r--r--libempathy-gtk/empathy-accounts-dialog.c5
-rw-r--r--libempathy-gtk/empathy-preferences.h1
-rw-r--r--src/empathy.c84
10 files changed, 743 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index 57b5fde00..bfb4426fb 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,18 @@
+2007-08-23 Xavier Claessens <xclaesse@gmail.com>
+
+ * libempathy-gtk/empathy-account-widget-salut.glade:
+ * libempathy-gtk/empathy-account-widget-salut.c:
+ * libempathy-gtk/empathy-account-widget-salut.h:
+ * libempathy-gtk/empathy-preferences.h:
+ * libempathy-gtk/empathy-accounts-dialog.c:
+ * libempathy-gtk/Makefile.am:
+ * src/empathy.c:
+ * configure.ac:
+ * data/empathy.schemas.in: Add specialised UI for salut settings.
+ Configure a Salut account first time empathy is started with
+ salut CM installed using gnome-about-me information. Fixes bug #447467
+ (Cosimo Cecchi, Xavier Claessens).
+
2007-08-19 Xavier Claessens <xclaesse@gmail.com>
* python/pyempathy/Makefile.am:
diff --git a/configure.ac b/configure.ac
index f582d2bd7..9bc30b4ea 100644
--- a/configure.ac
+++ b/configure.ac
@@ -96,6 +96,7 @@ PKG_CHECK_MODULES(EMPATHY,
gtk+-2.0 >= $GTK_REQUIRED
libglade-2.0 >= $LIBGLADE_REQUIRED
libgnomeui-2.0
+ libebook-1.2
])
dnl -----------------------------------------------------------
diff --git a/data/empathy.schemas.in b/data/empathy.schemas.in
index 103fdd2ab..29a8bc994 100644
--- a/data/empathy.schemas.in
+++ b/data/empathy.schemas.in
@@ -245,6 +245,21 @@
</locale>
</schema>
+ <schema>
+ <key>/schemas/apps/empathy/accounts/salut_created</key>
+ <applyto>/apps/empathy/accounts/salut_created</applyto>
+ <owner>empathy</owner>
+ <type>bool</type>
+ <default>false</default>
+ <locale name="C">
+ <short>Checks if Salut account is created</short>
+ <long>
+ Whether or not the Salut account has been created on the first
+ empathy run.
+ </long>
+ </locale>
+ </schema>
+
</schemalist>
</gconfschemafile>
diff --git a/libempathy-gtk/Makefile.am b/libempathy-gtk/Makefile.am
index 7b0a9db29..f73966a3e 100644
--- a/libempathy-gtk/Makefile.am
+++ b/libempathy-gtk/Makefile.am
@@ -20,6 +20,8 @@ libempathy_gtk_la_SOURCES = \
empathy-accounts-dialog.c \
empathy-account-widget-generic.c \
empathy-account-widget-jabber.c \
+ empathy-account-widget-msn.c \
+ empathy-account-widget-salut.c \
empathy-profile-chooser.c \
empathy-cell-renderer-expander.c \
empathy-cell-renderer-text.c \
@@ -43,8 +45,7 @@ libempathy_gtk_la_SOURCES = \
empathy-new-chatroom-dialog.c \
empathy-chatrooms-window.c \
empathy-log-window.c \
- empathy-ui-utils.c \
- empathy-account-widget-msn.c
+ empathy-ui-utils.c
# do not distribute generated files
nodist_libempathy_gtk_la_SOURCES =\
@@ -66,6 +67,8 @@ libempathy_gtk_headers = \
empathy-accounts-dialog.h \
empathy-account-widget-generic.h \
empathy-account-widget-jabber.h \
+ empathy-account-widget-msn.h \
+ empathy-account-widget-salut.h \
empathy-profile-chooser.h \
empathy-cell-renderer-expander.h \
empathy-cell-renderer-text.h \
@@ -89,8 +92,7 @@ libempathy_gtk_headers = \
empathy-new-chatroom-dialog.h \
empathy-chatrooms-window.h \
empathy-log-window.h \
- empathy-ui-utils.h \
- empathy-account-widget-msn.h
+ empathy-ui-utils.h
libempathy_gtk_includedir = $(includedir)/libempathy-gtk/
libempathy_gtk_include_HEADERS = \
@@ -107,13 +109,14 @@ glade_DATA = \
empathy-presence-chooser.glade \
empathy-accounts-dialog.glade \
empathy-account-widget-jabber.glade \
+ empathy-account-widget-msn.glade \
+ empathy-account-widget-salut.glade \
empathy-new-chatroom-dialog.glade \
empathy-group-chat.glade \
empathy-chatrooms-window.glade \
empathy-spell-dialog.glade \
empathy-log-window.glade \
- empathy-chat.glade \
- empathy-account-widget-msn.glade
+ empathy-chat.glade
empathy-gtk-enum-types.h: stamp-empathy-gtk-enum-types.h
@true
diff --git a/libempathy-gtk/empathy-account-widget-salut.c b/libempathy-gtk/empathy-account-widget-salut.c
new file mode 100644
index 000000000..94da89e2c
--- /dev/null
+++ b/libempathy-gtk/empathy-account-widget-salut.c
@@ -0,0 +1,184 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2007 Cosimo Cecchi <anarki@lilik.it>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ * Authors: Cosimo Cecchi <anarki@lilik.it>
+ */
+
+#include "config.h"
+
+#include <stdlib.h>
+
+#include <glib/gi18n.h>
+#include <gtk/gtk.h>
+#include <glade/glade.h>
+
+#include <libmissioncontrol/mc-profile.h>
+
+#include <libempathy/empathy-utils.h>
+
+#include "empathy-account-widget-salut.h"
+#include "empathy-ui-utils.h"
+
+typedef struct {
+ McAccount *account;
+
+ GtkWidget *vbox_settings;
+ GtkWidget *entry_nickname;
+ GtkWidget *entry_published;
+ GtkWidget *entry_first_name;
+ GtkWidget *entry_last_name;
+ GtkWidget *entry_email;
+ GtkWidget *entry_jid;
+} EmpathyAccountWidgetSalut;
+
+static gboolean account_widget_salut_entry_focus_cb (GtkWidget *widget,
+ GdkEventFocus *event,
+ EmpathyAccountWidgetSalut *settings);
+static void account_widget_salut_destroy_cb (GtkWidget *widget,
+ EmpathyAccountWidgetSalut *settings);
+static void account_widget_salut_setup (EmpathyAccountWidgetSalut *settings);
+
+
+
+static gboolean
+account_widget_salut_entry_focus_cb (GtkWidget *widget,
+ GdkEventFocus *event,
+ EmpathyAccountWidgetSalut *settings)
+{
+ const gchar *param;
+ const gchar *str;
+
+ if (widget == settings->entry_nickname) {
+ param = "nickname";
+ }
+ else if (widget == settings->entry_published) {
+ param = "published-name";
+ }
+ else if (widget == settings->entry_first_name) {
+ param = "first-name";
+ }
+ else if (widget == settings->entry_last_name) {
+ param = "last-name";
+ }
+ else if (widget == settings->entry_email) {
+ param = "email";
+ }
+ else if (widget == settings->entry_jid) {
+ param = "jid";
+ }
+ else {
+ return FALSE;
+ }
+
+ str = gtk_entry_get_text (GTK_ENTRY (widget));
+
+ if (G_STR_EMPTY (str)) {
+ gchar *value = NULL;
+
+ mc_account_get_param_string (settings->account, param, &value);
+ gtk_entry_set_text (GTK_ENTRY (widget), value ? value : "");
+ g_free (value);
+ } else {
+ mc_account_set_param_string (settings->account, param, str);
+ }
+
+ return FALSE;
+}
+
+static void
+account_widget_salut_destroy_cb (GtkWidget *widget,
+ EmpathyAccountWidgetSalut *settings)
+{
+ g_object_unref (settings->account);
+ g_free (settings);
+}
+
+static void
+account_widget_salut_setup (EmpathyAccountWidgetSalut *settings)
+{
+ gchar *nickname = NULL;
+ gchar *published_name = NULL;
+ gchar *first_name = NULL;
+ gchar *last_name = NULL;
+ gchar *email = NULL;
+ gchar *jid = NULL;
+
+ mc_account_get_param_string (settings->account, "nickname", &nickname);
+ mc_account_get_param_string (settings->account, "published-name", &published_name);
+ mc_account_get_param_string (settings->account, "first-name", &first_name);
+ mc_account_get_param_string (settings->account, "last-name", &last_name);
+ mc_account_get_param_string (settings->account, "email", &email);
+ mc_account_get_param_string (settings->account, "jid", &jid);
+
+ gtk_entry_set_text (GTK_ENTRY (settings->entry_nickname), nickname ? nickname : "");
+ gtk_entry_set_text (GTK_ENTRY (settings->entry_published), published_name ? published_name : "");
+ gtk_entry_set_text (GTK_ENTRY (settings->entry_first_name), first_name ? first_name : "");
+ gtk_entry_set_text (GTK_ENTRY (settings->entry_last_name), last_name ? last_name : "");
+ gtk_entry_set_text (GTK_ENTRY (settings->entry_email), email ? email : "");
+ gtk_entry_set_text (GTK_ENTRY (settings->entry_jid), jid ? jid : "");
+
+ g_free (nickname);
+ g_free (published_name);
+ g_free (first_name);
+ g_free (last_name);
+ g_free (email);
+ g_free (jid);
+}
+
+
+GtkWidget *
+empathy_account_widget_salut_new (McAccount *account)
+{
+ EmpathyAccountWidgetSalut *settings;
+ GladeXML *glade;
+
+ settings = g_new0 (EmpathyAccountWidgetSalut, 1);
+ settings->account = g_object_ref (account);
+
+ glade = empathy_glade_get_file ("empathy-account-widget-salut.glade",
+ "vbox_salut_settings",
+ NULL,
+ "vbox_salut_settings", &settings->vbox_settings,
+ "entry_published", &settings->entry_published,
+ "entry_nickname", &settings->entry_nickname,
+ "entry_first_name", &settings->entry_first_name,
+ "entry_last_name", &settings->entry_last_name,
+ "entry_email", &settings->entry_email,
+ "entry_jid", &settings->entry_jid,
+ NULL);
+
+ account_widget_salut_setup (settings);
+
+ empathy_glade_connect (glade,
+ settings,
+ "vbox_salut_settings", "destroy", account_widget_salut_destroy_cb,
+ "entry_nickname", "focus-out-event", account_widget_salut_entry_focus_cb,
+ "entry_published", "focus-out-event", account_widget_salut_entry_focus_cb,
+ "entry_first_name", "focus-out-event", account_widget_salut_entry_focus_cb,
+ "entry_last_name", "focus-out-event", account_widget_salut_entry_focus_cb,
+ "entry_email", "focus-out-event", account_widget_salut_entry_focus_cb,
+ "entry_jid", "focus-out-event", account_widget_salut_entry_focus_cb,
+ NULL);
+
+ g_object_unref (glade);
+
+ gtk_widget_show (settings->vbox_settings);
+
+ return settings->vbox_settings;
+}
diff --git a/libempathy-gtk/empathy-account-widget-salut.glade b/libempathy-gtk/empathy-account-widget-salut.glade
new file mode 100644
index 000000000..14ede6958
--- /dev/null
+++ b/libempathy-gtk/empathy-account-widget-salut.glade
@@ -0,0 +1,395 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
+
+<glade-interface>
+
+<widget class="GtkWindow" id="account_salut_settings">
+ <property name="visible">True</property>
+ <property name="title" translatable="yes">salut account settings</property>
+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
+ <property name="window_position">GTK_WIN_POS_NONE</property>
+ <property name="modal">False</property>
+ <property name="resizable">False</property>
+ <property name="destroy_with_parent">False</property>
+ <property name="decorated">True</property>
+ <property name="skip_taskbar_hint">False</property>
+ <property name="skip_pager_hint">False</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+ <property name="focus_on_map">True</property>
+ <property name="urgency_hint">False</property>
+
+ <child>
+ <widget class="GtkVBox" id="vbox_salut_settings">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">6</property>
+
+ <child>
+ <widget class="GtkTable" id="table_common_settings">
+ <property name="visible">True</property>
+ <property name="n_rows">2</property>
+ <property name="n_columns">3</property>
+ <property name="homogeneous">False</property>
+ <property name="row_spacing">6</property>
+ <property name="column_spacing">12</property>
+
+ <child>
+ <widget class="GtkLabel" id="label_first_name">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_First Name: </property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="mnemonic_widget">entry_first_name</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label_last_name">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Last Name:</property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="mnemonic_widget">entry_last_name</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkEntry" id="entry_first_name">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">*</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkEntry" id="entry_last_name">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">*</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkExpander" id="expander1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="expanded">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkTable" id="table_advanced_settings">
+ <property name="visible">True</property>
+ <property name="n_rows">4</property>
+ <property name="n_columns">3</property>
+ <property name="homogeneous">False</property>
+ <property name="row_spacing">6</property>
+ <property name="column_spacing">12</property>
+
+ <child>
+ <widget class="GtkLabel" id="label_email">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_E-mail:</property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="mnemonic_widget">entry_email</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label_jid">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Jabber ID:</property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="mnemonic_widget">entry_jid</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkEntry" id="entry_email">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">*</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkEntry" id="entry_jid">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">*</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label_nickname">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Nickname:</property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="mnemonic_widget">entry_nickname</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label_published">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Published Name:</property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="mnemonic_widget">entry_published</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkEntry" id="entry_nickname">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">*</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkEntry" id="entry_published">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">*</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Advanced&lt;/b&gt;</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">True</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+</widget>
+
+</glade-interface>
diff --git a/libempathy-gtk/empathy-account-widget-salut.h b/libempathy-gtk/empathy-account-widget-salut.h
new file mode 100644
index 000000000..57427187f
--- /dev/null
+++ b/libempathy-gtk/empathy-account-widget-salut.h
@@ -0,0 +1,34 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2007 Cosimo Cecchi <anarki@lilik.it>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ * Authors: Cosimo Cecchi <anarki@lilik.it>
+ */
+
+#ifndef __EMPATHY_ACCOUNT_WIDGET_SALUT_H__
+#define __EMPATHY_ACCOUNT_WIDGET_SALUT_H__
+
+#include <libmissioncontrol/mc-account.h>
+
+G_BEGIN_DECLS
+
+GtkWidget *empathy_account_widget_salut_new (McAccount *account);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_ACCOUNT_WIDGET_SALUT_H__ */
diff --git a/libempathy-gtk/empathy-accounts-dialog.c b/libempathy-gtk/empathy-accounts-dialog.c
index 2a12eb1d5..3f2911972 100644
--- a/libempathy-gtk/empathy-accounts-dialog.c
+++ b/libempathy-gtk/empathy-accounts-dialog.c
@@ -47,6 +47,7 @@
#include "empathy-account-widget-generic.h"
#include "empathy-account-widget-jabber.h"
#include "empathy-account-widget-msn.h"
+#include "empathy-account-widget-salut.h"
#define DEBUG_DOMAIN "AccountDialog"
@@ -287,6 +288,10 @@ accounts_dialog_update_account (EmpathyAccountsDialog *dialog,
dialog ->settings_widget =
empathy_account_widget_msn_new (account);
}
+ else if (!empathy_strdiff (config_ui, "salut")) {
+ dialog->settings_widget =
+ empathy_account_widget_salut_new (account);
+ }
else {
dialog->settings_widget =
empathy_account_widget_generic_new (account);
diff --git a/libempathy-gtk/empathy-preferences.h b/libempathy-gtk/empathy-preferences.h
index dc058d7ec..c787c814d 100644
--- a/libempathy-gtk/empathy-preferences.h
+++ b/libempathy-gtk/empathy-preferences.h
@@ -48,6 +48,7 @@ G_BEGIN_DECLS
#define EMPATHY_PREFS_CONTACTS_SHOW_OFFLINE EMPATHY_PREFS_PATH "/contacts/show_offline"
#define EMPATHY_PREFS_CONTACTS_SORT_CRITERIUM EMPATHY_PREFS_PATH "/contacts/sort_criterium"
#define EMPATHY_PREFS_HINTS_CLOSE_MAIN_WINDOW EMPATHY_PREFS_PATH "/hints/close_main_window"
+#define EMPATHY_PREFS_SALUT_ACCOUNT_CREATED EMPATHY_PREFS_PATH "/accounts/salut_created"
GtkWidget * empathy_preferences_show (GtkWindow *parent);
diff --git a/src/empathy.c b/src/empathy.c
index c4ca55309..81fdf1e4b 100644
--- a/src/empathy.c
+++ b/src/empathy.c
@@ -30,6 +30,7 @@
#include <libgnome/gnome-program.h>
#include <libgnomeui/gnome-ui-init.h>
+#include <libebook/e-book.h>
#include <libtelepathy/tp-conn.h>
#include <libtelepathy/tp-chan.h>
@@ -45,6 +46,8 @@
#include <libempathy/empathy-tp-chat.h>
#include <libempathy/empathy-tp-chatroom.h>
#include <libempathy/empathy-idle.h>
+#include <libempathy/empathy-conf.h>
+#include <libempathy-gtk/empathy-preferences.h>
#include <libempathy-gtk/empathy-main-window.h>
#include <libempathy-gtk/empathy-status-icon.h>
#include <libempathy-gtk/empathy-private-chat.h>
@@ -147,6 +150,85 @@ new_channel_cb (EmpathyChandler *chandler,
g_object_unref (account);
}
+static void
+create_salut_account (void)
+{
+ McProfile *profile;
+ McProtocol *protocol;
+ gboolean salut_created;
+ McAccount *account;
+ EBook *book;
+ EContact *contact;
+ gchar *nickname = NULL;
+ gchar *published_name = NULL;
+ gchar *first_name = NULL;
+ gchar *last_name = NULL;
+ gchar *email = NULL;
+ gchar *jid = NULL;
+
+ if (!empathy_conf_get_bool (empathy_conf_get(),
+ EMPATHY_PREFS_SALUT_ACCOUNT_CREATED,
+ &salut_created)) {
+ return;
+ }
+ if (salut_created) {
+ return;
+ }
+
+ profile = mc_profile_lookup ("salut");
+ protocol = mc_profile_get_protocol (profile);
+ if (!protocol) {
+ g_object_unref (profile);
+ return;
+ }
+ g_object_unref (protocol);
+
+ if (!e_book_get_self (&contact, &book, NULL)) {
+ return;
+ }
+
+ empathy_conf_set_bool (empathy_conf_get (),
+ EMPATHY_PREFS_SALUT_ACCOUNT_CREATED,
+ TRUE);
+
+ account = mc_account_create (profile);
+ mc_account_set_display_name (account, _("People nearby"));
+
+ nickname = e_contact_get (contact, E_CONTACT_NICKNAME);
+ published_name = e_contact_get (contact, E_CONTACT_FULL_NAME);
+ first_name = e_contact_get (contact, E_CONTACT_GIVEN_NAME);
+ last_name = e_contact_get (contact, E_CONTACT_FAMILY_NAME);
+ email = e_contact_get (contact, E_CONTACT_EMAIL_1);
+ jid = e_contact_get (contact, E_CONTACT_IM_JABBER_HOME_1);
+
+ if (G_STR_EMPTY (nickname) || !empathy_strdiff (nickname, "nickname")) {
+ g_free (nickname);
+ nickname = g_strdup (g_get_user_name ());
+ }
+ if (G_STR_EMPTY (published_name)) {
+ g_free (published_name);
+ published_name = g_strdup (g_get_real_name ());
+ }
+
+ mc_account_set_param_string (account, "nickname", nickname ? nickname : "");
+ mc_account_set_param_string (account, "published-name", published_name ? published_name : "");
+ mc_account_set_param_string (account, "first-name", first_name ? first_name : "");
+ mc_account_set_param_string (account, "last-name", last_name ? last_name : "");
+ mc_account_set_param_string (account, "email", email ? email : "");
+ mc_account_set_param_string (account, "jid", jid ? jid : "");
+
+ g_free (nickname);
+ g_free (published_name);
+ g_free (first_name);
+ g_free (last_name);
+ g_free (email);
+ g_free (jid);
+ g_object_unref (account);
+ g_object_unref (profile);
+ g_object_unref (contact);
+ g_object_unref (book);
+}
+
int
main (int argc, char *argv[])
{
@@ -208,6 +290,8 @@ main (int argc, char *argv[])
if (!no_connect) {
start_mission_control (idle);
}
+
+ create_salut_account ();
/* Setting up UI */
window = empathy_main_window_show ();