]> git.0d.be Git - empathy.git/commitdiff
Add specialised UI for salut settings. Configure a Salut account first
authorXavier Claessens <xclaesse@gmail.com>
Thu, 23 Aug 2007 10:25:49 +0000 (10:25 +0000)
committerXavier Claessens <xclaesse@src.gnome.org>
Thu, 23 Aug 2007 10:25:49 +0000 (10:25 +0000)
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).

svn path=/trunk/; revision=266

ChangeLog
configure.ac
data/empathy.schemas.in
libempathy-gtk/Makefile.am
libempathy-gtk/empathy-account-widget-salut.c [new file with mode: 0644]
libempathy-gtk/empathy-account-widget-salut.glade [new file with mode: 0644]
libempathy-gtk/empathy-account-widget-salut.h [new file with mode: 0644]
libempathy-gtk/empathy-accounts-dialog.c
libempathy-gtk/empathy-preferences.h
src/empathy.c

index 57b5fde00178b3ab7b75b1ba3d2bc74786d79d4a..bfb4426fb3b0374e0531c9136e6cdcb08df0bb1e 100644 (file)
--- 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:
index f582d2bd7d20d8083afb49656bbc4f191f02635c..9bc30b4ea28d3f972d8819abbcb90166f2c3312f 100644 (file)
@@ -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 -----------------------------------------------------------
index 103fdd2ab62852781370affa3deed98e86b9b589..29a8bc9945d29c95248531a0d50caf4d058888a9 100644 (file)
       </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>
 
index 7b0a9db290f6d5aa289a84166162039e36dec477..f73966a3e0b6d8f88ea92eeb23f20a8c58298de8 100644 (file)
@@ -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 (file)
index 0000000..94da89e
--- /dev/null
@@ -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 (file)
index 0000000..14ede69
--- /dev/null
@@ -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 (file)
index 0000000..5742718
--- /dev/null
@@ -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__ */
index 2a12eb1d5a8a68518f81d578a8d51bc8503f27cd..3f2911972a0b22bb48a5ba1f8d93b4b4ca49b3b6 100644 (file)
@@ -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);
index dc058d7ec098349fe4ff9e2aa8fb6ae37f05294f..c787c814d6c18009b8688d4658b0a7696a12c95f 100644 (file)
@@ -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);
 
index c4ca55309f28e538f462914c591aac86d83c1380..81fdf1e4b57ac497214172a5d8285792e3b2f56d 100644 (file)
@@ -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 ();