]> git.0d.be Git - empathy.git/commitdiff
Merge remote-tracking branch 'jonny/ft'
authorGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>
Tue, 29 Nov 2011 14:56:11 +0000 (15:56 +0100)
committerGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>
Tue, 29 Nov 2011 14:56:11 +0000 (15:56 +0100)
Conflicts:
libempathy/empathy-tp-file.c

128 files changed:
COPYING
NEWS
configure.ac
data/Makefile.am
data/codec-preferences [deleted file]
data/element-properties [deleted file]
data/org.gnome.Empathy.gschema.xml.in
goa-mc-plugin/mcp-account-manager-goa.c
libempathy-gtk/Makefile.am
libempathy-gtk/empathy-account-widget.c
libempathy-gtk/empathy-bad-password-dialog.c [new file with mode: 0644]
libempathy-gtk/empathy-bad-password-dialog.h [new file with mode: 0644]
libempathy-gtk/empathy-base-password-dialog.c [new file with mode: 0644]
libempathy-gtk/empathy-base-password-dialog.h [new file with mode: 0644]
libempathy-gtk/empathy-call-utils.c
libempathy-gtk/empathy-call-utils.h
libempathy-gtk/empathy-chat-text-view.c
libempathy-gtk/empathy-chat.c
libempathy-gtk/empathy-contact-blocking-dialog.c
libempathy-gtk/empathy-contact-blocking-dialog.ui
libempathy-gtk/empathy-contact-chooser.c
libempathy-gtk/empathy-contact-dialogs.c
libempathy-gtk/empathy-contact-list-store.c [deleted file]
libempathy-gtk/empathy-contact-list-store.h [deleted file]
libempathy-gtk/empathy-contact-list-view.c [deleted file]
libempathy-gtk/empathy-contact-list-view.h [deleted file]
libempathy-gtk/empathy-contact-menu.c
libempathy-gtk/empathy-contact-search-dialog.c
libempathy-gtk/empathy-contact-widget.c
libempathy-gtk/empathy-contactinfo-utils.c
libempathy-gtk/empathy-contactinfo-utils.h
libempathy-gtk/empathy-dialpad-widget.c
libempathy-gtk/empathy-groups-widget.c
libempathy-gtk/empathy-individual-dialogs.c
libempathy-gtk/empathy-individual-linker.c
libempathy-gtk/empathy-individual-menu.c
libempathy-gtk/empathy-individual-menu.h
libempathy-gtk/empathy-individual-store-channel.c [new file with mode: 0644]
libempathy-gtk/empathy-individual-store-channel.h [new file with mode: 0644]
libempathy-gtk/empathy-individual-store-manager.c [new file with mode: 0644]
libempathy-gtk/empathy-individual-store-manager.h [new file with mode: 0644]
libempathy-gtk/empathy-individual-store.c
libempathy-gtk/empathy-individual-store.h
libempathy-gtk/empathy-individual-view.c
libempathy-gtk/empathy-individual-view.h
libempathy-gtk/empathy-individual-widget.c
libempathy-gtk/empathy-live-search.h
libempathy-gtk/empathy-log-window.c
libempathy-gtk/empathy-notify-manager.c
libempathy-gtk/empathy-password-dialog.c
libempathy-gtk/empathy-password-dialog.h
libempathy-gtk/empathy-persona-store.c
libempathy-gtk/empathy-protocol-chooser.c
libempathy-gtk/empathy-spell.c
libempathy-gtk/empathy-theme-boxes.c
libempathy-gtk/empathy-theme-manager.c
libempathy-gtk/empathy-ui-utils.c
libempathy/Makefile.am
libempathy/empathy-account-settings.c
libempathy/empathy-auth-factory.c
libempathy/empathy-auth-factory.h
libempathy/empathy-client-factory.c
libempathy/empathy-connection-aggregator.c [new file with mode: 0644]
libempathy/empathy-connection-aggregator.h [new file with mode: 0644]
libempathy/empathy-contact-list.c
libempathy/empathy-contact-list.h
libempathy/empathy-contact-manager.c
libempathy/empathy-contact-manager.h
libempathy/empathy-contact.c
libempathy/empathy-contact.h
libempathy/empathy-debug.c
libempathy/empathy-ft-handler.c
libempathy/empathy-gsettings.h
libempathy/empathy-individual-manager.c
libempathy/empathy-irc-network-manager.c
libempathy/empathy-server-sasl-handler.c
libempathy/empathy-tls-verifier.c
libempathy/empathy-tp-chat.c
libempathy/empathy-tp-contact-list.c
libempathy/empathy-tp-roomlist.c
libempathy/empathy-tp-streamed-media.c
libempathy/empathy-utils.c
libempathy/empathy-utils.h
m4/gsettings.m4
po/LINGUAS
po/POTFILES.in
po/es.po
po/et.po
po/lt.po
po/my.po [new file with mode: 0644]
po/ro.po
po/sl.po
po/zh_CN.po
po/zh_HK.po
po/zh_TW.po
release.py
src/empathy-account-assistant.c
src/empathy-accounts-dialog.c
src/empathy-audio-sink.c
src/empathy-audio-sink.h
src/empathy-audio-src.c
src/empathy-audio-src.h
src/empathy-auth-client.c
src/empathy-call-handler.c
src/empathy-call-window.c
src/empathy-call-window.h
src/empathy-camera-menu.c
src/empathy-chat-window.c
src/empathy-debug-window.c
src/empathy-ft-manager.c
src/empathy-import-dialog.c
src/empathy-import-utils.c
src/empathy-invite-participant-dialog.c
src/empathy-main-window.c
src/empathy-map-view.c
src/empathy-notifications-approver.c
src/empathy-preferences.c
src/empathy-preferences.ui
src/empathy-streamed-media-handler.c
src/empathy-streamed-media-window.c
src/empathy.c
src/ev-sidebar.c
tests/empathy-chatroom-manager-test.c
tests/empathy-tls-test.c
tests/interactive/Makefile.am
tests/interactive/contact-manager.c [deleted file]
tests/interactive/empathy-logs.c
tools/check-c-style.sh

diff --git a/COPYING b/COPYING
index d60c31a97a544b53039088d14fe9114583c0efc3..623b6258a134210f0b0ada106fdaab7f0370d9c5 100644 (file)
--- a/COPYING
+++ b/COPYING
@@ -2,7 +2,7 @@
                       Version 2, June 1991
 
  Copyright (C) 1989, 1991 Free Software Foundation, Inc.
-     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+     51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
  Everyone is permitted to copy and distribute verbatim copies
  of this license document, but changing it is not allowed.
 
@@ -305,7 +305,7 @@ the "copyright" line and a pointer to where the full notice is found.
 
     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
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 
 
 Also add information on how to contact you by electronic and paper mail.
diff --git a/NEWS b/NEWS
index 53bf2fdb382e712633d22a747fe43101572b78c6..b3cc0a9e78baa3f580fa8655bc7f0b1582e09815 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,48 @@
+NEW in 3.3.2 (21/11/2011)
+============
+
+Dependencies:
+
+ • telepathy-glib ≥ 0.17.0
+ • telepathy-farsight ≥ 0.0.18
+ • telepathy-farstream ≥ 0.1.2 (optional)
+
+Bugs fixed:
+ - Fixed #662504, Cannot quit empathy (Guillaume Desmottes)
+ - Fixed #646682, Support InsufficientBalance error (Emilio Pozuelo Monfort)
+ - Fixed #652544, Add X-FACEBOOK-PLATFORM and X-MESSENGER-OAUTH2 support (Xavier Claessens)
+ - Fixed #654430, Add support for video control interface to empathy-call (Nicolas Dufresne, Sjoerd Simons)
+ - Fixed #661805, Use tp-glib blocking API (Guillaume Desmottes)
+ - Fixed #662604, In a conversation window, Contact → Add Contact… selects the wrong account (Guillaume Desmottes)
+ - Fixed #662609, EmpathyAccountChooser clean up (Guillaume Desmottes)
+ - Fixed #662727, new-call/new-convo dialogs should listen to capabilities changes (Danielle Madeley)
+ - Fixed #662843, invite dialog looks stupid on IRC (Guillaume Desmottes)
+ - Fixed #662903, Empathy uses deprecated GTK widgets (potential build errors) (Guillaume Desmottes)
+ - Fixed #662995, Fix for misaligned 16x16 app icon (Michael Monreal)
+ - Fixed #663327, Stop using EmpathyContactManager to add and remove contacts (Guillaume Desmottes)
+ - Fixed #663442, Make GOA optional (Danielle Madeley)
+ - Fixed #663563, Shouldn't offer to send socket files (Guillaume Desmottes)
+ - Fixed #663567, Status icon is miss aligned in infobar (Danielle Madeley)
+ - Fixed #663763, Some contact/invidiual misc patches (Guillaume Desmottes)
+ - Fixed #663842, Don't do extra audio-processing for raw Contents (Sjoerd Simons)
+ - Fixed #664313, call-window opens very small the first time (Ken VanDine)
+
+Translations:
+ - Updated cs Translation (Marek Černocký)
+ - Updated de Translation (Christian Kirbach)
+ - Updated et Translation (Mattias Põldaru)
+ - Updated gl Translation (Fran Diéguez)
+ - Updated lt Translation (Algimantas Margevičius)
+ - Updated my Translation (Thura Hlaing)
+ - Updated sl Translation (Matej Urbančič)
+ - Updated tr Translation (Muhammet Kara)
+ - Updated zh_HK Translation (Cheng-Chia Tseng)
+ - Updated zh_TW Translation (Cheng-Chia Tseng)
+
+Documentation translations:
+ - Updated ca Documentation translation (Gil Forcada)
+ - Updated pl Documentation translation (Aleksander Łukasiewicz)
+
 NEW in 3.3.1 (24/10/2011)
 ============
 
index a5050f72e4c370624f1fd821341c6ff6d23247d2..e0e7e43ef695a6c637e76c932bfad10bbf7d744c 100644 (file)
@@ -3,7 +3,7 @@ m4_define(empathy_released, 0)
 
 m4_define([empathy_major_version], [3])
 m4_define([empathy_minor_version], [3])
-m4_define([empathy_micro_version], [1])
+m4_define([empathy_micro_version], [2])
 m4_define([empathy_nano_version], [0])
 
 dnl Display the nano_version only if it's not '0'
@@ -43,8 +43,8 @@ KEYRING_REQUIRED=2.26.0
 GCR_REQUIRED=2.91.4
 LIBCANBERRA_GTK_REQUIRED=0.25
 LIBNOTIFY_REQUIRED=0.7.0
-TELEPATHY_FARSIGHT_REQUIRED=0.0.14
-TELEPATHY_GLIB_REQUIRED=0.16.0
+TELEPATHY_FARSIGHT_REQUIRED=0.0.18
+TELEPATHY_GLIB_REQUIRED=0.17.3
 TELEPATHY_LOGGER=0.2.10
 WEBKIT_REQUIRED=1.3.13
 GOA_REQUIRED=3.3.0
@@ -225,7 +225,7 @@ if test "x$enable_call" != "xno" ; then
    PKG_CHECK_MODULES(EMPATHY_CALL,
    [
       farsight2-0.10
-      telepathy-farstream
+      telepathy-farstream >= 0.1.2
       clutter-1.0 >= $CLUTTER_REQUIRED
       clutter-gtk-1.0
       clutter-gst-1.0
index e6414a805438b541c8466e2a914c7fa6107b2dff..a08ed620d757adbe66667043178631012bdc7577 100644 (file)
@@ -19,11 +19,6 @@ convertdir = $(datarootdir)/GConf/gsettings
 convert_DATA = \
        empathy.convert
 
-streamingprefsdir =  $(datadir)/empathy
-streamingprefs_DATA =          \
-       codec-preferences       \
-       element-properties
-
 servicefiledir = $(datadir)/dbus-1/services
 servicefile_in_files = \
        org.freedesktop.Telepathy.Client.Empathy.Chat.service.in \
@@ -76,7 +71,6 @@ EXTRA_DIST =                          \
        $(desktop_in_files)             \
        $(desktop_DATA)                 \
        $(schemas_DATA)                 \
-       $(streamingprefs_DATA)          \
        $(html_DATA)                    \
        $(clientfile_DATA)              \
        $(servicefile_in_files)         \
diff --git a/data/codec-preferences b/data/codec-preferences
deleted file mode 100644 (file)
index fbd8ad5..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-# Favorite audio codecs
-
-[audio/SPEEX:8000]
-clock-rate=8000
-
-[audio/SPEEX:16000]
-clock-rate=16000
-
-[audio/AMR]
-
-[audio/G729]
-
-[audio/ILBC]
-
-# Disabled audio codecs
-
-[audio/DV]
-id=-1
-
-[audio/MPA]
-id=-1
-
-[audio/VORBIS]
-id=-1
-
-[audio/MP3]
-id=-1
-
-
-# Favorite video codecs
-
-# We like freedom and the future (proof of concept VP8 payloading)
-[video/X-VP8-GST]
-
-# but keep an eye on people living in the past
-[video/H264]
-
-[video/H263]
-
-[video/THEORA]
-
-# Disable the ones we don't want
-[video/JPEG]
-id=-1
-
-[video/DV]
-id=-1
-
-[video/MPV]
-id=-1
diff --git a/data/element-properties b/data/element-properties
deleted file mode 100644 (file)
index 68debc2..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-# Put the desired properties in the style of
-#
-# [element name]
-# prop1=val1
-
-[gstrtpbin]
-latency=100
-
-[x264enc]
-byte-stream=1
-bframes=0
-b-adapt=0
-cabac=0
-dct8x8=0
-bitrate=256
-# tuned for zero latency
-tune=0x4
-profile=1
-speed-preset=3
-sliced-threads=false
-aud=false
-
-[ffenc_h263]
-rtp-payload-size=1
-
-[theoraenc]
-bitrate=256
-
-[vp8enc]
-bitrate=256000
-max-latency=1
-speed=2
-error-resilient=true
-
-# Work around bug in the re-timestamp slaving method in
-# GStreamer (2 is skew)
-[alsasrc]
-slave-method=2
-
-[osssrc]
-slave-method=2
-
-[oss4src]
-slave-method=2
-
-[sunaudiosrc]
-slave-method=2
-
-[rtph264pay]
-config-interval=5
-
-[rtppcmupay]
-ptime-multiple=20000000
-
-[rtppcmapay]
-ptime-multiple=20000000
-
-[gstrtpjitterbuffer]
-do-lost=1
index de57af80c97a192e21f7a20b1c331bb43f9de9b2..f3975fce2980af4794aeb6fad734bc66a600b2fb 100644 (file)
@@ -233,12 +233,6 @@ present them to the user immediately.</_description>
     </key>
   </schema>
   <schema id="org.gnome.Empathy.call" path="/org/gnome/empathy/call/">
-    <key name="volume" type="d">
-      <range min="0" max="150"/>
-      <default>100.0</default>
-      <_summary>Call volume</_summary>
-      <_description>Call volume, as a percentage.</_description>
-    </key>
     <key name="camera-device" type="s">
       <default>''</default>
       <_summary>Camera device</_summary>
index 1185d7ba31ef4a55ce68e5c7e482571698b06975..fd3942eaf359df2be0f1cb553828cc9b7ac9cbe1 100644 (file)
@@ -82,7 +82,7 @@ mcp_account_manager_goa_finalize (GObject *self)
 {
   McpAccountManagerGoaPrivate *priv = GET_PRIVATE (self);
 
-  g_hash_table_destroy (priv->accounts);
+  g_hash_table_unref (priv->accounts);
   g_key_file_free (priv->store);
   g_free (priv->filename);
 
@@ -150,7 +150,7 @@ get_tp_parameters (GoaAccount *account)
   else
     {
       DEBUG ("Unknown account type %s", type);
-      g_hash_table_destroy (params);
+      g_hash_table_unref (params);
       return NULL;
     }
 
@@ -179,7 +179,7 @@ get_tp_account_name (GoaAccount *account)
       (char *) g_hash_table_lookup (params, "protocol"),
       type, id);
 
-  g_hash_table_destroy (params);
+  g_hash_table_unref (params);
 
   return name;
 }
@@ -399,7 +399,7 @@ mcp_account_manager_goa_get (const McpAccountStorage *self,
       while (g_hash_table_iter_next (&iter, &key, &value))
         mcp_account_manager_set_value (am, acct, key, value);
 
-      g_hash_table_destroy (params);
+      g_hash_table_unref (params);
 
       /* Stored properties */
       keys = g_key_file_get_keys (priv->store, acct, &nkeys, NULL);
@@ -439,7 +439,7 @@ mcp_account_manager_goa_get (const McpAccountStorage *self,
 
       mcp_account_manager_set_value (am, acct, key, value);
 
-      g_hash_table_destroy (params);
+      g_hash_table_unref (params);
       g_free (value);
     }
 
index 96ef811b4e2d58c9a28b2a040480b3fe76316a6c..e502736d3618564f4634bc805854547003d5e000 100644 (file)
@@ -33,6 +33,8 @@ libempathy_gtk_handwritten_source =                   \
        empathy-account-widget.c                \
        empathy-avatar-chooser.c                \
        empathy-avatar-image.c                  \
+       empathy-bad-password-dialog.c           \
+       empathy-base-password-dialog.c          \
        empathy-call-utils.c                    \
        empathy-cell-renderer-activatable.c     \
        empathy-cell-renderer-expander.c        \
@@ -43,8 +45,6 @@ libempathy_gtk_handwritten_source =                   \
        empathy-contact-blocking-dialog.c       \
        empathy-contact-dialogs.c               \
        empathy-contact-chooser.c               \
-       empathy-contact-list-store.c            \
-       empathy-contact-list-view.c             \
        empathy-contact-menu.c                  \
        empathy-contactinfo-utils.c             \
        empathy-linking-dialog.c                \
@@ -60,6 +60,8 @@ libempathy_gtk_handwritten_source =                   \
        empathy-individual-linker.c             \
        empathy-individual-menu.c               \
        empathy-individual-store.c              \
+       empathy-individual-store-channel.c              \
+       empathy-individual-store-manager.c              \
        empathy-individual-view.c               \
        empathy-individual-widget.c             \
        empathy-input-text-view.c               \
@@ -100,6 +102,8 @@ libempathy_gtk_headers =                    \
        empathy-account-widget.h                \
        empathy-avatar-chooser.h                \
        empathy-avatar-image.h                  \
+       empathy-bad-password-dialog.h           \
+       empathy-base-password-dialog.h          \
        empathy-call-utils.h                    \
        empathy-cell-renderer-activatable.h     \
        empathy-cell-renderer-expander.h        \
@@ -110,8 +114,6 @@ libempathy_gtk_headers =                    \
        empathy-contact-blocking-dialog.h       \
        empathy-contact-dialogs.h               \
        empathy-contact-chooser.h               \
-       empathy-contact-list-store.h            \
-       empathy-contact-list-view.h             \
        empathy-contact-menu.h                  \
        empathy-linking-dialog.h                \
        empathy-live-search.h                   \
@@ -128,6 +130,8 @@ libempathy_gtk_headers =                    \
        empathy-individual-linker.h             \
        empathy-individual-menu.h               \
        empathy-individual-store.h              \
+       empathy-individual-store-channel.h              \
+       empathy-individual-store-manager.h              \
        empathy-individual-view.h               \
        empathy-individual-widget.h             \
        empathy-input-text-view.h               \
index 33082ba63418c5c2aefca26a4d5e56b4c18b8391..e314ad33fe2e18d915a54cdeb5f61466a3e9b567 100644 (file)
@@ -1172,7 +1172,7 @@ account_widget_build_external (EmpathyAccountWidget *self,
   const gchar *provider, *name = NULL;
   GDesktopAppInfo *desktop_info = NULL;
 
-  self->ui_details->widget = gtk_vbox_new (FALSE, 6);
+  self->ui_details->widget = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
   priv->grid_common_settings = gtk_grid_new ();
 
   provider = tp_account_get_storage_provider (account);
@@ -2190,9 +2190,11 @@ do_constructed (GObject *obj)
       !(storage_restrictions &
         TP_STORAGE_RESTRICTION_FLAG_CANNOT_SET_PARAMETERS))
     {
-      GtkWidget *hbox = gtk_hbox_new (TRUE, 3);
+      GtkWidget *hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 3);
       GtkWidget *image;
 
+      gtk_box_set_homogeneous (GTK_BOX (hbox), TRUE);
+
       /*  We can't use the stock button as its accelerator ('C') clashes with
        *  the Close button. */
       priv->cancel_button = gtk_button_new ();
diff --git a/libempathy-gtk/empathy-bad-password-dialog.c b/libempathy-gtk/empathy-bad-password-dialog.c
new file mode 100644 (file)
index 0000000..2209ff0
--- /dev/null
@@ -0,0 +1,192 @@
+/*
+ * empathy-bad-password-dialog.c - Source for EmpathyBadPasswordDialog
+ * Copyright (C) 2010 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+#include <config.h>
+
+#include "empathy-bad-password-dialog.h"
+
+#include <glib/gi18n-lib.h>
+
+#define DEBUG_FLAG EMPATHY_DEBUG_SASL
+#include <libempathy/empathy-debug.h>
+#include <libempathy/empathy-utils.h>
+
+G_DEFINE_TYPE (EmpathyBadPasswordDialog, empathy_bad_password_dialog,
+    EMPATHY_TYPE_BASE_PASSWORD_DIALOG)
+
+enum {
+  PROP_PASSWORD = 1,
+
+  LAST_PROPERTY,
+};
+
+/* signal enum */
+enum {
+  RETRY,
+  LAST_SIGNAL,
+};
+
+static guint signals[LAST_SIGNAL] = {0};
+
+struct _EmpathyBadPasswordDialogPriv {
+  gchar *password;
+};
+
+static void
+empathy_bad_password_dialog_get_property (GObject *object,
+    guint property_id,
+    GValue *value,
+    GParamSpec *pspec)
+{
+  EmpathyBadPasswordDialog *self = (EmpathyBadPasswordDialog *) object;
+
+  switch (property_id)
+    {
+    case PROP_PASSWORD:
+      g_value_set_string (value, self->priv->password);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+      break;
+    }
+}
+
+static void
+empathy_bad_password_dialog_set_property (GObject *object,
+    guint property_id,
+    const GValue *value,
+    GParamSpec *pspec)
+{
+  EmpathyBadPasswordDialog *self = (EmpathyBadPasswordDialog *) object;
+
+  switch (property_id)
+    {
+    case PROP_PASSWORD:
+      g_assert (self->priv->password == NULL); /* construct only */
+      self->priv->password = g_value_dup_string (value);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+      break;
+    }
+}
+
+static void
+empathy_bad_password_dialog_finalize (GObject *object)
+{
+  EmpathyBadPasswordDialog *self = (EmpathyBadPasswordDialog *) object;
+
+  tp_clear_pointer (&self->priv->password, g_free);
+
+  G_OBJECT_CLASS (empathy_bad_password_dialog_parent_class)->finalize (object);
+}
+
+static void
+bad_password_dialog_response_cb (GtkDialog *dialog,
+    gint response,
+    gpointer user_data)
+{
+  EmpathyBadPasswordDialog *self = (EmpathyBadPasswordDialog *) dialog;
+  EmpathyBasePasswordDialog *base = (EmpathyBasePasswordDialog *) dialog;
+
+  if (response == GTK_RESPONSE_OK)
+    {
+      const gchar *password;
+
+      password = gtk_entry_get_text (GTK_ENTRY (base->entry));
+
+      g_signal_emit (self, signals[RETRY], 0, base->account, password);
+    }
+
+  gtk_widget_destroy (GTK_WIDGET (dialog));
+}
+
+static void
+empathy_bad_password_dialog_constructed (GObject *object)
+{
+  EmpathyBadPasswordDialog *self = (EmpathyBadPasswordDialog *) object;
+  EmpathyBasePasswordDialog *base = (EmpathyBasePasswordDialog *) object;
+  gchar *text;
+
+  G_OBJECT_CLASS (empathy_bad_password_dialog_parent_class)->constructed (
+      object);
+
+  text = g_strdup_printf (_("Authentification failed for account <b>%s</b>"),
+      tp_account_get_display_name (base->account));
+  gtk_message_dialog_set_markup (GTK_MESSAGE_DIALOG (self), text);
+  g_free (text);
+
+  if (self->priv->password != NULL)
+    {
+      gtk_entry_set_text (GTK_ENTRY (base->entry), self->priv->password);
+
+      gtk_editable_select_region (GTK_EDITABLE (base->entry), 0, -1);
+    }
+
+  gtk_button_set_label (GTK_BUTTON (base->ok_button), _("Retry"));
+
+  g_signal_connect (self, "response",
+      G_CALLBACK (bad_password_dialog_response_cb), self);
+}
+
+static void
+empathy_bad_password_dialog_init (EmpathyBadPasswordDialog *self)
+{
+  self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self,
+      EMPATHY_TYPE_BAD_PASSWORD_DIALOG, EmpathyBadPasswordDialogPriv);
+}
+
+static void
+empathy_bad_password_dialog_class_init (EmpathyBadPasswordDialogClass *klass)
+{
+  GParamSpec *pspec;
+  GObjectClass *oclass = G_OBJECT_CLASS (klass);
+
+  g_type_class_add_private (klass, sizeof (EmpathyBadPasswordDialogPriv));
+
+  oclass->set_property = empathy_bad_password_dialog_set_property;
+  oclass->get_property = empathy_bad_password_dialog_get_property;
+  oclass->finalize = empathy_bad_password_dialog_finalize;
+  oclass->constructed = empathy_bad_password_dialog_constructed;
+
+  pspec = g_param_spec_string ("password", "Password",
+      "The wrong password",
+      NULL,
+      G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+  g_object_class_install_property (oclass, PROP_PASSWORD, pspec);
+
+  signals[RETRY] = g_signal_new ("retry",
+      G_TYPE_FROM_CLASS (klass),
+      G_SIGNAL_RUN_LAST, 0,
+      NULL, NULL,
+      g_cclosure_marshal_generic,
+      G_TYPE_NONE, 2, TP_TYPE_ACCOUNT, G_TYPE_STRING);
+}
+
+GtkWidget *
+empathy_bad_password_dialog_new (TpAccount *account,
+    const gchar *password)
+{
+  g_return_val_if_fail (TP_IS_ACCOUNT (account), NULL);
+
+  return g_object_new (EMPATHY_TYPE_BAD_PASSWORD_DIALOG,
+      "account", account,
+      "password", password,
+      NULL);
+}
diff --git a/libempathy-gtk/empathy-bad-password-dialog.h b/libempathy-gtk/empathy-bad-password-dialog.h
new file mode 100644 (file)
index 0000000..5cf1c71
--- /dev/null
@@ -0,0 +1,68 @@
+/*
+ * empathy-bad-password-dialog.h - Header for EmpathyBadPasswordDialog
+ * Copyright (C) 2010 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+#ifndef __EMPATHY_BAD_PASSWORD_DIALOG_H__
+#define __EMPATHY_BAD_PASSWORD_DIALOG_H__
+
+#include <glib-object.h>
+#include <gtk/gtk.h>
+
+#include <libempathy-gtk/empathy-base-password-dialog.h>
+
+#include <extensions/extensions.h>
+
+G_BEGIN_DECLS
+
+typedef struct _EmpathyBadPasswordDialog EmpathyBadPasswordDialog;
+typedef struct _EmpathyBadPasswordDialogClass EmpathyBadPasswordDialogClass;
+typedef struct _EmpathyBadPasswordDialogPriv EmpathyBadPasswordDialogPriv;
+
+struct _EmpathyBadPasswordDialogClass {
+    EmpathyBasePasswordDialogClass parent_class;
+};
+
+struct _EmpathyBadPasswordDialog {
+    EmpathyBasePasswordDialog parent;
+    EmpathyBadPasswordDialogPriv *priv;
+};
+
+GType empathy_bad_password_dialog_get_type (void);
+
+#define EMPATHY_TYPE_BAD_PASSWORD_DIALOG \
+  (empathy_bad_password_dialog_get_type ())
+#define EMPATHY_BAD_PASSWORD_DIALOG(obj) \
+  (G_TYPE_CHECK_INSTANCE_CAST((obj), EMPATHY_TYPE_BAD_PASSWORD_DIALOG, \
+    EmpathyBadPasswordDialog))
+#define EMPATHY_BAD_PASSWORD_DIALOG_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_CAST((klass), EMPATHY_TYPE_BAD_PASSWORD_DIALOG, \
+  EmpathyBadPasswordDialogClass))
+#define EMPATHY_IS_BAD_PASSWORD_DIALOG(obj) \
+  (G_TYPE_CHECK_INSTANCE_TYPE((obj), EMPATHY_TYPE_BAD_PASSWORD_DIALOG))
+#define EMPATHY_IS_BAD_PASSWORD_DIALOG_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_TYPE((klass), EMPATHY_TYPE_BAD_PASSWORD_DIALOG))
+#define EMPATHY_BAD_PASSWORD_DIALOG_GET_CLASS(obj) \
+  (G_TYPE_INSTANCE_GET_CLASS ((obj), EMPATHY_TYPE_BAD_PASSWORD_DIALOG, \
+  EmpathyBadPasswordDialogClass))
+
+GtkWidget * empathy_bad_password_dialog_new (TpAccount *account,
+    const gchar *password);
+
+G_END_DECLS
+
+#endif /* #ifndef __EMPATHY_BAD_PASSWORD_DIALOG_H__*/
diff --git a/libempathy-gtk/empathy-base-password-dialog.c b/libempathy-gtk/empathy-base-password-dialog.c
new file mode 100644 (file)
index 0000000..be708e8
--- /dev/null
@@ -0,0 +1,302 @@
+/*
+ * empathy-base-password-dialog.c - Source for EmpathyBasePasswordDialog
+ * Copyright (C) 2010 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+#include <config.h>
+
+#include "empathy-base-password-dialog.h"
+
+#include <glib/gi18n-lib.h>
+
+#define DEBUG_FLAG EMPATHY_DEBUG_SASL
+#include <libempathy/empathy-debug.h>
+#include <libempathy/empathy-utils.h>
+
+G_DEFINE_TYPE (EmpathyBasePasswordDialog, empathy_base_password_dialog,
+    GTK_TYPE_MESSAGE_DIALOG)
+
+enum {
+  PROP_ACCOUNT = 1,
+
+  LAST_PROPERTY,
+};
+
+struct _EmpathyBasePasswordDialogPriv {
+  gboolean grabbing;
+};
+
+static void
+empathy_base_password_dialog_get_property (GObject *object,
+    guint property_id,
+    GValue *value,
+    GParamSpec *pspec)
+{
+  EmpathyBasePasswordDialog *self = (EmpathyBasePasswordDialog *) object;
+
+  switch (property_id)
+    {
+    case PROP_ACCOUNT:
+      g_value_set_object (value, self->account);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+      break;
+    }
+}
+
+static void
+empathy_base_password_dialog_set_property (GObject *object,
+    guint property_id,
+    const GValue *value,
+    GParamSpec *pspec)
+{
+  EmpathyBasePasswordDialog *self = (EmpathyBasePasswordDialog *) object;
+
+  switch (property_id)
+    {
+    case PROP_ACCOUNT:
+      g_assert (self->account == NULL); /* construct only */
+      self->account = g_value_dup_object (value);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+      break;
+    }
+}
+
+static void
+empathy_base_password_dialog_dispose (GObject *object)
+{
+  EmpathyBasePasswordDialog *self = (EmpathyBasePasswordDialog *) object;
+
+  tp_clear_object (&self->account);
+
+  G_OBJECT_CLASS (empathy_base_password_dialog_parent_class)->dispose (object);
+}
+
+static void
+clear_icon_released_cb (GtkEntry *entry,
+    GtkEntryIconPosition icon_pos,
+    GdkEvent *event,
+    gpointer user_data)
+{
+  gtk_entry_set_text (entry, "");
+}
+
+static void
+password_entry_changed_cb (GtkEditable *entry,
+    gpointer user_data)
+{
+  EmpathyBasePasswordDialog *self = user_data;
+  const gchar *str;
+
+  str = gtk_entry_get_text (GTK_ENTRY (entry));
+
+  gtk_entry_set_icon_sensitive (GTK_ENTRY (entry),
+      GTK_ENTRY_ICON_SECONDARY, !EMP_STR_EMPTY (str));
+
+  gtk_widget_set_sensitive (self->ok_button,
+      !EMP_STR_EMPTY (str));
+}
+
+static void
+password_entry_activate_cb (GtkEntry *entry,
+    EmpathyBasePasswordDialog *self)
+{
+  gtk_dialog_response (GTK_DIALOG (self), GTK_RESPONSE_OK);
+}
+
+static gboolean
+base_password_dialog_grab_keyboard (GtkWidget *widget,
+    GdkEvent *event,
+    gpointer user_data)
+{
+  EmpathyBasePasswordDialog *self = user_data;
+
+  if (!self->priv->grabbing)
+    {
+      GdkDevice *device = gdk_event_get_device (event);
+
+      if (device != NULL)
+        {
+          GdkGrabStatus status = gdk_device_grab (device,
+              gtk_widget_get_window (widget),
+              GDK_OWNERSHIP_WINDOW,
+              FALSE,
+              GDK_ALL_EVENTS_MASK,
+              NULL,
+              gdk_event_get_time (event));
+
+          if (status != GDK_GRAB_SUCCESS)
+            DEBUG ("Could not grab keyboard; grab status was %u", status);
+          else
+            self->priv->grabbing = TRUE;
+        }
+      else
+        DEBUG ("Could not get the event device!");
+    }
+
+  return FALSE;
+}
+
+static gboolean
+base_password_dialog_ungrab_keyboard (GtkWidget *widget,
+    GdkEvent *event,
+    gpointer user_data)
+{
+  EmpathyBasePasswordDialog *self = user_data;
+
+  if (self->priv->grabbing)
+    {
+      GdkDevice *device = gdk_event_get_device (event);
+
+      if (device != NULL)
+        {
+          gdk_device_ungrab (device, gdk_event_get_time (event));
+          self->priv->grabbing = FALSE;
+        }
+      else
+        DEBUG ("Could not get the event device!");
+    }
+
+  return FALSE;
+}
+
+static gboolean
+base_password_dialog_window_state_changed (GtkWidget *widget,
+    GdkEventWindowState *event,
+    gpointer data)
+{
+  GdkWindowState state = gdk_window_get_state (gtk_widget_get_window (widget));
+
+  if (state & GDK_WINDOW_STATE_WITHDRAWN
+      || state & GDK_WINDOW_STATE_ICONIFIED
+      || state & GDK_WINDOW_STATE_FULLSCREEN
+      || state & GDK_WINDOW_STATE_MAXIMIZED)
+    {
+      base_password_dialog_ungrab_keyboard (widget, (GdkEvent *) event, data);
+    }
+  else
+    {
+      base_password_dialog_grab_keyboard (widget, (GdkEvent *) event, data);
+    }
+
+  return FALSE;
+}
+
+static void
+empathy_base_password_dialog_constructed (GObject *object)
+{
+  EmpathyBasePasswordDialog *self;
+  GtkWidget *icon;
+  GtkBox *box;
+  gchar *text;
+
+  self = EMPATHY_BASE_PASSWORD_DIALOG (object);
+
+  g_assert (self->account != NULL);
+
+  self->priv->grabbing = FALSE;
+
+  /* dialog */
+  gtk_dialog_add_button (GTK_DIALOG (self),
+      GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL);
+
+  self->ok_button = gtk_dialog_add_button (GTK_DIALOG (self),
+      GTK_STOCK_OK, GTK_RESPONSE_OK);
+  gtk_widget_set_sensitive (self->ok_button, FALSE);
+
+  text = g_strdup_printf (_("Enter your password for account\n<b>%s</b>"),
+      tp_account_get_display_name (self->account));
+  gtk_message_dialog_set_markup (GTK_MESSAGE_DIALOG (self), text);
+  g_free (text);
+
+  gtk_window_set_icon_name (GTK_WINDOW (self),
+      GTK_STOCK_DIALOG_AUTHENTICATION);
+
+  box = GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (self)));
+
+  /* dialog icon */
+  icon = gtk_image_new_from_icon_name (
+      tp_account_get_icon_name (self->account), GTK_ICON_SIZE_DIALOG);
+  gtk_message_dialog_set_image (GTK_MESSAGE_DIALOG (self), icon);
+  gtk_widget_show (icon);
+
+  /* entry */
+  self->entry = gtk_entry_new ();
+  gtk_entry_set_visibility (GTK_ENTRY (self->entry), FALSE);
+
+  /* entry clear icon */
+  gtk_entry_set_icon_from_stock (GTK_ENTRY (self->entry),
+      GTK_ENTRY_ICON_SECONDARY, GTK_STOCK_CLEAR);
+  gtk_entry_set_icon_sensitive (GTK_ENTRY (self->entry),
+      GTK_ENTRY_ICON_SECONDARY, FALSE);
+
+  g_signal_connect (self->entry, "icon-release",
+      G_CALLBACK (clear_icon_released_cb), NULL);
+  g_signal_connect (self->entry, "changed",
+      G_CALLBACK (password_entry_changed_cb), self);
+  g_signal_connect (self->entry, "activate",
+      G_CALLBACK (password_entry_activate_cb), self);
+
+  gtk_box_pack_start (box, self->entry, FALSE, FALSE, 0);
+  gtk_widget_show (self->entry);
+
+  /* remember password ticky box */
+  self->ticky = gtk_check_button_new_with_label (_("Remember password"));
+
+  gtk_box_pack_start (box, self->ticky, FALSE, FALSE, 0);
+
+  g_signal_connect (self, "window-state-event",
+      G_CALLBACK (base_password_dialog_window_state_changed), self);
+  g_signal_connect (self, "map-event",
+      G_CALLBACK (base_password_dialog_grab_keyboard), self);
+  g_signal_connect (self, "unmap-event",
+      G_CALLBACK (base_password_dialog_ungrab_keyboard), self);
+
+  gtk_widget_grab_focus (self->entry);
+
+  gtk_window_set_position (GTK_WINDOW (self), GTK_WIN_POS_CENTER_ALWAYS);
+}
+
+static void
+empathy_base_password_dialog_init (EmpathyBasePasswordDialog *self)
+{
+  self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self,
+      EMPATHY_TYPE_BASE_PASSWORD_DIALOG, EmpathyBasePasswordDialogPriv);
+}
+
+static void
+empathy_base_password_dialog_class_init (EmpathyBasePasswordDialogClass *klass)
+{
+  GParamSpec *pspec;
+  GObjectClass *oclass = G_OBJECT_CLASS (klass);
+
+  g_type_class_add_private (klass, sizeof (EmpathyBasePasswordDialogPriv));
+
+  oclass->set_property = empathy_base_password_dialog_set_property;
+  oclass->get_property = empathy_base_password_dialog_get_property;
+  oclass->dispose = empathy_base_password_dialog_dispose;
+  oclass->constructed = empathy_base_password_dialog_constructed;
+
+  pspec = g_param_spec_object ("account", "The TpAccount",
+      "The TpAccount to be used.",
+      TP_TYPE_ACCOUNT,
+      G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+  g_object_class_install_property (oclass, PROP_ACCOUNT, pspec);
+}
diff --git a/libempathy-gtk/empathy-base-password-dialog.h b/libempathy-gtk/empathy-base-password-dialog.h
new file mode 100644 (file)
index 0000000..c144a66
--- /dev/null
@@ -0,0 +1,71 @@
+/*
+ * empathy-base-password-dialog.h - Header for EmpathyBasePasswordDialog
+ * Copyright (C) 2010 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+#ifndef __EMPATHY_BASE_PASSWORD_DIALOG_H__
+#define __EMPATHY_BASE_PASSWORD_DIALOG_H__
+
+#include <glib-object.h>
+#include <gtk/gtk.h>
+
+#include <libempathy/empathy-server-sasl-handler.h>
+
+#include <extensions/extensions.h>
+
+G_BEGIN_DECLS
+
+typedef struct _EmpathyBasePasswordDialog EmpathyBasePasswordDialog;
+typedef struct _EmpathyBasePasswordDialogClass EmpathyBasePasswordDialogClass;
+typedef struct _EmpathyBasePasswordDialogPriv EmpathyBasePasswordDialogPriv;
+
+struct _EmpathyBasePasswordDialogClass {
+  GtkMessageDialogClass parent_class;
+};
+
+struct _EmpathyBasePasswordDialog {
+  GtkMessageDialog parent;
+  EmpathyBasePasswordDialogPriv *priv;
+
+  /* protected */
+  TpAccount *account;
+  GtkWidget *entry;
+  GtkWidget *ticky;
+  GtkWidget *ok_button;
+};
+
+GType empathy_base_password_dialog_get_type (void);
+
+#define EMPATHY_TYPE_BASE_PASSWORD_DIALOG \
+  (empathy_base_password_dialog_get_type ())
+#define EMPATHY_BASE_PASSWORD_DIALOG(obj) \
+  (G_TYPE_CHECK_INSTANCE_CAST((obj), EMPATHY_TYPE_BASE_PASSWORD_DIALOG, \
+    EmpathyBasePasswordDialog))
+#define EMPATHY_BASE_PASSWORD_DIALOG_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_CAST((klass), EMPATHY_TYPE_BASE_PASSWORD_DIALOG, \
+  EmpathyBasePasswordDialogClass))
+#define EMPATHY_IS_BASE_PASSWORD_DIALOG(obj) \
+  (G_TYPE_CHECK_INSTANCE_TYPE((obj), EMPATHY_TYPE_BASE_PASSWORD_DIALOG))
+#define EMPATHY_IS_BASE_PASSWORD_DIALOG_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_TYPE((klass), EMPATHY_TYPE_BASE_PASSWORD_DIALOG))
+#define EMPATHY_BASE_PASSWORD_DIALOG_GET_CLASS(obj) \
+  (G_TYPE_INSTANCE_GET_CLASS ((obj), EMPATHY_TYPE_BASE_PASSWORD_DIALOG, \
+  EmpathyBasePasswordDialogClass))
+
+G_END_DECLS
+
+#endif /* #ifndef __EMPATHY_BASE_PASSWORD_DIALOG_H__*/
index adf4987bad0e6b8197c38a97b0eadaf7b5e5b6b1..16526d3544d4e5b6aa945703d257fe9da099605c 100644 (file)
@@ -250,22 +250,28 @@ empathy_call_new_with_streams (const gchar *contact,
 }
 
 void
-empathy_call_set_stream_properties (GstElement *element)
+empathy_call_set_stream_properties (GstElement *element,
+  gboolean echo_cancellation)
 {
   GstStructure *props;
   GSettings *gsettings_call;
-  gboolean echo_cancellation;
+  gboolean echo_cancellation_setting;
 
   gsettings_call = g_settings_new (EMPATHY_PREFS_CALL_SCHEMA);
 
-  echo_cancellation = g_settings_get_boolean (gsettings_call,
+  echo_cancellation_setting = g_settings_get_boolean (gsettings_call,
       EMPATHY_PREFS_CALL_ECHO_CANCELLATION);
 
+  DEBUG ("Echo cancellation: element allowed: %s, user enabled: %s",
+    echo_cancellation ? " yes" : "no",
+    echo_cancellation_setting ? " yes" : "no");
+
+
   props = gst_structure_new ("props",
       PA_PROP_MEDIA_ROLE, G_TYPE_STRING, "phone",
       NULL);
 
-  if (echo_cancellation)
+  if (echo_cancellation && echo_cancellation_setting)
     {
       gst_structure_set (props,
           "filter.want", G_TYPE_STRING, "echo-cancel",
index 87676161c698d176dcb5b92ba7e1dac536fc80c3..8361031002ac3b5df5d3195daae582601bb48b9a 100644 (file)
@@ -40,7 +40,8 @@ GHashTable * empathy_call_create_streamed_media_request (const gchar *contact,
     gboolean initial_audio,
     gboolean initial_video);
 
-void empathy_call_set_stream_properties (GstElement *element);
+void empathy_call_set_stream_properties (GstElement *element,
+    gboolean echo_cancellation);
 
 G_END_DECLS
 
index 24899942712c5b6ffd3879ca023068daf83d3605..c251f1f423d560ff2f1ba2fc7212f0764ea3c7f8 100644 (file)
@@ -151,7 +151,7 @@ chat_text_view_event_cb (EmpathyChatTextView *view,
                return FALSE;
        }
 
-       gdk_window_get_pointer (win, &x, &y, NULL);
+       gdk_window_get_device_position (win, event->device, &x, &y, NULL);
 
        /* Get the iter where the cursor is at */
        gtk_text_view_window_to_buffer_coords (GTK_TEXT_VIEW (view), type,
@@ -286,7 +286,9 @@ chat_text_view_populate_popup (EmpathyChatTextView *view,
        table = gtk_text_buffer_get_tag_table (priv->buffer);
        tag = gtk_text_tag_table_lookup (table, EMPATHY_CHAT_TEXT_VIEW_TAG_LINK);
 
-       gtk_widget_get_pointer (GTK_WIDGET (view), &x, &y);
+       gdk_window_get_device_position (gtk_widget_get_window (GTK_WIDGET (view)),
+               gdk_device_manager_get_client_pointer (gdk_display_get_device_manager (
+                       gtk_widget_get_display (GTK_WIDGET (view)))), &x, &y, NULL);
 
        gtk_text_view_window_to_buffer_coords (GTK_TEXT_VIEW (view),
                                               GTK_TEXT_WINDOW_WIDGET,
index 09146d896633905842391e49c3254f2395fb95cf..70e35ddad0d4b49e159df8c146463792139e4e64 100644 (file)
@@ -49,8 +49,8 @@
 #include "empathy-chat.h"
 #include "empathy-spell.h"
 #include "empathy-contact-dialogs.h"
-#include "empathy-contact-list-store.h"
-#include "empathy-contact-list-view.h"
+#include "empathy-individual-store-channel.h"
+#include "empathy-individual-view.h"
 #include "empathy-contact-menu.h"
 #include "empathy-input-text-view.h"
 #include "empathy-search-bar.h"
@@ -2331,7 +2331,10 @@ chat_input_populate_popup_cb (GtkTextView *view,
        switch (priv->most_recent_event_type) {
            case GDK_BUTTON_PRESS:
                /* get the location from the pointer */
-               gtk_widget_get_pointer (GTK_WIDGET (view), &x, &y);
+               gdk_window_get_device_position (gtk_widget_get_window (GTK_WIDGET (view)),
+                       gdk_device_manager_get_client_pointer (gdk_display_get_device_manager (
+                               gtk_widget_get_display (GTK_WIDGET (view)))), &x, &y, NULL);
+
                gtk_text_view_window_to_buffer_coords (GTK_TEXT_VIEW (view),
                                                       GTK_TEXT_WINDOW_WIDGET,
                                                       x, y,
@@ -2725,7 +2728,7 @@ chat_update_contacts_visibility (EmpathyChat *chat,
        }
 
        if (show && priv->contact_list_view == NULL) {
-               EmpathyContactListStore *store;
+               EmpathyIndividualStore *store;
                gint                     min_width;
                GtkAllocation            allocation;
 
@@ -2746,19 +2749,27 @@ chat_update_contacts_visibility (EmpathyChat *chat,
                priv->contacts_visible_id = g_timeout_add (500,
                        chat_contacts_visible_timeout_cb, chat);
 
-               store = empathy_contact_list_store_new (
-                               EMPATHY_CONTACT_LIST (priv->tp_chat));
-               empathy_contact_list_store_set_show_groups (
-                               EMPATHY_CONTACT_LIST_STORE (store), FALSE);
-
-               priv->contact_list_view = GTK_WIDGET (empathy_contact_list_view_new (store,
-                       EMPATHY_CONTACT_LIST_FEATURE_CONTACT_TOOLTIP,
-                       EMPATHY_CONTACT_FEATURE_CHAT |
-                       EMPATHY_CONTACT_FEATURE_CALL |
-                       EMPATHY_CONTACT_FEATURE_LOG |
-                       EMPATHY_CONTACT_FEATURE_INFO));
+               store = EMPATHY_INDIVIDUAL_STORE (
+                               empathy_individual_store_channel_new ((TpChannel *) priv->tp_chat));
+
+               empathy_individual_store_set_show_groups (store, FALSE);
+
+               priv->contact_list_view = GTK_WIDGET (empathy_individual_view_new (store,
+                       EMPATHY_INDIVIDUAL_VIEW_FEATURE_INDIVIDUAL_TOOLTIP,
+                       EMPATHY_INDIVIDUAL_FEATURE_ADD_CONTACT |
+                       EMPATHY_INDIVIDUAL_FEATURE_CHAT |
+                       EMPATHY_INDIVIDUAL_FEATURE_CALL |
+                       EMPATHY_INDIVIDUAL_FEATURE_LOG |
+                       EMPATHY_INDIVIDUAL_FEATURE_INFO));
+
+               empathy_individual_view_set_show_offline (
+                       EMPATHY_INDIVIDUAL_VIEW (priv->contact_list_view), TRUE);
+               empathy_individual_view_set_show_uninteresting (
+                       EMPATHY_INDIVIDUAL_VIEW (priv->contact_list_view), TRUE);
+
                gtk_container_add (GTK_CONTAINER (priv->scrolled_window_contacts),
                                   priv->contact_list_view);
+
                gtk_widget_show (priv->contact_list_view);
                gtk_widget_show (priv->scrolled_window_contacts);
                g_object_unref (store);
@@ -3470,7 +3481,7 @@ chat_prompt_to_save_password (EmpathyChat *self,
        gtk_info_bar_set_message_type (GTK_INFO_BAR (data->info_bar),
                                       GTK_MESSAGE_QUESTION);
 
-       hbox = gtk_hbox_new (FALSE, 5);
+       hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 5);
        gtk_box_pack_start (GTK_BOX (content_area), hbox, TRUE, TRUE, 0);
 
        /* Add image */
@@ -3664,7 +3675,7 @@ display_password_info_bar (EmpathyChat *self)
 
        content_area = gtk_info_bar_get_content_area (GTK_INFO_BAR (info_bar));
 
-       hbox = gtk_hbox_new (FALSE, 5);
+       hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 5);
        gtk_box_pack_start (GTK_BOX (content_area), hbox, TRUE, TRUE, 0);
 
        /* Add image */
index b000e24d4aeef6921a80ee92a99a590dc9f64e55..c28362b7019fadb099232f3e3b2df03b8da7c4f7 100644 (file)
@@ -47,9 +47,6 @@ G_DEFINE_TYPE (EmpathyContactBlockingDialog, empathy_contact_blocking_dialog,
 
 struct _EmpathyContactBlockingDialogPrivate
 {
-  /* a map of all active connections to their 'deny' channel */
-  GHashTable *channels; /* reffed TpConnection* -> reffed TpChannel* */
-
   guint block_account_changed;
 
   GtkListStore *blocked_contacts;
@@ -62,12 +59,14 @@ struct _EmpathyContactBlockingDialogPrivate
   GtkWidget *info_bar;
   GtkWidget *info_bar_label;
   GtkWidget *remove_button;
+
+  TpConnection *current_conn;
 };
 
 enum /* blocked-contacts columns */
 {
   COL_BLOCKED_IDENTIFIER,
-  COL_BLOCKED_HANDLE,
+  COL_BLOCKED_CONTACT,
   N_BLOCKED_COLUMNS
 };
 
@@ -90,13 +89,13 @@ contact_blocking_dialog_filter_account_chooser (TpAccount *account,
     gpointer callback_data,
     gpointer user_data)
 {
-  EmpathyContactBlockingDialog *self = user_data;
   TpConnection *conn = tp_account_get_connection (account);
   gboolean enable;
 
   enable =
     conn != NULL &&
-    g_hash_table_lookup (self->priv->channels, conn) != NULL;
+    tp_proxy_has_interface_by_id (conn,
+      TP_IFACE_QUARK_CONNECTION_INTERFACE_CONTACT_BLOCKING);
 
   callback (enable, callback_data);
 }
@@ -124,7 +123,8 @@ contact_blocking_dialog_refilter_account_chooser (
   conn = empathy_account_chooser_get_connection (chooser);
   enabled = (empathy_account_chooser_get_account (chooser) != NULL &&
              conn != NULL &&
-             g_hash_table_lookup (self->priv->channels, conn) != NULL);
+             tp_proxy_has_interface_by_id (conn,
+               TP_IFACE_QUARK_CONNECTION_INTERFACE_CONTACT_BLOCKING));
 
   if (!enabled)
     DEBUG ("No account selected");
@@ -135,56 +135,63 @@ contact_blocking_dialog_refilter_account_chooser (
   contact_blocking_dialog_account_changed (self->priv->account_chooser, self);
 }
 
-static void contact_blocking_dialog_inspected_handles (TpConnection *,
-    const char **, const GError *, gpointer, GObject *);
-
 static void
-contact_blocking_dialog_add_contacts_to_list (
+contact_blocking_dialog_add_blocked (
     EmpathyContactBlockingDialog *self,
-    TpConnection *conn,
-    GArray *handles)
-{
-  if (handles->len > 0)
-    tp_cli_connection_call_inspect_handles (conn, -1,
-        TP_HANDLE_TYPE_CONTACT, handles,
-        contact_blocking_dialog_inspected_handles,
-        g_boxed_copy (DBUS_TYPE_G_UINT_ARRAY, handles),
-        (GDestroyNotify) g_array_unref, G_OBJECT (self));
-}
-
-static void
-contact_blocking_dialog_inspected_handles (TpConnection *conn,
-    const char **identifiers,
-    const GError *in_error,
-    gpointer user_data,
-    GObject *self)
+    GPtrArray *blocked)
 {
   EmpathyContactBlockingDialogPrivate *priv = GET_PRIVATE (self);
-  GArray *handles = user_data;
   guint i;
 
-  if (in_error != NULL)
+  if (blocked == NULL)
+    return;
+
+  for (i = 0; i < blocked->len; i++)
     {
-      DEBUG ("Failed to inspect handles: %s", in_error->message);
-      return;
+      TpContact *contact = g_ptr_array_index (blocked, i);
+
+      gtk_list_store_insert_with_values (priv->blocked_contacts, NULL, -1,
+          COL_BLOCKED_IDENTIFIER, tp_contact_get_identifier (contact),
+          COL_BLOCKED_CONTACT, contact,
+          -1);
     }
+}
+
+static void
+blocked_contacts_changed_cb (TpConnection *conn,
+    GPtrArray *added,
+    GPtrArray *removed,
+    EmpathyContactBlockingDialog *self)
+{
+  GtkTreeModel *model = GTK_TREE_MODEL (self->priv->blocked_contacts);
+  GtkTreeIter iter;
+  gboolean valid;
+
+  DEBUG ("blocked contacts changed on %s: %u added, %u removed",
+      get_pretty_conn_name (conn), added->len, removed->len);
 
-  DEBUG ("Adding %u identifiers", handles->len);
+  /* add contacts */
+  contact_blocking_dialog_add_blocked (self, added);
 
-  for (i = 0; i < handles->len; i++)
+  /* remove contacts */
+  valid = gtk_tree_model_get_iter_first (model, &iter);
+  while (valid)
     {
-      const char *identifier = identifiers[i];
-      TpHandle handle = g_array_index (handles, TpHandle, i);
+      TpContact *contact;
 
-      gtk_list_store_insert_with_values (priv->blocked_contacts, NULL, -1,
-          COL_BLOCKED_IDENTIFIER, identifier,
-          COL_BLOCKED_HANDLE, handle,
+      gtk_tree_model_get (model, &iter,
+          COL_BLOCKED_CONTACT, &contact,
           -1);
+
+      if (tp_g_ptr_array_contains (removed, contact))
+        valid = gtk_list_store_remove (self->priv->blocked_contacts, &iter);
+      else
+        valid = gtk_tree_model_iter_next (model, &iter);
+
+      g_object_unref (contact);
     }
 }
 
-DECLARE_CALLBACK (contact_blocking_dialog_connection_prepared);
-
 static void
 contact_blocking_dialog_connection_status_changed (TpAccount *account,
     guint old_status,
@@ -201,8 +208,6 @@ contact_blocking_dialog_connection_status_changed (TpAccount *account,
       case TP_CONNECTION_STATUS_DISCONNECTED:
         DEBUG ("Connection %s invalidated", get_pretty_conn_name (conn));
 
-        /* remove the channel from the hash table */
-        g_hash_table_remove (self->priv->channels, conn);
         contact_blocking_dialog_refilter_account_chooser (self);
         break;
 
@@ -212,65 +217,10 @@ contact_blocking_dialog_connection_status_changed (TpAccount *account,
       case TP_CONNECTION_STATUS_CONNECTED:
         DEBUG ("Connection %s reconnected", get_pretty_conn_name (conn));
 
-        tp_proxy_prepare_async (conn, NULL,
-            contact_blocking_dialog_connection_prepared, self);
-    }
-}
-
-static void
-contact_blocking_dialog_deny_channel_members_changed (TpChannel *channel,
-    const char *message,
-    GArray *added,
-    GArray *removed,
-    GArray *local_pending,
-    GArray *remote_pending,
-    TpHandle actor,
-    guint reason,
-    EmpathyContactBlockingDialog *self)
-{
-  TpConnection *conn = tp_channel_borrow_connection (channel);
-  GtkTreeModel *model = GTK_TREE_MODEL (self->priv->blocked_contacts);
-  GtkTreeIter iter;
-  TpIntset *removed_set;
-  gboolean valid;
-
-  /* we only care about changes to the selected connection */
-  /* FIXME: can we compare proxy pointers directly? */
-  if (tp_strdiff (
-        tp_proxy_get_object_path (tp_channel_borrow_connection (channel)),
-        tp_proxy_get_object_path (empathy_account_chooser_get_connection (
-            EMPATHY_ACCOUNT_CHOOSER (self->priv->account_chooser)))))
-    return;
-
-  DEBUG ("deny list changed on %s: %u added, %u removed",
-      get_pretty_conn_name (conn), added->len, removed->len);
-
-  /* add contacts */
-  contact_blocking_dialog_add_contacts_to_list (self, conn, added);
-
-  /* remove contacts */
-  removed_set = tp_intset_from_array (removed);
-
-  valid = gtk_tree_model_get_iter_first (model, &iter);
-  while (valid)
-    {
-      TpHandle handle;
-
-      gtk_tree_model_get (model, &iter,
-          COL_BLOCKED_HANDLE, &handle,
-          -1);
-
-      if (tp_intset_is_member (removed_set, handle))
-        valid = gtk_list_store_remove (self->priv->blocked_contacts, &iter);
-      else
-        valid = gtk_tree_model_iter_next (model, &iter);
+        contact_blocking_dialog_refilter_account_chooser (self);
     }
-
-  tp_intset_destroy (removed_set);
 }
 
-DECLARE_CALLBACK (contact_blocking_dialog_connection_prepared);
-
 static void
 contact_blocking_dialog_am_prepared (GObject *am,
     GAsyncResult *result,
@@ -292,166 +242,100 @@ contact_blocking_dialog_am_prepared (GObject *am,
   for (ptr = accounts; ptr != NULL; ptr = ptr->next)
     {
       TpAccount *account = ptr->data;
-      TpConnection *conn;
 
       tp_g_signal_connect_object (account, "status-changed",
           G_CALLBACK (contact_blocking_dialog_connection_status_changed),
           self, 0);
 
-      conn = tp_account_get_connection (TP_ACCOUNT (account));
-
-      if (conn != NULL)
-        {
-          tp_proxy_prepare_async (conn, NULL,
-              contact_blocking_dialog_connection_prepared, self);
-        }
+      contact_blocking_dialog_refilter_account_chooser (self);
     }
 
   g_list_free (accounts);
 }
 
-static void contact_blocking_dialog_got_deny_channel (TpConnection *,
-    gboolean, const char *, GHashTable *, const GError *, gpointer, GObject *);
-
 static void
-contact_blocking_dialog_connection_prepared (GObject *conn,
-    GAsyncResult *result,
-    gpointer user_data)
+contact_blocking_dialog_set_error (EmpathyContactBlockingDialog *self,
+    const GError *error)
 {
-  EmpathyContactBlockingDialog *self = user_data;
-  GHashTable *request;
-  GError *error = NULL;
+  const char *msg = NULL;
 
-  if (!tp_proxy_prepare_finish (conn, result, &error))
+  if (error->domain == TP_ERRORS)
     {
-      DEBUG ("Failed to prepare connection %s: %s",
-          get_pretty_conn_name ((TpConnection *) conn), error->message);
-      g_error_free (error);
-      return;
+      if (error->code == TP_ERROR_INVALID_HANDLE)
+        msg = _("Unknown or invalid identifier");
+      else if (error->code == TP_ERROR_NOT_AVAILABLE)
+        msg = _("Contact blocking temporarily unavailable");
+      else if (error->code == TP_ERROR_NOT_CAPABLE)
+        msg = _("Contact blocking unavailable");
+      else if (error->code == TP_ERROR_PERMISSION_DENIED)
+        msg = _("Permission Denied");
     }
 
-  /* request the deny channel */
-  request = tp_asv_new (
-      TP_PROP_CHANNEL_CHANNEL_TYPE,
-      G_TYPE_STRING,
-      TP_IFACE_CHANNEL_TYPE_CONTACT_LIST,
-
-      TP_PROP_CHANNEL_TARGET_HANDLE_TYPE,
-      G_TYPE_UINT,
-      TP_HANDLE_TYPE_LIST,
-
-      TP_PROP_CHANNEL_TARGET_ID,
-      G_TYPE_STRING,
-      "deny",
-
-      NULL);
-
-  tp_cli_connection_interface_requests_call_ensure_channel (
-      TP_CONNECTION (conn), -1, request,
-      contact_blocking_dialog_got_deny_channel, NULL, NULL, G_OBJECT (self));
+  if (msg == NULL)
+    msg = _("Could not block contact");
 
-  g_hash_table_destroy (request);
+  gtk_label_set_text (GTK_LABEL (self->priv->info_bar_label), msg);
+  gtk_widget_show (self->priv->info_bar);
 }
 
-DECLARE_CALLBACK (contact_blocking_dialog_deny_channel_prepared);
-
 static void
-contact_blocking_dialog_got_deny_channel (TpConnection *conn,
-    gboolean yours,
-    const char *channel_path,
-    GHashTable *props,
-    const GError *in_error,
-    gpointer user_data,
-    GObject *self)
+block_cb (GObject *source,
+    GAsyncResult *result,
+    gpointer user_data)
 {
-  TpChannel *channel;
+  EmpathyContactBlockingDialog *self = user_data;
   GError *error = NULL;
 
-  const GQuark features[] = {
-      TP_CHANNEL_FEATURE_CORE,
-      TP_CHANNEL_FEATURE_GROUP,
-      0 };
-
-  if (in_error != NULL)
+  if (!tp_contact_block_finish (TP_CONTACT (source), result,
+        &error))
     {
-      DEBUG ("Failed to get 'deny' channel on %s: %s",
-          get_pretty_conn_name (conn), in_error->message);
-      return;
-    }
+      DEBUG ("Error blocking contacts: %s", error->message);
 
-  channel = tp_channel_new_from_properties (conn, channel_path, props, &error);
+      contact_blocking_dialog_set_error (
+          EMPATHY_CONTACT_BLOCKING_DIALOG (self), error);
 
-  if (error != NULL)
-    {
-      DEBUG ("Failed to create channel proxy on %s: %s",
-          get_pretty_conn_name (conn), in_error->message);
       g_error_free (error);
       return;
     }
 
-  tp_proxy_prepare_async (channel, features,
-      contact_blocking_dialog_deny_channel_prepared, self);
+  DEBUG ("Contact blocked");
 }
 
 static void
-contact_blocking_dialog_deny_channel_prepared (GObject *channel,
-    GAsyncResult *result,
-    gpointer user_data)
+block_contact_got_contact (TpConnection *conn,
+    guint n_contacts,
+    TpContact * const *contacts,
+    const gchar * const *requested_ids,
+    GHashTable *failed_id_errors,
+    const GError *error,
+    gpointer user_data,
+    GObject *weak_object)
 {
-  EmpathyContactBlockingDialog *self = user_data;
-  TpConnection *conn;
-  GError *error = NULL;
-
-  if (!tp_proxy_prepare_finish (channel, result, &error))
-    {
-      DEBUG ("Failed to prepare channel %s: %s",
-          tp_proxy_get_object_path (channel), error->message);
-      g_error_free (error);
-      return;
-    }
-
-  conn = tp_channel_borrow_connection (TP_CHANNEL (channel));
+  EmpathyContactBlockingDialog *self =
+    EMPATHY_CONTACT_BLOCKING_DIALOG (weak_object);
+  gchar *id = user_data;
 
-  DEBUG ("Channel %s prepared for connection %s",
-      tp_proxy_get_object_path (channel), get_pretty_conn_name (conn));
-
-  g_hash_table_insert (self->priv->channels,
-      g_object_ref (conn), channel);
-  contact_blocking_dialog_refilter_account_chooser (self);
+  if (error != NULL)
+    goto error;
 
-  tp_g_signal_connect_object (channel, "group-members-changed",
-      G_CALLBACK (contact_blocking_dialog_deny_channel_members_changed),
-      self, 0);
-}
+  error = g_hash_table_lookup (failed_id_errors, id);
+  if (error != NULL)
+    goto error;
 
-static void
-contact_blocking_dialog_set_error (EmpathyContactBlockingDialog *self,
-    const GError *error)
-{
-  const char *msg = NULL;
+  tp_contact_block_async (contacts[0], FALSE, block_cb, self);
+  goto finally;
 
-  if (error->domain == TP_ERRORS)
-    {
-      if (error->code == TP_ERROR_INVALID_HANDLE)
-        msg = _("Unknown or invalid identifier");
-      else if (error->code == TP_ERROR_NOT_AVAILABLE)
-        msg = _("Contact blocking temporarily unavailable");
-      else if (error->code == TP_ERROR_NOT_CAPABLE)
-        msg = _("Contact blocking unavailable");
-      else if (error->code == TP_ERROR_PERMISSION_DENIED)
-        msg = _("Permission Denied");
-    }
+error:
+  DEBUG ("Error getting contact on %s: %s",
+      get_pretty_conn_name (conn), error->message);
 
-  if (msg == NULL)
-    msg = _("Could not block contact");
+  contact_blocking_dialog_set_error (
+      EMPATHY_CONTACT_BLOCKING_DIALOG (self), error);
 
-  gtk_label_set_text (GTK_LABEL (self->priv->info_bar_label), msg);
-  gtk_widget_show (self->priv->info_bar);
+finally:
+  g_free (id);
 }
 
-static void contact_blocking_dialog_add_contact_got_handle (TpConnection *,
-    const GArray *, const GError *, gpointer, GObject *);
-
 static void
 contact_blocking_dialog_add_contact (GtkWidget *widget,
     EmpathyContactBlockingDialog *self)
@@ -466,136 +350,80 @@ contact_blocking_dialog_add_contact (GtkWidget *widget,
   DEBUG ("Looking up handle for '%s' on %s",
       identifiers[0], get_pretty_conn_name (conn));
 
-  tp_cli_connection_call_request_handles (conn, -1,
-      TP_HANDLE_TYPE_CONTACT, identifiers,
-      contact_blocking_dialog_add_contact_got_handle,
-      NULL, NULL, G_OBJECT (self));
+  tp_connection_get_contacts_by_id (conn, 1, identifiers,
+      0, NULL, block_contact_got_contact,
+      g_strdup (identifiers[0]), NULL, G_OBJECT (self));
 
   gtk_entry_set_text (GTK_ENTRY (self->priv->add_contact_entry), "");
   gtk_widget_hide (self->priv->info_bar);
 }
 
 static void
-contact_blocking_dialog_added_contact (TpChannel *, const GError *,
-    gpointer, GObject *);
-
-static void
-contact_blocking_dialog_add_contact_got_handle (TpConnection *conn,
-    const GArray *handles,
-    const GError *in_error,
-    gpointer user_data,
-    GObject *self)
+unblock_cb (GObject *source,
+    GAsyncResult *result,
+    gpointer user_data)
 {
-  EmpathyContactBlockingDialogPrivate *priv = GET_PRIVATE (self);
-  TpChannel *channel = g_hash_table_lookup (priv->channels, conn);
-
-  if (in_error != NULL)
-    {
-      DEBUG ("Error getting handle on %s: %s",
-          get_pretty_conn_name (conn), in_error->message);
-
-      contact_blocking_dialog_set_error (
-          EMPATHY_CONTACT_BLOCKING_DIALOG (self), in_error);
-
-      return;
-    }
-
-  g_return_if_fail (handles->len == 1);
-
-  DEBUG ("Adding handle %u to deny channel on %s",
-      g_array_index (handles, TpHandle, 0), get_pretty_conn_name (conn));
-
-  tp_cli_channel_interface_group_call_add_members (channel, -1,
-      handles, "",
-      contact_blocking_dialog_added_contact, NULL, NULL, self);
-}
+  EmpathyContactBlockingDialog *self = user_data;
+  GError *error = NULL;
 
-static void
-contact_blocking_dialog_added_contact (TpChannel *channel,
-    const GError *in_error,
-    gpointer user_data,
-    GObject *self)
-{
-  if (in_error != NULL)
+  if (!tp_connection_unblock_contacts_finish (TP_CONNECTION (source), result,
+        &error))
     {
-      DEBUG ("Error adding contact to deny list %s: %s",
-          tp_proxy_get_object_path (channel), in_error->message);
+      DEBUG ("Error unblocking contacts: %s", error->message);
 
       contact_blocking_dialog_set_error (
-          EMPATHY_CONTACT_BLOCKING_DIALOG (self), in_error);
+          EMPATHY_CONTACT_BLOCKING_DIALOG (self), error);
 
+      g_error_free (error);
       return;
     }
 
-  DEBUG ("Contact added to %s", tp_proxy_get_object_path (channel));
+  DEBUG ("Contacts unblocked");
 }
 
-static void
-contact_blocking_dialog_removed_contacts (TpChannel *,
-    const GError *, gpointer, GObject *);
-
 static void
 contact_blocking_dialog_remove_contacts (GtkWidget *button,
     EmpathyContactBlockingDialog *self)
 {
   TpConnection *conn = empathy_account_chooser_get_connection (
       EMPATHY_ACCOUNT_CHOOSER (self->priv->account_chooser));
-  TpChannel *channel = g_hash_table_lookup (self->priv->channels, conn);
   GtkTreeModel *model;
   GList *rows, *ptr;
-  GArray *handles = g_array_new (FALSE, FALSE, sizeof (TpHandle));
+  GPtrArray *contacts;
 
   rows = gtk_tree_selection_get_selected_rows (self->priv->selection, &model);
 
+  contacts = g_ptr_array_new_with_free_func (g_object_unref);
+
   for (ptr = rows; ptr != NULL; ptr = ptr->next)
     {
       GtkTreePath *path = ptr->data;
       GtkTreeIter iter;
-      TpHandle handle;
+      TpContact *contact;
 
       if (!gtk_tree_model_get_iter (model, &iter, path))
         continue;
 
       gtk_tree_model_get (model, &iter,
-          COL_BLOCKED_HANDLE, &handle,
+          COL_BLOCKED_CONTACT, &contact,
           -1);
 
-      g_array_append_val (handles, handle);
+      g_ptr_array_add (contacts, contact);
+
       gtk_tree_path_free (path);
     }
 
   g_list_free (rows);
 
-  if (handles->len > 0)
+  if (contacts->len > 0)
     {
-      DEBUG ("Removing %u handles", handles->len);
-
-      tp_cli_channel_interface_group_call_remove_members (channel, -1,
-          handles, "",
-          contact_blocking_dialog_removed_contacts,
-          NULL, NULL, G_OBJECT (self));
-    }
+      DEBUG ("Unblocking %u contacts", contacts->len);
 
-  g_array_unref (handles);
-}
-
-static void
-contact_blocking_dialog_removed_contacts (TpChannel *channel,
-    const GError *in_error,
-    gpointer user_data,
-    GObject *self)
-{
-  if (in_error != NULL)
-    {
-      DEBUG ("Error removing contacts from deny list: %s", in_error->message);
-
-      contact_blocking_dialog_set_error (
-          EMPATHY_CONTACT_BLOCKING_DIALOG (self), in_error);
-
-      return;
+      tp_connection_unblock_contacts_async (conn, contacts->len,
+          (TpContact * const *) contacts->pdata, unblock_cb, self);
     }
 
-  DEBUG ("Contacts removed");
+  g_ptr_array_unref (contacts);
 }
 
 static void
@@ -604,8 +432,7 @@ contact_blocking_dialog_account_changed (GtkWidget *account_chooser,
 {
   TpConnection *conn = empathy_account_chooser_get_connection (
       EMPATHY_ACCOUNT_CHOOSER (account_chooser));
-  TpChannel *channel;
-  GArray *blocked;
+  GPtrArray *blocked;
   EmpathyContactManager *contact_manager;
   EmpathyTpContactList *contact_list;
   GList *members, *ptr;
@@ -613,29 +440,37 @@ contact_blocking_dialog_account_changed (GtkWidget *account_chooser,
   if (self->priv->block_account_changed > 0)
     return;
 
+  if (conn == self->priv->current_conn)
+    return;
+
   /* clear the lists of contacts */
   gtk_list_store_clear (self->priv->blocked_contacts);
   gtk_list_store_clear (self->priv->completion_contacts);
 
+  if (self->priv->current_conn != NULL)
+    {
+      g_signal_handlers_disconnect_by_func (self->priv->current_conn,
+          blocked_contacts_changed_cb, self);
+
+      g_clear_object (&self->priv->current_conn);
+    }
+
   if (conn == NULL)
     return;
 
   DEBUG ("Account changed: %s", get_pretty_conn_name (conn));
 
-  /* load the deny list */
-  channel = g_hash_table_lookup (self->priv->channels, conn);
+  self->priv->current_conn = g_object_ref (conn);
 
-  if (channel == NULL)
-    return;
-
-  g_return_if_fail (TP_IS_CHANNEL (channel));
+  tp_g_signal_connect_object (conn, "blocked-contacts-changed",
+      G_CALLBACK (blocked_contacts_changed_cb), self, 0);
 
-  blocked = tp_intset_to_array (tp_channel_group_get_members (channel));
+  blocked = tp_connection_get_blocked_contacts (conn);
 
-  DEBUG ("%u contacts on blocked list", blocked->len);
+  DEBUG ("%u contacts blocked on %s",
+      blocked != NULL ? blocked->len : 0, get_pretty_conn_name (conn));
 
-  contact_blocking_dialog_add_contacts_to_list (self, conn, blocked);
-  g_array_unref (blocked);
+  contact_blocking_dialog_add_blocked (self, blocked);
 
   /* load the completion list */
   g_return_if_fail (empathy_contact_manager_initialized ());
@@ -750,7 +585,7 @@ contact_blocking_dialog_dispose (GObject *self)
 {
   EmpathyContactBlockingDialogPrivate *priv = GET_PRIVATE (self);
 
-  tp_clear_pointer (&priv->channels, g_hash_table_destroy);
+  g_clear_object (&priv->current_conn);
 
   G_OBJECT_CLASS (empathy_contact_blocking_dialog_parent_class)->dispose (self);
 }
@@ -778,14 +613,12 @@ empathy_contact_blocking_dialog_init (EmpathyContactBlockingDialog *self)
   GtkEntryCompletion *completion;
   TpAccountManager *am;
   GtkStyleContext *context;
+  TpSimpleClientFactory *factory;
 
   self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self,
       EMPATHY_TYPE_CONTACT_BLOCKING_DIALOG,
       EmpathyContactBlockingDialogPrivate);
 
-  self->priv->channels = g_hash_table_new_full (NULL, NULL,
-      g_object_unref, g_object_unref);
-
   gtk_window_set_title (GTK_WINDOW (self), _("Edit Blocked Contacts"));
   gtk_dialog_add_button (GTK_DIALOG (self),
       GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE);
@@ -833,8 +666,9 @@ empathy_contact_blocking_dialog_init (EmpathyContactBlockingDialog *self)
   /* build the contact entry */
   self->priv->completion_contacts = gtk_list_store_new (N_COMPLETION_COLUMNS,
       G_TYPE_STRING, /* id */
-      G_TYPE_UINT, /* handle */
-      G_TYPE_STRING); /* text */
+      G_TYPE_STRING, /* text */
+      TP_TYPE_CONTACT); /* contact */
+
   completion = gtk_entry_completion_new ();
   gtk_entry_completion_set_model (completion,
       GTK_TREE_MODEL (self->priv->completion_contacts));
@@ -874,6 +708,11 @@ empathy_contact_blocking_dialog_init (EmpathyContactBlockingDialog *self)
 
   /* prepare the account manager */
   am = tp_account_manager_dup ();
+
+  factory = tp_proxy_get_factory (am);
+  tp_simple_client_factory_add_connection_features_varargs (factory,
+      TP_CONNECTION_FEATURE_CONTACT_BLOCKING, NULL);
+
   tp_proxy_prepare_async (am, NULL, contact_blocking_dialog_am_prepared, self);
   g_object_unref (am);
 
index 78dd1cd2dd1e98bc79c710e15ce6cadd76f115fb..25499ac70556fb37b782f495c99dba2ff9da7eab 100644 (file)
@@ -6,8 +6,8 @@
     <columns>
       <!-- column-name identifier -->
       <column type="gchararray"/>
-      <!-- column-name handle -->
-      <column type="guint"/>
+      <!-- column-name contact -->
+      <column type="TpContact"/>
     </columns>
   </object>
   <object class="GtkVBox" id="contents">
index 7a9e7344d3c920481af915254203030da95eb7eb..cba419beac4459d39121ed17116e3a718bc433dd 100644 (file)
@@ -14,6 +14,9 @@
 
 #include "empathy-contact-chooser.h"
 
+#include <libempathy/empathy-utils.h>
+
+#include <libempathy-gtk/empathy-individual-store-manager.h>
 #include <libempathy-gtk/empathy-individual-view.h>
 #include <libempathy-gtk/empathy-ui-utils.h>
 
@@ -208,11 +211,7 @@ get_contacts_cb (TpConnection *connection,
   EmpathyContactChooser *self =
     (EmpathyContactChooser *) weak_object;
   AddTemporaryIndividualCtx *ctx = user_data;
-  TpAccount *account;
-  TpfPersonaStore *store;
   FolksIndividual *individual;
-  TpfPersona *persona_new;
-  GeeSet *personas;
 
   if (self->priv->add_temp_ctx != ctx)
     /* another request has been started */
@@ -221,17 +220,7 @@ get_contacts_cb (TpConnection *connection,
   if (n_contacts != 1)
     return;
 
-  account = tp_connection_get_account (connection);
-
-  store = tpf_persona_store_new (account);
-  personas = GEE_SET (
-      gee_hash_set_new (FOLKS_TYPE_PERSONA, g_object_ref, g_object_unref,
-      g_direct_hash, g_direct_equal));
-  persona_new = tpf_persona_new (contacts[0], store);
-  gee_collection_add (GEE_COLLECTION (personas),
-      tpf_persona_new (contacts[0], store));
-
-  individual = folks_individual_new (personas);
+  individual =  empathy_create_individual_from_tp_contact (contacts[0]);
 
   /* listen for updates to the capabilities */
   tp_g_signal_connect_object (contacts[0], "notify::capabilities",
@@ -247,10 +236,6 @@ get_contacts_cb (TpConnection *connection,
         gtk_tree_view_get_selection (GTK_TREE_VIEW (self->priv->view)),
         NULL, NULL))
     empathy_individual_view_select_first (self->priv->view);
-
-  g_clear_object (&persona_new);
-  g_clear_object (&personas);
-  g_object_unref (store);
 }
 
 static void
@@ -411,7 +396,8 @@ empathy_contact_chooser_init (EmpathyContactChooser *self)
 
   /* Add the treeview */
   mgr = empathy_individual_manager_dup_singleton ();
-  self->priv->store = empathy_individual_store_new (mgr);
+  self->priv->store = EMPATHY_INDIVIDUAL_STORE (
+      empathy_individual_store_manager_new (mgr));
   g_object_unref (mgr);
 
   empathy_individual_store_set_show_groups (self->priv->store, FALSE);
index 29552cccc186de0f155a8065400e8c41eaaae5fe..1c56a868e75068c54161c40c0e49042ebfbf5a9a 100644 (file)
@@ -30,8 +30,6 @@
 
 #include <telepathy-glib/account-manager.h>
 
-#include <libempathy/empathy-contact-manager.h>
-#include <libempathy/empathy-contact-list.h>
 #include <libempathy/empathy-tp-contact-factory.h>
 #include <libempathy/empathy-utils.h>
 
@@ -67,22 +65,18 @@ subscription_dialog_response_cb (GtkDialog *dialog,
                                 gint       response,
                                 GtkWidget *contact_widget)
 {
-       EmpathyContactManager *manager;
        EmpathyContact        *contact;
 
-       manager = empathy_contact_manager_dup_singleton ();
        contact = empathy_contact_widget_get_contact (contact_widget);
 
        if (response == GTK_RESPONSE_YES) {
-               empathy_contact_list_add (EMPATHY_CONTACT_LIST (manager),
-                                         contact, "");
+               empathy_contact_add_to_contact_list (contact, "");
 
                empathy_contact_set_alias (contact,
                        empathy_contact_widget_get_alias (contact_widget));
        }
        else if (response == GTK_RESPONSE_NO) {
-               empathy_contact_list_remove (EMPATHY_CONTACT_LIST (manager),
-                                            contact, "");
+               empathy_contact_remove_from_contact_list (contact);
        }
        else if (response == GTK_RESPONSE_REJECT) {
                gboolean abusive;
@@ -90,24 +84,22 @@ subscription_dialog_response_cb (GtkDialog *dialog,
                /* confirm the blocking */
                if (empathy_block_contact_dialog_show (GTK_WINDOW (dialog), contact,
                                                       NULL, &abusive)) {
-                       empathy_contact_list_remove (
-                                       EMPATHY_CONTACT_LIST (manager),
-                                       contact, "");
-                       empathy_contact_list_set_blocked (
-                                       EMPATHY_CONTACT_LIST (manager),
-                                       contact, TRUE, abusive);
+                       TpContact *tp_contact;
+
+                       empathy_contact_remove_from_contact_list (contact);
+
+                       tp_contact = empathy_contact_get_tp_contact (contact);
+
+                       tp_contact_block_async (tp_contact, abusive, NULL, NULL);
                } else {
                        /* if they don't confirm, return back to the
                         * first dialog */
-                       goto finally;
+                       return;
                }
        }
 
        subscription_dialogs = g_list_remove (subscription_dialogs, dialog);
        gtk_widget_destroy (GTK_WIDGET (dialog));
-
-finally:
-       g_object_unref (manager);
 }
 
 void
@@ -123,10 +115,7 @@ empathy_subscription_dialog_show (EmpathyContact *contact,
        GtkWidget *block_user_button;
        GList     *l;
        gchar     *filename;
-       EmpathyContactManager *manager;
-       EmpathyContactListFlags flags;
-
-       manager = empathy_contact_manager_dup_singleton ();
+       TpConnection *conn;
 
        g_return_if_fail (EMPATHY_IS_CONTACT (contact));
 
@@ -148,7 +137,7 @@ empathy_subscription_dialog_show (EmpathyContact *contact,
        g_free (filename);
        g_object_unref (gui);
 
-       vbox = gtk_vbox_new (FALSE, 6);
+       vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
 
        gtk_box_pack_end (GTK_BOX (hbox_subscription), vbox,
                          TRUE, TRUE, 0);
@@ -188,17 +177,16 @@ empathy_subscription_dialog_show (EmpathyContact *contact,
                          G_CALLBACK (subscription_dialog_response_cb),
                          contact_widget);
 
-       flags = empathy_contact_manager_get_flags_for_connection (manager,
-                               empathy_contact_get_connection (contact));
+       conn = empathy_contact_get_connection (contact);
 
-       if (flags & EMPATHY_CONTACT_LIST_CAN_BLOCK)
+       if (tp_proxy_has_interface_by_id (conn,
+               TP_IFACE_QUARK_CONNECTION_INTERFACE_CONTACT_BLOCKING))
                gtk_widget_show (block_user_button);
 
        if (parent) {
                gtk_window_set_transient_for (GTK_WINDOW (dialog), parent);
        }
 
-       g_object_unref (manager);
        gtk_widget_show (dialog);
 }
 
@@ -395,7 +383,6 @@ can_add_contact_to_account (TpAccount                                 *account,
                            gpointer                                   callback_data,
                            gpointer                                   user_data)
 {
-       EmpathyContactManager *contact_manager;
        TpConnection          *connection;
        gboolean               result;
 
@@ -405,10 +392,7 @@ can_add_contact_to_account (TpAccount                                 *account,
                return;
        }
 
-       contact_manager = empathy_contact_manager_dup_singleton ();
-       result = empathy_contact_manager_get_flags_for_connection (
-               contact_manager, connection) & EMPATHY_CONTACT_LIST_CAN_ADD;
-       g_object_unref (contact_manager);
+       result = tp_connection_get_can_change_contact_list (connection);
 
        callback (result, callback_data);
 }
@@ -418,20 +402,16 @@ new_contact_response_cb (GtkDialog *dialog,
                         gint       response,
                         GtkWidget *contact_widget)
 {
-       EmpathyContactManager *manager;
        EmpathyContact         *contact;
 
-       manager = empathy_contact_manager_dup_singleton ();
        contact = empathy_contact_widget_get_contact (contact_widget);
 
        if (contact && response == GTK_RESPONSE_OK) {
-               empathy_contact_list_add (EMPATHY_CONTACT_LIST (manager),
-                                         contact, "");
+               empathy_contact_add_to_contact_list (contact, "");
        }
 
        new_contact_dialog = NULL;
        gtk_widget_destroy (GTK_WIDGET (dialog));
-       g_object_unref (manager);
 }
 
 void
@@ -517,15 +497,10 @@ empathy_block_contact_dialog_show (GtkWindow      *parent,
                                   GdkPixbuf      *avatar,
                                   gboolean       *abusive)
 {
-       EmpathyContactManager *manager;
-       EmpathyContactListFlags flags;
        GtkWidget *dialog;
        GtkWidget *abusive_check = NULL;
        int res;
-
-       manager = empathy_contact_manager_dup_singleton ();
-       flags = empathy_contact_manager_get_flags_for_connection (manager,
-                       empathy_contact_get_connection (contact));
+       TpConnection *conn;
 
        dialog = gtk_message_dialog_new (parent,
                        GTK_DIALOG_MODAL,
@@ -549,8 +524,10 @@ empathy_block_contact_dialog_show (GtkWindow      *parent,
                gtk_widget_show (image);
        }
 
+       conn = empathy_contact_get_connection (contact);
+
        /* ask the user if they want to also report the contact as abusive */
-       if (flags & EMPATHY_CONTACT_LIST_CAN_REPORT_ABUSIVE) {
+       if (tp_connection_can_report_abusive (conn)) {
                GtkWidget *vbox;
 
                vbox = gtk_message_dialog_get_message_area (
@@ -574,7 +551,6 @@ empathy_block_contact_dialog_show (GtkWindow      *parent,
        }
 
        gtk_widget_destroy (dialog);
-       g_object_unref (manager);
 
        return res == GTK_RESPONSE_REJECT;
 }
diff --git a/libempathy-gtk/empathy-contact-list-store.c b/libempathy-gtk/empathy-contact-list-store.c
deleted file mode 100644 (file)
index ef4c466..0000000
+++ /dev/null
@@ -1,1779 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Copyright (C) 2005-2007 Imendio AB
- * Copyright (C) 2007-2008 Collabora Ltd.
- *
- * 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., 51 Franklin St, Fifth Floor,
- * Boston, MA  02110-1301  USA
- *
- * Authors: Mikael Hallendal <micke@imendio.com>
- *          Martyn Russell <martyn@imendio.com>
- *          Xavier Claessens <xclaesse@gmail.com>
- */
-
-#include "config.h"
-
-#include <string.h>
-
-#include <glib.h>
-#include <glib/gi18n-lib.h>
-#include <gtk/gtk.h>
-
-#include <telepathy-glib/util.h>
-
-#include <libempathy/empathy-utils.h>
-#include <libempathy/empathy-tp-chat.h>
-#include <libempathy/empathy-enum-types.h>
-#include <libempathy/empathy-contact-manager.h>
-
-#include "empathy-contact-list-store.h"
-#include "empathy-ui-utils.h"
-#include "empathy-gtk-enum-types.h"
-#include "empathy-images.h"
-
-#define DEBUG_FLAG EMPATHY_DEBUG_CONTACT
-#include <libempathy/empathy-debug.h>
-
-/* Active users are those which have recently changed state
- * (e.g. online, offline or from normal to a busy state).
- */
-
-/* Time in seconds user is shown as active */
-#define ACTIVE_USER_SHOW_TIME 7
-
-/* Time in seconds after connecting which we wait before active users are enabled */
-#define ACTIVE_USER_WAIT_TO_ENABLE_TIME 5
-
-#define GET_PRIV(obj) EMPATHY_GET_PRIV (obj, EmpathyContactListStore)
-typedef struct {
-       EmpathyContactList         *list;
-       gboolean                    show_offline;
-       gboolean                    show_avatars;
-       gboolean                    show_groups;
-       gboolean                    is_compact;
-       gboolean                    show_protocols;
-       gboolean                    show_active;
-       EmpathyContactListStoreSort sort_criterium;
-       guint                       inhibit_active;
-       guint                       setup_idle_id;
-       gboolean                    dispose_has_run;
-       GHashTable                  *status_icons;
-       /* Hash: EmpathyContact* -> GQueue (GtkTreeIter *) */
-       GHashTable                  *empathy_contact_cache;
-       /* Hash: char *groupname -> GtkTreeIter * */
-       GHashTable                  *empathy_group_cache;
-} EmpathyContactListStorePriv;
-
-typedef struct {
-       EmpathyContactListStore *store;
-       EmpathyContact          *contact;
-       gboolean                remove;
-       guint                   timeout;
-} ShowActiveData;
-
-static void             contact_list_store_dispose                  (GObject                       *object);
-static void             contact_list_store_get_property              (GObject                       *object,
-                                                                     guint                          param_id,
-                                                                     GValue                        *value,
-                                                                     GParamSpec                    *pspec);
-static void             contact_list_store_set_property              (GObject                       *object,
-                                                                     guint                          param_id,
-                                                                     const GValue                  *value,
-                                                                     GParamSpec                    *pspec);
-static void             contact_list_store_setup                     (EmpathyContactListStore       *store);
-static gboolean         contact_list_store_inibit_active_cb          (EmpathyContactListStore       *store);
-static void             contact_list_store_members_changed_cb        (EmpathyContactList            *list_iface,
-                                                                     EmpathyContact                *contact,
-                                                                     EmpathyContact                *actor,
-                                                                     guint                          reason,
-                                                                     gchar                         *message,
-                                                                     gboolean                       is_member,
-                                                                     EmpathyContactListStore       *store);
-static void             contact_list_store_member_renamed_cb         (EmpathyContactList            *list_iface,
-                                                                     EmpathyContact                *old_contact,
-                                                                     EmpathyContact                *new_contact,
-                                                                     guint                          reason,
-                                                                     gchar                         *message,
-                                                                     EmpathyContactListStore       *store);
-static void             contact_list_store_groups_changed_cb         (EmpathyContactList            *list_iface,
-                                                                     EmpathyContact                *contact,
-                                                                     gchar                         *group,
-                                                                     gboolean                       is_member,
-                                                                     EmpathyContactListStore       *store);
-static void             contact_list_store_add_contact               (EmpathyContactListStore       *store,
-                                                                     EmpathyContact                *contact);
-static void             contact_list_store_remove_contact            (EmpathyContactListStore       *store,
-                                                                     EmpathyContact                *contact);
-static void             contact_list_store_contact_update            (EmpathyContactListStore       *store,
-                                                                     EmpathyContact                *contact);
-static void             contact_list_store_contact_updated_cb        (EmpathyContact                *contact,
-                                                                     GParamSpec                    *param,
-                                                                     EmpathyContactListStore       *store);
-static void             contact_list_store_contact_set_active        (EmpathyContactListStore       *store,
-                                                                     EmpathyContact                *contact,
-                                                                     gboolean                       active,
-                                                                     gboolean                       set_changed);
-static ShowActiveData * contact_list_store_contact_active_new        (EmpathyContactListStore       *store,
-                                                                     EmpathyContact                *contact,
-                                                                     gboolean                       remove);
-static void             contact_list_store_contact_active_free       (ShowActiveData                *data);
-static gboolean         contact_list_store_contact_active_cb         (ShowActiveData                *data);
-static void             contact_list_store_get_group                 (EmpathyContactListStore       *store,
-                                                                     const gchar                   *name,
-                                                                     GtkTreeIter                   *iter_group_to_set,
-                                                                     GtkTreeIter                   *iter_separator_to_set,
-                                                                     gboolean                      *created,
-                                                                     gboolean                      is_fake_group);
-static gint             contact_list_store_state_sort_func           (GtkTreeModel                  *model,
-                                                                     GtkTreeIter                   *iter_a,
-                                                                     GtkTreeIter                   *iter_b,
-                                                                     gpointer                       user_data);
-static gint             contact_list_store_name_sort_func            (GtkTreeModel                  *model,
-                                                                     GtkTreeIter                   *iter_a,
-                                                                     GtkTreeIter                   *iter_b,
-                                                                     gpointer                       user_data);
-static GList *          contact_list_store_find_contact              (EmpathyContactListStore       *store,
-                                                                     EmpathyContact                *contact);
-static gboolean         contact_list_store_update_list_mode_foreach  (GtkTreeModel                  *model,
-                                                                     GtkTreePath                   *path,
-                                                                     GtkTreeIter                   *iter,
-                                                                     EmpathyContactListStore       *store);
-
-enum {
-       PROP_0,
-       PROP_CONTACT_LIST,
-       PROP_SHOW_OFFLINE,
-       PROP_SHOW_AVATARS,
-       PROP_SHOW_PROTOCOLS,
-       PROP_SHOW_GROUPS,
-       PROP_IS_COMPACT,
-       PROP_SORT_CRITERIUM
-};
-
-G_DEFINE_TYPE (EmpathyContactListStore, empathy_contact_list_store, GTK_TYPE_TREE_STORE);
-
-static void
-contact_list_store_chat_state_changed_cb (TpChannel *self,
-                                    guint contact_handle,
-                                    guint state,
-                                    gpointer store)
-{
-       EmpathyContactListStorePriv *priv = GET_PRIV (store);
-       GList *contacts, *l;
-
-       contacts = empathy_contact_list_get_members (priv->list);
-
-       for (l = contacts; l != NULL; l = l->next) {
-               EmpathyContact *contact = EMPATHY_CONTACT (l->data);
-
-               if (empathy_contact_get_handle (contact) == contact_handle) {
-                       contact_list_store_contact_update (store, contact);
-                       break;
-               }
-       }
-
-       g_list_foreach (contacts, (GFunc) g_object_unref, NULL);
-       g_list_free (contacts);
-}
-
-static gboolean
-contact_list_store_iface_setup (gpointer user_data)
-{
-       EmpathyContactListStore     *store = user_data;
-       EmpathyContactListStorePriv *priv = GET_PRIV (store);
-       GList                       *contacts, *l;
-
-       /* Signal connection. */
-       g_signal_connect (priv->list,
-                         "member-renamed",
-                         G_CALLBACK (contact_list_store_member_renamed_cb),
-                         store);
-       g_signal_connect (priv->list,
-                         "members-changed",
-                         G_CALLBACK (contact_list_store_members_changed_cb),
-                         store);
-       g_signal_connect (priv->list,
-                         "groups-changed",
-                         G_CALLBACK (contact_list_store_groups_changed_cb),
-                         store);
-
-       if (EMPATHY_IS_TP_CHAT (priv->list)) {
-                       g_signal_connect (priv->list,
-                                         "chat-state-changed",
-                                         G_CALLBACK (contact_list_store_chat_state_changed_cb),
-                                         store);
-       }
-
-       /* Add contacts already created. */
-       contacts = empathy_contact_list_get_members (priv->list);
-       for (l = contacts; l; l = l->next) {
-               contact_list_store_members_changed_cb (priv->list, l->data,
-                                                      NULL, 0, NULL,
-                                                      TRUE,
-                                                      store);
-
-               g_object_unref (l->data);
-       }
-       g_list_free (contacts);
-
-       priv->setup_idle_id = 0;
-       return FALSE;
-}
-
-
-static void
-contact_list_store_set_contact_list (EmpathyContactListStore *store,
-                                    EmpathyContactList      *list_iface)
-{
-       EmpathyContactListStorePriv *priv = GET_PRIV (store);
-
-       priv->list = g_object_ref (list_iface);
-
-       /* Let a chance to have all properties set before populating */
-       priv->setup_idle_id = g_idle_add (contact_list_store_iface_setup, store);
-}
-
-static void
-empathy_contact_list_store_class_init (EmpathyContactListStoreClass *klass)
-{
-       GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
-       object_class->dispose = contact_list_store_dispose;
-       object_class->get_property = contact_list_store_get_property;
-       object_class->set_property = contact_list_store_set_property;
-
-       g_object_class_install_property (object_class,
-                                        PROP_CONTACT_LIST,
-                                        g_param_spec_object ("contact-list",
-                                                             "The contact list iface",
-                                                             "The contact list iface",
-                                                             EMPATHY_TYPE_CONTACT_LIST,
-                                                             G_PARAM_CONSTRUCT_ONLY |
-                                                             G_PARAM_READWRITE));
-       g_object_class_install_property (object_class,
-                                        PROP_SHOW_OFFLINE,
-                                        g_param_spec_boolean ("show-offline",
-                                                              "Show Offline",
-                                                              "Whether contact list should display "
-                                                              "offline contacts",
-                                                              FALSE,
-                                                              G_PARAM_READWRITE));
-        g_object_class_install_property (object_class,
-                                         PROP_SHOW_AVATARS,
-                                         g_param_spec_boolean ("show-avatars",
-                                                               "Show Avatars",
-                                                               "Whether contact list should display "
-                                                               "avatars for contacts",
-                                                               TRUE,
-                                                               G_PARAM_READWRITE));
-        g_object_class_install_property (object_class,
-                                         PROP_SHOW_PROTOCOLS,
-                                         g_param_spec_boolean ("show-protocols",
-                                                               "Show Protocols",
-                                                               "Whether contact list should display "
-                                                               "protocols for contacts",
-                                                               FALSE,
-                                                               G_PARAM_READWRITE));
-        g_object_class_install_property (object_class,
-                                         PROP_SHOW_GROUPS,
-                                         g_param_spec_boolean ("show-groups",
-                                                               "Show Groups",
-                                                               "Whether contact list should display "
-                                                               "contact groups",
-                                                               TRUE,
-                                                               G_PARAM_READWRITE));
-       g_object_class_install_property (object_class,
-                                        PROP_IS_COMPACT,
-                                        g_param_spec_boolean ("is-compact",
-                                                              "Is Compact",
-                                                              "Whether the contact list is in compact mode or not",
-                                                              FALSE,
-                                                              G_PARAM_READWRITE));
-
-       g_object_class_install_property (object_class,
-                                        PROP_SORT_CRITERIUM,
-                                        g_param_spec_enum ("sort-criterium",
-                                                           "Sort citerium",
-                                                           "The sort criterium to use for sorting the contact list",
-                                                           EMPATHY_TYPE_CONTACT_LIST_STORE_SORT,
-                                                           EMPATHY_CONTACT_LIST_STORE_SORT_NAME,
-                                                           G_PARAM_READWRITE));
-
-       g_type_class_add_private (object_class, sizeof (EmpathyContactListStorePriv));
-}
-
-static void
-g_queue_free_full_iter (gpointer data)
-{
-       GQueue *queue = (GQueue *) data;
-       g_queue_foreach (queue, (GFunc) gtk_tree_iter_free, NULL);
-       g_queue_free (queue);
-}
-
-
-static void
-empathy_contact_list_store_init (EmpathyContactListStore *store)
-{
-       EmpathyContactListStorePriv *priv = G_TYPE_INSTANCE_GET_PRIVATE (store,
-               EMPATHY_TYPE_CONTACT_LIST_STORE, EmpathyContactListStorePriv);
-
-       store->priv = priv;
-       priv->show_avatars = TRUE;
-       priv->show_groups = TRUE;
-       priv->show_protocols = FALSE;
-       priv->inhibit_active = g_timeout_add_seconds (ACTIVE_USER_WAIT_TO_ENABLE_TIME,
-                                                     (GSourceFunc) contact_list_store_inibit_active_cb,
-                                                     store);
-       priv->status_icons = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref);
-       priv->empathy_contact_cache = g_hash_table_new_full (NULL, NULL, NULL,
-               g_queue_free_full_iter);
-       priv->empathy_group_cache = g_hash_table_new_full (g_str_hash,
-               g_str_equal, g_free,
-               (GDestroyNotify) gtk_tree_iter_free);
-       contact_list_store_setup (store);
-}
-
-static void
-contact_list_store_dispose (GObject *object)
-{
-       EmpathyContactListStorePriv *priv = GET_PRIV (object);
-       GList                       *contacts, *l;
-
-       if (priv->dispose_has_run)
-               return;
-       priv->dispose_has_run = TRUE;
-
-       contacts = empathy_contact_list_get_members (priv->list);
-       for (l = contacts; l; l = l->next) {
-               g_signal_handlers_disconnect_by_func (l->data,
-                                                     G_CALLBACK (contact_list_store_contact_updated_cb),
-                                                     object);
-
-               g_object_unref (l->data);
-       }
-       g_list_free (contacts);
-
-       g_signal_handlers_disconnect_by_func (priv->list,
-                                             G_CALLBACK (contact_list_store_member_renamed_cb),
-                                             object);
-       g_signal_handlers_disconnect_by_func (priv->list,
-                                             G_CALLBACK (contact_list_store_members_changed_cb),
-                                             object);
-       g_signal_handlers_disconnect_by_func (priv->list,
-                                             G_CALLBACK (contact_list_store_groups_changed_cb),
-                                             object);
-       g_object_unref (priv->list);
-
-       if (priv->inhibit_active != 0) {
-               g_source_remove (priv->inhibit_active);
-               priv->inhibit_active = 0;
-       }
-
-       if (priv->setup_idle_id != 0) {
-               g_source_remove (priv->setup_idle_id);
-               priv->setup_idle_id = 0;
-       }
-
-       g_hash_table_destroy (priv->status_icons);
-       g_hash_table_destroy (priv->empathy_contact_cache);
-       g_hash_table_destroy (priv->empathy_group_cache);
-       G_OBJECT_CLASS (empathy_contact_list_store_parent_class)->dispose (object);
-}
-
-static void
-contact_list_store_get_property (GObject    *object,
-                                guint       param_id,
-                                GValue     *value,
-                                GParamSpec *pspec)
-{
-       EmpathyContactListStorePriv *priv;
-
-       priv = GET_PRIV (object);
-
-       switch (param_id) {
-       case PROP_CONTACT_LIST:
-               g_value_set_object (value, priv->list);
-               break;
-       case PROP_SHOW_OFFLINE:
-               g_value_set_boolean (value, priv->show_offline);
-               break;
-       case PROP_SHOW_AVATARS:
-               g_value_set_boolean (value, priv->show_avatars);
-               break;
-       case PROP_SHOW_PROTOCOLS:
-               g_value_set_boolean (value, priv->show_protocols);
-               break;
-       case PROP_SHOW_GROUPS:
-               g_value_set_boolean (value, priv->show_groups);
-               break;
-       case PROP_IS_COMPACT:
-               g_value_set_boolean (value, priv->is_compact);
-               break;
-       case PROP_SORT_CRITERIUM:
-               g_value_set_enum (value, priv->sort_criterium);
-               break;
-       default:
-               G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
-               break;
-       };
-}
-
-static void
-contact_list_store_set_property (GObject      *object,
-                                guint         param_id,
-                                const GValue *value,
-                                GParamSpec   *pspec)
-{
-       switch (param_id) {
-       case PROP_CONTACT_LIST:
-               contact_list_store_set_contact_list (EMPATHY_CONTACT_LIST_STORE (object),
-                                                    g_value_get_object (value));
-               break;
-       case PROP_SHOW_OFFLINE:
-               empathy_contact_list_store_set_show_offline (EMPATHY_CONTACT_LIST_STORE (object),
-                                                           g_value_get_boolean (value));
-               break;
-       case PROP_SHOW_AVATARS:
-               empathy_contact_list_store_set_show_avatars (EMPATHY_CONTACT_LIST_STORE (object),
-                                                           g_value_get_boolean (value));
-               break;
-       case PROP_SHOW_PROTOCOLS:
-               empathy_contact_list_store_set_show_protocols (EMPATHY_CONTACT_LIST_STORE (object),
-                                                           g_value_get_boolean (value));
-               break;
-       case PROP_SHOW_GROUPS:
-               empathy_contact_list_store_set_show_groups (EMPATHY_CONTACT_LIST_STORE (object),
-                                                           g_value_get_boolean (value));
-               break;
-       case PROP_IS_COMPACT:
-               empathy_contact_list_store_set_is_compact (EMPATHY_CONTACT_LIST_STORE (object),
-                                                         g_value_get_boolean (value));
-               break;
-       case PROP_SORT_CRITERIUM:
-               empathy_contact_list_store_set_sort_criterium (EMPATHY_CONTACT_LIST_STORE (object),
-                                                             g_value_get_enum (value));
-               break;
-       default:
-               G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
-               break;
-       };
-}
-
-EmpathyContactListStore *
-empathy_contact_list_store_new (EmpathyContactList *list_iface)
-{
-       g_return_val_if_fail (EMPATHY_IS_CONTACT_LIST (list_iface), NULL);
-
-       return g_object_new (EMPATHY_TYPE_CONTACT_LIST_STORE,
-                            "contact-list", list_iface,
-                            NULL);
-}
-
-EmpathyContactList *
-empathy_contact_list_store_get_list_iface (EmpathyContactListStore *store)
-{
-       EmpathyContactListStorePriv *priv;
-
-       g_return_val_if_fail (EMPATHY_IS_CONTACT_LIST_STORE (store), FALSE);
-
-       priv = GET_PRIV (store);
-
-       return priv->list;
-}
-
-gboolean
-empathy_contact_list_store_get_show_offline (EmpathyContactListStore *store)
-{
-       EmpathyContactListStorePriv *priv;
-
-       g_return_val_if_fail (EMPATHY_IS_CONTACT_LIST_STORE (store), FALSE);
-
-       priv = GET_PRIV (store);
-
-       return priv->show_offline;
-}
-
-void
-empathy_contact_list_store_set_show_offline (EmpathyContactListStore *store,
-                                           gboolean                show_offline)
-{
-       EmpathyContactListStorePriv *priv;
-       GList                      *contacts, *l;
-       gboolean                    show_active;
-
-       g_return_if_fail (EMPATHY_IS_CONTACT_LIST_STORE (store));
-
-       priv = GET_PRIV (store);
-
-       priv->show_offline = show_offline;
-       show_active = priv->show_active;
-
-       /* Disable temporarily. */
-       priv->show_active = FALSE;
-
-       contacts = empathy_contact_list_get_members (priv->list);
-       for (l = contacts; l; l = l->next) {
-               contact_list_store_contact_update (store, l->data);
-
-               g_object_unref (l->data);
-       }
-       g_list_free (contacts);
-
-       /* Restore to original setting. */
-       priv->show_active = show_active;
-
-       g_object_notify (G_OBJECT (store), "show-offline");
-}
-
-gboolean
-empathy_contact_list_store_get_show_avatars (EmpathyContactListStore *store)
-{
-       EmpathyContactListStorePriv *priv;
-
-       g_return_val_if_fail (EMPATHY_IS_CONTACT_LIST_STORE (store), TRUE);
-
-       priv = GET_PRIV (store);
-
-       return priv->show_avatars;
-}
-
-void
-empathy_contact_list_store_set_show_avatars (EmpathyContactListStore *store,
-                                           gboolean                show_avatars)
-{
-       EmpathyContactListStorePriv *priv;
-       GtkTreeModel               *model;
-
-       g_return_if_fail (EMPATHY_IS_CONTACT_LIST_STORE (store));
-
-       priv = GET_PRIV (store);
-
-       priv->show_avatars = show_avatars;
-
-       model = GTK_TREE_MODEL (store);
-
-       gtk_tree_model_foreach (model,
-                               (GtkTreeModelForeachFunc)
-                               contact_list_store_update_list_mode_foreach,
-                               store);
-
-       g_object_notify (G_OBJECT (store), "show-avatars");
-}
-
-
-gboolean
-empathy_contact_list_store_get_show_protocols (EmpathyContactListStore *store)
-{
-       EmpathyContactListStorePriv *priv;
-
-       g_return_val_if_fail (EMPATHY_IS_CONTACT_LIST_STORE (store), TRUE);
-
-       priv = GET_PRIV (store);
-
-       return priv->show_protocols;
-}
-
-void
-empathy_contact_list_store_set_show_protocols (EmpathyContactListStore *store,
-                                           gboolean                show_protocols)
-{
-       EmpathyContactListStorePriv *priv;
-       GtkTreeModel               *model;
-
-       g_return_if_fail (EMPATHY_IS_CONTACT_LIST_STORE (store));
-
-       priv = GET_PRIV (store);
-
-       priv->show_protocols = show_protocols;
-
-       model = GTK_TREE_MODEL (store);
-
-       gtk_tree_model_foreach (model,
-                               (GtkTreeModelForeachFunc)
-                               contact_list_store_update_list_mode_foreach,
-                               store);
-
-       g_object_notify (G_OBJECT (store), "show-protocols");
-}
-
-gboolean
-empathy_contact_list_store_get_show_groups (EmpathyContactListStore *store)
-{
-       EmpathyContactListStorePriv *priv;
-
-       g_return_val_if_fail (EMPATHY_IS_CONTACT_LIST_STORE (store), TRUE);
-
-       priv = GET_PRIV (store);
-
-       return priv->show_groups;
-}
-
-void
-empathy_contact_list_store_set_show_groups (EmpathyContactListStore *store,
-                                           gboolean                 show_groups)
-{
-       EmpathyContactListStorePriv *priv;
-
-       g_return_if_fail (EMPATHY_IS_CONTACT_LIST_STORE (store));
-
-       priv = GET_PRIV (store);
-
-       if (priv->show_groups == show_groups) {
-               return;
-       }
-
-       priv->show_groups = show_groups;
-
-       if (priv->setup_idle_id == 0) {
-               /* Remove all contacts and add them back, not optimized but
-                * that's the easy way :)
-                *
-                * This is only done if there's not a pending setup idle
-                * callback, otherwise it will race and the contacts will get
-                * added twice */
-               GList *contacts, *l;
-
-               gtk_tree_store_clear (GTK_TREE_STORE (store));
-
-               /* Also clear the cache */
-               g_hash_table_remove_all (priv->empathy_contact_cache);
-               g_hash_table_remove_all (priv->empathy_group_cache);
-
-               contacts = empathy_contact_list_get_members (priv->list);
-               for (l = contacts; l; l = l->next) {
-                       contact_list_store_members_changed_cb (priv->list,
-                                                              l->data,
-                                                              NULL, 0, NULL,
-                                                              TRUE,
-                                                              store);
-
-                       g_object_unref (l->data);
-               }
-               g_list_free (contacts);
-       }
-
-       g_object_notify (G_OBJECT (store), "show-groups");
-}
-
-gboolean
-empathy_contact_list_store_get_is_compact (EmpathyContactListStore *store)
-{
-       EmpathyContactListStorePriv *priv;
-
-       g_return_val_if_fail (EMPATHY_IS_CONTACT_LIST_STORE (store), TRUE);
-
-       priv = GET_PRIV (store);
-
-       return priv->is_compact;
-}
-
-void
-empathy_contact_list_store_set_is_compact (EmpathyContactListStore *store,
-                                         gboolean                is_compact)
-{
-       EmpathyContactListStorePriv *priv;
-       GtkTreeModel               *model;
-
-       g_return_if_fail (EMPATHY_IS_CONTACT_LIST_STORE (store));
-
-       priv = GET_PRIV (store);
-
-       priv->is_compact = is_compact;
-
-       model = GTK_TREE_MODEL (store);
-
-       gtk_tree_model_foreach (model,
-                               (GtkTreeModelForeachFunc)
-                               contact_list_store_update_list_mode_foreach,
-                               store);
-
-       g_object_notify (G_OBJECT (store), "is-compact");
-}
-
-EmpathyContactListStoreSort
-empathy_contact_list_store_get_sort_criterium (EmpathyContactListStore *store)
-{
-       EmpathyContactListStorePriv *priv;
-
-       g_return_val_if_fail (EMPATHY_IS_CONTACT_LIST_STORE (store), 0);
-
-       priv = GET_PRIV (store);
-
-       return priv->sort_criterium;
-}
-
-void
-empathy_contact_list_store_set_sort_criterium (EmpathyContactListStore     *store,
-                                             EmpathyContactListStoreSort  sort_criterium)
-{
-       EmpathyContactListStorePriv *priv;
-
-       g_return_if_fail (EMPATHY_IS_CONTACT_LIST_STORE (store));
-
-       priv = GET_PRIV (store);
-
-       priv->sort_criterium = sort_criterium;
-
-       switch (sort_criterium) {
-       case EMPATHY_CONTACT_LIST_STORE_SORT_STATE:
-               gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (store),
-                                                     EMPATHY_CONTACT_LIST_STORE_COL_STATUS,
-                                                     GTK_SORT_ASCENDING);
-               break;
-
-       case EMPATHY_CONTACT_LIST_STORE_SORT_NAME:
-               gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (store),
-                                                     EMPATHY_CONTACT_LIST_STORE_COL_NAME,
-                                                     GTK_SORT_ASCENDING);
-               break;
-
-       default:
-               g_assert_not_reached ();
-       }
-
-       g_object_notify (G_OBJECT (store), "sort-criterium");
-}
-
-gboolean
-empathy_contact_list_store_row_separator_func (GtkTreeModel *model,
-                                             GtkTreeIter  *iter,
-                                             gpointer      data)
-{
-       gboolean is_separator = FALSE;
-
-       g_return_val_if_fail (GTK_IS_TREE_MODEL (model), FALSE);
-
-       gtk_tree_model_get (model, iter,
-                           EMPATHY_CONTACT_LIST_STORE_COL_IS_SEPARATOR, &is_separator,
-                           -1);
-
-       return is_separator;
-}
-
-gchar *
-empathy_contact_list_store_get_parent_group (GtkTreeModel *model,
-                                           GtkTreePath  *path,
-                                           gboolean     *path_is_group,
-                                           gboolean     *is_fake_group)
-{
-       GtkTreeIter  parent_iter, iter;
-       gchar       *name = NULL;
-       gboolean     is_group;
-       gboolean     fake;
-
-       g_return_val_if_fail (GTK_IS_TREE_MODEL (model), NULL);
-
-       if (path_is_group) {
-               *path_is_group = FALSE;
-       }
-
-       if (!gtk_tree_model_get_iter (model, &iter, path)) {
-               return NULL;
-       }
-
-       gtk_tree_model_get (model, &iter,
-                           EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP, &is_group,
-                           EMPATHY_CONTACT_LIST_STORE_COL_NAME, &name,
-                           -1);
-
-       if (!is_group) {
-               g_free (name);
-               name = NULL;
-
-               if (!gtk_tree_model_iter_parent (model, &parent_iter, &iter)) {
-                       return NULL;
-               }
-
-               iter = parent_iter;
-
-               gtk_tree_model_get (model, &iter,
-                                   EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP, &is_group,
-                                   EMPATHY_CONTACT_LIST_STORE_COL_NAME, &name,
-                                   EMPATHY_CONTACT_LIST_STORE_COL_IS_FAKE_GROUP, &fake,
-                                   -1);
-               if (!is_group) {
-                       g_free (name);
-                       return NULL;
-               }
-       }
-
-       if (path_is_group) {
-               *path_is_group = TRUE;
-       }
-
-       if (is_fake_group != NULL)
-               *is_fake_group = fake;
-
-       return name;
-}
-
-static void
-contact_list_store_setup (EmpathyContactListStore *store)
-{
-       EmpathyContactListStorePriv *priv;
-       GType types[] = {
-               GDK_TYPE_PIXBUF,      /* Status pixbuf */
-               GDK_TYPE_PIXBUF,      /* Avatar pixbuf */
-               G_TYPE_BOOLEAN,       /* Avatar pixbuf visible */
-               G_TYPE_STRING,        /* Name */
-               G_TYPE_UINT,          /* Presence type */
-               G_TYPE_STRING,        /* Status string */
-               G_TYPE_BOOLEAN,       /* Compact view */
-               EMPATHY_TYPE_CONTACT, /* Contact type */
-               G_TYPE_BOOLEAN,       /* Is group */
-               G_TYPE_BOOLEAN,       /* Is active */
-               G_TYPE_BOOLEAN,       /* Is online */
-               G_TYPE_BOOLEAN,       /* Is separator */
-               G_TYPE_BOOLEAN,       /* Can make audio calls */
-               G_TYPE_BOOLEAN,       /* Can make video calls */
-               EMPATHY_TYPE_CONTACT_LIST_FLAGS, /* Flags */
-               G_TYPE_BOOLEAN,       /* Is a fake group */
-       };
-
-       priv = GET_PRIV (store);
-
-       gtk_tree_store_set_column_types (GTK_TREE_STORE (store),
-                                        EMPATHY_CONTACT_LIST_STORE_COL_COUNT,
-                                        types);
-
-       /* Set up sorting */
-       gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (store),
-                                        EMPATHY_CONTACT_LIST_STORE_COL_NAME,
-                                        contact_list_store_name_sort_func,
-                                        store, NULL);
-       gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (store),
-                                        EMPATHY_CONTACT_LIST_STORE_COL_STATUS,
-                                        contact_list_store_state_sort_func,
-                                        store, NULL);
-
-       priv->sort_criterium = EMPATHY_CONTACT_LIST_STORE_SORT_NAME;
-       empathy_contact_list_store_set_sort_criterium (store, priv->sort_criterium);
-}
-
-static gboolean
-contact_list_store_inibit_active_cb (EmpathyContactListStore *store)
-{
-       EmpathyContactListStorePriv *priv;
-
-       priv = GET_PRIV (store);
-
-       priv->show_active = TRUE;
-       priv->inhibit_active = 0;
-
-       return FALSE;
-}
-
-static void
-contact_list_store_add_contact_and_connect (EmpathyContactListStore *store, EmpathyContact *contact)
-{
-       g_signal_connect (contact, "notify::presence",
-                         G_CALLBACK (contact_list_store_contact_updated_cb),
-                         store);
-       g_signal_connect (contact, "notify::presence-message",
-                         G_CALLBACK (contact_list_store_contact_updated_cb),
-                         store);
-       g_signal_connect (contact, "notify::name",
-                         G_CALLBACK (contact_list_store_contact_updated_cb),
-                         store);
-       g_signal_connect (contact, "notify::avatar",
-                         G_CALLBACK (contact_list_store_contact_updated_cb),
-                         store);
-       g_signal_connect (contact, "notify::capabilities",
-                         G_CALLBACK (contact_list_store_contact_updated_cb),
-                         store);
-
-       contact_list_store_add_contact (store, contact);
-}
-
-static void
-contact_list_store_remove_contact_and_disconnect (EmpathyContactListStore *store, EmpathyContact *contact)
-{
-       g_signal_handlers_disconnect_by_func (contact,
-                                             G_CALLBACK (contact_list_store_contact_updated_cb),
-                                             store);
-
-       contact_list_store_remove_contact (store, contact);
-}
-
-static void
-contact_list_store_members_changed_cb (EmpathyContactList      *list_iface,
-                                      EmpathyContact          *contact,
-                                      EmpathyContact          *actor,
-                                      guint                    reason,
-                                      gchar                   *message,
-                                      gboolean                 is_member,
-                                      EmpathyContactListStore *store)
-{
-       DEBUG ("Contact %s (%d) %s",
-               empathy_contact_get_id (contact),
-               empathy_contact_get_handle (contact),
-               is_member ? "added" : "removed");
-
-       if (is_member) {
-               contact_list_store_add_contact_and_connect (store, contact);
-       } else {
-               contact_list_store_remove_contact_and_disconnect (store, contact);
-       }
-}
-
-static void
-contact_list_store_member_renamed_cb (EmpathyContactList      *list_iface,
-                                     EmpathyContact          *old_contact,
-                                     EmpathyContact          *new_contact,
-                                     guint                    reason,
-                                     gchar                   *message,
-                                     EmpathyContactListStore *store)
-{
-       DEBUG ("Contact %s (%d) renamed to %s (%d)",
-               empathy_contact_get_id (old_contact),
-               empathy_contact_get_handle (old_contact),
-               empathy_contact_get_id (new_contact),
-               empathy_contact_get_handle (new_contact));
-
-       /* add the new contact */
-       contact_list_store_add_contact_and_connect (store, new_contact);
-
-       /* remove old contact */
-       contact_list_store_remove_contact_and_disconnect (store, old_contact);
-}
-
-static void
-contact_list_store_groups_changed_cb (EmpathyContactList      *list_iface,
-                                     EmpathyContact          *contact,
-                                     gchar                   *group,
-                                     gboolean                 is_member,
-                                     EmpathyContactListStore *store)
-{
-       EmpathyContactListStorePriv *priv;
-       gboolean                     show_active;
-
-       priv = GET_PRIV (store);
-
-       DEBUG ("Updating groups for contact %s (%d)",
-               empathy_contact_get_id (contact),
-               empathy_contact_get_handle (contact));
-
-       /* We do this to make sure the groups are correct, if not, we
-        * would have to check the groups already set up for each
-        * contact and then see what has been updated.
-        */
-       show_active = priv->show_active;
-       priv->show_active = FALSE;
-       contact_list_store_remove_contact (store, contact);
-       contact_list_store_add_contact (store, contact);
-       priv->show_active = show_active;
-}
-
-static void
-add_contact_to_store (GtkTreeStore *store,
-                     GtkTreeIter *iter,
-                     GtkTreeIter *parent,
-                     EmpathyContact *contact,
-                     EmpathyContactListFlags flags)
-{
-       EmpathyContactListStorePriv *priv = GET_PRIV (store);
-       GQueue *queue;
-
-       gtk_tree_store_insert_with_values (store, iter, parent, 0,
-                           EMPATHY_CONTACT_LIST_STORE_COL_NAME, empathy_contact_get_alias (contact),
-                           EMPATHY_CONTACT_LIST_STORE_COL_CONTACT, contact,
-                           EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP, FALSE,
-                           EMPATHY_CONTACT_LIST_STORE_COL_IS_SEPARATOR, FALSE,
-                           EMPATHY_CONTACT_LIST_STORE_COL_CAN_AUDIO_CALL,
-                             empathy_contact_get_capabilities (contact) &
-                               EMPATHY_CAPABILITIES_AUDIO,
-                           EMPATHY_CONTACT_LIST_STORE_COL_CAN_VIDEO_CALL,
-                             empathy_contact_get_capabilities (contact) &
-                               EMPATHY_CAPABILITIES_VIDEO,
-                           EMPATHY_CONTACT_LIST_STORE_COL_FLAGS, flags,
-                           -1);
-
-       queue = g_hash_table_lookup (priv->empathy_contact_cache, contact);
-       if (queue) {
-               g_queue_push_tail (queue, gtk_tree_iter_copy (iter));
-       } else {
-               queue = g_queue_new ();
-               g_queue_push_tail (queue, gtk_tree_iter_copy (iter));
-               g_hash_table_insert (priv->empathy_contact_cache, contact,
-                       queue);
-       }
-}
-
-static void
-contact_list_store_add_contact (EmpathyContactListStore *store,
-                               EmpathyContact          *contact)
-{
-       EmpathyContactListStorePriv *priv;
-       GtkTreeIter                 iter;
-       GList                      *groups = NULL, *l;
-       TpConnection               *connection;
-       EmpathyContactListFlags     flags = 0;
-       char                       *protocol_name;
-
-       priv = GET_PRIV (store);
-
-       if (EMP_STR_EMPTY (empathy_contact_get_alias (contact)) ||
-           (!priv->show_offline && !empathy_contact_is_online (contact))) {
-               return;
-       }
-
-       if (priv->show_groups) {
-               groups = empathy_contact_list_get_groups (priv->list, contact);
-       }
-
-       connection = empathy_contact_get_connection (contact);
-       if (EMPATHY_IS_CONTACT_MANAGER (priv->list)) {
-               flags = empathy_contact_manager_get_flags_for_connection (
-                       EMPATHY_CONTACT_MANAGER (priv->list), connection);
-       }
-
-       tp_connection_parse_object_path (connection, &protocol_name, NULL);
-
-       if (!groups) {
-               GtkTreeIter iter_group, *parent;
-
-               parent = &iter_group;
-
-               if (!priv->show_groups) {
-                       parent = NULL;
-               }
-
-               add_contact_to_store (GTK_TREE_STORE (store), &iter, parent,
-                                     contact, flags);
-       }
-
-       g_free (protocol_name);
-
-       /* Else add to each group. */
-       for (l = groups; l; l = l->next) {
-               GtkTreeIter iter_group;
-
-               contact_list_store_get_group (store, l->data, &iter_group, NULL, NULL, FALSE);
-
-               add_contact_to_store (GTK_TREE_STORE (store), &iter, &iter_group, contact, flags);
-               g_free (l->data);
-       }
-       g_list_free (groups);
-
-       contact_list_store_contact_update (store, contact);
-}
-
-static void
-contact_list_store_remove_contact (EmpathyContactListStore *store,
-                                  EmpathyContact          *contact)
-{
-       EmpathyContactListStorePriv *priv = GET_PRIV (store);
-       GtkTreeModel               *model;
-       GList                      *l;
-       GQueue                     *row_refs;
-
-       row_refs = g_hash_table_lookup (priv->empathy_contact_cache, contact);
-       if (!row_refs) {
-               return;
-       }
-
-       /* Clean up model */
-       model = GTK_TREE_MODEL (store);
-
-       for (l = g_queue_peek_head_link (row_refs); l; l = l->next) {
-               GtkTreeIter *iter = l->data;
-               GtkTreeIter parent;
-
-               /* NOTE: it is only <= 2 here because we have
-                * separators after the group name, otherwise it
-                * should be 1.
-                */
-               if (gtk_tree_model_iter_parent (model, &parent, iter) &&
-                   gtk_tree_model_iter_n_children (model, &parent) <= 2) {
-                       gchar *group_name;
-                       gtk_tree_model_get (model, &parent,
-                           EMPATHY_CONTACT_LIST_STORE_COL_NAME, &group_name,
-                           -1);
-                       g_hash_table_remove (priv->empathy_group_cache,
-                               group_name);
-                       gtk_tree_store_remove (GTK_TREE_STORE (store), &parent);
-               } else {
-                       gtk_tree_store_remove (GTK_TREE_STORE (store), iter);
-               }
-       }
-
-       g_hash_table_remove (priv->empathy_contact_cache, contact);
-}
-
-static void
-contact_list_store_contact_update (EmpathyContactListStore *store,
-                                  EmpathyContact          *contact)
-{
-       EmpathyContactListStorePriv *priv;
-       ShowActiveData             *data;
-       GtkTreeModel               *model;
-       GList                      *iters, *l;
-       gboolean                    in_list;
-       gboolean                    should_be_in_list;
-       gboolean                    was_online = TRUE;
-       gboolean                    now_online = FALSE;
-       gboolean                    set_model = FALSE;
-       gboolean                    do_remove = FALSE;
-       gboolean                    do_set_active = FALSE;
-       gboolean                    do_set_refresh = FALSE;
-       gboolean                    show_avatar = FALSE;
-       GdkPixbuf                  *pixbuf_avatar;
-       GdkPixbuf                  *pixbuf_status;
-
-       priv = GET_PRIV (store);
-
-       model = GTK_TREE_MODEL (store);
-
-       iters = contact_list_store_find_contact (store, contact);
-       if (!iters) {
-               in_list = FALSE;
-       } else {
-               in_list = TRUE;
-       }
-
-       /* Get online state now. */
-       now_online = empathy_contact_is_online (contact);
-
-       if (priv->show_offline || now_online) {
-               should_be_in_list = TRUE;
-       } else {
-               should_be_in_list = FALSE;
-       }
-
-       if (!in_list && !should_be_in_list) {
-               /* Nothing to do. */
-               DEBUG ("Contact:'%s' in list:NO, should be:NO",
-                       empathy_contact_get_alias (contact));
-
-               g_list_foreach (iters, (GFunc) gtk_tree_iter_free, NULL);
-               g_list_free (iters);
-               return;
-       }
-       else if (in_list && !should_be_in_list) {
-               DEBUG ("Contact:'%s' in list:YES, should be:NO",
-                       empathy_contact_get_alias (contact));
-
-               if (priv->show_active) {
-                       do_remove = TRUE;
-                       do_set_active = TRUE;
-                       do_set_refresh = TRUE;
-
-                       set_model = TRUE;
-                       DEBUG ("Remove item (after timeout)");
-               } else {
-                       DEBUG ("Remove item (now)!");
-                       contact_list_store_remove_contact (store, contact);
-               }
-       }
-       else if (!in_list && should_be_in_list) {
-               DEBUG ("Contact:'%s' in list:NO, should be:YES",
-                       empathy_contact_get_alias (contact));
-
-               contact_list_store_add_contact (store, contact);
-
-               if (priv->show_active) {
-                       do_set_active = TRUE;
-
-                       DEBUG ("Set active (contact added)");
-               }
-       } else {
-               DEBUG ("Contact:'%s' in list:YES, should be:YES",
-                       empathy_contact_get_alias (contact));
-
-               /* Get online state before. */
-               if (iters && g_list_length (iters) > 0) {
-                       gtk_tree_model_get (model, iters->data,
-                                           EMPATHY_CONTACT_LIST_STORE_COL_IS_ONLINE, &was_online,
-                                           -1);
-               }
-
-               /* Is this really an update or an online/offline. */
-               if (priv->show_active) {
-                       if (was_online != now_online) {
-                               do_set_active = TRUE;
-                               do_set_refresh = TRUE;
-
-                               DEBUG ("Set active (contact updated %s)",
-                                       was_online ? "online  -> offline" :
-                                       "offline -> online");
-                       } else {
-                               /* Was TRUE for presence updates. */
-                               /* do_set_active = FALSE;  */
-                               do_set_refresh = TRUE;
-
-                               DEBUG ("Set active (contact updated)");
-                       }
-               }
-
-               set_model = TRUE;
-       }
-
-       if (priv->show_avatars && !priv->is_compact) {
-               show_avatar = TRUE;
-       }
-       pixbuf_avatar = empathy_pixbuf_avatar_from_contact_scaled (contact, 32, 32);
-       pixbuf_status = contact_list_store_get_contact_status_icon (store, contact);
-       for (l = iters; l && set_model; l = l->next) {
-               gtk_tree_store_set (GTK_TREE_STORE (store), l->data,
-                                   EMPATHY_CONTACT_LIST_STORE_COL_ICON_STATUS, pixbuf_status,
-                                   EMPATHY_CONTACT_LIST_STORE_COL_PIXBUF_AVATAR, pixbuf_avatar,
-                                   EMPATHY_CONTACT_LIST_STORE_COL_PIXBUF_AVATAR_VISIBLE, show_avatar,
-                                   EMPATHY_CONTACT_LIST_STORE_COL_NAME, empathy_contact_get_alias (contact),
-                                   EMPATHY_CONTACT_LIST_STORE_COL_PRESENCE_TYPE,
-                                     empathy_contact_get_presence (contact),
-                                   EMPATHY_CONTACT_LIST_STORE_COL_STATUS,
-                                     empathy_contact_get_presence_message (contact),
-                                   EMPATHY_CONTACT_LIST_STORE_COL_COMPACT, priv->is_compact,
-                                   EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP, FALSE,
-                                   EMPATHY_CONTACT_LIST_STORE_COL_IS_ONLINE, now_online,
-                                   EMPATHY_CONTACT_LIST_STORE_COL_IS_SEPARATOR, FALSE,
-                                   EMPATHY_CONTACT_LIST_STORE_COL_CAN_AUDIO_CALL,
-                                     empathy_contact_get_capabilities (contact) &
-                                       EMPATHY_CAPABILITIES_AUDIO,
-                                   EMPATHY_CONTACT_LIST_STORE_COL_CAN_VIDEO_CALL,
-                                     empathy_contact_get_capabilities (contact) &
-                                       EMPATHY_CAPABILITIES_VIDEO,
-                                   -1);
-       }
-
-       if (pixbuf_avatar) {
-               g_object_unref (pixbuf_avatar);
-       }
-
-       if (priv->show_active && do_set_active) {
-               contact_list_store_contact_set_active (store, contact, do_set_active, do_set_refresh);
-
-               if (do_set_active) {
-                       data = contact_list_store_contact_active_new (store, contact, do_remove);
-                       data->timeout = g_timeout_add_seconds (ACTIVE_USER_SHOW_TIME,
-                                              (GSourceFunc) contact_list_store_contact_active_cb,
-                                              data);
-               }
-       }
-
-       /* FIXME: when someone goes online then offline quickly, the
-        * first timeout sets the user to be inactive and the second
-        * timeout removes the user from the contact list, really we
-        * should remove the first timeout.
-        */
-       g_list_foreach (iters, (GFunc) gtk_tree_iter_free, NULL);
-       g_list_free (iters);
-}
-
-static void
-contact_list_store_contact_updated_cb (EmpathyContact          *contact,
-                                      GParamSpec              *param,
-                                      EmpathyContactListStore *store)
-{
-       DEBUG ("Contact:'%s' updated, checking roster is in sync...",
-               empathy_contact_get_alias (contact));
-
-       contact_list_store_contact_update (store, contact);
-}
-
-static void
-contact_list_store_contact_set_active (EmpathyContactListStore *store,
-                                      EmpathyContact          *contact,
-                                      gboolean                active,
-                                      gboolean                set_changed)
-{
-       GtkTreeModel               *model;
-       GList                      *iters, *l;
-
-       model = GTK_TREE_MODEL (store);
-
-       iters = contact_list_store_find_contact (store, contact);
-       for (l = iters; l; l = l->next) {
-               GtkTreePath *path;
-
-               gtk_tree_store_set (GTK_TREE_STORE (store), l->data,
-                                   EMPATHY_CONTACT_LIST_STORE_COL_IS_ACTIVE, active,
-                                   -1);
-
-               DEBUG ("Set item %s", active ? "active" : "inactive");
-
-               if (set_changed) {
-                       path = gtk_tree_model_get_path (model, l->data);
-                       gtk_tree_model_row_changed (model, path, l->data);
-                       gtk_tree_path_free (path);
-               }
-       }
-
-       g_list_foreach (iters, (GFunc) gtk_tree_iter_free, NULL);
-       g_list_free (iters);
-
-}
-
-static void
-store_contact_active_invalidated (ShowActiveData *data,
-       GObject *old_object)
-{
-       /* Remove the timeout and free the struct, since the contact or contact
-        * store has disappeared. */
-       g_source_remove (data->timeout);
-
-        if (old_object == (GObject *) data->store)
-               data->store = NULL;
-        else if (old_object == (GObject *) data->contact)
-               data->contact = NULL;
-        else
-               g_assert_not_reached ();
-
-       contact_list_store_contact_active_free (data);
-}
-
-static ShowActiveData *
-contact_list_store_contact_active_new (EmpathyContactListStore *store,
-                                      EmpathyContact          *contact,
-                                      gboolean                remove_)
-{
-       ShowActiveData *data;
-
-       DEBUG ("Contact:'%s' now active, and %s be removed",
-               empathy_contact_get_alias (contact),
-               remove_ ? "WILL" : "WILL NOT");
-
-       data = g_slice_new0 (ShowActiveData);
-
-       /* We don't actually want to force either the IndividualStore or the
-        * Individual to stay alive, since the user could quit Empathy or disable
-        * the account before the contact_active timeout is fired. */
-       g_object_weak_ref (G_OBJECT (store),
-               (GWeakNotify) store_contact_active_invalidated, data);
-       g_object_weak_ref (G_OBJECT (contact),
-               (GWeakNotify) store_contact_active_invalidated, data);
-
-       data->store = store;
-       data->contact = contact;
-       data->remove = remove_;
-       data->timeout = 0;
-
-       return data;
-}
-
-static void
-contact_list_store_contact_active_free (ShowActiveData *data)
-{
-       if (data->store != NULL)
-               g_object_weak_unref (G_OBJECT (data->store),
-                       (GWeakNotify) store_contact_active_invalidated, data);
-
-       if (data->contact != NULL)
-               g_object_weak_unref (G_OBJECT (data->contact),
-                       (GWeakNotify) store_contact_active_invalidated, data);
-
-       g_slice_free (ShowActiveData, data);
-}
-
-static gboolean
-contact_list_store_contact_active_cb (ShowActiveData *data)
-{
-       EmpathyContactListStorePriv *priv;
-
-       priv = GET_PRIV (data->store);
-
-       if (data->remove &&
-           !priv->show_offline &&
-           !empathy_contact_is_online (data->contact)) {
-               DEBUG ("Contact:'%s' active timeout, removing item",
-                       empathy_contact_get_alias (data->contact));
-               contact_list_store_remove_contact (data->store, data->contact);
-       }
-
-       DEBUG ("Contact:'%s' no longer active",
-               empathy_contact_get_alias (data->contact));
-
-       contact_list_store_contact_set_active (data->store,
-                                              data->contact,
-                                              FALSE,
-                                              TRUE);
-
-       contact_list_store_contact_active_free (data);
-
-       return FALSE;
-}
-
-static void
-contact_list_store_get_group (EmpathyContactListStore *store,
-                             const gchar            *name,
-                             GtkTreeIter            *iter_group_to_set,
-                             GtkTreeIter            *iter_separator_to_set,
-                             gboolean               *created,
-                             gboolean               is_fake_group)
-{
-       EmpathyContactListStorePriv *priv = GET_PRIV (store);
-       GtkTreeModel                *model;
-       GtkTreeIter                  iter_group;
-       GtkTreeIter                  iter_separator;
-       GtkTreeIter                 *iter;
-
-       model = GTK_TREE_MODEL (store);
-       iter = g_hash_table_lookup (priv->empathy_group_cache, name);
-
-       if (iter == NULL) {
-               if (created) {
-                       *created = TRUE;
-               }
-
-               gtk_tree_store_insert_with_values (GTK_TREE_STORE (store), &iter_group, NULL, 0,
-                                   EMPATHY_CONTACT_LIST_STORE_COL_ICON_STATUS, NULL,
-                                   EMPATHY_CONTACT_LIST_STORE_COL_NAME, name,
-                                   EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP, TRUE,
-                                   EMPATHY_CONTACT_LIST_STORE_COL_IS_ACTIVE, FALSE,
-                                   EMPATHY_CONTACT_LIST_STORE_COL_IS_SEPARATOR, FALSE,
-                                   EMPATHY_CONTACT_LIST_STORE_COL_IS_FAKE_GROUP, is_fake_group,
-                                   -1);
-
-               g_hash_table_insert (priv->empathy_group_cache,
-                       g_strdup (name), gtk_tree_iter_copy (&iter_group));
-
-               if (iter_group_to_set) {
-                       *iter_group_to_set = iter_group;
-               }
-
-               gtk_tree_store_insert_with_values (GTK_TREE_STORE (store), &iter_separator, &iter_group, 0,
-                                   EMPATHY_CONTACT_LIST_STORE_COL_IS_SEPARATOR, TRUE,
-                                   -1);
-
-               if (iter_separator_to_set) {
-                       *iter_separator_to_set = iter_separator;
-               }
-       } else {
-               if (created) {
-                       *created = FALSE;
-               }
-
-               if (iter_group_to_set) {
-                       *iter_group_to_set = *iter;
-               }
-
-               iter_separator = *iter;
-
-               if (gtk_tree_model_iter_next (model, &iter_separator)) {
-                       gboolean is_separator;
-
-                       gtk_tree_model_get (model, &iter_separator,
-                                           EMPATHY_CONTACT_LIST_STORE_COL_IS_SEPARATOR, &is_separator,
-                                           -1);
-
-                       if (is_separator && iter_separator_to_set) {
-                               *iter_separator_to_set = iter_separator;
-                       }
-               }
-       }
-}
-
-static gint
-compare_separator_and_groups (gboolean is_separator_a,
-                             gboolean is_separator_b,
-                             const gchar *name_a,
-                             const gchar *name_b,
-                             EmpathyContact *contact_a,
-                             EmpathyContact *contact_b,
-                             gboolean fake_group_a,
-                             gboolean fake_group_b)
-{
-       if (is_separator_a || is_separator_b) {
-               /* We have at least one separator */
-               if (is_separator_a) {
-                       return -1;
-               } else if (is_separator_b) {
-                       return 1;
-               }
-       }
-
-       /* One group and one contact */
-       if (!contact_a && contact_b) {
-               return 1;
-       } else if (contact_a && !contact_b) {
-               return -1;
-       } else if (!contact_a && !contact_b) {
-               return g_utf8_collate (name_a, name_b);
-       }
-
-       /* Two contacts, ordering depends of the sorting policy */
-       return 0;
-}
-
-static gint
-contact_list_store_contact_sort (EmpathyContact *contact_a,
-                                EmpathyContact *contact_b)
-{
-       TpAccount *account_a, *account_b;
-       gint ret_val;
-
-       g_return_val_if_fail (contact_a != NULL || contact_b != NULL, 0);
-
-       /* alias */
-       ret_val = g_utf8_collate (empathy_contact_get_alias (contact_a),
-                                 empathy_contact_get_alias (contact_b));
-
-       if (ret_val != 0)
-               goto out;
-
-       /* identifier */
-       ret_val = g_utf8_collate (empathy_contact_get_id (contact_a),
-                                 empathy_contact_get_id (contact_b));
-
-       if (ret_val != 0)
-               goto out;
-
-       account_a = empathy_contact_get_account (contact_a);
-       account_b = empathy_contact_get_account (contact_b);
-
-       /* protocol */
-       ret_val = strcmp (tp_account_get_protocol (account_a),
-                         tp_account_get_protocol (account_b));
-
-       if (ret_val != 0)
-               goto out;
-
-       /* account ID */
-       ret_val = strcmp (tp_proxy_get_object_path (account_a),
-                         tp_proxy_get_object_path (account_b));
-
-out:
-       return ret_val;
-}
-
-static gint
-contact_list_store_state_sort_func (GtkTreeModel *model,
-                                   GtkTreeIter  *iter_a,
-                                   GtkTreeIter  *iter_b,
-                                   gpointer      user_data)
-{
-       gint            ret_val;
-       gchar          *name_a, *name_b;
-       gboolean        is_separator_a, is_separator_b;
-       EmpathyContact *contact_a, *contact_b;
-       gboolean       fake_group_a, fake_group_b;
-
-       gtk_tree_model_get (model, iter_a,
-                           EMPATHY_CONTACT_LIST_STORE_COL_NAME, &name_a,
-                           EMPATHY_CONTACT_LIST_STORE_COL_CONTACT, &contact_a,
-                           EMPATHY_CONTACT_LIST_STORE_COL_IS_SEPARATOR, &is_separator_a,
-                           EMPATHY_CONTACT_LIST_STORE_COL_IS_FAKE_GROUP, &fake_group_a,
-                           -1);
-       gtk_tree_model_get (model, iter_b,
-                           EMPATHY_CONTACT_LIST_STORE_COL_NAME, &name_b,
-                           EMPATHY_CONTACT_LIST_STORE_COL_CONTACT, &contact_b,
-                           EMPATHY_CONTACT_LIST_STORE_COL_IS_SEPARATOR, &is_separator_b,
-                           EMPATHY_CONTACT_LIST_STORE_COL_IS_FAKE_GROUP, &fake_group_b,
-                           -1);
-
-       if (contact_a == NULL || contact_b == NULL) {
-               ret_val = compare_separator_and_groups (is_separator_a, is_separator_b,
-                       name_a, name_b, contact_a, contact_b, fake_group_a, fake_group_b);
-               goto free_and_out;
-       }
-
-       /* If we managed to get this far, we can start looking at
-        * the presences.
-        */
-       ret_val = -tp_connection_presence_type_cmp_availability (
-               empathy_contact_get_presence (EMPATHY_CONTACT (contact_a)),
-               empathy_contact_get_presence (EMPATHY_CONTACT (contact_b)));
-
-       if (ret_val == 0) {
-               /* Fallback: compare by name et al. */
-               ret_val = contact_list_store_contact_sort (contact_a, contact_b);
-       }
-
-free_and_out:
-       g_free (name_a);
-       g_free (name_b);
-
-       if (contact_a) {
-               g_object_unref (contact_a);
-       }
-
-       if (contact_b) {
-               g_object_unref (contact_b);
-       }
-
-       return ret_val;
-}
-
-static gint
-contact_list_store_name_sort_func (GtkTreeModel *model,
-                                  GtkTreeIter  *iter_a,
-                                  GtkTreeIter  *iter_b,
-                                  gpointer      user_data)
-{
-       gchar         *name_a, *name_b;
-       EmpathyContact *contact_a, *contact_b;
-       gboolean       is_separator_a = FALSE, is_separator_b = FALSE;
-       gint           ret_val;
-       gboolean       fake_group_a, fake_group_b;
-
-       gtk_tree_model_get (model, iter_a,
-                           EMPATHY_CONTACT_LIST_STORE_COL_NAME, &name_a,
-                           EMPATHY_CONTACT_LIST_STORE_COL_CONTACT, &contact_a,
-                           EMPATHY_CONTACT_LIST_STORE_COL_IS_SEPARATOR, &is_separator_a,
-                           EMPATHY_CONTACT_LIST_STORE_COL_IS_FAKE_GROUP, &fake_group_a,
-                           -1);
-       gtk_tree_model_get (model, iter_b,
-                           EMPATHY_CONTACT_LIST_STORE_COL_NAME, &name_b,
-                           EMPATHY_CONTACT_LIST_STORE_COL_CONTACT, &contact_b,
-                           EMPATHY_CONTACT_LIST_STORE_COL_IS_SEPARATOR, &is_separator_b,
-                           EMPATHY_CONTACT_LIST_STORE_COL_IS_FAKE_GROUP, &fake_group_b,
-                           -1);
-
-       if (contact_a == NULL || contact_b == NULL)
-               ret_val = compare_separator_and_groups (is_separator_a, is_separator_b,
-                       name_a, name_b, contact_a, contact_b, fake_group_a, fake_group_b);
-       else
-               ret_val = contact_list_store_contact_sort (contact_a, contact_b);
-
-       if (contact_a) {
-               g_object_unref (contact_a);
-       }
-
-       if (contact_b) {
-               g_object_unref (contact_b);
-       }
-
-       return ret_val;
-}
-
-static GList *
-contact_list_store_find_contact (EmpathyContactListStore *store,
-                                EmpathyContact          *contact)
-{
-       EmpathyContactListStorePriv *priv = GET_PRIV (store);
-       GQueue                    *row_refs_queue;
-       GList                     *i;
-       GList                     *iters_list = NULL;
-
-       row_refs_queue = g_hash_table_lookup (priv->empathy_contact_cache, contact);
-       if (!row_refs_queue)
-               return NULL;
-
-       for (i = g_queue_peek_head_link (row_refs_queue) ; i != NULL ;
-            i = i->next) {
-               GtkTreeIter *iter = i->data;
-
-               iters_list = g_list_prepend
-                       (iters_list, gtk_tree_iter_copy (iter));
-       }
-
-       return iters_list;
-}
-
-static gboolean
-contact_list_store_update_list_mode_foreach (GtkTreeModel           *model,
-                                            GtkTreePath            *path,
-                                            GtkTreeIter            *iter,
-                                            EmpathyContactListStore *store)
-{
-       EmpathyContactListStorePriv *priv;
-       gboolean                     show_avatar = FALSE;
-       EmpathyContact              *contact;
-       GdkPixbuf                   *pixbuf_status;
-
-       priv = GET_PRIV (store);
-
-       if (priv->show_avatars && !priv->is_compact) {
-               show_avatar = TRUE;
-       }
-
-       gtk_tree_model_get (model, iter,
-                           EMPATHY_CONTACT_LIST_STORE_COL_CONTACT, &contact,
-                           -1);
-
-       if (contact == NULL){
-               return FALSE;
-       }
-       /* get icon from hash_table */
-       pixbuf_status = contact_list_store_get_contact_status_icon (store, contact);
-
-       gtk_tree_store_set (GTK_TREE_STORE (store), iter,
-                           EMPATHY_CONTACT_LIST_STORE_COL_ICON_STATUS, pixbuf_status,
-                           EMPATHY_CONTACT_LIST_STORE_COL_PIXBUF_AVATAR_VISIBLE, show_avatar,
-                           EMPATHY_CONTACT_LIST_STORE_COL_COMPACT, priv->is_compact,
-                           -1);
-
-       return FALSE;
-}
-
-static GdkPixbuf *
-contact_list_store_get_contact_status_icon_with_icon_name (
-                                       EmpathyContactListStore *store,
-                                       EmpathyContact *contact,
-                                       const gchar *status_icon_name)
-{
-       GdkPixbuf                   *pixbuf_status = NULL;
-       EmpathyContactListStorePriv *priv;
-       const gchar                 *protocol_name = NULL;
-       gchar                       *icon_name = NULL;
-
-       priv = GET_PRIV (store);
-
-       if (priv->show_protocols) {
-               protocol_name = empathy_protocol_name_for_contact (contact);
-               icon_name = g_strdup_printf ("%s-%s", status_icon_name, protocol_name);
-       } else {
-               icon_name = g_strdup_printf ("%s", status_icon_name);
-       }
-       pixbuf_status = g_hash_table_lookup (priv->status_icons, icon_name);
-       if (pixbuf_status == NULL) {
-               pixbuf_status = empathy_pixbuf_contact_status_icon_with_icon_name (contact,
-                                   status_icon_name,
-                                   priv->show_protocols);
-               if (pixbuf_status != NULL) {
-                       g_hash_table_insert (priv->status_icons,
-                           g_strdup (icon_name),
-                           pixbuf_status);
-               }
-       }
-
-       g_free (icon_name);
-       return pixbuf_status;
-}
-
-GdkPixbuf *
-contact_list_store_get_contact_status_icon (EmpathyContactListStore *store,
-                                           EmpathyContact *contact)
-{
-       GdkPixbuf                   *pixbuf_status = NULL;
-       EmpathyContactListStorePriv *priv;
-       const gchar                 *status_icon_name = NULL;
-       gboolean                     composing = FALSE;
-
-       priv = GET_PRIV (store);
-
-       if (EMPATHY_IS_TP_CHAT (priv->list)) {
-               if (empathy_tp_chat_get_chat_state (EMPATHY_TP_CHAT (priv->list),
-                     contact) ==
-                       TP_CHANNEL_CHAT_STATE_COMPOSING)
-               composing = TRUE;
-       }
-
-       if (composing) {
-               status_icon_name = EMPATHY_IMAGE_TYPING;
-       } else {
-               status_icon_name = empathy_icon_name_for_contact (contact);
-       }
-
-       if (status_icon_name == NULL)
-               return NULL;
-
-       pixbuf_status = contact_list_store_get_contact_status_icon_with_icon_name (
-                           store,
-                           contact,
-                           status_icon_name);
-
-       return pixbuf_status;
-}
diff --git a/libempathy-gtk/empathy-contact-list-store.h b/libempathy-gtk/empathy-contact-list-store.h
deleted file mode 100644 (file)
index 8e773e6..0000000
+++ /dev/null
@@ -1,114 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Copyright (C) 2005-2007 Imendio AB
- * Copyright (C) 2007-2008 Collabora Ltd.
- *
- * 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., 51 Franklin St, Fifth Floor,
- * Boston, MA  02110-1301  USA
- *
- * Authors: Mikael Hallendal <micke@imendio.com>
- *          Martyn Russell <martyn@imendio.com>
- *          Xavier Claessens <xclaesse@gmail.com>
- */
-
-#ifndef __EMPATHY_CONTACT_LIST_STORE_H__
-#define __EMPATHY_CONTACT_LIST_STORE_H__
-
-#include <gtk/gtk.h>
-
-#include <libempathy/empathy-contact-list.h>
-#include <libempathy/empathy-contact.h>
-
-G_BEGIN_DECLS
-
-#define EMPATHY_TYPE_CONTACT_LIST_STORE         (empathy_contact_list_store_get_type ())
-#define EMPATHY_CONTACT_LIST_STORE(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_CONTACT_LIST_STORE, EmpathyContactListStore))
-#define EMPATHY_CONTACT_LIST_STORE_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), EMPATHY_TYPE_CONTACT_LIST_STORE, EmpathyContactListStoreClass))
-#define EMPATHY_IS_CONTACT_LIST_STORE(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_CONTACT_LIST_STORE))
-#define EMPATHY_IS_CONTACT_LIST_STORE_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), EMPATHY_TYPE_CONTACT_LIST_STORE))
-#define EMPATHY_CONTACT_LIST_STORE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EMPATHY_TYPE_CONTACT_LIST_STORE, EmpathyContactListStoreClass))
-
-typedef struct _EmpathyContactListStore      EmpathyContactListStore;
-typedef struct _EmpathyContactListStoreClass EmpathyContactListStoreClass;
-
-typedef enum {
-       EMPATHY_CONTACT_LIST_STORE_SORT_STATE,
-       EMPATHY_CONTACT_LIST_STORE_SORT_NAME
-} EmpathyContactListStoreSort;
-
-typedef enum {
-       EMPATHY_CONTACT_LIST_STORE_COL_ICON_STATUS,
-       EMPATHY_CONTACT_LIST_STORE_COL_PIXBUF_AVATAR,
-       EMPATHY_CONTACT_LIST_STORE_COL_PIXBUF_AVATAR_VISIBLE,
-       EMPATHY_CONTACT_LIST_STORE_COL_NAME,
-       EMPATHY_CONTACT_LIST_STORE_COL_PRESENCE_TYPE,
-       EMPATHY_CONTACT_LIST_STORE_COL_STATUS,
-       EMPATHY_CONTACT_LIST_STORE_COL_COMPACT,
-       EMPATHY_CONTACT_LIST_STORE_COL_CONTACT,
-       EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP,
-       EMPATHY_CONTACT_LIST_STORE_COL_IS_ACTIVE,
-       EMPATHY_CONTACT_LIST_STORE_COL_IS_ONLINE,
-       EMPATHY_CONTACT_LIST_STORE_COL_IS_SEPARATOR,
-       EMPATHY_CONTACT_LIST_STORE_COL_CAN_AUDIO_CALL,
-       EMPATHY_CONTACT_LIST_STORE_COL_CAN_VIDEO_CALL,
-       EMPATHY_CONTACT_LIST_STORE_COL_FLAGS,
-       EMPATHY_CONTACT_LIST_STORE_COL_IS_FAKE_GROUP,
-       EMPATHY_CONTACT_LIST_STORE_COL_COUNT,
-} EmpathyContactListStoreCol;
-
-struct _EmpathyContactListStore {
-       GtkTreeStore parent;
-       gpointer priv;
-};
-
-struct _EmpathyContactListStoreClass {
-       GtkTreeStoreClass parent_class;
-};
-
-GType                      empathy_contact_list_store_get_type           (void) G_GNUC_CONST;
-EmpathyContactListStore *  empathy_contact_list_store_new                (EmpathyContactList         *list_iface);
-EmpathyContactList *       empathy_contact_list_store_get_list_iface     (EmpathyContactListStore     *store);
-gboolean                   empathy_contact_list_store_get_show_offline   (EmpathyContactListStore     *store);
-void                       empathy_contact_list_store_set_show_offline   (EmpathyContactListStore     *store,
-                                                                        gboolean                    show_offline);
-gboolean                   empathy_contact_list_store_get_show_avatars   (EmpathyContactListStore     *store);
-void                       empathy_contact_list_store_set_show_avatars   (EmpathyContactListStore     *store,
-                                                                        gboolean                    show_avatars);
-gboolean                   empathy_contact_list_store_get_show_groups   (EmpathyContactListStore     *store);
-void                       empathy_contact_list_store_set_show_groups   (EmpathyContactListStore     *store,
-                                                                        gboolean                    show_groups);
-gboolean                   empathy_contact_list_store_get_is_compact     (EmpathyContactListStore     *store);
-void                       empathy_contact_list_store_set_is_compact     (EmpathyContactListStore     *store,
-                                                                        gboolean                    is_compact);
-gboolean                   empathy_contact_list_store_get_show_protocols   (EmpathyContactListStore     *store);
-void                       empathy_contact_list_store_set_show_protocols   (EmpathyContactListStore     *store,
-                                                                        gboolean                    show_protocols);
-EmpathyContactListStoreSort empathy_contact_list_store_get_sort_criterium (EmpathyContactListStore     *store);
-void                       empathy_contact_list_store_set_sort_criterium (EmpathyContactListStore     *store,
-                                                                        EmpathyContactListStoreSort  sort_criterium);
-gboolean                   empathy_contact_list_store_row_separator_func (GtkTreeModel               *model,
-                                                                        GtkTreeIter                *iter,
-                                                                        gpointer                    data);
-gchar *                    empathy_contact_list_store_get_parent_group   (GtkTreeModel               *model,
-                                                                        GtkTreePath                *path,
-                                                                        gboolean                   *path_is_group,
-                                                                        gboolean                   *is_fake_group);
-GdkPixbuf *                contact_list_store_get_contact_status_icon ( EmpathyContactListStore *store,
-                                                                        EmpathyContact             *contact);
-
-G_END_DECLS
-
-#endif /* __EMPATHY_CONTACT_LIST_STORE_H__ */
-
diff --git a/libempathy-gtk/empathy-contact-list-view.c b/libempathy-gtk/empathy-contact-list-view.c
deleted file mode 100644 (file)
index 1d95baf..0000000
+++ /dev/null
@@ -1,2134 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Copyright (C) 2005-2007 Imendio AB
- * Copyright (C) 2007-2008 Collabora Ltd.
- *
- * 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., 51 Franklin St, Fifth Floor,
- * Boston, MA  02110-1301  USA
- *
- * Authors: Mikael Hallendal <micke@imendio.com>
- *          Martyn Russell <martyn@imendio.com>
- *          Xavier Claessens <xclaesse@gmail.com>
- */
-
-#include "config.h"
-
-#include <string.h>
-
-#include <glib/gi18n-lib.h>
-#include <gdk/gdkkeysyms.h>
-#include <gtk/gtk.h>
-
-#include <telepathy-glib/account-manager.h>
-#include <telepathy-glib/util.h>
-
-#include <libempathy/empathy-client-factory.h>
-#include <libempathy/empathy-tp-contact-factory.h>
-#include <libempathy/empathy-contact-list.h>
-#include <libempathy/empathy-contact-groups.h>
-#include <libempathy/empathy-request-util.h>
-#include <libempathy/empathy-utils.h>
-
-#include "empathy-contact-list-view.h"
-#include "empathy-contact-list-store.h"
-#include "empathy-images.h"
-#include "empathy-cell-renderer-expander.h"
-#include "empathy-cell-renderer-text.h"
-#include "empathy-cell-renderer-activatable.h"
-#include "empathy-ui-utils.h"
-#include "empathy-gtk-enum-types.h"
-
-#define DEBUG_FLAG EMPATHY_DEBUG_CONTACT
-#include <libempathy/empathy-debug.h>
-
-/* Active users are those which have recently changed state
- * (e.g. online, offline or from normal to a busy state).
- */
-
-#define GET_PRIV(obj) EMPATHY_GET_PRIV (obj, EmpathyContactListView)
-typedef struct {
-       EmpathyContactListStore        *store;
-       GtkTreeRowReference            *drag_row;
-       EmpathyContactListFeatureFlags  list_features;
-       EmpathyContactFeatureFlags      contact_features;
-       GtkWidget                      *tooltip_widget;
-       GtkTargetList                  *file_targets;
-
-       GtkTreeModelFilter             *filter;
-       GtkWidget                      *search_widget;
-} EmpathyContactListViewPriv;
-
-typedef struct {
-       EmpathyContactListView *view;
-       GtkTreePath           *path;
-       guint                  timeout_id;
-} DragMotionData;
-
-typedef struct {
-       EmpathyContactListView *view;
-       EmpathyContact         *contact;
-       gboolean               remove;
-} ShowActiveData;
-
-enum {
-       PROP_0,
-       PROP_STORE,
-       PROP_LIST_FEATURES,
-       PROP_CONTACT_FEATURES,
-};
-
-enum DndDragType {
-       DND_DRAG_TYPE_CONTACT_ID,
-       DND_DRAG_TYPE_URI_LIST,
-       DND_DRAG_TYPE_STRING,
-};
-
-static const GtkTargetEntry drag_types_dest[] = {
-       { "text/path-list",  0, DND_DRAG_TYPE_URI_LIST },
-       { "text/uri-list",   0, DND_DRAG_TYPE_URI_LIST },
-       { "text/contact-id", 0, DND_DRAG_TYPE_CONTACT_ID },
-       { "text/plain",      0, DND_DRAG_TYPE_STRING },
-       { "STRING",          0, DND_DRAG_TYPE_STRING },
-};
-
-static const GtkTargetEntry drag_types_dest_file[] = {
-       { "text/path-list",  0, DND_DRAG_TYPE_URI_LIST },
-       { "text/uri-list",   0, DND_DRAG_TYPE_URI_LIST },
-};
-
-static const GtkTargetEntry drag_types_source[] = {
-       { "text/contact-id", 0, DND_DRAG_TYPE_CONTACT_ID },
-};
-
-enum {
-       DRAG_CONTACT_RECEIVED,
-       LAST_SIGNAL
-};
-
-static guint signals[LAST_SIGNAL];
-
-G_DEFINE_TYPE (EmpathyContactListView, empathy_contact_list_view, GTK_TYPE_TREE_VIEW);
-
-static void
-contact_list_view_tooltip_destroy_cb (GtkWidget              *widget,
-                                     EmpathyContactListView *view)
-{
-       EmpathyContactListViewPriv *priv = GET_PRIV (view);
-
-       if (priv->tooltip_widget) {
-               DEBUG ("Tooltip destroyed");
-               g_object_unref (priv->tooltip_widget);
-               priv->tooltip_widget = NULL;
-       }
-}
-
-static gboolean
-contact_list_view_is_visible_contact (EmpathyContactListView *self,
-                                     EmpathyContact *contact)
-{
-       EmpathyContactListViewPriv *priv = GET_PRIV (self);
-       EmpathyLiveSearch *live = EMPATHY_LIVE_SEARCH (priv->search_widget);
-       const gchar *str;
-       const gchar *p;
-       gchar *dup_str = NULL;
-       gboolean visible;
-
-       g_assert (live != NULL);
-
-       /* check alias name */
-       str = empathy_contact_get_alias (contact);
-       if (empathy_live_search_match (live, str))
-               return TRUE;
-
-       /* check contact id, remove the @server.com part */
-       str = empathy_contact_get_id (contact);
-       p = strstr (str, "@");
-       if (p != NULL)
-               str = dup_str = g_strndup (str, p - str);
-
-       visible = empathy_live_search_match (live, str);
-       g_free (dup_str);
-       if (visible)
-               return TRUE;
-
-       /* FIXME: Add more rules here, we could check phone numbers in
-        * contact's vCard for example. */
-
-       return FALSE;
-}
-
-static gboolean
-contact_list_view_filter_visible_func (GtkTreeModel *model,
-                                      GtkTreeIter  *iter,
-                                      gpointer      user_data)
-{
-       EmpathyContactListView     *self = EMPATHY_CONTACT_LIST_VIEW (user_data);
-       EmpathyContactListViewPriv *priv = GET_PRIV (self);
-       EmpathyContact             *contact = NULL;
-       gboolean                    is_group, is_separator, valid;
-       GtkTreeIter                 child_iter;
-       gboolean                    visible;
-
-       if (priv->search_widget == NULL ||
-           !gtk_widget_get_visible (priv->search_widget))
-               return TRUE;
-
-       gtk_tree_model_get (model, iter,
-               EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP, &is_group,
-               EMPATHY_CONTACT_LIST_STORE_COL_IS_SEPARATOR, &is_separator,
-               EMPATHY_CONTACT_LIST_STORE_COL_CONTACT, &contact,
-               -1);
-
-       if (contact != NULL) {
-               visible = contact_list_view_is_visible_contact (self, contact);
-               g_object_unref (contact);
-               return visible;
-       }
-
-       if (is_separator) {
-               return TRUE;
-       }
-
-       /* Not a contact, not a separator, must be a group */
-       g_return_val_if_fail (is_group, FALSE);
-
-       /* only show groups which are not empty */
-       for (valid = gtk_tree_model_iter_children (model, &child_iter, iter);
-            valid; valid = gtk_tree_model_iter_next (model, &child_iter)) {
-               gtk_tree_model_get (model, &child_iter,
-                       EMPATHY_CONTACT_LIST_STORE_COL_CONTACT, &contact,
-                       -1);
-
-               if (contact == NULL)
-                       continue;
-
-               visible = contact_list_view_is_visible_contact (self, contact);
-               g_object_unref (contact);
-
-               /* show group if it has at least one visible contact in it */
-               if (visible)
-                       return TRUE;
-       }
-
-       return FALSE;
-}
-
-static gboolean
-contact_list_view_query_tooltip_cb (EmpathyContactListView *view,
-                                   gint                    x,
-                                   gint                    y,
-                                   gboolean                keyboard_mode,
-                                   GtkTooltip             *tooltip,
-                                   gpointer                user_data)
-{
-       EmpathyContactListViewPriv *priv = GET_PRIV (view);
-       EmpathyContact             *contact;
-       GtkTreeModel               *model;
-       GtkTreeIter                 iter;
-       GtkTreePath                *path;
-       static gint                 running = 0;
-       gboolean                    ret = FALSE;
-
-       /* Avoid an infinite loop. See GNOME bug #574377 */
-       if (running > 0) {
-               return FALSE;
-       }
-       running++;
-
-       /* Don't show the tooltip if there's already a popup menu */
-       if (gtk_menu_get_for_attach_widget (GTK_WIDGET (view)) != NULL) {
-               goto OUT;
-       }
-
-       if (!gtk_tree_view_get_tooltip_context (GTK_TREE_VIEW (view), &x, &y,
-                                               keyboard_mode,
-                                               &model, &path, &iter)) {
-               goto OUT;
-       }
-
-       gtk_tree_view_set_tooltip_row (GTK_TREE_VIEW (view), tooltip, path);
-       gtk_tree_path_free (path);
-
-       gtk_tree_model_get (model, &iter,
-                           EMPATHY_CONTACT_LIST_STORE_COL_CONTACT, &contact,
-                           -1);
-       if (!contact) {
-               goto OUT;
-       }
-
-       if (!priv->tooltip_widget) {
-               priv->tooltip_widget = empathy_contact_widget_new (contact,
-                       EMPATHY_CONTACT_WIDGET_FOR_TOOLTIP |
-                       EMPATHY_CONTACT_WIDGET_SHOW_LOCATION);
-               gtk_container_set_border_width (
-                       GTK_CONTAINER (priv->tooltip_widget), 8);
-               g_object_ref (priv->tooltip_widget);
-               g_signal_connect (priv->tooltip_widget, "destroy",
-                                 G_CALLBACK (contact_list_view_tooltip_destroy_cb),
-                                 view);
-               gtk_widget_show (priv->tooltip_widget);
-       } else {
-               empathy_contact_widget_set_contact (priv->tooltip_widget,
-                                                   contact);
-       }
-
-       gtk_tooltip_set_custom (tooltip, priv->tooltip_widget);
-       ret = TRUE;
-
-       g_object_unref (contact);
-OUT:
-       running--;
-
-       return ret;
-}
-
-typedef struct {
-       gchar *new_group;
-       gchar *old_group;
-       GdkDragAction action;
-} DndGetContactData;
-
-static void
-contact_list_view_dnd_get_contact_free (DndGetContactData *data)
-{
-       g_free (data->new_group);
-       g_free (data->old_group);
-       g_slice_free (DndGetContactData, data);
-}
-
-static void
-contact_list_view_drag_got_contact (TpConnection            *connection,
-                                   EmpathyContact          *contact,
-                                   const GError            *error,
-                                   gpointer                 user_data,
-                                   GObject                 *view)
-{
-       EmpathyContactListViewPriv *priv = GET_PRIV (view);
-       DndGetContactData          *data = user_data;
-       EmpathyContactList         *list;
-
-       if (error != NULL) {
-               DEBUG ("Error: %s", error->message);
-               return;
-       }
-
-       DEBUG ("contact %s (%d) dragged from '%s' to '%s'",
-               empathy_contact_get_id (contact),
-               empathy_contact_get_handle (contact),
-               data->old_group, data->new_group);
-
-       list = empathy_contact_list_store_get_list_iface (priv->store);
-
-       if (data->new_group) {
-               empathy_contact_list_add_to_group (list, contact, data->new_group);
-       }
-       if (data->old_group && data->action == GDK_ACTION_MOVE) {
-               empathy_contact_list_remove_from_group (list, contact, data->old_group);
-       }
-}
-
-static gboolean
-contact_list_view_contact_drag_received (GtkWidget         *view,
-                                        GdkDragContext    *context,
-                                        GtkTreeModel      *model,
-                                        GtkTreePath       *path,
-                                        GtkSelectionData  *selection)
-{
-       EmpathyContactListViewPriv *priv;
-       EmpathyClientFactory       *factory;
-       TpConnection               *connection = NULL;
-       TpAccount                  *account = NULL;
-       DndGetContactData          *data;
-       GtkTreePath                *source_path;
-       const gchar   *sel_data;
-       gchar        **strv = NULL;
-       const gchar   *account_id = NULL;
-       const gchar   *contact_id = NULL;
-       gchar         *new_group = NULL;
-       gchar         *old_group = NULL;
-       gboolean       new_group_is_fake, old_group_is_fake = TRUE;
-
-       priv = GET_PRIV (view);
-
-       sel_data = (const gchar *) gtk_selection_data_get_data (selection);
-       new_group = empathy_contact_list_store_get_parent_group (model,
-                                                                path, NULL, &new_group_is_fake);
-
-       /* Get source group information. */
-       if (priv->drag_row) {
-               source_path = gtk_tree_row_reference_get_path (priv->drag_row);
-               if (source_path) {
-                       old_group = empathy_contact_list_store_get_parent_group (
-                                                                                model, source_path, NULL, &old_group_is_fake);
-                       gtk_tree_path_free (source_path);
-               }
-       }
-
-       if (!tp_strdiff (old_group, new_group)) {
-               g_free (new_group);
-               g_free (old_group);
-               return FALSE;
-       }
-
-       factory = empathy_client_factory_dup ();
-       strv = g_strsplit (sel_data, ":", 2);
-       if (g_strv_length (strv) == 2) {
-               account_id = strv[0];
-               contact_id = strv[1];
-               account = tp_simple_client_factory_ensure_account (
-                               TP_SIMPLE_CLIENT_FACTORY (factory),
-                               account_id, NULL, NULL);
-       }
-       if (account) {
-               connection = tp_account_get_connection (account);
-       }
-
-       if (!connection) {
-               DEBUG ("Failed to get connection for account '%s'", account_id);
-               g_free (new_group);
-               g_free (old_group);
-               g_object_unref (factory);
-               return FALSE;
-       }
-
-       data = g_slice_new0 (DndGetContactData);
-       data->new_group = new_group;
-       data->old_group = old_group;
-       data->action = gdk_drag_context_get_selected_action (context);
-
-       /* FIXME: We should probably wait for the cb before calling
-        * gtk_drag_finish */
-       empathy_tp_contact_factory_get_from_id (connection, contact_id,
-                                               contact_list_view_drag_got_contact,
-                                               data, (GDestroyNotify) contact_list_view_dnd_get_contact_free,
-                                               G_OBJECT (view));
-       g_strfreev (strv);
-       g_object_unref (factory);
-
-       return TRUE;
-}
-
-static gboolean
-contact_list_view_file_drag_received (GtkWidget         *view,
-                                     GdkDragContext    *context,
-                                     GtkTreeModel      *model,
-                                     GtkTreePath       *path,
-                                     GtkSelectionData  *selection)
-{
-       GtkTreeIter     iter;
-       const gchar    *sel_data;
-       EmpathyContact *contact;
-
-       sel_data = (const gchar *) gtk_selection_data_get_data (selection);
-
-       gtk_tree_model_get_iter (model, &iter, path);
-       gtk_tree_model_get (model, &iter,
-                           EMPATHY_CONTACT_LIST_STORE_COL_CONTACT, &contact,
-                           -1);
-       if (!contact) {
-               return FALSE;
-       }
-
-       empathy_send_file_from_uri_list (contact, sel_data);
-
-       g_object_unref (contact);
-
-       return TRUE;
-}
-
-static void
-contact_list_view_drag_data_received (GtkWidget         *view,
-                                     GdkDragContext    *context,
-                                     gint               x,
-                                     gint               y,
-                                     GtkSelectionData  *selection,
-                                     guint              info,
-                                     guint              time_)
-{
-       GtkTreeModel               *model;
-       gboolean                    is_row;
-       GtkTreeViewDropPosition     position;
-       GtkTreePath                *path;
-       gboolean                    success = TRUE;
-
-       model = gtk_tree_view_get_model (GTK_TREE_VIEW (view));
-
-       /* Get destination group information. */
-       is_row = gtk_tree_view_get_dest_row_at_pos (GTK_TREE_VIEW (view),
-                                                   x,
-                                                   y,
-                                                   &path,
-                                                   &position);
-       if (!is_row) {
-               success = FALSE;
-       }
-       else if (info == DND_DRAG_TYPE_CONTACT_ID || info == DND_DRAG_TYPE_STRING) {
-               success = contact_list_view_contact_drag_received (view,
-                                                                  context,
-                                                                  model,
-                                                                  path,
-                                                                  selection);
-       }
-       else if (info == DND_DRAG_TYPE_URI_LIST) {
-               success = contact_list_view_file_drag_received (view,
-                                                               context,
-                                                               model,
-                                                               path,
-                                                               selection);
-       }
-
-       gtk_tree_path_free (path);
-       gtk_drag_finish (context, success, FALSE, GDK_CURRENT_TIME);
-}
-
-static gboolean
-contact_list_view_drag_motion_cb (DragMotionData *data)
-{
-       gtk_tree_view_expand_row (GTK_TREE_VIEW (data->view),
-                                 data->path,
-                                 FALSE);
-
-       data->timeout_id = 0;
-
-       return FALSE;
-}
-
-static gboolean
-contact_list_view_drag_motion (GtkWidget      *widget,
-                              GdkDragContext *context,
-                              gint            x,
-                              gint            y,
-                              guint           time_)
-{
-       EmpathyContactListViewPriv *priv;
-       GtkTreeModel               *model;
-       GdkAtom                target;
-       GtkTreeIter            iter;
-       static DragMotionData *dm = NULL;
-       GtkTreePath           *path;
-       gboolean               is_row;
-       gboolean               is_different = FALSE;
-       gboolean               cleanup = TRUE;
-       gboolean               retval = TRUE;
-
-       priv = GET_PRIV (EMPATHY_CONTACT_LIST_VIEW (widget));
-       model = gtk_tree_view_get_model (GTK_TREE_VIEW (widget));
-
-       is_row = gtk_tree_view_get_path_at_pos (GTK_TREE_VIEW (widget),
-                                               x,
-                                               y,
-                                               &path,
-                                               NULL,
-                                               NULL,
-                                               NULL);
-
-       cleanup &= (!dm);
-
-       if (is_row) {
-               cleanup &= (dm && gtk_tree_path_compare (dm->path, path) != 0);
-               is_different = (!dm || (dm && gtk_tree_path_compare (dm->path, path) != 0));
-       } else {
-               cleanup &= FALSE;
-       }
-
-       if (path == NULL) {
-               /* Coordinates don't point to an actual row, so make sure the pointer
-                  and highlighting don't indicate that a drag is possible.
-                */
-               gdk_drag_status (context, GDK_ACTION_DEFAULT, time_);
-               gtk_tree_view_set_drag_dest_row (GTK_TREE_VIEW (widget), NULL, 0);
-               return FALSE;
-       }
-       target = gtk_drag_dest_find_target (widget, context, priv->file_targets);
-       gtk_tree_model_get_iter (model, &iter, path);
-
-       if (target == GDK_NONE) {
-               /* If target == GDK_NONE, then we don't have a target that can be
-                  dropped on a contact.  This means a contact drag.  If we're
-                  pointing to a group, highlight it.  Otherwise, if the contact
-                  we're pointing to is in a group, highlight that.  Otherwise,
-                  set the drag position to before the first row for a drag into
-                  the "non-group" at the top.
-                */
-               GtkTreeIter  group_iter;
-               gboolean     is_group;
-               GtkTreePath *group_path;
-               gtk_tree_model_get (model, &iter,
-                                   EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP, &is_group,
-                                   -1);
-               if (is_group) {
-                       group_iter = iter;
-               }
-               else {
-                       if (gtk_tree_model_iter_parent (model, &group_iter, &iter))
-                               gtk_tree_model_get (model, &group_iter,
-                                                   EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP, &is_group,
-                                                   -1);
-               }
-               if (is_group) {
-                       gdk_drag_status (context, GDK_ACTION_MOVE, time_);
-                       group_path = gtk_tree_model_get_path (model, &group_iter);
-                       gtk_tree_view_set_drag_dest_row (GTK_TREE_VIEW (widget),
-                                                        group_path,
-                                                        GTK_TREE_VIEW_DROP_INTO_OR_BEFORE);
-                       gtk_tree_path_free (group_path);
-               }
-               else {
-                       group_path = gtk_tree_path_new_first ();
-                       gdk_drag_status (context, GDK_ACTION_MOVE, time_);
-                       gtk_tree_view_set_drag_dest_row (GTK_TREE_VIEW (widget),
-                                                        group_path,
-                                                        GTK_TREE_VIEW_DROP_BEFORE);
-               }
-       }
-       else {
-               /* This is a file drag, and it can only be dropped on contacts,
-                  not groups.
-                */
-               EmpathyContact *contact;
-               gtk_tree_model_get (model, &iter,
-                                   EMPATHY_CONTACT_LIST_STORE_COL_CONTACT, &contact,
-                                   -1);
-               if (contact != NULL &&
-                   empathy_contact_is_online (contact) &&
-                   (empathy_contact_get_capabilities (contact) & EMPATHY_CAPABILITIES_FT)) {
-                       gdk_drag_status (context, GDK_ACTION_COPY, time_);
-                       gtk_tree_view_set_drag_dest_row (GTK_TREE_VIEW (widget),
-                                                        path,
-                                                        GTK_TREE_VIEW_DROP_INTO_OR_BEFORE);
-                       g_object_unref (contact);
-               }
-               else {
-                       gdk_drag_status (context, 0, time_);
-                       gtk_tree_view_set_drag_dest_row (GTK_TREE_VIEW (widget), NULL, 0);
-                       retval = FALSE;
-               }
-       }
-
-       if (!is_different && !cleanup) {
-               return retval;
-       }
-
-       if (dm) {
-               gtk_tree_path_free (dm->path);
-               if (dm->timeout_id) {
-                       g_source_remove (dm->timeout_id);
-               }
-
-               g_free (dm);
-
-               dm = NULL;
-       }
-
-       if (!gtk_tree_view_row_expanded (GTK_TREE_VIEW (widget), path)) {
-               dm = g_new0 (DragMotionData, 1);
-
-               dm->view = EMPATHY_CONTACT_LIST_VIEW (widget);
-               dm->path = gtk_tree_path_copy (path);
-
-               dm->timeout_id = g_timeout_add_seconds (1,
-                       (GSourceFunc) contact_list_view_drag_motion_cb,
-                       dm);
-       }
-
-       return retval;
-}
-
-static void
-contact_list_view_drag_begin (GtkWidget      *widget,
-                             GdkDragContext *context)
-{
-       EmpathyContactListViewPriv *priv;
-       GtkTreeSelection          *selection;
-       GtkTreeModel              *model;
-       GtkTreePath               *path;
-       GtkTreeIter                iter;
-
-       priv = GET_PRIV (widget);
-
-       selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (widget));
-       if (!gtk_tree_selection_get_selected (selection, &model, &iter)) {
-               return;
-       }
-
-       GTK_WIDGET_CLASS (empathy_contact_list_view_parent_class)->drag_begin (widget,
-                                                                             context);
-
-       path = gtk_tree_model_get_path (model, &iter);
-       priv->drag_row = gtk_tree_row_reference_new (model, path);
-       gtk_tree_path_free (path);
-}
-
-static void
-contact_list_view_drag_data_get (GtkWidget        *widget,
-                                GdkDragContext   *context,
-                                GtkSelectionData *selection,
-                                guint             info,
-                                guint             time_)
-{
-       EmpathyContactListViewPriv *priv;
-       GtkTreePath                *src_path;
-       GtkTreeIter                 iter;
-       GtkTreeModel               *model;
-       EmpathyContact             *contact;
-       TpAccount                  *account;
-       const gchar                *contact_id;
-       const gchar                *account_id;
-       gchar                      *str;
-
-       priv = GET_PRIV (widget);
-
-       model = gtk_tree_view_get_model (GTK_TREE_VIEW (widget));
-       if (!priv->drag_row) {
-               return;
-       }
-
-       src_path = gtk_tree_row_reference_get_path (priv->drag_row);
-       if (!src_path) {
-               return;
-       }
-
-       if (!gtk_tree_model_get_iter (model, &iter, src_path)) {
-               gtk_tree_path_free (src_path);
-               return;
-       }
-
-       gtk_tree_path_free (src_path);
-
-       contact = empathy_contact_list_view_dup_selected (EMPATHY_CONTACT_LIST_VIEW (widget));
-       if (!contact) {
-               return;
-       }
-
-       account = empathy_contact_get_account (contact);
-       account_id = tp_proxy_get_object_path (account);
-       contact_id = empathy_contact_get_id (contact);
-       g_object_unref (contact);
-       str = g_strconcat (account_id, ":", contact_id, NULL);
-
-       if (info == DND_DRAG_TYPE_CONTACT_ID) {
-               gtk_selection_data_set (selection,
-                                       gdk_atom_intern ("text/contact-id", FALSE), 8,
-                                       (guchar *) str, strlen (str) + 1);
-       }
-
-       g_free (str);
-}
-
-static void
-contact_list_view_drag_end (GtkWidget      *widget,
-                           GdkDragContext *context)
-{
-       EmpathyContactListViewPriv *priv;
-
-       priv = GET_PRIV (widget);
-
-       GTK_WIDGET_CLASS (empathy_contact_list_view_parent_class)->drag_end (widget,
-                                                                           context);
-
-       if (priv->drag_row) {
-               gtk_tree_row_reference_free (priv->drag_row);
-               priv->drag_row = NULL;
-       }
-}
-
-static gboolean
-contact_list_view_drag_drop (GtkWidget      *widget,
-                            GdkDragContext *drag_context,
-                            gint            x,
-                            gint            y,
-                            guint           time_)
-{
-       return FALSE;
-}
-
-typedef struct {
-       EmpathyContactListView *view;
-       guint                   button;
-       guint32                 time;
-} MenuPopupData;
-
-static void
-menu_deactivate_cb (GtkMenuShell *menushell,
-                   gpointer user_data)
-{
-       /* FIXME: we shouldn't have to disconnec the signal (bgo #641327) */
-       g_signal_handlers_disconnect_by_func (menushell,
-               menu_deactivate_cb, user_data);
-
-       gtk_menu_detach (GTK_MENU (menushell));
-}
-
-static gboolean
-contact_list_view_popup_menu_idle_cb (gpointer user_data)
-{
-       MenuPopupData *data = user_data;
-       GtkWidget     *menu;
-
-       menu = empathy_contact_list_view_get_contact_menu (data->view);
-       if (!menu) {
-               menu = empathy_contact_list_view_get_group_menu (data->view);
-       }
-
-       if (menu) {
-               gtk_menu_attach_to_widget (GTK_MENU (menu),
-                                          GTK_WIDGET (data->view), NULL);
-               gtk_widget_show (menu);
-               gtk_menu_popup (GTK_MENU (menu),
-                               NULL, NULL, NULL, NULL,
-                               data->button, data->time);
-
-               /* menu is initially unowned but gtk_menu_attach_to_widget () taked its
-                * floating ref. We can either wait that the treeview releases its ref
-                * when it will be destroyed (when leaving Empathy) or explicitely
-                * detach the menu when it's not displayed any more.
-                * We go for the latter as we don't want to keep useless menus in memory
-                * during the whole lifetime of Empathy. */
-               g_signal_connect (menu, "deactivate", G_CALLBACK (menu_deactivate_cb),
-                       NULL);
-       }
-
-       g_slice_free (MenuPopupData, data);
-
-       return FALSE;
-}
-
-static gboolean
-contact_list_view_button_press_event_cb (EmpathyContactListView *view,
-                                        GdkEventButton         *event,
-                                        gpointer                user_data)
-{
-       if (event->button == 3) {
-               MenuPopupData *data;
-
-               data = g_slice_new (MenuPopupData);
-               data->view = view;
-               data->button = event->button;
-               data->time = event->time;
-               g_idle_add (contact_list_view_popup_menu_idle_cb, data);
-       }
-
-       return FALSE;
-}
-
-static gboolean
-contact_list_view_key_press_event_cb (EmpathyContactListView *view,
-                                     GdkEventKey            *event,
-                                     gpointer                user_data)
-{
-       if (event->keyval == GDK_KEY_Menu) {
-               MenuPopupData *data;
-
-               data = g_slice_new (MenuPopupData);
-               data->view = view;
-               data->button = 0;
-               data->time = event->time;
-               g_idle_add (contact_list_view_popup_menu_idle_cb, data);
-       }
-
-       return FALSE;
-}
-
-static void
-contact_list_view_row_activated (GtkTreeView       *view,
-                                GtkTreePath       *path,
-                                GtkTreeViewColumn *column)
-{
-       EmpathyContactListViewPriv *priv = GET_PRIV (view);
-       EmpathyContact             *contact;
-       GtkTreeModel               *model;
-       GtkTreeIter                 iter;
-
-       if (!(priv->contact_features & EMPATHY_CONTACT_FEATURE_CHAT)) {
-               return;
-       }
-
-       model = gtk_tree_view_get_model (GTK_TREE_VIEW (view));
-       gtk_tree_model_get_iter (model, &iter, path);
-       gtk_tree_model_get (model, &iter,
-                           EMPATHY_CONTACT_LIST_STORE_COL_CONTACT, &contact,
-                           -1);
-
-       if (contact) {
-               DEBUG ("Starting a chat");
-               empathy_chat_with_contact (contact,
-                       empathy_get_current_action_time ());
-               g_object_unref (contact);
-       }
-}
-
-static void
-contact_list_view_call_activated_cb (
-    EmpathyCellRendererActivatable *cell,
-    const gchar                    *path_string,
-    EmpathyContactListView         *view)
-{
-       GtkWidget *menu;
-       GtkTreeModel *model;
-       GtkTreeIter iter;
-       EmpathyContact *contact;
-       GdkEventButton *event;
-       GtkMenuShell *shell;
-       GtkWidget *item;
-
-       model = gtk_tree_view_get_model (GTK_TREE_VIEW (view));
-       if (!gtk_tree_model_get_iter_from_string (model, &iter, path_string))
-               return;
-
-       gtk_tree_model_get (model, &iter,
-                           EMPATHY_CONTACT_LIST_STORE_COL_CONTACT, &contact,
-                           -1);
-       if (contact == NULL)
-               return;
-
-       event = (GdkEventButton *) gtk_get_current_event ();
-
-       menu = empathy_context_menu_new (GTK_WIDGET (view));
-       shell = GTK_MENU_SHELL (menu);
-
-       /* audio */
-       item = empathy_contact_audio_call_menu_item_new (contact);
-       gtk_menu_shell_append (shell, item);
-       gtk_widget_show (item);
-
-       /* video */
-       item = empathy_contact_video_call_menu_item_new (contact);
-       gtk_menu_shell_append (shell, item);
-       gtk_widget_show (item);
-
-       gtk_widget_show (menu);
-       gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL,
-                       event->button, event->time);
-
-       g_object_unref (contact);
-}
-
-static void
-contact_list_view_cell_set_background (EmpathyContactListView *view,
-                                      GtkCellRenderer        *cell,
-                                      gboolean                is_group,
-                                      gboolean                is_active)
-{
-       if (!is_group && is_active) {
-               GdkRGBA color;
-               GtkStyleContext *style;
-
-               style = gtk_widget_get_style_context (GTK_WIDGET (view));
-
-               gtk_style_context_get_background_color (style, GTK_STATE_FLAG_SELECTED,
-        &color);
-
-               /* Here we take the current theme colour and add it to
-                * the colour for white and average the two. This
-                * gives a colour which is inline with the theme but
-                * slightly whiter.
-                */
-               empathy_make_color_whiter (&color);
-
-               g_object_set (cell,
-                             "cell-background-rgba", &color,
-                             NULL);
-       } else {
-               g_object_set (cell,
-                             "cell-background-rgba", NULL,
-                             NULL);
-       }
-}
-
-static void
-contact_list_view_pixbuf_cell_data_func (GtkTreeViewColumn      *tree_column,
-                                        GtkCellRenderer        *cell,
-                                        GtkTreeModel           *model,
-                                        GtkTreeIter            *iter,
-                                        EmpathyContactListView *view)
-{
-       GdkPixbuf *pixbuf;
-       gboolean   is_group;
-       gboolean   is_active;
-
-       gtk_tree_model_get (model, iter,
-                           EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP, &is_group,
-                           EMPATHY_CONTACT_LIST_STORE_COL_IS_ACTIVE, &is_active,
-                           EMPATHY_CONTACT_LIST_STORE_COL_ICON_STATUS, &pixbuf,
-                           -1);
-
-       g_object_set (cell,
-                     "visible", !is_group,
-                     "pixbuf", pixbuf,
-                     NULL);
-
-       if (pixbuf != NULL) {
-               g_object_unref (pixbuf);
-       }
-
-       contact_list_view_cell_set_background (view, cell, is_group, is_active);
-}
-
-static void
-contact_list_view_group_icon_cell_data_func (GtkTreeViewColumn     *tree_column,
-                                            GtkCellRenderer       *cell,
-                                            GtkTreeModel          *model,
-                                            GtkTreeIter           *iter,
-                                            EmpathyContactListView *view)
-{
-       GdkPixbuf *pixbuf = NULL;
-       gboolean is_group;
-       gchar *name;
-
-       gtk_tree_model_get (model, iter,
-                           EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP, &is_group,
-                           EMPATHY_CONTACT_LIST_STORE_COL_NAME, &name,
-                           -1);
-
-       if (!is_group)
-               goto out;
-
-out:
-       g_object_set (cell,
-                     "visible", pixbuf != NULL,
-                     "pixbuf", pixbuf,
-                     NULL);
-
-       if (pixbuf != NULL)
-               g_object_unref (pixbuf);
-
-       g_free (name);
-}
-
-static void
-contact_list_view_audio_call_cell_data_func (
-                                      GtkTreeViewColumn      *tree_column,
-                                      GtkCellRenderer        *cell,
-                                      GtkTreeModel           *model,
-                                      GtkTreeIter            *iter,
-                                      EmpathyContactListView *view)
-{
-       gboolean is_group;
-       gboolean is_active;
-       gboolean can_audio, can_video;
-
-       gtk_tree_model_get (model, iter,
-                           EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP, &is_group,
-                           EMPATHY_CONTACT_LIST_STORE_COL_IS_ACTIVE, &is_active,
-                           EMPATHY_CONTACT_LIST_STORE_COL_CAN_AUDIO_CALL, &can_audio,
-                           EMPATHY_CONTACT_LIST_STORE_COL_CAN_VIDEO_CALL, &can_video,
-                           -1);
-
-       g_object_set (cell,
-                     "visible", !is_group && (can_audio || can_video),
-                     "icon-name", can_video? EMPATHY_IMAGE_VIDEO_CALL : EMPATHY_IMAGE_VOIP,
-                     NULL);
-
-       contact_list_view_cell_set_background (view, cell, is_group, is_active);
-}
-
-static void
-contact_list_view_avatar_cell_data_func (GtkTreeViewColumn      *tree_column,
-                                        GtkCellRenderer        *cell,
-                                        GtkTreeModel           *model,
-                                        GtkTreeIter            *iter,
-                                        EmpathyContactListView *view)
-{
-       GdkPixbuf *pixbuf;
-       gboolean   show_avatar;
-       gboolean   is_group;
-       gboolean   is_active;
-
-       gtk_tree_model_get (model, iter,
-                           EMPATHY_CONTACT_LIST_STORE_COL_PIXBUF_AVATAR, &pixbuf,
-                           EMPATHY_CONTACT_LIST_STORE_COL_PIXBUF_AVATAR_VISIBLE, &show_avatar,
-                           EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP, &is_group,
-                           EMPATHY_CONTACT_LIST_STORE_COL_IS_ACTIVE, &is_active,
-                           -1);
-
-       g_object_set (cell,
-                     "visible", !is_group && show_avatar,
-                     "pixbuf", pixbuf,
-                     NULL);
-
-       if (pixbuf) {
-               g_object_unref (pixbuf);
-       }
-
-       contact_list_view_cell_set_background (view, cell, is_group, is_active);
-}
-
-static void
-contact_list_view_text_cell_data_func (GtkTreeViewColumn      *tree_column,
-                                      GtkCellRenderer        *cell,
-                                      GtkTreeModel           *model,
-                                      GtkTreeIter            *iter,
-                                      EmpathyContactListView *view)
-{
-       gboolean is_group;
-       gboolean is_active;
-
-       gtk_tree_model_get (model, iter,
-                           EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP, &is_group,
-                           EMPATHY_CONTACT_LIST_STORE_COL_IS_ACTIVE, &is_active,
-                           -1);
-
-       contact_list_view_cell_set_background (view, cell, is_group, is_active);
-}
-
-static void
-contact_list_view_expander_cell_data_func (GtkTreeViewColumn      *column,
-                                          GtkCellRenderer        *cell,
-                                          GtkTreeModel           *model,
-                                          GtkTreeIter            *iter,
-                                          EmpathyContactListView *view)
-{
-       gboolean is_group;
-       gboolean is_active;
-
-       gtk_tree_model_get (model, iter,
-                           EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP, &is_group,
-                           EMPATHY_CONTACT_LIST_STORE_COL_IS_ACTIVE, &is_active,
-                           -1);
-
-       if (gtk_tree_model_iter_has_child (model, iter)) {
-               GtkTreePath *path;
-               gboolean     row_expanded;
-
-               path = gtk_tree_model_get_path (model, iter);
-               row_expanded = gtk_tree_view_row_expanded (GTK_TREE_VIEW (gtk_tree_view_column_get_tree_view (column)), path);
-               gtk_tree_path_free (path);
-
-               g_object_set (cell,
-                             "visible", TRUE,
-                             "expander-style", row_expanded ? GTK_EXPANDER_EXPANDED : GTK_EXPANDER_COLLAPSED,
-                             NULL);
-       } else {
-               g_object_set (cell, "visible", FALSE, NULL);
-       }
-
-       contact_list_view_cell_set_background (view, cell, is_group, is_active);
-}
-
-static void
-contact_list_view_row_expand_or_collapse_cb (EmpathyContactListView *view,
-                                            GtkTreeIter            *iter,
-                                            GtkTreePath            *path,
-                                            gpointer                user_data)
-{
-       EmpathyContactListViewPriv *priv = GET_PRIV (view);
-       GtkTreeModel               *model;
-       gchar                      *name;
-       gboolean                    expanded;
-
-       if (!(priv->list_features & EMPATHY_CONTACT_LIST_FEATURE_GROUPS_SAVE)) {
-               return;
-       }
-
-       model = gtk_tree_view_get_model (GTK_TREE_VIEW (view));
-
-       gtk_tree_model_get (model, iter,
-                           EMPATHY_CONTACT_LIST_STORE_COL_NAME, &name,
-                           -1);
-
-       expanded = GPOINTER_TO_INT (user_data);
-       empathy_contact_group_set_expanded (name, expanded);
-
-       g_free (name);
-}
-
-static gboolean
-contact_list_view_start_search_cb (EmpathyContactListView *view,
-                                  gpointer                data)
-{
-       EmpathyContactListViewPriv *priv = GET_PRIV (view);
-
-       if (priv->search_widget == NULL)
-               return FALSE;
-
-       if (gtk_widget_get_visible (GTK_WIDGET (priv->search_widget)))
-               gtk_widget_grab_focus (GTK_WIDGET (priv->search_widget));
-       else
-               gtk_widget_show (GTK_WIDGET (priv->search_widget));
-
-       return TRUE;
-}
-
-static void
-contact_list_view_search_text_notify_cb (EmpathyLiveSearch      *search,
-                                        GParamSpec             *pspec,
-                                        EmpathyContactListView *view)
-{
-       EmpathyContactListViewPriv *priv = GET_PRIV (view);
-       GtkTreePath *path;
-       GtkTreeViewColumn *focus_column;
-       GtkTreeModel *model;
-       GtkTreeIter iter;
-       gboolean set_cursor = FALSE;
-
-       gtk_tree_model_filter_refilter (priv->filter);
-
-       /* Set cursor on the first contact. If it is already set on a group,
-        * set it on its first child contact. Note that first child of a group
-        * is its separator, that's why we actually set to the 2nd
-        */
-
-       model = gtk_tree_view_get_model (GTK_TREE_VIEW (view));
-       gtk_tree_view_get_cursor (GTK_TREE_VIEW (view), &path, &focus_column);
-
-       if (path == NULL) {
-               path = gtk_tree_path_new_from_string ("0:1");
-               set_cursor = TRUE;
-       } else if (gtk_tree_path_get_depth (path) < 2) {
-               gboolean is_group;
-
-               gtk_tree_model_get_iter (model, &iter, path);
-               gtk_tree_model_get (model, &iter,
-                       EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP, &is_group,
-                       -1);
-
-               if (is_group) {
-                       gtk_tree_path_down (path);
-                       gtk_tree_path_next (path);
-                       set_cursor = TRUE;
-               }
-       }
-
-       if (set_cursor) {
-               /* FIXME: Workaround for GTK bug #621651, we have to make sure
-                * the path is valid. */
-               if (gtk_tree_model_get_iter (model, &iter, path)) {
-                       gtk_tree_view_set_cursor (GTK_TREE_VIEW (view), path,
-                               focus_column, FALSE);
-               }
-       }
-
-       gtk_tree_path_free (path);
-}
-
-static void
-contact_list_view_search_activate_cb (GtkWidget *search,
-                                     EmpathyContactListView *view)
-{
-       GtkTreePath *path;
-       GtkTreeViewColumn *focus_column;
-
-       gtk_tree_view_get_cursor (GTK_TREE_VIEW (view), &path, &focus_column);
-       if (path != NULL) {
-               gtk_tree_view_row_activated (GTK_TREE_VIEW (view), path,
-                       focus_column);
-               gtk_tree_path_free (path);
-
-               gtk_widget_hide (search);
-       }
-}
-
-static gboolean
-contact_list_view_search_key_navigation_cb (GtkWidget *search,
-                                           GdkEvent *event,
-                                           EmpathyContactListView *view)
-{
-       GdkEvent *new_event;
-       gboolean ret = FALSE;
-
-       new_event = gdk_event_copy (event);
-       gtk_widget_grab_focus (GTK_WIDGET (view));
-       ret = gtk_widget_event (GTK_WIDGET (view), new_event);
-       gtk_widget_grab_focus (search);
-
-       gdk_event_free (new_event);
-
-       return ret;
-}
-
-static void
-contact_list_view_search_hide_cb (EmpathyLiveSearch      *search,
-                                 EmpathyContactListView *view)
-{
-       EmpathyContactListViewPriv *priv = GET_PRIV (view);
-       GtkTreeModel               *model;
-       GtkTreeIter                 iter;
-       gboolean                    valid = FALSE;
-
-       /* block expand or collapse handlers, they would write the
-        * expand or collapsed setting to file otherwise */
-       g_signal_handlers_block_by_func (view,
-               contact_list_view_row_expand_or_collapse_cb,
-               GINT_TO_POINTER (TRUE));
-       g_signal_handlers_block_by_func (view,
-               contact_list_view_row_expand_or_collapse_cb,
-               GINT_TO_POINTER (FALSE));
-
-       /* restore which groups are expanded and which are not */
-       model = gtk_tree_view_get_model (GTK_TREE_VIEW (view));
-       for (valid = gtk_tree_model_get_iter_first (model, &iter);
-            valid; valid = gtk_tree_model_iter_next (model, &iter)) {
-               gboolean      is_group;
-               gchar        *name = NULL;
-               GtkTreePath  *path;
-
-               gtk_tree_model_get (model, &iter,
-                       EMPATHY_CONTACT_LIST_STORE_COL_NAME, &name,
-                       EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP, &is_group,
-                       -1);
-
-               if (!is_group) {
-                       g_free (name);
-                       continue;
-               }
-
-               path = gtk_tree_model_get_path (model, &iter);
-               if ((priv->list_features & EMPATHY_CONTACT_LIST_FEATURE_GROUPS_SAVE) == 0 ||
-                   empathy_contact_group_get_expanded (name)) {
-                       gtk_tree_view_expand_row (GTK_TREE_VIEW (view), path,
-                               TRUE);
-               } else {
-                       gtk_tree_view_collapse_row (GTK_TREE_VIEW (view), path);
-               }
-
-               gtk_tree_path_free (path);
-               g_free (name);
-       }
-
-       /* unblock expand or collapse handlers */
-       g_signal_handlers_unblock_by_func (view,
-               contact_list_view_row_expand_or_collapse_cb,
-               GINT_TO_POINTER (TRUE));
-       g_signal_handlers_unblock_by_func (view,
-               contact_list_view_row_expand_or_collapse_cb,
-               GINT_TO_POINTER (FALSE));
-}
-
-static void
-contact_list_view_search_show_cb (EmpathyLiveSearch      *search,
-                                 EmpathyContactListView *view)
-{
-       /* block expand or collapse handlers during expand all, they would
-        * write the expand or collapsed setting to file otherwise */
-       g_signal_handlers_block_by_func (view,
-               contact_list_view_row_expand_or_collapse_cb,
-               GINT_TO_POINTER (TRUE));
-
-       gtk_tree_view_expand_all (GTK_TREE_VIEW (view));
-
-       g_signal_handlers_unblock_by_func (view,
-               contact_list_view_row_expand_or_collapse_cb,
-               GINT_TO_POINTER (TRUE));
-}
-
-typedef struct {
-       EmpathyContactListView *view;
-       GtkTreeRowReference *row_ref;
-       gboolean expand;
-} ExpandData;
-
-static gboolean
-contact_list_view_expand_idle_cb (gpointer user_data)
-{
-       ExpandData *data = user_data;
-       GtkTreePath *path;
-
-       path = gtk_tree_row_reference_get_path (data->row_ref);
-       if (path == NULL)
-               goto done;
-
-       g_signal_handlers_block_by_func (data->view,
-               contact_list_view_row_expand_or_collapse_cb,
-               GINT_TO_POINTER (data->expand));
-
-       if (data->expand) {
-               gtk_tree_view_expand_row (GTK_TREE_VIEW (data->view), path,
-                   TRUE);
-       } else {
-               gtk_tree_view_collapse_row (GTK_TREE_VIEW (data->view), path);
-       }
-       gtk_tree_path_free (path);
-
-       g_signal_handlers_unblock_by_func (data->view,
-               contact_list_view_row_expand_or_collapse_cb,
-               GINT_TO_POINTER (data->expand));
-
-done:
-       g_object_unref (data->view);
-       gtk_tree_row_reference_free (data->row_ref);
-       g_slice_free (ExpandData, data);
-
-       return FALSE;
-}
-
-static void
-contact_list_view_row_has_child_toggled_cb (GtkTreeModel           *model,
-                                           GtkTreePath            *path,
-                                           GtkTreeIter            *iter,
-                                           EmpathyContactListView *view)
-{
-       EmpathyContactListViewPriv *priv = GET_PRIV (view);
-       gboolean  is_group = FALSE;
-       gchar    *name = NULL;
-       ExpandData *data;
-
-       gtk_tree_model_get (model, iter,
-                           EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP, &is_group,
-                           EMPATHY_CONTACT_LIST_STORE_COL_NAME, &name,
-                           -1);
-
-       if (!is_group || EMP_STR_EMPTY (name)) {
-               g_free (name);
-               return;
-       }
-
-       data = g_slice_new0 (ExpandData);
-       data->view = g_object_ref (view);
-       data->row_ref = gtk_tree_row_reference_new (model, path);
-       data->expand =
-               (priv->list_features & EMPATHY_CONTACT_LIST_FEATURE_GROUPS_SAVE) == 0 ||
-               (priv->search_widget != NULL && gtk_widget_get_visible (priv->search_widget)) ||
-               empathy_contact_group_get_expanded (name);
-
-       /* FIXME: It doesn't work to call gtk_tree_view_expand_row () from within
-        * gtk_tree_model_filter_refilter () */
-       g_idle_add (contact_list_view_expand_idle_cb, data);
-
-       g_free (name);
-}
-
-static void
-contact_list_view_verify_group_visibility (EmpathyContactListView *view,
-                                          GtkTreePath            *path)
-{
-       EmpathyContactListViewPriv *priv = GET_PRIV (view);
-       GtkTreeModel *model;
-       GtkTreePath *parent_path;
-       GtkTreeIter parent_iter;
-
-       if (gtk_tree_path_get_depth (path) < 2)
-               return;
-
-       /* A group row is visible if and only if at least one if its child is
-        * visible. So when a row is inserted/deleted/changed in the base model,
-        * that could modify the visibility of its parent in the filter model.
-        */
-
-       model = GTK_TREE_MODEL (priv->store);
-       parent_path = gtk_tree_path_copy (path);
-       gtk_tree_path_up (parent_path);
-       if (gtk_tree_model_get_iter (model, &parent_iter, parent_path)) {
-               /* This tells the filter to verify the visibility of that row,
-                * and show/hide it if necessary */
-               gtk_tree_model_row_changed (GTK_TREE_MODEL (priv->store),
-                       parent_path, &parent_iter);
-       }
-       gtk_tree_path_free (parent_path);
-}
-
-static void
-contact_list_view_store_row_changed_cb (GtkTreeModel           *model,
-                                       GtkTreePath            *path,
-                                       GtkTreeIter            *iter,
-                                       EmpathyContactListView *view)
-{
-       contact_list_view_verify_group_visibility (view, path);
-}
-
-static void
-contact_list_view_store_row_deleted_cb (GtkTreeModel           *model,
-                                       GtkTreePath            *path,
-                                       EmpathyContactListView *view)
-{
-       contact_list_view_verify_group_visibility (view, path);
-}
-
-static void
-contact_list_view_constructed (GObject *object)
-{
-       EmpathyContactListView     *view = EMPATHY_CONTACT_LIST_VIEW (object);
-       EmpathyContactListViewPriv *priv = GET_PRIV (view);
-       GtkCellRenderer            *cell;
-       GtkTreeViewColumn          *col;
-
-       priv->filter = GTK_TREE_MODEL_FILTER (gtk_tree_model_filter_new (
-                       GTK_TREE_MODEL (priv->store), NULL));
-       gtk_tree_model_filter_set_visible_func (priv->filter,
-                       contact_list_view_filter_visible_func,
-                       view, NULL);
-
-       g_signal_connect (priv->filter, "row-has-child-toggled",
-                         G_CALLBACK (contact_list_view_row_has_child_toggled_cb),
-                         view);
-
-       gtk_tree_view_set_model (GTK_TREE_VIEW (view),
-                                GTK_TREE_MODEL (priv->filter));
-
-       tp_g_signal_connect_object (priv->store, "row-changed",
-               G_CALLBACK (contact_list_view_store_row_changed_cb),
-               view, 0);
-       tp_g_signal_connect_object (priv->store, "row-inserted",
-               G_CALLBACK (contact_list_view_store_row_changed_cb),
-               view, 0);
-       tp_g_signal_connect_object (priv->store, "row-deleted",
-               G_CALLBACK (contact_list_view_store_row_deleted_cb),
-               view, 0);
-
-       /* Setup view */
-       /* Setting reorderable is a hack that gets us row previews as drag icons
-          for free.  We override all the drag handlers.  It's tricky to get the
-          position of the drag icon right in drag_begin.  GtkTreeView has special
-          voodoo for it, so we let it do the voodoo that he do.
-        */
-       g_object_set (view,
-                     "headers-visible", FALSE,
-                     "reorderable", TRUE,
-                     "show-expanders", FALSE,
-                     NULL);
-
-       col = gtk_tree_view_column_new ();
-
-       /* State */
-       cell = gtk_cell_renderer_pixbuf_new ();
-       gtk_tree_view_column_pack_start (col, cell, FALSE);
-       gtk_tree_view_column_set_cell_data_func (
-               col, cell,
-               (GtkTreeCellDataFunc) contact_list_view_pixbuf_cell_data_func,
-               view, NULL);
-
-       g_object_set (cell,
-                     "xpad", 5,
-                     "ypad", 1,
-                     "visible", FALSE,
-                     NULL);
-
-       /* Group icon */
-       cell = gtk_cell_renderer_pixbuf_new ();
-       gtk_tree_view_column_pack_start (col, cell, FALSE);
-       gtk_tree_view_column_set_cell_data_func (
-               col, cell,
-               (GtkTreeCellDataFunc) contact_list_view_group_icon_cell_data_func,
-               view, NULL);
-
-       g_object_set (cell,
-                     "xpad", 0,
-                     "ypad", 0,
-                     "visible", FALSE,
-                     "width", 16,
-                     "height", 16,
-                     NULL);
-
-       /* Name */
-       cell = empathy_cell_renderer_text_new ();
-       gtk_tree_view_column_pack_start (col, cell, TRUE);
-       gtk_tree_view_column_set_cell_data_func (
-               col, cell,
-               (GtkTreeCellDataFunc) contact_list_view_text_cell_data_func,
-               view, NULL);
-
-       gtk_tree_view_column_add_attribute (col, cell,
-                                           "name", EMPATHY_CONTACT_LIST_STORE_COL_NAME);
-       gtk_tree_view_column_add_attribute (col, cell,
-                                           "text", EMPATHY_CONTACT_LIST_STORE_COL_NAME);
-       gtk_tree_view_column_add_attribute (col, cell,
-                                           "presence-type", EMPATHY_CONTACT_LIST_STORE_COL_PRESENCE_TYPE);
-       gtk_tree_view_column_add_attribute (col, cell,
-                                           "status", EMPATHY_CONTACT_LIST_STORE_COL_STATUS);
-       gtk_tree_view_column_add_attribute (col, cell,
-                                           "is_group", EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP);
-       gtk_tree_view_column_add_attribute (col, cell,
-                                           "compact", EMPATHY_CONTACT_LIST_STORE_COL_COMPACT);
-
-       /* Audio Call Icon */
-       cell = empathy_cell_renderer_activatable_new ();
-       gtk_tree_view_column_pack_start (col, cell, FALSE);
-       gtk_tree_view_column_set_cell_data_func (
-               col, cell,
-               (GtkTreeCellDataFunc) contact_list_view_audio_call_cell_data_func,
-               view, NULL);
-
-       g_object_set (cell,
-                     "visible", FALSE,
-                     NULL);
-
-       g_signal_connect (cell, "path-activated",
-                         G_CALLBACK (contact_list_view_call_activated_cb),
-                         view);
-
-       /* Avatar */
-       cell = gtk_cell_renderer_pixbuf_new ();
-       gtk_tree_view_column_pack_start (col, cell, FALSE);
-       gtk_tree_view_column_set_cell_data_func (
-               col, cell,
-               (GtkTreeCellDataFunc) contact_list_view_avatar_cell_data_func,
-               view, NULL);
-
-       g_object_set (cell,
-                     "xpad", 0,
-                     "ypad", 0,
-                     "visible", FALSE,
-                     "width", 32,
-                     "height", 32,
-                     NULL);
-
-       /* Expander */
-       cell = empathy_cell_renderer_expander_new ();
-       gtk_tree_view_column_pack_end (col, cell, FALSE);
-       gtk_tree_view_column_set_cell_data_func (
-               col, cell,
-               (GtkTreeCellDataFunc) contact_list_view_expander_cell_data_func,
-               view, NULL);
-
-       /* Actually add the column now we have added all cell renderers */
-       gtk_tree_view_append_column (GTK_TREE_VIEW (view), col);
-}
-
-static void
-contact_list_view_set_list_features (EmpathyContactListView         *view,
-                                    EmpathyContactListFeatureFlags  features)
-{
-       EmpathyContactListViewPriv *priv = GET_PRIV (view);
-       gboolean                    has_tooltip;
-
-       g_return_if_fail (EMPATHY_IS_CONTACT_LIST_VIEW (view));
-
-       priv->list_features = features;
-
-       /* Update DnD source/dest */
-       if (features & EMPATHY_CONTACT_LIST_FEATURE_CONTACT_DRAG) {
-               gtk_drag_source_set (GTK_WIDGET (view),
-                                    GDK_BUTTON1_MASK,
-                                    drag_types_source,
-                                    G_N_ELEMENTS (drag_types_source),
-                                    GDK_ACTION_MOVE | GDK_ACTION_COPY);
-       } else {
-               gtk_drag_source_unset (GTK_WIDGET (view));
-
-       }
-
-       if (features & EMPATHY_CONTACT_LIST_FEATURE_CONTACT_DROP) {
-               gtk_drag_dest_set (GTK_WIDGET (view),
-                                  GTK_DEST_DEFAULT_ALL,
-                                  drag_types_dest,
-                                  G_N_ELEMENTS (drag_types_dest),
-                                  GDK_ACTION_MOVE | GDK_ACTION_COPY);
-       } else {
-               /* FIXME: URI could still be droped depending on FT feature */
-               gtk_drag_dest_unset (GTK_WIDGET (view));
-       }
-
-       /* Update has-tooltip */
-       has_tooltip = (features & EMPATHY_CONTACT_LIST_FEATURE_CONTACT_TOOLTIP) != 0;
-       gtk_widget_set_has_tooltip (GTK_WIDGET (view), has_tooltip);
-}
-
-static void
-contact_list_view_dispose (GObject *object)
-{
-       EmpathyContactListView *view = EMPATHY_CONTACT_LIST_VIEW (object);
-       EmpathyContactListViewPriv *priv = GET_PRIV (view);
-
-       if (priv->store) {
-               g_object_unref (priv->store);
-               priv->store = NULL;
-       }
-       if (priv->filter) {
-               g_object_unref (priv->filter);
-               priv->filter = NULL;
-       }
-       if (priv->tooltip_widget) {
-               gtk_widget_destroy (priv->tooltip_widget);
-               priv->tooltip_widget = NULL;
-       }
-       if (priv->file_targets) {
-               gtk_target_list_unref (priv->file_targets);
-               priv->file_targets = NULL;
-       }
-
-       empathy_contact_list_view_set_live_search (view, NULL);
-
-       G_OBJECT_CLASS (empathy_contact_list_view_parent_class)->dispose (object);
-}
-
-static void
-contact_list_view_get_property (GObject    *object,
-                               guint       param_id,
-                               GValue     *value,
-                               GParamSpec *pspec)
-{
-       EmpathyContactListViewPriv *priv;
-
-       priv = GET_PRIV (object);
-
-       switch (param_id) {
-       case PROP_STORE:
-               g_value_set_object (value, priv->store);
-               break;
-       case PROP_LIST_FEATURES:
-               g_value_set_flags (value, priv->list_features);
-               break;
-       case PROP_CONTACT_FEATURES:
-               g_value_set_flags (value, priv->contact_features);
-               break;
-       default:
-               G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
-               break;
-       };
-}
-
-static void
-contact_list_view_set_property (GObject      *object,
-                               guint         param_id,
-                               const GValue *value,
-                               GParamSpec   *pspec)
-{
-       EmpathyContactListView     *view = EMPATHY_CONTACT_LIST_VIEW (object);
-       EmpathyContactListViewPriv *priv = GET_PRIV (object);
-
-       switch (param_id) {
-       case PROP_STORE:
-               priv->store = g_value_dup_object (value);
-               break;
-       case PROP_LIST_FEATURES:
-               contact_list_view_set_list_features (view, g_value_get_flags (value));
-               break;
-       case PROP_CONTACT_FEATURES:
-               priv->contact_features = g_value_get_flags (value);
-               break;
-       default:
-               G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
-               break;
-       };
-}
-
-static void
-empathy_contact_list_view_class_init (EmpathyContactListViewClass *klass)
-{
-       GObjectClass     *object_class = G_OBJECT_CLASS (klass);
-       GtkWidgetClass   *widget_class = GTK_WIDGET_CLASS (klass);
-       GtkTreeViewClass *tree_view_class = GTK_TREE_VIEW_CLASS (klass);
-
-       object_class->constructed        = contact_list_view_constructed;
-       object_class->dispose            = contact_list_view_dispose;
-       object_class->get_property       = contact_list_view_get_property;
-       object_class->set_property       = contact_list_view_set_property;
-
-       widget_class->drag_data_received = contact_list_view_drag_data_received;
-       widget_class->drag_drop          = contact_list_view_drag_drop;
-       widget_class->drag_begin         = contact_list_view_drag_begin;
-       widget_class->drag_data_get      = contact_list_view_drag_data_get;
-       widget_class->drag_end           = contact_list_view_drag_end;
-       widget_class->drag_motion        = contact_list_view_drag_motion;
-
-       /* We use the class method to let user of this widget to connect to
-        * the signal and stop emission of the signal so the default handler
-        * won't be called. */
-       tree_view_class->row_activated = contact_list_view_row_activated;
-
-       signals[DRAG_CONTACT_RECEIVED] =
-               g_signal_new ("drag-contact-received",
-                             G_OBJECT_CLASS_TYPE (klass),
-                             G_SIGNAL_RUN_LAST,
-                             0,
-                             NULL, NULL,
-                             g_cclosure_marshal_generic,
-                             G_TYPE_NONE,
-                             3, EMPATHY_TYPE_CONTACT, G_TYPE_STRING, G_TYPE_STRING);
-
-       g_object_class_install_property (object_class,
-                                        PROP_STORE,
-                                        g_param_spec_object ("store",
-                                                            "The store of the view",
-                                                            "The store of the view",
-                                                             EMPATHY_TYPE_CONTACT_LIST_STORE,
-                                                             G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE));
-       g_object_class_install_property (object_class,
-                                        PROP_LIST_FEATURES,
-                                        g_param_spec_flags ("list-features",
-                                                            "Features of the view",
-                                                            "Flags for all enabled features",
-                                                             EMPATHY_TYPE_CONTACT_LIST_FEATURE_FLAGS,
-                                                             EMPATHY_CONTACT_LIST_FEATURE_NONE,
-                                                             G_PARAM_READWRITE));
-       g_object_class_install_property (object_class,
-                                        PROP_CONTACT_FEATURES,
-                                        g_param_spec_flags ("contact-features",
-                                                            "Features of the contact menu",
-                                                            "Flags for all enabled features for the menu",
-                                                             EMPATHY_TYPE_CONTACT_FEATURE_FLAGS,
-                                                             EMPATHY_CONTACT_FEATURE_NONE,
-                                                             G_PARAM_READWRITE));
-
-       g_type_class_add_private (object_class, sizeof (EmpathyContactListViewPriv));
-}
-
-static void
-empathy_contact_list_view_init (EmpathyContactListView *view)
-{
-       EmpathyContactListViewPriv *priv = G_TYPE_INSTANCE_GET_PRIVATE (view,
-               EMPATHY_TYPE_CONTACT_LIST_VIEW, EmpathyContactListViewPriv);
-
-       view->priv = priv;
-
-       /* Get saved group states. */
-       empathy_contact_groups_get_all ();
-
-       gtk_tree_view_set_row_separator_func (GTK_TREE_VIEW (view),
-                                             empathy_contact_list_store_row_separator_func,
-                                             NULL, NULL);
-
-       /* Set up drag target lists. */
-       priv->file_targets = gtk_target_list_new (drag_types_dest_file,
-                                                 G_N_ELEMENTS (drag_types_dest_file));
-
-       /* Connect to tree view signals rather than override. */
-       g_signal_connect (view, "button-press-event",
-                         G_CALLBACK (contact_list_view_button_press_event_cb),
-                         NULL);
-       g_signal_connect (view, "key-press-event",
-                         G_CALLBACK (contact_list_view_key_press_event_cb),
-                         NULL);
-       g_signal_connect (view, "row-expanded",
-                         G_CALLBACK (contact_list_view_row_expand_or_collapse_cb),
-                         GINT_TO_POINTER (TRUE));
-       g_signal_connect (view, "row-collapsed",
-                         G_CALLBACK (contact_list_view_row_expand_or_collapse_cb),
-                         GINT_TO_POINTER (FALSE));
-       g_signal_connect (view, "query-tooltip",
-                         G_CALLBACK (contact_list_view_query_tooltip_cb),
-                         NULL);
-}
-
-EmpathyContactListView *
-empathy_contact_list_view_new (EmpathyContactListStore        *store,
-                              EmpathyContactListFeatureFlags  list_features,
-                              EmpathyContactFeatureFlags      contact_features)
-{
-       g_return_val_if_fail (EMPATHY_IS_CONTACT_LIST_STORE (store), NULL);
-
-       return g_object_new (EMPATHY_TYPE_CONTACT_LIST_VIEW,
-                            "store", store,
-                            "contact-features", contact_features,
-                            "list-features", list_features,
-                            NULL);
-}
-
-EmpathyContact *
-empathy_contact_list_view_dup_selected (EmpathyContactListView *view)
-{
-       GtkTreeSelection          *selection;
-       GtkTreeIter                iter;
-       GtkTreeModel              *model;
-       EmpathyContact             *contact;
-
-       g_return_val_if_fail (EMPATHY_IS_CONTACT_LIST_VIEW (view), NULL);
-
-       selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (view));
-       if (!gtk_tree_selection_get_selected (selection, &model, &iter)) {
-               return NULL;
-       }
-
-       gtk_tree_model_get (model, &iter,
-                           EMPATHY_CONTACT_LIST_STORE_COL_CONTACT, &contact,
-                           -1);
-
-       return contact;
-}
-
-EmpathyContactListFlags
-empathy_contact_list_view_get_flags (EmpathyContactListView *view)
-{
-       GtkTreeSelection          *selection;
-       GtkTreeIter                iter;
-       GtkTreeModel              *model;
-       EmpathyContactListFlags    flags;
-
-       g_return_val_if_fail (EMPATHY_IS_CONTACT_LIST_VIEW (view), 0);
-
-       selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (view));
-       if (!gtk_tree_selection_get_selected (selection, &model, &iter)) {
-               return 0;
-       }
-
-       gtk_tree_model_get (model, &iter,
-                           EMPATHY_CONTACT_LIST_STORE_COL_FLAGS, &flags,
-                           -1);
-
-       return flags;
-}
-
-gchar *
-empathy_contact_list_view_get_selected_group (EmpathyContactListView *view,
-                                             gboolean *is_fake_group)
-{
-       GtkTreeSelection          *selection;
-       GtkTreeIter                iter;
-       GtkTreeModel              *model;
-       gboolean                   is_group;
-       gchar                     *name;
-       gboolean                   fake;
-
-       g_return_val_if_fail (EMPATHY_IS_CONTACT_LIST_VIEW (view), NULL);
-
-       selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (view));
-       if (!gtk_tree_selection_get_selected (selection, &model, &iter)) {
-               return NULL;
-       }
-
-       gtk_tree_model_get (model, &iter,
-                           EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP, &is_group,
-                           EMPATHY_CONTACT_LIST_STORE_COL_NAME, &name,
-                           EMPATHY_CONTACT_LIST_STORE_COL_IS_FAKE_GROUP, &fake,
-                           -1);
-
-       if (!is_group) {
-               g_free (name);
-               return NULL;
-       }
-
-       if (is_fake_group != NULL)
-               *is_fake_group = fake;
-
-       return name;
-}
-
-static gboolean
-contact_list_view_remove_dialog_show (GtkWindow   *parent,
-                                     const gchar *message,
-                                     const gchar *secondary_text)
-{
-       GtkWidget *dialog;
-       gboolean res;
-
-       dialog = gtk_message_dialog_new (parent, GTK_DIALOG_MODAL,
-                                        GTK_MESSAGE_QUESTION, GTK_BUTTONS_NONE,
-                                        "%s", message);
-       gtk_dialog_add_buttons (GTK_DIALOG (dialog),
-                               GTK_STOCK_CANCEL, GTK_RESPONSE_NO,
-                               GTK_STOCK_DELETE, GTK_RESPONSE_YES,
-                               NULL);
-       gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
-                                                 "%s", secondary_text);
-
-       gtk_widget_show (dialog);
-
-       res = gtk_dialog_run (GTK_DIALOG (dialog));
-       gtk_widget_destroy (dialog);
-
-       return (res == GTK_RESPONSE_YES);
-}
-
-static void
-contact_list_view_group_remove_activate_cb (GtkMenuItem            *menuitem,
-                                           EmpathyContactListView *view)
-{
-       EmpathyContactListViewPriv *priv = GET_PRIV (view);
-       gchar                      *group;
-
-       group = empathy_contact_list_view_get_selected_group (view, NULL);
-       if (group) {
-               gchar     *text;
-               GtkWindow *parent;
-
-               text = g_strdup_printf (_("Do you really want to remove the group '%s'?"), group);
-               parent = empathy_get_toplevel_window (GTK_WIDGET (view));
-               if (contact_list_view_remove_dialog_show (parent, _("Removing group"), text)) {
-                       EmpathyContactList *list;
-
-                       list = empathy_contact_list_store_get_list_iface (priv->store);
-                       empathy_contact_list_remove_group (list, group);
-               }
-
-               g_free (text);
-       }
-
-       g_free (group);
-}
-
-GtkWidget *
-empathy_contact_list_view_get_group_menu (EmpathyContactListView *view)
-{
-       EmpathyContactListViewPriv *priv = GET_PRIV (view);
-       gchar                      *group;
-       GtkWidget                  *menu;
-       GtkWidget                  *item;
-       GtkWidget                  *image;
-       gboolean                   is_fake_group;
-
-       g_return_val_if_fail (EMPATHY_IS_CONTACT_LIST_VIEW (view), NULL);
-
-       if (!(priv->list_features & (EMPATHY_CONTACT_LIST_FEATURE_GROUPS_RENAME |
-                                    EMPATHY_CONTACT_LIST_FEATURE_GROUPS_REMOVE))) {
-               return NULL;
-       }
-
-       group = empathy_contact_list_view_get_selected_group (view, &is_fake_group);
-       if (!group || is_fake_group) {
-               /* We can't alter fake groups */
-               return NULL;
-       }
-
-       menu = gtk_menu_new ();
-
-       /* FIXME: Not implemented yet
-       if (priv->features & EMPATHY_CONTACT_LIST_FEATURE_GROUPS_RENAME) {
-               item = gtk_menu_item_new_with_mnemonic (_("Re_name"));
-               gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
-               gtk_widget_show (item);
-               g_signal_connect (item, "activate",
-                                 G_CALLBACK (contact_list_view_group_rename_activate_cb),
-                                 view);
-       }*/
-
-       if (priv->list_features & EMPATHY_CONTACT_LIST_FEATURE_GROUPS_REMOVE) {
-               item = gtk_image_menu_item_new_with_mnemonic (_("_Remove"));
-               image = gtk_image_new_from_icon_name (GTK_STOCK_REMOVE,
-                                                     GTK_ICON_SIZE_MENU);
-               gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
-               gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
-               gtk_widget_show (item);
-               g_signal_connect (item, "activate",
-                                 G_CALLBACK (contact_list_view_group_remove_activate_cb),
-                                 view);
-       }
-
-       g_free (group);
-
-       return menu;
-}
-
-static void
-contact_list_view_remove_activate_cb (GtkMenuItem            *menuitem,
-                                     EmpathyContactListView *view)
-{
-       EmpathyContactListViewPriv *priv = GET_PRIV (view);
-       EmpathyContact             *contact;
-
-       contact = empathy_contact_list_view_dup_selected (view);
-
-       if (contact) {
-               gchar     *text;
-               GtkWindow *parent;
-
-               parent = empathy_get_toplevel_window (GTK_WIDGET (view));
-               text = g_strdup_printf (_("Do you really want to remove the contact '%s'?"),
-                                       empathy_contact_get_alias (contact));
-               if (contact_list_view_remove_dialog_show (parent, _("Removing contact"), text)) {
-                       EmpathyContactList *list;
-
-                       list = empathy_contact_list_store_get_list_iface (priv->store);
-                       empathy_contact_list_remove (list, contact, "");
-               }
-
-               g_free (text);
-               g_object_unref (contact);
-       }
-}
-
-GtkWidget *
-empathy_contact_list_view_get_contact_menu (EmpathyContactListView *view)
-{
-       EmpathyContactListViewPriv *priv = GET_PRIV (view);
-       EmpathyContact             *contact;
-       GtkWidget                  *menu;
-       GtkWidget                  *item;
-       GtkWidget                  *image;
-       EmpathyContactListFlags     flags;
-
-       g_return_val_if_fail (EMPATHY_IS_CONTACT_LIST_VIEW (view), NULL);
-
-       contact = empathy_contact_list_view_dup_selected (view);
-       if (!contact) {
-               return NULL;
-       }
-       flags = empathy_contact_list_view_get_flags (view);
-
-       menu = empathy_contact_menu_new (contact, priv->contact_features);
-
-       /* Remove contact */
-       if (priv->list_features & EMPATHY_CONTACT_LIST_FEATURE_CONTACT_REMOVE &&
-           flags & EMPATHY_CONTACT_LIST_CAN_REMOVE) {
-               /* create the menu if required, or just add a separator */
-               if (!menu) {
-                       menu = gtk_menu_new ();
-               } else {
-                       item = gtk_separator_menu_item_new ();
-                       gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
-                       gtk_widget_show (item);
-               }
-
-               /* Remove */
-               item = gtk_image_menu_item_new_with_mnemonic (_("_Remove"));
-               image = gtk_image_new_from_icon_name (GTK_STOCK_REMOVE,
-                                                     GTK_ICON_SIZE_MENU);
-               gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
-               gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
-               gtk_widget_show (item);
-               g_signal_connect (item, "activate",
-                                 G_CALLBACK (contact_list_view_remove_activate_cb),
-                                 view);
-       }
-
-       g_object_unref (contact);
-
-       return menu;
-}
-
-void
-empathy_contact_list_view_set_live_search (EmpathyContactListView *view,
-                                          EmpathyLiveSearch      *search)
-{
-       EmpathyContactListViewPriv *priv = GET_PRIV (view);
-
-       /* remove old handlers if old search was not null */
-       if (priv->search_widget != NULL) {
-               g_signal_handlers_disconnect_by_func (view,
-                       contact_list_view_start_search_cb,
-                       NULL);
-
-               g_signal_handlers_disconnect_by_func (priv->search_widget,
-                       contact_list_view_search_text_notify_cb,
-                       view);
-               g_signal_handlers_disconnect_by_func (priv->search_widget,
-                       contact_list_view_search_activate_cb,
-                       view);
-               g_signal_handlers_disconnect_by_func (priv->search_widget,
-                       contact_list_view_search_key_navigation_cb,
-                       view);
-               g_signal_handlers_disconnect_by_func (priv->search_widget,
-                       contact_list_view_search_hide_cb,
-                       view);
-               g_signal_handlers_disconnect_by_func (priv->search_widget,
-                       contact_list_view_search_show_cb,
-                       view);
-               g_object_unref (priv->search_widget);
-               priv->search_widget = NULL;
-       }
-
-       /* connect handlers if new search is not null */
-       if (search != NULL) {
-               priv->search_widget = g_object_ref (search);
-
-               g_signal_connect (view, "start-interactive-search",
-                                 G_CALLBACK (contact_list_view_start_search_cb),
-                                 NULL);
-
-               g_signal_connect (priv->search_widget, "notify::text",
-                       G_CALLBACK (contact_list_view_search_text_notify_cb),
-                       view);
-               g_signal_connect (priv->search_widget, "activate",
-                       G_CALLBACK (contact_list_view_search_activate_cb),
-                       view);
-               g_signal_connect (priv->search_widget, "key-navigation",
-                       G_CALLBACK (contact_list_view_search_key_navigation_cb),
-                       view);
-               g_signal_connect (priv->search_widget, "hide",
-                       G_CALLBACK (contact_list_view_search_hide_cb),
-                       view);
-               g_signal_connect (priv->search_widget, "show",
-                       G_CALLBACK (contact_list_view_search_show_cb),
-                       view);
-       }
-}
diff --git a/libempathy-gtk/empathy-contact-list-view.h b/libempathy-gtk/empathy-contact-list-view.h
deleted file mode 100644 (file)
index 97e78d3..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Copyright (C) 2005-2007 Imendio AB
- * Copyright (C) 2007-2008 Collabora Ltd.
- *
- * 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., 51 Franklin St, Fifth Floor,
- * Boston, MA  02110-1301  USA
- *
- * Authors: Mikael Hallendal <micke@imendio.com>
- *          Martyn Russell <martyn@imendio.com>
- *          Xavier Claessens <xclaesse@gmail.com>
- */
-
-#ifndef __EMPATHY_CONTACT_LIST_VIEW_H__
-#define __EMPATHY_CONTACT_LIST_VIEW_H__
-
-#include <gtk/gtk.h>
-
-#include <libempathy/empathy-contact.h>
-#include <libempathy/empathy-enum-types.h>
-
-#include "empathy-contact-list-store.h"
-#include "empathy-live-search.h"
-#include "empathy-contact-menu.h"
-
-G_BEGIN_DECLS
-
-#define EMPATHY_TYPE_CONTACT_LIST_VIEW         (empathy_contact_list_view_get_type ())
-#define EMPATHY_CONTACT_LIST_VIEW(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_CONTACT_LIST_VIEW, EmpathyContactListView))
-#define EMPATHY_CONTACT_LIST_VIEW_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), EMPATHY_TYPE_CONTACT_LIST_VIEW, EmpathyContactListViewClass))
-#define EMPATHY_IS_CONTACT_LIST_VIEW(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_CONTACT_LIST_VIEW))
-#define EMPATHY_IS_CONTACT_LIST_VIEW_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), EMPATHY_TYPE_CONTACT_LIST_VIEW))
-#define EMPATHY_CONTACT_LIST_VIEW_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EMPATHY_TYPE_CONTACT_LIST_VIEW, EmpathyContactListViewClass))
-
-typedef struct _EmpathyContactListView      EmpathyContactListView;
-typedef struct _EmpathyContactListViewClass EmpathyContactListViewClass;
-
-typedef enum {
-       EMPATHY_CONTACT_LIST_FEATURE_NONE = 0,
-       EMPATHY_CONTACT_LIST_FEATURE_GROUPS_SAVE = 1 << 0,
-       EMPATHY_CONTACT_LIST_FEATURE_GROUPS_RENAME = 1 << 1,
-       EMPATHY_CONTACT_LIST_FEATURE_GROUPS_REMOVE = 1 << 2,
-       EMPATHY_CONTACT_LIST_FEATURE_CONTACT_REMOVE = 1 << 3,
-       EMPATHY_CONTACT_LIST_FEATURE_CONTACT_DROP = 1 << 4,
-       EMPATHY_CONTACT_LIST_FEATURE_CONTACT_DRAG = 1 << 5,
-       EMPATHY_CONTACT_LIST_FEATURE_CONTACT_TOOLTIP = 1 << 6,
-       EMPATHY_CONTACT_LIST_FEATURE_ALL = (1 << 7) - 1,
-} EmpathyContactListFeatureFlags;
-
-struct _EmpathyContactListView {
-       GtkTreeView parent;
-       gpointer priv;
-};
-
-struct _EmpathyContactListViewClass {
-       GtkTreeViewClass parent_class;
-};
-
-GType                      empathy_contact_list_view_get_type           (void) G_GNUC_CONST;
-EmpathyContactListView *   empathy_contact_list_view_new                (EmpathyContactListStore        *store,
-                                                                        EmpathyContactListFeatureFlags  list_features,
-                                                                        EmpathyContactFeatureFlags      contact_features);
-EmpathyContact *           empathy_contact_list_view_dup_selected       (EmpathyContactListView         *view);
-EmpathyContactListFlags    empathy_contact_list_view_get_flags          (EmpathyContactListView         *view);
-gchar *                    empathy_contact_list_view_get_selected_group (EmpathyContactListView         *view,
-                                                                        gboolean *is_fake_group);
-GtkWidget *                empathy_contact_list_view_get_contact_menu   (EmpathyContactListView         *view);
-GtkWidget *                empathy_contact_list_view_get_group_menu     (EmpathyContactListView         *view);
-void                       empathy_contact_list_view_set_live_search    (EmpathyContactListView         *view,
-                                                                        EmpathyLiveSearch              *search);
-
-G_END_DECLS
-
-#endif /* __EMPATHY_CONTACT_LIST_VIEW_H__ */
-
index 07def6078ea9d50d4f39f1e12370525893673f0b..dd9ea5c1689212c124fca50f432a10fbda8aa9d1 100644 (file)
@@ -174,7 +174,6 @@ empathy_contact_add_menu_item_new (EmpathyContact *contact)
        TpConnection *connection;
        GList *l, *members;
        gboolean found = FALSE;
-       EmpathyContactListFlags flags;
 
        g_return_val_if_fail (EMPATHY_IS_CONTACT (contact), NULL);
 
@@ -185,12 +184,8 @@ empathy_contact_add_menu_item_new (EmpathyContact *contact)
        manager = empathy_contact_manager_dup_singleton ();
        connection = empathy_contact_get_connection (contact);
 
-       flags = empathy_contact_manager_get_flags_for_connection (manager,
-                       connection);
-
-       if (!(flags & EMPATHY_CONTACT_LIST_CAN_ADD)) {
+       if (!tp_connection_get_can_change_contact_list (connection))
                return NULL;
-       }
 
        members = empathy_contact_list_get_members (EMPATHY_CONTACT_LIST (manager));
        for (l = members; l; l = l->next) {
@@ -226,8 +221,8 @@ empathy_contact_block_menu_item_toggled (GtkCheckMenuItem *item,
                                         EmpathyContact   *contact)
 {
        static guint block_signal = 0;
-       EmpathyContactManager *manager;
        gboolean blocked, abusive;
+       TpContact *tp_contact;
 
        if (block_signal > 0)
                return;
@@ -252,10 +247,12 @@ empathy_contact_block_menu_item_toggled (GtkCheckMenuItem *item,
                        return;
        }
 
-       manager = empathy_contact_manager_dup_singleton ();
-       empathy_contact_list_set_blocked (EMPATHY_CONTACT_LIST (manager),
-                                         contact, blocked, abusive);
-       g_object_unref (manager);
+       tp_contact = empathy_contact_get_tp_contact (contact);
+
+       if (blocked)
+               tp_contact_block_async (tp_contact, abusive, NULL, NULL);
+       else
+               tp_contact_unblock_async (tp_contact, NULL, NULL);
 
        /* update the toggle with the blocked status */
        block_signal++;
@@ -267,34 +264,27 @@ static GtkWidget *
 empathy_contact_block_menu_item_new (EmpathyContact *contact)
 {
        GtkWidget *item;
-       EmpathyContactManager *manager;
        TpConnection *connection;
-       EmpathyContactListFlags flags;
-       gboolean blocked;
+       TpContact *tp_contact;
 
        g_return_val_if_fail (EMPATHY_IS_CONTACT (contact), NULL);
 
-       manager = empathy_contact_manager_dup_singleton ();
-
        if (!empathy_contact_manager_initialized ()) {
                return NULL;
        }
 
        connection = empathy_contact_get_connection (contact);
 
-       flags = empathy_contact_manager_get_flags_for_connection (manager,
-                       connection);
-
-       if (!(flags & EMPATHY_CONTACT_LIST_CAN_BLOCK)) {
+       if (!tp_proxy_has_interface_by_id (connection,
+               TP_IFACE_QUARK_CONNECTION_INTERFACE_CONTACT_BLOCKING))
                return NULL;
-       }
 
        item = gtk_check_menu_item_new_with_mnemonic (_("_Block Contact"));
-       blocked = empathy_contact_list_get_blocked (
-                       EMPATHY_CONTACT_LIST (manager),
-                       contact);
 
-       gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item), blocked);
+       tp_contact = empathy_contact_get_tp_contact (contact);
+
+       gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item),
+                       tp_contact_is_blocked (tp_contact));
 
        g_signal_connect (item, "toggled",
                        G_CALLBACK (empathy_contact_block_menu_item_toggled),
@@ -525,7 +515,6 @@ contact_edit_menu_item_activate_cb (EmpathyContact *contact)
 GtkWidget *
 empathy_contact_edit_menu_item_new (EmpathyContact *contact)
 {
-       EmpathyContactManager *manager;
        GtkWidget *item;
        GtkWidget *image;
        gboolean enable = FALSE;
@@ -534,17 +523,12 @@ empathy_contact_edit_menu_item_new (EmpathyContact *contact)
 
        if (empathy_contact_manager_initialized ()) {
                TpConnection *connection;
-               EmpathyContactListFlags flags;
 
-               manager = empathy_contact_manager_dup_singleton ();
                connection = empathy_contact_get_connection (contact);
-               flags = empathy_contact_manager_get_flags_for_connection (
-                               manager, connection);
-
-               enable = (flags & EMPATHY_CONTACT_LIST_CAN_ALIAS ||
-                         flags & EMPATHY_CONTACT_LIST_CAN_GROUP);
 
-               g_object_unref (manager);
+               enable = (tp_connection_can_set_contact_alias (connection) ||
+                         tp_connection_get_group_storage (connection) !=
+                                        TP_CONTACT_METADATA_STORAGE_TYPE_NONE);
        }
 
        item = gtk_image_menu_item_new_with_mnemonic (
index bfc42bbb04142b41fa8f40b2257097cf2373e70e..89a7918aab5d056b6747771eecbe6e2f501027e3 100644 (file)
@@ -28,8 +28,8 @@
 
 #include <telepathy-glib/telepathy-glib.h>
 
-#include <libempathy/empathy-contact-manager.h>
 #include <libempathy/empathy-tp-contact-factory.h>
+#include <libempathy/empathy-utils.h>
 
 #include <libempathy-gtk/empathy-account-chooser.h>
 #include <libempathy-gtk/empathy-cell-renderer-text.h>
@@ -120,7 +120,7 @@ on_searcher_reset (GObject *source_object,
   gtk_list_store_clear (priv->store);
   tp_contact_search_start (priv->searcher, search);
 
-  g_hash_table_destroy (search);
+  g_hash_table_unref (search);
 }
 
 static void
@@ -142,7 +142,6 @@ on_get_contact_factory_get_from_id_cb (TpConnection *connection,
     gpointer user_data,
     GObject *object)
 {
-    EmpathyContactManager *manager = empathy_contact_manager_dup_singleton ();
     const gchar *message = user_data;
 
     if (error != NULL)
@@ -151,8 +150,7 @@ on_get_contact_factory_get_from_id_cb (TpConnection *connection,
         return;
       }
 
-    empathy_contact_list_add (EMPATHY_CONTACT_LIST (manager), contact,
-        message);
+    empathy_contact_add_to_contact_list (contact, message);
 }
 
 static void
@@ -342,15 +340,11 @@ check_request_message_available (EmpathyContactSearchDialog *self,
     TpConnection *conn)
 {
   EmpathyContactSearchDialogPrivate *priv = GET_PRIVATE (self);
-  EmpathyContactManager *manager = empathy_contact_manager_dup_singleton ();
-  EmpathyContactListFlags flags;
-
-  flags = empathy_contact_manager_get_flags_for_connection (manager, conn);
 
   gtk_widget_set_visible (priv->message_window,
-      flags & EMPATHY_CONTACT_LIST_MESSAGE_ADD);
+      tp_connection_get_can_change_contact_list (conn));
   gtk_widget_set_visible (priv->message_label,
-      flags & EMPATHY_CONTACT_LIST_MESSAGE_ADD);
+      tp_connection_get_can_change_contact_list (conn));
 }
 
 static void
@@ -504,11 +498,11 @@ empathy_contact_search_dialog_init (EmpathyContactSearchDialog *self)
   /* Title */
   gtk_window_set_title (GTK_WINDOW (self), _("Search contacts"));
 
-  vbox = gtk_vbox_new (FALSE, 3);
+  vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 3);
   gtk_container_set_border_width (GTK_CONTAINER (vbox), 6);
 
   /* Account chooser */
-  hbox = gtk_hbox_new (FALSE, 6);
+  hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
   label = gtk_label_new (_("Account:"));
   gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, TRUE, 0);
   gtk_size_group_add_widget (size_group, label);
@@ -531,7 +525,7 @@ empathy_contact_search_dialog_init (EmpathyContactSearchDialog *self)
 #endif
 
   /* Search input */
-  hbox = gtk_hbox_new (FALSE, 6);
+  hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
   label = gtk_label_new (_("Search: "));
   gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, TRUE, 0);
   gtk_size_group_add_widget (size_group, label);
index 8e5666520b924b3817fcc9c4247e60f48a559095..476fb6217b9f45861f1a8de2a12c3c5876c25888 100644 (file)
@@ -40,7 +40,6 @@
 #include <libempathy/empathy-contact-manager.h>
 #include <libempathy/empathy-contact-list.h>
 #include <libempathy/empathy-location.h>
-#include <libempathy/empathy-request-util.h>
 #include <libempathy/empathy-time.h>
 #include <libempathy/empathy-utils.h>
 
@@ -479,64 +478,19 @@ contact_widget_details_update_edit (EmpathyContactWidget *information)
   return n_rows;
 }
 
-static gboolean
-channel_name_activated_cb (
-    GtkLabel *label,
-    gchar *uri,
-    EmpathyContactWidget *information)
-{
-  TpAccount *account = empathy_contact_get_account (information->contact);
-
-  empathy_join_muc (account, uri, empathy_get_current_action_time ());
-  return TRUE;
-}
-
 static void
-add_channel_list (
-    EmpathyContactWidget *information,
-    GPtrArray *channels,
-    guint row)
+add_row (GtkGrid *grid,
+    guint row,
+    GtkWidget *title,
+    GtkWidget *value)
 {
-  GtkWidget *w;
-  GString *label_markup = g_string_new ("");
-  guint i;
-
-  w = gtk_label_new (_("Channels:"));
-  gtk_grid_attach (GTK_GRID (information->grid_details),
-      w, 0, row, 1, 1);
-  gtk_misc_set_alignment (GTK_MISC (w), 0, 0.5);
-  gtk_widget_show (w);
+  gtk_grid_attach (grid, title, 0, row, 1, 1);
+  gtk_misc_set_alignment (GTK_MISC (title), 0, 0.5);
+  gtk_widget_show (title);
 
-  for (i = 0; i < channels->len; i++)
-    {
-      const gchar *channel_name = g_ptr_array_index (channels, i);
-      /* We abuse the URI of the link to hold the channel name. It seems to
-       * be okay to just use it essentially verbatim, rather than trying to
-       * ensure it's actually a valid URI.  g_string_append_uri_escaped()
-       * escapes way more than we actually need to; so we're just using
-       * g_markup_escape_text directly.
-       */
-      gchar *escaped = g_markup_escape_text (channel_name, -1);
-
-      if (i > 0)
-        g_string_append (label_markup, ", ");
-
-      g_string_append_printf (label_markup, "<a href='%s'>%s</a>",
-          escaped, channel_name);
-      g_free (escaped);
-    }
-
-  w = gtk_label_new (NULL);
-  gtk_label_set_markup (GTK_LABEL (w), label_markup->str);
-  gtk_label_set_line_wrap (GTK_LABEL (w), TRUE);
-  g_signal_connect (w, "activate-link",
-      (GCallback) channel_name_activated_cb, information);
-  gtk_grid_attach (GTK_GRID (information->grid_details),
-      w, 1, row, 1, 1);
-  gtk_misc_set_alignment (GTK_MISC (w), 0, 0.5);
-  gtk_widget_show (w);
-
-  g_string_free (label_markup, TRUE);
+  gtk_grid_attach (grid, value, 1, row, 1, 1);
+  gtk_misc_set_alignment (GTK_MISC (value), 0, 0.5);
+  gtk_widget_show (value);
 }
 
 static guint
@@ -545,7 +499,8 @@ contact_widget_details_update_show (EmpathyContactWidget *information)
   TpContact *contact;
   GList *info, *l;
   guint n_rows = 0;
-  GPtrArray *channels = g_ptr_array_new ();
+  GtkWidget *channels_label;
+  TpAccount *account;
 
   contact = empathy_contact_get_tp_contact (information->contact);
   info = tp_contact_get_contact_info (contact);
@@ -555,7 +510,7 @@ contact_widget_details_update_show (EmpathyContactWidget *information)
       TpContactInfoField *field = l->data;
       const gchar *value;
       gchar *markup = NULL, *title;
-      GtkWidget *w;
+      GtkWidget *title_widget, *value_widget;
       EmpathyContactInfoFormatFunc format;
 
       if (field->field_value == NULL || field->field_value[0] == NULL)
@@ -563,12 +518,6 @@ contact_widget_details_update_show (EmpathyContactWidget *information)
 
       value = field->field_value[0];
 
-      if (!tp_strdiff (field->field_name, "x-irc-channel"))
-        {
-          g_ptr_array_add (channels, (gpointer) field->field_value[0]);
-          continue;
-        }
-
       if (!empathy_contact_info_lookup_field (field->field_name, NULL, &format))
         {
           DEBUG ("Unhandled ContactInfo field: %s", field->field_name);
@@ -590,42 +539,45 @@ contact_widget_details_update_show (EmpathyContactWidget *information)
       /* Add Title */
       title = empathy_contact_info_field_label (field->field_name,
           field->parameters);
-      w = gtk_label_new (title);
+      title_widget = gtk_label_new (title);
       g_free (title);
 
-      gtk_grid_attach (GTK_GRID (information->grid_details),
-          w, 0, n_rows, 1, 1);
-      gtk_misc_set_alignment (GTK_MISC (w), 0, 0.5);
-      gtk_widget_show (w);
-
       /* Add Value */
-      w = gtk_label_new (value);
+      value_widget = gtk_label_new (value);
       if (markup != NULL)
         {
-          gtk_label_set_markup (GTK_LABEL (w), markup);
+          gtk_label_set_markup (GTK_LABEL (value_widget), markup);
           g_free (markup);
         }
 
       if ((information->flags & EMPATHY_CONTACT_WIDGET_FOR_TOOLTIP) == 0)
-        gtk_label_set_selectable (GTK_LABEL (w), TRUE);
+        gtk_label_set_selectable (GTK_LABEL (value_widget), TRUE);
 
-      gtk_grid_attach (GTK_GRID (information->grid_details),
-          w, 1, n_rows, 1, 1);
-      gtk_misc_set_alignment (GTK_MISC (w), 0, 0.5);
-      gtk_widget_show (w);
+      add_row (GTK_GRID (information->grid_details), n_rows, title_widget,
+          value_widget);
 
       n_rows++;
     }
 
-  g_list_free (info);
+  account = empathy_contact_get_account (information->contact);
 
-  if (channels->len > 0)
+  channels_label = empathy_contact_info_create_channel_list_label (account,
+      info, n_rows);
+
+  if (channels_label != NULL)
     {
-      add_channel_list (information, channels, n_rows);
+      GtkWidget *title_widget;
+
+      title_widget =  gtk_label_new (_("Channels:"));
+
+      add_row (GTK_GRID (information->grid_details), n_rows, title_widget,
+          channels_label);
+
       n_rows++;
     }
 
-  g_ptr_array_unref (channels);
+  g_list_free (info);
+
   return n_rows;
 }
 
@@ -1673,7 +1625,7 @@ contact_widget_contact_setup (EmpathyContactWidget *information)
   else
     {
       /* Pack the protocol icon with the account name in an hbox */
-      information->widget_account = gtk_hbox_new (FALSE, 6);
+      information->widget_account = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
 
       information->label_account = gtk_label_new (NULL);
       if (!(information->flags & EMPATHY_CONTACT_WIDGET_FOR_TOOLTIP)) {
index 997225775ee0ad2042ceacbe4ce66583fc98217e..695d1ee3c8a2ccf057ef18aeed422ecbbfc530c4 100644 (file)
 #include <telepathy-glib/util.h>
 
 #include <libempathy/empathy-time.h>
+#include <libempathy/empathy-request-util.h>
 
 #include "empathy-contactinfo-utils.h"
 #include "empathy-string-parser.h"
+#include "empathy-ui-utils.h"
 
 static gchar *
 linkify_first_value (GStrv values)
@@ -204,7 +206,7 @@ build_parameters_string (GStrv parameters)
   g_ptr_array_add (output, NULL); /* NULL-terminate */
 
   join = g_strjoinv (", ", (char **) output->pdata);
-  g_ptr_array_free (output, TRUE);
+  g_ptr_array_unref (output);
 
   return join;
 }
@@ -264,3 +266,68 @@ empathy_contact_info_field_spec_cmp (TpContactInfoFieldSpec *spec1,
 {
     return contact_info_field_name_cmp (spec1->name, spec2->name);
 }
+
+static gboolean
+channel_name_activated_cb (
+    GtkLabel *label,
+    gchar *uri,
+    TpAccount *account)
+{
+  empathy_join_muc (account, uri, empathy_get_current_action_time ());
+  return TRUE;
+}
+
+GtkWidget *
+empathy_contact_info_create_channel_list_label (TpAccount *account,
+    GList *info,
+    guint row)
+{
+  GtkWidget *label = NULL;
+  GString *label_markup = g_string_new ("");
+  guint i;
+  GPtrArray *channels;
+  GList *l;
+
+  /* Is there channels? */
+  channels = g_ptr_array_new ();
+
+  for (l = info; l != NULL; l = l->next)
+    {
+      TpContactInfoField *field = l->data;
+
+      if (!tp_strdiff (field->field_name, "x-irc-channel"))
+        g_ptr_array_add (channels, (gpointer) field->field_value[0]);
+    }
+
+  if (channels->len == 0)
+    goto out;
+
+  for (i = 0; i < channels->len; i++)
+    {
+      const gchar *channel_name = g_ptr_array_index (channels, i);
+      /* We abuse the URI of the link to hold the channel name. It seems to
+       * be okay to just use it essentially verbatim, rather than trying to
+       * ensure it's actually a valid URI. */
+      gchar *escaped = g_markup_escape_text (channel_name, -1);
+
+      if (i > 0)
+        g_string_append (label_markup, ", ");
+
+      g_string_append_printf (label_markup, "<a href='%s'>%s</a>",
+          escaped, channel_name);
+      g_free (escaped);
+    }
+
+  label = gtk_label_new (NULL);
+  gtk_label_set_markup (GTK_LABEL (label), label_markup->str);
+  gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
+
+  g_signal_connect (label, "activate-link",
+      (GCallback) channel_name_activated_cb, account);
+
+out:
+  g_ptr_array_unref (channels);
+  g_string_free (label_markup, TRUE);
+
+  return label;
+}
index 1d89ff2294d0470d1db8191f318c917134bff73a..a49e807aae6463c919a358e147635b32575c7737 100644 (file)
@@ -22,6 +22,8 @@
 #define __EMPATHY_CONTACTINFO_UTILS_H__
 
 #include <glib.h>
+#include <gtk/gtk.h>
+
 #include <telepathy-glib/connection.h>
 
 G_BEGIN_DECLS
@@ -39,6 +41,10 @@ gint empathy_contact_info_field_cmp (TpContactInfoField *field1,
 gint empathy_contact_info_field_spec_cmp (TpContactInfoFieldSpec *spec1,
     TpContactInfoFieldSpec *spec2);
 
+GtkWidget * empathy_contact_info_create_channel_list_label (TpAccount *account,
+    GList *info,
+    guint row);
+
 G_END_DECLS
 
 #endif /*  __EMPATHY_UTILS_H__ */
index 529aff26f49ba26478761e62dc6305106c5b84ab..1782dc8072b5bb91984457633c008c9a22ea273a 100644 (file)
@@ -140,7 +140,7 @@ empathy_dialpad_widget_init (EmpathyDialpadWidget *self)
 
   for (i = 0; dtmfbuttons[i].label != NULL; i++)
     {
-      GtkWidget *vbox = gtk_vbox_new (FALSE, 0);
+      GtkWidget *vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
       GtkWidget *button = gtk_button_new ();
       GtkWidget *label;
       gchar *str;
index 33e4d8d5adb9ed13fb6800a1d9cfd156ddc5744e..efb58fa99dc55d84c4b1bf8461e83d70a947be2f 100644 (file)
@@ -32,7 +32,7 @@
 #include <folks/folks.h>
 
 #include <libempathy/empathy-utils.h>
-#include <libempathy/empathy-contact-manager.h>
+#include <libempathy/empathy-connection-aggregator.h>
 
 #include "empathy-groups-widget.h"
 #include "empathy-ui-utils.h"
@@ -150,7 +150,7 @@ static void
 populate_data (EmpathyGroupsWidget *self)
 {
   EmpathyGroupsWidgetPriv *priv = GET_PRIV (self);
-  EmpathyContactManager *manager;
+  EmpathyConnectionAggregator *aggregator;
   GtkTreeIter iter;
   GeeSet *member_groups;
   GList *all_groups, *l;
@@ -158,12 +158,12 @@ populate_data (EmpathyGroupsWidget *self)
   /* Remove the old groups */
   gtk_list_store_clear (priv->group_store);
 
-  /* FIXME: We have to get the whole group list from EmpathyContactManager, as
-   * libfolks hasn't grown API to get the whole group list yet. (bgo#627398) */
-  manager = empathy_contact_manager_dup_singleton ();
-  all_groups = empathy_contact_list_get_all_groups (
-      EMPATHY_CONTACT_LIST (manager));
-  g_object_unref (manager);
+  /* FIXME: We have to get the whole group list from
+   * EmpathyConnectionAggregator, as libfolks hasn't grown API to get the whole
+   * group list yet. (bgo#627398) */
+  aggregator = empathy_connection_aggregator_dup_singleton ();
+  all_groups = empathy_connection_aggregator_get_all_groups (aggregator);
+  g_object_unref (aggregator);
 
   /* Get the list of groups that this #FolksGroupDetails is currently in */
   member_groups = folks_group_details_get_groups (priv->group_details);
@@ -340,7 +340,7 @@ set_up (EmpathyGroupsWidget *self)
   alignment = gtk_alignment_new (0.5, 0.5, 1.0, 1.0);
   gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 0, 12, 0);
 
-  vbox = GTK_BOX (gtk_vbox_new (FALSE, 6));
+  vbox = GTK_BOX (gtk_box_new (GTK_ORIENTATION_VERTICAL, 6));
 
   label = gtk_label_new (_("Select the groups you want this contact to appear "
       "in.  Note that you can select more than one group or no groups."));
@@ -350,7 +350,7 @@ set_up (EmpathyGroupsWidget *self)
   gtk_box_pack_start (vbox, label, FALSE, FALSE, 0);
   gtk_widget_show (label);
 
-  hbox = GTK_BOX (gtk_hbox_new (FALSE, 12));
+  hbox = GTK_BOX (gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12));
 
   priv->add_group_entry = gtk_entry_new ();
   g_signal_connect (priv->add_group_entry, "changed",
index e1bd6f11fc173bd643a5dfcf657387173c4d1c05..ed566329df593641069569e5fc951ec8f288eb7d 100644 (file)
@@ -182,8 +182,6 @@ empathy_block_individual_dialog_show (GtkWindow *parent,
     GdkPixbuf *avatar,
     gboolean *abusive)
 {
-  EmpathyContactManager *contact_manager =
-    empathy_contact_manager_dup_singleton ();
   GtkWidget *dialog;
   GtkWidget *abusive_check = NULL;
   GeeSet *personas;
@@ -214,9 +212,9 @@ empathy_block_individual_dialog_show (GtkWindow *parent,
     {
       TpfPersona *persona = gee_iterator_get (iter);
       TpContact *contact;
-      EmpathyContactListFlags flags;
       GString *s;
       char *str;
+      TpConnection *conn;
 
       if (!TPF_IS_PERSONA (persona))
           goto while_finish;
@@ -225,10 +223,10 @@ empathy_block_individual_dialog_show (GtkWindow *parent,
       if (contact == NULL)
         goto while_finish;
 
-      flags = empathy_contact_manager_get_flags_for_connection (
-          contact_manager, tp_contact_get_connection (contact));
+      conn = tp_contact_get_connection (contact);
 
-      if (flags & EMPATHY_CONTACT_LIST_CAN_BLOCK)
+      if (tp_proxy_has_interface_by_id (conn,
+            TP_IFACE_QUARK_CONNECTION_INTERFACE_CONTACT_BLOCKING))
         {
           s = blocked_str;
           npersonas_blocked++;
@@ -239,7 +237,7 @@ empathy_block_individual_dialog_show (GtkWindow *parent,
           npersonas_notblocked++;
         }
 
-      if (flags & EMPATHY_CONTACT_LIST_CAN_REPORT_ABUSIVE)
+      if (tp_connection_can_report_abusive (conn))
         can_report_abuse = TRUE;
 
       str = contact_pretty_name (contact);
@@ -291,7 +289,6 @@ while_finish:
       gtk_widget_show (abusive_check);
     }
 
-  g_object_unref (contact_manager);
   g_string_free (text, TRUE);
   g_string_free (blocked_str, TRUE);
   g_string_free (notblocked_str, TRUE);
index 793c2827fa09a4d30f03f281f6db161a71fd597f..7de5e4addda8f579c6acfe58de27ecf0c0969249 100644 (file)
@@ -35,6 +35,7 @@
 
 #include "empathy-individual-linker.h"
 #include "empathy-individual-store.h"
+#include "empathy-individual-store-manager.h"
 #include "empathy-individual-view.h"
 #include "empathy-individual-widget.h"
 #include "empathy-persona-store.h"
@@ -355,17 +356,18 @@ set_up (EmpathyIndividualLinker *self)
 
   priv = GET_PRIV (self);
 
-  top_vbox = gtk_vbox_new (FALSE, 6);
+  top_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
 
   /* Layout panes */
-  paned = GTK_PANED (gtk_hpaned_new ());
+
+  paned = GTK_PANED (gtk_paned_new (GTK_ORIENTATION_HORIZONTAL));
 
   /* Left column heading */
   alignment = gtk_alignment_new (0.5, 0.5, 1, 1);
   gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 0, 0, 6);
   gtk_widget_show (alignment);
 
-  vbox = GTK_BOX (gtk_vbox_new (FALSE, 6));
+  vbox = GTK_BOX (gtk_box_new (GTK_ORIENTATION_VERTICAL, 6));
   label = gtk_label_new (NULL);
   tmp = g_strdup_printf ("<b>%s</b>", _("Select contacts to link"));
   gtk_label_set_markup (GTK_LABEL (label), tmp);
@@ -375,7 +377,8 @@ set_up (EmpathyIndividualLinker *self)
 
   /* Individual selector */
   individual_manager = empathy_individual_manager_dup_singleton ();
-  priv->individual_store = empathy_individual_store_new (individual_manager);
+  priv->individual_store = EMPATHY_INDIVIDUAL_STORE (
+      empathy_individual_store_manager_new (individual_manager));
   g_object_unref (individual_manager);
 
   empathy_individual_store_set_show_protocols (priv->individual_store, FALSE);
@@ -439,7 +442,7 @@ set_up (EmpathyIndividualLinker *self)
   gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 0, 6, 0);
   gtk_widget_show (alignment);
 
-  vbox = GTK_BOX (gtk_vbox_new (FALSE, 6));
+  vbox = GTK_BOX (gtk_box_new (GTK_ORIENTATION_VERTICAL, 6));
   label = gtk_label_new (NULL);
   tmp = g_strdup_printf ("<b>%s</b>", _("New contact preview"));
   gtk_label_set_markup (GTK_LABEL (label), tmp);
@@ -572,7 +575,7 @@ finalize (GObject *object)
 {
   EmpathyIndividualLinkerPriv *priv = GET_PRIV (object);
 
-  g_hash_table_destroy (priv->changed_individuals);
+  g_hash_table_unref (priv->changed_individuals);
 
   G_OBJECT_CLASS (empathy_individual_linker_parent_class)->finalize (object);
 }
index 2209e1538915861cf476bdda6c256f5782b72d6b..e19fde3ddac76de84021e1e88bf7e9a87766f4c2 100644 (file)
@@ -36,6 +36,7 @@
 #include <libempathy/empathy-individual-manager.h>
 #include <libempathy/empathy-chatroom-manager.h>
 #include <libempathy/empathy-utils.h>
+#include <libempathy/empathy-contact-list.h>
 
 #include "empathy-account-selector-dialog.h"
 #include "empathy-individual-menu.h"
@@ -49,6 +50,7 @@
 #include "empathy-share-my-desktop.h"
 #include "empathy-linking-dialog.h"
 #include "empathy-call-utils.h"
+#include "empathy-individual-store-channel.h"
 
 #define DEBUG_FLAG EMPATHY_DEBUG_CONTACT
 #include <libempathy/empathy-debug.h>
 typedef struct {
   FolksIndividual *individual; /* owned */
   EmpathyIndividualFeatureFlags features;
+  EmpathyIndividualStore *store;
 } EmpathyIndividualMenuPriv;
 
 enum {
   PROP_INDIVIDUAL = 1,
   PROP_FEATURES,
+  PROP_STORE,
 };
 
 enum {
@@ -454,6 +458,17 @@ constructed (GObject *object)
   individual = priv->individual;
   features = priv->features;
 
+  /* Add contact */
+  if (features & EMPATHY_INDIVIDUAL_FEATURE_ADD_CONTACT)
+    {
+      item = empathy_individual_add_menu_item_new (self, individual);
+      if (item != NULL)
+        {
+          gtk_menu_shell_append (GTK_MENU_SHELL (shell), item);
+          gtk_widget_show (item);
+        }
+    }
+
   /* Chat */
   if (features & EMPATHY_INDIVIDUAL_FEATURE_CHAT)
     {
@@ -586,6 +601,9 @@ get_property (GObject *object,
       case PROP_FEATURES:
         g_value_set_flags (value, priv->features);
         break;
+      case PROP_STORE:
+        g_value_set_object (value, priv->store);
+        break;
       default:
         G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
         break;
@@ -610,6 +628,9 @@ set_property (GObject *object,
       case PROP_FEATURES:
         priv->features = g_value_get_flags (value);
         break;
+      case PROP_STORE:
+        priv->store = g_value_dup_object (value); /* read only */
+        break;
       default:
         G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
         break;
@@ -622,6 +643,7 @@ dispose (GObject *object)
   EmpathyIndividualMenuPriv *priv = GET_PRIV (object);
 
   tp_clear_object (&priv->individual);
+  tp_clear_object (&priv->store);
 
   G_OBJECT_CLASS (empathy_individual_menu_parent_class)->dispose (object);
 }
@@ -661,6 +683,13 @@ empathy_individual_menu_class_init (EmpathyIndividualMenuClass *klass)
           EMPATHY_INDIVIDUAL_FEATURE_NONE,
           G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS));
 
+  g_object_class_install_property (object_class, PROP_STORE,
+      g_param_spec_object ("store",
+          "Store",
+          "The EmpathyIndividualStore to use to get contact owner",
+          EMPATHY_TYPE_INDIVIDUAL_STORE,
+          G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS));
+
   signals[SIGNAL_LINK_CONTACTS_ACTIVATED] =
       g_signal_new ("link-contacts-activated", G_OBJECT_CLASS_TYPE (klass),
           G_SIGNAL_RUN_LAST, 0, NULL, NULL,
@@ -672,14 +701,17 @@ empathy_individual_menu_class_init (EmpathyIndividualMenuClass *klass)
 
 GtkWidget *
 empathy_individual_menu_new (FolksIndividual *individual,
-    EmpathyIndividualFeatureFlags features)
+    EmpathyIndividualFeatureFlags features,
+    EmpathyIndividualStore *store)
 {
   g_return_val_if_fail (FOLKS_IS_INDIVIDUAL (individual), NULL);
+  g_return_val_if_fail (EMPATHY_IS_INDIVIDUAL_STORE (store), NULL);
   g_return_val_if_fail (features != EMPATHY_INDIVIDUAL_FEATURE_NONE, NULL);
 
   return g_object_new (EMPATHY_TYPE_INDIVIDUAL_MENU,
       "individual", individual,
       "features", features,
+      "store", store,
       NULL);
 }
 
@@ -1420,10 +1452,117 @@ empathy_individual_invite_menu_item_new (FolksIndividual *individual,
 
   gtk_widget_show (image);
 
-  g_hash_table_destroy (name_room_map);
+  g_hash_table_unref (name_room_map);
   g_object_unref (mgr);
   g_list_free (names);
   g_list_free (rooms);
 
   return item;
 }
+
+static void
+add_menu_item_activated (GtkMenuItem *item,
+    TpContact *tp_contact)
+{
+  GtkWidget *toplevel;
+  EmpathyContact *contact;
+
+  toplevel = gtk_widget_get_toplevel (GTK_WIDGET (item));
+  if (!gtk_widget_is_toplevel (toplevel) || !GTK_IS_WINDOW (toplevel))
+    toplevel = NULL;
+
+  contact = empathy_contact_dup_from_tp_contact (tp_contact);
+
+  empathy_new_contact_dialog_show_with_contact (GTK_WINDOW (toplevel),
+      contact);
+
+  g_object_unref (contact);
+}
+
+GtkWidget *
+empathy_individual_add_menu_item_new (EmpathyIndividualMenu *self,
+    FolksIndividual *individual)
+{
+  EmpathyIndividualMenuPriv *priv = GET_PRIV (self);
+  GtkWidget *item, *image;
+  GeeSet *personas;
+  GeeIterator *iter;
+  TpContact *to_add = NULL;
+
+  /* find the first of this Individual's personas which are not in our contact
+   * list. */
+  personas = folks_individual_get_personas (individual);
+  iter = gee_iterable_iterator (GEE_ITERABLE (personas));
+  while (gee_iterator_next (iter))
+    {
+      TpfPersona *persona = gee_iterator_get (iter);
+      TpContact *contact;
+      TpConnection *conn;
+
+      if (!TPF_IS_PERSONA (persona))
+        goto next;
+
+      contact = tpf_persona_get_contact (persona);
+      if (contact == NULL)
+        goto next;
+
+      /* be sure to use a not channel specific contact.
+       * TODO: Ideally tp-glib should do this for us (fdo #42702)*/
+      if (EMPATHY_IS_INDIVIDUAL_STORE_CHANNEL (priv->store))
+        {
+          TpChannel *channel;
+          TpChannelGroupFlags flags;
+
+          channel = empathy_individual_store_channel_get_channel (
+              EMPATHY_INDIVIDUAL_STORE_CHANNEL (priv->store));
+
+          flags = tp_channel_group_get_flags (channel);
+          if ((flags & TP_CHANNEL_GROUP_FLAG_CHANNEL_SPECIFIC_HANDLES) != 0)
+            {
+              /* Channel uses channel specific handles (thanks XMPP...) */
+              contact = tp_channel_group_get_contact_owner (channel, contact);
+
+              /* If we don't know the owner, we can't add the contact */
+              if (contact == NULL)
+                goto next;
+            }
+        }
+
+      conn = tp_contact_get_connection (contact);
+      if (conn == NULL)
+        goto next;
+
+      /* No point to try adding a contact if the CM doesn't support it */
+      if (!tp_connection_get_can_change_contact_list (conn))
+        goto next;
+
+      /* Can't add ourself */
+      if (tp_connection_get_self_contact (conn) == contact)
+        goto next;
+
+      if (tp_contact_get_subscribe_state (contact) == TP_SUBSCRIPTION_STATE_YES)
+        goto next;
+
+      g_object_unref (persona);
+      to_add = contact;
+      break;
+
+next:
+      g_object_unref (persona);
+    }
+
+  g_object_unref (iter);
+
+  if (to_add == NULL)
+    return NULL;
+
+  item = gtk_image_menu_item_new_with_mnemonic (_("_Add Contact…"));
+  image = gtk_image_new_from_icon_name (GTK_STOCK_ADD, GTK_ICON_SIZE_MENU);
+  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
+
+  g_signal_connect_data (item, "activate",
+      G_CALLBACK (add_menu_item_activated),
+      g_object_ref (to_add), (GClosureNotify) g_object_unref, 0);
+
+  return item;
+}
index 2a51605d6b02b48522245de5239812f2d0e6d70b..31acc156ee9f5314d9889646effe2257f9c6bedc 100644 (file)
@@ -25,6 +25,8 @@
 
 #include <gtk/gtk.h>
 
+#include "empathy-individual-store.h"
+
 G_BEGIN_DECLS
 
 typedef enum {
@@ -38,7 +40,8 @@ typedef enum {
        EMPATHY_INDIVIDUAL_FEATURE_LINK = 1 << 6,
        EMPATHY_INDIVIDUAL_FEATURE_SMS = 1 << 7,
        EMPATHY_INDIVIDUAL_FEATURE_CALL_PHONE = 1 << 8,
-       EMPATHY_INDIVIDUAL_FEATURE_ALL = (1 << 9) - 1,
+       EMPATHY_INDIVIDUAL_FEATURE_ADD_CONTACT = 1 << 9,
+       EMPATHY_INDIVIDUAL_FEATURE_ALL = (1 << 10) - 1,
 } EmpathyIndividualFeatureFlags;
 
 #define EMPATHY_TYPE_INDIVIDUAL_MENU (empathy_individual_menu_get_type ())
@@ -68,7 +71,8 @@ typedef struct {
 GType empathy_individual_menu_get_type (void) G_GNUC_CONST;
 
 GtkWidget * empathy_individual_menu_new (FolksIndividual *individual,
-    EmpathyIndividualFeatureFlags features);
+    EmpathyIndividualFeatureFlags features,
+    EmpathyIndividualStore *store);
 GtkWidget * empathy_individual_chat_menu_item_new (FolksIndividual *individual,
     EmpathyContact *contact);
 GtkWidget * empathy_individual_sms_menu_item_new (FolksIndividual *individual,
@@ -95,6 +99,8 @@ GtkWidget * empathy_individual_share_my_desktop_menu_item_new (
     EmpathyContact *contact);
 GtkWidget * empathy_individual_favourite_menu_item_new (
     FolksIndividual *individual);
+GtkWidget * empathy_individual_add_menu_item_new (EmpathyIndividualMenu *self,
+    FolksIndividual *individual);
 
 G_END_DECLS
 
diff --git a/libempathy-gtk/empathy-individual-store-channel.c b/libempathy-gtk/empathy-individual-store-channel.c
new file mode 100644 (file)
index 0000000..7528460
--- /dev/null
@@ -0,0 +1,341 @@
+/*
+ * Copyright (C) 2005-2007 Imendio AB
+ * Copyright (C) 2007-2011 Collabora Ltd.
+ *
+ * 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., 51 Franklin St, Fifth Floor,
+ * Boston, MA  02110-1301  USA
+ *
+ * Authors: Mikael Hallendal <micke@imendio.com>
+ *          Martyn Russell <martyn@imendio.com>
+ *          Xavier Claessens <xclaesse@gmail.com>
+ *          Travis Reitter <travis.reitter@collabora.co.uk>
+ */
+
+#include "config.h"
+
+#include <string.h>
+
+#include <glib.h>
+#include <glib/gi18n-lib.h>
+#include <gtk/gtk.h>
+
+#include <folks/folks.h>
+#include <folks/folks-telepathy.h>
+#include <telepathy-glib/util.h>
+
+#include <libempathy/empathy-utils.h>
+#include <libempathy/empathy-enum-types.h>
+
+#include "empathy-individual-store-channel.h"
+
+#include "empathy-ui-utils.h"
+#include "empathy-gtk-enum-types.h"
+
+#define DEBUG_FLAG EMPATHY_DEBUG_CONTACT
+#include <libempathy/empathy-debug.h>
+
+struct _EmpathyIndividualStoreChannelPriv
+{
+  TpChannel *channel;
+
+  /* TpContact => FolksIndividual
+   * We keep the individuals we have added to the store so can easily remove
+   * them when their TpContact leaves the channel. */
+  GHashTable *individuals;
+};
+
+enum
+{
+  PROP_0,
+  PROP_CHANNEL,
+};
+
+
+G_DEFINE_TYPE (EmpathyIndividualStoreChannel, empathy_individual_store_channel,
+    EMPATHY_TYPE_INDIVIDUAL_STORE);
+
+static void
+add_members (EmpathyIndividualStoreChannel *self,
+    GPtrArray *members)
+{
+  EmpathyIndividualStore *store = (EmpathyIndividualStore *) self;
+  guint i;
+
+  for (i = 0; i < members->len; i++)
+    {
+      TpContact *contact = g_ptr_array_index (members, i);
+      FolksIndividual *individual;
+
+      if (g_hash_table_lookup (self->priv->individuals, contact) != NULL)
+        continue;
+
+      individual = empathy_create_individual_from_tp_contact (contact);
+
+      DEBUG ("%s joined channel %s", tp_contact_get_identifier (contact),
+          tp_proxy_get_object_path (self->priv->channel));
+
+      individual_store_add_individual_and_connect (store, individual);
+
+      /* Pass the individual reference to the hash table */
+      g_hash_table_insert (self->priv->individuals, g_object_ref (contact),
+          individual);
+    }
+}
+
+static void
+remove_members (EmpathyIndividualStoreChannel *self,
+    GPtrArray *members)
+{
+  EmpathyIndividualStore *store = (EmpathyIndividualStore *) self;
+  guint i;
+
+  for (i = 0; i < members->len; i++)
+    {
+      TpContact *contact = g_ptr_array_index (members, i);
+      FolksIndividual *individual;
+
+      individual = g_hash_table_lookup (self->priv->individuals, contact);
+      if (individual == NULL)
+        continue;
+
+      DEBUG ("%s left channel %s", tp_contact_get_identifier (contact),
+          tp_proxy_get_object_path (self->priv->channel));
+
+      individual_store_remove_individual_and_disconnect (store, individual);
+
+      g_hash_table_remove (self->priv->individuals, contact);
+    }
+}
+
+static void
+group_contacts_changed_cb (TpChannel *channel,
+    GPtrArray *added,
+    GPtrArray *removed,
+    GPtrArray *local_pending,
+    GPtrArray *remote_pending,
+    TpContact *actor,
+    GHashTable *details,
+    gpointer user_data)
+{
+  EmpathyIndividualStoreChannel *self = EMPATHY_INDIVIDUAL_STORE_CHANNEL (
+      user_data);
+
+  remove_members (self, removed);
+  add_members (self, added);
+}
+
+static void
+channel_prepare_cb (GObject *source,
+    GAsyncResult *result,
+    gpointer user_data)
+{
+  EmpathyIndividualStoreChannel *self = user_data;
+  TpChannel *channel = (TpChannel *) source;
+  GError *error = NULL;
+  GPtrArray *members;
+
+  if (!tp_proxy_prepare_finish (source, result, &error))
+    {
+      DEBUG ("Failed to prepare %s: %s", tp_proxy_get_object_path (source),
+          error->message);
+
+      g_error_free (error);
+    }
+
+  /* Add initial members */
+  members = tp_channel_group_dup_members_contacts (channel);
+  if (members != NULL)
+    {
+      add_members (self, members);
+      g_ptr_array_unref (members);
+    }
+
+  tp_g_signal_connect_object (channel, "group-contacts-changed",
+      G_CALLBACK (group_contacts_changed_cb), self, 0);
+}
+
+static void
+individual_store_channel_set_individual_channel (
+    EmpathyIndividualStoreChannel *self,
+    TpChannel *channel)
+{
+  GQuark features[] = { TP_CHANNEL_FEATURE_CONTACTS, 0 };
+
+  g_assert (self->priv->channel == NULL); /* construct only */
+  self->priv->channel = g_object_ref (channel);
+
+  tp_proxy_prepare_async (channel, features, channel_prepare_cb, self);
+}
+
+static void
+individual_store_channel_dispose (GObject *object)
+{
+  EmpathyIndividualStoreChannel *self = EMPATHY_INDIVIDUAL_STORE_CHANNEL (
+      object);
+  EmpathyIndividualStore *store = EMPATHY_INDIVIDUAL_STORE (object);
+  GHashTableIter iter;
+  gpointer v;
+
+  g_hash_table_iter_init (&iter, self->priv->individuals);
+  while (g_hash_table_iter_next (&iter, NULL, &v))
+    {
+      FolksIndividual *individual = v;
+
+      empathy_individual_store_disconnect_individual (store, individual);
+    }
+
+  tp_clear_pointer (&self->priv->individuals, g_hash_table_unref);
+  g_clear_object (&self->priv->channel);
+
+  G_OBJECT_CLASS (empathy_individual_store_channel_parent_class)->dispose (
+      object);
+}
+
+static void
+individual_store_channel_get_property (GObject *object,
+    guint param_id,
+    GValue *value,
+    GParamSpec *pspec)
+{
+  EmpathyIndividualStoreChannel *self = EMPATHY_INDIVIDUAL_STORE_CHANNEL (
+      object);
+
+  switch (param_id)
+    {
+    case PROP_CHANNEL:
+      g_value_set_object (value, self->priv->channel);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+      break;
+    };
+}
+
+static void
+individual_store_channel_set_property (GObject *object,
+    guint param_id,
+    const GValue *value,
+    GParamSpec *pspec)
+{
+  switch (param_id)
+    {
+    case PROP_CHANNEL:
+      individual_store_channel_set_individual_channel (
+          EMPATHY_INDIVIDUAL_STORE_CHANNEL (object),
+          g_value_get_object (value));
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+      break;
+    };
+}
+
+static void
+individual_store_channel_reload_individuals (EmpathyIndividualStore *store)
+{
+  EmpathyIndividualStoreChannel *self = EMPATHY_INDIVIDUAL_STORE_CHANNEL (
+      store);
+  GPtrArray *members;
+  GList *list, *l;
+
+  /* remove all. The list returned by g_hash_table_get_keys() is valid until
+   * the hash table is modified so we can't remove the contact directly in the
+   * iteration. */
+  members = g_ptr_array_new_with_free_func (g_object_unref);
+
+  list = g_hash_table_get_keys (self->priv->individuals);
+  for (l = list; l != NULL; l = g_list_next (l))
+    {
+      g_ptr_array_add (members, g_object_ref (l->data));
+    }
+
+  remove_members (self, members);
+
+  g_list_free (list);
+  g_ptr_array_unref (members);
+
+  /* re-add members */
+  members = tp_channel_group_dup_members_contacts (self->priv->channel);
+  if (members == NULL)
+    return;
+
+  add_members (self, members);
+  g_ptr_array_unref (members);
+}
+
+static gboolean
+individual_store_channel_initial_loading (EmpathyIndividualStore *store)
+{
+  EmpathyIndividualStoreChannel *self = EMPATHY_INDIVIDUAL_STORE_CHANNEL (
+      store);
+
+  return !tp_proxy_is_prepared (self->priv->channel,
+      TP_CHANNEL_FEATURE_CONTACTS);
+}
+
+static void
+empathy_individual_store_channel_class_init (
+    EmpathyIndividualStoreChannelClass *klass)
+{
+  GObjectClass *object_class = G_OBJECT_CLASS (klass);
+  EmpathyIndividualStoreClass *store_class = EMPATHY_INDIVIDUAL_STORE_CLASS (
+      klass);
+
+  object_class->dispose = individual_store_channel_dispose;
+  object_class->get_property = individual_store_channel_get_property;
+  object_class->set_property = individual_store_channel_set_property;
+
+  store_class->reload_individuals = individual_store_channel_reload_individuals;
+  store_class->initial_loading = individual_store_channel_initial_loading;
+
+  g_object_class_install_property (object_class,
+      PROP_CHANNEL,
+      g_param_spec_object ("individual-channel",
+          "Individual channel",
+          "Individual channel",
+          TP_TYPE_CHANNEL,
+          G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE));
+
+  g_type_class_add_private (object_class,
+      sizeof (EmpathyIndividualStoreChannelPriv));
+}
+
+static void
+empathy_individual_store_channel_init (EmpathyIndividualStoreChannel *self)
+{
+  self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self,
+      EMPATHY_TYPE_INDIVIDUAL_STORE_CHANNEL, EmpathyIndividualStoreChannelPriv);
+
+  self->priv->individuals = g_hash_table_new_full (NULL, NULL, g_object_unref,
+      g_object_unref);
+}
+
+EmpathyIndividualStoreChannel *
+empathy_individual_store_channel_new (TpChannel *channel)
+{
+  g_return_val_if_fail (TP_IS_CHANNEL (channel), NULL);
+
+  return g_object_new (EMPATHY_TYPE_INDIVIDUAL_STORE_CHANNEL,
+      "individual-channel", channel, NULL);
+}
+
+TpChannel *
+empathy_individual_store_channel_get_channel (
+    EmpathyIndividualStoreChannel *self)
+{
+  g_return_val_if_fail (EMPATHY_IS_INDIVIDUAL_STORE_CHANNEL (self), FALSE);
+
+  return self->priv->channel;
+}
diff --git a/libempathy-gtk/empathy-individual-store-channel.h b/libempathy-gtk/empathy-individual-store-channel.h
new file mode 100644 (file)
index 0000000..468effe
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ * Copyright (C) 2005-2007 Imendio AB
+ * Copyright (C) 2007-2011 Collabora Ltd.
+ *
+ * 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., 51 Franklin St, Fifth Floor,
+ * Boston, MA  02110-1301  USA
+ *
+ * Authors: Mikael Hallendal <micke@imendio.com>
+ *          Martyn Russell <martyn@imendio.com>
+ *          Xavier Claessens <xclaesse@gmail.com>
+ *          Travis Reitter <travis.reitter@collabora.co.uk>
+ */
+
+#ifndef __EMPATHY_INDIVIDUAL_STORE_CHANNEL_H__
+#define __EMPATHY_INDIVIDUAL_STORE_CHANNEL_H__
+
+#include <gtk/gtk.h>
+
+#include <libempathy-gtk/empathy-individual-store.h>
+
+G_BEGIN_DECLS
+#define EMPATHY_TYPE_INDIVIDUAL_STORE_CHANNEL         (empathy_individual_store_channel_get_type ())
+#define EMPATHY_INDIVIDUAL_STORE_CHANNEL(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_INDIVIDUAL_STORE_CHANNEL, EmpathyIndividualStoreChannel))
+#define EMPATHY_INDIVIDUAL_STORE_CHANNEL_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), EMPATHY_TYPE_INDIVIDUAL_STORE_CHANNEL, EmpathyIndividualStoreChannelClass))
+#define EMPATHY_IS_INDIVIDUAL_STORE_CHANNEL(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_INDIVIDUAL_STORE_CHANNEL))
+#define EMPATHY_IS_INDIVIDUAL_STORE_CHANNEL_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), EMPATHY_TYPE_INDIVIDUAL_STORE_CHANNEL))
+#define EMPATHY_INDIVIDUAL_STORE_CHANNEL_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EMPATHY_TYPE_INDIVIDUAL_STORE_CHANNEL, EmpathyIndividualStoreChannelClass))
+
+typedef struct _EmpathyIndividualStoreChannel EmpathyIndividualStoreChannel;
+typedef struct _EmpathyIndividualStoreChannelClass EmpathyIndividualStoreChannelClass;
+typedef struct _EmpathyIndividualStoreChannelPriv EmpathyIndividualStoreChannelPriv;
+
+struct _EmpathyIndividualStoreChannel
+{
+  EmpathyIndividualStore parent;
+  EmpathyIndividualStoreChannelPriv *priv;
+};
+
+struct _EmpathyIndividualStoreChannelClass
+{
+  EmpathyIndividualStoreClass parent_class;
+};
+
+GType empathy_individual_store_channel_get_type (void) G_GNUC_CONST;
+
+EmpathyIndividualStoreChannel * empathy_individual_store_channel_new (
+    TpChannel *channel);
+
+TpChannel * empathy_individual_store_channel_get_channel (
+    EmpathyIndividualStoreChannel *store);
+
+G_END_DECLS
+#endif /* __EMPATHY_INDIVIDUAL_STORE_CHANNEL_H__ */
diff --git a/libempathy-gtk/empathy-individual-store-manager.c b/libempathy-gtk/empathy-individual-store-manager.c
new file mode 100644 (file)
index 0000000..288d9e3
--- /dev/null
@@ -0,0 +1,328 @@
+/*
+ * Copyright (C) 2005-2007 Imendio AB
+ * Copyright (C) 2007-2011 Collabora Ltd.
+ *
+ * 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., 51 Franklin St, Fifth Floor,
+ * Boston, MA  02110-1301  USA
+ *
+ * Authors: Mikael Hallendal <micke@imendio.com>
+ *          Martyn Russell <martyn@imendio.com>
+ *          Xavier Claessens <xclaesse@gmail.com>
+ *          Travis Reitter <travis.reitter@collabora.co.uk>
+ */
+
+#include "config.h"
+
+#include <string.h>
+
+#include <glib.h>
+#include <glib/gi18n-lib.h>
+#include <gtk/gtk.h>
+
+#include <folks/folks.h>
+#include <folks/folks-telepathy.h>
+#include <telepathy-glib/util.h>
+
+#include <libempathy/empathy-utils.h>
+#include <libempathy/empathy-enum-types.h>
+#include <libempathy/empathy-individual-manager.h>
+
+#include "empathy-individual-store-manager.h"
+
+#include "empathy-ui-utils.h"
+#include "empathy-gtk-enum-types.h"
+
+#define DEBUG_FLAG EMPATHY_DEBUG_CONTACT
+#include <libempathy/empathy-debug.h>
+
+struct _EmpathyIndividualStoreManagerPriv
+{
+  EmpathyIndividualManager *manager;
+  gboolean setup_idle_id;
+};
+
+enum
+{
+  PROP_0,
+  PROP_INDIVIDUAL_MANAGER,
+};
+
+
+G_DEFINE_TYPE (EmpathyIndividualStoreManager, empathy_individual_store_manager,
+    EMPATHY_TYPE_INDIVIDUAL_STORE);
+
+static void
+individual_store_manager_members_changed_cb (EmpathyIndividualManager *manager,
+    const gchar *message,
+    GList *added,
+    GList *removed,
+    guint reason,
+    EmpathyIndividualStoreManager *self)
+{
+  GList *l;
+  EmpathyIndividualStore *store = EMPATHY_INDIVIDUAL_STORE (self);
+
+  for (l = removed; l; l = l->next)
+    {
+      DEBUG ("Individual %s %s",
+          folks_individual_get_id (l->data), "removed");
+
+      individual_store_remove_individual_and_disconnect (store, l->data);
+    }
+
+  for (l = added; l; l = l->next)
+    {
+      DEBUG ("Individual %s %s", folks_individual_get_id (l->data), "added");
+
+      individual_store_add_individual_and_connect (store, l->data);
+    }
+}
+
+static void
+individual_store_manager_groups_changed_cb (EmpathyIndividualManager *manager,
+    FolksIndividual *individual,
+    gchar *group,
+    gboolean is_member,
+    EmpathyIndividualStoreManager *self)
+{
+  EmpathyIndividualStore *store = EMPATHY_INDIVIDUAL_STORE (self);
+
+  DEBUG ("Updating groups for individual %s",
+      folks_individual_get_id (individual));
+
+  /* We do this to make sure the groups are correct, if not, we
+   * would have to check the groups already set up for each
+   * contact and then see what has been updated.
+   */
+  empathy_individual_store_refresh_individual (store, individual);
+}
+
+static gboolean
+individual_store_manager_manager_setup (gpointer user_data)
+{
+  EmpathyIndividualStoreManager *self = user_data;
+  GList *individuals;
+
+  /* Signal connection. */
+
+  DEBUG ("handling individual renames unimplemented");
+
+  g_signal_connect (self->priv->manager,
+      "members-changed",
+      G_CALLBACK (individual_store_manager_members_changed_cb), self);
+
+  g_signal_connect (self->priv->manager,
+      "groups-changed",
+      G_CALLBACK (individual_store_manager_groups_changed_cb), self);
+
+  /* Add contacts already created. */
+  individuals = empathy_individual_manager_get_members (self->priv->manager);
+  if (individuals != NULL)
+    {
+      individual_store_manager_members_changed_cb (self->priv->manager, "initial add",
+          individuals, NULL, 0, self);
+      g_list_free (individuals);
+    }
+
+  self->priv->setup_idle_id = 0;
+  return FALSE;
+}
+
+static void
+individual_store_manager_set_individual_manager (
+    EmpathyIndividualStoreManager *self,
+    EmpathyIndividualManager *manager)
+{
+  g_assert (self->priv->manager == NULL); /* construct only */
+  self->priv->manager = g_object_ref (manager);
+
+  /* Let a chance to have all properties set before populating */
+  self->priv->setup_idle_id = g_idle_add (
+      individual_store_manager_manager_setup, self);
+}
+
+static void
+individual_store_manager_member_renamed_cb (EmpathyIndividualManager *manager,
+    FolksIndividual *old_individual,
+    FolksIndividual *new_individual,
+    guint reason,
+    const gchar *message,
+    EmpathyIndividualStoreManager *self)
+{
+  EmpathyIndividualStore *store = EMPATHY_INDIVIDUAL_STORE (self);
+
+  DEBUG ("Individual %s renamed to %s",
+      folks_individual_get_id (old_individual),
+      folks_individual_get_id (new_individual));
+
+  /* remove old contact */
+  individual_store_remove_individual_and_disconnect (store, old_individual);
+
+  /* add the new contact */
+  individual_store_add_individual_and_connect (store, new_individual);
+}
+
+static void
+individual_store_manager_dispose (GObject *object)
+{
+  EmpathyIndividualStoreManager *self = EMPATHY_INDIVIDUAL_STORE_MANAGER (
+      object);
+  EmpathyIndividualStore *store = EMPATHY_INDIVIDUAL_STORE (object);
+  GList *individuals, *l;
+
+  individuals = empathy_individual_manager_get_members (self->priv->manager);
+  for (l = individuals; l; l = l->next)
+    {
+      empathy_individual_store_disconnect_individual (store,
+          FOLKS_INDIVIDUAL (l->data));
+    }
+  tp_clear_pointer (&individuals, g_list_free);
+
+  if (self->priv->manager != NULL)
+    {
+      g_signal_handlers_disconnect_by_func (self->priv->manager,
+          G_CALLBACK (individual_store_manager_member_renamed_cb), object);
+      g_signal_handlers_disconnect_by_func (self->priv->manager,
+          G_CALLBACK (individual_store_manager_members_changed_cb), object);
+      g_signal_handlers_disconnect_by_func (self->priv->manager,
+          G_CALLBACK (individual_store_manager_groups_changed_cb), object);
+      g_clear_object (&self->priv->manager);
+    }
+
+  if (self->priv->setup_idle_id != 0)
+    {
+      g_source_remove (self->priv->setup_idle_id);
+      self->priv->setup_idle_id = 0;
+    }
+
+  G_OBJECT_CLASS (empathy_individual_store_manager_parent_class)->dispose (
+      object);
+}
+
+static void
+individual_store_manager_get_property (GObject *object,
+    guint param_id,
+    GValue *value,
+    GParamSpec *pspec)
+{
+  EmpathyIndividualStoreManager *self = EMPATHY_INDIVIDUAL_STORE_MANAGER (
+      object);
+
+  switch (param_id)
+    {
+    case PROP_INDIVIDUAL_MANAGER:
+      g_value_set_object (value, self->priv->manager);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+      break;
+    };
+}
+
+static void
+individual_store_manager_set_property (GObject *object,
+    guint param_id,
+    const GValue *value,
+    GParamSpec *pspec)
+{
+  switch (param_id)
+    {
+    case PROP_INDIVIDUAL_MANAGER:
+      individual_store_manager_set_individual_manager (
+          EMPATHY_INDIVIDUAL_STORE_MANAGER (object),
+          g_value_get_object (value));
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+      break;
+    };
+}
+
+static void
+individual_store_manager_reload_individuals (EmpathyIndividualStore *store)
+{
+  EmpathyIndividualStoreManager *self = EMPATHY_INDIVIDUAL_STORE_MANAGER (
+      store);
+  GList *contacts;
+
+  contacts = empathy_individual_manager_get_members (self->priv->manager);
+
+  individual_store_manager_members_changed_cb (self->priv->manager,
+      "re-adding members: toggled group visibility",
+      contacts, NULL, 0, self);
+
+  g_list_free (contacts);
+}
+
+static gboolean
+individual_store_manager_initial_loading (EmpathyIndividualStore *store)
+{
+  EmpathyIndividualStoreManager *self = EMPATHY_INDIVIDUAL_STORE_MANAGER (
+      store);
+
+  return self->priv->setup_idle_id != 0;
+}
+
+static void
+empathy_individual_store_manager_class_init (
+    EmpathyIndividualStoreManagerClass *klass)
+{
+  GObjectClass *object_class = G_OBJECT_CLASS (klass);
+  EmpathyIndividualStoreClass *store_class = EMPATHY_INDIVIDUAL_STORE_CLASS (
+      klass);
+
+  object_class->dispose = individual_store_manager_dispose;
+  object_class->get_property = individual_store_manager_get_property;
+  object_class->set_property = individual_store_manager_set_property;
+
+  store_class->reload_individuals = individual_store_manager_reload_individuals;
+  store_class->initial_loading = individual_store_manager_initial_loading;
+
+  g_object_class_install_property (object_class,
+      PROP_INDIVIDUAL_MANAGER,
+      g_param_spec_object ("individual-manager",
+          "Individual manager",
+          "Individual manager",
+          EMPATHY_TYPE_INDIVIDUAL_MANAGER,
+          G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE));
+
+  g_type_class_add_private (object_class,
+      sizeof (EmpathyIndividualStoreManagerPriv));
+}
+
+static void
+empathy_individual_store_manager_init (EmpathyIndividualStoreManager *self)
+{
+  self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self,
+      EMPATHY_TYPE_INDIVIDUAL_STORE_MANAGER, EmpathyIndividualStoreManagerPriv);
+}
+
+EmpathyIndividualStoreManager *
+empathy_individual_store_manager_new (EmpathyIndividualManager *manager)
+{
+  g_return_val_if_fail (EMPATHY_IS_INDIVIDUAL_MANAGER (manager), NULL);
+
+  return g_object_new (EMPATHY_TYPE_INDIVIDUAL_STORE_MANAGER,
+      "individual-manager", manager, NULL);
+}
+
+EmpathyIndividualManager *
+empathy_individual_store_manager_get_manager (
+    EmpathyIndividualStoreManager *self)
+{
+  g_return_val_if_fail (EMPATHY_IS_INDIVIDUAL_STORE_MANAGER (self), FALSE);
+
+  return self->priv->manager;
+}
diff --git a/libempathy-gtk/empathy-individual-store-manager.h b/libempathy-gtk/empathy-individual-store-manager.h
new file mode 100644 (file)
index 0000000..7656b50
--- /dev/null
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2005-2007 Imendio AB
+ * Copyright (C) 2007-2011 Collabora Ltd.
+ *
+ * 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., 51 Franklin St, Fifth Floor,
+ * Boston, MA  02110-1301  USA
+ *
+ * Authors: Mikael Hallendal <micke@imendio.com>
+ *          Martyn Russell <martyn@imendio.com>
+ *          Xavier Claessens <xclaesse@gmail.com>
+ *          Travis Reitter <travis.reitter@collabora.co.uk>
+ */
+
+#ifndef __EMPATHY_INDIVIDUAL_STORE_MANAGER_H__
+#define __EMPATHY_INDIVIDUAL_STORE_MANAGER_H__
+
+#include <gtk/gtk.h>
+
+#include <libempathy/empathy-individual-manager.h>
+
+#include <libempathy-gtk/empathy-individual-store.h>
+
+G_BEGIN_DECLS
+#define EMPATHY_TYPE_INDIVIDUAL_STORE_MANAGER         (empathy_individual_store_manager_get_type ())
+#define EMPATHY_INDIVIDUAL_STORE_MANAGER(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_INDIVIDUAL_STORE_MANAGER, EmpathyIndividualStoreManager))
+#define EMPATHY_INDIVIDUAL_STORE_MANAGER_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), EMPATHY_TYPE_INDIVIDUAL_STORE_MANAGER, EmpathyIndividualStoreManagerClass))
+#define EMPATHY_IS_INDIVIDUAL_STORE_MANAGER(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_INDIVIDUAL_STORE_MANAGER))
+#define EMPATHY_IS_INDIVIDUAL_STORE_MANAGER_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), EMPATHY_TYPE_INDIVIDUAL_STORE_MANAGER))
+#define EMPATHY_INDIVIDUAL_STORE_MANAGER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EMPATHY_TYPE_INDIVIDUAL_STORE_MANAGER, EmpathyIndividualStoreManagerClass))
+
+typedef struct _EmpathyIndividualStoreManager EmpathyIndividualStoreManager;
+typedef struct _EmpathyIndividualStoreManagerClass EmpathyIndividualStoreManagerClass;
+typedef struct _EmpathyIndividualStoreManagerPriv EmpathyIndividualStoreManagerPriv;
+
+struct _EmpathyIndividualStoreManager
+{
+  EmpathyIndividualStore parent;
+  EmpathyIndividualStoreManagerPriv *priv;
+};
+
+struct _EmpathyIndividualStoreManagerClass
+{
+  EmpathyIndividualStoreClass parent_class;
+};
+
+GType empathy_individual_store_manager_get_type (void) G_GNUC_CONST;
+
+EmpathyIndividualStoreManager *empathy_individual_store_manager_new (
+    EmpathyIndividualManager *manager);
+
+EmpathyIndividualManager *empathy_individual_store_manager_get_manager (
+    EmpathyIndividualStoreManager *store);
+
+G_END_DECLS
+#endif /* __EMPATHY_INDIVIDUAL_STORE_MANAGER_H__ */
index e7b859f98600acd16b3c666ab25c38b9e0112279..aa3f6334d77f033115ab5ba3a9ae4691367fae13 100644 (file)
@@ -38,7 +38,6 @@
 
 #include <libempathy/empathy-utils.h>
 #include <libempathy/empathy-enum-types.h>
-#include <libempathy/empathy-individual-manager.h>
 
 #include "empathy-individual-store.h"
 #include "empathy-ui-utils.h"
 /* Time in seconds after connecting which we wait before active users are enabled */
 #define ACTIVE_USER_WAIT_TO_ENABLE_TIME 5
 
-#define GET_PRIV(obj) EMPATHY_GET_PRIV (obj, EmpathyIndividualStore)
-typedef struct
+struct _EmpathyIndividualStorePriv
 {
-  EmpathyIndividualManager *manager;
   gboolean show_avatars;
   gboolean show_groups;
   gboolean is_compact;
   gboolean show_protocols;
-  gboolean show_active;
   EmpathyIndividualStoreSort sort_criterium;
   guint inhibit_active;
-  guint setup_idle_id;
   gboolean dispose_has_run;
   GHashTable *status_icons;
   /* List of owned GCancellables for each pending avatar load operation */
@@ -77,7 +72,8 @@ typedef struct
   GHashTable                  *folks_individual_cache;
   /* Hash: char *groupname -> GtkTreeIter * */
   GHashTable                  *empathy_group_cache;
-} EmpathyIndividualStorePriv;
+  gboolean show_active;
+};
 
 typedef struct
 {
@@ -90,7 +86,6 @@ typedef struct
 enum
 {
   PROP_0,
-  PROP_INDIVIDUAL_MANAGER,
   PROP_SHOW_AVATARS,
   PROP_SHOW_PROTOCOLS,
   PROP_SHOW_GROUPS,
@@ -148,12 +143,12 @@ while_finish:
 }
 
 static void
-add_individual_to_store (GtkTreeStore *self,
+add_individual_to_store (GtkTreeStore *store,
     GtkTreeIter *iter,
     GtkTreeIter *parent,
     FolksIndividual *individual)
 {
-  EmpathyIndividualStorePriv *priv = GET_PRIV (self);
+  EmpathyIndividualStore *self = EMPATHY_INDIVIDUAL_STORE (store);
   gboolean can_audio_call, can_video_call;
   const gchar * const *types;
   GQueue *queue;
@@ -163,7 +158,7 @@ add_individual_to_store (GtkTreeStore *self,
 
   types = individual_get_client_types (individual);
 
-  gtk_tree_store_insert_with_values (self, iter, parent, 0,
+  gtk_tree_store_insert_with_values (store, iter, parent, 0,
       EMPATHY_INDIVIDUAL_STORE_COL_NAME,
       folks_alias_details_get_alias (FOLKS_ALIAS_DETAILS (individual)),
       EMPATHY_INDIVIDUAL_STORE_COL_INDIVIDUAL, individual,
@@ -174,7 +169,7 @@ add_individual_to_store (GtkTreeStore *self,
       EMPATHY_INDIVIDUAL_STORE_COL_CLIENT_TYPES, types,
       -1);
 
-  queue = g_hash_table_lookup (priv->folks_individual_cache, individual);
+  queue = g_hash_table_lookup (self->priv->folks_individual_cache, individual);
   if (queue)
     {
       g_queue_push_tail (queue, gtk_tree_iter_copy (iter));
@@ -183,7 +178,7 @@ add_individual_to_store (GtkTreeStore *self,
     {
       queue = g_queue_new ();
       g_queue_push_tail (queue, gtk_tree_iter_copy (iter));
-      g_hash_table_insert (priv->folks_individual_cache, individual,
+      g_hash_table_insert (self->priv->folks_individual_cache, individual,
           queue);
     }
 }
@@ -196,14 +191,13 @@ individual_store_get_group (EmpathyIndividualStore *self,
     gboolean *created,
     gboolean is_fake_group)
 {
-  EmpathyIndividualStorePriv *priv = GET_PRIV (self);
   GtkTreeModel *model;
   GtkTreeIter iter_group;
   GtkTreeIter iter_separator;
   GtkTreeIter *iter;
 
   model = GTK_TREE_MODEL (self);
-  iter = g_hash_table_lookup (priv->empathy_group_cache, name);
+  iter = g_hash_table_lookup (self->priv->empathy_group_cache, name);
 
   if (iter == NULL)
     {
@@ -220,7 +214,7 @@ individual_store_get_group (EmpathyIndividualStore *self,
           EMPATHY_INDIVIDUAL_STORE_COL_IS_FAKE_GROUP, is_fake_group,
           -1);
 
-      g_hash_table_insert (priv->empathy_group_cache, g_strdup (name),
+      g_hash_table_insert (self->priv->empathy_group_cache, g_strdup (name),
           gtk_tree_iter_copy (&iter_group));
 
       if (iter_group_to_set)
@@ -261,12 +255,11 @@ static GList *
 individual_store_find_contact (EmpathyIndividualStore *self,
     FolksIndividual *individual)
 {
-  EmpathyIndividualStorePriv *priv = GET_PRIV (self);
   GQueue *row_refs_queue;
   GList *i;
   GList *iters_list = NULL;
 
-  row_refs_queue = g_hash_table_lookup (priv->folks_individual_cache,
+  row_refs_queue = g_hash_table_lookup (self->priv->folks_individual_cache,
       individual);
   if (!row_refs_queue)
     return NULL;
@@ -288,16 +281,16 @@ free_iters (GList *iters)
   g_list_free (iters);
 }
 
-static void
-individual_store_remove_individual (EmpathyIndividualStore *self,
+void
+empathy_individual_store_remove_individual (EmpathyIndividualStore *self,
     FolksIndividual *individual)
 {
-  EmpathyIndividualStorePriv *priv = GET_PRIV (self);
   GtkTreeModel *model;
   GQueue *row_refs;
   GList *l;
 
-  row_refs = g_hash_table_lookup (priv->folks_individual_cache, individual);
+  row_refs = g_hash_table_lookup (self->priv->folks_individual_cache,
+      individual);
   if (!row_refs)
     return;
 
@@ -318,9 +311,9 @@ individual_store_remove_individual (EmpathyIndividualStore *self,
         {
           gchar *group_name;
           gtk_tree_model_get (model, &parent,
-              EMPATHY_CONTACT_LIST_STORE_COL_NAME, &group_name,
+              EMPATHY_INDIVIDUAL_STORE_COL_NAME, &group_name,
               -1);
-          g_hash_table_remove (priv->empathy_group_cache,
+          g_hash_table_remove (self->priv->empathy_group_cache,
               group_name);
           gtk_tree_store_remove (GTK_TREE_STORE (self), &parent);
         }
@@ -330,24 +323,21 @@ individual_store_remove_individual (EmpathyIndividualStore *self,
         }
     }
 
-  g_hash_table_remove (priv->folks_individual_cache, individual);
+  g_hash_table_remove (self->priv->folks_individual_cache, individual);
 }
 
-static void
-individual_store_add_individual (EmpathyIndividualStore *self,
+void
+empathy_individual_store_add_individual (EmpathyIndividualStore *self,
     FolksIndividual *individual)
 {
-  EmpathyIndividualStorePriv *priv;
   GtkTreeIter iter;
   GeeIterator *group_iter = NULL;
 
-  priv = GET_PRIV (self);
-
   if (EMP_STR_EMPTY (folks_alias_details_get_alias (
           FOLKS_ALIAS_DETAILS (individual))))
     return;
 
-  if (priv->show_groups)
+  if (self->priv->show_groups)
     {
       GeeSet *group_set = NULL;
 
@@ -375,7 +365,7 @@ individual_store_add_individual (EmpathyIndividualStore *self,
           tp_connection_parse_object_path (connection, &protocol_name, NULL);
         }
 
-      if (!priv->show_groups)
+      if (!self->priv->show_groups)
         parent = NULL;
       else if (!tp_strdiff (protocol_name, "local-xmpp"))
         {
@@ -414,7 +404,7 @@ individual_store_add_individual (EmpathyIndividualStore *self,
     }
   g_clear_object (&group_iter);
 
-  if (priv->show_groups &&
+  if (self->priv->show_groups &&
       folks_favourite_details_get_is_favourite (
           FOLKS_FAVOURITE_DETAILS (individual)))
     {
@@ -539,7 +529,7 @@ individual_store_contact_active_cb (ShowActiveData *data)
       DEBUG ("Individual'%s' active timeout, removing item",
           folks_alias_details_get_alias (
             FOLKS_ALIAS_DETAILS (data->individual)));
-      individual_store_remove_individual (data->self, data->individual);
+      empathy_individual_store_remove_individual (data->self, data->individual);
     }
 
   DEBUG ("Individual'%s' no longer active",
@@ -594,12 +584,10 @@ individual_avatar_pixbuf_received_cb (FolksIndividual *individual,
   /* Free things */
   if (data->store != NULL)
     {
-      EmpathyIndividualStorePriv *priv = GET_PRIV (data->store);
-
       g_object_remove_weak_pointer (G_OBJECT (data->store),
           (gpointer *) &data->store);
-      priv->avatar_cancellables = g_list_remove (priv->avatar_cancellables,
-          data->cancellable);
+      data->store->priv->avatar_cancellables = g_list_remove (
+          data->store->priv->avatar_cancellables, data->cancellable);
     }
 
   tp_clear_object (&pixbuf);
@@ -611,7 +599,6 @@ static void
 individual_store_contact_update (EmpathyIndividualStore *self,
     FolksIndividual *individual)
 {
-  EmpathyIndividualStorePriv *priv;
   ShowActiveData *data;
   GtkTreeModel *model;
   GList *iters, *l;
@@ -626,8 +613,6 @@ individual_store_contact_update (EmpathyIndividualStore *self,
   GdkPixbuf *pixbuf_status;
   LoadAvatarData *load_avatar_data;
 
-  priv = GET_PRIV (self);
-
   model = GTK_TREE_MODEL (self);
 
   iters = individual_store_find_contact (self, individual);
@@ -649,9 +634,9 @@ individual_store_contact_update (EmpathyIndividualStore *self,
       DEBUG ("Individual'%s' in list:NO, should be:YES",
           folks_alias_details_get_alias (FOLKS_ALIAS_DETAILS (individual)));
 
-      individual_store_add_individual (self, individual);
+      empathy_individual_store_add_individual (self, individual);
 
-      if (priv->show_active)
+      if (self->priv->show_active)
         {
           do_set_active = TRUE;
 
@@ -671,7 +656,7 @@ individual_store_contact_update (EmpathyIndividualStore *self,
         }
 
       /* Is this really an update or an online/offline. */
-      if (priv->show_active)
+      if (self->priv->show_active)
         {
           if (was_online != now_online)
             {
@@ -694,7 +679,7 @@ individual_store_contact_update (EmpathyIndividualStore *self,
       set_model = TRUE;
     }
 
-  if (priv->show_avatars && !priv->is_compact)
+  if (self->priv->show_avatars && !self->priv->is_compact)
     {
       show_avatar = TRUE;
     }
@@ -706,8 +691,9 @@ individual_store_contact_update (EmpathyIndividualStore *self,
       (gpointer *) &load_avatar_data->store);
   load_avatar_data->cancellable = g_cancellable_new ();
 
-  priv->avatar_cancellables = g_list_prepend (priv->avatar_cancellables,
-      load_avatar_data->cancellable);
+  self->priv->avatar_cancellables = g_list_prepend (
+      self->priv->avatar_cancellables, load_avatar_data->cancellable);
+
   empathy_pixbuf_avatar_from_individual_scaled_async (individual, 32, 32,
       load_avatar_data->cancellable,
       (GAsyncReadyCallback) individual_avatar_pixbuf_received_cb,
@@ -737,7 +723,7 @@ individual_store_contact_update (EmpathyIndividualStore *self,
           EMPATHY_INDIVIDUAL_STORE_COL_STATUS,
             folks_presence_details_get_presence_message (
                 FOLKS_PRESENCE_DETAILS (individual)),
-          EMPATHY_INDIVIDUAL_STORE_COL_COMPACT, priv->is_compact,
+          EMPATHY_INDIVIDUAL_STORE_COL_COMPACT, self->priv->is_compact,
           EMPATHY_INDIVIDUAL_STORE_COL_IS_GROUP, FALSE,
           EMPATHY_INDIVIDUAL_STORE_COL_IS_ONLINE, now_online,
           EMPATHY_INDIVIDUAL_STORE_COL_IS_SEPARATOR, FALSE,
@@ -747,7 +733,7 @@ individual_store_contact_update (EmpathyIndividualStore *self,
           -1);
     }
 
-  if (priv->show_active && do_set_active)
+  if (self->priv->show_active && do_set_active)
     {
       individual_store_contact_set_active (self, individual, do_set_active,
           do_set_refresh);
@@ -878,8 +864,8 @@ individual_store_favourites_changed_cb (FolksIndividual *individual,
       folks_favourite_details_get_is_favourite (
         FOLKS_FAVOURITE_DETAILS (individual)) ? "now" : "no longer");
 
-  individual_store_remove_individual (self, individual);
-  individual_store_add_individual (self, individual);
+  empathy_individual_store_remove_individual (self, individual);
+  empathy_individual_store_add_individual (self, individual);
 }
 
 void
@@ -888,7 +874,7 @@ individual_store_add_individual_and_connect (EmpathyIndividualStore *self,
 {
   GeeSet *empty_set = gee_set_empty (G_TYPE_NONE, NULL, NULL);
 
-  individual_store_add_individual (self, individual);
+  empathy_individual_store_add_individual (self, individual);
 
   g_signal_connect (individual, "notify::avatar",
       (GCallback) individual_store_individual_updated_cb, self);
@@ -909,8 +895,8 @@ individual_store_add_individual_and_connect (EmpathyIndividualStore *self,
   g_clear_object (&empty_set);
 }
 
-static void
-individual_store_disconnect_individual (EmpathyIndividualStore *self,
+void
+empathy_individual_store_disconnect_individual (EmpathyIndividualStore *self,
     FolksIndividual *individual)
 {
   GeeSet *empty_set = gee_set_empty (G_TYPE_NONE, NULL, NULL);
@@ -933,172 +919,36 @@ individual_store_remove_individual_and_disconnect (
     EmpathyIndividualStore *self,
     FolksIndividual *individual)
 {
-  individual_store_disconnect_individual (self, individual);
-  individual_store_remove_individual (self, individual);
-}
-
-static void
-individual_store_members_changed_cb (EmpathyIndividualManager *manager,
-    const gchar *message,
-    GList *added,
-    GList *removed,
-    guint reason,
-    EmpathyIndividualStore *self)
-{
-  GList *l;
-
-  for (l = added; l; l = l->next)
-    {
-      DEBUG ("Individual %s %s", folks_individual_get_id (l->data), "added");
-
-      individual_store_add_individual_and_connect (self, l->data);
-    }
-  for (l = removed; l; l = l->next)
-    {
-      DEBUG ("Individual %s %s",
-          folks_individual_get_id (l->data), "removed");
-
-      individual_store_remove_individual_and_disconnect (self, l->data);
-    }
-}
-
-static void
-individual_store_groups_changed_cb (EmpathyIndividualManager *manager,
-    FolksIndividual *individual,
-    gchar *group,
-    gboolean is_member,
-    EmpathyIndividualStore *self)
-{
-  EmpathyIndividualStorePriv *priv;
-  gboolean show_active;
-
-  priv = GET_PRIV (self);
-
-  DEBUG ("Updating groups for individual %s",
-      folks_individual_get_id (individual));
-
-  /* We do this to make sure the groups are correct, if not, we
-   * would have to check the groups already set up for each
-   * contact and then see what has been updated.
-   */
-  show_active = priv->show_active;
-  priv->show_active = FALSE;
-  individual_store_remove_individual (self, individual);
-  individual_store_add_individual (self, individual);
-  priv->show_active = show_active;
-}
-
-static gboolean
-individual_store_manager_setup (gpointer user_data)
-{
-  EmpathyIndividualStore *self = user_data;
-  EmpathyIndividualStorePriv *priv = GET_PRIV (self);
-  GList *individuals;
-
-  /* Signal connection. */
-
-  /* TODO: implement */
-  DEBUG ("handling individual renames unimplemented");
-
-  g_signal_connect (priv->manager,
-      "members-changed",
-      G_CALLBACK (individual_store_members_changed_cb), self);
-
-  g_signal_connect (priv->manager,
-      "groups-changed",
-      G_CALLBACK (individual_store_groups_changed_cb), self);
-
-  /* Add contacts already created. */
-  individuals = empathy_individual_manager_get_members (priv->manager);
-  if (individuals != NULL && FOLKS_IS_INDIVIDUAL (individuals->data))
-    {
-      individual_store_members_changed_cb (priv->manager, "initial add",
-          individuals, NULL, 0, self);
-      g_list_free (individuals);
-    }
-
-  priv->setup_idle_id = 0;
-  return FALSE;
-}
-
-static void
-individual_store_set_individual_manager (EmpathyIndividualStore *self,
-    EmpathyIndividualManager *manager)
-{
-  EmpathyIndividualStorePriv *priv = GET_PRIV (self);
-
-  priv->manager = g_object_ref (manager);
-
-  /* Let a chance to have all properties set before populating */
-  priv->setup_idle_id = g_idle_add (individual_store_manager_setup, self);
-}
-
-static void
-individual_store_member_renamed_cb (EmpathyIndividualManager *manager,
-    FolksIndividual *old_individual,
-    FolksIndividual *new_individual,
-    guint reason,
-    const gchar *message,
-    EmpathyIndividualStore *self)
-{
-  DEBUG ("Individual %s renamed to %s",
-      folks_individual_get_id (old_individual),
-      folks_individual_get_id (new_individual));
-
-  /* add the new contact */
-  individual_store_add_individual_and_connect (self, new_individual);
-
-  /* remove old contact */
-  individual_store_remove_individual_and_disconnect (self, old_individual);
+  empathy_individual_store_disconnect_individual (self, individual);
+  empathy_individual_store_remove_individual (self, individual);
 }
 
 static void
 individual_store_dispose (GObject *object)
 {
-  EmpathyIndividualStorePriv *priv = GET_PRIV (object);
-  GList *individuals, *l;
+  EmpathyIndividualStore *self = EMPATHY_INDIVIDUAL_STORE (object);
+  GList *l;
 
-  if (priv->dispose_has_run)
+  if (self->priv->dispose_has_run)
     return;
-  priv->dispose_has_run = TRUE;
+  self->priv->dispose_has_run = TRUE;
 
   /* Cancel any pending avatar load operations */
-  for (l = priv->avatar_cancellables; l != NULL; l = l->next)
+  for (l = self->priv->avatar_cancellables; l != NULL; l = l->next)
     {
       /* The cancellables are freed in individual_avatar_pixbuf_received_cb() */
       g_cancellable_cancel (G_CANCELLABLE (l->data));
     }
-  g_list_free (priv->avatar_cancellables);
-
-  individuals = empathy_individual_manager_get_members (priv->manager);
-  for (l = individuals; l; l = l->next)
-    {
-      individual_store_disconnect_individual (EMPATHY_INDIVIDUAL_STORE (object),
-          FOLKS_INDIVIDUAL (l->data));
-    }
-  g_list_free (individuals);
-
-  g_signal_handlers_disconnect_by_func (priv->manager,
-      G_CALLBACK (individual_store_member_renamed_cb), object);
-  g_signal_handlers_disconnect_by_func (priv->manager,
-      G_CALLBACK (individual_store_members_changed_cb), object);
-  g_signal_handlers_disconnect_by_func (priv->manager,
-      G_CALLBACK (individual_store_groups_changed_cb), object);
-  g_object_unref (priv->manager);
-
-  if (priv->inhibit_active)
-    {
-      g_source_remove (priv->inhibit_active);
-    }
+  g_list_free (self->priv->avatar_cancellables);
 
-  if (priv->setup_idle_id != 0)
+  if (self->priv->inhibit_active)
     {
-      g_source_remove (priv->setup_idle_id);
+      g_source_remove (self->priv->inhibit_active);
     }
 
-  g_hash_table_destroy (priv->status_icons);
-  g_hash_table_destroy (priv->folks_individual_cache);
-  g_hash_table_destroy (priv->empathy_group_cache);
+  g_hash_table_unref (self->priv->status_icons);
+  g_hash_table_unref (self->priv->folks_individual_cache);
+  g_hash_table_unref (self->priv->empathy_group_cache);
   G_OBJECT_CLASS (empathy_individual_store_parent_class)->dispose (object);
 }
 
@@ -1108,29 +958,24 @@ individual_store_get_property (GObject *object,
     GValue *value,
     GParamSpec *pspec)
 {
-  EmpathyIndividualStorePriv *priv;
-
-  priv = GET_PRIV (object);
+  EmpathyIndividualStore *self = EMPATHY_INDIVIDUAL_STORE (object);
 
   switch (param_id)
     {
-    case PROP_INDIVIDUAL_MANAGER:
-      g_value_set_object (value, priv->manager);
-      break;
     case PROP_SHOW_AVATARS:
-      g_value_set_boolean (value, priv->show_avatars);
+      g_value_set_boolean (value, self->priv->show_avatars);
       break;
     case PROP_SHOW_PROTOCOLS:
-      g_value_set_boolean (value, priv->show_protocols);
+      g_value_set_boolean (value, self->priv->show_protocols);
       break;
     case PROP_SHOW_GROUPS:
-      g_value_set_boolean (value, priv->show_groups);
+      g_value_set_boolean (value, self->priv->show_groups);
       break;
     case PROP_IS_COMPACT:
-      g_value_set_boolean (value, priv->is_compact);
+      g_value_set_boolean (value, self->priv->is_compact);
       break;
     case PROP_SORT_CRITERIUM:
-      g_value_set_enum (value, priv->sort_criterium);
+      g_value_set_enum (value, self->priv->sort_criterium);
       break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
@@ -1146,10 +991,6 @@ individual_store_set_property (GObject *object,
 {
   switch (param_id)
     {
-    case PROP_INDIVIDUAL_MANAGER:
-      individual_store_set_individual_manager (EMPATHY_INDIVIDUAL_STORE
-          (object), g_value_get_object (value));
-      break;
     case PROP_SHOW_AVATARS:
       empathy_individual_store_set_show_avatars (EMPATHY_INDIVIDUAL_STORE
           (object), g_value_get_boolean (value));
@@ -1185,13 +1026,6 @@ empathy_individual_store_class_init (EmpathyIndividualStoreClass *klass)
   object_class->get_property = individual_store_get_property;
   object_class->set_property = individual_store_set_property;
 
-  g_object_class_install_property (object_class,
-      PROP_INDIVIDUAL_MANAGER,
-      g_param_spec_object ("individual-manager",
-          "The individual manager",
-          "The individual manager",
-          EMPATHY_TYPE_INDIVIDUAL_MANAGER,
-          G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE));
   g_object_class_install_property (object_class,
       PROP_SHOW_AVATARS,
       g_param_spec_boolean ("show-avatars",
@@ -1484,7 +1318,6 @@ individual_store_name_sort_func (GtkTreeModel *model,
 static void
 individual_store_setup (EmpathyIndividualStore *self)
 {
-  EmpathyIndividualStorePriv *priv;
   GType types[] = {
     GDK_TYPE_PIXBUF,            /* Status pixbuf */
     GDK_TYPE_PIXBUF,            /* Avatar pixbuf */
@@ -1505,8 +1338,6 @@ individual_store_setup (EmpathyIndividualStore *self)
     G_TYPE_UINT,                /* Event count */
   };
 
-  priv = GET_PRIV (self);
-
   gtk_tree_store_set_column_types (GTK_TREE_STORE (self),
       EMPATHY_INDIVIDUAL_STORE_COL_COUNT, types);
 
@@ -1518,19 +1349,17 @@ individual_store_setup (EmpathyIndividualStore *self)
       EMPATHY_INDIVIDUAL_STORE_COL_STATUS,
       individual_store_state_sort_func, self, NULL);
 
-  priv->sort_criterium = EMPATHY_INDIVIDUAL_STORE_SORT_NAME;
-  empathy_individual_store_set_sort_criterium (self, priv->sort_criterium);
+  self->priv->sort_criterium = EMPATHY_INDIVIDUAL_STORE_SORT_NAME;
+
+  empathy_individual_store_set_sort_criterium (self,
+      self->priv->sort_criterium);
 }
 
 static gboolean
 individual_store_inhibit_active_cb (EmpathyIndividualStore *self)
 {
-  EmpathyIndividualStorePriv *priv;
-
-  priv = GET_PRIV (self);
-
-  priv->show_active = TRUE;
-  priv->inhibit_active = 0;
+  self->priv->show_active = TRUE;
+  self->priv->inhibit_active = 0;
 
   return FALSE;
 }
@@ -1546,56 +1375,30 @@ g_queue_free_full_iter (gpointer data)
 static void
 empathy_individual_store_init (EmpathyIndividualStore *self)
 {
-  EmpathyIndividualStorePriv *priv = G_TYPE_INSTANCE_GET_PRIVATE (self,
+  self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self,
       EMPATHY_TYPE_INDIVIDUAL_STORE, EmpathyIndividualStorePriv);
 
-  self->priv = priv;
-  priv->show_avatars = TRUE;
-  priv->show_groups = TRUE;
-  priv->show_protocols = FALSE;
-  priv->inhibit_active =
+  self->priv->show_avatars = TRUE;
+  self->priv->show_groups = TRUE;
+  self->priv->show_protocols = FALSE;
+  self->priv->inhibit_active =
       g_timeout_add_seconds (ACTIVE_USER_WAIT_TO_ENABLE_TIME,
       (GSourceFunc) individual_store_inhibit_active_cb, self);
-  priv->status_icons =
+  self->priv->status_icons =
       g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref);
-  priv->folks_individual_cache = g_hash_table_new_full (NULL, NULL, NULL,
+  self->priv->folks_individual_cache = g_hash_table_new_full (NULL, NULL, NULL,
       g_queue_free_full_iter);
-  priv->empathy_group_cache = g_hash_table_new_full (g_str_hash,
+  self->priv->empathy_group_cache = g_hash_table_new_full (g_str_hash,
       g_str_equal, g_free, (GDestroyNotify) gtk_tree_iter_free);
   individual_store_setup (self);
 }
 
-EmpathyIndividualStore *
-empathy_individual_store_new (EmpathyIndividualManager *manager)
-{
-  g_return_val_if_fail (EMPATHY_IS_INDIVIDUAL_MANAGER (manager), NULL);
-
-  return g_object_new (EMPATHY_TYPE_INDIVIDUAL_STORE,
-      "individual-manager", manager, NULL);
-}
-
-EmpathyIndividualManager *
-empathy_individual_store_get_manager (EmpathyIndividualStore *self)
-{
-  EmpathyIndividualStorePriv *priv;
-
-  g_return_val_if_fail (EMPATHY_IS_INDIVIDUAL_STORE (self), FALSE);
-
-  priv = GET_PRIV (self);
-
-  return priv->manager;
-}
-
 gboolean
 empathy_individual_store_get_show_avatars (EmpathyIndividualStore *self)
 {
-  EmpathyIndividualStorePriv *priv;
-
   g_return_val_if_fail (EMPATHY_IS_INDIVIDUAL_STORE (self), TRUE);
 
-  priv = GET_PRIV (self);
-
-  return priv->show_avatars;
+  return self->priv->show_avatars;
 }
 
 static gboolean
@@ -1604,14 +1407,11 @@ individual_store_update_list_mode_foreach (GtkTreeModel *model,
     GtkTreeIter *iter,
     EmpathyIndividualStore *self)
 {
-  EmpathyIndividualStorePriv *priv;
   gboolean show_avatar = FALSE;
   FolksIndividual *individual;
   GdkPixbuf *pixbuf_status;
 
-  priv = GET_PRIV (self);
-
-  if (priv->show_avatars && !priv->is_compact)
+  if (self->priv->show_avatars && !self->priv->is_compact)
     {
       show_avatar = TRUE;
     }
@@ -1630,7 +1430,7 @@ individual_store_update_list_mode_foreach (GtkTreeModel *model,
   gtk_tree_store_set (GTK_TREE_STORE (self), iter,
       EMPATHY_INDIVIDUAL_STORE_COL_ICON_STATUS, pixbuf_status,
       EMPATHY_INDIVIDUAL_STORE_COL_PIXBUF_AVATAR_VISIBLE, show_avatar,
-      EMPATHY_INDIVIDUAL_STORE_COL_COMPACT, priv->is_compact, -1);
+      EMPATHY_INDIVIDUAL_STORE_COL_COMPACT, self->priv->is_compact, -1);
 
   g_object_unref (individual);
 
@@ -1641,14 +1441,11 @@ void
 empathy_individual_store_set_show_avatars (EmpathyIndividualStore *self,
     gboolean show_avatars)
 {
-  EmpathyIndividualStorePriv *priv;
   GtkTreeModel *model;
 
   g_return_if_fail (EMPATHY_IS_INDIVIDUAL_STORE (self));
 
-  priv = GET_PRIV (self);
-
-  priv->show_avatars = show_avatars;
+  self->priv->show_avatars = show_avatars;
 
   model = GTK_TREE_MODEL (self);
 
@@ -1662,27 +1459,20 @@ empathy_individual_store_set_show_avatars (EmpathyIndividualStore *self,
 gboolean
 empathy_individual_store_get_show_protocols (EmpathyIndividualStore *self)
 {
-  EmpathyIndividualStorePriv *priv;
-
   g_return_val_if_fail (EMPATHY_IS_INDIVIDUAL_STORE (self), TRUE);
 
-  priv = GET_PRIV (self);
-
-  return priv->show_protocols;
+  return self->priv->show_protocols;
 }
 
 void
 empathy_individual_store_set_show_protocols (EmpathyIndividualStore *self,
     gboolean show_protocols)
 {
-  EmpathyIndividualStorePriv *priv;
   GtkTreeModel *model;
 
   g_return_if_fail (EMPATHY_IS_INDIVIDUAL_STORE (self));
 
-  priv = GET_PRIV (self);
-
-  priv->show_protocols = show_protocols;
+  self->priv->show_protocols = show_protocols;
 
   model = GTK_TREE_MODEL (self);
 
@@ -1696,33 +1486,29 @@ empathy_individual_store_set_show_protocols (EmpathyIndividualStore *self,
 gboolean
 empathy_individual_store_get_show_groups (EmpathyIndividualStore *self)
 {
-  EmpathyIndividualStorePriv *priv;
-
   g_return_val_if_fail (EMPATHY_IS_INDIVIDUAL_STORE (self), TRUE);
 
-  priv = GET_PRIV (self);
-
-  return priv->show_groups;
+  return self->priv->show_groups;
 }
 
 void
 empathy_individual_store_set_show_groups (EmpathyIndividualStore *self,
     gboolean show_groups)
 {
-  EmpathyIndividualStorePriv *priv;
+  EmpathyIndividualStoreClass *klass;
 
   g_return_if_fail (EMPATHY_IS_INDIVIDUAL_STORE (self));
 
-  priv = GET_PRIV (self);
+  klass = EMPATHY_INDIVIDUAL_STORE_GET_CLASS ( self);
 
-  if (priv->show_groups == show_groups)
+  if (self->priv->show_groups == show_groups)
     {
       return;
     }
 
-  priv->show_groups = show_groups;
+  self->priv->show_groups = show_groups;
 
-  if (priv->setup_idle_id == 0)
+  if (!klass->initial_loading (self))
     {
       /* Remove all contacts and add them back, not optimized but
        * that's the easy way :)
@@ -1730,19 +1516,13 @@ empathy_individual_store_set_show_groups (EmpathyIndividualStore *self,
        * This is only done if there's not a pending setup idle
        * callback, otherwise it will race and the contacts will get
        * added twice */
-      GList *contacts;
 
       gtk_tree_store_clear (GTK_TREE_STORE (self));
       /* Also clear the cache */
-      g_hash_table_remove_all (priv->folks_individual_cache);
-      g_hash_table_remove_all (priv->empathy_group_cache);
-
-      contacts = empathy_individual_manager_get_members (priv->manager);
+      g_hash_table_remove_all (self->priv->folks_individual_cache);
+      g_hash_table_remove_all (self->priv->empathy_group_cache);
 
-      individual_store_members_changed_cb (priv->manager,
-          "re-adding members: toggled group visibility",
-          contacts, NULL, 0, self);
-      g_list_free (contacts);
+      klass->reload_individuals (self);
     }
 
   g_object_notify (G_OBJECT (self), "show-groups");
@@ -1751,27 +1531,20 @@ empathy_individual_store_set_show_groups (EmpathyIndividualStore *self,
 gboolean
 empathy_individual_store_get_is_compact (EmpathyIndividualStore *self)
 {
-  EmpathyIndividualStorePriv *priv;
-
   g_return_val_if_fail (EMPATHY_IS_INDIVIDUAL_STORE (self), TRUE);
 
-  priv = GET_PRIV (self);
-
-  return priv->is_compact;
+  return self->priv->is_compact;
 }
 
 void
 empathy_individual_store_set_is_compact (EmpathyIndividualStore *self,
     gboolean is_compact)
 {
-  EmpathyIndividualStorePriv *priv;
   GtkTreeModel *model;
 
   g_return_if_fail (EMPATHY_IS_INDIVIDUAL_STORE (self));
 
-  priv = GET_PRIV (self);
-
-  priv->is_compact = is_compact;
+  self->priv->is_compact = is_compact;
 
   model = GTK_TREE_MODEL (self);
 
@@ -1785,26 +1558,18 @@ empathy_individual_store_set_is_compact (EmpathyIndividualStore *self,
 EmpathyIndividualStoreSort
 empathy_individual_store_get_sort_criterium (EmpathyIndividualStore *self)
 {
-  EmpathyIndividualStorePriv *priv;
-
   g_return_val_if_fail (EMPATHY_IS_INDIVIDUAL_STORE (self), 0);
 
-  priv = GET_PRIV (self);
-
-  return priv->sort_criterium;
+  return self->priv->sort_criterium;
 }
 
 void
 empathy_individual_store_set_sort_criterium (EmpathyIndividualStore *self,
     EmpathyIndividualStoreSort sort_criterium)
 {
-  EmpathyIndividualStorePriv *priv;
-
   g_return_if_fail (EMPATHY_IS_INDIVIDUAL_STORE (self));
 
-  priv = GET_PRIV (self);
-
-  priv->sort_criterium = sort_criterium;
+  self->priv->sort_criterium = sort_criterium;
 
   switch (sort_criterium)
     {
@@ -1908,7 +1673,6 @@ individual_store_get_individual_status_icon_with_icon_name (
     const gchar *status_icon_name)
 {
   GdkPixbuf *pixbuf_status;
-  EmpathyIndividualStorePriv *priv;
   const gchar *protocol_name = NULL;
   gchar *icon_name = NULL;
   GeeSet *personas;
@@ -1917,8 +1681,6 @@ individual_store_get_individual_status_icon_with_icon_name (
   EmpathyContact *contact = NULL;
   gboolean show_protocols_here;
 
-  priv = GET_PRIV (self);
-
   personas = folks_individual_get_personas (individual);
   iter = gee_iterable_iterator (GEE_ITERABLE (personas));
   while (gee_iterator_next (iter))
@@ -1934,7 +1696,7 @@ individual_store_get_individual_status_icon_with_icon_name (
     }
   g_clear_object (&iter);
 
-  show_protocols_here = (priv->show_protocols && (contact_count == 1));
+  show_protocols_here = (self->priv->show_protocols && (contact_count == 1));
   if (show_protocols_here)
     {
       contact = empathy_contact_dup_from_folks_individual (individual);
@@ -1958,7 +1720,7 @@ individual_store_get_individual_status_icon_with_icon_name (
       icon_name = g_strdup_printf ("%s", status_icon_name);
     }
 
-  pixbuf_status = g_hash_table_lookup (priv->status_icons, icon_name);
+  pixbuf_status = g_hash_table_lookup (self->priv->status_icons, icon_name);
 
   if (pixbuf_status == NULL)
     {
@@ -1969,7 +1731,7 @@ individual_store_get_individual_status_icon_with_icon_name (
       if (pixbuf_status != NULL)
         {
           /* pass the reference to the hash table */
-          g_hash_table_insert (priv->status_icons,
+          g_hash_table_insert (self->priv->status_icons,
               g_strdup (icon_name), pixbuf_status);
         }
     }
@@ -1998,3 +1760,16 @@ empathy_individual_store_get_individual_status_icon (
 
   return pixbuf_status;
 }
+
+void
+empathy_individual_store_refresh_individual (EmpathyIndividualStore *self,
+    FolksIndividual *individual)
+{
+  gboolean show_active;
+
+  show_active = self->priv->show_active;
+  self->priv->show_active = FALSE;
+  empathy_individual_store_remove_individual (self, individual);
+  empathy_individual_store_add_individual (self, individual);
+  self->priv->show_active = show_active;
+}
index 418761ead5ea5b618d89f32f3d76280f16fce1e7..61fd4b8d8d94dd3c29de8e1d9c16d8bde985219d 100644 (file)
@@ -29,8 +29,6 @@
 
 #include <gtk/gtk.h>
 
-#include <libempathy/empathy-individual-manager.h>
-
 G_BEGIN_DECLS
 #define EMPATHY_TYPE_INDIVIDUAL_STORE         (empathy_individual_store_get_type ())
 #define EMPATHY_INDIVIDUAL_STORE(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_INDIVIDUAL_STORE, EmpathyIndividualStore))
@@ -38,8 +36,10 @@ G_BEGIN_DECLS
 #define EMPATHY_IS_INDIVIDUAL_STORE(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_INDIVIDUAL_STORE))
 #define EMPATHY_IS_INDIVIDUAL_STORE_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), EMPATHY_TYPE_INDIVIDUAL_STORE))
 #define EMPATHY_INDIVIDUAL_STORE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EMPATHY_TYPE_INDIVIDUAL_STORE, EmpathyIndividualStoreClass))
+
 typedef struct _EmpathyIndividualStore EmpathyIndividualStore;
 typedef struct _EmpathyIndividualStoreClass EmpathyIndividualStoreClass;
+typedef struct _EmpathyIndividualStorePriv EmpathyIndividualStorePriv;
 
 typedef enum
 {
@@ -76,23 +76,20 @@ typedef enum
 struct _EmpathyIndividualStore
 {
   GtkTreeStore parent;
-  gpointer priv;
+  EmpathyIndividualStorePriv *priv;
 };
 
 struct _EmpathyIndividualStoreClass
 {
   GtkTreeStoreClass parent_class;
+
+  void (*reload_individuals) (EmpathyIndividualStore *self);
+  gboolean (*initial_loading) (EmpathyIndividualStore *self);
 };
 
 GType
 empathy_individual_store_get_type (void) G_GNUC_CONST;
 
-EmpathyIndividualStore *empathy_individual_store_new (
-    EmpathyIndividualManager *manager);
-
-EmpathyIndividualManager *empathy_individual_store_get_manager (
-    EmpathyIndividualStore *store);
-
 gboolean empathy_individual_store_get_show_avatars (
     EmpathyIndividualStore *store);
 
@@ -145,5 +142,20 @@ void individual_store_remove_individual_and_disconnect (
     EmpathyIndividualStore *self,
     FolksIndividual *individual);
 
+/* protected */
+
+void empathy_individual_store_disconnect_individual (
+    EmpathyIndividualStore *self,
+    FolksIndividual *individual);
+
+void empathy_individual_store_remove_individual (EmpathyIndividualStore *self,
+    FolksIndividual *individual);
+
+void empathy_individual_store_add_individual (EmpathyIndividualStore *self,
+    FolksIndividual *individual);
+
+void empathy_individual_store_refresh_individual (EmpathyIndividualStore *self,
+    FolksIndividual *individual);
+
 G_END_DECLS
 #endif /* __EMPATHY_INDIVIDUAL_STORE_H__ */
index 88397ae70b23ada99b0260814ac19a4f9f778487..64aaf5a0aec6f9d437a0ab4c6233cf939718d69c 100644 (file)
@@ -74,6 +74,7 @@ typedef struct
 
   gboolean show_offline;
   gboolean show_untrusted;
+  gboolean show_uninteresting;
 
   GtkTreeModelFilter *filter;
   GtkWidget *search_widget;
@@ -114,6 +115,7 @@ enum
   PROP_INDIVIDUAL_FEATURES,
   PROP_SHOW_OFFLINE,
   PROP_SHOW_UNTRUSTED,
+  PROP_SHOW_UNINTERESTING,
 };
 
 /* TODO: re-add DRAG_TYPE_CONTACT_ID, for the case that we're dragging around
@@ -1532,7 +1534,7 @@ expand_idle_foreach_cb (GtkTreeModel *model,
       EMPATHY_INDIVIDUAL_STORE_COL_NAME, &name,
       -1);
 
-  if (is_group == FALSE)
+  if (!is_group)
     {
       g_free (name);
       return FALSE;
@@ -1541,9 +1543,9 @@ expand_idle_foreach_cb (GtkTreeModel *model,
   priv = GET_PRIV (self);
 
   if (g_hash_table_lookup_extended (priv->expand_groups, name, NULL,
-      &should_expand) == TRUE)
+      &should_expand))
     {
-      if (GPOINTER_TO_INT (should_expand) == TRUE)
+      if (GPOINTER_TO_INT (should_expand))
         gtk_tree_view_expand_row (GTK_TREE_VIEW (self), path, FALSE);
       else
         gtk_tree_view_collapse_row (GTK_TREE_VIEW (self), path);
@@ -1622,8 +1624,8 @@ individual_view_row_has_child_toggled_cb (GtkTreeModel *model,
    * gtk_tree_model_filter_refilter (). We add the rows to expand/contract to
    * a hash table, and expand or contract them as appropriate all at once in
    * an idle handler which iterates over all the group rows. */
-  if (g_hash_table_lookup_extended (priv->expand_groups, name, NULL,
-      &will_expand) == FALSE ||
+  if (!g_hash_table_lookup_extended (priv->expand_groups, name, NULL,
+      &will_expand) ||
       GPOINTER_TO_INT (will_expand) != should_expand)
     {
       g_hash_table_insert (priv->expand_groups, g_strdup (name),
@@ -1701,7 +1703,7 @@ individual_view_is_visible_individual (EmpathyIndividualView *self,
   EmpathyLiveSearch *live = EMPATHY_LIVE_SEARCH (priv->search_widget);
   GeeSet *personas;
   GeeIterator *iter;
-  gboolean is_favorite, contains_interesting_persona = FALSE;
+  gboolean is_favorite;
 
   /* Always display individuals having pending events */
   if (event_count > 0)
@@ -1709,32 +1711,38 @@ individual_view_is_visible_individual (EmpathyIndividualView *self,
 
   /* We're only giving the visibility wrt filtering here, not things like
    * presence. */
-  if (priv->show_untrusted == FALSE &&
+  if (!priv->show_untrusted &&
       folks_individual_get_trust_level (individual) == FOLKS_TRUST_LEVEL_NONE)
     {
       return FALSE;
     }
 
-  /* Hide all individuals which consist entirely of uninteresting personas */
-  personas = folks_individual_get_personas (individual);
-  iter = gee_iterable_iterator (GEE_ITERABLE (personas));
-  while (!contains_interesting_persona && gee_iterator_next (iter))
+  if (!priv->show_uninteresting)
     {
-      FolksPersona *persona = gee_iterator_get (iter);
+      gboolean contains_interesting_persona = FALSE;
 
-      if (empathy_folks_persona_is_interesting (persona))
-        contains_interesting_persona = TRUE;
+      /* Hide all individuals which consist entirely of uninteresting
+       * personas */
+      personas = folks_individual_get_personas (individual);
+      iter = gee_iterable_iterator (GEE_ITERABLE (personas));
+      while (!contains_interesting_persona && gee_iterator_next (iter))
+        {
+          FolksPersona *persona = gee_iterator_get (iter);
 
-      g_clear_object (&persona);
-    }
-  g_clear_object (&iter);
+          if (empathy_folks_persona_is_interesting (persona))
+            contains_interesting_persona = TRUE;
 
-  if (contains_interesting_persona == FALSE)
-    return FALSE;
+          g_clear_object (&persona);
+        }
+      g_clear_object (&iter);
+
+      if (!contains_interesting_persona)
+        return FALSE;
+    }
 
   is_favorite = folks_favourite_details_get_is_favourite (
       FOLKS_FAVOURITE_DETAILS (individual));
-  if (is_searching == FALSE) {
+  if (!is_searching) {
     if (is_favorite && is_fake_group &&
         !tp_strdiff (group, EMPATHY_INDIVIDUAL_STORE_FAVORITE))
         /* Always display favorite contacts in the favorite group */
@@ -1813,7 +1821,7 @@ individual_view_filter_visible_func (GtkTreeModel *model,
       g_free (group);
 
       /* FIXME: Work around bgo#626552/bgo#621076 */
-      if (visible == TRUE)
+      if (visible)
         {
           GtkTreePath *path = gtk_tree_model_get_path (model, iter);
           individual_view_verify_group_visibility (self, path);
@@ -1854,7 +1862,7 @@ individual_view_filter_visible_func (GtkTreeModel *model,
       g_free (group);
 
       /* show group if it has at least one visible contact in it */
-      if (visible == TRUE)
+      if (visible)
         return TRUE;
     }
 
@@ -2046,7 +2054,7 @@ individual_view_finalize (GObject *object)
 
   if (priv->expand_groups_idle_handler != 0)
     g_source_remove (priv->expand_groups_idle_handler);
-  g_hash_table_destroy (priv->expand_groups);
+  g_hash_table_unref (priv->expand_groups);
 
   G_OBJECT_CLASS (empathy_individual_view_parent_class)->finalize (object);
 }
@@ -2078,6 +2086,9 @@ individual_view_get_property (GObject *object,
     case PROP_SHOW_UNTRUSTED:
       g_value_set_boolean (value, priv->show_untrusted);
       break;
+    case PROP_SHOW_UNINTERESTING:
+      g_value_set_boolean (value, priv->show_uninteresting);
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
       break;
@@ -2112,6 +2123,9 @@ individual_view_set_property (GObject *object,
       empathy_individual_view_set_show_untrusted (view,
           g_value_get_boolean (value));
       break;
+    case PROP_SHOW_UNINTERESTING:
+      empathy_individual_view_set_show_uninteresting (view,
+          g_value_get_boolean (value));
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
       break;
@@ -2198,6 +2212,13 @@ empathy_individual_view_class_init (EmpathyIndividualViewClass *klass)
           "Whether the view should display untrusted individuals; "
           "those who could not be who they say they are.",
           TRUE, G_PARAM_READWRITE));
+  g_object_class_install_property (object_class,
+      PROP_SHOW_UNINTERESTING,
+      g_param_spec_boolean ("show-uninteresting",
+          "Show Uninteresting Individuals",
+          "Whether the view should not filter out individuals using "
+          "empathy_folks_persona_is_interesting.",
+          FALSE, G_PARAM_READWRITE));
 
   g_type_class_add_private (object_class, sizeof (EmpathyIndividualViewPriv));
 }
@@ -2211,6 +2232,7 @@ empathy_individual_view_init (EmpathyIndividualView *view)
   view->priv = priv;
 
   priv->show_untrusted = TRUE;
+  priv->show_uninteresting = FALSE;
 
   /* Get saved group states. */
   empathy_contact_groups_get_all ();
@@ -2452,12 +2474,12 @@ got_avatar (GObject *source_object,
 {
   FolksIndividual *individual = FOLKS_INDIVIDUAL (source_object);
   EmpathyIndividualView *view = user_data;
+  EmpathyIndividualViewPriv *priv = GET_PRIV (view);
   GdkPixbuf *avatar;
   EmpathyIndividualManager *manager;
   gchar *text;
   GtkWindow *parent;
   GeeSet *personas;
-  GeeIterator *iter;
   guint persona_count = 0;
   gboolean can_block;
   GError *error = NULL;
@@ -2476,21 +2498,31 @@ got_avatar (GObject *source_object,
    * so we still display the remove dialog. */
 
   personas = folks_individual_get_personas (individual);
-  iter = gee_iterable_iterator (GEE_ITERABLE (personas));
 
-  /* If we have more than one TpfPersona, display a different message
-   * ensuring the user knows that *all* of the meta-contacts' personas will
-   * be removed. */
-  while (persona_count < 2 && gee_iterator_next (iter))
+  if (priv->show_uninteresting)
     {
-      FolksPersona *persona = gee_iterator_get (iter);
+      persona_count = gee_collection_get_size (GEE_COLLECTION (personas));
+    }
+  else
+    {
+      GeeIterator *iter;
 
-      if (empathy_folks_persona_is_interesting (persona))
-        persona_count++;
+      iter = gee_iterable_iterator (GEE_ITERABLE (personas));
+      while (persona_count < 2 && gee_iterator_next (iter))
+        {
+          FolksPersona *persona = gee_iterator_get (iter);
 
-      g_clear_object (&persona);
+          if (empathy_folks_persona_is_interesting (persona))
+            persona_count++;
+
+          g_clear_object (&persona);
+        }
+      g_clear_object (&iter);
     }
-  g_clear_object (&iter);
+
+  /* If we have more than one TpfPersona, display a different message
+   * ensuring the user knows that *all* of the meta-contacts' personas will
+   * be removed. */
 
   if (persona_count < 2)
     {
@@ -2595,6 +2627,9 @@ empathy_individual_view_get_individual_menu (EmpathyIndividualView *view)
   if (individual == NULL)
     return NULL;
 
+  if (!empathy_folks_individual_contains_contact (individual))
+    goto out;
+
   /* If any of the Individual's personas can be removed, add an option to
    * remove. This will act as a best-effort option. If any Personas cannot be
    * removed from the server, then this option will just be inactive upon
@@ -2615,7 +2650,8 @@ empathy_individual_view_get_individual_menu (EmpathyIndividualView *view)
     }
   g_clear_object (&iter);
 
-  menu = empathy_individual_menu_new (individual, priv->individual_features);
+  menu = empathy_individual_menu_new (individual, priv->individual_features,
+      priv->store);
 
   /* Remove contact */
   if ((priv->view_features &
@@ -2649,6 +2685,7 @@ empathy_individual_view_get_individual_menu (EmpathyIndividualView *view)
   g_signal_connect (menu, "link-contacts-activated",
       (GCallback) individual_menu_link_contacts_activated_cb, view);
 
+out:
   g_object_unref (individual);
 
   return menu;
@@ -2878,3 +2915,19 @@ empathy_individual_view_select_first (EmpathyIndividualView *self)
       gtk_tree_selection_select_iter (selection, &iter);
     }
 }
+
+void
+empathy_individual_view_set_show_uninteresting (EmpathyIndividualView *self,
+    gboolean show_uninteresting)
+{
+  EmpathyIndividualViewPriv *priv;
+
+  g_return_if_fail (EMPATHY_IS_INDIVIDUAL_VIEW (self));
+
+  priv = GET_PRIV (self);
+
+  priv->show_uninteresting = show_uninteresting;
+
+  g_object_notify (G_OBJECT (self), "show-uninteresting");
+  gtk_tree_model_filter_refilter (priv->filter);
+}
index 4d52ef5368692a1d60707cf63b144388caff2771..00506dafee8bb93c65249f946ba530ed87ae2061 100644 (file)
@@ -119,6 +119,10 @@ gboolean empathy_individual_view_get_show_untrusted (
 void empathy_individual_view_set_show_untrusted (EmpathyIndividualView *self,
     gboolean show_untrusted);
 
+void empathy_individual_view_set_show_uninteresting (
+    EmpathyIndividualView *view,
+    gboolean show_uninteresting);
+
 gboolean empathy_individual_view_is_searching (
     EmpathyIndividualView *view);
 
index 215d3218e19ea524af29dfea458fab7f9439782a..5a1c559d13229262613f68d6ee7005dd7cce29ff 100644 (file)
@@ -189,7 +189,7 @@ update_weak_contact (EmpathyIndividualWidget *self)
               presence_type_cur = folks_presence_details_get_presence_type (
                   presence);
 
-              if (folks_presence_details_typecmp (
+              if (tp_contact == NULL || folks_presence_details_typecmp (
                     presence_type_cur, presence_type) > 0)
                 {
                   presence_type = presence_type_cur;
@@ -213,6 +213,21 @@ update_weak_contact (EmpathyIndividualWidget *self)
     }
 }
 
+static void
+add_row (GtkGrid *grid,
+    guint row,
+    GtkWidget *title,
+    GtkWidget *value)
+{
+  gtk_grid_attach (grid, title, 0, row, 1, 1);
+  gtk_misc_set_alignment (GTK_MISC (title), 0, 0.5);
+  gtk_widget_show (title);
+
+  gtk_grid_attach (grid, value, 1, row, 1, 1);
+  gtk_misc_set_alignment (GTK_MISC (value), 0, 0.5);
+  gtk_widget_show (value);
+}
+
 static guint
 details_update_show (EmpathyIndividualWidget *self,
     TpContact *contact)
@@ -220,6 +235,9 @@ details_update_show (EmpathyIndividualWidget *self,
   EmpathyIndividualWidgetPriv *priv = GET_PRIV (self);
   GList *info, *l;
   guint n_rows = 0;
+  GtkWidget *channels_label;
+  TpConnection *conn;
+  TpAccount *account;
 
   info = tp_contact_get_contact_info (contact);
   info = g_list_sort (info, (GCompareFunc) empathy_contact_info_field_cmp);
@@ -229,7 +247,7 @@ details_update_show (EmpathyIndividualWidget *self,
       gchar *title;
       const gchar *value;
       EmpathyContactInfoFormatFunc format;
-      GtkWidget *w;
+      GtkWidget *title_widget, *value_widget;
 
       if (field->field_value == NULL || field->field_value[0] == NULL)
         continue;
@@ -243,38 +261,54 @@ details_update_show (EmpathyIndividualWidget *self,
           continue;
         }
 
+      /* Skip empty field */
+      if (tp_str_empty (value))
+        continue;
+
       /* Add Title */
       title = empathy_contact_info_field_label (field->field_name,
           field->parameters);
-      w = gtk_label_new (title);
-      g_free (title);
-      gtk_grid_attach (GTK_GRID (priv->grid_details),
-          w, 0, n_rows, 1, 1);
-      gtk_misc_set_alignment (GTK_MISC (w), 0, 0.5);
-      gtk_widget_show (w);
+      title_widget = gtk_label_new (title);
 
       /* Add Value */
-      w = gtk_label_new (value);
+      value_widget = gtk_label_new (value);
 
       if (format != NULL)
         {
           gchar *markup;
 
           markup = format (field->field_value);
-          gtk_label_set_markup (GTK_LABEL (w), markup);
+          gtk_label_set_markup (GTK_LABEL (value_widget), markup);
           g_free (markup);
         }
 
-      gtk_label_set_selectable (GTK_LABEL (w),
+      gtk_label_set_selectable (GTK_LABEL (value_widget),
           (priv->flags & EMPATHY_INDIVIDUAL_WIDGET_FOR_TOOLTIP) ? FALSE : TRUE);
 
-      gtk_grid_attach (GTK_GRID (priv->grid_details),
-          w, 1, n_rows, 1, 1);
-      gtk_misc_set_alignment (GTK_MISC (w), 0, 0.5);
-      gtk_widget_show (w);
+      add_row (GTK_GRID (priv->grid_details), n_rows, title_widget,
+          value_widget);
+
+      n_rows++;
+    }
+
+  conn = tp_contact_get_connection (contact);
+  account = tp_connection_get_account (conn);
+
+  channels_label = empathy_contact_info_create_channel_list_label (account,
+      info, n_rows);
+
+  if (channels_label != NULL)
+    {
+      GtkWidget *title_widget;
+
+      title_widget =  gtk_label_new (_("Channels:"));
+
+      add_row (GTK_GRID (priv->grid_details), n_rows, title_widget,
+          channels_label);
 
       n_rows++;
     }
+
   g_list_free (info);
 
   return n_rows;
@@ -1289,7 +1323,7 @@ alias_presence_avatar_favourite_set_up (EmpathyIndividualWidget *self,
   current_row++;
 
   /* Presence */
-  priv->hbox_presence = gtk_hbox_new (FALSE, 6);
+  priv->hbox_presence = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
 
   /* Presence image */
   image = gtk_image_new_from_stock (GTK_STOCK_MISSING_IMAGE,
@@ -1444,7 +1478,7 @@ add_persona (EmpathyIndividualWidget *self,
   gtk_widget_show (label);
 
   /* Pack the protocol icon with the account name in an hbox */
-  hbox = GTK_BOX (gtk_hbox_new (FALSE, 6));
+  hbox = GTK_BOX (gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6));
 
   account_label = gtk_label_new (NULL);
   gtk_label_set_selectable (GTK_LABEL (account_label),
@@ -1506,7 +1540,7 @@ add_persona (EmpathyIndividualWidget *self,
   gtk_widget_show (GTK_WIDGET (grid));
 
   /* Pack a separator after the grid */
-  separator = gtk_hseparator_new ();
+  separator = gtk_separator_new (GTK_ORIENTATION_HORIZONTAL);
   g_object_set_data (G_OBJECT (grid), "separator", separator);
   gtk_box_pack_start (GTK_BOX (priv->vbox_individual), separator, FALSE, FALSE,
       0);
@@ -2054,7 +2088,7 @@ finalize (GObject *object)
 {
   EmpathyIndividualWidgetPriv *priv = GET_PRIV (object);
 
-  g_hash_table_destroy (priv->persona_grids);
+  g_hash_table_unref (priv->persona_grids);
 
   G_OBJECT_CLASS (empathy_individual_widget_parent_class)->finalize (object);
 }
index 9f068396c2bcc4e9a7ef5b224c300612fd1d0f82..3d0a8734f9df2363bff26d575ffebbbc7a374d32 100644 (file)
@@ -26,8 +26,6 @@
 
 #include <gtk/gtk.h>
 
-#include "empathy-contact-list-store.h"
-
 G_BEGIN_DECLS
 
 #define EMPATHY_TYPE_LIVE_SEARCH         (empathy_live_search_get_type ())
index 10ea8af5ec8aeadf64d4fc623c3ecabfc10d552e..af375f1b51f27b86236e8298772dbb85edecc621 100644 (file)
@@ -603,6 +603,7 @@ empathy_log_window_init (EmpathyLogWindow *self)
   GFile *gfile;
   GtkWidget *vbox, *accounts, *search, *label, *closeitem;
   GtkWidget *scrolledwindow_events;
+  gchar *uri;
 
   self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self,
       EMPATHY_TYPE_LOG_WINDOW, EmpathyLogWindowPriv);
@@ -656,7 +657,7 @@ empathy_log_window_init (EmpathyLogWindow *self)
       G_CALLBACK (gtk_widget_destroy), self);
 
   /* Account chooser for chats */
-  vbox = gtk_vbox_new (FALSE, 3);
+  vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 3);
 
   self->priv->account_chooser = empathy_account_chooser_new ();
   account_chooser = EMPATHY_ACCOUNT_CHOOSER (self->priv->account_chooser);
@@ -686,7 +687,7 @@ empathy_log_window_init (EmpathyLogWindow *self)
   gtk_container_add (GTK_CONTAINER (accounts), vbox);
 
   /* Search entry */
-  vbox = gtk_vbox_new (FALSE, 3);
+  vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 3);
 
   self->priv->search_entry = gtk_entry_new ();
   gtk_entry_set_icon_from_icon_name (GTK_ENTRY (self->priv->search_entry),
@@ -745,9 +746,10 @@ empathy_log_window_init (EmpathyLogWindow *self)
   gfile = g_file_new_for_path (filename);
   g_free (filename);
 
-  webkit_web_view_load_uri (WEBKIT_WEB_VIEW (self->priv->webview),
-      g_file_get_uri (gfile));
+  uri = g_file_get_uri (gfile);
+  webkit_web_view_load_uri (WEBKIT_WEB_VIEW (self->priv->webview), uri);
   g_object_unref (gfile);
+  g_free (uri);
 
   /* handle all navigation externally */
   g_signal_connect (self->priv->webview, "navigation-policy-decision-requested",
@@ -1620,9 +1622,11 @@ model_has_date (GtkTreeModel *model,
   if (!g_date_compare (date, d))
     {
       has_element = TRUE;
+      g_date_free (d);
       return TRUE;
     }
 
+  g_date_free (d);
   return FALSE;
 }
 
@@ -1803,18 +1807,27 @@ populate_dates_from_search_hits (GList *accounts,
 
   if (gtk_tree_model_get_iter_first (model, &iter))
     {
+      GDate *date;
+
+      date = g_date_new_dmy (1, 1, -1),
+
       gtk_list_store_prepend (store, &iter);
       gtk_list_store_set (store, &iter,
-          COL_WHEN_DATE, g_date_new_dmy (1, 1, -1),
+          COL_WHEN_DATE, date,
           COL_WHEN_TEXT, "separator",
           -1);
 
+      g_date_free (date);
+
+      date = g_date_new_dmy (2, 1, -1),
       gtk_list_store_prepend (store, &iter);
       gtk_list_store_set (store, &iter,
-          COL_WHEN_DATE, g_date_new_dmy (2, 1, -1),
+          COL_WHEN_DATE, date,
           COL_WHEN_TEXT, _("Anytime"),
           -1);
 
+      g_date_free (date);
+
       if (gtk_tree_model_iter_nth_child (model, &iter, NULL, 2))
         gtk_tree_selection_select_iter (selection, &iter);
     }
@@ -2782,6 +2795,7 @@ sort_by_date (GtkTreeModel *model,
     gpointer user_data)
 {
   GDate *date1, *date2;
+  gint result;
 
   gtk_tree_model_get (model, a,
       COL_WHEN_DATE, &date1,
@@ -2791,7 +2805,11 @@ sort_by_date (GtkTreeModel *model,
       COL_WHEN_DATE, &date2,
       -1);
 
-  return g_date_compare (date1, date2);
+  result =  g_date_compare (date1, date2);
+
+  g_date_free (date1);
+  g_date_free (date2);
+  return result;
 }
 
 static gboolean
@@ -3334,6 +3352,8 @@ log_window_get_messages_for_dates (EmpathyLogWindow *self,
                           event_mask, subtype, self->priv->count);
                       _tpl_action_chain_append (self->priv->chain, get_events_for_date, ctx);
                     }
+
+                  g_date_free (d);
                 }
             }
         }
@@ -3418,18 +3438,30 @@ log_manager_got_dates_cb (GObject *manager,
 
       if (g_strcmp0 (separator, "separator") != 0)
         {
+          GDate *date;
+
+          date = g_date_new_dmy (1, 1, -1);
+
           gtk_list_store_prepend (store, &iter);
           gtk_list_store_set (store, &iter,
-              COL_WHEN_DATE, g_date_new_dmy (1, 1, -1),
+              COL_WHEN_DATE, date,
               COL_WHEN_TEXT, "separator",
               -1);
 
+          g_date_free (date);
+
+          date = g_date_new_dmy (2, 1, -1);
+
           gtk_list_store_prepend (store, &iter);
           gtk_list_store_set (store, &iter,
-              COL_WHEN_DATE, g_date_new_dmy (2, 1, -1),
+              COL_WHEN_DATE, date,
               COL_WHEN_TEXT, _("Anytime"),
               -1);
+
+          g_date_free (date);
         }
+
+      g_free (separator);
     }
 
   g_list_free_full (dates, g_free);
@@ -3726,7 +3758,7 @@ log_window_delete_menu_clicked_cb (GtkMenuItem *menuitem,
   content_area = gtk_message_dialog_get_message_area (
       GTK_MESSAGE_DIALOG (dialog));
 
-  hbox = gtk_hbox_new (FALSE, 6);
+  hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
   label = gtk_label_new (_("Delete from:"));
   gtk_box_pack_start (GTK_BOX (hbox), label,
       FALSE, FALSE, 0);
index 3fcf9afb7182ab167a7d81635e10f619693384fc..bccc3e21e87ce89df74f91a2215c33d47dc4e8de 100644 (file)
@@ -89,7 +89,7 @@ notify_manager_finalize (GObject *object)
 {
   EmpathyNotifyManagerPriv *priv = GET_PRIV (object);
 
-  g_hash_table_destroy (priv->capabilities);
+  g_hash_table_unref (priv->capabilities);
 
   G_OBJECT_CLASS (empathy_notify_manager_parent_class)->finalize (object);
 }
index a06b71d9f98f64ca78a988c3478f0f50f4aa3155..339e0a146068bf4febea6a4bf97268ba19055fde 100644 (file)
@@ -28,7 +28,7 @@
 #include <libempathy/empathy-utils.h>
 
 G_DEFINE_TYPE (EmpathyPasswordDialog, empathy_password_dialog,
-    GTK_TYPE_MESSAGE_DIALOG)
+    EMPATHY_TYPE_BASE_PASSWORD_DIALOG)
 
 enum {
   PROP_HANDLER = 1,
@@ -36,17 +36,9 @@ enum {
   LAST_PROPERTY,
 };
 
-typedef struct {
+struct _EmpathyPasswordDialogPriv {
   EmpathyServerSASLHandler *handler;
-
-  GtkWidget *entry;
-  GtkWidget *ticky;
-  GtkWidget *ok_button;
-
-  gboolean grabbing;
-
-  gboolean dispose_run;
-} EmpathyPasswordDialogPriv;
+};
 
 static void
 empathy_password_dialog_get_property (GObject *object,
@@ -54,12 +46,12 @@ empathy_password_dialog_get_property (GObject *object,
     GValue *value,
     GParamSpec *pspec)
 {
-  EmpathyPasswordDialogPriv *priv = EMPATHY_PASSWORD_DIALOG (object)->priv;
+  EmpathyPasswordDialog *self = (EmpathyPasswordDialog *) object;
 
   switch (property_id)
     {
     case PROP_HANDLER:
-      g_value_set_object (value, priv->handler);
+      g_value_set_object (value, self->priv->handler);
       break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
@@ -73,13 +65,13 @@ empathy_password_dialog_set_property (GObject *object,
     const GValue *value,
     GParamSpec *pspec)
 {
-  EmpathyPasswordDialogPriv *priv = EMPATHY_PASSWORD_DIALOG (object)->priv;
+  EmpathyPasswordDialog *self = (EmpathyPasswordDialog *) object;
 
   switch (property_id)
     {
     case PROP_HANDLER:
-      g_assert (priv->handler == NULL); /* construct only */
-      priv->handler = g_value_dup_object (value);
+      g_assert (self->priv->handler == NULL); /* construct only */
+      self->priv->handler = g_value_dup_object (value);
       break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
@@ -90,14 +82,9 @@ empathy_password_dialog_set_property (GObject *object,
 static void
 empathy_password_dialog_dispose (GObject *object)
 {
-  EmpathyPasswordDialogPriv *priv = EMPATHY_PASSWORD_DIALOG (object)->priv;
-
-  if (priv->dispose_run)
-    return;
+  EmpathyPasswordDialog *self = (EmpathyPasswordDialog *) object;
 
-  priv->dispose_run = TRUE;
-
-  tp_clear_object (&priv->handler);
+  tp_clear_object (&self->priv->handler);
 
   G_OBJECT_CLASS (empathy_password_dialog_parent_class)->dispose (object);
 }
@@ -107,132 +94,23 @@ password_dialog_response_cb (GtkDialog *dialog,
     gint response,
     gpointer user_data)
 {
-  EmpathyPasswordDialogPriv *priv = EMPATHY_PASSWORD_DIALOG (user_data)->priv;
+  EmpathyPasswordDialog *self = (EmpathyPasswordDialog *) dialog;
+  EmpathyBasePasswordDialog *base = (EmpathyBasePasswordDialog *) dialog;
 
   if (response == GTK_RESPONSE_OK)
     {
-      empathy_server_sasl_handler_provide_password (priv->handler,
-          gtk_entry_get_text (GTK_ENTRY (priv->entry)),
-          gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (priv->ticky)));
+      empathy_server_sasl_handler_provide_password (self->priv->handler,
+          gtk_entry_get_text (GTK_ENTRY (base->entry)),
+          gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (base->ticky)));
     }
   else
     {
-      empathy_server_sasl_handler_cancel (priv->handler);
+      empathy_server_sasl_handler_cancel (self->priv->handler);
     }
 
   gtk_widget_destroy (GTK_WIDGET (dialog));
 }
 
-static void
-clear_icon_released_cb (GtkEntry *entry,
-    GtkEntryIconPosition icon_pos,
-    GdkEvent *event,
-    gpointer user_data)
-{
-  gtk_entry_set_text (entry, "");
-}
-
-static void
-password_entry_changed_cb (GtkEditable *entry,
-    gpointer user_data)
-{
-  EmpathyPasswordDialogPriv *priv = EMPATHY_PASSWORD_DIALOG (user_data)->priv;
-  const gchar *str;
-
-  str = gtk_entry_get_text (GTK_ENTRY (entry));
-
-  gtk_entry_set_icon_sensitive (GTK_ENTRY (entry),
-      GTK_ENTRY_ICON_SECONDARY, !EMP_STR_EMPTY (str));
-
-  gtk_widget_set_sensitive (priv->ok_button,
-      !EMP_STR_EMPTY (str));
-}
-
-static void
-password_entry_activate_cb (GtkEntry *entry,
-    EmpathyPasswordDialog *self)
-{
-  gtk_dialog_response (GTK_DIALOG (self), GTK_RESPONSE_OK);
-}
-
-static gboolean
-password_dialog_grab_keyboard (GtkWidget *widget,
-    GdkEvent *event,
-    gpointer user_data)
-{
-  EmpathyPasswordDialogPriv *priv = EMPATHY_PASSWORD_DIALOG (user_data)->priv;
-
-  if (!priv->grabbing)
-    {
-      GdkDevice *device = gdk_event_get_device (event);
-
-      if (device != NULL)
-        {
-          GdkGrabStatus status = gdk_device_grab (device,
-              gtk_widget_get_window (widget),
-              GDK_OWNERSHIP_WINDOW,
-              FALSE,
-              GDK_ALL_EVENTS_MASK,
-              NULL,
-              gdk_event_get_time (event));
-
-          if (status != GDK_GRAB_SUCCESS)
-            DEBUG ("Could not grab keyboard; grab status was %u", status);
-          else
-            priv->grabbing = TRUE;
-        }
-      else
-        DEBUG ("Could not get the event device!");
-    }
-
-  return FALSE;
-}
-
-static gboolean
-password_dialog_ungrab_keyboard (GtkWidget *widget,
-    GdkEvent *event,
-    gpointer user_data)
-{
-  EmpathyPasswordDialogPriv *priv = EMPATHY_PASSWORD_DIALOG (user_data)->priv;
-
-  if (priv->grabbing)
-    {
-      GdkDevice *device = gdk_event_get_device (event);
-
-      if (device != NULL)
-        {
-          gdk_device_ungrab (device, gdk_event_get_time (event));
-          priv->grabbing = FALSE;
-        }
-      else
-        DEBUG ("Could not get the event device!");
-    }
-
-  return FALSE;
-}
-
-static gboolean
-password_dialog_window_state_changed (GtkWidget *widget,
-    GdkEventWindowState *event,
-    gpointer data)
-{
-  GdkWindowState state = gdk_window_get_state (gtk_widget_get_window (widget));
-
-  if (state & GDK_WINDOW_STATE_WITHDRAWN
-      || state & GDK_WINDOW_STATE_ICONIFIED
-      || state & GDK_WINDOW_STATE_FULLSCREEN
-      || state & GDK_WINDOW_STATE_MAXIMIZED)
-    {
-      password_dialog_ungrab_keyboard (widget, (GdkEvent *) event, data);
-    }
-  else
-    {
-      password_dialog_grab_keyboard (widget, (GdkEvent *) event, data);
-    }
-
-  return FALSE;
-}
-
 static void
 password_dialog_handler_invalidated_cb (EmpathyServerSASLHandler *handler,
     EmpathyPasswordDialog *dialog)
@@ -243,91 +121,28 @@ password_dialog_handler_invalidated_cb (EmpathyServerSASLHandler *handler,
 static void
 empathy_password_dialog_constructed (GObject *object)
 {
-  EmpathyPasswordDialog *dialog;
-  EmpathyPasswordDialogPriv *priv;
-  TpAccount *account;
-  GtkWidget *icon;
-  GtkBox *box;
+  EmpathyPasswordDialog *self = (EmpathyPasswordDialog *) object;
+  EmpathyBasePasswordDialog *base = (EmpathyBasePasswordDialog *) object;
   gchar *text;
 
-  dialog = EMPATHY_PASSWORD_DIALOG (object);
-  priv = dialog->priv;
+  G_OBJECT_CLASS (empathy_password_dialog_parent_class)->constructed (object);
 
-  g_assert (priv->handler != NULL);
-
-  priv->grabbing = FALSE;
-
-  account = empathy_server_sasl_handler_get_account (priv->handler);
-
-  tp_g_signal_connect_object (priv->handler, "invalidated",
+  tp_g_signal_connect_object (self->priv->handler, "invalidated",
       G_CALLBACK (password_dialog_handler_invalidated_cb),
       object, 0);
 
-  /* dialog */
-  gtk_dialog_add_button (GTK_DIALOG (dialog),
-      GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL);
-
-  priv->ok_button = gtk_dialog_add_button (GTK_DIALOG (dialog),
-      GTK_STOCK_OK, GTK_RESPONSE_OK);
-  gtk_widget_set_sensitive (priv->ok_button, FALSE);
-
   text = g_strdup_printf (_("Enter your password for account\n<b>%s</b>"),
-      tp_account_get_display_name (account));
-  gtk_message_dialog_set_markup (GTK_MESSAGE_DIALOG (dialog), text);
+      tp_account_get_display_name (base->account));
+  gtk_message_dialog_set_markup (GTK_MESSAGE_DIALOG (self), text);
   g_free (text);
 
-  gtk_window_set_icon_name (GTK_WINDOW (dialog),
-      GTK_STOCK_DIALOG_AUTHENTICATION);
-
-  box = GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog)));
-
-  /* dialog icon */
-  icon = gtk_image_new_from_icon_name (tp_account_get_icon_name (account),
-      GTK_ICON_SIZE_DIALOG);
-  gtk_message_dialog_set_image (GTK_MESSAGE_DIALOG (dialog), icon);
-  gtk_widget_show (icon);
-
-  /* entry */
-  priv->entry = gtk_entry_new ();
-  gtk_entry_set_visibility (GTK_ENTRY (priv->entry), FALSE);
-
-  /* entry clear icon */
-  gtk_entry_set_icon_from_stock (GTK_ENTRY (priv->entry),
-      GTK_ENTRY_ICON_SECONDARY, GTK_STOCK_CLEAR);
-  gtk_entry_set_icon_sensitive (GTK_ENTRY (priv->entry),
-      GTK_ENTRY_ICON_SECONDARY, FALSE);
-
-  g_signal_connect (priv->entry, "icon-release",
-      G_CALLBACK (clear_icon_released_cb), NULL);
-  g_signal_connect (priv->entry, "changed",
-      G_CALLBACK (password_entry_changed_cb), dialog);
-  g_signal_connect (priv->entry, "activate",
-      G_CALLBACK (password_entry_activate_cb), dialog);
-
-  gtk_box_pack_start (box, priv->entry, FALSE, FALSE, 0);
-  gtk_widget_show (priv->entry);
-
-  /* remember password ticky box */
-  priv->ticky = gtk_check_button_new_with_label (_("Remember password"));
-
-  gtk_box_pack_start (box, priv->ticky, FALSE, FALSE, 0);
-
   /* 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);
-  g_signal_connect (dialog, "window-state-event",
-      G_CALLBACK (password_dialog_window_state_changed), dialog);
-  g_signal_connect (dialog, "map-event",
-      G_CALLBACK (password_dialog_grab_keyboard), dialog);
-  g_signal_connect (dialog, "unmap-event",
-      G_CALLBACK (password_dialog_ungrab_keyboard), dialog);
-
-  gtk_widget_grab_focus (priv->entry);
+  if (empathy_server_sasl_handler_can_save_response_somewhere (
+        self->priv->handler))
+    gtk_widget_show (base->ticky);
 
-  gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_CENTER_ALWAYS);
+  g_signal_connect (self, "response",
+      G_CALLBACK (password_dialog_response_cb), self);
 }
 
 static void
@@ -363,5 +178,7 @@ empathy_password_dialog_new (EmpathyServerSASLHandler *handler)
   g_assert (EMPATHY_IS_SERVER_SASL_HANDLER (handler));
 
   return g_object_new (EMPATHY_TYPE_PASSWORD_DIALOG,
-      "handler", handler, NULL);
+      "handler", handler,
+      "account", empathy_server_sasl_handler_get_account (handler),
+      NULL);
 }
index 566322de140f854845f616cfd54c7dc48cf307e8..d561af14aee3671b39781478056b57e6b759fa29 100644 (file)
 
 #include <libempathy/empathy-server-sasl-handler.h>
 
+#include <libempathy-gtk/empathy-base-password-dialog.h>
+
 #include <extensions/extensions.h>
 
 G_BEGIN_DECLS
 
 typedef struct _EmpathyPasswordDialog EmpathyPasswordDialog;
 typedef struct _EmpathyPasswordDialogClass EmpathyPasswordDialogClass;
+typedef struct _EmpathyPasswordDialogPriv EmpathyPasswordDialogPriv;
 
 struct _EmpathyPasswordDialogClass {
-    GtkMessageDialogClass parent_class;
+    EmpathyBasePasswordDialogClass parent_class;
 };
 
 struct _EmpathyPasswordDialog {
-    GtkMessageDialog parent;
-    gpointer priv;
+    EmpathyBasePasswordDialog parent;
+    EmpathyPasswordDialogPriv *priv;
 };
 
 GType empathy_password_dialog_get_type (void);
index 70d53b3c1581194f283ab04a8859f14e682275ab..a48fa121e59ddd1a2808937c7b74686fadfa9c63 100644 (file)
@@ -898,8 +898,8 @@ finalize (GObject *object)
 {
   EmpathyPersonaStorePriv *priv = GET_PRIV (object);
 
-  g_hash_table_destroy (priv->status_icons);
-  g_hash_table_destroy (priv->personas);
+  g_hash_table_unref (priv->status_icons);
+  g_hash_table_unref (priv->personas);
 
   G_OBJECT_CLASS (empathy_persona_store_parent_class)->finalize (object);
 }
index 46188d499abf1939e3debec251cc1a43b622fa2b..216e4ffdb96f190b541a9377bb88274dd5b67cc7 100644 (file)
@@ -365,7 +365,7 @@ protocol_chooser_finalize (GObject *object)
 
   if (priv->protocols)
     {
-      g_hash_table_destroy (priv->protocols);
+      g_hash_table_unref (priv->protocols);
       priv->protocols = NULL;
     }
 
index d097f1eeb93fb8f155bcc9e992ea6ddb9633963c..fb1441e6f3446740d905945f0c1c7a4fec7e8e62 100644 (file)
@@ -169,7 +169,7 @@ spell_notify_languages_cb (GSettings   *gsettings,
 
        /* We just reset the languages list. */
        if (languages != NULL) {
-               g_hash_table_destroy (languages);
+               g_hash_table_unref (languages);
                languages = NULL;
        }
 }
index 7bfc313e1d4f921b18f0f28793e05a3b5d63f832..b9fd08d84b27e5738fcb05d753a283d980e0473c 100644 (file)
@@ -239,7 +239,7 @@ theme_boxes_maybe_append_header (EmpathyThemeBoxes *theme,
 
        /* Create a hbox for the header and resize it when the view allocation
         * changes */
-       box = gtk_hbox_new (FALSE, 0);
+       box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
        g_signal_connect_object (view, "size-allocate",
                                 G_CALLBACK (table_size_allocate_cb),
                                 box, 0);
index 28cbbf3bc259984f658b7e6e1df8acad80781a54..1233509ecc6f1753b43508a139ab559acc190110 100644 (file)
@@ -188,6 +188,8 @@ theme_manager_create_irc_view (EmpathyThemeManager *manager)
        return theme;
 }
 
+static void on_style_set_cb (GtkWidget *widget, GtkStyle *previous_style, EmpathyThemeManager *self);
+
 static EmpathyThemeBoxes *
 theme_manager_create_boxes_view (EmpathyThemeManager *manager)
 {
@@ -200,6 +202,9 @@ theme_manager_create_boxes_view (EmpathyThemeManager *manager)
                           theme_manager_view_weak_notify_cb,
                           &priv->boxes_views);
 
+       g_signal_connect (G_OBJECT (theme), "style-set",
+                         G_CALLBACK (on_style_set_cb), manager);
+
        return theme;
 }
 
@@ -298,14 +303,20 @@ theme_manager_update_boxes_tags (EmpathyThemeBoxes *theme,
 }
 
 static void
-on_style_set_cb (GtkWidget *widget, GtkStyle *previous_style, gpointer data)
+on_style_set_cb (GtkWidget *widget, GtkStyle *previous_style, EmpathyThemeManager *self)
 {
+       EmpathyThemeManagerPriv *priv = GET_PRIV (self);
        GtkStyle *style;
        gchar     color1[10];
        gchar     color2[10];
        gchar     color3[10];
        gchar     color4[10];
 
+       /* The simple theme depends on the current GTK+ theme so it has to be
+        * updated if the theme changes. */
+       if (tp_strdiff (priv->name, "simple"))
+               return;
+
        style = gtk_widget_get_style (GTK_WIDGET (widget));
 
        theme_manager_gdk_color_to_hex (&style->base[GTK_STATE_SELECTED], color1);
@@ -333,8 +344,7 @@ theme_manager_update_boxes_theme (EmpathyThemeManager *manager,
        EmpathyThemeManagerPriv *priv = GET_PRIV (manager);
 
        if (strcmp (priv->name, "simple") == 0) {
-               g_signal_connect (G_OBJECT (theme), "style-set",
-                                 G_CALLBACK (on_style_set_cb), theme);
+               on_style_set_cb (GTK_WIDGET (theme), NULL, manager);
        }
        else if (strcmp (priv->name, "clean") == 0) {
                theme_manager_update_boxes_tags (theme,
index 5d9551d12dc20f82cdc2c587e90984a52a3e2e20..a387160d312b503211366b5de1914bca670c2457 100644 (file)
@@ -1825,6 +1825,27 @@ file_manager_send_file_response_cb (GtkDialog      *widget,
        gtk_widget_destroy (GTK_WIDGET (widget));
 }
 
+static gboolean
+filter_cb (const GtkFileFilterInfo *filter_info,
+               gpointer data)
+{
+       /* filter out socket files */
+       return tp_strdiff (filter_info->mime_type, "inode/socket");
+}
+
+static GtkFileFilter *
+create_file_filter (void)
+{
+       GtkFileFilter *filter;
+
+       filter = gtk_file_filter_new ();
+
+       gtk_file_filter_add_custom (filter, GTK_FILE_FILTER_MIME_TYPE, filter_cb,
+               NULL, NULL);
+
+       return filter;
+}
+
 void
 empathy_send_file_with_file_chooser (EmpathyContact *contact)
 {
@@ -1859,6 +1880,9 @@ empathy_send_file_with_file_chooser (EmpathyContact *contact)
        gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (widget),
                g_get_home_dir ());
 
+       gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (widget),
+               create_file_filter ());
+
        g_signal_connect (widget, "response",
                          G_CALLBACK (file_manager_send_file_response_cb),
                          g_object_ref (contact));
index 1d7df96156a5352ab40cd31d3a90983c05de29f4..cd03022738025a7aa923ca0b4062dafc11803a28 100644 (file)
@@ -36,6 +36,7 @@ libempathy_headers =                          \
        empathy-client-factory.h \
        empathy-connection-managers.h           \
        empathy-connectivity.h                  \
+       empathy-connection-aggregator.h         \
        empathy-contact-groups.h                \
        empathy-contact-list.h                  \
        empathy-contact-manager.h               \
@@ -78,6 +79,7 @@ libempathy_handwritten_source =                               \
        empathy-client-factory.c \
        empathy-connection-managers.c                   \
        empathy-connectivity.c                          \
+       empathy-connection-aggregator.c         \
        empathy-contact-groups.c                        \
        empathy-contact-list.c                          \
        empathy-contact-manager.c                       \
index cd6b69e8c2a3b9b8da34f1c68a59c9741a9e7e56..78d609685b04753ac179a2853038da014ffe8d6a 100644 (file)
@@ -402,11 +402,11 @@ empathy_account_settings_finalize (GObject *object)
       g_list_free (priv->required_params);
     }
 
-  g_hash_table_destroy (priv->parameters);
-  g_hash_table_destroy (priv->param_regexps);
+  g_hash_table_unref (priv->parameters);
+  g_hash_table_unref (priv->param_regexps);
 
   empathy_account_settings_free_unset_parameters (self);
-  g_array_free (priv->unset_parameters, TRUE);
+  g_array_unref (priv->unset_parameters);
 
   G_OBJECT_CLASS (empathy_account_settings_parent_class)->finalize (object);
 }
index d88e9bfd890b260c4bdbd095b0e69124d7543daa..fb178216d5412c2a77c90020b5346a1d968e6c79 100644 (file)
@@ -53,12 +53,20 @@ struct _EmpathyAuthFactoryPriv {
   EmpathyGoaAuthHandler *goa_handler;
 #endif /* HAVE_GOA */
 
+  /* If an account failed to connect and user enters a new password to try, we
+   * store it in this hash table and will try to use it next time the account
+   * attemps to connect.
+   *
+   * reffed TpAccount -> owned password (gchar *) */
+  GHashTable *retry_passwords;
+
   gboolean dispose_run;
 };
 
 enum {
   NEW_SERVER_TLS_HANDLER,
   NEW_SERVER_SASL_HANDLER,
+  AUTH_PASSWORD_FAILED,
   LAST_SIGNAL,
 };
 
@@ -145,6 +153,18 @@ sasl_handler_invalidated_cb (EmpathyServerSASLHandler *handler,
   g_hash_table_remove (priv->sasl_handlers, tp_proxy_get_object_path (channel));
 }
 
+static void
+sasl_handler_auth_password_failed_cb (EmpathyServerSASLHandler *handler,
+    const gchar *password,
+    EmpathyAuthFactory *self)
+{
+  TpAccount *account;
+
+  account = empathy_server_sasl_handler_get_account (handler);
+
+  g_signal_emit (self, signals[AUTH_PASSWORD_FAILED], 0, account, password);
+}
+
 static void
 server_sasl_handler_ready_cb (GObject *source,
     GAsyncResult *res,
@@ -171,6 +191,8 @@ server_sasl_handler_ready_cb (GObject *source,
   else
     {
       TpChannel *channel;
+      const gchar *password;
+      TpAccount *account;
 
       if (data->context != NULL)
         tp_handle_channels_context_accept (data->context);
@@ -185,6 +207,32 @@ server_sasl_handler_ready_cb (GObject *source,
       tp_g_signal_connect_object (handler, "invalidated",
           G_CALLBACK (sasl_handler_invalidated_cb), data->self, 0);
 
+      tp_g_signal_connect_object (handler, "auth-password-failed",
+          G_CALLBACK (sasl_handler_auth_password_failed_cb), data->self, 0);
+
+      /* Is there a retry password? */
+      account = empathy_server_sasl_handler_get_account (handler);
+
+      password = g_hash_table_lookup (data->self->priv->retry_passwords,
+          account);
+      if (password != NULL)
+        {
+          gboolean save;
+
+          DEBUG ("Use retry password");
+
+          /* We want to save this new password only if there is another
+           * (wrong) password saved. The SASL handler will only save it if it
+           * manages to connect. */
+          save = empathy_server_sasl_handler_has_password (handler);
+
+          empathy_server_sasl_handler_provide_password (handler,
+              password, save);
+
+          /* We only want to try this password once */
+          g_hash_table_remove (data->self->priv->retry_passwords, account);
+        }
+
       g_signal_emit (data->self, signals[NEW_SERVER_SASL_HANDLER], 0,
           handler);
     }
@@ -477,6 +525,18 @@ observe_channels (TpBaseClient *client,
   if (empathy_sasl_channel_supports_mechanism (data->channel,
           "X-TELEPATHY-PASSWORD"))
     {
+      if (g_hash_table_lookup (self->priv->retry_passwords, account) != NULL)
+        {
+          DEBUG ("We have a retry password for account %s, calling Claim",
+              tp_account_get_path_suffix (account));
+
+          tp_channel_dispatch_operation_claim_with_async (dispatch_operation,
+              client, password_claim_cb, data);
+
+          tp_observe_channels_context_accept (context);
+          return;
+        }
+
       empathy_keyring_get_account_password_async (data->account,
           get_password_cb, data);
       tp_observe_channels_context_delay (context);
@@ -523,9 +583,13 @@ empathy_auth_factory_init (EmpathyAuthFactory *self)
 
   self->priv->sasl_handlers = g_hash_table_new_full (g_str_hash, g_str_equal,
       NULL, g_object_unref);
+
 #ifdef HAVE_GOA
   self->priv->goa_handler = empathy_goa_auth_handler_new ();
 #endif /* HAVE_GOA */
+
+  self->priv->retry_passwords = g_hash_table_new_full (NULL, NULL,
+      g_object_unref, g_free);
 }
 
 static void
@@ -587,10 +651,13 @@ empathy_auth_factory_dispose (GObject *object)
   priv->dispose_run = TRUE;
 
   g_hash_table_unref (priv->sasl_handlers);
+
 #ifdef HAVE_GOA
   g_object_unref (priv->goa_handler);
 #endif /* HAVE_GOA */
 
+  g_hash_table_unref (priv->retry_passwords);
+
   G_OBJECT_CLASS (empathy_auth_factory_parent_class)->dispose (object);
 }
 
@@ -626,6 +693,15 @@ empathy_auth_factory_class_init (EmpathyAuthFactoryClass *klass)
       g_cclosure_marshal_generic,
       G_TYPE_NONE,
       1, EMPATHY_TYPE_SERVER_SASL_HANDLER);
+
+  signals[AUTH_PASSWORD_FAILED] =
+    g_signal_new ("auth-password-failed",
+      G_TYPE_FROM_CLASS (klass),
+      G_SIGNAL_RUN_LAST, 0,
+      NULL, NULL,
+      g_cclosure_marshal_generic,
+      G_TYPE_NONE,
+      2, TP_TYPE_ACCOUNT, G_TYPE_STRING);
 }
 
 EmpathyAuthFactory *
@@ -643,3 +719,12 @@ empathy_auth_factory_register (EmpathyAuthFactory *self,
 {
   return tp_base_client_register (TP_BASE_CLIENT (self), error);
 }
+
+void
+empathy_auth_factory_save_retry_password (EmpathyAuthFactory *self,
+    TpAccount *account,
+    const gchar *password)
+{
+  g_hash_table_insert (self->priv->retry_passwords,
+      g_object_ref (account), g_strdup (password));
+}
index e84c13bcc0f358b52511864157cc515d25da465f..5d31b1eddcc6fc499d3c9d121369045bbd9ed04d 100644 (file)
@@ -64,6 +64,10 @@ EmpathyAuthFactory * empathy_auth_factory_new (TpSimpleClientFactory *factory);
 gboolean empathy_auth_factory_register (EmpathyAuthFactory *self,
     GError **error);
 
+void empathy_auth_factory_save_retry_password (EmpathyAuthFactory *self,
+    TpAccount *account,
+    const gchar *password);
+
 G_END_DECLS
 
 #endif /* #ifndef __EMPATHY_AUTH_FACTORY_H__*/
index 3794ef60d237d375e25861160e14807664630e92..035c5695625fb5404c8754c4a944d4e86824f811 100644 (file)
@@ -152,6 +152,33 @@ empathy_client_factory_dup_connection_features (TpSimpleClientFactory *factory,
   feature = TP_CONNECTION_FEATURE_BALANCE;
   g_array_append_val (features, feature);
 
+  feature = TP_CONNECTION_FEATURE_CONTACT_BLOCKING;
+  g_array_append_val (features, feature);
+
+  /* Most empathy-* may allow user to add a contact to his contact list. We
+   * need this property to check if the connection allows it. It's cheap to
+   * prepare anyway as it will just call GetAll() on the ContactList iface. */
+  feature = TP_CONNECTION_FEATURE_CONTACT_LIST_PROPERTIES;
+  g_array_append_val (features, feature);
+
+  return features;
+}
+
+static GArray *
+empathy_client_factory_dup_contact_features (TpSimpleClientFactory *factory,
+        TpConnection *connection)
+{
+  GArray *features;
+  TpContactFeature feature;
+
+  features = chainup->dup_contact_features (factory, connection);
+
+  /* Needed by empathy_individual_add_menu_item_new to check if a contact is
+   * already in the contact list. This feature is pretty cheap to prepare as
+   * it doesn't prepare the full roster. */
+  feature = TP_CONTACT_FEATURE_SUBSCRIPTION_STATES;
+  g_array_append_val (features, feature);
+
   return features;
 }
 
@@ -169,6 +196,9 @@ empathy_client_factory_class_init (EmpathyClientFactoryClass *cls)
 
   simple_class->dup_connection_features =
     empathy_client_factory_dup_connection_features;
+
+  simple_class->dup_contact_features =
+    empathy_client_factory_dup_contact_features;
 }
 
 static void
diff --git a/libempathy/empathy-connection-aggregator.c b/libempathy/empathy-connection-aggregator.c
new file mode 100644 (file)
index 0000000..7074e51
--- /dev/null
@@ -0,0 +1,218 @@
+/*
+ * empathy-connection-aggregator.c - Source for EmpathyConnectionAggregator
+ * Copyright (C) 2010 Collabora Ltd.
+ * @author Cosimo Cecchi <cosimo.cecchi@collabora.co.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+#include <config.h>
+
+#include "empathy-connection-aggregator.h"
+
+#include <telepathy-glib/telepathy-glib.h>
+
+#define DEBUG_FLAG EMPATHY_DEBUG_OTHER
+#include "empathy-debug.h"
+#include "empathy-utils.h"
+
+
+#include "extensions/extensions.h"
+
+G_DEFINE_TYPE (EmpathyConnectionAggregator, empathy_connection_aggregator, 
+    G_TYPE_OBJECT);
+
+struct _EmpathyConnectionAggregatorPriv {
+  TpAccountManager *mgr;
+
+  /* List of owned TpConnection */
+  GList *conns;
+};
+
+static void
+empathy_connection_aggregator_dispose (GObject *object)
+{
+  EmpathyConnectionAggregator *self = (EmpathyConnectionAggregator *) object;
+
+  g_clear_object (&self->priv->mgr);
+
+  g_list_free_full (self->priv->conns, g_object_unref);
+  self->priv->conns = NULL;
+
+  G_OBJECT_CLASS (empathy_connection_aggregator_parent_class)->dispose (object);
+}
+
+static void
+empathy_connection_aggregator_class_init (
+    EmpathyConnectionAggregatorClass *klass)
+{
+  GObjectClass *oclass = G_OBJECT_CLASS (klass);
+
+  oclass->dispose = empathy_connection_aggregator_dispose;
+
+  g_type_class_add_private (klass, sizeof (EmpathyConnectionAggregatorPriv));
+}
+
+static void
+conn_invalidated_cb (TpConnection *conn,
+    guint domain,
+    gint code,
+    gchar *message,
+    EmpathyConnectionAggregator *self)
+{
+  self->priv->conns = g_list_remove (self->priv->conns, conn);
+
+  g_object_unref (conn);
+}
+
+static void
+check_connection (EmpathyConnectionAggregator *self,
+    TpConnection *conn)
+{
+  if (g_list_find (self->priv->conns, conn) != NULL)
+    return;
+
+  self->priv->conns = g_list_prepend (self->priv->conns,
+      g_object_ref (conn));
+
+  tp_g_signal_connect_object (conn, "invalidated",
+      G_CALLBACK (conn_invalidated_cb), self, 0);
+}
+
+static void
+check_account (EmpathyConnectionAggregator *self,
+    TpAccount *account)
+{
+  TpConnection *conn;
+
+  conn = tp_account_get_connection (account);
+  if (conn != NULL)
+    check_connection (self, conn);
+}
+
+static void
+account_conn_changed_cb (TpAccount *account,
+    GParamSpec *spec,
+    EmpathyConnectionAggregator *self)
+{
+  check_account (self, account);
+}
+
+static void
+add_account (EmpathyConnectionAggregator *self,
+    TpAccount *account)
+{
+  check_account (self, account);
+
+  tp_g_signal_connect_object (account, "notify::connection",
+      G_CALLBACK (account_conn_changed_cb), self, 0);
+}
+
+static void
+account_validity_changed_cb (TpAccountManager *manager,
+    TpAccount *account,
+    gboolean valid,
+    EmpathyConnectionAggregator *self)
+{
+  if (valid)
+    add_account (self, account);
+}
+
+static void
+am_prepare_cb (GObject *source,
+    GAsyncResult *result,
+    gpointer user_data)
+{
+  EmpathyConnectionAggregator *self = EMPATHY_CONNECTION_AGGREGATOR (user_data);
+  GError *error = NULL;
+  GList *accounts, *l;
+
+  if (!tp_proxy_prepare_finish (source, result, &error))
+    {
+      DEBUG ("Failed to prepare account manager: %s", error->message);
+      g_error_free (error);
+      goto out;
+    }
+
+  accounts = tp_account_manager_get_valid_accounts (self->priv->mgr);
+  for (l = accounts; l != NULL; l = g_list_next (l))
+    {
+      TpAccount *account = l->data;
+
+      add_account (self, account);
+    }
+
+  tp_g_signal_connect_object (self->priv->mgr, "account-validity-changed",
+      G_CALLBACK (account_validity_changed_cb), self, 0);
+
+  g_list_free (accounts);
+
+out:
+  g_object_unref (self);
+}
+
+static void
+empathy_connection_aggregator_init (EmpathyConnectionAggregator *self)
+{
+  self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self,
+      EMPATHY_TYPE_CONNECTION_AGGREGATOR, EmpathyConnectionAggregatorPriv);
+
+  self->priv->mgr = tp_account_manager_dup ();
+
+  tp_proxy_prepare_async (self->priv->mgr, NULL, am_prepare_cb,
+      g_object_ref (self));
+}
+
+EmpathyConnectionAggregator *
+empathy_connection_aggregator_dup_singleton (void)
+{
+  static EmpathyConnectionAggregator *aggregator = NULL;
+
+  if (G_LIKELY (aggregator != NULL))
+      return g_object_ref (aggregator);
+
+  aggregator = g_object_new (EMPATHY_TYPE_CONNECTION_AGGREGATOR, NULL);
+
+  g_object_add_weak_pointer (G_OBJECT (aggregator), (gpointer *) &aggregator);
+  return aggregator;
+}
+
+GList *
+empathy_connection_aggregator_get_all_groups (EmpathyConnectionAggregator *self)
+{
+  GList *keys, *l;
+  GHashTable *set;
+
+  set = g_hash_table_new (g_str_hash, g_str_equal);
+
+  for (l = self->priv->conns; l != NULL; l = g_list_next (l))
+    {
+      TpConnection *conn = l->data;
+      const gchar * const *groups;
+      guint i;
+
+      groups = tp_connection_get_contact_groups (conn);
+      if (groups == NULL)
+        continue;
+
+      for (i = 0; groups[i] != NULL; i++)
+        g_hash_table_insert (set, (gchar *) groups[i], GUINT_TO_POINTER (TRUE));
+    }
+
+  keys = g_hash_table_get_keys (set);
+  g_hash_table_unref (set);
+
+  return keys;
+}
diff --git a/libempathy/empathy-connection-aggregator.h b/libempathy/empathy-connection-aggregator.h
new file mode 100644 (file)
index 0000000..6a7fb65
--- /dev/null
@@ -0,0 +1,69 @@
+/*
+ * empathy-connection-aggregator.h - Header for EmpathyConnectionAggregator
+ * Copyright (C) 2010 Collabora Ltd.
+ * @author Cosimo Cecchi <cosimo.cecchi@collabora.co.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+#ifndef __EMPATHY_CONNECTION_AGGREGATOR_H__
+#define __EMPATHY_CONNECTION_AGGREGATOR_H__
+
+#include <glib-object.h>
+
+#include <telepathy-glib/base-client.h>
+
+G_BEGIN_DECLS
+
+typedef struct _EmpathyConnectionAggregator EmpathyConnectionAggregator;
+typedef struct _EmpathyConnectionAggregatorClass EmpathyConnectionAggregatorClass;
+typedef struct _EmpathyConnectionAggregatorPriv EmpathyConnectionAggregatorPriv;
+
+struct _EmpathyConnectionAggregatorClass {
+    GObjectClass parent_class;
+};
+
+struct _EmpathyConnectionAggregator {
+    GObject parent;
+    EmpathyConnectionAggregatorPriv *priv;
+};
+
+GType empathy_connection_aggregator_get_type (void);
+
+/* TYPE MACROS */
+#define EMPATHY_TYPE_CONNECTION_AGGREGATOR \
+  (empathy_connection_aggregator_get_type ())
+#define EMPATHY_CONNECTION_AGGREGATOR(obj) \
+  (G_TYPE_CHECK_INSTANCE_CAST((obj), EMPATHY_TYPE_CONNECTION_AGGREGATOR, \
+    EmpathyConnectionAggregator))
+#define EMPATHY_CONNECTION_AGGREGATOR_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_CAST((klass), EMPATHY_TYPE_CONNECTION_AGGREGATOR, \
+    EmpathyConnectionAggregatorClass))
+#define EMPATHY_IS_CONNECTION_AGGREGATOR(obj) \
+  (G_TYPE_CHECK_INSTANCE_TYPE((obj), EMPATHY_TYPE_CONNECTION_AGGREGATOR))
+#define EMPATHY_IS_CONNECTION_AGGREGATOR_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_TYPE((klass), EMPATHY_TYPE_CONNECTION_AGGREGATOR))
+#define EMPATHY_CONNECTION_AGGREGATOR_GET_CLASS(obj) \
+  (G_TYPE_INSTANCE_GET_CLASS ((obj), EMPATHY_TYPE_CONNECTION_AGGREGATOR, \
+    EmpathyConnectionAggregatorClass))
+
+EmpathyConnectionAggregator * empathy_connection_aggregator_dup_singleton (void);
+
+GList * empathy_connection_aggregator_get_all_groups (
+    EmpathyConnectionAggregator *self);
+
+G_END_DECLS
+
+#endif /* #ifndef __EMPATHY_CONNECTION_AGGREGATOR_H__*/
index 9e99ba46cb1f927b06489225521c60ba3993c31e..b80071c533d1efedcdcc7aaed5d7b09f6ec1d9d8 100644 (file)
@@ -145,18 +145,6 @@ empathy_contact_list_get_pendings (EmpathyContactList *list)
        return NULL;
 }
 
-GList *
-empathy_contact_list_get_all_groups (EmpathyContactList *list)
-{
-       g_return_val_if_fail (EMPATHY_IS_CONTACT_LIST (list), NULL);
-
-       if (EMPATHY_CONTACT_LIST_GET_IFACE (list)->get_all_groups) {
-               return EMPATHY_CONTACT_LIST_GET_IFACE (list)->get_all_groups (list);
-       }
-
-       return NULL;
-}
-
 GList *
 empathy_contact_list_get_groups (EmpathyContactList *list,
                                 EmpathyContact     *contact)
@@ -224,39 +212,3 @@ empathy_contact_list_remove_group (EmpathyContactList *list,
                EMPATHY_CONTACT_LIST_GET_IFACE (list)->remove_group (list, group);
        }
 }
-
-EmpathyContactListFlags
-empathy_contact_list_get_flags (EmpathyContactList *list)
-{
-       g_return_val_if_fail (EMPATHY_IS_CONTACT_LIST (list), 0);
-
-       if (EMPATHY_CONTACT_LIST_GET_IFACE (list)->get_flags) {
-               return EMPATHY_CONTACT_LIST_GET_IFACE (list)->get_flags (list);
-       } else {
-               return 0;
-       }
-}
-
-void
-empathy_contact_list_set_blocked (EmpathyContactList *list,
-                                 EmpathyContact     *contact,
-                                 gboolean            blocked,
-                                 gboolean            abusive)
-{
-       EmpathyContactListIface *iface = EMPATHY_CONTACT_LIST_GET_IFACE (list);
-
-       if (iface->set_blocked != NULL)
-               iface->set_blocked (list, contact, blocked, abusive);
-}
-
-gboolean
-empathy_contact_list_get_blocked (EmpathyContactList *list,
-                                 EmpathyContact     *contact)
-{
-       EmpathyContactListIface *iface = EMPATHY_CONTACT_LIST_GET_IFACE (list);
-
-       if (iface->get_blocked != NULL)
-               return iface->get_blocked (list, contact);
-       else
-               return FALSE;
-}
index 0e1d6a85007c58ca2cdba9bd48bb91162bd7c45f..a9149369bbcda3d23d0a8b615b1753fd796ec3f0 100644 (file)
@@ -34,16 +34,6 @@ G_BEGIN_DECLS
 #define EMPATHY_IS_CONTACT_LIST(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_CONTACT_LIST))
 #define EMPATHY_CONTACT_LIST_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), EMPATHY_TYPE_CONTACT_LIST, EmpathyContactListIface))
 
-typedef enum {
-       EMPATHY_CONTACT_LIST_CAN_ADD            = 1 << 0,
-       EMPATHY_CONTACT_LIST_CAN_REMOVE         = 1 << 1,
-       EMPATHY_CONTACT_LIST_CAN_ALIAS          = 1 << 2,
-       EMPATHY_CONTACT_LIST_CAN_GROUP          = 1 << 3,
-       EMPATHY_CONTACT_LIST_CAN_BLOCK          = 1 << 4,
-       EMPATHY_CONTACT_LIST_CAN_REPORT_ABUSIVE = 1 << 5,
-       EMPATHY_CONTACT_LIST_MESSAGE_ADD        = 1 << 6,
-} EmpathyContactListFlags;
-
 typedef struct _EmpathyContactListIface EmpathyContactListIface;
 
 struct _EmpathyContactListIface {
@@ -58,7 +48,6 @@ struct _EmpathyContactListIface {
                                               const gchar        *message);
        GList *          (*get_members)       (EmpathyContactList *list);
        GList *          (*get_pendings)      (EmpathyContactList *list);
-       GList *          (*get_all_groups)    (EmpathyContactList *list);
        GList *          (*get_groups)        (EmpathyContactList *list,
                                               EmpathyContact     *contact);
        void             (*add_to_group)      (EmpathyContactList *list,
@@ -72,14 +61,6 @@ struct _EmpathyContactListIface {
                                               const gchar        *new_group);
        void             (*remove_group)      (EmpathyContactList *list,
                                               const gchar        *group);
-       EmpathyContactListFlags
-                        (*get_flags)         (EmpathyContactList *list);
-       void             (*set_blocked)       (EmpathyContactList *list,
-                                              EmpathyContact     *contact,
-                                              gboolean            blocked,
-                                              gboolean            abusive);
-       gboolean         (*get_blocked)       (EmpathyContactList *list,
-                                              EmpathyContact     *contact);
 };
 
 GType    empathy_contact_list_get_type          (void) G_GNUC_CONST;
@@ -91,7 +72,6 @@ void     empathy_contact_list_remove            (EmpathyContactList *list,
                                                 const gchar        *message);
 GList *  empathy_contact_list_get_members       (EmpathyContactList *list);
 GList *  empathy_contact_list_get_pendings      (EmpathyContactList *list);
-GList *  empathy_contact_list_get_all_groups    (EmpathyContactList *list);
 GList *  empathy_contact_list_get_groups        (EmpathyContactList *list,
                                                 EmpathyContact     *contact);
 void     empathy_contact_list_add_to_group      (EmpathyContactList *list,
@@ -106,17 +86,6 @@ void     empathy_contact_list_rename_group      (EmpathyContactList *list,
 void    empathy_contact_list_remove_group      (EmpathyContactList *list,
                                                 const gchar        *group);
 
-EmpathyContactListFlags
-         empathy_contact_list_get_flags                (EmpathyContactList *list);
-
-void     empathy_contact_list_set_blocked       (EmpathyContactList *list,
-                                                EmpathyContact     *contact,
-                                                gboolean            blocked,
-                                                gboolean            abusive);
-gboolean empathy_contact_list_get_blocked       (EmpathyContactList *list,
-                                                EmpathyContact     *contact);
-
-
 G_END_DECLS
 
 #endif /* __EMPATHY_CONTACT_LIST_H__ */
index 8db9a5a0910ce405668b11a304323d53239d074a..fd2b3e1a4f25239de58b6f22359ddc71ef6a3065 100644 (file)
@@ -198,7 +198,7 @@ contact_manager_finalize (GObject *object)
        g_hash_table_foreach (priv->lists,
                              contact_manager_disconnect_foreach,
                              object);
-       g_hash_table_destroy (priv->lists);
+       g_hash_table_unref (priv->lists);
 
        g_object_unref (priv->account_manager);
 }
@@ -415,42 +415,6 @@ contact_manager_get_pendings (EmpathyContactList *manager)
        return contacts;
 }
 
-static void
-contact_manager_get_all_groups_foreach (TpConnection          *connection,
-                                       EmpathyTpContactList  *list,
-                                       GList                **all_groups)
-{
-       GList *groups, *l;
-
-       groups = empathy_contact_list_get_all_groups (EMPATHY_CONTACT_LIST (list));
-       for (l = groups; l; l = l->next) {
-               if (!g_list_find_custom (*all_groups,
-                                        l->data,
-                                        (GCompareFunc) strcmp)) {
-                       *all_groups = g_list_prepend (*all_groups, l->data);
-               } else {
-                       g_free (l->data);
-               }
-       }
-
-       g_list_free (groups);
-}
-
-static GList *
-contact_manager_get_all_groups (EmpathyContactList *manager)
-{
-       EmpathyContactManagerPriv *priv = GET_PRIV (manager);
-       GList                     *groups = NULL;
-
-       g_return_val_if_fail (EMPATHY_IS_CONTACT_MANAGER (manager), NULL);
-
-       g_hash_table_foreach (priv->lists,
-                             (GHFunc) contact_manager_get_all_groups_foreach,
-                             &groups);
-
-       return groups;
-}
-
 static GList *
 contact_manager_get_groups (EmpathyContactList *manager,
                            EmpathyContact     *contact)
@@ -562,47 +526,6 @@ contact_manager_remove_group (EmpathyContactList *manager,
                              (gpointer) group);
 }
 
-static void
-contact_manager_set_blocked (EmpathyContactList *manager,
-                            EmpathyContact     *contact,
-                            gboolean            blocked,
-                            gboolean            abusive)
-{
-       EmpathyContactManagerPriv *priv = GET_PRIV (manager);
-       EmpathyContactList        *list;
-       TpConnection              *connection;
-
-       g_return_if_fail (EMPATHY_IS_CONTACT_MANAGER (manager));
-
-       connection = empathy_contact_get_connection (contact);
-       list = g_hash_table_lookup (priv->lists, connection);
-
-       if (list != NULL) {
-               empathy_contact_list_set_blocked (list, contact,
-                                                 blocked, abusive);
-       }
-}
-
-static gboolean
-contact_manager_get_blocked (EmpathyContactList *manager,
-                            EmpathyContact     *contact)
-{
-       EmpathyContactManagerPriv *priv = GET_PRIV (manager);
-       EmpathyContactList        *list;
-       TpConnection              *connection;
-
-       g_return_val_if_fail (EMPATHY_IS_CONTACT_MANAGER (manager), FALSE);
-
-       connection = empathy_contact_get_connection (contact);
-       list = g_hash_table_lookup (priv->lists, connection);
-
-       if (list != NULL) {
-               return empathy_contact_list_get_blocked (list, contact);
-       } else {
-               return FALSE;
-       }
-}
-
 static void
 contact_manager_iface_init (EmpathyContactListIface *iface)
 {
@@ -610,34 +533,9 @@ contact_manager_iface_init (EmpathyContactListIface *iface)
        iface->remove            = contact_manager_remove;
        iface->get_members       = contact_manager_get_members;
        iface->get_pendings      = contact_manager_get_pendings;
-       iface->get_all_groups    = contact_manager_get_all_groups;
        iface->get_groups        = contact_manager_get_groups;
        iface->add_to_group      = contact_manager_add_to_group;
        iface->remove_from_group = contact_manager_remove_from_group;
        iface->rename_group      = contact_manager_rename_group;
        iface->remove_group      = contact_manager_remove_group;
-       iface->set_blocked       = contact_manager_set_blocked;
-       iface->get_blocked       = contact_manager_get_blocked;
 }
-
-EmpathyContactListFlags
-empathy_contact_manager_get_flags_for_connection (
-                               EmpathyContactManager *manager,
-                               TpConnection          *connection)
-{
-       EmpathyContactManagerPriv *priv = GET_PRIV (manager);
-       EmpathyContactList        *list;
-       EmpathyContactListFlags    flags;
-
-       g_return_val_if_fail (EMPATHY_IS_CONTACT_MANAGER (manager), FALSE);
-       g_return_val_if_fail (connection != NULL, FALSE);
-
-       list = g_hash_table_lookup (priv->lists, connection);
-       if (list == NULL) {
-               return FALSE;
-       }
-       flags = empathy_contact_list_get_flags (list);
-
-       return flags;
-}
-
index 97e21464ac54c092f553afde54af80c7f5801f05..4d1493091c7e18403d22019e1755a3e2865fd1ce 100644 (file)
@@ -54,9 +54,6 @@ gboolean               empathy_contact_manager_initialized (void);
 EmpathyContactManager *empathy_contact_manager_dup_singleton  (void);
 EmpathyTpContactList * empathy_contact_manager_get_list (EmpathyContactManager *manager,
                                                         TpConnection          *connection);
-EmpathyContactListFlags empathy_contact_manager_get_flags_for_connection (
-                                                        EmpathyContactManager *manager,
-                                                        TpConnection          *connection);
 
 G_END_DECLS
 
index 935afb556681b1ee8e828af0918acbbd55eca2d6..15946a16a82538c522489e75f0af66411a3595c4 100644 (file)
@@ -2071,3 +2071,53 @@ while_finish:
 
   return best_contact;
 }
+
+#define declare_contact_cb(name) \
+static void \
+contact_##name##_cb (GObject *source, \
+    GAsyncResult *result, \
+    gpointer user_data) \
+{ \
+  TpContact *contact = (TpContact *) source; \
+  GError *error = NULL; \
+  \
+  if (!tp_contact_##name##_finish (contact, result, &error)) \
+    { \
+      DEBUG ("Failed to ##name## on %s\n", \
+          tp_contact_get_identifier (contact)); \
+      g_error_free (error); \
+    } \
+}
+
+declare_contact_cb (request_subscription)
+declare_contact_cb (authorize_publication)
+declare_contact_cb (unblock)
+
+void
+empathy_contact_add_to_contact_list (EmpathyContact *self,
+    const gchar *message)
+{
+  EmpathyContactPriv *priv = GET_PRIV (self);
+
+  g_return_if_fail (priv->tp_contact != NULL);
+
+  tp_contact_request_subscription_async (priv->tp_contact, message,
+      contact_request_subscription_cb, NULL);
+
+  tp_contact_authorize_publication_async (priv->tp_contact,
+      contact_authorize_publication_cb, NULL);
+
+  tp_contact_unblock_async (priv->tp_contact, contact_unblock_cb, NULL);
+}
+
+declare_contact_cb (remove)
+
+void
+empathy_contact_remove_from_contact_list (EmpathyContact *self)
+{
+  EmpathyContactPriv *priv = GET_PRIV (self);
+
+  g_return_if_fail (priv->tp_contact != NULL);
+
+  tp_contact_remove_async (priv->tp_contact, contact_remove_cb, NULL);
+}
index cb8f5a66051bb8a86dc126031bd9fabac5470ec1..d90ea2ad4722a8c8baf68d5871b505ddbe020cb9 100644 (file)
@@ -138,6 +138,11 @@ EmpathyContact * empathy_contact_dup_best_for_action (
     FolksIndividual *individual,
     EmpathyActionType action_type);
 
+void empathy_contact_add_to_contact_list (EmpathyContact *self,
+    const gchar *message);
+
+void empathy_contact_remove_from_contact_list (EmpathyContact *self);
+
 G_END_DECLS
 
 #endif /* __EMPATHY_CONTACT_H__ */
index 4f624f8e198016bbfcac087215e5c70c1712752a..9e34ac1db47e99d6b21faeee12ba84e92d07dc15 100644 (file)
@@ -111,7 +111,7 @@ empathy_debug_free (void)
   if (flag_to_keys == NULL)
     return;
 
-  g_hash_table_destroy (flag_to_keys);
+  g_hash_table_unref (flag_to_keys);
   flag_to_keys = NULL;
 }
 
index 4b2d7e025f9cb1cb255b6f577d1acf78b043049b..c701b193d9e5c6ef491d1296e69e6e5cc7a4cd4a 100644 (file)
@@ -1133,7 +1133,7 @@ set_content_hash_type_from_classes (EmpathyFTHandler *handler,
 
   if (!support_ft)
     {
-      g_array_free (possible_values, TRUE);
+      g_array_unref (possible_values);
       return FALSE;
     }
 
@@ -1166,7 +1166,7 @@ set_content_hash_type_from_classes (EmpathyFTHandler *handler,
     }
 
 out:
-  g_array_free (possible_values, TRUE);
+  g_array_unref (possible_values);
 
   DEBUG ("Hash enabled %s; setting content hash type as %u",
          priv->use_hash ? "True" : "False", priv->content_hash_type);
index fb44b5893d12011f298b3d743681e0c519f28de9..ad55a9442d377fbcd369fb432d26583d63468064 100644 (file)
@@ -51,7 +51,6 @@ G_BEGIN_DECLS
 #define EMPATHY_PREFS_SOUNDS_CONTACT_LOGOUT        "sounds-contact-logout"
 
 #define EMPATHY_PREFS_CALL_SCHEMA EMPATHY_PREFS_SCHEMA ".call"
-#define EMPATHY_PREFS_CALL_SOUND_VOLUME            "volume"
 #define EMPATHY_PREFS_CALL_CAMERA_DEVICE           "camera-device"
 #define EMPATHY_PREFS_CALL_ECHO_CANCELLATION       "echo-cancellation"
 
index 833a5692d7eed7b938ef902212cf630428b29657..5305c41e8ba1773626d5d8d2f20252fceff3ee8c 100644 (file)
@@ -249,7 +249,7 @@ individual_manager_dispose (GObject *object)
 {
   EmpathyIndividualManagerPriv *priv = GET_PRIV (object);
 
-  g_hash_table_destroy (priv->individuals);
+  g_hash_table_unref (priv->individuals);
 
   g_signal_handlers_disconnect_by_func (priv->aggregator,
       aggregator_individuals_changed_cb, object);
@@ -470,7 +470,7 @@ empathy_individual_manager_add_from_contact (EmpathyIndividualManager *self,
       priv->aggregator, NULL, persona_store, details,
       aggregator_add_persona_from_details_cb, contact);
 
-  g_hash_table_destroy (details);
+  g_hash_table_unref (details);
   g_object_unref (persona_store);
 
 finish:
@@ -546,7 +546,6 @@ empathy_individual_manager_supports_blocking (EmpathyIndividualManager *self,
     {
       TpfPersona *persona = gee_iterator_get (iter);
       TpConnection *conn;
-      EmpathyContactManager *manager;
 
       if (TPF_IS_PERSONA (persona))
         {
@@ -556,14 +555,10 @@ empathy_individual_manager_supports_blocking (EmpathyIndividualManager *self,
           if (tp_contact != NULL)
             {
               conn = tp_contact_get_connection (tp_contact);
-              manager = empathy_contact_manager_dup_singleton ();
 
-              if (empathy_contact_manager_get_flags_for_connection (
-                    manager, conn) &
-                  EMPATHY_CONTACT_LIST_CAN_BLOCK)
+              if (tp_proxy_has_interface_by_id (conn,
+                    TP_IFACE_QUARK_CONNECTION_INTERFACE_CONTACT_BLOCKING))
                 retval = TRUE;
-
-              g_object_unref (manager);
             }
         }
       g_clear_object (&persona);
@@ -589,31 +584,26 @@ empathy_individual_manager_set_blocked (EmpathyIndividualManager *self,
   while (gee_iterator_next (iter))
     {
       TpfPersona *persona = gee_iterator_get (iter);
-      EmpathyContact *contact;
-      EmpathyContactManager *manager;
-      EmpathyContactListFlags flags;
 
       if (TPF_IS_PERSONA (persona))
         {
           TpContact *tp_contact;
+          TpConnection *conn;
 
           tp_contact = tpf_persona_get_contact (persona);
-          if (tp_contact != NULL)
-            {
-              contact = empathy_contact_dup_from_tp_contact (tp_contact);
-              empathy_contact_set_persona (contact, FOLKS_PERSONA (persona));
-              manager = empathy_contact_manager_dup_singleton ();
-              flags = empathy_contact_manager_get_flags_for_connection (manager,
-                  empathy_contact_get_connection (contact));
-
-              if (flags & EMPATHY_CONTACT_LIST_CAN_BLOCK)
-                empathy_contact_list_set_blocked (
-                    EMPATHY_CONTACT_LIST (manager),
-                    contact, blocked, abusive);
-
-              g_object_unref (manager);
-              g_object_unref (contact);
-            }
+          if (tp_contact == NULL)
+            continue;
+
+          conn = tp_contact_get_connection (tp_contact);
+
+          if (!tp_proxy_has_interface_by_id (conn,
+                TP_IFACE_QUARK_CONNECTION_INTERFACE_CONTACT_BLOCKING))
+            continue;
+
+          if (blocked)
+            tp_contact_block_async (tp_contact, abusive, NULL, NULL);
+          else
+            tp_contact_unblock_async (tp_contact, NULL, NULL);
         }
       g_clear_object (&persona);
     }
index 6d7ff1c3d0ffbc75222efeabd87122e0a9b6e9da..a9d89dca95796667e1e5acb61affe721754f9452 100644 (file)
@@ -155,7 +155,7 @@ empathy_irc_network_manager_finalize (GObject *object)
   g_free (priv->global_file);
   g_free (priv->user_file);
 
-  g_hash_table_destroy (priv->networks);
+  g_hash_table_unref (priv->networks);
 
   G_OBJECT_CLASS (empathy_irc_network_manager_parent_class)->finalize (object);
 }
index d37851405f00b7b9c5590bc55a5f382f258ff013..117d88f03880834291f642f06f26839c112a6f9d 100644 (file)
@@ -37,6 +37,7 @@ enum {
 
 /* signal enum */
 enum {
+  AUTH_PASSWORD_FAILED,
   INVALIDATED,
   LAST_SIGNAL,
 };
@@ -98,6 +99,7 @@ sasl_status_changed_cb (TpChannel *channel,
     gpointer user_data,
     GObject *weak_object)
 {
+  EmpathyServerSASLHandler *self = EMPATHY_SERVER_SASL_HANDLER (weak_object);
   EmpathyServerSASLHandlerPriv *priv = EMPATHY_SERVER_SASL_HANDLER (weak_object)->priv;
 
   /* buh boh */
@@ -130,6 +132,13 @@ sasl_status_changed_cb (TpChannel *channel,
       tp_cli_channel_call_close (priv->channel, -1,
           NULL, NULL, NULL, NULL);
     }
+  else if (status == TP_SASL_STATUS_SERVER_FAILED)
+   {
+     if (!tp_strdiff (error, TP_ERROR_STR_AUTHENTICATION_FAILED))
+       {
+         g_signal_emit (self, signals[AUTH_PASSWORD_FAILED], 0, priv->password);
+       }
+   }
 }
 
 static gboolean
@@ -333,6 +342,13 @@ empathy_server_sasl_handler_class_init (EmpathyServerSASLHandlerClass *klass)
       G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
   g_object_class_install_property (oclass, PROP_ACCOUNT, pspec);
 
+  signals[AUTH_PASSWORD_FAILED] = g_signal_new ("auth-password-failed",
+      G_TYPE_FROM_CLASS (klass),
+      G_SIGNAL_RUN_LAST, 0,
+      NULL, NULL,
+      g_cclosure_marshal_generic,
+      G_TYPE_NONE, 1, G_TYPE_STRING);
+
   signals[INVALIDATED] = g_signal_new ("invalidated",
       G_TYPE_FROM_CLASS (klass),
       G_SIGNAL_RUN_LAST, 0,
index c22eaf063a223900508de12ae257031e42212ca9..2f20ca8e383ce99f880248917f36eef8cd8c3047 100644 (file)
@@ -526,7 +526,7 @@ empathy_tls_verifier_verify_async (EmpathyTLSVerifier *self,
   chain = gcr_certificate_chain_new ();
   for (idx = 0; idx < cert_data->len; ++idx) {
     data = g_ptr_array_index (cert_data, idx);
-    cert = gcr_simple_certificate_new ((guchar*)data->data, data->len);
+    cert = gcr_simple_certificate_new ((guchar *) data->data, data->len);
     gcr_certificate_chain_add (chain, cert);
     g_object_unref (cert);
   }
index 087090ad4f38dbcdf39a46eb1d56c2ec4e15debc..96eda77b847abeae591081cffd5574afd4bf5c18 100644 (file)
@@ -365,7 +365,8 @@ handle_delivery_report (EmpathyTpChat *self,
                tp_chat_set_delivery_status (self, delivery_token,
                        EMPATHY_DELIVERY_STATUS_NONE);
                goto out;
-       } else if (delivery_status != TP_DELIVERY_STATUS_PERMANENTLY_FAILED) {
+       } else if (delivery_status != TP_DELIVERY_STATUS_PERMANENTLY_FAILED &&
+                  delivery_status != TP_DELIVERY_STATUS_TEMPORARILY_FAILED) {
                goto out;
        }
 
@@ -762,7 +763,7 @@ tp_chat_finalize (GObject *object)
 
        g_queue_free (self->priv->messages_queue);
        g_queue_free (self->priv->pending_messages_queue);
-       g_hash_table_destroy (self->priv->messages_being_sent);
+       g_hash_table_unref (self->priv->messages_being_sent);
 
        g_free (self->priv->title);
        g_free (self->priv->subject);
@@ -1441,7 +1442,7 @@ empathy_tp_chat_join (EmpathyTpChat *self)
        tp_cli_channel_interface_group_call_add_members ((TpChannel *) self, -1, members,
                "", add_members_cb, NULL, NULL, G_OBJECT (self));
 
-       g_array_free (members, TRUE);
+       g_array_unref (members);
 }
 
 gboolean
index 1cd2ba4caded1dfb337defedbce6afe008e946a8..f116d15d35ae2c25033a1a706f84729ae6bd5f63 100644 (file)
@@ -48,7 +48,6 @@ typedef struct {
        TpChannel      *publish;
        TpChannel      *subscribe;
        TpChannel      *stored;
-       TpChannel      *deny;
        /* contact handle (TpHandle) => reffed (EmpathyContact *)
         *
         * Union of:
@@ -70,8 +69,6 @@ typedef struct {
        GHashTable     *groups;
        /* group name: owned (gchar *) => owned GArray of TpHandle */
        GHashTable     *add_to_group;
-
-       EmpathyContactListFlags flags;
 } EmpathyTpContactListPriv;
 
 typedef enum {
@@ -274,7 +271,7 @@ tp_contact_list_group_ready_cb (TpChannel *channel,
        g_assert (members != NULL);
        arr = tp_intset_to_array (members);
        contacts_added_to_group (list, channel, arr);
-       g_array_free (arr, TRUE);
+       g_array_unref (arr);
 }
 
 static void
@@ -355,7 +352,7 @@ tp_contact_list_group_add (EmpathyTpContactList *list,
        if (channel) {
                tp_cli_channel_interface_group_call_add_members (channel, -1,
                        handles, NULL, NULL, NULL, NULL, NULL);
-               g_array_free (handles, TRUE);
+               g_array_unref (handles);
                return;
        }
 
@@ -435,7 +432,7 @@ add_to_members (EmpathyTpContactList *list,
                                got_added_members_cb, NULL, NULL, G_OBJECT (list));
        }
 
-       g_array_free (request, TRUE);
+       g_array_unref (request);
 }
 
 static void
@@ -578,64 +575,6 @@ tp_contact_list_publish_group_members_changed_cb (TpChannel     *channel,
        }
 }
 
-static void
-tp_contact_list_get_alias_flags_cb (TpConnection *connection,
-                                   guint         flags,
-                                   const GError *error,
-                                   gpointer      user_data,
-                                   GObject      *list)
-{
-       EmpathyTpContactListPriv *priv = GET_PRIV (list);
-
-       if (error) {
-               DEBUG ("Error: %s", error->message);
-               return;
-       }
-
-       if (flags & TP_CONNECTION_ALIAS_FLAG_USER_SET) {
-               priv->flags |= EMPATHY_CONTACT_LIST_CAN_ALIAS;
-       }
-}
-
-static void
-tp_contact_list_get_requestablechannelclasses_cb (TpProxy      *connection,
-                                                 const GValue *value,
-                                                 const GError *error,
-                                                 gpointer      user_data,
-                                                 GObject      *list)
-{
-       EmpathyTpContactListPriv *priv = GET_PRIV (list);
-       GPtrArray *classes;
-       guint i;
-
-       if (error) {
-               DEBUG ("Error: %s", error->message);
-               return;
-       }
-
-       classes = g_value_get_boxed (value);
-       for (i = 0; i < classes->len; i++) {
-               GValueArray *class = g_ptr_array_index (classes, i);
-               GHashTable *props;
-               const char *channel_type;
-               guint handle_type;
-
-               props = g_value_get_boxed (g_value_array_get_nth (class, 0));
-
-               channel_type = tp_asv_get_string (props,
-                               TP_IFACE_CHANNEL ".ChannelType");
-               handle_type = tp_asv_get_uint32 (props,
-                               TP_IFACE_CHANNEL ".TargetHandleType", NULL);
-
-               if (!tp_strdiff (channel_type, TP_IFACE_CHANNEL_TYPE_CONTACT_LIST) &&
-                   handle_type == TP_HANDLE_TYPE_GROUP) {
-                       DEBUG ("Got channel class for a contact group");
-                       priv->flags |= EMPATHY_CONTACT_LIST_CAN_GROUP;
-                       break;
-               }
-       }
-}
-
 static void
 tp_contact_list_subscribe_group_members_changed_cb (TpChannel     *channel,
                                                    gchar         *message,
@@ -685,7 +624,7 @@ tp_contact_list_subscribe_group_members_changed_cb (TpChannel     *channel,
        tp_cli_channel_interface_group_call_add_members (priv->publish,
                -1, accept, NULL, NULL, NULL, NULL, NULL);
 
-       g_array_free (accept, TRUE);
+       g_array_unref (accept);
 }
 
 static void
@@ -731,10 +670,6 @@ tp_contact_list_finalize (GObject *object)
                g_object_unref (priv->stored);
        }
 
-       if (priv->deny) {
-               g_object_unref (priv->deny);
-       }
-
        if (priv->connection) {
                g_object_unref (priv->connection);
        }
@@ -745,10 +680,10 @@ tp_contact_list_finalize (GObject *object)
                        tp_contact_list_group_invalidated_cb, list);
        }
 
-       g_hash_table_destroy (priv->groups);
-       g_hash_table_destroy (priv->members);
-       g_hash_table_destroy (priv->pendings);
-       g_hash_table_destroy (priv->add_to_group);
+       g_hash_table_unref (priv->groups);
+       g_hash_table_unref (priv->members);
+       g_hash_table_unref (priv->pendings);
+       g_hash_table_unref (priv->add_to_group);
 
        G_OBJECT_CLASS (empathy_tp_contact_list_parent_class)->finalize (object);
 }
@@ -786,11 +721,6 @@ got_list_channel (EmpathyTpContactList *list,
                g_signal_connect (priv->subscribe, "group-members-changed",
                                  G_CALLBACK (tp_contact_list_subscribe_group_members_changed_cb),
                                  list);
-       } else if (!tp_strdiff (id, "deny")) {
-               if (priv->deny != NULL)
-                       return;
-               DEBUG ("Got 'deny' channel");
-               priv->deny = g_object_ref (channel);
        }
 }
 
@@ -816,39 +746,6 @@ list_ensure_channel_cb (TpConnection *conn,
        g_object_unref (channel);
 }
 
-static void
-list_get_contact_blocking_capabilities_cb (TpProxy *conn,
-                                          const GValue *value,
-                                          const GError *in_error,
-                                          gpointer user_data,
-                                          GObject *weak_object)
-{
-       EmpathyTpContactList *list = EMPATHY_TP_CONTACT_LIST (weak_object);
-       EmpathyTpContactListPriv *priv = GET_PRIV (list);
-       TpContactBlockingCapabilities caps;
-
-       if (in_error != NULL) {
-               DEBUG ("Get(Blocking, ContactBlockingCapabilities) on %s failed: %s",
-                      tp_proxy_get_object_path (conn),
-                      in_error->message);
-               return;
-       }
-
-       if (!G_VALUE_HOLDS_UINT (value)) {
-               DEBUG ("Get(Blocking, ContactBlockingCapabilities) on %s returned a %s, not a uint",
-                      tp_proxy_get_object_path (conn),
-                      G_VALUE_TYPE_NAME (value));
-               return;
-       }
-
-       caps = g_value_get_uint (value);
-
-       if (caps & TP_CONTACT_BLOCKING_CAPABILITY_CAN_REPORT_ABUSIVE) {
-               DEBUG ("Connection can report abusive contacts");
-               priv->flags |= EMPATHY_CONTACT_LIST_CAN_REPORT_ABUSIVE;
-       }
-}
-
 static void
 iterate_on_channels (EmpathyTpContactList *list,
                     const GPtrArray *channels)
@@ -957,25 +854,8 @@ conn_ready_cb (TpConnection *connection,
        tp_cli_connection_interface_requests_call_ensure_channel (priv->connection,
                G_MAXINT, request, list_ensure_channel_cb, list, NULL, G_OBJECT (list));
 
-       /* Request the 'deny' list */
-       tp_asv_set_static_string (request, TP_PROP_CHANNEL_TARGET_ID, "deny");
-       tp_cli_connection_interface_requests_call_ensure_channel (priv->connection,
-               G_MAXINT, request, list_ensure_channel_cb, list, NULL, G_OBJECT (list));
-
        g_hash_table_unref (request);
 
-       /* Find out if we support reporting abusive contacts --
-        * this is done via the new Conn.I.ContactBlocking interface */
-       if (tp_proxy_has_interface_by_id (priv->connection,
-           TP_IFACE_QUARK_CONNECTION_INTERFACE_CONTACT_BLOCKING)) {
-               DEBUG ("Have Conn.I.ContactBlocking");
-
-               tp_cli_dbus_properties_call_get (priv->connection, -1,
-                       TP_IFACE_CONNECTION_INTERFACE_CONTACT_BLOCKING,
-                       "ContactBlockingCapabilities",
-                       list_get_contact_blocking_capabilities_cb,
-                       NULL, NULL, G_OBJECT (list));
-       }
 out:
        g_object_unref (list);
 }
@@ -985,32 +865,6 @@ tp_contact_list_constructed (GObject *list)
 {
        EmpathyTpContactListPriv *priv = GET_PRIV (list);
 
-       /* call GetAliasFlags */
-       if (tp_proxy_has_interface_by_id (priv->connection,
-                               TP_IFACE_QUARK_CONNECTION_INTERFACE_ALIASING)) {
-               tp_cli_connection_interface_aliasing_call_get_alias_flags (
-                               priv->connection,
-                               -1,
-                               tp_contact_list_get_alias_flags_cb,
-                               NULL, NULL,
-                               G_OBJECT (list));
-       }
-
-       /* lookup RequestableChannelClasses */
-       if (tp_proxy_has_interface_by_id (priv->connection,
-                               TP_IFACE_QUARK_CONNECTION_INTERFACE_REQUESTS)) {
-               tp_cli_dbus_properties_call_get (priv->connection,
-                               -1,
-                               TP_IFACE_CONNECTION_INTERFACE_REQUESTS,
-                               "RequestableChannelClasses",
-                               tp_contact_list_get_requestablechannelclasses_cb,
-                               NULL, NULL,
-                               G_OBJECT (list));
-       } else {
-               /* we just don't know... better mark the flag just in case */
-               priv->flags |= EMPATHY_CONTACT_LIST_CAN_GROUP;
-       }
-
        tp_connection_call_when_ready (priv->connection, conn_ready_cb,
                g_object_ref (list));
 }
@@ -1076,7 +930,7 @@ empathy_tp_contact_list_class_init (EmpathyTpContactListClass *klass)
 static void
 tp_contact_list_array_free (gpointer handles)
 {
-       g_array_free (handles, TRUE);
+       g_array_unref (handles);
 }
 
 static void
@@ -1154,10 +1008,13 @@ tp_contact_list_add (EmpathyContactList *list,
                }
        }
 
-       if (priv->deny) {
-               tp_cli_channel_interface_group_call_remove_members (
-                       priv->deny, -1, &handles, message,
-                       NULL, NULL, NULL, NULL);
+       /* We want to unblock the contact */
+       if (tp_proxy_has_interface_by_id (priv->connection,
+               TP_IFACE_QUARK_CONNECTION_INTERFACE_CONTACT_BLOCKING)) {
+               TpContact *tp_contact = empathy_contact_get_tp_contact (contact);
+
+               if (tp_contact != NULL)
+                       tp_contact_unblock_async (tp_contact, NULL, NULL);
        }
 }
 
@@ -1211,20 +1068,6 @@ tp_contact_list_get_pendings (EmpathyContactList *list)
        return ret;
 }
 
-static GList *
-tp_contact_list_get_all_groups (EmpathyContactList *list)
-{
-       EmpathyTpContactListPriv *priv = GET_PRIV (list);
-       GList                    *ret, *l;
-
-       ret = g_hash_table_get_keys (priv->groups);
-       for (l = ret; l; l = l->next) {
-               l->data = g_strdup (l->data);
-       }
-
-       return ret;
-}
-
 static GList *
 tp_contact_list_get_groups (EmpathyContactList *list,
                            EmpathyContact     *contact)
@@ -1338,85 +1181,7 @@ tp_contact_list_remove_group (EmpathyContactList *list,
        tp_cli_channel_interface_group_call_remove_members (channel, -1,
                handles, NULL, NULL, NULL, NULL, NULL);
        tp_cli_channel_call_close (channel, -1, NULL, NULL, NULL, NULL);
-       g_array_free (handles, TRUE);
-}
-
-static EmpathyContactListFlags
-tp_contact_list_get_flags (EmpathyContactList *list)
-{
-       EmpathyTpContactListPriv *priv;
-       EmpathyContactListFlags flags;
-
-       g_return_val_if_fail (EMPATHY_IS_TP_CONTACT_LIST (list), FALSE);
-
-       priv = GET_PRIV (list);
-       flags = priv->flags;
-
-       if (priv->subscribe != NULL) {
-               TpChannelGroupFlags group_flags;
-
-               group_flags = tp_channel_group_get_flags (priv->subscribe);
-
-               if (group_flags & TP_CHANNEL_GROUP_FLAG_CAN_ADD) {
-                       flags |= EMPATHY_CONTACT_LIST_CAN_ADD;
-               }
-
-               if (group_flags & TP_CHANNEL_GROUP_FLAG_CAN_REMOVE) {
-                       flags |= EMPATHY_CONTACT_LIST_CAN_REMOVE;
-               }
-
-               if (group_flags & TP_CHANNEL_GROUP_FLAG_MESSAGE_ADD) {
-                       flags |= EMPATHY_CONTACT_LIST_MESSAGE_ADD;
-               }
-       }
-
-       if (priv->deny != NULL)
-               flags |= EMPATHY_CONTACT_LIST_CAN_BLOCK;
-
-       return flags;
-}
-
-static void
-tp_contact_list_set_blocked (EmpathyContactList *list,
-                            EmpathyContact     *contact,
-                            gboolean            blocked,
-                            gboolean            abusive)
-{
-       EmpathyTpContactListPriv *priv = GET_PRIV (list);
-       TpHandle handle = empathy_contact_get_handle (contact);
-       GArray handles = { (char *) &handle, 1 };
-
-       g_return_if_fail (TP_IS_CHANNEL (priv->deny));
-
-       if (blocked && abusive) {
-               /* we have to do this via the new interface */
-               g_return_if_fail (priv->flags &
-                               EMPATHY_CONTACT_LIST_CAN_REPORT_ABUSIVE);
-
-               tp_cli_connection_interface_contact_blocking_call_block_contacts (
-                       priv->connection, -1,
-                       &handles, TRUE, NULL, NULL, NULL, NULL);
-       } else if (blocked) {
-               tp_cli_channel_interface_group_call_add_members (
-                       priv->deny, -1,
-                       &handles, NULL, NULL, NULL, NULL, NULL);
-       } else {
-               tp_cli_channel_interface_group_call_remove_members (
-                       priv->deny, -1,
-                       &handles, NULL, NULL, NULL, NULL, NULL);
-       }
-}
-
-static gboolean
-tp_contact_list_get_blocked (EmpathyContactList *list,
-                            EmpathyContact     *contact)
-{
-       EmpathyTpContactListPriv *priv = GET_PRIV (list);
-
-       g_return_val_if_fail (TP_IS_CHANNEL (priv->deny), FALSE);
-
-       return tp_intset_is_member (tp_channel_group_get_members (priv->deny),
-                                   empathy_contact_get_handle (contact));
+       g_array_unref (handles);
 }
 
 static void
@@ -1426,15 +1191,11 @@ tp_contact_list_iface_init (EmpathyContactListIface *iface)
        iface->remove            = tp_contact_list_remove;
        iface->get_members       = tp_contact_list_get_members;
        iface->get_pendings      = tp_contact_list_get_pendings;
-       iface->get_all_groups    = tp_contact_list_get_all_groups;
        iface->get_groups        = tp_contact_list_get_groups;
        iface->add_to_group      = tp_contact_list_add_to_group;
        iface->remove_from_group = tp_contact_list_remove_from_group;
        iface->rename_group      = tp_contact_list_rename_group;
        iface->remove_group      = tp_contact_list_remove_group;
-       iface->get_flags         = tp_contact_list_get_flags;
-       iface->set_blocked       = tp_contact_list_set_blocked;
-       iface->get_blocked       = tp_contact_list_get_blocked;
 }
 
 void
index 1e53facdcd11bdcc57e33e4c81a3deeefcf0f031..93e28d3d3b150a48b8a48151e33c55bb9241190c 100644 (file)
@@ -203,7 +203,7 @@ tp_roomlist_got_rooms_cb (TpChannel       *channel,
                                                       chatrooms,
                                                       tp_roomlist_chatrooms_free,
                                                       list);
-               g_array_free (handles, TRUE);
+               g_array_unref (handles);
        }
 }
 
index 87ca01db57149eab0cb2344c183d4461be89657e..388b3aa0005d1c254a47a2e1a4e1600d585a263d 100644 (file)
@@ -261,7 +261,7 @@ tp_streamed_media_request_streams_for_capabilities (EmpathyTpStreamedMedia *call
       handle, stream_types, tp_streamed_media_request_streams_cb, NULL, NULL,
       G_OBJECT (call));
 
-  g_array_free (stream_types, TRUE);
+  g_array_unref (stream_types);
 }
 
 static void
index 83fe4ce7e50bfa52d79ed56cff39a74ec0544202..972abe65e2ae6011aef33d1f5a6a0a6b4851145a 100644 (file)
@@ -1163,3 +1163,35 @@ empathy_sasl_channel_supports_mechanism (TpChannel *channel,
 
   return tp_strv_contains (available_mechanisms, mechanism);
 }
+
+FolksIndividual *
+empathy_create_individual_from_tp_contact (TpContact *contact)
+{
+  TpAccount *account;
+  TpConnection *connection;
+  TpfPersonaStore *store;
+  GeeSet *personas;
+  TpfPersona *persona;
+  FolksIndividual *individual;
+
+  connection = tp_contact_get_connection (contact);
+  account = tp_connection_get_account (connection);
+
+  store = tpf_persona_store_new (account);
+
+  personas = GEE_SET (
+      gee_hash_set_new (FOLKS_TYPE_PERSONA, g_object_ref, g_object_unref,
+      g_direct_hash, g_direct_equal));
+
+  persona = tpf_persona_new (contact, store);
+
+  gee_collection_add (GEE_COLLECTION (personas), persona);
+
+  individual = folks_individual_new (personas);
+
+  g_clear_object (&persona);
+  g_clear_object (&personas);
+  g_object_unref (store);
+
+  return individual;
+}
index f8d47ec8aaf08a53277e2474226f39aa2824dfc6..ac5fef82066e1b84d082db2bf6a418d7210bd459 100644 (file)
@@ -121,6 +121,9 @@ void empathy_individual_can_audio_video_call (FolksIndividual *individual,
 gboolean empathy_sasl_channel_supports_mechanism (TpChannel *channel,
     const gchar *mechanism);
 
+FolksIndividual * empathy_create_individual_from_tp_contact (
+    TpContact *contact);
+
 /* Copied from wocky/wocky-utils.h */
 
 #define empathy_implement_finish_void(source, tag) \
index 76b808ae6d90b92ffa46126aee851ae9892554cd..7b2f9a23330ea9a5cf92462581952eb6c3db7d7c 100644 (file)
@@ -7,7 +7,7 @@ AC_DEFUN([GLIB_GSETTINGS],
 [
   m4_pattern_allow([AM_V_GEN])
   AC_ARG_ENABLE(schemas-compile,
-                AC_HELP_STRING([--disable-schemas-compile],
+                AS_HELP_STRING([--disable-schemas-compile],
                                [Disable regeneration of gschemas.compiled on install]),
                 [case ${enableval} in
                   yes) GSETTINGS_DISABLE_SCHEMAS_COMPILE=""  ;;
@@ -17,9 +17,16 @@ AC_DEFUN([GLIB_GSETTINGS],
   AC_SUBST([GSETTINGS_DISABLE_SCHEMAS_COMPILE])
   PKG_PROG_PKG_CONFIG([0.16])
   AC_SUBST(gsettingsschemadir, [${datadir}/glib-2.0/schemas])
-  AC_SUBST(GLIB_COMPILE_SCHEMAS, `$PKG_CONFIG --variable glib_compile_schemas gio-2.0`)
+  if test x$cross_compiling != xyes; then
+    GLIB_COMPILE_SCHEMAS=`$PKG_CONFIG --variable glib_compile_schemas gio-2.0`
+  else
+    AC_PATH_PROG(GLIB_COMPILE_SCHEMAS, glib-compile-schemas)
+  fi
+  AC_SUBST(GLIB_COMPILE_SCHEMAS)
   if test "x$GLIB_COMPILE_SCHEMAS" = "x"; then
-    AC_MSG_ERROR([glib-compile-schemas not found.])
+    ifelse([$2],,[AC_MSG_ERROR([glib-compile-schemas not found.])],[$2])
+  else
+    ifelse([$1],,[:],[$1])
   fi
 
   GSETTINGS_RULES='
@@ -27,8 +34,10 @@ AC_DEFUN([GLIB_GSETTINGS],
 
 mostlyclean-am: clean-gsettings-schemas
 
-%.gschema.valid: %.gschema.xml
-       $(AM_V_GEN) if test -f "$^"; then d=; else d="$(srcdir)/"; fi; $(GLIB_COMPILE_SCHEMAS) --dry-run --schema-file=$${d}$^ && touch [$]@
+gsettings__enum_file = $(addsuffix .enums.xml,$(gsettings_ENUM_NAMESPACE))
+
+%.gschema.valid: %.gschema.xml $(gsettings__enum_file)
+       $(AM_V_GEN) if test -f "$<"; then d=; else d="$(srcdir)/"; fi; $(GLIB_COMPILE_SCHEMAS) --strict --dry-run $(addprefix --schema-file=,$(gsettings__enum_file)) --schema-file=$${d}$< && touch [$]@
 
 all-am: $(gsettings_SCHEMAS:.xml=.valid)
 uninstall-am: uninstall-gsettings-schemas
@@ -38,22 +47,28 @@ install-data-am: install-gsettings-schemas
 
 install-gsettings-schemas: $(gsettings_SCHEMAS) $(gsettings__enum_file)
        @$(NORMAL_INSTALL)
-       test -z "$(gsettingsschemadir)" || $(MKDIR_P) "$(DESTDIR)$(gsettingsschemadir)"
-       $(INSTALL_DATA) $^ "$(DESTDIR)$(gsettingsschemadir)"
-       test -n "$(GSETTINGS_DISABLE_SCHEMAS_COMPILE)$(DESTDIR)" || $(GLIB_COMPILE_SCHEMAS) $(gsettingsschemadir)
+       if test -n "$^"; then \
+               test -z "$(gsettingsschemadir)" || $(MKDIR_P) "$(DESTDIR)$(gsettingsschemadir)"; \
+               $(INSTALL_DATA) $^ "$(DESTDIR)$(gsettingsschemadir)"; \
+               test -n "$(GSETTINGS_DISABLE_SCHEMAS_COMPILE)$(DESTDIR)" || $(GLIB_COMPILE_SCHEMAS) $(gsettingsschemadir); \
+       fi
 
 uninstall-gsettings-schemas:
        @$(NORMAL_UNINSTALL)
-       @list='\''$(gsettings_SCHEMAS)'\''; test -n "$(gsettingsschemadir)" || list=; \
+       @list='\''$(gsettings_SCHEMAS) $(gsettings__enum_file)'\''; test -n "$(gsettingsschemadir)" || list=; \
        files=`for p in $$list; do echo $$p; done | sed -e '\''s|^.*/||'\''`; \
        test -n "$$files" || exit 0; \
        echo " ( cd '\''$(DESTDIR)$(gsettingsschemadir)'\'' && rm -f" $$files ")"; \
        cd "$(DESTDIR)$(gsettingsschemadir)" && rm -f $$files
-       test -n "$(GSETTINGS_DISABLE_SCHEMAS_COMPILE)$(DESTDIR)" || $(GLIB_COMPILE_SCHEMAS) --uninstall $(gsettingsschemadir)
+       test -n "$(GSETTINGS_DISABLE_SCHEMAS_COMPILE)$(DESTDIR)" || $(GLIB_COMPILE_SCHEMAS) $(gsettingsschemadir)
 
 clean-gsettings-schemas:
-       rm -f $(gsettings_SCHEMAS:.xml=.valid)
+       rm -f $(gsettings_SCHEMAS:.xml=.valid) $(gsettings__enum_file)
 
+ifdef gsettings_ENUM_NAMESPACE
+$(gsettings__enum_file): $(gsettings_ENUM_FILES)
+       $(AM_V_GEN) glib-mkenums --comments '\''<!-- @comment@ -->'\'' --fhead "<schemalist>" --vhead "  <@type@ id='\''$(gsettings_ENUM_NAMESPACE).@EnumName@'\''>" --vprod "    <value nick='\''@valuenick@'\'' value='\''@valuenum@'\''/>" --vtail "  </@type@>" --ftail "</schemalist>" [$]^ > [$]@.tmp && mv [$]@.tmp [$]@
+endif
 '
   _GSETTINGS_SUBST(GSETTINGS_RULES)
 ])
index 450eb2c614a605e90d658fd2123c819785d0b18a..22538e96b6e1e3bbdc51e47ad3d3402e83c40aa3 100644 (file)
@@ -50,6 +50,7 @@ mk
 ml
 mr
 ms
+my
 nb
 ne
 nl
index 355089aa8879bc8e6e4b3ef39f4f4e58df853f8b..2d0012f65d5f13333779e1e0d745f96b967c7e60 100644 (file)
@@ -35,7 +35,6 @@ libempathy-gtk/empathy-contact-blocking-dialog.c
 libempathy-gtk/empathy-chat-text-view.c
 libempathy-gtk/empathy-contact-dialogs.c
 [type: gettext/glade]libempathy-gtk/empathy-contact-dialogs.ui
-libempathy-gtk/empathy-contact-list-view.c
 libempathy-gtk/empathy-contact-menu.c
 libempathy-gtk/empathy-contact-search-dialog.c
 libempathy-gtk/empathy-contact-widget.c
@@ -57,6 +56,8 @@ libempathy-gtk/empathy-log-window.c
 [type: gettext/glade]libempathy-gtk/empathy-log-window.ui
 libempathy-gtk/empathy-new-message-dialog.c
 libempathy-gtk/empathy-new-call-dialog.c
+libempathy-gtk/empathy-bad-password-dialog.c
+libempathy-gtk/empathy-base-password-dialog.c
 libempathy-gtk/empathy-password-dialog.c
 libempathy-gtk/empathy-presence-chooser.c
 libempathy-gtk/empathy-protocol-chooser.c
index 81ace197cfc30c3d43f950077aec05670a2b920a..38be0972987ac56a224459fd954fdef424a93209 100644 (file)
--- a/po/es.po
+++ b/po/es.po
@@ -9,8 +9,8 @@ msgstr ""
 "Project-Id-Version: empathy.master\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
 "product=empathy&keywords=I18N+L10N&component=General\n"
-"POT-Creation-Date: 2011-10-21 21:45+0000\n"
-"PO-Revision-Date: 2011-10-23 19:41+0200\n"
+"POT-Creation-Date: 2011-11-24 11:20+0000\n"
+"PO-Revision-Date: 2011-11-25 17:08+0100\n"
 "Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
 "Language-Team: Español <gnome-es-list@gnome.org>\n"
 "MIME-Version: 1.0\n"
@@ -40,22 +40,14 @@ msgid "Always open a separate chat window for new chats."
 msgstr "Siempre abrir una ventana de chat separada para chats nuevos."
 
 #: ../data/org.gnome.Empathy.gschema.xml.in.h:2
-msgid "Call volume"
-msgstr "Volumen de la llamada"
-
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:3
-msgid "Call volume, as a percentage."
-msgstr "Volumen de la llamada, como porcentaje"
-
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:4
 msgid "Camera device"
 msgstr "Dispositivo de cámara"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:5
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:3
 msgid "Camera position"
 msgstr "Posición de la cámara"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:6
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:4
 msgid ""
 "Character to add after nickname when using nick completion (tab) in group "
 "chat."
@@ -63,62 +55,62 @@ msgstr ""
 "Carácter que añadir después del apodo cuando se usa el completado de apodos "
 "(tab) en salas de chat."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:7
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:5
 msgid "Chat window theme"
 msgstr "Tema de la ventana de charla"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:8
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:6
 msgid "Chat window theme variant"
 msgstr "Variante del tema de la ventana de charla"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:9
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:7
 msgid ""
 "Comma-separated list of spell checker languages to use (e.g. \"en, fr, nl\")."
 msgstr ""
 "Lista separada por comas de idiomas que se usarán en la revisión ortográfica "
 "(ej. «es, en, fr»)."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:10
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:8
 msgid "Compact contact list"
 msgstr "Lista compacta de contactos"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:11
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:9
 msgid "Connection managers should be used"
 msgstr "Se deberían usar gestores de conexión"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:12
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:10
 msgid "Contact list sort criterion"
 msgstr "Criterio de ordenación de la lista de contactos"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:13
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:11
 msgid "D-Bus object path of the last account selected to join a room."
 msgstr ""
 "Ruta del objeto D-Bus de la última cuenta seleccionada para unirse a una "
 "sala."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:14
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:12
 msgid "Default camera device to use in video calls, e.g. /dev/video0."
 msgstr ""
 "El dispositivo de cámara predeterminado que usar en las llamadas de vídeo, "
 "ej. /dev/video0."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:15
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:13
 msgid "Default directory to select an avatar image from"
 msgstr "Carpeta predeterminada para seleccionar un avatar"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:16
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:14
 msgid "Disable popup notifications when away"
 msgstr "Desactivar las notificaciones emergentes al estar ausente"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:17
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:15
 msgid "Disable sounds when away"
 msgstr "Desactivar los sonidos al ausentarse"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:18
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:16
 msgid "Display incoming events in the status area"
 msgstr "Mostrar los eventos entrantes en el área de estado"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:19
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:17
 msgid ""
 "Display incoming events in the status area. If false, present them to the "
 "user immediately."
@@ -126,256 +118,256 @@ msgstr ""
 "Mostrar los eventos entrantes en el área de estado. Si es falso presentarlos "
 "directamente al usuario."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:20
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:18
 msgid "Echo cancellation support"
 msgstr "Soporte de cancelación de eco"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:21
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:19
 msgid "Empathy can publish the user's location"
 msgstr "Empathy puede publicar la ubicación del usuario"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:22
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:20
 msgid "Empathy can use the GPS to guess the location"
 msgstr "Empathy puede usar el GPS para deducir la ubicación"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:23
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:21
 msgid "Empathy can use the cellular network to guess the location"
 msgstr "Empathy puede usar la red telefónica móvil para deducir la ubicación"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:24
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:22
 msgid "Empathy can use the network to guess the location"
 msgstr "Empathy puede usar la red para deducir la ubicación"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:25
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:23
 msgid "Empathy default download folder"
 msgstr "Carpeta de descargas predeterminada de Epiphany"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:26
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:24
 msgid "Empathy should auto-away when idle"
 msgstr "Empathy debería mostrar ausencia en inactividad"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:27
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:25
 msgid "Empathy should auto-connect on startup"
 msgstr "Empathy se debería autoconectar al inicio"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:28
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:26
 msgid "Empathy should reduce the location's accuracy"
 msgstr "Empathy debería reducir la precisión de la ubicación"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:29
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:27
 msgid "Empathy should use the avatar of the contact as the chat window icon"
 msgstr ""
 "Empathy debería usar el avatar del contacto como icono de la ventana de chat"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:30
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:28
 msgid "Enable WebKit Developer Tools"
 msgstr "Activar las herramientas de desarrollo de WebKit"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:31
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:29
 msgid "Enable popup notifications for new messages"
 msgstr "Activar notificaciones emergentes para mensajes nuevos"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:32
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:30
 msgid "Enable spell checker"
 msgstr "Activar revisor ortográfico"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:33
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:31
 msgid "Hide main window"
 msgstr "Ocultar la ventana principal"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:34
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:32
 msgid "Hide the main window."
 msgstr "Ocultar la ventana principal."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:35
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:33
 msgid "Last account selected in Join Room dialog"
 msgstr "Última cuenta seleccionada en el diálogo Unirse a sala"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:36
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:34
 msgid "Nick completed character"
 msgstr "Carácter de completado de apodo"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:37
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:35
 msgid "Open new chats in separate windows"
 msgstr "Abrir chats nuevos en ventanas separadas"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:38
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:36
 msgid "Path of the Adium theme to use"
 msgstr "Ruta del tema Adium que usar"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:39
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:37
 msgid "Path of the Adium theme to use if the theme used for chat is Adium."
 msgstr "Ruta al tema Adium que usar si el tema usado para el chat es Adium."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:40
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:38
 msgid "Play a sound for incoming messages"
 msgstr "Reproducir un sonido cuando lleguen mensajes"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:41
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:39
 msgid "Play a sound for new conversations"
 msgstr "Reproducir un sonido para conversaciones nuevas"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:42
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:40
 msgid "Play a sound for outgoing messages"
 msgstr "Reproducir un sonido al enviar mensajes"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:43
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:41
 msgid "Play a sound when a contact logs in"
 msgstr "Reproducir un sonido cuando un contacto inicie sesión"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:44
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:42
 msgid "Play a sound when a contact logs out"
 msgstr "Reproducir un sonido cuando un contacto finalice su sesión"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:45
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:43
 msgid "Play a sound when we log in"
 msgstr "Reproducir un sonido cuando inicio sesión"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:46
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:44
 msgid "Play a sound when we log out"
 msgstr "Reproducir un sonido al finalizar una sesión"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:47
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:45
 msgid "Pop up notifications if the chat isn't focused"
 msgstr ""
 "Mostrar notificaciones emergentes si la ventana de chat no tiene el foco"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:48
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:46
 msgid "Pop up notifications when a contact logs in"
 msgstr "Mostrar notificaciones emergentes cuando un contacto se conecta"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:49
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:47
 msgid "Pop up notifications when a contact logs out"
 msgstr "Mostrar notificaciones emergentes cuando un contacto se desconecta"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:50
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:48
 msgid "Position the camera preview should be during a call."
 msgstr "Posición donde estar la vista previa de la cámara durante una llamada."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:51
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:49
 msgid "Show Balance in contact list"
 msgstr "Mostrar crédito en la lista de contactos"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:52
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:50
 msgid "Show avatars"
 msgstr "Mostrar avatares"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:53
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:51
 msgid "Show contact list in rooms"
 msgstr "Mostrar lista de contactos en salas"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:54
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:52
 msgid "Show hint about closing the main window"
 msgstr "Mostrar consejo sobre cómo cerrar la ventana principal"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:55
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:53
 msgid "Show offline contacts"
 msgstr "Mostrar contactos no conectados"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:56
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:54
 msgid "Show protocols"
 msgstr "Mostrar protocolos"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:57
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:55
 msgid "Spell checking languages"
 msgstr "Idiomas para revisión ortográfica"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:58
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:56
 msgid "The default folder to save file transfers in."
 msgstr "La carpeta predeterminada donde guardar los archivos transferidos."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:59
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:57
 msgid "The last directory that an avatar image was chosen from."
 msgstr "Última carpeta de la que se eligió un avatar."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:60
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:58
 msgid "The position for the chat window side pane"
 msgstr "La posición para el panel lateral de la ventana de charla"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:61
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:59
 msgid "The stored position (in pixels) of the chat window side pane."
 msgstr ""
 "La posición almacenada (en píxeles) del panel lateral de la ventana de "
 "charla."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:62
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:60
 msgid "The theme that is used to display the conversation in chat windows."
 msgstr ""
 "El tema que se usará para mostrar la conversación en las ventanas de chat."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:63
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:61
 msgid ""
 "The theme variant that is used to display the conversation in chat windows."
 msgstr ""
 "La variante del tema que se usará para mostrar la conversación en las "
 "ventanas de chat."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:64
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:62
 msgid "Use graphical smileys"
 msgstr "Usar emoticonos gráficos"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:65
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:63
 msgid "Use notification sounds"
 msgstr "Usar sonidos de notificación"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:66
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:64
 msgid "Use theme for chat rooms"
 msgstr "Usar tema para salas de chat"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:67
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:65
 msgid "Whether Empathy can publish the user's location to their contacts."
 msgstr ""
 "Indica si Empathy puede publicar la ubicación del usuario a sus contactos."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:68
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:66
 msgid "Whether Empathy can use the GPS to guess the location."
 msgstr "Indica si Empathy puede usar el GPS para deducir la ubicación."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:69
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:67
 msgid "Whether Empathy can use the cellular network to guess the location."
 msgstr ""
 "Indica si Empathy puede usar la red telefónica móvil para deducir la "
 "ubicación."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:70
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:68
 msgid "Whether Empathy can use the network to guess the location."
 msgstr "Indica si Empathy puede usar la red para deducir la ubicación."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:71
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:69
 msgid "Whether Empathy should automatically log into your accounts on startup."
 msgstr ""
 "Indica si Empathy debe iniciar sesión en sus cuentas automáticamente al "
 "inicio."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:72
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:70
 msgid ""
 "Whether Empathy should go into away mode automatically if the user is idle."
 msgstr ""
 "Indica si Empathy debe entrar en modo de ausencia automáticamente si el "
 "usuario está inactivo."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:73
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:71
 msgid ""
 "Whether Empathy should reduce the location's accuracy for privacy reasons."
 msgstr ""
 "Indica si Empathy debería reducir la precisión de la ubicación por motivos "
 "de privacidad."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:74
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:72
 msgid ""
 "Whether Empathy should use the avatar of the contact as the chat window icon."
 msgstr ""
 "Indica si Empathy debería usar el avatar del contacto como el icono de la "
 "ventana de chat."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:75
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:73
 msgid ""
 "Whether WebKit developer tools, such as the Web Inspector, should be enabled."
 msgstr ""
 "Indica si las herramientas de desarrollo de WebKit, tales como el Inspector "
 "web, den activarse."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:76
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:74
 msgid ""
 "Whether connectivity managers should be used to automatically disconnect/"
 "reconnect."
@@ -383,83 +375,83 @@ msgstr ""
 "Indica si se debe usan usar gestores de conectividad para desconectarse/"
 "reconectarse automáticamente."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:77
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:75
 msgid ""
 "Whether to check words typed against the languages you want to check with."
 msgstr ""
 "Indica si se deben revisar las palabras tecleadas con respecto a los idiomas "
 "con los que quiere comprobarlo."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:78
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:76
 msgid "Whether to convert smileys into graphical images in conversations."
 msgstr ""
 "Indica si se deben convertir los emoticonos en imágenes gráficas en las "
 "conversaciones."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:79
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:77
 msgid "Whether to enable Pulseaudio's echo cancellation filter."
 msgstr ""
 "Indica si se debe activar la el filtro de cancelación de eco de Pulseaudio."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:80
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:78
 msgid "Whether to play a sound to notify of contacts logging into the network."
 msgstr ""
 "Indica si se debe reproducir un sonido para notificar los inicios de sesión "
 "de los contactos en la red."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:81
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:79
 msgid ""
 "Whether to play a sound to notify of contacts logging out of the network."
 msgstr ""
 "Indica si se debe reproducir un sonido para notificar las finalizaciones de "
 "sesión de los contactos en la red."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:82
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:80
 msgid "Whether to play a sound to notify of events."
 msgstr "Indica si se debe reproducir un sonido para notificar eventos."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:83
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:81
 msgid "Whether to play a sound to notify of incoming messages."
 msgstr ""
 "Indica si se debe reproducir un sonido para notificar mensajes entrantes."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:84
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:82
 msgid "Whether to play a sound to notify of new conversations."
 msgstr ""
 "Indica si se debe reproducir un sonido para notificar conversaciones nuevas."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:85
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:83
 msgid "Whether to play a sound to notify of outgoing messages."
 msgstr ""
 "Indica si se debe reproducir un sonido para notificar mensajes salientes."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:86
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:84
 msgid "Whether to play a sound when logging into a network."
 msgstr "Indica si se debe reproducir un sonido al iniciar sesión en una red."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:87
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:85
 msgid "Whether to play a sound when logging out of a network."
 msgstr "Indica si se debe reproducir un sonido al finalizar sesión en una red."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:88
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:86
 msgid "Whether to play sound notifications when away or busy."
 msgstr ""
 "Indica si se deben reproducir sonidos de notificaciones cuando se esté "
 "ausente u ocupado."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:89
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:87
 msgid "Whether to show a popup notification when a contact goes offline."
 msgstr ""
 "Indica si se deben mostrar las notificaciones emergentes cuando un contacto "
 "se desconecta."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:90
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:88
 msgid "Whether to show a popup notification when a contact goes online."
 msgstr ""
 "Indica si se deben mostrar las notificaciones emergentes cuando un contacto "
 "se conecta."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:91
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:89
 msgid ""
 "Whether to show a popup notification when receiving a new message even if "
 "the chat is already opened, but not focused."
@@ -467,50 +459,50 @@ msgstr ""
 "Indica si de deben mostrar notificaciones emergentes al recibir un mensaje "
 "nuevo incluso si la ventana de chat ya está abierta pero no tiene el foco."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:92
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:90
 msgid "Whether to show a popup notification when receiving a new message."
 msgstr ""
 "Indica si se deben mostrar notificaciones emergentes al recibir un mensaje "
 "nuevo."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:93
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:91
 msgid "Whether to show account balances in the contact list."
 msgstr "Indica si se debe mostrar el crédito en la lista de contactos."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:94
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:92
 msgid ""
 "Whether to show avatars for contacts in the contact list and chat windows."
 msgstr ""
 "Indica si se deben mostrar los avatares para los contactos en la lista de "
 "contactos y ventanas de chat."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:95
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:93
 msgid "Whether to show contacts that are offline in the contact list."
 msgstr ""
 "Indica si se debe mostrar los contactos que están desconectados en la lista "
 "de contactos."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:96
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:94
 msgid "Whether to show popup notifications when away or busy."
 msgstr ""
 "Indica si se deben mostrar las notificaciones emergentes cuando se esté "
 "ausente u ocupado."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:97
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:95
 msgid "Whether to show protocols for contacts in the contact list."
 msgstr ""
 "Indica si se deben mostrar los protocolos para los contactos en la lista de "
 "contactos."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:98
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:96
 msgid "Whether to show the contact list in chat rooms."
 msgstr "Indica si se debe mostrar la lista de contactos en salas de chat."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:99
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:97
 msgid "Whether to show the contact list in compact mode."
 msgstr "Indica si se debe mostrar la lista de contactos en modo compacto."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:100
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:98
 msgid ""
 "Whether to show the message dialog about closing the main window with the "
 "'x' button in the title bar."
@@ -518,11 +510,11 @@ msgstr ""
 "Indica si se debe mostrar un mensaje de diálogo sobre cómo cerrar la ventana "
 "principal con el botón «x» en la barra de título."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:101
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:99
 msgid "Whether to use the theme for chat rooms."
 msgstr "Indica si se debe usar el tema para salas de chat."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:102
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:100
 msgid ""
 "Which criterion to use when sorting the contact list. Default is to sort by "
 "the contact's name with the value \"name\". A value of \"state\" will sort "
@@ -538,7 +530,7 @@ msgstr "Gestionar las cuentas de mensajería y Voz IP"
 
 #. Tweak the dialog
 #: ../data/empathy-accounts.desktop.in.in.h:2
-#: ../src/empathy-accounts-dialog.c:2324
+#: ../src/empathy-accounts-dialog.c:2312
 msgid "Messaging and VoIP Accounts"
 msgstr "Cuentas de mensajería y Voz IP"
 
@@ -815,7 +807,7 @@ msgstr[1] "hace %d meses"
 msgid "in the future"
 msgstr "en el futuro"
 
-#: ../libempathy-gtk/empathy-account-chooser.c:540
+#: ../libempathy-gtk/empathy-account-chooser.c:688
 msgid "All accounts"
 msgstr "Todas las cuentas"
 
@@ -838,58 +830,58 @@ msgstr "Servidor"
 msgid "Port"
 msgstr "Puerto"
 
-#: ../libempathy-gtk/empathy-account-widget.c:769
-#: ../libempathy-gtk/empathy-account-widget.c:826
+#: ../libempathy-gtk/empathy-account-widget.c:776
+#: ../libempathy-gtk/empathy-account-widget.c:828
 #, c-format
 msgid "%s:"
 msgstr "%s:"
 
-#: ../libempathy-gtk/empathy-account-widget.c:1192
+#: ../libempathy-gtk/empathy-account-widget.c:1182
 msgid "My Web Accounts"
 msgstr "Mis cuentas web"
 
-#: ../libempathy-gtk/empathy-account-widget.c:1209
+#: ../libempathy-gtk/empathy-account-widget.c:1199
 #, c-format
 msgid "The account %s is edited via %s."
 msgstr "La cuenta %s se edita a través de %s."
 
-#: ../libempathy-gtk/empathy-account-widget.c:1215
+#: ../libempathy-gtk/empathy-account-widget.c:1205
 #, c-format
 msgid "The account %s cannot be edited in Empathy."
 msgstr "No se puede editar la cuenta %s en Empathy."
 
-#: ../libempathy-gtk/empathy-account-widget.c:1234
+#: ../libempathy-gtk/empathy-account-widget.c:1224
 msgid "Launch My Web Accounts"
 msgstr "Lanzar My Web Accounts"
 
 #. general handler
-#: ../libempathy-gtk/empathy-account-widget.c:1242
+#: ../libempathy-gtk/empathy-account-widget.c:1232
 #, c-format
 msgid "Edit %s"
 msgstr "Editar %s"
 
-#: ../libempathy-gtk/empathy-account-widget.c:1592
+#: ../libempathy-gtk/empathy-account-widget.c:1582
 #: ../libempathy-gtk/empathy-account-widget-irc.ui.h:11
 msgid "Username:"
 msgstr "Nombre de usuario:"
 
-#: ../libempathy-gtk/empathy-account-widget.c:1910
+#: ../libempathy-gtk/empathy-account-widget.c:1900
 msgid "A_pply"
 msgstr "_Aplicar"
 
-#: ../libempathy-gtk/empathy-account-widget.c:1940
+#: ../libempathy-gtk/empathy-account-widget.c:1930
 msgid "L_og in"
 msgstr "Iniciar _sesión"
 
-#: ../libempathy-gtk/empathy-account-widget.c:2014
+#: ../libempathy-gtk/empathy-account-widget.c:2004
 msgid "This account already exists on the server"
 msgstr "Esta cuenta ya existe en el servidor"
 
-#: ../libempathy-gtk/empathy-account-widget.c:2017
+#: ../libempathy-gtk/empathy-account-widget.c:2007
 msgid "Create a new account on the server"
 msgstr "Crear una cuenta nueva en el servidor"
 
-#: ../libempathy-gtk/empathy-account-widget.c:2209
+#: ../libempathy-gtk/empathy-account-widget.c:2201
 msgid "Ca_ncel"
 msgstr "Ca_ncelar"
 
@@ -898,19 +890,19 @@ msgstr "Ca_ncelar"
 #. * like: "MyUserName on freenode".
 #. * You should reverse the order of these arguments if the
 #. * server should come before the login id in your locale.
-#: ../libempathy-gtk/empathy-account-widget.c:2487
+#: ../libempathy-gtk/empathy-account-widget.c:2479
 #, c-format
 msgid "%1$s on %2$s"
 msgstr "%1$s en %2$s"
 
 #. To translators: The parameter is the protocol name. The resulting
 #. * string will be something like: "Jabber Account"
-#: ../libempathy-gtk/empathy-account-widget.c:2513
+#: ../libempathy-gtk/empathy-account-widget.c:2505
 #, c-format
 msgid "%s Account"
 msgstr "Cuenta %s"
 
-#: ../libempathy-gtk/empathy-account-widget.c:2517
+#: ../libempathy-gtk/empathy-account-widget.c:2509
 msgid "New account"
 msgstr "Cuenta nueva"
 
@@ -958,7 +950,7 @@ msgstr "Recordar contraseña"
 #: ../libempathy-gtk/empathy-account-widget-msn.ui.h:6
 #: ../libempathy-gtk/empathy-account-widget-sip.ui.h:17
 #: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:6
-#: ../libempathy-gtk/empathy-password-dialog.c:311
+#: ../libempathy-gtk/empathy-base-password-dialog.c:261
 msgid "Remember password"
 msgstr "Recordar contraseña"
 
@@ -1283,7 +1275,7 @@ msgid "STUN Server:"
 msgstr "Servidor STUN:"
 
 #: ../libempathy-gtk/empathy-account-widget-sip.ui.h:19
-#: ../libempathy-gtk/empathy-contactinfo-utils.c:112
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:114
 msgid "Server:"
 msgstr "Servidor:"
 
@@ -1453,8 +1445,8 @@ msgid ""
 "join a new chat room\""
 msgstr ""
 "/say <mensaje>: enviar un <mensaje> a la conversación actual. Esto se usa "
-"para enviar un mensaje comenzando por una «/». Por ejemplo: «/say /join se "
-"usa para unirse a una sala de chat nueva»"
+"para enviar un mensaje comenzando por una «/». Por ejemplo: «/say /join se usa "
+"para unirse a una sala de chat nueva»"
 
 #: ../libempathy-gtk/empathy-chat.c:1100
 msgid "/whois <contact ID>: display information about a contact"
@@ -1570,20 +1562,20 @@ msgstr "Insertar emoticono"
 
 #. send button
 #: ../libempathy-gtk/empathy-chat.c:2319
-#: ../libempathy-gtk/empathy-ui-utils.c:1843
+#: ../libempathy-gtk/empathy-ui-utils.c:1867
 msgid "_Send"
 msgstr "E_nviar"
 
 #. Spelling suggestions
-#: ../libempathy-gtk/empathy-chat.c:2373
+#: ../libempathy-gtk/empathy-chat.c:2376
 msgid "_Spelling Suggestions"
 msgstr "_Sugerencias ortográficas"
 
-#: ../libempathy-gtk/empathy-chat.c:2462
+#: ../libempathy-gtk/empathy-chat.c:2465
 msgid "Failed to retrieve recent logs"
 msgstr "Falló al recibir los registros recientes"
 
-#: ../libempathy-gtk/empathy-chat.c:2599
+#: ../libempathy-gtk/empathy-chat.c:2602
 #, c-format
 msgid "%s has disconnected"
 msgstr "%s se ha desconectado"
@@ -1591,12 +1583,12 @@ msgstr "%s se ha desconectado"
 #. translators: reverse the order of these arguments
 #. * if the kicked should come before the kicker in your locale.
 #.
-#: ../libempathy-gtk/empathy-chat.c:2606
+#: ../libempathy-gtk/empathy-chat.c:2609
 #, c-format
 msgid "%1$s was kicked by %2$s"
 msgstr "%2$s expulsó a %1$s"
 
-#: ../libempathy-gtk/empathy-chat.c:2609
+#: ../libempathy-gtk/empathy-chat.c:2612
 #, c-format
 msgid "%s was kicked"
 msgstr "%s fue expulsado"
@@ -1604,17 +1596,17 @@ msgstr "%s fue expulsado"
 #. translators: reverse the order of these arguments
 #. * if the banned should come before the banner in your locale.
 #.
-#: ../libempathy-gtk/empathy-chat.c:2617
+#: ../libempathy-gtk/empathy-chat.c:2620
 #, c-format
 msgid "%1$s was banned by %2$s"
 msgstr "%2$s vetó a %1$s"
 
-#: ../libempathy-gtk/empathy-chat.c:2620
+#: ../libempathy-gtk/empathy-chat.c:2623
 #, c-format
 msgid "%s was banned"
 msgstr "%s fue vetado"
 
-#: ../libempathy-gtk/empathy-chat.c:2624
+#: ../libempathy-gtk/empathy-chat.c:2627
 #, c-format
 msgid "%s has left the room"
 msgstr "%s ha dejado la sala"
@@ -1624,17 +1616,17 @@ msgstr "%s ha dejado la sala"
 #. * given by the user living the room. If this poses a problem,
 #. * please let us know. :-)
 #.
-#: ../libempathy-gtk/empathy-chat.c:2633
+#: ../libempathy-gtk/empathy-chat.c:2636
 #, c-format
 msgid " (%s)"
 msgstr " (%s)"
 
-#: ../libempathy-gtk/empathy-chat.c:2658
+#: ../libempathy-gtk/empathy-chat.c:2661
 #, c-format
 msgid "%s has joined the room"
 msgstr "%s ha entrado en la sala"
 
-#: ../libempathy-gtk/empathy-chat.c:2683
+#: ../libempathy-gtk/empathy-chat.c:2686
 #, c-format
 msgid "%s is now known as %s"
 msgstr "Ahora %s se llama %s"
@@ -1642,87 +1634,88 @@ msgstr "Ahora %s se llama %s"
 #. We don't know if the incoming call has been accepted or not, so we
 #. * assume it hasn't and if it has, we'll set the proper status when
 #. * we get the new handler.
-#: ../libempathy-gtk/empathy-chat.c:2836
-#: ../src/empathy-streamed-media-window.c:1895
-#: ../src/empathy-event-manager.c:1260 ../src/empathy-call-window.c:1535
-#: ../src/empathy-call-window.c:1585 ../src/empathy-call-window.c:2631
+#: ../libempathy-gtk/empathy-chat.c:2839
+#: ../src/empathy-streamed-media-window.c:1889
+#: ../src/empathy-event-manager.c:1260 ../src/empathy-call-window.c:1538
+#: ../src/empathy-call-window.c:1588 ../src/empathy-call-window.c:2631
 msgid "Disconnected"
 msgstr "Desconectado"
 
 #. Add message
-#: ../libempathy-gtk/empathy-chat.c:3482
+#: ../libempathy-gtk/empathy-chat.c:3485
 msgid "Would you like to store this password?"
 msgstr "¿Quiere guardar esta contraseña?"
 
-#: ../libempathy-gtk/empathy-chat.c:3488
+#: ../libempathy-gtk/empathy-chat.c:3491
 msgid "Remember"
 msgstr "Recordar"
 
-#: ../libempathy-gtk/empathy-chat.c:3498
+#: ../libempathy-gtk/empathy-chat.c:3501
 msgid "Not now"
 msgstr "Ahora no"
 
-#: ../libempathy-gtk/empathy-chat.c:3542
+#: ../libempathy-gtk/empathy-chat.c:3545
+#: ../libempathy-gtk/empathy-bad-password-dialog.c:142
 msgid "Retry"
 msgstr "Volver a intentarlo"
 
-#: ../libempathy-gtk/empathy-chat.c:3546
+#: ../libempathy-gtk/empathy-chat.c:3549
 msgid "Wrong password; please try again:"
 msgstr "Contraseña incorrecta; inténtelo de nuevo:"
 
 #. Add message
-#: ../libempathy-gtk/empathy-chat.c:3676
+#: ../libempathy-gtk/empathy-chat.c:3679
 msgid "This room is protected by a password:"
 msgstr "Esta sala está protegida por contraseña:"
 
-#: ../libempathy-gtk/empathy-chat.c:3703
+#: ../libempathy-gtk/empathy-chat.c:3706
 msgid "Join"
 msgstr "Unirse"
 
-#: ../libempathy-gtk/empathy-chat.c:3891 ../src/empathy-event-manager.c:1281
+#: ../libempathy-gtk/empathy-chat.c:3894 ../src/empathy-event-manager.c:1281
 msgid "Connected"
 msgstr "Conectado"
 
-#: ../libempathy-gtk/empathy-chat.c:3946
+#: ../libempathy-gtk/empathy-chat.c:3949
 msgid "Conversation"
 msgstr "Conversación"
 
 #. Translators: this string is a something like
 #. * "Escher Cat (SMS)"
-#: ../libempathy-gtk/empathy-chat.c:3951
+#: ../libempathy-gtk/empathy-chat.c:3954
 #, c-format
 msgid "%s (SMS)"
 msgstr "%s (SMS)"
 
-#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:430
+#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:265
 msgid "Unknown or invalid identifier"
 msgstr "Identificador desconocido o no válido"
 
-#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:432
+#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:267
 msgid "Contact blocking temporarily unavailable"
 msgstr "Bloqueo de contactos no disponible temporalmente"
 
-#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:434
+#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:269
 msgid "Contact blocking unavailable"
 msgstr "Bloqueo de contactos no disponible"
 
-#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:436
+#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:271
 msgid "Permission Denied"
 msgstr "Permiso denegado"
 
-#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:440
+#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:275
 msgid "Could not block contact"
 msgstr "No se pudo bloquear el contacto"
 
-#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:783
+#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:622
 msgid "Edit Blocked Contacts"
 msgstr "Editar contactos bloqueados"
 
 #. Account and Identifier
 #: ../libempathy-gtk/empathy-contact-blocking-dialog.ui.h:1
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:512
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:506
 #: ../libempathy-gtk/empathy-contact-widget.ui.h:2
-#: ../libempathy-gtk/empathy-individual-widget.c:1441
+#: ../libempathy-gtk/empathy-individual-widget.c:1475
 #: ../src/empathy-chatrooms-window.ui.h:1
 #: ../src/empathy-new-chatroom-dialog.ui.h:1
 msgid "Account:"
@@ -1740,57 +1733,57 @@ msgid "Remove"
 msgstr "Quitar"
 
 #. Copy Link Address menu item
-#: ../libempathy-gtk/empathy-chat-text-view.c:320
+#: ../libempathy-gtk/empathy-chat-text-view.c:322
 #: ../libempathy-gtk/empathy-webkit-utils.c:277
 msgid "_Copy Link Address"
 msgstr "_Copiar la dirección del enlace"
 
 #. Open Link menu item
-#: ../libempathy-gtk/empathy-chat-text-view.c:327
+#: ../libempathy-gtk/empathy-chat-text-view.c:329
 #: ../libempathy-gtk/empathy-webkit-utils.c:284
 msgid "_Open Link"
 msgstr "_Abrir enlace"
 
 #. Translators: timestamp displayed between conversations in
 #. * chat windows (strftime format string)
-#: ../libempathy-gtk/empathy-chat-text-view.c:415
+#: ../libempathy-gtk/empathy-chat-text-view.c:417
 msgid "%A %B %d %Y"
 msgstr "%A %d %B %Y"
 
-#: ../libempathy-gtk/empathy-contact-dialogs.c:299
+#: ../libempathy-gtk/empathy-contact-dialogs.c:287
 #: ../libempathy-gtk/empathy-individual-edit-dialog.c:247
 msgid "Edit Contact Information"
 msgstr "Editar información del contacto"
 
-#: ../libempathy-gtk/empathy-contact-dialogs.c:350
+#: ../libempathy-gtk/empathy-contact-dialogs.c:338
 msgid "Personal Information"
 msgstr "Información personal"
 
-#: ../libempathy-gtk/empathy-contact-dialogs.c:459
+#: ../libempathy-gtk/empathy-contact-dialogs.c:439
 #: ../libempathy-gtk/empathy-individual-dialogs.c:119
 msgid "New Contact"
 msgstr "Contacto nuevo"
 
-#: ../libempathy-gtk/empathy-contact-dialogs.c:533
-#: ../libempathy-gtk/empathy-individual-dialogs.c:200
+#: ../libempathy-gtk/empathy-contact-dialogs.c:508
+#: ../libempathy-gtk/empathy-individual-dialogs.c:198
 #, c-format
 msgid "Block %s?"
 msgstr "¿Bloquear a %s?"
 
-#: ../libempathy-gtk/empathy-contact-dialogs.c:538
-#: ../libempathy-gtk/empathy-individual-dialogs.c:255
+#: ../libempathy-gtk/empathy-contact-dialogs.c:513
+#: ../libempathy-gtk/empathy-individual-dialogs.c:253
 #, c-format
 msgid "Are you sure you want to block '%s' from contacting you again?"
 msgstr ""
 "¿Está seguro de que quiere bloquear a «%s» para que no le vuelva a contactar?"
 
-#: ../libempathy-gtk/empathy-contact-dialogs.c:543
-#: ../libempathy-gtk/empathy-individual-dialogs.c:277
+#: ../libempathy-gtk/empathy-contact-dialogs.c:518
+#: ../libempathy-gtk/empathy-individual-dialogs.c:275
 msgid "_Block"
 msgstr "_Bloquear"
 
-#: ../libempathy-gtk/empathy-contact-dialogs.c:559
-#: ../libempathy-gtk/empathy-individual-dialogs.c:286
+#: ../libempathy-gtk/empathy-contact-dialogs.c:536
+#: ../libempathy-gtk/empathy-individual-dialogs.c:284
 msgid "_Report this contact as abusive"
 msgid_plural "_Report these contacts as abusive"
 msgstr[0] "Info_rmar de este contacto como abusivo"
@@ -1809,32 +1802,32 @@ msgid "_Block User"
 msgstr "_Bloquear usuario"
 
 #: ../libempathy-gtk/empathy-contact-list-view.c:1935
-#: ../libempathy-gtk/empathy-individual-view.c:2375
+#: ../libempathy-gtk/empathy-individual-view.c:2397
 #, c-format
 msgid "Do you really want to remove the group '%s'?"
 msgstr "¿Realmente quiere quitar el grupo «%s»?"
 
 #: ../libempathy-gtk/empathy-contact-list-view.c:1937
-#: ../libempathy-gtk/empathy-individual-view.c:2378
+#: ../libempathy-gtk/empathy-individual-view.c:2400
 msgid "Removing group"
 msgstr "Quitando grupo"
 
 #. Remove
 #: ../libempathy-gtk/empathy-contact-list-view.c:1986
-#: ../libempathy-gtk/empathy-contact-list-view.c:2063
-#: ../libempathy-gtk/empathy-individual-view.c:2433
-#: ../libempathy-gtk/empathy-individual-view.c:2636
+#: ../libempathy-gtk/empathy-contact-list-view.c:2059
+#: ../libempathy-gtk/empathy-individual-view.c:2455
+#: ../libempathy-gtk/empathy-individual-view.c:2671
 msgid "_Remove"
 msgstr "_Quitar"
 
-#: ../libempathy-gtk/empathy-contact-list-view.c:2016
-#: ../libempathy-gtk/empathy-individual-view.c:2500
+#: ../libempathy-gtk/empathy-contact-list-view.c:2015
+#: ../libempathy-gtk/empathy-individual-view.c:2532
 #, c-format
 msgid "Do you really want to remove the contact '%s'?"
 msgstr "¿Realmente quiere quitar el contacto «%s»?"
 
-#: ../libempathy-gtk/empathy-contact-list-view.c:2018
-#: ../libempathy-gtk/empathy-individual-view.c:2521
+#: ../libempathy-gtk/empathy-contact-list-view.c:2017
+#: ../libempathy-gtk/empathy-individual-view.c:2553
 msgid "Removing contact"
 msgstr "Quitando el contacto"
 
@@ -1843,325 +1836,315 @@ msgstr "Quitando el contacto"
 msgid "_Add Contact…"
 msgstr "_Añadir contacto…"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:292
+#: ../libempathy-gtk/empathy-contact-menu.c:287
 msgid "_Block Contact"
 msgstr "_Bloquear contacto"
 
 #. add chat button
-#: ../libempathy-gtk/empathy-contact-menu.c:321
+#: ../libempathy-gtk/empathy-contact-menu.c:316
 #: ../libempathy-gtk/empathy-individual-menu.c:758
 #: ../libempathy-gtk/empathy-new-message-dialog.c:320
 #: ../src/empathy-main-window-menubar.ui.h:16
 msgid "_Chat"
 msgstr "_Chat"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:353
+#: ../libempathy-gtk/empathy-contact-menu.c:348
 #: ../libempathy-gtk/empathy-individual-menu.c:850
 msgctxt "menu item"
 msgid "_Audio Call"
 msgstr "Llamada de vo_z"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:386
+#: ../libempathy-gtk/empathy-contact-menu.c:381
 #: ../libempathy-gtk/empathy-individual-menu.c:895
 msgctxt "menu item"
 msgid "_Video Call"
 msgstr "Llamada de _vídeo"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:432
+#: ../libempathy-gtk/empathy-contact-menu.c:427
 #: ../libempathy-gtk/empathy-individual-menu.c:948
 #: ../src/empathy-main-window-menubar.ui.h:27
 msgid "_Previous Conversations"
 msgstr "Conversaciones an_teriores"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:454
+#: ../libempathy-gtk/empathy-contact-menu.c:449
 #: ../libempathy-gtk/empathy-individual-menu.c:989
 msgid "Send File"
 msgstr "Enviar archivo"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:477
+#: ../libempathy-gtk/empathy-contact-menu.c:472
 #: ../libempathy-gtk/empathy-individual-menu.c:1031
 msgid "Share My Desktop"
 msgstr "Compartir mi escritorio"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:506
+#: ../libempathy-gtk/empathy-contact-menu.c:501
 #: ../libempathy-gtk/empathy-individual-menu.c:1094
 msgid "Infor_mation"
 msgstr "Infor_mación"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:552
+#: ../libempathy-gtk/empathy-contact-menu.c:547
 msgctxt "Edit contact (contextual menu)"
 msgid "_Edit"
 msgstr "_Editar"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:606
+#: ../libempathy-gtk/empathy-contact-menu.c:601
 #: ../libempathy-gtk/empathy-individual-menu.c:1285
 #: ../src/empathy-chat-window.c:1011
 msgid "Inviting you to this room"
 msgstr "Invitándolo a esta sala"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:637
+#: ../libempathy-gtk/empathy-contact-menu.c:632
 #: ../libempathy-gtk/empathy-individual-menu.c:1331
 msgid "_Invite to Chat Room"
 msgstr "_Invitar a sala de chat"
 
 #. Title
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:505
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:499
 msgid "Search contacts"
 msgstr "Buscar contactos"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:535
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:529
 msgid "Search: "
 msgstr "Buscar:"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:593
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:587
 msgid "_Add Contact"
 msgstr "_Añadir contacto"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:611
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:605
 msgid "No contacts found"
 msgstr "No se encontraron contactos"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:627
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:621
 msgid "Your message introducing yourself:"
 msgstr "Su mensaje de presentación:"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:635
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:629
 msgid "Please let me see when you're online. Thanks!"
 msgstr "Permítame ver cuando está en línea. Gracias."
 
-#: ../libempathy-gtk/empathy-contact-widget.c:502
+#: ../libempathy-gtk/empathy-contact-widget.c:571
+#: ../libempathy-gtk/empathy-individual-widget.c:304
 msgid "Channels:"
 msgstr "Canales:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:797
-#: ../libempathy-gtk/empathy-individual-widget.c:421
+#: ../libempathy-gtk/empathy-contact-widget.c:751
+#: ../libempathy-gtk/empathy-individual-widget.c:455
 msgid "Country ISO Code:"
 msgstr "Código ISO de país:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:799
-#: ../libempathy-gtk/empathy-individual-widget.c:423
+#: ../libempathy-gtk/empathy-contact-widget.c:753
+#: ../libempathy-gtk/empathy-individual-widget.c:457
 msgid "Country:"
 msgstr "País:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:801
-#: ../libempathy-gtk/empathy-individual-widget.c:425
+#: ../libempathy-gtk/empathy-contact-widget.c:755
+#: ../libempathy-gtk/empathy-individual-widget.c:459
 msgid "State:"
 msgstr "Estado:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:803
-#: ../libempathy-gtk/empathy-individual-widget.c:427
+#: ../libempathy-gtk/empathy-contact-widget.c:757
+#: ../libempathy-gtk/empathy-individual-widget.c:461
 msgid "City:"
 msgstr "Ciudad:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:805
-#: ../libempathy-gtk/empathy-individual-widget.c:429
+#: ../libempathy-gtk/empathy-contact-widget.c:759
+#: ../libempathy-gtk/empathy-individual-widget.c:463
 msgid "Area:"
 msgstr "Área:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:807
-#: ../libempathy-gtk/empathy-individual-widget.c:431
+#: ../libempathy-gtk/empathy-contact-widget.c:761
+#: ../libempathy-gtk/empathy-individual-widget.c:465
 msgid "Postal Code:"
 msgstr "Código postal:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:809
-#: ../libempathy-gtk/empathy-individual-widget.c:433
+#: ../libempathy-gtk/empathy-contact-widget.c:763
+#: ../libempathy-gtk/empathy-individual-widget.c:467
 msgid "Street:"
 msgstr "Calle:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:811
-#: ../libempathy-gtk/empathy-individual-widget.c:435
+#: ../libempathy-gtk/empathy-contact-widget.c:765
+#: ../libempathy-gtk/empathy-individual-widget.c:469
 msgid "Building:"
 msgstr "Edificio:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:813
-#: ../libempathy-gtk/empathy-individual-widget.c:437
+#: ../libempathy-gtk/empathy-contact-widget.c:767
+#: ../libempathy-gtk/empathy-individual-widget.c:471
 msgid "Floor:"
 msgstr "Planta:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:815
-#: ../libempathy-gtk/empathy-individual-widget.c:439
+#: ../libempathy-gtk/empathy-contact-widget.c:769
+#: ../libempathy-gtk/empathy-individual-widget.c:473
 msgid "Room:"
 msgstr "Habitación:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:817
-#: ../libempathy-gtk/empathy-individual-widget.c:441
+#: ../libempathy-gtk/empathy-contact-widget.c:771
+#: ../libempathy-gtk/empathy-individual-widget.c:475
 msgid "Text:"
 msgstr "Texto:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:819
-#: ../libempathy-gtk/empathy-individual-widget.c:443
+#: ../libempathy-gtk/empathy-contact-widget.c:773
+#: ../libempathy-gtk/empathy-individual-widget.c:477
 msgid "Description:"
 msgstr "Descripción:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:821
-#: ../libempathy-gtk/empathy-individual-widget.c:445
+#: ../libempathy-gtk/empathy-contact-widget.c:775
+#: ../libempathy-gtk/empathy-individual-widget.c:479
 msgid "URI:"
 msgstr "URI:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:823
-#: ../libempathy-gtk/empathy-individual-widget.c:447
+#: ../libempathy-gtk/empathy-contact-widget.c:777
+#: ../libempathy-gtk/empathy-individual-widget.c:481
 msgid "Accuracy Level:"
 msgstr "Nivel de precisión:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:825
-#: ../libempathy-gtk/empathy-individual-widget.c:449
+#: ../libempathy-gtk/empathy-contact-widget.c:779
+#: ../libempathy-gtk/empathy-individual-widget.c:483
 msgid "Error:"
 msgstr "Error:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:827
-#: ../libempathy-gtk/empathy-individual-widget.c:451
+#: ../libempathy-gtk/empathy-contact-widget.c:781
+#: ../libempathy-gtk/empathy-individual-widget.c:485
 msgid "Vertical Error (meters):"
 msgstr "Error vertical (metros):"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:829
-#: ../libempathy-gtk/empathy-individual-widget.c:453
+#: ../libempathy-gtk/empathy-contact-widget.c:783
+#: ../libempathy-gtk/empathy-individual-widget.c:487
 msgid "Horizontal Error (meters):"
 msgstr "Error horizontal (metros):"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:831
-#: ../libempathy-gtk/empathy-individual-widget.c:455
+#: ../libempathy-gtk/empathy-contact-widget.c:785
+#: ../libempathy-gtk/empathy-individual-widget.c:489
 msgid "Speed:"
 msgstr "Velocidad:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:833
-#: ../libempathy-gtk/empathy-individual-widget.c:457
+#: ../libempathy-gtk/empathy-contact-widget.c:787
+#: ../libempathy-gtk/empathy-individual-widget.c:491
 msgid "Bearing:"
 msgstr "Retardo:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:835
-#: ../libempathy-gtk/empathy-individual-widget.c:459
+#: ../libempathy-gtk/empathy-contact-widget.c:789
+#: ../libempathy-gtk/empathy-individual-widget.c:493
 msgid "Climb Speed:"
 msgstr "Velocidad de ascenso:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:837
-#: ../libempathy-gtk/empathy-individual-widget.c:461
+#: ../libempathy-gtk/empathy-contact-widget.c:791
+#: ../libempathy-gtk/empathy-individual-widget.c:495
 msgid "Last Updated on:"
 msgstr "Actualizado por última vez:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:839
-#: ../libempathy-gtk/empathy-individual-widget.c:463
+#: ../libempathy-gtk/empathy-contact-widget.c:793
+#: ../libempathy-gtk/empathy-individual-widget.c:497
 msgid "Longitude:"
 msgstr "Longitud_"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:841
-#: ../libempathy-gtk/empathy-individual-widget.c:465
+#: ../libempathy-gtk/empathy-contact-widget.c:795
+#: ../libempathy-gtk/empathy-individual-widget.c:499
 msgid "Latitude:"
 msgstr "Latitud:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:843
-#: ../libempathy-gtk/empathy-individual-widget.c:467
+#: ../libempathy-gtk/empathy-contact-widget.c:797
+#: ../libempathy-gtk/empathy-individual-widget.c:501
 msgid "Altitude:"
 msgstr "Altitud:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:896
-#: ../libempathy-gtk/empathy-contact-widget.c:911
-#: ../libempathy-gtk/empathy-individual-widget.c:559
-#: ../libempathy-gtk/empathy-individual-widget.c:574
-#: ../src/empathy-preferences.ui.h:17
+#: ../libempathy-gtk/empathy-contact-widget.c:850
+#: ../libempathy-gtk/empathy-contact-widget.c:865
+#: ../libempathy-gtk/empathy-individual-widget.c:593
+#: ../libempathy-gtk/empathy-individual-widget.c:608
+#: ../src/empathy-preferences.ui.h:15
 msgid "Location"
 msgstr "Ubicación geográfica"
 
 #. translators: format is "Location, $date"
-#: ../libempathy-gtk/empathy-contact-widget.c:913
-#: ../libempathy-gtk/empathy-individual-widget.c:576
+#: ../libempathy-gtk/empathy-contact-widget.c:867
+#: ../libempathy-gtk/empathy-individual-widget.c:610
 #, c-format
 msgid "%s, %s"
 msgstr "%s, %s"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:965
-#: ../libempathy-gtk/empathy-individual-widget.c:625
+#: ../libempathy-gtk/empathy-contact-widget.c:919
+#: ../libempathy-gtk/empathy-individual-widget.c:659
 msgid "%B %e, %Y at %R UTC"
 msgstr "%e de %B de %Y a las %R UTC"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:1047
-#: ../libempathy-gtk/empathy-individual-widget.c:867
+#: ../libempathy-gtk/empathy-contact-widget.c:1001
+#: ../libempathy-gtk/empathy-individual-widget.c:901
 msgid "Save Avatar"
 msgstr "Guardar avatar"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:1103
-#: ../libempathy-gtk/empathy-individual-widget.c:925
+#: ../libempathy-gtk/empathy-contact-widget.c:1057
+#: ../libempathy-gtk/empathy-individual-widget.c:959
 msgid "Unable to save avatar"
 msgstr "No se pudo guardar el avatar"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:1787
+#: ../libempathy-gtk/empathy-contact-widget.c:1745
 #: ../libempathy-gtk/empathy-individual-menu.c:1066
-#: ../libempathy-gtk/empathy-individual-widget.c:1324
+#: ../libempathy-gtk/empathy-individual-widget.c:1358
 msgid "Favorite"
 msgstr "Favorita"
 
-#: ../libempathy-gtk/empathy-contactinfo-utils.c:102
-#| msgid "Full name:"
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:104
 msgid "Full name"
 msgstr "Nombre completo"
 
-#: ../libempathy-gtk/empathy-contactinfo-utils.c:103
-#| msgid "Phone number:"
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:105
 msgid "Phone number"
 msgstr "Número de teléfono"
 
-#: ../libempathy-gtk/empathy-contactinfo-utils.c:104
-#| msgid "E-mail address:"
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:106
 msgid "E-mail address"
 msgstr "Dirección de correo-e"
 
-#: ../libempathy-gtk/empathy-contactinfo-utils.c:105
-#| msgid "Website:"
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:107
 msgid "Website"
 msgstr "Página web"
 
-#: ../libempathy-gtk/empathy-contactinfo-utils.c:106
-#| msgid "Birthday:"
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:108
 msgid "Birthday"
 msgstr "Cumpleaños"
 
 #. Note to translators: this is the caption for a string of the form "5
 #. * minutes ago", and refers to the time since the contact last interacted
 #. * with their IM client.
-#: ../libempathy-gtk/empathy-contactinfo-utils.c:111
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:113
 msgid "Last seen:"
 msgstr "Última actividad:"
 
-#: ../libempathy-gtk/empathy-contactinfo-utils.c:113
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:115
 msgid "Connected from:"
 msgstr "Conectado desde:"
 
 #. FIXME: once Idle implements SimplePresence using this information, we can
 #. * and should bin this.
-#: ../libempathy-gtk/empathy-contactinfo-utils.c:117
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:119
 msgid "Away message:"
 msgstr "Mensaje de ausencia:"
 
-#: ../libempathy-gtk/empathy-contactinfo-utils.c:130
-#| msgid "Work"
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:132
 msgid "work"
 msgstr "trabajo"
 
-#: ../libempathy-gtk/empathy-contactinfo-utils.c:131
-#| msgid "Romeo"
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:133
 msgid "home"
 msgstr "personal"
 
-#: ../libempathy-gtk/empathy-contactinfo-utils.c:132
-#| msgid "Mobile"
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:134
 msgid "mobile"
 msgstr "móvil"
 
-#: ../libempathy-gtk/empathy-contactinfo-utils.c:133
-#| msgid "Favorite"
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:135
 msgid "voice"
 msgstr "voz"
 
-#: ../libempathy-gtk/empathy-contactinfo-utils.c:134
-#| msgid "Preferences"
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:136
 msgid "preferred"
 msgstr "preferido"
 
-#: ../libempathy-gtk/empathy-contactinfo-utils.c:135
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:137
 msgid "postal"
 msgstr "postal"
 
-#: ../libempathy-gtk/empathy-contactinfo-utils.c:136
-#| msgid "Appearance"
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:138
 msgid "parcel"
 msgstr "grupo"
 
@@ -2171,7 +2154,7 @@ msgstr "<b>Ubicación</b> en (fecha)\t"
 
 #. Alias
 #: ../libempathy-gtk/empathy-contact-widget.ui.h:3
-#: ../libempathy-gtk/empathy-individual-widget.c:1260
+#: ../libempathy-gtk/empathy-individual-widget.c:1294
 msgid "Alias:"
 msgstr "Apodo:"
 
@@ -2191,7 +2174,7 @@ msgstr "Detalles del contacto"
 #. Identifier to connect to Instant Messaging network
 #. Translators: Identifier to connect to Instant Messaging network
 #: ../libempathy-gtk/empathy-contact-widget.ui.h:8
-#: ../libempathy-gtk/empathy-individual-widget.c:1469
+#: ../libempathy-gtk/empathy-individual-widget.c:1503
 msgid "Identifier:"
 msgstr "Identificador:"
 
@@ -2230,17 +2213,17 @@ msgid "Select"
 msgstr "Seleccionar"
 
 #: ../libempathy-gtk/empathy-groups-widget.c:409
-#: ../src/empathy-main-window.c:1967
+#: ../src/empathy-main-window.c:1951
 msgid "Group"
 msgstr "Grupo"
 
-#: ../libempathy-gtk/empathy-individual-dialogs.c:260
+#: ../libempathy-gtk/empathy-individual-dialogs.c:258
 msgid "The following identity will be blocked:"
 msgid_plural "The following identities will be blocked:"
 msgstr[0] "Se bloqueará la siguiente identidad:"
 msgstr[1] "Se bloquearán la siguientes identidades:"
 
-#: ../libempathy-gtk/empathy-individual-dialogs.c:267
+#: ../libempathy-gtk/empathy-individual-dialogs.c:265
 msgid "The following identity can not be blocked:"
 msgid_plural "The following identities can not be blocked:"
 msgstr[0] "No se puede bloquear la siguiente identidad:"
@@ -2251,15 +2234,15 @@ msgstr[1] "No se pueden bloquear la siguientes identidades:"
 msgid "Linked Contacts"
 msgstr "Contactos enlazados"
 
-#: ../libempathy-gtk/empathy-individual-linker.c:370
+#: ../libempathy-gtk/empathy-individual-linker.c:371
 msgid "Select contacts to link"
 msgstr "Seleccionar contactos para enlazar"
 
-#: ../libempathy-gtk/empathy-individual-linker.c:444
+#: ../libempathy-gtk/empathy-individual-linker.c:445
 msgid "New contact preview"
 msgstr "Vista previa del contacto nuevo"
 
-#: ../libempathy-gtk/empathy-individual-linker.c:488
+#: ../libempathy-gtk/empathy-individual-linker.c:489
 msgid "Contacts selected in the list on the left will be linked together."
 msgstr ""
 "Se enlazarán entre sí los contactos seleccionados en la lista de la "
@@ -2281,7 +2264,7 @@ msgstr "Seleccionar la cuenta que usar para realizar la llamada"
 #. * title
 #: ../libempathy-gtk/empathy-individual-menu.c:313
 #: ../libempathy-gtk/empathy-log-window.ui.h:2
-#: ../src/empathy-streamed-media-window.c:1300
+#: ../src/empathy-streamed-media-window.c:1288
 #: ../src/empathy-call-window.ui.h:2
 msgid "Call"
 msgstr "Llamar"
@@ -2316,11 +2299,11 @@ msgctxt "Link individual (contextual menu)"
 msgid "_Link Contacts…"
 msgstr "_Enlazar contactos…"
 
-#: ../libempathy-gtk/empathy-individual-view.c:2340
+#: ../libempathy-gtk/empathy-individual-view.c:2362
 msgid "Delete and _Block"
 msgstr "Eliminar y _bloquear"
 
-#: ../libempathy-gtk/empathy-individual-view.c:2509
+#: ../libempathy-gtk/empathy-individual-view.c:2541
 #, c-format
 msgid ""
 "Do you really want to remove the linked contact '%s'? Note that this will "
@@ -2329,7 +2312,7 @@ msgstr ""
 "¿Realmente quiere quitar el contacto enlazado «%s»? Tenga en cuenta que esto "
 "quitará todos los contactos que componen este contacto enlazado."
 
-#: ../libempathy-gtk/empathy-individual-widget.c:1608
+#: ../libempathy-gtk/empathy-individual-widget.c:1642
 #, c-format
 msgid "Linked contact containing %u contact"
 msgid_plural "Linked contacts containing %u contacts"
@@ -2414,137 +2397,137 @@ msgctxt "Unlink individual (button)"
 msgid "_Unlink"
 msgstr "_Desenlazar"
 
-#: ../libempathy-gtk/empathy-log-window.c:634
+#: ../libempathy-gtk/empathy-log-window.c:621
 msgid "History"
 msgstr "Histórico"
 
-#: ../libempathy-gtk/empathy-log-window.c:689
+#: ../libempathy-gtk/empathy-log-window.c:676
 msgid "Show"
 msgstr "Mostrar"
 
-#: ../libempathy-gtk/empathy-log-window.c:711
+#: ../libempathy-gtk/empathy-log-window.c:698
 msgid "Search"
 msgstr "Buscar"
 
-#: ../libempathy-gtk/empathy-log-window.c:1159
+#: ../libempathy-gtk/empathy-log-window.c:1147
 #, c-format
 msgid "Chat in %s"
 msgstr "Chatee en %s"
 
-#: ../libempathy-gtk/empathy-log-window.c:1161
+#: ../libempathy-gtk/empathy-log-window.c:1149
 #, c-format
 msgid "Chat with %s"
 msgstr "Chat con %s"
 
-#: ../libempathy-gtk/empathy-log-window.c:1211
-#: ../libempathy-gtk/empathy-log-window.c:1358
+#: ../libempathy-gtk/empathy-log-window.c:1199
+#: ../libempathy-gtk/empathy-log-window.c:1346
 msgctxt "A date with the time"
 msgid "%A, %e %B %Y %X"
 msgstr "%A, %e de %B de %Y a las %X"
 
 #. Translators: this is an emote: '* Danielle waves'
-#: ../libempathy-gtk/empathy-log-window.c:1300
+#: ../libempathy-gtk/empathy-log-window.c:1288
 #, c-format
 msgid "<i>* %s %s</i>"
 msgstr "<i>* %s %s</i>"
 
 #. Translators: this is a message: 'Danielle: hello'
 #. * The string in bold is the sender's name
-#: ../libempathy-gtk/empathy-log-window.c:1306
+#: ../libempathy-gtk/empathy-log-window.c:1294
 #, c-format
 msgid "<b>%s:</b> %s"
 msgstr "<b>%s:</b> %s"
 
-#: ../libempathy-gtk/empathy-log-window.c:1382
+#: ../libempathy-gtk/empathy-log-window.c:1370
 #, c-format
 msgid "%s second"
 msgid_plural "%s seconds"
 msgstr[0] "%s segundo"
 msgstr[1] "%s segundos"
 
-#: ../libempathy-gtk/empathy-log-window.c:1389
+#: ../libempathy-gtk/empathy-log-window.c:1377
 #, c-format
 msgid "%s minute"
 msgid_plural "%s minutes"
 msgstr[0] "%s minuto"
 msgstr[1] "%s minutos"
 
-#: ../libempathy-gtk/empathy-log-window.c:1397
+#: ../libempathy-gtk/empathy-log-window.c:1385
 #, c-format
 msgid "Call took %s, ended at %s"
 msgstr "La llamada duró %s, finalizó a las %s"
 
-#: ../libempathy-gtk/empathy-log-window.c:1729
+#: ../libempathy-gtk/empathy-log-window.c:1719
 msgid "Today"
 msgstr "Hoy"
 
-#: ../libempathy-gtk/empathy-log-window.c:1733
+#: ../libempathy-gtk/empathy-log-window.c:1723
 msgid "Yesterday"
 msgstr "Ayer"
 
 #. Translators: A date such as '23 May 2010' (strftime format)
-#: ../libempathy-gtk/empathy-log-window.c:1748
+#: ../libempathy-gtk/empathy-log-window.c:1738
 msgid "%e %B %Y"
 msgstr "%e de %B de %Y"
 
-#: ../libempathy-gtk/empathy-log-window.c:1829
-#: ../libempathy-gtk/empathy-log-window.c:3444
+#: ../libempathy-gtk/empathy-log-window.c:1826
+#: ../libempathy-gtk/empathy-log-window.c:3458
 msgid "Anytime"
 msgstr "Cualquier hora"
 
-#: ../libempathy-gtk/empathy-log-window.c:1916
-#: ../libempathy-gtk/empathy-log-window.c:2372
+#: ../libempathy-gtk/empathy-log-window.c:1915
+#: ../libempathy-gtk/empathy-log-window.c:2371
 msgid "Anyone"
 msgstr "Cualquiera"
 
-#: ../libempathy-gtk/empathy-log-window.c:2685
+#: ../libempathy-gtk/empathy-log-window.c:2684
 msgid "Who"
 msgstr "Quién"
 
-#: ../libempathy-gtk/empathy-log-window.c:2889
+#: ../libempathy-gtk/empathy-log-window.c:2893
 msgid "When"
 msgstr "Cuándo"
 
-#: ../libempathy-gtk/empathy-log-window.c:3005
+#: ../libempathy-gtk/empathy-log-window.c:3009
 msgid "Anything"
 msgstr "Cualquier cosa"
 
-#: ../libempathy-gtk/empathy-log-window.c:3007
+#: ../libempathy-gtk/empathy-log-window.c:3011
 msgid "Text chats"
 msgstr "Chats de texto"
 
-#: ../libempathy-gtk/empathy-log-window.c:3009
+#: ../libempathy-gtk/empathy-log-window.c:3013
 #: ../src/empathy-preferences.ui.h:4
 msgid "Calls"
 msgstr "Llamadas"
 
-#: ../libempathy-gtk/empathy-log-window.c:3014
+#: ../libempathy-gtk/empathy-log-window.c:3018
 msgid "Incoming calls"
 msgstr "Llamadas entrantes"
 
-#: ../libempathy-gtk/empathy-log-window.c:3015
+#: ../libempathy-gtk/empathy-log-window.c:3019
 msgid "Outgoing calls"
 msgstr "Llamadas salientes"
 
-#: ../libempathy-gtk/empathy-log-window.c:3016
+#: ../libempathy-gtk/empathy-log-window.c:3020
 msgid "Missed calls"
 msgstr "Llamadas perdidas"
 
-#: ../libempathy-gtk/empathy-log-window.c:3038
+#: ../libempathy-gtk/empathy-log-window.c:3042
 msgid "What"
 msgstr "Qué"
 
-#: ../libempathy-gtk/empathy-log-window.c:3747
+#: ../libempathy-gtk/empathy-log-window.c:3751
 msgid "Are you sure you want to delete all logs of previous conversations?"
 msgstr ""
 "¿Está seguro de que quiere eliminar todos los registros de conversaciones "
 "anteriores?"
 
-#: ../libempathy-gtk/empathy-log-window.c:3751
+#: ../libempathy-gtk/empathy-log-window.c:3755
 msgid "Clear All"
 msgstr "Limpiar todo"
 
-#: ../libempathy-gtk/empathy-log-window.c:3758
+#: ../libempathy-gtk/empathy-log-window.c:3762
 msgid "Delete from:"
 msgstr "Eliminar de:"
 
@@ -2654,7 +2637,14 @@ msgstr "Llamada de vo_z"
 msgid "New Call"
 msgstr "Llamada nueva"
 
-#: ../libempathy-gtk/empathy-password-dialog.c:274
+#: ../libempathy-gtk/empathy-bad-password-dialog.c:130
+#, c-format
+#| msgid "Authentication failed"
+msgid "Authentification failed for account <b>%s</b>"
+msgstr "Falló la autenticación para la cuenta <b>%s</b>"
+
+#: ../libempathy-gtk/empathy-base-password-dialog.c:224
+#: ../libempathy-gtk/empathy-password-dialog.c:134
 #, c-format
 msgid ""
 "Enter your password for account\n"
@@ -2691,12 +2681,8 @@ msgstr "Pulse para hacer este estado uno favorito"
 msgid "Set status"
 msgstr "Establecer estado"
 
-#: ../libempathy-gtk/empathy-presence-chooser.c:943
-msgid "Set your presence and current status"
-msgstr "Establecer su presencia y estado actual"
-
 #. Custom messages
-#: ../libempathy-gtk/empathy-presence-chooser.c:1131
+#: ../libempathy-gtk/empathy-presence-chooser.c:1135
 msgid "Custom messages…"
 msgstr "Mensajes personalizados…"
 
@@ -2872,19 +2858,19 @@ msgstr "Recordar esta opción para futuras conexiones"
 msgid "Certificate Details"
 msgstr "Detalles del certificado"
 
-#: ../libempathy-gtk/empathy-ui-utils.c:1738
+#: ../libempathy-gtk/empathy-ui-utils.c:1741
 msgid "Unable to open URI"
 msgstr "No se pudo abrir el URI"
 
-#: ../libempathy-gtk/empathy-ui-utils.c:1835
+#: ../libempathy-gtk/empathy-ui-utils.c:1859
 msgid "Select a file"
 msgstr "Seleccionar un archivo"
 
-#: ../libempathy-gtk/empathy-ui-utils.c:1907
+#: ../libempathy-gtk/empathy-ui-utils.c:1934
 msgid "Insufficient free space to save file"
 msgstr "No hay espacio suficiente para guardar el archivo"
 
-#: ../libempathy-gtk/empathy-ui-utils.c:1915
+#: ../libempathy-gtk/empathy-ui-utils.c:1942
 #, c-format
 msgid ""
 "%s of free space are required to save this file, but only %s is available. "
@@ -2893,7 +2879,7 @@ msgstr ""
 "Se requiere %s de espacio libre para guardar este archivo, pero sólo hay %s "
 "disponible. Elija otra ubicación."
 
-#: ../libempathy-gtk/empathy-ui-utils.c:1959
+#: ../libempathy-gtk/empathy-ui-utils.c:1986
 #, c-format
 msgid "Incoming file from %s"
 msgstr "Archivo entrante de %s"
@@ -3073,23 +3059,23 @@ msgstr "Sin mensaje de eeror"
 msgid "Instant Message (Empathy)"
 msgstr "Mensaje instantáneo (Empathy)"
 
-#: ../src/empathy.c:434
+#: ../src/empathy.c:433
 msgid "Don't connect on startup"
 msgstr "No conectarse automáticamente al inicio"
 
-#: ../src/empathy.c:438
+#: ../src/empathy.c:437
 msgid "Don't display the contact list or any other dialogs on startup"
 msgstr "No mostrar la lista de contactos o cualquier otro diálogo al inicio"
 
-#: ../src/empathy.c:453
+#: ../src/empathy.c:452
 msgid "- Empathy IM Client"
 msgstr "- Cliente de mensajería instantánea Empathy"
 
-#: ../src/empathy.c:640
+#: ../src/empathy.c:639
 msgid "Error contacting the Account Manager"
 msgstr "Error al contactar con el Gestor de cuentas"
 
-#: ../src/empathy.c:642
+#: ../src/empathy.c:641
 #, c-format
 msgid ""
 "There was an error while trying to connect to the Telepathy Account Manager. "
@@ -3177,7 +3163,7 @@ msgstr ""
 "Editar."
 
 #: ../src/empathy-account-assistant.c:220
-#: ../src/empathy-account-assistant.c:1271
+#: ../src/empathy-account-assistant.c:1272
 msgid "An error occurred"
 msgstr "Ocurrió un error"
 
@@ -3220,37 +3206,37 @@ msgstr ""
 msgid "Do you have an account you've been using with another chat program?"
 msgstr "¿Tiene una cuenta que haya estado usando con otro programa de chat?"
 
-#: ../src/empathy-account-assistant.c:652
+#: ../src/empathy-account-assistant.c:653
 msgid "Yes, import my account details from "
 msgstr "Sí, importar los detalles de mi cuenta desde "
 
-#: ../src/empathy-account-assistant.c:673
+#: ../src/empathy-account-assistant.c:674
 msgid "Yes, I'll enter my account details now"
 msgstr "Sí, introduciré ahora los detalles de mi cuenta"
 
-#: ../src/empathy-account-assistant.c:695
+#: ../src/empathy-account-assistant.c:696
 msgid "No, I want a new account"
 msgstr "No, quiero crear una cuenta nueva"
 
-#: ../src/empathy-account-assistant.c:705
+#: ../src/empathy-account-assistant.c:706
 msgid "No, I just want to see people online nearby for now"
 msgstr "No, por ahora sólo quiero ver la gente conectada cerca"
 
-#: ../src/empathy-account-assistant.c:726
+#: ../src/empathy-account-assistant.c:727
 msgid "Select the accounts you want to import:"
 msgstr "Seleccione las cuentas que quiere importar:"
 
-#: ../src/empathy-account-assistant.c:813
+#: ../src/empathy-account-assistant.c:814
 #: ../src/empathy-new-chatroom-dialog.c:625
 #: ../src/empathy-new-chatroom-dialog.c:626
 msgid "Yes"
 msgstr "Sí"
 
-#: ../src/empathy-account-assistant.c:820
+#: ../src/empathy-account-assistant.c:821
 msgid "No, that's all for now"
 msgstr "No, eso es todo por ahora"
 
-#: ../src/empathy-account-assistant.c:1085
+#: ../src/empathy-account-assistant.c:1086
 msgid ""
 "Empathy can automatically discover and chat with the people connected on the "
 "same network as you. If you want to use this feature, please check that the "
@@ -3263,16 +3249,16 @@ msgstr ""
 "estos detalles posteriormente o desactivar esta característica usando el "
 "diálogo «Cuentas»."
 
-#: ../src/empathy-account-assistant.c:1091
-#: ../src/empathy-account-assistant.c:1147
+#: ../src/empathy-account-assistant.c:1092
+#: ../src/empathy-account-assistant.c:1148
 msgid "Edit->Accounts"
 msgstr "Editar->Cuentas"
 
-#: ../src/empathy-account-assistant.c:1107
+#: ../src/empathy-account-assistant.c:1108
 msgid "I do _not want to enable this feature for now"
 msgstr "_No quiero activar esta característica por ahora"
 
-#: ../src/empathy-account-assistant.c:1143
+#: ../src/empathy-account-assistant.c:1144
 msgid ""
 "You won't be able to chat with people connected to your local network, as "
 "telepathy-salut is not installed. If you want to enable this feature, please "
@@ -3284,23 +3270,23 @@ msgstr ""
 "instale el paquete telepathy-salut y cree una cuenta de Gente cerca desde el "
 "diálogo Cuentas."
 
-#: ../src/empathy-account-assistant.c:1149
+#: ../src/empathy-account-assistant.c:1150
 msgid "telepathy-salut not installed"
 msgstr "telepathy-salut no está instalado"
 
-#: ../src/empathy-account-assistant.c:1195
+#: ../src/empathy-account-assistant.c:1196
 msgid "Messaging and VoIP Accounts Assistant"
 msgstr "Asistente de cuentas de mensajería y Voz IP"
 
-#: ../src/empathy-account-assistant.c:1229
+#: ../src/empathy-account-assistant.c:1230
 msgid "Welcome to Empathy"
 msgstr "Bienvenido a Empathy"
 
-#: ../src/empathy-account-assistant.c:1238
+#: ../src/empathy-account-assistant.c:1239
 msgid "Import your existing accounts"
 msgstr "Importar sus cuentas existentes"
 
-#: ../src/empathy-account-assistant.c:1256
+#: ../src/empathy-account-assistant.c:1257
 msgid "Please enter personal details"
 msgstr "Introduzca los detalles personales"
 
@@ -3318,8 +3304,8 @@ msgid "Your new account has not been saved yet."
 msgstr "Aún no se ha guardado su cuenta nueva."
 
 #: ../src/empathy-accounts-dialog.c:345
-#: ../src/empathy-streamed-media-window.c:753
-#: ../src/empathy-call-window.c:1319
+#: ../src/empathy-streamed-media-window.c:757
+#: ../src/empathy-call-window.c:1325
 msgid "Connecting…"
 msgstr "Conectando…"
 
@@ -3415,11 +3401,11 @@ msgstr ""
 msgid "_Import…"
 msgstr "_Importar…"
 
-#: ../src/empathy-auth-client.c:249
+#: ../src/empathy-auth-client.c:284
 msgid " - Empathy authentication client"
 msgstr ": Cliente de autenticación de Empathy"
 
-#: ../src/empathy-auth-client.c:265
+#: ../src/empathy-auth-client.c:300
 msgid "Empathy authentication client"
 msgstr "Cliente de autenticación de Empathy"
 
@@ -3435,96 +3421,96 @@ msgstr ": Cliente de sonido/vídeo Empathy"
 msgid "Empathy Audio/Video Client"
 msgstr "Cliente de sonido/vídeo Empathy"
 
-#: ../src/empathy-streamed-media-window.c:430
+#: ../src/empathy-streamed-media-window.c:433
 msgid "Contrast"
 msgstr "Contraste"
 
-#: ../src/empathy-streamed-media-window.c:433
+#: ../src/empathy-streamed-media-window.c:436
 msgid "Brightness"
 msgstr "Brillo"
 
-#: ../src/empathy-streamed-media-window.c:436
+#: ../src/empathy-streamed-media-window.c:439
 msgid "Gamma"
 msgstr "Gamma"
 
-#: ../src/empathy-streamed-media-window.c:541
+#: ../src/empathy-streamed-media-window.c:545
 msgid "Volume"
 msgstr "Volumen"
 
-#: ../src/empathy-streamed-media-window.c:1109
+#: ../src/empathy-streamed-media-window.c:1097
 msgid "_Sidebar"
 msgstr "Barra _lateral"
 
-#: ../src/empathy-streamed-media-window.c:1129
+#: ../src/empathy-streamed-media-window.c:1117
 msgid "Audio input"
 msgstr "Entrada de voz"
 
-#: ../src/empathy-streamed-media-window.c:1133
+#: ../src/empathy-streamed-media-window.c:1121
 msgid "Video input"
 msgstr "Entrada de vídeo"
 
-#: ../src/empathy-streamed-media-window.c:1141
+#: ../src/empathy-streamed-media-window.c:1129
 msgid "Dialpad"
 msgstr "Teclado de llamada"
 
-#: ../src/empathy-streamed-media-window.c:1152
+#: ../src/empathy-streamed-media-window.c:1140
 msgid "Details"
 msgstr "Detalles"
 
 #. translators: Call is a noun and %s is the contact name. This string
 #. * is used in the window title
-#: ../src/empathy-streamed-media-window.c:1221
-#: ../src/empathy-call-window.c:1928
+#: ../src/empathy-streamed-media-window.c:1209
+#: ../src/empathy-call-window.c:1927
 #, c-format
 msgid "Call with %s"
 msgstr "Llamada con %s"
 
-#: ../src/empathy-streamed-media-window.c:1454
-#: ../src/empathy-call-window.c:2172
+#: ../src/empathy-streamed-media-window.c:1442
+#: ../src/empathy-call-window.c:2171
 msgid "The IP address as seen by the machine"
 msgstr "La dirección IP como la ve la máquina"
 
-#: ../src/empathy-streamed-media-window.c:1456
-#: ../src/empathy-call-window.c:2174
+#: ../src/empathy-streamed-media-window.c:1444
+#: ../src/empathy-call-window.c:2173
 msgid "The IP address as seen by a server on the Internet"
 msgstr "La dirección IP como la ve el servidor de Internet"
 
-#: ../src/empathy-streamed-media-window.c:1458
-#: ../src/empathy-call-window.c:2176
+#: ../src/empathy-streamed-media-window.c:1446
+#: ../src/empathy-call-window.c:2175
 msgid "The IP address of the peer as seen by the other side"
 msgstr "La dirección IP del par como la ve la otra parte"
 
-#: ../src/empathy-streamed-media-window.c:1460
-#: ../src/empathy-call-window.c:2178
+#: ../src/empathy-streamed-media-window.c:1448
+#: ../src/empathy-call-window.c:2177
 msgid "The IP address of a relay server"
 msgstr "La dirección IP de un servidor de desvío"
 
-#: ../src/empathy-streamed-media-window.c:1462
-#: ../src/empathy-call-window.c:2180
+#: ../src/empathy-streamed-media-window.c:1450
+#: ../src/empathy-call-window.c:2179
 msgid "The IP address of the multicast group"
 msgstr "La dirección IP del grupo multicast"
 
+#: ../src/empathy-streamed-media-window.c:1838
+#: ../src/empathy-streamed-media-window.c:1841
 #: ../src/empathy-streamed-media-window.c:1844
 #: ../src/empathy-streamed-media-window.c:1847
-#: ../src/empathy-streamed-media-window.c:1850
-#: ../src/empathy-streamed-media-window.c:1853
 msgctxt "codec"
 msgid "Unknown"
 msgstr "Desconocido"
 
 #. Translators: number of minutes:seconds the caller has been connected
-#: ../src/empathy-streamed-media-window.c:2145
+#: ../src/empathy-streamed-media-window.c:2139
 #, c-format
 msgid "Connected — %d:%02dm"
 msgstr "Conectado — %d:%02dm"
 
-#: ../src/empathy-streamed-media-window.c:2206
-#: ../src/empathy-call-window.c:2983
+#: ../src/empathy-streamed-media-window.c:2200
+#: ../src/empathy-call-window.c:3033
 msgid "Technical Details"
 msgstr "Detalles técnicos"
 
-#: ../src/empathy-streamed-media-window.c:2244
-#: ../src/empathy-call-window.c:3022
+#: ../src/empathy-streamed-media-window.c:2238
+#: ../src/empathy-call-window.c:3072
 #, c-format
 msgid ""
 "%s's software does not understand any of the audio formats supported by your "
@@ -3533,8 +3519,8 @@ msgstr ""
 "El software de «%s» no entiende ninguno de los formatos de vídeo soportados "
 "por su equipo"
 
-#: ../src/empathy-streamed-media-window.c:2249
-#: ../src/empathy-call-window.c:3027
+#: ../src/empathy-streamed-media-window.c:2243
+#: ../src/empathy-call-window.c:3077
 #, c-format
 msgid ""
 "%s's software does not understand any of the video formats supported by your "
@@ -3543,8 +3529,8 @@ msgstr ""
 "El software de «%s» no entiende ninguno de los formatos de vídeo soportados "
 "por su equipo"
 
-#: ../src/empathy-streamed-media-window.c:2255
-#: ../src/empathy-call-window.c:3033
+#: ../src/empathy-streamed-media-window.c:2249
+#: ../src/empathy-call-window.c:3083
 #, c-format
 msgid ""
 "Can't establish a connection to %s. One of you might be on a network that "
@@ -3553,29 +3539,29 @@ msgstr ""
 "No se puede establecer una conexión con %s. Uno de los dos puede estar en "
 "una red que no acepta conexiones directas."
 
-#: ../src/empathy-streamed-media-window.c:2261
-#: ../src/empathy-call-window.c:3039
+#: ../src/empathy-streamed-media-window.c:2255
+#: ../src/empathy-call-window.c:3089
 msgid "There was a failure on the network"
 msgstr "Hubo un fallo en la red"
 
-#: ../src/empathy-streamed-media-window.c:2265
-#: ../src/empathy-call-window.c:3043
+#: ../src/empathy-streamed-media-window.c:2259
+#: ../src/empathy-call-window.c:3093
 msgid ""
 "The audio formats necessary for this call are not installed on your computer"
 msgstr ""
 "No están instalados en su equipo los formatos de sonido necesarios para esta "
 "llamada"
 
-#: ../src/empathy-streamed-media-window.c:2268
-#: ../src/empathy-call-window.c:3046
+#: ../src/empathy-streamed-media-window.c:2262
+#: ../src/empathy-call-window.c:3096
 msgid ""
 "The video formats necessary for this call are not installed on your computer"
 msgstr ""
 "No están instalados en su equipo los formatos de vídeo necesarios para esta "
 "llamada"
 
-#: ../src/empathy-streamed-media-window.c:2278
-#: ../src/empathy-call-window.c:3058
+#: ../src/empathy-streamed-media-window.c:2272
+#: ../src/empathy-call-window.c:3108
 #, c-format
 msgid ""
 "Something unexpected happened in a Telepathy component. Please <a href=\"%s"
@@ -3586,23 +3572,23 @@ msgstr ""
 "\">Informe de este error</a> y añada los registros obtenidos de la ventana "
 "de «Depuración» en el menú de Ayuda."
 
-#: ../src/empathy-streamed-media-window.c:2286
-#: ../src/empathy-call-window.c:3067
+#: ../src/empathy-streamed-media-window.c:2280
+#: ../src/empathy-call-window.c:3117
 msgid "There was a failure in the call engine"
 msgstr "Hubo un fallo en el motor de llamadas"
 
-#: ../src/empathy-streamed-media-window.c:2289
-#: ../src/empathy-call-window.c:3070
+#: ../src/empathy-streamed-media-window.c:2283
+#: ../src/empathy-call-window.c:3120
 msgid "The end of the stream was reached"
 msgstr "Se llegó al final del flujo"
 
-#: ../src/empathy-streamed-media-window.c:2329
-#: ../src/empathy-call-window.c:3110
+#: ../src/empathy-streamed-media-window.c:2323
+#: ../src/empathy-call-window.c:3160
 msgid "Can't establish audio stream"
 msgstr "No se puede establecer el flujo de voz"
 
-#: ../src/empathy-streamed-media-window.c:2339
-#: ../src/empathy-call-window.c:3120
+#: ../src/empathy-streamed-media-window.c:2333
+#: ../src/empathy-call-window.c:3170
 msgid "Can't establish video stream"
 msgstr "No se puede establecer el flujo de vídeo"
 
@@ -3863,7 +3849,7 @@ msgstr "Gestionar salas favoritas"
 msgid "Incoming video call"
 msgstr "Llamada de vídeo entrante"
 
-#: ../src/empathy-event-manager.c:521 ../src/empathy-call-window.c:1552
+#: ../src/empathy-event-manager.c:521 ../src/empathy-call-window.c:1555
 msgid "Incoming call"
 msgstr "Llamada entrante"
 
@@ -3878,7 +3864,7 @@ msgid "%s is calling you. Do you want to answer?"
 msgstr "%s le está llamando. ¿Quiere responder?"
 
 #: ../src/empathy-event-manager.c:529 ../src/empathy-event-manager.c:730
-#: ../src/empathy-event-manager.c:763 ../src/empathy-call-window.c:1558
+#: ../src/empathy-event-manager.c:763 ../src/empathy-call-window.c:1561
 #, c-format
 msgid "Incoming call from %s"
 msgstr "Llamada entrante de %s"
@@ -3896,7 +3882,7 @@ msgid "_Answer with video"
 msgstr "_Responder con vídeo"
 
 #: ../src/empathy-event-manager.c:730 ../src/empathy-event-manager.c:763
-#: ../src/empathy-call-window.c:1558
+#: ../src/empathy-call-window.c:1561
 #, c-format
 msgid "Incoming video call from %s"
 msgstr "Llamada de vídeo entrante de %s"
@@ -3939,7 +3925,7 @@ msgstr "Le han invitado a unirse a %s"
 msgid "Incoming file transfer from %s"
 msgstr "Transferencia de archivo entrante de %s"
 
-#: ../src/empathy-event-manager.c:1145 ../src/empathy-main-window.c:378
+#: ../src/empathy-event-manager.c:1145 ../src/empathy-main-window.c:376
 msgid "Password required"
 msgstr "Se requiere una contraseña"
 
@@ -4095,62 +4081,62 @@ msgstr "Protocolo"
 msgid "Source"
 msgstr "Origen"
 
-#: ../src/empathy-main-window.c:395
+#: ../src/empathy-main-window.c:393
 msgid "Provide Password"
 msgstr "Escriba su contraseña"
 
-#: ../src/empathy-main-window.c:401
+#: ../src/empathy-main-window.c:399
 msgid "Disconnect"
 msgstr "Desconectar"
 
-#: ../src/empathy-main-window.c:642
+#: ../src/empathy-main-window.c:636
 msgid "No match found"
 msgstr "No se encontró ninguna coincidencia"
 
-#: ../src/empathy-main-window.c:750
+#: ../src/empathy-main-window.c:744
 #, c-format
 msgid "Sorry, %s accounts can’t be used until your %s software is updated."
 msgstr ""
 "Las cuentas de %s no se pueden usar hasta que no se haya actualizado su "
 "software de %s."
 
-#: ../src/empathy-main-window.c:818
+#: ../src/empathy-main-window.c:812
 msgid "Update software..."
 msgstr "Actualizar software…"
 
-#: ../src/empathy-main-window.c:824 ../src/empathy-main-window.c:949
+#: ../src/empathy-main-window.c:818 ../src/empathy-main-window.c:939
 msgid "Close"
 msgstr "Cerrar"
 
-#: ../src/empathy-main-window.c:937
+#: ../src/empathy-main-window.c:927
 msgid "Reconnect"
 msgstr "Reconectar"
 
-#: ../src/empathy-main-window.c:943
+#: ../src/empathy-main-window.c:933
 msgid "Edit Account"
 msgstr "Editar cuenta"
 
 #. Translators: this string will be something like:
 #. *   Top up My Account ($1.23)..."
-#: ../src/empathy-main-window.c:1088
+#: ../src/empathy-main-window.c:1072
 #, c-format
 msgid "Top up %s (%s)..."
 msgstr "Recargar %s (%s)…"
 
-#: ../src/empathy-main-window.c:1135
+#: ../src/empathy-main-window.c:1119
 msgid "Top up account credit"
 msgstr "Recargar el saldo de la cuenta"
 
 #. top up button
-#: ../src/empathy-main-window.c:1206
+#: ../src/empathy-main-window.c:1190
 msgid "Top Up..."
 msgstr "Recargar…"
 
-#: ../src/empathy-main-window.c:1949
+#: ../src/empathy-main-window.c:1933
 msgid "Contact"
 msgstr "Contacto"
 
-#: ../src/empathy-main-window.c:2324
+#: ../src/empathy-main-window.c:2308
 msgid "Contact List"
 msgstr "Lista de contactos"
 
@@ -4310,79 +4296,79 @@ msgstr "Lista de salas"
 msgid "_Room:"
 msgstr "_Sala:"
 
-#: ../src/empathy-preferences.c:169
+#: ../src/empathy-preferences.c:167
 msgid "Message received"
 msgstr "Mensaje recibido"
 
-#: ../src/empathy-preferences.c:170
+#: ../src/empathy-preferences.c:168
 msgid "Message sent"
 msgstr "Mensaje enviado"
 
-#: ../src/empathy-preferences.c:171
+#: ../src/empathy-preferences.c:169
 msgid "New conversation"
 msgstr "Conversación nueva"
 
-#: ../src/empathy-preferences.c:172
+#: ../src/empathy-preferences.c:170
 msgid "Contact goes online"
 msgstr "El contacto se conecta"
 
-#: ../src/empathy-preferences.c:173
+#: ../src/empathy-preferences.c:171
 msgid "Contact goes offline"
 msgstr "El contacto se desconecta"
 
-#: ../src/empathy-preferences.c:174
+#: ../src/empathy-preferences.c:172
 msgid "Account connected"
 msgstr "Cuenta conectada"
 
-#: ../src/empathy-preferences.c:175
+#: ../src/empathy-preferences.c:173
 msgid "Account disconnected"
 msgstr "Cuenta desconectada"
 
-#: ../src/empathy-preferences.c:484
+#: ../src/empathy-preferences.c:476
 msgid "Language"
 msgstr "Idioma"
 
 #. translators: Contact name for the chat theme preview
-#: ../src/empathy-preferences.c:734
+#: ../src/empathy-preferences.c:726
 msgid "Juliet"
 msgstr "Julieta"
 
 #. translators: Contact name for the chat theme preview
-#: ../src/empathy-preferences.c:741
+#: ../src/empathy-preferences.c:733
 msgid "Romeo"
 msgstr "Romeo"
 
 #. translators: Quote from Romeo & Julier, for chat theme preview
-#: ../src/empathy-preferences.c:747
+#: ../src/empathy-preferences.c:739
 msgid "O Romeo, Romeo, wherefore art thou Romeo?"
 msgstr "¡Oh, Romeo, Romeo!, ¿dónde estás que no te veo?"
 
 #. translators: Quote from Romeo & Julier, for chat theme preview
-#: ../src/empathy-preferences.c:750
+#: ../src/empathy-preferences.c:742
 msgid "Deny thy father and refuse thy name;"
 msgstr "Niega a tu padre y rehúsa tu nombre;"
 
 #. translators: Quote from Romeo & Julier, for chat theme preview
-#: ../src/empathy-preferences.c:753
+#: ../src/empathy-preferences.c:745
 msgid "Or if thou wilt not, be but sworn my love"
 msgstr "O, si no quieres, júrame tan sólo que me amas"
 
 #. translators: Quote from Romeo & Julier, for chat theme preview
-#: ../src/empathy-preferences.c:756
+#: ../src/empathy-preferences.c:748
 msgid "And I'll no longer be a Capulet."
 msgstr "Y dejaré yo de ser una Capuleto"
 
 #. translators: Quote from Romeo & Julier, for chat theme preview
-#: ../src/empathy-preferences.c:759
+#: ../src/empathy-preferences.c:751
 msgid "Shall I hear more, or shall I speak at this?"
 msgstr "¿Debo oír más o contestar a lo dicho?"
 
 #. translators: Quote from Romeo & Julier, for chat theme preview
-#: ../src/empathy-preferences.c:762
+#: ../src/empathy-preferences.c:754
 msgid "Juliet has disconnected"
 msgstr "Julieta se ha desconectado"
 
-#: ../src/empathy-preferences.c:1175
+#: ../src/empathy-preferences.c:1158
 msgid "Preferences"
 msgstr "Preferencias"
 
@@ -4442,35 +4428,27 @@ msgstr "Activar la revisión ortográfica para idiomas:"
 msgid "General"
 msgstr "General"
 
-#: ../src/empathy-preferences.ui.h:15
-msgid "Input level:"
-msgstr "Nivel de entrada:"
-
 #: ../src/empathy-preferences.ui.h:16
-msgid "Input volume:"
-msgstr "Volumen de entrada:"
-
-#: ../src/empathy-preferences.ui.h:18
 msgid "Location sources:"
 msgstr "Orígenes de las ubicaciones:"
 
-#: ../src/empathy-preferences.ui.h:19
+#: ../src/empathy-preferences.ui.h:17
 msgid "Log conversations"
 msgstr "Registrar conversaciones"
 
-#: ../src/empathy-preferences.ui.h:20
+#: ../src/empathy-preferences.ui.h:18
 msgid "Notifications"
 msgstr "Notificaciones"
 
-#: ../src/empathy-preferences.ui.h:21
+#: ../src/empathy-preferences.ui.h:19
 msgid "Play sound for events"
 msgstr "Reproducir sonido para eventos"
 
-#: ../src/empathy-preferences.ui.h:22
+#: ../src/empathy-preferences.ui.h:20
 msgid "Privacy"
 msgstr "Privacidad"
 
-#: ../src/empathy-preferences.ui.h:23
+#: ../src/empathy-preferences.ui.h:21
 msgid ""
 "Reduced location accuracy means that nothing more precise than your city, "
 "state and country will be published.  GPS coordinates will be accurate to 1 "
@@ -4480,23 +4458,23 @@ msgstr ""
 "preciso que su ciudad, estado y país. Las coordenadas GPS tendrán un valor "
 "aleatorio añadido 1 lugar decimal."
 
-#: ../src/empathy-preferences.ui.h:24
+#: ../src/empathy-preferences.ui.h:22
 msgid "Show _smileys as images"
 msgstr "Mostrar los _emoticonos como imágenes"
 
-#: ../src/empathy-preferences.ui.h:25
+#: ../src/empathy-preferences.ui.h:23
 msgid "Show contact _list in rooms"
 msgstr "Mostrar _lista de contactos en salas"
 
-#: ../src/empathy-preferences.ui.h:26
+#: ../src/empathy-preferences.ui.h:24
 msgid "Sounds"
 msgstr "Sonidos"
 
-#: ../src/empathy-preferences.ui.h:27
+#: ../src/empathy-preferences.ui.h:25
 msgid "Spell Checking"
 msgstr "Revisión ortográfica"
 
-#: ../src/empathy-preferences.ui.h:28
+#: ../src/empathy-preferences.ui.h:26
 msgid ""
 "The list of languages reflects only the languages for which you have a "
 "dictionary installed."
@@ -4504,52 +4482,52 @@ msgstr ""
 "La lista de idiomas refleja sólo los idiomas para los cuales tiene un "
 "diccionario instalado."
 
-#: ../src/empathy-preferences.ui.h:29
+#: ../src/empathy-preferences.ui.h:27
 msgid "Themes"
 msgstr "Temas"
 
-#: ../src/empathy-preferences.ui.h:30
+#: ../src/empathy-preferences.ui.h:28
 msgid "Use _echo cancellation to improve call quality"
 msgstr "Usar cancelación de _eco para mejorar la calidad de las llamadas"
 
-#: ../src/empathy-preferences.ui.h:31
+#: ../src/empathy-preferences.ui.h:29
 msgid "Variant:"
 msgstr "Variante:"
 
-#: ../src/empathy-preferences.ui.h:32
+#: ../src/empathy-preferences.ui.h:30
 msgid "_Automatically connect on startup"
 msgstr "C_onectarse automáticamente al inicio"
 
-#: ../src/empathy-preferences.ui.h:33
+#: ../src/empathy-preferences.ui.h:31
 msgid "_Cellphone"
 msgstr "Teléfono _móvil"
 
-#: ../src/empathy-preferences.ui.h:34
+#: ../src/empathy-preferences.ui.h:32
 msgid "_Enable bubble notifications"
 msgstr "_Activar notificaciones de burbuja"
 
-#: ../src/empathy-preferences.ui.h:35
+#: ../src/empathy-preferences.ui.h:33
 msgid "_Enable sound notifications"
 msgstr "_Activar notificaciones de sonido"
 
-#: ../src/empathy-preferences.ui.h:36
+#: ../src/empathy-preferences.ui.h:34
 msgid "_GPS"
 msgstr "_GPS"
 
-#: ../src/empathy-preferences.ui.h:37
+#: ../src/empathy-preferences.ui.h:35
 msgid "_Network (IP, Wi-Fi)"
 msgstr "_Red (IP, Wi-Fi)"
 
-#: ../src/empathy-preferences.ui.h:38
+#: ../src/empathy-preferences.ui.h:36
 msgid "_Open new chats in separate windows"
 msgstr "_Abrir charlas nuevas en ventanas separadas"
 
-#: ../src/empathy-preferences.ui.h:39
+#: ../src/empathy-preferences.ui.h:37
 msgid "_Publish location to my contacts"
 msgstr "_Publicar mi ubicación a mis contactos"
 
 #. To translators: The longitude and latitude are rounded to closest 0,1 degrees, so for example 146,2345° is rounded to round(146,2345*10)/10 = 146,2 degrees.
-#: ../src/empathy-preferences.ui.h:41
+#: ../src/empathy-preferences.ui.h:39
 msgid "_Reduce location accuracy"
 msgstr "_Reducir la precisión de la ubicación"
 
@@ -4677,60 +4655,60 @@ msgstr ""
 "El gestor de conexiones seleccionado no soporta la extensión de depuración "
 "remota."
 
-#: ../src/empathy-invite-participant-dialog.c:186
-#: ../src/empathy-invite-participant-dialog.c:214
+#: ../src/empathy-invite-participant-dialog.c:197
+#: ../src/empathy-invite-participant-dialog.c:225
 msgid "Invite Participant"
 msgstr "Invitar participante"
 
-#: ../src/empathy-invite-participant-dialog.c:187
+#: ../src/empathy-invite-participant-dialog.c:198
 msgid "Choose a contact to invite into the conversation:"
 msgstr "Elegir un contacto para invitar a la conversación:"
 
-#: ../src/empathy-invite-participant-dialog.c:210
+#: ../src/empathy-invite-participant-dialog.c:221
 msgid "Invite"
 msgstr "Invitar"
 
-#: ../src/empathy-accounts.c:184
+#: ../src/empathy-accounts.c:183
 msgid "Don't display any dialogs; do any work (eg, importing) and exit"
 msgstr ""
 "No mostrar ningún diálogo; realizar cualquier trabajo (ej. importar) y salir"
 
-#: ../src/empathy-accounts.c:188
+#: ../src/empathy-accounts.c:187
 msgid ""
 "Don't display any dialogs unless there are only \"People Nearby\" accounts"
 msgstr ""
 "No mostrar ningún diálogo a no ser que sólo existan cuentas «Gente cerca»"
 
-#: ../src/empathy-accounts.c:192
+#: ../src/empathy-accounts.c:191
 msgid "Initially select given account (eg, gabble/jabber/foo_40example_2eorg0)"
 msgstr ""
 "Cuenta proporcionada inicialmente seleccionada (ej. gabble/jabber/ejemplo)"
 
-#: ../src/empathy-accounts.c:194
+#: ../src/empathy-accounts.c:193
 msgid "<account-id>"
 msgstr "<id-de-cuenta>"
 
-#: ../src/empathy-accounts.c:197
+#: ../src/empathy-accounts.c:196
 msgid "Show account assistant"
 msgstr "Mostrar el asistente de cuentas"
 
-#: ../src/empathy-accounts.c:203
+#: ../src/empathy-accounts.c:202
 msgid "- Empathy Accounts"
 msgstr ": Cuentas en Empathy"
 
-#: ../src/empathy-accounts.c:242
+#: ../src/empathy-accounts.c:238
 msgid "Empathy Accounts"
 msgstr "Cuentas en Empathy"
 
-#: ../src/empathy-debugger.c:70
+#: ../src/empathy-debugger.c:69
 msgid "Show a particular service"
 msgstr "Mostrar un servicio en particular"
 
-#: ../src/empathy-debugger.c:75
+#: ../src/empathy-debugger.c:74
 msgid "- Empathy Debugger"
 msgstr "- Depurador de Empathy"
 
-#: ../src/empathy-debugger.c:114
+#: ../src/empathy-debugger.c:113
 msgid "Empathy Debugger"
 msgstr "Depurador de Empathy"
 
@@ -4738,39 +4716,39 @@ msgstr "Depurador de Empathy"
 msgid "- Empathy Chat Client"
 msgstr ": Cliente de chat Empathy"
 
-#: ../src/empathy-notifications-approver.c:203
+#: ../src/empathy-notifications-approver.c:190
 msgid "Respond"
 msgstr "Respuesta"
 
-#: ../src/empathy-notifications-approver.c:217
-#: ../src/empathy-call-window.c:1562
+#: ../src/empathy-notifications-approver.c:204
+#: ../src/empathy-call-window.c:1565
 msgid "Reject"
 msgstr "Rechazar"
 
-#: ../src/empathy-notifications-approver.c:222
-#: ../src/empathy-notifications-approver.c:227
-#: ../src/empathy-call-window.c:1563
+#: ../src/empathy-notifications-approver.c:209
+#: ../src/empathy-notifications-approver.c:214
+#: ../src/empathy-call-window.c:1566
 msgid "Answer"
 msgstr "Responder"
 
-#: ../src/empathy-notifications-approver.c:227
+#: ../src/empathy-notifications-approver.c:214
 msgid "Answer with video"
 msgstr "Responder con vídeo"
 
-#: ../src/empathy-notifications-approver.c:235
-#: ../src/empathy-notifications-approver.c:245
+#: ../src/empathy-notifications-approver.c:222
+#: ../src/empathy-notifications-approver.c:232
 msgid "Decline"
 msgstr "Rechazar"
 
-#: ../src/empathy-notifications-approver.c:239
-#: ../src/empathy-notifications-approver.c:250
+#: ../src/empathy-notifications-approver.c:226
+#: ../src/empathy-notifications-approver.c:237
 msgid "Accept"
 msgstr "Aceptar"
 
 #. translators: the 'Provide' button is displayed in a notification
 #. * bubble when Empathy is asking for an account password; clicking on it
 #. * brings the password popup.
-#: ../src/empathy-notifications-approver.c:260
+#: ../src/empathy-notifications-approver.c:247
 msgid "Provide"
 msgstr "Proporcionar"
 
@@ -4785,36 +4763,34 @@ msgstr "%s intentó llamarle, pero estaba en otra llamada."
 msgid "i"
 msgstr "Información"
 
-#: ../src/empathy-call-window.c:2879
+#: ../src/empathy-call-window.c:2929
 msgid "On hold"
 msgstr "En espera"
 
-#: ../src/empathy-call-window.c:2882
+#: ../src/empathy-call-window.c:2932
 msgid "Mute"
 msgstr "Silenciar"
 
-#: ../src/empathy-call-window.c:2884
+#: ../src/empathy-call-window.c:2934
 msgid "Duration"
 msgstr "Duración"
 
 #. Translators: 'status - minutes:seconds' the caller has been connected
-#: ../src/empathy-call-window.c:2887
+#: ../src/empathy-call-window.c:2937
 #, c-format
 msgid "%s — %d:%02dm"
 msgstr "%s: %d:%02dm"
 
-#: ../src/empathy-call-window.c:3157
+#: ../src/empathy-call-window.c:3207
 #, c-format
 msgid "Your current balance is %s."
 msgstr "su balance actual es %s."
 
-#: ../src/empathy-call-window.c:3161
-#| msgid "You don't have enough credit in order to place this call"
+#: ../src/empathy-call-window.c:3211
 msgid "Sorry, you don’t have enough credit for that call."
 msgstr "No tiene crédito suficiente para hacer esta llamada."
 
-#: ../src/empathy-call-window.c:3163
-#| msgid "Top Up..."
+#: ../src/empathy-call-window.c:3213
 msgid "Top Up"
 msgstr "Recargar"
 
@@ -4822,6 +4798,21 @@ msgstr "Recargar"
 msgid "_Match case"
 msgstr "_Coincidir con capitalización"
 
+#~ msgid "Call volume"
+#~ msgstr "Volumen de la llamada"
+
+#~ msgid "Call volume, as a percentage."
+#~ msgstr "Volumen de la llamada, como porcentaje"
+
+#~ msgid "Set your presence and current status"
+#~ msgstr "Establecer su presencia y estado actual"
+
+#~ msgid "Input level:"
+#~ msgstr "Nivel de entrada:"
+
+#~ msgid "Input volume:"
+#~ msgstr "Volumen de entrada:"
+
 #~ msgid "Contact ID:"
 #~ msgstr "ID del contacto:"
 
index 6a01c8b004b529c136e16a649455a5f3fa68785d..d5cd1e05474d9edd55e1a6ef8fd7d030c2d0982c 100644 (file)
--- a/po/et.po
+++ b/po/et.po
@@ -4,22 +4,22 @@
 # Copyright (C) 2005–2011 Free Software Foundation, Inc.
 #
 # Ivar Smolin <okul linux ee>, 2005–2011.
-# Mattias Põldaru <mahfiaz gmail com>, 2009–2011.
+# Mattias Põldaru <mahfiaz@gmail.com>, 2009, 2010, 2011.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: empathy MASTER\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
-"product=empathy&keywords=I18N+L10N&component=general\n"
-"POT-Creation-Date: 2011-03-30 17:38+0000\n"
-"PO-Revision-Date: 2011-04-03 13:19+0300\n"
+"product=empathy&keywords=I18N+L10N&component=General\n"
+"POT-Creation-Date: 2011-11-05 01:30+0000\n"
+"PO-Revision-Date: 2011-11-06 11:28+0200\n"
 "Last-Translator: Mattias Põldaru <mahfiaz@gmail.com>\n"
-"Language-Team: Estonian <et@li.org>\n"
+"Language-Team: Estonian <>\n"
 "Language: et\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Content-Transfer-Encoding: 8bits\n"
+"Plural-Forms: nplurals=2; plural=(n!=1);\n"
 "X-Poedit-Language: Estonian\n"
 "X-Poedit-Country: ESTONIA\n"
 
@@ -40,6 +40,18 @@ msgstr "Välksõnumiklient"
 msgid "Always open a separate chat window for new chats."
 msgstr "Uutele vestlustele avatakse alati eraldi aken."
 
+msgid "Call volume"
+msgstr "Kõne valjus"
+
+msgid "Call volume, as a percentage."
+msgstr "Kõne valjus protsentides."
+
+msgid "Camera device"
+msgstr "Kaameraseade"
+
+msgid "Camera position"
+msgstr "Kaamera asukoht"
+
 msgid ""
 "Character to add after nickname when using nick completion (tab) in group "
 "chat."
@@ -50,6 +62,9 @@ msgstr ""
 msgid "Chat window theme"
 msgstr "Jututoaakende teema"
 
+msgid "Chat window theme variant"
+msgstr "Jututoaakende teema"
+
 msgid ""
 "Comma-separated list of spell checker languages to use (e.g. \"en, fr, nl\")."
 msgstr ""
@@ -64,6 +79,13 @@ msgstr "Kas peab ühenduste haldureid kasutama"
 msgid "Contact list sort criterion"
 msgstr "Kontaktide nimekirja sortimise alus"
 
+msgid "D-Bus object path of the last account selected to join a room."
+msgstr "Toaga ühinemiseks viimati valitud konto D-Busi objekti asukoht"
+
+msgid "Default camera device to use in video calls, e.g. /dev/video0."
+msgstr ""
+"Vaikimisi kaameraseade, mida kasutatakse videokõnede jaoks, nt /dev/video0"
+
 msgid "Default directory to select an avatar image from"
 msgstr "Vaikimisi kataloog, millest valida avatari pilti"
 
@@ -83,6 +105,9 @@ msgstr ""
 "Saabuvate sündmuste kuvamine teatealal. Kui väär, näidatakse neid kasutajale "
 "otse."
 
+msgid "Echo cancellation support"
+msgstr "Kaja vähendamise tugi"
+
 msgid "Empathy can publish the user's location"
 msgstr "Empathy tohib näidata kasutaja asukohta"
 
@@ -98,9 +123,6 @@ msgstr "Empathy tohib kasutada võrku asukoha arvamiseks"
 msgid "Empathy default download folder"
 msgstr "Empathy vaikimisi allalaadimiste kataloog"
 
-msgid "Empathy has migrated butterfly logs"
-msgstr "Empathy on üle kandnud butterfly logid"
-
 msgid "Empathy should auto-away when idle"
 msgstr "Empathy peaks jõudeoleku korral automaatselt eemaloleku määrama"
 
@@ -128,6 +150,9 @@ msgstr "Peida peaaken"
 msgid "Hide the main window."
 msgstr "Peaakna peitmine."
 
+msgid "Last account selected in Join Room dialog"
+msgstr "Viimane konto, mis valiti \"Ühine jututoaga\" dialoogis"
+
 msgid "Nick completed character"
 msgstr "Nimele lisamise märk"
 
@@ -170,6 +195,12 @@ msgstr "Kui kontakt siseneb, kuvatakse hüpikteade"
 msgid "Pop up notifications when a contact logs out"
 msgstr "Kui kontakt väljub, kuvatakse hüpikteade"
 
+msgid "Position the camera preview should be during a call."
+msgstr "Enda kaamera pildi asukoht kõne ajal."
+
+msgid "Show Balance in contact list"
+msgstr "Kontaktide nimekirjas näidatakse kontojääki"
+
 msgid "Show avatars"
 msgstr "Näidatakse avatare"
 
@@ -203,6 +234,10 @@ msgstr "Vestlusakna külgpaneeli asukoht (pikslites)."
 msgid "The theme that is used to display the conversation in chat windows."
 msgstr "Kujundus, mida kasutatakse jututoaakende vestluste kuvamisel."
 
+msgid ""
+"The theme variant that is used to display the conversation in chat windows."
+msgstr "Kujundus, mida kasutatakse jututoaakende vestluste kuvamisel."
+
 msgid "Use graphical smileys"
 msgstr "Tujunägudele kasutatakse pilte"
 
@@ -224,9 +259,6 @@ msgstr "Kas Empathy võib kasutada mobiilivõrku asukoha arvamiseks."
 msgid "Whether Empathy can use the network to guess the location."
 msgstr "Kas Empathy võib kasutada võrku asukoha arvamiseks."
 
-msgid "Whether Empathy has migrated butterfly logs."
-msgstr "Kas Empathy on üle kandnud butterfly logid."
-
 msgid "Whether Empathy should automatically log into your accounts on startup."
 msgstr "Kas Empathy peaks käivitumisel ise kontodesse sisse logima."
 
@@ -262,6 +294,9 @@ msgstr ""
 msgid "Whether to convert smileys into graphical images in conversations."
 msgstr "Kas tujunäod tuleks teisendada vestlustes piltideks."
 
+msgid "Whether to enable Pulseaudio's echo cancellation filter."
+msgstr "Kas lubada Pulseaudio kaja vähendamise filter."
+
 msgid "Whether to play a sound to notify of contacts logging into the network."
 msgstr "Kas esitada heli kontakti sisenemisest märkuandmiseks."
 
@@ -306,6 +341,9 @@ msgstr ""
 msgid "Whether to show a popup notification when receiving a new message."
 msgstr "Kas näidata hüpikteadet uue teate vastuvõtmisest märkuandmiseks."
 
+msgid "Whether to show account balances in the contact list."
+msgstr "Kas näidata kontaktide nimekirjas kontojääki."
+
 msgid ""
 "Whether to show avatars for contacts in the contact list and chat windows."
 msgstr "Kas näidata kontaktide nimekirjas ja vestlusakendes avatare."
@@ -362,8 +400,21 @@ msgstr "Valitud fail pole harilik fail"
 msgid "The selected file is empty"
 msgstr "Valitud fail on tühi"
 
+#, c-format
+msgid "Missed call from %s"
+msgstr "Vastamata kõne kasutajalt %s"
+
+#. Translators: this is an outgoing call, e.g. 'Called Alice'
+#, c-format
+msgid "Called %s"
+msgstr "Helistad kasutajale %s"
+
+#, c-format
+msgid "Call from %s"
+msgstr "Kõne kasutajalt %s"
+
 msgid "Socket type not supported"
-msgstr "Sokli pole toetatud."
+msgstr "Sokli liik pole toetatud."
 
 msgid "No reason was specified"
 msgstr "Põhjendust pole määratud."
@@ -402,10 +453,7 @@ msgid "Offline"
 msgstr "Ühendamata"
 
 #. translators: presence type is unknown
-#. translators: encoding video codec is unknown
-#. translators: encoding audio codec is unknown
-#. translators: decoding video codec is unknown
-#. translators: decoding audio codec is unknown
+msgctxt "presence"
 msgid "Unknown"
 msgstr "Tundmatu"
 
@@ -495,6 +543,9 @@ msgstr ""
 "Serveri sertifikaadi pikkus või sertifikaatide keti pikkus ületas "
 "krüptograafiateegi eelduslikud piirid"
 
+msgid "Your software is too old"
+msgstr "Sinu tarkvara on liiga vana"
+
 msgid "People Nearby"
 msgstr "Lähedalasuvad inimesed"
 
@@ -546,8 +597,8 @@ msgstr[1] "%d kuud tagasi"
 msgid "in the future"
 msgstr "tulevikus"
 
-msgid "All"
-msgstr "Kõik"
+msgid "All accounts"
+msgstr "Kõik kontod"
 
 msgid "Account"
 msgstr "Konto"
@@ -565,9 +616,12 @@ msgstr "Port"
 msgid "%s:"
 msgstr "%s:"
 
+msgid "My Web Accounts"
+msgstr "Minu veebikontod"
+
 #, c-format
-msgid "The account %s is edited via My Web Accounts."
-msgstr "Kontot %s muudetakse Minu Veebikontode kaudu."
+msgid "The account %s is edited via %s."
+msgstr "Kontot %s muudetakse %s kaudu."
 
 #, c-format
 msgid "The account %s cannot be edited in Empathy."
@@ -576,6 +630,11 @@ msgstr "Kontot %s pole võimalik Empathy abil muuta."
 msgid "Launch My Web Accounts"
 msgstr "Käivita Minu Veebikontod"
 
+#. general handler
+#, c-format
+msgid "Edit %s"
+msgstr "Muuda %s"
+
 msgid "Username:"
 msgstr "Kasutajanimi:"
 
@@ -585,15 +644,6 @@ msgstr "_Rakenda"
 msgid "L_og in"
 msgstr "Logi _sisse"
 
-#. Account and Identifier
-msgid "Account:"
-msgstr "Konto:"
-
-#. translators: this is the label of a checkbox used to enable/disable IM
-#. * accounts
-msgid "_Enabled"
-msgstr "_Lubatud"
-
 msgid "This account already exists on the server"
 msgstr "See konto on serveris juba olemas"
 
@@ -707,6 +757,13 @@ msgstr "Puudub"
 msgid "Character set:"
 msgstr "Kooditabel:"
 
+msgid ""
+"Most IRC servers don't need a password, so if you're not sure, don't enter a "
+"password."
+msgstr ""
+"Enamik IRC servereid ei vaja parooli. Kui sa pole kindel, ära sisesta "
+"parooli."
+
 msgid "Network"
 msgstr "Võrk"
 
@@ -833,6 +890,9 @@ msgstr "Seonduse avastamine"
 msgid "Discover the STUN server automatically"
 msgstr "STUN-serveri automaatne tuvastus"
 
+msgid "Ignore TLS Errors"
+msgstr "TLS vigasid eiratakse"
+
 msgid "Interval (seconds)"
 msgstr "Intervall (sekundites)"
 
@@ -866,6 +926,9 @@ msgstr "Server:"
 msgid "Transport:"
 msgstr "Transport:"
 
+msgid "Use this account to call _landlines and mobile phones"
+msgstr "Seda kontot kasutatakse _fiksvõrku ja mobiiltelefonidele helistamiseks"
+
 msgid "What is your SIP account password?"
 msgstr "Mis on sinu SIP-konto parool?"
 
@@ -896,9 +959,15 @@ msgstr "Pole võimalik pilti teisendada"
 msgid "None of the accepted image formats are supported on your system"
 msgstr "Sinu süsteem ei toeta ühtegi sobivatest pildivormingutest"
 
+msgid "Couldn't save picture to file"
+msgstr "Pilti pole võimalik salvestada faili"
+
 msgid "Select Your Avatar Image"
 msgstr "Vali oma avatari pilt"
 
+msgid "Take a picture..."
+msgstr "Tee pilt..."
+
 msgid "No Image"
 msgstr "Pilti pole"
 
@@ -911,6 +980,24 @@ msgstr "Kõik failid"
 msgid "Click to enlarge"
 msgstr "Klõpsa suurendamiseks"
 
+msgid "There was an error starting the call"
+msgstr "Kõne alustamisel esines viga"
+
+msgid "The specified contact doesn't support calls"
+msgstr "Valitud kontakt ei toeta kõnesid"
+
+msgid "The specified contact is offline"
+msgstr "Valitud kontakt pole võrku ühendatud"
+
+msgid "The specified contact is not valid"
+msgstr "Valitud kontakt pole korrektne"
+
+msgid "Emergency calls are not supported on this protocol"
+msgstr "See protokoll ei toeta hädaabikõnesid"
+
+msgid "You don't have enough credit in order to place this call"
+msgstr "Sul pole selle kõne tegemiseks piisavalt krediiti"
+
 msgid "Failed to open private chat"
 msgstr "Privaatvestluse avamine nurjus"
 
@@ -920,6 +1007,10 @@ msgstr "Selles vestluses ei ole teemad toetatud"
 msgid "You are not allowed to change the topic"
 msgstr "Sul puudub õigus teemat vahetada"
 
+#, c-format
+msgid "“%s” is not a valid contact ID"
+msgstr "\"%s\" ei ole sobiv kontakti ID"
+
 msgid "/clear: clear all messages from the current conversation"
 msgstr "/clear: sellest vestluse kõigi sõnumite kustutamine"
 
@@ -960,6 +1051,9 @@ msgstr ""
 "algava sõnumi saatmiseks, näiteks: \"/say /join abil saad uued jututoaga "
 "liituda\""
 
+msgid "/whois <contact ID>: display information about a contact"
+msgstr "/whois <kontakti ID>: kontakti kohta andmete kuvamine"
+
 msgid ""
 "/help [<command>]: show all supported commands. If <command> is defined, "
 "show its usage."
@@ -977,6 +1071,27 @@ msgstr "Tundmatu käsk"
 msgid "Unknown command; see /help for the available commands"
 msgstr "Tundmatu käsk; kirjuta /help, et näha saadaolevaid käske"
 
+msgid "insufficient balance to send message"
+msgstr "sõnumi saatmiseks pole piisavalt krediiti"
+
+#, c-format
+msgid "Error sending message '%s': %s"
+msgstr "Viga teate '%s' saatmisel: %s"
+
+#, c-format
+msgid "Error sending message: %s"
+msgstr "Viga teate saatmisel: %s"
+
+#. translators: error used when user doesn't have enough credit on his
+#. * account to send the message.
+#, c-format
+msgid "insufficient balance to send message. <a href='%s'>Top up</a>."
+msgstr ""
+"sõnumi saatmiseks pole piisavalt krediiti. <a href='%s'>Lae kontot</a>."
+
+msgid "not capable"
+msgstr "pole võimeline"
+
 msgid "offline"
 msgstr "ühendamata"
 
@@ -995,10 +1110,6 @@ msgstr "pole veel teostatud"
 msgid "unknown"
 msgstr "tundmatu"
 
-#, c-format
-msgid "Error sending message '%s': %s"
-msgstr "Viga teate '%s' saatmisel: %s"
-
 msgid "Topic:"
 msgstr "Teema:"
 
@@ -1084,6 +1195,9 @@ msgstr "%s sisenes tuppa"
 msgid "%s is now known as %s"
 msgstr "%s on nüüd nimega %s"
 
+#. We don't know if the incoming call has been accepted or not, so we
+#. * assume it hasn't and if it has, we'll set the proper status when
+#. * we get the new handler.
 msgid "Disconnected"
 msgstr "Ühendus katkestatud"
 
@@ -1116,6 +1230,12 @@ msgstr "Ühendatud"
 msgid "Conversation"
 msgstr "Vestlus"
 
+#. Translators: this string is a something like
+#. * "Escher Cat (SMS)"
+#, c-format
+msgid "%s (SMS)"
+msgstr "%s (SMS)"
+
 msgid "Unknown or invalid identifier"
 msgstr "Tundmatu või sobimatu identifikaator"
 
@@ -1134,6 +1254,16 @@ msgstr "Kontakti polnud võimalik blokeerida"
 msgid "Edit Blocked Contacts"
 msgstr "Blokitud kontaktide muutmine"
 
+#. Account and Identifier
+msgid "Account:"
+msgstr "Konto:"
+
+msgid "Blocked Contacts"
+msgstr "Blokitud kontaktid"
+
+msgid "Remove"
+msgstr "Eemalda"
+
 #. Copy Link Address menu item
 msgid "_Copy Link Address"
 msgstr "_Kopeeri lingi aadress"
@@ -1183,12 +1313,6 @@ msgstr "Tellimuse päring"
 msgid "_Block User"
 msgstr "_Blokeeri kasutaja"
 
-msgid "Ungrouped"
-msgstr "Grupeerimata"
-
-msgid "Favorite People"
-msgstr "Lemmikud"
-
 #, c-format
 msgid "Do you really want to remove the group '%s'?"
 msgstr "Kas tahad tõesti eemaldada grupi '%s'?"
@@ -1213,6 +1337,7 @@ msgstr "Lisa _kontakt…"
 msgid "_Block Contact"
 msgstr "_Blokeeri kontakt"
 
+#. add chat button
 msgid "_Chat"
 msgstr "_Vestlus"
 
@@ -1233,9 +1358,6 @@ msgstr "Faili saatmine"
 msgid "Share My Desktop"
 msgstr "Jaga minu töölauda"
 
-msgid "Favorite"
-msgstr "Lemmik"
-
 msgid "Infor_mation"
 msgstr "_Andmed"
 
@@ -1262,23 +1384,14 @@ msgstr "Lisa _kontakt…"
 msgid "No contacts found"
 msgstr "Kontakte ei leitud"
 
-msgid "Select a contact"
-msgstr "Vali kontakt"
-
-msgid "Full name:"
-msgstr "Täisnimi:"
-
-msgid "Phone number:"
-msgstr "Telefoninumber:"
+msgid "Your message introducing yourself:"
+msgstr "Sind tutvustav teade:"
 
-msgid "E-mail address:"
-msgstr "Meiliaadress:"
+msgid "Please let me see when you're online. Thanks!"
+msgstr "Palun luba mul näha, kui sa oled sisse logitud. Aitäh!"
 
-msgid "Website:"
-msgstr "Veebileht:"
-
-msgid "Birthday:"
-msgstr "Sünnipäev:"
+msgid "Channels:"
+msgstr "Kanalid:"
 
 msgid "Country ISO Code:"
 msgstr "Riigi ISO-kood:"
@@ -1369,6 +1482,59 @@ msgstr "Avatari salvestamine"
 msgid "Unable to save avatar"
 msgstr "Avatari salvestamine pole võimalik"
 
+msgid "Favorite"
+msgstr "Lemmik"
+
+msgid "Full name"
+msgstr "Täisnimi"
+
+msgid "Phone number"
+msgstr "Telefoninumber"
+
+msgid "E-mail address"
+msgstr "Meiliaadress"
+
+msgid "Website"
+msgstr "Veebileht"
+
+msgid "Birthday"
+msgstr "Sünnipäev"
+
+#. Note to translators: this is the caption for a string of the form "5
+#. * minutes ago", and refers to the time since the contact last interacted
+#. * with their IM client.
+msgid "Last seen:"
+msgstr "Viimati nähti:"
+
+msgid "Connected from:"
+msgstr "Ühendusviis:"
+
+#. FIXME: once Idle implements SimplePresence using this information, we can
+#. * and should bin this.
+msgid "Away message:"
+msgstr "Eemalolekuteade:"
+
+msgid "work"
+msgstr "töö"
+
+msgid "home"
+msgstr "kodu"
+
+msgid "mobile"
+msgstr "mobiil"
+
+msgid "voice"
+msgstr "häälega"
+
+msgid "preferred"
+msgstr "eelistatud"
+
+msgid "postal"
+msgstr "postipakk"
+
+msgid "parcel"
+msgstr "kullerpakk"
+
 msgid "<b>Location</b> at (date)\t"
 msgstr "<b>Asukoht</b> kuupäeval\t"
 
@@ -1449,6 +1615,27 @@ msgstr "Vasakul nimekirjas olevad kontaktid liidetakse kokku."
 msgid "%s (%s)"
 msgstr "%s (%s)"
 
+msgid "Select account to use to place the call"
+msgstr "Vali konto, mille kaudu kõne teha"
+
+#. translators: Call is a noun. This string is used in the window
+#. * title
+msgid "Call"
+msgstr "Kõne"
+
+msgid "Mobile"
+msgstr "Mobiil"
+
+msgid "Work"
+msgstr "Töö"
+
+msgid "HOME"
+msgstr "KODU"
+
+#. add SMS button
+msgid "_SMS"
+msgstr "_SMS"
+
 msgctxt "Edit individual (contextual menu)"
 msgid "_Edit"
 msgstr "_Redaktor"
@@ -1537,48 +1724,177 @@ msgctxt "Unlink individual (button)"
 msgid "_Unlink"
 msgstr "_Eralda"
 
-msgid "Date"
-msgstr "Kuupäev"
+msgid "History"
+msgstr "Ajalugu"
+
+msgid "Show"
+msgstr "Näita"
+
+msgid "Search"
+msgstr "Otsing"
 
-#. Tab Label
-msgid "Conversations"
-msgstr "Vestlused"
+#, c-format
+msgid "Chat in %s"
+msgstr "Vestlus kohas %s"
 
-msgid "Find Next"
-msgstr "Otsi järgmine"
+#, c-format
+msgid "Chat with %s"
+msgstr "Vestlus kasutajaga %s"
 
-msgid "Find Previous"
-msgstr "Otsi eelmine"
+msgctxt "A date with the time"
+msgid "%A, %e %B %Y %X"
+msgstr "%A, %d. %B %Y %X"
 
-msgid "Previous Conversations"
-msgstr "Eelmised vestlused"
+#. Translators: this is an emote: '* Danielle waves'
+#, c-format
+msgid "<i>* %s %s</i>"
+msgstr "<i>* %s %s</i>"
 
-#. Tab Label
-msgid "Search"
-msgstr "Otsing"
+#. Translators: this is a message: 'Danielle: hello'
+#. * The string in bold is the sender's name
+#, c-format
+msgid "<b>%s:</b> %s"
+msgstr "<b>%s:</b> %s"
 
-#. Searching *for* something
-msgid "_For:"
-msgstr "_Otsing:"
+#, c-format
+msgid "%s second"
+msgid_plural "%s seconds"
+msgstr[0] "%s sekund"
+msgstr[1] "%s sekundit"
 
-msgid "Contact ID:"
-msgstr "Kontakti ID:"
+#, c-format
+msgid "%s minute"
+msgid_plural "%s minutes"
+msgstr[0] "%s minut"
+msgstr[1] "%s minutit"
 
-#. add chat button
-msgid "C_hat"
-msgstr "_Vestle"
+#, c-format
+msgid "Call took %s, ended at %s"
+msgstr "Kõne algus %s, lõpp %s"
+
+msgid "Today"
+msgstr "Täna"
+
+msgid "Yesterday"
+msgstr "Eile"
+
+#. Translators: A date such as '23 May 2010' (strftime format)
+msgid "%e %B %Y"
+msgstr "%d. %B %Y"
+
+msgid "Anytime"
+msgstr "Millal tahes"
+
+msgid "Anyone"
+msgstr "Kes tahes"
+
+msgid "Who"
+msgstr "Kes"
+
+msgid "When"
+msgstr "Millal"
+
+msgid "Anything"
+msgstr "Kõik liigid"
+
+msgid "Text chats"
+msgstr "Tekstivestlused"
+
+msgid "Calls"
+msgstr "Kõned"
+
+msgid "Incoming calls"
+msgstr "Sissetulevad kõned"
+
+msgid "Outgoing calls"
+msgstr "Väljuvad kõned"
+
+msgid "Missed calls"
+msgstr "Vastamata kõned"
+
+msgid "What"
+msgstr "Mis"
+
+msgid "Are you sure you want to delete all logs of previous conversations?"
+msgstr "Kas oled kindel, et tahad kustutada kõigi eelmiste vestluste logid?"
+
+msgid "Clear All"
+msgstr "Puhasta kõik"
+
+msgid "Delete from:"
+msgstr "Kustuta kust:"
+
+msgid "<span size=\"x-large\">Loading...</span>"
+msgstr "<span size=\"x-large\">Laadimine...</span>"
+
+msgid "Chat"
+msgstr "Vestlus"
+
+msgid "Delete All History..."
+msgstr "Kogu ajaloo kustutamine..."
+
+msgid "Profile"
+msgstr "Profiil"
+
+msgid "Video"
+msgstr "Video"
+
+msgid "_Edit"
+msgstr "_Redaktor"
+
+msgid "_File"
+msgstr "_Fail"
+
+msgid "page 2"
+msgstr "leht 2"
+
+msgid "The contact is offline"
+msgstr "Kontakt pole võrku ühendatud"
+
+msgid "The specified contact is either invalid or unknown"
+msgstr "Määratud kontakt on kas vigane või tundmatu"
+
+msgid "The contact does not support this kind of conversation"
+msgstr "Kontakt ei toeta seda laadi vestlust"
+
+msgid "The requested functionality is not implemented for this protocol"
+msgstr "Päritud võimalused ei ole selle protokolli jaoks teostatud"
+
+msgid "Could not start a conversation with the given contact"
+msgstr "Antud kontaktiga pole võimalik vestlust alustada"
+
+msgid "You are banned from this channel"
+msgstr "Sind blokeeriti sellel kanalil"
+
+msgid "This channel is full"
+msgstr "See kanal on täis"
+
+msgid "You must be invited to join this channel"
+msgstr "Selle kanaliga ühinemiseks vajad kutset"
+
+msgid "Can't proceed while disconnected"
+msgstr "Ilma ühenduseta pole võimalik jätkata"
+
+msgid "Permission denied"
+msgstr "Ligipääs keelatud"
+
+msgid "There was an error starting the conversation"
+msgstr "Vesetluse alustamisel esines viga"
+
+msgid "Enter a contact identifier or phone number:"
+msgstr "Sisesta kontakti identifitseerif info või telefoninumber:"
 
 #. Tweak the dialog
 msgid "New Conversation"
 msgstr "Uus vestlus"
 
-#. add video toggle
-msgid "Send _Video"
-msgstr "Saada _video"
+#. add video button
+msgid "_Video Call"
+msgstr "_Videokõne"
 
-#. add chat button
-msgid "C_all"
-msgstr "_Helista"
+#. add audio button
+msgid "_Audio Call"
+msgstr "_Audiokõne"
 
 #. Tweak the dialog
 msgid "New Call"
@@ -1613,9 +1929,6 @@ msgstr "Klõpsa selle oleku lisamiseks lemmikutesse"
 msgid "Set status"
 msgstr "Määra olek"
 
-msgid "Set your presence and current status"
-msgstr "Kohalolu ja praeguse oleku määramine"
-
 #. Custom messages
 msgid "Custom messages…"
 msgstr "Muud teated…"
@@ -1631,12 +1944,18 @@ msgstr "Uus %s konto"
 msgid "Find:"
 msgstr "Otsi:"
 
-msgid "Match case"
-msgstr "Tõstutundlik"
+msgid "Mat_ch case"
+msgstr "_Tõstutundlik"
 
 msgid "Phrase not found"
 msgstr "Fraasi ei leitud"
 
+msgid "_Next"
+msgstr "_Järgmine"
+
+msgid "_Previous"
+msgstr "_Eelmine"
+
 msgid "Received an instant message"
 msgstr "Võeti vastu välksõnum"
 
@@ -1667,17 +1986,15 @@ msgstr "Väljuv kõne"
 msgid "Voice call ended"
 msgstr "Kõne lõpetati"
 
-msgid "Enter Custom Message"
-msgstr "Sisesta oma teade"
-
 msgid "Edit Custom Messages"
 msgstr "Teadete muutmine"
 
-msgid "Save _New Status Message"
-msgstr "Salvesta _uus olekusõnum"
+#, c-format
+msgid "Message edited at %s"
+msgstr "Sõnumit muudeti kohas %s"
 
-msgid "Saved Status Messages"
-msgstr "Salvestatud olekuteated"
+msgid "Normal"
+msgstr "Tavaline"
 
 msgid "Classic"
 msgstr "Klassikaline"
@@ -1859,12 +2176,6 @@ msgstr "Lääne"
 msgid "Vietnamese"
 msgstr "Vietnami"
 
-msgid "The selected contact cannot receive files."
-msgstr "Valitud kontakt pole suuteline faile vastu võtma."
-
-msgid "The selected contact is offline."
-msgstr "Valitud kontakt pole võrku ühendatud."
-
 msgid "No error message"
 msgstr "Veateade puudub"
 
@@ -2123,6 +2434,9 @@ msgstr ""
 "Sa oled akent sulgemas ja see tühistab tehtud muudatused\n"
 "Kas sa soovid seda teha?"
 
+msgid "Add…"
+msgstr "Lisa…"
+
 msgid "Loading account information"
 msgstr "Konto andmete laadimine"
 
@@ -2139,9 +2453,6 @@ msgstr ""
 "Uue konto lisamiseks pead paigaldama tugiprogrammi iga protokolli jaoks, "
 "mida tahad kasutada."
 
-msgid "_Add…"
-msgstr "_Lisa…"
-
 msgid "_Import…"
 msgstr "_Impordi…"
 
@@ -2193,11 +2504,6 @@ msgstr "Üksikasjad"
 msgid "Call with %s"
 msgstr "Kõne kasutajaga %s"
 
-#. translators: Call is a noun. This string is used in the window
-#. * title
-msgid "Call"
-msgstr "Kõne"
-
 msgid "The IP address as seen by the machine"
 msgstr "IP-aadress, nagu masin seda näeb"
 
@@ -2213,6 +2519,10 @@ msgstr "Edastusserveri IP-aadress"
 msgid "The IP address of the multicast group"
 msgstr "Multicast grupi IP-aadress"
 
+msgctxt "codec"
+msgid "Unknown"
+msgstr "Tundmatu"
+
 #. Translators: number of minutes:seconds the caller has been connected
 #, c-format
 msgid "Connected — %d:%02dm"
@@ -2283,26 +2593,14 @@ msgstr "Videovoogu pole võimalik alustada"
 msgid "Audio"
 msgstr "Audio"
 
-msgid "Call the contact again"
-msgstr "Helista kontaktile uuesti"
-
-msgid "Camera Off"
-msgstr "Kaamera väljas"
-
-msgid "Camera On"
-msgstr "Kaamera sees"
-
 msgid "Decoding Codec:"
 msgstr "Dekodeeriv koodek:"
 
-msgid "Disable camera and stop sending video"
-msgstr "Keela kaamera ja lõpeta video saatmine"
+msgid "Disable camera"
+msgstr "Keela kaamera"
 
-msgid "Enable camera and send video"
-msgstr "Kaamera lubamine ja video saatmine"
-
-msgid "Enable camera but don't send video"
-msgstr "Kaamera lubamine ilma video saatmiseta"
+msgid "Display the dialpad"
+msgstr "Kuva sõrmlaud"
 
 msgid "Encoding Codec:"
 msgstr "Kodeeriv koodek:"
@@ -2316,11 +2614,11 @@ msgstr "Praeguse kõne lõpetamine"
 msgid "Local Candidate:"
 msgstr "Kohalik kandidaat:"
 
-msgid "Preview"
-msgstr "Eelvaade"
+msgid "Maximise me"
+msgstr "Maksimeeri mind"
 
-msgid "Redial"
-msgstr "Vali uuesti"
+msgid "Minimise me"
+msgstr "Minimeeri mind"
 
 msgid "Remote Candidate:"
 msgstr "Kaugkandidaat:"
@@ -2328,27 +2626,54 @@ msgstr "Kaugkandidaat:"
 msgid "Send Audio"
 msgstr "Saada heli"
 
-msgid "Toggle audio transmission"
-msgstr "Heliedastuse lüliti"
+msgid "Send Video"
+msgstr "Video saatmine"
 
-msgid "V_ideo"
-msgstr "V_ideo"
+msgid "Show dialpad"
+msgstr "Sõrmlaua näitamine"
 
-msgid "Video"
-msgstr "Video"
+msgid "Start a video call"
+msgstr "Videokõne alustamine"
 
-msgid "Video Off"
-msgstr "Video väljas"
+msgid "Start an audio call"
+msgstr "Audiokõne alustamine"
 
-msgid "Video On"
-msgstr "Video sees"
+msgid "Swap camera"
+msgstr "Kaamera vahetamine"
 
-msgid "Video Preview"
-msgstr "Video eelvaade"
+msgid "Toggle audio transmission"
+msgstr "Heliedastuse lüliti"
+
+msgid "Toggle video transmission"
+msgstr "Videoedastuse lüliti"
+
+msgid "Unknown"
+msgstr "Tundmatu"
+
+msgid "Video call"
+msgstr "Videokõne"
 
 msgid "_Call"
 msgstr "_Helista"
 
+msgid "_Camera"
+msgstr "_Kaamera"
+
+msgid "_Contents"
+msgstr "_Sisukord"
+
+msgid "_Debug"
+msgstr "Si_lumine"
+
+msgid "_Help"
+msgstr "A_bi"
+
+msgid "_Microphone"
+msgstr "_Mikrofon"
+
+msgid "_Settings"
+msgstr "_Seaded"
+
 msgid "_View"
 msgstr "_Vaade"
 
@@ -2376,6 +2701,15 @@ msgid_plural "%s (%d unread from all)"
 msgstr[0] "%s (%d lugemata kõigilt)"
 msgstr[1] "%s (%d lugemata kõigilt)"
 
+msgid "SMS:"
+msgstr "SMS:"
+
+#, c-format
+msgid "Sending %d message"
+msgid_plural "Sending %d messages"
+msgstr[0] "%d sõnumi saatmine"
+msgstr[1] "%d sõnumi saatmine"
+
 msgid "Typing a message."
 msgstr "Kirjutab sõnumit."
 
@@ -2385,9 +2719,6 @@ msgstr "_Puhasta"
 msgid "C_ontact"
 msgstr "_Kontakt"
 
-msgid "Chat"
-msgstr "Vestlus"
-
 msgid "Insert _Smiley"
 msgstr "Lisa _tujunägu"
 
@@ -2403,24 +2734,15 @@ msgstr "Tõsta kaart _paremale"
 msgid "Notify for All Messages"
 msgstr "Teavitamine kõigist sõnumitest"
 
-msgid "_Contents"
-msgstr "_Sisukord"
-
 msgid "_Conversation"
 msgstr "_Vestlus"
 
 msgid "_Detach Tab"
 msgstr "_Haagi kaart lahti"
 
-msgid "_Edit"
-msgstr "_Redaktor"
-
 msgid "_Favorite Chat Room"
 msgstr "_Lemmikjututuba"
 
-msgid "_Help"
-msgstr "A_bi"
-
 msgid "_Next Tab"
 msgstr "_Järgmine kaart"
 
@@ -2472,6 +2794,9 @@ msgstr "_Lükka tagasi"
 msgid "_Answer"
 msgstr "_Vasta"
 
+msgid "_Answer with video"
+msgstr "_Vastamine koos videoga"
+
 #, c-format
 msgid "Incoming video call from %s"
 msgstr "Sissetulev kõne kasutajalt %s"
@@ -2638,14 +2963,36 @@ msgstr "Katkesta ühendus"
 msgid "No match found"
 msgstr "Vastavust ei leitud"
 
+#, c-format
+msgid "Sorry, %s accounts can’t be used until your %s software is updated."
+msgstr ""
+"Vabandust, %s kontosid ei saa kasutada enne, kui sinu %s tarkvara on "
+"uuendatud."
+
+msgid "Update software..."
+msgstr "Tarkvara uuendamine..."
+
+msgid "Close"
+msgstr "Sulge"
+
 msgid "Reconnect"
 msgstr "Ühendu uuesti"
 
 msgid "Edit Account"
 msgstr "Konto redigeerimine"
 
-msgid "Close"
-msgstr "Sulge"
+#. Translators: this string will be something like:
+#. *   Top up My Account ($1.23)..."
+#, c-format
+msgid "Top up %s (%s)..."
+msgstr "Lae %s kontot (%s)..."
+
+msgid "Top up account credit"
+msgstr "Lisa kontole raha"
+
+#. top up button
+msgid "Top Up..."
+msgstr "Lae kontot..."
 
 msgid "Contact"
 msgstr "Kontakt"
@@ -2653,12 +3000,12 @@ msgstr "Kontakt"
 msgid "Contact List"
 msgstr "Kontaktide nimekiri"
 
-msgid "Show and edit accounts"
-msgstr "Kontode näitamine ja redigeerimine"
-
 msgid "Contacts on a _Map"
 msgstr "Kontaktid _kaardil"
 
+msgid "Credit Balance"
+msgstr "Kontojääk"
+
 msgid "Find in Contact _List"
 msgstr "_Otsi kontaktide nimekirjast"
 
@@ -2698,9 +3045,6 @@ msgstr "_Blokitud kontaktid"
 msgid "_Compact Size"
 msgstr "_Kompaktne"
 
-msgid "_Debug"
-msgstr "Si_lumine"
-
 msgid "_File Transfers"
 msgstr "_Failiülekanded"
 
@@ -2800,6 +3144,38 @@ msgstr "Konto ühendus katkestatud"
 msgid "Language"
 msgstr "Keel"
 
+#. translators: Contact name for the chat theme preview
+msgid "Juliet"
+msgstr "Julia"
+
+#. translators: Contact name for the chat theme preview
+msgid "Romeo"
+msgstr "Romeo"
+
+#. translators: Quote from Romeo & Julier, for chat theme preview
+msgid "O Romeo, Romeo, wherefore art thou Romeo?"
+msgstr "Oo Romeo! Oo Romeo, miks sa oled Romeo?"
+
+#. translators: Quote from Romeo & Julier, for chat theme preview
+msgid "Deny thy father and refuse thy name;"
+msgstr "Salga oma isa, keeldu oma nimest,"
+
+#. translators: Quote from Romeo & Julier, for chat theme preview
+msgid "Or if thou wilt not, be but sworn my love"
+msgstr "või kui ei taha, vannu mulle armu,"
+
+#. translators: Quote from Romeo & Julier, for chat theme preview
+msgid "And I'll no longer be a Capulet."
+msgstr "ja Capulettiks kauemaks ma ei jää!"
+
+#. translators: Quote from Romeo & Julier, for chat theme preview
+msgid "Shall I hear more, or shall I speak at this?"
+msgstr "Kas peaksin veel kuulama või selle peale rääkima?"
+
+#. translators: Quote from Romeo & Julier, for chat theme preview
+msgid "Juliet has disconnected"
+msgstr "Julia lahkus"
+
 msgid "Preferences"
 msgstr "Eelistused"
 
@@ -2821,6 +3197,17 @@ msgstr "_Eemal- või hõivatud oleku korral on helid keelatud"
 msgid "Display incoming events in the notification area"
 msgstr "Sissetulevaid sündmuseid kuvatakse teatealal"
 
+msgid ""
+"Echo cancellation helps to make your voice sound clearer to the other "
+"person, but may cause problems on some computers. If you or the other person "
+"hear strange noises or glitches during calls, try turning echo cancellation "
+"off and restarting the call."
+msgstr ""
+"Kaja vähendamine teeb sinu hääle teiste jaoks puhtamaks, kuid võib "
+"põhjustada probleeme mõnedel arvutitel. Kui sina või teine kõne osapool "
+"kuuleb imelikku müra või krõpse kõne ajal, proovi kaja vähendamine välja "
+"lülitada ja helista uuesti."
+
 msgid "Enable notifications when a contact comes online"
 msgstr "Teatatakse kontakti sisenemisest"
 
@@ -2836,6 +3223,12 @@ msgstr "Õigekirjakontroll on lubatud järgmistele keeltele:"
 msgid "General"
 msgstr "Üldine"
 
+msgid "Input level:"
+msgstr "Sisendtase:"
+
+msgid "Input volume:"
+msgstr "Sisendvaljus:"
+
 msgid "Location sources:"
 msgstr "Asukohaallikad:"
 
@@ -2881,6 +3274,12 @@ msgstr ""
 msgid "Themes"
 msgstr "Teemad"
 
+msgid "Use _echo cancellation to improve call quality"
+msgstr "_Kaja vähendamine kõne kvaliteedi parendamiseks"
+
+msgid "Variant:"
+msgstr "Variant:"
+
 msgid "_Automatically connect on startup"
 msgstr "_Käivitumisel ühendutakse automaatselt"
 
@@ -2915,6 +3314,42 @@ msgstr "Olek"
 msgid "_Quit"
 msgstr "_Lõpeta"
 
+msgid "Call the contact again"
+msgstr "Helista kontaktile uuesti"
+
+msgid "Camera Off"
+msgstr "Kaamera väljas"
+
+msgid "Camera On"
+msgstr "Kaamera sees"
+
+msgid "Disable camera and stop sending video"
+msgstr "Kaamera keelamine ja video saatmise lõpetamine"
+
+msgid "Enable camera and send video"
+msgstr "Kaamera lubamine ja video saatmine"
+
+msgid "Enable camera but don't send video"
+msgstr "Kaamera lubamine ilma video saatmiseta"
+
+msgid "Preview"
+msgstr "Eelvaade"
+
+msgid "Redial"
+msgstr "Vali uuesti"
+
+msgid "V_ideo"
+msgstr "V_ideo"
+
+msgid "Video Off"
+msgstr "Video väljas"
+
+msgid "Video On"
+msgstr "Video sees"
+
+msgid "Video Preview"
+msgstr "Video eelvaade"
+
 msgid "Contact Map View"
 msgstr "Kontaktide kaardivaade"
 
@@ -2991,12 +3426,21 @@ msgstr "Alguses vali antud konto (nt. gabble/jabber/mingi_40näidis_2eorg0)"
 msgid "<account-id>"
 msgstr "<konto-id>"
 
+msgid "Show account assistant"
+msgstr "Kontoabilise näitamine"
+
 msgid "- Empathy Accounts"
 msgstr "- Empathy kontod"
 
 msgid "Empathy Accounts"
 msgstr "Empathy kontod"
 
+msgid "Show a particular service"
+msgstr "Kindla teenuse näitamine"
+
+msgid "- Empathy Debugger"
+msgstr "- Empathy siluja"
+
 msgid "Empathy Debugger"
 msgstr "Empathy siluja"
 
@@ -3012,20 +3456,123 @@ msgstr "Lükka tagasi"
 msgid "Answer"
 msgstr "Vasta"
 
+msgid "Answer with video"
+msgstr "Vasta koos videoga"
+
 msgid "Decline"
 msgstr "Lükka tagasi"
 
 msgid "Accept"
 msgstr "Nõustu"
 
-#, c-format
-msgid "Missed call from %s"
-msgstr "Vastamata kõne kasutajalt %s"
+#. translators: the 'Provide' button is displayed in a notification
+#. * bubble when Empathy is asking for an account password; clicking on it
+#. * brings the password popup.
+msgid "Provide"
+msgstr "Sisesta"
 
 #, c-format
 msgid "%s just tried to call you, but you were in another call."
 msgstr "%s proovis sulle helistada ajal, mil Sul oli teine kõne pooleli."
 
+#. Translators: this is an "Info" label. It should be as short
+#. * as possible.
+msgid "i"
+msgstr "i"
+
+msgid "On hold"
+msgstr "Ootel"
+
+msgid "Mute"
+msgstr "Tumm"
+
+msgid "Duration"
+msgstr "Kestus"
+
+#. Translators: 'status - minutes:seconds' the caller has been connected
+#, c-format
+msgid "%s — %d:%02dm"
+msgstr "%s — %d:%02dm"
+
+#, c-format
+msgid "Your current balance is %s."
+msgstr "Konto praegune seis on %s."
+
+msgid "Sorry, you don’t have enough credit for that call."
+msgstr "Kahjuks pole selle kõne jaoks piisavalt krediiti."
+
+msgid "Top Up"
+msgstr "Lae kontot"
+
+msgid "_Match case"
+msgstr "_Tõstutundlik"
+
+#~ msgid "Empathy has migrated butterfly logs"
+#~ msgstr "Empathy on üle kandnud butterfly logid"
+
+#~ msgid "Whether Empathy has migrated butterfly logs."
+#~ msgstr "Kas Empathy on üle kandnud butterfly logid."
+
+#~ msgid "All"
+#~ msgstr "Kõik"
+
+#~ msgid "_Enabled"
+#~ msgstr "_Lubatud"
+
+#~ msgid "Ungrouped"
+#~ msgstr "Grupeerimata"
+
+#~ msgid "Favorite People"
+#~ msgstr "Lemmikud"
+
+#~ msgid "Select a contact"
+#~ msgstr "Vali kontakt"
+
+#~ msgid "Date"
+#~ msgstr "Kuupäev"
+
+#~ msgid "Conversations"
+#~ msgstr "Vestlused"
+
+#~ msgid "Find Next"
+#~ msgstr "Otsi järgmine"
+
+#~ msgid "Find Previous"
+#~ msgstr "Otsi eelmine"
+
+#~ msgid "Previous Conversations"
+#~ msgstr "Eelmised vestlused"
+
+#~ msgid "_For:"
+#~ msgstr "_Otsing:"
+
+#~ msgid "Contact ID:"
+#~ msgstr "Kontakti ID:"
+
+#~ msgid "C_hat"
+#~ msgstr "_Vestle"
+
+#~ msgid "C_all"
+#~ msgstr "_Helista"
+
+#~ msgid "Set your presence and current status"
+#~ msgstr "Kohalolu ja praeguse oleku määramine"
+
+#~ msgid "Enter Custom Message"
+#~ msgstr "Sisesta oma teade"
+
+#~ msgid "Save _New Status Message"
+#~ msgstr "Salvesta _uus olekusõnum"
+
+#~ msgid "Saved Status Messages"
+#~ msgstr "Salvestatud olekuteated"
+
+#~ msgid "The selected contact cannot receive files."
+#~ msgstr "Valitud kontakt pole suuteline faile vastu võtma."
+
+#~ msgid "Show and edit accounts"
+#~ msgstr "Kontode näitamine ja redigeerimine"
+
 #~ msgid "%s is now offline."
 #~ msgstr "%s pole enam ühendatud."
 
index b1b55df919b583478d206fcdf9683f0041d33fe1..2e4e3b3d222b3542b75a9a78cd9606d8558e2c24 100644 (file)
--- a/po/lt.po
+++ b/po/lt.po
@@ -5,14 +5,14 @@
 # Gintautas Miliauskas <gintas@akl.lt>, 2006.
 # Saulius <saulius.shopaga@gmail.com>, 2008, 2009.
 # Žygimantas Beručka <zygis@gnome.org>, 2004-2010, 2010, 2011.
-# Algimantas Margevičius <gymka@mail.ru>, 2011.
+# Algimantas Margevičius <margevicius.algimantas@gmail.com>, 2011.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: empathy\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=empathy&keywords=I18N+L10N&component=General\n"
-"POT-Creation-Date: 2011-10-07 08:13+0000\n"
-"PO-Revision-Date: 2011-10-09 00:16+0300\n"
+"POT-Creation-Date: 2011-11-18 18:12+0000\n"
+"PO-Revision-Date: 2011-11-18 22:41+0300\n"
 "Last-Translator: Aurimas Černius <aurisc4@gmail.com>\n"
 "Language-Team: Lietuvių <>\n"
 "MIME-Version: 1.0\n"
@@ -43,406 +43,398 @@ msgid "Always open a separate chat window for new chats."
 msgstr "Naujiems pokalbiams visada atverti atskirą pokalbio langą."
 
 #: ../data/org.gnome.Empathy.gschema.xml.in.h:2
-msgid "Call volume"
-msgstr "Skambučio garsumas"
-
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:3
-msgid "Call volume, as a percentage."
-msgstr "Skambučio garsumas procentais."
-
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:4
 msgid "Camera device"
 msgstr "Kameros įrenginys"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:5
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:3
 msgid "Camera position"
 msgstr "Kameros padėtis"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:6
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:4
 msgid "Character to add after nickname when using nick completion (tab) in group chat."
 msgstr "Po slapyvardžio pridėtinas simbolis, naudojant slapyvardžio užbaigimą (tab) grupės pokalbiuose."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:7
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:5
 msgid "Chat window theme"
 msgstr "Pokalbio lango tema"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:8
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:6
 msgid "Chat window theme variant"
 msgstr "Pokalbio lango temos variantas"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:9
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:7
 msgid "Comma-separated list of spell checker languages to use (e.g. \"en, fr, nl\")."
 msgstr "Kableliu atskirtų kalbų, kurių rašyba tikrinama, sąrašas (pvz., „lt, en, fr“)."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:10
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:8
 msgid "Compact contact list"
 msgstr "Kompaktiškas adresatų sąrašas"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:11
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:9
 msgid "Connection managers should be used"
 msgstr "Turėtų būti naudojamos ryšių valdyklės"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:12
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:10
 msgid "Contact list sort criterion"
 msgstr "Adresatų sąrašo rikiavimo kriterijus"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:13
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:11
 msgid "D-Bus object path of the last account selected to join a room."
 msgstr "Paskutinės paskyros, pasirinktos prijungti prie kambario, D-Bus objekto kelias."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:14
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:12
 msgid "Default camera device to use in video calls, e.g. /dev/video0."
 msgstr "Numatytasis kameros įrenginys vaizdo skambučiams, pvz. /dev/video0."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:15
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:13
 msgid "Default directory to select an avatar image from"
 msgstr "Numatytasis aplankas, iš kurio pasirinktinas pseudoportreto paveikslėlis"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:16
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:14
 msgid "Disable popup notifications when away"
 msgstr "Išjungti iškylančius pranešimų langus, kai manęs nėra"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:17
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:15
 msgid "Disable sounds when away"
 msgstr "Išjungti garsus, kai manęs nėra"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:18
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:16
 msgid "Display incoming events in the status area"
 msgstr "Rodyti gaunamus įvykius būsenos srityje"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:19
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:17
 msgid "Display incoming events in the status area. If false, present them to the user immediately."
 msgstr "Rodyti gaunamus įvykius būsenos srityje. Jei reikšmė neigiama, pateikti juos naudotojui nedelsiant."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:20
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:18
 msgid "Echo cancellation support"
 msgstr "Aido atšaukimo palaikymas"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:21
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:19
 msgid "Empathy can publish the user's location"
 msgstr "Empathy gali rodyti naudotojo vietovę"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:22
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:20
 msgid "Empathy can use the GPS to guess the location"
 msgstr "Empathy gali naudoti GPS, siekiant atspėti vietovę"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:23
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:21
 msgid "Empathy can use the cellular network to guess the location"
 msgstr "Empathy naudoti mobiliojo ryšio tinklą, siekiant atspėti vietovę"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:24
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:22
 msgid "Empathy can use the network to guess the location"
 msgstr "Empathy gali naudoti tinklą, siekiant atspėti vietovę"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:25
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:23
 msgid "Empathy default download folder"
 msgstr "Numatytasis Empathy atsiuntimo aplankas"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:26
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:24
 msgid "Empathy should auto-away when idle"
 msgstr "Nenaudojant Empathy, turėtų būti nustatoma nebuvimo būsena"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:27
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:25
 msgid "Empathy should auto-connect on startup"
 msgstr "Paleidus Empathy, ji turėtų automatiškai prisijungti"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:28
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:26
 msgid "Empathy should reduce the location's accuracy"
 msgstr "Empathy turėtų sumažinti vietovės tikslumą"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:29
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:27
 msgid "Empathy should use the avatar of the contact as the chat window icon"
 msgstr "Empathy turėtų naudoti adresato pseudoportretą pokalbio lango piktogramai"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:30
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:28
 msgid "Enable WebKit Developer Tools"
 msgstr "Įjungti WebKit programuotojų įrankius"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:31
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:29
 msgid "Enable popup notifications for new messages"
 msgstr "Įjungti iškylančius pranešimus apie naujas žinutes"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:32
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:30
 msgid "Enable spell checker"
 msgstr "Įjungti rašybos tikrinimą"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:33
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:31
 msgid "Hide main window"
 msgstr "Paslėpti pagrindinį langą"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:34
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:32
 msgid "Hide the main window."
 msgstr "Paslėpti pagrindinį langą."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:35
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:33
 msgid "Last account selected in Join Room dialog"
 msgstr "Paskutinė paskyra, pasirinkta prisijungimo prie kambario dialoge"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:36
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:34
 msgid "Nick completed character"
 msgstr "Slapyvardžio užbaigimo simbolis"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:37
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:35
 msgid "Open new chats in separate windows"
 msgstr "Atverti naujus pokalbius atskiruose languose"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:38
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:36
 msgid "Path of the Adium theme to use"
 msgstr "Naudotinos Adium temos kelias"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:39
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:37
 msgid "Path of the Adium theme to use if the theme used for chat is Adium."
 msgstr "Naudotinos Adium temos kelias, jei pokalbiui naudojama tema yra Adium."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:40
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:38
 msgid "Play a sound for incoming messages"
 msgstr "Gavus žinutę sugroti garsą"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:41
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:39
 msgid "Play a sound for new conversations"
 msgstr "Pradedant naują pokalbį sugroti garsą"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:42
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:40
 msgid "Play a sound for outgoing messages"
 msgstr "Išsiunčiant žinutes sugroti garsą"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:43
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:41
 msgid "Play a sound when a contact logs in"
 msgstr "Prisijungus adresatui sugroti garsą"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:44
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:42
 msgid "Play a sound when a contact logs out"
 msgstr "Atsijungus adresatui sugroti garsą"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:45
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:43
 msgid "Play a sound when we log in"
 msgstr "Jums prisijungus sugroti garsą"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:46
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:44
 msgid "Play a sound when we log out"
 msgstr "Jums atsijungus sugroti garsą"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:47
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:45
 msgid "Pop up notifications if the chat isn't focused"
 msgstr "Rodyti iškylančius pranešimus, jei pokalbio langas nesuaktyvintas"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:48
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:46
 msgid "Pop up notifications when a contact logs in"
 msgstr "Rodyti iškylančius pranešimus, kai adresatas prisijungia"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:49
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:47
 msgid "Pop up notifications when a contact logs out"
 msgstr "Rodyti iškylančius pranešimus, kai adresatas atsijungia"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:50
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:48
 msgid "Position the camera preview should be during a call."
 msgstr "Kameros peržiūros padėtis skambučio metu."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:51
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:49
 msgid "Show Balance in contact list"
 msgstr "Rodyti balansą adresatų sąraše"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:52
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:50
 msgid "Show avatars"
 msgstr "Rodyti pseudoportretus"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:53
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:51
 msgid "Show contact list in rooms"
 msgstr "Rodyti adresatų sąrašą kambariuose"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:54
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:52
 msgid "Show hint about closing the main window"
 msgstr "Perspėti apie pagrindinio lango užvėrimą"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:55
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:53
 msgid "Show offline contacts"
 msgstr "Rodyti atsijungusius adresatus"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:56
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:54
 msgid "Show protocols"
 msgstr "Rodyti protokolus"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:57
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:55
 msgid "Spell checking languages"
 msgstr "Kalbos, kurių rašyba tikrinama"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:58
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:56
 msgid "The default folder to save file transfers in."
 msgstr "Numatytasis aplankas, kuriame įrašomi atsiųsti failai."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:59
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:57
 msgid "The last directory that an avatar image was chosen from."
 msgstr "Aplankas, kuriame praeitą kartą buvo pasirinktas pseudoportretas."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:60
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:58
 msgid "The position for the chat window side pane"
 msgstr "Pokalbių lango šoninio polangio padėtis"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:61
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:59
 msgid "The stored position (in pixels) of the chat window side pane."
 msgstr "Įrašyta pokalbio lango šoninio polangio padėtis (pikseliais)."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:62
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:60
 msgid "The theme that is used to display the conversation in chat windows."
 msgstr "Tema, naudojama pokalbio rodymui pokalbių languose."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:63
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:61
 msgid "The theme variant that is used to display the conversation in chat windows."
 msgstr "Temos variantas, naudojamas pokalbio rodymui pokalbių languose."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:64
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:62
 msgid "Use graphical smileys"
 msgstr "Naudoti grafines šypsenėles"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:65
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:63
 msgid "Use notification sounds"
 msgstr "Naudoti pranešimų garsus"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:66
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:64
 msgid "Use theme for chat rooms"
 msgstr "Naudoti temą pokalbių kambariams"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:67
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:65
 msgid "Whether Empathy can publish the user's location to their contacts."
 msgstr "Ar Empathy gali rodyti naudotojo vietovę jo adresatams."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:68
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:66
 msgid "Whether Empathy can use the GPS to guess the location."
 msgstr "Ar Empathy gali naudoti GPS vietovės spėjimui."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:69
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:67
 msgid "Whether Empathy can use the cellular network to guess the location."
 msgstr "Ar Empathy gali naudoti mobiliojo ryšio tinklą vietovės spėjimui."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:70
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:68
 msgid "Whether Empathy can use the network to guess the location."
 msgstr "Ar Empathy gali naudoti tinklą vietovės spėjimui."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:71
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:69
 msgid "Whether Empathy should automatically log into your accounts on startup."
 msgstr "Ar Empathy turėtų automatiškai prisijungti prie paskyrų ją paleidus."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:72
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:70
 msgid "Whether Empathy should go into away mode automatically if the user is idle."
 msgstr "Ar Empathy turėtų automatiškai nustatyti nebuvimo būseną, jeigu naudotojas nesinaudoja kompiuteriu."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:73
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:71
 msgid "Whether Empathy should reduce the location's accuracy for privacy reasons."
 msgstr "Ar Empathy turėtų sumažinti vietovės rodymo tikslumą privatumo sumetimais."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:74
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:72
 msgid "Whether Empathy should use the avatar of the contact as the chat window icon."
 msgstr "Ar naudoti adresato pseudoportretą kaip pokalbio lango piktogramą."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:75
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:73
 msgid "Whether WebKit developer tools, such as the Web Inspector, should be enabled."
 msgstr "Ar turėtų būti įjungti WebKit programuotojų įrankiai, pvz., Web Inspector."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:76
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:74
 msgid "Whether connectivity managers should be used to automatically disconnect/reconnect."
 msgstr "Ar turėtų būti naudojamos ryšių valdyklės automatiniam atsijungimui / prisijungimui iš naujo."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:77
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:75
 msgid "Whether to check words typed against the languages you want to check with."
 msgstr "Ar tikrinti įvedamų žodžių rašybą pasirenkant jūsų pageidaujamas kalbas."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:78
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:76
 msgid "Whether to convert smileys into graphical images in conversations."
 msgstr "Ar pokalbiuose versti šypsenėles į grafinius paveikslėlius."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:79
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:77
 msgid "Whether to enable Pulseaudio's echo cancellation filter."
 msgstr "Ar įjungti Pulseaudio aido atšaukimo filtrą."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:80
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:78
 msgid "Whether to play a sound to notify of contacts logging into the network."
 msgstr "Ar sugroti garsą adresatams prisijungiant prie tinklo."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:81
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:79
 msgid "Whether to play a sound to notify of contacts logging out of the network."
 msgstr "Ar sugroti garsą adresatams atsijungiant nuo tinklo."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:82
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:80
 msgid "Whether to play a sound to notify of events."
 msgstr "Ar sugroti garsą pranešant apie įvykius."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:83
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:81
 msgid "Whether to play a sound to notify of incoming messages."
 msgstr "Ar sugroti garsą, kai atsiunčiama nauja žinutė."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:84
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:82
 msgid "Whether to play a sound to notify of new conversations."
 msgstr "Ar sugroti garsą pranešant apie naują pokalbį."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:85
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:83
 msgid "Whether to play a sound to notify of outgoing messages."
 msgstr "Ar sugroti garsą, kai išsiunčiama žinutė."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:86
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:84
 msgid "Whether to play a sound when logging into a network."
 msgstr "Ar groti garsą prisijungiant prie tinklo."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:87
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:85
 msgid "Whether to play a sound when logging out of a network."
 msgstr "Ar groti garsą atsijungiant nuo tinklo."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:88
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:86
 msgid "Whether to play sound notifications when away or busy."
 msgstr "Ar groti garsinius pranešimus, kai esate pasitraukę ar užsiėmę."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:89
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:87
 msgid "Whether to show a popup notification when a contact goes offline."
 msgstr "Ar rodyti iškeliamą pranešimą, kai adresatas atsijungia."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:90
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:88
 msgid "Whether to show a popup notification when a contact goes online."
 msgstr "Ar rodyti iškeliamą pranešimą, kai adresatas prisijungia."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:91
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:89
 msgid "Whether to show a popup notification when receiving a new message even if the chat is already opened, but not focused."
 msgstr "Ar rodyti iškylantį pranešimo langą, kai gaunama nauja žinutė, net jei pokalbio langas yra jau atvertas, tačiau nesuaktyvintas."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:92
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:90
 msgid "Whether to show a popup notification when receiving a new message."
 msgstr "Ar rodyti iškylantį pranešimą gavus naują žinutę."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:93
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:91
 msgid "Whether to show account balances in the contact list."
 msgstr "Ar rodyti adresatų sąraše paskyrų balansus."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:94
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:92
 msgid "Whether to show avatars for contacts in the contact list and chat windows."
 msgstr "Ar rodyti adresatų sąraše ir pokalbių languose pseudoportretus."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:95
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:93
 msgid "Whether to show contacts that are offline in the contact list."
 msgstr "Ar adresatų sąraše rodyti adresatus, kurie yra atsijungę."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:96
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:94
 msgid "Whether to show popup notifications when away or busy."
 msgstr "Ar rodyti iškylančius pranešimus, kai esate pasitraukę ar užsiėmę."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:97
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:95
 msgid "Whether to show protocols for contacts in the contact list."
 msgstr "Ar rodyti adresatų sąraše adresatų protokolus."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:98
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:96
 msgid "Whether to show the contact list in chat rooms."
 msgstr "Ar rodyti adresatų sąrašą pokalbių kambariuose."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:99
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:97
 msgid "Whether to show the contact list in compact mode."
 msgstr "Ar rodyti glaustą adresatų sąrašą."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:100
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:98
 msgid "Whether to show the message dialog about closing the main window with the 'x' button in the title bar."
 msgstr "Ar rodyti pranešimo apie pagrindinio lango uždarymą dialogą su mygtuku „x“ antraštės juostoje."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:101
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:99
 msgid "Whether to use the theme for chat rooms."
 msgstr "Ar naudoti temą pokalbių kambariams."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:102
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:100
 msgid "Which criterion to use when sorting the contact list. Default is to sort by the contact's name with the value \"name\". A value of \"state\" will sort the contact list by state."
 msgstr "Pagal kurį kriterijų rikiuoti adresatų sąrašą. Numatytasis yra adresato vardas (reikšmė „name“). Reikšmė „state“ rikiuoja adresatų sąrašą pagal būseną."
 
@@ -452,7 +444,7 @@ msgstr "Tvarkyti pokalbių ir VoIP paskyras"
 
 #. Tweak the dialog
 #: ../data/empathy-accounts.desktop.in.in.h:2
-#: ../src/empathy-accounts-dialog.c:2324
+#: ../src/empathy-accounts-dialog.c:2312
 msgid "Messaging and VoIP Accounts"
 msgstr "Pokalbių ir VoIP paskyros"
 
@@ -560,6 +552,7 @@ msgstr "Būsena nustatyta į „atsijungta“"
 #: ../libempathy/empathy-utils.c:288
 #: ../libempathy/empathy-utils.c:322
 #: ../libempathy-gtk/empathy-call-utils.c:49
+#: ../libempathy-gtk/empathy-new-message-dialog.c:82
 msgid "Network error"
 msgstr "Tinklo klaida"
 
@@ -664,20 +657,23 @@ msgstr "Liudijimas naudoja nesaugų šifravimo algoritmą arba yra kriptografiš
 msgid "The length of the server certificate, or the depth of the server certificate chain, exceed the limits imposed by the cryptography library"
 msgstr "Serverio liudijimo ilgis, arba serverio liudijimų sekos gylis, viršija kriptografijos bibliotekos numatytas ribas"
 
-#: ../libempathy/empathy-utils.c:529
-#: ../libempathy-gtk/empathy-contact-list-store.h:73
+#: ../libempathy/empathy-utils.c:372
+msgid "Your software is too old"
+msgstr "Jūsų programinė įranga per sena"
+
+#: ../libempathy/empathy-utils.c:531
 msgid "People Nearby"
 msgstr "Žmonės netoliese"
 
-#: ../libempathy/empathy-utils.c:534
+#: ../libempathy/empathy-utils.c:536
 msgid "Yahoo! Japan"
 msgstr "Yahoo! Japan"
 
-#: ../libempathy/empathy-utils.c:563
+#: ../libempathy/empathy-utils.c:565
 msgid "Google Talk"
 msgstr "Google Talk"
 
-#: ../libempathy/empathy-utils.c:564
+#: ../libempathy/empathy-utils.c:566
 msgid "Facebook Chat"
 msgstr "Facebook pokalbis"
 
@@ -733,7 +729,7 @@ msgstr[2] "prieš %d mėnesių"
 msgid "in the future"
 msgstr "ateityje"
 
-#: ../libempathy-gtk/empathy-account-chooser.c:540
+#: ../libempathy-gtk/empathy-account-chooser.c:688
 msgid "All accounts"
 msgstr "Visos paskyros"
 
@@ -756,58 +752,58 @@ msgstr "Serveris"
 msgid "Port"
 msgstr "Prievadas"
 
-#: ../libempathy-gtk/empathy-account-widget.c:769
-#: ../libempathy-gtk/empathy-account-widget.c:826
+#: ../libempathy-gtk/empathy-account-widget.c:776
+#: ../libempathy-gtk/empathy-account-widget.c:828
 #, c-format
 msgid "%s:"
 msgstr "%s:"
 
-#: ../libempathy-gtk/empathy-account-widget.c:1192
+#: ../libempathy-gtk/empathy-account-widget.c:1182
 msgid "My Web Accounts"
 msgstr "Mano internetinės paskyros"
 
-#: ../libempathy-gtk/empathy-account-widget.c:1209
+#: ../libempathy-gtk/empathy-account-widget.c:1199
 #, c-format
 msgid "The account %s is edited via %s."
 msgstr "Paskyra %s taisoma naudojantis %s."
 
-#: ../libempathy-gtk/empathy-account-widget.c:1215
+#: ../libempathy-gtk/empathy-account-widget.c:1205
 #, c-format
 msgid "The account %s cannot be edited in Empathy."
 msgstr "Paskyros %s Empathy programoje taisyti negalima."
 
-#: ../libempathy-gtk/empathy-account-widget.c:1234
+#: ../libempathy-gtk/empathy-account-widget.c:1224
 msgid "Launch My Web Accounts"
 msgstr "Paleisti mano žiniatinklio paskyras"
 
 #. general handler
-#: ../libempathy-gtk/empathy-account-widget.c:1242
+#: ../libempathy-gtk/empathy-account-widget.c:1232
 #, c-format
 msgid "Edit %s"
 msgstr "Taisyti %s"
 
-#: ../libempathy-gtk/empathy-account-widget.c:1592
+#: ../libempathy-gtk/empathy-account-widget.c:1582
 #: ../libempathy-gtk/empathy-account-widget-irc.ui.h:11
 msgid "Username:"
 msgstr "Naudotojo vardas:"
 
-#: ../libempathy-gtk/empathy-account-widget.c:1910
+#: ../libempathy-gtk/empathy-account-widget.c:1900
 msgid "A_pply"
 msgstr "_Pritaikyti"
 
-#: ../libempathy-gtk/empathy-account-widget.c:1940
+#: ../libempathy-gtk/empathy-account-widget.c:1930
 msgid "L_og in"
 msgstr "_Prisijungti"
 
-#: ../libempathy-gtk/empathy-account-widget.c:2014
+#: ../libempathy-gtk/empathy-account-widget.c:2004
 msgid "This account already exists on the server"
 msgstr "Ši paskyra jau yra serveryje"
 
-#: ../libempathy-gtk/empathy-account-widget.c:2017
+#: ../libempathy-gtk/empathy-account-widget.c:2007
 msgid "Create a new account on the server"
 msgstr "Sukurti naują paskyrą serveryje"
 
-#: ../libempathy-gtk/empathy-account-widget.c:2209
+#: ../libempathy-gtk/empathy-account-widget.c:2199
 msgid "Ca_ncel"
 msgstr "_Atšaukti"
 
@@ -816,19 +812,19 @@ msgstr "_Atšaukti"
 #. * like: "MyUserName on freenode".
 #. * You should reverse the order of these arguments if the
 #. * server should come before the login id in your locale.
-#: ../libempathy-gtk/empathy-account-widget.c:2487
+#: ../libempathy-gtk/empathy-account-widget.c:2477
 #, c-format
 msgid "%1$s on %2$s"
 msgstr "%1$s serveryje %2$s"
 
 #. To translators: The parameter is the protocol name. The resulting
 #. * string will be something like: "Jabber Account"
-#: ../libempathy-gtk/empathy-account-widget.c:2513
+#: ../libempathy-gtk/empathy-account-widget.c:2503
 #, c-format
 msgid "%s Account"
 msgstr "%s paskyra"
 
-#: ../libempathy-gtk/empathy-account-widget.c:2517
+#: ../libempathy-gtk/empathy-account-widget.c:2507
 msgid "New account"
 msgstr "Nauja paskyra"
 
@@ -1195,7 +1191,7 @@ msgid "STUN Server:"
 msgstr "STUN serveris:"
 
 #: ../libempathy-gtk/empathy-account-widget-sip.ui.h:19
-#: ../libempathy-gtk/empathy-contact-widget.c:347
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:114
 msgid "Server:"
 msgstr "Serveris:"
 
@@ -1277,7 +1273,7 @@ msgid "Click to enlarge"
 msgstr "Norėdami padidinti, spustelėkite"
 
 #: ../libempathy-gtk/empathy-call-utils.c:44
-#: ../libempathy-gtk/empathy-call-utils.c:60
+#: ../libempathy-gtk/empathy-call-utils.c:62
 msgid "There was an error starting the call"
 msgstr "Kilo klaida pradedant skambutį"
 
@@ -1297,179 +1293,192 @@ msgstr "Nurodytas adresatas yra neteisingas"
 msgid "Emergency calls are not supported on this protocol"
 msgstr "Kritiniai skambučiai šiuo protokolu nepalaikomi"
 
-#: ../libempathy-gtk/empathy-chat.c:704
+#: ../libempathy-gtk/empathy-call-utils.c:59
+msgid "You don't have enough credit in order to place this call"
+msgstr "Nepakanka kreditų pradėti šiam pokalbiui"
+
+#: ../libempathy-gtk/empathy-chat.c:706
 msgid "Failed to open private chat"
 msgstr "Nepavyko atverti privataus pokalbio"
 
-#: ../libempathy-gtk/empathy-chat.c:765
+#: ../libempathy-gtk/empathy-chat.c:764
 msgid "Topic not supported on this conversation"
 msgstr "Šiame pokalbyje tema yra nepalaikoma"
 
-#: ../libempathy-gtk/empathy-chat.c:771
+#: ../libempathy-gtk/empathy-chat.c:770
 msgid "You are not allowed to change the topic"
 msgstr "Jums neleidžiama pakeisti temos"
 
-#: ../libempathy-gtk/empathy-chat.c:975
+#: ../libempathy-gtk/empathy-chat.c:971
 #, c-format
 msgid "“%s” is not a valid contact ID"
 msgstr "„%s“ yra netinkamas adresato ID"
 
-#: ../libempathy-gtk/empathy-chat.c:1070
+#: ../libempathy-gtk/empathy-chat.c:1066
 msgid "/clear: clear all messages from the current conversation"
 msgstr "/clear: ištrinti visus dabartinio pokalbio pranešimus"
 
-#: ../libempathy-gtk/empathy-chat.c:1073
+#: ../libempathy-gtk/empathy-chat.c:1069
 msgid "/topic <topic>: set the topic of the current conversation"
 msgstr "/topic <topic>: nustatyti dabartinio pokalbio temą"
 
-#: ../libempathy-gtk/empathy-chat.c:1076
+#: ../libempathy-gtk/empathy-chat.c:1072
 msgid "/join <chat room ID>: join a new chat room"
 msgstr "/join <pokalbių kambario ID>: prisijungti prie naujo pokalbių kambario"
 
-#: ../libempathy-gtk/empathy-chat.c:1079
+#: ../libempathy-gtk/empathy-chat.c:1075
 msgid "/j <chat room ID>: join a new chat room"
 msgstr "/j <pokalbių kambario ID>: prisijungti prie naujo pokalbių kambario"
 
-#: ../libempathy-gtk/empathy-chat.c:1083
+#: ../libempathy-gtk/empathy-chat.c:1079
 msgid "/part [<chat room ID>] [<reason>]: leave the chat room, by default the current one"
 msgstr "/part [<pokalbių kambario ID>] [<priežastis>]: išeiti iš pokalbių kambario; dabartinio, jei nenurodyta kitaip"
 
-#: ../libempathy-gtk/empathy-chat.c:1087
+#: ../libempathy-gtk/empathy-chat.c:1083
 msgid "/query <contact ID> [<message>]: open a private chat"
 msgstr "/query <adresato ID> [<žinutė>]: atverti privatų pokalbį"
 
-#: ../libempathy-gtk/empathy-chat.c:1090
+#: ../libempathy-gtk/empathy-chat.c:1086
 msgid "/msg <contact ID> <message>: open a private chat"
 msgstr "/msg <adresato ID> <žinutė>: atverti privatų pokalbį"
 
-#: ../libempathy-gtk/empathy-chat.c:1093
+#: ../libempathy-gtk/empathy-chat.c:1089
 msgid "/nick <nickname>: change your nickname on the current server"
 msgstr "/nick <slapyvardis>: keisti savo slapyvardį dabartiniame serveryje"
 
-#: ../libempathy-gtk/empathy-chat.c:1096
+#: ../libempathy-gtk/empathy-chat.c:1092
 msgid "/me <message>: send an ACTION message to the current conversation"
 msgstr "/me <žinutė>: siųsti dabartiniam pokalbiui žinutę ACTION"
 
-#: ../libempathy-gtk/empathy-chat.c:1099
+#: ../libempathy-gtk/empathy-chat.c:1095
 msgid "/say <message>: send <message> to the current conversation. This is used to send a message starting with a '/'. For example: \"/say /join is used to join a new chat room\""
 msgstr "/say <žinutė>: siųsti dabartiniam pokalbiui <žinutę>. Tai naudojama norint siųsti žinutę, prasidedančia simboliu „/“. Pavyzdžiui: „/say /join naudojama norint prisijungti prie naujo pokalbių kambario“"
 
-#: ../libempathy-gtk/empathy-chat.c:1104
+#: ../libempathy-gtk/empathy-chat.c:1100
 msgid "/whois <contact ID>: display information about a contact"
 msgstr "/whois <adresato ID>: parodo informaciją apie adresatą"
 
-#: ../libempathy-gtk/empathy-chat.c:1107
+#: ../libempathy-gtk/empathy-chat.c:1103
 msgid "/help [<command>]: show all supported commands. If <command> is defined, show its usage."
 msgstr "/help [<komanda>]: rodyti visas palaikomas komandas. Jei <komanda> apibrėžta, rodyti, kaip ją naudoti."
 
-#: ../libempathy-gtk/empathy-chat.c:1126
+#: ../libempathy-gtk/empathy-chat.c:1122
 #, c-format
 msgid "Usage: %s"
 msgstr "Naudojimas: %s"
 
-#: ../libempathy-gtk/empathy-chat.c:1171
+#: ../libempathy-gtk/empathy-chat.c:1167
 msgid "Unknown command"
 msgstr "Nežinoma komanda"
 
-#: ../libempathy-gtk/empathy-chat.c:1297
+#: ../libempathy-gtk/empathy-chat.c:1293
 msgid "Unknown command; see /help for the available commands"
 msgstr "Nežinoma komanda. Galimas komandas galite pamatyti įvykdę komandą /help"
 
-#. translators: error used when user doesn't have enough credit on his
-#. * account to send the message.
-#: ../libempathy-gtk/empathy-chat.c:1467
+#: ../libempathy-gtk/empathy-chat.c:1457
 msgid "insufficient balance to send message"
 msgstr "nepakankamas balansas žinutės siuntimui"
 
+#: ../libempathy-gtk/empathy-chat.c:1461
+#: ../libempathy-gtk/empathy-chat.c:1475
+#: ../libempathy-gtk/empathy-chat.c:1538
+#, c-format
+msgid "Error sending message '%s': %s"
+msgstr "Klaida siunčiant žinutę „%s“: %s"
+
+#: ../libempathy-gtk/empathy-chat.c:1463
+#: ../libempathy-gtk/empathy-chat.c:1480
+#: ../libempathy-gtk/empathy-chat.c:1542
+#, c-format
+msgid "Error sending message: %s"
+msgstr "Klaida siunčiant žinutę: %s"
+
+#. translators: error used when user doesn't have enough credit on his
+#. * account to send the message.
 #: ../libempathy-gtk/empathy-chat.c:1469
+#, c-format
+msgid "insufficient balance to send message. <a href='%s'>Top up</a>."
+msgstr "nepakankamas balansas žinutės siuntimui. <a href='%s'>Pakelti</a>."
+
+#: ../libempathy-gtk/empathy-chat.c:1509
 msgid "not capable"
 msgstr "nepalaiko"
 
-#: ../libempathy-gtk/empathy-chat.c:1476
+#: ../libempathy-gtk/empathy-chat.c:1516
 msgid "offline"
 msgstr "atsijungęs"
 
-#: ../libempathy-gtk/empathy-chat.c:1479
+#: ../libempathy-gtk/empathy-chat.c:1519
 msgid "invalid contact"
 msgstr "netinkamas adresatas"
 
-#: ../libempathy-gtk/empathy-chat.c:1482
+#: ../libempathy-gtk/empathy-chat.c:1522
 msgid "permission denied"
 msgstr "prieiga uždrausta"
 
-#: ../libempathy-gtk/empathy-chat.c:1485
+#: ../libempathy-gtk/empathy-chat.c:1525
 msgid "too long message"
 msgstr "per ilga žinutė"
 
-#: ../libempathy-gtk/empathy-chat.c:1488
+#: ../libempathy-gtk/empathy-chat.c:1528
 msgid "not implemented"
 msgstr "ši funkcija dar nerealizuota"
 
-#: ../libempathy-gtk/empathy-chat.c:1492
+#: ../libempathy-gtk/empathy-chat.c:1532
 msgid "unknown"
 msgstr "nežinoma"
 
-#: ../libempathy-gtk/empathy-chat.c:1498
-#, c-format
-msgid "Error sending message '%s': %s"
-msgstr "Klaida siunčiant žinutę „%s“: %s"
-
-#: ../libempathy-gtk/empathy-chat.c:1502
-#, c-format
-msgid "Error sending message: %s"
-msgstr "Klaida siunčiant žinutę: %s"
-
-#: ../libempathy-gtk/empathy-chat.c:1563
+#: ../libempathy-gtk/empathy-chat.c:1599
 #: ../src/empathy-chat-window.c:761
 msgid "Topic:"
 msgstr "Tema:"
 
-#: ../libempathy-gtk/empathy-chat.c:1575
+#: ../libempathy-gtk/empathy-chat.c:1611
 #, c-format
 msgid "Topic set to: %s"
 msgstr "Tema nustatyta į: %s"
 
-#: ../libempathy-gtk/empathy-chat.c:1577
+#: ../libempathy-gtk/empathy-chat.c:1613
 msgid "No topic defined"
 msgstr "Nenurodyta jokia tema"
 
-#: ../libempathy-gtk/empathy-chat.c:2086
+#: ../libempathy-gtk/empathy-chat.c:2126
 msgid "(No Suggestions)"
 msgstr "(Nėra pasiūlymų)"
 
 #. translators: %s is the selected word
-#: ../libempathy-gtk/empathy-chat.c:2154
+#: ../libempathy-gtk/empathy-chat.c:2194
 #, c-format
 msgid "Add '%s' to Dictionary"
 msgstr "Įtraukti „%s“ į žodyną"
 
 #. translators: first %s is the selected word,
 #. * second %s is the language name of the target dictionary
-#: ../libempathy-gtk/empathy-chat.c:2191
+#: ../libempathy-gtk/empathy-chat.c:2231
 #, c-format
 msgid "Add '%s' to %s Dictionary"
 msgstr "Įtraukti „%s“ į %s žodyną"
 
-#: ../libempathy-gtk/empathy-chat.c:2261
+#: ../libempathy-gtk/empathy-chat.c:2301
 msgid "Insert Smiley"
 msgstr "Įterpti šypsenėlę"
 
 #. send button
-#: ../libempathy-gtk/empathy-chat.c:2279
-#: ../libempathy-gtk/empathy-ui-utils.c:1840
+#: ../libempathy-gtk/empathy-chat.c:2319
+#: ../libempathy-gtk/empathy-ui-utils.c:1867
 msgid "_Send"
 msgstr "_Siųsti"
 
 #. Spelling suggestions
-#: ../libempathy-gtk/empathy-chat.c:2333
+#: ../libempathy-gtk/empathy-chat.c:2376
 msgid "_Spelling Suggestions"
 msgstr "_Rašybos pasiūlymai"
 
-#: ../libempathy-gtk/empathy-chat.c:2422
+#: ../libempathy-gtk/empathy-chat.c:2465
 msgid "Failed to retrieve recent logs"
 msgstr "Nepavyko gauti naujausių žurnalų"
 
-#: ../libempathy-gtk/empathy-chat.c:2559
+#: ../libempathy-gtk/empathy-chat.c:2602
 #, c-format
 msgid "%s has disconnected"
 msgstr "%s atsijungė"
@@ -1477,12 +1486,12 @@ msgstr "%s atsijungė"
 #. translators: reverse the order of these arguments
 #. * if the kicked should come before the kicker in your locale.
 #.
-#: ../libempathy-gtk/empathy-chat.c:2566
+#: ../libempathy-gtk/empathy-chat.c:2609
 #, c-format
 msgid "%1$s was kicked by %2$s"
 msgstr "%2$s išspyrė naudotoją %1$s"
 
-#: ../libempathy-gtk/empathy-chat.c:2569
+#: ../libempathy-gtk/empathy-chat.c:2612
 #, c-format
 msgid "%s was kicked"
 msgstr "%s buvo išspirtas"
@@ -1490,17 +1499,17 @@ msgstr "%s buvo išspirtas"
 #. translators: reverse the order of these arguments
 #. * if the banned should come before the banner in your locale.
 #.
-#: ../libempathy-gtk/empathy-chat.c:2577
+#: ../libempathy-gtk/empathy-chat.c:2620
 #, c-format
 msgid "%1$s was banned by %2$s"
 msgstr "%2$s užblokavo naudotoją %1$s"
 
-#: ../libempathy-gtk/empathy-chat.c:2580
+#: ../libempathy-gtk/empathy-chat.c:2623
 #, c-format
 msgid "%s was banned"
 msgstr "%s buvo užblokuotas"
 
-#: ../libempathy-gtk/empathy-chat.c:2584
+#: ../libempathy-gtk/empathy-chat.c:2627
 #, c-format
 msgid "%s has left the room"
 msgstr "%s paliko pokalbių kambarį"
@@ -1510,17 +1519,17 @@ msgstr "%s paliko pokalbių kambarį"
 #. * given by the user living the room. If this poses a problem,
 #. * please let us know. :-)
 #.
-#: ../libempathy-gtk/empathy-chat.c:2593
+#: ../libempathy-gtk/empathy-chat.c:2636
 #, c-format
 msgid " (%s)"
 msgstr " (%s)"
 
-#: ../libempathy-gtk/empathy-chat.c:2618
+#: ../libempathy-gtk/empathy-chat.c:2661
 #, c-format
 msgid "%s has joined the room"
 msgstr "%s prisijungė prie pokalbių kambario"
 
-#: ../libempathy-gtk/empathy-chat.c:2643
+#: ../libempathy-gtk/empathy-chat.c:2686
 #, c-format
 msgid "%s is now known as %s"
 msgstr "%s dabar žinomas (-a) kaip %s"
@@ -1528,91 +1537,90 @@ msgstr "%s dabar žinomas (-a) kaip %s"
 #. We don't know if the incoming call has been accepted or not, so we
 #. * assume it hasn't and if it has, we'll set the proper status when
 #. * we get the new handler.
-#: ../libempathy-gtk/empathy-chat.c:2796
-#: ../src/empathy-streamed-media-window.c:1894
+#: ../libempathy-gtk/empathy-chat.c:2839
+#: ../src/empathy-streamed-media-window.c:1886
 #: ../src/empathy-event-manager.c:1260
-#: ../src/empathy-call-window.c:1546
-#: ../src/empathy-call-window.c:1596
-#: ../src/empathy-call-window.c:2641
+#: ../src/empathy-call-window.c:1538
+#: ../src/empathy-call-window.c:1588
+#: ../src/empathy-call-window.c:2627
 msgid "Disconnected"
 msgstr "Atsijungęs (-usi)"
 
 #. Add message
-#: ../libempathy-gtk/empathy-chat.c:3440
+#: ../libempathy-gtk/empathy-chat.c:3485
 msgid "Would you like to store this password?"
 msgstr "Ar norėtumėte įrašyti šį slaptažodį?"
 
-#: ../libempathy-gtk/empathy-chat.c:3446
+#: ../libempathy-gtk/empathy-chat.c:3491
 msgid "Remember"
 msgstr "Įrašyti"
 
-#: ../libempathy-gtk/empathy-chat.c:3456
+#: ../libempathy-gtk/empathy-chat.c:3501
 msgid "Not now"
 msgstr "Ne dabar"
 
-#: ../libempathy-gtk/empathy-chat.c:3500
+#: ../libempathy-gtk/empathy-chat.c:3545
 msgid "Retry"
 msgstr "Bandyti dar kartą"
 
-#: ../libempathy-gtk/empathy-chat.c:3504
+#: ../libempathy-gtk/empathy-chat.c:3549
 msgid "Wrong password; please try again:"
 msgstr "Neteisingas slaptažodis, bandykite dar kartą:"
 
 #. Add message
-#: ../libempathy-gtk/empathy-chat.c:3634
+#: ../libempathy-gtk/empathy-chat.c:3679
 msgid "This room is protected by a password:"
 msgstr "Šis kambarys yra apsaugotas slaptažodžiu:"
 
-#: ../libempathy-gtk/empathy-chat.c:3661
+#: ../libempathy-gtk/empathy-chat.c:3706
 msgid "Join"
 msgstr "Prisijungti"
 
-#: ../libempathy-gtk/empathy-chat.c:3863
+#: ../libempathy-gtk/empathy-chat.c:3894
 #: ../src/empathy-event-manager.c:1281
 msgid "Connected"
 msgstr "Prisijungęs (-usi)"
 
-#: ../libempathy-gtk/empathy-chat.c:3918
+#: ../libempathy-gtk/empathy-chat.c:3949
 msgid "Conversation"
 msgstr "Pokalbis"
 
 #. Translators: this string is a something like
 #. * "Escher Cat (SMS)"
-#: ../libempathy-gtk/empathy-chat.c:3923
+#: ../libempathy-gtk/empathy-chat.c:3954
 #, c-format
 msgid "%s (SMS)"
 msgstr "%s (SMS)"
 
-#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:424
+#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:265
 msgid "Unknown or invalid identifier"
 msgstr "Nežinomas ar netinkamas identifikatorius"
 
-#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:426
+#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:267
 msgid "Contact blocking temporarily unavailable"
 msgstr "Adresatų blokavimo galimybė laikinai neprieinama"
 
-#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:428
+#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:269
 msgid "Contact blocking unavailable"
 msgstr "Adresatų blokavimas negalimas"
 
-#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:430
+#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:271
 msgid "Permission Denied"
 msgstr "Neleidžiama"
 
-#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:434
+#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:275
 msgid "Could not block contact"
 msgstr "Nepavyko užblokuoti adresato"
 
-#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:774
+#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:622
 msgid "Edit Blocked Contacts"
 msgstr "Taisyti blokuotus adresatus"
 
 #. Account and Identifier
 #: ../libempathy-gtk/empathy-contact-blocking-dialog.ui.h:1
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:512
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:506
 #: ../libempathy-gtk/empathy-contact-widget.ui.h:2
-#: ../libempathy-gtk/empathy-individual-widget.c:1489
-#: ../libempathy-gtk/empathy-contact-selector-dialog.ui.h:1
+#: ../libempathy-gtk/empathy-individual-widget.c:1475
 #: ../src/empathy-chatrooms-window.ui.h:1
 #: ../src/empathy-new-chatroom-dialog.ui.h:1
 msgid "Account:"
@@ -1630,56 +1638,56 @@ msgid "Remove"
 msgstr "Pašalinti"
 
 #. Copy Link Address menu item
-#: ../libempathy-gtk/empathy-chat-text-view.c:320
+#: ../libempathy-gtk/empathy-chat-text-view.c:322
 #: ../libempathy-gtk/empathy-webkit-utils.c:277
 msgid "_Copy Link Address"
 msgstr "_Kopijuoti nuorodos adresą"
 
 #. Open Link menu item
-#: ../libempathy-gtk/empathy-chat-text-view.c:327
+#: ../libempathy-gtk/empathy-chat-text-view.c:329
 #: ../libempathy-gtk/empathy-webkit-utils.c:284
 msgid "_Open Link"
 msgstr "_Atverti nuorodą"
 
 #. Translators: timestamp displayed between conversations in
 #. * chat windows (strftime format string)
-#: ../libempathy-gtk/empathy-chat-text-view.c:415
+#: ../libempathy-gtk/empathy-chat-text-view.c:417
 msgid "%A %B %d %Y"
 msgstr "%Y %B %d (%A)"
 
-#: ../libempathy-gtk/empathy-contact-dialogs.c:299
+#: ../libempathy-gtk/empathy-contact-dialogs.c:287
 #: ../libempathy-gtk/empathy-individual-edit-dialog.c:247
 msgid "Edit Contact Information"
 msgstr "Taisyti adresato informaciją"
 
-#: ../libempathy-gtk/empathy-contact-dialogs.c:350
+#: ../libempathy-gtk/empathy-contact-dialogs.c:338
 msgid "Personal Information"
 msgstr "Asmeninė informacija"
 
-#: ../libempathy-gtk/empathy-contact-dialogs.c:459
+#: ../libempathy-gtk/empathy-contact-dialogs.c:439
 #: ../libempathy-gtk/empathy-individual-dialogs.c:119
 msgid "New Contact"
 msgstr "Naujas adresatas"
 
-#: ../libempathy-gtk/empathy-contact-dialogs.c:533
-#: ../libempathy-gtk/empathy-individual-dialogs.c:200
+#: ../libempathy-gtk/empathy-contact-dialogs.c:508
+#: ../libempathy-gtk/empathy-individual-dialogs.c:198
 #, c-format
 msgid "Block %s?"
 msgstr "Užblokuoti %s?"
 
-#: ../libempathy-gtk/empathy-contact-dialogs.c:538
-#: ../libempathy-gtk/empathy-individual-dialogs.c:255
+#: ../libempathy-gtk/empathy-contact-dialogs.c:513
+#: ../libempathy-gtk/empathy-individual-dialogs.c:253
 #, c-format
 msgid "Are you sure you want to block '%s' from contacting you again?"
 msgstr "Ar tikrai norite „%s“ nebeleisti jūsų matyti?"
 
-#: ../libempathy-gtk/empathy-contact-dialogs.c:543
-#: ../libempathy-gtk/empathy-individual-dialogs.c:277
+#: ../libempathy-gtk/empathy-contact-dialogs.c:518
+#: ../libempathy-gtk/empathy-individual-dialogs.c:275
 msgid "_Block"
 msgstr "_Blokuoti"
 
-#: ../libempathy-gtk/empathy-contact-dialogs.c:559
-#: ../libempathy-gtk/empathy-individual-dialogs.c:286
+#: ../libempathy-gtk/empathy-contact-dialogs.c:536
+#: ../libempathy-gtk/empathy-individual-dialogs.c:284
 msgid "_Report this contact as abusive"
 msgid_plural "_Report these contacts as abusive"
 msgstr[0] "_Pranešti apie šio adresato piktnaudžiavimą"
@@ -1698,349 +1706,360 @@ msgstr "Prenumeratos prašymas"
 msgid "_Block User"
 msgstr "_Blokuoti naudotoją"
 
-#: ../libempathy-gtk/empathy-contact-list-store.h:71
-msgid "Ungrouped"
-msgstr "Nesugrupuota"
-
-#: ../libempathy-gtk/empathy-contact-list-store.h:72
-msgid "Favorite People"
-msgstr "Mėgiami žmonės"
-
-#: ../libempathy-gtk/empathy-contact-list-view.c:1985
-#: ../libempathy-gtk/empathy-individual-view.c:2375
+#: ../libempathy-gtk/empathy-contact-list-view.c:1935
+#: ../libempathy-gtk/empathy-individual-view.c:2397
 #, c-format
 msgid "Do you really want to remove the group '%s'?"
 msgstr "Ar tikrai norite pašalinti grupę „%s“?"
 
-#: ../libempathy-gtk/empathy-contact-list-view.c:1987
-#: ../libempathy-gtk/empathy-individual-view.c:2378
+#: ../libempathy-gtk/empathy-contact-list-view.c:1937
+#: ../libempathy-gtk/empathy-individual-view.c:2400
 msgid "Removing group"
 msgstr "Šalinama grupė"
 
 #. Remove
-#: ../libempathy-gtk/empathy-contact-list-view.c:2036
-#: ../libempathy-gtk/empathy-contact-list-view.c:2113
-#: ../libempathy-gtk/empathy-individual-view.c:2433
-#: ../libempathy-gtk/empathy-individual-view.c:2636
+#: ../libempathy-gtk/empathy-contact-list-view.c:1986
+#: ../libempathy-gtk/empathy-contact-list-view.c:2059
+#: ../libempathy-gtk/empathy-individual-view.c:2455
+#: ../libempathy-gtk/empathy-individual-view.c:2671
 msgid "_Remove"
 msgstr "_Pašalinti"
 
-#: ../libempathy-gtk/empathy-contact-list-view.c:2066
-#: ../libempathy-gtk/empathy-individual-view.c:2500
+#: ../libempathy-gtk/empathy-contact-list-view.c:2015
+#: ../libempathy-gtk/empathy-individual-view.c:2532
 #, c-format
 msgid "Do you really want to remove the contact '%s'?"
 msgstr "Ar tikrai norite pašalinti adresatą „%s“?"
 
-#: ../libempathy-gtk/empathy-contact-list-view.c:2068
-#: ../libempathy-gtk/empathy-individual-view.c:2521
+#: ../libempathy-gtk/empathy-contact-list-view.c:2017
+#: ../libempathy-gtk/empathy-individual-view.c:2553
 msgid "Removing contact"
 msgstr "Šalinamas adresatas"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:220
+#: ../libempathy-gtk/empathy-contact-menu.c:212
 #: ../src/empathy-main-window-menubar.ui.h:14
 msgid "_Add Contact…"
 msgstr "_Pridėti adresatą…"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:300
+#: ../libempathy-gtk/empathy-contact-menu.c:287
 msgid "_Block Contact"
 msgstr "_Blokuoti adresatą"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:329
+#. add chat button
+#: ../libempathy-gtk/empathy-contact-menu.c:316
 #: ../libempathy-gtk/empathy-individual-menu.c:758
+#: ../libempathy-gtk/empathy-new-message-dialog.c:320
 #: ../src/empathy-main-window-menubar.ui.h:16
 msgid "_Chat"
 msgstr "_Pokalbis"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:361
-#: ../libempathy-gtk/empathy-individual-menu.c:849
+#: ../libempathy-gtk/empathy-contact-menu.c:348
+#: ../libempathy-gtk/empathy-individual-menu.c:850
 msgctxt "menu item"
 msgid "_Audio Call"
 msgstr "_Garsinis skambutis"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:394
-#: ../libempathy-gtk/empathy-individual-menu.c:894
+#: ../libempathy-gtk/empathy-contact-menu.c:381
+#: ../libempathy-gtk/empathy-individual-menu.c:895
 msgctxt "menu item"
 msgid "_Video Call"
 msgstr "_Vaizdinis skambutis"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:440
-#: ../libempathy-gtk/empathy-individual-menu.c:947
+#: ../libempathy-gtk/empathy-contact-menu.c:427
+#: ../libempathy-gtk/empathy-individual-menu.c:948
 #: ../src/empathy-main-window-menubar.ui.h:27
 msgid "_Previous Conversations"
 msgstr "_Ankstesni pokalbiai"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:462
-#: ../libempathy-gtk/empathy-individual-menu.c:988
+#: ../libempathy-gtk/empathy-contact-menu.c:449
+#: ../libempathy-gtk/empathy-individual-menu.c:989
 msgid "Send File"
 msgstr "Siųsti failą"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:485
-#: ../libempathy-gtk/empathy-individual-menu.c:1030
+#: ../libempathy-gtk/empathy-contact-menu.c:472
+#: ../libempathy-gtk/empathy-individual-menu.c:1031
 msgid "Share My Desktop"
 msgstr "Dalintis mano darbastaliu"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:525
-#: ../libempathy-gtk/empathy-contact-widget.c:1887
-#: ../libempathy-gtk/empathy-individual-menu.c:1065
-#: ../libempathy-gtk/empathy-individual-widget.c:1372
-msgid "Favorite"
-msgstr "Mėgiamas"
-
-#: ../libempathy-gtk/empathy-contact-menu.c:554
-#: ../libempathy-gtk/empathy-individual-menu.c:1093
+#: ../libempathy-gtk/empathy-contact-menu.c:501
+#: ../libempathy-gtk/empathy-individual-menu.c:1094
 msgid "Infor_mation"
 msgstr "Infor_macija"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:600
+#: ../libempathy-gtk/empathy-contact-menu.c:547
 msgctxt "Edit contact (contextual menu)"
 msgid "_Edit"
 msgstr "_Taisyti"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:654
-#: ../libempathy-gtk/empathy-individual-menu.c:1284
+#: ../libempathy-gtk/empathy-contact-menu.c:601
+#: ../libempathy-gtk/empathy-individual-menu.c:1285
 #: ../src/empathy-chat-window.c:1011
 msgid "Inviting you to this room"
 msgstr "Jus kviečia į šį kambarį"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:685
-#: ../libempathy-gtk/empathy-individual-menu.c:1330
+#: ../libempathy-gtk/empathy-contact-menu.c:632
+#: ../libempathy-gtk/empathy-individual-menu.c:1331
 msgid "_Invite to Chat Room"
 msgstr "_Pakviesti į pokalbių kambarį"
 
 #. Title
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:505
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:499
 msgid "Search contacts"
-msgstr "Ieškoti kontaktų"
+msgstr "Ieškoti adresatų"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:535
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:529
 msgid "Search: "
 msgstr "Ieškoti:"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:593
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:587
 msgid "_Add Contact"
 msgstr "_Pridėti adresatą"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:611
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:605
 msgid "No contacts found"
 msgstr "Nerasta jokių adresatų"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:627
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:621
 msgid "Your message introducing yourself:"
 msgstr "Jūsų pranešimas, apibūdinantis jus:"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:635
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:629
 msgid "Please let me see when you're online. Thanks!"
 msgstr "Leiskite man matyti, kai jūs esate prisijungęs. Ačiū!"
 
-#: ../libempathy-gtk/empathy-contact-selector.c:129
-msgid "Select a contact"
-msgstr "Pasirinkite adresatą"
-
-#: ../libempathy-gtk/empathy-contact-widget.c:336
-#: ../libempathy-gtk/empathy-individual-widget.c:153
-msgid "Full name:"
-msgstr "Vardas ir pavardė:"
-
-#: ../libempathy-gtk/empathy-contact-widget.c:337
-#: ../libempathy-gtk/empathy-individual-widget.c:154
-msgid "Phone number:"
-msgstr "Telefono numeris:"
-
-#: ../libempathy-gtk/empathy-contact-widget.c:338
-#: ../libempathy-gtk/empathy-individual-widget.c:155
-msgid "E-mail address:"
-msgstr "El. pašto adresas:"
-
-#: ../libempathy-gtk/empathy-contact-widget.c:339
-#: ../libempathy-gtk/empathy-individual-widget.c:156
-msgid "Website:"
-msgstr "Tinklalapis:"
-
-#: ../libempathy-gtk/empathy-contact-widget.c:340
-#: ../libempathy-gtk/empathy-individual-widget.c:157
-msgid "Birthday:"
-msgstr "Gimtadienis:"
-
-#. Note to translators: this is the caption for a string of the form "5
-#. * minutes ago", and refers to the time since the contact last interacted
-#. * with their IM client.
-#.
-#: ../libempathy-gtk/empathy-contact-widget.c:346
-msgid "Last seen:"
-msgstr "Paskutiniai:"
-
-#: ../libempathy-gtk/empathy-contact-widget.c:348
-msgid "Connected from:"
-msgstr "Susisiekta iš:"
-
-#. FIXME: once Idle implements SimplePresence using this information, we can
-#. * and should bin this.
-#.
-#: ../libempathy-gtk/empathy-contact-widget.c:353
-msgid "Away message:"
-msgstr "Išėjimo žinutė:"
-
-#: ../libempathy-gtk/empathy-contact-widget.c:606
+#: ../libempathy-gtk/empathy-contact-widget.c:571
+#: ../libempathy-gtk/empathy-individual-widget.c:304
 msgid "Channels:"
 msgstr "Kanalai:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:897
-#: ../libempathy-gtk/empathy-individual-widget.c:469
+#: ../libempathy-gtk/empathy-contact-widget.c:751
+#: ../libempathy-gtk/empathy-individual-widget.c:455
 msgid "Country ISO Code:"
 msgstr "Šalies ISO kodas:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:899
-#: ../libempathy-gtk/empathy-individual-widget.c:471
+#: ../libempathy-gtk/empathy-contact-widget.c:753
+#: ../libempathy-gtk/empathy-individual-widget.c:457
 msgid "Country:"
 msgstr "Šalis:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:901
-#: ../libempathy-gtk/empathy-individual-widget.c:473
+#: ../libempathy-gtk/empathy-contact-widget.c:755
+#: ../libempathy-gtk/empathy-individual-widget.c:459
 msgid "State:"
 msgstr "Būsena:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:903
-#: ../libempathy-gtk/empathy-individual-widget.c:475
+#: ../libempathy-gtk/empathy-contact-widget.c:757
+#: ../libempathy-gtk/empathy-individual-widget.c:461
 msgid "City:"
 msgstr "Miestas:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:905
-#: ../libempathy-gtk/empathy-individual-widget.c:477
+#: ../libempathy-gtk/empathy-contact-widget.c:759
+#: ../libempathy-gtk/empathy-individual-widget.c:463
 msgid "Area:"
 msgstr "Sritis:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:907
-#: ../libempathy-gtk/empathy-individual-widget.c:479
+#: ../libempathy-gtk/empathy-contact-widget.c:761
+#: ../libempathy-gtk/empathy-individual-widget.c:465
 msgid "Postal Code:"
 msgstr "Pašto kodas:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:909
-#: ../libempathy-gtk/empathy-individual-widget.c:481
+#: ../libempathy-gtk/empathy-contact-widget.c:763
+#: ../libempathy-gtk/empathy-individual-widget.c:467
 msgid "Street:"
 msgstr "Gatvė:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:911
-#: ../libempathy-gtk/empathy-individual-widget.c:483
+#: ../libempathy-gtk/empathy-contact-widget.c:765
+#: ../libempathy-gtk/empathy-individual-widget.c:469
 msgid "Building:"
 msgstr "Pastatas:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:913
-#: ../libempathy-gtk/empathy-individual-widget.c:485
+#: ../libempathy-gtk/empathy-contact-widget.c:767
+#: ../libempathy-gtk/empathy-individual-widget.c:471
 msgid "Floor:"
 msgstr "Aukštas:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:915
-#: ../libempathy-gtk/empathy-individual-widget.c:487
+#: ../libempathy-gtk/empathy-contact-widget.c:769
+#: ../libempathy-gtk/empathy-individual-widget.c:473
 msgid "Room:"
 msgstr "Kambarys:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:917
-#: ../libempathy-gtk/empathy-individual-widget.c:489
+#: ../libempathy-gtk/empathy-contact-widget.c:771
+#: ../libempathy-gtk/empathy-individual-widget.c:475
 msgid "Text:"
 msgstr "Tekstas:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:919
-#: ../libempathy-gtk/empathy-individual-widget.c:491
+#: ../libempathy-gtk/empathy-contact-widget.c:773
+#: ../libempathy-gtk/empathy-individual-widget.c:477
 msgid "Description:"
 msgstr "Aprašymas:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:921
-#: ../libempathy-gtk/empathy-individual-widget.c:493
+#: ../libempathy-gtk/empathy-contact-widget.c:775
+#: ../libempathy-gtk/empathy-individual-widget.c:479
 msgid "URI:"
 msgstr "URI:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:923
-#: ../libempathy-gtk/empathy-individual-widget.c:495
+#: ../libempathy-gtk/empathy-contact-widget.c:777
+#: ../libempathy-gtk/empathy-individual-widget.c:481
 msgid "Accuracy Level:"
 msgstr "Tikslumo lygis:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:925
-#: ../libempathy-gtk/empathy-individual-widget.c:497
+#: ../libempathy-gtk/empathy-contact-widget.c:779
+#: ../libempathy-gtk/empathy-individual-widget.c:483
 msgid "Error:"
 msgstr "Paklaida:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:927
-#: ../libempathy-gtk/empathy-individual-widget.c:499
+#: ../libempathy-gtk/empathy-contact-widget.c:781
+#: ../libempathy-gtk/empathy-individual-widget.c:485
 msgid "Vertical Error (meters):"
 msgstr "Vertikali paklaida (metrais):"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:929
-#: ../libempathy-gtk/empathy-individual-widget.c:501
+#: ../libempathy-gtk/empathy-contact-widget.c:783
+#: ../libempathy-gtk/empathy-individual-widget.c:487
 msgid "Horizontal Error (meters):"
 msgstr "Horizontali paklaida (metrais):"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:931
-#: ../libempathy-gtk/empathy-individual-widget.c:503
+#: ../libempathy-gtk/empathy-contact-widget.c:785
+#: ../libempathy-gtk/empathy-individual-widget.c:489
 msgid "Speed:"
 msgstr "Greitis:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:933
-#: ../libempathy-gtk/empathy-individual-widget.c:505
+#: ../libempathy-gtk/empathy-contact-widget.c:787
+#: ../libempathy-gtk/empathy-individual-widget.c:491
 msgid "Bearing:"
 msgstr "Azimutas:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:935
-#: ../libempathy-gtk/empathy-individual-widget.c:507
+#: ../libempathy-gtk/empathy-contact-widget.c:789
+#: ../libempathy-gtk/empathy-individual-widget.c:493
 msgid "Climb Speed:"
 msgstr "Kilimo greitis:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:937
-#: ../libempathy-gtk/empathy-individual-widget.c:509
+#: ../libempathy-gtk/empathy-contact-widget.c:791
+#: ../libempathy-gtk/empathy-individual-widget.c:495
 msgid "Last Updated on:"
 msgstr "Paskutinį kartą atnaujinta:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:939
-#: ../libempathy-gtk/empathy-individual-widget.c:511
+#: ../libempathy-gtk/empathy-contact-widget.c:793
+#: ../libempathy-gtk/empathy-individual-widget.c:497
 msgid "Longitude:"
 msgstr "Ilguma:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:941
-#: ../libempathy-gtk/empathy-individual-widget.c:513
+#: ../libempathy-gtk/empathy-contact-widget.c:795
+#: ../libempathy-gtk/empathy-individual-widget.c:499
 msgid "Latitude:"
 msgstr "Platuma:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:943
-#: ../libempathy-gtk/empathy-individual-widget.c:515
+#: ../libempathy-gtk/empathy-contact-widget.c:797
+#: ../libempathy-gtk/empathy-individual-widget.c:501
 msgid "Altitude:"
 msgstr "Aukštuma:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:996
-#: ../libempathy-gtk/empathy-contact-widget.c:1011
-#: ../libempathy-gtk/empathy-individual-widget.c:607
-#: ../libempathy-gtk/empathy-individual-widget.c:622
-#: ../src/empathy-preferences.ui.h:17
+#: ../libempathy-gtk/empathy-contact-widget.c:850
+#: ../libempathy-gtk/empathy-contact-widget.c:865
+#: ../libempathy-gtk/empathy-individual-widget.c:593
+#: ../libempathy-gtk/empathy-individual-widget.c:608
+#: ../src/empathy-preferences.ui.h:15
 msgid "Location"
 msgstr "Vietovė"
 
 #. translators: format is "Location, $date"
-#: ../libempathy-gtk/empathy-contact-widget.c:1013
-#: ../libempathy-gtk/empathy-individual-widget.c:624
+#: ../libempathy-gtk/empathy-contact-widget.c:867
+#: ../libempathy-gtk/empathy-individual-widget.c:610
 #, c-format
 msgid "%s, %s"
 msgstr "%s, %s"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:1065
-#: ../libempathy-gtk/empathy-individual-widget.c:673
+#: ../libempathy-gtk/empathy-contact-widget.c:919
+#: ../libempathy-gtk/empathy-individual-widget.c:659
 msgid "%B %e, %Y at %R UTC"
 msgstr "%Y %B %e, %R UTC"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:1147
-#: ../libempathy-gtk/empathy-individual-widget.c:915
+#: ../libempathy-gtk/empathy-contact-widget.c:1001
+#: ../libempathy-gtk/empathy-individual-widget.c:901
 msgid "Save Avatar"
 msgstr "Išsaugoti pseudoportretą"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:1203
-#: ../libempathy-gtk/empathy-individual-widget.c:973
+#: ../libempathy-gtk/empathy-contact-widget.c:1057
+#: ../libempathy-gtk/empathy-individual-widget.c:959
 msgid "Unable to save avatar"
 msgstr "Nepavyko išsaugoti pseudoportreto"
 
+#: ../libempathy-gtk/empathy-contact-widget.c:1745
+#: ../libempathy-gtk/empathy-individual-menu.c:1066
+#: ../libempathy-gtk/empathy-individual-widget.c:1358
+msgid "Favorite"
+msgstr "Mėgiamas"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:104
+msgid "Full name"
+msgstr "Pilnas vardas"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:105
+msgid "Phone number"
+msgstr "Telefono numeris"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:106
+msgid "E-mail address"
+msgstr "El. pašto adresas"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:107
+msgid "Website"
+msgstr "Tinklalapis"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:108
+msgid "Birthday"
+msgstr "Gimtadienis"
+
+#. Note to translators: this is the caption for a string of the form "5
+#. * minutes ago", and refers to the time since the contact last interacted
+#. * with their IM client.
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:113
+msgid "Last seen:"
+msgstr "Paskutiniai:"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:115
+msgid "Connected from:"
+msgstr "Susisiekta iš:"
+
+#. FIXME: once Idle implements SimplePresence using this information, we can
+#. * and should bin this.
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:119
+msgid "Away message:"
+msgstr "Išėjimo žinutė:"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:132
+msgid "work"
+msgstr "darbo"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:133
+msgid "home"
+msgstr "namų"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:134
+msgid "mobile"
+msgstr "mobilusis"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:135
+msgid "voice"
+msgstr "balso"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:136
+msgid "preferred"
+msgstr "pageidaujamas"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:137
+msgid "postal"
+msgstr "pašto"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:138
+msgid "parcel"
+msgstr "siuntinys"
+
 #: ../libempathy-gtk/empathy-contact-widget.ui.h:1
 msgid "<b>Location</b> at (date)\t"
 msgstr "<b>Vietovė</b> (data)\t"
 
 #. Alias
 #: ../libempathy-gtk/empathy-contact-widget.ui.h:3
-#: ../libempathy-gtk/empathy-individual-widget.c:1308
+#: ../libempathy-gtk/empathy-individual-widget.c:1294
 msgid "Alias:"
 msgstr "Alternatyvusis vardas:"
 
@@ -2060,7 +2079,7 @@ msgstr "Adresato informacija"
 #. Identifier to connect to Instant Messaging network
 #. Translators: Identifier to connect to Instant Messaging network
 #: ../libempathy-gtk/empathy-contact-widget.ui.h:8
-#: ../libempathy-gtk/empathy-individual-widget.c:1517
+#: ../libempathy-gtk/empathy-individual-widget.c:1503
 msgid "Identifier:"
 msgstr "Identifikatorius:"
 
@@ -2095,18 +2114,18 @@ msgid "Select"
 msgstr "Pasirinkti"
 
 #: ../libempathy-gtk/empathy-groups-widget.c:409
-#: ../src/empathy-main-window.c:1833
+#: ../src/empathy-main-window.c:1951
 msgid "Group"
 msgstr "Grupė"
 
-#: ../libempathy-gtk/empathy-individual-dialogs.c:260
+#: ../libempathy-gtk/empathy-individual-dialogs.c:258
 msgid "The following identity will be blocked:"
 msgid_plural "The following identities will be blocked:"
 msgstr[0] "Ši tapatybė bus užblokuota:"
 msgstr[1] "Šios tapatybės bus užblokuotos:"
 msgstr[2] "Šios tapatybės bus užblokuotos:"
 
-#: ../libempathy-gtk/empathy-individual-dialogs.c:267
+#: ../libempathy-gtk/empathy-individual-dialogs.c:265
 msgid "The following identity can not be blocked:"
 msgid_plural "The following identities can not be blocked:"
 msgstr[0] "Šios tapatybės nepavyko užblokuoti:"
@@ -2146,7 +2165,7 @@ msgstr "Pasirinkite naudotiną paskyrą skambučio vykdymui"
 #. * title
 #: ../libempathy-gtk/empathy-individual-menu.c:313
 #: ../libempathy-gtk/empathy-log-window.ui.h:2
-#: ../src/empathy-streamed-media-window.c:1299
+#: ../src/empathy-streamed-media-window.c:1285
 #: ../src/empathy-call-window.ui.h:2
 msgid "Call"
 msgstr "Skambutis"
@@ -2163,34 +2182,34 @@ msgstr "Darbas"
 msgid "HOME"
 msgstr "NAMAI"
 
-#. add an SMS button
-#: ../libempathy-gtk/empathy-individual-menu.c:804
-#: ../libempathy-gtk/empathy-new-message-dialog.c:215
+#. add SMS button
+#: ../libempathy-gtk/empathy-individual-menu.c:805
+#: ../libempathy-gtk/empathy-new-message-dialog.c:314
 msgid "_SMS"
 msgstr "_SMS"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1142
+#: ../libempathy-gtk/empathy-individual-menu.c:1143
 msgctxt "Edit individual (contextual menu)"
 msgid "_Edit"
 msgstr "_Taisyti"
 
 #. Translators: this is a verb meaning "to connect two contacts together
 #. * to form a meta-contact".
-#: ../libempathy-gtk/empathy-individual-menu.c:1168
+#: ../libempathy-gtk/empathy-individual-menu.c:1169
 msgctxt "Link individual (contextual menu)"
 msgid "_Link Contacts…"
 msgstr "_Susieti adresatus…"
 
-#: ../libempathy-gtk/empathy-individual-view.c:2340
+#: ../libempathy-gtk/empathy-individual-view.c:2362
 msgid "Delete and _Block"
 msgstr "Ištrinti ir _blokuoti"
 
-#: ../libempathy-gtk/empathy-individual-view.c:2509
+#: ../libempathy-gtk/empathy-individual-view.c:2541
 #, c-format
 msgid "Do you really want to remove the linked contact '%s'? Note that this will remove all the contacts which make up this linked contact."
 msgstr "Ar tikrai norite pašalinti susietąjį adresatą „%s“? Atminkite, jog bus pašalinti visi adresatai, sudarantys šį susietąjį adresatą."
 
-#: ../libempathy-gtk/empathy-individual-widget.c:1656
+#: ../libempathy-gtk/empathy-individual-widget.c:1642
 #, c-format
 msgid "Linked contact containing %u contact"
 msgid_plural "Linked contacts containing %u contacts"
@@ -2269,48 +2288,48 @@ msgctxt "Unlink individual (button)"
 msgid "_Unlink"
 msgstr "_Išskaityti"
 
-#: ../libempathy-gtk/empathy-log-window.c:634
+#: ../libempathy-gtk/empathy-log-window.c:621
 msgid "History"
 msgstr "Istorija"
 
-#: ../libempathy-gtk/empathy-log-window.c:689
+#: ../libempathy-gtk/empathy-log-window.c:676
 msgid "Show"
 msgstr "Rodyti"
 
-#: ../libempathy-gtk/empathy-log-window.c:711
+#: ../libempathy-gtk/empathy-log-window.c:698
 msgid "Search"
 msgstr "Ieškoti"
 
-#: ../libempathy-gtk/empathy-log-window.c:1159
+#: ../libempathy-gtk/empathy-log-window.c:1147
 #, c-format
 msgid "Chat in %s"
 msgstr "Kalbėti kanale %s"
 
-#: ../libempathy-gtk/empathy-log-window.c:1161
+#: ../libempathy-gtk/empathy-log-window.c:1149
 #, c-format
 msgid "Chat with %s"
 msgstr "Kalbėti su %s"
 
-#: ../libempathy-gtk/empathy-log-window.c:1211
-#: ../libempathy-gtk/empathy-log-window.c:1358
+#: ../libempathy-gtk/empathy-log-window.c:1199
+#: ../libempathy-gtk/empathy-log-window.c:1346
 msgctxt "A date with the time"
 msgid "%A, %e %B %Y %X"
 msgstr "%A, %e %B %Y %X"
 
 #. Translators: this is an emote: '* Danielle waves'
-#: ../libempathy-gtk/empathy-log-window.c:1300
+#: ../libempathy-gtk/empathy-log-window.c:1288
 #, c-format
 msgid "<i>* %s %s</i>"
 msgstr "<i>* %s %s</i>"
 
 #. Translators: this is a message: 'Danielle: hello'
 #. * The string in bold is the sender's name
-#: ../libempathy-gtk/empathy-log-window.c:1306
+#: ../libempathy-gtk/empathy-log-window.c:1294
 #, c-format
 msgid "<b>%s:</b> %s"
 msgstr "<b>%s:</b> %s"
 
-#: ../libempathy-gtk/empathy-log-window.c:1382
+#: ../libempathy-gtk/empathy-log-window.c:1370
 #, c-format
 msgid "%s second"
 msgid_plural "%s seconds"
@@ -2318,7 +2337,7 @@ msgstr[0] "%s sekundė"
 msgstr[1] "%s sekundės"
 msgstr[2] "%s sekundžių"
 
-#: ../libempathy-gtk/empathy-log-window.c:1389
+#: ../libempathy-gtk/empathy-log-window.c:1377
 #, c-format
 msgid "%s minute"
 msgid_plural "%s minutes"
@@ -2326,80 +2345,80 @@ msgstr[0] "%s minutė"
 msgstr[1] "%s minutės"
 msgstr[2] "%s minučių"
 
-#: ../libempathy-gtk/empathy-log-window.c:1397
+#: ../libempathy-gtk/empathy-log-window.c:1385
 #, c-format
 msgid "Call took %s, ended at %s"
 msgstr "Pokalbis truko %s, baigėsi %s"
 
-#: ../libempathy-gtk/empathy-log-window.c:1729
+#: ../libempathy-gtk/empathy-log-window.c:1719
 msgid "Today"
 msgstr "Šiandien"
 
-#: ../libempathy-gtk/empathy-log-window.c:1733
+#: ../libempathy-gtk/empathy-log-window.c:1723
 msgid "Yesterday"
 msgstr "Vakar"
 
 #. Translators: A date such as '23 May 2010' (strftime format)
-#: ../libempathy-gtk/empathy-log-window.c:1748
+#: ../libempathy-gtk/empathy-log-window.c:1738
 msgid "%e %B %Y"
 msgstr "%e %B %Y"
 
-#: ../libempathy-gtk/empathy-log-window.c:1829
-#: ../libempathy-gtk/empathy-log-window.c:3444
+#: ../libempathy-gtk/empathy-log-window.c:1826
+#: ../libempathy-gtk/empathy-log-window.c:3458
 msgid "Anytime"
 msgstr "Bet kada"
 
-#: ../libempathy-gtk/empathy-log-window.c:1916
-#: ../libempathy-gtk/empathy-log-window.c:2372
+#: ../libempathy-gtk/empathy-log-window.c:1915
+#: ../libempathy-gtk/empathy-log-window.c:2371
 msgid "Anyone"
 msgstr "Bet kas"
 
-#: ../libempathy-gtk/empathy-log-window.c:2685
+#: ../libempathy-gtk/empathy-log-window.c:2684
 msgid "Who"
 msgstr "Kas"
 
-#: ../libempathy-gtk/empathy-log-window.c:2889
+#: ../libempathy-gtk/empathy-log-window.c:2893
 msgid "When"
 msgstr "Kada"
 
-#: ../libempathy-gtk/empathy-log-window.c:3005
+#: ../libempathy-gtk/empathy-log-window.c:3009
 msgid "Anything"
 msgstr "Bet kas"
 
-#: ../libempathy-gtk/empathy-log-window.c:3007
+#: ../libempathy-gtk/empathy-log-window.c:3011
 msgid "Text chats"
 msgstr "Tekstiniai pokalbiai"
 
-#: ../libempathy-gtk/empathy-log-window.c:3009
+#: ../libempathy-gtk/empathy-log-window.c:3013
 #: ../src/empathy-preferences.ui.h:4
 msgid "Calls"
 msgstr "Skambučiai"
 
-#: ../libempathy-gtk/empathy-log-window.c:3014
+#: ../libempathy-gtk/empathy-log-window.c:3018
 msgid "Incoming calls"
 msgstr "Įeinantys skambučiai"
 
-#: ../libempathy-gtk/empathy-log-window.c:3015
+#: ../libempathy-gtk/empathy-log-window.c:3019
 msgid "Outgoing calls"
 msgstr "Išeinantys skambučiai"
 
-#: ../libempathy-gtk/empathy-log-window.c:3016
+#: ../libempathy-gtk/empathy-log-window.c:3020
 msgid "Missed calls"
 msgstr "Praleistas skambučiai"
 
-#: ../libempathy-gtk/empathy-log-window.c:3038
+#: ../libempathy-gtk/empathy-log-window.c:3042
 msgid "What"
 msgstr "Kas"
 
-#: ../libempathy-gtk/empathy-log-window.c:3747
+#: ../libempathy-gtk/empathy-log-window.c:3751
 msgid "Are you sure you want to delete all logs of previous conversations?"
 msgstr "Ar tikrai norite ištrinti visų buvusių pokalbių žurnalus?"
 
-#: ../libempathy-gtk/empathy-log-window.c:3751
+#: ../libempathy-gtk/empathy-log-window.c:3755
 msgid "Clear All"
 msgstr "Išvalyti visus"
 
-#: ../libempathy-gtk/empathy-log-window.c:3758
+#: ../libempathy-gtk/empathy-log-window.c:3762
 msgid "Delete from:"
 msgstr "Trinti nuo:"
 
@@ -2441,32 +2460,72 @@ msgstr "_Failas"
 msgid "page 2"
 msgstr "2 puslapis"
 
-#: ../libempathy-gtk/empathy-contact-selector-dialog.ui.h:2
-msgid "Contact ID:"
-msgstr "Adresato ID:"
+#: ../libempathy-gtk/empathy-new-message-dialog.c:84
+msgid "The contact is offline"
+msgstr "Nurodytas adresatas yra atsijungęs"
 
-#. add chat button
-#: ../libempathy-gtk/empathy-new-message-dialog.c:225
-msgid "C_hat"
-msgstr "_Pokalbis"
+#: ../libempathy-gtk/empathy-new-message-dialog.c:86
+msgid "The specified contact is either invalid or unknown"
+msgstr "Nurodytas adresatas yra neteisingas arba nežinomas"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.c:88
+msgid "The contact does not support this kind of conversation"
+msgstr "Šiame pokalbyje tokia tema yra nepalaikoma"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.c:90
+msgid "The requested functionality is not implemented for this protocol"
+msgstr "Šiam protokolui reikalaujamas funkcionalumas dar neįdiegtas"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.c:96
+msgid "Could not start a conversation with the given contact"
+msgstr "Su pasirinktu adresatu užmegzti pokalbio nepavyko"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.c:98
+msgid "You are banned from this channel"
+msgstr "Jūs šiame kanale užblokuotas"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.c:100
+msgid "This channel is full"
+msgstr "Šis kanalas pilnas"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.c:102
+msgid "You must be invited to join this channel"
+msgstr "Jūs turite būti pakviestas, jei norite prisijungti prie šio kanalo"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.c:104
+msgid "Can't proceed while disconnected"
+msgstr "Negalima tęsti, kol atsijungta"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.c:106
+msgid "Permission denied"
+msgstr "Prieiga uždrausta"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.c:112
+msgid "There was an error starting the conversation"
+msgstr "Kilo klaida pradedant skambutį"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.c:291
+#: ../libempathy-gtk/empathy-new-call-dialog.c:203
+msgid "Enter a contact identifier or phone number:"
+msgstr "Įveskite adresato atpažinimo žymą arba telefono numerį:"
 
 #. Tweak the dialog
-#: ../libempathy-gtk/empathy-new-message-dialog.c:244
+#: ../libempathy-gtk/empathy-new-message-dialog.c:334
 msgid "New Conversation"
 msgstr "Naujas pokalbis"
 
-#. add video toggle
-#: ../libempathy-gtk/empathy-new-call-dialog.c:204
-msgid "Send _Video"
-msgstr "Siųsti _vaizdą"
+#. add video button
+#: ../libempathy-gtk/empathy-new-call-dialog.c:226
+msgid "_Video Call"
+msgstr "_Vaizdinis skambutis"
 
-#. add chat button
-#: ../libempathy-gtk/empathy-new-call-dialog.c:215
-msgid "C_all"
-msgstr "_Skambutis"
+#. add audio button
+#: ../libempathy-gtk/empathy-new-call-dialog.c:236
+msgid "_Audio Call"
+msgstr "_Garsinis skambutis"
 
 #. Tweak the dialog
-#: ../libempathy-gtk/empathy-new-call-dialog.c:225
+#: ../libempathy-gtk/empathy-new-call-dialog.c:246
 msgid "New Call"
 msgstr "Naujas skambutis"
 
@@ -2507,12 +2566,8 @@ msgstr "Spustelėkite, jei norite padaryti šią būsena mėgiama"
 msgid "Set status"
 msgstr "Nustatyti būseną"
 
-#: ../libempathy-gtk/empathy-presence-chooser.c:943
-msgid "Set your presence and current status"
-msgstr "Nurodykite savo buvimą ir dabartinę būseną"
-
 #. Custom messages
-#: ../libempathy-gtk/empathy-presence-chooser.c:1131
+#: ../libempathy-gtk/empathy-presence-chooser.c:1135
 msgid "Custom messages…"
 msgstr "Pasirinktinės žinutės…"
 
@@ -2589,12 +2644,12 @@ msgstr "Baigtas garsinis skambutis"
 msgid "Edit Custom Messages"
 msgstr "Taisykite pasirinktinę žinutę"
 
-#: ../libempathy-gtk/empathy-theme-adium.c:1036
+#: ../libempathy-gtk/empathy-theme-adium.c:1047
 #, c-format
 msgid "Message edited at %s"
 msgstr "Žinutė redaguota %s"
 
-#: ../libempathy-gtk/empathy-theme-adium.c:1740
+#: ../libempathy-gtk/empathy-theme-adium.c:1752
 msgid "Normal"
 msgstr "Normalus"
 
@@ -2684,24 +2739,24 @@ msgstr "Atsiminti šį pasirinkimą ateityje"
 msgid "Certificate Details"
 msgstr "Liudijimo informacija"
 
-#: ../libempathy-gtk/empathy-ui-utils.c:1735
+#: ../libempathy-gtk/empathy-ui-utils.c:1741
 msgid "Unable to open URI"
 msgstr "Nepavyko atverti URI"
 
-#: ../libempathy-gtk/empathy-ui-utils.c:1832
+#: ../libempathy-gtk/empathy-ui-utils.c:1859
 msgid "Select a file"
 msgstr "Pasirinkite failą"
 
-#: ../libempathy-gtk/empathy-ui-utils.c:1904
+#: ../libempathy-gtk/empathy-ui-utils.c:1934
 msgid "Insufficient free space to save file"
 msgstr "Nepakanka laisvos vietos failui įrašyti"
 
-#: ../libempathy-gtk/empathy-ui-utils.c:1912
+#: ../libempathy-gtk/empathy-ui-utils.c:1942
 #, c-format
 msgid "%s of free space are required to save this file, but only %s is available. Please choose another location."
 msgstr "Šiam failui įrašyti reikia %s laisvos vietos, tačiau prieinama tik %s. Pasirinkite kitą vietą."
 
-#: ../libempathy-gtk/empathy-ui-utils.c:1956
+#: ../libempathy-gtk/empathy-ui-utils.c:1986
 #, c-format
 msgid "Incoming file from %s"
 msgstr "Failas jums nuo %s"
@@ -2873,39 +2928,31 @@ msgstr "Vakariečių"
 msgid "Vietnamese"
 msgstr "Vietnamiečių"
 
-#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:108
-msgid "The selected contact cannot receive files."
-msgstr "Pasirinktas adresatas negali priimti failų."
-
-#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:114
-msgid "The selected contact is offline."
-msgstr "Pasirinktas adresatas yra atsijungęs."
-
-#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:169
+#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:203
 msgid "No error message"
 msgstr "Nėra klaidų pranešimų"
 
-#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:242
+#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:276
 msgid "Instant Message (Empathy)"
 msgstr "Tikralaikė žinutė (Empathy)"
 
-#: ../src/empathy.c:434
+#: ../src/empathy.c:433
 msgid "Don't connect on startup"
 msgstr "Paleidimo metu neprisijungti"
 
-#: ../src/empathy.c:438
+#: ../src/empathy.c:437
 msgid "Don't display the contact list or any other dialogs on startup"
 msgstr "Paleidus nerodyti adresatų sąrašo ar kitų dialogų"
 
-#: ../src/empathy.c:453
+#: ../src/empathy.c:452
 msgid "- Empathy IM Client"
 msgstr "– Tikralaikių pokalbių klientas Empathy"
 
-#: ../src/empathy.c:640
+#: ../src/empathy.c:639
 msgid "Error contacting the Account Manager"
 msgstr "Klaida susisiekiant su paskyrų tvarkykle"
 
-#: ../src/empathy.c:642
+#: ../src/empathy.c:641
 #, c-format
 msgid ""
 "There was an error while trying to connect to the Telepathy Account Manager. The error was:\n"
@@ -3082,8 +3129,8 @@ msgid "Your new account has not been saved yet."
 msgstr "Jūsų naujoji paskyra dar neįrašyta."
 
 #: ../src/empathy-accounts-dialog.c:345
-#: ../src/empathy-streamed-media-window.c:754
-#: ../src/empathy-call-window.c:1330
+#: ../src/empathy-streamed-media-window.c:755
+#: ../src/empathy-call-window.c:1325
 msgid "Connecting…"
 msgstr "Jungiamasi…"
 
@@ -3175,11 +3222,11 @@ msgstr "Norint sukurti naują paskyrą, pirma reikia įdiegti kiekvieno pageidau
 msgid "_Import…"
 msgstr "_Importuoti…"
 
-#: ../src/empathy-auth-client.c:249
+#: ../src/empathy-auth-client.c:251
 msgid " - Empathy authentication client"
 msgstr " – Empathy tapatybės nustatymo klientas"
 
-#: ../src/empathy-auth-client.c:265
+#: ../src/empathy-auth-client.c:267
 msgid "Empathy authentication client"
 msgstr "Empathy tapatybės nustatymo klientas"
 
@@ -3188,159 +3235,159 @@ msgid "People nearby"
 msgstr "Žmonės netoliese"
 
 #: ../src/empathy-av.c:118
-#: ../src/empathy-call.c:192
+#: ../src/empathy-call.c:193
 msgid "- Empathy Audio/Video Client"
 msgstr "– Empathy garso/vaizdo transliavimo klientas"
 
 #: ../src/empathy-av.c:134
-#: ../src/empathy-call.c:217
+#: ../src/empathy-call.c:218
 msgid "Empathy Audio/Video Client"
 msgstr "Empathy garso/vaizdo transliavimo klientas"
 
-#: ../src/empathy-streamed-media-window.c:431
+#: ../src/empathy-streamed-media-window.c:432
 msgid "Contrast"
 msgstr "Kontrastas"
 
-#: ../src/empathy-streamed-media-window.c:434
+#: ../src/empathy-streamed-media-window.c:435
 msgid "Brightness"
 msgstr "Skaistis"
 
-#: ../src/empathy-streamed-media-window.c:437
+#: ../src/empathy-streamed-media-window.c:438
 msgid "Gamma"
 msgstr "Gama"
 
-#: ../src/empathy-streamed-media-window.c:542
+#: ../src/empathy-streamed-media-window.c:543
 msgid "Volume"
 msgstr "Garsumas"
 
-#: ../src/empathy-streamed-media-window.c:1110
+#: ../src/empathy-streamed-media-window.c:1094
 msgid "_Sidebar"
 msgstr "Š_oninė juosta"
 
-#: ../src/empathy-streamed-media-window.c:1130
+#: ../src/empathy-streamed-media-window.c:1114
 msgid "Audio input"
 msgstr "Garso įvestis"
 
-#: ../src/empathy-streamed-media-window.c:1134
+#: ../src/empathy-streamed-media-window.c:1118
 msgid "Video input"
 msgstr "Vaizdo įvestis"
 
-#: ../src/empathy-streamed-media-window.c:1140
+#: ../src/empathy-streamed-media-window.c:1126
 msgid "Dialpad"
 msgstr "Tel. klaviatūra"
 
-#: ../src/empathy-streamed-media-window.c:1151
+#: ../src/empathy-streamed-media-window.c:1137
 msgid "Details"
 msgstr "Išsami informacija"
 
 #. translators: Call is a noun and %s is the contact name. This string
 #. * is used in the window title
-#: ../src/empathy-streamed-media-window.c:1220
-#: ../src/empathy-call-window.c:1939
+#: ../src/empathy-streamed-media-window.c:1206
+#: ../src/empathy-call-window.c:1923
 #, c-format
 msgid "Call with %s"
 msgstr "Skambinti su %s"
 
-#: ../src/empathy-streamed-media-window.c:1453
-#: ../src/empathy-call-window.c:2183
+#: ../src/empathy-streamed-media-window.c:1439
+#: ../src/empathy-call-window.c:2167
 msgid "The IP address as seen by the machine"
 msgstr "Kompiuterio matomas IP adresas"
 
-#: ../src/empathy-streamed-media-window.c:1455
-#: ../src/empathy-call-window.c:2185
+#: ../src/empathy-streamed-media-window.c:1441
+#: ../src/empathy-call-window.c:2169
 msgid "The IP address as seen by a server on the Internet"
 msgstr "Interneto serverio matomas IP adresas"
 
-#: ../src/empathy-streamed-media-window.c:1457
-#: ../src/empathy-call-window.c:2187
+#: ../src/empathy-streamed-media-window.c:1443
+#: ../src/empathy-call-window.c:2171
 msgid "The IP address of the peer as seen by the other side"
 msgstr "Kitos pusės matomas lygiarangio IP adresas"
 
-#: ../src/empathy-streamed-media-window.c:1459
-#: ../src/empathy-call-window.c:2189
+#: ../src/empathy-streamed-media-window.c:1445
+#: ../src/empathy-call-window.c:2173
 msgid "The IP address of a relay server"
 msgstr "Perdavimo serverio IP adresas"
 
-#: ../src/empathy-streamed-media-window.c:1461
-#: ../src/empathy-call-window.c:2191
+#: ../src/empathy-streamed-media-window.c:1447
+#: ../src/empathy-call-window.c:2175
 msgid "The IP address of the multicast group"
 msgstr "Daugiaadresio perdavimo grupės IP adresas"
 
-#: ../src/empathy-streamed-media-window.c:1843
-#: ../src/empathy-streamed-media-window.c:1846
-#: ../src/empathy-streamed-media-window.c:1849
-#: ../src/empathy-streamed-media-window.c:1852
+#: ../src/empathy-streamed-media-window.c:1835
+#: ../src/empathy-streamed-media-window.c:1838
+#: ../src/empathy-streamed-media-window.c:1841
+#: ../src/empathy-streamed-media-window.c:1844
 msgctxt "codec"
 msgid "Unknown"
 msgstr "Nežinoma"
 
 #. Translators: number of minutes:seconds the caller has been connected
-#: ../src/empathy-streamed-media-window.c:2144
+#: ../src/empathy-streamed-media-window.c:2136
 #, c-format
 msgid "Connected — %d:%02dm"
 msgstr "Prisijunta – %d:%02dm"
 
-#: ../src/empathy-streamed-media-window.c:2205
-#: ../src/empathy-call-window.c:2960
+#: ../src/empathy-streamed-media-window.c:2197
+#: ../src/empathy-call-window.c:3029
 msgid "Technical Details"
 msgstr "Techninė informacija"
 
-#: ../src/empathy-streamed-media-window.c:2243
-#: ../src/empathy-call-window.c:2998
+#: ../src/empathy-streamed-media-window.c:2235
+#: ../src/empathy-call-window.c:3068
 #, c-format
 msgid "%s's software does not understand any of the audio formats supported by your computer"
 msgstr "Adresato %s programinė įranga nepalaiko jokių jūsų kompiuterio palaikomų formatų"
 
-#: ../src/empathy-streamed-media-window.c:2248
-#: ../src/empathy-call-window.c:3003
+#: ../src/empathy-streamed-media-window.c:2240
+#: ../src/empathy-call-window.c:3073
 #, c-format
 msgid "%s's software does not understand any of the video formats supported by your computer"
 msgstr "Adresato %s programinė įranga nepalaiko jokių jūsų kompiuterio palaikomų vaizdo įrašų formatų"
 
-#: ../src/empathy-streamed-media-window.c:2254
-#: ../src/empathy-call-window.c:3009
+#: ../src/empathy-streamed-media-window.c:2246
+#: ../src/empathy-call-window.c:3079
 #, c-format
 msgid "Can't establish a connection to %s. One of you might be on a network that does not allow direct connections."
 msgstr "Nepavyko užmegzti ryšio su %s. Gali būti, kad vienas iš jūsų yra tinkle, nepriimančiame tiesioginių prisijungimų."
 
-#: ../src/empathy-streamed-media-window.c:2260
-#: ../src/empathy-call-window.c:3015
+#: ../src/empathy-streamed-media-window.c:2252
+#: ../src/empathy-call-window.c:3085
 msgid "There was a failure on the network"
 msgstr "Tinkle yra triktis"
 
-#: ../src/empathy-streamed-media-window.c:2264
-#: ../src/empathy-call-window.c:3019
+#: ../src/empathy-streamed-media-window.c:2256
+#: ../src/empathy-call-window.c:3089
 msgid "The audio formats necessary for this call are not installed on your computer"
 msgstr "Jūsų kompiuteryje neįdiegti garso įrašų formatai, reikalingi šiam skambučiui"
 
-#: ../src/empathy-streamed-media-window.c:2267
-#: ../src/empathy-call-window.c:3022
+#: ../src/empathy-streamed-media-window.c:2259
+#: ../src/empathy-call-window.c:3092
 msgid "The video formats necessary for this call are not installed on your computer"
 msgstr "Jūsų kompiuteryje neįdiegti vaizdo įrašų formatai, reikalingi šiam skambučiui"
 
-#: ../src/empathy-streamed-media-window.c:2277
-#: ../src/empathy-call-window.c:3034
+#: ../src/empathy-streamed-media-window.c:2269
+#: ../src/empathy-call-window.c:3104
 #, c-format
 msgid "Something unexpected happened in a Telepathy component. Please <a href=\"%s\">report this bug</a> and attach logs gathered from the 'Debug' window in the Help menu."
 msgstr "Telepathy komponente atsitiko kažkas nenumatyta. <a href=\"%s\">Praneškite apie šią klaidą</a> ir pridėkite žurnalus, kuriuos surinkote meniu Pagalba „Derinimo“ lange."
 
-#: ../src/empathy-streamed-media-window.c:2285
-#: ../src/empathy-call-window.c:3043
+#: ../src/empathy-streamed-media-window.c:2277
+#: ../src/empathy-call-window.c:3113
 msgid "There was a failure in the call engine"
 msgstr "Skambinimo posistemėje yra triktis"
 
-#: ../src/empathy-streamed-media-window.c:2288
-#: ../src/empathy-call-window.c:3046
+#: ../src/empathy-streamed-media-window.c:2280
+#: ../src/empathy-call-window.c:3116
 msgid "The end of the stream was reached"
 msgstr "Pasiekta srauto pabaiga"
 
-#: ../src/empathy-streamed-media-window.c:2328
-#: ../src/empathy-call-window.c:3086
+#: ../src/empathy-streamed-media-window.c:2320
+#: ../src/empathy-call-window.c:3156
 msgid "Can't establish audio stream"
 msgstr "Nepavyko sukurti garso srauto"
 
-#: ../src/empathy-streamed-media-window.c:2338
-#: ../src/empathy-call-window.c:3096
+#: ../src/empathy-streamed-media-window.c:2330
+#: ../src/empathy-call-window.c:3166
 msgid "Can't establish video stream"
 msgstr "Nepavyko sukurti vaizdo srauto"
 
@@ -3432,10 +3479,10 @@ msgstr "Perjungti vaizdo transliavimą"
 
 #: ../src/empathy-call-window.ui.h:21
 #: ../src/empathy-streamed-media-window.ui.h:18
-#: ../src/empathy-call-window.c:2590
-#: ../src/empathy-call-window.c:2591
-#: ../src/empathy-call-window.c:2592
-#: ../src/empathy-call-window.c:2593
+#: ../src/empathy-call-window.c:2576
+#: ../src/empathy-call-window.c:2577
+#: ../src/empathy-call-window.c:2578
+#: ../src/empathy-call-window.c:2579
 msgid "Unknown"
 msgstr "Nežinoma"
 
@@ -3614,7 +3661,7 @@ msgid "Incoming video call"
 msgstr "Gaunamas vaizdinis skambutis"
 
 #: ../src/empathy-event-manager.c:521
-#: ../src/empathy-call-window.c:1563
+#: ../src/empathy-call-window.c:1555
 msgid "Incoming call"
 msgstr "Skambutis jums"
 
@@ -3631,7 +3678,7 @@ msgstr "%s jums skambina, ar atsiliepsite?"
 #: ../src/empathy-event-manager.c:529
 #: ../src/empathy-event-manager.c:730
 #: ../src/empathy-event-manager.c:763
-#: ../src/empathy-call-window.c:1569
+#: ../src/empathy-call-window.c:1561
 #, c-format
 msgid "Incoming call from %s"
 msgstr "Skambutis jums nuo %s"
@@ -3651,7 +3698,7 @@ msgstr "_Atsakyti vaizdu"
 
 #: ../src/empathy-event-manager.c:730
 #: ../src/empathy-event-manager.c:763
-#: ../src/empathy-call-window.c:1569
+#: ../src/empathy-call-window.c:1561
 #, c-format
 msgid "Incoming video call from %s"
 msgstr "Gaunamas vaizdinis skambutis iš %s"
@@ -3695,7 +3742,7 @@ msgid "Incoming file transfer from %s"
 msgstr "Failo atsiuntimas iš %s"
 
 #: ../src/empathy-event-manager.c:1145
-#: ../src/empathy-main-window.c:378
+#: ../src/empathy-main-window.c:376
 msgid "Password required"
 msgstr "Reikalingas slaptažodis"
 
@@ -3848,51 +3895,61 @@ msgstr "Protokolas"
 msgid "Source"
 msgstr "Šaltinis"
 
-#: ../src/empathy-main-window.c:395
+#: ../src/empathy-main-window.c:393
 msgid "Provide Password"
 msgstr "Nurodykite slaptažodį"
 
-#: ../src/empathy-main-window.c:401
+#: ../src/empathy-main-window.c:399
 msgid "Disconnect"
 msgstr "Atsijungti"
 
-#: ../src/empathy-main-window.c:642
+#: ../src/empathy-main-window.c:636
 msgid "No match found"
 msgstr "Nerasta atitikmenų"
 
-#: ../src/empathy-main-window.c:803
+#: ../src/empathy-main-window.c:744
+#, c-format
+msgid "Sorry, %s accounts can’t be used until your %s software is updated."
+msgstr "Deja, paskyra %s negali būti naudojama, kol nebus atnaujinta programinė įranga %s."
+
+#: ../src/empathy-main-window.c:812
+msgid "Update software..."
+msgstr "Atnaujinti programinę įrangą..."
+
+#: ../src/empathy-main-window.c:818
+#: ../src/empathy-main-window.c:939
+msgid "Close"
+msgstr "Užverti"
+
+#: ../src/empathy-main-window.c:927
 msgid "Reconnect"
 msgstr "Prisijungti iš naujo"
 
-#: ../src/empathy-main-window.c:809
+#: ../src/empathy-main-window.c:933
 msgid "Edit Account"
 msgstr "Taisyti paskyrą"
 
-#: ../src/empathy-main-window.c:815
-msgid "Close"
-msgstr "Užverti"
-
 #. Translators: this string will be something like:
 #. *   Top up My Account ($1.23)..."
-#: ../src/empathy-main-window.c:954
+#: ../src/empathy-main-window.c:1072
 #, c-format
 msgid "Top up %s (%s)..."
 msgstr "Pakelti %s (%s)..."
 
-#: ../src/empathy-main-window.c:1001
+#: ../src/empathy-main-window.c:1119
 msgid "Top up account credit"
 msgstr "Pakelti paskyros kreditą"
 
 #. top up button
-#: ../src/empathy-main-window.c:1072
+#: ../src/empathy-main-window.c:1190
 msgid "Top Up..."
 msgstr "Pakelti..."
 
-#: ../src/empathy-main-window.c:1815
+#: ../src/empathy-main-window.c:1933
 msgid "Contact"
 msgstr "Adresatas"
 
-#: ../src/empathy-main-window.c:2190
+#: ../src/empathy-main-window.c:2308
 msgid "Contact List"
 msgstr "Adresatų sąrašas"
 
@@ -4046,79 +4103,79 @@ msgstr "Kambarių sąrašas"
 msgid "_Room:"
 msgstr "_Kambarys:"
 
-#: ../src/empathy-preferences.c:169
+#: ../src/empathy-preferences.c:167
 msgid "Message received"
 msgstr "Gauta žinutė"
 
-#: ../src/empathy-preferences.c:170
+#: ../src/empathy-preferences.c:168
 msgid "Message sent"
 msgstr "Žinutė išsiųsta"
 
-#: ../src/empathy-preferences.c:171
+#: ../src/empathy-preferences.c:169
 msgid "New conversation"
 msgstr "Naujas pokalbis"
 
-#: ../src/empathy-preferences.c:172
+#: ../src/empathy-preferences.c:170
 msgid "Contact goes online"
 msgstr "Adresatas prisijungė"
 
-#: ../src/empathy-preferences.c:173
+#: ../src/empathy-preferences.c:171
 msgid "Contact goes offline"
 msgstr "Adresatas atsijungė"
 
-#: ../src/empathy-preferences.c:174
+#: ../src/empathy-preferences.c:172
 msgid "Account connected"
 msgstr "Paskyra prijungta"
 
-#: ../src/empathy-preferences.c:175
+#: ../src/empathy-preferences.c:173
 msgid "Account disconnected"
 msgstr "Paskyra atjungta"
 
-#: ../src/empathy-preferences.c:484
+#: ../src/empathy-preferences.c:476
 msgid "Language"
 msgstr "Kalba"
 
 #. translators: Contact name for the chat theme preview
-#: ../src/empathy-preferences.c:734
+#: ../src/empathy-preferences.c:726
 msgid "Juliet"
 msgstr "Džiuljeta"
 
 #. translators: Contact name for the chat theme preview
-#: ../src/empathy-preferences.c:741
+#: ../src/empathy-preferences.c:733
 msgid "Romeo"
 msgstr "Romeo"
 
 #. translators: Quote from Romeo & Julier, for chat theme preview
-#: ../src/empathy-preferences.c:747
+#: ../src/empathy-preferences.c:739
 msgid "O Romeo, Romeo, wherefore art thou Romeo?"
 msgstr "O Romeo, Romeo, todėl esi Romeo?"
 
 #. translators: Quote from Romeo & Julier, for chat theme preview
-#: ../src/empathy-preferences.c:750
+#: ../src/empathy-preferences.c:742
 msgid "Deny thy father and refuse thy name;"
 msgstr "Atsisakyk savo tėvo ir atsisakyk savo vardo;"
 
 #. translators: Quote from Romeo & Julier, for chat theme preview
-#: ../src/empathy-preferences.c:753
+#: ../src/empathy-preferences.c:745
 msgid "Or if thou wilt not, be but sworn my love"
 msgstr "O jei ne, pasilik, bet prisiek man meilę"
 
 #. translators: Quote from Romeo & Julier, for chat theme preview
-#: ../src/empathy-preferences.c:756
+#: ../src/empathy-preferences.c:748
 msgid "And I'll no longer be a Capulet."
 msgstr "Ir aš nebebūsių Capulet."
 
 #. translators: Quote from Romeo & Julier, for chat theme preview
-#: ../src/empathy-preferences.c:759
+#: ../src/empathy-preferences.c:751
 msgid "Shall I hear more, or shall I speak at this?"
 msgstr "Ar turiu išgirsti daugiau, ar turiu kalbėti apie tai?"
 
 #. translators: Quote from Romeo & Julier, for chat theme preview
-#: ../src/empathy-preferences.c:762
+#: ../src/empathy-preferences.c:754
 msgid "Juliet has disconnected"
 msgstr "Džiuljeta  atsijungė"
 
-#: ../src/empathy-preferences.c:1166
+#: ../src/empathy-preferences.c:1158
 msgid "Preferences"
 msgstr "Nustatymai"
 
@@ -4170,100 +4227,96 @@ msgstr "Įjungti šių kalbų rašybos tikrinimą:"
 msgid "General"
 msgstr "Bendra"
 
-#: ../src/empathy-preferences.ui.h:15
-msgid "Input level:"
-msgstr "Įvesties lygis:"
-
 #: ../src/empathy-preferences.ui.h:16
-msgid "Input volume:"
-msgstr "Įvesties garsumas:"
-
-#: ../src/empathy-preferences.ui.h:18
 msgid "Location sources:"
 msgstr "Vietovės šaltiniai:"
 
-#: ../src/empathy-preferences.ui.h:19
+#: ../src/empathy-preferences.ui.h:17
 msgid "Log conversations"
 msgstr "Vesti pokalbių žurnalus"
 
-#: ../src/empathy-preferences.ui.h:20
+#: ../src/empathy-preferences.ui.h:18
 msgid "Notifications"
 msgstr "Pranešimai"
 
-#: ../src/empathy-preferences.ui.h:21
+#: ../src/empathy-preferences.ui.h:19
 msgid "Play sound for events"
 msgstr "Groti garsus įvykiams"
 
-#: ../src/empathy-preferences.ui.h:22
+#: ../src/empathy-preferences.ui.h:20
 msgid "Privacy"
 msgstr "Privatumas"
 
-#: ../src/empathy-preferences.ui.h:23
+#: ../src/empathy-preferences.ui.h:21
 msgid "Reduced location accuracy means that nothing more precise than your city, state and country will be published.  GPS coordinates will be accurate to 1 decimal place."
 msgstr "Sumažinus vietovės rodymo tikslumą, bus rodomas tik jūsų miestas, sritis ir šalis. GPS koordinatės bus rodomos vieno skaičiaus po kablelio tikslumu."
 
-#: ../src/empathy-preferences.ui.h:24
+#: ../src/empathy-preferences.ui.h:22
 msgid "Show _smileys as images"
 msgstr "Rodyti š_ypsenelės kaip paveikslėlius"
 
-#: ../src/empathy-preferences.ui.h:25
+#: ../src/empathy-preferences.ui.h:23
 msgid "Show contact _list in rooms"
 msgstr "Rodyti adresatų _sąrašą kambariuose"
 
-#: ../src/empathy-preferences.ui.h:26
+#: ../src/empathy-preferences.ui.h:24
 msgid "Sounds"
 msgstr "Garsai"
 
-#: ../src/empathy-preferences.ui.h:27
+#: ../src/empathy-preferences.ui.h:25
 msgid "Spell Checking"
 msgstr "Rašybos tikrinimas"
 
-#: ../src/empathy-preferences.ui.h:28
+#: ../src/empathy-preferences.ui.h:26
 msgid "The list of languages reflects only the languages for which you have a dictionary installed."
 msgstr "Šiame kalbų sąraše yra tik tos kalbos, kurių žodynus turite įdiegę."
 
-#: ../src/empathy-preferences.ui.h:29
+#: ../src/empathy-preferences.ui.h:27
 msgid "Themes"
 msgstr "Temos"
 
-#: ../src/empathy-preferences.ui.h:30
+#: ../src/empathy-preferences.ui.h:28
+msgid "Use _echo cancellation to improve call quality"
+msgstr "Naudoti _aido šalinimą, skambučio kokybei pagerinti"
+
+#: ../src/empathy-preferences.ui.h:29
 msgid "Variant:"
 msgstr "Variantas:"
 
-#: ../src/empathy-preferences.ui.h:31
+#: ../src/empathy-preferences.ui.h:30
 msgid "_Automatically connect on startup"
 msgstr "_Automatiškai prisijungti paleidimo metu"
 
-#: ../src/empathy-preferences.ui.h:32
+#: ../src/empathy-preferences.ui.h:31
 msgid "_Cellphone"
 msgstr "_Mobilusis telefonas"
 
-#: ../src/empathy-preferences.ui.h:33
+#: ../src/empathy-preferences.ui.h:32
 msgid "_Enable bubble notifications"
 msgstr "Į_jungti burbulinius pranešimus"
 
-#: ../src/empathy-preferences.ui.h:34
+#: ../src/empathy-preferences.ui.h:33
 msgid "_Enable sound notifications"
 msgstr "Į_jungti garsinius pranešimus"
 
-#: ../src/empathy-preferences.ui.h:35
+#: ../src/empathy-preferences.ui.h:34
 msgid "_GPS"
 msgstr "_GPS"
 
-#: ../src/empathy-preferences.ui.h:36
+#: ../src/empathy-preferences.ui.h:35
 msgid "_Network (IP, Wi-Fi)"
 msgstr "_Tinklas (IP, Wi-Fi)"
 
-#: ../src/empathy-preferences.ui.h:37
+#: ../src/empathy-preferences.ui.h:36
 msgid "_Open new chats in separate windows"
 msgstr "_Atverti naujus pokalbius atskiruose languose"
 
-#: ../src/empathy-preferences.ui.h:38
+#: ../src/empathy-preferences.ui.h:37
 msgid "_Publish location to my contacts"
 msgstr "_Rodyti vietovę mano adresatams"
 
 #. To translators: The longitude and latitude are rounded to closest 0,1 degrees, so for example 146,2345° is rounded to round(146,2345*10)/10 = 146,2 degrees.
-#: ../src/empathy-preferences.ui.h:40
+#: ../src/empathy-preferences.ui.h:39
 msgid "_Reduce location accuracy"
 msgstr "_Sumažinti vietovės tikslumą"
 
@@ -4388,56 +4441,56 @@ msgstr "Lygis"
 msgid "The selected connection manager does not support the remote debugging extension."
 msgstr "Pasirinktoji ryšių valdyklė nepalaiko nuotolinio derinimo plėtinio."
 
-#: ../src/empathy-invite-participant-dialog.c:179
-#: ../src/empathy-invite-participant-dialog.c:205
+#: ../src/empathy-invite-participant-dialog.c:197
+#: ../src/empathy-invite-participant-dialog.c:225
 msgid "Invite Participant"
 msgstr "Pakviesti dalyvį"
 
-#: ../src/empathy-invite-participant-dialog.c:180
+#: ../src/empathy-invite-participant-dialog.c:198
 msgid "Choose a contact to invite into the conversation:"
 msgstr "Pasirinkite į pokalbį pakviestiną adresatą:"
 
-#: ../src/empathy-invite-participant-dialog.c:201
+#: ../src/empathy-invite-participant-dialog.c:221
 msgid "Invite"
 msgstr "Pakviesti"
 
-#: ../src/empathy-accounts.c:184
+#: ../src/empathy-accounts.c:183
 msgid "Don't display any dialogs; do any work (eg, importing) and exit"
 msgstr "Nerodyti jokių dialogų, atlikti norimas užduotis (pvz., importuoti)"
 
-#: ../src/empathy-accounts.c:188
+#: ../src/empathy-accounts.c:187
 msgid "Don't display any dialogs unless there are only \"People Nearby\" accounts"
 msgstr "Nerodyti jokių dialogų, nebent yra tik „Žmonės netoliese“ tipo paskyros"
 
-#: ../src/empathy-accounts.c:192
+#: ../src/empathy-accounts.c:191
 msgid "Initially select given account (eg, gabble/jabber/foo_40example_2eorg0)"
 msgstr "Iš pradžių pasirinkti duotąją paskyrą (pvz., gabble/jabber/foo_40pavyzdys_2eorg0)"
 
-#: ../src/empathy-accounts.c:194
+#: ../src/empathy-accounts.c:193
 msgid "<account-id>"
 msgstr "<paskyros-id>"
 
-#: ../src/empathy-accounts.c:197
+#: ../src/empathy-accounts.c:196
 msgid "Show account assistant"
 msgstr "Rodyti paskyros padėjėją"
 
-#: ../src/empathy-accounts.c:203
+#: ../src/empathy-accounts.c:202
 msgid "- Empathy Accounts"
 msgstr "– Empathy paskyros"
 
-#: ../src/empathy-accounts.c:242
+#: ../src/empathy-accounts.c:238
 msgid "Empathy Accounts"
 msgstr "Empathy paskyros"
 
-#: ../src/empathy-debugger.c:70
+#: ../src/empathy-debugger.c:69
 msgid "Show a particular service"
 msgstr "Rodyti tam tikrą tarnybą"
 
-#: ../src/empathy-debugger.c:75
+#: ../src/empathy-debugger.c:74
 msgid "- Empathy Debugger"
 msgstr "- Empathy derintuvė"
 
-#: ../src/empathy-debugger.c:114
+#: ../src/empathy-debugger.c:113
 msgid "Empathy Debugger"
 msgstr "Empathy derintuvė"
 
@@ -4445,39 +4498,39 @@ msgstr "Empathy derintuvė"
 msgid "- Empathy Chat Client"
 msgstr "– Tikralaikių pokalbių klientas Empathy"
 
-#: ../src/empathy-notifications-approver.c:203
+#: ../src/empathy-notifications-approver.c:190
 msgid "Respond"
 msgstr "Atsakyti"
 
-#: ../src/empathy-notifications-approver.c:217
-#: ../src/empathy-call-window.c:1573
+#: ../src/empathy-notifications-approver.c:204
+#: ../src/empathy-call-window.c:1565
 msgid "Reject"
 msgstr "Atmesti"
 
-#: ../src/empathy-notifications-approver.c:222
-#: ../src/empathy-notifications-approver.c:227
-#: ../src/empathy-call-window.c:1574
+#: ../src/empathy-notifications-approver.c:209
+#: ../src/empathy-notifications-approver.c:214
+#: ../src/empathy-call-window.c:1566
 msgid "Answer"
 msgstr "Atsiliepti"
 
-#: ../src/empathy-notifications-approver.c:227
+#: ../src/empathy-notifications-approver.c:214
 msgid "Answer with video"
 msgstr "Atsakyti vaizdu"
 
-#: ../src/empathy-notifications-approver.c:235
-#: ../src/empathy-notifications-approver.c:245
+#: ../src/empathy-notifications-approver.c:222
+#: ../src/empathy-notifications-approver.c:232
 msgid "Decline"
 msgstr "Atsisakyti"
 
-#: ../src/empathy-notifications-approver.c:239
-#: ../src/empathy-notifications-approver.c:250
+#: ../src/empathy-notifications-approver.c:226
+#: ../src/empathy-notifications-approver.c:237
 msgid "Accept"
 msgstr "Priimti"
 
 #. translators: the 'Provide' button is displayed in a notification
 #. * bubble when Empathy is asking for an account password; clicking on it
 #. * brings the password popup.
-#: ../src/empathy-notifications-approver.c:260
+#: ../src/empathy-notifications-approver.c:247
 msgid "Provide"
 msgstr "Teikia"
 
@@ -4488,57 +4541,54 @@ msgstr "%s ką tik jums skambino, bet tuo metu kalbėjote su kažkuo kitu."
 
 #. Translators: this is an "Info" label. It should be as short
 #. * as possible.
-#: ../src/empathy-call-window.c:1183
-#: ../src/empathy-call-window.c:1206
+#: ../src/empathy-call-window.c:1172
+#: ../src/empathy-call-window.c:1195
 msgid "i"
 msgstr "i"
 
-#: ../src/empathy-call-window.c:2889
+#: ../src/empathy-call-window.c:2925
 msgid "On hold"
 msgstr "Laukia"
 
-#: ../src/empathy-call-window.c:2892
+#: ../src/empathy-call-window.c:2928
 msgid "Mute"
 msgstr "Nutildyti"
 
-#: ../src/empathy-call-window.c:2894
+#: ../src/empathy-call-window.c:2930
 msgid "Duration"
 msgstr "Trukmė"
 
 #. Translators: 'status - minutes:seconds' the caller has been connected
-#: ../src/empathy-call-window.c:2897
+#: ../src/empathy-call-window.c:2933
 #, c-format
 msgid "%s — %d:%02dm"
 msgstr "%s — %d:%02dm"
 
-#: ../libempathy-gtk/empathy-search-bar.c:243
-msgid "_Match case"
-msgstr "Skirti raidžių _registrą"
-
-#~ msgid "Empathy has migrated butterfly logs"
-#~ msgstr "Empathy perkėlė butterfly žurnalus"
+#: ../src/empathy-call-window.c:3203
+#, c-format
+msgid "Your current balance is %s."
+msgstr "Jūsų balansas yra %s."
 
-#~ msgid "Whether Empathy has migrated butterfly logs."
-#~ msgstr "Ar Empathy perkėlė butterfly žurnalus."
-#~ msgctxt "encoding video codec"
+#: ../src/empathy-call-window.c:3207
+msgid "Sorry, you don’t have enough credit for that call."
+msgstr "Deja, jūs neturite pakankamai kreditų, kad galėtumėte paskambinti."
 
-#~ msgid "Unknown"
-#~ msgstr "Nežinoma"
-#~ msgctxt "encoding audio codec"
+#: ../src/empathy-call-window.c:3209
+msgid "Top Up"
+msgstr "Pakelti"
 
-#~ msgid "Unknown"
-#~ msgstr "Nežinoma"
-#~ msgctxt "decoding video codec"
+#: ../libempathy-gtk/empathy-search-bar.c:243
+msgid "_Match case"
+msgstr "Skirti raidžių _registrą"
 
-#~ msgid "Unknown"
-#~ msgstr "Nežinoma"
-#~ msgctxt "decoding audio codec"
+#~ msgid "Call volume"
+#~ msgstr "Skambučio garsumas"
 
-#~ msgid "Unknown"
-#~ msgstr "Nežinoma"
+#~ msgid "Call volume, as a percentage."
+#~ msgstr "Skambučio garsumas procentais."
 
-#~ msgid "Find Next"
-#~ msgstr "Ieškoti kito"
+#~ msgid "Input level:"
+#~ msgstr "Įvesties lygis:"
 
-#~ msgid "Find Previous"
-#~ msgstr "Ieškoti ankstesnio"
+#~ msgid "Input volume:"
+#~ msgstr "Įvesties garsumas:"
diff --git a/po/my.po b/po/my.po
new file mode 100644 (file)
index 0000000..344a170
--- /dev/null
+++ b/po/my.po
@@ -0,0 +1,3764 @@
+# Burmese Translations of empathy
+# Copyright (C) 2011 Myanmar L10n Team
+# This file is distributed under the same license as the above package.
+# ယဉ်မေဦး (Yin May Oo) <yinmayoo@gmail.com>, 2011.
+msgid ""
+msgstr ""
+"Project-Id-Version: Empathy\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
+"product=empathy&keywords=I18N+L10N&component=General\n"
+"POT-Creation-Date: 2011-08-15 06:45+0000\n"
+"PO-Revision-Date: 2011-08-08 21:10-0700\n"
+"Last-Translator: YinMayOo (ယဉ်မေဦး) <yinmayoo@gmail.com>\n"
+"Language-Team: Burmese <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Poedit-Language: Burmese\n"
+"X-Poedit-SourceCharset: utf-8\n"
+"X-Poedit-Country: MYANMAR\n"
+"X-Generator: Narro 0.9.4 on http://translate.libreworks.info\n"
+
+#: ../data/empathy.desktop.in.in.h:1
+msgid "Chat on Google Talk, Facebook, MSN and many other chat services"
+msgstr "Google Talk, Facebook, MSN နှင့် အခြား စကားဝိုင်းဆော့ဝဲများ သုံးပါ။"
+
+#: ../data/empathy.desktop.in.in.h:2
+msgid "Empathy"
+msgstr "အမ်ပသီ"
+
+#: ../data/empathy.desktop.in.in.h:3
+msgid "Empathy Internet Messaging"
+msgstr "အမ်ပသီ အင်တာနက် ဆက်သွယ်ရေး"
+
+#: ../data/empathy.desktop.in.in.h:4
+msgid "IM Client"
+msgstr "အိုင်အမ်ဆော့ဝဲ သုံးသူများ"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:1
+msgid "Always open a separate chat window for new chats."
+msgstr "စကားပြော စတင်တိုင်း ဝင်းဒိုးသစ် ဖွင့်ပါ။"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:2
+msgid ""
+"Character to add after nickname when using nick completion (tab) in group "
+"chat."
+msgstr "အဖွဲ့လိုက် စကားပြောရာတွင် သီးသန့်အမည် အပြည့်ခေါ်ရန် ထည့်ရမည့် သင်္ကေတ (တဘ်)"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:3
+msgid "Chat window theme"
+msgstr "စကားပြောဝင်းဒိုး သွင်ပြင်"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:4
+msgid ""
+"Comma-separated list of spell checker languages to use (e.g. \"en, fr, nl\")."
+msgstr ""
+"ကော်မာနှင့် ခြားထားသော စာလုံးပေါင်းစစ်မည့် ဘာသာစကားကို သုံးရန် (ဥပမာ - \"en, fr, nl"
+"\"). "
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:5
+msgid "Compact contact list"
+msgstr "ဆက်သွယ်ရန်စာရင်း အတိုချုံ့"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:6
+msgid "Connection managers should be used"
+msgstr "ဆက်သွယ်မှု မန်နေဂျာ ခေါ်ပါ။"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:7
+msgid "Contact list sort criterion"
+msgstr "အမည်စာရင်း စီစဉ်ရန် အခရာ အချက်"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:8
+msgid "Default directory to select an avatar image from"
+msgstr "မျက်နှာစာပုံ ရွေးရန် ပုံမှန်သတ်မှတ်ထားသော တည်နေရာလမ်းကြောင်း"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:9
+msgid "Disable popup notifications when away"
+msgstr "အဝေးရောက်ချိန်တွင် ပွင့်ထွက် အသိပေးချက်များ ခွင့်မပြု"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:10
+msgid "Disable sounds when away"
+msgstr "အဝေးရောက်ချိန်တွင် အသံများ ခွင့်မပြု"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:11
+msgid "Display incoming events in the status area"
+msgstr "ဝင်ရောက်လာသော အဖြစ်အပျက်များကို အခြေအနေပြရာတွင် ဖော်ပြပါ"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:12
+msgid ""
+"Display incoming events in the status area. If false, present them to the "
+"user immediately."
+msgstr ""
+"ဝင်ရောက်လာသော အဖြစ်အပျက်များကို အခြေအနေပြရာတွင် ဖော်ပြပါ။အမှားအယွင်း ရှိပါက "
+"သုံးစွဲသူကို ချက်ချင်းပြပါ။"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:13
+msgid "Empathy can publish the user's location"
+msgstr "သုံးစွဲသူ၏ တည်နေရာကို အမ်ပသီမှ ကြေညာနိုင်သည်"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:14
+msgid "Empathy can use the GPS to guess the location"
+msgstr "အမ်ပသီက GPS သုံးပြီး တည်နေရာကို ခန့်မှန်းနိုင်သည်"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:15
+msgid "Empathy can use the cellular network to guess the location"
+msgstr "အမ်ပသီက ဆယ်လူလာကွန်ယက် သုံးပြီး တည်နေရာကို ခန့်မှန်းနိုင်သည်"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:16
+msgid "Empathy can use the network to guess the location"
+msgstr "အမ်ပသီက ကွန်ယက် သုံးပြီး တည်နေရာကို ခန့်မှန်းနိုင်သည်"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:17
+msgid "Empathy default download folder"
+msgstr "အမ်ပသီ ပုံမှန် ဆွဲကူးဖိုင်တွဲ"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:18
+msgid "Empathy has asked about importing accounts"
+msgstr "အကောင့်များ ထည့်သွင်းရန် အမ်ပသီက မေးသည်"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:19
+msgid "Empathy has migrated butterfly logs"
+msgstr "လိပ်ပြာမှတ်တမ်းများကို အမ်ပသီက ဝင်ရောက်ခွင့် ပြုလိုက်သည်"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:20
+msgid "Empathy should auto-away when idle"
+msgstr "အမ်ပသီ ငြိမ်နေချိန်တွင် အလိုအလျောက်-အဝေး ပြောင်းပါ"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:21
+msgid "Empathy should auto-connect on startup"
+msgstr "စက် စစချင်း အမ်ပသီ အလိုအလျောက် ဆက်သွယ်ပါ"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:22
+msgid "Empathy should reduce the location's accuracy"
+msgstr "တည်နေရာတိကျမှု ကို အမ်ပသီ လျှော့ချသင့်သည် "
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:23
+msgid "Empathy should use the avatar of the contact as the chat window icon"
+msgstr "ဆက်သွယ်သူ၏ မျက်နှာစာပုံကို အမ်ပသီက စကားပြောဝင်းဒိုး အိုင်ကွန်အဖြစ် သုံးပါ"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:24
+msgid "Enable WebKit Developer Tools"
+msgstr "ဝဘ် လက်သမား ကိရိယာများကို ခွင့်ပြုပါ"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:25
+msgid "Enable popup notifications for new messages"
+msgstr "စကားအသစ် ကို သတိပေးဖို့ ပွင့်ထွက်ဝင်းဒိုး ခွင့်ပြုပါ"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:26
+msgid "Enable spell checker"
+msgstr "စာလုံးပေါင်းစစ်ခွင့်ပြုပါ"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:27
+msgid "Hide main window"
+msgstr "ပင်မဝင်းဒိုး ဖွက်ထားပါ"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:28
+msgid "Hide the main window."
+msgstr "ပင်မဝင်းဒိုး ဖွက်ထားပါ"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:29
+msgid "Nick completed character"
+msgstr "သီးသန့်အမည် စာလုံးများ ပြည့်စုံပြီ"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:30
+msgid "Open new chats in separate windows"
+msgstr "စကားဆိုမှု အသစ်များကို သီးခြားဝင်းဒိုးမှာ ဖွင့်ပါ"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:31
+msgid "Path of the Adium theme to use"
+msgstr "Adium သွင်ပြင်သုံးရန် လမ်းကြောင်း"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:32
+msgid "Path of the Adium theme to use if the theme used for chat is Adium."
+msgstr ""
+"အကယ်၍ သုံးထားသော သွင်ပြင်သည် Adium ဖြစ်လျှင် Adium သွင်ပြင်သုံးရန် လမ်းကြောင်း"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:33
+msgid "Play a sound for incoming messages"
+msgstr "ဝင်လာသော စကားအတွက် အသံဖွင့်ပါ"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:34
+msgid "Play a sound for new conversations"
+msgstr "စကားပြောအသစ်အတွက် အသံဖွင့်ပါ"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:35
+msgid "Play a sound for outgoing messages"
+msgstr "ပေးပို့မယ့် စကားအတွက် အသံဖွင့်ပါ"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:36
+msgid "Play a sound when a contact logs in"
+msgstr "ဆက်သွယ်သူ ဝင်လာလျှင် အသံဖွင့်ပါ"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:37
+msgid "Play a sound when a contact logs out"
+msgstr "ဆက်သွယ်သူ ထွက်သွားလျှင် အသံဖွင့်ပါ"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:38
+msgid "Play a sound when we log in"
+msgstr "ဝင်လာလျှင် အသံဖွင့်ပါ"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:39
+msgid "Play a sound when we log out"
+msgstr "ထွက်သွားလျှင် အသံဖွင့်ပါ"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:40
+msgid "Pop up notifications if the chat isn't focused"
+msgstr "စကားပြောရာ တစ်ခုတည်း မဟုတ်လျှင် အသိပေးချက်များ ပွင့်ထွက်ပါ"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:41
+msgid "Pop up notifications when a contact logs in"
+msgstr "ဆက်သွယ်သူ ဝင်လာလျှင် အသိပေးချက် ပွင့်ထွက်ပါ"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:42
+msgid "Pop up notifications when a contact logs out"
+msgstr "ဆက်သွယ်သူ ထွက်သွားလျှင် အသိပေးချက် ပွင့်ထွက်ပါ"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:43
+msgid "Show avatars"
+msgstr "မျက်နှာစာပုံများ ပြပါ"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:44
+msgid "Show contact list in rooms"
+msgstr "အခန်းများတွင် ဆက်သွယ်သူစာရင်း ပြပါ"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:45
+msgid "Show hint about closing the main window"
+msgstr "ပင်မဝင်းဒိုး ပိတ်ရာတွင် အချက်ပြပါ"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:46
+msgid "Show offline contacts"
+msgstr "လိုင်းပြင် ဆက်သွယ်သူများ ပြပါ"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:47
+msgid "Show protocols"
+msgstr "ပရိုတိုကောများ ပြပါ"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:48
+msgid "Spell checking languages"
+msgstr "စာလုံးပေါင်းစစ် ဘာသာစကားများ"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:49
+msgid "The default folder to save file transfers in."
+msgstr "ပြောင်းရွှေ့ဖိုင်များ သိမ်းဆည်းရန် ပုံမှန်ဖိုင်တွဲ"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:50
+msgid "The last directory that an avatar image was chosen from."
+msgstr "နောက်ဆုံးမျက်နှာစာပုံ ရွေးယူခဲ့သော နေရာ"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:51
+msgid "The position for the chat window side pane"
+msgstr "စကားပြောဝင်းဒိုး ဘေးတန်းအတွက် နေရာ"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:52
+msgid "The stored position (in pixels) of the chat window side pane."
+msgstr "စကားပြောဝင်းဒိး ဘေးတန်း၏ သတ်မှတ်ထားသော နေရာ (ပစ်ဇယ်ဖြင့်)"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:53
+msgid "The theme that is used to display the conversation in chat windows."
+msgstr "စကားပြောဝင်းဒိုးတွင် ပြန်လှန်ပြောစကားများ ဖော်ပြရန် သွင်ပြင်"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:54
+msgid "Use graphical smileys"
+msgstr "ပုံရိပ်ရုပ်ပြောင်များ သုံးပါ"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:55
+msgid "Use notification sounds"
+msgstr "အသံ အသိပေးချက်များ သုံးပါ"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:56
+msgid "Use theme for chat rooms"
+msgstr "စကားပြောခန်းများအတွက် ဤသွင်ပြင်ကို သုံးပါ"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:57
+msgid "Whether Empathy can publish the user's location to their contacts."
+msgstr "သုံးစွဲသူ၏ တည်နေရာကို ဆက်သွယ်သူများထံ သတင်း"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:58
+msgid "Whether Empathy can use the GPS to guess the location."
+msgstr "အမ်ပသီ တည်နေရာခန့်မှန်းဖို့ GPS သုံးလို့ ရမရ"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:59
+msgid "Whether Empathy can use the cellular network to guess the location."
+msgstr "အမ်ပသီ တည်နေရာခန့်မှန်းဖို့ ဆယ်လူလာကွန်ယက် သုံးလို့ ရမရ"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:60
+msgid "Whether Empathy can use the network to guess the location."
+msgstr "အမ်ပသီ တည်နေရာခန့်မှန်းဖို့ ကွန်ယက်ကို သုံးလို့ ရမရ"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:61
+msgid "Whether Empathy has asked about importing accounts from other programs."
+msgstr "အခြားပရိုဂရမ်များမှ အကောင့်များ တင်သွင်းရန် အမ်ပသီကို ခိုင်းမခိုင်း "
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:62
+msgid "Whether Empathy has migrated butterfly logs."
+msgstr "လိပ်ပြာမှတ်တမ်းများကို အမ်ပသီမှ နေရာချပေးမပေး "
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:63
+msgid "Whether Empathy should automatically log into your accounts on startup."
+msgstr "စက်စစချင်း သင့်အကောင့်များကို အမ်ပသီမှ အလိုအလျောက် ဝင်ရောက်သင့်မသင့် "
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:64
+msgid ""
+"Whether Empathy should go into away mode automatically if the user is idle."
+msgstr ""
+"အသုံးပြုခြင်း မရှိတော့လျှင် အဝေးရောက် အခြေအနေသို့ အမ်ပသီမှ အလိုအလျောက် "
+"ပြောင်းပေးသင့်မသင့် "
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:65
+msgid ""
+"Whether Empathy should reduce the location's accuracy for privacy reasons."
+msgstr "လုံခြုံရေးအရ တည်နေရာ တိကျမှုကို အမ်ပသီက လျှော့ချဖို့သင့်မသင့် "
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:66
+msgid ""
+"Whether Empathy should use the avatar of the contact as the chat window icon."
+msgstr "ဆက်သွယ်သူ၏ ကိုယ်စားရုပ်ပုံကို အမ်ပသီက စကားပြောဝင်းဒိုး၏ အိုင်ကွန်အဖြစ် သုံးသင့်မသင့်"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:67
+msgid ""
+"Whether WebKit developer tools, such as the Web Inspector, should be enabled."
+msgstr "Web Inspector ကဲ့သို့သော ကွန်ယက်ဖွဲ့တည်ဆောက်မှု တန်ဆာပလာများ သုံးခွင့် ပေးမပေး"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:68
+msgid ""
+"Whether connectivity managers should be used to automatically disconnect/"
+"reconnect."
+msgstr "ဆက်သွယ်မှုဆိုင်ရာ မန်နေဂျာမှ အလိုအလျောက် အဆက်ဖြတ်/ ပြန်ဆက် ရန် လိုမလို"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:69
+msgid ""
+"Whether to check words typed against the languages you want to check with."
+msgstr "ရိုက်လိုက်သော စာသားများကို သင်စစ်ဆေးစေလိုသော ဘာသာစကားအတိုင်း စစ်ဆေးပေးရန် လိုမလို"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:70
+msgid "Whether to convert smileys into graphical images in conversations."
+msgstr "စကားပြောရာတွင် ရုပ်ပြောင်များကို ပုံရိပ်များအဖြစ် ပြောင်းလဲပေးရန် လိုမလို"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:71
+msgid "Whether to play a sound to notify of contacts logging into the network."
+msgstr "ဆက်သွယ်သူများ လိုင်းပေါ်ရောက်လာလျှင် အချက်ပေးသံ ဖွင့်ပေးရန် လိုမလို"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:72
+msgid ""
+"Whether to play a sound to notify of contacts logging out of the network."
+msgstr "ဆက်သွယ်သူများ လိုင်းပြင်ပရောက်သွားလျှင် အချက်ပေးသံ ဖွင့်ပေးရန် လိုမလို"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:73
+msgid "Whether to play a sound to notify of events."
+msgstr "အဖြစ်အပျက်များကို အချက်ပေးဖို့ အသံဖွင့်ရန် လိုမလို"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:74
+msgid "Whether to play a sound to notify of incoming messages."
+msgstr "မက်ဆေ့အဝင် အချက်ပေးဖို့ အသံဖွင့်ရန် လိုမလို"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:75
+msgid "Whether to play a sound to notify of new conversations."
+msgstr "စကားပြောအသစ် အချက်ပေးဖို့ အသံဖွင့်ရန် လိုမလို"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:76
+msgid "Whether to play a sound to notify of outgoing messages."
+msgstr "အထွက်စကားအတွက် အသိပေးဖို့ အသံဖွင့်မဖွင့်။"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:77
+msgid "Whether to play a sound when logging into a network."
+msgstr "ကွန်ယက်လိုင်းအတွင်း ဝင်ရောက်သွားလျှင် အသံဖွင့်ရန် လိုမလို"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:78
+msgid "Whether to play a sound when logging out of a network."
+msgstr "ကွန်ယက်လိုင်းပြင် ပြန်ထွက်သွားလျှင် အသံဖွင့်ရန် လိုမလို"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:79
+msgid "Whether to play sound notifications when away or busy."
+msgstr "အဝေးရောက်၊ အလုပ်များ ချိန်များတွင် အသံပြု အသိပေးချက်များ ဖွင့်ရန် လိုမလို"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:80
+msgid "Whether to show a popup notification when a contact goes offline."
+msgstr "ဆက်သွယ်သူ လိုင်းပြင်ပ ရောက်သွားလျှင် ပွင့်ထွက်အသိပေးချက်များ ပြရန် လိုမလို"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:81
+msgid "Whether to show a popup notification when a contact goes online."
+msgstr "ဆက်သွယ်သူ လိုင်းပေါ် ရောက်လာလျှင် ပွင့်ထွက်အသိပေးချက်များ ပြရန် လိုမလို"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:82
+msgid ""
+"Whether to show a popup notification when receiving a new message even if "
+"the chat is already opened, but not focused."
+msgstr ""
+"စကားပြောဝင်းဒိုး ဖွင့်ထားသော်လည်း အာရုံမစိုက်ထားလျှင် မက်ဆေ့အသစ် လက်ခံရသည့်အခါ "
+"ပွင့်ထွက်အသိပေးချက်ပြရန် လိုမလို"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:83
+msgid "Whether to show a popup notification when receiving a new message."
+msgstr "မက်ဆေ့အသစ်များ လက်ခံရသည့်အခါ ပွင့်ထွက် အသိပေးချက် ပြရန် လိုမလို"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:84
+msgid ""
+"Whether to show avatars for contacts in the contact list and chat windows."
+msgstr ""
+"ဆက်သွယ်သူစာရင်း နှင့် စကားပြောဝင်းဒိုးများတွင် ဆက်သွယ်သူ၏ ကိုယ်စားရုပ်ပုံများ ပြရန် လိုမလို"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:85
+msgid "Whether to show contacts that are offline in the contact list."
+msgstr "ဆက်သွယ်သူစာရင်းထဲတွင် လိုင်းပြင်ပရောက် ဆက်သွယ်သူများကို ပြရန် လိုမလို"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:86
+msgid "Whether to show popup notifications when away or busy."
+msgstr "အဝေးရောက်၊ အလုပ်များ ချိန်များတွင် ပွင့်ထွက်အသိပေးချက်များ ပြရန် လိုမလို"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:87
+msgid "Whether to show protocols for contacts in the contact list."
+msgstr "ဆက်သွယ်သူစာရင်းထဲတွင် ဆက်သွယ်သူများ၏ ပရိုတိုကောများကို ပြရန် လိုမလို"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:88
+msgid "Whether to show the contact list in chat rooms."
+msgstr "စကားပြောခန်းများတွင် ဆက်သွယ်သူစာရင်းကို ပြရန် လိုမလို"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:89
+msgid "Whether to show the contact list in compact mode."
+msgstr "ဆက်သွယ်သူစာရင်းကို အတိုချုံ့ပြသင့် မသင့်"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:90
+msgid ""
+"Whether to show the message dialog about closing the main window with the "
+"'x' button in the title bar."
+msgstr ""
+"တန်ဆာပလာဘားတန်းတွင် 'x'ခလုတ်ဖြင့် ပင်မဝင်းဒိုးပိတ်သိမ်းသွားခြင်းကို စာသားဖြင့်ပြရန် "
+"လိုမလို"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:91
+msgid "Whether to use the theme for chat rooms."
+msgstr "စကားပြောခန်းများအတွက် သွင်ပြင်များကို သုံး/ မသုံး"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:92
+msgid ""
+"Which criterion to use when sorting the contact list. Default is to sort by "
+"the contact's name with the value \"name\". A value of \"state\" will sort "
+"the contact list by state."
+msgstr ""
+"ဆက်သွယ်သူစာရင်းကို စီစဉ်ရာတွင် သုံးဖို့အချက်အလက် ရွေးရန်။ပုံသေအားဖြင့် ဆက်သွယ်သူ၏ အမည် "
+"အတိုင်း စီစဉ်သည်။ဆက်သွယ်သူစာရင်းကို အခြေအနေ အတိုင်း စီစဉ်မည်။"
+
+#: ../data/empathy-accounts.desktop.in.in.h:1
+msgid "Manage Messaging and VoIP accounts"
+msgstr "စာပို့ခြင်းနှင့် VoIP အကောင့်များ စီမံပါ"
+
+#. Tweak the dialog
+#: ../data/empathy-accounts.desktop.in.in.h:2
+#: ../src/empathy-accounts-dialog.c:2156
+msgid "Messaging and VoIP Accounts"
+msgstr "စာပို့ခြင်းနှင့် VoIP အကောင့်များ"
+
+#: ../libempathy/empathy-ft-handler.c:851
+msgid "The hash of the received file and the sent one do not match"
+msgstr "လက်ခံရသောဖိုင်နှင့် ပေးပို့သောဖိုင်တို့၏ အစိတ်အပိုင်းများ မတူညီပါ။"
+
+#: ../libempathy/empathy-ft-handler.c:1111
+msgid "File transfer not supported by remote contact"
+msgstr "အဝေးရောက်ဆက်သွယ်သူမှ ဖိုင်ဝေမျှခြင်း လက်မခံပါ။"
+
+#: ../libempathy/empathy-ft-handler.c:1169
+msgid "The selected file is not a regular file"
+msgstr "ရွေးထားသောဖိုင်မှာ ပုံမှန်ဖိုင် မဟုတ်ပါ။"
+
+#: ../libempathy/empathy-ft-handler.c:1178
+msgid "The selected file is empty"
+msgstr "ရွေးထားသောဖိုင်မှာ ဘာမှမရှိပါ။"
+
+#: ../libempathy/empathy-tp-file.c:283
+msgid "Socket type not supported"
+msgstr "ဆော့ကတ်အမျိုးအစားကို လက်မခံပါ။"
+
+#: ../libempathy/empathy-tp-file.c:402
+msgid "No reason was specified"
+msgstr "အကြောင်းရင် သေချာ မဖော်ပြထား"
+
+#: ../libempathy/empathy-tp-file.c:405
+msgid "The change in state was requested"
+msgstr "အခြေအနေပြောင်းပြရန် တောင်းဆိုသည်"
+
+#: ../libempathy/empathy-tp-file.c:408
+msgid "You canceled the file transfer"
+msgstr "ဖိုင်ဝေမျှခြင်းကို သင်ရပ်ဆိုင်းလိုက်သည်"
+
+#: ../libempathy/empathy-tp-file.c:411
+msgid "The other participant canceled the file transfer"
+msgstr "ဖိုင်ဝေမျှခြင်းကို အခြားတစ်ဘက်မှ ရပ်ဆိုင်းလိုက်သည်"
+
+#: ../libempathy/empathy-tp-file.c:414
+msgid "Error while trying to transfer the file"
+msgstr "ဖိုင်ဝေမျှခြင်းပြုစဉ် ချို့ယွင်းမှုဖြစ်သည်"
+
+#: ../libempathy/empathy-tp-file.c:417
+msgid "The other participant is unable to transfer the file"
+msgstr "ဖိုင်ဝေမျှခြင်းကို အခြားတစ်ဘက်မှ မပြုလုပ်နိုင်"
+
+#: ../libempathy/empathy-tp-file.c:420 ../libempathy/empathy-utils.c:324
+msgid "Unknown reason"
+msgstr "အကြောင်းရင်း မသိရ"
+
+#: ../libempathy/empathy-utils.c:246
+msgid "Available"
+msgstr "အဆင်ပြေ"
+
+#: ../libempathy/empathy-utils.c:248
+msgid "Busy"
+msgstr "အလုပ်ရှုပ်"
+
+#: ../libempathy/empathy-utils.c:251
+msgid "Away"
+msgstr "အဝေး"
+
+#: ../libempathy/empathy-utils.c:253
+msgid "Invisible"
+msgstr "ကိုယ်ပျောက်"
+
+#: ../libempathy/empathy-utils.c:255
+msgid "Offline"
+msgstr "လိုင်းပြင်ပ"
+
+#: ../libempathy/empathy-utils.c:257 ../src/empathy-call-window.c:1903
+#: ../src/empathy-call-window.c:1904 ../src/empathy-call-window.c:1905
+#: ../src/empathy-call-window.c:1906 ../src/empathy-call-window.ui.h:18
+msgid "Unknown"
+msgstr "အမျိုးအမည်မသိ"
+
+#: ../libempathy/empathy-utils.c:296
+msgid "No reason specified"
+msgstr "အကြောင်းရင်း ဖော်ပြမထား"
+
+#: ../libempathy/empathy-utils.c:298 ../libempathy/empathy-utils.c:354
+msgid "Status is set to offline"
+msgstr "အခြေအနေကို လိုင်းပြင်ပ ဟု ပြထားသည်"
+
+#: ../libempathy/empathy-utils.c:300 ../libempathy/empathy-utils.c:334
+msgid "Network error"
+msgstr "ကွန်ယက်ချို့ယွင်းမှု"
+
+#: ../libempathy/empathy-utils.c:302 ../libempathy/empathy-utils.c:336
+msgid "Authentication failed"
+msgstr "စစ်ဆေးခြင်း မအောင်မြင်ပါ"
+
+#: ../libempathy/empathy-utils.c:304 ../libempathy/empathy-utils.c:338
+msgid "Encryption error"
+msgstr "သိမ်းဆည်းမှု ချို့ယွင်း"
+
+#: ../libempathy/empathy-utils.c:306
+msgid "Name in use"
+msgstr "အမည်တူရှိသည်"
+
+#: ../libempathy/empathy-utils.c:308 ../libempathy/empathy-utils.c:340
+msgid "Certificate not provided"
+msgstr "အသိအမှတ်ပြုလွှာ"
+
+#: ../libempathy/empathy-utils.c:310 ../libempathy/empathy-utils.c:342
+msgid "Certificate untrusted"
+msgstr "အသိအမှတ်ပြုလွှာ"
+
+#: ../libempathy/empathy-utils.c:312 ../libempathy/empathy-utils.c:344
+msgid "Certificate expired"
+msgstr "အသိအမှတ်ပြုလွှာ"
+
+#: ../libempathy/empathy-utils.c:314 ../libempathy/empathy-utils.c:346
+msgid "Certificate not activated"
+msgstr "အသိအမှတ်ပြုလွှာ"
+
+#: ../libempathy/empathy-utils.c:316 ../libempathy/empathy-utils.c:348
+msgid "Certificate hostname mismatch"
+msgstr "အသိအမှတ်ပြုလွှာ"
+
+#: ../libempathy/empathy-utils.c:318 ../libempathy/empathy-utils.c:350
+msgid "Certificate fingerprint mismatch"
+msgstr "အသိအမှတ်ပြုလွှာ"
+
+#: ../libempathy/empathy-utils.c:320 ../libempathy/empathy-utils.c:352
+msgid "Certificate self-signed"
+msgstr "အသိအမှတ်ပြုလွှာ"
+
+#: ../libempathy/empathy-utils.c:322
+msgid "Certificate error"
+msgstr "အသိအမှတ်ပြုလွှာ"
+
+#: ../libempathy/empathy-utils.c:356
+msgid "Encryption is not available"
+msgstr "အသိအမှတ်ပြုလွှာ"
+
+#: ../libempathy/empathy-utils.c:358
+msgid "Certificate is invalid"
+msgstr "အသိအမှတ်ပြုလွှာ"
+
+#: ../libempathy/empathy-utils.c:360
+msgid "Connection has been refused"
+msgstr "ဆက်သွယ်မှုကို ငြင်းပယ်ခံရသည်"
+
+#: ../libempathy/empathy-utils.c:362
+msgid "Connection can't be established"
+msgstr "ဆက်သွယ်မှုကို လမ်းခင်းမရပါ"
+
+#: ../libempathy/empathy-utils.c:364
+msgid "Connection has been lost"
+msgstr "ဆက်သွယ်မှုပျောက်ဆုံး"
+
+#: ../libempathy/empathy-utils.c:366
+msgid "This resource is already connected to the server"
+msgstr "ပင်ရင်းမှ ဆာဗာကို ချိတ်ဆက်ပြီး"
+
+#: ../libempathy/empathy-utils.c:368
+msgid ""
+"Connection has been replaced by a new connection using the same resource"
+msgstr "လက်ရှိပင်ရင်းမှ  ဆက်သွယ်မှုအသစ် အစားထိုးလိုက်သည်"
+
+#: ../libempathy/empathy-utils.c:371
+msgid "The account already exists on the server"
+msgstr "ဆာဗာပေါ်တွင် အကောင့်ရှိပြီးသား ဖြစ်သည်"
+
+#: ../libempathy/empathy-utils.c:373
+msgid "Server is currently too busy to handle the connection"
+msgstr "ဆာဗာသည် ဆက်သွယ်မှုကို မဆောင်ရွက်နိုင်အောင် အလုပ်များနေသည်"
+
+#: ../libempathy/empathy-utils.c:375
+msgid "Certificate has been revoked"
+msgstr "အသိအမှတ်ပြုလွှာကို ရုတ်သိမ်းခံရသည်"
+
+#: ../libempathy/empathy-utils.c:377
+msgid ""
+"Certificate uses an insecure cipher algorithm or is cryptographically weak"
+msgstr "အသိအမှတ်ပြုလွှာ"
+
+#: ../libempathy/empathy-utils.c:380
+msgid ""
+"The length of the server certificate, or the depth of the server certificate "
+"chain, exceed the limits imposed by the cryptography library"
+msgstr "အသိအမှတ်ပြုလွှာ"
+
+#: ../libempathy/empathy-utils.c:544
+#: ../libempathy-gtk/empathy-contact-list-store.h:73
+msgid "People Nearby"
+msgstr "အနီးအနားရှိသူများ"
+
+#: ../libempathy/empathy-utils.c:549
+msgid "Yahoo! Japan"
+msgstr "Yahoo! ဂျပန်"
+
+#: ../libempathy/empathy-utils.c:550
+msgid "Facebook Chat"
+msgstr "Facebook စကားပြောခန်း"
+
+#: ../libempathy/empathy-time.c:137
+#, c-format
+msgid "%d second ago"
+msgid_plural "%d seconds ago"
+msgstr[0] "ပြီးခဲ့တဲ့ %Id စက္ကန့်"
+
+#: ../libempathy/empathy-time.c:142
+#, c-format
+msgid "%d minute ago"
+msgid_plural "%d minutes ago"
+msgstr[0] "ပြီးခဲ့တဲ့ %Id မိနစ်"
+
+#: ../libempathy/empathy-time.c:147
+#, c-format
+msgid "%d hour ago"
+msgid_plural "%d hours ago"
+msgstr[0] "ပြီးခဲ့တဲ့ %Id နာရီ"
+
+#: ../libempathy/empathy-time.c:152
+#, c-format
+msgid "%d day ago"
+msgid_plural "%d days ago"
+msgstr[0] "ပြီးခဲ့တဲ့ %Id ရက်"
+
+#: ../libempathy/empathy-time.c:157
+#, c-format
+msgid "%d week ago"
+msgid_plural "%d weeks ago"
+msgstr[0] "ပြီးခဲ့တဲ့ %Id သီတင်းပါတ်"
+
+#: ../libempathy/empathy-time.c:162
+#, c-format
+msgid "%d month ago"
+msgid_plural "%d months ago"
+msgstr[0] "ပြီးခဲ့တဲ့ %Id လ"
+
+#: ../libempathy/empathy-time.c:167
+msgid "in the future"
+msgstr "အနာဂါတ်မှာ"
+
+#: ../libempathy-gtk/empathy-account-chooser.c:463
+msgid "All"
+msgstr "အားလုံး"
+
+#: ../libempathy-gtk/empathy-account-widget.c:514
+#: ../libempathy-gtk/empathy-log-window.c:646
+#: ../src/empathy-import-widget.c:312
+msgid "Account"
+msgstr "အကောင့်"
+
+#: ../libempathy-gtk/empathy-account-widget.c:515
+msgid "Password"
+msgstr "စကားဝှက်"
+
+#: ../libempathy-gtk/empathy-account-widget.c:516
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:507
+msgid "Server"
+msgstr "ဆာဗာ"
+
+#: ../libempathy-gtk/empathy-account-widget.c:517
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:522
+msgid "Port"
+msgstr "ဆုံမှတ် (ဆက်သွယ်ပေါက်)"
+
+#: ../libempathy-gtk/empathy-account-widget.c:589
+#: ../libempathy-gtk/empathy-account-widget.c:646
+#, c-format
+msgid "%s:"
+msgstr "%s -"
+
+#: ../libempathy-gtk/empathy-account-widget.c:1192
+msgid "Username:"
+msgstr "သုံးစွဲသူအမည် -"
+
+#: ../libempathy-gtk/empathy-account-widget.c:1521
+msgid "A_pply"
+msgstr "_P အတည်ပြု"
+
+#: ../libempathy-gtk/empathy-account-widget.c:1551
+msgid "L_og in"
+msgstr "_O ဝင်"
+
+#. Account and Identifier
+#: ../libempathy-gtk/empathy-account-widget.c:1617
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:2
+#: ../libempathy-gtk/empathy-individual-widget.c:1401
+#: ../libempathy-gtk/empathy-contact-selector-dialog.ui.h:1
+#: ../src/empathy-chatrooms-window.ui.h:1
+#: ../src/empathy-new-chatroom-dialog.ui.h:1
+msgid "Account:"
+msgstr "အကောင့် -"
+
+#: ../libempathy-gtk/empathy-account-widget.c:1628
+msgid "_Enabled"
+msgstr "_E ခွင့်ပြု"
+
+#: ../libempathy-gtk/empathy-account-widget.c:1693
+msgid "This account already exists on the server"
+msgstr "ဤအကောင့်သည် ဆာဗာပေါ်တွင် ရှိပြီးဖြစ်သည်"
+
+#: ../libempathy-gtk/empathy-account-widget.c:1696
+msgid "Create a new account on the server"
+msgstr "ဆာဗာပေါ်တွင် အကောင့်အသစ် ဖွင့်ပါ"
+
+#: ../libempathy-gtk/empathy-account-widget.c:1789
+msgid "Ca_ncel"
+msgstr "_N  နေတော့"
+
+#. To translators: The first parameter is the login id and the
+#. * second one is the network. The resulting string will be something
+#. * like: "MyUserName on freenode".
+#. * You should reverse the order of these arguments if the
+#. * server should come before the login id in your locale.
+#: ../libempathy-gtk/empathy-account-widget.c:2077
+#, c-format
+msgid "%1$s on %2$s"
+msgstr "%2$s ပေါ်တွင် %1$s"
+
+#. To translators: The parameter is the protocol name. The resulting
+#. * string will be something like: "Jabber Account"
+#: ../libempathy-gtk/empathy-account-widget.c:2103
+#, c-format
+msgid "%s Account"
+msgstr "%s အကောင့်"
+
+#: ../libempathy-gtk/empathy-account-widget.c:2107
+msgid "New account"
+msgstr "အကောင့်အသစ်"
+
+#: ../libempathy-gtk/empathy-account-widget-aim.ui.h:1
+msgid "<b>Example:</b> MyScreenName"
+msgstr "<b>ဥပမာ:</b> စခရင်အမည်"
+
+#: ../libempathy-gtk/empathy-account-widget-aim.ui.h:2
+#: ../libempathy-gtk/empathy-account-widget-generic.ui.h:1
+#: ../libempathy-gtk/empathy-account-widget-groupwise.ui.h:2
+#: ../libempathy-gtk/empathy-account-widget-icq.ui.h:2
+#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:3
+#: ../libempathy-gtk/empathy-account-widget-msn.ui.h:2
+#: ../libempathy-gtk/empathy-account-widget-local-xmpp.ui.h:1
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:2
+#: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:2
+msgid "Advanced"
+msgstr "အဆင့်မြင့်"
+
+#: ../libempathy-gtk/empathy-account-widget-aim.ui.h:3
+#: ../libempathy-gtk/empathy-account-widget-groupwise.ui.h:4
+#: ../libempathy-gtk/empathy-account-widget-icq.ui.h:5
+#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:8
+#: ../libempathy-gtk/empathy-account-widget-msn.ui.h:4
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:12
+#: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:5
+msgid "Pass_word:"
+msgstr "_W  စကားဝှက်"
+
+#: ../libempathy-gtk/empathy-account-widget-aim.ui.h:4
+msgid "Screen _Name:"
+msgstr "_N ရုပ်ပြအမည် -"
+
+#: ../libempathy-gtk/empathy-account-widget-aim.ui.h:5
+msgid "What is your AIM password?"
+msgstr "AIM စကားဝှက် သွင်းပါ"
+
+#: ../libempathy-gtk/empathy-account-widget-aim.ui.h:6
+msgid "What is your AIM screen name?"
+msgstr "AIM ရုပ်ပြအမည် သွင်းပါ"
+
+#: ../libempathy-gtk/empathy-account-widget-aim.ui.h:7
+#: ../libempathy-gtk/empathy-account-widget-groupwise.ui.h:7
+#: ../libempathy-gtk/empathy-account-widget-icq.ui.h:8
+#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:24
+#: ../libempathy-gtk/empathy-account-widget-msn.ui.h:7
+#: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:9
+msgid "_Port:"
+msgstr "_P ဆက်သွယ်ပေါက် -"
+
+#: ../libempathy-gtk/empathy-account-widget-aim.ui.h:8
+#: ../libempathy-gtk/empathy-account-widget-groupwise.ui.h:8
+#: ../libempathy-gtk/empathy-account-widget-icq.ui.h:9
+#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:25
+#: ../libempathy-gtk/empathy-account-widget-msn.ui.h:8
+#: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:11
+#: ../src/empathy-new-chatroom-dialog.ui.h:9
+msgid "_Server:"
+msgstr "_S ဆာဗာ -"
+
+#: ../libempathy-gtk/empathy-account-widget-groupwise.ui.h:1
+#: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:1
+msgid "<b>Example:</b> username"
+msgstr "<b>ဥပမာ:</b> သုံးစွဲသူအမည်"
+
+#: ../libempathy-gtk/empathy-account-widget-groupwise.ui.h:3
+#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:6
+#: ../libempathy-gtk/empathy-account-widget-msn.ui.h:3
+msgid "Login I_D:"
+msgstr "_D ဝင်ရောက်ရန် အမည် -"
+
+#: ../libempathy-gtk/empathy-account-widget-groupwise.ui.h:5
+msgid "What is your GroupWise User ID?"
+msgstr "GroupWise အမည် သွင်းပါ"
+
+#: ../libempathy-gtk/empathy-account-widget-groupwise.ui.h:6
+msgid "What is your GroupWise password?"
+msgstr "GroupWise စကားဝှက် သွင်းပါ"
+
+#: ../libempathy-gtk/empathy-account-widget-icq.ui.h:1
+msgid "<b>Example:</b> 123456789"
+msgstr "<b>ဥပမာ:</b> ၁၂၃၄၅၆၇၈၉"
+
+#: ../libempathy-gtk/empathy-account-widget-icq.ui.h:3
+#: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:3
+msgid "Ch_aracter set:"
+msgstr "_A  သင်္ကေတ သတ်မှတ်ချက် -"
+
+#: ../libempathy-gtk/empathy-account-widget-icq.ui.h:4
+msgid "ICQ _UIN:"
+msgstr "_U ICQ အမည်"
+
+#: ../libempathy-gtk/empathy-account-widget-icq.ui.h:6
+msgid "What is your ICQ UIN?"
+msgstr "ICQ အမည် သွင်းပါ"
+
+#: ../libempathy-gtk/empathy-account-widget-icq.ui.h:7
+msgid "What is your ICQ password?"
+msgstr "ICQ စကားဝှက် သွင်းပါ"
+
+#: ../libempathy-gtk/empathy-account-widget-sip.c:183
+#: ../libempathy-gtk/empathy-account-widget-sip.c:216
+msgid "Auto"
+msgstr "အလိုအလျောက်"
+
+#: ../libempathy-gtk/empathy-account-widget-sip.c:186
+msgid "UDP"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-account-widget-sip.c:189
+msgid "TCP"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-account-widget-sip.c:192
+msgid "TLS"
+msgstr ""
+
+#. translators: this string is very specific to SIP's internal; maybe
+#. * best to keep the English version.
+#: ../libempathy-gtk/empathy-account-widget-sip.c:221
+msgid "Register"
+msgstr "မှတ်ပုံတင်"
+
+#. translators: this string is very specific to SIP's internal; maybe
+#. * best to keep the English version.
+#: ../libempathy-gtk/empathy-account-widget-sip.c:226
+msgid "Options"
+msgstr "ရွေးစရာများ"
+
+#: ../libempathy-gtk/empathy-account-widget-sip.c:229
+msgid "None"
+msgstr "ဘာမှမရွေး"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:1
+msgid "Character set:"
+msgstr "သင်္ကေတ အတွဲ - "
+
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:2
+msgid "Network"
+msgstr "ကွန်ယက်"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:3
+msgid "Network:"
+msgstr "ကွန်ယက် - "
+
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:4
+msgid "Nickname:"
+msgstr "သီးသန့်အမည် - "
+
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:5
+msgid "Password:"
+msgstr "စကားဝှက် - "
+
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:6
+msgid "Quit message:"
+msgstr "နှုတ်ဆက် စကား - "
+
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:7
+msgid "Real name:"
+msgstr "အမည်ရင်း - "
+
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:8
+msgid "Servers"
+msgstr "ဆာဗာ"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:9
+msgid "What is your IRC nickname?"
+msgstr "သင်၏ IRC သီးသန့်အမည် ကို ဖော်ပြပါ?"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:10
+msgid "Which IRC network?"
+msgstr "သင်၏ IRC ကွန်ယက် ကို ဖော်ပြပါ?"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:1
+msgid "<b>Example:</b> user@gmail.com"
+msgstr "<b>ဥပမာ:</b> user@gmail.com"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:2
+msgid "<b>Example:</b> user@jabber.org"
+msgstr "<b>ဥပမာ:</b> user@gmail.com"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:4
+msgid "Encr_yption required (TLS/SSL)"
+msgstr "_Y သိမ်းထုတ်ခြင်းစနစ် လိုအပ်သော(TLS/SSL)"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:5
+msgid "I_gnore SSL certificate errors"
+msgstr "_G  SSL အသိအမှတ်ပြုလွှာ ချို့ယွင်းချက်များ မသိချင်ပါ"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:7
+msgid "Override server settings"
+msgstr "ဆာဗာ ဆက်တင်ပေါ်ကို ထပ်သွားပြင်ပါ"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:9
+msgid "Priori_ty:"
+msgstr "_T  ဦးစားပေး"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:10
+msgid "Reso_urce:"
+msgstr "_U  သယံဇာတ"
+
+#. This string is not wrapped in the dialog so you may have to add some '\n' to make it look nice.
+#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:12
+msgid ""
+"This is your username, not your normal Facebook login.\n"
+"If you are facebook.com/<b>badger</b>, enter <b>badger</b>.\n"
+"Use <a href=\"http://www.facebook.com/username/\">this page</a> to choose a "
+"Facebook username if you don't have one."
+msgstr ""
+"This is your username, not your normal Facebook login.\n"
+"If you are facebook.com/<b>badger</b>, enter <b>badger</b>.\n"
+"Use <a href=\"http://www.facebook.com/username/\">this page</a> to choose a "
+"Facebook username if you don't have one."
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:15
+msgid "Use old SS_L"
+msgstr "_L SSL အဟောင်းကို သုံးပါ"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:16
+msgid "What is your Facebook password?"
+msgstr "Facebook စကားဝှက် သွင်းပါ"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:17
+msgid "What is your Facebook username?"
+msgstr "Facebook အသုံးပြအမည် သွင်းပါ"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:18
+msgid "What is your Google ID?"
+msgstr "Google အမည် သွင်းပါ"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:19
+msgid "What is your Google password?"
+msgstr "Google စကားဝှက် သွင်းပါ"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:20
+msgid "What is your Jabber ID?"
+msgstr "Jabber အမည် သွင်းပါ"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:21
+msgid "What is your Jabber password?"
+msgstr "Jabber စကားဝှက် သွင်းပါ"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:22
+msgid "What is your desired Jabber ID?"
+msgstr "သုံးလိုသည့် Jabber အမည် သွင်းပါ"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:23
+msgid "What is your desired Jabber password?"
+msgstr "သုံးလိုသည့် Jabber စကားဝှက် သွင်းပါ"
+
+#: ../libempathy-gtk/empathy-account-widget-msn.ui.h:1
+msgid "<b>Example:</b> user@hotmail.com"
+msgstr "<b>ဥပမာ:</b> user@hotmail.com"
+
+#: ../libempathy-gtk/empathy-account-widget-msn.ui.h:5
+msgid "What is your Windows Live ID?"
+msgstr "Windows Live အမည် သွင်းပါ"
+
+#: ../libempathy-gtk/empathy-account-widget-msn.ui.h:6
+msgid "What is your Windows Live password?"
+msgstr "Windows Live စကားဝှက် သွင်းပါ"
+
+#: ../libempathy-gtk/empathy-account-widget-local-xmpp.ui.h:2
+msgid "E-_mail address:"
+msgstr "_M  လျှပ်လိပ်စာ - "
+
+#: ../libempathy-gtk/empathy-account-widget-local-xmpp.ui.h:3
+msgid "Nic_kname:"
+msgstr "_K  သီးသန့်အမည်"
+
+#: ../libempathy-gtk/empathy-account-widget-local-xmpp.ui.h:4
+msgid "_First Name:"
+msgstr "_F အမည် အစစာလုံး"
+
+#: ../libempathy-gtk/empathy-account-widget-local-xmpp.ui.h:5
+msgid "_Jabber ID:"
+msgstr "_J abber အမည် -"
+
+#: ../libempathy-gtk/empathy-account-widget-local-xmpp.ui.h:6
+msgid "_Last Name:"
+msgstr "_L အမည် နောက်ဆုံးစာလုံး"
+
+#: ../libempathy-gtk/empathy-account-widget-local-xmpp.ui.h:7
+msgid "_Published Name:"
+msgstr "_P အများမြင်ရသည့် အမည်"
+
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:1
+msgid "<b>Example:</b> user@my.sip.server"
+msgstr "<b>ဥပမာ:</b> user@my.sip.server"
+
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:3
+msgid "Authentication username:"
+msgstr "ခွင့်ပြုထားသော သုံးစွဲသူအမည်"
+
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:4
+msgid "Discover Binding"
+msgstr "တွဲချည်ထားသည်များ လိုက်ရှာပါ"
+
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:5
+msgid "Discover the STUN server automatically"
+msgstr "STUN ဆာဗာကို အလိုအလျောက် လိုက်ရှာပါ"
+
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:6
+msgid "Interval (seconds)"
+msgstr "အချိန်ပိုင်း (စက္ကန့်)"
+
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:7
+msgid "Keep-Alive Options"
+msgstr "အမြဲတမ်း ရွေးစရာများ"
+
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:8
+msgid "Loose Routing"
+msgstr "အတည်မရှိလမ်းကြောင်း"
+
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:9
+msgid "Mechanism:"
+msgstr "မက္ကင်းနစ် - "
+
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:10
+msgid "Miscellaneous Options"
+msgstr "ထွေလီကာလီ ရွေးစရာများ"
+
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:11
+msgid "NAT Traversal Options"
+msgstr "NAT Traversal ရွေးစရာများ"
+
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:13
+msgid "Port:"
+msgstr "ဆက်သွယ်ပေါက်"
+
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:14
+msgid "Proxy Options"
+msgstr "ပရောက်ဆီ ရွေးစရာများ"
+
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:15
+msgid "STUN Server:"
+msgstr "STUN ဆာဗာ - "
+
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:16
+msgid "Server:"
+msgstr "ဆာဗာ - "
+
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:17
+msgid "Transport:"
+msgstr "ပို့ဆောင်ရေး -"
+
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:18
+msgid "What is your SIP account password?"
+msgstr "SIP အကောင့် စကားဝှက် သွင်းပါ"
+
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:19
+msgid "What is your SIP login ID?"
+msgstr "SIP အကောင့် အမည် သွင်းပါ"
+
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:20
+msgid "_Username:"
+msgstr "_U သုံးစွဲသူအမည် -"
+
+#: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:4
+msgid "I_gnore conference and chat room invitations"
+msgstr "_G  ဆွေးနွေးပွဲ၊ စကားပြောခန်း ဖိတ်ကြားချက်များကို မသိချင်ပါ"
+
+#: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:6
+msgid "What is your Yahoo! ID?"
+msgstr "Yahoo! အမည် သွင်းပါ"
+
+#: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:7
+msgid "What is your Yahoo! password?"
+msgstr "Yahoo! စကားဝှက် သွင်းပါ"
+
+#: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:8
+msgid "Yahoo! I_D:"
+msgstr "_D Yahoo! အမည် "
+
+#: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:10
+msgid "_Room List locale:"
+msgstr "_R အခန်းစာရင်း နေရာ-"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:443
+#: ../libempathy-gtk/empathy-avatar-chooser.c:519
+msgid "Couldn't convert image"
+msgstr "ပုံကို ပြောင်းလို့မရပါ"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:444
+msgid "None of the accepted image formats are supported on your system"
+msgstr "မည်သည့် ပုံအမျိုးအစားကိုမှ သင်၏စနစ်က လက်မခံပါ"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:935
+msgid "Select Your Avatar Image"
+msgstr "မျက်နှာစာပုံ ရွေးချယ်ပါ"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:938
+msgid "No Image"
+msgstr "ပုံ မရှိ"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:1000
+msgid "Images"
+msgstr "ပုံများ"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:1004
+msgid "All Files"
+msgstr "ဖိုင်များအားလုံး"
+
+#: ../libempathy-gtk/empathy-avatar-image.c:323
+msgid "Click to enlarge"
+msgstr "အကျယ်ချဲ့ဖို့ ကလစ်ပါ"
+
+#: ../libempathy-gtk/empathy-chat.c:642
+msgid "Failed to open private chat"
+msgstr "သီးခြားစကားပြောကွက် ဖွင့်လို့မရပါ"
+
+#: ../libempathy-gtk/empathy-chat.c:682
+msgid "Topic not supported on this conversation"
+msgstr "စကားပြောရာတွင် ဤခေါင်းစဉ်ကို လက်မခံပါ"
+
+#: ../libempathy-gtk/empathy-chat.c:688
+msgid "You are not allowed to change the topic"
+msgstr "ဤခေါင်းစဉ်ကို သင် မပြောင်းလဲနိုင်ပါ"
+
+#: ../libempathy-gtk/empathy-chat.c:822
+msgid "/clear: clear all messages from the current conversation"
+msgstr "/clear - အခုစကားပြောရာမှ စာကြောင်းများအားလုံး ရှင်းလင်းပါ"
+
+#: ../libempathy-gtk/empathy-chat.c:825
+msgid "/topic <topic>: set the topic of the current conversation"
+msgstr "/topic <topic> - အခုစကားပြောရာမှာ ခေါင်းစဉ်တင်ပါ"
+
+#: ../libempathy-gtk/empathy-chat.c:828
+msgid "/join <chat room ID>: join a new chat room"
+msgstr "/join <chat room ID> - စကားပြောခန်းအသစ်မှာ ပါဝင်"
+
+#: ../libempathy-gtk/empathy-chat.c:831
+msgid "/j <chat room ID>: join a new chat room"
+msgstr "/j <chat room ID> - စကားပြောခန်းအသစ်မှာ ပါဝင်"
+
+#: ../libempathy-gtk/empathy-chat.c:836
+msgid "/query <contact ID> [<message>]: open a private chat"
+msgstr "/query <contact ID> [<message>]: သီးခြား စကားပြောခန်း ဖွင့်ပါ"
+
+#: ../libempathy-gtk/empathy-chat.c:839
+msgid "/msg <contact ID> <message>: open a private chat"
+msgstr "/msg <contact ID> <message>: သီးခြား စကားပြောခန်း ဖွင့်ပါ"
+
+#: ../libempathy-gtk/empathy-chat.c:843
+msgid "/nick <nickname>: change your nickname on the current server"
+msgstr "/nick <nickname>: လက်ရှိဆာဗာပေါ်မှ သီးသန့်အမည်ကို ပြောင်းပါ"
+
+#: ../libempathy-gtk/empathy-chat.c:846
+msgid "/me <message>: send an ACTION message to the current conversation"
+msgstr "/me <message>: လက်ရှိ စကားပြောရာကို အဖြစ်အပျက်အကြောင်းစာပို့"
+
+#: ../libempathy-gtk/empathy-chat.c:849
+msgid ""
+"/say <message>: send <message> to the current conversation. This is used to "
+"send a message starting with a '/'. For example: \"/say /join is used to "
+"join a new chat room\""
+msgstr ""
+"/say <message>: လက်ရှိ စကားပြောရာကို <message> ပေးပို့သည်။  ' /' နှင့် အစပြုသော "
+"စာသားများကို ပေးပို့ရာတွင် ဤအမိန့်ပေးချက်ကို သုံးသည်။ဥပမာ -  \"/say /join ကိုသုံးပြီး "
+"စကားပြောခန်းအသစ်မှာ ပါဝင်နိုင်တယ်။\" "
+
+#: ../libempathy-gtk/empathy-chat.c:854
+msgid ""
+"/help [<command>]: show all supported commands. If <command> is defined, "
+"show its usage."
+msgstr ""
+"/help [<command>]: လက်ခံနိုင်သည့် အမိန့်ပေးချက်များ အားလုံးပြသည်။ အကယ်၍ <command> "
+"အတိအကျရှိလျှင် အသုံးပြုနည်း ပြသည်။"
+
+#: ../libempathy-gtk/empathy-chat.c:864
+#, c-format
+msgid "Usage: %s"
+msgstr "သုံးစွဲမှု: %s"
+
+#: ../libempathy-gtk/empathy-chat.c:893
+msgid "Unknown command"
+msgstr "အမျိုးအမည်မသိ တောင်းဆိုချက်"
+
+#: ../libempathy-gtk/empathy-chat.c:1014
+msgid "Unknown command; see /help for the available commands"
+msgstr "အမျိုးအမည်မသိ တောင်းဆိုချက် - ပေးနိုင်သော တောင်းဆိုချက်များကို /အကူအညီ တွင် ကြည့်ပါ"
+
+#: ../libempathy-gtk/empathy-chat.c:1152
+msgid "offline"
+msgstr "လိုင်းပြင်"
+
+#: ../libempathy-gtk/empathy-chat.c:1155
+msgid "invalid contact"
+msgstr "စည်းကမ်းနှင့်မညီသော အမည်"
+
+#: ../libempathy-gtk/empathy-chat.c:1158
+msgid "permission denied"
+msgstr "ခွင့်ပြုရင် ငြင်းပယ်သည်"
+
+#: ../libempathy-gtk/empathy-chat.c:1161
+msgid "too long message"
+msgstr "စကား အလွန်ရှည်သည်"
+
+#: ../libempathy-gtk/empathy-chat.c:1164
+msgid "not implemented"
+msgstr "မတည်ဆောက်ခဲ့ပါ"
+
+#: ../libempathy-gtk/empathy-chat.c:1168
+msgid "unknown"
+msgstr "အမျိုးအမည်မသိ"
+
+#: ../libempathy-gtk/empathy-chat.c:1172
+#, c-format
+msgid "Error sending message '%s': %s"
+msgstr "စကား ပို့ရာတွင် ချို့ယွင်းမှု '%s': %s"
+
+#: ../libempathy-gtk/empathy-chat.c:1282 ../src/empathy-chat-window.c:691
+msgid "Topic:"
+msgstr "ခေါင်းစဉ် -"
+
+#: ../libempathy-gtk/empathy-chat.c:1294
+#, c-format
+msgid "Topic set to: %s"
+msgstr "ပေးထားသော ခေါင်းစဉ် - %s"
+
+#: ../libempathy-gtk/empathy-chat.c:1296
+msgid "No topic defined"
+msgstr "ခေါင်းစဉ် မရှိပါ"
+
+#: ../libempathy-gtk/empathy-chat.c:1775
+msgid "(No Suggestions)"
+msgstr "(အကြံမပြုထားပါ)"
+
+#: ../libempathy-gtk/empathy-chat.c:1829
+msgid "Insert Smiley"
+msgstr "ရုပ်ပြောင်များထည့်ပါ"
+
+#. send button
+#: ../libempathy-gtk/empathy-chat.c:1847
+#: ../libempathy-gtk/empathy-ui-utils.c:1808
+msgid "_Send"
+msgstr "_S ပေးပို့"
+
+#: ../libempathy-gtk/empathy-chat.c:1881
+msgid "_Spelling Suggestions"
+msgstr "_S စာလုံးပေါင်းအကြံပြု"
+
+#: ../libempathy-gtk/empathy-chat.c:1959
+msgid "Failed to retrieve recent logs"
+msgstr "လောလောဆယ် မှတ်တမ်းများကို ပြတ်ထုတ်ယူဖို့ မအောင်မြင်ပါ"
+
+#: ../libempathy-gtk/empathy-chat.c:2065
+#, c-format
+msgid "%s has disconnected"
+msgstr "%s အဆက်အသွယ် ပြတ်သွားပြီ"
+
+#. translators: reverse the order of these arguments
+#. * if the kicked should come before the kicker in your locale.
+#.
+#: ../libempathy-gtk/empathy-chat.c:2072
+#, c-format
+msgid "%1$s was kicked by %2$s"
+msgstr "%1$s သည် %2$s ကန်ထုတ်ခံရသည်"
+
+#: ../libempathy-gtk/empathy-chat.c:2075
+#, c-format
+msgid "%s was kicked"
+msgstr "%s ကန်ထုတ်ခံရသည်"
+
+#. translators: reverse the order of these arguments
+#. * if the banned should come before the banner in your locale.
+#.
+#: ../libempathy-gtk/empathy-chat.c:2083
+#, c-format
+msgid "%1$s was banned by %2$s"
+msgstr "%1$s သည် %2$s မှ ပိတ်ပင်ခံရသည်"
+
+#: ../libempathy-gtk/empathy-chat.c:2086
+#, c-format
+msgid "%s was banned"
+msgstr "%s ပိတ်ပင်ခံရသည်"
+
+#: ../libempathy-gtk/empathy-chat.c:2090
+#, c-format
+msgid "%s has left the room"
+msgstr "%s အခန်းမှ ထွက်သွားသည်"
+
+#. Note to translators: this string is appended to
+#. * notifications like "foo has left the room", with the message
+#. * given by the user living the room. If this poses a problem,
+#. * please let us know. :-)
+#.
+#: ../libempathy-gtk/empathy-chat.c:2099
+#, c-format
+msgid " (%s)"
+msgstr " (%s)"
+
+#: ../libempathy-gtk/empathy-chat.c:2124
+#, c-format
+msgid "%s has joined the room"
+msgstr "%s အခန်းထဲ ဝင်လာပြီ"
+
+#: ../libempathy-gtk/empathy-chat.c:2149
+#, c-format
+msgid "%s is now known as %s"
+msgstr "%s သည် %s ဖြစ်သည်"
+
+#: ../libempathy-gtk/empathy-chat.c:2288 ../src/empathy-call-window.c:1947
+msgid "Disconnected"
+msgstr "ချိတ်ဆက် ပြတ်သွားသည်"
+
+#: ../libempathy-gtk/empathy-chat.c:2935
+msgid "Wrong password; please try again:"
+msgstr "စာဝှက် မှားသည်။ ထပ်ကြိုးစားကြည့်ပါ။"
+
+#: ../libempathy-gtk/empathy-chat.c:2936
+msgid "Retry"
+msgstr "ထပ်ကြိုးစား"
+
+#: ../libempathy-gtk/empathy-chat.c:2941
+msgid "This room is protected by a password:"
+msgstr "သည်အခန်းကို စာဝှက်ဖြင့် ကာကွယ်ထားသည်"
+
+#: ../libempathy-gtk/empathy-chat.c:2942
+msgid "Join"
+msgstr "ပူးပေါင်း"
+
+#: ../libempathy-gtk/empathy-chat.c:3082
+msgid "Connected"
+msgstr "ဆက်သွယ်ထား"
+
+#: ../libempathy-gtk/empathy-chat.c:3135
+#: ../libempathy-gtk/empathy-log-window.c:653
+msgid "Conversation"
+msgstr "စကားပြောဆိုမှု"
+
+#. Copy Link Address menu item
+#: ../libempathy-gtk/empathy-chat-text-view.c:324
+#: ../libempathy-gtk/empathy-theme-adium.c:791
+msgid "_Copy Link Address"
+msgstr "_C လင့်ခ် လိပ်စာ ကူးပါ"
+
+#. Open Link menu item
+#: ../libempathy-gtk/empathy-chat-text-view.c:331
+#: ../libempathy-gtk/empathy-theme-adium.c:798
+msgid "_Open Link"
+msgstr "_O လင့်ခ် ဖွင့်"
+
+#. Translators: timestamp displayed between conversations in
+#. * chat windows (strftime format string)
+#: ../libempathy-gtk/empathy-chat-text-view.c:424
+msgid "%A %B %d %Y"
+msgstr "%A %B %Id %Y"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:241
+#: ../libempathy-gtk/empathy-individual-edit-dialog.c:247
+msgid "Edit Contact Information"
+msgstr "အဆက်အသွယ်၏ အချက်အလက်များ တည်းဖြတ်ပါ"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:292
+msgid "Personal Information"
+msgstr "ကိုယ်ရေးကိုယ်တာ အချက်များ"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.c:397
+#: ../libempathy-gtk/empathy-individual-dialogs.c:111
+msgid "New Contact"
+msgstr "အဆက်အသွယ် အသစ်"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.ui.h:1
+msgid "Decide _Later"
+msgstr "_L နောက်မှ ဆုံးဖြတ်ဖို့"
+
+#: ../libempathy-gtk/empathy-contact-dialogs.ui.h:2
+msgid "Subscription Request"
+msgstr "စာရင်းဝင်ရန် တောင်းဆို"
+
+#: ../libempathy-gtk/empathy-contact-list-store.h:71
+msgid "Ungrouped"
+msgstr "အဖွဲ့မဖွဲ့ထား"
+
+#: ../libempathy-gtk/empathy-contact-list-store.h:72
+msgid "Favorite People"
+msgstr "နှစ်သက်ရာ ပုဂ္ဂိုလ်များ"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:2004
+#: ../libempathy-gtk/empathy-individual-view.c:2232
+#, c-format
+msgid "Do you really want to remove the group '%s'?"
+msgstr "အဖွဲ့ '%s'ကို တကယ် ပယ်ဖျက်မှာလား"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:2006
+#: ../libempathy-gtk/empathy-individual-view.c:2235
+msgid "Removing group"
+msgstr "အဖွဲ့ကို ပယ်ဖျက်နေသည်"
+
+#. Remove
+#: ../libempathy-gtk/empathy-contact-list-view.c:2055
+#: ../libempathy-gtk/empathy-contact-list-view.c:2132
+#: ../libempathy-gtk/empathy-individual-view.c:2290
+#: ../libempathy-gtk/empathy-individual-view.c:2388
+#: ../src/empathy-accounts-dialog.ui.h:7
+msgid "_Remove"
+msgstr "_R ဖယ်ပစ်ပါ"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:2085
+#: ../libempathy-gtk/empathy-individual-view.c:2321
+#, c-format
+msgid "Do you really want to remove the contact '%s'?"
+msgstr "သည် '%s'အဆက်အသွယ်ကို တကယ် ပယ်ဖျက်မှာလား"
+
+#: ../libempathy-gtk/empathy-contact-list-view.c:2087
+#: ../libempathy-gtk/empathy-individual-view.c:2323
+msgid "Removing contact"
+msgstr "အဆက်အသွယ် ပြန်ဖျက်"
+
+#: ../libempathy-gtk/empathy-contact-menu.c:203
+#: ../src/empathy-main-window.ui.h:13
+msgid "_Add Contact…"
+msgstr "_A အဆက်အသွယ် ထပ်ပေါင်း"
+
+#: ../libempathy-gtk/empathy-contact-menu.c:230
+#: ../libempathy-gtk/empathy-individual-menu.c:516
+#: ../src/empathy-main-window.ui.h:14
+msgid "_Chat"
+msgstr "_C စကားဆို"
+
+#: ../libempathy-gtk/empathy-contact-menu.c:260
+#: ../libempathy-gtk/empathy-individual-menu.c:559
+msgctxt "menu item"
+msgid "_Audio Call"
+msgstr "_A အသံ စကား"
+
+#: ../libempathy-gtk/empathy-contact-menu.c:290
+#: ../libempathy-gtk/empathy-individual-menu.c:601
+msgctxt "menu item"
+msgid "_Video Call"
+msgstr "_V ရုပ်သံ စကား"
+
+#: ../libempathy-gtk/empathy-contact-menu.c:330
+#: ../libempathy-gtk/empathy-individual-menu.c:644
+#: ../src/empathy-main-window.ui.h:25
+msgid "_Previous Conversations"
+msgstr "_P ယခင်ပြောစကားများ"
+
+#: ../libempathy-gtk/empathy-contact-menu.c:352
+#: ../libempathy-gtk/empathy-individual-menu.c:685
+#, fuzzy
+#| msgid "Send file"
+msgid "Send File"
+msgstr "ဖိုင်ပို့"
+
+#: ../libempathy-gtk/empathy-contact-menu.c:374
+#: ../libempathy-gtk/empathy-individual-menu.c:727
+#, fuzzy
+#| msgid "Share my desktop"
+msgid "Share My Desktop"
+msgstr "ကိုယ့်အလုပ်ခုံကို ဝေမျှမယ်"
+
+#: ../libempathy-gtk/empathy-contact-menu.c:414
+#: ../libempathy-gtk/empathy-contact-widget.c:1570
+#: ../libempathy-gtk/empathy-individual-menu.c:761
+#: ../libempathy-gtk/empathy-individual-widget.c:1292
+msgid "Favorite"
+msgstr "နှစ်သက်ရာ"
+
+#: ../libempathy-gtk/empathy-contact-menu.c:443
+#: ../libempathy-gtk/empathy-individual-menu.c:788
+msgid "Infor_mation"
+msgstr "_M  အချက်အလက်များ"
+
+#: ../libempathy-gtk/empathy-contact-menu.c:489
+msgctxt "Edit contact (contextual menu)"
+msgid "_Edit"
+msgstr "_E တည်းဖြတ်"
+
+#: ../libempathy-gtk/empathy-contact-menu.c:543
+#: ../libempathy-gtk/empathy-individual-menu.c:972
+#: ../src/empathy-chat-window.c:903
+msgid "Inviting you to this room"
+msgstr "ဤအခန်းမှ ဖိတ်ခေါ်နေသည်"
+
+#: ../libempathy-gtk/empathy-contact-menu.c:574
+#: ../libempathy-gtk/empathy-individual-menu.c:1019
+#, fuzzy
+#| msgid "_Invite to chat room"
+msgid "_Invite to Chat Room"
+msgstr "_I စကားပြောခန်းကို ဖိတ်ခေါ်"
+
+#: ../libempathy-gtk/empathy-contact-selector.c:129
+msgid "Select a contact"
+msgstr "အဆက်အသွယ် တစ်ခုရွေးပါ။"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:226
+#: ../libempathy-gtk/empathy-individual-widget.c:148
+msgid "Full name:"
+msgstr "အမည်ရင်း - "
+
+#: ../libempathy-gtk/empathy-contact-widget.c:227
+#: ../libempathy-gtk/empathy-individual-widget.c:149
+msgid "Phone number:"
+msgstr "ဖုံးနံပါတ် - "
+
+#: ../libempathy-gtk/empathy-contact-widget.c:228
+#: ../libempathy-gtk/empathy-individual-widget.c:150
+msgid "E-mail address:"
+msgstr "လျှပ်လိပ်စာ - "
+
+#: ../libempathy-gtk/empathy-contact-widget.c:229
+#: ../libempathy-gtk/empathy-individual-widget.c:151
+msgid "Website:"
+msgstr "ဝဘ်ဆိုက် - "
+
+#: ../libempathy-gtk/empathy-contact-widget.c:230
+#: ../libempathy-gtk/empathy-individual-widget.c:152
+msgid "Birthday:"
+msgstr "မွေးနေ့ - "
+
+#: ../libempathy-gtk/empathy-contact-widget.c:609
+#: ../libempathy-gtk/empathy-individual-widget.c:454
+msgid "Country ISO Code:"
+msgstr "နိုင်ငံ ISO ကုဒ် - "
+
+#: ../libempathy-gtk/empathy-contact-widget.c:611
+#: ../libempathy-gtk/empathy-individual-widget.c:456
+msgid "Country:"
+msgstr "နိုင်ငံ - "
+
+#: ../libempathy-gtk/empathy-contact-widget.c:613
+#: ../libempathy-gtk/empathy-individual-widget.c:458
+msgid "State:"
+msgstr "တိုင်းဒေသ - "
+
+#: ../libempathy-gtk/empathy-contact-widget.c:615
+#: ../libempathy-gtk/empathy-individual-widget.c:460
+msgid "City:"
+msgstr "မြို့ - "
+
+#: ../libempathy-gtk/empathy-contact-widget.c:617
+#: ../libempathy-gtk/empathy-individual-widget.c:462
+msgid "Area:"
+msgstr "ဧရိယာ - "
+
+#: ../libempathy-gtk/empathy-contact-widget.c:619
+#: ../libempathy-gtk/empathy-individual-widget.c:464
+msgid "Postal Code:"
+msgstr "စာတိုက်အမှတ် - "
+
+#: ../libempathy-gtk/empathy-contact-widget.c:621
+#: ../libempathy-gtk/empathy-individual-widget.c:466
+msgid "Street:"
+msgstr "လမ်း - "
+
+#: ../libempathy-gtk/empathy-contact-widget.c:623
+#: ../libempathy-gtk/empathy-individual-widget.c:468
+msgid "Building:"
+msgstr "အိမ်အမှတ် - "
+
+#: ../libempathy-gtk/empathy-contact-widget.c:625
+#: ../libempathy-gtk/empathy-individual-widget.c:470
+msgid "Floor:"
+msgstr "အထပ် - "
+
+#: ../libempathy-gtk/empathy-contact-widget.c:627
+#: ../libempathy-gtk/empathy-individual-widget.c:472
+msgid "Room:"
+msgstr "အခန်း - "
+
+#: ../libempathy-gtk/empathy-contact-widget.c:629
+#: ../libempathy-gtk/empathy-individual-widget.c:474
+msgid "Text:"
+msgstr "စာသား - "
+
+#: ../libempathy-gtk/empathy-contact-widget.c:631
+#: ../libempathy-gtk/empathy-individual-widget.c:476
+msgid "Description:"
+msgstr "ရှင်းလင်းချက် - "
+
+#: ../libempathy-gtk/empathy-contact-widget.c:633
+#: ../libempathy-gtk/empathy-individual-widget.c:478
+msgid "URI:"
+msgstr "URI-"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:635
+#: ../libempathy-gtk/empathy-individual-widget.c:480
+msgid "Accuracy Level:"
+msgstr "တိကျမှု အဆင့် - "
+
+#: ../libempathy-gtk/empathy-contact-widget.c:637
+#: ../libempathy-gtk/empathy-individual-widget.c:482
+msgid "Error:"
+msgstr "အမှား - "
+
+#: ../libempathy-gtk/empathy-contact-widget.c:639
+#: ../libempathy-gtk/empathy-individual-widget.c:484
+msgid "Vertical Error (meters):"
+msgstr "ဒေါင်လိုက် အမှား (မီတာ) - "
+
+#: ../libempathy-gtk/empathy-contact-widget.c:641
+#: ../libempathy-gtk/empathy-individual-widget.c:486
+msgid "Horizontal Error (meters):"
+msgstr "ဘေးတိုက် အမှား (မီတာ) - "
+
+#: ../libempathy-gtk/empathy-contact-widget.c:643
+#: ../libempathy-gtk/empathy-individual-widget.c:488
+msgid "Speed:"
+msgstr "အလျင် - "
+
+#: ../libempathy-gtk/empathy-contact-widget.c:645
+#: ../libempathy-gtk/empathy-individual-widget.c:490
+msgid "Bearing:"
+msgstr "ဝန်ဆောင်ပုံ"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:647
+#: ../libempathy-gtk/empathy-individual-widget.c:492
+msgid "Climb Speed:"
+msgstr "တက်နှုန်း အလျင် - "
+
+#: ../libempathy-gtk/empathy-contact-widget.c:649
+#: ../libempathy-gtk/empathy-individual-widget.c:494
+msgid "Last Updated on:"
+msgstr "နောက်ဆုံး မွမ်းမံရက် - "
+
+#: ../libempathy-gtk/empathy-contact-widget.c:651
+#: ../libempathy-gtk/empathy-individual-widget.c:496
+msgid "Longitude:"
+msgstr "လောင်ဂျီကျု - "
+
+#: ../libempathy-gtk/empathy-contact-widget.c:653
+#: ../libempathy-gtk/empathy-individual-widget.c:498
+msgid "Latitude:"
+msgstr "လတ္တီကျု - "
+
+#: ../libempathy-gtk/empathy-contact-widget.c:655
+#: ../libempathy-gtk/empathy-individual-widget.c:500
+msgid "Altitude:"
+msgstr "အမြင့် - "
+
+#: ../libempathy-gtk/empathy-contact-widget.c:718
+#: ../libempathy-gtk/empathy-contact-widget.c:735
+#: ../libempathy-gtk/empathy-individual-widget.c:582
+#: ../libempathy-gtk/empathy-individual-widget.c:599
+#: ../src/empathy-preferences.ui.h:12
+msgid "Location"
+msgstr "တည်နေရာ - "
+
+#. translators: format is "Location, $date"
+#: ../libempathy-gtk/empathy-contact-widget.c:737
+#: ../libempathy-gtk/empathy-individual-widget.c:601
+#, c-format
+msgid "%s, %s"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-widget.c:789
+#: ../libempathy-gtk/empathy-individual-widget.c:650
+msgid "%B %e, %Y at %R UTC"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-widget.c:872
+#: ../libempathy-gtk/empathy-individual-widget.c:841
+msgid "Save Avatar"
+msgstr "အရုပ်ပုံ သိမ်း"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:928
+#: ../libempathy-gtk/empathy-individual-widget.c:899
+msgid "Unable to save avatar"
+msgstr "အရုပ်ပုံ သိမ်းရန် အဆင်မပြေပါ"
+
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:1
+msgid "<b>Location</b> at (date)\t"
+msgstr "<b>တည်နေရာ</b>  (နေ့ရက်)\t"
+
+#. Alias
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:3
+#: ../libempathy-gtk/empathy-individual-widget.c:1227
+msgid "Alias:"
+msgstr "ခေါ်လိုသည့် အမည် - "
+
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:4
+msgid "Client Information"
+msgstr "ကလိုင်းယင့် အချက်အလက်များ"
+
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:5
+msgid "Client:"
+msgstr "ကလိုင်းယင့် - "
+
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:6
+#: ../libempathy-gtk/empathy-individual-widget.ui.h:2
+msgid "Contact Details"
+msgstr "အဆက်အသွယ် အပြည့်အစုံ"
+
+#. Identifier to connect to Instant Messaging network
+#. Translators: Identifier to connect to Instant Messaging network
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:8
+#: ../libempathy-gtk/empathy-individual-widget.c:1431
+msgid "Identifier:"
+msgstr "အမည်၊လိပ်စာ - "
+
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:9
+#: ../libempathy-gtk/empathy-individual-widget.ui.h:3
+msgid "Information requested…"
+msgstr "တောင်းထားသော အချက်အလက်များ"
+
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:10
+msgid "OS:"
+msgstr "OS - "
+
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:11
+msgid "Version:"
+msgstr "မူ - "
+
+#: ../libempathy-gtk/empathy-groups-widget.c:332
+msgid "Groups"
+msgstr "အဖွဲ့"
+
+#: ../libempathy-gtk/empathy-groups-widget.c:344
+msgid ""
+"Select the groups you want this contact to appear in.  Note that you can "
+"select more than one group or no groups."
+msgstr "အဖွဲ့ တစ်ခုတက်ပိုရွေး၊ သို့မဟုတ် မည်သည့်အဖွဲ့မှ မရွေးဘဲ ထားနိုင်သည်။"
+
+#: ../libempathy-gtk/empathy-groups-widget.c:363
+msgid "_Add Group"
+msgstr "_A အဖွဲ့အမည် ထပ်ထည့်"
+
+#: ../libempathy-gtk/empathy-groups-widget.c:397
+#: ../libempathy-gtk/empathy-irc-network-chooser-dialog.c:554
+msgid "Select"
+msgstr "ရွေး"
+
+#: ../libempathy-gtk/empathy-groups-widget.c:407
+#: ../src/empathy-main-window.c:1250
+msgid "Group"
+msgstr "အဖွဲ့"
+
+#. Translators: the heading at the top of the Information dialogue
+#: ../libempathy-gtk/empathy-individual-information-dialog.c:281
+msgid "Linked Contacts"
+msgstr "ချိတ်ထားသော အဆက်အသွယ်များ"
+
+#: ../libempathy-gtk/empathy-individual-linker.c:354
+msgid "Select contacts to link"
+msgstr "ချိတ်ဖို့ အဆက်အသွယ်များ ရွေးပါ"
+
+#: ../libempathy-gtk/empathy-individual-linker.c:428
+msgid "New contact preview"
+msgstr "အဆက်အသွယ် လူသစ် ပရီဗျူး"
+
+#: ../libempathy-gtk/empathy-individual-linker.c:472
+msgid "Contacts selected in the list on the left will be linked together."
+msgstr "လက်ဝဲဘက် စာရင်းမှ ရွေးထားသော အဆက်အသွယ်များကို အချင်းချင်း ချိတ်ဆက်မည်။"
+
+#. Translators: this is used in the context menu for a contact. The first
+#. * parameter is a contact ID (e.g. foo@jabber.org) and the second is one
+#. * of the user's account IDs (e.g. me@hotmail.com).
+#: ../libempathy-gtk/empathy-individual-menu.c:132
+#, c-format
+msgid "%s (%s)"
+msgstr "%s (%s)"
+
+#: ../libempathy-gtk/empathy-individual-menu.c:839
+msgctxt "Edit individual (contextual menu)"
+msgid "_Edit"
+msgstr "_E တည်းဖြတ်"
+
+#. Translators: this is a verb meaning "to connect two contacts together
+#. * to form a meta-contact".
+#: ../libempathy-gtk/empathy-individual-menu.c:865
+msgctxt "Link individual (contextual menu)"
+msgid "_Link Contacts…"
+msgstr "_L အဆက်အသွယ်များကို ချိတ်"
+
+#: ../libempathy-gtk/empathy-individual-widget.c:1569
+#, c-format
+msgid "Meta-contact containing %u contact"
+msgid_plural "Meta-contact containing %u contacts"
+msgstr[0] "Meta-contact တွင် ဆက်သွယ်သူ %Iu ပါဝင်သည်။"
+
+#: ../libempathy-gtk/empathy-individual-widget.ui.h:1
+msgid "<b>Location</b> at (date)"
+msgstr "<b>တည်နေရာ</b> at (နေ့စွဲ)"
+
+#: ../libempathy-gtk/empathy-irc-network-chooser-dialog.c:328
+msgid "New Network"
+msgstr "ကွန်ယက် အသစ်"
+
+#: ../libempathy-gtk/empathy-irc-network-chooser-dialog.c:495
+msgid "Choose an IRC network"
+msgstr "IRC ကွန်ယက်တစ်ခု ရွေးပါ"
+
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:280
+msgid "new server"
+msgstr "ဆာဗာ အသစ်"
+
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:535
+msgid "SSL"
+msgstr "SSL"
+
+#. Translators: this is the title of the linking dialogue (reached by
+#. * right-clicking on a contact and selecting "Link…"). "Link" in this title
+#. * is a verb.
+#: ../libempathy-gtk/empathy-linking-dialog.c:115
+msgid "Link Contacts"
+msgstr "ဆက်သွယ်သူများ လင့်ချိတ်ပါ"
+
+#: ../libempathy-gtk/empathy-linking-dialog.c:120
+msgctxt "Unlink individual (button)"
+msgid "_Unlink…"
+msgstr "_U လင့်ဖြုတ်"
+
+#: ../libempathy-gtk/empathy-linking-dialog.c:121
+msgid ""
+"Completely split the displayed meta-contact into the contacts it contains."
+msgstr "ပြထားသော လုံးဝခွဲထုတ်ပါ။ "
+
+#. Add button
+#. Translators: this is an action button in the linking dialogue. "Link" is
+#. * used here as a verb meaning "to connect two contacts to form a
+#. * meta-contact".
+#: ../libempathy-gtk/empathy-linking-dialog.c:136
+msgid "_Link"
+msgstr "_L လင့်ချိတ်"
+
+#: ../libempathy-gtk/empathy-linking-dialog.c:182
+#, c-format
+msgid "Unlink meta-contact '%s'?"
+msgstr "မီတာ-အဆက်အသွယ် '%s'ကို လင့်ဖြုတ်ပါ "
+
+#: ../libempathy-gtk/empathy-linking-dialog.c:185
+msgid ""
+"Are you sure you want to unlink this meta-contact? This will completely "
+"split the meta-contact into the contacts it contains."
+msgstr "မီတာ-အဆက်အသွယ်ကို လင့်ဖြုတ်ဖို့ သေချာပါသလား? မီတာ-အဆက်အသွယ်ကို "
+
+#: ../libempathy-gtk/empathy-linking-dialog.c:190
+msgctxt "Unlink individual (button)"
+msgid "_Unlink"
+msgstr "_U လင့်ဖြုတ်"
+
+#: ../libempathy-gtk/empathy-log-window.c:663
+msgid "Date"
+msgstr "နေ့စွဲ"
+
+#. Tab Label
+#: ../libempathy-gtk/empathy-log-window.ui.h:2
+msgid "Conversations"
+msgstr "စကားပြောများ"
+
+#: ../libempathy-gtk/empathy-log-window.ui.h:3
+#: ../libempathy-gtk/empathy-search-bar.ui.h:1
+msgid "Find Next"
+msgstr "ရှေ့ဆက် ရှာ"
+
+#: ../libempathy-gtk/empathy-log-window.ui.h:4
+#: ../libempathy-gtk/empathy-search-bar.ui.h:2
+msgid "Find Previous"
+msgstr "နောက်ပြန် ရှာ"
+
+#: ../libempathy-gtk/empathy-log-window.ui.h:5
+msgid "Previous Conversations"
+msgstr "ယခင်ပြောစကားများ"
+
+#. Tab Label
+#: ../libempathy-gtk/empathy-log-window.ui.h:7
+msgid "Search"
+msgstr "ရှာဖွေ"
+
+#. Searching *for* something
+#: ../libempathy-gtk/empathy-log-window.ui.h:9
+msgid "_For:"
+msgstr "_F အတွက် -"
+
+#: ../libempathy-gtk/empathy-contact-selector-dialog.ui.h:2
+msgid "Contact ID:"
+msgstr "ဆက်သွယ်ရန် အမည် -"
+
+#. add chat button
+#: ../libempathy-gtk/empathy-new-message-dialog.c:145
+msgid "C_hat"
+msgstr "_H  စကားဆို"
+
+#. Tweak the dialog
+#: ../libempathy-gtk/empathy-new-message-dialog.c:155
+msgid "New Conversation"
+msgstr "စကားပြောဆိုမှု အသစ်"
+
+#. add video toggle
+#: ../libempathy-gtk/empathy-new-call-dialog.c:205
+msgid "Send _Video"
+msgstr "_V ရုပ်သံ ပေးပို့"
+
+#. add chat button
+#: ../libempathy-gtk/empathy-new-call-dialog.c:213
+msgid "C_all"
+msgstr "_A  ခေါ်ဆို"
+
+#. Tweak the dialog
+#: ../libempathy-gtk/empathy-new-call-dialog.c:223
+msgid "New Call"
+msgstr "ခေါ်ဆိုမှု အသစ်"
+
+#. COL_STATUS_TEXT
+#. COL_STATE_ICON_NAME
+#. COL_STATE
+#. COL_DISPLAY_MARKUP
+#. COL_STATUS_CUSTOMISABLE
+#. COL_TYPE
+#: ../libempathy-gtk/empathy-presence-chooser.c:168
+#: ../libempathy-gtk/empathy-presence-chooser.c:204
+msgid "Custom Message…"
+msgstr "ကိုယ်ပိုင်စကား..."
+
+#: ../libempathy-gtk/empathy-presence-chooser.c:221
+#: ../libempathy-gtk/empathy-presence-chooser.c:223
+msgid "Edit Custom Messages…"
+msgstr "ကိုယ်ပိုင်စကား တည်းဖြတ်..."
+
+#: ../libempathy-gtk/empathy-presence-chooser.c:346
+msgid "Click to remove this status as a favorite"
+msgstr "ဤ ကြော်ငြာချက်ကို နှစ်သက်ရာအဖြစ်မှ ဖယ်ထုတ်ရန် ကလစ်ပါ"
+
+#: ../libempathy-gtk/empathy-presence-chooser.c:355
+msgid "Click to make this status a favorite"
+msgstr "ဤ ကြော်ငြာချက်ကို နှစ်သက်ရာ ဖြစ်စေရန် ကလစ်ပါ"
+
+#: ../libempathy-gtk/empathy-presence-chooser.c:389
+msgid "Set status"
+msgstr "အခြေအနေ သတ်မှတ်ပြပါ"
+
+#: ../libempathy-gtk/empathy-presence-chooser.c:939
+msgid "Set your presence and current status"
+msgstr "သင် ရောက်နေရာ နှင့် လက်ရှိအခြေအနေကို သတ်မှတ်ပြပါ"
+
+#. Custom messages
+#: ../libempathy-gtk/empathy-presence-chooser.c:1124
+msgid "Custom messages…"
+msgstr "ကိုယ်ပိုင်စကားများ..."
+
+#: ../libempathy-gtk/empathy-search-bar.ui.h:3
+msgid "Find:"
+msgstr "ရှာဖွေ -"
+
+#: ../libempathy-gtk/empathy-search-bar.ui.h:4
+msgid "Match case"
+msgstr "တူညီသော ကိစ္စ"
+
+#: ../libempathy-gtk/empathy-search-bar.ui.h:5
+msgid "Phrase not found"
+msgstr "စာဖြတ်စ ရှာမတွေ့ပါ"
+
+#: ../libempathy-gtk/empathy-sound.c:50
+msgid "Received an instant message"
+msgstr "ချက်ချင်းတုံ့ပြန်စကား လက်ခံပြီး"
+
+#: ../libempathy-gtk/empathy-sound.c:52
+msgid "Sent an instant message"
+msgstr "ချက်ချင်းတုံ့ပြန်စကား ပို့ပြီး"
+
+#: ../libempathy-gtk/empathy-sound.c:54
+msgid "Incoming chat request"
+msgstr "စကားပြောရန် ခွင့်တောင်းချက် ဝင်လာသည်"
+
+#: ../libempathy-gtk/empathy-sound.c:56
+msgid "Contact connected"
+msgstr "အဆက်အသွယ် ချိတ်မိပြီ"
+
+#: ../libempathy-gtk/empathy-sound.c:58
+msgid "Contact disconnected"
+msgstr "အဆက်အသွယ် ပြတ်သွားပြီ"
+
+#: ../libempathy-gtk/empathy-sound.c:60
+msgid "Connected to server"
+msgstr "ဆာဗာကို ချိတ်မိပြီ"
+
+#: ../libempathy-gtk/empathy-sound.c:62
+msgid "Disconnected from server"
+msgstr "ဆာဗာမှ ဖြတ်လိုက်သည်"
+
+#: ../libempathy-gtk/empathy-sound.c:64
+msgid "Incoming voice call"
+msgstr "အသံ ခေါ်ဆိုမှု အဝင်"
+
+#: ../libempathy-gtk/empathy-sound.c:66
+msgid "Outgoing voice call"
+msgstr "အသံ ခေါ်ဆိုမှု အထွက်"
+
+#: ../libempathy-gtk/empathy-sound.c:68
+msgid "Voice call ended"
+msgstr "ရုပ်သံ ခေါ်ဆိုမှု အဝင်"
+
+#: ../libempathy-gtk/empathy-status-preset-dialog.c:364
+msgid "Enter Custom Message"
+msgstr "ရုပ်သံ ခေါ်ဆိုမှု အထွက်"
+
+#: ../libempathy-gtk/empathy-status-preset-dialog.c:523
+msgid "Edit Custom Messages"
+msgstr "ကိုယ်ပိုင်စကားများ တည်းဖြတ်"
+
+#: ../libempathy-gtk/empathy-status-preset-dialog.ui.h:1
+msgid "Add _New Preset"
+msgstr "_N ကြိုတင်သတ်မှတ်ချက် အသစ် ထည့်ပါ"
+
+#: ../libempathy-gtk/empathy-status-preset-dialog.ui.h:2
+msgid "Saved Presets"
+msgstr "ကြိုတင်သတ်မှတ်ချက်များ သိမ်းပါ"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:67
+msgid "Classic"
+msgstr "ဂန္ထဝင်"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:68
+msgid "Simple"
+msgstr "ရိုးရိုး"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:69
+msgid "Clean"
+msgstr "ရှင်းသန့်"
+
+#: ../libempathy-gtk/empathy-theme-manager.c:70
+msgid "Blue"
+msgstr "ကြည်ပြာ"
+
+#: ../libempathy-gtk/empathy-tls-dialog.c:150
+msgid "The identity provided by the chat server cannot be verified.\n"
+msgstr "စကားပြောဆာဗာမှ မှတ်ပုံတင်ကို စိစစ်အတည်ပြုလို့ မရပါ။ \n"
+
+#: ../libempathy-gtk/empathy-tls-dialog.c:156
+msgid "The certificate is not signed by a Certification Authority"
+msgstr "အသိအမှတ်ပြုလွှာကို အသိအမှတ်ပြုပိုင်ခွင့်ရှိသူ လက်မှတ်မနှိပ်ထားပါ။"
+
+#: ../libempathy-gtk/empathy-tls-dialog.c:160
+msgid "The certificate has expired"
+msgstr "အသိအမှတ်ပြုလွှာ သက်တမ်းကုန်ပြီ။"
+
+#: ../libempathy-gtk/empathy-tls-dialog.c:163
+msgid "The certificate hasn't yet been activated"
+msgstr "အသိအမှတ်ပြုလွှာကို သုံးခွင့်မပြုရသေးပါ။"
+
+#: ../libempathy-gtk/empathy-tls-dialog.c:166
+msgid "The certificate does not have the expected fingerprint"
+msgstr "အသိအမှတ်ပြုလွှာတွင် ရှိသင့်သည့် လက်ဗွေပုံစံ မပါရှိပါ။"
+
+#: ../libempathy-gtk/empathy-tls-dialog.c:169
+msgid "The hostname verified by the certificate doesn't match the server name"
+msgstr "အသိအမှတ်ပြုလွှာမှ အတည်ပြုထားသော အိမ်ရှင်အမည်နှင့် ဆာဗာအမည် မတူညီပါ။"
+
+#: ../libempathy-gtk/empathy-tls-dialog.c:173
+msgid "The certificate is self-signed"
+msgstr "အသိအမှတ်ပြုလွှာက သူ့ကိုယ်သူသာ အတည်ပြုသည်။"
+
+#: ../libempathy-gtk/empathy-tls-dialog.c:176
+msgid "The certificate has been revoked by the issuing Certification Authority"
+msgstr "အသိအမှတ်ပြုလွှာကို အသိအမှတ်ပြုပိုင်ခွင့်ရှိသူမှ ပြန်ရုတ်သိမ်းထားသည်။"
+
+#: ../libempathy-gtk/empathy-tls-dialog.c:180
+msgid "The certificate is cryptographically weak"
+msgstr "အသိအမှတ်ပြုလွှာ တည်ဆောက်ပုံ အားနည်းသည်။"
+
+#: ../libempathy-gtk/empathy-tls-dialog.c:183
+msgid "The certificate length exceeds verifiable limits"
+msgstr "အသိအမှတ်ပြုလွှာ ရှည်လားလွန်း၍ စိစစ်နိုင်သော ကန့်သန်ချက် ကျော်လွန်နေသည်"
+
+#: ../libempathy-gtk/empathy-tls-dialog.c:187
+msgid "The certificate is malformed"
+msgstr "အသိအမှတ်ပြုလွှာ"
+
+#: ../libempathy-gtk/empathy-tls-dialog.c:205
+#, c-format
+msgid "Expected hostname: %s"
+msgstr "ရှိသင့်သည့် အိမ်ရှင်အမည် - %s"
+
+#: ../libempathy-gtk/empathy-tls-dialog.c:208
+#, c-format
+msgid "Certificate hostname: %s"
+msgstr "အသိအမှတ်ပြုလွှာ ပေးသူအမည် - %s"
+
+#: ../libempathy-gtk/empathy-tls-dialog.c:263
+msgid "Continue"
+msgstr "ဆက်လုပ်"
+
+#: ../libempathy-gtk/empathy-tls-dialog.c:269
+msgid "This connection is untrusted. Would you like to continue anyway?"
+msgstr "ဆက်သွယ်မှုသည် မခိုင်မာပါ။ ဘယ်လိုဖြစ်ဖြစ် ရှေ့ဆက်လိုပါသလား?"
+
+#: ../libempathy-gtk/empathy-tls-dialog.c:286
+msgid "Remember this choice for future connections"
+msgstr "နောက်ထပ် ဆက်သွယ်မှုများတွင် ဤရွေးချယ်မှုကို ဆက်သုံးပါ"
+
+#: ../libempathy-gtk/empathy-tls-dialog.c:294
+msgid "Certificate Details"
+msgstr "အသိအမှတ်ပြုလွှာ အသေးစိတ်များ"
+
+#: ../libempathy-gtk/empathy-ui-utils.c:1705
+msgid "Unable to open URI"
+msgstr "URI ကို ဖွင့်လို့မရပါ"
+
+#: ../libempathy-gtk/empathy-ui-utils.c:1800
+msgid "Select a file"
+msgstr "ဖိုင်တစ်ခု ရွေးပါ"
+
+#: ../libempathy-gtk/empathy-ui-utils.c:1869
+#, c-format
+msgid "Incoming file from %s"
+msgstr "%s ထံမှ ဝင်လာသောဖိုင်"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:158
+msgid "Current Locale"
+msgstr "လက်ရှိ လိုကေး"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:161
+#: ../libempathy-gtk/totem-subtitle-encoding.c:163
+#: ../libempathy-gtk/totem-subtitle-encoding.c:165
+#: ../libempathy-gtk/totem-subtitle-encoding.c:167
+msgid "Arabic"
+msgstr "အာရေဗစ်"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:170
+msgid "Armenian"
+msgstr "အာမေနီယံ"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:173
+#: ../libempathy-gtk/totem-subtitle-encoding.c:175
+#: ../libempathy-gtk/totem-subtitle-encoding.c:177
+msgid "Baltic"
+msgstr "ဘယ်လ်တစ်"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:180
+msgid "Celtic"
+msgstr "ဆယ်လ်တစ်"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:183
+#: ../libempathy-gtk/totem-subtitle-encoding.c:185
+#: ../libempathy-gtk/totem-subtitle-encoding.c:187
+#: ../libempathy-gtk/totem-subtitle-encoding.c:189
+msgid "Central European"
+msgstr "ဥရောပ အလယ်ပိုင်း"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:192
+#: ../libempathy-gtk/totem-subtitle-encoding.c:194
+#: ../libempathy-gtk/totem-subtitle-encoding.c:196
+#: ../libempathy-gtk/totem-subtitle-encoding.c:198
+msgid "Chinese Simplified"
+msgstr "ရိုးရှင်း တရုတ်စာ"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:201
+#: ../libempathy-gtk/totem-subtitle-encoding.c:203
+#: ../libempathy-gtk/totem-subtitle-encoding.c:205
+msgid "Chinese Traditional"
+msgstr "ရိုးရာ တရုတ်စာ"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:208
+msgid "Croatian"
+msgstr "ခရိုအေးရှန်း"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:211
+#: ../libempathy-gtk/totem-subtitle-encoding.c:213
+#: ../libempathy-gtk/totem-subtitle-encoding.c:215
+#: ../libempathy-gtk/totem-subtitle-encoding.c:217
+#: ../libempathy-gtk/totem-subtitle-encoding.c:219
+#: ../libempathy-gtk/totem-subtitle-encoding.c:221
+msgid "Cyrillic"
+msgstr "ခရစ်လစ်"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:224
+msgid "Cyrillic/Russian"
+msgstr "ခရစ်လစ်/ ရုရှား"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:227
+#: ../libempathy-gtk/totem-subtitle-encoding.c:229
+msgid "Cyrillic/Ukrainian"
+msgstr "ခရစ်လစ်/ ယူကရေးနီးယန်း"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:232
+msgid "Georgian"
+msgstr "ဂျော်ဂျီယံ"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:235
+#: ../libempathy-gtk/totem-subtitle-encoding.c:237
+#: ../libempathy-gtk/totem-subtitle-encoding.c:239
+msgid "Greek"
+msgstr "ဂရိ"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:242
+msgid "Gujarati"
+msgstr "ဂူဂျာရတီ"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:245
+msgid "Gurmukhi"
+msgstr "ဂူရ်မူခီ"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:248
+#: ../libempathy-gtk/totem-subtitle-encoding.c:250
+#: ../libempathy-gtk/totem-subtitle-encoding.c:252
+#: ../libempathy-gtk/totem-subtitle-encoding.c:254
+msgid "Hebrew"
+msgstr "ဟီဗရူး"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:257
+msgid "Hebrew Visual"
+msgstr "ဟီဗရူး Visual"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:260
+msgid "Hindi"
+msgstr "ဟိန္ဒီ"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:263
+msgid "Icelandic"
+msgstr "အိုင်လန်းဒစ်"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:266
+#: ../libempathy-gtk/totem-subtitle-encoding.c:268
+#: ../libempathy-gtk/totem-subtitle-encoding.c:270
+msgid "Japanese"
+msgstr "ဂျပန်"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:273
+#: ../libempathy-gtk/totem-subtitle-encoding.c:275
+#: ../libempathy-gtk/totem-subtitle-encoding.c:277
+#: ../libempathy-gtk/totem-subtitle-encoding.c:279
+msgid "Korean"
+msgstr "ကိုရီးယား"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:282
+msgid "Nordic"
+msgstr "နော်ဒစ်"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:285
+msgid "Persian"
+msgstr "ပါရှန်း"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:288
+#: ../libempathy-gtk/totem-subtitle-encoding.c:290
+msgid "Romanian"
+msgstr "ရိုမေနီယံ"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:293
+msgid "South European"
+msgstr "ဥရောပတောင်ပိုင်း"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:296
+msgid "Thai"
+msgstr "ထိုင်း"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:299
+#: ../libempathy-gtk/totem-subtitle-encoding.c:301
+#: ../libempathy-gtk/totem-subtitle-encoding.c:303
+#: ../libempathy-gtk/totem-subtitle-encoding.c:305
+msgid "Turkish"
+msgstr "တူရကီ"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:308
+#: ../libempathy-gtk/totem-subtitle-encoding.c:310
+#: ../libempathy-gtk/totem-subtitle-encoding.c:312
+#: ../libempathy-gtk/totem-subtitle-encoding.c:314
+#: ../libempathy-gtk/totem-subtitle-encoding.c:316
+msgid "Unicode"
+msgstr "ယူနီကုဒ်"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:319
+#: ../libempathy-gtk/totem-subtitle-encoding.c:321
+#: ../libempathy-gtk/totem-subtitle-encoding.c:323
+#: ../libempathy-gtk/totem-subtitle-encoding.c:325
+#: ../libempathy-gtk/totem-subtitle-encoding.c:327
+msgid "Western"
+msgstr "အနောက်တိုင်း"
+
+#: ../libempathy-gtk/totem-subtitle-encoding.c:330
+#: ../libempathy-gtk/totem-subtitle-encoding.c:332
+#: ../libempathy-gtk/totem-subtitle-encoding.c:334
+msgid "Vietnamese"
+msgstr "ဗီယက်နမ်"
+
+#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:108
+msgid "The selected contact cannot receive files."
+msgstr "ရွေးထားသော အဆက်အသွယ်မှာ ဖိုင်များကို လက်မခံနိုင်ပါ။"
+
+#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:114
+msgid "The selected contact is offline."
+msgstr "ရွေးထားသော အဆက်အသွယ်မှာ လိုင်းပြင်ပရောက်နေသည်။"
+
+#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:169
+msgid "No error message"
+msgstr "ချို့ယွင်းမှု အကြောင်းကြားစာ မရှိပါ"
+
+#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:242
+msgid "Instant Message (Empathy)"
+msgstr "ချက်ချင်းတုံ့ပြန်စကား (အမ်ပသီ)"
+
+#: ../src/empathy.c:414
+msgid "Don't connect on startup"
+msgstr "စက်စစချင်း ဆက်သွယ်မှု မပြုနဲ့"
+
+#: ../src/empathy.c:418
+msgid "Don't display the contact list or any other dialogs on startup"
+msgstr "စက်စစချင်းမှာ အဆက်အသွယ်စာရင်း သို့မဟုတ် စကားပြောတွေကို မဖော်ပြပါနှင့်"
+
+#: ../src/empathy.c:435
+msgid "- Empathy IM Client"
+msgstr "- အမ်ပသီ ဆက်သွယ်မှု ကလိုင်းယင့်"
+
+#: ../src/empathy-about-dialog.c:85
+msgid ""
+"Empathy 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."
+msgstr ""
+"အမ်ပသီ မှာ အခမဲ့ဆော့ဝဲ ဖြစ်ပါသည်။ ပြုပြင်၍ ပြန်လည်ဖြန့်ဝေခြင်းကို "
+"အခမဲ့ဆော့ဝဲဖောင်ဒေးရှင်းမှ ပြဌာန်းထားသော အများဆိုင်လိုင်စင် (GNU General Public "
+"License) မူအရ၊ သို့မဟုတ် မူကွဲ-၂၊ သို့မဟုတ် နောက်ဆုံးပေါ်မူအရ ပြုလုပ်နိုင်ပါသည်။"
+
+#: ../src/empathy-about-dialog.c:89
+msgid ""
+"Empathy 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."
+msgstr ""
+"အမ်ပသီကို အသုံးဝင်ဖို့ ရည်ရွယ်၍ ဖြန့်ဝေပါသည်။ သို့သော် မည်သည့်အာမခံချက်မှ ပေးမထားပါ။ "
+"ရောင်းဝယ်ရန် သို့မဟုတ် အကြောင်းကိစ္စတစ်ခုအတွက် သင့်လျော်ကြောင်းကိုပင် ဝန်ခံကတိထားခြင်း "
+"မရှိပါ။ အသေးစိတ်အချက်များ သိလိုလျှင် အများဆိုင်လိုင်စင် (GNU General Public License) "
+"တွင် ကြည့်ပါ။"
+
+#: ../src/empathy-about-dialog.c:93
+msgid ""
+"You should have received a copy of the GNU General Public License along with "
+"Empathy; if not, write to the Free Software Foundation, Inc., 51 Franklin "
+"Street, Fifth Floor, Boston, MA 02110-130159 USA"
+msgstr ""
+"အမ်ပသီ ဆော့ဝဲနှင့်အတူ အများဆိုင်လိုင်စင် (GNU General Public License) ကို တစ်ပါတည်း "
+"ပေးထားပါသည်။မရရှိပါက Free Software Foundation, Inc., 51 Franklin Street, "
+"Fifth Floor, Boston, MA 02110-130159 USA သို့ စာရေးပါ။"
+
+#: ../src/empathy-about-dialog.c:121
+msgid "An Instant Messaging client for GNOME"
+msgstr "ဂနုမ်းအတွက် စကားပြောဆိုမှု ကလိုင်းယင့်"
+
+#: ../src/empathy-about-dialog.c:127
+msgid "translator-credits"
+msgstr "ဘာသာပြန်သူ - မှတ်တမ်းများ"
+
+#: ../src/empathy-account-assistant.c:167
+msgid "There was an error while importing the accounts."
+msgstr "အကောင့်များကို တင်သွင်းစဉ်တွင် ချို့ယွင်းမှု ဖြစ်ခဲ့သည်။"
+
+#: ../src/empathy-account-assistant.c:170
+msgid "There was an error while parsing the account details."
+msgstr "အကောင့်အသေးစိတ်များကို စိစစ်ရာတွင် ချို့ယွင်းမှု ဖြစ်ခဲ့သည်။"
+
+#: ../src/empathy-account-assistant.c:173
+msgid "There was an error while creating the account."
+msgstr "အကောင့်ကို ဖန်တီးရာတွင် ချို့ယွင်းမှု ဖြစ်ခဲ့သည်။"
+
+#: ../src/empathy-account-assistant.c:175
+msgid "There was an error."
+msgstr "ချို့ယွင်းမှု ဖြစ်ခဲ့သည်။"
+
+#: ../src/empathy-account-assistant.c:179
+#, c-format
+msgid "The error message was: %s"
+msgstr "ချို့ယွင်းမှု အကြောင်းကြားစာမှာ - %s"
+
+#: ../src/empathy-account-assistant.c:183
+msgid ""
+"You can either go back and try to enter your accounts' details again or quit "
+"this assistant and add accounts later from the Edit menu."
+msgstr "အကောင့် အသေးစိတ်များကို  ပြန်ကြိုးစား ထည့်သွင်း / သို့ ထွက်သွား နိုင်သည်"
+
+#: ../src/empathy-account-assistant.c:220
+#: ../src/empathy-account-assistant.c:1315
+msgid "An error occurred"
+msgstr "ချို့ယွင်းချက်တစ်ခု ဖြစ်သွားသည်"
+
+#. To translator: %s is the protocol name
+#. Create account
+#. To translator: %s is the name of the protocol, such as "Google Talk" or
+#. * "Yahoo!"
+#.
+#: ../src/empathy-account-assistant.c:412 ../src/empathy-accounts-dialog.c:614
+#, c-format
+msgid "New %s account"
+msgstr "%s အကောင့်အသစ်"
+
+#: ../src/empathy-account-assistant.c:514
+msgid "What kind of chat account do you have?"
+msgstr "ဘယ်လို စကားပြောအကောင့် အမျိုးအစားများ ရှိပါသလဲ?"
+
+#: ../src/empathy-account-assistant.c:520
+msgid "Do you have any other chat accounts you want to set up?"
+msgstr "နောက်ထပ် ပြင်ဆင်လိုသော အခြား စကားပြောအကောင့် ရှိပါသလား"
+
+#: ../src/empathy-account-assistant.c:526
+msgid "Enter your account details"
+msgstr "အကောင့် အသေးစိတ်အချက်များ ထည့်သွင်းပါ"
+
+#: ../src/empathy-account-assistant.c:531
+msgid "What kind of chat account do you want to create?"
+msgstr "ဘယ်လို စကားပြောအကောင့် အမျိုးအစားများ ဖန်တီးချင်ပါသလဲ?"
+
+#: ../src/empathy-account-assistant.c:537
+msgid "Do you want to create other chat accounts?"
+msgstr "အခြား စကားပြောအကောင့်  ထပ်ဖန်တီးချင်ပါသလား?"
+
+#: ../src/empathy-account-assistant.c:544
+msgid "Enter the details for the new account"
+msgstr "အကောင့် အသစ်အတွက် အသေးစိတ်အချက်များ ထည့်သွင်းပါ"
+
+#: ../src/empathy-account-assistant.c:659
+msgid ""
+"With Empathy you can chat with people online nearby and with friends and "
+"colleagues who use Google Talk, AIM, Windows Live and many other chat "
+"programs. With a microphone or a webcam you can also have audio or video "
+"calls."
+msgstr ""
+"အမ်ပသီဖြင့် Google Talk, AIM, Windows Live နှင့် အခြားစကားပြော ဆော့ဝဲများကို "
+"အသုံးပြုသော အသိမိတ်ဆွေများနှင့် စာရိုက်စကားဆိုနိုင်သည်။ မိုက်၊ ကင်မရာများ အသုံးပြုပြီး "
+"အသံခေါ်ဆိုမှု၊ ရုပ်သံခေါ်ဆိုမှုများကိုလည်း ပြုလုပ်နိုင်သည်။"
+
+#: ../src/empathy-account-assistant.c:676
+msgid "Do you have an account you've been using with another chat program?"
+msgstr "အခြား စကားပြောပရိုဂရမ်နှင့် အသုံးပြုနေသော အခြားအကောင့် ရှိပါသလား?"
+
+#: ../src/empathy-account-assistant.c:699
+msgid "Yes, import my account details from "
+msgstr "ဟုတ်၊ အကောင့် အသေးစိတ်အချက်အလက်များကို ယူသွင်းပါ"
+
+#: ../src/empathy-account-assistant.c:720
+msgid "Yes, I'll enter my account details now"
+msgstr "ဟုတ်၊ အကောင့် အသေးစိတ်အချက်အလက်များကို အခုရိုက်သွင်းပါမယ်။="
+
+#: ../src/empathy-account-assistant.c:742
+msgid "No, I want a new account"
+msgstr "ဟင့်အင်း၊ အကောင့်အသစ် လိုချင်ပါတယ်"
+
+#: ../src/empathy-account-assistant.c:752
+msgid "No, I just want to see people online nearby for now"
+msgstr "ဟင့်အင်း၊ အနီးအနားရှိ အခု လိုင်းပေါ်ရောက်နေသူများကိုသာ မြင်ချင်တယ်။"
+
+#: ../src/empathy-account-assistant.c:773
+msgid "Select the accounts you want to import:"
+msgstr "ယူသွင်းစေလိုသည့် အကောင့်များကို ရွေးချယ်ပါ"
+
+#: ../src/empathy-account-assistant.c:857
+#: ../src/empathy-new-chatroom-dialog.c:609
+#: ../src/empathy-new-chatroom-dialog.c:610
+msgid "Yes"
+msgstr "ဟုတ်ကဲ့"
+
+#: ../src/empathy-account-assistant.c:864
+msgid "No, that's all for now"
+msgstr "ဟင့်အင်း"
+
+#: ../src/empathy-account-assistant.c:1129
+msgid ""
+"Empathy can automatically discover and chat with the people connected on the "
+"same network as you. If you want to use this feature, please check that the "
+"details below are correct. You can easily change these details later or "
+"disable this feature by using the 'Accounts' dialog"
+msgstr ""
+"တူညီကွန်ယက်တွင်းမှ ချိတ်ထားသူများနှင့် စကားပြောဆိုနိုင်ရန် အမ်ပသီက အလိုအလျောက် "
+"ဖော်ထုတ်နိုင်သည်။ဤအပိုင်းကို ခွင့်ပြုစေလိုလျှင် အောက်ပါအချက်များ မှန်မမှန် စစ်ဆေးပါ။ "
+"သို့မဟုတ် ပိတ်စေလိုလျှင် အကောင့်ဒိုင်ယာလော့မှ သွားပိတ်ပါ။ "
+
+#: ../src/empathy-account-assistant.c:1135
+#: ../src/empathy-account-assistant.c:1191
+msgid "Edit->Accounts"
+msgstr "တည်းဖြတ် -> အကောင့်များ"
+
+#: ../src/empathy-account-assistant.c:1151
+msgid "I don't want to enable this feature for now"
+msgstr "ဤအပိုင်းကို လောလောဆယ် ခွင့်မပြု"
+
+#: ../src/empathy-account-assistant.c:1187
+msgid ""
+"You won't be able to chat with people connected to your local network, as "
+"telepathy-salut is not installed. If you want to enable this feature, please "
+"install the telepathy-salut package and create a People Nearby account from "
+"the Accounts dialog"
+msgstr ""
+"telepathy-salut ကို ထည့်သွင်းမထားသည့်တွက် ဒေသတွင်းကွန်ယက်ထဲမှ ချိတ်ထားသူများနှင့် "
+"စကားပြောနိုင်မည် မဟုတ်ပါ။ဤအပိုင်းကို ခွင့်ပြုစေလိုလျှင် telepathy-salut ကို ထည့်သွင်းပြီး "
+"အနီးအနားရှိသူများ အကောင့်ကို အကောင့်ဒိုင်ယာလော့မှ ပြုလုပ်ဖန်တီးပါ။"
+
+#: ../src/empathy-account-assistant.c:1193
+msgid "telepathy-salut not installed"
+msgstr "telepathy-salut ကို ထည့်သွင်းတပ်ဆင်ထားခြင်း မရှိပါ"
+
+#: ../src/empathy-account-assistant.c:1239
+msgid "Messaging and VoIP Accounts Assistant"
+msgstr "စာပို့ခြင်းနှင့် VoIP အကောင့်များ အကူအညီ"
+
+#: ../src/empathy-account-assistant.c:1273
+msgid "Welcome to Empathy"
+msgstr "အမ်ပသီမှ ကြိုဆိုပါ၏"
+
+#: ../src/empathy-account-assistant.c:1282
+msgid "Import your existing accounts"
+msgstr "ရှိထားသော အကောင့်များကို ထည့်သွင်းပါ"
+
+#: ../src/empathy-account-assistant.c:1300
+msgid "Please enter personal details"
+msgstr "ကိုယ်ရေးအချက်အလက်များကို သွင်းပါ"
+
+#. The primary text of the dialog shown to the user when he is about to lose
+#. * unsaved changes
+#: ../src/empathy-accounts-dialog.c:65
+#, c-format
+msgid "There are unsaved modifications to your %s account."
+msgstr "သင်၏  %s အကောင့်ပေါ်တွင် မသိမ်းဆည်းရသေးသော ပြုပြင်ပြောင်းလဲမှုများ ရှိသည်။"
+
+#. The primary text of the dialog shown to the user when he is about to lose
+#. * an unsaved new account
+#: ../src/empathy-accounts-dialog.c:69
+msgid "Your new account has not been saved yet."
+msgstr "သင့်အကောင့်အသစ်ကို မသိမ်းဆည်းရသေးပါ။"
+
+#: ../src/empathy-accounts-dialog.c:281 ../src/empathy-call-window.c:818
+msgid "Connecting…"
+msgstr "ဆက်သွယ်နေသည်…"
+
+#: ../src/empathy-accounts-dialog.c:322
+#, c-format
+msgid "Offline — %s"
+msgstr "လိုင်းပြင်ရောက် — %s"
+
+#: ../src/empathy-accounts-dialog.c:334
+#, c-format
+msgid "Disconnected — %s"
+msgstr "လိုင်းပြတ်သွား — %s"
+
+#: ../src/empathy-accounts-dialog.c:345
+msgid "Offline — No Network Connection"
+msgstr "လိုင်းပြင်ရောက် — ကွန်ယက်ဆက်သွယ်မှု မရှိ"
+
+#: ../src/empathy-accounts-dialog.c:352
+msgid "Unknown Status"
+msgstr "အခြေအနေ မသိရ"
+
+#: ../src/empathy-accounts-dialog.c:364
+msgid "Offline — Account Disabled"
+msgstr "လိုင်းပြင်ရောက် — အကောင့် ဝင်ခွင့်မရှိ"
+
+#: ../src/empathy-accounts-dialog.c:810
+msgid ""
+"You are about to create a new account, which will discard\n"
+"your changes. Are you sure you want to proceed?"
+msgstr ""
+"သင်ပြောင်းလဲထားသည်များကို ဆက်မသုံးမည့် အကောင့်အသစ်ကို သင်ဖန်တီးတော့မည်။သည်တိုင်းဆက်သွားဖို့ "
+"သေချာပါသလား?"
+
+#: ../src/empathy-accounts-dialog.c:1157
+#, c-format
+msgid "Do you want to remove %s from your computer?"
+msgstr "%s ကို ကွန်ပြူတာမှ ဖျက်ပစ်ချင်ပါသလား"
+
+#: ../src/empathy-accounts-dialog.c:1161
+msgid "This will not remove your account on the server."
+msgstr "ဤတွင် သင့်အကောင့်ကို ဆာဗာမှ ပယ်ဖျက်မည်မဟုတ်ပါ။"
+
+#: ../src/empathy-accounts-dialog.c:1399
+msgid ""
+"You are about to select another account, which will discard\n"
+"your changes. Are you sure you want to proceed?"
+msgstr ""
+"အခြားအကောင့်ကို ရွေးခြင်းဖြင့် သင်ပြောင်းလဲထားသည်များကို အသုံးမပြုတော့ပါ။ရှေ့ဆက်သွားဖို့ "
+"သေချာပါသလား?"
+
+#: ../src/empathy-accounts-dialog.c:2002
+msgid ""
+"You are about to close the window, which will discard\n"
+"your changes. Are you sure you want to proceed?"
+msgstr ""
+"ဝင်းဒိုးကို ပိတ်ခြင်းဖြင့် သင်ပြောင်းလဲထားသည်များကို အသုံးမပြုတော့ပါ။ရှေ့ဆက်သွားဖို့ "
+"သေချာပါသလား?"
+
+#: ../src/empathy-accounts-dialog.ui.h:1
+msgid "Loading account information"
+msgstr "အကောင့်အချက်အလက်များ "
+
+#: ../src/empathy-accounts-dialog.ui.h:2
+msgid "No protocol installed"
+msgstr "ပရိုတိုကော ထည့်သွင်းတပ်ဆင်ခြင်း မရှိ"
+
+#: ../src/empathy-accounts-dialog.ui.h:3
+msgid "Protocol:"
+msgstr "ပရိုတိုကော -"
+
+#: ../src/empathy-accounts-dialog.ui.h:4
+msgid ""
+"To add a new account, you first have to install a backend for each protocol "
+"you want to use."
+msgstr "အကောင့်သစ် ပေါင်းထည့်ရန် ပရိုတိုကောတစ်ခုစီအတွက် backend များ ထည့်သွင်းပေးပါ"
+
+#: ../src/empathy-accounts-dialog.ui.h:5
+msgid "_Add…"
+msgstr "_A ပေါင်းထည့်..."
+
+#: ../src/empathy-accounts-dialog.ui.h:6
+msgid "_Import…"
+msgstr "_I သွင်းယူ..."
+
+#: ../src/empathy-auth-client.c:217
+msgid " - Empathy authentication client"
+msgstr " - အမ်ပသီ စစ်ဆေးခြင်း ကလိုင်းယင့်"
+
+#: ../src/empathy-auth-client.c:233
+msgid "Empathy authentication client"
+msgstr "အမ်ပသီ စစ်ဆေးခြင်း ကလိုင်းယင့်"
+
+#: ../src/empathy-auto-salut-account-helper.c:83
+msgid "People nearby"
+msgstr "အနီးအနားရှိသူများ"
+
+#: ../src/empathy-av.c:133
+msgid "- Empathy Audio/Video Client"
+msgstr "- အမ်ပသီ အသံ/ရုပ်သံ ကလိုင်းယင့်"
+
+#: ../src/empathy-av.c:149
+msgid "Empathy Audio/Video Client"
+msgstr "အမ်ပသီ အသံ/ရုပ်သံ ကလိုင်းယင့်"
+
+#: ../src/empathy-call-window.c:479
+msgid "Contrast"
+msgstr "အရောင်ပြင်းအား"
+
+#: ../src/empathy-call-window.c:482
+msgid "Brightness"
+msgstr "အလင်းအမှောင်"
+
+#: ../src/empathy-call-window.c:485
+msgid "Gamma"
+msgstr "အလင်းပိတ်နှုန်း"
+
+#: ../src/empathy-call-window.c:590
+msgid "Volume"
+msgstr "အသံအတိုးအကျယ်"
+
+#: ../src/empathy-call-window.c:1175
+msgid "_Sidebar"
+msgstr "_S ဘေးတန်း"
+
+#: ../src/empathy-call-window.c:1194
+msgid "Audio input"
+msgstr "အသံ အဝင်"
+
+#: ../src/empathy-call-window.c:1198
+msgid "Video input"
+msgstr "ရုပ်သံ အဝင်"
+
+#: ../src/empathy-call-window.c:1202
+msgid "Dialpad"
+msgstr "ခလုတ်ကွက်"
+
+#: ../src/empathy-call-window.c:1207
+msgid "Details"
+msgstr "အသေးစိတ်များ"
+
+#. translators: Call is a noun and %s is the contact name. This string
+#. * is used in the window title
+#: ../src/empathy-call-window.c:1275
+#, c-format
+msgid "Call with %s"
+msgstr "%s နှင့် ခေါ်ဆိုမှု"
+
+#. translators: Call is a noun. This string is used in the window
+#. * title
+#: ../src/empathy-call-window.c:1354
+msgid "Call"
+msgstr "ခေါ်ဆိုမှု"
+
+#: ../src/empathy-call-window.c:1508
+msgid "The IP address as seen by the machine"
+msgstr "စက်မှ မြင်ရသည့် အိုင်ပီလိပ်စာ"
+
+#: ../src/empathy-call-window.c:1510
+msgid "The IP address as seen by a server on the Internet"
+msgstr "အင်တာနက်ပေါ်က ဆာဗာမှ မြင်ရသည့် အိုင်ပီလိပ်စာ"
+
+#: ../src/empathy-call-window.c:1512
+msgid "The IP address of the peer as seen by the other side"
+msgstr "အနီးနားချင်းများဘက်မှ မြင်ရသည့် အိုင်ပီလိပ်စာ"
+
+#: ../src/empathy-call-window.c:1514
+msgid "The IP address of a relay server"
+msgstr "ရီလေးဆာဗာ၏ အိုင်ပီလိပ်စာ"
+
+#: ../src/empathy-call-window.c:1516
+msgid "The IP address of the multicast group"
+msgstr "အစုအဖွဲ့၏ အိုင်ပီလိပ်စာ"
+
+#. Translators: number of minutes:seconds the caller has been connected
+#: ../src/empathy-call-window.c:2263
+#, c-format
+msgid "Connected — %d:%02dm"
+msgstr "ဆက်သွယ်ချိန် —%d:%02dm"
+
+#: ../src/empathy-call-window.c:2324
+msgid "Technical Details"
+msgstr "နည်းပညာဆိုင်ရာ အသေးစိတ်များ"
+
+#: ../src/empathy-call-window.c:2362
+#, c-format
+msgid ""
+"%s's software does not understand any of the audio formats supported by your "
+"computer"
+msgstr "%s ၏ ဆော့ဝဲသည် သင့်ကွန်ပြူတာဘက်မှ အသံဖော်မက်များကို နားမလည်နိုင်ပါ"
+
+#: ../src/empathy-call-window.c:2367
+#, c-format
+msgid ""
+"%s's software does not understand any of the video formats supported by your "
+"computer"
+msgstr "%s ၏ ဆော့ဝဲသည် သင့်ကွန်ပြူတာဘက်မှ ရုပ်သံဖော်မက်များကို နားမလည်နိုင်ပါ"
+
+#: ../src/empathy-call-window.c:2373
+#, c-format
+msgid ""
+"Can't establish a connection to %s. One of you might be on a network that "
+"does not allow direct connections."
+msgstr ""
+"%s သို့ ဆက်သွယ်မှုကို မဆောင်ရွက်နိုင်ပါ။ တစ်ယောက်ယောက်မှာ တိုက်ရိုက်ဆက်သွယ်ခွင့် မရှိသော "
+"ကွန်ယက်ပေါ်ရောက်နေခြင်း ဖြစ်နိုင်သည်။"
+
+#: ../src/empathy-call-window.c:2379
+msgid "There was a failure on the network"
+msgstr "ကွန်ယက်ချိတ်ဆက်မှု ပြတ်တောက်ခဲ့သည်"
+
+#: ../src/empathy-call-window.c:2383
+msgid ""
+"The audio formats necessary for this call are not installed on your computer"
+msgstr "ခေါ်ဆိုမှုအတွက် လိုအပ်သော အသံဖော်မက်များ ဤစက်မှာ ထည့်သွင်းမထားပါ"
+
+#: ../src/empathy-call-window.c:2386
+msgid ""
+"The video formats necessary for this call are not installed on your computer"
+msgstr "ခေါ်ဆိုမှုအတွက် လိုအပ်သော ရုပ်သံဖော်မက်များ ဤစက်မှာ ထည့်သွင်းမထားပါ"
+
+#: ../src/empathy-call-window.c:2396
+#, c-format
+msgid ""
+"Something unexpected happened in a Telepathy component. Please <a href=\"%s"
+"\">report this bug</a> and attach logs gathered from the 'Debug' window in "
+"the Help menu."
+msgstr ""
+"မမျှော်လင့်သောအရာများ တယ်လီပသီ အစိတ်အပိုင်းထဲတွင် ဖြစ်ပေါ်ခဲ့သည်။ ကျေးဇူးပြု၍ <a href="
+"\"%s\">အစီရင်ခံစာပို့</a> ပြီးလျှင် ကူညီ မီနူး အမှားပြင် ဝင်းဒိုးမှ မှတ်တမ်းများကို "
+"စုဆောင်းတွဲချိတ်ပေးပါ။"
+
+#: ../src/empathy-call-window.c:2404
+msgid "There was a failure in the call engine"
+msgstr "ခေါ်ဆိုမှုအင်ဂျင် ချို့ယွင်းမှု ဖြစ်ခဲ့သည်"
+
+#: ../src/empathy-call-window.c:2407
+msgid "The end of the stream was reached"
+msgstr "သွယ်ယူမှု အဆုံးထိ ရောက်ရှိပြီ"
+
+#: ../src/empathy-call-window.c:2447
+msgid "Can't establish audio stream"
+msgstr "အသံသွယ်ယူမှု မဆောင်ရွက်နိုင်ပါ"
+
+#: ../src/empathy-call-window.c:2457
+msgid "Can't establish video stream"
+msgstr "ရုပ်သံ(ဗီဒီယို) သွယ်ယူမှု မဆောင်ရွက်နိုင်ပါ"
+
+#: ../src/empathy-call-window.ui.h:1
+msgid "Audio"
+msgstr "အသံပိုင်း"
+
+#: ../src/empathy-call-window.ui.h:2
+msgid "Call the contact again"
+msgstr "ပြန်လည်ခေါ်ဆိုပါ"
+
+#: ../src/empathy-call-window.ui.h:3
+msgid "Camera Off"
+msgstr "ကင်မရာ ပိတ်"
+
+#: ../src/empathy-call-window.ui.h:4
+msgid "Camera On"
+msgstr "ကင်မရာ ဖွင့်"
+
+#: ../src/empathy-call-window.ui.h:5
+msgid "Decoding Codec:"
+msgstr "ကိုဒက် ကုဒ်ဖြေ -"
+
+#: ../src/empathy-call-window.ui.h:6
+msgid "Disable camera and stop sending video"
+msgstr "ကင်မရာကို ခွင့်ပိတ်ပြီး ရုပ်သံ ပေးပို့မှု ရပ်ဆိုင်းပါ"
+
+#: ../src/empathy-call-window.ui.h:7
+msgid "Enable camera and send video"
+msgstr "ကင်မရာကို ခွင့်ပြုပြီး ရုပ်သံ ပေးပို့ပါ"
+
+#: ../src/empathy-call-window.ui.h:8
+msgid "Enable camera but don't send video"
+msgstr "ကင်မရာကို ခွင့်ပြုပေမဲ့ ရုပ်သံ မပေးပို့စေနဲ့"
+
+#: ../src/empathy-call-window.ui.h:9
+msgid "Encoding Codec:"
+msgstr "ကိုဒက် ကုဒ်ပြောင်း -"
+
+#: ../src/empathy-call-window.ui.h:10
+msgid "Hang up"
+msgstr "ရပ်နား"
+
+#: ../src/empathy-call-window.ui.h:11
+msgid "Hang up current call"
+msgstr "လက်ရှိ ခေါ်ဆိုမှုကို ရပ်နားပါ"
+
+#: ../src/empathy-call-window.ui.h:12
+msgid "Local Candidate:"
+msgstr "ဒေသတွင်းရှိပါဝင်သူ -"
+
+#: ../src/empathy-call-window.ui.h:13
+msgid "Preview"
+msgstr "နမူနာ"
+
+#: ../src/empathy-call-window.ui.h:14
+msgid "Redial"
+msgstr "ပြန်ခေါ်ဆို"
+
+#: ../src/empathy-call-window.ui.h:15
+msgid "Remote Candidate:"
+msgstr "အဝေးရောက် ပါဝင်သူ -"
+
+#: ../src/empathy-call-window.ui.h:16
+msgid "Send Audio"
+msgstr "အသံ ပေးပို့"
+
+#: ../src/empathy-call-window.ui.h:17
+msgid "Toggle audio transmission"
+msgstr "အသံပေးပို့မှု စတင်/ ရပ်နား ရန်"
+
+#: ../src/empathy-call-window.ui.h:19
+msgid "V_ideo"
+msgstr "_I  ရုပ်သံ"
+
+#: ../src/empathy-call-window.ui.h:20
+msgid "Video"
+msgstr "ဗီဒီယို"
+
+#: ../src/empathy-call-window.ui.h:21
+msgid "Video Off"
+msgstr "ရုပ်သံပိတ်"
+
+#: ../src/empathy-call-window.ui.h:22
+msgid "Video On"
+msgstr "ရုပ်သံဖွင့်"
+
+#: ../src/empathy-call-window.ui.h:23
+msgid "Video Preview"
+msgstr "ရုပ်သံ နမူနာ"
+
+#: ../src/empathy-call-window.ui.h:24
+msgid "_Call"
+msgstr "_C ခေါ်ဆို"
+
+#: ../src/empathy-call-window.ui.h:25 ../src/empathy-main-window.ui.h:27
+msgid "_View"
+msgstr "_V မြင်ကွင်း"
+
+#: ../src/empathy-chat-window.c:452 ../src/empathy-chat-window.c:472
+#, c-format
+msgid "%s (%d unread)"
+msgid_plural "%s (%d unread)"
+msgstr[0] "%s (မဖတ်ရသေးသော %Id ခု)"
+
+#: ../src/empathy-chat-window.c:464
+#, c-format
+msgid "%s (and %u other)"
+msgid_plural "%s (and %u others)"
+msgstr[0] "%s (နှင့် %u အခြား)"
+
+#: ../src/empathy-chat-window.c:480
+#, c-format
+msgid "%s (%d unread from others)"
+msgid_plural "%s (%d unread from others)"
+msgstr[0] "%s (အခြားမှ %Id မဖွင့်ရသေး)"
+
+#: ../src/empathy-chat-window.c:489
+#, c-format
+msgid "%s (%d unread from all)"
+msgid_plural "%s (%d unread from all)"
+msgstr[0] "%s (အားလုံးမှ %Id မဖွင့်ရသေး)"
+
+#: ../src/empathy-chat-window.c:695
+msgid "Typing a message."
+msgstr "စကား ရေးနေသည်"
+
+#: ../src/empathy-chat-window.ui.h:1
+msgid "C_lear"
+msgstr "_L  ရှင်းလင်း"
+
+#: ../src/empathy-chat-window.ui.h:2
+msgid "C_ontact"
+msgstr "_O အဆက်အသွယ်"
+
+#: ../src/empathy-chat-window.ui.h:3
+msgid "Chat"
+msgstr "စကားဆို"
+
+#: ../src/empathy-chat-window.ui.h:4
+msgid "Insert _Smiley"
+msgstr "_S ရုပ်ပြောင်လေး ထည့်"
+
+#: ../src/empathy-chat-window.ui.h:5
+msgid "Invite _Participant…"
+msgstr "_P ပါဝင်မည့်သူ ဖိတ်ခေါ်"
+
+#: ../src/empathy-chat-window.ui.h:6
+msgid "Move Tab _Left"
+msgstr "_L စာမျက်နှာခွဲ ဘယ်ရွှေ့"
+
+#: ../src/empathy-chat-window.ui.h:7
+msgid "Move Tab _Right"
+msgstr "_R စာမျက်နှာခွဲ ညာရွှေ့"
+
+#: ../src/empathy-chat-window.ui.h:8
+msgid "Notify for All Messages"
+msgstr "အကြောင်းကြားစာ အားလုံးအတွက် အသိပေးပါ"
+
+#: ../src/empathy-chat-window.ui.h:9 ../src/empathy-main-window.ui.h:16
+msgid "_Contents"
+msgstr "_C မာတိကာ"
+
+#: ../src/empathy-chat-window.ui.h:10
+msgid "_Conversation"
+msgstr "_C စကားပြောဆိုမှု"
+
+#: ../src/empathy-chat-window.ui.h:11
+msgid "_Detach Tab"
+msgstr "_D စာမျက်နှာခွဲ ဖြုတ်"
+
+#: ../src/empathy-chat-window.ui.h:12 ../src/empathy-main-window.ui.h:18
+msgid "_Edit"
+msgstr "_E တည်းဖြတ်"
+
+#: ../src/empathy-chat-window.ui.h:13
+msgid "_Favorite Chat Room"
+msgstr "_F နှစ်သက်သော စကားဆိုခန်း"
+
+#: ../src/empathy-chat-window.ui.h:14 ../src/empathy-main-window.ui.h:20
+msgid "_Help"
+msgstr "_H အကူအညီ"
+
+#: ../src/empathy-chat-window.ui.h:15
+msgid "_Next Tab"
+msgstr "_N နောက် စာမျက်နှာခွဲ"
+
+#: ../src/empathy-chat-window.ui.h:16
+msgid "_Previous Tab"
+msgstr "_P ယခင် စာမျက်နှာခွဲ"
+
+#: ../src/empathy-chat-window.ui.h:17 ../src/empathy-status-icon.ui.h:5
+msgid "_Show Contact List"
+msgstr "_S အမည်စာရင်း ပြပါ"
+
+#: ../src/empathy-chat-window.ui.h:18
+msgid "_Tabs"
+msgstr "_T စာမျက်နှာခွဲများ"
+
+#: ../src/empathy-chat-window.ui.h:19
+msgid "_Undo Close Tab"
+msgstr "_U စာမျက်နှာခွဲ ပိတ်ခြင်း မလုပ်တော့"
+
+#: ../src/empathy-chatrooms-window.c:241
+msgid "Name"
+msgstr "အမည်"
+
+#: ../src/empathy-chatrooms-window.c:259
+msgid "Room"
+msgstr "အခန်း"
+
+#: ../src/empathy-chatrooms-window.c:267
+msgid "Auto-Connect"
+msgstr "အလိုအလျောက် ဆက်သွယ်"
+
+#: ../src/empathy-chatrooms-window.ui.h:2
+msgid "Manage Favorite Rooms"
+msgstr "နှစ်သက်ရာ အခန်းများ စီမံမှု"
+
+#: ../src/empathy-event-manager.c:468
+msgid "Incoming video call"
+msgstr "ဝင်လာသော ရုပ်သံ ခေါ်ဆိုမှု"
+
+#: ../src/empathy-event-manager.c:468
+msgid "Incoming call"
+msgstr "ဝင်လာသော ခေါ်ဆိုမှု"
+
+#: ../src/empathy-event-manager.c:472
+#, c-format
+msgid "%s is video calling you. Do you want to answer?"
+msgstr "%s မှ ရုပ်သံဖြင့် ခေါ်ဆိုနေသည်။ ဖြေကြားလိုပါသလား"
+
+#: ../src/empathy-event-manager.c:473
+#, c-format
+msgid "%s is calling you. Do you want to answer?"
+msgstr "%s မှ ခေါ်ဆိုနေသည်။ ဖြေကြားလိုပါသလား?"
+
+#: ../src/empathy-event-manager.c:476 ../src/empathy-event-manager.c:618
+#, c-format
+msgid "Incoming call from %s"
+msgstr "%s မှ ခေါ်ဆိုမှု"
+
+#: ../src/empathy-event-manager.c:501
+msgid "_Reject"
+msgstr "_R ငြင်းပယ်"
+
+#: ../src/empathy-event-manager.c:507
+msgid "_Answer"
+msgstr "_A ဖြေဆို"
+
+#: ../src/empathy-event-manager.c:618
+#, c-format
+msgid "Incoming video call from %s"
+msgstr "%s မှ ရုပ်သံခေါ်ဆိုမှု"
+
+#: ../src/empathy-event-manager.c:695
+msgid "Room invitation"
+msgstr "အခန်း ဖိတ်စာ"
+
+#: ../src/empathy-event-manager.c:697
+#, c-format
+msgid "Invitation to join %s"
+msgstr "%s သို့ ပါဝင်ရန် ဖိတ်စာ"
+
+#: ../src/empathy-event-manager.c:704
+#, c-format
+msgid "%s is inviting you to join %s"
+msgstr "%s မှ %s တွင် ပါဝင်ရန် ဖိတ်ကြားခြင်း"
+
+#: ../src/empathy-event-manager.c:712
+msgid "_Decline"
+msgstr "_D ငြင်းပယ်"
+
+#: ../src/empathy-event-manager.c:717
+#: ../src/empathy-new-chatroom-dialog.ui.h:7
+msgid "_Join"
+msgstr "_J ပါဝင်"
+
+#: ../src/empathy-event-manager.c:743
+#, c-format
+msgid "%s invited you to join %s"
+msgstr "%s မှ %s တွင် ပါဝင်ရန် ဖိတ်ကြားသည်"
+
+#: ../src/empathy-event-manager.c:749
+#, c-format
+msgid "You have been invited to join %s"
+msgstr "%s တွင် ပါဝင်ရန် သင်ဖိတ်ကြားခံရသည်"
+
+#: ../src/empathy-event-manager.c:797
+#, c-format
+msgid "Incoming file transfer from %s"
+msgstr "%s မှ ဖိုင်ဝေမျှမှု ဝင်လာသည်"
+
+#: ../src/empathy-event-manager.c:1005
+#, c-format
+msgid "Subscription requested by %s"
+msgstr "%s မှ စာရင်းဝင်ထားရန် တောင်းဆိုသည်"
+
+#: ../src/empathy-event-manager.c:1009
+#, c-format
+msgid ""
+"\n"
+"Message: %s"
+msgstr ""
+"\n"
+"အကြောင်းကြားစာ - %s"
+
+#: ../src/empathy-event-manager.c:1052
+#, c-format
+msgid "%s is now offline."
+msgstr "%s လိုင်းပြင်ရောက်နေသည်"
+
+#: ../src/empathy-event-manager.c:1072
+#, c-format
+msgid "%s is now online."
+msgstr "%s လိုင်းပေါ်ရောက်နေသည်"
+
+#. Translators: time left, when it is more than one hour
+#: ../src/empathy-ft-manager.c:99
+#, c-format
+msgid "%u:%02u.%02u"
+msgstr ""
+
+#. Translators: time left, when is is less than one hour
+#: ../src/empathy-ft-manager.c:102
+#, c-format
+msgid "%02u.%02u"
+msgstr ""
+
+#: ../src/empathy-ft-manager.c:178
+msgctxt "file transfer percent"
+msgid "Unknown"
+msgstr "မသိရ"
+
+#: ../src/empathy-ft-manager.c:273
+#, c-format
+msgid "%s of %s at %s/s"
+msgstr "%s of %s at %s/s"
+
+#: ../src/empathy-ft-manager.c:274
+#, c-format
+msgid "%s of %s"
+msgstr "%s သည် %s မှ"
+
+#. translators: first %s is filename, second %s is the contact name
+#: ../src/empathy-ft-manager.c:305
+#, c-format
+msgid "Receiving \"%s\" from %s"
+msgstr "\"%s\" ကို %s ဆီမှ လက်ခံနေသည်"
+
+#. translators: first %s is filename, second %s is the contact name
+#: ../src/empathy-ft-manager.c:308
+#, c-format
+msgid "Sending \"%s\" to %s"
+msgstr " \"%s\" ကို %s ဆီသို့ ပေးပို့နေသည်"
+
+#. translators: first %s is filename, second %s
+#. * is the contact name
+#: ../src/empathy-ft-manager.c:338
+#, c-format
+msgid "Error receiving \"%s\" from %s"
+msgstr " \"%s\" ကို %s ဆီမှ လက်ခံရာ အမှားတွေ့သည်"
+
+#: ../src/empathy-ft-manager.c:341
+msgid "Error receiving a file"
+msgstr "ဖိုက်လက်ခံရာ အမှားတွေ့သည်"
+
+#: ../src/empathy-ft-manager.c:346
+#, c-format
+msgid "Error sending \"%s\" to %s"
+msgstr " \"%s\" ကို %s ဆီသို့ ပေးပို့ရာ အမှားတွေ့သည်"
+
+#: ../src/empathy-ft-manager.c:349
+msgid "Error sending a file"
+msgstr "ဖိုင်ပေးပို့ရာ အမှားတွေ့သည်"
+
+#. translators: first %s is filename, second %s
+#. * is the contact name
+#: ../src/empathy-ft-manager.c:488
+#, c-format
+msgid "\"%s\" received from %s"
+msgstr " \"%s\" ကို %s ဆီမှ လက်ခံ"
+
+#. translators: first %s is filename, second %s
+#. * is the contact name
+#: ../src/empathy-ft-manager.c:493
+#, c-format
+msgid "\"%s\" sent to %s"
+msgstr "\"%s\" ကို %s ဆီသို့ ပေးပို့"
+
+#: ../src/empathy-ft-manager.c:496
+msgid "File transfer completed"
+msgstr "ဖိုင် လှမ်းပို့ခြင်း ပြီးဆုံး"
+
+#: ../src/empathy-ft-manager.c:615 ../src/empathy-ft-manager.c:782
+msgid "Waiting for the other participant's response"
+msgstr "ဟိုဘက်က တုံ့ပြန်မှုကို စောင့်ဆိုင်းနေသည်"
+
+#: ../src/empathy-ft-manager.c:641 ../src/empathy-ft-manager.c:679
+#, c-format
+msgid "Checking integrity of \"%s\""
+msgstr "\"%s\" ၏ ဖိုင်မဏ္ဏိုင်စနစ် ကို စစ်ဆေးနေသည်"
+
+#: ../src/empathy-ft-manager.c:644 ../src/empathy-ft-manager.c:682
+#, c-format
+msgid "Hashing \"%s\""
+msgstr "\"%s\" ကို တစ်စစီခွဲသည်"
+
+#: ../src/empathy-ft-manager.c:996
+msgid "%"
+msgstr "%"
+
+#: ../src/empathy-ft-manager.c:1008
+msgid "File"
+msgstr "ဖိုင်"
+
+#: ../src/empathy-ft-manager.c:1030
+msgid "Remaining"
+msgstr "ကျန်ရှိသည်များ"
+
+#: ../src/empathy-ft-manager.ui.h:1
+msgid "File Transfers"
+msgstr "ဖိုင် ဝေမျှ"
+
+#: ../src/empathy-ft-manager.ui.h:2
+msgid "Remove completed, canceled and failed file transfers from the list"
+msgstr ""
+"ပြီးဆုံးသော၊ ပြန်ရုတ်သိမ်းလိုက်သော၊  မအောင်မြင်သော ဖိုင်ဝေမျှမှုများကို စာရင်းမှ ဖယ်ပစ်ပါ"
+
+#: ../src/empathy-import-dialog.c:84
+msgid ""
+"No accounts to import could be found. Empathy currently only supports "
+"importing accounts from Pidgin."
+msgstr ""
+"ထည့်သွင်းရမည် အကောင့်များ ရှာဖွေမတွေ့ပါ။ Pidgin မှ ထည့်သွင်းသည့် အကောင့်များကိုသာ "
+"အမ်ပသီက လက်ခံထောက်ပံ့နိုင်ပါသည်"
+
+#: ../src/empathy-import-dialog.c:199
+msgid "Import Accounts"
+msgstr "အကောင့်များ ထည့်သွင်း"
+
+#. Translators: this is the header of a treeview column
+#: ../src/empathy-import-widget.c:292
+msgid "Import"
+msgstr "ထည့်သွင်း"
+
+#: ../src/empathy-import-widget.c:301
+msgid "Protocol"
+msgstr "ပရိုတိုကော"
+
+#: ../src/empathy-import-widget.c:325
+msgid "Source"
+msgstr "ပင်ရင်း"
+
+#: ../src/empathy-main-window.c:383
+msgid "No match found"
+msgstr "ဆင်တူ ရှာမတွေ့ပါ"
+
+#: ../src/empathy-main-window.c:538
+msgid "Reconnect"
+msgstr "ပြန်ဆက်သွယ်"
+
+#: ../src/empathy-main-window.c:544
+msgid "Edit Account"
+msgstr "အကောင့် တည်းဖြတ်"
+
+#: ../src/empathy-main-window.c:550
+msgid "Close"
+msgstr "ပိတ်သိမ်း"
+
+#: ../src/empathy-main-window.c:1232
+msgid "Contact"
+msgstr "အဆက်အသွယ်"
+
+#: ../src/empathy-main-window.c:1557
+msgid "Contact List"
+msgstr "အဆက်အသွယ်စာရင်း"
+
+#: ../src/empathy-main-window.c:1666
+msgid "Show and edit accounts"
+msgstr "အကောင့်များကို ဖော်ပြပြီး တည်းဖြတ်ပါ"
+
+#: ../src/empathy-main-window.ui.h:1
+msgid "Contacts on a _Map"
+msgstr "_M မြေပုံကပြသော အဆက်အသွယ်များ"
+
+#: ../src/empathy-main-window.ui.h:2
+msgid "Context"
+msgstr "ပါဝင်သည်များ"
+
+#: ../src/empathy-main-window.ui.h:3
+msgid "Join _Favorites"
+msgstr "_F နှစ်သက်ရာများ တွင် ပါဝင်"
+
+#: ../src/empathy-main-window.ui.h:4
+msgid "Manage Favorites"
+msgstr "နှစ်သက်ရာများ စီမံခန့်ခွဲ"
+
+#: ../src/empathy-main-window.ui.h:5
+msgid "N_ormal Size"
+msgstr "_O  ပုံမှန်အရွယ်"
+
+#: ../src/empathy-main-window.ui.h:6 ../src/empathy-status-icon.ui.h:1
+msgid "New _Call…"
+msgstr "_C အသစ် ခေါ်"
+
+#: ../src/empathy-main-window.ui.h:7
+msgid "Normal Size With _Avatars"
+msgstr "_A ရုပ်ပုံပါ ပုံမှန်အရွယ်"
+
+#: ../src/empathy-main-window.ui.h:8
+msgid "P_references"
+msgstr "_R  နှစ်သက်ရာများ"
+
+#: ../src/empathy-main-window.ui.h:9
+msgid "Show P_rotocols"
+msgstr "_R  ပရိုတိုကောများ ပြပါ"
+
+#: ../src/empathy-main-window.ui.h:10
+msgid "Sort by _Name"
+msgstr "_N အမည်အရ စီစဉ်ပါ"
+
+#: ../src/empathy-main-window.ui.h:11
+msgid "Sort by _Status"
+msgstr "_S အခြေအနေအရ စီစဉ်ပါ"
+
+#: ../src/empathy-main-window.ui.h:12
+msgid "_Accounts"
+msgstr "_A အကောင့်များ"
+
+#: ../src/empathy-main-window.ui.h:15
+msgid "_Compact Size"
+msgstr "_C ကျစ်လစ် အရွယ်အစား"
+
+#: ../src/empathy-main-window.ui.h:17
+msgid "_Debug"
+msgstr "_D အမှားစစ်"
+
+#: ../src/empathy-main-window.ui.h:19
+msgid "_File Transfers"
+msgstr "_F ဖိုင်လှမ်းပို့"
+
+#: ../src/empathy-main-window.ui.h:21
+msgid "_Join…"
+msgstr "_J ပါဝင်"
+
+#: ../src/empathy-main-window.ui.h:22 ../src/empathy-status-icon.ui.h:3
+msgid "_New Conversation…"
+msgstr "_N စကားပွဲအသစ်"
+
+#: ../src/empathy-main-window.ui.h:23
+msgid "_Offline Contacts"
+msgstr "_O လိုင်းပြင်ရောက် ဆက်သွယ်သူများ"
+
+#: ../src/empathy-main-window.ui.h:24
+msgid "_Personal Information"
+msgstr "_P ကိုယ်ရေးကိုယ်တာ အချက်အလက်များ"
+
+#: ../src/empathy-main-window.ui.h:26
+msgid "_Room"
+msgstr "_R အခန်း"
+
+#: ../src/empathy-new-chatroom-dialog.c:379
+msgid "Chat Room"
+msgstr "စကားပြောဆိုခန်း"
+
+#: ../src/empathy-new-chatroom-dialog.c:395
+msgid "Members"
+msgstr "ပါဝင်သူများ"
+
+#. Translators: Room/Join's roomlist tooltip. Parameters are a channel name,
+#. yes/no, yes/no and a number.
+#: ../src/empathy-new-chatroom-dialog.c:607
+#, c-format
+msgid ""
+"%s\n"
+"Invite required: %s\n"
+"Password required: %s\n"
+"Members: %s"
+msgstr ""
+"%s\n"
+"ဖိတ်စာ လိုအပ်သော: %s\n"
+"စကားဝှက် လိုအပ်သော: %s\n"
+"အဖွဲ့ဝင်များ: %s"
+
+#: ../src/empathy-new-chatroom-dialog.c:609
+#: ../src/empathy-new-chatroom-dialog.c:610
+msgid "No"
+msgstr "ဟင့်အင်း"
+
+#: ../src/empathy-new-chatroom-dialog.c:638
+msgid "Could not start room listing"
+msgstr "အခန်း အကဲခတ်မှု မစနိုင်ပါ"
+
+#: ../src/empathy-new-chatroom-dialog.c:648
+msgid "Could not stop room listing"
+msgstr "အခန်း အကဲခတ်မှု မရပ်ဆိုင်းနိုင်ပါ"
+
+#: ../src/empathy-new-chatroom-dialog.ui.h:2
+msgid "Couldn't load room list"
+msgstr "အခန်းစာရင်း မတင်ပြနိုင်ပါ"
+
+#: ../src/empathy-new-chatroom-dialog.ui.h:3
+msgid ""
+"Enter the room name to join here or click on one or more rooms in the list."
+msgstr ""
+"အခန်းထဲဝင်ရန် အခန်းအမည် ရိုက်သွင်းပါ။ သို့မဟုတ် စာရင်းပေါ်မှ အခန်း(များ)ကို ကလစ်ပါ"
+
+#: ../src/empathy-new-chatroom-dialog.ui.h:4
+msgid ""
+"Enter the server which hosts the room, or leave it empty if the room is on "
+"the current account's server"
+msgstr ""
+"စကားပြောခန်းကို လက်ခံသည့် ဆာဗာအမည် သွင်းပါ၊ (သို့) စကားပြောခန်းသည် လက်ရှိအကောင့်၏ "
+"ဆာဗာမှာရှိလျှင် ကွက်လပ်ထားပါ"
+
+#: ../src/empathy-new-chatroom-dialog.ui.h:5
+msgid "Join Room"
+msgstr "အခန်းထဲ ပါဝင်"
+
+#: ../src/empathy-new-chatroom-dialog.ui.h:6
+msgid "Room List"
+msgstr "အခန်းစာရင်း"
+
+#: ../src/empathy-new-chatroom-dialog.ui.h:8
+msgid "_Room:"
+msgstr "_R အခန်း"
+
+#: ../src/empathy-preferences.c:138
+msgid "Message received"
+msgstr "စကား လက်ခံရ"
+
+#: ../src/empathy-preferences.c:139
+msgid "Message sent"
+msgstr "စကား ပေးပို့"
+
+#: ../src/empathy-preferences.c:140
+msgid "New conversation"
+msgstr "စကားပွဲ အသစ်"
+
+#: ../src/empathy-preferences.c:141
+msgid "Contact goes online"
+msgstr "ဆက်သွယ်သူ လိုင်းပေါ် ရောက်လာသည်"
+
+#: ../src/empathy-preferences.c:142
+msgid "Contact goes offline"
+msgstr "ဆက်သွယ်သူ လိုင်းပြင် ထွက်သွားသည်"
+
+#: ../src/empathy-preferences.c:143
+msgid "Account connected"
+msgstr "အကောင့် ဆက်သွယ်ထားပြီ"
+
+#: ../src/empathy-preferences.c:144
+msgid "Account disconnected"
+msgstr "အကောင့် မဆက်သွယ်တော့"
+
+#: ../src/empathy-preferences.c:445
+msgid "Language"
+msgstr "ဘာသာစကား"
+
+#: ../src/empathy-preferences.c:882
+msgid "Preferences"
+msgstr "နှစ်သက်ရာများ"
+
+#: ../src/empathy-preferences.ui.h:1
+msgid "Appearance"
+msgstr "အမြင်"
+
+#: ../src/empathy-preferences.ui.h:2
+msgid "Behavior"
+msgstr "အမူအကျင့်"
+
+#: ../src/empathy-preferences.ui.h:3
+msgid "Chat Th_eme:"
+msgstr "_E  စကားပြောခန်း အသွင်အပြင်"
+
+#: ../src/empathy-preferences.ui.h:4
+msgid "Disable notifications when _away or busy"
+msgstr "_A အဝေးရောက် သို့ အလုပ်များချိန်တွင် အသိပေးချက်များ ခွင့်မပြု"
+
+#: ../src/empathy-preferences.ui.h:5
+msgid "Disable sounds when _away or busy"
+msgstr "_A အဝေးရောက် သို့ အလုပ်များချိန်တွင် အသံများ ခွင့်မပြု"
+
+#: ../src/empathy-preferences.ui.h:6
+msgid "Display incoming events in the notification area"
+msgstr "အသိပေးချက်များ ဝင်လာသောနေရာတွင် ဖော်ပြပါ"
+
+#: ../src/empathy-preferences.ui.h:7
+msgid "Enable notifications when a contact comes online"
+msgstr "ဆက်သွယ်သူ လိုင်းထဲဝင်လာလျှင် အသိပေးချက်များ ခွင့်ပြု"
+
+#: ../src/empathy-preferences.ui.h:8
+msgid "Enable notifications when a contact goes offline"
+msgstr "ဆက်သွယ်သူ လိုင်းပြင်ထွက်သွားလျှင် အသိပေးချက်များ ခွင့်ပြု"
+
+#: ../src/empathy-preferences.ui.h:9
+msgid "Enable notifications when the _chat is not focused"
+msgstr "_C အတည်တကျ စကားဆိုမနေချိန်တွင် အသိပေးချက်များ ခွင့်ပြု"
+
+#: ../src/empathy-preferences.ui.h:10
+msgid "Enable spell checking for languages:"
+msgstr "ဘာသာစကားများအတွက် စာလုံးပေါင်းစစ်ဆေးခြင်း ခွင့်ပြု - "
+
+#: ../src/empathy-preferences.ui.h:11
+msgid "General"
+msgstr "ယေဘုယျ"
+
+#: ../src/empathy-preferences.ui.h:13
+msgid "Location sources:"
+msgstr "တည်နေရာ ပင်ရင်း - "
+
+#: ../src/empathy-preferences.ui.h:14
+msgid "Log conversations"
+msgstr "စကားပြောဆိုမှု မှတ်တမ်း"
+
+#: ../src/empathy-preferences.ui.h:15
+msgid "Notifications"
+msgstr "အသိပေးချက်"
+
+#: ../src/empathy-preferences.ui.h:16
+msgid "Play sound for events"
+msgstr "ဖြစ်စဉ်များအတွက် အသံဖွင့်ပါ"
+
+#: ../src/empathy-preferences.ui.h:17
+msgid "Privacy"
+msgstr "ပရိုင်ဗေစီ"
+
+#: ../src/empathy-preferences.ui.h:18
+msgid ""
+"Reduced location accuracy means that nothing more precise than your city, "
+"state and country will be published.  GPS coordinates will be accurate to 1 "
+"decimal place."
+msgstr ""
+"လျှော့ချထားသော နေရာတိကျမှု ဆိုသည်မှာ သင်၏ နိုင်ငံ၊ ပြည်နယ်၊ မြို့ရွာ များထက် ပိုပြီး "
+"လိပ်စာအတိအကျ မထုတ်ပြန်ပါ။\" \" GPS တည်နေရာသည် ဒဿမနေရာ တစ်ခု တိကျပါသည်။ "
+
+#: ../src/empathy-preferences.ui.h:19
+msgid "Show _smileys as images"
+msgstr "_S  ရုပ်ပြောင်များကို ပုံအဖြစ် ပြပါ"
+
+#: ../src/empathy-preferences.ui.h:20
+msgid "Show contact _list in rooms"
+msgstr "_L  ဆက်သွယ်သူစာရင်းကို အခန်းတွင် ပြပါ"
+
+#: ../src/empathy-preferences.ui.h:21
+msgid "Sounds"
+msgstr "အသံများ"
+
+#: ../src/empathy-preferences.ui.h:22
+msgid "Spell Checking"
+msgstr "စာလုံးပေါင်းစစ်ဆေး"
+
+#: ../src/empathy-preferences.ui.h:23
+msgid ""
+"The list of languages reflects only the languages for which you have a "
+"dictionary installed."
+msgstr "အဘိဓာန် ထည့်သွင်းထားသော ဘာသာစကားများကိုသာ ဘာသာစကားစာရင်းက ပြန်ဖော်ပြပါသည်"
+
+#: ../src/empathy-preferences.ui.h:24
+msgid "Themes"
+msgstr "သွင်ပြင်များ"
+
+#: ../src/empathy-preferences.ui.h:25
+msgid "_Automatically connect on startup"
+msgstr "_A ဖွင့်လိုက်သည်နှင့် အလိုအလျောက် ချိတ်ဆက်ပါ"
+
+#: ../src/empathy-preferences.ui.h:26
+msgid "_Cellphone"
+msgstr "_C ပါလေရာဖုန်း"
+
+#: ../src/empathy-preferences.ui.h:27
+msgid "_Enable bubble notifications"
+msgstr "_E တိုးတိုး အချက်ပြရန် ခွင့်ပြုသည်"
+
+#: ../src/empathy-preferences.ui.h:28
+msgid "_Enable sound notifications"
+msgstr "_E အသံ အချက်ပြရန် ခွင့်ပြုသည်"
+
+#: ../src/empathy-preferences.ui.h:29
+msgid "_GPS"
+msgstr "_GPS"
+
+#: ../src/empathy-preferences.ui.h:30
+msgid "_Network (IP, Wi-Fi)"
+msgstr "_N ကွန်ယက် (IP, Wi-Fi)"
+
+#: ../src/empathy-preferences.ui.h:31
+msgid "_Open new chats in separate windows"
+msgstr "_O စကားပြောဝင်းဒိုးများ ခွဲဖွင့်ပါ"
+
+#: ../src/empathy-preferences.ui.h:32
+msgid "_Publish location to my contacts"
+msgstr "_P တည်နေရာသတင်း ထုတ်ပြန်ပါ"
+
+#. To translators: The longitude and latitude are rounded to closest 0,1 degrees, so for example 146,2345° is rounded to round(146,2345*10)/10 = 146,2 degrees.
+#: ../src/empathy-preferences.ui.h:34
+msgid "_Reduce location accuracy"
+msgstr "_R တည်နေရာ တိကျမှု လျှော့ချ"
+
+#: ../src/empathy-status-icon.c:141
+msgid "Respond"
+msgstr "တုံ့ပြန်"
+
+#: ../src/empathy-status-icon.c:147
+msgid "Reject"
+msgstr "ငြင်းထုတ်"
+
+#: ../src/empathy-status-icon.c:151
+msgid "Answer"
+msgstr "ဖြေဆို"
+
+#: ../src/empathy-status-icon.c:158
+msgid "Decline"
+msgstr "ငြင်းပယ်"
+
+#: ../src/empathy-status-icon.c:162
+msgid "Accept"
+msgstr "လက်ခံ"
+
+#: ../src/empathy-status-icon.ui.h:2
+msgid "Status"
+msgstr "အခြေအနေ"
+
+#: ../src/empathy-status-icon.ui.h:4
+msgid "_Quit"
+msgstr "_Q ထွက်ပါ"
+
+#: ../src/empathy-map-view.c:452
+msgid "Contact Map View"
+msgstr "အမည် လိပ်စာများ ဆက်စပ်ပုံ"
+
+#: ../src/empathy-debug-window.c:1219
+msgid "Save"
+msgstr "သိမ်းထား"
+
+#: ../src/empathy-debug-window.c:1395
+msgid "Debug Window"
+msgstr "အမှားစစ် ဝင်းဒိုး"
+
+#: ../src/empathy-debug-window.c:1475
+msgid "Pause"
+msgstr "ခဏနား"
+
+#: ../src/empathy-debug-window.c:1487
+msgid "Level "
+msgstr "အဆင့်"
+
+#: ../src/empathy-debug-window.c:1507
+msgid "Debug"
+msgstr "အမှားစစ်"
+
+#: ../src/empathy-debug-window.c:1513
+msgid "Info"
+msgstr "သတင်း"
+
+#: ../src/empathy-debug-window.c:1519 ../src/empathy-debug-window.c:1568
+msgid "Message"
+msgstr "ပြောစကား"
+
+#: ../src/empathy-debug-window.c:1525
+msgid "Warning"
+msgstr "သတိပြုရန်"
+
+#: ../src/empathy-debug-window.c:1531
+msgid "Critical"
+msgstr "ထင်သာမြင်သာ"
+
+#: ../src/empathy-debug-window.c:1537
+msgid "Error"
+msgstr "ချို့ယွင်းချက်"
+
+#: ../src/empathy-debug-window.c:1556
+msgid "Time"
+msgstr "အချိန်"
+
+#: ../src/empathy-debug-window.c:1559
+msgid "Domain"
+msgstr "ဒိုမိန်း"
+
+#: ../src/empathy-debug-window.c:1561
+msgid "Category"
+msgstr "မျိုးတူရာ"
+
+#: ../src/empathy-debug-window.c:1563
+msgid "Level"
+msgstr "အဆင့်"
+
+#: ../src/empathy-debug-window.c:1600
+msgid ""
+"The selected connection manager does not support the remote debugging "
+"extension."
+msgstr ""
+"ရွေးထားသော ဆက်သွယ်မှု မန်နေဂျာသည် အဝေးမှတစ်ဆင့် အမှားစစ်ခြင်းကို လက်မခံနိုင်ပါ"
+
+#: ../src/empathy-invite-participant-dialog.c:34
+#: ../src/empathy-invite-participant-dialog.c:48
+msgid "Invite Participant"
+msgstr "ပါဝင်သူ ဖိတ်ခေါ်"
+
+#: ../src/empathy-invite-participant-dialog.c:35
+msgid "Choose a contact to invite into the conversation:"
+msgstr "စကားပြောရာသို့ ဖိတ်ခေါ်ရန် လိပ်စာတစ်ခုကို ရွေးပါ"
+
+#: ../src/empathy-invite-participant-dialog.c:45
+msgid "Invite"
+msgstr "ဖိတ်ခေါ်"
+
+#: ../src/empathy-accounts.c:182
+msgid "Don't display any dialogs; do any work (eg, importing) and exit"
+msgstr ""
+"မည်သည့် စကားပြောကိုမှ မဖော်ပြပါနှင့်၊၊ အလုပ် (ဥပမာ- ခေါ်သွင်းခြင်း) မလုပ်ပါနှင့်၊ "
+"ထွက်ပါ"
+
+#: ../src/empathy-accounts.c:186
+msgid "Don't display any dialogs if there are any non-Salut accounts"
+msgstr "အရေးမကြီးသော အကောင့်များထံမှ ဆိုလျှင် စကားပြောများကို မဖော်ပြပါနှင့်"
+
+#: ../src/empathy-accounts.c:190
+msgid "Initially select given account (eg, gabble/jabber/foo_40example_2eorg0)"
+msgstr "စစချင်းမှာ ရွေးဖို့ အကောင့် (ဥပမာ, gabble/jabber/foo_40example_2eorg0 )"
+
+#: ../src/empathy-accounts.c:192
+msgid "<account-id>"
+msgstr "မှတ်ပုံတင် အကောင့်"
+
+#: ../src/empathy-accounts.c:200
+msgid "- Empathy Accounts"
+msgstr "- အမ်ပသီ အကောင့်များ"
+
+#: ../src/empathy-accounts.c:216
+msgid "Empathy Accounts"
+msgstr "အမ်ပသီ အကောင့်များ"
+
+#: ../src/empathy-debugger.c:40
+msgid "Empathy Debugger"
+msgstr "အမ်ပသီ အမှားစစ်စနစ်"
index 90609b756e02db05a5bbed72639b0e83ed6df70c..e93fe926fbfcc3a730f03f25a689a36683d30911 100644 (file)
--- a/po/ro.po
+++ b/po/ro.po
@@ -8,9 +8,9 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Empathy\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
-"product=empathy&keywords=I18N+L10N&component=general\n"
-"POT-Creation-Date: 2011-03-17 08:55+0000\n"
-"PO-Revision-Date: 2011-03-17 10:48+0200\n"
+"product=empathy&keywords=I18N+L10N&component=General\n"
+"POT-Creation-Date: 2011-11-25 20:22+0000\n"
+"PO-Revision-Date: 2011-11-26 03:37+0300\n"
 "Last-Translator: Lucian Adrian Grijincu <lucian.grijincu@gmail.com>\n"
 "Language-Team: Romanian Gnome Team <gnomero-list@lists.sourceforge.net>\n"
 "MIME-Version: 1.0\n"
@@ -19,7 +19,8 @@ msgstr ""
 "Language: ro\n"
 "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < "
 "20)) ? 1 : 2);;\n"
-"X-Generator: Virtaal 0.6.1\n"
+"X-Generator: Virtaal 0.7.0\n"
+"X-Project-Style: gnome\n"
 
 #: ../data/empathy.desktop.in.in.h:1
 msgid "Chat on Google Talk, Facebook, MSN and many other chat services"
@@ -44,53 +45,73 @@ msgid "Always open a separate chat window for new chats."
 msgstr "Deschide întotdeauna o fereastră separată pentru discuțiile noi."
 
 #: ../data/org.gnome.Empathy.gschema.xml.in.h:2
+msgid "Camera device"
+msgstr "Cameră"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:3
+msgid "Camera position"
+msgstr "Poziția camerei"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:4
 msgid ""
 "Character to add after nickname when using nick completion (tab) in group "
 "chat."
 msgstr ""
 "Caracterul de adăugat după un pseudonim când se folosește completarea cu tab "
-"în grupurile de discuții."
+"a pseudonimului în grupurile de discuții."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:3
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:5
 msgid "Chat window theme"
-msgstr "Temă ferestră discuții"
+msgstr "Tema ferestrei de discuții"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:4
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:6
+msgid "Chat window theme variant"
+msgstr "Varianta de temă pentru fereastra de discuții"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:7
 msgid ""
 "Comma-separated list of spell checker languages to use (e.g. \"en, fr, nl\")."
 msgstr ""
 "Listă de corectoare ortografice de folosit, separate prin virgulă (de ex: "
 "„en, fr, ro”)."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:5
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:8
 msgid "Compact contact list"
 msgstr "Listă de contacte compactă"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:6
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:9
 msgid "Connection managers should be used"
 msgstr "Ar trebui folosiți administratori de conexiune"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:7
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:10
 msgid "Contact list sort criterion"
 msgstr "Criteriu de sortare a listei de contacte"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:8
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:11
+msgid "D-Bus object path of the last account selected to join a room."
+msgstr "Calea D-Bus a ultimului cont selectat pentru a intra într-o fereastră."
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:12
+msgid "Default camera device to use in video calls, e.g. /dev/video0."
+msgstr "Camera implicită folosită în apeluri video, ex: /dev/video0."
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:13
 msgid "Default directory to select an avatar image from"
-msgstr "Dosar implicit pentru alegerea imaginii avatarului"
+msgstr "Dosarul implicit din care se alege imaginea avatarului"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:9
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:14
 msgid "Disable popup notifications when away"
-msgstr "Dezactivează notificările de tip popup când sunt plecat"
+msgstr "Dezactivează notificările de tip popup când utilizatorul este plecat"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:10
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:15
 msgid "Disable sounds when away"
-msgstr "Dezactivează sunetele când sunt plecat"
+msgstr "Dezactivează sunetele când utilizatorul este plecat"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:11
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:16
 msgid "Display incoming events in the status area"
-msgstr "Afișează evenimentele primite în zona de stare"
+msgstr "Afișează evenimentele sosite în zona de stare"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:12
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:17
 msgid ""
 "Display incoming events in the status area. If false, present them to the "
 "user immediately."
@@ -98,244 +119,260 @@ msgstr ""
 "Afișează evenimente sosite în zona de stare. Dacă are valoarea „fals”, "
 "prezintă-le utilizatorului imediat."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:13
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:18
+msgid "Echo cancellation support"
+msgstr "Asistență pentru anularea ecoului"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:19
 msgid "Empathy can publish the user's location"
 msgstr "Empathy poate publica locația utilizatorului"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:14
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:20
 msgid "Empathy can use the GPS to guess the location"
 msgstr "Empathy poate folosi GPS-ul pentru a estima locația"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:15
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:21
 msgid "Empathy can use the cellular network to guess the location"
 msgstr ""
 "Empathy poate folosi rețeaua de telefonie mobilă pentru a estima locația"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:16
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:22
 msgid "Empathy can use the network to guess the location"
 msgstr "Empathy poate folosi rețeaua pentru a estima locația"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:17
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:23
 msgid "Empathy default download folder"
 msgstr "Dosarul implicit de descărcare pentru Empathy"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:18
-msgid "Empathy has migrated butterfly logs"
-msgstr "Empathy a migrat înregistrările butterfly"
-
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:19
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:24
 msgid "Empathy should auto-away when idle"
 msgstr ""
 "Empathy ar trebui să schimbe starea în „plecat” când calculatorul este "
 "inactiv"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:20
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:25
 msgid "Empathy should auto-connect on startup"
 msgstr "La pornire, Empathy ar trebui să se conecteze automat"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:21
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:26
 msgid "Empathy should reduce the location's accuracy"
 msgstr "Empathy ar trebui să reducă acuratețea locației"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:22
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:27
 msgid "Empathy should use the avatar of the contact as the chat window icon"
 msgstr ""
 "Empathy ar trebui să folosească avatarul contactului ca iconiță a ferestrei "
 "de discuții"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:23
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:28
 msgid "Enable WebKit Developer Tools"
 msgstr "Activează uneltele de dezvoltare WebKit"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:24
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:29
 msgid "Enable popup notifications for new messages"
 msgstr "Activează notificările de tip popup pentru mesaje noi"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:25
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:30
 msgid "Enable spell checker"
 msgstr "Activează corectorul ortografic"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:26
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:31
 msgid "Hide main window"
 msgstr "Ascunde fereastra principală"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:27
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:32
 msgid "Hide the main window."
 msgstr "Ascunde fereastra principală."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:28
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:33
+msgid "Last account selected in Join Room dialog"
+msgstr "Ultimul cont selectat în dialogul de alăturare la canale de discuții"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:34
 msgid "Nick completed character"
 msgstr "Caracter de completare a pseudonimului"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:29
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:35
 msgid "Open new chats in separate windows"
 msgstr "Deschide discuțiile noi în ferestre separate"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:30
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:36
 msgid "Path of the Adium theme to use"
 msgstr "Calea către tema Adium de utilizat"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:31
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:37
 msgid "Path of the Adium theme to use if the theme used for chat is Adium."
 msgstr ""
 "Calea către tema Adium de utilizat, dacă tema utilizată pentru conversații "
 "este Adium."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:32
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:38
 msgid "Play a sound for incoming messages"
 msgstr "Redă un sunet la primirea mesajelor"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:33
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:39
 msgid "Play a sound for new conversations"
 msgstr "Redă un sunet pentru conversațiile noi"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:34
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:40
 msgid "Play a sound for outgoing messages"
 msgstr "Redă un sunet pentru mesajele trimise"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:35
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:41
 msgid "Play a sound when a contact logs in"
 msgstr "Redă un sunet la conectarea unui contact"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:36
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:42
 msgid "Play a sound when a contact logs out"
 msgstr "Redă un sunet la deconectarea unui contact"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:37
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:43
 msgid "Play a sound when we log in"
 msgstr "Redă un sunet când mă conectez"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:38
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:44
 msgid "Play a sound when we log out"
 msgstr "Redă un sunet când mă deconectez"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:39
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:45
 msgid "Pop up notifications if the chat isn't focused"
 msgstr "Notificări popup dacă conversația nu este focalizată"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:40
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:46
 msgid "Pop up notifications when a contact logs in"
 msgstr "Notificări popup la autentificarea unui contact"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:41
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:47
 msgid "Pop up notifications when a contact logs out"
 msgstr "Notificări popup la deconectarea unui contact"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:42
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:48
+msgid "Position the camera preview should be during a call."
+msgstr ""
+"Poziția la care previzualizarea camerei ar trebui să fie în timpul unui apel."
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:49
+msgid "Show Balance in contact list"
+msgstr "Arată soldul curent în lista de contacte"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:50
 msgid "Show avatars"
 msgstr "Arată avatare"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:43
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:51
 msgid "Show contact list in rooms"
 msgstr "Arată lista contactelor în canale de discuții"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:44
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:52
 msgid "Show hint about closing the main window"
 msgstr "Arată un indiciu despre închiderea ferestrei principale"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:45
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:53
 msgid "Show offline contacts"
 msgstr "Arată contactele deconectate"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:46
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:54
 msgid "Show protocols"
 msgstr "Arată protocoalele"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:47
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:55
 msgid "Spell checking languages"
-msgstr "Limbi corectare ortografică"
+msgstr "Corectare ortografică a limbilor"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:48
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:56
 msgid "The default folder to save file transfers in."
 msgstr "Dosarul implicit în care se salvează fișierele transferate."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:49
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:57
 msgid "The last directory that an avatar image was chosen from."
-msgstr "Ultimul dosar de unde a fost aleasă o imagine pentru avatar."
+msgstr "Ultimul dosar din care a fost aleasă o imagine pentru avatar."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:50
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:58
 msgid "The position for the chat window side pane"
 msgstr "Poziția panoului lateral din fereastra de discuții"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:51
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:59
 msgid "The stored position (in pixels) of the chat window side pane."
 msgstr ""
 "Poziția memorată (în pixeli) a panoului lateral din fereastra de discuții."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:52
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:60
 msgid "The theme that is used to display the conversation in chat windows."
 msgstr ""
 "Tema care este folosită pentru a afișa conversația în ferestrele de discuții."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:53
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:61
+msgid ""
+"The theme variant that is used to display the conversation in chat windows."
+msgstr ""
+"Varianta de temă care este folosită pentru a afișa conversația în ferestrele "
+"de discuții."
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:62
 msgid "Use graphical smileys"
 msgstr "Folosește emoticoane grafice"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:54
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:63
 msgid "Use notification sounds"
 msgstr "Folosește sunete de notificare"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:55
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:64
 msgid "Use theme for chat rooms"
 msgstr "Folosește tema pentru canalele de discuții"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:56
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:65
 msgid "Whether Empathy can publish the user's location to their contacts."
 msgstr "Dacă Empathy poate să publice contactelor locația utilizatorului."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:57
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:66
 msgid "Whether Empathy can use the GPS to guess the location."
 msgstr "Dacă Empathy poate să utilizeze GPS-ul pentru a estima locația."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:58
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:67
 msgid "Whether Empathy can use the cellular network to guess the location."
 msgstr ""
 "Dacă Empathy poate să utilizeze rețeaua de telefonie mobilă pentru a estima "
 "locația."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:59
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:68
 msgid "Whether Empathy can use the network to guess the location."
 msgstr "Dacă Empathy poate să utilizeze rețeaua pentru a estima locația."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:60
-msgid "Whether Empathy has migrated butterfly logs."
-msgstr "Dacă Empathy a migrat înregistrările butterfly."
-
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:61
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:69
 msgid "Whether Empathy should automatically log into your accounts on startup."
 msgstr ""
 "Dacă Empathy ar trebui să vă autentifice automat în conturile dumneavoastră "
 "la pornire."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:62
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:70
 msgid ""
 "Whether Empathy should go into away mode automatically if the user is idle."
 msgstr ""
 "Dacă Empathy ar trebui să schimbe automat starea în „plecat” când "
 "calculatorul este inactiv."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:63
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:71
 msgid ""
 "Whether Empathy should reduce the location's accuracy for privacy reasons."
 msgstr ""
 "Dacă Empathy ar trebui să reducă acuratețea locației din motive de "
 "intimitate."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:64
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:72
 msgid ""
 "Whether Empathy should use the avatar of the contact as the chat window icon."
 msgstr ""
 "Dacă Empathy ar trebui să folosească avatarul contactului ca iconiță a "
 "ferestrei de discuții."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:65
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:73
 msgid ""
 "Whether WebKit developer tools, such as the Web Inspector, should be enabled."
 msgstr ""
-"Dacă ar trebui activate uneltele de dezvoltare Webkit, cum ar fi Inspectorul "
+"Dacă ar trebui activate uneltele de dezvoltare WebKit, cum ar fi Inspectorul "
 "Web."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:66
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:74
 msgid ""
 "Whether connectivity managers should be used to automatically disconnect/"
 "reconnect."
@@ -343,118 +380,129 @@ msgstr ""
 "Dacă administratorii conexiunilor de rețea ar trebui folosiți pentru "
 "deconectare/reconectare automată."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:67
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:75
 msgid ""
 "Whether to check words typed against the languages you want to check with."
-msgstr ""
-"Dacă să se verifice, în limbile alese, corectitudinea cuvintelor tastate."
+msgstr "Dacă să fie verificate cuvintele tastate după limbile selectate."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:68
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:76
 msgid "Whether to convert smileys into graphical images in conversations."
 msgstr ""
-"Dacă să se afișeze emoticoanele ca imagini (și nu ca text) în conversații."
+"Dacă să fie afișate emoticoanele ca imagini (și nu ca text) în conversații."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:69
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:77
+msgid "Whether to enable Pulseaudio's echo cancellation filter."
+msgstr ""
+"Specifică dacă se va activa filtrul de anulare a ecoului a lui Pulseaudio."
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:78
 msgid "Whether to play a sound to notify of contacts logging into the network."
-msgstr "Dacă se redau notificări sonore la autentificarea unui contact."
+msgstr "Dacă să fie redate notificări sonore la autentificarea unui contact."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:70
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:79
 msgid ""
 "Whether to play a sound to notify of contacts logging out of the network."
-msgstr "Dacă se redau notificări sonore la deconectarea unui contact."
+msgstr "Dacă să fie redate notificări sonore la deconectarea unui contact."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:71
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:80
 msgid "Whether to play a sound to notify of events."
-msgstr "Dacă se redau notificări sonore pentru evenimente."
+msgstr "Dacă să fie redate notificări sonore pentru evenimente."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:72
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:81
 msgid "Whether to play a sound to notify of incoming messages."
-msgstr "Dacă se redau un sunet la primirea mesajelor."
+msgstr "Dacă să fie redat un sunet la primirea mesajelor."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:73
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:82
 msgid "Whether to play a sound to notify of new conversations."
-msgstr "Dacă se redau un sunet la începerea unei conversații noi."
+msgstr "Dacă să fie redat un sunet la începerea unei conversații noi."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:74
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:83
 msgid "Whether to play a sound to notify of outgoing messages."
-msgstr "Dacă se redau un sunet la trimiterea mesajelor."
+msgstr "Dacă să fie redat un sunet la trimiterea mesajelor."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:75
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:84
 msgid "Whether to play a sound when logging into a network."
-msgstr "Dacă se redau un sunet la conectarea la rețea."
+msgstr "Dacă să fie redat un sunet la conectarea la rețea."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:76
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:85
 msgid "Whether to play a sound when logging out of a network."
-msgstr "Dacă să se redea un sunet, la deconectarea de la o rețea."
+msgstr "Dacă să fie redat un sunet, la deconectarea de la o rețea."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:77
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:86
 msgid "Whether to play sound notifications when away or busy."
-msgstr "Dacă să se redea notificări sonore când sunteți plecat sau ocupat."
+msgstr ""
+"Dacă să fie redate notificări sonore când utilizatorul este plecat sau "
+"ocupat."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:78
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:87
 msgid "Whether to show a popup notification when a contact goes offline."
 msgstr ""
-"Dacă să afișeze o notificare popup, atunci când un contact se deconectează."
+"Dacă să fie afișată o notificare popup atunci când un contact se "
+"deconectează."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:79
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:88
 msgid "Whether to show a popup notification when a contact goes online."
 msgstr ""
-"Dacă să afișeze o notificare popup, atunci când un contact se conectează."
+"Dacă să fie afișată o notificare popup atunci când un contact se conectează."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:80
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:89
 msgid ""
 "Whether to show a popup notification when receiving a new message even if "
 "the chat is already opened, but not focused."
 msgstr ""
-"Dacă să fie afișate notificări popup la primirea de mesaje noi, chiar dacă "
+"Dacă să fie afișată o notificare popup la primirea de mesaje noi, chiar dacă "
 "conversația este deja deschisă, dar nu este focalizată."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:81
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:90
 msgid "Whether to show a popup notification when receiving a new message."
-msgstr "Dacă să fie afișate notificări popup la primirea de mesaje noi."
+msgstr "Dacă să fie afișată o notificare popup la primirea de mesaje noi."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:82
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:91
+msgid "Whether to show account balances in the contact list."
+msgstr "Dacă să fie afișat soldul curent în lista de contacte."
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:92
 msgid ""
 "Whether to show avatars for contacts in the contact list and chat windows."
 msgstr ""
-"Dacă să se afișeze avatare pentru contacte în lista de contacte și "
+"Dacă să fie afișate avatare pentru contacte în lista de contacte și "
 "ferestrele de discuții."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:83
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:93
 msgid "Whether to show contacts that are offline in the contact list."
-msgstr "Dacă să se arate contactele deconectate în lista de contacte."
+msgstr "Dacă să fie afișate contactele deconectate în lista de contacte."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:84
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:94
 msgid "Whether to show popup notifications when away or busy."
-msgstr "Dacă să fie afișate notificări popup când sunteți plecat sau ocupat."
+msgstr ""
+"Dacă să fie afișate notificări popup când utilizatorul este plecat sau "
+"ocupat."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:85
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:95
 msgid "Whether to show protocols for contacts in the contact list."
-msgstr ""
-"Dacă să se afișeze în lista de contacte și ferestrele de discuții avatare "
-"pentru contacte."
+msgstr "Dacă să fie afișate protocoalele contactelor în lista de contacte."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:86
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:96
 msgid "Whether to show the contact list in chat rooms."
-msgstr "Dacă să afișeze lista de contacte în canalele de discuții."
+msgstr "Dacă să fie afișată lista de contacte în ferestrele de discuții."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:87
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:97
 msgid "Whether to show the contact list in compact mode."
-msgstr "Dacă să se arate lista de contacte compactă."
+msgstr "Dacă să fie afișată lista de contacte într-un mod compact."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:88
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:98
 msgid ""
 "Whether to show the message dialog about closing the main window with the "
 "'x' button in the title bar."
 msgstr ""
-"Dacă să se arate un dialog de confirmare la închiderea ferestrei principale "
-"de la butonul „x” din bara de titlu."
+"Dacă să fie afișat un dialog de confirmare la închiderea ferestrei "
+"principale de la butonul „x” din bara de titlu."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:89
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:99
 msgid "Whether to use the theme for chat rooms."
-msgstr "Dacă să se folosească tema pentru canalele de discuții."
+msgstr "Dacă să fie folosită tema pentru canalele de discuții."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:90
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:100
 msgid ""
 "Which criterion to use when sorting the contact list. Default is to sort by "
 "the contact's name with the value \"name\". A value of \"state\" will sort "
@@ -470,193 +518,207 @@ msgstr "Administrare conturi de mesagerie și VoIP"
 
 #. Tweak the dialog
 #: ../data/empathy-accounts.desktop.in.in.h:2
-#: ../src/empathy-accounts-dialog.c:2242
+#: ../src/empathy-accounts-dialog.c:2312
 msgid "Messaging and VoIP Accounts"
 msgstr "Conturi de mesagerie și VoIP"
 
-#: ../libempathy/empathy-ft-handler.c:825
+#: ../libempathy/empathy-ft-handler.c:838
 msgid "File transfer completed, but the file was corrupted"
 msgstr "Transfer de fișiere finalizat, dar fișierul a fost corupt"
 
-#: ../libempathy/empathy-ft-handler.c:1116
+#: ../libempathy/empathy-ft-handler.c:1124
 msgid "File transfer not supported by remote contact"
 msgstr "Transferul de fișiere nu este suportat de contactul cu care discutați"
 
-#: ../libempathy/empathy-ft-handler.c:1172
+#: ../libempathy/empathy-ft-handler.c:1180
 msgid "The selected file is not a regular file"
 msgstr "Fișierul ales nu este unul obișnuit"
 
-#: ../libempathy/empathy-ft-handler.c:1181
+#: ../libempathy/empathy-ft-handler.c:1189
 msgid "The selected file is empty"
 msgstr "Fișierul selectat este gol"
 
-#: ../libempathy/empathy-tp-file.c:268
+#: ../libempathy/empathy-message.c:415 ../src/empathy-call-observer.c:131
+#, c-format
+msgid "Missed call from %s"
+msgstr "Apel pierdut de la %s"
+
+#. Translators: this is an outgoing call, e.g. 'Called Alice'
+#: ../libempathy/empathy-message.c:419
+#, c-format
+msgid "Called %s"
+msgstr "Ați sunat pe %s"
+
+#: ../libempathy/empathy-message.c:422
+#, c-format
+msgid "Call from %s"
+msgstr "Apel de la %s"
+
+#: ../libempathy/empathy-tp-file.c:258
 msgid "Socket type not supported"
-msgstr "Tipul socketului nu este suportat"
+msgstr "Tipul socket-ului nu este suportat"
 
-#: ../libempathy/empathy-tp-file.c:387
+#: ../libempathy/empathy-tp-file.c:377
 msgid "No reason was specified"
 msgstr "Nu a fost specificat vreun motiv"
 
-#: ../libempathy/empathy-tp-file.c:390
+#: ../libempathy/empathy-tp-file.c:380
 msgid "The change in state was requested"
 msgstr "S-a cerut schimbarea de stare"
 
-#: ../libempathy/empathy-tp-file.c:393
+#: ../libempathy/empathy-tp-file.c:383
 msgid "You canceled the file transfer"
 msgstr "Ați anulat transferul de fișiere"
 
-#: ../libempathy/empathy-tp-file.c:396
+#: ../libempathy/empathy-tp-file.c:386
 msgid "The other participant canceled the file transfer"
 msgstr "Celălalt participant a anulat transferul de fișiere"
 
-#: ../libempathy/empathy-tp-file.c:399
+#: ../libempathy/empathy-tp-file.c:389
 msgid "Error while trying to transfer the file"
 msgstr "Eroare la încercarea de a transfera fișierul"
 
-#: ../libempathy/empathy-tp-file.c:402
+#: ../libempathy/empathy-tp-file.c:392
 msgid "The other participant is unable to transfer the file"
 msgstr "Celălalt participant nu poate transfera fișierul"
 
-#: ../libempathy/empathy-tp-file.c:405 ../libempathy/empathy-utils.c:382
+#: ../libempathy/empathy-tp-file.c:395 ../libempathy/empathy-utils.c:312
 msgid "Unknown reason"
 msgstr "Motiv necunoscut"
 
-#: ../libempathy/empathy-utils.c:304
+#: ../libempathy/empathy-utils.c:232
 msgid "Available"
 msgstr "Disponibil"
 
-#: ../libempathy/empathy-utils.c:306
+#: ../libempathy/empathy-utils.c:234
 msgid "Busy"
 msgstr "Ocupat"
 
-#: ../libempathy/empathy-utils.c:309
+#: ../libempathy/empathy-utils.c:237
 msgid "Away"
 msgstr "Plecat"
 
-#: ../libempathy/empathy-utils.c:311
+#: ../libempathy/empathy-utils.c:239
 msgid "Invisible"
 msgstr "Invizibil"
 
-#: ../libempathy/empathy-utils.c:313
+#: ../libempathy/empathy-utils.c:241
 msgid "Offline"
 msgstr "Deconectat"
 
-#: ../libempathy/empathy-utils.c:315
-#: ../src/empathy-streamed-media-window.c:1904
-#: ../src/empathy-streamed-media-window.c:1905
-#: ../src/empathy-streamed-media-window.c:1906
-#: ../src/empathy-streamed-media-window.c:1907
-#: ../src/empathy-call-window.ui.h:18
+#. translators: presence type is unknown
+#: ../libempathy/empathy-utils.c:244
+msgctxt "presence"
 msgid "Unknown"
 msgstr "Necunoscut"
 
-#: ../libempathy/empathy-utils.c:354
+#: ../libempathy/empathy-utils.c:284
 msgid "No reason specified"
-msgstr "Nu a fost specificat niciun motiv"
+msgstr "Niciun motiv specificat"
 
-#: ../libempathy/empathy-utils.c:356 ../libempathy/empathy-utils.c:412
+#: ../libempathy/empathy-utils.c:286 ../libempathy/empathy-utils.c:342
 msgid "Status is set to offline"
 msgstr "Mesajul de stare este trecut ca deconectat."
 
-#: ../libempathy/empathy-utils.c:358 ../libempathy/empathy-utils.c:392
+#: ../libempathy/empathy-utils.c:288 ../libempathy/empathy-utils.c:322
+#: ../libempathy-gtk/empathy-call-utils.c:49
+#: ../libempathy-gtk/empathy-new-message-dialog.c:82
 msgid "Network error"
 msgstr "Eroare de rețea"
 
-#: ../libempathy/empathy-utils.c:360 ../libempathy/empathy-utils.c:394
+#: ../libempathy/empathy-utils.c:290 ../libempathy/empathy-utils.c:324
 msgid "Authentication failed"
 msgstr "Autentificare eșuată"
 
-#: ../libempathy/empathy-utils.c:362 ../libempathy/empathy-utils.c:396
+#: ../libempathy/empathy-utils.c:292 ../libempathy/empathy-utils.c:326
 msgid "Encryption error"
 msgstr "Eroare de criptare"
 
-#: ../libempathy/empathy-utils.c:364
+#: ../libempathy/empathy-utils.c:294
 msgid "Name in use"
 msgstr "Nume în uz"
 
-#: ../libempathy/empathy-utils.c:366 ../libempathy/empathy-utils.c:398
+#: ../libempathy/empathy-utils.c:296 ../libempathy/empathy-utils.c:328
 msgid "Certificate not provided"
 msgstr "Nu s-a furnizat un certificat"
 
-#: ../libempathy/empathy-utils.c:368 ../libempathy/empathy-utils.c:400
+#: ../libempathy/empathy-utils.c:298 ../libempathy/empathy-utils.c:330
 msgid "Certificate untrusted"
-msgstr "Certificatul nu e de încredere"
+msgstr "Certificatul nu este de încredere"
 
-#: ../libempathy/empathy-utils.c:370 ../libempathy/empathy-utils.c:402
+#: ../libempathy/empathy-utils.c:300 ../libempathy/empathy-utils.c:332
 msgid "Certificate expired"
-msgstr "Certificat expirat"
+msgstr "Certificatul a expirat"
 
-#: ../libempathy/empathy-utils.c:372 ../libempathy/empathy-utils.c:404
+#: ../libempathy/empathy-utils.c:302 ../libempathy/empathy-utils.c:334
 msgid "Certificate not activated"
-msgstr "Certificat inactiv"
+msgstr "Certificatul nu este activat"
 
-#: ../libempathy/empathy-utils.c:374 ../libempathy/empathy-utils.c:406
+#: ../libempathy/empathy-utils.c:304 ../libempathy/empathy-utils.c:336
 msgid "Certificate hostname mismatch"
 msgstr "Nepotrivire de nume de gazdă în certificat"
 
-#: ../libempathy/empathy-utils.c:376 ../libempathy/empathy-utils.c:408
+#: ../libempathy/empathy-utils.c:306 ../libempathy/empathy-utils.c:338
 msgid "Certificate fingerprint mismatch"
 msgstr "Nepotrivire de amprentă în certificat"
 
-#: ../libempathy/empathy-utils.c:378 ../libempathy/empathy-utils.c:410
+#: ../libempathy/empathy-utils.c:308 ../libempathy/empathy-utils.c:340
 msgid "Certificate self-signed"
 msgstr "Certificat semnat de el însuși"
 
-#: ../libempathy/empathy-utils.c:380
+#: ../libempathy/empathy-utils.c:310
 msgid "Certificate error"
 msgstr "Eroare de certificat"
 
-#: ../libempathy/empathy-utils.c:414
+#: ../libempathy/empathy-utils.c:344
 msgid "Encryption is not available"
 msgstr "Criptarea nu este disponibilă"
 
-#: ../libempathy/empathy-utils.c:416
+#: ../libempathy/empathy-utils.c:346
 msgid "Certificate is invalid"
-msgstr "Certificat nevalid"
+msgstr "Certificatul nu este valid"
 
-#: ../libempathy/empathy-utils.c:418
+#: ../libempathy/empathy-utils.c:348
 msgid "Connection has been refused"
 msgstr "Conexiunea a fost refuzată"
 
-#: ../libempathy/empathy-utils.c:420
+#: ../libempathy/empathy-utils.c:350
 msgid "Connection can't be established"
 msgstr "Conexiunea nu poate fi stabilită"
 
-#: ../libempathy/empathy-utils.c:422
+#: ../libempathy/empathy-utils.c:352
 msgid "Connection has been lost"
 msgstr "Conexiunea a fost pierdută"
 
-#: ../libempathy/empathy-utils.c:424
+#: ../libempathy/empathy-utils.c:354
 msgid "This resource is already connected to the server"
 msgstr "Această resursă este deja conectată la server"
 
-#: ../libempathy/empathy-utils.c:426
+#: ../libempathy/empathy-utils.c:356
 msgid ""
 "Connection has been replaced by a new connection using the same resource"
 msgstr ""
 "Conexiunea a fost înlocuită de o nouă conexiune utilizând aceeași resursă"
 
-#: ../libempathy/empathy-utils.c:429
+#: ../libempathy/empathy-utils.c:359
 msgid "The account already exists on the server"
-msgstr "Acest cont există deja de pe server."
+msgstr "Acest cont există deja de pe server"
 
-#: ../libempathy/empathy-utils.c:431
+#: ../libempathy/empathy-utils.c:361
 msgid "Server is currently too busy to handle the connection"
 msgstr "Serverul este în prezent prea ocupat să se ocupe de conexiune"
 
-#: ../libempathy/empathy-utils.c:433
+#: ../libempathy/empathy-utils.c:363
 msgid "Certificate has been revoked"
 msgstr "Certificatul a fost revocat"
 
-#: ../libempathy/empathy-utils.c:435
+#: ../libempathy/empathy-utils.c:365
 msgid ""
 "Certificate uses an insecure cipher algorithm or is cryptographically weak"
 msgstr ""
-"Certificatul folosește un algoritm de criptare nesigur sau este slab "
-"criptografic"
+"Certificatul folosește un algoritm de criptare nesigur sau slab criptografic"
 
-#: ../libempathy/empathy-utils.c:438
+#: ../libempathy/empathy-utils.c:368
 msgid ""
 "The length of the server certificate, or the depth of the server certificate "
 "chain, exceed the limits imposed by the cryptography library"
@@ -664,156 +726,153 @@ msgstr ""
 "Lungimea certificatului serverului sau adâncimea lanțului de certificate al "
 "serverului depășește limitele impuse de biblioteca de criptografie"
 
-#: ../libempathy/empathy-utils.c:601
-#: ../libempathy-gtk/empathy-contact-list-store.h:73
+#: ../libempathy/empathy-utils.c:372
+msgid "Your software is too old"
+msgstr "Programul este prea vechi"
+
+#: ../libempathy/empathy-utils.c:531
 msgid "People Nearby"
 msgstr "Persoane din apropiere"
 
-#: ../libempathy/empathy-utils.c:606
+#: ../libempathy/empathy-utils.c:536
 msgid "Yahoo! Japan"
 msgstr "Yahoo! Japonia"
 
-#: ../libempathy/empathy-utils.c:635
+#: ../libempathy/empathy-utils.c:565
 msgid "Google Talk"
 msgstr "Google Talk"
 
-#: ../libempathy/empathy-utils.c:636
+#: ../libempathy/empathy-utils.c:566
 msgid "Facebook Chat"
 msgstr "Discuție Facebook"
 
-#: ../libempathy/empathy-time.c:137
+#: ../libempathy/empathy-time.c:88
 #, c-format
 msgid "%d second ago"
 msgid_plural "%d seconds ago"
-msgstr[0] "acum o secundă"
-msgstr[1] "acum %d secunde"
-msgstr[2] "acum %d de secunde"
+msgstr[0] "o secundă"
+msgstr[1] "%d secunde"
+msgstr[2] "%d de secunde"
 
-#: ../libempathy/empathy-time.c:142
+#: ../libempathy/empathy-time.c:93
 #, c-format
 msgid "%d minute ago"
 msgid_plural "%d minutes ago"
-msgstr[0] "acum un minut"
-msgstr[1] "acum %d minute"
-msgstr[2] "acum %d de minute"
+msgstr[0] "un minut"
+msgstr[1] "%d minute"
+msgstr[2] "%d de minute"
 
-#: ../libempathy/empathy-time.c:147
+#: ../libempathy/empathy-time.c:98
 #, c-format
 msgid "%d hour ago"
 msgid_plural "%d hours ago"
-msgstr[0] "acum o oră"
-msgstr[1] "acum %d ore"
-msgstr[2] "acum %d de ore"
+msgstr[0] "o oră"
+msgstr[1] "%d ore"
+msgstr[2] "%d de ore"
 
-#: ../libempathy/empathy-time.c:152
+#: ../libempathy/empathy-time.c:103
 #, c-format
 msgid "%d day ago"
 msgid_plural "%d days ago"
-msgstr[0] "acum o zi"
-msgstr[1] "acum %d zile"
-msgstr[2] "acum %d de zile"
+msgstr[0] "o zi"
+msgstr[1] "%d zile"
+msgstr[2] "%d de zile"
 
-#: ../libempathy/empathy-time.c:157
+#: ../libempathy/empathy-time.c:108
 #, c-format
 msgid "%d week ago"
 msgid_plural "%d weeks ago"
-msgstr[0] "acum o săptămână"
-msgstr[1] "acum %d săptămâni"
-msgstr[2] "acum %d de săptămâni"
+msgstr[0] "o săptămână"
+msgstr[1] "%d săptămâni"
+msgstr[2] "%d de săptămâni"
 
-#: ../libempathy/empathy-time.c:162
+#: ../libempathy/empathy-time.c:113
 #, c-format
 msgid "%d month ago"
 msgid_plural "%d months ago"
-msgstr[0] "acum o lună"
-msgstr[1] "acum %d luni"
-msgstr[2] "acum %d de luni"
+msgstr[0] "o lună"
+msgstr[1] "%d luni"
+msgstr[2] "%d de luni"
 
-#: ../libempathy/empathy-time.c:167
+#: ../libempathy/empathy-time.c:136
 msgid "in the future"
 msgstr "în viitor"
 
-#: ../libempathy-gtk/empathy-account-chooser.c:501
-msgid "All"
-msgstr "Toate"
+#: ../libempathy-gtk/empathy-account-chooser.c:688
+msgid "All accounts"
+msgstr "Toate conturile"
 
-#: ../libempathy-gtk/empathy-account-widget.c:679
-#: ../libempathy-gtk/empathy-log-window.c:647
+#: ../libempathy-gtk/empathy-account-widget.c:694
 #: ../src/empathy-import-widget.c:321
 msgid "Account"
 msgstr "Cont"
 
-#: ../libempathy-gtk/empathy-account-widget.c:680
+#: ../libempathy-gtk/empathy-account-widget.c:695
 msgid "Password"
 msgstr "Parolă"
 
-#: ../libempathy-gtk/empathy-account-widget.c:681
+#: ../libempathy-gtk/empathy-account-widget.c:696
 #: ../libempathy-gtk/empathy-irc-network-dialog.c:507
 msgid "Server"
 msgstr "Server"
 
-#: ../libempathy-gtk/empathy-account-widget.c:682
+#: ../libempathy-gtk/empathy-account-widget.c:697
 #: ../libempathy-gtk/empathy-irc-network-dialog.c:522
 msgid "Port"
 msgstr "Port"
 
-#: ../libempathy-gtk/empathy-account-widget.c:754
-#: ../libempathy-gtk/empathy-account-widget.c:811
+#: ../libempathy-gtk/empathy-account-widget.c:776
+#: ../libempathy-gtk/empathy-account-widget.c:828
 #, c-format
 msgid "%s:"
 msgstr "%s:"
 
-#: ../libempathy-gtk/empathy-account-widget.c:1163
+#: ../libempathy-gtk/empathy-account-widget.c:1182
+msgid "My Web Accounts"
+msgstr "Conturile mele web"
+
+#: ../libempathy-gtk/empathy-account-widget.c:1199
 #, c-format
-msgid "The account %s is edited via My Web Accounts."
-msgstr "Contul %s este editat prin intermediul Conturilor mele web."
+msgid "The account %s is edited via %s."
+msgstr "Contul %s este editat prin %s."
 
-#: ../libempathy-gtk/empathy-account-widget.c:1169
+#: ../libempathy-gtk/empathy-account-widget.c:1205
 #, c-format
 msgid "The account %s cannot be edited in Empathy."
 msgstr "Contul %s nu poate fi editat în Empathy."
 
-#: ../libempathy-gtk/empathy-account-widget.c:1189
+#: ../libempathy-gtk/empathy-account-widget.c:1224
 msgid "Launch My Web Accounts"
 msgstr "Lansează Conturile mele web"
 
-#: ../libempathy-gtk/empathy-account-widget.c:1527
+#. general handler
+#: ../libempathy-gtk/empathy-account-widget.c:1232
+#, c-format
+msgid "Edit %s"
+msgstr "Editează %s"
+
+#: ../libempathy-gtk/empathy-account-widget.c:1582
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:11
 msgid "Username:"
 msgstr "Utilizator:"
 
-#: ../libempathy-gtk/empathy-account-widget.c:1894
+#: ../libempathy-gtk/empathy-account-widget.c:1900
 msgid "A_pply"
 msgstr "A_plică"
 
-#: ../libempathy-gtk/empathy-account-widget.c:1924
+#: ../libempathy-gtk/empathy-account-widget.c:1930
 msgid "L_og in"
 msgstr "Autent_ificare"
 
-#. Account and Identifier
-#: ../libempathy-gtk/empathy-account-widget.c:1990
-#: ../libempathy-gtk/empathy-contact-blocking-dialog.ui.h:1
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:517
-#: ../libempathy-gtk/empathy-contact-widget.ui.h:2
-#: ../libempathy-gtk/empathy-individual-widget.c:1481
-#: ../libempathy-gtk/empathy-contact-selector-dialog.ui.h:1
-#: ../src/empathy-chatrooms-window.ui.h:1
-#: ../src/empathy-new-chatroom-dialog.ui.h:1
-msgid "Account:"
-msgstr "Cont:"
-
-#: ../libempathy-gtk/empathy-account-widget.c:2001
-msgid "_Enabled"
-msgstr "_Activat"
-
-#: ../libempathy-gtk/empathy-account-widget.c:2066
+#: ../libempathy-gtk/empathy-account-widget.c:2004
 msgid "This account already exists on the server"
-msgstr "Acest cont există deja de pe server."
+msgstr "Acest cont există deja de pe server"
 
-#: ../libempathy-gtk/empathy-account-widget.c:2069
+#: ../libempathy-gtk/empathy-account-widget.c:2007
 msgid "Create a new account on the server"
-msgstr "Crează un cont nou pe server"
+msgstr "Creează un cont nou pe server"
 
-#: ../libempathy-gtk/empathy-account-widget.c:2261
+#: ../libempathy-gtk/empathy-account-widget.c:2201
 msgid "Ca_ncel"
 msgstr "Re_nunță"
 
@@ -822,19 +881,19 @@ msgstr "Re_nunță"
 #. * like: "MyUserName on freenode".
 #. * You should reverse the order of these arguments if the
 #. * server should come before the login id in your locale.
-#: ../libempathy-gtk/empathy-account-widget.c:2558
+#: ../libempathy-gtk/empathy-account-widget.c:2479
 #, c-format
 msgid "%1$s on %2$s"
 msgstr "%1$s pe %2$s"
 
 #. To translators: The parameter is the protocol name. The resulting
 #. * string will be something like: "Jabber Account"
-#: ../libempathy-gtk/empathy-account-widget.c:2584
+#: ../libempathy-gtk/empathy-account-widget.c:2505
 #, c-format
 msgid "%s Account"
 msgstr "Cont %s"
 
-#: ../libempathy-gtk/empathy-account-widget.c:2588
+#: ../libempathy-gtk/empathy-account-widget.c:2509
 msgid "New account"
 msgstr "Cont nou"
 
@@ -846,6 +905,7 @@ msgstr "<b>Exemplu:</b> NumeleMeu"
 #: ../libempathy-gtk/empathy-account-widget-generic.ui.h:1
 #: ../libempathy-gtk/empathy-account-widget-groupwise.ui.h:2
 #: ../libempathy-gtk/empathy-account-widget-icq.ui.h:2
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:1
 #: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:3
 #: ../libempathy-gtk/empathy-account-widget-msn.ui.h:2
 #: ../libempathy-gtk/empathy-account-widget-local-xmpp.ui.h:1
@@ -859,17 +919,17 @@ msgstr "Avansat"
 #: ../libempathy-gtk/empathy-account-widget-icq.ui.h:5
 #: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:8
 #: ../libempathy-gtk/empathy-account-widget-msn.ui.h:4
-#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:12
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:13
 #: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:5
 msgid "Pass_word:"
-msgstr "_Parolă:"
+msgstr "Paro_lă:"
 
 #: ../libempathy-gtk/empathy-account-widget-aim.ui.h:4
 #: ../libempathy-gtk/empathy-account-widget-groupwise.ui.h:5
 #: ../libempathy-gtk/empathy-account-widget-icq.ui.h:6
 #: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:10
 #: ../libempathy-gtk/empathy-account-widget-msn.ui.h:5
-#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:15
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:16
 msgid "Remember Password"
 msgstr "Memorează parola"
 
@@ -879,9 +939,9 @@ msgstr "Memorează parola"
 #: ../libempathy-gtk/empathy-account-widget-icq.ui.h:7
 #: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:11
 #: ../libempathy-gtk/empathy-account-widget-msn.ui.h:6
-#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:16
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:17
 #: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:6
-#: ../libempathy-gtk/empathy-password-dialog.c:311
+#: ../libempathy-gtk/empathy-base-password-dialog.c:261
 msgid "Remember password"
 msgstr "Memorează parola"
 
@@ -941,7 +1001,7 @@ msgstr "<b>Exemplu:</b> 123456789"
 #: ../libempathy-gtk/empathy-account-widget-icq.ui.h:3
 #: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:3
 msgid "Ch_aracter set:"
-msgstr "Set c_aractere:"
+msgstr "Set de c_aractere:"
 
 #: ../libempathy-gtk/empathy-account-widget-icq.ui.h:4
 msgid "ICQ _UIN:"
@@ -955,76 +1015,84 @@ msgstr "Care este UIN-ul de ICQ?"
 msgid "What is your ICQ password?"
 msgstr "Care este parola ICQ?"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.c:183
-#: ../libempathy-gtk/empathy-account-widget-sip.c:216
+#: ../libempathy-gtk/empathy-account-widget-sip.c:206
+#: ../libempathy-gtk/empathy-account-widget-sip.c:239
 msgid "Auto"
 msgstr "Auto"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.c:186
+#: ../libempathy-gtk/empathy-account-widget-sip.c:209
 msgid "UDP"
 msgstr "UDP"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.c:189
+#: ../libempathy-gtk/empathy-account-widget-sip.c:212
 msgid "TCP"
 msgstr "TCP"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.c:192
+#: ../libempathy-gtk/empathy-account-widget-sip.c:215
 msgid "TLS"
 msgstr "TLS"
 
 #. translators: this string is very specific to SIP's internal; maybe
 #. * best to keep the English version.
-#: ../libempathy-gtk/empathy-account-widget-sip.c:221
+#: ../libempathy-gtk/empathy-account-widget-sip.c:244
 msgid "Register"
 msgstr "Register"
 
 #. translators: this string is very specific to SIP's internal; maybe
 #. * best to keep the English version.
-#: ../libempathy-gtk/empathy-account-widget-sip.c:226
+#: ../libempathy-gtk/empathy-account-widget-sip.c:249
 msgid "Options"
-msgstr "Opțiuni"
+msgstr "Options"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.c:229
+#: ../libempathy-gtk/empathy-account-widget-sip.c:252
 msgid "None"
 msgstr "Niciunul"
 
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:1
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:2
 msgid "Character set:"
-msgstr "Set caractere:"
+msgstr "Set de caractere:"
 
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:2
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:3
+msgid ""
+"Most IRC servers don't need a password, so if you're not sure, don't enter a "
+"password."
+msgstr ""
+"Multe servere IRC nu necesită o parolă, dacă nu sunteți siguri, nu scrieți "
+"nimic."
+
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:4
 msgid "Network"
 msgstr "Rețea"
 
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:3
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:5
 msgid "Network:"
 msgstr "Rețea:"
 
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:4
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:6
 msgid "Nickname:"
 msgstr "Pseudonim:"
 
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:5
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:7
 msgid "Password:"
 msgstr "Parolă:"
 
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:6
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:8
 msgid "Quit message:"
 msgstr "Mesaj de ieșire:"
 
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:7
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:9
 msgid "Real name:"
 msgstr "Nume real:"
 
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:8
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:10
 msgid "Servers"
 msgstr "Servere"
 
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:9
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:12
 msgid "What is your IRC nickname?"
 msgstr "Care este pseudonimul IRC?"
 
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:10
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:13
 msgid "Which IRC network?"
 msgstr "Care rețea IRC?"
 
@@ -1046,7 +1114,7 @@ msgstr "I_gnoră erorile certificatelor SSL"
 
 #: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:7
 msgid "Override server settings"
-msgstr "Impune aceste configurări serverului"
+msgstr "Folosește configurările locale în locul celor ale serverului"
 
 #: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:9
 msgid "Priori_ty:"
@@ -1158,58 +1226,67 @@ msgid "Discover the STUN server automatically"
 msgstr "Descoperă serverul STUN automat"
 
 #: ../libempathy-gtk/empathy-account-widget-sip.ui.h:6
+msgid "Ignore TLS Errors"
+msgstr "Ignoră erorile TLS"
+
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:7
 msgid "Interval (seconds)"
 msgstr "Interval (secunde)"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:7
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:8
 msgid "Keep-Alive Options"
 msgstr "Opțiuni Keep-Alive (menținere în viață a conexiunii)"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:8
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:9
 msgid "Loose Routing"
 msgstr "Rutare relaxată"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:9
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:10
 msgid "Mechanism:"
 msgstr "Mecanism:"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:10
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:11
 msgid "Miscellaneous Options"
 msgstr "Opțiuni diverse"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:11
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:12
 msgid "NAT Traversal Options"
 msgstr "Opțiuni de traversare a NAT-ului"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:13
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:14
 msgid "Port:"
 msgstr "Port:"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:14
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:15
 msgid "Proxy Options"
 msgstr "Opțiuni proxy"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:17
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:18
 msgid "STUN Server:"
 msgstr "Server STUN:"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:18
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:19
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:114
 msgid "Server:"
 msgstr "Server:"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:19
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:20
 msgid "Transport:"
 msgstr "Transport:"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:20
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:21
+msgid "Use this account to call _landlines and mobile phones"
+msgstr "Folosiți acest cont să sunați te_lefoane fixe sau telefoane mobile"
+
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:22
 msgid "What is your SIP account password?"
 msgstr "Care este parola contului SIP?"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:21
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:23
 msgid "What is your SIP login ID?"
 msgstr "Care este ID-ul de autentificare SIP?"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:22
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:24
 msgid "_Username:"
 msgstr "_Utilizator:"
 
@@ -1219,11 +1296,11 @@ msgstr "I_gnoră invitații la canale de discuții și conferințe"
 
 #: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:7
 msgid "What is your Yahoo! ID?"
-msgstr "Care este ID-ul Yahoo! ?"
+msgstr "Care este ID-ul Yahoo!?"
 
 #: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:8
 msgid "What is your Yahoo! password?"
-msgstr "Care este parola Yahoo! ?"
+msgstr "Care este parola Yahoo!?"
 
 #: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:9
 msgid "Yahoo! I_D:"
@@ -1231,31 +1308,39 @@ msgstr "I_D Yahoo!:"
 
 #: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:11
 msgid "_Room List locale:"
-msgstr "Configurări regionale listă cana_le:"
+msgstr "Configu_rări regionale listă canale:"
 
-#: ../libempathy-gtk/empathy-avatar-chooser.c:448
-#: ../libempathy-gtk/empathy-avatar-chooser.c:524
+#: ../libempathy-gtk/empathy-avatar-chooser.c:471
+#: ../libempathy-gtk/empathy-avatar-chooser.c:556
 msgid "Couldn't convert image"
 msgstr "Nu s-a putut converti imaginea"
 
-#: ../libempathy-gtk/empathy-avatar-chooser.c:449
+#: ../libempathy-gtk/empathy-avatar-chooser.c:472
 msgid "None of the accepted image formats are supported on your system"
 msgstr ""
 "Sistemul dumneavoastră nu suportă niciunul din formatele de imagine acceptate"
 
-#: ../libempathy-gtk/empathy-avatar-chooser.c:936
+#: ../libempathy-gtk/empathy-avatar-chooser.c:819
+msgid "Couldn't save picture to file"
+msgstr "Nu s-a putut converti imaginea"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:939
 msgid "Select Your Avatar Image"
 msgstr "Alegeți avatarul"
 
-#: ../libempathy-gtk/empathy-avatar-chooser.c:939
+#: ../libempathy-gtk/empathy-avatar-chooser.c:947
+msgid "Take a picture..."
+msgstr "Faceți o poză..."
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:960
 msgid "No Image"
 msgstr "Nicio imagine"
 
-#: ../libempathy-gtk/empathy-avatar-chooser.c:1001
+#: ../libempathy-gtk/empathy-avatar-chooser.c:1017
 msgid "Images"
 msgstr "Imagini"
 
-#: ../libempathy-gtk/empathy-avatar-chooser.c:1005
+#: ../libempathy-gtk/empathy-avatar-chooser.c:1021
 msgid "All Files"
 msgstr "Toate fișierele"
 
@@ -1263,35 +1348,65 @@ msgstr "Toate fișierele"
 msgid "Click to enlarge"
 msgstr "Clic pentru mărire"
 
-#: ../libempathy-gtk/empathy-chat.c:655
+#: ../libempathy-gtk/empathy-call-utils.c:44
+#: ../libempathy-gtk/empathy-call-utils.c:62
+msgid "There was an error starting the call"
+msgstr "A apărut o eroare la pornirea apelului"
+
+#: ../libempathy-gtk/empathy-call-utils.c:51
+msgid "The specified contact doesn't support calls"
+msgstr "Contactul selectat nu suportă apeluri"
+
+#: ../libempathy-gtk/empathy-call-utils.c:53
+msgid "The specified contact is offline"
+msgstr "Contactul selectat este deconectat"
+
+#: ../libempathy-gtk/empathy-call-utils.c:55
+msgid "The specified contact is not valid"
+msgstr "Contactul selectat nu este valid"
+
+#: ../libempathy-gtk/empathy-call-utils.c:57
+msgid "Emergency calls are not supported on this protocol"
+msgstr "Apelurile de urgență nu sunt suportate de către acest protocol"
+
+#: ../libempathy-gtk/empathy-call-utils.c:59
+msgid "You don't have enough credit in order to place this call"
+msgstr "Nu aveți sold suficient pentru a efectua acest apel"
+
+#: ../libempathy-gtk/empathy-chat.c:706
 msgid "Failed to open private chat"
 msgstr "Nu s-a putut deschide conversația privată"
 
-#: ../libempathy-gtk/empathy-chat.c:720
+#: ../libempathy-gtk/empathy-chat.c:764
 msgid "Topic not supported on this conversation"
 msgstr "Această conversație nu are un subiect definit"
 
-#: ../libempathy-gtk/empathy-chat.c:726
+#: ../libempathy-gtk/empathy-chat.c:770
 msgid "You are not allowed to change the topic"
 msgstr "Nu aveți dreptul să modificați subiectul"
 
-#: ../libempathy-gtk/empathy-chat.c:909
+#: ../libempathy-gtk/empathy-chat.c:971
+#, c-format
+msgid "“%s” is not a valid contact ID"
+msgstr "„%s” nu este un identificator de contact valid"
+
+#: ../libempathy-gtk/empathy-chat.c:1066
 msgid "/clear: clear all messages from the current conversation"
 msgstr "/clear: curăță toate mesajele din conversația curentă"
 
-#: ../libempathy-gtk/empathy-chat.c:912
+#: ../libempathy-gtk/empathy-chat.c:1069
 msgid "/topic <topic>: set the topic of the current conversation"
 msgstr "/topic <topic>: modifică subiectul conversației curente"
 
-#: ../libempathy-gtk/empathy-chat.c:915
+#: ../libempathy-gtk/empathy-chat.c:1072
 msgid "/join <chat room ID>: join a new chat room"
 msgstr "/join <identificator cameră>: alăturare la un nou canal de discuții"
 
-#: ../libempathy-gtk/empathy-chat.c:918
+#: ../libempathy-gtk/empathy-chat.c:1075
 msgid "/j <chat room ID>: join a new chat room"
 msgstr "/j <identificator cameră>: alăturare la un nou canal de discuții"
 
-#: ../libempathy-gtk/empathy-chat.c:923
+#: ../libempathy-gtk/empathy-chat.c:1079
 msgid ""
 "/part [<chat room ID>] [<reason>]: leave the chat room, by default the "
 "current one"
@@ -1299,23 +1414,23 @@ msgstr ""
 "/part [<chat room ID>] [<reason>]: părăsește canalul de discuții, implicit "
 "cel curent"
 
-#: ../libempathy-gtk/empathy-chat.c:928
+#: ../libempathy-gtk/empathy-chat.c:1083
 msgid "/query <contact ID> [<message>]: open a private chat"
 msgstr "/query <id contact> [<message>]: deschide o conversație privată"
 
-#: ../libempathy-gtk/empathy-chat.c:931
+#: ../libempathy-gtk/empathy-chat.c:1086
 msgid "/msg <contact ID> <message>: open a private chat"
 msgstr "/msg <id contact> <message>: deschide o conversație privată"
 
-#: ../libempathy-gtk/empathy-chat.c:934
+#: ../libempathy-gtk/empathy-chat.c:1089
 msgid "/nick <nickname>: change your nickname on the current server"
 msgstr "/nick <pseudonim>: modifică pseudonimul pe serverul curent"
 
-#: ../libempathy-gtk/empathy-chat.c:937
+#: ../libempathy-gtk/empathy-chat.c:1092
 msgid "/me <message>: send an ACTION message to the current conversation"
 msgstr "/me <mesaj>: trimite un mesaj de tip ACTION conversației curente"
 
-#: ../libempathy-gtk/empathy-chat.c:940
+#: ../libempathy-gtk/empathy-chat.c:1095
 msgid ""
 "/say <message>: send <message> to the current conversation. This is used to "
 "send a message starting with a '/'. For example: \"/say /join is used to "
@@ -1325,7 +1440,11 @@ msgstr ""
 "permite să trimiteți un mesaj ce începe cu „/”. De exemplu: „/say /join este "
 "folosit pentru alăturarea la un nou canal de discuții”"
 
-#: ../libempathy-gtk/empathy-chat.c:945
+#: ../libempathy-gtk/empathy-chat.c:1100
+msgid "/whois <contact ID>: display information about a contact"
+msgstr "/whois <contact ID>: afișează informații despre un contact"
+
+#: ../libempathy-gtk/empathy-chat.c:1103
 msgid ""
 "/help [<command>]: show all supported commands. If <command> is defined, "
 "show its usage."
@@ -1333,99 +1452,121 @@ msgstr ""
 "/help [<comanda>]: afișează toate comenzile suportate. Dacă <comanda> este "
 "definită, se va afișa un ghid de utilizare pentru aceasta."
 
-#: ../libempathy-gtk/empathy-chat.c:955
+#: ../libempathy-gtk/empathy-chat.c:1122
 #, c-format
 msgid "Usage: %s"
-msgstr "Utlizare: %s"
+msgstr "Utilizare: %s"
 
-#: ../libempathy-gtk/empathy-chat.c:997
+#: ../libempathy-gtk/empathy-chat.c:1167
 msgid "Unknown command"
 msgstr "Comandă necunoscută"
 
-#: ../libempathy-gtk/empathy-chat.c:1123
+#: ../libempathy-gtk/empathy-chat.c:1293
 msgid "Unknown command; see /help for the available commands"
 msgstr ""
 "Comandă necunoscută: utilizați /help pentru a vedea comenzile disponibile"
 
-#: ../libempathy-gtk/empathy-chat.c:1263
+#: ../libempathy-gtk/empathy-chat.c:1457
+msgid "insufficient balance to send message"
+msgstr "sold insuficient pentru a trimite mesajul"
+
+#: ../libempathy-gtk/empathy-chat.c:1461 ../libempathy-gtk/empathy-chat.c:1475
+#: ../libempathy-gtk/empathy-chat.c:1538
+#, c-format
+msgid "Error sending message '%s': %s"
+msgstr "Eroare la trimiterea mesajului „%s”: %s"
+
+#: ../libempathy-gtk/empathy-chat.c:1463 ../libempathy-gtk/empathy-chat.c:1480
+#: ../libempathy-gtk/empathy-chat.c:1542
+#, c-format
+msgid "Error sending message: %s"
+msgstr "Eroare la trimiterea mesajului : %s"
+
+#. translators: error used when user doesn't have enough credit on his
+#. * account to send the message.
+#: ../libempathy-gtk/empathy-chat.c:1469
+#, c-format
+msgid "insufficient balance to send message. <a href='%s'>Top up</a>."
+msgstr "sold insuficient pentru a trimite mesajul. <a href='%s'>Încărcați</a>."
+
+#: ../libempathy-gtk/empathy-chat.c:1509
+msgid "not capable"
+msgstr "incapabil"
+
+#: ../libempathy-gtk/empathy-chat.c:1516
 msgid "offline"
 msgstr "deconectat"
 
-#: ../libempathy-gtk/empathy-chat.c:1266
+#: ../libempathy-gtk/empathy-chat.c:1519
 msgid "invalid contact"
-msgstr "contact nevalid"
+msgstr "contact invalid"
 
-#: ../libempathy-gtk/empathy-chat.c:1269
+#: ../libempathy-gtk/empathy-chat.c:1522
 msgid "permission denied"
 msgstr "permisiune respinsă"
 
-#: ../libempathy-gtk/empathy-chat.c:1272
+#: ../libempathy-gtk/empathy-chat.c:1525
 msgid "too long message"
 msgstr "mesaj prea lung"
 
-#: ../libempathy-gtk/empathy-chat.c:1275
+#: ../libempathy-gtk/empathy-chat.c:1528
 msgid "not implemented"
 msgstr "neimplementat"
 
-#: ../libempathy-gtk/empathy-chat.c:1279
+#: ../libempathy-gtk/empathy-chat.c:1532
 msgid "unknown"
 msgstr "necunoscut"
 
-#: ../libempathy-gtk/empathy-chat.c:1283
-#, c-format
-msgid "Error sending message '%s': %s"
-msgstr "Eroare la trimiterea mesajului „%s”: %s"
-
-#: ../libempathy-gtk/empathy-chat.c:1344 ../src/empathy-chat-window.c:708
+#: ../libempathy-gtk/empathy-chat.c:1599 ../src/empathy-chat-window.c:761
 msgid "Topic:"
 msgstr "Subiect:"
 
-#: ../libempathy-gtk/empathy-chat.c:1356
+#: ../libempathy-gtk/empathy-chat.c:1611
 #, c-format
 msgid "Topic set to: %s"
 msgstr "Subiect definit la: %s"
 
-#: ../libempathy-gtk/empathy-chat.c:1358
+#: ../libempathy-gtk/empathy-chat.c:1613
 msgid "No topic defined"
 msgstr "Niciun subiect definit"
 
-#: ../libempathy-gtk/empathy-chat.c:1857
+#: ../libempathy-gtk/empathy-chat.c:2126
 msgid "(No Suggestions)"
 msgstr "(Nicio sugestie)"
 
 #. translators: %s is the selected word
-#: ../libempathy-gtk/empathy-chat.c:1925
+#: ../libempathy-gtk/empathy-chat.c:2194
 #, c-format
 msgid "Add '%s' to Dictionary"
 msgstr "Adaugă „%s” în dicționar"
 
 #. translators: first %s is the selected word,
 #. * second %s is the language name of the target dictionary
-#: ../libempathy-gtk/empathy-chat.c:1962
+#: ../libempathy-gtk/empathy-chat.c:2231
 #, c-format
 msgid "Add '%s' to %s Dictionary"
 msgstr "Adaugă „%s” în dicționarul de limbă %s"
 
-#: ../libempathy-gtk/empathy-chat.c:2021
+#: ../libempathy-gtk/empathy-chat.c:2301
 msgid "Insert Smiley"
 msgstr "Inserează un emoticon"
 
 #. send button
-#: ../libempathy-gtk/empathy-chat.c:2039
-#: ../libempathy-gtk/empathy-ui-utils.c:1809
+#: ../libempathy-gtk/empathy-chat.c:2319
+#: ../libempathy-gtk/empathy-ui-utils.c:1867
 msgid "_Send"
 msgstr "_Trimite"
 
 #. Spelling suggestions
-#: ../libempathy-gtk/empathy-chat.c:2074
+#: ../libempathy-gtk/empathy-chat.c:2376
 msgid "_Spelling Suggestions"
-msgstr "_Sugestii corectare ortografică"
+msgstr "_Sugestii de corectare ortografică"
 
-#: ../libempathy-gtk/empathy-chat.c:2163
+#: ../libempathy-gtk/empathy-chat.c:2465
 msgid "Failed to retrieve recent logs"
-msgstr "Nu s-a putut obține înregistrările recente"
+msgstr "Nu s-au putut obține înregistrările recente"
 
-#: ../libempathy-gtk/empathy-chat.c:2274
+#: ../libempathy-gtk/empathy-chat.c:2602
 #, c-format
 msgid "%s has disconnected"
 msgstr "%s s-a deconectat"
@@ -1433,12 +1574,12 @@ msgstr "%s s-a deconectat"
 #. translators: reverse the order of these arguments
 #. * if the kicked should come before the kicker in your locale.
 #.
-#: ../libempathy-gtk/empathy-chat.c:2281
+#: ../libempathy-gtk/empathy-chat.c:2609
 #, c-format
 msgid "%1$s was kicked by %2$s"
 msgstr "%1$s a fost dat afară de %2$s"
 
-#: ../libempathy-gtk/empathy-chat.c:2284
+#: ../libempathy-gtk/empathy-chat.c:2612
 #, c-format
 msgid "%s was kicked"
 msgstr "%s a fost dat afară"
@@ -1446,17 +1587,17 @@ msgstr "%s a fost dat afară"
 #. translators: reverse the order of these arguments
 #. * if the banned should come before the banner in your locale.
 #.
-#: ../libempathy-gtk/empathy-chat.c:2292
+#: ../libempathy-gtk/empathy-chat.c:2620
 #, c-format
 msgid "%1$s was banned by %2$s"
 msgstr "%2$s a blocat accesul lui de %1$s"
 
-#: ../libempathy-gtk/empathy-chat.c:2295
+#: ../libempathy-gtk/empathy-chat.c:2623
 #, c-format
 msgid "%s was banned"
 msgstr "%s a fost blocat"
 
-#: ../libempathy-gtk/empathy-chat.c:2299
+#: ../libempathy-gtk/empathy-chat.c:2627
 #, c-format
 msgid "%s has left the room"
 msgstr "%s a părăsit canalul de discuții"
@@ -1466,141 +1607,173 @@ msgstr "%s a părăsit canalul de discuții"
 #. * given by the user living the room. If this poses a problem,
 #. * please let us know. :-)
 #.
-#: ../libempathy-gtk/empathy-chat.c:2308
+#: ../libempathy-gtk/empathy-chat.c:2636
 #, c-format
 msgid " (%s)"
 msgstr " (%s)"
 
-#: ../libempathy-gtk/empathy-chat.c:2333
+#: ../libempathy-gtk/empathy-chat.c:2661
 #, c-format
 msgid "%s has joined the room"
 msgstr "%s s-a alăturat canalului de discuții"
 
-#: ../libempathy-gtk/empathy-chat.c:2358
+#: ../libempathy-gtk/empathy-chat.c:2686
 #, c-format
 msgid "%s is now known as %s"
 msgstr "%s este acum cunoscut ca %s"
 
-#: ../libempathy-gtk/empathy-chat.c:2497
-#: ../src/empathy-streamed-media-window.c:1949
-#: ../src/empathy-event-manager.c:1122
+#. We don't know if the incoming call has been accepted or not, so we
+#. * assume it hasn't and if it has, we'll set the proper status when
+#. * we get the new handler.
+#: ../libempathy-gtk/empathy-chat.c:2847
+#: ../src/empathy-streamed-media-window.c:1889
+#: ../src/empathy-event-manager.c:1260 ../src/empathy-call-window.c:1538
+#: ../src/empathy-call-window.c:1588 ../src/empathy-call-window.c:2631
 msgid "Disconnected"
 msgstr "Deconectat"
 
 #. Add message
-#: ../libempathy-gtk/empathy-chat.c:3127
+#: ../libempathy-gtk/empathy-chat.c:3493
 msgid "Would you like to store this password?"
 msgstr "Doriți să se stocheze această parolă?"
 
-#: ../libempathy-gtk/empathy-chat.c:3133
+#: ../libempathy-gtk/empathy-chat.c:3499
 msgid "Remember"
 msgstr "Reține"
 
-#: ../libempathy-gtk/empathy-chat.c:3143
+#: ../libempathy-gtk/empathy-chat.c:3509
 msgid "Not now"
 msgstr "Nu acum"
 
-#: ../libempathy-gtk/empathy-chat.c:3187
+#: ../libempathy-gtk/empathy-chat.c:3553
+#: ../libempathy-gtk/empathy-bad-password-dialog.c:142
 msgid "Retry"
-msgstr "Încearcă din nou"
+msgstr "Încercați din nou"
 
-#: ../libempathy-gtk/empathy-chat.c:3191
+#: ../libempathy-gtk/empathy-chat.c:3557
 msgid "Wrong password; please try again:"
 msgstr "Parolă incorectă; încercați din nou:"
 
 #. Add message
-#: ../libempathy-gtk/empathy-chat.c:3308
+#: ../libempathy-gtk/empathy-chat.c:3687
 msgid "This room is protected by a password:"
-msgstr "Acest canal este protejată de o parolă:"
+msgstr "Acest canal este protejat de o parolă:"
 
-#: ../libempathy-gtk/empathy-chat.c:3335
+#: ../libempathy-gtk/empathy-chat.c:3714
 msgid "Join"
 msgstr "Alăturare"
 
-#: ../libempathy-gtk/empathy-chat.c:3505 ../src/empathy-event-manager.c:1144
+#: ../libempathy-gtk/empathy-chat.c:3902 ../src/empathy-event-manager.c:1281
 msgid "Connected"
 msgstr "Conectat"
 
-#: ../libempathy-gtk/empathy-chat.c:3558
-#: ../libempathy-gtk/empathy-log-window.c:654
+#: ../libempathy-gtk/empathy-chat.c:3957
 msgid "Conversation"
 msgstr "Conversație"
 
-#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:422
+#. Translators: this string is a something like
+#. * "Escher Cat (SMS)"
+#: ../libempathy-gtk/empathy-chat.c:3962
+#, c-format
+msgid "%s (SMS)"
+msgstr "%s (SMS)"
+
+#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:265
 msgid "Unknown or invalid identifier"
 msgstr "Identificator necunoscut sau nevalid"
 
-#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:424
+#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:267
 msgid "Contact blocking temporarily unavailable"
 msgstr "Blocarea contactelor nu este disponibilă temporar"
 
-#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:426
+#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:269
 msgid "Contact blocking unavailable"
 msgstr "Blocarea contactelor nu este disponibilă"
 
-#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:428
+#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:271
 msgid "Permission Denied"
 msgstr "Permisiune respinsă"
 
-#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:432
+#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:275
 msgid "Could not block contact"
 msgstr "Nu s-a putut bloca contactul"
 
-#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:701
+#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:622
 msgid "Edit Blocked Contacts"
 msgstr "Editează contactele blocate"
 
+#. Account and Identifier
+#: ../libempathy-gtk/empathy-contact-blocking-dialog.ui.h:1
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:506
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:2
+#: ../libempathy-gtk/empathy-individual-widget.c:1475
+#: ../src/empathy-chatrooms-window.ui.h:1
+#: ../src/empathy-new-chatroom-dialog.ui.h:1
+msgid "Account:"
+msgstr "Cont:"
+
+#: ../libempathy-gtk/empathy-contact-blocking-dialog.ui.h:2
+msgid "Blocked Contacts"
+msgstr "Contacte blocate"
+
+#: ../libempathy-gtk/empathy-contact-blocking-dialog.ui.h:3
+#: ../libempathy-gtk/empathy-status-preset-dialog.ui.h:1
+#: ../src/empathy-accounts-dialog.ui.h:5
+#: ../src/empathy-chatrooms-window.ui.h:3
+msgid "Remove"
+msgstr "Elimină"
+
 #. Copy Link Address menu item
-#: ../libempathy-gtk/empathy-chat-text-view.c:320
-#: ../libempathy-gtk/empathy-theme-adium.c:794
+#: ../libempathy-gtk/empathy-chat-text-view.c:322
+#: ../libempathy-gtk/empathy-webkit-utils.c:277
 msgid "_Copy Link Address"
 msgstr "_Copiază adresa legăturii"
 
 #. Open Link menu item
-#: ../libempathy-gtk/empathy-chat-text-view.c:327
-#: ../libempathy-gtk/empathy-theme-adium.c:801
+#: ../libempathy-gtk/empathy-chat-text-view.c:329
+#: ../libempathy-gtk/empathy-webkit-utils.c:284
 msgid "_Open Link"
 msgstr "_Deschide legătura"
 
 #. Translators: timestamp displayed between conversations in
 #. * chat windows (strftime format string)
-#: ../libempathy-gtk/empathy-chat-text-view.c:420
+#: ../libempathy-gtk/empathy-chat-text-view.c:417
 msgid "%A %B %d %Y"
-msgstr "%A, %d %B %Y"
+msgstr "%A %d %B %Y"
 
-#: ../libempathy-gtk/empathy-contact-dialogs.c:299
+#: ../libempathy-gtk/empathy-contact-dialogs.c:287
 #: ../libempathy-gtk/empathy-individual-edit-dialog.c:247
 msgid "Edit Contact Information"
 msgstr "Modifică informațiile contactului"
 
-#: ../libempathy-gtk/empathy-contact-dialogs.c:350
+#: ../libempathy-gtk/empathy-contact-dialogs.c:338
 msgid "Personal Information"
 msgstr "Informații personale"
 
-#: ../libempathy-gtk/empathy-contact-dialogs.c:459
+#: ../libempathy-gtk/empathy-contact-dialogs.c:439
 #: ../libempathy-gtk/empathy-individual-dialogs.c:119
 msgid "New Contact"
 msgstr "Contact nou"
 
-#: ../libempathy-gtk/empathy-contact-dialogs.c:532
+#: ../libempathy-gtk/empathy-contact-dialogs.c:508
 #: ../libempathy-gtk/empathy-individual-dialogs.c:198
 #, c-format
 msgid "Block %s?"
 msgstr "Blocați %s?"
 
-#: ../libempathy-gtk/empathy-contact-dialogs.c:537
-#: ../libempathy-gtk/empathy-individual-dialogs.c:239
+#: ../libempathy-gtk/empathy-contact-dialogs.c:513
+#: ../libempathy-gtk/empathy-individual-dialogs.c:253
 #, c-format
 msgid "Are you sure you want to block '%s' from contacting you again?"
 msgstr "Sigur doriți să blocați „%s”? Nu vă va mai putea contacta de acum."
 
-#: ../libempathy-gtk/empathy-contact-dialogs.c:542
-#: ../libempathy-gtk/empathy-individual-dialogs.c:261
+#: ../libempathy-gtk/empathy-contact-dialogs.c:518
+#: ../libempathy-gtk/empathy-individual-dialogs.c:275
 msgid "_Block"
 msgstr "_Blochează"
 
-#: ../libempathy-gtk/empathy-contact-dialogs.c:552
-#: ../libempathy-gtk/empathy-individual-dialogs.c:270
+#: ../libempathy-gtk/empathy-contact-dialogs.c:536
+#: ../libempathy-gtk/empathy-individual-dialogs.c:284
 msgid "_Report this contact as abusive"
 msgid_plural "_Report these contacts as abusive"
 msgstr[0] "_Raportează acest contact ca abuziv"
@@ -1619,327 +1792,337 @@ msgstr "Cerere de abonare"
 msgid "_Block User"
 msgstr "_Blochează utilizatorul"
 
-#: ../libempathy-gtk/empathy-contact-list-store.h:71
-msgid "Ungrouped"
-msgstr "Negrupate"
-
-#: ../libempathy-gtk/empathy-contact-list-store.h:72
-msgid "Favorite People"
-msgstr "Persoane favorite"
-
-#: ../libempathy-gtk/empathy-contact-list-view.c:2012
-#: ../libempathy-gtk/empathy-individual-view.c:2337
-#, c-format
-msgid "Do you really want to remove the group '%s'?"
-msgstr "Sigur doriți să eliminați grupul „%s”?"
-
-# LG: aici e titlul unui dialog, deși nu pare :)
-#: ../libempathy-gtk/empathy-contact-list-view.c:2014
-#: ../libempathy-gtk/empathy-individual-view.c:2340
-msgid "Removing group"
-msgstr "Eliminare grup"
-
-#. Remove
-#: ../libempathy-gtk/empathy-contact-list-view.c:2063
-#: ../libempathy-gtk/empathy-contact-list-view.c:2140
-#: ../libempathy-gtk/empathy-individual-view.c:2395
-#: ../libempathy-gtk/empathy-individual-view.c:2563
-#: ../src/empathy-accounts-dialog.ui.h:7
-msgid "_Remove"
-msgstr "_Elimină"
-
-#: ../libempathy-gtk/empathy-contact-list-view.c:2093
-#: ../libempathy-gtk/empathy-individual-view.c:2448
-#, c-format
-msgid "Do you really want to remove the contact '%s'?"
-msgstr "Sigur doriți să eliminați contactul „%s”?"
-
-# LG: aici e vorba de titlul unui dialog
-#: ../libempathy-gtk/empathy-contact-list-view.c:2095
-#: ../libempathy-gtk/empathy-individual-view.c:2469
-msgid "Removing contact"
-msgstr "Eliminare contact"
-
-#: ../libempathy-gtk/empathy-contact-menu.c:219
-#: ../src/empathy-main-window.ui.h:13
+#: ../libempathy-gtk/empathy-contact-menu.c:212
+#: ../libempathy-gtk/empathy-individual-menu.c:1558
+#: ../src/empathy-main-window-menubar.ui.h:14
 msgid "_Add Contact…"
-msgstr "_Adaugă contact…"
+msgstr "_Adaugă un contact…"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:296
+#: ../libempathy-gtk/empathy-contact-menu.c:287
 msgid "_Block Contact"
-msgstr "_Blochează contactul"
+msgstr "_Blochează un contact"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:325
-#: ../libempathy-gtk/empathy-individual-menu.c:517
-#: ../src/empathy-main-window.ui.h:15
+#. add chat button
+#: ../libempathy-gtk/empathy-contact-menu.c:316
+#: ../libempathy-gtk/empathy-individual-menu.c:789
+#: ../libempathy-gtk/empathy-new-message-dialog.c:320
+#: ../src/empathy-main-window-menubar.ui.h:16
 msgid "_Chat"
 msgstr "Dis_cuție"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:356
-#: ../libempathy-gtk/empathy-individual-menu.c:560
+#: ../libempathy-gtk/empathy-contact-menu.c:348
+#: ../libempathy-gtk/empathy-individual-menu.c:881
 msgctxt "menu item"
 msgid "_Audio Call"
 msgstr "Apel _audio"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:387
-#: ../libempathy-gtk/empathy-individual-menu.c:602
+#: ../libempathy-gtk/empathy-contact-menu.c:381
+#: ../libempathy-gtk/empathy-individual-menu.c:926
 msgctxt "menu item"
 msgid "_Video Call"
 msgstr "Apel _video"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:433
-#: ../libempathy-gtk/empathy-individual-menu.c:645
-#: ../src/empathy-main-window.ui.h:26
+#: ../libempathy-gtk/empathy-contact-menu.c:427
+#: ../libempathy-gtk/empathy-individual-menu.c:979
+#: ../src/empathy-main-window-menubar.ui.h:27
 msgid "_Previous Conversations"
 msgstr "Conversații an_terioare"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:455
-#: ../libempathy-gtk/empathy-individual-menu.c:686
+#: ../libempathy-gtk/empathy-contact-menu.c:449
+#: ../libempathy-gtk/empathy-individual-menu.c:1020
 msgid "Send File"
 msgstr "Trimite un fișier"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:478
-#: ../libempathy-gtk/empathy-individual-menu.c:728
+#: ../libempathy-gtk/empathy-contact-menu.c:472
+#: ../libempathy-gtk/empathy-individual-menu.c:1062
 msgid "Share My Desktop"
 msgstr "Partajează desktopul"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:518
-#: ../libempathy-gtk/empathy-contact-widget.c:1763
-#: ../libempathy-gtk/empathy-individual-menu.c:763
-#: ../libempathy-gtk/empathy-individual-widget.c:1372
-msgid "Favorite"
-msgstr "Favorite"
-
-#: ../libempathy-gtk/empathy-contact-menu.c:547
-#: ../libempathy-gtk/empathy-individual-menu.c:791
+#: ../libempathy-gtk/empathy-contact-menu.c:501
+#: ../libempathy-gtk/empathy-individual-menu.c:1125
 msgid "Infor_mation"
 msgstr "Infor_mații"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:593
+#: ../libempathy-gtk/empathy-contact-menu.c:547
 msgctxt "Edit contact (contextual menu)"
 msgid "_Edit"
 msgstr "_Editare"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:647
-#: ../libempathy-gtk/empathy-individual-menu.c:972
-#: ../src/empathy-chat-window.c:920
+#: ../libempathy-gtk/empathy-contact-menu.c:601
+#: ../libempathy-gtk/empathy-individual-menu.c:1316
+#: ../src/empathy-chat-window.c:1011
 msgid "Inviting you to this room"
 msgstr "Sunteți invitat în acest canal de discuții"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:678
-#: ../libempathy-gtk/empathy-individual-menu.c:1019
+#: ../libempathy-gtk/empathy-contact-menu.c:632
+#: ../libempathy-gtk/empathy-individual-menu.c:1362
 msgid "_Invite to Chat Room"
 msgstr "_Invită într-un canal de discuții"
 
 #. Title
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:510
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:499
 msgid "Search contacts"
 msgstr "Caută contacte"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:540
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:529
 msgid "Search: "
 msgstr "Caută:"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:598
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:587
 msgid "_Add Contact"
 msgstr "_Adaugă contact"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:616
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:605
 msgid "No contacts found"
 msgstr "Nu s-a găsit niciun contact"
 
-#: ../libempathy-gtk/empathy-contact-selector.c:129
-msgid "Select a contact"
-msgstr "Alege un contact"
-
-#: ../libempathy-gtk/empathy-contact-widget.c:295
-#: ../libempathy-gtk/empathy-individual-widget.c:153
-msgid "Full name:"
-msgstr "Nume întreg:"
-
-#: ../libempathy-gtk/empathy-contact-widget.c:296
-#: ../libempathy-gtk/empathy-individual-widget.c:154
-msgid "Phone number:"
-msgstr "Numărul de telefon:"
-
-#: ../libempathy-gtk/empathy-contact-widget.c:297
-#: ../libempathy-gtk/empathy-individual-widget.c:155
-msgid "E-mail address:"
-msgstr "Adresă email:"
-
-#: ../libempathy-gtk/empathy-contact-widget.c:298
-#: ../libempathy-gtk/empathy-individual-widget.c:156
-msgid "Website:"
-msgstr "Pagină web:"
-
-#: ../libempathy-gtk/empathy-contact-widget.c:299
-#: ../libempathy-gtk/empathy-individual-widget.c:157
-msgid "Birthday:"
-msgstr "Zi de naștere:"
-
-#: ../libempathy-gtk/empathy-contact-widget.c:762
-#: ../libempathy-gtk/empathy-individual-widget.c:488
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:621
+msgid "Your message introducing yourself:"
+msgstr "Mesajul dumneavoastră de introducere:"
+
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:629
+msgid "Please let me see when you're online. Thanks!"
+msgstr "Te rog permite-mi să văd când ești conectat. Mulțumesc!"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:571
+#: ../libempathy-gtk/empathy-individual-widget.c:304
+msgid "Channels:"
+msgstr "Canale:"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:751
+#: ../libempathy-gtk/empathy-individual-widget.c:455
 msgid "Country ISO Code:"
 msgstr "Codul ISO al țării:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:764
-#: ../libempathy-gtk/empathy-individual-widget.c:490
+#: ../libempathy-gtk/empathy-contact-widget.c:753
+#: ../libempathy-gtk/empathy-individual-widget.c:457
 msgid "Country:"
 msgstr "Țară:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:766
-#: ../libempathy-gtk/empathy-individual-widget.c:492
+#: ../libempathy-gtk/empathy-contact-widget.c:755
+#: ../libempathy-gtk/empathy-individual-widget.c:459
 msgid "State:"
 msgstr "Stat:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:768
-#: ../libempathy-gtk/empathy-individual-widget.c:494
+#: ../libempathy-gtk/empathy-contact-widget.c:757
+#: ../libempathy-gtk/empathy-individual-widget.c:461
 msgid "City:"
 msgstr "Oraș:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:770
-#: ../libempathy-gtk/empathy-individual-widget.c:496
+#: ../libempathy-gtk/empathy-contact-widget.c:759
+#: ../libempathy-gtk/empathy-individual-widget.c:463
 msgid "Area:"
 msgstr "Zonă:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:772
-#: ../libempathy-gtk/empathy-individual-widget.c:498
+#: ../libempathy-gtk/empathy-contact-widget.c:761
+#: ../libempathy-gtk/empathy-individual-widget.c:465
 msgid "Postal Code:"
 msgstr "Cod poștal:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:774
-#: ../libempathy-gtk/empathy-individual-widget.c:500
+#: ../libempathy-gtk/empathy-contact-widget.c:763
+#: ../libempathy-gtk/empathy-individual-widget.c:467
 msgid "Street:"
 msgstr "Stradă:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:776
-#: ../libempathy-gtk/empathy-individual-widget.c:502
+#: ../libempathy-gtk/empathy-contact-widget.c:765
+#: ../libempathy-gtk/empathy-individual-widget.c:469
 msgid "Building:"
 msgstr "Clădire:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:778
-#: ../libempathy-gtk/empathy-individual-widget.c:504
+#: ../libempathy-gtk/empathy-contact-widget.c:767
+#: ../libempathy-gtk/empathy-individual-widget.c:471
 msgid "Floor:"
 msgstr "Etaj:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:780
-#: ../libempathy-gtk/empathy-individual-widget.c:506
+#: ../libempathy-gtk/empathy-contact-widget.c:769
+#: ../libempathy-gtk/empathy-individual-widget.c:473
 msgid "Room:"
 msgstr "Canal de discuții:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:782
-#: ../libempathy-gtk/empathy-individual-widget.c:508
+#: ../libempathy-gtk/empathy-contact-widget.c:771
+#: ../libempathy-gtk/empathy-individual-widget.c:475
 msgid "Text:"
 msgstr "Text:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:784
-#: ../libempathy-gtk/empathy-individual-widget.c:510
+#: ../libempathy-gtk/empathy-contact-widget.c:773
+#: ../libempathy-gtk/empathy-individual-widget.c:477
 msgid "Description:"
 msgstr "Descriere:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:786
-#: ../libempathy-gtk/empathy-individual-widget.c:512
+#: ../libempathy-gtk/empathy-contact-widget.c:775
+#: ../libempathy-gtk/empathy-individual-widget.c:479
 msgid "URI:"
 msgstr "URI:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:788
-#: ../libempathy-gtk/empathy-individual-widget.c:514
+#: ../libempathy-gtk/empathy-contact-widget.c:777
+#: ../libempathy-gtk/empathy-individual-widget.c:481
 msgid "Accuracy Level:"
 msgstr "Nivel acuratețe:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:790
-#: ../libempathy-gtk/empathy-individual-widget.c:516
+#: ../libempathy-gtk/empathy-contact-widget.c:779
+#: ../libempathy-gtk/empathy-individual-widget.c:483
 msgid "Error:"
 msgstr "Eroare:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:792
-#: ../libempathy-gtk/empathy-individual-widget.c:518
+#: ../libempathy-gtk/empathy-contact-widget.c:781
+#: ../libempathy-gtk/empathy-individual-widget.c:485
 msgid "Vertical Error (meters):"
 msgstr "Eroare verticală (metri):"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:794
-#: ../libempathy-gtk/empathy-individual-widget.c:520
+#: ../libempathy-gtk/empathy-contact-widget.c:783
+#: ../libempathy-gtk/empathy-individual-widget.c:487
 msgid "Horizontal Error (meters):"
 msgstr "Eroare orizontală (metri):"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:796
-#: ../libempathy-gtk/empathy-individual-widget.c:522
+#: ../libempathy-gtk/empathy-contact-widget.c:785
+#: ../libempathy-gtk/empathy-individual-widget.c:489
 msgid "Speed:"
 msgstr "Viteză:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:798
-#: ../libempathy-gtk/empathy-individual-widget.c:524
+#: ../libempathy-gtk/empathy-contact-widget.c:787
+#: ../libempathy-gtk/empathy-individual-widget.c:491
 msgid "Bearing:"
 msgstr "Orientare:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:800
-#: ../libempathy-gtk/empathy-individual-widget.c:526
+#: ../libempathy-gtk/empathy-contact-widget.c:789
+#: ../libempathy-gtk/empathy-individual-widget.c:493
 msgid "Climb Speed:"
 msgstr "Viteză de urcare:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:802
-#: ../libempathy-gtk/empathy-individual-widget.c:528
+#: ../libempathy-gtk/empathy-contact-widget.c:791
+#: ../libempathy-gtk/empathy-individual-widget.c:495
 msgid "Last Updated on:"
 msgstr "Actualizat ultima dată pe:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:804
-#: ../libempathy-gtk/empathy-individual-widget.c:530
+#: ../libempathy-gtk/empathy-contact-widget.c:793
+#: ../libempathy-gtk/empathy-individual-widget.c:497
 msgid "Longitude:"
 msgstr "Longitudine:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:806
-#: ../libempathy-gtk/empathy-individual-widget.c:532
+#: ../libempathy-gtk/empathy-contact-widget.c:795
+#: ../libempathy-gtk/empathy-individual-widget.c:499
 msgid "Latitude:"
 msgstr "Latitudine:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:808
-#: ../libempathy-gtk/empathy-individual-widget.c:534
+#: ../libempathy-gtk/empathy-contact-widget.c:797
+#: ../libempathy-gtk/empathy-individual-widget.c:501
 msgid "Altitude:"
 msgstr "Altitudine:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:871
-#: ../libempathy-gtk/empathy-contact-widget.c:888
-#: ../libempathy-gtk/empathy-individual-widget.c:616
-#: ../libempathy-gtk/empathy-individual-widget.c:633
-#: ../src/empathy-preferences.ui.h:12
+#: ../libempathy-gtk/empathy-contact-widget.c:850
+#: ../libempathy-gtk/empathy-contact-widget.c:865
+#: ../libempathy-gtk/empathy-individual-widget.c:593
+#: ../libempathy-gtk/empathy-individual-widget.c:608
+#: ../src/empathy-preferences.ui.h:15
 msgid "Location"
 msgstr "Locație"
 
 #. translators: format is "Location, $date"
-#: ../libempathy-gtk/empathy-contact-widget.c:890
-#: ../libempathy-gtk/empathy-individual-widget.c:635
+#: ../libempathy-gtk/empathy-contact-widget.c:867
+#: ../libempathy-gtk/empathy-individual-widget.c:610
 #, c-format
 msgid "%s, %s"
 msgstr "%s, %s"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:942
-#: ../libempathy-gtk/empathy-individual-widget.c:684
+#: ../libempathy-gtk/empathy-contact-widget.c:919
+#: ../libempathy-gtk/empathy-individual-widget.c:659
 msgid "%B %e, %Y at %R UTC"
-msgstr "%e %B %Y la ora %R UTC"
+msgstr "%e %B %Y la %R UTC"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:1024
-#: ../libempathy-gtk/empathy-individual-widget.c:919
+#: ../libempathy-gtk/empathy-contact-widget.c:1001
+#: ../libempathy-gtk/empathy-individual-widget.c:901
 msgid "Save Avatar"
-msgstr "Salvează avatar"
+msgstr "Salvează avatarul"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:1080
-#: ../libempathy-gtk/empathy-individual-widget.c:977
+#: ../libempathy-gtk/empathy-contact-widget.c:1057
+#: ../libempathy-gtk/empathy-individual-widget.c:959
 msgid "Unable to save avatar"
 msgstr "Nu se poate salva avatarul"
 
+#: ../libempathy-gtk/empathy-contact-widget.c:1745
+#: ../libempathy-gtk/empathy-individual-menu.c:1097
+#: ../libempathy-gtk/empathy-individual-widget.c:1358
+msgid "Favorite"
+msgstr "Favorite"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:104
+msgid "Full name"
+msgstr "Nume întreg"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:105
+msgid "Phone number"
+msgstr "Număr de telefon:"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:106
+msgid "E-mail address"
+msgstr "Adresă de email"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:107
+msgid "Website"
+msgstr "Pagină web"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:108
+msgid "Birthday"
+msgstr "Zi de naștere"
+
+#. Note to translators: this is the caption for a string of the form "5
+#. * minutes ago", and refers to the time since the contact last interacted
+#. * with their IM client.
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:113
+msgid "Last seen:"
+msgstr "Văzut ultima dată pe:"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:115
+msgid "Connected from:"
+msgstr "Conectat din:"
+
+#. FIXME: once Idle implements SimplePresence using this information, we can
+#. * and should bin this.
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:119
+msgid "Away message:"
+msgstr "Mesaj de ieșire:"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:132
+msgid "work"
+msgstr "muncă"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:133
+msgid "home"
+msgstr "acasă"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:134
+msgid "mobile"
+msgstr "telefon mobil"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:135
+msgid "voice"
+msgstr "voce"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:136
+msgid "preferred"
+msgstr "preferințe"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:137
+msgid "postal"
+msgstr "poștal"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:138
+msgid "parcel"
+msgstr "pachet"
+
 #: ../libempathy-gtk/empathy-contact-widget.ui.h:1
 msgid "<b>Location</b> at (date)\t"
 msgstr "<b>Locație</b> la (data)\t"
 
 #. Alias
 #: ../libempathy-gtk/empathy-contact-widget.ui.h:3
-#: ../libempathy-gtk/empathy-individual-widget.c:1307
+#: ../libempathy-gtk/empathy-individual-widget.c:1294
 msgid "Alias:"
 msgstr "Alias:"
 
 #: ../libempathy-gtk/empathy-contact-widget.ui.h:4
 msgid "Client Information"
-msgstr "Informații client"
+msgstr "Informații despre client"
 
 #: ../libempathy-gtk/empathy-contact-widget.ui.h:5
 msgid "Client:"
@@ -1948,12 +2131,12 @@ msgstr "Client:"
 #: ../libempathy-gtk/empathy-contact-widget.ui.h:6
 #: ../libempathy-gtk/empathy-individual-widget.ui.h:2
 msgid "Contact Details"
-msgstr "Detalii contact"
+msgstr "Detalii despre contact"
 
 #. Identifier to connect to Instant Messaging network
 #. Translators: Identifier to connect to Instant Messaging network
 #: ../libempathy-gtk/empathy-contact-widget.ui.h:8
-#: ../libempathy-gtk/empathy-individual-widget.c:1511
+#: ../libempathy-gtk/empathy-individual-widget.c:1503
 msgid "Identifier:"
 msgstr "Identificator:"
 
@@ -1970,11 +2153,11 @@ msgstr "SO:"
 msgid "Version:"
 msgstr "Versiune:"
 
-#: ../libempathy-gtk/empathy-groups-widget.c:332
+#: ../libempathy-gtk/empathy-groups-widget.c:333
 msgid "Groups"
 msgstr "Grupuri"
 
-#: ../libempathy-gtk/empathy-groups-widget.c:344
+#: ../libempathy-gtk/empathy-groups-widget.c:345
 msgid ""
 "Select the groups you want this contact to appear in.  Note that you can "
 "select more than one group or no groups."
@@ -1982,28 +2165,28 @@ msgstr ""
 "Selectați grupurile în care doriți să apară acest contact. Rețineți că "
 "puteți selecta mai mult de un grup sau niciun grup."
 
-#: ../libempathy-gtk/empathy-groups-widget.c:363
+#: ../libempathy-gtk/empathy-groups-widget.c:364
 msgid "_Add Group"
-msgstr "_Adaugă grup"
+msgstr "_Adaugă un grup"
 
-#: ../libempathy-gtk/empathy-groups-widget.c:398
+#: ../libempathy-gtk/empathy-groups-widget.c:399
 msgctxt "verb in a column header displaying group names"
 msgid "Select"
 msgstr "Selectează"
 
-#: ../libempathy-gtk/empathy-groups-widget.c:408
-#: ../src/empathy-main-window.c:1436
+#: ../libempathy-gtk/empathy-groups-widget.c:409
+#: ../src/empathy-main-window.c:1952
 msgid "Group"
 msgstr "Grup"
 
-#: ../libempathy-gtk/empathy-individual-dialogs.c:244
+#: ../libempathy-gtk/empathy-individual-dialogs.c:258
 msgid "The following identity will be blocked:"
 msgid_plural "The following identities will be blocked:"
 msgstr[0] "Identitatea următoare va fi blocată:"
 msgstr[1] "Identitățile următoare vor fi blocate:"
 msgstr[2] "Identitățile următoare vor fi blocate:"
 
-#: ../libempathy-gtk/empathy-individual-dialogs.c:251
+#: ../libempathy-gtk/empathy-individual-dialogs.c:265
 msgid "The following identity can not be blocked:"
 msgid_plural "The following identities can not be blocked:"
 msgstr[0] "Identitatea următoare nu poate fi blocată:"
@@ -2011,19 +2194,19 @@ msgstr[1] "Identitățile următoare nu pot fi blocate:"
 msgstr[2] "Identitățile următoare nu pot fi blocate:"
 
 #. Translators: the heading at the top of the Information dialogue
-#: ../libempathy-gtk/empathy-individual-information-dialog.c:281
+#: ../libempathy-gtk/empathy-individual-information-dialog.c:288
 msgid "Linked Contacts"
 msgstr "Contacte îmbinate"
 
-#: ../libempathy-gtk/empathy-individual-linker.c:354
+#: ../libempathy-gtk/empathy-individual-linker.c:372
 msgid "Select contacts to link"
 msgstr "Selectați contacte de îmbinat"
 
-#: ../libempathy-gtk/empathy-individual-linker.c:428
+#: ../libempathy-gtk/empathy-individual-linker.c:447
 msgid "New contact preview"
 msgstr "Previzualizare contact nou"
 
-#: ../libempathy-gtk/empathy-individual-linker.c:472
+#: ../libempathy-gtk/empathy-individual-linker.c:491
 msgid "Contacts selected in the list on the left will be linked together."
 msgstr ""
 "Contactele selectate în lista din partea stângă vor fi grupate împreună."
@@ -2031,28 +2214,80 @@ msgstr ""
 #. Translators: this is used in the context menu for a contact. The first
 #. * parameter is a contact ID (e.g. foo@jabber.org) and the second is one
 #. * of the user's account IDs (e.g. me@hotmail.com).
-#: ../libempathy-gtk/empathy-individual-menu.c:131
+#: ../libempathy-gtk/empathy-individual-menu.c:148
 #, c-format
 msgid "%s (%s)"
 msgstr "%s (%s)"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:839
+#: ../libempathy-gtk/empathy-individual-menu.c:312
+msgid "Select account to use to place the call"
+msgstr "Selectați contul pe care doriți să îl utilizați pentru a apela"
+
+#. translators: Call is a noun. This string is used in the window
+#. * title
+#: ../libempathy-gtk/empathy-individual-menu.c:316
+#: ../libempathy-gtk/empathy-log-window.ui.h:2
+#: ../src/empathy-streamed-media-window.c:1288
+#: ../src/empathy-call-window.ui.h:2
+msgid "Call"
+msgstr "Apel"
+
+#: ../libempathy-gtk/empathy-individual-menu.c:381
+msgid "Mobile"
+msgstr "Telefon mobil"
+
+#: ../libempathy-gtk/empathy-individual-menu.c:383
+msgid "Work"
+msgstr "Muncă"
+
+#: ../libempathy-gtk/empathy-individual-menu.c:385
+msgid "HOME"
+msgstr "ACASĂ"
+
+#. add SMS button
+#: ../libempathy-gtk/empathy-individual-menu.c:836
+#: ../libempathy-gtk/empathy-new-message-dialog.c:314
+msgid "_SMS"
+msgstr "_SMS"
+
+#: ../libempathy-gtk/empathy-individual-menu.c:1174
 msgctxt "Edit individual (contextual menu)"
 msgid "_Edit"
 msgstr "_Editare"
 
 #. Translators: this is a verb meaning "to connect two contacts together
 #. * to form a meta-contact".
-#: ../libempathy-gtk/empathy-individual-menu.c:865
+#: ../libempathy-gtk/empathy-individual-menu.c:1200
 msgctxt "Link individual (contextual menu)"
 msgid "_Link Contacts…"
 msgstr "Îm_bină contactele…"
 
-#: ../libempathy-gtk/empathy-individual-view.c:2302
+#: ../libempathy-gtk/empathy-individual-view.c:2362
 msgid "Delete and _Block"
 msgstr "Șterge și _blochează"
 
-#: ../libempathy-gtk/empathy-individual-view.c:2457
+#: ../libempathy-gtk/empathy-individual-view.c:2397
+#, c-format
+msgid "Do you really want to remove the group '%s'?"
+msgstr "Sigur doriți să eliminați grupul „%s”?"
+
+# LG: aici e titlul unui dialog, deși nu pare :)
+#: ../libempathy-gtk/empathy-individual-view.c:2400
+msgid "Removing group"
+msgstr "Eliminare grup"
+
+#. Remove
+#: ../libempathy-gtk/empathy-individual-view.c:2455
+#: ../libempathy-gtk/empathy-individual-view.c:2672
+msgid "_Remove"
+msgstr "_Elimină"
+
+#: ../libempathy-gtk/empathy-individual-view.c:2532
+#, c-format
+msgid "Do you really want to remove the contact '%s'?"
+msgstr "Sigur doriți să eliminați contactul „%s”?"
+
+#: ../libempathy-gtk/empathy-individual-view.c:2541
 #, c-format
 msgid ""
 "Do you really want to remove the linked contact '%s'? Note that this will "
@@ -2061,7 +2296,12 @@ msgstr ""
 "Sigur doriți să eliminați contactul îmbinat „%s”? Rețineți că acest lucru va "
 "elimina toate contactele care alcătuiesc acest contact îmbinat."
 
-#: ../libempathy-gtk/empathy-individual-widget.c:1652
+# LG: aici e vorba de titlul unui dialog
+#: ../libempathy-gtk/empathy-individual-view.c:2553
+msgid "Removing contact"
+msgstr "Eliminare contact"
+
+#: ../libempathy-gtk/empathy-individual-widget.c:1642
 #, c-format
 msgid "Linked contact containing %u contact"
 msgid_plural "Linked contacts containing %u contacts"
@@ -2145,69 +2385,253 @@ msgctxt "Unlink individual (button)"
 msgid "_Unlink"
 msgstr "_Dezbină"
 
-#: ../libempathy-gtk/empathy-log-window.c:664
-msgid "Date"
-msgstr "Dată"
+#: ../libempathy-gtk/empathy-log-window.c:621
+msgid "History"
+msgstr "Istoric"
 
-#. Tab Label
-#: ../libempathy-gtk/empathy-log-window.ui.h:2
-msgid "Conversations"
-msgstr "Conversații"
+#: ../libempathy-gtk/empathy-log-window.c:676
+msgid "Show"
+msgstr "Arată"
+
+#: ../libempathy-gtk/empathy-log-window.c:698
+msgid "Search"
+msgstr "Caută"
+
+#: ../libempathy-gtk/empathy-log-window.c:1147
+#, c-format
+msgid "Chat in %s"
+msgstr "Conversație în %s"
+
+#: ../libempathy-gtk/empathy-log-window.c:1149
+#, c-format
+msgid "Chat with %s"
+msgstr "Conversație cu %s"
+
+#: ../libempathy-gtk/empathy-log-window.c:1199
+#: ../libempathy-gtk/empathy-log-window.c:1346
+msgctxt "A date with the time"
+msgid "%A, %e %B %Y %X"
+msgstr "%A, %e %B %Y %X"
+
+#. Translators: this is an emote: '* Danielle waves'
+#: ../libempathy-gtk/empathy-log-window.c:1288
+#, c-format
+msgid "<i>* %s %s</i>"
+msgstr "<i>* %s %s</i>"
+
+#. Translators: this is a message: 'Danielle: hello'
+#. * The string in bold is the sender's name
+#: ../libempathy-gtk/empathy-log-window.c:1294
+#, c-format
+msgid "<b>%s:</b> %s"
+msgstr "<b>%s:</b> %s"
+
+#: ../libempathy-gtk/empathy-log-window.c:1370
+#, c-format
+msgid "%s second"
+msgid_plural "%s seconds"
+msgstr[0] "o secundă"
+msgstr[1] "%s secunde"
+msgstr[2] "%s de secunde"
+
+#: ../libempathy-gtk/empathy-log-window.c:1377
+#, c-format
+msgid "%s minute"
+msgid_plural "%s minutes"
+msgstr[0] "un minut"
+msgstr[1] "%s minute"
+msgstr[2] "%s de minute"
+
+#: ../libempathy-gtk/empathy-log-window.c:1385
+#, c-format
+msgid "Call took %s, ended at %s"
+msgstr "Apelul a durat %s și s-a terminat la %s"
+
+#: ../libempathy-gtk/empathy-log-window.c:1719
+msgid "Today"
+msgstr "Azi"
+
+#: ../libempathy-gtk/empathy-log-window.c:1723
+msgid "Yesterday"
+msgstr "Ieri"
+
+#. Translators: A date such as '23 May 2010' (strftime format)
+#: ../libempathy-gtk/empathy-log-window.c:1738
+msgid "%e %B %Y"
+msgstr "%e %B %Y"
+
+#: ../libempathy-gtk/empathy-log-window.c:1826
+#: ../libempathy-gtk/empathy-log-window.c:3458
+msgid "Anytime"
+msgstr "Oricând"
+
+#: ../libempathy-gtk/empathy-log-window.c:1915
+#: ../libempathy-gtk/empathy-log-window.c:2371
+msgid "Anyone"
+msgstr "Oricine"
+
+#: ../libempathy-gtk/empathy-log-window.c:2684
+msgid "Who"
+msgstr "Cine"
+
+#: ../libempathy-gtk/empathy-log-window.c:2893
+msgid "When"
+msgstr "Când"
+
+#: ../libempathy-gtk/empathy-log-window.c:3009
+msgid "Anything"
+msgstr "Orice"
+
+#: ../libempathy-gtk/empathy-log-window.c:3011
+msgid "Text chats"
+msgstr "Conversații text"
+
+#: ../libempathy-gtk/empathy-log-window.c:3013
+#: ../src/empathy-preferences.ui.h:4
+msgid "Calls"
+msgstr "Apeluri"
+
+#: ../libempathy-gtk/empathy-log-window.c:3018
+msgid "Incoming calls"
+msgstr "Apeluri primite"
+
+#: ../libempathy-gtk/empathy-log-window.c:3019
+msgid "Outgoing calls"
+msgstr "Apeluri expediate"
+
+#: ../libempathy-gtk/empathy-log-window.c:3020
+msgid "Missed calls"
+msgstr "Apeluri pierdute"
+
+#: ../libempathy-gtk/empathy-log-window.c:3042
+msgid "What"
+msgstr "Ce"
+
+#: ../libempathy-gtk/empathy-log-window.c:3751
+msgid "Are you sure you want to delete all logs of previous conversations?"
+msgstr "Sigur doriți să ștergeți conversațiile anterioare?"
+
+#: ../libempathy-gtk/empathy-log-window.c:3755
+msgid "Clear All"
+msgstr "Șterge tot"
+
+#: ../libempathy-gtk/empathy-log-window.c:3762
+msgid "Delete from:"
+msgstr "Șters din:"
+
+#: ../libempathy-gtk/empathy-log-window.ui.h:1
+msgid "<span size=\"x-large\">Loading...</span>"
+msgstr "<span size=\"x-large\">Se încarcă...</span>"
 
 #: ../libempathy-gtk/empathy-log-window.ui.h:3
-#: ../libempathy-gtk/empathy-search-bar.ui.h:1
-msgid "Find Next"
-msgstr "Caută următorul"
+#: ../src/empathy-chat-window.ui.h:3
+msgid "Chat"
+msgstr "Discută"
 
 #: ../libempathy-gtk/empathy-log-window.ui.h:4
-#: ../libempathy-gtk/empathy-search-bar.ui.h:2
-msgid "Find Previous"
-msgstr "Caută precedentul"
+msgid "Delete All History..."
+msgstr "Șterge tot istoricul..."
 
 #: ../libempathy-gtk/empathy-log-window.ui.h:5
-msgid "Previous Conversations"
-msgstr "Conversații anterioare"
+msgid "Profile"
+msgstr "Profil"
+
+#: ../libempathy-gtk/empathy-log-window.ui.h:6
+#: ../src/empathy-call-window.ui.h:22
+#: ../src/empathy-streamed-media-window.ui.h:20
+msgid "Video"
+msgstr "Video"
 
-#. Tab Label
 #: ../libempathy-gtk/empathy-log-window.ui.h:7
-msgid "Search"
-msgstr "Caută"
+#: ../src/empathy-call-window.ui.h:28 ../src/empathy-chat-window.ui.h:12
+#: ../src/empathy-main-window-menubar.ui.h:20
+msgid "_Edit"
+msgstr "_Editare"
+
+#: ../libempathy-gtk/empathy-log-window.ui.h:8
+msgid "_File"
+msgstr "_Fișier"
 
-#. Searching *for* something
 #: ../libempathy-gtk/empathy-log-window.ui.h:9
-msgid "_For:"
-msgstr "_După:"
+msgid "page 2"
+msgstr "pagina 2"
 
-#: ../libempathy-gtk/empathy-contact-selector-dialog.ui.h:2
-msgid "Contact ID:"
-msgstr "ID contact:"
+#: ../libempathy-gtk/empathy-new-message-dialog.c:84
+msgid "The contact is offline"
+msgstr "Contactul selectat este deconectat"
 
-#. add chat button
-#: ../libempathy-gtk/empathy-new-message-dialog.c:171
-msgid "C_hat"
-msgstr "_Discută"
+#: ../libempathy-gtk/empathy-new-message-dialog.c:86
+msgid "The specified contact is either invalid or unknown"
+msgstr "Contactul specificat este invalid sau necunoscut"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.c:88
+msgid "The contact does not support this kind of conversation"
+msgstr "Această conversație nu are un subiect definit"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.c:90
+msgid "The requested functionality is not implemented for this protocol"
+msgstr "Funcționalitatea solicitată nu este implementată pentru acest protocol"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.c:96
+msgid "Could not start a conversation with the given contact"
+msgstr "Nu se poate începe o conversație cu contactul precizat"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.c:98
+msgid "You are banned from this channel"
+msgstr "Aveți interdicție pe acest canal"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.c:100
+msgid "This channel is full"
+msgstr "Canalul este plin"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.c:102
+msgid "You must be invited to join this channel"
+msgstr "Trebuie să fiți invitat pentru a intra în acest canal"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.c:104
+msgid "Can't proceed while disconnected"
+msgstr "Nu se poate continua în timp ce contactul este deconectat"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.c:106
+msgid "Permission denied"
+msgstr "Permisiune respinsă"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.c:112
+msgid "There was an error starting the conversation"
+msgstr "A apărut o eroare în timpul pornirii conversației"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.c:291
+#: ../libempathy-gtk/empathy-new-call-dialog.c:203
+msgid "Enter a contact identifier or phone number:"
+msgstr "Introduceți un identificator al persoanei sau un număr de telefon:"
 
 #. Tweak the dialog
-#: ../libempathy-gtk/empathy-new-message-dialog.c:181
+#: ../libempathy-gtk/empathy-new-message-dialog.c:334
 msgid "New Conversation"
 msgstr "Conversație nouă"
 
-#. add video toggle
-#: ../libempathy-gtk/empathy-new-call-dialog.c:253
-msgid "Send _Video"
-msgstr "Trimite _video"
+#. add video button
+#: ../libempathy-gtk/empathy-new-call-dialog.c:226
+msgid "_Video Call"
+msgstr "Apel _video"
 
-#. add chat button
-#: ../libempathy-gtk/empathy-new-call-dialog.c:261
-msgid "C_all"
-msgstr "_Apelează"
+#. add audio button
+#: ../libempathy-gtk/empathy-new-call-dialog.c:236
+msgid "_Audio Call"
+msgstr "Apel _audio"
 
 #. Tweak the dialog
-#: ../libempathy-gtk/empathy-new-call-dialog.c:271
+#: ../libempathy-gtk/empathy-new-call-dialog.c:246
 msgid "New Call"
 msgstr "Apel nou"
 
-#: ../libempathy-gtk/empathy-password-dialog.c:274
+#: ../libempathy-gtk/empathy-bad-password-dialog.c:130
+#, c-format
+msgid "Authentification failed for account <b>%s</b>"
+msgstr "Autentificarea pentru contul <b>%s</b> a eșuat"
+
+#: ../libempathy-gtk/empathy-base-password-dialog.c:224
+#: ../libempathy-gtk/empathy-password-dialog.c:134
 #, c-format
 msgid ""
 "Enter your password for account\n"
@@ -2222,34 +2646,30 @@ msgstr ""
 #. COL_DISPLAY_MARKUP
 #. COL_STATUS_CUSTOMISABLE
 #. COL_TYPE
-#: ../libempathy-gtk/empathy-presence-chooser.c:170
-#: ../libempathy-gtk/empathy-presence-chooser.c:206
+#: ../libempathy-gtk/empathy-presence-chooser.c:167
+#: ../libempathy-gtk/empathy-presence-chooser.c:203
 msgid "Custom Message…"
 msgstr "Mesaj personalizat…"
 
-#: ../libempathy-gtk/empathy-presence-chooser.c:223
-#: ../libempathy-gtk/empathy-presence-chooser.c:225
+#: ../libempathy-gtk/empathy-presence-chooser.c:220
+#: ../libempathy-gtk/empathy-presence-chooser.c:222
 msgid "Edit Custom Messages…"
-msgstr "Modifică mesajele personalizate…"
+msgstr "Editează mesajele personalizate…"
 
-#: ../libempathy-gtk/empathy-presence-chooser.c:348
+#: ../libempathy-gtk/empathy-presence-chooser.c:345
 msgid "Click to remove this status as a favorite"
 msgstr "Apăsați pentru a elimina acest mesaj de stare din lista de favorite"
 
-#: ../libempathy-gtk/empathy-presence-chooser.c:357
+#: ../libempathy-gtk/empathy-presence-chooser.c:354
 msgid "Click to make this status a favorite"
 msgstr "Apăsați pentru a adăuga acest mesaj de stare în lista de favorite"
 
-#: ../libempathy-gtk/empathy-presence-chooser.c:391
+#: ../libempathy-gtk/empathy-presence-chooser.c:388
 msgid "Set status"
-msgstr "Definește mesaj de stare"
-
-#: ../libempathy-gtk/empathy-presence-chooser.c:948
-msgid "Set your presence and current status"
-msgstr "Definiți preferințele și mesajul de stare curent"
+msgstr "Setează mesajul de status"
 
 #. Custom messages
-#: ../libempathy-gtk/empathy-presence-chooser.c:1136
+#: ../libempathy-gtk/empathy-presence-chooser.c:1135
 msgid "Custom messages…"
 msgstr "Mesaje personalizate…"
 
@@ -2262,18 +2682,26 @@ msgstr "Mesaje personalizate…"
 msgid "New %s account"
 msgstr "Cont %s nou"
 
-#: ../libempathy-gtk/empathy-search-bar.ui.h:3
+#: ../libempathy-gtk/empathy-search-bar.ui.h:1
 msgid "Find:"
 msgstr "Caută:"
 
-#: ../libempathy-gtk/empathy-search-bar.ui.h:4
-msgid "Match case"
-msgstr "Majuscule semnificative"
+#: ../libempathy-gtk/empathy-search-bar.ui.h:2
+msgid "Mat_ch case"
+msgstr "Majus_cule semnificative"
 
-#: ../libempathy-gtk/empathy-search-bar.ui.h:5
+#: ../libempathy-gtk/empathy-search-bar.ui.h:3
 msgid "Phrase not found"
 msgstr "Fraza n-a fost găsită"
 
+#: ../libempathy-gtk/empathy-search-bar.ui.h:4
+msgid "_Next"
+msgstr "_Tabul următor"
+
+#: ../libempathy-gtk/empathy-search-bar.ui.h:5
+msgid "_Previous"
+msgstr "Tabul _precedent"
+
 #: ../libempathy-gtk/empathy-sound-manager.c:51
 msgid "Received an instant message"
 msgstr "Ați primit un mesaj instant"
@@ -2314,35 +2742,32 @@ msgstr "Ați lansat un apel vocal"
 msgid "Voice call ended"
 msgstr "Apel vocal terminat"
 
-#: ../libempathy-gtk/empathy-status-preset-dialog.c:364
-msgid "Enter Custom Message"
-msgstr "Introduceți mesajul personalizat"
-
-#: ../libempathy-gtk/empathy-status-preset-dialog.c:523
+#: ../libempathy-gtk/empathy-status-preset-dialog.c:296
 msgid "Edit Custom Messages"
 msgstr "Modificare mesajele personalizate"
 
-#: ../libempathy-gtk/empathy-status-preset-dialog.ui.h:1
-msgid "Save _New Status Message"
-msgstr "Salvează mesaj de stare _nou"
+#: ../libempathy-gtk/empathy-theme-adium.c:1047
+#, c-format
+msgid "Message edited at %s"
+msgstr "Mesaj modificat la %s"
 
-#: ../libempathy-gtk/empathy-status-preset-dialog.ui.h:2
-msgid "Saved Status Messages"
-msgstr "Mesaje de stare salvate"
+#: ../libempathy-gtk/empathy-theme-adium.c:1752
+msgid "Normal"
+msgstr "Normal"
 
-#: ../libempathy-gtk/empathy-theme-manager.c:67
+#: ../libempathy-gtk/empathy-theme-manager.c:70
 msgid "Classic"
 msgstr "Clasic"
 
-#: ../libempathy-gtk/empathy-theme-manager.c:68
+#: ../libempathy-gtk/empathy-theme-manager.c:71
 msgid "Simple"
 msgstr "Simplu"
 
-#: ../libempathy-gtk/empathy-theme-manager.c:69
+#: ../libempathy-gtk/empathy-theme-manager.c:72
 msgid "Clean"
 msgstr "Curat"
 
-#: ../libempathy-gtk/empathy-theme-manager.c:70
+#: ../libempathy-gtk/empathy-theme-manager.c:73
 msgid "Blue"
 msgstr "Albastru"
 
@@ -2353,7 +2778,7 @@ msgstr ""
 
 #: ../libempathy-gtk/empathy-tls-dialog.c:157
 msgid "The certificate is not signed by a Certification Authority."
-msgstr "Certificatul nu este semnat de o Autoritate de certificare."
+msgstr "Certificatul nu este semnat de o autoritate de certificare."
 
 #: ../libempathy-gtk/empathy-tls-dialog.c:161
 msgid "The certificate has expired."
@@ -2381,7 +2806,7 @@ msgstr "Certificatul este auto-semnat."
 msgid ""
 "The certificate has been revoked by the issuing Certification Authority."
 msgstr ""
-"Certificatul a fost revocat de către Autoritatea de Certificare emitentă."
+"Certificatul a fost revocat de către autoritatea de certificare emitentă."
 
 #: ../libempathy-gtk/empathy-tls-dialog.c:181
 msgid "The certificate is cryptographically weak."
@@ -2421,28 +2846,28 @@ msgstr "Ține minte această alegere pentru viitoarele conexiuni"
 msgid "Certificate Details"
 msgstr "Detalii certificat"
 
-#: ../libempathy-gtk/empathy-ui-utils.c:1706
+#: ../libempathy-gtk/empathy-ui-utils.c:1741
 msgid "Unable to open URI"
-msgstr "Nu se poate deschide URI"
+msgstr "Nu se poate deschide URI-ul"
 
-#: ../libempathy-gtk/empathy-ui-utils.c:1801
+#: ../libempathy-gtk/empathy-ui-utils.c:1859
 msgid "Select a file"
 msgstr "Alegeți un fișier"
 
-#: ../libempathy-gtk/empathy-ui-utils.c:1873
+#: ../libempathy-gtk/empathy-ui-utils.c:1934
 msgid "Insufficient free space to save file"
-msgstr "Spațiu liber insuficient pentru a salva fișierul"
+msgstr "Nu este suficient spațiu liber pentru a salva fișierul"
 
-#: ../libempathy-gtk/empathy-ui-utils.c:1881
+#: ../libempathy-gtk/empathy-ui-utils.c:1942
 #, c-format
 msgid ""
 "%s of free space are required to save this file, but only %s is available. "
 "Please choose another location."
 msgstr ""
-"Este necesari un spațiu liber de %s pentru a salva acest fișier, dar doar %s "
-"sunt disponibili. Alegeți altă locație."
+"Este necesar un spațiu liber de %s pentru a salva acest fișier, dar doar %s "
+"sunt disponibili. Alegeți altă locație."
 
-#: ../libempathy-gtk/empathy-ui-utils.c:1925
+#: ../libempathy-gtk/empathy-ui-utils.c:1986
 #, c-format
 msgid "Incoming file from %s"
 msgstr "Se primește un fișier de la %s"
@@ -2570,7 +2995,7 @@ msgstr "Nordică"
 
 #: ../libempathy-gtk/totem-subtitle-encoding.c:285
 msgid "Persian"
-msgstr "Persiană"
+msgstr "Persană"
 
 #: ../libempathy-gtk/totem-subtitle-encoding.c:288
 #: ../libempathy-gtk/totem-subtitle-encoding.c:290
@@ -2614,39 +3039,31 @@ msgstr "Occidentală"
 msgid "Vietnamese"
 msgstr "Vietnameză"
 
-#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:108
-msgid "The selected contact cannot receive files."
-msgstr "Contactul selectat nu poate primi fișiere."
-
-#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:114
-msgid "The selected contact is offline."
-msgstr "Contactul selectat este deconectat."
-
-#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:169
+#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:203
 msgid "No error message"
 msgstr "Niciun mesaj de eroare"
 
-#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:242
+#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:276
 msgid "Instant Message (Empathy)"
 msgstr "Mesaj instant (Empathy)"
 
-#: ../src/empathy.c:308
+#: ../src/empathy.c:433
 msgid "Don't connect on startup"
 msgstr "Nu conecta la pornire"
 
-#: ../src/empathy.c:312
+#: ../src/empathy.c:437
 msgid "Don't display the contact list or any other dialogs on startup"
 msgstr "Nu arăta lista de contacte sau orice alt dialog la pornire"
 
-#: ../src/empathy.c:320
+#: ../src/empathy.c:452
 msgid "- Empathy IM Client"
 msgstr "- Mesagerie instant Empathy"
 
-#: ../src/empathy.c:499
+#: ../src/empathy.c:639
 msgid "Error contacting the Account Manager"
 msgstr "Eroare la contactarea managerului de conturi"
 
-#: ../src/empathy.c:501
+#: ../src/empathy.c:641
 #, c-format
 msgid ""
 "There was an error while trying to connect to the Telepathy Account Manager. "
@@ -2654,7 +3071,7 @@ msgid ""
 "\n"
 "%s"
 msgstr ""
-"S-a produs o eroare în timp ce se încerca conectarea la managerul de conturi "
+"A apărut o eroare în timp ce se încerca conectarea la managerul de conturi "
 "Telepathy. Eroarea a fost:\n"
 "\n"
 "%s"
@@ -2715,19 +3132,19 @@ msgstr ""
 
 #: ../src/empathy-account-assistant.c:167
 msgid "There was an error while importing the accounts."
-msgstr "S-a produs o eroare în timpul importării conturilor."
+msgstr "A apărut o eroare în timpul importării conturilor."
 
 #: ../src/empathy-account-assistant.c:170
 msgid "There was an error while parsing the account details."
-msgstr "S-a produs o eroare în timpul analizării detaliilor contului."
+msgstr "A apărut o eroare în timpul analizării detaliilor contului."
 
 #: ../src/empathy-account-assistant.c:173
 msgid "There was an error while creating the account."
-msgstr "S-a produs o eroare în timpul creării contului."
+msgstr "A apărut o eroare în timpul creării contului."
 
 #: ../src/empathy-account-assistant.c:175
 msgid "There was an error."
-msgstr "S-a produs o eroare."
+msgstr "A apărut o eroare."
 
 #: ../src/empathy-account-assistant.c:179
 #, c-format
@@ -2744,9 +3161,9 @@ msgstr ""
 "contului din meniul Editare."
 
 #: ../src/empathy-account-assistant.c:220
-#: ../src/empathy-account-assistant.c:1268
+#: ../src/empathy-account-assistant.c:1272
 msgid "An error occurred"
-msgstr "S-a produs o eroare"
+msgstr "A apărut o eroare"
 
 #: ../src/empathy-account-assistant.c:467
 msgid "What kind of chat account do you have?"
@@ -2789,59 +3206,59 @@ msgid "Do you have an account you've been using with another chat program?"
 msgstr ""
 "Aveți un cont pe care l-ați folosit în alt program de mesagerie instant?"
 
-#: ../src/empathy-account-assistant.c:652
+#: ../src/empathy-account-assistant.c:653
 msgid "Yes, import my account details from "
 msgstr "Da, importă detaliile contului din "
 
-#: ../src/empathy-account-assistant.c:673
+#: ../src/empathy-account-assistant.c:674
 msgid "Yes, I'll enter my account details now"
 msgstr "Da, voi introduce acum detaliile contului"
 
-#: ../src/empathy-account-assistant.c:695
+#: ../src/empathy-account-assistant.c:696
 msgid "No, I want a new account"
 msgstr "Nu, doresc un cont nou"
 
-#: ../src/empathy-account-assistant.c:705
+#: ../src/empathy-account-assistant.c:706
 msgid "No, I just want to see people online nearby for now"
 msgstr "Nu, pentru moment vreau doar să descopăr persoane din apropiere"
 
-#: ../src/empathy-account-assistant.c:726
+#: ../src/empathy-account-assistant.c:727
 msgid "Select the accounts you want to import:"
 msgstr "Alegeți conturile pe care doriți să le importați:"
 
-#: ../src/empathy-account-assistant.c:810
-#: ../src/empathy-new-chatroom-dialog.c:562
-#: ../src/empathy-new-chatroom-dialog.c:563
+#: ../src/empathy-account-assistant.c:814
+#: ../src/empathy-new-chatroom-dialog.c:625
+#: ../src/empathy-new-chatroom-dialog.c:626
 msgid "Yes"
 msgstr "Da"
 
-#: ../src/empathy-account-assistant.c:817
+#: ../src/empathy-account-assistant.c:821
 msgid "No, that's all for now"
 msgstr "Nu, atât pentru acum"
 
-#: ../src/empathy-account-assistant.c:1082
+#: ../src/empathy-account-assistant.c:1086
 msgid ""
 "Empathy can automatically discover and chat with the people connected on the "
 "same network as you. If you want to use this feature, please check that the "
 "details below are correct. You can easily change these details later or "
 "disable this feature by using the 'Accounts' dialog"
 msgstr ""
-"Empathy poate descoperi automat și comunica cu persoane conectate la aceeași "
-"rețea ca dumneavoastră. Dacă doriți să utilizați această facilitate, "
+"Empathy poate descoperi automat și poate comunica cu persoane conectate la "
+"aceeași rețea ca dumneavoastră. Dacă doriți să utilizați această facilitate, "
 "verificați dacă detaliile de mai jos sunt corecte. Puteți modifica cu "
 "ușurință aceste detalii mai târziu sau puteți dezactiva această facilitate "
 "utilizând dialogul „Conturi”"
 
-#: ../src/empathy-account-assistant.c:1088
-#: ../src/empathy-account-assistant.c:1144
+#: ../src/empathy-account-assistant.c:1092
+#: ../src/empathy-account-assistant.c:1148
 msgid "Edit->Accounts"
 msgstr "Editare->Conturi"
 
-#: ../src/empathy-account-assistant.c:1104
+#: ../src/empathy-account-assistant.c:1108
 msgid "I do _not want to enable this feature for now"
 msgstr "_Nu vreau să activez această facilitate acum"
 
-#: ../src/empathy-account-assistant.c:1140
+#: ../src/empathy-account-assistant.c:1144
 msgid ""
 "You won't be able to chat with people connected to your local network, as "
 "telepathy-salut is not installed. If you want to enable this feature, please "
@@ -2853,23 +3270,23 @@ msgstr ""
 "activați această facilitate, instalați pachetul telepathy-salut și creați un "
 "contact „Persoane din apropiere” din dialogul Conturi"
 
-#: ../src/empathy-account-assistant.c:1146
+#: ../src/empathy-account-assistant.c:1150
 msgid "telepathy-salut not installed"
 msgstr "telepathy-salut nu este instalat"
 
-#: ../src/empathy-account-assistant.c:1192
+#: ../src/empathy-account-assistant.c:1196
 msgid "Messaging and VoIP Accounts Assistant"
 msgstr "Asistent conturi de mesagerie și VoIP"
 
-#: ../src/empathy-account-assistant.c:1226
+#: ../src/empathy-account-assistant.c:1230
 msgid "Welcome to Empathy"
 msgstr "Bun venit la Empathy"
 
-#: ../src/empathy-account-assistant.c:1235
+#: ../src/empathy-account-assistant.c:1239
 msgid "Import your existing accounts"
 msgstr "Importă conturile existente"
 
-#: ../src/empathy-account-assistant.c:1253
+#: ../src/empathy-account-assistant.c:1257
 msgid "Please enter personal details"
 msgstr "Introduceți datele personale"
 
@@ -2886,34 +3303,35 @@ msgstr "Există modificări nesalvate pentru contul %s."
 msgid "Your new account has not been saved yet."
 msgstr "Contul nou nu a fost încă salvat."
 
-#: ../src/empathy-accounts-dialog.c:286
-#: ../src/empathy-streamed-media-window.c:809
+#: ../src/empathy-accounts-dialog.c:345
+#: ../src/empathy-streamed-media-window.c:757
+#: ../src/empathy-call-window.c:1325
 msgid "Connecting…"
 msgstr "Se conectează…"
 
-#: ../src/empathy-accounts-dialog.c:327
+#: ../src/empathy-accounts-dialog.c:386
 #, c-format
 msgid "Offline — %s"
 msgstr "Deconectat – %s"
 
-#: ../src/empathy-accounts-dialog.c:339
+#: ../src/empathy-accounts-dialog.c:398
 #, c-format
 msgid "Disconnected — %s"
 msgstr "Deconectat – %s"
 
-#: ../src/empathy-accounts-dialog.c:350
+#: ../src/empathy-accounts-dialog.c:409
 msgid "Offline — No Network Connection"
 msgstr "Deconectat – Nicio conexiune la rețea"
 
-#: ../src/empathy-accounts-dialog.c:357
+#: ../src/empathy-accounts-dialog.c:416
 msgid "Unknown Status"
 msgstr "Mesaj de stare necunoscut"
 
-#: ../src/empathy-accounts-dialog.c:369
+#: ../src/empathy-accounts-dialog.c:428
 msgid "Offline — Account Disabled"
 msgstr "Deconectat – Cont dezactivat"
 
-#: ../src/empathy-accounts-dialog.c:772
+#: ../src/empathy-accounts-dialog.c:831
 msgid ""
 "You are about to create a new account, which will discard\n"
 "your changes. Are you sure you want to proceed?"
@@ -2921,16 +3339,16 @@ msgstr ""
 "Sunteți pe cale să creați un nou cont, ceea ce va duce\n"
 "la pierderea modificărilor curente. Doriți să continuați?"
 
-#: ../src/empathy-accounts-dialog.c:1133
+#: ../src/empathy-accounts-dialog.c:1192
 #, c-format
 msgid "Do you want to remove %s from your computer?"
 msgstr "Doriți să eliminați %s de pe calculatorul dumneavoastră?"
 
-#: ../src/empathy-accounts-dialog.c:1137
+#: ../src/empathy-accounts-dialog.c:1196
 msgid "This will not remove your account on the server."
 msgstr "Această acțiune nu va elimina contul de pe server."
 
-#: ../src/empathy-accounts-dialog.c:1375
+#: ../src/empathy-accounts-dialog.c:1432
 msgid ""
 "You are about to select another account, which will discard\n"
 "your changes. Are you sure you want to proceed?"
@@ -2939,15 +3357,15 @@ msgstr ""
 "la pierderea modificărilor curente. Doriți să continuați?"
 
 #. Menu items: to enabled/disable the account
-#: ../src/empathy-accounts-dialog.c:1571
+#: ../src/empathy-accounts-dialog.c:1643
 msgid "_Enable"
 msgstr "Activ_ează"
 
-#: ../src/empathy-accounts-dialog.c:1572
+#: ../src/empathy-accounts-dialog.c:1644
 msgid "_Disable"
 msgstr "_Dezactivează"
 
-#: ../src/empathy-accounts-dialog.c:2086
+#: ../src/empathy-accounts-dialog.c:2154
 msgid ""
 "You are about to close the window, which will discard\n"
 "your changes. Are you sure you want to proceed?"
@@ -2956,18 +3374,22 @@ msgstr ""
 "la pierderea modificărilor curente. Doriți să continuați?"
 
 #: ../src/empathy-accounts-dialog.ui.h:1
+msgid "Add…"
+msgstr "Adaugă…"
+
+#: ../src/empathy-accounts-dialog.ui.h:2
 msgid "Loading account information"
 msgstr "Se încarcă informațiile despre cont"
 
-#: ../src/empathy-accounts-dialog.ui.h:2
+#: ../src/empathy-accounts-dialog.ui.h:3
 msgid "No protocol installed"
 msgstr "Niciun protocol instalat"
 
-#: ../src/empathy-accounts-dialog.ui.h:3
+#: ../src/empathy-accounts-dialog.ui.h:4
 msgid "Protocol:"
 msgstr "Protocol:"
 
-#: ../src/empathy-accounts-dialog.ui.h:4
+#: ../src/empathy-accounts-dialog.ui.h:6
 msgid ""
 "To add a new account, you first have to install a backend for each protocol "
 "you want to use."
@@ -2975,19 +3397,15 @@ msgstr ""
 "Pentru a adăuga un cont nou, trebuie să instalați întâi suportul pentru "
 "fiecare protocol pe care doriți să-l folosiți."
 
-#: ../src/empathy-accounts-dialog.ui.h:5
-msgid "_Add…"
-msgstr "_Adaugă…"
-
-#: ../src/empathy-accounts-dialog.ui.h:6
+#: ../src/empathy-accounts-dialog.ui.h:7
 msgid "_Import…"
-msgstr "_Importă..."
+msgstr "_Importă"
 
-#: ../src/empathy-auth-client.c:243
+#: ../src/empathy-auth-client.c:284
 msgid " - Empathy authentication client"
 msgstr " - Client de autentificare Empathy"
 
-#: ../src/empathy-auth-client.c:259
+#: ../src/empathy-auth-client.c:300
 msgid "Empathy authentication client"
 msgstr "Client de autentificare Empathy"
 
@@ -2995,112 +3413,124 @@ msgstr "Client de autentificare Empathy"
 msgid "People nearby"
 msgstr "Persoane din apropiere"
 
-#: ../src/empathy-av.c:118
+#: ../src/empathy-av.c:118 ../src/empathy-call.c:193
 msgid "- Empathy Audio/Video Client"
 msgstr "- Client audio/video Empathy"
 
-#: ../src/empathy-av.c:134
+#: ../src/empathy-av.c:134 ../src/empathy-call.c:218
 msgid "Empathy Audio/Video Client"
 msgstr "Client audio/video Empathy"
 
-#: ../src/empathy-streamed-media-window.c:479
+#: ../src/empathy-streamed-media-window.c:433
 msgid "Contrast"
 msgstr "Contrast"
 
-#: ../src/empathy-streamed-media-window.c:482
+#: ../src/empathy-streamed-media-window.c:436
 msgid "Brightness"
 msgstr "Luminozitate"
 
-#: ../src/empathy-streamed-media-window.c:485
+#: ../src/empathy-streamed-media-window.c:439
 msgid "Gamma"
-msgstr "Gamă"
+msgstr "Gama"
 
-#: ../src/empathy-streamed-media-window.c:590
+#: ../src/empathy-streamed-media-window.c:545
 msgid "Volume"
 msgstr "Volum"
 
-#: ../src/empathy-streamed-media-window.c:1166
+#: ../src/empathy-streamed-media-window.c:1097
 msgid "_Sidebar"
 msgstr "Bară _laterală"
 
-#: ../src/empathy-streamed-media-window.c:1186
+#: ../src/empathy-streamed-media-window.c:1117
 msgid "Audio input"
 msgstr "Intrare audio"
 
-#: ../src/empathy-streamed-media-window.c:1190
+#: ../src/empathy-streamed-media-window.c:1121
 msgid "Video input"
 msgstr "Intrare video"
 
-#: ../src/empathy-streamed-media-window.c:1194
+#: ../src/empathy-streamed-media-window.c:1129
 msgid "Dialpad"
 msgstr "Tastatură numerică"
 
-#: ../src/empathy-streamed-media-window.c:1205
+#: ../src/empathy-streamed-media-window.c:1140
 msgid "Details"
 msgstr "Detalii"
 
 #. translators: Call is a noun and %s is the contact name. This string
 #. * is used in the window title
-#: ../src/empathy-streamed-media-window.c:1274
+#: ../src/empathy-streamed-media-window.c:1209
+#: ../src/empathy-call-window.c:1927
 #, c-format
 msgid "Call with %s"
 msgstr "Apel către %s"
 
-#. translators: Call is a noun. This string is used in the window
-#. * title
-#: ../src/empathy-streamed-media-window.c:1353
-msgid "Call"
-msgstr "Apel"
-
-#: ../src/empathy-streamed-media-window.c:1507
+#: ../src/empathy-streamed-media-window.c:1442
+#: ../src/empathy-call-window.c:2171
 msgid "The IP address as seen by the machine"
 msgstr "Adresa IP așa cum este văzută de mașină"
 
-#: ../src/empathy-streamed-media-window.c:1509
+#: ../src/empathy-streamed-media-window.c:1444
+#: ../src/empathy-call-window.c:2173
 msgid "The IP address as seen by a server on the Internet"
 msgstr "Adresa de IP așa cum este văzută de către un server de pe Internet"
 
-#: ../src/empathy-streamed-media-window.c:1511
+#: ../src/empathy-streamed-media-window.c:1446
+#: ../src/empathy-call-window.c:2175
 msgid "The IP address of the peer as seen by the other side"
 msgstr "Adresa IP așa cum este văzută de către partenerul de conexiune"
 
-#: ../src/empathy-streamed-media-window.c:1513
+#: ../src/empathy-streamed-media-window.c:1448
+#: ../src/empathy-call-window.c:2177
 msgid "The IP address of a relay server"
 msgstr "Adresa IP a unui server releu"
 
-#: ../src/empathy-streamed-media-window.c:1515
+#: ../src/empathy-streamed-media-window.c:1450
+#: ../src/empathy-call-window.c:2179
 msgid "The IP address of the multicast group"
 msgstr "Adresa IP a grupului multicast"
 
-#. Translators: number of minutes:seconds the caller has been connected
-#: ../src/empathy-streamed-media-window.c:2266
+#: ../src/empathy-streamed-media-window.c:1838
+#: ../src/empathy-streamed-media-window.c:1841
+#: ../src/empathy-streamed-media-window.c:1844
+#: ../src/empathy-streamed-media-window.c:1847
+msgctxt "codec"
+msgid "Unknown"
+msgstr "Necunoscut"
+
+#. Translators: number of minutes:seconds the caller has been connected
+#: ../src/empathy-streamed-media-window.c:2139
 #, c-format
 msgid "Connected — %d:%02dm"
 msgstr "Conectat — %d:%02dm"
 
-#: ../src/empathy-streamed-media-window.c:2327
+#: ../src/empathy-streamed-media-window.c:2200
+#: ../src/empathy-call-window.c:3033
 msgid "Technical Details"
 msgstr "Detalii tehnice"
 
-#: ../src/empathy-streamed-media-window.c:2365
+#: ../src/empathy-streamed-media-window.c:2238
+#: ../src/empathy-call-window.c:3072
 #, c-format
 msgid ""
 "%s's software does not understand any of the audio formats supported by your "
 "computer"
 msgstr ""
-"Software-ul utiliazatorului %s nu înțelege niciunul dintre formatele audio "
+"Software-ul utilizatorului %s nu înțelege niciunul dintre formatele audio "
 "suportate de calculatorul dumneavoastră"
 
-#: ../src/empathy-streamed-media-window.c:2370
+#: ../src/empathy-streamed-media-window.c:2243
+#: ../src/empathy-call-window.c:3077
 #, c-format
 msgid ""
 "%s's software does not understand any of the video formats supported by your "
 "computer"
 msgstr ""
-"Software-ul utiliazatorului %s nu înțelege niciunul dintre formatele video "
+"Software-ul utilizatorului %s nu înțelege niciunul dintre formatele video "
 "suportate de calculatorul dumneavoastră"
 
-#: ../src/empathy-streamed-media-window.c:2376
+#: ../src/empathy-streamed-media-window.c:2249
+#: ../src/empathy-call-window.c:3083
 #, c-format
 msgid ""
 "Can't establish a connection to %s. One of you might be on a network that "
@@ -3110,25 +3540,29 @@ msgstr ""
 "fie calculatorul la care încercați să vă conectați se află într-o rețea ce "
 "nu permite conexiuni directe."
 
-#: ../src/empathy-streamed-media-window.c:2382
+#: ../src/empathy-streamed-media-window.c:2255
+#: ../src/empathy-call-window.c:3089
 msgid "There was a failure on the network"
 msgstr "A apărut un eșec pe rețea"
 
-#: ../src/empathy-streamed-media-window.c:2386
+#: ../src/empathy-streamed-media-window.c:2259
+#: ../src/empathy-call-window.c:3093
 msgid ""
 "The audio formats necessary for this call are not installed on your computer"
 msgstr ""
 "Formatele audio necesare pentru acest apel nu sunt instalate pe calculatorul "
 "dumneavoastră"
 
-#: ../src/empathy-streamed-media-window.c:2389
+#: ../src/empathy-streamed-media-window.c:2262
+#: ../src/empathy-call-window.c:3096
 msgid ""
 "The video formats necessary for this call are not installed on your computer"
 msgstr ""
 "Formatele video necesare pentru acest apel nu sunt instalate pe calculatorul "
 "dumneavoastră"
 
-#: ../src/empathy-streamed-media-window.c:2399
+#: ../src/empathy-streamed-media-window.c:2272
+#: ../src/empathy-call-window.c:3108
 #, c-format
 msgid ""
 "Something unexpected happened in a Telepathy component. Please <a href=\"%s"
@@ -3139,119 +3573,161 @@ msgstr ""
 "\">Trimiteți un raport al erorii</a> și atașați mesajele din fereastra "
 "„Depanare” din meniul Ajutor."
 
-#: ../src/empathy-streamed-media-window.c:2407
+#: ../src/empathy-streamed-media-window.c:2280
+#: ../src/empathy-call-window.c:3117
 msgid "There was a failure in the call engine"
 msgstr "A apărut un eșec în motorul apelurilor"
 
-#: ../src/empathy-streamed-media-window.c:2410
+#: ../src/empathy-streamed-media-window.c:2283
+#: ../src/empathy-call-window.c:3120
 msgid "The end of the stream was reached"
 msgstr "S-a ajuns la sfârșitul fluxului"
 
-#: ../src/empathy-streamed-media-window.c:2450
+#: ../src/empathy-streamed-media-window.c:2323
+#: ../src/empathy-call-window.c:3160
 msgid "Can't establish audio stream"
 msgstr "Nu s-a putut realiza fluxul audio"
 
-#: ../src/empathy-streamed-media-window.c:2460
+#: ../src/empathy-streamed-media-window.c:2333
+#: ../src/empathy-call-window.c:3170
 msgid "Can't establish video stream"
 msgstr "Nu s-a putut realiza fluxul video"
 
-#: ../src/empathy-call-window.ui.h:1
+#: ../src/empathy-call-window.ui.h:1 ../src/empathy-preferences.ui.h:2
+#: ../src/empathy-streamed-media-window.ui.h:1
 msgid "Audio"
 msgstr "Audio"
 
-#: ../src/empathy-call-window.ui.h:2
-msgid "Call the contact again"
-msgstr "Apelează din nou contactul"
-
 #: ../src/empathy-call-window.ui.h:3
-msgid "Camera Off"
-msgstr "Cameră dezactivată"
+#: ../src/empathy-streamed-media-window.ui.h:5
+msgid "Decoding Codec:"
+msgstr "Codec de decodificare:"
 
 #: ../src/empathy-call-window.ui.h:4
-msgid "Camera On"
-msgstr "Cameră activată"
+msgid "Disable camera"
+msgstr "Dezactivează camera"
 
 #: ../src/empathy-call-window.ui.h:5
-msgid "Decoding Codec:"
-msgstr "Codec de decodificare:"
+msgid "Display the dialpad"
+msgstr "Afișează tastatura numerică"
 
 #: ../src/empathy-call-window.ui.h:6
-msgid "Disable camera and stop sending video"
-msgstr "Dezactivează camera și oprește transmisia video"
+#: ../src/empathy-streamed-media-window.ui.h:9
+msgid "Encoding Codec:"
+msgstr "Codec de codificare:"
 
 #: ../src/empathy-call-window.ui.h:7
-msgid "Enable camera and send video"
-msgstr "Activează camera și trimite video"
+#: ../src/empathy-streamed-media-window.ui.h:10
+msgid "Hang up"
+msgstr "Închide"
 
 #: ../src/empathy-call-window.ui.h:8
-msgid "Enable camera but don't send video"
-msgstr "Activează camera, dar nu trimite video"
+#: ../src/empathy-streamed-media-window.ui.h:11
+msgid "Hang up current call"
+msgstr "Închide apelul curent"
 
 #: ../src/empathy-call-window.ui.h:9
-msgid "Encoding Codec:"
-msgstr "Codec de codificare:"
+#: ../src/empathy-streamed-media-window.ui.h:12
+msgid "Local Candidate:"
+msgstr "Candidat local:"
 
 #: ../src/empathy-call-window.ui.h:10
-msgid "Hang up"
-msgstr "Închide"
+msgid "Maximise me"
+msgstr "Mărește-mă"
 
 #: ../src/empathy-call-window.ui.h:11
-msgid "Hang up current call"
-msgstr "Închide apelul curent"
+msgid "Minimise me"
+msgstr "Micșorează-mă"
 
 #: ../src/empathy-call-window.ui.h:12
-msgid "Local Candidate:"
-msgstr "Candidat local:"
+#: ../src/empathy-streamed-media-window.ui.h:15
+msgid "Remote Candidate:"
+msgstr "Candidat la distanță:"
 
 #: ../src/empathy-call-window.ui.h:13
-msgid "Preview"
-msgstr "Previzualizare"
+#: ../src/empathy-streamed-media-window.ui.h:16
+msgid "Send Audio"
+msgstr "Trimite audio"
 
 #: ../src/empathy-call-window.ui.h:14
-msgid "Redial"
-msgstr "Formează din nou"
+msgid "Send Video"
+msgstr "Trimite video"
 
 #: ../src/empathy-call-window.ui.h:15
-msgid "Remote Candidate:"
-msgstr "Candidat la distanță:"
+msgid "Show dialpad"
+msgstr "Arată tastatura numerică"
 
 #: ../src/empathy-call-window.ui.h:16
-msgid "Send Audio"
-msgstr "Trimite audio"
+msgid "Start a video call"
+msgstr "Începe un apel video"
 
 #: ../src/empathy-call-window.ui.h:17
-msgid "Toggle audio transmission"
-msgstr "Comută transmisia audio"
+msgid "Start an audio call"
+msgstr "Începe un apel audio"
+
+#: ../src/empathy-call-window.ui.h:18
+msgid "Swap camera"
+msgstr "Înlocuiți camera"
 
 #: ../src/empathy-call-window.ui.h:19
-msgid "V_ideo"
-msgstr "V_ideo"
+#: ../src/empathy-streamed-media-window.ui.h:17
+msgid "Toggle audio transmission"
+msgstr "Comută transmisia audio"
 
 #: ../src/empathy-call-window.ui.h:20
-msgid "Video"
-msgstr "Video"
+msgid "Toggle video transmission"
+msgstr "Comută transmisia video"
 
 #: ../src/empathy-call-window.ui.h:21
-msgid "Video Off"
-msgstr "Video dezactivat"
-
-#: ../src/empathy-call-window.ui.h:22
-msgid "Video On"
-msgstr "Video activat"
+#: ../src/empathy-streamed-media-window.ui.h:18
+#: ../src/empathy-call-window.c:2580 ../src/empathy-call-window.c:2581
+#: ../src/empathy-call-window.c:2582 ../src/empathy-call-window.c:2583
+msgid "Unknown"
+msgstr "Necunoscut"
 
 #: ../src/empathy-call-window.ui.h:23
-msgid "Video Preview"
-msgstr "Previzualizare video"
+msgid "Video call"
+msgstr "Apel video"
 
 #: ../src/empathy-call-window.ui.h:24
+#: ../src/empathy-streamed-media-window.ui.h:24
 msgid "_Call"
 msgstr "_Apelează"
 
-#: ../src/empathy-call-window.ui.h:25 ../src/empathy-main-window.ui.h:29
+#: ../src/empathy-call-window.ui.h:25
+msgid "_Camera"
+msgstr "_Camera"
+
+#: ../src/empathy-call-window.ui.h:26 ../src/empathy-chat-window.ui.h:9
+#: ../src/empathy-main-window-menubar.ui.h:18
+msgid "_Contents"
+msgstr "_Conținut"
+
+#: ../src/empathy-call-window.ui.h:27
+#: ../src/empathy-main-window-menubar.ui.h:19
+msgid "_Debug"
+msgstr "_Depanare"
+
+#: ../src/empathy-call-window.ui.h:29 ../src/empathy-chat-window.ui.h:14
+#: ../src/empathy-main-window-menubar.ui.h:22
+msgid "_Help"
+msgstr "_Ajutor"
+
+#: ../src/empathy-call-window.ui.h:30
+msgid "_Microphone"
+msgstr "_Microfon"
+
+#: ../src/empathy-call-window.ui.h:31
+msgid "_Settings"
+msgstr "_Setări"
+
+#: ../src/empathy-call-window.ui.h:32
+#: ../src/empathy-main-window-menubar.ui.h:30
+#: ../src/empathy-streamed-media-window.ui.h:25
 msgid "_View"
 msgstr "_Vizualizare"
 
-#: ../src/empathy-chat-window.c:473 ../src/empathy-chat-window.c:493
+#: ../src/empathy-chat-window.c:481 ../src/empathy-chat-window.c:501
 #, c-format
 msgid "%s (%d unread)"
 msgid_plural "%s (%d unread)"
@@ -3259,7 +3735,7 @@ msgstr[0] "%s (%d necitit)"
 msgstr[1] "%s (%d necitite)"
 msgstr[2] "%s (%d necitite)"
 
-#: ../src/empathy-chat-window.c:485
+#: ../src/empathy-chat-window.c:493
 #, c-format
 msgid "%s (and %u other)"
 msgid_plural "%s (and %u others)"
@@ -3267,7 +3743,7 @@ msgstr[0] "%s (și %u altul)"
 msgstr[1] "%s (și altele %u)"
 msgstr[2] "%s (și altele %u)"
 
-#: ../src/empathy-chat-window.c:501
+#: ../src/empathy-chat-window.c:509
 #, c-format
 msgid "%s (%d unread from others)"
 msgid_plural "%s (%d unread from others)"
@@ -3275,7 +3751,7 @@ msgstr[0] "%s (%d necitit de la alții)"
 msgstr[1] "%s (%d necitite de la alții)"
 msgstr[2] "%s (%d necitite de la alții)"
 
-#: ../src/empathy-chat-window.c:510
+#: ../src/empathy-chat-window.c:518
 #, c-format
 msgid "%s (%d unread from all)"
 msgid_plural "%s (%d unread from all)"
@@ -3283,7 +3759,19 @@ msgstr[0] "%s (%d necitit de la toți)"
 msgstr[1] "%s (%d necitite de la toți)"
 msgstr[2] "%s (%d necitite de la toți)"
 
-#: ../src/empathy-chat-window.c:712
+#: ../src/empathy-chat-window.c:733
+msgid "SMS:"
+msgstr "SMS:"
+
+#: ../src/empathy-chat-window.c:743
+#, c-format
+msgid "Sending %d message"
+msgid_plural "Sending %d messages"
+msgstr[0] "Trimite %d mesaj"
+msgstr[1] "Trimite %d mesaje"
+msgstr[2] "Trimite %d de mesaje"
+
+#: ../src/empathy-chat-window.c:765
 msgid "Typing a message."
 msgstr "Tastează un mesaj."
 
@@ -3295,54 +3783,38 @@ msgstr "_Curăță"
 msgid "C_ontact"
 msgstr "C_ontact"
 
-#: ../src/empathy-chat-window.ui.h:3
-msgid "Chat"
-msgstr "Discută"
-
 #: ../src/empathy-chat-window.ui.h:4
 msgid "Insert _Smiley"
 msgstr "Inserează un e_moticon"
 
 #: ../src/empathy-chat-window.ui.h:5
 msgid "Invite _Participant…"
-msgstr "Invită _participant…"
+msgstr "Invită un _participant…"
 
 #: ../src/empathy-chat-window.ui.h:6
 msgid "Move Tab _Left"
-msgstr "Mută tabu_l în stânga"
+msgstr "Mută tabu_l la stânga"
 
 #: ../src/empathy-chat-window.ui.h:7
 msgid "Move Tab _Right"
-msgstr "Mută tabul în d_reapta"
+msgstr "Mută tabul la d_reapta"
 
 #: ../src/empathy-chat-window.ui.h:8
 msgid "Notify for All Messages"
 msgstr "Anunță-mă pentru toate mesajele"
 
-#: ../src/empathy-chat-window.ui.h:9 ../src/empathy-main-window.ui.h:17
-msgid "_Contents"
-msgstr "_Conținut"
-
 #: ../src/empathy-chat-window.ui.h:10
 msgid "_Conversation"
 msgstr "_Conversație"
 
 #: ../src/empathy-chat-window.ui.h:11
 msgid "_Detach Tab"
-msgstr "_Detașează tab"
-
-#: ../src/empathy-chat-window.ui.h:12 ../src/empathy-main-window.ui.h:19
-msgid "_Edit"
-msgstr "_Editare"
+msgstr "_Detașează tabul"
 
 #: ../src/empathy-chat-window.ui.h:13
 msgid "_Favorite Chat Room"
 msgstr "Canal de discuții _favorit"
 
-#: ../src/empathy-chat-window.ui.h:14 ../src/empathy-main-window.ui.h:21
-msgid "_Help"
-msgstr "_Ajutor"
-
 #: ../src/empathy-chat-window.ui.h:15
 msgid "_Next Tab"
 msgstr "_Tabul următor"
@@ -3363,15 +3835,15 @@ msgstr "_Taburi"
 msgid "_Undo Close Tab"
 msgstr "An_ulează închiderea tabului"
 
-#: ../src/empathy-chatrooms-window.c:241
+#: ../src/empathy-chatrooms-window.c:251
 msgid "Name"
 msgstr "Nume"
 
-#: ../src/empathy-chatrooms-window.c:259
+#: ../src/empathy-chatrooms-window.c:269
 msgid "Room"
 msgstr "Canal de discuții"
 
-#: ../src/empathy-chatrooms-window.c:267
+#: ../src/empathy-chatrooms-window.c:277
 msgid "Auto-Connect"
 msgstr "Conectare automată"
 
@@ -3379,90 +3851,96 @@ msgstr "Conectare automată"
 msgid "Manage Favorite Rooms"
 msgstr "Gestionează canalele de discuții favorite"
 
-#: ../src/empathy-event-manager.c:507
+#: ../src/empathy-event-manager.c:521
 msgid "Incoming video call"
 msgstr "Ați primit un apel video"
 
-#: ../src/empathy-event-manager.c:507
+#: ../src/empathy-event-manager.c:521 ../src/empathy-call-window.c:1555
 msgid "Incoming call"
 msgstr "Apel primit"
 
-#: ../src/empathy-event-manager.c:511
+#: ../src/empathy-event-manager.c:525
 #, c-format
 msgid "%s is video calling you. Do you want to answer?"
 msgstr "%s vă apelează video. Doriți să răspundeți?"
 
-#: ../src/empathy-event-manager.c:512
+#: ../src/empathy-event-manager.c:526
 #, c-format
 msgid "%s is calling you. Do you want to answer?"
 msgstr "%s vă apelează. Doriți să răspundeți?"
 
-#: ../src/empathy-event-manager.c:515 ../src/empathy-event-manager.c:660
+#: ../src/empathy-event-manager.c:529 ../src/empathy-event-manager.c:730
+#: ../src/empathy-event-manager.c:763 ../src/empathy-call-window.c:1561
 #, c-format
 msgid "Incoming call from %s"
 msgstr "Apel primit de la %s"
 
-#: ../src/empathy-event-manager.c:540
+#: ../src/empathy-event-manager.c:554
 msgid "_Reject"
 msgstr "_Respinge"
 
-#: ../src/empathy-event-manager.c:546
+#: ../src/empathy-event-manager.c:562 ../src/empathy-event-manager.c:570
 msgid "_Answer"
 msgstr "Ră_spunde"
 
-#: ../src/empathy-event-manager.c:660
+#: ../src/empathy-event-manager.c:570
+msgid "_Answer with video"
+msgstr "_Răspunde cu imagine video"
+
+#: ../src/empathy-event-manager.c:730 ../src/empathy-event-manager.c:763
+#: ../src/empathy-call-window.c:1561
 #, c-format
 msgid "Incoming video call from %s"
 msgstr "Apel video primit de la %s"
 
-#: ../src/empathy-event-manager.c:737
+#: ../src/empathy-event-manager.c:836
 msgid "Room invitation"
 msgstr "Invitație canal de discuție"
 
-#: ../src/empathy-event-manager.c:739
+#: ../src/empathy-event-manager.c:838
 #, c-format
 msgid "Invitation to join %s"
 msgstr "Invitație de alăturare la %s"
 
-#: ../src/empathy-event-manager.c:746
+#: ../src/empathy-event-manager.c:845
 #, c-format
 msgid "%s is inviting you to join %s"
 msgstr "%s vă invită să vă alăturați la %s"
 
-#: ../src/empathy-event-manager.c:754
+#: ../src/empathy-event-manager.c:853
 msgid "_Decline"
 msgstr "_Refuză"
 
-#: ../src/empathy-event-manager.c:759
+#: ../src/empathy-event-manager.c:858
 #: ../src/empathy-new-chatroom-dialog.ui.h:7
 msgid "_Join"
 msgstr "A_lăturare"
 
-#: ../src/empathy-event-manager.c:786
+#: ../src/empathy-event-manager.c:885
 #, c-format
 msgid "%s invited you to join %s"
 msgstr "%s v-a invitat să vă alăturați la %s"
 
-#: ../src/empathy-event-manager.c:792
+#: ../src/empathy-event-manager.c:891
 #, c-format
 msgid "You have been invited to join %s"
 msgstr "Ați fost invitat să vă alăturați la %s"
 
-#: ../src/empathy-event-manager.c:843
+#: ../src/empathy-event-manager.c:942
 #, c-format
 msgid "Incoming file transfer from %s"
 msgstr "Transfer de fișiere primit de la %s"
 
-#: ../src/empathy-event-manager.c:1013 ../src/empathy-main-window.c:370
+#: ../src/empathy-event-manager.c:1145 ../src/empathy-main-window.c:377
 msgid "Password required"
 msgstr "Necesită parolă"
 
-#: ../src/empathy-event-manager.c:1069
+#: ../src/empathy-event-manager.c:1210
 #, c-format
 msgid "%s would like permission to see when you are online"
 msgstr "%s cere permisiunea să vadă când sunteți conectat"
 
-#: ../src/empathy-event-manager.c:1073
+#: ../src/empathy-event-manager.c:1214
 #, c-format
 msgid ""
 "\n"
@@ -3472,105 +3950,105 @@ msgstr ""
 "Mesaj: %s"
 
 #. Translators: time left, when it is more than one hour
-#: ../src/empathy-ft-manager.c:99
+#: ../src/empathy-ft-manager.c:100
 #, c-format
 msgid "%u:%02u.%02u"
 msgstr "%u:%02u.%02u"
 
 #. Translators: time left, when is is less than one hour
-#: ../src/empathy-ft-manager.c:102
+#: ../src/empathy-ft-manager.c:103
 #, c-format
 msgid "%02u.%02u"
 msgstr "%02u.%02u"
 
-#: ../src/empathy-ft-manager.c:178
+#: ../src/empathy-ft-manager.c:179
 msgctxt "file transfer percent"
 msgid "Unknown"
 msgstr "Necunoscut"
 
-#: ../src/empathy-ft-manager.c:273
+#: ../src/empathy-ft-manager.c:274
 #, c-format
 msgid "%s of %s at %s/s"
 msgstr "%s din %s cu %s/s"
 
-#: ../src/empathy-ft-manager.c:274
+#: ../src/empathy-ft-manager.c:275
 #, c-format
 msgid "%s of %s"
 msgstr "%s din %s"
 
 #. translators: first %s is filename, second %s is the contact name
-#: ../src/empathy-ft-manager.c:305
+#: ../src/empathy-ft-manager.c:306
 #, c-format
 msgid "Receiving \"%s\" from %s"
 msgstr "Se primește „%s” de la %s"
 
 #. translators: first %s is filename, second %s is the contact name
-#: ../src/empathy-ft-manager.c:308
+#: ../src/empathy-ft-manager.c:309
 #, c-format
 msgid "Sending \"%s\" to %s"
 msgstr "Se trimite „%s” la %s"
 
 #. translators: first %s is filename, second %s
 #. * is the contact name
-#: ../src/empathy-ft-manager.c:338
+#: ../src/empathy-ft-manager.c:339
 #, c-format
 msgid "Error receiving \"%s\" from %s"
 msgstr "Eroare la recepționarea „%s” de la %s"
 
-#: ../src/empathy-ft-manager.c:341
+#: ../src/empathy-ft-manager.c:342
 msgid "Error receiving a file"
 msgstr "Eroare la primirea unui fișier"
 
-#: ../src/empathy-ft-manager.c:346
+#: ../src/empathy-ft-manager.c:347
 #, c-format
 msgid "Error sending \"%s\" to %s"
 msgstr "Eroare la trimiterea „%s” către %s"
 
-#: ../src/empathy-ft-manager.c:349
+#: ../src/empathy-ft-manager.c:350
 msgid "Error sending a file"
 msgstr "Eroare la trimiterea unui fișier"
 
 #. translators: first %s is filename, second %s
 #. * is the contact name
-#: ../src/empathy-ft-manager.c:488
+#: ../src/empathy-ft-manager.c:489
 #, c-format
 msgid "\"%s\" received from %s"
 msgstr "„%s” primit de la %s"
 
 #. translators: first %s is filename, second %s
 #. * is the contact name
-#: ../src/empathy-ft-manager.c:493
+#: ../src/empathy-ft-manager.c:494
 #, c-format
 msgid "\"%s\" sent to %s"
 msgstr "„%s” trimis către %s"
 
-#: ../src/empathy-ft-manager.c:496
+#: ../src/empathy-ft-manager.c:497
 msgid "File transfer completed"
 msgstr "Transfer de fișiere încheiat"
 
-#: ../src/empathy-ft-manager.c:615 ../src/empathy-ft-manager.c:782
+#: ../src/empathy-ft-manager.c:616 ../src/empathy-ft-manager.c:780
 msgid "Waiting for the other participant's response"
 msgstr "Se așteaptă răspunsul celuilalt participant"
 
-#: ../src/empathy-ft-manager.c:641 ../src/empathy-ft-manager.c:679
+#: ../src/empathy-ft-manager.c:642 ../src/empathy-ft-manager.c:680
 #, c-format
 msgid "Checking integrity of \"%s\""
-msgstr "Se verifică integritatea „%s”"
+msgstr "Se verifică integritatea pentru „%s”"
 
-#: ../src/empathy-ft-manager.c:644 ../src/empathy-ft-manager.c:682
+#: ../src/empathy-ft-manager.c:645 ../src/empathy-ft-manager.c:683
 #, c-format
 msgid "Hashing \"%s\""
 msgstr "Se calculează valoarea de dispersie pentru „%s”"
 
-#: ../src/empathy-ft-manager.c:1016
+#: ../src/empathy-ft-manager.c:1026
 msgid "%"
 msgstr "%"
 
-#: ../src/empathy-ft-manager.c:1028
+#: ../src/empathy-ft-manager.c:1038
 msgid "File"
 msgstr "Fișier"
 
-#: ../src/empathy-ft-manager.c:1050
+#: ../src/empathy-ft-manager.c:1060
 msgid "Remaining"
 msgstr "Rămas"
 
@@ -3608,141 +4086,165 @@ msgstr "Protocol"
 msgid "Source"
 msgstr "Sursă"
 
-#: ../src/empathy-main-window.c:387
+#: ../src/empathy-main-window.c:394
 msgid "Provide Password"
 msgstr "Furnizați parola"
 
-#: ../src/empathy-main-window.c:393
+#: ../src/empathy-main-window.c:400
 msgid "Disconnect"
 msgstr "Deconectează"
 
-#: ../src/empathy-main-window.c:533
+#: ../src/empathy-main-window.c:637
 msgid "No match found"
 msgstr "Nicio potrivire"
 
-#: ../src/empathy-main-window.c:688
+#: ../src/empathy-main-window.c:745
+#, c-format
+msgid "Sorry, %s accounts can’t be used until your %s software is updated."
+msgstr ""
+"Ne pare rău, %s conturile nu pot fi utilizate până versiunea programului %s "
+"nu este actualizată."
+
+#: ../src/empathy-main-window.c:813
+msgid "Update software..."
+msgstr "Actualizează programul..."
+
+#: ../src/empathy-main-window.c:819 ../src/empathy-main-window.c:940
+msgid "Close"
+msgstr "Închide"
+
+#: ../src/empathy-main-window.c:928
 msgid "Reconnect"
 msgstr "Reconectează"
 
-#: ../src/empathy-main-window.c:694
+#: ../src/empathy-main-window.c:934
 msgid "Edit Account"
 msgstr "Editare cont"
 
-#: ../src/empathy-main-window.c:700
-msgid "Close"
-msgstr "Închide"
+#. Translators: this string will be something like:
+#. *   Top up My Account ($1.23)..."
+#: ../src/empathy-main-window.c:1073
+#, c-format
+msgid "Top up %s (%s)..."
+msgstr "Încarcă %s (%s)..."
+
+#: ../src/empathy-main-window.c:1120
+msgid "Top up account credit"
+msgstr "Încarcă creditul contului"
 
-#: ../src/empathy-main-window.c:1418
+#. top up button
+#: ../src/empathy-main-window.c:1191
+msgid "Top Up..."
+msgstr "Încarcă..."
+
+#: ../src/empathy-main-window.c:1934
 msgid "Contact"
 msgstr "Contact"
 
-#: ../src/empathy-main-window.c:1765
+#: ../src/empathy-main-window.c:2309
 msgid "Contact List"
-msgstr "Listă contacte"
-
-#: ../src/empathy-main-window.c:1881
-msgid "Show and edit accounts"
-msgstr "Arată și modifică conturile"
+msgstr "Listă de contacte"
 
-#: ../src/empathy-main-window.ui.h:1
+#: ../src/empathy-main-window-menubar.ui.h:1
 msgid "Contacts on a _Map"
 msgstr "Contactele pe o _hartă"
 
-#: ../src/empathy-main-window.ui.h:2
+#: ../src/empathy-main-window-menubar.ui.h:2
+msgid "Credit Balance"
+msgstr "Soldul creditului"
+
+#: ../src/empathy-main-window-menubar.ui.h:3
 msgid "Find in Contact _List"
 msgstr "Caută în _lista de contacte"
 
-#: ../src/empathy-main-window.ui.h:3
+#: ../src/empathy-main-window-menubar.ui.h:4
 msgid "Join _Favorites"
 msgstr "Alăturare la camerele de discuții _favorite"
 
-#: ../src/empathy-main-window.ui.h:4
+#: ../src/empathy-main-window-menubar.ui.h:5
 msgid "Manage Favorites"
 msgstr "Gestionează favoritele"
 
-#: ../src/empathy-main-window.ui.h:5
+#: ../src/empathy-main-window-menubar.ui.h:6
 msgid "N_ormal Size"
 msgstr "Dimensiune n_ormală"
 
-#: ../src/empathy-main-window.ui.h:6 ../src/empathy-status-icon.ui.h:1
+#: ../src/empathy-main-window-menubar.ui.h:7 ../src/empathy-status-icon.ui.h:1
 msgid "New _Call…"
 msgstr "Ape_l nou…"
 
-#: ../src/empathy-main-window.ui.h:7
+#: ../src/empathy-main-window-menubar.ui.h:8
 msgid "Normal Size With _Avatars"
 msgstr "Dimensiune normală cu _avatare"
 
-#: ../src/empathy-main-window.ui.h:8
+#: ../src/empathy-main-window-menubar.ui.h:9
 msgid "P_references"
 msgstr "P_referințe"
 
-#: ../src/empathy-main-window.ui.h:9
+#: ../src/empathy-main-window-menubar.ui.h:10
 msgid "Show P_rotocols"
 msgstr "Arată p_rotocoalele"
 
-#: ../src/empathy-main-window.ui.h:10
+#: ../src/empathy-main-window-menubar.ui.h:11
 msgid "Sort by _Name"
 msgstr "Sortare după _nume"
 
-#: ../src/empathy-main-window.ui.h:11
+#: ../src/empathy-main-window-menubar.ui.h:12
 msgid "Sort by _Status"
 msgstr "Sortează după mesajul de _stare"
 
-#: ../src/empathy-main-window.ui.h:12
+#: ../src/empathy-main-window-menubar.ui.h:13
 msgid "_Accounts"
 msgstr "_Conturi"
 
-#: ../src/empathy-main-window.ui.h:14
+#: ../src/empathy-main-window-menubar.ui.h:15
 msgid "_Blocked Contacts"
 msgstr "Contacte _blocate"
 
-#: ../src/empathy-main-window.ui.h:16
+#: ../src/empathy-main-window-menubar.ui.h:17
 msgid "_Compact Size"
 msgstr "Dimensiune _compactă"
 
-#: ../src/empathy-main-window.ui.h:18
-msgid "_Debug"
-msgstr "_Depanare"
-
-#: ../src/empathy-main-window.ui.h:20
+#: ../src/empathy-main-window-menubar.ui.h:21
 msgid "_File Transfers"
 msgstr "Transfer de _fișiere"
 
-#: ../src/empathy-main-window.ui.h:22
+#: ../src/empathy-main-window-menubar.ui.h:23
 msgid "_Join…"
 msgstr "A_lăturare…"
 
-#: ../src/empathy-main-window.ui.h:23 ../src/empathy-status-icon.ui.h:3
+#: ../src/empathy-main-window-menubar.ui.h:24
+#: ../src/empathy-status-icon.ui.h:3
 msgid "_New Conversation…"
 msgstr "Conversație _nouă…"
 
-#: ../src/empathy-main-window.ui.h:24
+#: ../src/empathy-main-window-menubar.ui.h:25
 msgid "_Offline Contacts"
 msgstr "C_ontacte deconectate"
 
-#: ../src/empathy-main-window.ui.h:25
+#: ../src/empathy-main-window-menubar.ui.h:26
 msgid "_Personal Information"
 msgstr "Informații _personale"
 
-#: ../src/empathy-main-window.ui.h:27
+#: ../src/empathy-main-window-menubar.ui.h:28
 msgid "_Room"
 msgstr "Cana_l de discuții"
 
-#: ../src/empathy-main-window.ui.h:28
+#: ../src/empathy-main-window-menubar.ui.h:29
 msgid "_Search for Contacts…"
 msgstr "_Caută contacte…"
 
-#: ../src/empathy-new-chatroom-dialog.c:337
+#: ../src/empathy-new-chatroom-dialog.c:369
 msgid "Chat Room"
 msgstr "Canal de discuții"
 
-#: ../src/empathy-new-chatroom-dialog.c:353
+#: ../src/empathy-new-chatroom-dialog.c:385
 msgid "Members"
 msgstr "Membri"
 
 #. Translators: Room/Join's roomlist tooltip. Parameters are a channel name,
 #. yes/no, yes/no and a number.
-#: ../src/empathy-new-chatroom-dialog.c:560
+#: ../src/empathy-new-chatroom-dialog.c:623
 #, c-format
 msgid ""
 "%s\n"
@@ -3755,16 +4257,16 @@ msgstr ""
 "Parolă necesară: %s\n"
 "Membri: %s"
 
-#: ../src/empathy-new-chatroom-dialog.c:562
-#: ../src/empathy-new-chatroom-dialog.c:563
+#: ../src/empathy-new-chatroom-dialog.c:625
+#: ../src/empathy-new-chatroom-dialog.c:626
 msgid "No"
 msgstr "Nu"
 
-#: ../src/empathy-new-chatroom-dialog.c:591
+#: ../src/empathy-new-chatroom-dialog.c:654
 msgid "Could not start room listing"
 msgstr "Nu s-a putut porni afișarea canalelor de discuții"
 
-#: ../src/empathy-new-chatroom-dialog.c:601
+#: ../src/empathy-new-chatroom-dialog.c:664
 msgid "Could not stop room listing"
 msgstr "Nu s-a putut opri afișarea canalelor de discuții"
 
@@ -3789,7 +4291,7 @@ msgstr ""
 
 #: ../src/empathy-new-chatroom-dialog.ui.h:5
 msgid "Join Room"
-msgstr "Alăturare la canal de discuții"
+msgstr "Alăturare la canale de discuții"
 
 #: ../src/empathy-new-chatroom-dialog.ui.h:6
 msgid "Room List"
@@ -3799,39 +4301,79 @@ msgstr "Listă canale de discuții"
 msgid "_Room:"
 msgstr "Cana_l:"
 
-#: ../src/empathy-preferences.c:139
+#: ../src/empathy-preferences.c:166
 msgid "Message received"
 msgstr "Mesaj primit"
 
-#: ../src/empathy-preferences.c:140
+#: ../src/empathy-preferences.c:167
 msgid "Message sent"
 msgstr "Mesaj trimis"
 
-#: ../src/empathy-preferences.c:141
+#: ../src/empathy-preferences.c:168
 msgid "New conversation"
 msgstr "Conversație nouă"
 
-#: ../src/empathy-preferences.c:142
+#: ../src/empathy-preferences.c:169
 msgid "Contact goes online"
 msgstr "Contactul se conectează"
 
-#: ../src/empathy-preferences.c:143
+#: ../src/empathy-preferences.c:170
 msgid "Contact goes offline"
 msgstr "Contactul se deconectează"
 
-#: ../src/empathy-preferences.c:144
+#: ../src/empathy-preferences.c:171
 msgid "Account connected"
 msgstr "Cont conectat"
 
-#: ../src/empathy-preferences.c:145
+#: ../src/empathy-preferences.c:172
 msgid "Account disconnected"
 msgstr "Cont deconectat"
 
-#: ../src/empathy-preferences.c:446
+#: ../src/empathy-preferences.c:475
 msgid "Language"
 msgstr "Limbă"
 
-#: ../src/empathy-preferences.c:875
+#. translators: Contact name for the chat theme preview
+#: ../src/empathy-preferences.c:725
+msgid "Juliet"
+msgstr "Julieta"
+
+#. translators: Contact name for the chat theme preview
+#: ../src/empathy-preferences.c:732
+msgid "Romeo"
+msgstr "Romeo"
+
+#. translators: Quote from Romeo & Julier, for chat theme preview
+#: ../src/empathy-preferences.c:738
+msgid "O Romeo, Romeo, wherefore art thou Romeo?"
+msgstr "O Romeo, Romeo, pentru ce ești Romeo?"
+
+#. translators: Quote from Romeo & Julier, for chat theme preview
+#: ../src/empathy-preferences.c:741
+msgid "Deny thy father and refuse thy name;"
+msgstr "Respinge-l pe tatăl tău și refuză numele lui;"
+
+#. translators: Quote from Romeo & Julier, for chat theme preview
+#: ../src/empathy-preferences.c:744
+msgid "Or if thou wilt not, be but sworn my love"
+msgstr "Sau dacă nu vei fi, jur pe dragostea mea"
+
+#. translators: Quote from Romeo & Julier, for chat theme preview
+#: ../src/empathy-preferences.c:747
+msgid "And I'll no longer be a Capulet."
+msgstr "Și nu voi mai fi un Capulet."
+
+#. translators: Quote from Romeo & Julier, for chat theme preview
+#: ../src/empathy-preferences.c:750
+msgid "Shall I hear more, or shall I speak at this?"
+msgstr "Voi auzi mai multe sau voi vorbi mai multe?"
+
+#. translators: Quote from Romeo & Julier, for chat theme preview
+#: ../src/empathy-preferences.c:753
+msgid "Juliet has disconnected"
+msgstr "Julieta s-a deconectat"
+
+#: ../src/empathy-preferences.c:1157
 msgid "Preferences"
 msgstr "Preferințe"
 
@@ -3839,67 +4381,80 @@ msgstr "Preferințe"
 msgid "Appearance"
 msgstr "Aspect"
 
-#: ../src/empathy-preferences.ui.h:2
+#: ../src/empathy-preferences.ui.h:3
 msgid "Behavior"
 msgstr "Comportament"
 
-#: ../src/empathy-preferences.ui.h:3
+#: ../src/empathy-preferences.ui.h:5
 msgid "Chat Th_eme:"
 msgstr "T_ema conversațiilor:"
 
-#: ../src/empathy-preferences.ui.h:4
+#: ../src/empathy-preferences.ui.h:6
 msgid "Disable notifications when _away or busy"
-msgstr "Dez_activează notificările când sunt plecat sau ocupat"
+msgstr "Dez_activează notificările când utilizatorul este plecat sau ocupat"
 
-#: ../src/empathy-preferences.ui.h:5
+#: ../src/empathy-preferences.ui.h:7
 msgid "Disable sounds when _away or busy"
-msgstr "Dez_activează sunetele când sunt plecat sau ocupat"
+msgstr "Dez_activează sunetele când utilizatorul este plecat sau ocupat"
 
-#: ../src/empathy-preferences.ui.h:6
+#: ../src/empathy-preferences.ui.h:8
 msgid "Display incoming events in the notification area"
-msgstr "Afișează evenimentele primite în zona de notificare"
+msgstr "Afișează evenimentele sosite în zona de notificare"
 
-#: ../src/empathy-preferences.ui.h:7
+#: ../src/empathy-preferences.ui.h:9
+msgid ""
+"Echo cancellation helps to make your voice sound clearer to the other "
+"person, but may cause problems on some computers. If you or the other person "
+"hear strange noises or glitches during calls, try turning echo cancellation "
+"off and restarting the call."
+msgstr ""
+"Funcția de reducere a ecoului vă va face vocea mai clară pentru cealaltă "
+"persoană, dar poate crea probleme pe unele calculatoare. Dacă dumneavoastră "
+"sau altă persoană auziți zgomote ciudate sau scăpări de sunete în timpul "
+"apelului, încercați să opriți funcția de reducere a ecoului, iar apoi "
+"reporniți apelul."
+
+#: ../src/empathy-preferences.ui.h:10
 msgid "Enable notifications when a contact comes online"
 msgstr "Activează notificările când un contact se conectează"
 
-#: ../src/empathy-preferences.ui.h:8
+#: ../src/empathy-preferences.ui.h:11
 msgid "Enable notifications when a contact goes offline"
 msgstr "Activează notificările când un contact se deconectează"
 
-#: ../src/empathy-preferences.ui.h:9
+#: ../src/empathy-preferences.ui.h:12
 msgid "Enable notifications when the _chat is not focused"
-msgstr "Activează notificările când dis_cuția nu este în prim plan"
+msgstr "Activează notificările _când discuția nu este în prim plan"
 
-#: ../src/empathy-preferences.ui.h:10
+#: ../src/empathy-preferences.ui.h:13
 msgid "Enable spell checking for languages:"
 msgstr "Activează verificarea ortografică pentru aceste limbi:"
 
-#: ../src/empathy-preferences.ui.h:11
+#: ../src/empathy-preferences.ui.h:14
 msgid "General"
 msgstr "Generale"
 
-#: ../src/empathy-preferences.ui.h:13
+#: ../src/empathy-preferences.ui.h:16
 msgid "Location sources:"
 msgstr "Surse locații:"
 
-#: ../src/empathy-preferences.ui.h:14
+#: ../src/empathy-preferences.ui.h:17
 msgid "Log conversations"
 msgstr "Jurnal conversații"
 
-#: ../src/empathy-preferences.ui.h:15
+#: ../src/empathy-preferences.ui.h:18
 msgid "Notifications"
 msgstr "Notificări"
 
-#: ../src/empathy-preferences.ui.h:16
+#: ../src/empathy-preferences.ui.h:19
 msgid "Play sound for events"
 msgstr "Redă sunete pentru evenimente"
 
-#: ../src/empathy-preferences.ui.h:17
+#: ../src/empathy-preferences.ui.h:20
 msgid "Privacy"
 msgstr "Intimitate"
 
-#: ../src/empathy-preferences.ui.h:18
+#: ../src/empathy-preferences.ui.h:21
 msgid ""
 "Reduced location accuracy means that nothing more precise than your city, "
 "state and country will be published.  GPS coordinates will be accurate to 1 "
@@ -3909,67 +4464,77 @@ msgstr ""
 "statul și țara dumneavoastră nu vor fi publicate. Coordonatele GPS vor avea "
 "o precizie de o cifră zecimală."
 
-#: ../src/empathy-preferences.ui.h:19
+#: ../src/empathy-preferences.ui.h:22
 msgid "Show _smileys as images"
 msgstr "Arată e_moticoanele ca imagini"
 
-#: ../src/empathy-preferences.ui.h:20
+#: ../src/empathy-preferences.ui.h:23
 msgid "Show contact _list in rooms"
 msgstr "Afișează _lista de contacte în canale de discuții"
 
-#: ../src/empathy-preferences.ui.h:21
+#: ../src/empathy-preferences.ui.h:24
 msgid "Sounds"
 msgstr "Sunete"
 
-#: ../src/empathy-preferences.ui.h:22
+#: ../src/empathy-preferences.ui.h:25
 msgid "Spell Checking"
 msgstr "Verificare ortografică"
 
-#: ../src/empathy-preferences.ui.h:23
+#: ../src/empathy-preferences.ui.h:26
 msgid ""
 "The list of languages reflects only the languages for which you have a "
 "dictionary installed."
 msgstr ""
 "Lista limbilor reflectă doar limbile pentru care aveți instalat un dicționar."
 
-#: ../src/empathy-preferences.ui.h:24
+#: ../src/empathy-preferences.ui.h:27
 msgid "Themes"
 msgstr "Teme"
 
-#: ../src/empathy-preferences.ui.h:25
+#: ../src/empathy-preferences.ui.h:28
+msgid "Use _echo cancellation to improve call quality"
+msgstr ""
+"Utilizați funcția de reducere a _ecoului pentru a îmbunătăți calitatea "
+"apelului"
+
+#: ../src/empathy-preferences.ui.h:29
+msgid "Variant:"
+msgstr "Variantă:"
+
+#: ../src/empathy-preferences.ui.h:30
 msgid "_Automatically connect on startup"
 msgstr "Conectare _automată la pornire "
 
-#: ../src/empathy-preferences.ui.h:26
+#: ../src/empathy-preferences.ui.h:31
 msgid "_Cellphone"
 msgstr "Telefon mobi_l"
 
-#: ../src/empathy-preferences.ui.h:27
+#: ../src/empathy-preferences.ui.h:32
 msgid "_Enable bubble notifications"
-msgstr "Activar_e notificări balon"
+msgstr "Activ_ează notificările balon"
 
-#: ../src/empathy-preferences.ui.h:28
+#: ../src/empathy-preferences.ui.h:33
 msgid "_Enable sound notifications"
 msgstr "Activ_ează notificările sonore"
 
-#: ../src/empathy-preferences.ui.h:29
+#: ../src/empathy-preferences.ui.h:34
 msgid "_GPS"
 msgstr "_GPS"
 
-#: ../src/empathy-preferences.ui.h:30
+#: ../src/empathy-preferences.ui.h:35
 msgid "_Network (IP, Wi-Fi)"
 msgstr "Rețea (IP, _Wifi)"
 
-#: ../src/empathy-preferences.ui.h:31
+#: ../src/empathy-preferences.ui.h:36
 msgid "_Open new chats in separate windows"
 msgstr "Deschide discuțiile n_oi în ferestre separate"
 
-#: ../src/empathy-preferences.ui.h:32
+#: ../src/empathy-preferences.ui.h:37
 msgid "_Publish location to my contacts"
 msgstr "_Publică contactelor locația mea"
 
 #. To translators: The longitude and latitude are rounded to closest 0,1 degrees, so for example 146,2345° is rounded to round(146,2345*10)/10 = 146,2 degrees.
-#: ../src/empathy-preferences.ui.h:34
+#: ../src/empathy-preferences.ui.h:39
 msgid "_Reduce location accuracy"
 msgstr "_Redu acuratețea locației"
 
@@ -3981,67 +4546,115 @@ msgstr "Stare"
 msgid "_Quit"
 msgstr "_Ieșire"
 
-#: ../src/empathy-map-view.c:442
+#: ../src/empathy-streamed-media-window.ui.h:2
+msgid "Call the contact again"
+msgstr "Apelează din nou contactul"
+
+#: ../src/empathy-streamed-media-window.ui.h:3
+msgid "Camera Off"
+msgstr "Cameră dezactivată"
+
+#: ../src/empathy-streamed-media-window.ui.h:4
+msgid "Camera On"
+msgstr "Cameră activată"
+
+#: ../src/empathy-streamed-media-window.ui.h:6
+msgid "Disable camera and stop sending video"
+msgstr "Dezactivează camera și oprește transmisia video"
+
+#: ../src/empathy-streamed-media-window.ui.h:7
+msgid "Enable camera and send video"
+msgstr "Activează camera și trimite video"
+
+#: ../src/empathy-streamed-media-window.ui.h:8
+msgid "Enable camera but don't send video"
+msgstr "Activează camera, dar nu trimite video"
+
+#: ../src/empathy-streamed-media-window.ui.h:13
+msgid "Preview"
+msgstr "Previzualizare"
+
+#: ../src/empathy-streamed-media-window.ui.h:14
+msgid "Redial"
+msgstr "Formează din nou"
+
+#: ../src/empathy-streamed-media-window.ui.h:19
+msgid "V_ideo"
+msgstr "V_ideo"
+
+#: ../src/empathy-streamed-media-window.ui.h:21
+msgid "Video Off"
+msgstr "Video dezactivat"
+
+#: ../src/empathy-streamed-media-window.ui.h:22
+msgid "Video On"
+msgstr "Video activat"
+
+#: ../src/empathy-streamed-media-window.ui.h:23
+msgid "Video Preview"
+msgstr "Previzualizare video"
+
+#: ../src/empathy-map-view.c:448
 msgid "Contact Map View"
 msgstr "Vizualizare hartă de contacte"
 
-#: ../src/empathy-debug-window.c:1218
+#: ../src/empathy-debug-window.c:1228
 msgid "Save"
 msgstr "Salvează"
 
-#: ../src/empathy-debug-window.c:1394
+#: ../src/empathy-debug-window.c:1435
 msgid "Debug Window"
 msgstr "Fereastră de depanare"
 
-#: ../src/empathy-debug-window.c:1476
+#: ../src/empathy-debug-window.c:1517
 msgid "Pause"
 msgstr "Pauză"
 
-#: ../src/empathy-debug-window.c:1488
+#: ../src/empathy-debug-window.c:1529
 msgid "Level "
 msgstr "Nivel "
 
-#: ../src/empathy-debug-window.c:1508
+#: ../src/empathy-debug-window.c:1549
 msgid "Debug"
 msgstr "Depanare"
 
-#: ../src/empathy-debug-window.c:1514
+#: ../src/empathy-debug-window.c:1555
 msgid "Info"
 msgstr "Informativ"
 
-#: ../src/empathy-debug-window.c:1520 ../src/empathy-debug-window.c:1569
+#: ../src/empathy-debug-window.c:1561 ../src/empathy-debug-window.c:1610
 msgid "Message"
 msgstr "Mesaj"
 
-#: ../src/empathy-debug-window.c:1526
+#: ../src/empathy-debug-window.c:1567
 msgid "Warning"
 msgstr "Avertisment"
 
-#: ../src/empathy-debug-window.c:1532
+#: ../src/empathy-debug-window.c:1573
 msgid "Critical"
 msgstr "Critic"
 
-#: ../src/empathy-debug-window.c:1538
+#: ../src/empathy-debug-window.c:1579
 msgid "Error"
 msgstr "Eroare"
 
-#: ../src/empathy-debug-window.c:1557
+#: ../src/empathy-debug-window.c:1598
 msgid "Time"
 msgstr "Timp"
 
-#: ../src/empathy-debug-window.c:1560
+#: ../src/empathy-debug-window.c:1601
 msgid "Domain"
 msgstr "Domeniu"
 
-#: ../src/empathy-debug-window.c:1562
+#: ../src/empathy-debug-window.c:1603
 msgid "Category"
 msgstr "Categorie"
 
-#: ../src/empathy-debug-window.c:1564
+#: ../src/empathy-debug-window.c:1605
 msgid "Level"
 msgstr "Nivel"
 
-#: ../src/empathy-debug-window.c:1601
+#: ../src/empathy-debug-window.c:1642
 msgid ""
 "The selected connection manager does not support the remote debugging "
 "extension."
@@ -4049,22 +4662,22 @@ msgstr ""
 "Administratorul de conexiuni ales nu suportă extensia de depanare la "
 "distanță."
 
-#: ../src/empathy-invite-participant-dialog.c:34
-#: ../src/empathy-invite-participant-dialog.c:48
+#: ../src/empathy-invite-participant-dialog.c:197
+#: ../src/empathy-invite-participant-dialog.c:225
 msgid "Invite Participant"
-msgstr "Invită participant"
+msgstr "Invită un participant"
 
-#: ../src/empathy-invite-participant-dialog.c:35
+#: ../src/empathy-invite-participant-dialog.c:198
 msgid "Choose a contact to invite into the conversation:"
 msgstr "Alegeți contactul care va fi invitat în conversație:"
 
-#: ../src/empathy-invite-participant-dialog.c:45
+#: ../src/empathy-invite-participant-dialog.c:221
 msgid "Invite"
 msgstr "Invită"
 
 #: ../src/empathy-accounts.c:183
 msgid "Don't display any dialogs; do any work (eg, importing) and exit"
-msgstr "Nu afișa niciun dialog; fă orice acțiune (ex: importare) și ieși"
+msgstr "Nu afișa niciun dialog; fă orice acțiune (de ex: importare) și ieși"
 
 #: ../src/empathy-accounts.c:187
 msgid ""
@@ -4075,21 +4688,33 @@ msgstr ""
 
 #: ../src/empathy-accounts.c:191
 msgid "Initially select given account (eg, gabble/jabber/foo_40example_2eorg0)"
-msgstr "Alege inițial contul dat (ex: gabble/jabber/foo_40example_2eorg0)"
+msgstr "Alege inițial contul dat (de ex: gabble/jabber/foo_40example_2eorg0)"
 
 #: ../src/empathy-accounts.c:193
 msgid "<account-id>"
 msgstr "<account-id>"
 
-#: ../src/empathy-accounts.c:198
+#: ../src/empathy-accounts.c:196
+msgid "Show account assistant"
+msgstr "Arată asistentul de contacte"
+
+#: ../src/empathy-accounts.c:202
 msgid "- Empathy Accounts"
 msgstr "- Conturi Empathy"
 
-#: ../src/empathy-accounts.c:237
+#: ../src/empathy-accounts.c:238
 msgid "Empathy Accounts"
 msgstr "Conturi Empathy"
 
-#: ../src/empathy-debugger.c:66
+#: ../src/empathy-debugger.c:69
+msgid "Show a particular service"
+msgstr "Afișează un anumit serviciu"
+
+#: ../src/empathy-debugger.c:74
+msgid "- Empathy Debugger"
+msgstr "- Depanator Empathy"
+
+#: ../src/empathy-debugger.c:113
 msgid "Empathy Debugger"
 msgstr "Depanator Empathy"
 
@@ -4097,38 +4722,154 @@ msgstr "Depanator Empathy"
 msgid "- Empathy Chat Client"
 msgstr "- Client de chat Empathy"
 
-#: ../src/empathy-notifications-approver.c:184
+#: ../src/empathy-notifications-approver.c:190
 msgid "Respond"
 msgstr "Răspunde"
 
-#: ../src/empathy-notifications-approver.c:190
+#: ../src/empathy-notifications-approver.c:204
+#: ../src/empathy-call-window.c:1565
 msgid "Reject"
 msgstr "Respinge"
 
-#: ../src/empathy-notifications-approver.c:194
+#: ../src/empathy-notifications-approver.c:209
+#: ../src/empathy-notifications-approver.c:214
+#: ../src/empathy-call-window.c:1566
 msgid "Answer"
 msgstr "Răspunde"
 
-#: ../src/empathy-notifications-approver.c:201
-#: ../src/empathy-notifications-approver.c:211
+#: ../src/empathy-notifications-approver.c:214
+msgid "Answer with video"
+msgstr "Răspunde cu imagine video"
+
+#: ../src/empathy-notifications-approver.c:222
+#: ../src/empathy-notifications-approver.c:232
 msgid "Decline"
 msgstr "Refuză"
 
-#: ../src/empathy-notifications-approver.c:205
-#: ../src/empathy-notifications-approver.c:216
+#: ../src/empathy-notifications-approver.c:226
+#: ../src/empathy-notifications-approver.c:237
 msgid "Accept"
 msgstr "Acceptă"
 
-#: ../src/empathy-call-observer.c:130
-#, c-format
-msgid "Missed call from %s"
-msgstr "Apel pierdut de la %s"
+#. translators: the 'Provide' button is displayed in a notification
+#. * bubble when Empathy is asking for an account password; clicking on it
+#. * brings the password popup.
+#: ../src/empathy-notifications-approver.c:247
+msgid "Provide"
+msgstr "Previzualizare"
 
-#: ../src/empathy-call-observer.c:133
+#: ../src/empathy-call-observer.c:134
 #, c-format
 msgid "%s just tried to call you, but you were in another call."
 msgstr "%s a încercat să vă sune, dar erați deja în alt apel."
 
+#. Translators: this is an "Info" label. It should be as short
+#. * as possible.
+#: ../src/empathy-call-window.c:1172 ../src/empathy-call-window.c:1195
+msgid "i"
+msgstr "i"
+
+#: ../src/empathy-call-window.c:2929
+msgid "On hold"
+msgstr "În așteptare"
+
+#: ../src/empathy-call-window.c:2932
+msgid "Mute"
+msgstr "Mut"
+
+#: ../src/empathy-call-window.c:2934
+msgid "Duration"
+msgstr "Durată"
+
+#. Translators: 'status - minutes:seconds' the caller has been connected
+#: ../src/empathy-call-window.c:2937
+#, c-format
+msgid "%s — %d:%02dm"
+msgstr "%s — %d:%02dm"
+
+#: ../src/empathy-call-window.c:3207
+#, c-format
+msgid "Your current balance is %s."
+msgstr "Soldul curent este %s."
+
+#: ../src/empathy-call-window.c:3211
+msgid "Sorry, you don’t have enough credit for that call."
+msgstr "Ne pare rău, nu aveți sold suficient pentru a efectua acest apel."
+
+#: ../src/empathy-call-window.c:3213
+msgid "Top Up"
+msgstr "Încarcă"
+
+#: ../libempathy-gtk/empathy-search-bar.c:243
+msgid "_Match case"
+msgstr "_Majuscule semnificative"
+
+#~ msgid "Empathy has migrated butterfly logs"
+#~ msgstr "Empathy a migrat înregistrările butterfly"
+
+#~ msgid "Whether Empathy has migrated butterfly logs."
+#~ msgstr "Dacă Empathy a migrat înregistrările butterfly."
+
+#~ msgid "All"
+#~ msgstr "Toate"
+
+#~ msgid "_Enabled"
+#~ msgstr "_Activat"
+
+#~ msgid "Ungrouped"
+#~ msgstr "Negrupate"
+
+#~ msgid "Favorite People"
+#~ msgstr "Persoane favorite"
+
+#~ msgid "Select a contact"
+#~ msgstr "Alege un contact"
+
+#~ msgid "Date"
+#~ msgstr "Dată"
+
+#~ msgid "Conversations"
+#~ msgstr "Conversații"
+
+#~ msgid "Find Next"
+#~ msgstr "Caută următorul"
+
+#~ msgid "Find Previous"
+#~ msgstr "Caută precedentul"
+
+#~ msgid "Previous Conversations"
+#~ msgstr "Conversații anterioare"
+
+#~ msgid "_For:"
+#~ msgstr "_După:"
+
+#~ msgid "Contact ID:"
+#~ msgstr "ID contact:"
+
+#~ msgid "C_hat"
+#~ msgstr "_Discută"
+
+#~ msgid "C_all"
+#~ msgstr "_Apelează"
+
+#~ msgid "Set your presence and current status"
+#~ msgstr "Definiți preferințele și mesajul de stare curent"
+
+#~ msgid "Enter Custom Message"
+#~ msgstr "Introduceți mesajul personalizat"
+
+#~ msgid "Save _New Status Message"
+#~ msgstr "Salvează mesaj de stare _nou"
+
+#~ msgid "Saved Status Messages"
+#~ msgstr "Mesaje de stare salvate"
+
+#~ msgid "The selected contact cannot receive files."
+#~ msgstr "Contactul selectat nu poate primi fișiere."
+
+#~ msgid "Show and edit accounts"
+#~ msgstr "Arată și modifică conturile"
+
 #~ msgid "%s is now offline."
 #~ msgstr "%s s-a deconectat."
 
index 4fde21ab776082deb4cee2bfba9cfedd0a8d1d47..7a69de31b0c0926b1b62f82cd80ee2ff6b74df2c 100644 (file)
--- a/po/sl.po
+++ b/po/sl.po
@@ -10,8 +10,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: empathy master\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=empathy&keywords=I18N+L10N&component=General\n"
-"POT-Creation-Date: 2011-10-25 14:00+0000\n"
-"PO-Revision-Date: 2011-10-25 21:14+0100\n"
+"POT-Creation-Date: 2011-11-25 16:24+0000\n"
+"PO-Revision-Date: 2011-11-25 21:04+0100\n"
 "Last-Translator: Matej Urbančič <mateju@svn.gnome.org>\n"
 "Language-Team: Slovenščina <gnome-si@googlegroups.com>\n"
 "Language: \n"
@@ -44,406 +44,398 @@ msgid "Always open a separate chat window for new chats."
 msgstr "Za nov klepet vedno odpri ločeno klepetalno okno."
 
 #: ../data/org.gnome.Empathy.gschema.xml.in.h:2
-msgid "Call volume"
-msgstr "Glasnost klica"
-
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:3
-msgid "Call volume, as a percentage."
-msgstr "Glasnost klica kot odstotek."
-
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:4
 msgid "Camera device"
 msgstr "Naprava kamere"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:5
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:3
 msgid "Camera position"
 msgstr "Položaj kamere"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:6
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:4
 msgid "Character to add after nickname when using nick completion (tab) in group chat."
 msgstr "Znak, ki naj bo dodan vzdevku ob uporabi možnosti dopolnjevanja vzdevkov (zavihek) v skupinskem klepetu."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:7
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:5
 msgid "Chat window theme"
 msgstr "Tema klepetalnega okna"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:8
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:6
 msgid "Chat window theme variant"
 msgstr "Različica teme klepetalnega okna"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:9
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:7
 msgid "Comma-separated list of spell checker languages to use (e.g. \"en, fr, nl\")."
 msgstr "Z vejico ločen seznam uporabljenih črkovalnikov (primer: \"sl, en, fr\")."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:10
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:8
 msgid "Compact contact list"
 msgstr "Skrči seznam stikov"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:11
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:9
 msgid "Connection managers should be used"
 msgstr "Uporabljen naj bo upravljalnik omrežja"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:12
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:10
 msgid "Contact list sort criterion"
 msgstr "Kriterij razvrščanja seznama stikov"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:13
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:11
 msgid "D-Bus object path of the last account selected to join a room."
 msgstr "Pot predmeta vodila D-Bus zadnjega izbranega računa pri pridruženju klepetalnici."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:14
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:12
 msgid "Default camera device to use in video calls, e.g. /dev/video0."
 msgstr "Privzeta naprava kamere za uporabo pri video klicih, na primer /dev/video0."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:15
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:13
 msgid "Default directory to select an avatar image from"
 msgstr "Privzeta mapa slik za izbor podobe"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:16
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:14
 msgid "Disable popup notifications when away"
 msgstr "Onemogoči pojavna obvestila ob odsotnosti"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:17
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:15
 msgid "Disable sounds when away"
 msgstr "Onemogoči zvok ob odsotnosti"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:18
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:16
 msgid "Display incoming events in the status area"
 msgstr "Prikaz prihajajočih dogodkov v vrstici stanja."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:19
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:17
 msgid "Display incoming events in the status area. If false, present them to the user immediately."
 msgstr "Prikaz prihajajočih dogodkov v vrstici stanja. V primeru, da možnost ni izbrana, bodo prikazane takoj."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:20
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:18
 msgid "Echo cancellation support"
 msgstr "Podpora odpravljanju odmevov"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:21
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:19
 msgid "Empathy can publish the user's location"
 msgstr "Program Empathy lahko objavi mesto nahajanja uporabnika"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:22
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:20
 msgid "Empathy can use the GPS to guess the location"
 msgstr "Program Empathy lahko uporabi GPS za ugotavljanje mesta nahajanja"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:23
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:21
 msgid "Empathy can use the cellular network to guess the location"
 msgstr "Program Empathy lahko uporabi mobilni telefon za ugotavljanje mesta nahajanja"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:24
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:22
 msgid "Empathy can use the network to guess the location"
 msgstr "Program Empathy lahko uporabi omrežje za ugotavljanje mesta nahajanja"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:25
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:23
 msgid "Empathy default download folder"
 msgstr "Privzeta mapa za prenos datotek"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:26
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:24
 msgid "Empathy should auto-away when idle"
 msgstr "Ob nedejavnosti samodejno preklopi na stanje odsotnosti"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:27
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:25
 msgid "Empathy should auto-connect on startup"
 msgstr "Program Empathy naj se samodejno poveže ob zagonu"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:28
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:26
 msgid "Empathy should reduce the location's accuracy"
 msgstr "Program Empathy naj zmanjša natančnost določevanja nahajanja"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:29
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:27
 msgid "Empathy should use the avatar of the contact as the chat window icon"
 msgstr "Program naj uporabi podobo stika kot ikono klepetalnega okna"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:30
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:28
 msgid "Enable WebKit Developer Tools"
 msgstr "Omogoči razvojna orodja WebKit"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:31
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:29
 msgid "Enable popup notifications for new messages"
 msgstr "Omogoči pojavna obvestila ob novih sporočilih"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:32
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:30
 msgid "Enable spell checker"
 msgstr "Omogoči črkovalnik"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:33
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:31
 msgid "Hide main window"
 msgstr "Skrij glavno okno"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:34
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:32
 msgid "Hide the main window."
 msgstr "Skrivanje glavnega okna."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:35
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:33
 msgid "Last account selected in Join Room dialog"
 msgstr "Zadnji izbran račun v pogovornem oknu pridruženja klepetalnici"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:36
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:34
 msgid "Nick completed character"
 msgstr "Znak na koncu vzdevka"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:37
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:35
 msgid "Open new chats in separate windows"
 msgstr "Nov klepet naj se odpre v ločenem oknu"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:38
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:36
 msgid "Path of the Adium theme to use"
 msgstr "Pot do želene teme Adium "
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:39
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:37
 msgid "Path of the Adium theme to use if the theme used for chat is Adium."
 msgstr "Pot do želene teme Adium, kadar je ta določena za klepet."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:40
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:38
 msgid "Play a sound for incoming messages"
 msgstr "Predvajaj zvok ob prejetju novih sporočil"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:41
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:39
 msgid "Play a sound for new conversations"
 msgstr "Predvajaj zvok ob novih pogovorih"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:42
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:40
 msgid "Play a sound for outgoing messages"
 msgstr "Predvajaj zvok ob pošiljanju sporočil"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:43
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:41
 msgid "Play a sound when a contact logs in"
 msgstr "Predvajaj zvok ob prijavi stika"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:44
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:42
 msgid "Play a sound when a contact logs out"
 msgstr "Predvajaj zvok ob odjavi stika"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:45
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:43
 msgid "Play a sound when we log in"
 msgstr "Predvajaj zvok ob prijavi"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:46
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:44
 msgid "Play a sound when we log out"
 msgstr "Predvajaj zvok ob odjavi"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:47
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:45
 msgid "Pop up notifications if the chat isn't focused"
 msgstr "Pokaži pojavna obvestila, ko klepetalno okno ni v žarišču."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:48
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:46
 msgid "Pop up notifications when a contact logs in"
 msgstr "Pokaži pojavna obvestila ob prijavi stikov"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:49
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:47
 msgid "Pop up notifications when a contact logs out"
 msgstr "Pokaži pojavna obvestila ob odjavi stikov"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:50
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:48
 msgid "Position the camera preview should be during a call."
 msgstr "Položaj predogleda kamere med klicem."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:51
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:49
 msgid "Show Balance in contact list"
 msgstr "Pokaži stanje na računu v seznamu stikov"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:52
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:50
 msgid "Show avatars"
 msgstr "Pokaži podobe"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:53
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:51
 msgid "Show contact list in rooms"
 msgstr "Pokaži seznam stikov v klepetalnicah"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:54
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:52
 msgid "Show hint about closing the main window"
 msgstr "Pokaži namig ob zapiranju glavnega okna"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:55
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:53
 msgid "Show offline contacts"
 msgstr "Pokaži tudi nepovezane stike"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:56
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:54
 msgid "Show protocols"
 msgstr "Pokaži protokole"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:57
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:55
 msgid "Spell checking languages"
 msgstr "Jeziki za črkovanje"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:58
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:56
 msgid "The default folder to save file transfers in."
 msgstr "Privzeta mapa za shranjevanje prejetih datotek."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:59
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:57
 msgid "The last directory that an avatar image was chosen from."
 msgstr "Zadnja mapa iz katere je bila izbrana podoba."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:60
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:58
 msgid "The position for the chat window side pane"
 msgstr "Položaj stranskega pladnja v klepetalnem oknu"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:61
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:59
 msgid "The stored position (in pixels) of the chat window side pane."
 msgstr "Shranjen položaj (v točkah) stranskega pladnja v klepetalnem oknu."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:62
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:60
 msgid "The theme that is used to display the conversation in chat windows."
 msgstr "Tema uporabljena za prikaz pogovorov v klepetalnih oknih."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:63
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:61
 msgid "The theme variant that is used to display the conversation in chat windows."
 msgstr "Različica teme, ki je uporabljena za prikaz pogovorov v klepetalnih oknih."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:64
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:62
 msgid "Use graphical smileys"
 msgstr "Uporabi slikovne smeške"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:65
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:63
 msgid "Use notification sounds"
 msgstr "Uporabi zvoke obvestil"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:66
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:64
 msgid "Use theme for chat rooms"
 msgstr "Uporabi temo za klepetalnice"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:67
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:65
 msgid "Whether Empathy can publish the user's location to their contacts."
 msgstr "Ali naj program Empathy objavlja mesta nahajanja uporabnika njegovim stikom."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:68
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:66
 msgid "Whether Empathy can use the GPS to guess the location."
 msgstr "Ali naj program Empathy za pridobivanje mesta nahajanja uporablja GPS."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:69
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:67
 msgid "Whether Empathy can use the cellular network to guess the location."
 msgstr "Ali naj Empathy za pridobivanje mesta nahajanja uporablja podatke mobilnega omrežja."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:70
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:68
 msgid "Whether Empathy can use the network to guess the location."
 msgstr "Ali naj Empathy za pridobivanje mesta nahajanja uporablja omrežje."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:71
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:69
 msgid "Whether Empathy should automatically log into your accounts on startup."
 msgstr "Ali naj se ob zagonu program Empathy samodejno prijavi v vaše račune."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:72
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:70
 msgid "Whether Empathy should go into away mode automatically if the user is idle."
 msgstr "Ali naj ob nedejavnosti program Empathy samodejno vzpostavi stanje odsotnosti."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:73
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:71
 msgid "Whether Empathy should reduce the location's accuracy for privacy reasons."
 msgstr "Ali naj program Empathy zaradi zasebnosti zmanjšuje natančnost položaja."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:74
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:72
 msgid "Whether Empathy should use the avatar of the contact as the chat window icon."
 msgstr "Ali naj program Empathy uporablja podobe stikov za ikone klepetalnih oken."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:75
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:73
 msgid "Whether WebKit developer tools, such as the Web Inspector, should be enabled."
 msgstr "Ali naj bodo vključena razvijalna orodja WebKit kot je na primer Web Inspector."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:76
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:74
 msgid "Whether connectivity managers should be used to automatically disconnect/reconnect."
 msgstr "Ali naj upravljalnik omrežja samodejno vzpostavi in prekine povezavo."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:77
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:75
 msgid "Whether to check words typed against the languages you want to check with."
 msgstr "Ali naj se preverja črkovanje besed v želenih jezikih."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:78
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:76
 msgid "Whether to convert smileys into graphical images in conversations."
 msgstr "Ali naj se pri pogovorih smeški pretvorijo v sličice."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:79
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:77
 msgid "Whether to enable Pulseaudio's echo cancellation filter."
 msgstr "Ali naj se omogoči filter odpravljanja odmevov Pulseaudio."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:80
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:78
 msgid "Whether to play a sound to notify of contacts logging into the network."
 msgstr "Ali naj se predvaja zvok ob prijavi stika v omrežje."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:81
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:79
 msgid "Whether to play a sound to notify of contacts logging out of the network."
 msgstr "Ali naj se predvaja zvok ob odjavi stika iz omrežja."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:82
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:80
 msgid "Whether to play a sound to notify of events."
 msgstr "Ali naj se predvaja zvok ob dogodkih."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:83
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:81
 msgid "Whether to play a sound to notify of incoming messages."
 msgstr "Ali naj se predvaja zvok ob prejetju novega sporočila."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:84
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:82
 msgid "Whether to play a sound to notify of new conversations."
 msgstr "Ali naj se predvaja zvok ob novih pogovorih."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:85
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:83
 msgid "Whether to play a sound to notify of outgoing messages."
 msgstr "Ali naj se predvaja zvok ob pošiljanju sporočil."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:86
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:84
 msgid "Whether to play a sound when logging into a network."
 msgstr "Ali naj se predvaja zvok ob prijavi v omrežje."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:87
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:85
 msgid "Whether to play a sound when logging out of a network."
 msgstr "Ali naj se predvaja zvok ob odjavi iz omrežja."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:88
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:86
 msgid "Whether to play sound notifications when away or busy."
 msgstr "Ali naj se predvaja zvok ob odsotnosti in zaposlenosti."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:89
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:87
 msgid "Whether to show a popup notification when a contact goes offline."
 msgstr "Ali naj se pojavi obvestilo, ko stik izklopi povezavo."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:90
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:88
 msgid "Whether to show a popup notification when a contact goes online."
 msgstr "Ali naj se pojavi obvestilo ob vzpostavitvi povezave stika."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:91
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:89
 msgid "Whether to show a popup notification when receiving a new message even if the chat is already opened, but not focused."
 msgstr "Ali naj se pojavi obvestilo ob prejetju novega sporočila tudi, kadar je klepetalno okno že odprto, vendar ni v žarišču."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:92
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:90
 msgid "Whether to show a popup notification when receiving a new message."
 msgstr "Ali naj se pojavi obvestilo ob prejetju novega sporočila."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:93
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:91
 msgid "Whether to show account balances in the contact list."
 msgstr "Ali naj se v seznamu stikov pokaže tudi stanje na računu."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:94
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:92
 msgid "Whether to show avatars for contacts in the contact list and chat windows."
 msgstr "Ali naj bodo podobe stikov prikazane v seznamih in klepetalnih oknih."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:95
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:93
 msgid "Whether to show contacts that are offline in the contact list."
 msgstr "Ali naj bodo na seznamu stikov prikazani tudi nepovezani stiki."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:96
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:94
 msgid "Whether to show popup notifications when away or busy."
 msgstr "Ali naj bodo pojavna obvestila prikazana ob odsotnosti ali zaposlenosti."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:97
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:95
 msgid "Whether to show protocols for contacts in the contact list."
 msgstr "Ali naj bodo v seznamih stikov in klepetalnih oknih prikazani protokoli stikov."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:98
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:96
 msgid "Whether to show the contact list in chat rooms."
 msgstr "Ali naj bo v klepetalnicah prikazan seznam stikov."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:99
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:97
 msgid "Whether to show the contact list in compact mode."
 msgstr "Ali naj bo v skrčenem pogledu prikazan seznam stikov."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:100
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:98
 msgid "Whether to show the message dialog about closing the main window with the 'x' button in the title bar."
 msgstr "Ali naj bo pogovorno okno sporočila o zapiranju glavnega okna prikazano z gumbom 'x' v nazivni vrstici."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:101
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:99
 msgid "Whether to use the theme for chat rooms."
 msgstr "Ali naj se za klepetalnice uporablja tema."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:102
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:100
 msgid "Which criterion to use when sorting the contact list. Default is to sort by the contact's name with the value \"name\". A value of \"state\" will sort the contact list by state."
 msgstr "Kateri kriterij naj se uporabi za razvrščanje seznama stikov. Privzeto je razvrščanje po imenu stika z vrednostjo \"ime\". Vrednost \"stanje\" pa razvrsti seznam glede na stanje stikov."
 
@@ -453,7 +445,7 @@ msgstr "Upravljanje s sporočanjem in računi VoIP"
 
 #. Tweak the dialog
 #: ../data/empathy-accounts.desktop.in.in.h:2
-#: ../src/empathy-accounts-dialog.c:2324
+#: ../src/empathy-accounts-dialog.c:2312
 msgid "Messaging and VoIP Accounts"
 msgstr "Sporočanje in računi VoIP"
 
@@ -744,7 +736,7 @@ msgstr[3] "Pred %d meseci"
 msgid "in the future"
 msgstr "v prihodnosti"
 
-#: ../libempathy-gtk/empathy-account-chooser.c:540
+#: ../libempathy-gtk/empathy-account-chooser.c:688
 msgid "All accounts"
 msgstr "Vsi računi"
 
@@ -767,58 +759,58 @@ msgstr "Strežnik"
 msgid "Port"
 msgstr "Vrata"
 
-#: ../libempathy-gtk/empathy-account-widget.c:769
-#: ../libempathy-gtk/empathy-account-widget.c:826
+#: ../libempathy-gtk/empathy-account-widget.c:776
+#: ../libempathy-gtk/empathy-account-widget.c:828
 #, c-format
 msgid "%s:"
 msgstr "%s:"
 
-#: ../libempathy-gtk/empathy-account-widget.c:1192
+#: ../libempathy-gtk/empathy-account-widget.c:1182
 msgid "My Web Accounts"
 msgstr "Moji spletni računi"
 
-#: ../libempathy-gtk/empathy-account-widget.c:1209
+#: ../libempathy-gtk/empathy-account-widget.c:1199
 #, c-format
 msgid "The account %s is edited via %s."
 msgstr "Račun %s se ureja preko %s."
 
-#: ../libempathy-gtk/empathy-account-widget.c:1215
+#: ../libempathy-gtk/empathy-account-widget.c:1205
 #, c-format
 msgid "The account %s cannot be edited in Empathy."
 msgstr "Računa %s s programom Empathy ni mogoče urejati."
 
-#: ../libempathy-gtk/empathy-account-widget.c:1234
+#: ../libempathy-gtk/empathy-account-widget.c:1224
 msgid "Launch My Web Accounts"
 msgstr "Zaženi spletne račune"
 
 #. general handler
-#: ../libempathy-gtk/empathy-account-widget.c:1242
+#: ../libempathy-gtk/empathy-account-widget.c:1232
 #, c-format
 msgid "Edit %s"
 msgstr "Uredi %s"
 
-#: ../libempathy-gtk/empathy-account-widget.c:1592
+#: ../libempathy-gtk/empathy-account-widget.c:1582
 #: ../libempathy-gtk/empathy-account-widget-irc.ui.h:11
 msgid "Username:"
 msgstr "Uporabniško ime:"
 
-#: ../libempathy-gtk/empathy-account-widget.c:1910
+#: ../libempathy-gtk/empathy-account-widget.c:1900
 msgid "A_pply"
 msgstr "_Uveljavi"
 
-#: ../libempathy-gtk/empathy-account-widget.c:1940
+#: ../libempathy-gtk/empathy-account-widget.c:1930
 msgid "L_og in"
 msgstr "_Prijava"
 
-#: ../libempathy-gtk/empathy-account-widget.c:2014
+#: ../libempathy-gtk/empathy-account-widget.c:2004
 msgid "This account already exists on the server"
 msgstr "Ta račun na strežniku že obstaja"
 
-#: ../libempathy-gtk/empathy-account-widget.c:2017
+#: ../libempathy-gtk/empathy-account-widget.c:2007
 msgid "Create a new account on the server"
 msgstr "Ustvari nov račun na strežniku"
 
-#: ../libempathy-gtk/empathy-account-widget.c:2209
+#: ../libempathy-gtk/empathy-account-widget.c:2201
 msgid "Ca_ncel"
 msgstr "_Prekliči"
 
@@ -827,19 +819,19 @@ msgstr "_Prekliči"
 #. * like: "MyUserName on freenode".
 #. * You should reverse the order of these arguments if the
 #. * server should come before the login id in your locale.
-#: ../libempathy-gtk/empathy-account-widget.c:2487
+#: ../libempathy-gtk/empathy-account-widget.c:2479
 #, c-format
 msgid "%1$s on %2$s"
 msgstr "%1$s na %2$s"
 
 #. To translators: The parameter is the protocol name. The resulting
 #. * string will be something like: "Jabber Account"
-#: ../libempathy-gtk/empathy-account-widget.c:2513
+#: ../libempathy-gtk/empathy-account-widget.c:2505
 #, c-format
 msgid "%s Account"
 msgstr "%s račun"
 
-#: ../libempathy-gtk/empathy-account-widget.c:2517
+#: ../libempathy-gtk/empathy-account-widget.c:2509
 msgid "New account"
 msgstr "Nov račun"
 
@@ -887,7 +879,7 @@ msgstr "Zapomni si geslo"
 #: ../libempathy-gtk/empathy-account-widget-msn.ui.h:6
 #: ../libempathy-gtk/empathy-account-widget-sip.ui.h:17
 #: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:6
-#: ../libempathy-gtk/empathy-password-dialog.c:311
+#: ../libempathy-gtk/empathy-base-password-dialog.c:261
 msgid "Remember password"
 msgstr "Zapomni si geslo"
 
@@ -1206,7 +1198,7 @@ msgid "STUN Server:"
 msgstr "Strežnik STUN:"
 
 #: ../libempathy-gtk/empathy-account-widget-sip.ui.h:19
-#: ../libempathy-gtk/empathy-contactinfo-utils.c:112
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:114
 msgid "Server:"
 msgstr "Strežnik:"
 
@@ -1480,20 +1472,20 @@ msgstr "Vstavi smeška"
 
 #. send button
 #: ../libempathy-gtk/empathy-chat.c:2319
-#: ../libempathy-gtk/empathy-ui-utils.c:1843
+#: ../libempathy-gtk/empathy-ui-utils.c:1867
 msgid "_Send"
 msgstr "_Pošlji"
 
 #. Spelling suggestions
-#: ../libempathy-gtk/empathy-chat.c:2373
+#: ../libempathy-gtk/empathy-chat.c:2376
 msgid "_Spelling Suggestions"
 msgstr "Predlogi čr_kovalnika"
 
-#: ../libempathy-gtk/empathy-chat.c:2462
+#: ../libempathy-gtk/empathy-chat.c:2465
 msgid "Failed to retrieve recent logs"
 msgstr "Napaka med pridobivanjem nedavnih dnevnikov"
 
-#: ../libempathy-gtk/empathy-chat.c:2599
+#: ../libempathy-gtk/empathy-chat.c:2602
 #, c-format
 msgid "%s has disconnected"
 msgstr "%s je prekinil povezavo"
@@ -1501,12 +1493,12 @@ msgstr "%s je prekinil povezavo"
 #. translators: reverse the order of these arguments
 #. * if the kicked should come before the kicker in your locale.
 #.
-#: ../libempathy-gtk/empathy-chat.c:2606
+#: ../libempathy-gtk/empathy-chat.c:2609
 #, c-format
 msgid "%1$s was kicked by %2$s"
 msgstr "%2$s je izgnal %1$s"
 
-#: ../libempathy-gtk/empathy-chat.c:2609
+#: ../libempathy-gtk/empathy-chat.c:2612
 #, c-format
 msgid "%s was kicked"
 msgstr "%s je bil izgnan"
@@ -1514,17 +1506,17 @@ msgstr "%s je bil izgnan"
 #. translators: reverse the order of these arguments
 #. * if the banned should come before the banner in your locale.
 #.
-#: ../libempathy-gtk/empathy-chat.c:2617
+#: ../libempathy-gtk/empathy-chat.c:2620
 #, c-format
 msgid "%1$s was banned by %2$s"
 msgstr "%2$s je izobčil %1$s"
 
-#: ../libempathy-gtk/empathy-chat.c:2620
+#: ../libempathy-gtk/empathy-chat.c:2623
 #, c-format
 msgid "%s was banned"
 msgstr "%s je izobčen"
 
-#: ../libempathy-gtk/empathy-chat.c:2624
+#: ../libempathy-gtk/empathy-chat.c:2627
 #, c-format
 msgid "%s has left the room"
 msgstr "%s je zapustil klepetalnico"
@@ -1534,17 +1526,17 @@ msgstr "%s je zapustil klepetalnico"
 #. * given by the user living the room. If this poses a problem,
 #. * please let us know. :-)
 #.
-#: ../libempathy-gtk/empathy-chat.c:2633
+#: ../libempathy-gtk/empathy-chat.c:2636
 #, c-format
 msgid " (%s)"
 msgstr " (%s)"
 
-#: ../libempathy-gtk/empathy-chat.c:2658
+#: ../libempathy-gtk/empathy-chat.c:2661
 #, c-format
 msgid "%s has joined the room"
 msgstr "%s je vstopil v klepetalnico"
 
-#: ../libempathy-gtk/empathy-chat.c:2683
+#: ../libempathy-gtk/empathy-chat.c:2686
 #, c-format
 msgid "%s is now known as %s"
 msgstr "%s je preimenovan v %s"
@@ -1552,90 +1544,91 @@ msgstr "%s je preimenovan v %s"
 #. We don't know if the incoming call has been accepted or not, so we
 #. * assume it hasn't and if it has, we'll set the proper status when
 #. * we get the new handler.
-#: ../libempathy-gtk/empathy-chat.c:2836
-#: ../src/empathy-streamed-media-window.c:1896
+#: ../libempathy-gtk/empathy-chat.c:2847
+#: ../src/empathy-streamed-media-window.c:1889
 #: ../src/empathy-event-manager.c:1260
-#: ../src/empathy-call-window.c:1536
-#: ../src/empathy-call-window.c:1586
-#: ../src/empathy-call-window.c:2632
+#: ../src/empathy-call-window.c:1538
+#: ../src/empathy-call-window.c:1588
+#: ../src/empathy-call-window.c:2631
 msgid "Disconnected"
 msgstr "Prekinjena povezava"
 
 #. Add message
-#: ../libempathy-gtk/empathy-chat.c:3482
+#: ../libempathy-gtk/empathy-chat.c:3493
 msgid "Would you like to store this password?"
 msgstr "Ali želite shraniti geslo?"
 
-#: ../libempathy-gtk/empathy-chat.c:3488
+#: ../libempathy-gtk/empathy-chat.c:3499
 msgid "Remember"
 msgstr "Zapomni si"
 
-#: ../libempathy-gtk/empathy-chat.c:3498
+#: ../libempathy-gtk/empathy-chat.c:3509
 msgid "Not now"
 msgstr "Ne zdaj"
 
-#: ../libempathy-gtk/empathy-chat.c:3542
+#: ../libempathy-gtk/empathy-chat.c:3553
+#: ../libempathy-gtk/empathy-bad-password-dialog.c:142
 msgid "Retry"
 msgstr "Poskusi znova"
 
-#: ../libempathy-gtk/empathy-chat.c:3546
+#: ../libempathy-gtk/empathy-chat.c:3557
 msgid "Wrong password; please try again:"
 msgstr "Napačno geslo; poskusite znova:"
 
 #. Add message
-#: ../libempathy-gtk/empathy-chat.c:3676
+#: ../libempathy-gtk/empathy-chat.c:3687
 msgid "This room is protected by a password:"
 msgstr "Klepetalnica je zaščitena z geslom:"
 
-#: ../libempathy-gtk/empathy-chat.c:3703
+#: ../libempathy-gtk/empathy-chat.c:3714
 msgid "Join"
 msgstr "Pridruži se"
 
-#: ../libempathy-gtk/empathy-chat.c:3891
+#: ../libempathy-gtk/empathy-chat.c:3902
 #: ../src/empathy-event-manager.c:1281
 msgid "Connected"
 msgstr "Povezano"
 
-#: ../libempathy-gtk/empathy-chat.c:3946
+#: ../libempathy-gtk/empathy-chat.c:3957
 msgid "Conversation"
 msgstr "Pogovor"
 
 #. Translators: this string is a something like
 #. * "Escher Cat (SMS)"
-#: ../libempathy-gtk/empathy-chat.c:3951
+#: ../libempathy-gtk/empathy-chat.c:3962
 #, c-format
 msgid "%s (SMS)"
 msgstr "%s (SMS)"
 
-#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:430
+#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:265
 msgid "Unknown or invalid identifier"
 msgstr "Neznano ali neveljavno določilo"
 
-#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:432
+#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:267
 msgid "Contact blocking temporarily unavailable"
 msgstr "Blokiranje stikov začasno ni na voljo"
 
-#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:434
+#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:269
 msgid "Contact blocking unavailable"
 msgstr "Blokiranje stika ni na voljo"
 
-#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:436
+#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:271
 msgid "Permission Denied"
 msgstr "Dovoljenje je zavrnjeno"
 
-#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:440
+#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:275
 msgid "Could not block contact"
 msgstr "Stika ni mogoče blokirati"
 
-#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:783
+#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:622
 msgid "Edit Blocked Contacts"
 msgstr "Uredi blokirane stike"
 
 #. Account and Identifier
 #: ../libempathy-gtk/empathy-contact-blocking-dialog.ui.h:1
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:512
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:506
 #: ../libempathy-gtk/empathy-contact-widget.ui.h:2
-#: ../libempathy-gtk/empathy-individual-widget.c:1441
+#: ../libempathy-gtk/empathy-individual-widget.c:1475
 #: ../src/empathy-chatrooms-window.ui.h:1
 #: ../src/empathy-new-chatroom-dialog.ui.h:1
 msgid "Account:"
@@ -1653,56 +1646,56 @@ msgid "Remove"
 msgstr "Odstrani"
 
 #. Copy Link Address menu item
-#: ../libempathy-gtk/empathy-chat-text-view.c:320
+#: ../libempathy-gtk/empathy-chat-text-view.c:322
 #: ../libempathy-gtk/empathy-webkit-utils.c:277
 msgid "_Copy Link Address"
 msgstr "Kopiraj _naslov povezave"
 
 #. Open Link menu item
-#: ../libempathy-gtk/empathy-chat-text-view.c:327
+#: ../libempathy-gtk/empathy-chat-text-view.c:329
 #: ../libempathy-gtk/empathy-webkit-utils.c:284
 msgid "_Open Link"
 msgstr "_Odpri povezavo"
 
 #. Translators: timestamp displayed between conversations in
 #. * chat windows (strftime format string)
-#: ../libempathy-gtk/empathy-chat-text-view.c:415
+#: ../libempathy-gtk/empathy-chat-text-view.c:417
 msgid "%A %B %d %Y"
 msgstr "%A, %d. %B %Y"
 
-#: ../libempathy-gtk/empathy-contact-dialogs.c:299
+#: ../libempathy-gtk/empathy-contact-dialogs.c:287
 #: ../libempathy-gtk/empathy-individual-edit-dialog.c:247
 msgid "Edit Contact Information"
 msgstr "Uredi podrobnosti stika"
 
-#: ../libempathy-gtk/empathy-contact-dialogs.c:350
+#: ../libempathy-gtk/empathy-contact-dialogs.c:338
 msgid "Personal Information"
 msgstr "Osebni podatki"
 
-#: ../libempathy-gtk/empathy-contact-dialogs.c:459
+#: ../libempathy-gtk/empathy-contact-dialogs.c:439
 #: ../libempathy-gtk/empathy-individual-dialogs.c:119
 msgid "New Contact"
 msgstr "Nov stik"
 
-#: ../libempathy-gtk/empathy-contact-dialogs.c:533
-#: ../libempathy-gtk/empathy-individual-dialogs.c:200
+#: ../libempathy-gtk/empathy-contact-dialogs.c:508
+#: ../libempathy-gtk/empathy-individual-dialogs.c:198
 #, c-format
 msgid "Block %s?"
 msgstr "Ali želite blokirati %s?"
 
-#: ../libempathy-gtk/empathy-contact-dialogs.c:538
-#: ../libempathy-gtk/empathy-individual-dialogs.c:255
+#: ../libempathy-gtk/empathy-contact-dialogs.c:513
+#: ../libempathy-gtk/empathy-individual-dialogs.c:253
 #, c-format
 msgid "Are you sure you want to block '%s' from contacting you again?"
 msgstr "Ali ste prepričani, da želite blokirati ponovno vzpostavitev stika med '%s' in vami?"
 
-#: ../libempathy-gtk/empathy-contact-dialogs.c:543
-#: ../libempathy-gtk/empathy-individual-dialogs.c:277
+#: ../libempathy-gtk/empathy-contact-dialogs.c:518
+#: ../libempathy-gtk/empathy-individual-dialogs.c:275
 msgid "_Block"
 msgstr "_Blokiraj"
 
-#: ../libempathy-gtk/empathy-contact-dialogs.c:559
-#: ../libempathy-gtk/empathy-individual-dialogs.c:286
+#: ../libempathy-gtk/empathy-contact-dialogs.c:536
+#: ../libempathy-gtk/empathy-individual-dialogs.c:284
 msgid "_Report this contact as abusive"
 msgid_plural "_Report these contacts as abusive"
 msgstr[0] "_Poročaj te stike kot žaljive"
@@ -1722,349 +1715,321 @@ msgstr "Zahteva po naročilu"
 msgid "_Block User"
 msgstr "_Blokiraj_uporabnika"
 
-#: ../libempathy-gtk/empathy-contact-list-view.c:1935
-#: ../libempathy-gtk/empathy-individual-view.c:2375
-#, c-format
-msgid "Do you really want to remove the group '%s'?"
-msgstr "Ali zares želite odstraniti skupino '%s'?"
-
-#: ../libempathy-gtk/empathy-contact-list-view.c:1937
-#: ../libempathy-gtk/empathy-individual-view.c:2378
-msgid "Removing group"
-msgstr "Odstranjevanje skupine"
-
-#. Remove
-#: ../libempathy-gtk/empathy-contact-list-view.c:1986
-#: ../libempathy-gtk/empathy-contact-list-view.c:2063
-#: ../libempathy-gtk/empathy-individual-view.c:2433
-#: ../libempathy-gtk/empathy-individual-view.c:2636
-msgid "_Remove"
-msgstr "_Odstrani"
-
-#: ../libempathy-gtk/empathy-contact-list-view.c:2016
-#: ../libempathy-gtk/empathy-individual-view.c:2500
-#, c-format
-msgid "Do you really want to remove the contact '%s'?"
-msgstr "Ali zares želite odstraniti stik '%s'?"
-
-#: ../libempathy-gtk/empathy-contact-list-view.c:2018
-#: ../libempathy-gtk/empathy-individual-view.c:2521
-msgid "Removing contact"
-msgstr "Odstranjevanje stika"
-
 #: ../libempathy-gtk/empathy-contact-menu.c:212
+#: ../libempathy-gtk/empathy-individual-menu.c:1558
 #: ../src/empathy-main-window-menubar.ui.h:14
 msgid "_Add Contact…"
 msgstr "_Dodaj stik ..."
 
-#: ../libempathy-gtk/empathy-contact-menu.c:292
+#: ../libempathy-gtk/empathy-contact-menu.c:287
 msgid "_Block Contact"
 msgstr "_Blokiraj stik"
 
 #. add chat button
-#: ../libempathy-gtk/empathy-contact-menu.c:321
-#: ../libempathy-gtk/empathy-individual-menu.c:758
+#: ../libempathy-gtk/empathy-contact-menu.c:316
+#: ../libempathy-gtk/empathy-individual-menu.c:789
 #: ../libempathy-gtk/empathy-new-message-dialog.c:320
 #: ../src/empathy-main-window-menubar.ui.h:16
 msgid "_Chat"
 msgstr "_Klepet"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:353
-#: ../libempathy-gtk/empathy-individual-menu.c:850
+#: ../libempathy-gtk/empathy-contact-menu.c:348
+#: ../libempathy-gtk/empathy-individual-menu.c:881
 msgctxt "menu item"
 msgid "_Audio Call"
 msgstr "_Zvočni klic"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:386
-#: ../libempathy-gtk/empathy-individual-menu.c:895
+#: ../libempathy-gtk/empathy-contact-menu.c:381
+#: ../libempathy-gtk/empathy-individual-menu.c:926
 msgctxt "menu item"
 msgid "_Video Call"
 msgstr "_Video klic"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:432
-#: ../libempathy-gtk/empathy-individual-menu.c:948
+#: ../libempathy-gtk/empathy-contact-menu.c:427
+#: ../libempathy-gtk/empathy-individual-menu.c:979
 #: ../src/empathy-main-window-menubar.ui.h:27
 msgid "_Previous Conversations"
 msgstr "Predhodni po_govori"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:454
-#: ../libempathy-gtk/empathy-individual-menu.c:989
+#: ../libempathy-gtk/empathy-contact-menu.c:449
+#: ../libempathy-gtk/empathy-individual-menu.c:1020
 msgid "Send File"
 msgstr "Pošlji datoteko"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:477
-#: ../libempathy-gtk/empathy-individual-menu.c:1031
+#: ../libempathy-gtk/empathy-contact-menu.c:472
+#: ../libempathy-gtk/empathy-individual-menu.c:1062
 msgid "Share My Desktop"
 msgstr "Souporaba namizja"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:506
-#: ../libempathy-gtk/empathy-individual-menu.c:1094
+#: ../libempathy-gtk/empathy-contact-menu.c:501
+#: ../libempathy-gtk/empathy-individual-menu.c:1125
 msgid "Infor_mation"
 msgstr "_Podrobnosti"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:552
+#: ../libempathy-gtk/empathy-contact-menu.c:547
 msgctxt "Edit contact (contextual menu)"
 msgid "_Edit"
 msgstr "_Uredi"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:606
-#: ../libempathy-gtk/empathy-individual-menu.c:1285
+#: ../libempathy-gtk/empathy-contact-menu.c:601
+#: ../libempathy-gtk/empathy-individual-menu.c:1316
 #: ../src/empathy-chat-window.c:1011
 msgid "Inviting you to this room"
 msgstr "Vabila v klepetalnico"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:637
-#: ../libempathy-gtk/empathy-individual-menu.c:1331
+#: ../libempathy-gtk/empathy-contact-menu.c:632
+#: ../libempathy-gtk/empathy-individual-menu.c:1362
 msgid "_Invite to Chat Room"
 msgstr "_Povabi v klepetalnico"
 
 #. Title
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:505
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:499
 msgid "Search contacts"
 msgstr "Iskanje stikov"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:535
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:529
 msgid "Search: "
 msgstr "Poišči:"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:593
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:587
 msgid "_Add Contact"
 msgstr "_Dodaj stik"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:611
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:605
 msgid "No contacts found"
 msgstr "Ni najdenih stikov."
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:627
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:621
 msgid "Your message introducing yourself:"
 msgstr "Predstavitveno sporočilo:"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:635
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:629
 msgid "Please let me see when you're online. Thanks!"
 msgstr "Želel bi videti, kdaj ste na zvezi. Hvala!"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:502
+#: ../libempathy-gtk/empathy-contact-widget.c:571
+#: ../libempathy-gtk/empathy-individual-widget.c:304
 msgid "Channels:"
 msgstr "Kanali:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:797
-#: ../libempathy-gtk/empathy-individual-widget.c:421
+#: ../libempathy-gtk/empathy-contact-widget.c:751
+#: ../libempathy-gtk/empathy-individual-widget.c:455
 msgid "Country ISO Code:"
 msgstr "ISO oznaka države:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:799
-#: ../libempathy-gtk/empathy-individual-widget.c:423
+#: ../libempathy-gtk/empathy-contact-widget.c:753
+#: ../libempathy-gtk/empathy-individual-widget.c:457
 msgid "Country:"
 msgstr "Država:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:801
-#: ../libempathy-gtk/empathy-individual-widget.c:425
+#: ../libempathy-gtk/empathy-contact-widget.c:755
+#: ../libempathy-gtk/empathy-individual-widget.c:459
 msgid "State:"
 msgstr "Okraj:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:803
-#: ../libempathy-gtk/empathy-individual-widget.c:427
+#: ../libempathy-gtk/empathy-contact-widget.c:757
+#: ../libempathy-gtk/empathy-individual-widget.c:461
 msgid "City:"
 msgstr "Mesto:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:805
-#: ../libempathy-gtk/empathy-individual-widget.c:429
+#: ../libempathy-gtk/empathy-contact-widget.c:759
+#: ../libempathy-gtk/empathy-individual-widget.c:463
 msgid "Area:"
 msgstr "Področje:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:807
-#: ../libempathy-gtk/empathy-individual-widget.c:431
+#: ../libempathy-gtk/empathy-contact-widget.c:761
+#: ../libempathy-gtk/empathy-individual-widget.c:465
 msgid "Postal Code:"
 msgstr "Poštna številka:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:809
-#: ../libempathy-gtk/empathy-individual-widget.c:433
+#: ../libempathy-gtk/empathy-contact-widget.c:763
+#: ../libempathy-gtk/empathy-individual-widget.c:467
 msgid "Street:"
 msgstr "Ulica:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:811
-#: ../libempathy-gtk/empathy-individual-widget.c:435
+#: ../libempathy-gtk/empathy-contact-widget.c:765
+#: ../libempathy-gtk/empathy-individual-widget.c:469
 msgid "Building:"
 msgstr "Stavba:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:813
-#: ../libempathy-gtk/empathy-individual-widget.c:437
+#: ../libempathy-gtk/empathy-contact-widget.c:767
+#: ../libempathy-gtk/empathy-individual-widget.c:471
 msgid "Floor:"
 msgstr "Nadstropje:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:815
-#: ../libempathy-gtk/empathy-individual-widget.c:439
+#: ../libempathy-gtk/empathy-contact-widget.c:769
+#: ../libempathy-gtk/empathy-individual-widget.c:473
 msgid "Room:"
 msgstr "Klepetalnica:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:817
-#: ../libempathy-gtk/empathy-individual-widget.c:441
+#: ../libempathy-gtk/empathy-contact-widget.c:771
+#: ../libempathy-gtk/empathy-individual-widget.c:475
 msgid "Text:"
 msgstr "Besedilo:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:819
-#: ../libempathy-gtk/empathy-individual-widget.c:443
+#: ../libempathy-gtk/empathy-contact-widget.c:773
+#: ../libempathy-gtk/empathy-individual-widget.c:477
 msgid "Description:"
 msgstr "Opis:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:821
-#: ../libempathy-gtk/empathy-individual-widget.c:445
+#: ../libempathy-gtk/empathy-contact-widget.c:775
+#: ../libempathy-gtk/empathy-individual-widget.c:479
 msgid "URI:"
 msgstr "URI:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:823
-#: ../libempathy-gtk/empathy-individual-widget.c:447
+#: ../libempathy-gtk/empathy-contact-widget.c:777
+#: ../libempathy-gtk/empathy-individual-widget.c:481
 msgid "Accuracy Level:"
 msgstr "Raven natančnosti:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:825
-#: ../libempathy-gtk/empathy-individual-widget.c:449
+#: ../libempathy-gtk/empathy-contact-widget.c:779
+#: ../libempathy-gtk/empathy-individual-widget.c:483
 msgid "Error:"
 msgstr "Napaka:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:827
-#: ../libempathy-gtk/empathy-individual-widget.c:451
+#: ../libempathy-gtk/empathy-contact-widget.c:781
+#: ../libempathy-gtk/empathy-individual-widget.c:485
 msgid "Vertical Error (meters):"
 msgstr "Napaka navpično (v metrih):"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:829
-#: ../libempathy-gtk/empathy-individual-widget.c:453
+#: ../libempathy-gtk/empathy-contact-widget.c:783
+#: ../libempathy-gtk/empathy-individual-widget.c:487
 msgid "Horizontal Error (meters):"
 msgstr "Napaka vodoravno (v metrih):"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:831
-#: ../libempathy-gtk/empathy-individual-widget.c:455
+#: ../libempathy-gtk/empathy-contact-widget.c:785
+#: ../libempathy-gtk/empathy-individual-widget.c:489
 msgid "Speed:"
 msgstr "Hitrost:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:833
-#: ../libempathy-gtk/empathy-individual-widget.c:457
+#: ../libempathy-gtk/empathy-contact-widget.c:787
+#: ../libempathy-gtk/empathy-individual-widget.c:491
 msgid "Bearing:"
 msgstr "Smer:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:835
-#: ../libempathy-gtk/empathy-individual-widget.c:459
+#: ../libempathy-gtk/empathy-contact-widget.c:789
+#: ../libempathy-gtk/empathy-individual-widget.c:493
 msgid "Climb Speed:"
 msgstr "Hitrost dviganja:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:837
-#: ../libempathy-gtk/empathy-individual-widget.c:461
+#: ../libempathy-gtk/empathy-contact-widget.c:791
+#: ../libempathy-gtk/empathy-individual-widget.c:495
 msgid "Last Updated on:"
 msgstr "Zadnjič posodobljeno:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:839
-#: ../libempathy-gtk/empathy-individual-widget.c:463
+#: ../libempathy-gtk/empathy-contact-widget.c:793
+#: ../libempathy-gtk/empathy-individual-widget.c:497
 msgid "Longitude:"
 msgstr "Zemljepisna dolžina:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:841
-#: ../libempathy-gtk/empathy-individual-widget.c:465
+#: ../libempathy-gtk/empathy-contact-widget.c:795
+#: ../libempathy-gtk/empathy-individual-widget.c:499
 msgid "Latitude:"
 msgstr "Zemljepisna širina:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:843
-#: ../libempathy-gtk/empathy-individual-widget.c:467
+#: ../libempathy-gtk/empathy-contact-widget.c:797
+#: ../libempathy-gtk/empathy-individual-widget.c:501
 msgid "Altitude:"
 msgstr "Nadmorska višina:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:896
-#: ../libempathy-gtk/empathy-contact-widget.c:911
-#: ../libempathy-gtk/empathy-individual-widget.c:559
-#: ../libempathy-gtk/empathy-individual-widget.c:574
-#: ../src/empathy-preferences.ui.h:17
+#: ../libempathy-gtk/empathy-contact-widget.c:850
+#: ../libempathy-gtk/empathy-contact-widget.c:865
+#: ../libempathy-gtk/empathy-individual-widget.c:593
+#: ../libempathy-gtk/empathy-individual-widget.c:608
+#: ../src/empathy-preferences.ui.h:15
 msgid "Location"
 msgstr "Mesto"
 
 #. translators: format is "Location, $date"
-#: ../libempathy-gtk/empathy-contact-widget.c:913
-#: ../libempathy-gtk/empathy-individual-widget.c:576
+#: ../libempathy-gtk/empathy-contact-widget.c:867
+#: ../libempathy-gtk/empathy-individual-widget.c:610
 #, c-format
 msgid "%s, %s"
 msgstr "%s, %s"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:965
-#: ../libempathy-gtk/empathy-individual-widget.c:625
+#: ../libempathy-gtk/empathy-contact-widget.c:919
+#: ../libempathy-gtk/empathy-individual-widget.c:659
 msgid "%B %e, %Y at %R UTC"
 msgstr "%e.%B %Y ob %R UTC"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:1047
-#: ../libempathy-gtk/empathy-individual-widget.c:867
+#: ../libempathy-gtk/empathy-contact-widget.c:1001
+#: ../libempathy-gtk/empathy-individual-widget.c:901
 msgid "Save Avatar"
 msgstr "Shrani podobo"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:1103
-#: ../libempathy-gtk/empathy-individual-widget.c:925
+#: ../libempathy-gtk/empathy-contact-widget.c:1057
+#: ../libempathy-gtk/empathy-individual-widget.c:959
 msgid "Unable to save avatar"
 msgstr "Ni mogoče shraniti podobe"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:1787
-#: ../libempathy-gtk/empathy-individual-menu.c:1066
-#: ../libempathy-gtk/empathy-individual-widget.c:1324
+#: ../libempathy-gtk/empathy-contact-widget.c:1745
+#: ../libempathy-gtk/empathy-individual-menu.c:1097
+#: ../libempathy-gtk/empathy-individual-widget.c:1358
 msgid "Favorite"
 msgstr "Priljubljeno"
 
-#: ../libempathy-gtk/empathy-contactinfo-utils.c:102
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:104
 msgid "Full name"
 msgstr "Polno Ime"
 
-#: ../libempathy-gtk/empathy-contactinfo-utils.c:103
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:105
 msgid "Phone number"
 msgstr "Telefonska številka"
 
-#: ../libempathy-gtk/empathy-contactinfo-utils.c:104
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:106
 msgid "E-mail address"
 msgstr "Elektronski naslov"
 
-#: ../libempathy-gtk/empathy-contactinfo-utils.c:105
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:107
 msgid "Website"
 msgstr "Spletišče"
 
-#: ../libempathy-gtk/empathy-contactinfo-utils.c:106
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:108
 msgid "Birthday"
 msgstr "Rojstni dan"
 
 #. Note to translators: this is the caption for a string of the form "5
 #. * minutes ago", and refers to the time since the contact last interacted
 #. * with their IM client.
-#: ../libempathy-gtk/empathy-contactinfo-utils.c:111
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:113
 msgid "Last seen:"
 msgstr "Zadnjič viden:"
 
-#: ../libempathy-gtk/empathy-contactinfo-utils.c:113
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:115
 msgid "Connected from:"
 msgstr "Povezan od:"
 
 #. FIXME: once Idle implements SimplePresence using this information, we can
 #. * and should bin this.
-#: ../libempathy-gtk/empathy-contactinfo-utils.c:117
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:119
 msgid "Away message:"
 msgstr "Sporočilo odsotnosti:"
 
-#: ../libempathy-gtk/empathy-contactinfo-utils.c:130
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:132
 msgid "work"
 msgstr "delovno"
 
-#: ../libempathy-gtk/empathy-contactinfo-utils.c:131
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:133
 msgid "home"
 msgstr "domače"
 
-#: ../libempathy-gtk/empathy-contactinfo-utils.c:132
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:134
 msgid "mobile"
 msgstr "prenosni telefon"
 
-#: ../libempathy-gtk/empathy-contactinfo-utils.c:133
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:135
 msgid "voice"
 msgstr "glasovno"
 
-#: ../libempathy-gtk/empathy-contactinfo-utils.c:134
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:136
 msgid "preferred"
 msgstr "prednostno"
 
-#: ../libempathy-gtk/empathy-contactinfo-utils.c:135
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:137
 msgid "postal"
 msgstr "poštno"
 
-#: ../libempathy-gtk/empathy-contactinfo-utils.c:136
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:138
 msgid "parcel"
 msgstr "paketno"
 
@@ -2074,7 +2039,7 @@ msgstr "<b>Mesto</b> na (datum)\t"
 
 #. Alias
 #: ../libempathy-gtk/empathy-contact-widget.ui.h:3
-#: ../libempathy-gtk/empathy-individual-widget.c:1260
+#: ../libempathy-gtk/empathy-individual-widget.c:1294
 msgid "Alias:"
 msgstr "Vzdevek:"
 
@@ -2094,7 +2059,7 @@ msgstr "Podrobnosti stika"
 #. Identifier to connect to Instant Messaging network
 #. Translators: Identifier to connect to Instant Messaging network
 #: ../libempathy-gtk/empathy-contact-widget.ui.h:8
-#: ../libempathy-gtk/empathy-individual-widget.c:1469
+#: ../libempathy-gtk/empathy-individual-widget.c:1503
 msgid "Identifier:"
 msgstr "Določilo:"
 
@@ -2129,11 +2094,11 @@ msgid "Select"
 msgstr "Izbor"
 
 #: ../libempathy-gtk/empathy-groups-widget.c:409
-#: ../src/empathy-main-window.c:1967
+#: ../src/empathy-main-window.c:1952
 msgid "Group"
 msgstr "Skupina"
 
-#: ../libempathy-gtk/empathy-individual-dialogs.c:260
+#: ../libempathy-gtk/empathy-individual-dialogs.c:258
 msgid "The following identity will be blocked:"
 msgid_plural "The following identities will be blocked:"
 msgstr[0] "Naslednje identitete bodo blokirane:"
@@ -2141,7 +2106,7 @@ msgstr[1] "Naslednja identiteta bo blokirana:"
 msgstr[2] "Naslednji identiteti bosta blokirani:"
 msgstr[3] "Naslednje identitete bodo blokirane:"
 
-#: ../libempathy-gtk/empathy-individual-dialogs.c:267
+#: ../libempathy-gtk/empathy-individual-dialogs.c:265
 msgid "The following identity can not be blocked:"
 msgid_plural "The following identities can not be blocked:"
 msgstr[0] "Naslednjih identitet ni mogoče blokirati:"
@@ -2154,79 +2119,103 @@ msgstr[3] "Naslednjih identitet ni mogoče blokirati:"
 msgid "Linked Contacts"
 msgstr "Povezani stiki"
 
-#: ../libempathy-gtk/empathy-individual-linker.c:370
+#: ../libempathy-gtk/empathy-individual-linker.c:372
 msgid "Select contacts to link"
 msgstr "Izbor stikov za povezovanje"
 
-#: ../libempathy-gtk/empathy-individual-linker.c:444
+#: ../libempathy-gtk/empathy-individual-linker.c:447
 msgid "New contact preview"
 msgstr "Nov predogled stika"
 
-#: ../libempathy-gtk/empathy-individual-linker.c:488
+#: ../libempathy-gtk/empathy-individual-linker.c:491
 msgid "Contacts selected in the list on the left will be linked together."
 msgstr "Stiki izbrani na seznamu na levi, bodo povezani skupaj."
 
 #. Translators: this is used in the context menu for a contact. The first
 #. * parameter is a contact ID (e.g. foo@jabber.org) and the second is one
 #. * of the user's account IDs (e.g. me@hotmail.com).
-#: ../libempathy-gtk/empathy-individual-menu.c:145
+#: ../libempathy-gtk/empathy-individual-menu.c:148
 #, c-format
 msgid "%s (%s)"
 msgstr "%s (%s)"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:309
+#: ../libempathy-gtk/empathy-individual-menu.c:312
 msgid "Select account to use to place the call"
 msgstr "Izbor računa za klicanje"
 
 #. translators: Call is a noun. This string is used in the window
 #. * title
-#: ../libempathy-gtk/empathy-individual-menu.c:313
+#: ../libempathy-gtk/empathy-individual-menu.c:316
 #: ../libempathy-gtk/empathy-log-window.ui.h:2
-#: ../src/empathy-streamed-media-window.c:1301
+#: ../src/empathy-streamed-media-window.c:1288
 #: ../src/empathy-call-window.ui.h:2
 msgid "Call"
 msgstr "Kliči"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:378
+#: ../libempathy-gtk/empathy-individual-menu.c:381
 msgid "Mobile"
 msgstr "Mobilni telefon"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:380
+#: ../libempathy-gtk/empathy-individual-menu.c:383
 msgid "Work"
 msgstr "Delo"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:382
+#: ../libempathy-gtk/empathy-individual-menu.c:385
 msgid "HOME"
 msgstr "Domača mapa"
 
 #. add SMS button
-#: ../libempathy-gtk/empathy-individual-menu.c:805
+#: ../libempathy-gtk/empathy-individual-menu.c:836
 #: ../libempathy-gtk/empathy-new-message-dialog.c:314
 msgid "_SMS"
 msgstr "_SMS"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1143
+#: ../libempathy-gtk/empathy-individual-menu.c:1174
 msgctxt "Edit individual (contextual menu)"
 msgid "_Edit"
 msgstr "_Uredi"
 
 #. Translators: this is a verb meaning "to connect two contacts together
 #. * to form a meta-contact".
-#: ../libempathy-gtk/empathy-individual-menu.c:1169
+#: ../libempathy-gtk/empathy-individual-menu.c:1200
 msgctxt "Link individual (contextual menu)"
 msgid "_Link Contacts…"
 msgstr "_Poveži stike ..."
 
-#: ../libempathy-gtk/empathy-individual-view.c:2340
+#: ../libempathy-gtk/empathy-individual-view.c:2362
 msgid "Delete and _Block"
 msgstr "Izbriši in _blokiraj"
 
-#: ../libempathy-gtk/empathy-individual-view.c:2509
+#: ../libempathy-gtk/empathy-individual-view.c:2397
+#, c-format
+msgid "Do you really want to remove the group '%s'?"
+msgstr "Ali zares želite odstraniti skupino '%s'?"
+
+#: ../libempathy-gtk/empathy-individual-view.c:2400
+msgid "Removing group"
+msgstr "Odstranjevanje skupine"
+
+#. Remove
+#: ../libempathy-gtk/empathy-individual-view.c:2455
+#: ../libempathy-gtk/empathy-individual-view.c:2672
+msgid "_Remove"
+msgstr "_Odstrani"
+
+#: ../libempathy-gtk/empathy-individual-view.c:2532
+#, c-format
+msgid "Do you really want to remove the contact '%s'?"
+msgstr "Ali zares želite odstraniti stik '%s'?"
+
+#: ../libempathy-gtk/empathy-individual-view.c:2541
 #, c-format
 msgid "Do you really want to remove the linked contact '%s'? Note that this will remove all the contacts which make up this linked contact."
 msgstr "Ali res želite odstraniti povezan stik '%s'? S tem bo odstranjeni tudi vsi stiki, ki so opredeljeni kot povezani."
 
-#: ../libempathy-gtk/empathy-individual-widget.c:1608
+#: ../libempathy-gtk/empathy-individual-view.c:2553
+msgid "Removing contact"
+msgstr "Odstranjevanje stika"
+
+#: ../libempathy-gtk/empathy-individual-widget.c:1642
 #, c-format
 msgid "Linked contact containing %u contact"
 msgid_plural "Linked contacts containing %u contacts"
@@ -2306,48 +2295,48 @@ msgctxt "Unlink individual (button)"
 msgid "_Unlink"
 msgstr "_Odstrani povezavo"
 
-#: ../libempathy-gtk/empathy-log-window.c:634
+#: ../libempathy-gtk/empathy-log-window.c:621
 msgid "History"
 msgstr "Zgodovina"
 
-#: ../libempathy-gtk/empathy-log-window.c:689
+#: ../libempathy-gtk/empathy-log-window.c:676
 msgid "Show"
 msgstr "Pokaži"
 
-#: ../libempathy-gtk/empathy-log-window.c:711
+#: ../libempathy-gtk/empathy-log-window.c:698
 msgid "Search"
 msgstr "Poišči"
 
-#: ../libempathy-gtk/empathy-log-window.c:1159
+#: ../libempathy-gtk/empathy-log-window.c:1147
 #, c-format
 msgid "Chat in %s"
 msgstr "Klepet v %s"
 
-#: ../libempathy-gtk/empathy-log-window.c:1161
+#: ../libempathy-gtk/empathy-log-window.c:1149
 #, c-format
 msgid "Chat with %s"
 msgstr "Klepet s stikom %s"
 
-#: ../libempathy-gtk/empathy-log-window.c:1211
-#: ../libempathy-gtk/empathy-log-window.c:1358
+#: ../libempathy-gtk/empathy-log-window.c:1199
+#: ../libempathy-gtk/empathy-log-window.c:1346
 msgctxt "A date with the time"
 msgid "%A, %e %B %Y %X"
 msgstr "%A, %d. %B %Y"
 
 #. Translators: this is an emote: '* Danielle waves'
-#: ../libempathy-gtk/empathy-log-window.c:1300
+#: ../libempathy-gtk/empathy-log-window.c:1288
 #, c-format
 msgid "<i>* %s %s</i>"
 msgstr "<i>* %s %s</i>"
 
 #. Translators: this is a message: 'Danielle: hello'
 #. * The string in bold is the sender's name
-#: ../libempathy-gtk/empathy-log-window.c:1306
+#: ../libempathy-gtk/empathy-log-window.c:1294
 #, c-format
 msgid "<b>%s:</b> %s"
 msgstr "<b>%s:</b> %s"
 
-#: ../libempathy-gtk/empathy-log-window.c:1382
+#: ../libempathy-gtk/empathy-log-window.c:1370
 #, c-format
 msgid "%s second"
 msgid_plural "%s seconds"
@@ -2356,7 +2345,7 @@ msgstr[1] "%s sekunda"
 msgstr[2] "%s sekundi"
 msgstr[3] "%s sekunde"
 
-#: ../libempathy-gtk/empathy-log-window.c:1389
+#: ../libempathy-gtk/empathy-log-window.c:1377
 #, c-format
 msgid "%s minute"
 msgid_plural "%s minutes"
@@ -2365,80 +2354,80 @@ msgstr[1] "%s minuta"
 msgstr[2] "%s minuti"
 msgstr[3] "%s minute"
 
-#: ../libempathy-gtk/empathy-log-window.c:1397
+#: ../libempathy-gtk/empathy-log-window.c:1385
 #, c-format
 msgid "Call took %s, ended at %s"
 msgstr "Klic začet %s, končan %s"
 
-#: ../libempathy-gtk/empathy-log-window.c:1729
+#: ../libempathy-gtk/empathy-log-window.c:1719
 msgid "Today"
 msgstr "Danes"
 
-#: ../libempathy-gtk/empathy-log-window.c:1733
+#: ../libempathy-gtk/empathy-log-window.c:1723
 msgid "Yesterday"
 msgstr "Včeraj"
 
 #. Translators: A date such as '23 May 2010' (strftime format)
-#: ../libempathy-gtk/empathy-log-window.c:1748
+#: ../libempathy-gtk/empathy-log-window.c:1738
 msgid "%e %B %Y"
 msgstr "%e. %B %Y"
 
-#: ../libempathy-gtk/empathy-log-window.c:1829
-#: ../libempathy-gtk/empathy-log-window.c:3444
+#: ../libempathy-gtk/empathy-log-window.c:1826
+#: ../libempathy-gtk/empathy-log-window.c:3458
 msgid "Anytime"
 msgstr "Kadarkoli"
 
-#: ../libempathy-gtk/empathy-log-window.c:1916
-#: ../libempathy-gtk/empathy-log-window.c:2372
+#: ../libempathy-gtk/empathy-log-window.c:1915
+#: ../libempathy-gtk/empathy-log-window.c:2371
 msgid "Anyone"
 msgstr "Kdorkoli"
 
-#: ../libempathy-gtk/empathy-log-window.c:2685
+#: ../libempathy-gtk/empathy-log-window.c:2684
 msgid "Who"
 msgstr "Kdo"
 
-#: ../libempathy-gtk/empathy-log-window.c:2889
+#: ../libempathy-gtk/empathy-log-window.c:2893
 msgid "When"
 msgstr "Kdaj"
 
-#: ../libempathy-gtk/empathy-log-window.c:3005
+#: ../libempathy-gtk/empathy-log-window.c:3009
 msgid "Anything"
 msgstr "Karkoli"
 
-#: ../libempathy-gtk/empathy-log-window.c:3007
+#: ../libempathy-gtk/empathy-log-window.c:3011
 msgid "Text chats"
 msgstr "Besedilni klepet"
 
-#: ../libempathy-gtk/empathy-log-window.c:3009
+#: ../libempathy-gtk/empathy-log-window.c:3013
 #: ../src/empathy-preferences.ui.h:4
 msgid "Calls"
 msgstr "Klici"
 
-#: ../libempathy-gtk/empathy-log-window.c:3014
+#: ../libempathy-gtk/empathy-log-window.c:3018
 msgid "Incoming calls"
 msgstr "Dohodni klici"
 
-#: ../libempathy-gtk/empathy-log-window.c:3015
+#: ../libempathy-gtk/empathy-log-window.c:3019
 msgid "Outgoing calls"
 msgstr "Odhodni klici"
 
-#: ../libempathy-gtk/empathy-log-window.c:3016
+#: ../libempathy-gtk/empathy-log-window.c:3020
 msgid "Missed calls"
 msgstr "Prezrti klici"
 
-#: ../libempathy-gtk/empathy-log-window.c:3038
+#: ../libempathy-gtk/empathy-log-window.c:3042
 msgid "What"
 msgstr "Kaj"
 
-#: ../libempathy-gtk/empathy-log-window.c:3747
+#: ../libempathy-gtk/empathy-log-window.c:3751
 msgid "Are you sure you want to delete all logs of previous conversations?"
 msgstr "Ali ste prepričani, da želite izbrisati vse podatke beležanja predhodnih pogovorov?"
 
-#: ../libempathy-gtk/empathy-log-window.c:3751
+#: ../libempathy-gtk/empathy-log-window.c:3755
 msgid "Clear All"
 msgstr "Počisti vse"
 
-#: ../libempathy-gtk/empathy-log-window.c:3758
+#: ../libempathy-gtk/empathy-log-window.c:3762
 msgid "Delete from:"
 msgstr "Izbriši iz:"
 
@@ -2549,7 +2538,13 @@ msgstr "_Zvočni klic"
 msgid "New Call"
 msgstr "Nov klic"
 
-#: ../libempathy-gtk/empathy-password-dialog.c:274
+#: ../libempathy-gtk/empathy-bad-password-dialog.c:130
+#, c-format
+msgid "Authentification failed for account <b>%s</b>"
+msgstr "Overitev za račun <b>%s</b> je spodletela."
+
+#: ../libempathy-gtk/empathy-base-password-dialog.c:224
+#: ../libempathy-gtk/empathy-password-dialog.c:134
 #, c-format
 msgid ""
 "Enter your password for account\n"
@@ -2759,24 +2754,24 @@ msgstr "Zapomni si izbor za prihodnje povezave"
 msgid "Certificate Details"
 msgstr "Podrobnosti potrdila"
 
-#: ../libempathy-gtk/empathy-ui-utils.c:1738
+#: ../libempathy-gtk/empathy-ui-utils.c:1741
 msgid "Unable to open URI"
 msgstr "Ni mogoče odpreti naslova URI"
 
-#: ../libempathy-gtk/empathy-ui-utils.c:1835
+#: ../libempathy-gtk/empathy-ui-utils.c:1859
 msgid "Select a file"
 msgstr "Izbor datoteke"
 
-#: ../libempathy-gtk/empathy-ui-utils.c:1907
+#: ../libempathy-gtk/empathy-ui-utils.c:1934
 msgid "Insufficient free space to save file"
 msgstr "Ni dovolj prostora za shranjevanje datoteke"
 
-#: ../libempathy-gtk/empathy-ui-utils.c:1915
+#: ../libempathy-gtk/empathy-ui-utils.c:1942
 #, c-format
 msgid "%s of free space are required to save this file, but only %s is available. Please choose another location."
 msgstr "%s prostora mora biti na voljo za shranjevanje te datoteke, vendar je na voljo le %s. Izbrati bo treba drugo mesto."
 
-#: ../libempathy-gtk/empathy-ui-utils.c:1959
+#: ../libempathy-gtk/empathy-ui-utils.c:1986
 #, c-format
 msgid "Incoming file from %s"
 msgstr "Prihajajoča datoteka od %s"
@@ -2956,23 +2951,23 @@ msgstr "Ni sporočil o napakah"
 msgid "Instant Message (Empathy)"
 msgstr "Hipno sporočanje (Empathy)"
 
-#: ../src/empathy.c:434
+#: ../src/empathy.c:433
 msgid "Don't connect on startup"
 msgstr "Brez samodejne povezave ob zagonu"
 
-#: ../src/empathy.c:438
+#: ../src/empathy.c:437
 msgid "Don't display the contact list or any other dialogs on startup"
 msgstr "Ne prikaži seznama stikov in drugih pogovornih oken ob zagonu"
 
-#: ../src/empathy.c:453
+#: ../src/empathy.c:452
 msgid "- Empathy IM Client"
 msgstr "- Empathy sporočilnik"
 
-#: ../src/empathy.c:640
+#: ../src/empathy.c:639
 msgid "Error contacting the Account Manager"
 msgstr "Napaka delovanja upravljalnika računov"
 
-#: ../src/empathy.c:642
+#: ../src/empathy.c:641
 #, c-format
 msgid ""
 "There was an error while trying to connect to the Telepathy Account Manager. The error was:\n"
@@ -3028,7 +3023,7 @@ msgid "You can either go back and try to enter your accounts' details again or q
 msgstr "Lahko ponovno vnesete podatke svojega računa ali pa končate pomočnika in dodate račune kasneje preko menija Uredi."
 
 #: ../src/empathy-account-assistant.c:220
-#: ../src/empathy-account-assistant.c:1271
+#: ../src/empathy-account-assistant.c:1272
 msgid "An error occurred"
 msgstr "Prišlo je do napake"
 
@@ -3064,70 +3059,70 @@ msgstr "S programom Empathy lahko klepetate s posamezniki, ki uporabljajo Google
 msgid "Do you have an account you've been using with another chat program?"
 msgstr "Ali imate račun, ki ste ga uporabljali z drugim programom?"
 
-#: ../src/empathy-account-assistant.c:652
+#: ../src/empathy-account-assistant.c:653
 msgid "Yes, import my account details from "
 msgstr "Da, uvoziti želim podrobnosti računa iz"
 
-#: ../src/empathy-account-assistant.c:673
+#: ../src/empathy-account-assistant.c:674
 msgid "Yes, I'll enter my account details now"
 msgstr "Da, takoj želim vnesti podrobnosti računa"
 
-#: ../src/empathy-account-assistant.c:695
+#: ../src/empathy-account-assistant.c:696
 msgid "No, I want a new account"
 msgstr "Ne, ustvariti želim nov račun"
 
-#: ../src/empathy-account-assistant.c:705
+#: ../src/empathy-account-assistant.c:706
 msgid "No, I just want to see people online nearby for now"
 msgstr "Ne, želim le videti ljudi, povezane v bližini"
 
-#: ../src/empathy-account-assistant.c:726
+#: ../src/empathy-account-assistant.c:727
 msgid "Select the accounts you want to import:"
 msgstr "Izbor račune za uvoz:"
 
-#: ../src/empathy-account-assistant.c:813
+#: ../src/empathy-account-assistant.c:814
 #: ../src/empathy-new-chatroom-dialog.c:625
 #: ../src/empathy-new-chatroom-dialog.c:626
 msgid "Yes"
 msgstr "Da"
 
-#: ../src/empathy-account-assistant.c:820
+#: ../src/empathy-account-assistant.c:821
 msgid "No, that's all for now"
 msgstr "Ne, to je trenutno vse"
 
-#: ../src/empathy-account-assistant.c:1085
+#: ../src/empathy-account-assistant.c:1086
 msgid "Empathy can automatically discover and chat with the people connected on the same network as you. If you want to use this feature, please check that the details below are correct. You can easily change these details later or disable this feature by using the 'Accounts' dialog"
 msgstr "Program Empathy lahko samodejno odkrije in izmenjuje podatke z uporabniki istega omrežja. V primeru, da želite uporabljati to možnost, preverite spodnje podatke. Možnosti je mogoče spreminjati tudi kasneje v pogovornemu oknu 'računi'."
 
-#: ../src/empathy-account-assistant.c:1091
-#: ../src/empathy-account-assistant.c:1147
+#: ../src/empathy-account-assistant.c:1092
+#: ../src/empathy-account-assistant.c:1148
 msgid "Edit->Accounts"
 msgstr "Uredi->Računi"
 
-#: ../src/empathy-account-assistant.c:1107
+#: ../src/empathy-account-assistant.c:1108
 msgid "I do _not want to enable this feature for now"
 msgstr "Te možnosti trenutno _ne želim omogočiti"
 
-#: ../src/empathy-account-assistant.c:1143
+#: ../src/empathy-account-assistant.c:1144
 msgid "You won't be able to chat with people connected to your local network, as telepathy-salut is not installed. If you want to enable this feature, please install the telepathy-salut package and create a People Nearby account from the Accounts dialog"
 msgstr "Ni mogoče klepetati z uporabniki, povezanimi v krajevnem omrežju, saj paket telepathy-salut ni nameščen. V primeru, da želite to možnost omogočiti, namestite zahtevani paket in ustvarite račun bližnjih uporabnikov med možnostmi računa."
 
-#: ../src/empathy-account-assistant.c:1149
+#: ../src/empathy-account-assistant.c:1150
 msgid "telepathy-salut not installed"
 msgstr "telepathy-salut ni nameščen"
 
-#: ../src/empathy-account-assistant.c:1195
+#: ../src/empathy-account-assistant.c:1196
 msgid "Messaging and VoIP Accounts Assistant"
 msgstr "Pomočnik sporočanja in računov VoIP"
 
-#: ../src/empathy-account-assistant.c:1229
+#: ../src/empathy-account-assistant.c:1230
 msgid "Welcome to Empathy"
 msgstr "Dobrodošli v program Empathy"
 
-#: ../src/empathy-account-assistant.c:1238
+#: ../src/empathy-account-assistant.c:1239
 msgid "Import your existing accounts"
 msgstr "Uvozite svoje obstoječe račune"
 
-#: ../src/empathy-account-assistant.c:1256
+#: ../src/empathy-account-assistant.c:1257
 msgid "Please enter personal details"
 msgstr "Vnesite osebne podatke"
 
@@ -3145,8 +3140,8 @@ msgid "Your new account has not been saved yet."
 msgstr "Novi račun še ni bil shranjen."
 
 #: ../src/empathy-accounts-dialog.c:345
-#: ../src/empathy-streamed-media-window.c:754
-#: ../src/empathy-call-window.c:1320
+#: ../src/empathy-streamed-media-window.c:757
+#: ../src/empathy-call-window.c:1325
 msgid "Connecting…"
 msgstr "Povezovanje ..."
 
@@ -3238,11 +3233,11 @@ msgstr "Za dodajanje novega računa morate najprej namestiti zaledje za vsak pro
 msgid "_Import…"
 msgstr "_Uvozi ..."
 
-#: ../src/empathy-auth-client.c:249
+#: ../src/empathy-auth-client.c:284
 msgid " - Empathy authentication client"
 msgstr "- Empathy odjemalec overitve"
 
-#: ../src/empathy-auth-client.c:265
+#: ../src/empathy-auth-client.c:300
 msgid "Empathy authentication client"
 msgstr "Empathy odjemalec overitve"
 
@@ -3260,150 +3255,150 @@ msgstr "- Empathy odjemalec zvoka in slike"
 msgid "Empathy Audio/Video Client"
 msgstr "Empathy odjemalec zvoka in slike"
 
-#: ../src/empathy-streamed-media-window.c:431
+#: ../src/empathy-streamed-media-window.c:433
 msgid "Contrast"
 msgstr "Kontrast"
 
-#: ../src/empathy-streamed-media-window.c:434
+#: ../src/empathy-streamed-media-window.c:436
 msgid "Brightness"
 msgstr "Svetlost"
 
-#: ../src/empathy-streamed-media-window.c:437
+#: ../src/empathy-streamed-media-window.c:439
 msgid "Gamma"
 msgstr "Gama"
 
-#: ../src/empathy-streamed-media-window.c:542
+#: ../src/empathy-streamed-media-window.c:545
 msgid "Volume"
 msgstr "Glasnost"
 
-#: ../src/empathy-streamed-media-window.c:1110
+#: ../src/empathy-streamed-media-window.c:1097
 msgid "_Sidebar"
 msgstr "_Stranska vrstica"
 
-#: ../src/empathy-streamed-media-window.c:1130
+#: ../src/empathy-streamed-media-window.c:1117
 msgid "Audio input"
 msgstr "Zvočni vhod"
 
-#: ../src/empathy-streamed-media-window.c:1134
+#: ../src/empathy-streamed-media-window.c:1121
 msgid "Video input"
 msgstr "Video vhod"
 
-#: ../src/empathy-streamed-media-window.c:1142
+#: ../src/empathy-streamed-media-window.c:1129
 msgid "Dialpad"
 msgstr "Številčnica"
 
-#: ../src/empathy-streamed-media-window.c:1153
+#: ../src/empathy-streamed-media-window.c:1140
 msgid "Details"
 msgstr "Podrobnosti"
 
 #. translators: Call is a noun and %s is the contact name. This string
 #. * is used in the window title
-#: ../src/empathy-streamed-media-window.c:1222
-#: ../src/empathy-call-window.c:1929
+#: ../src/empathy-streamed-media-window.c:1209
+#: ../src/empathy-call-window.c:1927
 #, c-format
 msgid "Call with %s"
 msgstr "Klic z %s"
 
-#: ../src/empathy-streamed-media-window.c:1455
-#: ../src/empathy-call-window.c:2173
+#: ../src/empathy-streamed-media-window.c:1442
+#: ../src/empathy-call-window.c:2171
 msgid "The IP address as seen by the machine"
 msgstr "Naslov IP kot ga zazna strojna oprema"
 
-#: ../src/empathy-streamed-media-window.c:1457
-#: ../src/empathy-call-window.c:2175
+#: ../src/empathy-streamed-media-window.c:1444
+#: ../src/empathy-call-window.c:2173
 msgid "The IP address as seen by a server on the Internet"
 msgstr "Naslov IP kot ga zazna strežnik v omrežju"
 
-#: ../src/empathy-streamed-media-window.c:1459
-#: ../src/empathy-call-window.c:2177
+#: ../src/empathy-streamed-media-window.c:1446
+#: ../src/empathy-call-window.c:2175
 msgid "The IP address of the peer as seen by the other side"
 msgstr "Naslov IP kot ga zazna uporabnik na drugi strani"
 
-#: ../src/empathy-streamed-media-window.c:1461
-#: ../src/empathy-call-window.c:2179
+#: ../src/empathy-streamed-media-window.c:1448
+#: ../src/empathy-call-window.c:2177
 msgid "The IP address of a relay server"
 msgstr "Naslov IP posredovalnega strežnika"
 
-#: ../src/empathy-streamed-media-window.c:1463
-#: ../src/empathy-call-window.c:2181
+#: ../src/empathy-streamed-media-window.c:1450
+#: ../src/empathy-call-window.c:2179
 msgid "The IP address of the multicast group"
 msgstr "Naslov IP skupine za večsmerno oddajanje"
 
-#: ../src/empathy-streamed-media-window.c:1845
-#: ../src/empathy-streamed-media-window.c:1848
-#: ../src/empathy-streamed-media-window.c:1851
-#: ../src/empathy-streamed-media-window.c:1854
+#: ../src/empathy-streamed-media-window.c:1838
+#: ../src/empathy-streamed-media-window.c:1841
+#: ../src/empathy-streamed-media-window.c:1844
+#: ../src/empathy-streamed-media-window.c:1847
 msgctxt "codec"
 msgid "Unknown"
 msgstr "Neznano"
 
 #. Translators: number of minutes:seconds the caller has been connected
-#: ../src/empathy-streamed-media-window.c:2146
+#: ../src/empathy-streamed-media-window.c:2139
 #, c-format
 msgid "Connected — %d:%02dm"
 msgstr "Povezan - %d:%02d m"
 
-#: ../src/empathy-streamed-media-window.c:2207
-#: ../src/empathy-call-window.c:2984
+#: ../src/empathy-streamed-media-window.c:2200
+#: ../src/empathy-call-window.c:3033
 msgid "Technical Details"
 msgstr "Tehnične podrobnosti"
 
-#: ../src/empathy-streamed-media-window.c:2245
-#: ../src/empathy-call-window.c:3023
+#: ../src/empathy-streamed-media-window.c:2238
+#: ../src/empathy-call-window.c:3072
 #, c-format
 msgid "%s's software does not understand any of the audio formats supported by your computer"
 msgstr "Program stika %s ne prepozna zvočnih zapisov podprtih na vašem sistemu"
 
-#: ../src/empathy-streamed-media-window.c:2250
-#: ../src/empathy-call-window.c:3028
+#: ../src/empathy-streamed-media-window.c:2243
+#: ../src/empathy-call-window.c:3077
 #, c-format
 msgid "%s's software does not understand any of the video formats supported by your computer"
 msgstr "Program stika %s ne prepozna video zapisov podprtih na vašem sistemu"
 
-#: ../src/empathy-streamed-media-window.c:2256
-#: ../src/empathy-call-window.c:3034
+#: ../src/empathy-streamed-media-window.c:2249
+#: ../src/empathy-call-window.c:3083
 #, c-format
 msgid "Can't establish a connection to %s. One of you might be on a network that does not allow direct connections."
 msgstr "Ni mogoče vzpostaviti povezave z %s. Morda je eden od odjemalcev je v omrežju, ki ne dovoli neposrednih povezav."
 
-#: ../src/empathy-streamed-media-window.c:2262
-#: ../src/empathy-call-window.c:3040
+#: ../src/empathy-streamed-media-window.c:2255
+#: ../src/empathy-call-window.c:3089
 msgid "There was a failure on the network"
 msgstr "Prišlo je do napake na omrežju"
 
-#: ../src/empathy-streamed-media-window.c:2266
-#: ../src/empathy-call-window.c:3044
+#: ../src/empathy-streamed-media-window.c:2259
+#: ../src/empathy-call-window.c:3093
 msgid "The audio formats necessary for this call are not installed on your computer"
 msgstr "Zvočni zapisi za ta klic niso nameščeni"
 
-#: ../src/empathy-streamed-media-window.c:2269
-#: ../src/empathy-call-window.c:3047
+#: ../src/empathy-streamed-media-window.c:2262
+#: ../src/empathy-call-window.c:3096
 msgid "The video formats necessary for this call are not installed on your computer"
 msgstr "Video zapisi za ta klic niso nameščeni"
 
-#: ../src/empathy-streamed-media-window.c:2279
-#: ../src/empathy-call-window.c:3059
+#: ../src/empathy-streamed-media-window.c:2272
+#: ../src/empathy-call-window.c:3108
 #, c-format
 msgid "Something unexpected happened in a Telepathy component. Please <a href=\"%s\">report this bug</a> and attach logs gathered from the 'Debug' window in the Help menu."
 msgstr "Prišlo je do nepričakovane napake v delu programa Telepathy. Pošljite <a href=\"%s\">poročilo o hrošču</a> in pripnite dnevnik razhroščevanja iz menija pomoči."
 
-#: ../src/empathy-streamed-media-window.c:2287
-#: ../src/empathy-call-window.c:3068
+#: ../src/empathy-streamed-media-window.c:2280
+#: ../src/empathy-call-window.c:3117
 msgid "There was a failure in the call engine"
 msgstr "Prišlo je do napake v klicnem programniku"
 
-#: ../src/empathy-streamed-media-window.c:2290
-#: ../src/empathy-call-window.c:3071
+#: ../src/empathy-streamed-media-window.c:2283
+#: ../src/empathy-call-window.c:3120
 msgid "The end of the stream was reached"
 msgstr "Dosežen je konec pretoka"
 
-#: ../src/empathy-streamed-media-window.c:2330
-#: ../src/empathy-call-window.c:3111
+#: ../src/empathy-streamed-media-window.c:2323
+#: ../src/empathy-call-window.c:3160
 msgid "Can't establish audio stream"
 msgstr "Ni mogoče vzpostaviti zvočnega pretoka"
 
-#: ../src/empathy-streamed-media-window.c:2340
-#: ../src/empathy-call-window.c:3121
+#: ../src/empathy-streamed-media-window.c:2333
+#: ../src/empathy-call-window.c:3170
 msgid "Can't establish video stream"
 msgstr "Ni mogoče vzpostaviti video pretoka"
 
@@ -3495,10 +3490,10 @@ msgstr "Preklopi prenos videa"
 
 #: ../src/empathy-call-window.ui.h:21
 #: ../src/empathy-streamed-media-window.ui.h:18
+#: ../src/empathy-call-window.c:2580
 #: ../src/empathy-call-window.c:2581
 #: ../src/empathy-call-window.c:2582
 #: ../src/empathy-call-window.c:2583
-#: ../src/empathy-call-window.c:2584
 msgid "Unknown"
 msgstr "Neznano"
 
@@ -3682,7 +3677,7 @@ msgid "Incoming video call"
 msgstr "Dohodni video klic"
 
 #: ../src/empathy-event-manager.c:521
-#: ../src/empathy-call-window.c:1553
+#: ../src/empathy-call-window.c:1555
 msgid "Incoming call"
 msgstr "Dohodni klic"
 
@@ -3699,7 +3694,7 @@ msgstr "%s vas kliče. Ali se želite javiti?"
 #: ../src/empathy-event-manager.c:529
 #: ../src/empathy-event-manager.c:730
 #: ../src/empathy-event-manager.c:763
-#: ../src/empathy-call-window.c:1559
+#: ../src/empathy-call-window.c:1561
 #, c-format
 msgid "Incoming call from %s"
 msgstr "Dohodni klic od %s"
@@ -3719,7 +3714,7 @@ msgstr "_Odgovori z videom"
 
 #: ../src/empathy-event-manager.c:730
 #: ../src/empathy-event-manager.c:763
-#: ../src/empathy-call-window.c:1559
+#: ../src/empathy-call-window.c:1561
 #, c-format
 msgid "Incoming video call from %s"
 msgstr "Dohodni video klic od %s"
@@ -3763,7 +3758,7 @@ msgid "Incoming file transfer from %s"
 msgstr "Prihajajoč prenos datoteke od %s"
 
 #: ../src/empathy-event-manager.c:1145
-#: ../src/empathy-main-window.c:378
+#: ../src/empathy-main-window.c:377
 msgid "Password required"
 msgstr "Zahtevano geslo"
 
@@ -3916,61 +3911,61 @@ msgstr "Protokol"
 msgid "Source"
 msgstr "Vir"
 
-#: ../src/empathy-main-window.c:395
+#: ../src/empathy-main-window.c:394
 msgid "Provide Password"
 msgstr "Vpis gesla"
 
-#: ../src/empathy-main-window.c:401
+#: ../src/empathy-main-window.c:400
 msgid "Disconnect"
 msgstr "Prekini povezavo"
 
-#: ../src/empathy-main-window.c:642
+#: ../src/empathy-main-window.c:637
 msgid "No match found"
 msgstr "Ni najdenih zadetkov."
 
-#: ../src/empathy-main-window.c:750
+#: ../src/empathy-main-window.c:745
 #, c-format
 msgid "Sorry, %s accounts can’t be used until your %s software is updated."
 msgstr "Računov %s ni mogoče uporabljati, dokler ni posodobljena programska oprema %s."
 
-#: ../src/empathy-main-window.c:818
+#: ../src/empathy-main-window.c:813
 msgid "Update software..."
 msgstr "Posodobitev programske opreme ..."
 
-#: ../src/empathy-main-window.c:824
-#: ../src/empathy-main-window.c:949
+#: ../src/empathy-main-window.c:819
+#: ../src/empathy-main-window.c:940
 msgid "Close"
 msgstr "Zapri"
 
-#: ../src/empathy-main-window.c:937
+#: ../src/empathy-main-window.c:928
 msgid "Reconnect"
 msgstr "Ponovno se poveži"
 
-#: ../src/empathy-main-window.c:943
+#: ../src/empathy-main-window.c:934
 msgid "Edit Account"
 msgstr "Uredi račun"
 
 #. Translators: this string will be something like:
 #. *   Top up My Account ($1.23)..."
-#: ../src/empathy-main-window.c:1088
+#: ../src/empathy-main-window.c:1073
 #, c-format
 msgid "Top up %s (%s)..."
 msgstr "Povišaj %s (%s) ..."
 
-#: ../src/empathy-main-window.c:1135
+#: ../src/empathy-main-window.c:1120
 msgid "Top up account credit"
 msgstr "Povišaj znesek na računu"
 
 #. top up button
-#: ../src/empathy-main-window.c:1206
+#: ../src/empathy-main-window.c:1191
 msgid "Top Up..."
 msgstr "Povišaj ..."
 
-#: ../src/empathy-main-window.c:1949
+#: ../src/empathy-main-window.c:1934
 msgid "Contact"
 msgstr "Stik"
 
-#: ../src/empathy-main-window.c:2324
+#: ../src/empathy-main-window.c:2309
 msgid "Contact List"
 msgstr "Seznam stikov"
 
@@ -4124,79 +4119,79 @@ msgstr "Seznam klepetalnic"
 msgid "_Room:"
 msgstr "_Klepetalnica:"
 
-#: ../src/empathy-preferences.c:169
+#: ../src/empathy-preferences.c:166
 msgid "Message received"
 msgstr "Sporočilo je bilo prejeto"
 
-#: ../src/empathy-preferences.c:170
+#: ../src/empathy-preferences.c:167
 msgid "Message sent"
 msgstr "Sporočilo je bilo poslano"
 
-#: ../src/empathy-preferences.c:171
+#: ../src/empathy-preferences.c:168
 msgid "New conversation"
 msgstr "Nov pogovor"
 
-#: ../src/empathy-preferences.c:172
+#: ../src/empathy-preferences.c:169
 msgid "Contact goes online"
 msgstr "Stik se je povezal"
 
-#: ../src/empathy-preferences.c:173
+#: ../src/empathy-preferences.c:170
 msgid "Contact goes offline"
 msgstr "Stik se je odjavil"
 
-#: ../src/empathy-preferences.c:174
+#: ../src/empathy-preferences.c:171
 msgid "Account connected"
 msgstr "Povezava z računom je vzpostavljena"
 
-#: ../src/empathy-preferences.c:175
+#: ../src/empathy-preferences.c:172
 msgid "Account disconnected"
 msgstr "Povezava z računom je prekinjena"
 
-#: ../src/empathy-preferences.c:484
+#: ../src/empathy-preferences.c:475
 msgid "Language"
 msgstr "Jezik"
 
 #. translators: Contact name for the chat theme preview
-#: ../src/empathy-preferences.c:734
+#: ../src/empathy-preferences.c:725
 msgid "Juliet"
 msgstr "Julija"
 
 #. translators: Contact name for the chat theme preview
-#: ../src/empathy-preferences.c:741
+#: ../src/empathy-preferences.c:732
 msgid "Romeo"
 msgstr "Romeo"
 
 #. translators: Quote from Romeo & Julier, for chat theme preview
-#: ../src/empathy-preferences.c:747
+#: ../src/empathy-preferences.c:738
 msgid "O Romeo, Romeo, wherefore art thou Romeo?"
 msgstr "O, Romeo, Romeo, zakaj li Romeo?!"
 
 #. translators: Quote from Romeo & Julier, for chat theme preview
-#: ../src/empathy-preferences.c:750
+#: ../src/empathy-preferences.c:741
 msgid "Deny thy father and refuse thy name;"
 msgstr "Odreci se rodu, odvrzi ime,"
 
 #. translators: Quote from Romeo & Julier, for chat theme preview
-#: ../src/empathy-preferences.c:753
+#: ../src/empathy-preferences.c:744
 msgid "Or if thou wilt not, be but sworn my love"
 msgstr "če ne, prisezi večno mi ljubezen,"
 
 #. translators: Quote from Romeo & Julier, for chat theme preview
-#: ../src/empathy-preferences.c:756
+#: ../src/empathy-preferences.c:747
 msgid "And I'll no longer be a Capulet."
 msgstr "in dlje nisem Kapuletova."
 
 #. translators: Quote from Romeo & Julier, for chat theme preview
-#: ../src/empathy-preferences.c:759
+#: ../src/empathy-preferences.c:750
 msgid "Shall I hear more, or shall I speak at this?"
 msgstr "Al' bi poslušal še, al govoril? "
 
 #. translators: Quote from Romeo & Julier, for chat theme preview
-#: ../src/empathy-preferences.c:762
+#: ../src/empathy-preferences.c:753
 msgid "Juliet has disconnected"
 msgstr "Julija je prekinila povezavo."
 
-#: ../src/empathy-preferences.c:1175
+#: ../src/empathy-preferences.c:1157
 msgid "Preferences"
 msgstr "Možnosti"
 
@@ -4248,104 +4243,96 @@ msgstr "Omogoči preverjanje črkovanja za jezike:"
 msgid "General"
 msgstr "Splošno"
 
-#: ../src/empathy-preferences.ui.h:15
-msgid "Input level:"
-msgstr "Vhodna raven:"
-
 #: ../src/empathy-preferences.ui.h:16
-msgid "Input volume:"
-msgstr "Vhodna glasnost:"
-
-#: ../src/empathy-preferences.ui.h:18
 msgid "Location sources:"
 msgstr "Mesta virov:"
 
-#: ../src/empathy-preferences.ui.h:19
+#: ../src/empathy-preferences.ui.h:17
 msgid "Log conversations"
 msgstr "Beleži pogovore"
 
-#: ../src/empathy-preferences.ui.h:20
+#: ../src/empathy-preferences.ui.h:18
 msgid "Notifications"
 msgstr "Obvestila"
 
-#: ../src/empathy-preferences.ui.h:21
+#: ../src/empathy-preferences.ui.h:19
 msgid "Play sound for events"
 msgstr "Predvajaj zvoke ob dogodkih"
 
-#: ../src/empathy-preferences.ui.h:22
+#: ../src/empathy-preferences.ui.h:20
 msgid "Privacy"
 msgstr "Zasebnost"
 
-#: ../src/empathy-preferences.ui.h:23
+#: ../src/empathy-preferences.ui.h:21
 msgid "Reduced location accuracy means that nothing more precise than your city, state and country will be published.  GPS coordinates will be accurate to 1 decimal place."
 msgstr "Zmanjšana natančnost mesta pomeni, da ne bo objavljenih podatkov natančnejših od mesta in države. Koordinate GPS bodo natančne na eno decimalno mesto."
 
-#: ../src/empathy-preferences.ui.h:24
+#: ../src/empathy-preferences.ui.h:22
 msgid "Show _smileys as images"
 msgstr "Pokaži _smeške kot slike"
 
-#: ../src/empathy-preferences.ui.h:25
+#: ../src/empathy-preferences.ui.h:23
 msgid "Show contact _list in rooms"
 msgstr "Pokaži _seznam stikov v klepetalnicah"
 
-#: ../src/empathy-preferences.ui.h:26
+#: ../src/empathy-preferences.ui.h:24
 msgid "Sounds"
 msgstr "Zvoki"
 
-#: ../src/empathy-preferences.ui.h:27
+#: ../src/empathy-preferences.ui.h:25
 msgid "Spell Checking"
 msgstr "Preverjanje črkovanja"
 
-#: ../src/empathy-preferences.ui.h:28
+#: ../src/empathy-preferences.ui.h:26
 msgid "The list of languages reflects only the languages for which you have a dictionary installed."
 msgstr "Na seznamu jezikov so le tisti, za katere imate nameščene slovarje."
 
-#: ../src/empathy-preferences.ui.h:29
+#: ../src/empathy-preferences.ui.h:27
 msgid "Themes"
 msgstr "Teme"
 
-#: ../src/empathy-preferences.ui.h:30
+#: ../src/empathy-preferences.ui.h:28
 msgid "Use _echo cancellation to improve call quality"
 msgstr "Uporabi _podporo odpravljanja odmevov za izboljšanje kakovosti klica."
 
-#: ../src/empathy-preferences.ui.h:31
+#: ../src/empathy-preferences.ui.h:29
 msgid "Variant:"
 msgstr "Različica:"
 
-#: ../src/empathy-preferences.ui.h:32
+#: ../src/empathy-preferences.ui.h:30
 msgid "_Automatically connect on startup"
 msgstr "Samodejno _poveži ob zagonu "
 
-#: ../src/empathy-preferences.ui.h:33
+#: ../src/empathy-preferences.ui.h:31
 msgid "_Cellphone"
 msgstr "_Mobilni telefon"
 
-#: ../src/empathy-preferences.ui.h:34
+#: ../src/empathy-preferences.ui.h:32
 msgid "_Enable bubble notifications"
 msgstr "_Omogoči obvestila v oblačkih"
 
-#: ../src/empathy-preferences.ui.h:35
+#: ../src/empathy-preferences.ui.h:33
 msgid "_Enable sound notifications"
 msgstr "_Omogoči zvočna obvestila"
 
-#: ../src/empathy-preferences.ui.h:36
+#: ../src/empathy-preferences.ui.h:34
 msgid "_GPS"
 msgstr "_GPS"
 
-#: ../src/empathy-preferences.ui.h:37
+#: ../src/empathy-preferences.ui.h:35
 msgid "_Network (IP, Wi-Fi)"
 msgstr "_Omrežje (IP, Wifi)"
 
-#: ../src/empathy-preferences.ui.h:38
+#: ../src/empathy-preferences.ui.h:36
 msgid "_Open new chats in separate windows"
 msgstr "N_ove klepete odpiraj v ločenih oknih"
 
-#: ../src/empathy-preferences.ui.h:39
+#: ../src/empathy-preferences.ui.h:37
 msgid "_Publish location to my contacts"
 msgstr "O_bjavi mesto mojim stikom"
 
 #. To translators: The longitude and latitude are rounded to closest 0,1 degrees, so for example 146,2345° is rounded to round(146,2345*10)/10 = 146,2 degrees.
-#: ../src/empathy-preferences.ui.h:41
+#: ../src/empathy-preferences.ui.h:39
 msgid "_Reduce location accuracy"
 msgstr "_Zmanjšaj natančnost mesta"
 
@@ -4470,56 +4457,56 @@ msgstr "Raven"
 msgid "The selected connection manager does not support the remote debugging extension."
 msgstr "Izbrani upravljalnik povezav ne podpira razširitve za oddaljeno razhroščevanje."
 
-#: ../src/empathy-invite-participant-dialog.c:186
-#: ../src/empathy-invite-participant-dialog.c:214
+#: ../src/empathy-invite-participant-dialog.c:197
+#: ../src/empathy-invite-participant-dialog.c:225
 msgid "Invite Participant"
 msgstr "Povabi udeležence"
 
-#: ../src/empathy-invite-participant-dialog.c:187
+#: ../src/empathy-invite-participant-dialog.c:198
 msgid "Choose a contact to invite into the conversation:"
 msgstr "Izbor stika za povabilo v pogovor:"
 
-#: ../src/empathy-invite-participant-dialog.c:210
+#: ../src/empathy-invite-participant-dialog.c:221
 msgid "Invite"
 msgstr "Povabi"
 
-#: ../src/empathy-accounts.c:184
+#: ../src/empathy-accounts.c:183
 msgid "Don't display any dialogs; do any work (eg, importing) and exit"
 msgstr "Ne pokaži pogovornih oken; opravi nalogo (na primer: uvažanje) in končaj"
 
-#: ../src/empathy-accounts.c:188
+#: ../src/empathy-accounts.c:187
 msgid "Don't display any dialogs unless there are only \"People Nearby\" accounts"
 msgstr "Ne prikaži pogovornega okna, če so na voljo le računov \"uporabnikov v bližini\" "
 
-#: ../src/empathy-accounts.c:192
+#: ../src/empathy-accounts.c:191
 msgid "Initially select given account (eg, gabble/jabber/foo_40example_2eorg0)"
 msgstr "Predhodno izberite račun (na primer: gabble/jabber/foo_40primer_2eorg0)"
 
-#: ../src/empathy-accounts.c:194
+#: ../src/empathy-accounts.c:193
 msgid "<account-id>"
 msgstr "<id-računa>"
 
-#: ../src/empathy-accounts.c:197
+#: ../src/empathy-accounts.c:196
 msgid "Show account assistant"
 msgstr "Pokaži pomočnika za ustvarjanje računov"
 
-#: ../src/empathy-accounts.c:203
+#: ../src/empathy-accounts.c:202
 msgid "- Empathy Accounts"
 msgstr "- Empathy računi"
 
-#: ../src/empathy-accounts.c:242
+#: ../src/empathy-accounts.c:238
 msgid "Empathy Accounts"
 msgstr "Empathy računi"
 
-#: ../src/empathy-debugger.c:70
+#: ../src/empathy-debugger.c:69
 msgid "Show a particular service"
 msgstr "Pokaži posebno storitev"
 
-#: ../src/empathy-debugger.c:75
+#: ../src/empathy-debugger.c:74
 msgid "- Empathy Debugger"
 msgstr "- razhroščevalnik Empathy"
 
-#: ../src/empathy-debugger.c:114
+#: ../src/empathy-debugger.c:113
 msgid "Empathy Debugger"
 msgstr "Empathy razhroščevalnik"
 
@@ -4527,39 +4514,39 @@ msgstr "Empathy razhroščevalnik"
 msgid "- Empathy Chat Client"
 msgstr "- sporočilnik Empathy"
 
-#: ../src/empathy-notifications-approver.c:203
+#: ../src/empathy-notifications-approver.c:190
 msgid "Respond"
 msgstr "Odgovori"
 
-#: ../src/empathy-notifications-approver.c:217
-#: ../src/empathy-call-window.c:1563
+#: ../src/empathy-notifications-approver.c:204
+#: ../src/empathy-call-window.c:1565
 msgid "Reject"
 msgstr "Zavrni"
 
-#: ../src/empathy-notifications-approver.c:222
-#: ../src/empathy-notifications-approver.c:227
-#: ../src/empathy-call-window.c:1564
+#: ../src/empathy-notifications-approver.c:209
+#: ../src/empathy-notifications-approver.c:214
+#: ../src/empathy-call-window.c:1566
 msgid "Answer"
 msgstr "Odgovori"
 
-#: ../src/empathy-notifications-approver.c:227
+#: ../src/empathy-notifications-approver.c:214
 msgid "Answer with video"
 msgstr "Odgovori z videom"
 
-#: ../src/empathy-notifications-approver.c:235
-#: ../src/empathy-notifications-approver.c:245
+#: ../src/empathy-notifications-approver.c:222
+#: ../src/empathy-notifications-approver.c:232
 msgid "Decline"
 msgstr "Odkloni"
 
-#: ../src/empathy-notifications-approver.c:239
-#: ../src/empathy-notifications-approver.c:250
+#: ../src/empathy-notifications-approver.c:226
+#: ../src/empathy-notifications-approver.c:237
 msgid "Accept"
 msgstr "Sprejmi"
 
 #. translators: the 'Provide' button is displayed in a notification
 #. * bubble when Empathy is asking for an account password; clicking on it
 #. * brings the password popup.
-#: ../src/empathy-notifications-approver.c:260
+#: ../src/empathy-notifications-approver.c:247
 msgid "Provide"
 msgstr "Zagotovi"
 
@@ -4570,39 +4557,39 @@ msgstr "%s je klical med drugim pogovorom."
 
 #. Translators: this is an "Info" label. It should be as short
 #. * as possible.
-#: ../src/empathy-call-window.c:1173
-#: ../src/empathy-call-window.c:1196
+#: ../src/empathy-call-window.c:1172
+#: ../src/empathy-call-window.c:1195
 msgid "i"
 msgstr "i"
 
-#: ../src/empathy-call-window.c:2880
+#: ../src/empathy-call-window.c:2929
 msgid "On hold"
 msgstr "Zadržano"
 
-#: ../src/empathy-call-window.c:2883
+#: ../src/empathy-call-window.c:2932
 msgid "Mute"
 msgstr "Utišaj"
 
-#: ../src/empathy-call-window.c:2885
+#: ../src/empathy-call-window.c:2934
 msgid "Duration"
 msgstr "Trajanje"
 
 #. Translators: 'status - minutes:seconds' the caller has been connected
-#: ../src/empathy-call-window.c:2888
+#: ../src/empathy-call-window.c:2937
 #, c-format
 msgid "%s — %d:%02dm"
 msgstr "%s — %d:%02dm"
 
-#: ../src/empathy-call-window.c:3158
+#: ../src/empathy-call-window.c:3207
 #, c-format
 msgid "Your current balance is %s."
 msgstr "Trenutno stanje je %s."
 
-#: ../src/empathy-call-window.c:3162
+#: ../src/empathy-call-window.c:3211
 msgid "Sorry, you don’t have enough credit for that call."
 msgstr "Na računu ni dovolj visokega zneska za vzpostavitev klica."
 
-#: ../src/empathy-call-window.c:3164
+#: ../src/empathy-call-window.c:3213
 msgid "Top Up"
 msgstr "Povišaj"
 
@@ -4610,6 +4597,18 @@ msgstr "Povišaj"
 msgid "_Match case"
 msgstr "_Upoštevaj velikost črk"
 
+#~ msgid "Call volume"
+#~ msgstr "Glasnost klica"
+
+#~ msgid "Call volume, as a percentage."
+#~ msgstr "Glasnost klica kot odstotek."
+
+#~ msgid "Input level:"
+#~ msgstr "Vhodna raven:"
+
+#~ msgid "Input volume:"
+#~ msgstr "Vhodna glasnost:"
+
 #~ msgid "Set your presence and current status"
 #~ msgstr "Nastavitev navzočnosti in trenutnega stanja"
 
index 7ce0252429d82d9b65c6c0f62b3b787a1c854411..1f83f27e61c1154f86ebfeea1cc5b6e5084ff34d 100644 (file)
@@ -23,9 +23,9 @@ msgstr ""
 "Project-Id-Version: empathy master\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
 "product=empathy&keywords=I18N+L10N&component=General\n"
-"POT-Creation-Date: 2011-09-26 10:41+0000\n"
-"PO-Revision-Date: 2011-09-27 16:14+0000\n"
-"Last-Translator: Julius Wong <villahwong@gmail.com>\n"
+"POT-Creation-Date: 2011-11-24 11:51+0000\n"
+"PO-Revision-Date: 2011-11-25 21:46+0800\n"
+"Last-Translator: Yangtse Su <yangtsesu@gmail.com>\n"
 "Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -54,425 +54,417 @@ msgid "Always open a separate chat window for new chats."
 msgstr "总是为新聊天打开单独的聊天窗口。"
 
 #: ../data/org.gnome.Empathy.gschema.xml.in.h:2
-msgid "Call volume"
-msgstr "来电音量"
-
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:3
-msgid "Call volume, as a percentage."
-msgstr "来电音量,以百分比计。"
-
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:4
 msgid "Camera device"
 msgstr "相机设备"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:5
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:3
 msgid "Camera position"
 msgstr "相机位置"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:6
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:4
 msgid ""
 "Character to add after nickname when using nick completion (tab) in group "
 "chat."
 msgstr "在群聊中使用昵称补全时在昵称后面添加的字符。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:7
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:5
 msgid "Chat window theme"
 msgstr "聊天窗口主题"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:8
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:6
 msgid "Chat window theme variant"
 msgstr "聊天窗口主题衍生"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:9
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:7
 msgid ""
 "Comma-separated list of spell checker languages to use (e.g. \"en, fr, nl\")."
 msgstr "用于拼写检查器的语言的列表,以逗号分隔(例如:en, fr, nl)。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:10
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:8
 msgid "Compact contact list"
 msgstr "紧凑显示联系人列表"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:11
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:9
 msgid "Connection managers should be used"
 msgstr "应该使用连接管理器"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:12
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:10
 msgid "Contact list sort criterion"
 msgstr "联系人列表排序条件"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:13
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:11
+msgid "D-Bus object path of the last account selected to join a room."
+msgstr ""
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:12
 msgid "Default camera device to use in video calls, e.g. /dev/video0."
 msgstr "视频呼叫时默认使用的相机设备,例如 /dev/video0。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:14
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:13
 msgid "Default directory to select an avatar image from"
 msgstr "默认的选取头像图片的目录"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:15
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:14
 msgid "Disable popup notifications when away"
 msgstr "离开时禁用弹出提示"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:16
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:15
 msgid "Disable sounds when away"
 msgstr "离开时禁用声音"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:17
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:16
 msgid "Display incoming events in the status area"
 msgstr "在状态栏显示呼入事件。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:18
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:17
 msgid ""
 "Display incoming events in the status area. If false, present them to the "
 "user immediately."
 msgstr "在状态栏显示呼入事件。如果为 false 则立即显示给用户。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:19
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:18
 msgid "Echo cancellation support"
 msgstr "回声抑制支持"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:20
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:19
 msgid "Empathy can publish the user's location"
 msgstr "Empathy 能够发布用户的位置"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:21
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:20
 msgid "Empathy can use the GPS to guess the location"
 msgstr "Empathy 能够通过 GPS 来估计位置"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:22
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:21
 msgid "Empathy can use the cellular network to guess the location"
 msgstr "Empathy 能够通过手机来估计位置"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:23
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:22
 msgid "Empathy can use the network to guess the location"
 msgstr "Empathy 能够通过网络来估计位置"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:24
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:23
 msgid "Empathy default download folder"
 msgstr "Empathy 默认下载文件夹"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:25
-msgid "Empathy has migrated butterfly logs"
-msgstr "Empathy 已经迁移至 telepathy-butterfly 日志"
-
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:26
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:24
 msgid "Empathy should auto-away when idle"
 msgstr "Empathy 空闲时是否自动离开"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:27
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:25
 msgid "Empathy should auto-connect on startup"
 msgstr "Empathy 启动时是否自动连接"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:28
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:26
 msgid "Empathy should reduce the location's accuracy"
 msgstr "降低 Emapthy 位置信息的准确度"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:29
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:27
 msgid "Empathy should use the avatar of the contact as the chat window icon"
 msgstr "Empathy 是否使用联系人头像作为聊天窗口图标"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:30
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:28
 msgid "Enable WebKit Developer Tools"
 msgstr "启用 WebKit 开发工具"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:31
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:29
 msgid "Enable popup notifications for new messages"
 msgstr "启用新消息弹出提示"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:32
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:30
 msgid "Enable spell checker"
 msgstr "启用拼写检查器"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:33
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:31
 msgid "Hide main window"
 msgstr "隐藏主窗口"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:34
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:32
 msgid "Hide the main window."
 msgstr "隐藏主窗口。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:35
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:33
+msgid "Last account selected in Join Room dialog"
+msgstr "在加入聊天室对话框中最后选择的帐号"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:34
 msgid "Nick completed character"
 msgstr "昵称补全字符"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:36
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:35
 msgid "Open new chats in separate windows"
 msgstr "在单独窗口中打开新聊天"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:37
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:36
 msgid "Path of the Adium theme to use"
 msgstr "Adium 主题的路径"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:38
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:37
 msgid "Path of the Adium theme to use if the theme used for chat is Adium."
 msgstr "如果聊天使用 Adium 主题,使用 Adium 主题的路径"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:39
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:38
 msgid "Play a sound for incoming messages"
 msgstr "收到消息时播放声音"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:40
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:39
 msgid "Play a sound for new conversations"
 msgstr "新对话时播放声音"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:41
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:40
 msgid "Play a sound for outgoing messages"
 msgstr "发出消息时播放声音"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:42
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:41
 msgid "Play a sound when a contact logs in"
 msgstr "联系人登录时播放声音"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:43
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:42
 msgid "Play a sound when a contact logs out"
 msgstr "联系人注销时播放声音"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:44
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:43
 msgid "Play a sound when we log in"
 msgstr "登录时播放声音"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:45
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:44
 msgid "Play a sound when we log out"
 msgstr "注销时播放声音"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:46
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:45
 msgid "Pop up notifications if the chat isn't focused"
 msgstr "如果聊天窗口不是焦点则弹出消息通知"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:47
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:46
 msgid "Pop up notifications when a contact logs in"
 msgstr "当联系人登录时弹出通知"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:48
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:47
 msgid "Pop up notifications when a contact logs out"
 msgstr "当联系人注销时弹出通知"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:49
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:48
 msgid "Position the camera preview should be during a call."
 msgstr "在通话时摄像头预览的位置。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:50
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:49
 msgid "Show Balance in contact list"
 msgstr "在联系人列表中显示余额"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:51
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:50
 msgid "Show avatars"
 msgstr "显示头像"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:52
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:51
 msgid "Show contact list in rooms"
 msgstr "在聊天室显示联系人列表"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:53
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:52
 msgid "Show hint about closing the main window"
 msgstr "关闭主窗口时显示提示"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:54
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:53
 msgid "Show offline contacts"
 msgstr "显示离线联系人"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:55
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:54
 msgid "Show protocols"
 msgstr "显示协议"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:56
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:55
 msgid "Spell checking languages"
 msgstr "拼写检查器语言"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:57
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:56
 msgid "The default folder to save file transfers in."
 msgstr "保存传送文件的默认文件夹。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:58
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:57
 msgid "The last directory that an avatar image was chosen from."
 msgstr "上次选取头像图片的目录。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:59
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:58
 msgid "The position for the chat window side pane"
 msgstr "聊天窗口边栏的位置"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:60
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:59
 msgid "The stored position (in pixels) of the chat window side pane."
 msgstr "聊天窗口边栏保存的位置(像素)。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:61
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:60
 msgid "The theme that is used to display the conversation in chat windows."
 msgstr "用于在聊天窗口中显示会话的主题。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:62
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:61
 msgid ""
 "The theme variant that is used to display the conversation in chat windows."
 msgstr "用于在聊天窗口中显示会话的主题。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:63
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:62
 msgid "Use graphical smileys"
 msgstr "使用表情图标"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:64
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:63
 msgid "Use notification sounds"
 msgstr "使用通知声音"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:65
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:64
 msgid "Use theme for chat rooms"
 msgstr "为聊天室使用主题"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:66
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:65
 msgid "Whether Empathy can publish the user's location to their contacts."
 msgstr "是否允许 Empathy 将用户的位置共享给联系人"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:67
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:66
 msgid "Whether Empathy can use the GPS to guess the location."
 msgstr "是否允许 Empathy 通过 GPS 估计位置"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:68
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:67
 msgid "Whether Empathy can use the cellular network to guess the location."
 msgstr "是否允许 Empathy 通过手机网络估计位置"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:69
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:68
 msgid "Whether Empathy can use the network to guess the location."
 msgstr "是否允许 Empathy 通过网络估计位置"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:70
-msgid "Whether Empathy has migrated butterfly logs."
-msgstr "Empathy 是否已经迁移至 telepathy-butterfly 日志。"
-
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:71
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:69
 msgid "Whether Empathy should automatically log into your accounts on startup."
 msgstr "Empathy 是否在启动时自动登入您的帐号。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:72
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:70
 msgid ""
 "Whether Empathy should go into away mode automatically if the user is idle."
 msgstr "Empathy 是否应在用户空闲时自动进入离开模式。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:73
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:71
 msgid ""
 "Whether Empathy should reduce the location's accuracy for privacy reasons."
 msgstr "是否出于隐私原因降低 Empathy 位置信息的准确度。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:74
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:72
 msgid ""
 "Whether Empathy should use the avatar of the contact as the chat window icon."
 msgstr "是否使用联系人的头像作为聊天窗口的图标。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:75
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:73
 msgid ""
 "Whether WebKit developer tools, such as the Web Inspector, should be enabled."
 msgstr "WebKit 开发工具,例如 Web Inspector 是否应该启用。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:76
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:74
 msgid ""
 "Whether connectivity managers should be used to automatically disconnect/"
 "reconnect."
 msgstr "是否使用连接管理器自动断开连接或重新连接。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:77
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:75
 msgid ""
 "Whether to check words typed against the languages you want to check with."
 msgstr "是否对您想要作拼写检查的单词作拼写检查。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:78
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:76
 msgid "Whether to convert smileys into graphical images in conversations."
 msgstr "对话时是否将表情符号转换为表情图标。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:79
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:77
 msgid "Whether to enable Pulseaudio's echo cancellation filter."
 msgstr "是否启用 Pulseaudio 的回声抑制过滤器。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:80
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:78
 msgid "Whether to play a sound to notify of contacts logging into the network."
 msgstr "是否需要联系人上线提示音。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:81
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:79
 msgid ""
 "Whether to play a sound to notify of contacts logging out of the network."
 msgstr "是否需要联系人下线提示音。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:82
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:80
 msgid "Whether to play a sound to notify of events."
 msgstr "是否需要事件提示音。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:83
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:81
 msgid "Whether to play a sound to notify of incoming messages."
 msgstr "是否需要消息到达提示音。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:84
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:82
 msgid "Whether to play a sound to notify of new conversations."
 msgstr "是否需要新会话提示音。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:85
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:83
 msgid "Whether to play a sound to notify of outgoing messages."
 msgstr "是否为外出消息使用声音提示。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:86
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:84
 msgid "Whether to play a sound when logging into a network."
 msgstr "当联网登录时是否播放提示音。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:87
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:85
 msgid "Whether to play a sound when logging out of a network."
 msgstr "当网络断开时是否播放提示音。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:88
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:86
 msgid "Whether to play sound notifications when away or busy."
 msgstr "当离开或忙碌时是否使用声音提示。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:89
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:87
 msgid "Whether to show a popup notification when a contact goes offline."
 msgstr "当联系人离线时是否显示弹出通知。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:90
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:88
 msgid "Whether to show a popup notification when a contact goes online."
 msgstr "当联系人上线时是否显示弹出通知"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:91
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:89
 msgid ""
 "Whether to show a popup notification when receiving a new message even if "
 "the chat is already opened, but not focused."
 msgstr "如果聊天窗口已开启,但不是当前窗口,接收新消息时是否弹出提示。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:92
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:90
 msgid "Whether to show a popup notification when receiving a new message."
 msgstr "当收到新消息时是否弹出显示提示框。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:93
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:91
 msgid "Whether to show account balances in the contact list."
 msgstr "是否在联系人列表和聊天窗口中显示余额。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:94
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:92
 msgid ""
 "Whether to show avatars for contacts in the contact list and chat windows."
 msgstr "是否在联系人列表和聊天窗口中显示头像。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:95
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:93
 msgid "Whether to show contacts that are offline in the contact list."
 msgstr "是否显示联系人清单中离线的联系人。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:96
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:94
 msgid "Whether to show popup notifications when away or busy."
 msgstr "当离开或忙碌时是否弹出显示提示框。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:97
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:95
 msgid "Whether to show protocols for contacts in the contact list."
 msgstr "是否在联系人列表和聊天窗口中显示协议。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:98
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:96
 msgid "Whether to show the contact list in chat rooms."
 msgstr "是否在聊天室显示联系人列表。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:99
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:97
 msgid "Whether to show the contact list in compact mode."
 msgstr "是否以紧凑模式显示联系人列表。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:100
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:98
 msgid ""
 "Whether to show the message dialog about closing the main window with the "
 "'x' button in the title bar."
 msgstr "当使用标题栏中的“X”按钮关闭主窗口时是否显示提示对话框。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:101
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:99
 msgid "Whether to use the theme for chat rooms."
 msgstr "是否对聊天室使用主题。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:102
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:100
 msgid ""
 "Which criterion to use when sorting the contact list. Default is to sort by "
 "the contact's name with the value \"name\". A value of \"state\" will sort "
@@ -487,23 +479,23 @@ msgstr "管理消息和 VoIP 帐号"
 
 #. Tweak the dialog
 #: ../data/empathy-accounts.desktop.in.in.h:2
-#: ../src/empathy-accounts-dialog.c:2324
+#: ../src/empathy-accounts-dialog.c:2312
 msgid "Messaging and VoIP Accounts"
 msgstr "消息和 VoIP 帐号"
 
-#: ../libempathy/empathy-ft-handler.c:825
+#: ../libempathy/empathy-ft-handler.c:838
 msgid "File transfer completed, but the file was corrupted"
 msgstr "文件传输完成,但该文件已损坏"
 
-#: ../libempathy/empathy-ft-handler.c:1111
+#: ../libempathy/empathy-ft-handler.c:1124
 msgid "File transfer not supported by remote contact"
 msgstr "文件传输不支持远程连接"
 
-#: ../libempathy/empathy-ft-handler.c:1167
+#: ../libempathy/empathy-ft-handler.c:1180
 msgid "The selected file is not a regular file"
 msgstr "所选文件是非正常的文件"
 
-#: ../libempathy/empathy-ft-handler.c:1176
+#: ../libempathy/empathy-ft-handler.c:1189
 msgid "The selected file is empty"
 msgstr "所选文件是空的"
 
@@ -523,35 +515,35 @@ msgstr "与 %s 通话"
 msgid "Call from %s"
 msgstr "来电:%s"
 
-#: ../libempathy/empathy-tp-file.c:268
+#: ../libempathy/empathy-tp-file.c:258
 msgid "Socket type not supported"
 msgstr "不支持 Socket 类型"
 
-#: ../libempathy/empathy-tp-file.c:387
+#: ../libempathy/empathy-tp-file.c:377
 msgid "No reason was specified"
 msgstr "未指定原因"
 
-#: ../libempathy/empathy-tp-file.c:390
+#: ../libempathy/empathy-tp-file.c:380
 msgid "The change in state was requested"
 msgstr "需要状态改变信息"
 
-#: ../libempathy/empathy-tp-file.c:393
+#: ../libempathy/empathy-tp-file.c:383
 msgid "You canceled the file transfer"
 msgstr "您取消了文件传输"
 
-#: ../libempathy/empathy-tp-file.c:396
+#: ../libempathy/empathy-tp-file.c:386
 msgid "The other participant canceled the file transfer"
 msgstr "另外的参与者取消了文件的传输"
 
-#: ../libempathy/empathy-tp-file.c:399
+#: ../libempathy/empathy-tp-file.c:389
 msgid "Error while trying to transfer the file"
 msgstr "当传输这个文件的时候发生错误"
 
-#: ../libempathy/empathy-tp-file.c:402
+#: ../libempathy/empathy-tp-file.c:392
 msgid "The other participant is unable to transfer the file"
 msgstr "另外的参与者无法传输这个文件"
 
-#: ../libempathy/empathy-tp-file.c:405 ../libempathy/empathy-utils.c:312
+#: ../libempathy/empathy-tp-file.c:395 ../libempathy/empathy-utils.c:312
 msgid "Unknown reason"
 msgstr "未知原因"
 
@@ -591,6 +583,7 @@ msgstr "状态已设置为离线"
 
 #: ../libempathy/empathy-utils.c:288 ../libempathy/empathy-utils.c:322
 #: ../libempathy-gtk/empathy-call-utils.c:49
+#: ../libempathy-gtk/empathy-new-message-dialog.c:82
 msgid "Network error"
 msgstr "网络错误"
 
@@ -692,20 +685,23 @@ msgid ""
 "chain, exceed the limits imposed by the cryptography library"
 msgstr "服务器证书的长度——或服务器证书链的深度——超出了加密库的硬性限制"
 
-#: ../libempathy/empathy-utils.c:529
-#: ../libempathy-gtk/empathy-contact-list-store.h:73
+#: ../libempathy/empathy-utils.c:372
+msgid "Your software is too old"
+msgstr "你的软件版本太旧了"
+
+#: ../libempathy/empathy-utils.c:531
 msgid "People Nearby"
 msgstr "附近的人"
 
-#: ../libempathy/empathy-utils.c:534
+#: ../libempathy/empathy-utils.c:536
 msgid "Yahoo! Japan"
 msgstr "Yahoo! 日本"
 
-#: ../libempathy/empathy-utils.c:563
+#: ../libempathy/empathy-utils.c:565
 msgid "Google Talk"
 msgstr "Google Talk"
 
-#: ../libempathy/empathy-utils.c:564
+#: ../libempathy/empathy-utils.c:566
 msgid "Facebook Chat"
 msgstr "Facebook 聊天"
 
@@ -749,7 +745,7 @@ msgstr[0] "%d 月前"
 msgid "in the future"
 msgstr "将来"
 
-#: ../libempathy-gtk/empathy-account-chooser.c:540
+#: ../libempathy-gtk/empathy-account-chooser.c:688
 msgid "All accounts"
 msgstr "全部帐号"
 
@@ -772,58 +768,58 @@ msgstr "服务器"
 msgid "Port"
 msgstr "端口"
 
-#: ../libempathy-gtk/empathy-account-widget.c:769
-#: ../libempathy-gtk/empathy-account-widget.c:826
+#: ../libempathy-gtk/empathy-account-widget.c:776
+#: ../libempathy-gtk/empathy-account-widget.c:828
 #, c-format
 msgid "%s:"
 msgstr "%s:"
 
-#: ../libempathy-gtk/empathy-account-widget.c:1192
+#: ../libempathy-gtk/empathy-account-widget.c:1182
 msgid "My Web Accounts"
 msgstr "我的网络帐号"
 
-#: ../libempathy-gtk/empathy-account-widget.c:1208
+#: ../libempathy-gtk/empathy-account-widget.c:1199
 #, c-format
 msgid "The account %s is edited via %s."
 msgstr "%s 帐号通过 %s 进行了编辑。"
 
-#: ../libempathy-gtk/empathy-account-widget.c:1214
+#: ../libempathy-gtk/empathy-account-widget.c:1205
 #, c-format
 msgid "The account %s cannot be edited in Empathy."
 msgstr "%s 帐号无法在 Empathy 中编辑。"
 
-#: ../libempathy-gtk/empathy-account-widget.c:1233
+#: ../libempathy-gtk/empathy-account-widget.c:1224
 msgid "Launch My Web Accounts"
 msgstr "启动我的网络帐号"
 
 #. general handler
-#: ../libempathy-gtk/empathy-account-widget.c:1241
+#: ../libempathy-gtk/empathy-account-widget.c:1232
 #, c-format
 msgid "Edit %s"
 msgstr "编辑 %s"
 
-#: ../libempathy-gtk/empathy-account-widget.c:1591
+#: ../libempathy-gtk/empathy-account-widget.c:1582
 #: ../libempathy-gtk/empathy-account-widget-irc.ui.h:11
 msgid "Username:"
 msgstr "用户名:"
 
-#: ../libempathy-gtk/empathy-account-widget.c:1909
+#: ../libempathy-gtk/empathy-account-widget.c:1900
 msgid "A_pply"
 msgstr "应用(_P)"
 
-#: ../libempathy-gtk/empathy-account-widget.c:1939
+#: ../libempathy-gtk/empathy-account-widget.c:1930
 msgid "L_og in"
 msgstr "登录(_O)"
 
-#: ../libempathy-gtk/empathy-account-widget.c:2013
+#: ../libempathy-gtk/empathy-account-widget.c:2004
 msgid "This account already exists on the server"
 msgstr "服务器上已存在该帐号"
 
-#: ../libempathy-gtk/empathy-account-widget.c:2016
+#: ../libempathy-gtk/empathy-account-widget.c:2007
 msgid "Create a new account on the server"
 msgstr "在服务器上创建新的帐号"
 
-#: ../libempathy-gtk/empathy-account-widget.c:2208
+#: ../libempathy-gtk/empathy-account-widget.c:2201
 msgid "Ca_ncel"
 msgstr "取消(_N)"
 
@@ -832,19 +828,19 @@ msgstr "取消(_N)"
 #. * like: "MyUserName on freenode".
 #. * You should reverse the order of these arguments if the
 #. * server should come before the login id in your locale.
-#: ../libempathy-gtk/empathy-account-widget.c:2486
+#: ../libempathy-gtk/empathy-account-widget.c:2479
 #, c-format
 msgid "%1$s on %2$s"
 msgstr "%2$s 中的 %1$s"
 
 #. To translators: The parameter is the protocol name. The resulting
 #. * string will be something like: "Jabber Account"
-#: ../libempathy-gtk/empathy-account-widget.c:2512
+#: ../libempathy-gtk/empathy-account-widget.c:2505
 #, c-format
 msgid "%s Account"
 msgstr "%s 帐号"
 
-#: ../libempathy-gtk/empathy-account-widget.c:2516
+#: ../libempathy-gtk/empathy-account-widget.c:2509
 msgid "New account"
 msgstr "新建帐号"
 
@@ -892,7 +888,7 @@ msgstr "记住密码"
 #: ../libempathy-gtk/empathy-account-widget-msn.ui.h:6
 #: ../libempathy-gtk/empathy-account-widget-sip.ui.h:17
 #: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:6
-#: ../libempathy-gtk/empathy-password-dialog.c:311
+#: ../libempathy-gtk/empathy-base-password-dialog.c:261
 msgid "Remember password"
 msgstr "记住密码"
 
@@ -1215,7 +1211,7 @@ msgid "STUN Server:"
 msgstr "STUN 服务器:"
 
 #: ../libempathy-gtk/empathy-account-widget-sip.ui.h:19
-#: ../libempathy-gtk/empathy-contact-widget.c:347
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:114
 msgid "Server:"
 msgstr "服务器:"
 
@@ -1225,7 +1221,7 @@ msgstr "传输:"
 
 #: ../libempathy-gtk/empathy-account-widget-sip.ui.h:21
 msgid "Use this account to call _landlines and mobile phones"
-msgstr "用此户拨打固定电话和手机(_L)"
+msgstr "用此户拨打固定电话和手机(_L)"
 
 #: ../libempathy-gtk/empathy-account-widget-sip.ui.h:22
 msgid "What is your SIP account password?"
@@ -1297,7 +1293,7 @@ msgid "Click to enlarge"
 msgstr "单击以放大"
 
 #: ../libempathy-gtk/empathy-call-utils.c:44
-#: ../libempathy-gtk/empathy-call-utils.c:60
+#: ../libempathy-gtk/empathy-call-utils.c:62
 msgid "There was an error starting the call"
 msgstr "发起呼叫时出错"
 
@@ -1317,62 +1313,66 @@ msgstr "选择的联系人无效"
 msgid "Emergency calls are not supported on this protocol"
 msgstr "不支持在此会话上进行紧急呼叫"
 
-#: ../libempathy-gtk/empathy-chat.c:704
+#: ../libempathy-gtk/empathy-call-utils.c:59
+msgid "You don't have enough credit in order to place this call"
+msgstr "您信用卡余额不足以支付此次通话"
+
+#: ../libempathy-gtk/empathy-chat.c:706
 msgid "Failed to open private chat"
 msgstr "建立私人对话失败"
 
-#: ../libempathy-gtk/empathy-chat.c:765
+#: ../libempathy-gtk/empathy-chat.c:764
 msgid "Topic not supported on this conversation"
 msgstr "不支持在此会话上设置主题"
 
-#: ../libempathy-gtk/empathy-chat.c:771
+#: ../libempathy-gtk/empathy-chat.c:770
 msgid "You are not allowed to change the topic"
 msgstr "您不能更改主题"
 
-#: ../libempathy-gtk/empathy-chat.c:975
+#: ../libempathy-gtk/empathy-chat.c:971
 #, c-format
 msgid "“%s” is not a valid contact ID"
 msgstr "%s 是无效的联系人 ID"
 
-#: ../libempathy-gtk/empathy-chat.c:1060
+#: ../libempathy-gtk/empathy-chat.c:1066
 msgid "/clear: clear all messages from the current conversation"
 msgstr "/clear:清空当前会话的所有消息"
 
-#: ../libempathy-gtk/empathy-chat.c:1063
+#: ../libempathy-gtk/empathy-chat.c:1069
 msgid "/topic <topic>: set the topic of the current conversation"
 msgstr "/topic <主题>:设定当前对话的主题"
 
-#: ../libempathy-gtk/empathy-chat.c:1066
+#: ../libempathy-gtk/empathy-chat.c:1072
 msgid "/join <chat room ID>: join a new chat room"
 msgstr "/join <聊天室名>:加入一个新的聊天室"
 
-#: ../libempathy-gtk/empathy-chat.c:1069
+#: ../libempathy-gtk/empathy-chat.c:1075
 msgid "/j <chat room ID>: join a new chat room"
 msgstr "/j <聊天室名>:加入一个新的聊天室"
 
-#: ../libempathy-gtk/empathy-chat.c:1073
+#: ../libempathy-gtk/empathy-chat.c:1079
 msgid ""
 "/part [<chat room ID>] [<reason>]: leave the chat room, by default the "
 "current one"
 msgstr "/用户[<聊天室ID>] [<原因>]:当前默认离开聊天室"
 
-#: ../libempathy-gtk/empathy-chat.c:1077
+#: ../libempathy-gtk/empathy-chat.c:1083
 msgid "/query <contact ID> [<message>]: open a private chat"
 msgstr "/query <昵称> [<消息>]:打开一个私人聊天"
 
-#: ../libempathy-gtk/empathy-chat.c:1080
+#: ../libempathy-gtk/empathy-chat.c:1086
 msgid "/msg <contact ID> <message>: open a private chat"
 msgstr "/msg <昵称> <消息>:打开一个私人聊天"
 
-#: ../libempathy-gtk/empathy-chat.c:1083
+#: ../libempathy-gtk/empathy-chat.c:1089
 msgid "/nick <nickname>: change your nickname on the current server"
 msgstr "/nick <昵称>:在当前服务器上改变您的昵称"
 
-#: ../libempathy-gtk/empathy-chat.c:1086
+#: ../libempathy-gtk/empathy-chat.c:1092
 msgid "/me <message>: send an ACTION message to the current conversation"
 msgstr "/me <动作消息>:向当前对话中发送一个动作消息"
 
-#: ../libempathy-gtk/empathy-chat.c:1089
+#: ../libempathy-gtk/empathy-chat.c:1095
 msgid ""
 "/say <message>: send <message> to the current conversation. This is used to "
 "send a message starting with a '/'. For example: \"/say /join is used to "
@@ -1381,124 +1381,131 @@ msgstr ""
 "/say <消息>:发送 <消息> 到当前对话。这是用来发送一个“/”开始的信息。例如:“/"
 "say /join 是用来加入一个新的聊天室”"
 
-#: ../libempathy-gtk/empathy-chat.c:1094
+#: ../libempathy-gtk/empathy-chat.c:1100
 msgid "/whois <contact ID>: display information about a contact"
 msgstr "/whois <联系人 ID>:显示一个联系人的信息"
 
-#: ../libempathy-gtk/empathy-chat.c:1097
+#: ../libempathy-gtk/empathy-chat.c:1103
 msgid ""
 "/help [<command>]: show all supported commands. If <command> is defined, "
 "show its usage."
 msgstr ""
 "/help [<命令>]:显示所有支持的命令。如果 <命令> 是有定义的,则显示它的用法。"
 
-#: ../libempathy-gtk/empathy-chat.c:1114
+#: ../libempathy-gtk/empathy-chat.c:1122
 #, c-format
 msgid "Usage: %s"
 msgstr "用法:%s"
 
-#: ../libempathy-gtk/empathy-chat.c:1159
+#: ../libempathy-gtk/empathy-chat.c:1167
 msgid "Unknown command"
 msgstr "未知命令"
 
-#: ../libempathy-gtk/empathy-chat.c:1285
+#: ../libempathy-gtk/empathy-chat.c:1293
 msgid "Unknown command; see /help for the available commands"
 msgstr "未知命令,请使用 /help 查阅可用命令"
 
-#. translators: error used when user doesn't have enough credit on his
-#. * account to send the message.
-#: ../libempathy-gtk/empathy-chat.c:1455
+#: ../libempathy-gtk/empathy-chat.c:1457
 msgid "insufficient balance to send message"
 msgstr "余额不足,无法发送消息"
 
-#: ../libempathy-gtk/empathy-chat.c:1457
+#: ../libempathy-gtk/empathy-chat.c:1461 ../libempathy-gtk/empathy-chat.c:1475
+#: ../libempathy-gtk/empathy-chat.c:1538
+#, c-format
+msgid "Error sending message '%s': %s"
+msgstr "发送消息“%s”出错:%s"
+
+#: ../libempathy-gtk/empathy-chat.c:1463 ../libempathy-gtk/empathy-chat.c:1480
+#: ../libempathy-gtk/empathy-chat.c:1542
+#, c-format
+msgid "Error sending message: %s"
+msgstr "发送消息出错:%s"
+
+#. translators: error used when user doesn't have enough credit on his
+#. * account to send the message.
+#: ../libempathy-gtk/empathy-chat.c:1469
+#, c-format
+msgid "insufficient balance to send message. <a href='%s'>Top up</a>."
+msgstr "余额不足,无法发送消息。 <a href='%s'>充值</a>。"
+
+#: ../libempathy-gtk/empathy-chat.c:1509
 msgid "not capable"
 msgstr "做不到"
 
-#: ../libempathy-gtk/empathy-chat.c:1464
+#: ../libempathy-gtk/empathy-chat.c:1516
 msgid "offline"
 msgstr "离线"
 
-#: ../libempathy-gtk/empathy-chat.c:1467
+#: ../libempathy-gtk/empathy-chat.c:1519
 msgid "invalid contact"
 msgstr "无效联系人"
 
-#: ../libempathy-gtk/empathy-chat.c:1470
+#: ../libempathy-gtk/empathy-chat.c:1522
 msgid "permission denied"
 msgstr "权限不足"
 
-#: ../libempathy-gtk/empathy-chat.c:1473
+#: ../libempathy-gtk/empathy-chat.c:1525
 msgid "too long message"
 msgstr "消息太长"
 
-#: ../libempathy-gtk/empathy-chat.c:1476
+#: ../libempathy-gtk/empathy-chat.c:1528
 msgid "not implemented"
 msgstr "尚未实现"
 
-#: ../libempathy-gtk/empathy-chat.c:1480
+#: ../libempathy-gtk/empathy-chat.c:1532
 msgid "unknown"
 msgstr "未知"
 
-#: ../libempathy-gtk/empathy-chat.c:1486
-#, c-format
-msgid "Error sending message '%s': %s"
-msgstr "发送消息“%s”出错:%s"
-
-#: ../libempathy-gtk/empathy-chat.c:1490
-#, c-format
-msgid "Error sending message: %s"
-msgstr "发送消息出错:%s"
-
-#: ../libempathy-gtk/empathy-chat.c:1551 ../src/empathy-chat-window.c:761
+#: ../libempathy-gtk/empathy-chat.c:1599 ../src/empathy-chat-window.c:761
 msgid "Topic:"
 msgstr "话题:"
 
-#: ../libempathy-gtk/empathy-chat.c:1563
+#: ../libempathy-gtk/empathy-chat.c:1611
 #, c-format
 msgid "Topic set to: %s"
 msgstr "话题被设置为:%s"
 
-#: ../libempathy-gtk/empathy-chat.c:1565
+#: ../libempathy-gtk/empathy-chat.c:1613
 msgid "No topic defined"
 msgstr "未设置话题"
 
-#: ../libempathy-gtk/empathy-chat.c:2074
+#: ../libempathy-gtk/empathy-chat.c:2126
 msgid "(No Suggestions)"
 msgstr "(没有建议)"
 
 #. translators: %s is the selected word
-#: ../libempathy-gtk/empathy-chat.c:2142
+#: ../libempathy-gtk/empathy-chat.c:2194
 #, c-format
 msgid "Add '%s' to Dictionary"
 msgstr "添加“%s”到字典"
 
 #. translators: first %s is the selected word,
 #. * second %s is the language name of the target dictionary
-#: ../libempathy-gtk/empathy-chat.c:2179
+#: ../libempathy-gtk/empathy-chat.c:2231
 #, c-format
 msgid "Add '%s' to %s Dictionary"
 msgstr "添加“%s”到 %s 字典"
 
-#: ../libempathy-gtk/empathy-chat.c:2249
+#: ../libempathy-gtk/empathy-chat.c:2301
 msgid "Insert Smiley"
 msgstr "插入表情"
 
 #. send button
-#: ../libempathy-gtk/empathy-chat.c:2267
-#: ../libempathy-gtk/empathy-ui-utils.c:1839
+#: ../libempathy-gtk/empathy-chat.c:2319
+#: ../libempathy-gtk/empathy-ui-utils.c:1867
 msgid "_Send"
 msgstr "发送(_S)"
 
 #. Spelling suggestions
-#: ../libempathy-gtk/empathy-chat.c:2321
+#: ../libempathy-gtk/empathy-chat.c:2376
 msgid "_Spelling Suggestions"
 msgstr "拼写建议(_S)"
 
-#: ../libempathy-gtk/empathy-chat.c:2410
+#: ../libempathy-gtk/empathy-chat.c:2465
 msgid "Failed to retrieve recent logs"
 msgstr "获取最近日志失败"
 
-#: ../libempathy-gtk/empathy-chat.c:2547
+#: ../libempathy-gtk/empathy-chat.c:2602
 #, c-format
 msgid "%s has disconnected"
 msgstr "%s 已断开连接"
@@ -1506,12 +1513,12 @@ msgstr "%s 已断开连接"
 #. translators: reverse the order of these arguments
 #. * if the kicked should come before the kicker in your locale.
 #.
-#: ../libempathy-gtk/empathy-chat.c:2554
+#: ../libempathy-gtk/empathy-chat.c:2609
 #, c-format
 msgid "%1$s was kicked by %2$s"
 msgstr "%1$s 被 %2$s 踢出"
 
-#: ../libempathy-gtk/empathy-chat.c:2557
+#: ../libempathy-gtk/empathy-chat.c:2612
 #, c-format
 msgid "%s was kicked"
 msgstr "%s 被踢出"
@@ -1519,17 +1526,17 @@ msgstr "%s 被踢出"
 #. translators: reverse the order of these arguments
 #. * if the banned should come before the banner in your locale.
 #.
-#: ../libempathy-gtk/empathy-chat.c:2565
+#: ../libempathy-gtk/empathy-chat.c:2620
 #, c-format
 msgid "%1$s was banned by %2$s"
 msgstr "%s 已被 %s 禁止"
 
-#: ../libempathy-gtk/empathy-chat.c:2568
+#: ../libempathy-gtk/empathy-chat.c:2623
 #, c-format
 msgid "%s was banned"
 msgstr "%s 被禁止"
 
-#: ../libempathy-gtk/empathy-chat.c:2572
+#: ../libempathy-gtk/empathy-chat.c:2627
 #, c-format
 msgid "%s has left the room"
 msgstr "%s 离开了聊天室"
@@ -1539,17 +1546,17 @@ msgstr "%s 离开了聊天室"
 #. * given by the user living the room. If this poses a problem,
 #. * please let us know. :-)
 #.
-#: ../libempathy-gtk/empathy-chat.c:2581
+#: ../libempathy-gtk/empathy-chat.c:2636
 #, c-format
 msgid " (%s)"
 msgstr " (%s)"
 
-#: ../libempathy-gtk/empathy-chat.c:2606
+#: ../libempathy-gtk/empathy-chat.c:2661
 #, c-format
 msgid "%s has joined the room"
 msgstr "%s 加入了聊天室"
 
-#: ../libempathy-gtk/empathy-chat.c:2631
+#: ../libempathy-gtk/empathy-chat.c:2686
 #, c-format
 msgid "%s is now known as %s"
 msgstr "%s 现在叫做 %s"
@@ -1557,88 +1564,88 @@ msgstr "%s 现在叫做 %s"
 #. We don't know if the incoming call has been accepted or not, so we
 #. * assume it hasn't and if it has, we'll set the proper status when
 #. * we get the new handler.
-#: ../libempathy-gtk/empathy-chat.c:2784
-#: ../src/empathy-streamed-media-window.c:1894
-#: ../src/empathy-event-manager.c:1240 ../src/empathy-call-window.c:1432
-#: ../src/empathy-call-window.c:1482 ../src/empathy-call-window.c:2527
+#: ../libempathy-gtk/empathy-chat.c:2847
+#: ../src/empathy-streamed-media-window.c:1889
+#: ../src/empathy-event-manager.c:1260 ../src/empathy-call-window.c:1538
+#: ../src/empathy-call-window.c:1588 ../src/empathy-call-window.c:2631
 msgid "Disconnected"
 msgstr "已断开连接"
 
 #. Add message
-#: ../libempathy-gtk/empathy-chat.c:3428
+#: ../libempathy-gtk/empathy-chat.c:3493
 msgid "Would you like to store this password?"
 msgstr "是否保存密码?"
 
-#: ../libempathy-gtk/empathy-chat.c:3434
+#: ../libempathy-gtk/empathy-chat.c:3499
 msgid "Remember"
 msgstr "记录"
 
-#: ../libempathy-gtk/empathy-chat.c:3444
+#: ../libempathy-gtk/empathy-chat.c:3509
 msgid "Not now"
 msgstr "不是现在"
 
-#: ../libempathy-gtk/empathy-chat.c:3488
+#: ../libempathy-gtk/empathy-chat.c:3553
+#: ../libempathy-gtk/empathy-bad-password-dialog.c:142
 msgid "Retry"
 msgstr "重试"
 
-#: ../libempathy-gtk/empathy-chat.c:3492
+#: ../libempathy-gtk/empathy-chat.c:3557
 msgid "Wrong password; please try again:"
 msgstr "密码错误,请重试:"
 
 #. Add message
-#: ../libempathy-gtk/empathy-chat.c:3622
+#: ../libempathy-gtk/empathy-chat.c:3687
 msgid "This room is protected by a password:"
 msgstr "这个房间是由一个密码保护的:"
 
-#: ../libempathy-gtk/empathy-chat.c:3649
+#: ../libempathy-gtk/empathy-chat.c:3714
 msgid "Join"
 msgstr "加入"
 
-#: ../libempathy-gtk/empathy-chat.c:3851 ../src/empathy-event-manager.c:1261
+#: ../libempathy-gtk/empathy-chat.c:3902 ../src/empathy-event-manager.c:1281
 msgid "Connected"
 msgstr "已连接"
 
-#: ../libempathy-gtk/empathy-chat.c:3906
+#: ../libempathy-gtk/empathy-chat.c:3957
 msgid "Conversation"
 msgstr "对话"
 
 #. Translators: this string is a something like
 #. * "Escher Cat (SMS)"
-#: ../libempathy-gtk/empathy-chat.c:3911
+#: ../libempathy-gtk/empathy-chat.c:3962
 #, c-format
 msgid "%s (SMS)"
 msgstr "%s (短信)"
 
-#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:424
+#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:265
 msgid "Unknown or invalid identifier"
 msgstr "未知或无效的识别符"
 
-#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:426
+#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:267
 msgid "Contact blocking temporarily unavailable"
 msgstr "联系人屏蔽暂时不可用"
 
-#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:428
+#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:269
 msgid "Contact blocking unavailable"
 msgstr "联系人屏蔽不可用"
 
-#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:430
+#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:271
 msgid "Permission Denied"
 msgstr "权限不足"
 
-#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:434
+#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:275
 msgid "Could not block contact"
 msgstr "无法屏蔽联系人"
 
-#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:774
+#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:622
 msgid "Edit Blocked Contacts"
 msgstr "编辑屏蔽的联系人"
 
 #. Account and Identifier
 #: ../libempathy-gtk/empathy-contact-blocking-dialog.ui.h:1
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:512
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:506
 #: ../libempathy-gtk/empathy-contact-widget.ui.h:2
-#: ../libempathy-gtk/empathy-individual-widget.c:1489
-#: ../libempathy-gtk/empathy-contact-selector-dialog.ui.h:1
+#: ../libempathy-gtk/empathy-individual-widget.c:1475
 #: ../src/empathy-chatrooms-window.ui.h:1
 #: ../src/empathy-new-chatroom-dialog.ui.h:1
 msgid "Account:"
@@ -1656,56 +1663,56 @@ msgid "Remove"
 msgstr "删除"
 
 #. Copy Link Address menu item
-#: ../libempathy-gtk/empathy-chat-text-view.c:320
+#: ../libempathy-gtk/empathy-chat-text-view.c:322
 #: ../libempathy-gtk/empathy-webkit-utils.c:277
 msgid "_Copy Link Address"
 msgstr "复制链接地址(_C)"
 
 #. Open Link menu item
-#: ../libempathy-gtk/empathy-chat-text-view.c:327
+#: ../libempathy-gtk/empathy-chat-text-view.c:329
 #: ../libempathy-gtk/empathy-webkit-utils.c:284
 msgid "_Open Link"
 msgstr "打开链接(_O)"
 
 #. Translators: timestamp displayed between conversations in
 #. * chat windows (strftime format string)
-#: ../libempathy-gtk/empathy-chat-text-view.c:415
+#: ../libempathy-gtk/empathy-chat-text-view.c:417
 msgid "%A %B %d %Y"
 msgstr "%A %B %d %Y"
 
-#: ../libempathy-gtk/empathy-contact-dialogs.c:299
+#: ../libempathy-gtk/empathy-contact-dialogs.c:287
 #: ../libempathy-gtk/empathy-individual-edit-dialog.c:247
 msgid "Edit Contact Information"
 msgstr "编辑联系人信息"
 
-#: ../libempathy-gtk/empathy-contact-dialogs.c:350
+#: ../libempathy-gtk/empathy-contact-dialogs.c:338
 msgid "Personal Information"
 msgstr "个人信息"
 
-#: ../libempathy-gtk/empathy-contact-dialogs.c:459
+#: ../libempathy-gtk/empathy-contact-dialogs.c:439
 #: ../libempathy-gtk/empathy-individual-dialogs.c:119
 msgid "New Contact"
 msgstr "新建联系人"
 
-#: ../libempathy-gtk/empathy-contact-dialogs.c:533
-#: ../libempathy-gtk/empathy-individual-dialogs.c:200
+#: ../libempathy-gtk/empathy-contact-dialogs.c:508
+#: ../libempathy-gtk/empathy-individual-dialogs.c:198
 #, c-format
 msgid "Block %s?"
 msgstr "屏蔽 %s?"
 
-#: ../libempathy-gtk/empathy-contact-dialogs.c:538
-#: ../libempathy-gtk/empathy-individual-dialogs.c:255
+#: ../libempathy-gtk/empathy-contact-dialogs.c:513
+#: ../libempathy-gtk/empathy-individual-dialogs.c:253
 #, c-format
 msgid "Are you sure you want to block '%s' from contacting you again?"
 msgstr "确定要屏蔽 %s 以阻止他再次联系您吗?"
 
-#: ../libempathy-gtk/empathy-contact-dialogs.c:543
-#: ../libempathy-gtk/empathy-individual-dialogs.c:277
+#: ../libempathy-gtk/empathy-contact-dialogs.c:518
+#: ../libempathy-gtk/empathy-individual-dialogs.c:275
 msgid "_Block"
 msgstr "屏蔽(_B)"
 
-#: ../libempathy-gtk/empathy-contact-dialogs.c:559
-#: ../libempathy-gtk/empathy-individual-dialogs.c:286
+#: ../libempathy-gtk/empathy-contact-dialogs.c:536
+#: ../libempathy-gtk/empathy-individual-dialogs.c:284
 msgid "_Report this contact as abusive"
 msgid_plural "_Report these contacts as abusive"
 msgstr[0] "举报联系人滥用"
@@ -1722,349 +1729,331 @@ msgstr "订阅请求"
 msgid "_Block User"
 msgstr "屏蔽用户(_B)"
 
-#: ../libempathy-gtk/empathy-contact-list-store.h:71
-msgid "Ungrouped"
-msgstr "未分组"
-
-#: ../libempathy-gtk/empathy-contact-list-store.h:72
-msgid "Favorite People"
-msgstr "收藏夹"
-
-#: ../libempathy-gtk/empathy-contact-list-view.c:1986
-#: ../libempathy-gtk/empathy-individual-view.c:2376
-#, c-format
-msgid "Do you really want to remove the group '%s'?"
-msgstr "您真的要删除群组“%s”吗?"
-
-#: ../libempathy-gtk/empathy-contact-list-view.c:1988
-#: ../libempathy-gtk/empathy-individual-view.c:2379
-msgid "Removing group"
-msgstr "删除群组"
-
-#. Remove
-#: ../libempathy-gtk/empathy-contact-list-view.c:2037
-#: ../libempathy-gtk/empathy-contact-list-view.c:2114
-#: ../libempathy-gtk/empathy-individual-view.c:2434
-#: ../libempathy-gtk/empathy-individual-view.c:2637
-msgid "_Remove"
-msgstr "删除(_R)"
-
-#: ../libempathy-gtk/empathy-contact-list-view.c:2067
-#: ../libempathy-gtk/empathy-individual-view.c:2501
-#, c-format
-msgid "Do you really want to remove the contact '%s'?"
-msgstr "您真的想要删除联系人“%s”吗?"
-
-#: ../libempathy-gtk/empathy-contact-list-view.c:2069
-#: ../libempathy-gtk/empathy-individual-view.c:2522
-msgid "Removing contact"
-msgstr "删除联系人"
-
-#: ../libempathy-gtk/empathy-contact-menu.c:220
+#: ../libempathy-gtk/empathy-contact-menu.c:212
+#: ../libempathy-gtk/empathy-individual-menu.c:1558
 #: ../src/empathy-main-window-menubar.ui.h:14
 msgid "_Add Contact…"
 msgstr "添加联系人(_A)..."
 
-#: ../libempathy-gtk/empathy-contact-menu.c:300
+#: ../libempathy-gtk/empathy-contact-menu.c:287
 msgid "_Block Contact"
 msgstr "屏蔽联系人"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:329
-#: ../libempathy-gtk/empathy-individual-menu.c:758
+#. add chat button
+#: ../libempathy-gtk/empathy-contact-menu.c:316
+#: ../libempathy-gtk/empathy-individual-menu.c:789
+#: ../libempathy-gtk/empathy-new-message-dialog.c:320
 #: ../src/empathy-main-window-menubar.ui.h:16
 msgid "_Chat"
 msgstr "聊天(_C)"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:361
-#: ../libempathy-gtk/empathy-individual-menu.c:849
+#: ../libempathy-gtk/empathy-contact-menu.c:348
+#: ../libempathy-gtk/empathy-individual-menu.c:881
 msgctxt "menu item"
 msgid "_Audio Call"
 msgstr "音频呼叫(_A)"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:394
-#: ../libempathy-gtk/empathy-individual-menu.c:894
+#: ../libempathy-gtk/empathy-contact-menu.c:381
+#: ../libempathy-gtk/empathy-individual-menu.c:926
 msgctxt "menu item"
 msgid "_Video Call"
 msgstr "视频呼叫(_V)"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:440
-#: ../libempathy-gtk/empathy-individual-menu.c:947
+#: ../libempathy-gtk/empathy-contact-menu.c:427
+#: ../libempathy-gtk/empathy-individual-menu.c:979
 #: ../src/empathy-main-window-menubar.ui.h:27
 msgid "_Previous Conversations"
 msgstr "最近会话(_P)"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:462
-#: ../libempathy-gtk/empathy-individual-menu.c:988
+#: ../libempathy-gtk/empathy-contact-menu.c:449
+#: ../libempathy-gtk/empathy-individual-menu.c:1020
 msgid "Send File"
 msgstr "发送文件"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:485
-#: ../libempathy-gtk/empathy-individual-menu.c:1030
+#: ../libempathy-gtk/empathy-contact-menu.c:472
+#: ../libempathy-gtk/empathy-individual-menu.c:1062
 msgid "Share My Desktop"
 msgstr "共享我的桌面"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:525
-#: ../libempathy-gtk/empathy-contact-widget.c:1887
-#: ../libempathy-gtk/empathy-individual-menu.c:1065
-#: ../libempathy-gtk/empathy-individual-widget.c:1372
-msgid "Favorite"
-msgstr "收藏"
-
-#: ../libempathy-gtk/empathy-contact-menu.c:554
-#: ../libempathy-gtk/empathy-individual-menu.c:1093
+#: ../libempathy-gtk/empathy-contact-menu.c:501
+#: ../libempathy-gtk/empathy-individual-menu.c:1125
 msgid "Infor_mation"
 msgstr "信息(_M)"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:600
+#: ../libempathy-gtk/empathy-contact-menu.c:547
 msgctxt "Edit contact (contextual menu)"
 msgid "_Edit"
 msgstr "编辑(_E)"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:654
-#: ../libempathy-gtk/empathy-individual-menu.c:1284
+#: ../libempathy-gtk/empathy-contact-menu.c:601
+#: ../libempathy-gtk/empathy-individual-menu.c:1316
 #: ../src/empathy-chat-window.c:1011
 msgid "Inviting you to this room"
 msgstr "邀请到此聊天室"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:685
-#: ../libempathy-gtk/empathy-individual-menu.c:1330
+#: ../libempathy-gtk/empathy-contact-menu.c:632
+#: ../libempathy-gtk/empathy-individual-menu.c:1362
 msgid "_Invite to Chat Room"
 msgstr "邀请到聊天室(_I)"
 
 #. Title
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:505
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:499
 msgid "Search contacts"
 msgstr "搜索联系人"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:535
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:529
 msgid "Search: "
 msgstr "搜索"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:593
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:587
 msgid "_Add Contact"
 msgstr "添加联系人(_A)"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:611
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:605
 msgid "No contacts found"
 msgstr "未找到联系人"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:627
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:621
 msgid "Your message introducing yourself:"
 msgstr "您的自我介绍信息:"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:635
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:629
 msgid "Please let me see when you're online. Thanks!"
 msgstr "你在线时请让我知道,谢谢!"
 
-#: ../libempathy-gtk/empathy-contact-selector.c:129
-msgid "Select a contact"
-msgstr "选择一个联系"
-
-#: ../libempathy-gtk/empathy-contact-widget.c:336
-#: ../libempathy-gtk/empathy-individual-widget.c:153
-msgid "Full name:"
-msgstr "全称:"
-
-#: ../libempathy-gtk/empathy-contact-widget.c:337
-#: ../libempathy-gtk/empathy-individual-widget.c:154
-msgid "Phone number:"
-msgstr "电话号码:"
-
-#: ../libempathy-gtk/empathy-contact-widget.c:338
-#: ../libempathy-gtk/empathy-individual-widget.c:155
-msgid "E-mail address:"
-msgstr "电子邮件地址:"
-
-#: ../libempathy-gtk/empathy-contact-widget.c:339
-#: ../libempathy-gtk/empathy-individual-widget.c:156
-msgid "Website:"
-msgstr "网站:"
-
-#: ../libempathy-gtk/empathy-contact-widget.c:340
-#: ../libempathy-gtk/empathy-individual-widget.c:157
-msgid "Birthday:"
-msgstr "生日:"
-
-#. Note to translators: this is the caption for a string of the form "5
-#. * minutes ago", and refers to the time since the contact last interacted
-#. * with their IM client.
-#.
-#: ../libempathy-gtk/empathy-contact-widget.c:346
-msgid "Last seen:"
-msgstr "最近上线:"
-
-#: ../libempathy-gtk/empathy-contact-widget.c:348
-msgid "Connected from:"
-msgstr "连接来源:"
-
-#. FIXME: once Idle implements SimplePresence using this information, we can
-#. * and should bin this.
-#.
-#: ../libempathy-gtk/empathy-contact-widget.c:353
-msgid "Away message:"
-msgstr "离开消息:"
-
-#: ../libempathy-gtk/empathy-contact-widget.c:606
+#: ../libempathy-gtk/empathy-contact-widget.c:571
+#: ../libempathy-gtk/empathy-individual-widget.c:304
 msgid "Channels:"
 msgstr "频道:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:897
-#: ../libempathy-gtk/empathy-individual-widget.c:469
+#: ../libempathy-gtk/empathy-contact-widget.c:751
+#: ../libempathy-gtk/empathy-individual-widget.c:455
 msgid "Country ISO Code:"
 msgstr "包括 ISO 编码:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:899
-#: ../libempathy-gtk/empathy-individual-widget.c:471
+#: ../libempathy-gtk/empathy-contact-widget.c:753
+#: ../libempathy-gtk/empathy-individual-widget.c:457
 msgid "Country:"
 msgstr "国家:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:901
-#: ../libempathy-gtk/empathy-individual-widget.c:473
+#: ../libempathy-gtk/empathy-contact-widget.c:755
+#: ../libempathy-gtk/empathy-individual-widget.c:459
 msgid "State:"
 msgstr "省:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:903
-#: ../libempathy-gtk/empathy-individual-widget.c:475
+#: ../libempathy-gtk/empathy-contact-widget.c:757
+#: ../libempathy-gtk/empathy-individual-widget.c:461
 msgid "City:"
 msgstr "城市:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:905
-#: ../libempathy-gtk/empathy-individual-widget.c:477
+#: ../libempathy-gtk/empathy-contact-widget.c:759
+#: ../libempathy-gtk/empathy-individual-widget.c:463
 msgid "Area:"
 msgstr "地区:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:907
-#: ../libempathy-gtk/empathy-individual-widget.c:479
+#: ../libempathy-gtk/empathy-contact-widget.c:761
+#: ../libempathy-gtk/empathy-individual-widget.c:465
 msgid "Postal Code:"
 msgstr "邮政编码:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:909
-#: ../libempathy-gtk/empathy-individual-widget.c:481
+#: ../libempathy-gtk/empathy-contact-widget.c:763
+#: ../libempathy-gtk/empathy-individual-widget.c:467
 msgid "Street:"
 msgstr "街道:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:911
-#: ../libempathy-gtk/empathy-individual-widget.c:483
+#: ../libempathy-gtk/empathy-contact-widget.c:765
+#: ../libempathy-gtk/empathy-individual-widget.c:469
 msgid "Building:"
 msgstr "建筑物:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:913
-#: ../libempathy-gtk/empathy-individual-widget.c:485
+#: ../libempathy-gtk/empathy-contact-widget.c:767
+#: ../libempathy-gtk/empathy-individual-widget.c:471
 msgid "Floor:"
 msgstr "楼层:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:915
-#: ../libempathy-gtk/empathy-individual-widget.c:487
+#: ../libempathy-gtk/empathy-contact-widget.c:769
+#: ../libempathy-gtk/empathy-individual-widget.c:473
 msgid "Room:"
 msgstr "房间:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:917
-#: ../libempathy-gtk/empathy-individual-widget.c:489
+#: ../libempathy-gtk/empathy-contact-widget.c:771
+#: ../libempathy-gtk/empathy-individual-widget.c:475
 msgid "Text:"
 msgstr "文本:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:919
-#: ../libempathy-gtk/empathy-individual-widget.c:491
+#: ../libempathy-gtk/empathy-contact-widget.c:773
+#: ../libempathy-gtk/empathy-individual-widget.c:477
 msgid "Description:"
 msgstr "描述:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:921
-#: ../libempathy-gtk/empathy-individual-widget.c:493
+#: ../libempathy-gtk/empathy-contact-widget.c:775
+#: ../libempathy-gtk/empathy-individual-widget.c:479
 msgid "URI:"
 msgstr "URI:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:923
-#: ../libempathy-gtk/empathy-individual-widget.c:495
+#: ../libempathy-gtk/empathy-contact-widget.c:777
+#: ../libempathy-gtk/empathy-individual-widget.c:481
 msgid "Accuracy Level:"
 msgstr "准确程度:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:925
-#: ../libempathy-gtk/empathy-individual-widget.c:497
+#: ../libempathy-gtk/empathy-contact-widget.c:779
+#: ../libempathy-gtk/empathy-individual-widget.c:483
 msgid "Error:"
 msgstr "错误:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:927
-#: ../libempathy-gtk/empathy-individual-widget.c:499
+#: ../libempathy-gtk/empathy-contact-widget.c:781
+#: ../libempathy-gtk/empathy-individual-widget.c:485
 msgid "Vertical Error (meters):"
 msgstr "垂直误差(米):"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:929
-#: ../libempathy-gtk/empathy-individual-widget.c:501
+#: ../libempathy-gtk/empathy-contact-widget.c:783
+#: ../libempathy-gtk/empathy-individual-widget.c:487
 msgid "Horizontal Error (meters):"
 msgstr "水平误差(米):"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:931
-#: ../libempathy-gtk/empathy-individual-widget.c:503
+#: ../libempathy-gtk/empathy-contact-widget.c:785
+#: ../libempathy-gtk/empathy-individual-widget.c:489
 msgid "Speed:"
 msgstr "速度:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:933
-#: ../libempathy-gtk/empathy-individual-widget.c:505
+#: ../libempathy-gtk/empathy-contact-widget.c:787
+#: ../libempathy-gtk/empathy-individual-widget.c:491
 msgid "Bearing:"
 msgstr "方位朝向:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:935
-#: ../libempathy-gtk/empathy-individual-widget.c:507
+#: ../libempathy-gtk/empathy-contact-widget.c:789
+#: ../libempathy-gtk/empathy-individual-widget.c:493
 msgid "Climb Speed:"
 msgstr "爬升速度:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:937
-#: ../libempathy-gtk/empathy-individual-widget.c:509
+#: ../libempathy-gtk/empathy-contact-widget.c:791
+#: ../libempathy-gtk/empathy-individual-widget.c:495
 msgid "Last Updated on:"
 msgstr "最近更新于:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:939
-#: ../libempathy-gtk/empathy-individual-widget.c:511
+#: ../libempathy-gtk/empathy-contact-widget.c:793
+#: ../libempathy-gtk/empathy-individual-widget.c:497
 msgid "Longitude:"
 msgstr "经度:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:941
-#: ../libempathy-gtk/empathy-individual-widget.c:513
+#: ../libempathy-gtk/empathy-contact-widget.c:795
+#: ../libempathy-gtk/empathy-individual-widget.c:499
 msgid "Latitude:"
 msgstr "纬度:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:943
-#: ../libempathy-gtk/empathy-individual-widget.c:515
+#: ../libempathy-gtk/empathy-contact-widget.c:797
+#: ../libempathy-gtk/empathy-individual-widget.c:501
 msgid "Altitude:"
 msgstr "海拔:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:996
-#: ../libempathy-gtk/empathy-contact-widget.c:1011
-#: ../libempathy-gtk/empathy-individual-widget.c:607
-#: ../libempathy-gtk/empathy-individual-widget.c:622
-#: ../src/empathy-preferences.ui.h:17
+#: ../libempathy-gtk/empathy-contact-widget.c:850
+#: ../libempathy-gtk/empathy-contact-widget.c:865
+#: ../libempathy-gtk/empathy-individual-widget.c:593
+#: ../libempathy-gtk/empathy-individual-widget.c:608
+#: ../src/empathy-preferences.ui.h:15
 msgid "Location"
 msgstr "位置"
 
 #. translators: format is "Location, $date"
-#: ../libempathy-gtk/empathy-contact-widget.c:1013
-#: ../libempathy-gtk/empathy-individual-widget.c:624
+#: ../libempathy-gtk/empathy-contact-widget.c:867
+#: ../libempathy-gtk/empathy-individual-widget.c:610
 #, c-format
 msgid "%s, %s"
 msgstr "%s, %s"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:1065
-#: ../libempathy-gtk/empathy-individual-widget.c:673
+#: ../libempathy-gtk/empathy-contact-widget.c:919
+#: ../libempathy-gtk/empathy-individual-widget.c:659
 msgid "%B %e, %Y at %R UTC"
 msgstr "%B %e,%Y 于 %R UTC 时间"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:1147
-#: ../libempathy-gtk/empathy-individual-widget.c:915
+#: ../libempathy-gtk/empathy-contact-widget.c:1001
+#: ../libempathy-gtk/empathy-individual-widget.c:901
 msgid "Save Avatar"
 msgstr "保存头像"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:1203
-#: ../libempathy-gtk/empathy-individual-widget.c:973
+#: ../libempathy-gtk/empathy-contact-widget.c:1057
+#: ../libempathy-gtk/empathy-individual-widget.c:959
 msgid "Unable to save avatar"
 msgstr "无法保存头像"
 
+#: ../libempathy-gtk/empathy-contact-widget.c:1745
+#: ../libempathy-gtk/empathy-individual-menu.c:1097
+#: ../libempathy-gtk/empathy-individual-widget.c:1358
+msgid "Favorite"
+msgstr "收藏"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:104
+msgid "Full name"
+msgstr "全名"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:105
+msgid "Phone number"
+msgstr "电话号码"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:106
+msgid "E-mail address"
+msgstr "电子邮件地址"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:107
+msgid "Website"
+msgstr "网站"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:108
+msgid "Birthday"
+msgstr "生日"
+
+#. Note to translators: this is the caption for a string of the form "5
+#. * minutes ago", and refers to the time since the contact last interacted
+#. * with their IM client.
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:113
+msgid "Last seen:"
+msgstr "最近上线:"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:115
+msgid "Connected from:"
+msgstr "连接来源:"
+
+#. FIXME: once Idle implements SimplePresence using this information, we can
+#. * and should bin this.
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:119
+msgid "Away message:"
+msgstr "离开消息:"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:132
+msgid "work"
+msgstr "办公"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:133
+msgid "home"
+msgstr "主页"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:134
+msgid "mobile"
+msgstr "手机"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:135
+msgid "voice"
+msgstr "音频"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:136
+msgid "preferred"
+msgstr "首选"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:137
+msgid "postal"
+msgstr "邮政"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:138
+msgid "parcel"
+msgstr "邮件"
+
 #: ../libempathy-gtk/empathy-contact-widget.ui.h:1
 msgid "<b>Location</b> at (date)\t"
 msgstr "<b>位置</b>于(日期)\t"
 
 #. Alias
 #: ../libempathy-gtk/empathy-contact-widget.ui.h:3
-#: ../libempathy-gtk/empathy-individual-widget.c:1308
+#: ../libempathy-gtk/empathy-individual-widget.c:1294
 msgid "Alias:"
 msgstr "别名:"
 
@@ -2084,7 +2073,7 @@ msgstr "联系人详情"
 #. Identifier to connect to Instant Messaging network
 #. Translators: Identifier to connect to Instant Messaging network
 #: ../libempathy-gtk/empathy-contact-widget.ui.h:8
-#: ../libempathy-gtk/empathy-individual-widget.c:1517
+#: ../libempathy-gtk/empathy-individual-widget.c:1503
 msgid "Identifier:"
 msgstr "标识符:"
 
@@ -2121,16 +2110,16 @@ msgid "Select"
 msgstr "选择"
 
 #: ../libempathy-gtk/empathy-groups-widget.c:409
-#: ../src/empathy-main-window.c:1807
+#: ../src/empathy-main-window.c:1952
 msgid "Group"
 msgstr "群组"
 
-#: ../libempathy-gtk/empathy-individual-dialogs.c:260
+#: ../libempathy-gtk/empathy-individual-dialogs.c:258
 msgid "The following identity will be blocked:"
 msgid_plural "The following identities will be blocked:"
 msgstr[0] "以下用户将被屏蔽:"
 
-#: ../libempathy-gtk/empathy-individual-dialogs.c:267
+#: ../libempathy-gtk/empathy-individual-dialogs.c:265
 msgid "The following identity can not be blocked:"
 msgid_plural "The following identities can not be blocked:"
 msgstr[0] "以下用户无法被屏蔽:"
@@ -2140,74 +2129,94 @@ msgstr[0] "以下用户无法被屏蔽:"
 msgid "Linked Contacts"
 msgstr "已绑定的联系人"
 
-#: ../libempathy-gtk/empathy-individual-linker.c:370
+#: ../libempathy-gtk/empathy-individual-linker.c:372
 msgid "Select contacts to link"
 msgstr "选择要绑定的联系人"
 
-#: ../libempathy-gtk/empathy-individual-linker.c:444
+#: ../libempathy-gtk/empathy-individual-linker.c:447
 msgid "New contact preview"
 msgstr "新联系人预览"
 
-#: ../libempathy-gtk/empathy-individual-linker.c:488
+#: ../libempathy-gtk/empathy-individual-linker.c:491
 msgid "Contacts selected in the list on the left will be linked together."
 msgstr "在左侧列表中选中的联系人将被绑定在一起。"
 
 #. Translators: this is used in the context menu for a contact. The first
 #. * parameter is a contact ID (e.g. foo@jabber.org) and the second is one
 #. * of the user's account IDs (e.g. me@hotmail.com).
-#: ../libempathy-gtk/empathy-individual-menu.c:145
+#: ../libempathy-gtk/empathy-individual-menu.c:148
 #, c-format
 msgid "%s (%s)"
 msgstr "%s (%s)"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:309
+#: ../libempathy-gtk/empathy-individual-menu.c:312
 msgid "Select account to use to place the call"
-msgstr "选择要用于拨打电话的户"
+msgstr "选择要用于拨打电话的户"
 
 #. translators: Call is a noun. This string is used in the window
 #. * title
-#: ../libempathy-gtk/empathy-individual-menu.c:313
+#: ../libempathy-gtk/empathy-individual-menu.c:316
 #: ../libempathy-gtk/empathy-log-window.ui.h:2
-#: ../src/empathy-streamed-media-window.c:1299
+#: ../src/empathy-streamed-media-window.c:1288
 #: ../src/empathy-call-window.ui.h:2
 msgid "Call"
 msgstr "通话"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:378
+#: ../libempathy-gtk/empathy-individual-menu.c:381
 msgid "Mobile"
 msgstr "手机"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:380
+#: ../libempathy-gtk/empathy-individual-menu.c:383
 msgid "Work"
 msgstr "办公"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:382
+#: ../libempathy-gtk/empathy-individual-menu.c:385
 msgid "HOME"
 msgstr "家庭"
 
-#. add an SMS button
-#: ../libempathy-gtk/empathy-individual-menu.c:804
-#: ../libempathy-gtk/empathy-new-message-dialog.c:215
+#. add SMS button
+#: ../libempathy-gtk/empathy-individual-menu.c:836
+#: ../libempathy-gtk/empathy-new-message-dialog.c:314
 msgid "_SMS"
 msgstr "短信(_S)"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1142
+#: ../libempathy-gtk/empathy-individual-menu.c:1174
 msgctxt "Edit individual (contextual menu)"
 msgid "_Edit"
 msgstr "编辑(_E)"
 
 #. Translators: this is a verb meaning "to connect two contacts together
 #. * to form a meta-contact".
-#: ../libempathy-gtk/empathy-individual-menu.c:1168
+#: ../libempathy-gtk/empathy-individual-menu.c:1200
 msgctxt "Link individual (contextual menu)"
 msgid "_Link Contacts…"
 msgstr "绑定联系人(_L)…"
 
-#: ../libempathy-gtk/empathy-individual-view.c:2341
+#: ../libempathy-gtk/empathy-individual-view.c:2362
 msgid "Delete and _Block"
 msgstr "删除并屏蔽(_B)"
 
-#: ../libempathy-gtk/empathy-individual-view.c:2510
+#: ../libempathy-gtk/empathy-individual-view.c:2397
+#, c-format
+msgid "Do you really want to remove the group '%s'?"
+msgstr "您真的要删除群组“%s”吗?"
+
+#: ../libempathy-gtk/empathy-individual-view.c:2400
+msgid "Removing group"
+msgstr "删除群组"
+
+#. Remove
+#: ../libempathy-gtk/empathy-individual-view.c:2455
+#: ../libempathy-gtk/empathy-individual-view.c:2672
+msgid "_Remove"
+msgstr "删除(_R)"
+
+#: ../libempathy-gtk/empathy-individual-view.c:2532
+#, c-format
+msgid "Do you really want to remove the contact '%s'?"
+msgstr "您真的想要删除联系人“%s”吗?"
+
+#: ../libempathy-gtk/empathy-individual-view.c:2541
 #, c-format
 msgid ""
 "Do you really want to remove the linked contact '%s'? Note that this will "
@@ -2215,7 +2224,11 @@ msgid ""
 msgstr ""
 "您是否真正地想要删除已绑定的联系人'%s' ? 注意这将删除所有联系已绑定的联系人"
 
-#: ../libempathy-gtk/empathy-individual-widget.c:1656
+#: ../libempathy-gtk/empathy-individual-view.c:2553
+msgid "Removing contact"
+msgstr "删除联系人"
+
+#: ../libempathy-gtk/empathy-individual-widget.c:1642
 #, c-format
 msgid "Linked contact containing %u contact"
 msgid_plural "Linked contacts containing %u contacts"
@@ -2297,133 +2310,133 @@ msgctxt "Unlink individual (button)"
 msgid "_Unlink"
 msgstr "解除绑定(_U)"
 
-#: ../libempathy-gtk/empathy-log-window.c:634
+#: ../libempathy-gtk/empathy-log-window.c:621
 msgid "History"
 msgstr "历史"
 
-#: ../libempathy-gtk/empathy-log-window.c:689
+#: ../libempathy-gtk/empathy-log-window.c:676
 msgid "Show"
 msgstr "显示"
 
-#: ../libempathy-gtk/empathy-log-window.c:711
+#: ../libempathy-gtk/empathy-log-window.c:698
 msgid "Search"
 msgstr "搜索"
 
-#: ../libempathy-gtk/empathy-log-window.c:1159
+#: ../libempathy-gtk/empathy-log-window.c:1147
 #, c-format
 msgid "Chat in %s"
 msgstr "在 %s 聊天"
 
-#: ../libempathy-gtk/empathy-log-window.c:1161
+#: ../libempathy-gtk/empathy-log-window.c:1149
 #, c-format
 msgid "Chat with %s"
 msgstr "与 %s 聊天"
 
-#: ../libempathy-gtk/empathy-log-window.c:1211
-#: ../libempathy-gtk/empathy-log-window.c:1358
+#: ../libempathy-gtk/empathy-log-window.c:1199
+#: ../libempathy-gtk/empathy-log-window.c:1346
 msgctxt "A date with the time"
 msgid "%A, %e %B %Y %X"
 msgstr "%Y年%m月%d日 %A"
 
 #. Translators: this is an emote: '* Danielle waves'
-#: ../libempathy-gtk/empathy-log-window.c:1300
+#: ../libempathy-gtk/empathy-log-window.c:1288
 #, c-format
 msgid "<i>* %s %s</i>"
 msgstr "<i>* %s %s</i>"
 
 #. Translators: this is a message: 'Danielle: hello'
 #. * The string in bold is the sender's name
-#: ../libempathy-gtk/empathy-log-window.c:1306
+#: ../libempathy-gtk/empathy-log-window.c:1294
 #, c-format
 msgid "<b>%s:</b> %s"
 msgstr "<b>%s:</b>%s"
 
-#: ../libempathy-gtk/empathy-log-window.c:1382
+#: ../libempathy-gtk/empathy-log-window.c:1370
 #, c-format
 msgid "%s second"
 msgid_plural "%s seconds"
 msgstr[0] "%s 秒"
 
-#: ../libempathy-gtk/empathy-log-window.c:1389
+#: ../libempathy-gtk/empathy-log-window.c:1377
 #, c-format
 msgid "%s minute"
 msgid_plural "%s minutes"
 msgstr[0] "%s 分"
 
-#: ../libempathy-gtk/empathy-log-window.c:1397
+#: ../libempathy-gtk/empathy-log-window.c:1385
 #, c-format
 msgid "Call took %s, ended at %s"
 msgstr "通话时长:%s,结束于 %s"
 
-#: ../libempathy-gtk/empathy-log-window.c:1729
+#: ../libempathy-gtk/empathy-log-window.c:1719
 msgid "Today"
 msgstr "今天"
 
-#: ../libempathy-gtk/empathy-log-window.c:1733
+#: ../libempathy-gtk/empathy-log-window.c:1723
 msgid "Yesterday"
 msgstr "昨天"
 
 #. Translators: A date such as '23 May 2010' (strftime format)
-#: ../libempathy-gtk/empathy-log-window.c:1748
+#: ../libempathy-gtk/empathy-log-window.c:1738
 msgid "%e %B %Y"
 msgstr "%Y年%m月%d日"
 
-#: ../libempathy-gtk/empathy-log-window.c:1829
-#: ../libempathy-gtk/empathy-log-window.c:3444
+#: ../libempathy-gtk/empathy-log-window.c:1826
+#: ../libempathy-gtk/empathy-log-window.c:3458
 msgid "Anytime"
 msgstr "随时"
 
-#: ../libempathy-gtk/empathy-log-window.c:1916
-#: ../libempathy-gtk/empathy-log-window.c:2372
+#: ../libempathy-gtk/empathy-log-window.c:1915
+#: ../libempathy-gtk/empathy-log-window.c:2371
 msgid "Anyone"
 msgstr "任何人"
 
-#: ../libempathy-gtk/empathy-log-window.c:2685
+#: ../libempathy-gtk/empathy-log-window.c:2684
 msgid "Who"
 msgstr "谁"
 
-#: ../libempathy-gtk/empathy-log-window.c:2889
+#: ../libempathy-gtk/empathy-log-window.c:2893
 msgid "When"
 msgstr "何时"
 
-#: ../libempathy-gtk/empathy-log-window.c:3005
+#: ../libempathy-gtk/empathy-log-window.c:3009
 msgid "Anything"
 msgstr "任何事"
 
-#: ../libempathy-gtk/empathy-log-window.c:3007
+#: ../libempathy-gtk/empathy-log-window.c:3011
 msgid "Text chats"
 msgstr "文本聊天"
 
-#: ../libempathy-gtk/empathy-log-window.c:3009
+#: ../libempathy-gtk/empathy-log-window.c:3013
 #: ../src/empathy-preferences.ui.h:4
 msgid "Calls"
 msgstr "通话"
 
-#: ../libempathy-gtk/empathy-log-window.c:3014
+#: ../libempathy-gtk/empathy-log-window.c:3018
 msgid "Incoming calls"
 msgstr "来电"
 
-#: ../libempathy-gtk/empathy-log-window.c:3015
+#: ../libempathy-gtk/empathy-log-window.c:3019
 msgid "Outgoing calls"
 msgstr "呼出的语音通话"
 
-#: ../libempathy-gtk/empathy-log-window.c:3016
+#: ../libempathy-gtk/empathy-log-window.c:3020
 msgid "Missed calls"
 msgstr "未接来电"
 
-#: ../libempathy-gtk/empathy-log-window.c:3038
+#: ../libempathy-gtk/empathy-log-window.c:3042
 msgid "What"
 msgstr "什么事"
 
-#: ../libempathy-gtk/empathy-log-window.c:3747
+#: ../libempathy-gtk/empathy-log-window.c:3751
 msgid "Are you sure you want to delete all logs of previous conversations?"
 msgstr "确定要删除以前的全部对话日志?"
 
-#: ../libempathy-gtk/empathy-log-window.c:3751
+#: ../libempathy-gtk/empathy-log-window.c:3755
 msgid "Clear All"
 msgstr "全部清除"
 
-#: ../libempathy-gtk/empathy-log-window.c:3758
+#: ../libempathy-gtk/empathy-log-window.c:3762
 msgid "Delete from:"
 msgstr "从以下位置删除:"
 
@@ -2464,36 +2477,101 @@ msgstr "文件(_F)"
 msgid "page 2"
 msgstr "第 2 页"
 
-#: ../libempathy-gtk/empathy-contact-selector-dialog.ui.h:2
-msgid "Contact ID:"
-msgstr "联系人 ID:"
+#: ../libempathy-gtk/empathy-new-message-dialog.c:84
+#, fuzzy
+#| msgid "The specified contact is offline"
+msgid "The contact is offline"
+msgstr "选择的联系人离线"
 
-#. add chat button
-#: ../libempathy-gtk/empathy-new-message-dialog.c:225
-msgid "C_hat"
-msgstr "聊天(_H)"
+#: ../libempathy-gtk/empathy-new-message-dialog.c:86
+#, fuzzy
+#| msgid "The specified contact is not valid"
+msgid "The specified contact is either invalid or unknown"
+msgstr "选择的联系人无效"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.c:88
+msgid "The contact does not support this kind of conversation"
+msgstr "选择的联系人不支持在该类型会话"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.c:90
+msgid "The requested functionality is not implemented for this protocol"
+msgstr "所要求的功能与此协议不兼容"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.c:96
+msgid "Could not start a conversation with the given contact"
+msgstr "无法与选择的联系人发起对话"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.c:98
+msgid "You are banned from this channel"
+msgstr "您已被此频道屏蔽"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.c:100
+msgid "This channel is full"
+msgstr "频道已满"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.c:102
+#, fuzzy
+#| msgid "You have been invited to join %s"
+msgid "You must be invited to join this channel"
+msgstr "您被邀请加入 %s"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.c:104
+#, fuzzy
+#| msgid "Contact disconnected"
+msgid "Can't proceed while disconnected"
+msgstr "联系人已断开"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.c:106
+#, fuzzy
+#| msgid "permission denied"
+msgid "Permission denied"
+msgstr "权限不足"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.c:112
+#, fuzzy
+#| msgid "There was an error starting the call"
+msgid "There was an error starting the conversation"
+msgstr "发起呼叫时出错"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.c:291
+#: ../libempathy-gtk/empathy-new-call-dialog.c:203
+msgid "Enter a contact identifier or phone number:"
+msgstr "输入一个联系人标识或电话号码:"
 
 #. Tweak the dialog
-#: ../libempathy-gtk/empathy-new-message-dialog.c:244
+#: ../libempathy-gtk/empathy-new-message-dialog.c:334
 msgid "New Conversation"
 msgstr "新建对话"
 
-#. add video toggle
-#: ../libempathy-gtk/empathy-new-call-dialog.c:204
-msgid "Send _Video"
-msgstr "发送视频(_V)"
+#. add video button
+#: ../libempathy-gtk/empathy-new-call-dialog.c:226
+#, fuzzy
+#| msgctxt "menu item"
+#| msgid "_Video Call"
+msgid "_Video Call"
+msgstr "视频呼叫(_V)"
 
-#. add chat button
-#: ../libempathy-gtk/empathy-new-call-dialog.c:215
-msgid "C_all"
-msgstr "通话(_A)"
+#. add audio button
+#: ../libempathy-gtk/empathy-new-call-dialog.c:236
+#, fuzzy
+#| msgctxt "menu item"
+#| msgid "_Audio Call"
+msgid "_Audio Call"
+msgstr "音频呼叫(_A)"
 
 #. Tweak the dialog
-#: ../libempathy-gtk/empathy-new-call-dialog.c:225
+#: ../libempathy-gtk/empathy-new-call-dialog.c:246
 msgid "New Call"
 msgstr "新建通话"
 
-#: ../libempathy-gtk/empathy-password-dialog.c:274
+#: ../libempathy-gtk/empathy-bad-password-dialog.c:130
+#, fuzzy, c-format
+#| msgid "Authentication failed"
+msgid "Authentification failed for account <b>%s</b>"
+msgstr "验证失败"
+
+#: ../libempathy-gtk/empathy-base-password-dialog.c:224
+#: ../libempathy-gtk/empathy-password-dialog.c:134
 #, c-format
 msgid ""
 "Enter your password for account\n"
@@ -2530,12 +2608,8 @@ msgstr "点击设置自定义状态"
 msgid "Set status"
 msgstr "设置状态"
 
-#: ../libempathy-gtk/empathy-presence-chooser.c:943
-msgid "Set your presence and current status"
-msgstr "设置您的状态信息和现在的状态"
-
 #. Custom messages
-#: ../libempathy-gtk/empathy-presence-chooser.c:1131
+#: ../libempathy-gtk/empathy-presence-chooser.c:1135
 msgid "Custom messages…"
 msgstr "自定义消息..."
 
@@ -2612,12 +2686,12 @@ msgstr "语音通话结束"
 msgid "Edit Custom Messages"
 msgstr "编辑自定义状态"
 
-#: ../libempathy-gtk/empathy-theme-adium.c:1036
+#: ../libempathy-gtk/empathy-theme-adium.c:1047
 #, c-format
 msgid "Message edited at %s"
 msgstr "消息于 %s 被编辑"
 
-#: ../libempathy-gtk/empathy-theme-adium.c:1726
+#: ../libempathy-gtk/empathy-theme-adium.c:1752
 msgid "Normal"
 msgstr "普通"
 
@@ -2708,26 +2782,26 @@ msgstr "为将来的连接记住本次选择"
 msgid "Certificate Details"
 msgstr "证书详情"
 
-#: ../libempathy-gtk/empathy-ui-utils.c:1735
+#: ../libempathy-gtk/empathy-ui-utils.c:1741
 msgid "Unable to open URI"
 msgstr "无法打开 URI"
 
-#: ../libempathy-gtk/empathy-ui-utils.c:1831
+#: ../libempathy-gtk/empathy-ui-utils.c:1859
 msgid "Select a file"
 msgstr "选择文件"
 
-#: ../libempathy-gtk/empathy-ui-utils.c:1903
+#: ../libempathy-gtk/empathy-ui-utils.c:1934
 msgid "Insufficient free space to save file"
 msgstr "空间不足,无法保存文件"
 
-#: ../libempathy-gtk/empathy-ui-utils.c:1911
+#: ../libempathy-gtk/empathy-ui-utils.c:1942
 #, c-format
 msgid ""
 "%s of free space are required to save this file, but only %s is available. "
 "Please choose another location."
 msgstr "保存此文件需要 %s 空闲空间,但目前仅有 %s,请选择其他位置。"
 
-#: ../libempathy-gtk/empathy-ui-utils.c:1955
+#: ../libempathy-gtk/empathy-ui-utils.c:1986
 #, c-format
 msgid "Incoming file from %s"
 msgstr "从 %s 传来的文件"
@@ -2899,39 +2973,31 @@ msgstr "西方语言"
 msgid "Vietnamese"
 msgstr "越南语"
 
-#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:108
-msgid "The selected contact cannot receive files."
-msgstr "选择的联系人无法接收文件。"
-
-#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:114
-msgid "The selected contact is offline."
-msgstr "选择的联系人离线。"
-
-#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:169
+#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:203
 msgid "No error message"
 msgstr "无错误信息"
 
-#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:242
+#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:276
 msgid "Instant Message (Empathy)"
 msgstr "即时消息(Empathy)"
 
-#: ../src/empathy.c:431
+#: ../src/empathy.c:433
 msgid "Don't connect on startup"
 msgstr "启动时不自动连接"
 
-#: ../src/empathy.c:435
+#: ../src/empathy.c:437
 msgid "Don't display the contact list or any other dialogs on startup"
 msgstr "启动时不显示联系人列表"
 
-#: ../src/empathy.c:450
+#: ../src/empathy.c:452
 msgid "- Empathy IM Client"
 msgstr " - Empathy 即时通讯客户端"
 
-#: ../src/empathy.c:637
+#: ../src/empathy.c:639
 msgid "Error contacting the Account Manager"
 msgstr "联系帐号管理器出错"
 
-#: ../src/empathy.c:639
+#: ../src/empathy.c:641
 #, c-format
 msgid ""
 "There was an error while trying to connect to the Telepathy Account Manager. "
@@ -3030,7 +3096,7 @@ msgstr ""
 "您可以返回尝试重新输入您的帐号信息,或者退出助理,然后从编辑菜单中加入帐户。"
 
 #: ../src/empathy-account-assistant.c:220
-#: ../src/empathy-account-assistant.c:1271
+#: ../src/empathy-account-assistant.c:1272
 msgid "An error occurred"
 msgstr "发生错误"
 
@@ -3073,37 +3139,37 @@ msgstr ""
 msgid "Do you have an account you've been using with another chat program?"
 msgstr "您有没有其它聊天软件的帐号?"
 
-#: ../src/empathy-account-assistant.c:652
+#: ../src/empathy-account-assistant.c:653
 msgid "Yes, import my account details from "
 msgstr "有,请导入我的帐号信息"
 
-#: ../src/empathy-account-assistant.c:673
+#: ../src/empathy-account-assistant.c:674
 msgid "Yes, I'll enter my account details now"
 msgstr "有,我现在就输入我的帐号信息"
 
-#: ../src/empathy-account-assistant.c:695
+#: ../src/empathy-account-assistant.c:696
 msgid "No, I want a new account"
 msgstr "不,我想要一个新的帐号"
 
-#: ../src/empathy-account-assistant.c:705
+#: ../src/empathy-account-assistant.c:706
 msgid "No, I just want to see people online nearby for now"
 msgstr "没有,我只是想看看附近现在谁在线上"
 
-#: ../src/empathy-account-assistant.c:726
+#: ../src/empathy-account-assistant.c:727
 msgid "Select the accounts you want to import:"
 msgstr "选择您要导入的帐号:"
 
-#: ../src/empathy-account-assistant.c:813
-#: ../src/empathy-new-chatroom-dialog.c:555
-#: ../src/empathy-new-chatroom-dialog.c:556
+#: ../src/empathy-account-assistant.c:814
+#: ../src/empathy-new-chatroom-dialog.c:625
+#: ../src/empathy-new-chatroom-dialog.c:626
 msgid "Yes"
 msgstr "是"
 
-#: ../src/empathy-account-assistant.c:820
+#: ../src/empathy-account-assistant.c:821
 msgid "No, that's all for now"
 msgstr "没有,就这样吧"
 
-#: ../src/empathy-account-assistant.c:1085
+#: ../src/empathy-account-assistant.c:1086
 msgid ""
 "Empathy can automatically discover and chat with the people connected on the "
 "same network as you. If you want to use this feature, please check that the "
@@ -3114,16 +3180,16 @@ msgstr ""
 "想使用这个功能,请仔细查看下列信息是否正确。您之后也可以通过“帐号”对话框轻松"
 "的修改这些信息或关闭这个功能"
 
-#: ../src/empathy-account-assistant.c:1091
-#: ../src/empathy-account-assistant.c:1147
+#: ../src/empathy-account-assistant.c:1092
+#: ../src/empathy-account-assistant.c:1148
 msgid "Edit->Accounts"
 msgstr "编辑->帐号"
 
-#: ../src/empathy-account-assistant.c:1107
+#: ../src/empathy-account-assistant.c:1108
 msgid "I do _not want to enable this feature for now"
 msgstr "暂不启用此特性(_N)"
 
-#: ../src/empathy-account-assistant.c:1143
+#: ../src/empathy-account-assistant.c:1144
 msgid ""
 "You won't be able to chat with people connected to your local network, as "
 "telepathy-salut is not installed. If you want to enable this feature, please "
@@ -3134,23 +3200,23 @@ msgstr ""
 "用该功能,请安装 telepathy-salut 包,并且在帐号对话框中创建附近的人(People "
 "Nearby)帐号"
 
-#: ../src/empathy-account-assistant.c:1149
+#: ../src/empathy-account-assistant.c:1150
 msgid "telepathy-salut not installed"
 msgstr "telepathy-salut 未安装"
 
-#: ../src/empathy-account-assistant.c:1195
+#: ../src/empathy-account-assistant.c:1196
 msgid "Messaging and VoIP Accounts Assistant"
 msgstr "消息和 VoIP 帐号助手"
 
-#: ../src/empathy-account-assistant.c:1229
+#: ../src/empathy-account-assistant.c:1230
 msgid "Welcome to Empathy"
 msgstr "欢迎使用 Empathy"
 
-#: ../src/empathy-account-assistant.c:1238
+#: ../src/empathy-account-assistant.c:1239
 msgid "Import your existing accounts"
 msgstr "导入现有帐号"
 
-#: ../src/empathy-account-assistant.c:1256
+#: ../src/empathy-account-assistant.c:1257
 msgid "Please enter personal details"
 msgstr "请输入个人信息"
 
@@ -3168,8 +3234,8 @@ msgid "Your new account has not been saved yet."
 msgstr "您的新帐号还没有保存。"
 
 #: ../src/empathy-accounts-dialog.c:345
-#: ../src/empathy-streamed-media-window.c:754
-#: ../src/empathy-call-window.c:1216
+#: ../src/empathy-streamed-media-window.c:757
+#: ../src/empathy-call-window.c:1325
 msgid "Connecting…"
 msgstr "正在连接..."
 
@@ -3257,11 +3323,11 @@ msgstr "要添加一个新帐号,您首先需要为您想要使用的每个协
 msgid "_Import…"
 msgstr "导入(_I)..."
 
-#: ../src/empathy-auth-client.c:249
+#: ../src/empathy-auth-client.c:284
 msgid " - Empathy authentication client"
 msgstr " - Empathy 认证客户端"
 
-#: ../src/empathy-auth-client.c:265
+#: ../src/empathy-auth-client.c:300
 msgid "Empathy authentication client"
 msgstr "Empathy 认证客户端"
 
@@ -3269,157 +3335,147 @@ msgstr "Empathy 认证客户端"
 msgid "People nearby"
 msgstr "附近的人"
 
-#: ../src/empathy-av.c:118 ../src/empathy-call.c:192
+#: ../src/empathy-av.c:118 ../src/empathy-call.c:193
 msgid "- Empathy Audio/Video Client"
 msgstr " - Empathy 语音/视频客户端"
 
-#: ../src/empathy-av.c:134 ../src/empathy-call.c:217
+#: ../src/empathy-av.c:134 ../src/empathy-call.c:218
 msgid "Empathy Audio/Video Client"
 msgstr "Empathy 语音/视频客户端"
 
-#: ../src/empathy-streamed-media-window.c:431
+#: ../src/empathy-streamed-media-window.c:433
 msgid "Contrast"
 msgstr "对比度"
 
-#: ../src/empathy-streamed-media-window.c:434
+#: ../src/empathy-streamed-media-window.c:436
 msgid "Brightness"
 msgstr "亮度"
 
-#: ../src/empathy-streamed-media-window.c:437
+#: ../src/empathy-streamed-media-window.c:439
 msgid "Gamma"
 msgstr "伽马"
 
-#: ../src/empathy-streamed-media-window.c:542
+#: ../src/empathy-streamed-media-window.c:545
 msgid "Volume"
 msgstr "音量"
 
-#: ../src/empathy-streamed-media-window.c:1110
+#: ../src/empathy-streamed-media-window.c:1097
 msgid "_Sidebar"
 msgstr "侧边栏(_S)"
 
-#: ../src/empathy-streamed-media-window.c:1130
+#: ../src/empathy-streamed-media-window.c:1117
 msgid "Audio input"
 msgstr "音频输入"
 
-#: ../src/empathy-streamed-media-window.c:1134
+#: ../src/empathy-streamed-media-window.c:1121
 msgid "Video input"
 msgstr "视频输入"
 
-#: ../src/empathy-streamed-media-window.c:1140
+#: ../src/empathy-streamed-media-window.c:1129
 msgid "Dialpad"
 msgstr "电话键盘"
 
-#: ../src/empathy-streamed-media-window.c:1151
+#: ../src/empathy-streamed-media-window.c:1140
 msgid "Details"
 msgstr "详细信息"
 
 #. translators: Call is a noun and %s is the contact name. This string
 #. * is used in the window title
-#: ../src/empathy-streamed-media-window.c:1220
-#: ../src/empathy-call-window.c:1825
+#: ../src/empathy-streamed-media-window.c:1209
+#: ../src/empathy-call-window.c:1927
 #, c-format
 msgid "Call with %s"
 msgstr "与 %s 通话"
 
-#: ../src/empathy-streamed-media-window.c:1453
-#: ../src/empathy-call-window.c:2069
+#: ../src/empathy-streamed-media-window.c:1442
+#: ../src/empathy-call-window.c:2171
 msgid "The IP address as seen by the machine"
 msgstr "机器所见的 IP 地址"
 
-#: ../src/empathy-streamed-media-window.c:1455
-#: ../src/empathy-call-window.c:2071
+#: ../src/empathy-streamed-media-window.c:1444
+#: ../src/empathy-call-window.c:2173
 msgid "The IP address as seen by a server on the Internet"
 msgstr "Internet 上服务器所见的 IP 地址"
 
-#: ../src/empathy-streamed-media-window.c:1457
-#: ../src/empathy-call-window.c:2073
+#: ../src/empathy-streamed-media-window.c:1446
+#: ../src/empathy-call-window.c:2175
 msgid "The IP address of the peer as seen by the other side"
 msgstr "另一方所见的 IP 地址"
 
-#: ../src/empathy-streamed-media-window.c:1459
-#: ../src/empathy-call-window.c:2075
+#: ../src/empathy-streamed-media-window.c:1448
+#: ../src/empathy-call-window.c:2177
 msgid "The IP address of a relay server"
 msgstr "中转服务器 IP 地址"
 
-#: ../src/empathy-streamed-media-window.c:1461
-#: ../src/empathy-call-window.c:2077
+#: ../src/empathy-streamed-media-window.c:1450
+#: ../src/empathy-call-window.c:2179
 msgid "The IP address of the multicast group"
 msgstr "多播组的 IP 地址"
 
-#: ../src/empathy-streamed-media-window.c:1843
-msgctxt "encoding video codec"
-msgid "Unknown"
-msgstr "未知"
-
-#: ../src/empathy-streamed-media-window.c:1846
-msgctxt "encoding audio codec"
-msgid "Unknown"
-msgstr "未知"
-
-#: ../src/empathy-streamed-media-window.c:1849
-msgctxt "decoding video codec"
-msgid "Unknown"
-msgstr "未知"
-
-#: ../src/empathy-streamed-media-window.c:1852
-msgctxt "decoding audio codec"
+#: ../src/empathy-streamed-media-window.c:1838
+#: ../src/empathy-streamed-media-window.c:1841
+#: ../src/empathy-streamed-media-window.c:1844
+#: ../src/empathy-streamed-media-window.c:1847
+#, fuzzy
+#| msgid "Unknown"
+msgctxt "codec"
 msgid "Unknown"
 msgstr "未知"
 
 #. Translators: number of minutes:seconds the caller has been connected
-#: ../src/empathy-streamed-media-window.c:2144
+#: ../src/empathy-streamed-media-window.c:2139
 #, c-format
 msgid "Connected — %d:%02dm"
 msgstr "已连接 — %d:%02dm"
 
-#: ../src/empathy-streamed-media-window.c:2205
-#: ../src/empathy-call-window.c:2846
+#: ../src/empathy-streamed-media-window.c:2200
+#: ../src/empathy-call-window.c:3033
 msgid "Technical Details"
 msgstr "技术细节"
 
-#: ../src/empathy-streamed-media-window.c:2243
-#: ../src/empathy-call-window.c:2884
+#: ../src/empathy-streamed-media-window.c:2238
+#: ../src/empathy-call-window.c:3072
 #, c-format
 msgid ""
 "%s's software does not understand any of the audio formats supported by your "
 "computer"
 msgstr "%s 软件无法理解您计算机所支持的任何音频格式。"
 
-#: ../src/empathy-streamed-media-window.c:2248
-#: ../src/empathy-call-window.c:2889
+#: ../src/empathy-streamed-media-window.c:2243
+#: ../src/empathy-call-window.c:3077
 #, c-format
 msgid ""
 "%s's software does not understand any of the video formats supported by your "
 "computer"
 msgstr "%s 软件无法理解您计算机所支持的任何视频格式。"
 
-#: ../src/empathy-streamed-media-window.c:2254
-#: ../src/empathy-call-window.c:2895
+#: ../src/empathy-streamed-media-window.c:2249
+#: ../src/empathy-call-window.c:3083
 #, c-format
 msgid ""
 "Can't establish a connection to %s. One of you might be on a network that "
 "does not allow direct connections."
 msgstr "不能与 %s 建立连接。可能是两台计算机之一不允许直接连接。"
 
-#: ../src/empathy-streamed-media-window.c:2260
-#: ../src/empathy-call-window.c:2901
+#: ../src/empathy-streamed-media-window.c:2255
+#: ../src/empathy-call-window.c:3089
 msgid "There was a failure on the network"
 msgstr "网络出现一个错误"
 
-#: ../src/empathy-streamed-media-window.c:2264
-#: ../src/empathy-call-window.c:2905
+#: ../src/empathy-streamed-media-window.c:2259
+#: ../src/empathy-call-window.c:3093
 msgid ""
 "The audio formats necessary for this call are not installed on your computer"
 msgstr "呼叫所需要的音频格式还没有在您的电脑上安装"
 
-#: ../src/empathy-streamed-media-window.c:2267
-#: ../src/empathy-call-window.c:2908
+#: ../src/empathy-streamed-media-window.c:2262
+#: ../src/empathy-call-window.c:3096
 msgid ""
 "The video formats necessary for this call are not installed on your computer"
 msgstr "呼叫所需要的视频格式还没有在您的电脑上安装"
 
-#: ../src/empathy-streamed-media-window.c:2277
-#: ../src/empathy-call-window.c:2920
+#: ../src/empathy-streamed-media-window.c:2272
+#: ../src/empathy-call-window.c:3108
 #, c-format
 msgid ""
 "Something unexpected happened in a Telepathy component. Please <a href=\"%s"
@@ -3429,23 +3485,23 @@ msgstr ""
 "Telepathy 组件出现了一些意外。请<a href=\"%s\">汇报这个错误</a>,并附上帮助菜"
 "单里“调试”窗口收集到的日志。"
 
-#: ../src/empathy-streamed-media-window.c:2285
-#: ../src/empathy-call-window.c:2929
+#: ../src/empathy-streamed-media-window.c:2280
+#: ../src/empathy-call-window.c:3117
 msgid "There was a failure in the call engine"
 msgstr "呼叫引擎里出现了一个故障"
 
-#: ../src/empathy-streamed-media-window.c:2288
-#: ../src/empathy-call-window.c:2932
+#: ../src/empathy-streamed-media-window.c:2283
+#: ../src/empathy-call-window.c:3120
 msgid "The end of the stream was reached"
 msgstr "已到达流的末尾"
 
-#: ../src/empathy-streamed-media-window.c:2328
-#: ../src/empathy-call-window.c:2972
+#: ../src/empathy-streamed-media-window.c:2323
+#: ../src/empathy-call-window.c:3160
 msgid "Can't establish audio stream"
 msgstr "不能建立音频流"
 
-#: ../src/empathy-streamed-media-window.c:2338
-#: ../src/empathy-call-window.c:2982
+#: ../src/empathy-streamed-media-window.c:2333
+#: ../src/empathy-call-window.c:3170
 msgid "Can't establish video stream"
 msgstr "不能建立视频流"
 
@@ -3536,8 +3592,8 @@ msgstr "切换视频传输"
 
 #: ../src/empathy-call-window.ui.h:21
 #: ../src/empathy-streamed-media-window.ui.h:18
-#: ../src/empathy-call-window.c:2476 ../src/empathy-call-window.c:2477
-#: ../src/empathy-call-window.c:2478 ../src/empathy-call-window.c:2479
+#: ../src/empathy-call-window.c:2580 ../src/empathy-call-window.c:2581
+#: ../src/empathy-call-window.c:2582 ../src/empathy-call-window.c:2583
 msgid "Unknown"
 msgstr "未知"
 
@@ -3701,7 +3757,7 @@ msgstr "管理聊天室收藏"
 msgid "Incoming video call"
 msgstr "呼入的视频通话"
 
-#: ../src/empathy-event-manager.c:521 ../src/empathy-call-window.c:1449
+#: ../src/empathy-event-manager.c:521 ../src/empathy-call-window.c:1555
 msgid "Incoming call"
 msgstr "来电"
 
@@ -3716,7 +3772,7 @@ msgid "%s is calling you. Do you want to answer?"
 msgstr "%s 来电,您想要接听吗?"
 
 #: ../src/empathy-event-manager.c:529 ../src/empathy-event-manager.c:730
-#: ../src/empathy-event-manager.c:763 ../src/empathy-call-window.c:1455
+#: ../src/empathy-event-manager.c:763 ../src/empathy-call-window.c:1561
 #, c-format
 msgid "Incoming call from %s"
 msgstr "%s 的来电"
@@ -3734,7 +3790,7 @@ msgid "_Answer with video"
 msgstr "使用视频接听(_A)"
 
 #: ../src/empathy-event-manager.c:730 ../src/empathy-event-manager.c:763
-#: ../src/empathy-call-window.c:1455
+#: ../src/empathy-call-window.c:1561
 #, c-format
 msgid "Incoming video call from %s"
 msgstr "%s 的视频呼叫"
@@ -3777,16 +3833,16 @@ msgstr "您被邀请加入 %s"
 msgid "Incoming file transfer from %s"
 msgstr "接收 %s 文件传输"
 
-#: ../src/empathy-event-manager.c:1134 ../src/empathy-main-window.c:375
+#: ../src/empathy-event-manager.c:1145 ../src/empathy-main-window.c:377
 msgid "Password required"
 msgstr "需要密码"
 
-#: ../src/empathy-event-manager.c:1190
+#: ../src/empathy-event-manager.c:1210
 #, c-format
 msgid "%s would like permission to see when you are online"
 msgstr "%s 当您在线的时候可见"
 
-#: ../src/empathy-event-manager.c:1194
+#: ../src/empathy-event-manager.c:1214
 #, c-format
 msgid ""
 "\n"
@@ -3929,51 +3985,60 @@ msgstr "协议"
 msgid "Source"
 msgstr "源"
 
-#: ../src/empathy-main-window.c:392
+#: ../src/empathy-main-window.c:394
 msgid "Provide Password"
 msgstr "提供密码"
 
-#: ../src/empathy-main-window.c:398
+#: ../src/empathy-main-window.c:400
 msgid "Disconnect"
 msgstr "已断开连接"
 
-#: ../src/empathy-main-window.c:622
+#: ../src/empathy-main-window.c:637
 msgid "No match found"
 msgstr "没有找到匹配项"
 
-#: ../src/empathy-main-window.c:777
+#: ../src/empathy-main-window.c:745
+#, c-format
+msgid "Sorry, %s accounts can’t be used until your %s software is updated."
+msgstr "很抱歉,在软件 %2$s 更新前,您不能使用 %1$s 帐户。"
+
+#: ../src/empathy-main-window.c:813
+msgid "Update software..."
+msgstr "升级软件"
+
+#: ../src/empathy-main-window.c:819 ../src/empathy-main-window.c:940
+msgid "Close"
+msgstr "关闭"
+
+#: ../src/empathy-main-window.c:928
 msgid "Reconnect"
 msgstr "重新连接"
 
-#: ../src/empathy-main-window.c:783
+#: ../src/empathy-main-window.c:934
 msgid "Edit Account"
 msgstr "编辑帐号"
 
-#: ../src/empathy-main-window.c:789
-msgid "Close"
-msgstr "关闭"
-
 #. Translators: this string will be something like:
 #. *   Top up My Account ($1.23)..."
-#: ../src/empathy-main-window.c:928
+#: ../src/empathy-main-window.c:1073
 #, c-format
 msgid "Top up %s (%s)..."
 msgstr "给 %s 充值(%s)..."
 
-#: ../src/empathy-main-window.c:975
+#: ../src/empathy-main-window.c:1120
 msgid "Top up account credit"
-msgstr "户充值"
+msgstr "户充值"
 
 #. top up button
-#: ../src/empathy-main-window.c:1046
+#: ../src/empathy-main-window.c:1191
 msgid "Top Up..."
 msgstr "充值..."
 
-#: ../src/empathy-main-window.c:1789
+#: ../src/empathy-main-window.c:1934
 msgid "Contact"
 msgstr "联系人"
 
-#: ../src/empathy-main-window.c:2121
+#: ../src/empathy-main-window.c:2309
 msgid "Contact List"
 msgstr "联系人列表"
 
@@ -3983,7 +4048,7 @@ msgstr "联系人地图(_M)"
 
 #: ../src/empathy-main-window-menubar.ui.h:2
 msgid "Credit Balance"
-msgstr "户余额"
+msgstr "户余额"
 
 #: ../src/empathy-main-window-menubar.ui.h:3
 msgid "Find in Contact _List"
@@ -4066,17 +4131,17 @@ msgstr "聊天室(_R)"
 msgid "_Search for Contacts…"
 msgstr "搜索联系人(_S)..."
 
-#: ../src/empathy-new-chatroom-dialog.c:337
+#: ../src/empathy-new-chatroom-dialog.c:369
 msgid "Chat Room"
 msgstr "聊天室"
 
-#: ../src/empathy-new-chatroom-dialog.c:353
+#: ../src/empathy-new-chatroom-dialog.c:385
 msgid "Members"
 msgstr "成员"
 
 #. Translators: Room/Join's roomlist tooltip. Parameters are a channel name,
 #. yes/no, yes/no and a number.
-#: ../src/empathy-new-chatroom-dialog.c:553
+#: ../src/empathy-new-chatroom-dialog.c:623
 #, c-format
 msgid ""
 "%s\n"
@@ -4089,16 +4154,16 @@ msgstr ""
 "需要密码: %s\n"
 "成员: %s"
 
-#: ../src/empathy-new-chatroom-dialog.c:555
-#: ../src/empathy-new-chatroom-dialog.c:556
+#: ../src/empathy-new-chatroom-dialog.c:625
+#: ../src/empathy-new-chatroom-dialog.c:626
 msgid "No"
 msgstr "否"
 
-#: ../src/empathy-new-chatroom-dialog.c:584
+#: ../src/empathy-new-chatroom-dialog.c:654
 msgid "Could not start room listing"
 msgstr "无法开始聊天室列表"
 
-#: ../src/empathy-new-chatroom-dialog.c:594
+#: ../src/empathy-new-chatroom-dialog.c:664
 msgid "Could not stop room listing"
 msgstr "无法停止聊天室列表"
 
@@ -4129,79 +4194,79 @@ msgstr "聊天室列表"
 msgid "_Room:"
 msgstr "聊天室(_R):"
 
-#: ../src/empathy-preferences.c:169
+#: ../src/empathy-preferences.c:166
 msgid "Message received"
 msgstr "收到了消息"
 
-#: ../src/empathy-preferences.c:170
+#: ../src/empathy-preferences.c:167
 msgid "Message sent"
 msgstr "发出了消息"
 
-#: ../src/empathy-preferences.c:171
+#: ../src/empathy-preferences.c:168
 msgid "New conversation"
 msgstr "新对话"
 
-#: ../src/empathy-preferences.c:172
+#: ../src/empathy-preferences.c:169
 msgid "Contact goes online"
 msgstr "离线人上线"
 
-#: ../src/empathy-preferences.c:173
+#: ../src/empathy-preferences.c:170
 msgid "Contact goes offline"
 msgstr "联系人离线"
 
-#: ../src/empathy-preferences.c:174
+#: ../src/empathy-preferences.c:171
 msgid "Account connected"
 msgstr "帐号已连接"
 
-#: ../src/empathy-preferences.c:175
+#: ../src/empathy-preferences.c:172
 msgid "Account disconnected"
 msgstr "帐号已断开"
 
-#: ../src/empathy-preferences.c:484
+#: ../src/empathy-preferences.c:475
 msgid "Language"
 msgstr "语言"
 
 #. translators: Contact name for the chat theme preview
-#: ../src/empathy-preferences.c:734
+#: ../src/empathy-preferences.c:725
 msgid "Juliet"
 msgstr "朱立叶"
 
 #. translators: Contact name for the chat theme preview
-#: ../src/empathy-preferences.c:741
+#: ../src/empathy-preferences.c:732
 msgid "Romeo"
 msgstr "罗密欧"
 
 #. translators: Quote from Romeo & Julier, for chat theme preview
-#: ../src/empathy-preferences.c:747
+#: ../src/empathy-preferences.c:738
 msgid "O Romeo, Romeo, wherefore art thou Romeo?"
 msgstr "O Romeo, Romeo, wherefore art thou Romeo?"
 
 #. translators: Quote from Romeo & Julier, for chat theme preview
-#: ../src/empathy-preferences.c:750
+#: ../src/empathy-preferences.c:741
 msgid "Deny thy father and refuse thy name;"
 msgstr "Deny thy father and refuse thy name;"
 
 #. translators: Quote from Romeo & Julier, for chat theme preview
-#: ../src/empathy-preferences.c:753
+#: ../src/empathy-preferences.c:744
 msgid "Or if thou wilt not, be but sworn my love"
 msgstr "Or if thou wilt not, be but sworn my love"
 
 #. translators: Quote from Romeo & Julier, for chat theme preview
-#: ../src/empathy-preferences.c:756
+#: ../src/empathy-preferences.c:747
 msgid "And I'll no longer be a Capulet."
 msgstr "And I'll no longer be a Capulet."
 
 #. translators: Quote from Romeo & Julier, for chat theme preview
-#: ../src/empathy-preferences.c:759
+#: ../src/empathy-preferences.c:750
 msgid "Shall I hear more, or shall I speak at this?"
 msgstr "Shall I hear more, or shall I speak at this?"
 
 #. translators: Quote from Romeo & Julier, for chat theme preview
-#: ../src/empathy-preferences.c:762
+#: ../src/empathy-preferences.c:753
 msgid "Juliet has disconnected"
 msgstr "朱立叶已断开连接"
 
-#: ../src/empathy-preferences.c:1166
+#: ../src/empathy-preferences.c:1157
 msgid "Preferences"
 msgstr "首选项"
 
@@ -4259,35 +4324,27 @@ msgstr "允许拼写检查的语言:"
 msgid "General"
 msgstr "常规"
 
-#: ../src/empathy-preferences.ui.h:15
-msgid "Input level:"
-msgstr "输入级别:"
-
 #: ../src/empathy-preferences.ui.h:16
-msgid "Input volume:"
-msgstr "输入音量:"
-
-#: ../src/empathy-preferences.ui.h:18
 msgid "Location sources:"
 msgstr "位置来源:"
 
-#: ../src/empathy-preferences.ui.h:19
+#: ../src/empathy-preferences.ui.h:17
 msgid "Log conversations"
 msgstr "记录对话"
 
-#: ../src/empathy-preferences.ui.h:20
+#: ../src/empathy-preferences.ui.h:18
 msgid "Notifications"
 msgstr "提示"
 
-#: ../src/empathy-preferences.ui.h:21
+#: ../src/empathy-preferences.ui.h:19
 msgid "Play sound for events"
 msgstr "播放事件声音"
 
-#: ../src/empathy-preferences.ui.h:22
+#: ../src/empathy-preferences.ui.h:20
 msgid "Privacy"
 msgstr "隐私"
 
-#: ../src/empathy-preferences.ui.h:23
+#: ../src/empathy-preferences.ui.h:21
 msgid ""
 "Reduced location accuracy means that nothing more precise than your city, "
 "state and country will be published.  GPS coordinates will be accurate to 1 "
@@ -4296,70 +4353,74 @@ msgstr ""
 "降低定位精度意味着比您所在的城市、州和国家更明确的信息将不会被公布。 GPS 坐标"
 "将精确到一位小数。 "
 
-#: ../src/empathy-preferences.ui.h:24
+#: ../src/empathy-preferences.ui.h:22
 msgid "Show _smileys as images"
 msgstr "显示表情符号为图形(_S)"
 
-#: ../src/empathy-preferences.ui.h:25
+#: ../src/empathy-preferences.ui.h:23
 msgid "Show contact _list in rooms"
 msgstr "在聊天室显示联系人列表(_L)"
 
-#: ../src/empathy-preferences.ui.h:26
+#: ../src/empathy-preferences.ui.h:24
 msgid "Sounds"
 msgstr "声音"
 
-#: ../src/empathy-preferences.ui.h:27
+#: ../src/empathy-preferences.ui.h:25
 msgid "Spell Checking"
 msgstr "拼写检查"
 
-#: ../src/empathy-preferences.ui.h:28
+#: ../src/empathy-preferences.ui.h:26
 msgid ""
 "The list of languages reflects only the languages for which you have a "
 "dictionary installed."
 msgstr "语言列表仅反映已安装的字典"
 
-#: ../src/empathy-preferences.ui.h:29
+#: ../src/empathy-preferences.ui.h:27
 msgid "Themes"
 msgstr "主题"
 
-#: ../src/empathy-preferences.ui.h:30
+#: ../src/empathy-preferences.ui.h:28
+msgid "Use _echo cancellation to improve call quality"
+msgstr "使用回声抑制,以改善通话质量"
+
+#: ../src/empathy-preferences.ui.h:29
 msgid "Variant:"
 msgstr "版本:"
 
-#: ../src/empathy-preferences.ui.h:31
+#: ../src/empathy-preferences.ui.h:30
 msgid "_Automatically connect on startup"
 msgstr "启动时自动连接(_A) "
 
-#: ../src/empathy-preferences.ui.h:32
+#: ../src/empathy-preferences.ui.h:31
 msgid "_Cellphone"
 msgstr "手机(_C)"
 
-#: ../src/empathy-preferences.ui.h:33
+#: ../src/empathy-preferences.ui.h:32
 msgid "_Enable bubble notifications"
 msgstr "允许气泡通知(_E)"
 
-#: ../src/empathy-preferences.ui.h:34
+#: ../src/empathy-preferences.ui.h:33
 msgid "_Enable sound notifications"
 msgstr "启用声音通知(_E)"
 
-#: ../src/empathy-preferences.ui.h:35
+#: ../src/empathy-preferences.ui.h:34
 msgid "_GPS"
 msgstr "_GPS"
 
-#: ../src/empathy-preferences.ui.h:36
+#: ../src/empathy-preferences.ui.h:35
 msgid "_Network (IP, Wi-Fi)"
 msgstr "网络(_N)(IP,Wi-Fi)"
 
-#: ../src/empathy-preferences.ui.h:37
+#: ../src/empathy-preferences.ui.h:36
 msgid "_Open new chats in separate windows"
 msgstr "在单独窗口中打开新聊天(_O)"
 
-#: ../src/empathy-preferences.ui.h:38
+#: ../src/empathy-preferences.ui.h:37
 msgid "_Publish location to my contacts"
 msgstr "向我的联系人公布位置信息(_P)"
 
 #. To translators: The longitude and latitude are rounded to closest 0,1 degrees, so for example 146,2345° is rounded to round(146,2345*10)/10 = 146,2 degrees.
-#: ../src/empathy-preferences.ui.h:40
+#: ../src/empathy-preferences.ui.h:39
 msgid "_Reduce location accuracy"
 msgstr "降低位置信息精度(_R)"
 
@@ -4485,16 +4546,16 @@ msgid ""
 "extension."
 msgstr "已选定的连接管理不支持远程调试扩展"
 
-#: ../src/empathy-invite-participant-dialog.c:179
-#: ../src/empathy-invite-participant-dialog.c:205
+#: ../src/empathy-invite-participant-dialog.c:197
+#: ../src/empathy-invite-participant-dialog.c:225
 msgid "Invite Participant"
 msgstr "邀请参与者"
 
-#: ../src/empathy-invite-participant-dialog.c:180
+#: ../src/empathy-invite-participant-dialog.c:198
 msgid "Choose a contact to invite into the conversation:"
 msgstr "选择一个联系人以加入该会话:"
 
-#: ../src/empathy-invite-participant-dialog.c:201
+#: ../src/empathy-invite-participant-dialog.c:221
 msgid "Invite"
 msgstr "邀请"
 
@@ -4516,23 +4577,29 @@ msgstr "首先选择给定帐号(如 gabble/jabber/foo_40example_2eorg0)"
 msgid "<account-id>"
 msgstr "<帐号 ID>"
 
-#: ../src/empathy-accounts.c:198
+#: ../src/empathy-accounts.c:196
+#, fuzzy
+#| msgid "Show the accounts dialog"
+msgid "Show account assistant"
+msgstr "显示帐号对话框"
+
+#: ../src/empathy-accounts.c:202
 msgid "- Empathy Accounts"
 msgstr "- Empathy 帐号"
 
-#: ../src/empathy-accounts.c:237
+#: ../src/empathy-accounts.c:238
 msgid "Empathy Accounts"
 msgstr "Empathy 帐号"
 
-#: ../src/empathy-debugger.c:70
+#: ../src/empathy-debugger.c:69
 msgid "Show a particular service"
 msgstr "显示特定的服务"
 
-#: ../src/empathy-debugger.c:75
+#: ../src/empathy-debugger.c:74
 msgid "- Empathy Debugger"
 msgstr "- Empathy 调试器"
 
-#: ../src/empathy-debugger.c:114
+#: ../src/empathy-debugger.c:113
 msgid "Empathy Debugger"
 msgstr "Empathy 调试器"
 
@@ -4540,39 +4607,39 @@ msgstr "Empathy 调试器"
 msgid "- Empathy Chat Client"
 msgstr " - Empathy IM 客户端"
 
-#: ../src/empathy-notifications-approver.c:203
+#: ../src/empathy-notifications-approver.c:190
 msgid "Respond"
 msgstr "响应"
 
-#: ../src/empathy-notifications-approver.c:217
-#: ../src/empathy-call-window.c:1459
+#: ../src/empathy-notifications-approver.c:204
+#: ../src/empathy-call-window.c:1565
 msgid "Reject"
 msgstr "拒绝"
 
-#: ../src/empathy-notifications-approver.c:222
-#: ../src/empathy-notifications-approver.c:227
-#: ../src/empathy-call-window.c:1460
+#: ../src/empathy-notifications-approver.c:209
+#: ../src/empathy-notifications-approver.c:214
+#: ../src/empathy-call-window.c:1566
 msgid "Answer"
 msgstr "接听"
 
-#: ../src/empathy-notifications-approver.c:227
+#: ../src/empathy-notifications-approver.c:214
 msgid "Answer with video"
 msgstr "以视频应答"
 
-#: ../src/empathy-notifications-approver.c:235
-#: ../src/empathy-notifications-approver.c:245
+#: ../src/empathy-notifications-approver.c:222
+#: ../src/empathy-notifications-approver.c:232
 msgid "Decline"
 msgstr "拒绝"
 
-#: ../src/empathy-notifications-approver.c:239
-#: ../src/empathy-notifications-approver.c:250
+#: ../src/empathy-notifications-approver.c:226
+#: ../src/empathy-notifications-approver.c:237
 msgid "Accept"
 msgstr "接受"
 
 #. translators: the 'Provide' button is displayed in a notification
 #. * bubble when Empathy is asking for an account password; clicking on it
 #. * brings the password popup.
-#: ../src/empathy-notifications-approver.c:260
+#: ../src/empathy-notifications-approver.c:247
 msgid "Provide"
 msgstr "提供"
 
@@ -4583,32 +4650,109 @@ msgstr "%s 刚刚尝试呼叫您,但您当时正在与其他人通话。"
 
 #. Translators: this is an "Info" label. It should be as short
 #. * as possible.
-#: ../src/empathy-call-window.c:1088 ../src/empathy-call-window.c:1111
+#: ../src/empathy-call-window.c:1172 ../src/empathy-call-window.c:1195
 msgid "i"
 msgstr "i"
 
-#: ../src/empathy-call-window.c:2775
+#: ../src/empathy-call-window.c:2929
 msgid "On hold"
 msgstr "挂起"
 
-#: ../src/empathy-call-window.c:2778
+#: ../src/empathy-call-window.c:2932
 msgid "Mute"
 msgstr "静音"
 
-#: ../src/empathy-call-window.c:2780
+#: ../src/empathy-call-window.c:2934
 msgid "Duration"
 msgstr "时长"
 
 #. Translators: 'status - minutes:seconds' the caller has been connected
-#: ../src/empathy-call-window.c:2783
+#: ../src/empathy-call-window.c:2937
 #, c-format
 msgid "%s — %d:%02dm"
 msgstr "%s — %d:%02dm"
 
+#: ../src/empathy-call-window.c:3207
+#, c-format
+msgid "Your current balance is %s."
+msgstr "您当前的余额为 %s。"
+
+#: ../src/empathy-call-window.c:3211
+msgid "Sorry, you don’t have enough credit for that call."
+msgstr "对不起,您信用卡余额不足以支付此次通话。"
+
+#: ../src/empathy-call-window.c:3213
+msgid "Top Up"
+msgstr "充值"
+
 #: ../libempathy-gtk/empathy-search-bar.c:243
 msgid "_Match case"
 msgstr "区分大小写(_M)"
 
+#~ msgid "Call volume"
+#~ msgstr "来电音量"
+
+#~ msgid "Call volume, as a percentage."
+#~ msgstr "来电音量,以百分比计。"
+
+#~ msgid "Input level:"
+#~ msgstr "输入级别:"
+
+#~ msgid "Input volume:"
+#~ msgstr "输入音量:"
+
+#~ msgid "Empathy has migrated butterfly logs"
+#~ msgstr "Empathy 已经迁移至 telepathy-butterfly 日志"
+
+#~ msgid "Whether Empathy has migrated butterfly logs."
+#~ msgstr "Empathy 是否已经迁移至 telepathy-butterfly 日志。"
+
+#~ msgid "Ungrouped"
+#~ msgstr "未分组"
+
+#~ msgid "Favorite People"
+#~ msgstr "收藏夹"
+
+#~ msgid "Select a contact"
+#~ msgstr "选择一个联系"
+
+#~ msgid "Contact ID:"
+#~ msgstr "联系人 ID:"
+
+#~ msgid "C_hat"
+#~ msgstr "聊天(_H)"
+
+#~ msgid "Send _Video"
+#~ msgstr "发送视频(_V)"
+
+#~ msgid "C_all"
+#~ msgstr "通话(_A)"
+
+#~ msgid "Set your presence and current status"
+#~ msgstr "设置您的状态信息和现在的状态"
+
+#~ msgid "The selected contact cannot receive files."
+#~ msgstr "选择的联系人无法接收文件。"
+
+#~ msgid "The selected contact is offline."
+#~ msgstr "选择的联系人离线。"
+
+#~ msgctxt "encoding video codec"
+#~ msgid "Unknown"
+#~ msgstr "未知"
+
+#~ msgctxt "encoding audio codec"
+#~ msgid "Unknown"
+#~ msgstr "未知"
+
+#~ msgctxt "decoding video codec"
+#~ msgid "Unknown"
+#~ msgstr "未知"
+
+#~ msgctxt "decoding audio codec"
+#~ msgid "Unknown"
+#~ msgstr "未知"
+
 #~ msgid "Find Next"
 #~ msgstr "向下查找"
 
@@ -4743,9 +4887,6 @@ msgstr "区分大小写(_M)"
 #~ msgid "Custom messages..."
 #~ msgstr "自定义状态..."
 
-#~ msgid "Show the accounts dialog"
-#~ msgstr "显示帐号对话框"
-
 #~ msgid "The error message was: <span style=\"italic\">%s</span>"
 #~ msgstr "错误信息是:<span style=\"italic\">%s</span>"
 
index 88cd526e723593b07657ca8afca345880b829f5f..0bb97f1f689338bfded3ff65ab6883d79df05341 100644 (file)
@@ -7,10 +7,10 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: empathy 3.1.92\n"
+"Project-Id-Version: empathy 3.3.1\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-09-25 14:31+0800\n"
-"PO-Revision-Date: 2011-09-25 14:32+0800\n"
+"POT-Creation-Date: 2011-11-12 19:09+0800\n"
+"PO-Revision-Date: 2011-11-12 19:10+0800\n"
 "Last-Translator: Cheng-Chia Tseng <pswo10680@gmail.com>\n"
 "Language-Team: Chinese (Hong Kong) <community@linuxhall.org>\n"
 "Language: zh_TW\n"
@@ -87,59 +87,59 @@ msgid "Contact list sort criterion"
 msgstr "聯絡人清單排序準則"
 
 #: ../data/org.gnome.Empathy.gschema.xml.in.h:13
+msgid "D-Bus object path of the last account selected to join a room."
+msgstr "上次要加入聊天室所選取帳號的 D-Bus 物件路徑。"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:14
 msgid "Default camera device to use in video calls, e.g. /dev/video0."
 msgstr "要用於視像通話的預設攝影機裝置,例:/dev/video0。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:14
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:15
 msgid "Default directory to select an avatar image from"
 msgstr "用來選擇大頭貼圖片的預設目錄"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:15
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:16
 msgid "Disable popup notifications when away"
 msgstr "當狀態為離開時停用彈出式通知"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:16
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:17
 msgid "Disable sounds when away"
 msgstr "當狀態為離開時停用音效"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:17
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:18
 msgid "Display incoming events in the status area"
 msgstr "在狀態區域顯示收到事件"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:18
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:19
 msgid ""
 "Display incoming events in the status area. If false, present them to the "
 "user immediately."
 msgstr "在狀態區域顯示收到事件。如果不啟用的話,收到事件會直接呈現給使用者。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:19
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:20
 msgid "Echo cancellation support"
 msgstr "回音消除支援"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:20
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:21
 msgid "Empathy can publish the user's location"
 msgstr "Empathy 可以發布使用者的位置"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:21
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:22
 msgid "Empathy can use the GPS to guess the location"
 msgstr "Empathy 可以利用 GPS 來推測位置"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:22
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:23
 msgid "Empathy can use the cellular network to guess the location"
 msgstr "Empathy 可以利用流動電話網絡基地臺來推測位置"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:23
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:24
 msgid "Empathy can use the network to guess the location"
 msgstr "Empathy 可以利用網絡來推測位置"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:24
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:25
 msgid "Empathy default download folder"
 msgstr "Empathy 預設下載資料夾"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:25
-msgid "Empathy has migrated butterfly logs"
-msgstr "Empathy 已轉移 butterfly 日誌"
-
 #: ../data/org.gnome.Empathy.gschema.xml.in.h:26
 msgid "Empathy should auto-away when idle"
 msgstr "Empathy 當閒置時應該自動設為離開"
@@ -177,150 +177,150 @@ msgid "Hide the main window."
 msgstr "隱藏主視窗。"
 
 #: ../data/org.gnome.Empathy.gschema.xml.in.h:35
+msgid "Last account selected in Join Room dialog"
+msgstr "上次在「參加聊天室」對話盒選取的帳號"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:36
 msgid "Nick completed character"
 msgstr "網名補齊字符"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:36
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:37
 msgid "Open new chats in separate windows"
 msgstr "在個別視窗開啟新的聊天"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:37
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:38
 msgid "Path of the Adium theme to use"
 msgstr "要使用的 Adium 佈景主題路徑"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:38
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:39
 msgid "Path of the Adium theme to use if the theme used for chat is Adium."
 msgstr "如果聊天室使用的主題是 Adium 時要使用的 Adium 佈景主題路徑。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:39
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:40
 msgid "Play a sound for incoming messages"
 msgstr "收到訊息時播放音效"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:40
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:41
 msgid "Play a sound for new conversations"
 msgstr "當開啟新的談話時播放音效"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:41
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:42
 msgid "Play a sound for outgoing messages"
 msgstr "送出訊息時播放音效"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:42
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:43
 msgid "Play a sound when a contact logs in"
 msgstr "當聯絡人登入時播放音效"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:43
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:44
 msgid "Play a sound when a contact logs out"
 msgstr "當有聯絡人登出時播放音效"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:44
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:45
 msgid "Play a sound when we log in"
 msgstr "當我們登入時播放音效"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:45
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:46
 msgid "Play a sound when we log out"
 msgstr "當我們登出時播放音效"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:46
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:47
 msgid "Pop up notifications if the chat isn't focused"
 msgstr "如果聊天視窗失去焦點則彈出通知"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:47
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:48
 msgid "Pop up notifications when a contact logs in"
 msgstr "當聯絡人登入時彈出通知"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:48
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:49
 msgid "Pop up notifications when a contact logs out"
 msgstr "當聯絡人登出時彈出通知"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:49
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:50
 msgid "Position the camera preview should be during a call."
 msgstr "通話時攝影機預覽應該擺放的位置。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:50
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:51
 msgid "Show Balance in contact list"
 msgstr "於聯絡人清單內顯示餘額"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:51
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:52
 msgid "Show avatars"
 msgstr "顯示大頭貼"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:52
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:53
 msgid "Show contact list in rooms"
 msgstr "在聊天室顯示聯絡人清單"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:53
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:54
 msgid "Show hint about closing the main window"
 msgstr "關閉主視窗時顯示提示"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:54
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:55
 msgid "Show offline contacts"
 msgstr "顯示離線聯絡人"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:55
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:56
 msgid "Show protocols"
 msgstr "顯示協定"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:56
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:57
 msgid "Spell checking languages"
 msgstr "拼字檢查的語言"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:57
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:58
 msgid "The default folder to save file transfers in."
 msgstr "用來儲存檔案傳輸接收檔案的預設資料夾。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:58
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:59
 msgid "The last directory that an avatar image was chosen from."
 msgstr "上次選擇大頭貼圖片的目錄。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:59
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:60
 msgid "The position for the chat window side pane"
 msgstr "聊天視窗側窗格的位置"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:60
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:61
 msgid "The stored position (in pixels) of the chat window side pane."
 msgstr "聊天視窗側窗格的儲存位置 (單位為像素)。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:61
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:62
 msgid "The theme that is used to display the conversation in chat windows."
 msgstr "用來顯示在聊天視窗中談話的佈景主題。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:62
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:63
 msgid ""
 "The theme variant that is used to display the conversation in chat windows."
 msgstr "用來在聊天視窗顯示談話的佈景主題樣式。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:63
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:64
 msgid "Use graphical smileys"
 msgstr "使用圖片式表情符號"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:64
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:65
 msgid "Use notification sounds"
 msgstr "使用通知音效"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:65
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:66
 msgid "Use theme for chat rooms"
 msgstr "在聊天室使用佈景主題"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:66
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:67
 msgid "Whether Empathy can publish the user's location to their contacts."
 msgstr "Empathy 是否要將使用者的位置發布給他的聯絡人。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:67
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:68
 msgid "Whether Empathy can use the GPS to guess the location."
 msgstr "Empathy 是否使用 GPS 來推測位置。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:68
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:69
 msgid "Whether Empathy can use the cellular network to guess the location."
 msgstr "Empathy 是否使用流動電話網絡來推測位置。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:69
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:70
 msgid "Whether Empathy can use the network to guess the location."
 msgstr "Empathy 是否使用網絡來推測位置。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:70
-msgid "Whether Empathy has migrated butterfly logs."
-msgstr "Empathy 是否應轉移 butterfly 日誌。"
-
 #: ../data/org.gnome.Empathy.gschema.xml.in.h:71
 msgid "Whether Empathy should automatically log into your accounts on startup."
 msgstr "Empathy 是否應在啟動時自動登入你的帳號。"
@@ -471,23 +471,23 @@ msgstr "管理訊息與 VoIP 帳號"
 
 #. Tweak the dialog
 #: ../data/empathy-accounts.desktop.in.in.h:2
-#: ../src/empathy-accounts-dialog.c:2324
+#: ../src/empathy-accounts-dialog.c:2312
 msgid "Messaging and VoIP Accounts"
 msgstr "訊息與 VoIP 帳號"
 
-#: ../libempathy/empathy-ft-handler.c:825
+#: ../libempathy/empathy-ft-handler.c:838
 msgid "File transfer completed, but the file was corrupted"
 msgstr "檔案傳輸完畢,但是檔案已損毀"
 
-#: ../libempathy/empathy-ft-handler.c:1111
+#: ../libempathy/empathy-ft-handler.c:1124
 msgid "File transfer not supported by remote contact"
 msgstr "遠端聯絡人不支援檔案傳輸"
 
-#: ../libempathy/empathy-ft-handler.c:1167
+#: ../libempathy/empathy-ft-handler.c:1180
 msgid "The selected file is not a regular file"
 msgstr "選取的檔案不是正規的檔案"
 
-#: ../libempathy/empathy-ft-handler.c:1176
+#: ../libempathy/empathy-ft-handler.c:1189
 msgid "The selected file is empty"
 msgstr "選取的檔案是空白的"
 
@@ -507,35 +507,35 @@ msgstr "已播打 %s"
 msgid "Call from %s"
 msgstr "%s 的來電"
 
-#: ../libempathy/empathy-tp-file.c:268
+#: ../libempathy/empathy-tp-file.c:258
 msgid "Socket type not supported"
 msgstr "Socket 類型不支援"
 
-#: ../libempathy/empathy-tp-file.c:387
+#: ../libempathy/empathy-tp-file.c:377
 msgid "No reason was specified"
 msgstr "沒有指定原因"
 
-#: ../libempathy/empathy-tp-file.c:390
+#: ../libempathy/empathy-tp-file.c:380
 msgid "The change in state was requested"
 msgstr "已要求更改狀態"
 
-#: ../libempathy/empathy-tp-file.c:393
+#: ../libempathy/empathy-tp-file.c:383
 msgid "You canceled the file transfer"
 msgstr "你已取消檔案傳輸"
 
-#: ../libempathy/empathy-tp-file.c:396
+#: ../libempathy/empathy-tp-file.c:386
 msgid "The other participant canceled the file transfer"
 msgstr "其他的參與者取消了檔案傳輸"
 
-#: ../libempathy/empathy-tp-file.c:399
+#: ../libempathy/empathy-tp-file.c:389
 msgid "Error while trying to transfer the file"
 msgstr "嘗試傳輸檔案時發生錯誤"
 
-#: ../libempathy/empathy-tp-file.c:402
+#: ../libempathy/empathy-tp-file.c:392
 msgid "The other participant is unable to transfer the file"
 msgstr "其他的參與者無法傳輸該檔案"
 
-#: ../libempathy/empathy-tp-file.c:405 ../libempathy/empathy-utils.c:312
+#: ../libempathy/empathy-tp-file.c:395 ../libempathy/empathy-utils.c:312
 msgid "Unknown reason"
 msgstr "不明原因"
 
@@ -575,6 +575,7 @@ msgstr "狀態設為離線"
 
 #: ../libempathy/empathy-utils.c:288 ../libempathy/empathy-utils.c:322
 #: ../libempathy-gtk/empathy-call-utils.c:49
+#: ../libempathy-gtk/empathy-new-message-dialog.c:82
 msgid "Network error"
 msgstr "網絡錯誤"
 
@@ -674,20 +675,23 @@ msgid ""
 "chain, exceed the limits imposed by the cryptography library"
 msgstr "伺服器證書的長度,或是伺服器證書鏈的深度超過密碼函式庫所能處理的範圍"
 
-#: ../libempathy/empathy-utils.c:529
-#: ../libempathy-gtk/empathy-contact-list-store.h:73
+#: ../libempathy/empathy-utils.c:372
+msgid "Your software is too old"
+msgstr "你的軟件過舊"
+
+#: ../libempathy/empathy-utils.c:531
 msgid "People Nearby"
 msgstr "附近的人"
 
-#: ../libempathy/empathy-utils.c:534
+#: ../libempathy/empathy-utils.c:536
 msgid "Yahoo! Japan"
 msgstr "Yahoo! 日本"
 
-#: ../libempathy/empathy-utils.c:563
+#: ../libempathy/empathy-utils.c:565
 msgid "Google Talk"
 msgstr "Google Talk"
 
-#: ../libempathy/empathy-utils.c:564
+#: ../libempathy/empathy-utils.c:566
 msgid "Facebook Chat"
 msgstr "Facebook 聊天"
 
@@ -731,7 +735,7 @@ msgstr[0] "%d 個月以前"
 msgid "in the future"
 msgstr "未來"
 
-#: ../libempathy-gtk/empathy-account-chooser.c:540
+#: ../libempathy-gtk/empathy-account-chooser.c:688
 msgid "All accounts"
 msgstr "所有帳號"
 
@@ -754,58 +758,58 @@ msgstr "伺服器"
 msgid "Port"
 msgstr "連接埠"
 
-#: ../libempathy-gtk/empathy-account-widget.c:769
-#: ../libempathy-gtk/empathy-account-widget.c:826
+#: ../libempathy-gtk/empathy-account-widget.c:776
+#: ../libempathy-gtk/empathy-account-widget.c:828
 #, c-format
 msgid "%s:"
 msgstr "%s:"
 
-#: ../libempathy-gtk/empathy-account-widget.c:1192
+#: ../libempathy-gtk/empathy-account-widget.c:1182
 msgid "My Web Accounts"
 msgstr "我的網絡帳號"
 
-#: ../libempathy-gtk/empathy-account-widget.c:1208
+#: ../libempathy-gtk/empathy-account-widget.c:1199
 #, c-format
 msgid "The account %s is edited via %s."
 msgstr "%s 帳號已透過 %s 修改。"
 
-#: ../libempathy-gtk/empathy-account-widget.c:1214
+#: ../libempathy-gtk/empathy-account-widget.c:1205
 #, c-format
 msgid "The account %s cannot be edited in Empathy."
 msgstr "%s 帳號無法於 Empathy 內修改。"
 
-#: ../libempathy-gtk/empathy-account-widget.c:1233
+#: ../libempathy-gtk/empathy-account-widget.c:1224
 msgid "Launch My Web Accounts"
 msgstr "啟動我的網絡帳號"
 
 #. general handler
-#: ../libempathy-gtk/empathy-account-widget.c:1241
+#: ../libempathy-gtk/empathy-account-widget.c:1232
 #, c-format
 msgid "Edit %s"
 msgstr "編輯 %s"
 
-#: ../libempathy-gtk/empathy-account-widget.c:1591
+#: ../libempathy-gtk/empathy-account-widget.c:1582
 #: ../libempathy-gtk/empathy-account-widget-irc.ui.h:11
 msgid "Username:"
 msgstr "使用者名稱:"
 
-#: ../libempathy-gtk/empathy-account-widget.c:1909
+#: ../libempathy-gtk/empathy-account-widget.c:1900
 msgid "A_pply"
 msgstr "套用(_A)"
 
-#: ../libempathy-gtk/empathy-account-widget.c:1939
+#: ../libempathy-gtk/empathy-account-widget.c:1930
 msgid "L_og in"
 msgstr "登入(_O)"
 
-#: ../libempathy-gtk/empathy-account-widget.c:2013
+#: ../libempathy-gtk/empathy-account-widget.c:2004
 msgid "This account already exists on the server"
 msgstr "此帳號已經存在這個伺服器上"
 
-#: ../libempathy-gtk/empathy-account-widget.c:2016
+#: ../libempathy-gtk/empathy-account-widget.c:2007
 msgid "Create a new account on the server"
 msgstr "在這個伺服器上建立新的帳號"
 
-#: ../libempathy-gtk/empathy-account-widget.c:2208
+#: ../libempathy-gtk/empathy-account-widget.c:2199
 msgid "Ca_ncel"
 msgstr "取消(_N)"
 
@@ -814,19 +818,19 @@ msgstr "取消(_N)"
 #. * like: "MyUserName on freenode".
 #. * You should reverse the order of these arguments if the
 #. * server should come before the login id in your locale.
-#: ../libempathy-gtk/empathy-account-widget.c:2486
+#: ../libempathy-gtk/empathy-account-widget.c:2477
 #, c-format
 msgid "%1$s on %2$s"
 msgstr "%2$s 上的 %1$s"
 
 #. To translators: The parameter is the protocol name. The resulting
 #. * string will be something like: "Jabber Account"
-#: ../libempathy-gtk/empathy-account-widget.c:2512
+#: ../libempathy-gtk/empathy-account-widget.c:2503
 #, c-format
 msgid "%s Account"
 msgstr "%s 帳號"
 
-#: ../libempathy-gtk/empathy-account-widget.c:2516
+#: ../libempathy-gtk/empathy-account-widget.c:2507
 msgid "New account"
 msgstr "新增帳號"
 
@@ -1196,7 +1200,7 @@ msgid "STUN Server:"
 msgstr "STUN 伺服器:"
 
 #: ../libempathy-gtk/empathy-account-widget-sip.ui.h:19
-#: ../libempathy-gtk/empathy-contact-widget.c:347
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:112
 msgid "Server:"
 msgstr "伺服器:"
 
@@ -1278,7 +1282,7 @@ msgid "Click to enlarge"
 msgstr "請按這裏放大"
 
 #: ../libempathy-gtk/empathy-call-utils.c:44
-#: ../libempathy-gtk/empathy-call-utils.c:60
+#: ../libempathy-gtk/empathy-call-utils.c:62
 msgid "There was an error starting the call"
 msgstr "啟動通話時發生錯誤"
 
@@ -1298,185 +1302,196 @@ msgstr "指定的聯絡人無效"
 msgid "Emergency calls are not supported on this protocol"
 msgstr "此協定不支援緊急通話功能"
 
-#: ../libempathy-gtk/empathy-chat.c:704
+#: ../libempathy-gtk/empathy-call-utils.c:59
+msgid "You don't have enough credit in order to place this call"
+msgstr "你的存額不足以買下該通話。"
+
+#: ../libempathy-gtk/empathy-chat.c:706
 msgid "Failed to open private chat"
 msgstr "開啟私人聊天失敗"
 
-#: ../libempathy-gtk/empathy-chat.c:765
+#: ../libempathy-gtk/empathy-chat.c:764
 msgid "Topic not supported on this conversation"
 msgstr "此談話的主題不被支援"
 
-#: ../libempathy-gtk/empathy-chat.c:771
+#: ../libempathy-gtk/empathy-chat.c:770
 msgid "You are not allowed to change the topic"
 msgstr "你不被允許更改這個主題"
 
-#: ../libempathy-gtk/empathy-chat.c:975
+#: ../libempathy-gtk/empathy-chat.c:971
 #, c-format
 msgid "“%s” is not a valid contact ID"
 msgstr "「%s」不是有效的聯絡人 ID"
 
-#: ../libempathy-gtk/empathy-chat.c:1060
+#: ../libempathy-gtk/empathy-chat.c:1066
 msgid "/clear: clear all messages from the current conversation"
 msgstr "/clear:清除目前談話的所有訊息"
 
-#: ../libempathy-gtk/empathy-chat.c:1063
+#: ../libempathy-gtk/empathy-chat.c:1069
 msgid "/topic <topic>: set the topic of the current conversation"
 msgstr "/topic <主題>:設置目前談話的主題"
 
-#: ../libempathy-gtk/empathy-chat.c:1066
+#: ../libempathy-gtk/empathy-chat.c:1072
 msgid "/join <chat room ID>: join a new chat room"
 msgstr "/join <聊天室 ID>:參加新的聊天室"
 
-#: ../libempathy-gtk/empathy-chat.c:1069
+#: ../libempathy-gtk/empathy-chat.c:1075
 msgid "/j <chat room ID>: join a new chat room"
 msgstr "/j <聊天室 ID>:參加新的聊天室"
 
-#: ../libempathy-gtk/empathy-chat.c:1073
+#: ../libempathy-gtk/empathy-chat.c:1079
 msgid ""
 "/part [<chat room ID>] [<reason>]: leave the chat room, by default the "
 "current one"
 msgstr "/part [<聊天室 ID>] [<原因>]:離開聊天室,預設為目前的聊天室"
 
-#: ../libempathy-gtk/empathy-chat.c:1077
+#: ../libempathy-gtk/empathy-chat.c:1083
 msgid "/query <contact ID> [<message>]: open a private chat"
 msgstr "/query <聯絡人 ID> [<訊息>]:開啟私人聊天"
 
-#: ../libempathy-gtk/empathy-chat.c:1080
+#: ../libempathy-gtk/empathy-chat.c:1086
 msgid "/msg <contact ID> <message>: open a private chat"
 msgstr "/msg <聯絡人 ID> <訊息>:開啟私人聊天"
 
-#: ../libempathy-gtk/empathy-chat.c:1083
+#: ../libempathy-gtk/empathy-chat.c:1089
 msgid "/nick <nickname>: change your nickname on the current server"
 msgstr "/nick <網名>:更改在目前伺服器上的你的網名"
 
-#: ../libempathy-gtk/empathy-chat.c:1086
+#: ../libempathy-gtk/empathy-chat.c:1092
 msgid "/me <message>: send an ACTION message to the current conversation"
 msgstr "/me <訊息>:送出一個 ACTION 訊息到目前的談話中"
 
-#: ../libempathy-gtk/empathy-chat.c:1089
+#: ../libempathy-gtk/empathy-chat.c:1095
 msgid ""
 "/say <message>: send <message> to the current conversation. This is used to "
 "send a message starting with a '/'. For example: \"/say /join is used to "
 "join a new chat room\""
 msgstr "/say <訊息>:送出 <訊息> 到目前的談話中。這用於傳送以「/」開頭的訊息。舉例來說:「/say /join 是用來參加新的聊天室」"
 
-#: ../libempathy-gtk/empathy-chat.c:1094
+#: ../libempathy-gtk/empathy-chat.c:1100
 msgid "/whois <contact ID>: display information about a contact"
 msgstr "/whois <聯絡人 ID>:顯示聯絡人的相關資訊"
 
-#: ../libempathy-gtk/empathy-chat.c:1097
+#: ../libempathy-gtk/empathy-chat.c:1103
 msgid ""
 "/help [<command>]: show all supported commands. If <command> is defined, "
 "show its usage."
 msgstr "/help [<命令>]:顯示所有支援的指令。如果有定義這個 <命令> 的話,便顯示它的用法。"
 
-#: ../libempathy-gtk/empathy-chat.c:1114
+#: ../libempathy-gtk/empathy-chat.c:1122
 #, c-format
 msgid "Usage: %s"
 msgstr "用法:%s"
 
-#: ../libempathy-gtk/empathy-chat.c:1159
+#: ../libempathy-gtk/empathy-chat.c:1167
 msgid "Unknown command"
 msgstr "未知的命令"
 
-#: ../libempathy-gtk/empathy-chat.c:1285
+#: ../libempathy-gtk/empathy-chat.c:1293
 msgid "Unknown command; see /help for the available commands"
 msgstr "未知的指令;請參見 /help 以取得可用的指令"
 
-#. translators: error used when user doesn't have enough credit on his
-#. * account to send the message.
-#: ../libempathy-gtk/empathy-chat.c:1455
+#: ../libempathy-gtk/empathy-chat.c:1457
 msgid "insufficient balance to send message"
 msgstr "餘額不足以傳送訊息"
 
-#: ../libempathy-gtk/empathy-chat.c:1457
+#: ../libempathy-gtk/empathy-chat.c:1461 ../libempathy-gtk/empathy-chat.c:1475
+#: ../libempathy-gtk/empathy-chat.c:1538
+#, c-format
+msgid "Error sending message '%s': %s"
+msgstr "傳送訊息「%s」時發生錯誤:%s"
+
+#: ../libempathy-gtk/empathy-chat.c:1463 ../libempathy-gtk/empathy-chat.c:1480
+#: ../libempathy-gtk/empathy-chat.c:1542
+#, c-format
+msgid "Error sending message: %s"
+msgstr "傳送訊息時發生錯誤:%s"
+
+#. translators: error used when user doesn't have enough credit on his
+#. * account to send the message.
+#: ../libempathy-gtk/empathy-chat.c:1469
+#, c-format
+msgid "insufficient balance to send message. <a href='%s'>Top up</a>."
+msgstr "餘額不足以傳送訊息。<a href='%s'>加值</a>。"
+
+#: ../libempathy-gtk/empathy-chat.c:1509
 msgid "not capable"
 msgstr "無法"
 
-#: ../libempathy-gtk/empathy-chat.c:1464
+#: ../libempathy-gtk/empathy-chat.c:1516
 msgid "offline"
 msgstr "離線"
 
-#: ../libempathy-gtk/empathy-chat.c:1467
+#: ../libempathy-gtk/empathy-chat.c:1519
 msgid "invalid contact"
 msgstr "無效的聯絡人"
 
-#: ../libempathy-gtk/empathy-chat.c:1470
+#: ../libempathy-gtk/empathy-chat.c:1522
 msgid "permission denied"
 msgstr "權限被拒絕"
 
-#: ../libempathy-gtk/empathy-chat.c:1473
+#: ../libempathy-gtk/empathy-chat.c:1525
 msgid "too long message"
 msgstr "太長的訊息"
 
-#: ../libempathy-gtk/empathy-chat.c:1476
+#: ../libempathy-gtk/empathy-chat.c:1528
 msgid "not implemented"
 msgstr "未實作"
 
-#: ../libempathy-gtk/empathy-chat.c:1480
+#: ../libempathy-gtk/empathy-chat.c:1532
 msgid "unknown"
 msgstr "不明"
 
-#: ../libempathy-gtk/empathy-chat.c:1486
-#, c-format
-msgid "Error sending message '%s': %s"
-msgstr "傳送訊息「%s」時發生錯誤:%s"
-
-#: ../libempathy-gtk/empathy-chat.c:1490
-#, c-format
-msgid "Error sending message: %s"
-msgstr "傳送訊息時發生錯誤:%s"
-
-#: ../libempathy-gtk/empathy-chat.c:1551 ../src/empathy-chat-window.c:761
+#: ../libempathy-gtk/empathy-chat.c:1599 ../src/empathy-chat-window.c:761
 msgid "Topic:"
 msgstr "主題:"
 
-#: ../libempathy-gtk/empathy-chat.c:1563
+#: ../libempathy-gtk/empathy-chat.c:1611
 #, c-format
 msgid "Topic set to: %s"
 msgstr "主題設定為: %s"
 
-#: ../libempathy-gtk/empathy-chat.c:1565
+#: ../libempathy-gtk/empathy-chat.c:1613
 msgid "No topic defined"
 msgstr "尚未定義主題"
 
-#: ../libempathy-gtk/empathy-chat.c:2074
+#: ../libempathy-gtk/empathy-chat.c:2126
 msgid "(No Suggestions)"
 msgstr "(沒有建議)"
 
 #. translators: %s is the selected word
-#: ../libempathy-gtk/empathy-chat.c:2142
+#: ../libempathy-gtk/empathy-chat.c:2194
 #, c-format
 msgid "Add '%s' to Dictionary"
 msgstr "加入「%s」至字典"
 
 #. translators: first %s is the selected word,
 #. * second %s is the language name of the target dictionary
-#: ../libempathy-gtk/empathy-chat.c:2179
+#: ../libempathy-gtk/empathy-chat.c:2231
 #, c-format
 msgid "Add '%s' to %s Dictionary"
 msgstr "加入「%s」至 %s 字典"
 
-#: ../libempathy-gtk/empathy-chat.c:2249
+#: ../libempathy-gtk/empathy-chat.c:2301
 msgid "Insert Smiley"
 msgstr "插入表情符號"
 
 #. send button
-#: ../libempathy-gtk/empathy-chat.c:2267
-#: ../libempathy-gtk/empathy-ui-utils.c:1839
+#: ../libempathy-gtk/empathy-chat.c:2319
+#: ../libempathy-gtk/empathy-ui-utils.c:1867
 msgid "_Send"
 msgstr "傳送(_S)"
 
 #. Spelling suggestions
-#: ../libempathy-gtk/empathy-chat.c:2321
+#: ../libempathy-gtk/empathy-chat.c:2376
 msgid "_Spelling Suggestions"
 msgstr "拼字建議(_S)"
 
-#: ../libempathy-gtk/empathy-chat.c:2410
+#: ../libempathy-gtk/empathy-chat.c:2465
 msgid "Failed to retrieve recent logs"
 msgstr "無法取得最近的日誌"
 
-#: ../libempathy-gtk/empathy-chat.c:2547
+#: ../libempathy-gtk/empathy-chat.c:2602
 #, c-format
 msgid "%s has disconnected"
 msgstr "%s 已斷線"
@@ -1484,12 +1499,12 @@ msgstr "%s 已斷線"
 #. translators: reverse the order of these arguments
 #. * if the kicked should come before the kicker in your locale.
 #.
-#: ../libempathy-gtk/empathy-chat.c:2554
+#: ../libempathy-gtk/empathy-chat.c:2609
 #, c-format
 msgid "%1$s was kicked by %2$s"
 msgstr "%1$s 被 %2$s 踢出去"
 
-#: ../libempathy-gtk/empathy-chat.c:2557
+#: ../libempathy-gtk/empathy-chat.c:2612
 #, c-format
 msgid "%s was kicked"
 msgstr "%s 被踢出"
@@ -1497,17 +1512,17 @@ msgstr "%s 被踢出"
 #. translators: reverse the order of these arguments
 #. * if the banned should come before the banner in your locale.
 #.
-#: ../libempathy-gtk/empathy-chat.c:2565
+#: ../libempathy-gtk/empathy-chat.c:2620
 #, c-format
 msgid "%1$s was banned by %2$s"
 msgstr "%1$s 被 %2$s 設為黑名單"
 
-#: ../libempathy-gtk/empathy-chat.c:2568
+#: ../libempathy-gtk/empathy-chat.c:2623
 #, c-format
 msgid "%s was banned"
 msgstr "%s 被設為黑名單"
 
-#: ../libempathy-gtk/empathy-chat.c:2572
+#: ../libempathy-gtk/empathy-chat.c:2627
 #, c-format
 msgid "%s has left the room"
 msgstr "%s 已經離開此聊天室"
@@ -1517,17 +1532,17 @@ msgstr "%s 已經離開此聊天室"
 #. * given by the user living the room. If this poses a problem,
 #. * please let us know. :-)
 #.
-#: ../libempathy-gtk/empathy-chat.c:2581
+#: ../libempathy-gtk/empathy-chat.c:2636
 #, c-format
 msgid " (%s)"
 msgstr " (%s)"
 
-#: ../libempathy-gtk/empathy-chat.c:2606
+#: ../libempathy-gtk/empathy-chat.c:2661
 #, c-format
 msgid "%s has joined the room"
 msgstr "%s 已經參加此聊天室"
 
-#: ../libempathy-gtk/empathy-chat.c:2631
+#: ../libempathy-gtk/empathy-chat.c:2686
 #, c-format
 msgid "%s is now known as %s"
 msgstr "%s 現在被稱為 %s"
@@ -1535,88 +1550,87 @@ msgstr "%s 現在被稱為 %s"
 #. We don't know if the incoming call has been accepted or not, so we
 #. * assume it hasn't and if it has, we'll set the proper status when
 #. * we get the new handler.
-#: ../libempathy-gtk/empathy-chat.c:2784
-#: ../src/empathy-streamed-media-window.c:1894
-#: ../src/empathy-event-manager.c:1240 ../src/empathy-call-window.c:1432
-#: ../src/empathy-call-window.c:1482 ../src/empathy-call-window.c:2527
+#: ../libempathy-gtk/empathy-chat.c:2839
+#: ../src/empathy-streamed-media-window.c:1886
+#: ../src/empathy-event-manager.c:1260 ../src/empathy-call-window.c:1539
+#: ../src/empathy-call-window.c:1589 ../src/empathy-call-window.c:2635
 msgid "Disconnected"
 msgstr "已斷線"
 
 #. Add message
-#: ../libempathy-gtk/empathy-chat.c:3428
+#: ../libempathy-gtk/empathy-chat.c:3485
 msgid "Would you like to store this password?"
 msgstr "你想要儲存此密碼?"
 
-#: ../libempathy-gtk/empathy-chat.c:3434
+#: ../libempathy-gtk/empathy-chat.c:3491
 msgid "Remember"
 msgstr "記住"
 
-#: ../libempathy-gtk/empathy-chat.c:3444
+#: ../libempathy-gtk/empathy-chat.c:3501
 msgid "Not now"
 msgstr "現在不要"
 
-#: ../libempathy-gtk/empathy-chat.c:3488
+#: ../libempathy-gtk/empathy-chat.c:3545
 msgid "Retry"
 msgstr "重試"
 
-#: ../libempathy-gtk/empathy-chat.c:3492
+#: ../libempathy-gtk/empathy-chat.c:3549
 msgid "Wrong password; please try again:"
 msgstr "密碼錯誤;請再試一次:"
 
 #. Add message
-#: ../libempathy-gtk/empathy-chat.c:3622
+#: ../libempathy-gtk/empathy-chat.c:3679
 msgid "This room is protected by a password:"
 msgstr "此聊天室已被密碼保護:"
 
-#: ../libempathy-gtk/empathy-chat.c:3649
+#: ../libempathy-gtk/empathy-chat.c:3706
 msgid "Join"
 msgstr "參加"
 
-#: ../libempathy-gtk/empathy-chat.c:3851 ../src/empathy-event-manager.c:1261
+#: ../libempathy-gtk/empathy-chat.c:3894 ../src/empathy-event-manager.c:1281
 msgid "Connected"
 msgstr "成功連線"
 
-#: ../libempathy-gtk/empathy-chat.c:3906
+#: ../libempathy-gtk/empathy-chat.c:3949
 msgid "Conversation"
 msgstr "談話"
 
 #. Translators: this string is a something like
 #. * "Escher Cat (SMS)"
-#: ../libempathy-gtk/empathy-chat.c:3911
+#: ../libempathy-gtk/empathy-chat.c:3954
 #, c-format
 msgid "%s (SMS)"
 msgstr "%s (SMS)"
 
-#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:424
+#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:265
 msgid "Unknown or invalid identifier"
 msgstr "未知或無效的識別身分"
 
-#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:426
+#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:267
 msgid "Contact blocking temporarily unavailable"
 msgstr "聯絡人封鎖暫時無法使用"
 
-#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:428
+#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:269
 msgid "Contact blocking unavailable"
 msgstr "聯絡人封鎖無法使用"
 
-#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:430
+#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:271
 msgid "Permission Denied"
 msgstr "已拒絕授權"
 
-#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:434
+#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:275
 msgid "Could not block contact"
 msgstr "無法封鎖聯絡人"
 
-#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:774
+#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:622
 msgid "Edit Blocked Contacts"
 msgstr "編輯封鎖的聯絡人"
 
 #. Account and Identifier
 #: ../libempathy-gtk/empathy-contact-blocking-dialog.ui.h:1
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:512
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:506
 #: ../libempathy-gtk/empathy-contact-widget.ui.h:2
-#: ../libempathy-gtk/empathy-individual-widget.c:1489
-#: ../libempathy-gtk/empathy-contact-selector-dialog.ui.h:1
+#: ../libempathy-gtk/empathy-individual-widget.c:1441
 #: ../src/empathy-chatrooms-window.ui.h:1
 #: ../src/empathy-new-chatroom-dialog.ui.h:1
 msgid "Account:"
@@ -1634,56 +1648,56 @@ msgid "Remove"
 msgstr "移除"
 
 #. Copy Link Address menu item
-#: ../libempathy-gtk/empathy-chat-text-view.c:320
+#: ../libempathy-gtk/empathy-chat-text-view.c:322
 #: ../libempathy-gtk/empathy-webkit-utils.c:277
 msgid "_Copy Link Address"
 msgstr "複製連結位址(_C)"
 
 #. Open Link menu item
-#: ../libempathy-gtk/empathy-chat-text-view.c:327
+#: ../libempathy-gtk/empathy-chat-text-view.c:329
 #: ../libempathy-gtk/empathy-webkit-utils.c:284
 msgid "_Open Link"
 msgstr "開啟連結(_O)"
 
 #. Translators: timestamp displayed between conversations in
 #. * chat windows (strftime format string)
-#: ../libempathy-gtk/empathy-chat-text-view.c:415
+#: ../libempathy-gtk/empathy-chat-text-view.c:417
 msgid "%A %B %d %Y"
 msgstr "%Y %B %d %A"
 
-#: ../libempathy-gtk/empathy-contact-dialogs.c:299
+#: ../libempathy-gtk/empathy-contact-dialogs.c:287
 #: ../libempathy-gtk/empathy-individual-edit-dialog.c:247
 msgid "Edit Contact Information"
 msgstr "編輯聯絡人資訊"
 
-#: ../libempathy-gtk/empathy-contact-dialogs.c:350
+#: ../libempathy-gtk/empathy-contact-dialogs.c:338
 msgid "Personal Information"
 msgstr "個人資料"
 
-#: ../libempathy-gtk/empathy-contact-dialogs.c:459
+#: ../libempathy-gtk/empathy-contact-dialogs.c:439
 #: ../libempathy-gtk/empathy-individual-dialogs.c:119
 msgid "New Contact"
 msgstr "新增聯絡人"
 
-#: ../libempathy-gtk/empathy-contact-dialogs.c:533
-#: ../libempathy-gtk/empathy-individual-dialogs.c:200
+#: ../libempathy-gtk/empathy-contact-dialogs.c:508
+#: ../libempathy-gtk/empathy-individual-dialogs.c:198
 #, c-format
 msgid "Block %s?"
 msgstr "封鎖 %s?"
 
-#: ../libempathy-gtk/empathy-contact-dialogs.c:538
-#: ../libempathy-gtk/empathy-individual-dialogs.c:255
+#: ../libempathy-gtk/empathy-contact-dialogs.c:513
+#: ../libempathy-gtk/empathy-individual-dialogs.c:253
 #, c-format
 msgid "Are you sure you want to block '%s' from contacting you again?"
 msgstr "你確定想要封鎖「%s」讓他無法再與你聯絡嗎?"
 
-#: ../libempathy-gtk/empathy-contact-dialogs.c:543
-#: ../libempathy-gtk/empathy-individual-dialogs.c:277
+#: ../libempathy-gtk/empathy-contact-dialogs.c:518
+#: ../libempathy-gtk/empathy-individual-dialogs.c:275
 msgid "_Block"
 msgstr "封鎖(_B)"
 
-#: ../libempathy-gtk/empathy-contact-dialogs.c:559
-#: ../libempathy-gtk/empathy-individual-dialogs.c:286
+#: ../libempathy-gtk/empathy-contact-dialogs.c:536
+#: ../libempathy-gtk/empathy-individual-dialogs.c:284
 msgid "_Report this contact as abusive"
 msgid_plural "_Report these contacts as abusive"
 msgstr[0] "回報這些聯絡人濫用帳號(_R)"
@@ -1700,349 +1714,359 @@ msgstr "訂閱要求"
 msgid "_Block User"
 msgstr "封鎖使用者(_B)"
 
-#: ../libempathy-gtk/empathy-contact-list-store.h:71
-msgid "Ungrouped"
-msgstr "未羣組"
-
-#: ../libempathy-gtk/empathy-contact-list-store.h:72
-msgid "Favorite People"
-msgstr "喜好的人"
-
-#: ../libempathy-gtk/empathy-contact-list-view.c:1986
-#: ../libempathy-gtk/empathy-individual-view.c:2376
+#: ../libempathy-gtk/empathy-contact-list-view.c:1935
+#: ../libempathy-gtk/empathy-individual-view.c:2375
 #, c-format
 msgid "Do you really want to remove the group '%s'?"
 msgstr "是否想要移除羣組「%s」?"
 
-#: ../libempathy-gtk/empathy-contact-list-view.c:1988
-#: ../libempathy-gtk/empathy-individual-view.c:2379
+#: ../libempathy-gtk/empathy-contact-list-view.c:1937
+#: ../libempathy-gtk/empathy-individual-view.c:2378
 msgid "Removing group"
 msgstr "正在移除羣組"
 
 #. Remove
-#: ../libempathy-gtk/empathy-contact-list-view.c:2037
-#: ../libempathy-gtk/empathy-contact-list-view.c:2114
-#: ../libempathy-gtk/empathy-individual-view.c:2434
-#: ../libempathy-gtk/empathy-individual-view.c:2637
+#: ../libempathy-gtk/empathy-contact-list-view.c:1986
+#: ../libempathy-gtk/empathy-contact-list-view.c:2059
+#: ../libempathy-gtk/empathy-individual-view.c:2433
+#: ../libempathy-gtk/empathy-individual-view.c:2636
 msgid "_Remove"
 msgstr "移除(_R)"
 
-#: ../libempathy-gtk/empathy-contact-list-view.c:2067
-#: ../libempathy-gtk/empathy-individual-view.c:2501
+#: ../libempathy-gtk/empathy-contact-list-view.c:2015
+#: ../libempathy-gtk/empathy-individual-view.c:2500
 #, c-format
 msgid "Do you really want to remove the contact '%s'?"
 msgstr "是否想要移除聯絡人「%s」?"
 
-#: ../libempathy-gtk/empathy-contact-list-view.c:2069
-#: ../libempathy-gtk/empathy-individual-view.c:2522
+#: ../libempathy-gtk/empathy-contact-list-view.c:2017
+#: ../libempathy-gtk/empathy-individual-view.c:2521
 msgid "Removing contact"
 msgstr "正在移除聯絡人"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:220
+#: ../libempathy-gtk/empathy-contact-menu.c:212
 #: ../src/empathy-main-window-menubar.ui.h:14
 msgid "_Add Contact…"
 msgstr "加入聯絡人(_A)…"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:300
+#: ../libempathy-gtk/empathy-contact-menu.c:287
 msgid "_Block Contact"
 msgstr "封鎖聯絡人(_B)"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:329
+#. add chat button
+#: ../libempathy-gtk/empathy-contact-menu.c:316
 #: ../libempathy-gtk/empathy-individual-menu.c:758
+#: ../libempathy-gtk/empathy-new-message-dialog.c:320
 #: ../src/empathy-main-window-menubar.ui.h:16
 msgid "_Chat"
 msgstr "聊天(_C)"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:361
-#: ../libempathy-gtk/empathy-individual-menu.c:849
+#: ../libempathy-gtk/empathy-contact-menu.c:348
+#: ../libempathy-gtk/empathy-individual-menu.c:850
 msgctxt "menu item"
 msgid "_Audio Call"
 msgstr "語音通話(_A)"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:394
-#: ../libempathy-gtk/empathy-individual-menu.c:894
+#: ../libempathy-gtk/empathy-contact-menu.c:381
+#: ../libempathy-gtk/empathy-individual-menu.c:895
 msgctxt "menu item"
 msgid "_Video Call"
 msgstr "視像通話(_V)"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:440
-#: ../libempathy-gtk/empathy-individual-menu.c:947
+#: ../libempathy-gtk/empathy-contact-menu.c:427
+#: ../libempathy-gtk/empathy-individual-menu.c:948
 #: ../src/empathy-main-window-menubar.ui.h:27
 msgid "_Previous Conversations"
 msgstr "過往談話(_P)"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:462
-#: ../libempathy-gtk/empathy-individual-menu.c:988
+#: ../libempathy-gtk/empathy-contact-menu.c:449
+#: ../libempathy-gtk/empathy-individual-menu.c:989
 msgid "Send File"
 msgstr "傳送檔案"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:485
-#: ../libempathy-gtk/empathy-individual-menu.c:1030
+#: ../libempathy-gtk/empathy-contact-menu.c:472
+#: ../libempathy-gtk/empathy-individual-menu.c:1031
 msgid "Share My Desktop"
 msgstr "分享我的桌面"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:525
-#: ../libempathy-gtk/empathy-contact-widget.c:1886
-#: ../libempathy-gtk/empathy-individual-menu.c:1065
-#: ../libempathy-gtk/empathy-individual-widget.c:1372
-msgid "Favorite"
-msgstr "喜好"
-
-#: ../libempathy-gtk/empathy-contact-menu.c:554
-#: ../libempathy-gtk/empathy-individual-menu.c:1093
+#: ../libempathy-gtk/empathy-contact-menu.c:501
+#: ../libempathy-gtk/empathy-individual-menu.c:1094
 msgid "Infor_mation"
 msgstr "資訊(_M)"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:600
+#: ../libempathy-gtk/empathy-contact-menu.c:547
 msgctxt "Edit contact (contextual menu)"
 msgid "_Edit"
 msgstr "編輯(_E)"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:654
-#: ../libempathy-gtk/empathy-individual-menu.c:1284
+#: ../libempathy-gtk/empathy-contact-menu.c:601
+#: ../libempathy-gtk/empathy-individual-menu.c:1285
 #: ../src/empathy-chat-window.c:1011
 msgid "Inviting you to this room"
 msgstr "邀請你到這個聊天室"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:685
-#: ../libempathy-gtk/empathy-individual-menu.c:1330
+#: ../libempathy-gtk/empathy-contact-menu.c:632
+#: ../libempathy-gtk/empathy-individual-menu.c:1331
 msgid "_Invite to Chat Room"
 msgstr "邀請到聊天室(_I)"
 
 #. Title
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:505
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:499
 msgid "Search contacts"
 msgstr "搜尋聯絡人"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:535
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:529
 msgid "Search: "
 msgstr "搜尋:"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:593
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:587
 msgid "_Add Contact"
 msgstr "加入聯絡人(_A)"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:611
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:605
 msgid "No contacts found"
 msgstr "找不到聯絡人"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:627
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:621
 msgid "Your message introducing yourself:"
 msgstr "你的訊息"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:635
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:629
 msgid "Please let me see when you're online. Thanks!"
 msgstr "當你上線時請讓我知道。感謝!"
 
-#: ../libempathy-gtk/empathy-contact-selector.c:129
-msgid "Select a contact"
-msgstr "選擇聯絡人"
-
-#: ../libempathy-gtk/empathy-contact-widget.c:336
-#: ../libempathy-gtk/empathy-individual-widget.c:153
-msgid "Full name:"
-msgstr "全名:"
-
-#: ../libempathy-gtk/empathy-contact-widget.c:337
-#: ../libempathy-gtk/empathy-individual-widget.c:154
-msgid "Phone number:"
-msgstr "電話號碼:"
-
-#: ../libempathy-gtk/empathy-contact-widget.c:338
-#: ../libempathy-gtk/empathy-individual-widget.c:155
-msgid "E-mail address:"
-msgstr "電子信箱位址:"
-
-#: ../libempathy-gtk/empathy-contact-widget.c:339
-#: ../libempathy-gtk/empathy-individual-widget.c:156
-msgid "Website:"
-msgstr "網站:"
-
-#: ../libempathy-gtk/empathy-contact-widget.c:340
-#: ../libempathy-gtk/empathy-individual-widget.c:157
-msgid "Birthday:"
-msgstr "生日:"
-
-#. Note to translators: this is the caption for a string of the form "5
-#. * minutes ago", and refers to the time since the contact last interacted
-#. * with their IM client.
-#.
-#: ../libempathy-gtk/empathy-contact-widget.c:346
-msgid "Last seen:"
-msgstr "上次看見:"
-
-#: ../libempathy-gtk/empathy-contact-widget.c:348
-msgid "Connected from:"
-msgstr "已連接從:"
-
-#. FIXME: once Idle implements SimplePresence using this information, we can
-#. * and should bin this.
-#.
-#: ../libempathy-gtk/empathy-contact-widget.c:353
-msgid "Away message:"
-msgstr "離開訊息:"
-
-#: ../libempathy-gtk/empathy-contact-widget.c:606
+#: ../libempathy-gtk/empathy-contact-widget.c:504
 msgid "Channels:"
 msgstr "頻道:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:897
-#: ../libempathy-gtk/empathy-individual-widget.c:469
+#: ../libempathy-gtk/empathy-contact-widget.c:799
+#: ../libempathy-gtk/empathy-individual-widget.c:421
 msgid "Country ISO Code:"
 msgstr "國家 ISO 碼:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:899
-#: ../libempathy-gtk/empathy-individual-widget.c:471
+#: ../libempathy-gtk/empathy-contact-widget.c:801
+#: ../libempathy-gtk/empathy-individual-widget.c:423
 msgid "Country:"
 msgstr "國家:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:901
-#: ../libempathy-gtk/empathy-individual-widget.c:473
+#: ../libempathy-gtk/empathy-contact-widget.c:803
+#: ../libempathy-gtk/empathy-individual-widget.c:425
 msgid "State:"
 msgstr "州:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:903
-#: ../libempathy-gtk/empathy-individual-widget.c:475
+#: ../libempathy-gtk/empathy-contact-widget.c:805
+#: ../libempathy-gtk/empathy-individual-widget.c:427
 msgid "City:"
 msgstr "市:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:905
-#: ../libempathy-gtk/empathy-individual-widget.c:477
+#: ../libempathy-gtk/empathy-contact-widget.c:807
+#: ../libempathy-gtk/empathy-individual-widget.c:429
 msgid "Area:"
 msgstr "區域:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:907
-#: ../libempathy-gtk/empathy-individual-widget.c:479
+#: ../libempathy-gtk/empathy-contact-widget.c:809
+#: ../libempathy-gtk/empathy-individual-widget.c:431
 msgid "Postal Code:"
 msgstr "郵遞區號:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:909
-#: ../libempathy-gtk/empathy-individual-widget.c:481
+#: ../libempathy-gtk/empathy-contact-widget.c:811
+#: ../libempathy-gtk/empathy-individual-widget.c:433
 msgid "Street:"
 msgstr "街:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:911
-#: ../libempathy-gtk/empathy-individual-widget.c:483
+#: ../libempathy-gtk/empathy-contact-widget.c:813
+#: ../libempathy-gtk/empathy-individual-widget.c:435
 msgid "Building:"
 msgstr "建築:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:913
-#: ../libempathy-gtk/empathy-individual-widget.c:485
+#: ../libempathy-gtk/empathy-contact-widget.c:815
+#: ../libempathy-gtk/empathy-individual-widget.c:437
 msgid "Floor:"
 msgstr "樓層:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:915
-#: ../libempathy-gtk/empathy-individual-widget.c:487
+#: ../libempathy-gtk/empathy-contact-widget.c:817
+#: ../libempathy-gtk/empathy-individual-widget.c:439
 msgid "Room:"
 msgstr "室:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:917
-#: ../libempathy-gtk/empathy-individual-widget.c:489
+#: ../libempathy-gtk/empathy-contact-widget.c:819
+#: ../libempathy-gtk/empathy-individual-widget.c:441
 msgid "Text:"
 msgstr "文字:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:919
-#: ../libempathy-gtk/empathy-individual-widget.c:491
+#: ../libempathy-gtk/empathy-contact-widget.c:821
+#: ../libempathy-gtk/empathy-individual-widget.c:443
 msgid "Description:"
 msgstr "描述:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:921
-#: ../libempathy-gtk/empathy-individual-widget.c:493
+#: ../libempathy-gtk/empathy-contact-widget.c:823
+#: ../libempathy-gtk/empathy-individual-widget.c:445
 msgid "URI:"
 msgstr "URI:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:923
-#: ../libempathy-gtk/empathy-individual-widget.c:495
+#: ../libempathy-gtk/empathy-contact-widget.c:825
+#: ../libempathy-gtk/empathy-individual-widget.c:447
 msgid "Accuracy Level:"
 msgstr "準確度等級:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:925
-#: ../libempathy-gtk/empathy-individual-widget.c:497
+#: ../libempathy-gtk/empathy-contact-widget.c:827
+#: ../libempathy-gtk/empathy-individual-widget.c:449
 msgid "Error:"
 msgstr "錯誤:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:927
-#: ../libempathy-gtk/empathy-individual-widget.c:499
+#: ../libempathy-gtk/empathy-contact-widget.c:829
+#: ../libempathy-gtk/empathy-individual-widget.c:451
 msgid "Vertical Error (meters):"
 msgstr "垂直誤差 (米):"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:929
-#: ../libempathy-gtk/empathy-individual-widget.c:501
+#: ../libempathy-gtk/empathy-contact-widget.c:831
+#: ../libempathy-gtk/empathy-individual-widget.c:453
 msgid "Horizontal Error (meters):"
 msgstr "水平誤差 (米):"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:931
-#: ../libempathy-gtk/empathy-individual-widget.c:503
+#: ../libempathy-gtk/empathy-contact-widget.c:833
+#: ../libempathy-gtk/empathy-individual-widget.c:455
 msgid "Speed:"
 msgstr "速度:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:933
-#: ../libempathy-gtk/empathy-individual-widget.c:505
+#: ../libempathy-gtk/empathy-contact-widget.c:835
+#: ../libempathy-gtk/empathy-individual-widget.c:457
 msgid "Bearing:"
 msgstr "方位:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:935
-#: ../libempathy-gtk/empathy-individual-widget.c:507
+#: ../libempathy-gtk/empathy-contact-widget.c:837
+#: ../libempathy-gtk/empathy-individual-widget.c:459
 msgid "Climb Speed:"
 msgstr "爬升速度:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:937
-#: ../libempathy-gtk/empathy-individual-widget.c:509
+#: ../libempathy-gtk/empathy-contact-widget.c:839
+#: ../libempathy-gtk/empathy-individual-widget.c:461
 msgid "Last Updated on:"
 msgstr "上次更新於:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:939
-#: ../libempathy-gtk/empathy-individual-widget.c:511
+#: ../libempathy-gtk/empathy-contact-widget.c:841
+#: ../libempathy-gtk/empathy-individual-widget.c:463
 msgid "Longitude:"
 msgstr "經度:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:941
-#: ../libempathy-gtk/empathy-individual-widget.c:513
+#: ../libempathy-gtk/empathy-contact-widget.c:843
+#: ../libempathy-gtk/empathy-individual-widget.c:465
 msgid "Latitude:"
 msgstr "緯度:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:943
-#: ../libempathy-gtk/empathy-individual-widget.c:515
+#: ../libempathy-gtk/empathy-contact-widget.c:845
+#: ../libempathy-gtk/empathy-individual-widget.c:467
 msgid "Altitude:"
 msgstr "緯度:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:996
-#: ../libempathy-gtk/empathy-contact-widget.c:1011
-#: ../libempathy-gtk/empathy-individual-widget.c:607
-#: ../libempathy-gtk/empathy-individual-widget.c:622
+#: ../libempathy-gtk/empathy-contact-widget.c:898
+#: ../libempathy-gtk/empathy-contact-widget.c:913
+#: ../libempathy-gtk/empathy-individual-widget.c:559
+#: ../libempathy-gtk/empathy-individual-widget.c:574
 #: ../src/empathy-preferences.ui.h:17
 msgid "Location"
 msgstr "位置"
 
 #. translators: format is "Location, $date"
-#: ../libempathy-gtk/empathy-contact-widget.c:1013
-#: ../libempathy-gtk/empathy-individual-widget.c:624
+#: ../libempathy-gtk/empathy-contact-widget.c:915
+#: ../libempathy-gtk/empathy-individual-widget.c:576
 #, c-format
 msgid "%s, %s"
 msgstr "%s,%s"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:1065
-#: ../libempathy-gtk/empathy-individual-widget.c:673
+#: ../libempathy-gtk/empathy-contact-widget.c:967
+#: ../libempathy-gtk/empathy-individual-widget.c:625
 msgid "%B %e, %Y at %R UTC"
 msgstr "%Y %B %e 於 %R UTC"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:1147
-#: ../libempathy-gtk/empathy-individual-widget.c:915
+#: ../libempathy-gtk/empathy-contact-widget.c:1049
+#: ../libempathy-gtk/empathy-individual-widget.c:867
 msgid "Save Avatar"
 msgstr "儲存大頭貼"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:1203
-#: ../libempathy-gtk/empathy-individual-widget.c:973
+#: ../libempathy-gtk/empathy-contact-widget.c:1105
+#: ../libempathy-gtk/empathy-individual-widget.c:925
 msgid "Unable to save avatar"
 msgstr "無法儲存大頭貼"
 
+#: ../libempathy-gtk/empathy-contact-widget.c:1793
+#: ../libempathy-gtk/empathy-individual-menu.c:1066
+#: ../libempathy-gtk/empathy-individual-widget.c:1324
+msgid "Favorite"
+msgstr "喜好"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:102
+msgid "Full name"
+msgstr "全名"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:103
+msgid "Phone number"
+msgstr "電話號碼"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:104
+msgid "E-mail address"
+msgstr "電子信箱位址"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:105
+msgid "Website"
+msgstr "網站"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:106
+msgid "Birthday"
+msgstr "生日"
+
+#. Note to translators: this is the caption for a string of the form "5
+#. * minutes ago", and refers to the time since the contact last interacted
+#. * with their IM client.
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:111
+msgid "Last seen:"
+msgstr "上次看見:"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:113
+msgid "Connected from:"
+msgstr "已連接從:"
+
+#. FIXME: once Idle implements SimplePresence using this information, we can
+#. * and should bin this.
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:117
+msgid "Away message:"
+msgstr "離開訊息:"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:130
+msgid "work"
+msgstr "工作"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:131
+msgid "home"
+msgstr "住家"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:132
+msgid "mobile"
+msgstr "行動"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:133
+msgid "voice"
+msgstr "聲音"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:134
+msgid "preferred"
+msgstr "偏好"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:135
+msgid "postal"
+msgstr "郵遞"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:136
+msgid "parcel"
+msgstr "包裹"
+
 #: ../libempathy-gtk/empathy-contact-widget.ui.h:1
 msgid "<b>Location</b> at (date)\t"
 msgstr "<b>位置</b> 於 (date)\t"
 
 #. Alias
 #: ../libempathy-gtk/empathy-contact-widget.ui.h:3
-#: ../libempathy-gtk/empathy-individual-widget.c:1308
+#: ../libempathy-gtk/empathy-individual-widget.c:1260
 msgid "Alias:"
 msgstr "別名:"
 
@@ -2062,7 +2086,7 @@ msgstr "聯絡人詳細資料"
 #. Identifier to connect to Instant Messaging network
 #. Translators: Identifier to connect to Instant Messaging network
 #: ../libempathy-gtk/empathy-contact-widget.ui.h:8
-#: ../libempathy-gtk/empathy-individual-widget.c:1517
+#: ../libempathy-gtk/empathy-individual-widget.c:1469
 msgid "Identifier:"
 msgstr "識別身分:"
 
@@ -2099,16 +2123,16 @@ msgid "Select"
 msgstr "選取"
 
 #: ../libempathy-gtk/empathy-groups-widget.c:409
-#: ../src/empathy-main-window.c:1807
+#: ../src/empathy-main-window.c:1953
 msgid "Group"
 msgstr "羣組"
 
-#: ../libempathy-gtk/empathy-individual-dialogs.c:260
+#: ../libempathy-gtk/empathy-individual-dialogs.c:258
 msgid "The following identity will be blocked:"
 msgid_plural "The following identities will be blocked:"
 msgstr[0] "下列識別身分將被封鎖:"
 
-#: ../libempathy-gtk/empathy-individual-dialogs.c:267
+#: ../libempathy-gtk/empathy-individual-dialogs.c:265
 msgid "The following identity can not be blocked:"
 msgid_plural "The following identities can not be blocked:"
 msgstr[0] "下列識別身分無法被封鎖:"
@@ -2146,7 +2170,7 @@ msgstr "選取要用來放置通話的帳號"
 #. * title
 #: ../libempathy-gtk/empathy-individual-menu.c:313
 #: ../libempathy-gtk/empathy-log-window.ui.h:2
-#: ../src/empathy-streamed-media-window.c:1299
+#: ../src/empathy-streamed-media-window.c:1285
 #: ../src/empathy-call-window.ui.h:2
 msgid "Call"
 msgstr "通話"
@@ -2163,36 +2187,36 @@ msgstr "工作"
 msgid "HOME"
 msgstr "住家"
 
-#. add an SMS button
-#: ../libempathy-gtk/empathy-individual-menu.c:804
-#: ../libempathy-gtk/empathy-new-message-dialog.c:215
+#. add SMS button
+#: ../libempathy-gtk/empathy-individual-menu.c:805
+#: ../libempathy-gtk/empathy-new-message-dialog.c:314
 msgid "_SMS"
 msgstr "_SMS"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1142
+#: ../libempathy-gtk/empathy-individual-menu.c:1143
 msgctxt "Edit individual (contextual menu)"
 msgid "_Edit"
 msgstr "編輯(_E)"
 
 #. Translators: this is a verb meaning "to connect two contacts together
 #. * to form a meta-contact".
-#: ../libempathy-gtk/empathy-individual-menu.c:1168
+#: ../libempathy-gtk/empathy-individual-menu.c:1169
 msgctxt "Link individual (contextual menu)"
 msgid "_Link Contacts…"
 msgstr "連結聯絡人(_L)…"
 
-#: ../libempathy-gtk/empathy-individual-view.c:2341
+#: ../libempathy-gtk/empathy-individual-view.c:2340
 msgid "Delete and _Block"
 msgstr "刪除並封鎖(_B)"
 
-#: ../libempathy-gtk/empathy-individual-view.c:2510
+#: ../libempathy-gtk/empathy-individual-view.c:2509
 #, c-format
 msgid ""
 "Do you really want to remove the linked contact '%s'? Note that this will "
 "remove all the contacts which make up this linked contact."
 msgstr "你真的想要移除連結聯絡人「%s」嗎?請注意這會移除所有構成此連結聯絡羣的聯絡人。"
 
-#: ../libempathy-gtk/empathy-individual-widget.c:1656
+#: ../libempathy-gtk/empathy-individual-widget.c:1608
 #, c-format
 msgid "Linked contact containing %u contact"
 msgid_plural "Linked contacts containing %u contacts"
@@ -2272,133 +2296,133 @@ msgctxt "Unlink individual (button)"
 msgid "_Unlink"
 msgstr "取消連結(_U)"
 
-#: ../libempathy-gtk/empathy-log-window.c:634
+#: ../libempathy-gtk/empathy-log-window.c:620
 msgid "History"
 msgstr "歷史"
 
-#: ../libempathy-gtk/empathy-log-window.c:689
+#: ../libempathy-gtk/empathy-log-window.c:675
 msgid "Show"
 msgstr "顯示"
 
-#: ../libempathy-gtk/empathy-log-window.c:711
+#: ../libempathy-gtk/empathy-log-window.c:697
 msgid "Search"
 msgstr "搜尋"
 
-#: ../libempathy-gtk/empathy-log-window.c:1159
+#: ../libempathy-gtk/empathy-log-window.c:1145
 #, c-format
 msgid "Chat in %s"
 msgstr "於 %s 內聊天"
 
-#: ../libempathy-gtk/empathy-log-window.c:1161
+#: ../libempathy-gtk/empathy-log-window.c:1147
 #, c-format
 msgid "Chat with %s"
 msgstr "與 %s 聊天中"
 
-#: ../libempathy-gtk/empathy-log-window.c:1211
-#: ../libempathy-gtk/empathy-log-window.c:1358
+#: ../libempathy-gtk/empathy-log-window.c:1197
+#: ../libempathy-gtk/empathy-log-window.c:1344
 msgctxt "A date with the time"
 msgid "%A, %e %B %Y %X"
 msgstr "%Y %B %d %A"
 
 #. Translators: this is an emote: '* Danielle waves'
-#: ../libempathy-gtk/empathy-log-window.c:1300
+#: ../libempathy-gtk/empathy-log-window.c:1286
 #, c-format
 msgid "<i>* %s %s</i>"
 msgstr "<i>* %s %s</i>"
 
 #. Translators: this is a message: 'Danielle: hello'
 #. * The string in bold is the sender's name
-#: ../libempathy-gtk/empathy-log-window.c:1306
+#: ../libempathy-gtk/empathy-log-window.c:1292
 #, c-format
 msgid "<b>%s:</b> %s"
 msgstr "<b>%s:</b> %s"
 
-#: ../libempathy-gtk/empathy-log-window.c:1382
+#: ../libempathy-gtk/empathy-log-window.c:1368
 #, c-format
 msgid "%s second"
 msgid_plural "%s seconds"
 msgstr[0] "%s 秒"
 
-#: ../libempathy-gtk/empathy-log-window.c:1389
+#: ../libempathy-gtk/empathy-log-window.c:1375
 #, c-format
 msgid "%s minute"
 msgid_plural "%s minutes"
 msgstr[0] "%s 分鐘"
 
-#: ../libempathy-gtk/empathy-log-window.c:1397
+#: ../libempathy-gtk/empathy-log-window.c:1383
 #, c-format
 msgid "Call took %s, ended at %s"
 msgstr "通話時間 %s,結束於 %s"
 
-#: ../libempathy-gtk/empathy-log-window.c:1729
+#: ../libempathy-gtk/empathy-log-window.c:1715
 msgid "Today"
 msgstr "今日"
 
-#: ../libempathy-gtk/empathy-log-window.c:1733
+#: ../libempathy-gtk/empathy-log-window.c:1719
 msgid "Yesterday"
 msgstr "昨日"
 
 #. Translators: A date such as '23 May 2010' (strftime format)
-#: ../libempathy-gtk/empathy-log-window.c:1748
+#: ../libempathy-gtk/empathy-log-window.c:1734
 msgid "%e %B %Y"
 msgstr "%Y年%B%e日"
 
-#: ../libempathy-gtk/empathy-log-window.c:1829
-#: ../libempathy-gtk/empathy-log-window.c:3444
+#: ../libempathy-gtk/empathy-log-window.c:1815
+#: ../libempathy-gtk/empathy-log-window.c:3430
 msgid "Anytime"
 msgstr "任何時間"
 
-#: ../libempathy-gtk/empathy-log-window.c:1916
-#: ../libempathy-gtk/empathy-log-window.c:2372
+#: ../libempathy-gtk/empathy-log-window.c:1902
+#: ../libempathy-gtk/empathy-log-window.c:2358
 msgid "Anyone"
 msgstr "任一個"
 
-#: ../libempathy-gtk/empathy-log-window.c:2685
+#: ../libempathy-gtk/empathy-log-window.c:2671
 msgid "Who"
 msgstr "誰"
 
-#: ../libempathy-gtk/empathy-log-window.c:2889
+#: ../libempathy-gtk/empathy-log-window.c:2875
 msgid "When"
 msgstr "何時"
 
-#: ../libempathy-gtk/empathy-log-window.c:3005
+#: ../libempathy-gtk/empathy-log-window.c:2991
 msgid "Anything"
 msgstr "任何事"
 
-#: ../libempathy-gtk/empathy-log-window.c:3007
+#: ../libempathy-gtk/empathy-log-window.c:2993
 msgid "Text chats"
 msgstr "文字聊天"
 
-#: ../libempathy-gtk/empathy-log-window.c:3009
+#: ../libempathy-gtk/empathy-log-window.c:2995
 #: ../src/empathy-preferences.ui.h:4
 msgid "Calls"
 msgstr "通話"
 
-#: ../libempathy-gtk/empathy-log-window.c:3014
+#: ../libempathy-gtk/empathy-log-window.c:3000
 msgid "Incoming calls"
 msgstr "來電"
 
-#: ../libempathy-gtk/empathy-log-window.c:3015
+#: ../libempathy-gtk/empathy-log-window.c:3001
 msgid "Outgoing calls"
 msgstr "播出"
 
-#: ../libempathy-gtk/empathy-log-window.c:3016
+#: ../libempathy-gtk/empathy-log-window.c:3002
 msgid "Missed calls"
 msgstr "漏接來電"
 
-#: ../libempathy-gtk/empathy-log-window.c:3038
+#: ../libempathy-gtk/empathy-log-window.c:3024
 msgid "What"
 msgstr "什麼"
 
-#: ../libempathy-gtk/empathy-log-window.c:3747
+#: ../libempathy-gtk/empathy-log-window.c:3719
 msgid "Are you sure you want to delete all logs of previous conversations?"
 msgstr "你確定要刪除過往談話的所有紀錄嗎?"
 
-#: ../libempathy-gtk/empathy-log-window.c:3751
+#: ../libempathy-gtk/empathy-log-window.c:3723
 msgid "Clear All"
 msgstr "清除全部"
 
-#: ../libempathy-gtk/empathy-log-window.c:3758
+#: ../libempathy-gtk/empathy-log-window.c:3730
 msgid "Delete from:"
 msgstr "刪除從:"
 
@@ -2439,32 +2463,72 @@ msgstr "檔案(_F)"
 msgid "page 2"
 msgstr "頁面 2"
 
-#: ../libempathy-gtk/empathy-contact-selector-dialog.ui.h:2
-msgid "Contact ID:"
-msgstr "聯絡人 IDï¼\9a"
+#: ../libempathy-gtk/empathy-new-message-dialog.c:84
+msgid "The contact is offline"
+msgstr "聯絡人å·²ç¶\93é\9b¢ç·\9a"
 
-#. add chat button
-#: ../libempathy-gtk/empathy-new-message-dialog.c:225
-msgid "C_hat"
-msgstr "聊天(_C)"
+#: ../libempathy-gtk/empathy-new-message-dialog.c:86
+msgid "The specified contact is either invalid or unknown"
+msgstr "指定的聯絡人無效或未知"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.c:88
+msgid "The contact does not support this kind of conversation"
+msgstr "該聯絡人不支援這類談話"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.c:90
+msgid "The requested functionality is not implemented for this protocol"
+msgstr "請求的功能尚未在此協定中實作"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.c:96
+msgid "Could not start a conversation with the given contact"
+msgstr "無法啟動與給定聯絡人的談話"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.c:98
+msgid "You are banned from this channel"
+msgstr "你被此頻道禁封"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.c:100
+msgid "This channel is full"
+msgstr "此頻道已滿"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.c:102
+msgid "You must be invited to join this channel"
+msgstr "你必須被邀請才能參加此頻道"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.c:104
+msgid "Can't proceed while disconnected"
+msgstr "斷線時無法處理"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.c:106
+msgid "Permission denied"
+msgstr "許可被拒絕"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.c:112
+msgid "There was an error starting the conversation"
+msgstr "啟動談話時發生錯誤"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.c:291
+#: ../libempathy-gtk/empathy-new-call-dialog.c:203
+msgid "Enter a contact identifier or phone number:"
+msgstr "請輸入聯絡人辨識身份或電話號碼:"
 
 #. Tweak the dialog
-#: ../libempathy-gtk/empathy-new-message-dialog.c:244
+#: ../libempathy-gtk/empathy-new-message-dialog.c:334
 msgid "New Conversation"
 msgstr "新增談話"
 
-#. add video toggle
-#: ../libempathy-gtk/empathy-new-call-dialog.c:204
-msgid "Send _Video"
-msgstr "傳送視像(_V)"
+#. add video button
+#: ../libempathy-gtk/empathy-new-call-dialog.c:226
+msgid "_Video Call"
+msgstr "視像通話(_V)"
 
-#. add chat button
-#: ../libempathy-gtk/empathy-new-call-dialog.c:215
-msgid "C_all"
-msgstr "通話(_A)"
+#. add audio button
+#: ../libempathy-gtk/empathy-new-call-dialog.c:236
+msgid "_Audio Call"
+msgstr "語音通話(_A)"
 
 #. Tweak the dialog
-#: ../libempathy-gtk/empathy-new-call-dialog.c:225
+#: ../libempathy-gtk/empathy-new-call-dialog.c:246
 msgid "New Call"
 msgstr "新增通話"
 
@@ -2505,12 +2569,8 @@ msgstr "按這裏將這個狀態設為喜好"
 msgid "Set status"
 msgstr "設定狀態"
 
-#: ../libempathy-gtk/empathy-presence-chooser.c:943
-msgid "Set your presence and current status"
-msgstr "設定你的上線與目前的狀態"
-
 #. Custom messages
-#: ../libempathy-gtk/empathy-presence-chooser.c:1131
+#: ../libempathy-gtk/empathy-presence-chooser.c:1135
 msgid "Custom messages…"
 msgstr "自選訊息…"
 
@@ -2587,12 +2647,12 @@ msgstr "語音通話結束"
 msgid "Edit Custom Messages"
 msgstr "編輯自選訊息"
 
-#: ../libempathy-gtk/empathy-theme-adium.c:1036
+#: ../libempathy-gtk/empathy-theme-adium.c:1047
 #, c-format
 msgid "Message edited at %s"
 msgstr "訊息編輯於 %s"
 
-#: ../libempathy-gtk/empathy-theme-adium.c:1726
+#: ../libempathy-gtk/empathy-theme-adium.c:1752
 msgid "Normal"
 msgstr "一般"
 
@@ -2683,26 +2743,26 @@ msgstr "請記住此選擇以供未來連線使用"
 msgid "Certificate Details"
 msgstr "證書詳細資料"
 
-#: ../libempathy-gtk/empathy-ui-utils.c:1735
+#: ../libempathy-gtk/empathy-ui-utils.c:1741
 msgid "Unable to open URI"
 msgstr "無法開啓 URI"
 
-#: ../libempathy-gtk/empathy-ui-utils.c:1831
+#: ../libempathy-gtk/empathy-ui-utils.c:1859
 msgid "Select a file"
 msgstr "選擇一個檔案"
 
-#: ../libempathy-gtk/empathy-ui-utils.c:1903
+#: ../libempathy-gtk/empathy-ui-utils.c:1934
 msgid "Insufficient free space to save file"
 msgstr "空間不足以儲存檔案"
 
-#: ../libempathy-gtk/empathy-ui-utils.c:1911
+#: ../libempathy-gtk/empathy-ui-utils.c:1942
 #, c-format
 msgid ""
 "%s of free space are required to save this file, but only %s is available. "
 "Please choose another location."
 msgstr "需要 %s 的空間以儲存此檔案,但僅有 %s 可用。請選擇其他位置。"
 
-#: ../libempathy-gtk/empathy-ui-utils.c:1955
+#: ../libempathy-gtk/empathy-ui-utils.c:1986
 #, c-format
 msgid "Incoming file from %s"
 msgstr "收到來自 %s 的檔案"
@@ -2874,39 +2934,31 @@ msgstr "西歐語系"
 msgid "Vietnamese"
 msgstr "越南文"
 
-#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:108
-msgid "The selected contact cannot receive files."
-msgstr "所選的聯絡人無法接收檔案。"
-
-#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:114
-msgid "The selected contact is offline."
-msgstr "所選的聯絡人已經離線。"
-
-#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:169
+#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:203
 msgid "No error message"
 msgstr "沒有錯誤訊息"
 
-#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:242
+#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:276
 msgid "Instant Message (Empathy)"
 msgstr "即時通訊 (Empathy)"
 
-#: ../src/empathy.c:431
+#: ../src/empathy.c:433
 msgid "Don't connect on startup"
 msgstr "啟動時不要自動連線"
 
-#: ../src/empathy.c:435
+#: ../src/empathy.c:437
 msgid "Don't display the contact list or any other dialogs on startup"
 msgstr "啟動時不顯示聯絡人清單或任何其他對話窗"
 
-#: ../src/empathy.c:450
+#: ../src/empathy.c:452
 msgid "- Empathy IM Client"
 msgstr "- Empathy 即時通用戶端"
 
-#: ../src/empathy.c:637
+#: ../src/empathy.c:639
 msgid "Error contacting the Account Manager"
 msgstr "聯絡帳號管理程式時發生錯誤"
 
-#: ../src/empathy.c:639
+#: ../src/empathy.c:641
 #, c-format
 msgid ""
 "There was an error while trying to connect to the Telepathy Account Manager. "
@@ -3046,8 +3098,8 @@ msgid "Select the accounts you want to import:"
 msgstr "選擇要匯入的帳號:"
 
 #: ../src/empathy-account-assistant.c:813
-#: ../src/empathy-new-chatroom-dialog.c:555
-#: ../src/empathy-new-chatroom-dialog.c:556
+#: ../src/empathy-new-chatroom-dialog.c:625
+#: ../src/empathy-new-chatroom-dialog.c:626
 msgid "Yes"
 msgstr "是"
 
@@ -3114,8 +3166,8 @@ msgid "Your new account has not been saved yet."
 msgstr "尚未儲存你的新帳號。"
 
 #: ../src/empathy-accounts-dialog.c:345
-#: ../src/empathy-streamed-media-window.c:754
-#: ../src/empathy-call-window.c:1216
+#: ../src/empathy-streamed-media-window.c:755
+#: ../src/empathy-call-window.c:1326
 msgid "Connecting…"
 msgstr "連線中…"
 
@@ -3209,11 +3261,11 @@ msgstr "要加入新的帳號,你必須先安裝每個會用到的通訊協定
 msgid "_Import…"
 msgstr "匯入(_I)…"
 
-#: ../src/empathy-auth-client.c:249
+#: ../src/empathy-auth-client.c:251
 msgid " - Empathy authentication client"
 msgstr "- Empathy 認證用戶端"
 
-#: ../src/empathy-auth-client.c:265
+#: ../src/empathy-auth-client.c:267
 msgid "Empathy authentication client"
 msgstr "Empathy 認證用戶端"
 
@@ -3221,157 +3273,145 @@ msgstr "Empathy 認證用戶端"
 msgid "People nearby"
 msgstr "附近的人"
 
-#: ../src/empathy-av.c:118 ../src/empathy-call.c:192
+#: ../src/empathy-av.c:118 ../src/empathy-call.c:193
 msgid "- Empathy Audio/Video Client"
 msgstr "- Empathy 音訊視像用戶端"
 
-#: ../src/empathy-av.c:134 ../src/empathy-call.c:217
+#: ../src/empathy-av.c:134 ../src/empathy-call.c:218
 msgid "Empathy Audio/Video Client"
 msgstr "Empathy 音訊視像用戶端"
 
-#: ../src/empathy-streamed-media-window.c:431
+#: ../src/empathy-streamed-media-window.c:432
 msgid "Contrast"
 msgstr "對比"
 
-#: ../src/empathy-streamed-media-window.c:434
+#: ../src/empathy-streamed-media-window.c:435
 msgid "Brightness"
 msgstr "亮度"
 
-#: ../src/empathy-streamed-media-window.c:437
+#: ../src/empathy-streamed-media-window.c:438
 msgid "Gamma"
 msgstr "Gamma"
 
-#: ../src/empathy-streamed-media-window.c:542
+#: ../src/empathy-streamed-media-window.c:543
 msgid "Volume"
 msgstr "音量"
 
-#: ../src/empathy-streamed-media-window.c:1110
+#: ../src/empathy-streamed-media-window.c:1094
 msgid "_Sidebar"
 msgstr "側邊欄(_S)"
 
-#: ../src/empathy-streamed-media-window.c:1130
+#: ../src/empathy-streamed-media-window.c:1114
 msgid "Audio input"
 msgstr "音效輸入"
 
-#: ../src/empathy-streamed-media-window.c:1134
+#: ../src/empathy-streamed-media-window.c:1118
 msgid "Video input"
 msgstr "視像輸入"
 
-#: ../src/empathy-streamed-media-window.c:1140
+#: ../src/empathy-streamed-media-window.c:1126
 msgid "Dialpad"
 msgstr "播號盤"
 
-#: ../src/empathy-streamed-media-window.c:1151
+#: ../src/empathy-streamed-media-window.c:1137
 msgid "Details"
 msgstr "詳細資料"
 
 #. translators: Call is a noun and %s is the contact name. This string
 #. * is used in the window title
-#: ../src/empathy-streamed-media-window.c:1220
-#: ../src/empathy-call-window.c:1825
+#: ../src/empathy-streamed-media-window.c:1206
+#: ../src/empathy-call-window.c:1932
 #, c-format
 msgid "Call with %s"
 msgstr "與 %s 通話中"
 
-#: ../src/empathy-streamed-media-window.c:1453
-#: ../src/empathy-call-window.c:2069
+#: ../src/empathy-streamed-media-window.c:1439
+#: ../src/empathy-call-window.c:2176
 msgid "The IP address as seen by the machine"
 msgstr "機器看見的 IP 位址"
 
-#: ../src/empathy-streamed-media-window.c:1455
-#: ../src/empathy-call-window.c:2071
+#: ../src/empathy-streamed-media-window.c:1441
+#: ../src/empathy-call-window.c:2178
 msgid "The IP address as seen by a server on the Internet"
 msgstr "互聯網上的伺服器看見的 IP 位址"
 
-#: ../src/empathy-streamed-media-window.c:1457
-#: ../src/empathy-call-window.c:2073
+#: ../src/empathy-streamed-media-window.c:1443
+#: ../src/empathy-call-window.c:2180
 msgid "The IP address of the peer as seen by the other side"
 msgstr "其他端看見的點的 IP 位址"
 
-#: ../src/empathy-streamed-media-window.c:1459
-#: ../src/empathy-call-window.c:2075
+#: ../src/empathy-streamed-media-window.c:1445
+#: ../src/empathy-call-window.c:2182
 msgid "The IP address of a relay server"
 msgstr "中繼伺服器的 IP 位址"
 
-#: ../src/empathy-streamed-media-window.c:1461
-#: ../src/empathy-call-window.c:2077
+#: ../src/empathy-streamed-media-window.c:1447
+#: ../src/empathy-call-window.c:2184
 msgid "The IP address of the multicast group"
 msgstr "多點廣播羣組的 IP 位址"
 
-#: ../src/empathy-streamed-media-window.c:1843
-msgctxt "encoding video codec"
-msgid "Unknown"
-msgstr "未知"
-
-#: ../src/empathy-streamed-media-window.c:1846
-msgctxt "encoding audio codec"
-msgid "Unknown"
-msgstr "未知"
-
-#: ../src/empathy-streamed-media-window.c:1849
-msgctxt "decoding video codec"
-msgid "Unknown"
-msgstr "未知"
-
-#: ../src/empathy-streamed-media-window.c:1852
-msgctxt "decoding audio codec"
+#: ../src/empathy-streamed-media-window.c:1835
+#: ../src/empathy-streamed-media-window.c:1838
+#: ../src/empathy-streamed-media-window.c:1841
+#: ../src/empathy-streamed-media-window.c:1844
+msgctxt "codec"
 msgid "Unknown"
 msgstr "未知"
 
 #. Translators: number of minutes:seconds the caller has been connected
-#: ../src/empathy-streamed-media-window.c:2144
+#: ../src/empathy-streamed-media-window.c:2136
 #, c-format
 msgid "Connected — %d:%02dm"
 msgstr "已連線 — %d:%02dm"
 
-#: ../src/empathy-streamed-media-window.c:2205
-#: ../src/empathy-call-window.c:2846
+#: ../src/empathy-streamed-media-window.c:2197
+#: ../src/empathy-call-window.c:3045
 msgid "Technical Details"
 msgstr "技術細節"
 
-#: ../src/empathy-streamed-media-window.c:2243
-#: ../src/empathy-call-window.c:2884
+#: ../src/empathy-streamed-media-window.c:2235
+#: ../src/empathy-call-window.c:3084
 #, c-format
 msgid ""
 "%s's software does not understand any of the audio formats supported by your "
 "computer"
 msgstr "%s 的軟件不瞭解任何你電腦上所支援的音訊格式"
 
-#: ../src/empathy-streamed-media-window.c:2248
-#: ../src/empathy-call-window.c:2889
+#: ../src/empathy-streamed-media-window.c:2240
+#: ../src/empathy-call-window.c:3089
 #, c-format
 msgid ""
 "%s's software does not understand any of the video formats supported by your "
 "computer"
 msgstr "%s 的軟件不瞭解任何你電腦上所支援的視像格式"
 
-#: ../src/empathy-streamed-media-window.c:2254
-#: ../src/empathy-call-window.c:2895
+#: ../src/empathy-streamed-media-window.c:2246
+#: ../src/empathy-call-window.c:3095
 #, c-format
 msgid ""
 "Can't establish a connection to %s. One of you might be on a network that "
 "does not allow direct connections."
 msgstr "無法和 %s 建立連線。你們其中之一可能在一個不允許直接連線的網絡之上。"
 
-#: ../src/empathy-streamed-media-window.c:2260
-#: ../src/empathy-call-window.c:2901
+#: ../src/empathy-streamed-media-window.c:2252
+#: ../src/empathy-call-window.c:3101
 msgid "There was a failure on the network"
 msgstr "這個網絡上有錯誤發生"
 
-#: ../src/empathy-streamed-media-window.c:2264
-#: ../src/empathy-call-window.c:2905
+#: ../src/empathy-streamed-media-window.c:2256
+#: ../src/empathy-call-window.c:3105
 msgid ""
 "The audio formats necessary for this call are not installed on your computer"
 msgstr "此通話所必要的音訊格式尚未在你的電腦上安裝"
 
-#: ../src/empathy-streamed-media-window.c:2267
-#: ../src/empathy-call-window.c:2908
+#: ../src/empathy-streamed-media-window.c:2259
+#: ../src/empathy-call-window.c:3108
 msgid ""
 "The video formats necessary for this call are not installed on your computer"
 msgstr "此通話所必要的視像格式尚未在你的電腦上安裝"
 
-#: ../src/empathy-streamed-media-window.c:2277
-#: ../src/empathy-call-window.c:2920
+#: ../src/empathy-streamed-media-window.c:2269
+#: ../src/empathy-call-window.c:3120
 #, c-format
 msgid ""
 "Something unexpected happened in a Telepathy component. Please <a href=\"%s"
@@ -3379,23 +3419,23 @@ msgid ""
 "the Help menu."
 msgstr "在 Telepathy 元件中發生未預期的狀況。請<a href=\"%s\">匯報這個錯誤</a>並附上從求助選單內的「除錯」視窗中所收集的紀錄。"
 
-#: ../src/empathy-streamed-media-window.c:2285
-#: ../src/empathy-call-window.c:2929
+#: ../src/empathy-streamed-media-window.c:2277
+#: ../src/empathy-call-window.c:3129
 msgid "There was a failure in the call engine"
 msgstr "通話引擎內有錯誤發生"
 
-#: ../src/empathy-streamed-media-window.c:2288
-#: ../src/empathy-call-window.c:2932
+#: ../src/empathy-streamed-media-window.c:2280
+#: ../src/empathy-call-window.c:3132
 msgid "The end of the stream was reached"
 msgstr "已達串流末端"
 
-#: ../src/empathy-streamed-media-window.c:2328
-#: ../src/empathy-call-window.c:2972
+#: ../src/empathy-streamed-media-window.c:2320
+#: ../src/empathy-call-window.c:3172
 msgid "Can't establish audio stream"
 msgstr "無法建立音訊串流"
 
-#: ../src/empathy-streamed-media-window.c:2338
-#: ../src/empathy-call-window.c:2982
+#: ../src/empathy-streamed-media-window.c:2330
+#: ../src/empathy-call-window.c:3182
 msgid "Can't establish video stream"
 msgstr "無法建立視像串流"
 
@@ -3486,8 +3526,8 @@ msgstr "切換視像傳播"
 
 #: ../src/empathy-call-window.ui.h:21
 #: ../src/empathy-streamed-media-window.ui.h:18
-#: ../src/empathy-call-window.c:2476 ../src/empathy-call-window.c:2477
-#: ../src/empathy-call-window.c:2478 ../src/empathy-call-window.c:2479
+#: ../src/empathy-call-window.c:2584 ../src/empathy-call-window.c:2585
+#: ../src/empathy-call-window.c:2586 ../src/empathy-call-window.c:2587
 msgid "Unknown"
 msgstr "不明"
 
@@ -3651,7 +3691,7 @@ msgstr "管理喜好的聊天室"
 msgid "Incoming video call"
 msgstr "傳入的視像通話"
 
-#: ../src/empathy-event-manager.c:521 ../src/empathy-call-window.c:1449
+#: ../src/empathy-event-manager.c:521 ../src/empathy-call-window.c:1556
 msgid "Incoming call"
 msgstr "來電"
 
@@ -3666,7 +3706,7 @@ msgid "%s is calling you. Do you want to answer?"
 msgstr "%s 要與你進行通話。你是否要接聽?"
 
 #: ../src/empathy-event-manager.c:529 ../src/empathy-event-manager.c:730
-#: ../src/empathy-event-manager.c:763 ../src/empathy-call-window.c:1455
+#: ../src/empathy-event-manager.c:763 ../src/empathy-call-window.c:1562
 #, c-format
 msgid "Incoming call from %s"
 msgstr "%s 的來電"
@@ -3684,7 +3724,7 @@ msgid "_Answer with video"
 msgstr "以視像接聽(_A)"
 
 #: ../src/empathy-event-manager.c:730 ../src/empathy-event-manager.c:763
-#: ../src/empathy-call-window.c:1455
+#: ../src/empathy-call-window.c:1562
 #, c-format
 msgid "Incoming video call from %s"
 msgstr "來自 %s 的視像通話"
@@ -3727,16 +3767,16 @@ msgstr "你被邀請參加 %s"
 msgid "Incoming file transfer from %s"
 msgstr "收到來自 %s 的檔案傳輸"
 
-#: ../src/empathy-event-manager.c:1134 ../src/empathy-main-window.c:375
+#: ../src/empathy-event-manager.c:1145 ../src/empathy-main-window.c:378
 msgid "Password required"
 msgstr "需要密碼"
 
-#: ../src/empathy-event-manager.c:1190
+#: ../src/empathy-event-manager.c:1210
 #, c-format
 msgid "%s would like permission to see when you are online"
 msgstr "%s 想要得到查看你是否上線的許可"
 
-#: ../src/empathy-event-manager.c:1194
+#: ../src/empathy-event-manager.c:1214
 #, c-format
 msgid ""
 "\n"
@@ -3879,51 +3919,60 @@ msgstr "通訊協定"
 msgid "Source"
 msgstr "來源"
 
-#: ../src/empathy-main-window.c:392
+#: ../src/empathy-main-window.c:395
 msgid "Provide Password"
 msgstr "提供密碼"
 
-#: ../src/empathy-main-window.c:398
+#: ../src/empathy-main-window.c:401
 msgid "Disconnect"
 msgstr "斷線"
 
-#: ../src/empathy-main-window.c:622
+#: ../src/empathy-main-window.c:638
 msgid "No match found"
 msgstr "找不到符合項目"
 
-#: ../src/empathy-main-window.c:777
+#: ../src/empathy-main-window.c:746
+#, c-format
+msgid "Sorry, %s accounts can’t be used until your %s software is updated."
+msgstr "很抱歉,%s 帳號無法使用,除非你的 %s 軟件已更新。"
+
+#: ../src/empathy-main-window.c:814
+msgid "Update software..."
+msgstr "更新軟件..."
+
+#: ../src/empathy-main-window.c:820 ../src/empathy-main-window.c:941
+msgid "Close"
+msgstr "關閉"
+
+#: ../src/empathy-main-window.c:929
 msgid "Reconnect"
 msgstr "重新連接"
 
-#: ../src/empathy-main-window.c:783
+#: ../src/empathy-main-window.c:935
 msgid "Edit Account"
 msgstr "編輯帳號"
 
-#: ../src/empathy-main-window.c:789
-msgid "Close"
-msgstr "關閉"
-
 #. Translators: this string will be something like:
 #. *   Top up My Account ($1.23)..."
-#: ../src/empathy-main-window.c:928
+#: ../src/empathy-main-window.c:1074
 #, c-format
 msgid "Top up %s (%s)..."
 msgstr "加值 %s (%s)..."
 
-#: ../src/empathy-main-window.c:975
+#: ../src/empathy-main-window.c:1121
 msgid "Top up account credit"
-msgstr "加值帳號額度"
+msgstr "加值帳號存額"
 
 #. top up button
-#: ../src/empathy-main-window.c:1046
+#: ../src/empathy-main-window.c:1192
 msgid "Top Up..."
 msgstr "加值..."
 
-#: ../src/empathy-main-window.c:1789
+#: ../src/empathy-main-window.c:1935
 msgid "Contact"
 msgstr "聯絡人"
 
-#: ../src/empathy-main-window.c:2121
+#: ../src/empathy-main-window.c:2310
 msgid "Contact List"
 msgstr "聯絡人清單"
 
@@ -4016,17 +4065,17 @@ msgstr "聊天室(_R)"
 msgid "_Search for Contacts…"
 msgstr "搜尋聯絡人(_S)…"
 
-#: ../src/empathy-new-chatroom-dialog.c:337
+#: ../src/empathy-new-chatroom-dialog.c:369
 msgid "Chat Room"
 msgstr "聊天室"
 
-#: ../src/empathy-new-chatroom-dialog.c:353
+#: ../src/empathy-new-chatroom-dialog.c:385
 msgid "Members"
 msgstr "成員"
 
 #. Translators: Room/Join's roomlist tooltip. Parameters are a channel name,
 #. yes/no, yes/no and a number.
-#: ../src/empathy-new-chatroom-dialog.c:553
+#: ../src/empathy-new-chatroom-dialog.c:623
 #, c-format
 msgid ""
 "%s\n"
@@ -4039,16 +4088,16 @@ msgstr ""
 "需要密碼:%s\n"
 "成員:%s"
 
-#: ../src/empathy-new-chatroom-dialog.c:555
-#: ../src/empathy-new-chatroom-dialog.c:556
+#: ../src/empathy-new-chatroom-dialog.c:625
+#: ../src/empathy-new-chatroom-dialog.c:626
 msgid "No"
 msgstr "否"
 
-#: ../src/empathy-new-chatroom-dialog.c:584
+#: ../src/empathy-new-chatroom-dialog.c:654
 msgid "Could not start room listing"
 msgstr "無法開始列出聊天室清單"
 
-#: ../src/empathy-new-chatroom-dialog.c:594
+#: ../src/empathy-new-chatroom-dialog.c:664
 msgid "Could not stop room listing"
 msgstr "無法停止列出聊天室清單"
 
@@ -4151,7 +4200,7 @@ msgstr "將來有命終相見,無命今生不相逄。"
 msgid "Juliet has disconnected"
 msgstr "祝英台已斷線"
 
-#: ../src/empathy-preferences.c:1166
+#: ../src/empathy-preferences.c:1175
 msgid "Preferences"
 msgstr "偏好設定"
 
@@ -4269,43 +4318,47 @@ msgid "Themes"
 msgstr "佈景主題"
 
 #: ../src/empathy-preferences.ui.h:30
+msgid "Use _echo cancellation to improve call quality"
+msgstr "使用回音消除來改善通話品質(_E)"
+
+#: ../src/empathy-preferences.ui.h:31
 msgid "Variant:"
 msgstr "樣式:"
 
-#: ../src/empathy-preferences.ui.h:31
+#: ../src/empathy-preferences.ui.h:32
 msgid "_Automatically connect on startup"
 msgstr "啟動時自動連線(_A)"
 
-#: ../src/empathy-preferences.ui.h:32
+#: ../src/empathy-preferences.ui.h:33
 msgid "_Cellphone"
 msgstr "手機(_C)"
 
-#: ../src/empathy-preferences.ui.h:33
+#: ../src/empathy-preferences.ui.h:34
 msgid "_Enable bubble notifications"
 msgstr "啟用氣泡式通知(_E)"
 
-#: ../src/empathy-preferences.ui.h:34
+#: ../src/empathy-preferences.ui.h:35
 msgid "_Enable sound notifications"
 msgstr "啟用音效通知(_E)"
 
-#: ../src/empathy-preferences.ui.h:35
+#: ../src/empathy-preferences.ui.h:36
 msgid "_GPS"
 msgstr "_GPS"
 
-#: ../src/empathy-preferences.ui.h:36
+#: ../src/empathy-preferences.ui.h:37
 msgid "_Network (IP, Wi-Fi)"
 msgstr "網絡 (IP, Wi-Fi)(_N)"
 
-#: ../src/empathy-preferences.ui.h:37
+#: ../src/empathy-preferences.ui.h:38
 msgid "_Open new chats in separate windows"
 msgstr "在個別視窗開啟新的聊天(_O)"
 
-#: ../src/empathy-preferences.ui.h:38
+#: ../src/empathy-preferences.ui.h:39
 msgid "_Publish location to my contacts"
 msgstr "對我的聯絡人公開位置(_P)"
 
 #. To translators: The longitude and latitude are rounded to closest 0,1 degrees, so for example 146,2345° is rounded to round(146,2345*10)/10 = 146,2 degrees.
-#: ../src/empathy-preferences.ui.h:40
+#: ../src/empathy-preferences.ui.h:41
 msgid "_Reduce location accuracy"
 msgstr "降低位置準確度(_R)"
 
@@ -4431,16 +4484,16 @@ msgid ""
 "extension."
 msgstr "選取的連線管理程式不支援遠端偵錯擴充功能。"
 
-#: ../src/empathy-invite-participant-dialog.c:179
-#: ../src/empathy-invite-participant-dialog.c:205
+#: ../src/empathy-invite-participant-dialog.c:197
+#: ../src/empathy-invite-participant-dialog.c:225
 msgid "Invite Participant"
 msgstr "邀請參與"
 
-#: ../src/empathy-invite-participant-dialog.c:180
+#: ../src/empathy-invite-participant-dialog.c:198
 msgid "Choose a contact to invite into the conversation:"
 msgstr "選擇想要邀請進入談話的聯絡人:"
 
-#: ../src/empathy-invite-participant-dialog.c:201
+#: ../src/empathy-invite-participant-dialog.c:221
 msgid "Invite"
 msgstr "邀請"
 
@@ -4461,23 +4514,27 @@ msgstr "初始選取所給予的帳號 (例:gabble/jabber/foo_40example_2eorg0
 msgid "<account-id>"
 msgstr "<account-id>"
 
-#: ../src/empathy-accounts.c:198
+#: ../src/empathy-accounts.c:196
+msgid "Show account assistant"
+msgstr "顯示帳號助理"
+
+#: ../src/empathy-accounts.c:202
 msgid "- Empathy Accounts"
 msgstr "- Empathy 帳號"
 
-#: ../src/empathy-accounts.c:237
+#: ../src/empathy-accounts.c:238
 msgid "Empathy Accounts"
 msgstr "Empathy 帳號"
 
-#: ../src/empathy-debugger.c:70
+#: ../src/empathy-debugger.c:69
 msgid "Show a particular service"
 msgstr "顯示特定服務"
 
-#: ../src/empathy-debugger.c:75
+#: ../src/empathy-debugger.c:74
 msgid "- Empathy Debugger"
 msgstr "- Empathy 除錯器"
 
-#: ../src/empathy-debugger.c:114
+#: ../src/empathy-debugger.c:113
 msgid "Empathy Debugger"
 msgstr "Empathy 除錯程式"
 
@@ -4485,39 +4542,39 @@ msgstr "Empathy 除錯程式"
 msgid "- Empathy Chat Client"
 msgstr "- Empathy 聊天用戶端"
 
-#: ../src/empathy-notifications-approver.c:203
+#: ../src/empathy-notifications-approver.c:190
 msgid "Respond"
 msgstr "回應"
 
-#: ../src/empathy-notifications-approver.c:217
-#: ../src/empathy-call-window.c:1459
+#: ../src/empathy-notifications-approver.c:204
+#: ../src/empathy-call-window.c:1566
 msgid "Reject"
 msgstr "拒絕"
 
-#: ../src/empathy-notifications-approver.c:222
-#: ../src/empathy-notifications-approver.c:227
-#: ../src/empathy-call-window.c:1460
+#: ../src/empathy-notifications-approver.c:209
+#: ../src/empathy-notifications-approver.c:214
+#: ../src/empathy-call-window.c:1567
 msgid "Answer"
 msgstr "接聽"
 
-#: ../src/empathy-notifications-approver.c:227
+#: ../src/empathy-notifications-approver.c:214
 msgid "Answer with video"
 msgstr "以視像接聽"
 
-#: ../src/empathy-notifications-approver.c:235
-#: ../src/empathy-notifications-approver.c:245
+#: ../src/empathy-notifications-approver.c:222
+#: ../src/empathy-notifications-approver.c:232
 msgid "Decline"
 msgstr "拒絕"
 
-#: ../src/empathy-notifications-approver.c:239
-#: ../src/empathy-notifications-approver.c:250
+#: ../src/empathy-notifications-approver.c:226
+#: ../src/empathy-notifications-approver.c:237
 msgid "Accept"
 msgstr "接受"
 
 #. translators: the 'Provide' button is displayed in a notification
 #. * bubble when Empathy is asking for an account password; clicking on it
 #. * brings the password popup.
-#: ../src/empathy-notifications-approver.c:260
+#: ../src/empathy-notifications-approver.c:247
 msgid "Provide"
 msgstr "提供"
 
@@ -4528,32 +4585,97 @@ msgstr "%s 剛剛播打給你,但你正與他人通話。"
 
 #. Translators: this is an "Info" label. It should be as short
 #. * as possible.
-#: ../src/empathy-call-window.c:1088 ../src/empathy-call-window.c:1111
+#: ../src/empathy-call-window.c:1173 ../src/empathy-call-window.c:1196
 msgid "i"
 msgstr "訊"
 
-#: ../src/empathy-call-window.c:2775
+#: ../src/empathy-call-window.c:2941
 msgid "On hold"
 msgstr "保留"
 
-#: ../src/empathy-call-window.c:2778
+#: ../src/empathy-call-window.c:2944
 msgid "Mute"
 msgstr "靜音"
 
-#: ../src/empathy-call-window.c:2780
+#: ../src/empathy-call-window.c:2946
 msgid "Duration"
 msgstr "時間"
 
 #. Translators: 'status - minutes:seconds' the caller has been connected
-#: ../src/empathy-call-window.c:2783
+#: ../src/empathy-call-window.c:2949
 #, c-format
 msgid "%s — %d:%02dm"
 msgstr "%s — %d:%02dm"
 
+#: ../src/empathy-call-window.c:3219
+#, c-format
+msgid "Your current balance is %s."
+msgstr "你目前的餘額為 %s。"
+
+#: ../src/empathy-call-window.c:3223
+msgid "Sorry, you don’t have enough credit for that call."
+msgstr "很抱歉,你的存額不足以進行該通話。"
+
+#: ../src/empathy-call-window.c:3225
+msgid "Top Up"
+msgstr "加值"
+
 #: ../libempathy-gtk/empathy-search-bar.c:243
 msgid "_Match case"
 msgstr "比對大小寫(_M)"
 
+#~ msgid "Empathy has migrated butterfly logs"
+#~ msgstr "Empathy 已轉移 butterfly 日誌"
+
+#~ msgid "Whether Empathy has migrated butterfly logs."
+#~ msgstr "Empathy 是否應轉移 butterfly 日誌。"
+
+#~ msgid "Ungrouped"
+#~ msgstr "未群組"
+
+#~ msgid "Favorite People"
+#~ msgstr "喜好的人"
+
+#~ msgid "Select a contact"
+#~ msgstr "選擇連絡人"
+
+#~ msgid "Contact ID:"
+#~ msgstr "連絡人 ID:"
+
+#~ msgid "C_hat"
+#~ msgstr "聊天(_C)"
+
+#~ msgid "Send _Video"
+#~ msgstr "傳送視訊(_V)"
+
+#~ msgid "C_all"
+#~ msgstr "通話(_A)"
+
+#~ msgid "Set your presence and current status"
+#~ msgstr "設定您的上線與目前的狀態"
+
+#~ msgid "The selected contact cannot receive files."
+#~ msgstr "所選的聯絡人無法接收檔案。"
+
+#~ msgid "The selected contact is offline."
+#~ msgstr "所選的聯絡人已經離線。"
+
+#~ msgctxt "encoding video codec"
+#~ msgid "Unknown"
+#~ msgstr "未知"
+
+#~ msgctxt "encoding audio codec"
+#~ msgid "Unknown"
+#~ msgstr "未知"
+
+#~ msgctxt "decoding video codec"
+#~ msgid "Unknown"
+#~ msgstr "未知"
+
+#~ msgctxt "decoding audio codec"
+#~ msgid "Unknown"
+#~ msgstr "未知"
+
 #~ msgid "Find Next"
 #~ msgstr "尋找下一個"
 
@@ -4715,9 +4837,6 @@ msgstr "比對大小寫(_M)"
 #~ "fails"
 #~ msgstr "嘗試匯入任何認識的帳號,若失敗時則顯示協助"
 
-#~ msgid "Show the accounts dialog"
-#~ msgstr "顯示帳號對話盒"
-
 #~ msgid "The error message was: <span style=\"italic\">%s</span>"
 #~ msgstr "錯誤訊息為: <span style=\"italic\">%s</span>"
 
index fad653e9c4c410afee568d7f79b7f8fc29355d52..26d7e05aa0c75a1953517b04756a5b35254d301b 100644 (file)
@@ -7,10 +7,10 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: empathy 3.1.92\n"
+"Project-Id-Version: empathy 3.3.1\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-09-25 14:31+0800\n"
-"PO-Revision-Date: 2011-09-23 19:23+0800\n"
+"POT-Creation-Date: 2011-11-12 19:09+0800\n"
+"PO-Revision-Date: 2011-11-12 13:49+0800\n"
 "Last-Translator: Cheng-Chia Tseng <pswo10680@gmail.com>\n"
 "Language-Team: Chinese (traditional) <chinese-l10n@googlegroups.com>\n"
 "Language: zh_TW\n"
@@ -87,59 +87,59 @@ msgid "Contact list sort criterion"
 msgstr "連絡人清單排序準則"
 
 #: ../data/org.gnome.Empathy.gschema.xml.in.h:13
+msgid "D-Bus object path of the last account selected to join a room."
+msgstr "上次要加入聊天室所選取帳號的 D-Bus 物件路徑。"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:14
 msgid "Default camera device to use in video calls, e.g. /dev/video0."
 msgstr "要用於視訊通話的預設攝影機裝置,例:/dev/video0。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:14
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:15
 msgid "Default directory to select an avatar image from"
 msgstr "用來選擇大頭貼圖片的預設目錄"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:15
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:16
 msgid "Disable popup notifications when away"
 msgstr "當狀態為離開時停用彈出式通知"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:16
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:17
 msgid "Disable sounds when away"
 msgstr "當狀態為離開時停用音效"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:17
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:18
 msgid "Display incoming events in the status area"
 msgstr "在狀態區域顯示收到事件"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:18
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:19
 msgid ""
 "Display incoming events in the status area. If false, present them to the "
 "user immediately."
 msgstr "在狀態區域顯示收到事件。如果不啟用的話,收到事件會直接呈現給使用者。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:19
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:20
 msgid "Echo cancellation support"
 msgstr "回音消除支援"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:20
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:21
 msgid "Empathy can publish the user's location"
 msgstr "Empathy 可以發布使用者的位置"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:21
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:22
 msgid "Empathy can use the GPS to guess the location"
 msgstr "Empathy 可以利用 GPS 來推測位置"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:22
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:23
 msgid "Empathy can use the cellular network to guess the location"
 msgstr "Empathy 可以利用行動電話網路基地臺來推測位置"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:23
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:24
 msgid "Empathy can use the network to guess the location"
 msgstr "Empathy 可以利用網路來推測位置"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:24
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:25
 msgid "Empathy default download folder"
 msgstr "Empathy 預設下載資料夾"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:25
-msgid "Empathy has migrated butterfly logs"
-msgstr "Empathy 已轉移 butterfly 日誌"
-
 #: ../data/org.gnome.Empathy.gschema.xml.in.h:26
 msgid "Empathy should auto-away when idle"
 msgstr "Empathy 當閒置時應該自動設為離開"
@@ -177,150 +177,150 @@ msgid "Hide the main window."
 msgstr "隱藏主視窗。"
 
 #: ../data/org.gnome.Empathy.gschema.xml.in.h:35
+msgid "Last account selected in Join Room dialog"
+msgstr "上次在「參加聊天室」對話盒選取的帳號"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:36
 msgid "Nick completed character"
 msgstr "暱稱補齊字元"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:36
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:37
 msgid "Open new chats in separate windows"
 msgstr "在個別視窗開啟新的聊天"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:37
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:38
 msgid "Path of the Adium theme to use"
 msgstr "要使用的 Adium 佈景主題路徑"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:38
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:39
 msgid "Path of the Adium theme to use if the theme used for chat is Adium."
 msgstr "如果聊天室使用的主題是 Adium 時要使用的 Adium 佈景主題路徑。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:39
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:40
 msgid "Play a sound for incoming messages"
 msgstr "收到訊息時播放音效"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:40
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:41
 msgid "Play a sound for new conversations"
 msgstr "當開啟新的談話時播放音效"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:41
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:42
 msgid "Play a sound for outgoing messages"
 msgstr "送出訊息時播放音效"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:42
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:43
 msgid "Play a sound when a contact logs in"
 msgstr "當連絡人登入時播放音效"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:43
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:44
 msgid "Play a sound when a contact logs out"
 msgstr "當有連絡人登出時播放音效"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:44
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:45
 msgid "Play a sound when we log in"
 msgstr "當我們登入時播放音效"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:45
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:46
 msgid "Play a sound when we log out"
 msgstr "當我們登出時播放音效"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:46
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:47
 msgid "Pop up notifications if the chat isn't focused"
 msgstr "如果聊天視窗失去焦點則彈出通知"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:47
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:48
 msgid "Pop up notifications when a contact logs in"
 msgstr "當連絡人登入時彈出通知"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:48
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:49
 msgid "Pop up notifications when a contact logs out"
 msgstr "當連絡人登出時彈出通知"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:49
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:50
 msgid "Position the camera preview should be during a call."
 msgstr "通話時攝影機預覽應該擺放的位置。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:50
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:51
 msgid "Show Balance in contact list"
 msgstr "於聯絡人清單內顯示餘額"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:51
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:52
 msgid "Show avatars"
 msgstr "顯示大頭貼"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:52
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:53
 msgid "Show contact list in rooms"
 msgstr "在聊天室顯示連絡人清單"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:53
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:54
 msgid "Show hint about closing the main window"
 msgstr "關閉主視窗時顯示提示"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:54
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:55
 msgid "Show offline contacts"
 msgstr "顯示離線連絡人"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:55
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:56
 msgid "Show protocols"
 msgstr "顯示協定"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:56
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:57
 msgid "Spell checking languages"
 msgstr "拼字檢查的語言"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:57
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:58
 msgid "The default folder to save file transfers in."
 msgstr "用來儲存檔案傳輸接收檔案的預設資料夾。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:58
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:59
 msgid "The last directory that an avatar image was chosen from."
 msgstr "上次選擇大頭貼圖片的目錄。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:59
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:60
 msgid "The position for the chat window side pane"
 msgstr "聊天視窗側窗格的位置"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:60
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:61
 msgid "The stored position (in pixels) of the chat window side pane."
 msgstr "聊天視窗側窗格的儲存位置 (單位為像素)。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:61
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:62
 msgid "The theme that is used to display the conversation in chat windows."
 msgstr "用來顯示在聊天視窗中談話的佈景主題。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:62
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:63
 msgid ""
 "The theme variant that is used to display the conversation in chat windows."
 msgstr "用來在聊天視窗顯示談話的佈景主題樣式。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:63
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:64
 msgid "Use graphical smileys"
 msgstr "使用圖片式表情符號"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:64
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:65
 msgid "Use notification sounds"
 msgstr "使用通知音效"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:65
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:66
 msgid "Use theme for chat rooms"
 msgstr "在聊天室使用佈景主題"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:66
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:67
 msgid "Whether Empathy can publish the user's location to their contacts."
 msgstr "Empathy 是否要將使用者的位置發布給他的連絡人。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:67
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:68
 msgid "Whether Empathy can use the GPS to guess the location."
 msgstr "Empathy 是否使用 GPS 來推測位置。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:68
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:69
 msgid "Whether Empathy can use the cellular network to guess the location."
 msgstr "Empathy 是否使用行動電話網路來推測位置。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:69
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:70
 msgid "Whether Empathy can use the network to guess the location."
 msgstr "Empathy 是否使用網路來推測位置。"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:70
-msgid "Whether Empathy has migrated butterfly logs."
-msgstr "Empathy 是否應轉移 butterfly 日誌。"
-
 #: ../data/org.gnome.Empathy.gschema.xml.in.h:71
 msgid "Whether Empathy should automatically log into your accounts on startup."
 msgstr "Empathy 是否應在啟動時自動登入您的帳號。"
@@ -473,23 +473,23 @@ msgstr "管理訊息與 VoIP 帳號"
 
 #. Tweak the dialog
 #: ../data/empathy-accounts.desktop.in.in.h:2
-#: ../src/empathy-accounts-dialog.c:2324
+#: ../src/empathy-accounts-dialog.c:2312
 msgid "Messaging and VoIP Accounts"
 msgstr "訊息與 VoIP 帳號"
 
-#: ../libempathy/empathy-ft-handler.c:825
+#: ../libempathy/empathy-ft-handler.c:838
 msgid "File transfer completed, but the file was corrupted"
 msgstr "檔案傳輸完畢,但是檔案已損毀"
 
-#: ../libempathy/empathy-ft-handler.c:1111
+#: ../libempathy/empathy-ft-handler.c:1124
 msgid "File transfer not supported by remote contact"
 msgstr "遠端連絡人不支援檔案傳輸"
 
-#: ../libempathy/empathy-ft-handler.c:1167
+#: ../libempathy/empathy-ft-handler.c:1180
 msgid "The selected file is not a regular file"
 msgstr "選取的檔案不是正規的檔案"
 
-#: ../libempathy/empathy-ft-handler.c:1176
+#: ../libempathy/empathy-ft-handler.c:1189
 msgid "The selected file is empty"
 msgstr "選取的檔案是空白的"
 
@@ -509,35 +509,35 @@ msgstr "已播打 %s"
 msgid "Call from %s"
 msgstr "%s 的來電"
 
-#: ../libempathy/empathy-tp-file.c:268
+#: ../libempathy/empathy-tp-file.c:258
 msgid "Socket type not supported"
 msgstr "Socket 類型不支援"
 
-#: ../libempathy/empathy-tp-file.c:387
+#: ../libempathy/empathy-tp-file.c:377
 msgid "No reason was specified"
 msgstr "沒有指定原因"
 
-#: ../libempathy/empathy-tp-file.c:390
+#: ../libempathy/empathy-tp-file.c:380
 msgid "The change in state was requested"
 msgstr "已要求變更狀態"
 
-#: ../libempathy/empathy-tp-file.c:393
+#: ../libempathy/empathy-tp-file.c:383
 msgid "You canceled the file transfer"
 msgstr "您已取消檔案傳輸"
 
-#: ../libempathy/empathy-tp-file.c:396
+#: ../libempathy/empathy-tp-file.c:386
 msgid "The other participant canceled the file transfer"
 msgstr "其他的參與者取消了檔案傳輸"
 
-#: ../libempathy/empathy-tp-file.c:399
+#: ../libempathy/empathy-tp-file.c:389
 msgid "Error while trying to transfer the file"
 msgstr "嘗試傳輸檔案時發生錯誤"
 
-#: ../libempathy/empathy-tp-file.c:402
+#: ../libempathy/empathy-tp-file.c:392
 msgid "The other participant is unable to transfer the file"
 msgstr "其他的參與者無法傳輸該檔案"
 
-#: ../libempathy/empathy-tp-file.c:405 ../libempathy/empathy-utils.c:312
+#: ../libempathy/empathy-tp-file.c:395 ../libempathy/empathy-utils.c:312
 msgid "Unknown reason"
 msgstr "不明原因"
 
@@ -577,6 +577,7 @@ msgstr "狀態設為離線"
 
 #: ../libempathy/empathy-utils.c:288 ../libempathy/empathy-utils.c:322
 #: ../libempathy-gtk/empathy-call-utils.c:49
+#: ../libempathy-gtk/empathy-new-message-dialog.c:82
 msgid "Network error"
 msgstr "網路錯誤"
 
@@ -676,20 +677,23 @@ msgid ""
 "chain, exceed the limits imposed by the cryptography library"
 msgstr "伺服器憑證的長度,或是伺服器憑證鏈的深度超過密碼函式庫所能處理的範圍"
 
-#: ../libempathy/empathy-utils.c:529
-#: ../libempathy-gtk/empathy-contact-list-store.h:73
+#: ../libempathy/empathy-utils.c:372
+msgid "Your software is too old"
+msgstr "您的軟體過舊"
+
+#: ../libempathy/empathy-utils.c:531
 msgid "People Nearby"
 msgstr "附近的人"
 
-#: ../libempathy/empathy-utils.c:534
+#: ../libempathy/empathy-utils.c:536
 msgid "Yahoo! Japan"
 msgstr "Yahoo! 日本"
 
-#: ../libempathy/empathy-utils.c:563
+#: ../libempathy/empathy-utils.c:565
 msgid "Google Talk"
 msgstr "Google Talk"
 
-#: ../libempathy/empathy-utils.c:564
+#: ../libempathy/empathy-utils.c:566
 msgid "Facebook Chat"
 msgstr "Facebook 聊天"
 
@@ -733,7 +737,7 @@ msgstr[0] "%d 個月以前"
 msgid "in the future"
 msgstr "未來"
 
-#: ../libempathy-gtk/empathy-account-chooser.c:540
+#: ../libempathy-gtk/empathy-account-chooser.c:688
 msgid "All accounts"
 msgstr "所有帳號"
 
@@ -756,58 +760,58 @@ msgstr "伺服器"
 msgid "Port"
 msgstr "連接埠"
 
-#: ../libempathy-gtk/empathy-account-widget.c:769
-#: ../libempathy-gtk/empathy-account-widget.c:826
+#: ../libempathy-gtk/empathy-account-widget.c:776
+#: ../libempathy-gtk/empathy-account-widget.c:828
 #, c-format
 msgid "%s:"
 msgstr "%s:"
 
-#: ../libempathy-gtk/empathy-account-widget.c:1192
+#: ../libempathy-gtk/empathy-account-widget.c:1182
 msgid "My Web Accounts"
 msgstr "我的網路帳號"
 
-#: ../libempathy-gtk/empathy-account-widget.c:1208
+#: ../libempathy-gtk/empathy-account-widget.c:1199
 #, c-format
 msgid "The account %s is edited via %s."
 msgstr "%s 帳號已透過 %s 修改。"
 
-#: ../libempathy-gtk/empathy-account-widget.c:1214
+#: ../libempathy-gtk/empathy-account-widget.c:1205
 #, c-format
 msgid "The account %s cannot be edited in Empathy."
 msgstr "%s 帳號無法於 Empathy 內修改。"
 
-#: ../libempathy-gtk/empathy-account-widget.c:1233
+#: ../libempathy-gtk/empathy-account-widget.c:1224
 msgid "Launch My Web Accounts"
 msgstr "啟動我的網路帳號"
 
 #. general handler
-#: ../libempathy-gtk/empathy-account-widget.c:1241
+#: ../libempathy-gtk/empathy-account-widget.c:1232
 #, c-format
 msgid "Edit %s"
 msgstr "編輯 %s"
 
-#: ../libempathy-gtk/empathy-account-widget.c:1591
+#: ../libempathy-gtk/empathy-account-widget.c:1582
 #: ../libempathy-gtk/empathy-account-widget-irc.ui.h:11
 msgid "Username:"
 msgstr "使用者名稱:"
 
-#: ../libempathy-gtk/empathy-account-widget.c:1909
+#: ../libempathy-gtk/empathy-account-widget.c:1900
 msgid "A_pply"
 msgstr "套用(_A)"
 
-#: ../libempathy-gtk/empathy-account-widget.c:1939
+#: ../libempathy-gtk/empathy-account-widget.c:1930
 msgid "L_og in"
 msgstr "登入(_O)"
 
-#: ../libempathy-gtk/empathy-account-widget.c:2013
+#: ../libempathy-gtk/empathy-account-widget.c:2004
 msgid "This account already exists on the server"
 msgstr "此帳號已經存在這個伺服器上"
 
-#: ../libempathy-gtk/empathy-account-widget.c:2016
+#: ../libempathy-gtk/empathy-account-widget.c:2007
 msgid "Create a new account on the server"
 msgstr "在這個伺服器上建立新的帳號"
 
-#: ../libempathy-gtk/empathy-account-widget.c:2208
+#: ../libempathy-gtk/empathy-account-widget.c:2199
 msgid "Ca_ncel"
 msgstr "取消(_N)"
 
@@ -816,19 +820,19 @@ msgstr "取消(_N)"
 #. * like: "MyUserName on freenode".
 #. * You should reverse the order of these arguments if the
 #. * server should come before the login id in your locale.
-#: ../libempathy-gtk/empathy-account-widget.c:2486
+#: ../libempathy-gtk/empathy-account-widget.c:2477
 #, c-format
 msgid "%1$s on %2$s"
 msgstr "%2$s 上的 %1$s"
 
 #. To translators: The parameter is the protocol name. The resulting
 #. * string will be something like: "Jabber Account"
-#: ../libempathy-gtk/empathy-account-widget.c:2512
+#: ../libempathy-gtk/empathy-account-widget.c:2503
 #, c-format
 msgid "%s Account"
 msgstr "%s 帳號"
 
-#: ../libempathy-gtk/empathy-account-widget.c:2516
+#: ../libempathy-gtk/empathy-account-widget.c:2507
 msgid "New account"
 msgstr "新增帳號"
 
@@ -1199,7 +1203,7 @@ msgid "STUN Server:"
 msgstr "STUN 伺服器:"
 
 #: ../libempathy-gtk/empathy-account-widget-sip.ui.h:19
-#: ../libempathy-gtk/empathy-contact-widget.c:347
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:112
 msgid "Server:"
 msgstr "伺服器:"
 
@@ -1281,7 +1285,7 @@ msgid "Click to enlarge"
 msgstr "請按這裡放大"
 
 #: ../libempathy-gtk/empathy-call-utils.c:44
-#: ../libempathy-gtk/empathy-call-utils.c:60
+#: ../libempathy-gtk/empathy-call-utils.c:62
 msgid "There was an error starting the call"
 msgstr "啟動通話時發生錯誤"
 
@@ -1301,62 +1305,66 @@ msgstr "指定的聯絡人無效"
 msgid "Emergency calls are not supported on this protocol"
 msgstr "此協定不支援緊急通話功能"
 
-#: ../libempathy-gtk/empathy-chat.c:704
+#: ../libempathy-gtk/empathy-call-utils.c:59
+msgid "You don't have enough credit in order to place this call"
+msgstr "您的存額不足以買下該通話。"
+
+#: ../libempathy-gtk/empathy-chat.c:706
 msgid "Failed to open private chat"
 msgstr "開啟私人聊天失敗"
 
-#: ../libempathy-gtk/empathy-chat.c:765
+#: ../libempathy-gtk/empathy-chat.c:764
 msgid "Topic not supported on this conversation"
 msgstr "此談話的主題不被支援"
 
-#: ../libempathy-gtk/empathy-chat.c:771
+#: ../libempathy-gtk/empathy-chat.c:770
 msgid "You are not allowed to change the topic"
 msgstr "您不被允許變更這個主題"
 
-#: ../libempathy-gtk/empathy-chat.c:975
+#: ../libempathy-gtk/empathy-chat.c:971
 #, c-format
 msgid "“%s” is not a valid contact ID"
 msgstr "「%s」不是有效的連絡人 ID"
 
-#: ../libempathy-gtk/empathy-chat.c:1060
+#: ../libempathy-gtk/empathy-chat.c:1066
 msgid "/clear: clear all messages from the current conversation"
 msgstr "/clear:清除目前談話的所有訊息"
 
-#: ../libempathy-gtk/empathy-chat.c:1063
+#: ../libempathy-gtk/empathy-chat.c:1069
 msgid "/topic <topic>: set the topic of the current conversation"
 msgstr "/topic <主題>:設置目前談話的主題"
 
-#: ../libempathy-gtk/empathy-chat.c:1066
+#: ../libempathy-gtk/empathy-chat.c:1072
 msgid "/join <chat room ID>: join a new chat room"
 msgstr "/join <聊天室 ID>:參加新的聊天室"
 
-#: ../libempathy-gtk/empathy-chat.c:1069
+#: ../libempathy-gtk/empathy-chat.c:1075
 msgid "/j <chat room ID>: join a new chat room"
 msgstr "/j <聊天室 ID>:參加新的聊天室"
 
-#: ../libempathy-gtk/empathy-chat.c:1073
+#: ../libempathy-gtk/empathy-chat.c:1079
 msgid ""
 "/part [<chat room ID>] [<reason>]: leave the chat room, by default the "
 "current one"
 msgstr "/part [<聊天室 ID>] [<原因>]:離開聊天室,預設為目前的聊天室"
 
-#: ../libempathy-gtk/empathy-chat.c:1077
+#: ../libempathy-gtk/empathy-chat.c:1083
 msgid "/query <contact ID> [<message>]: open a private chat"
 msgstr "/query <聯絡人 ID> [<訊息>]:開啟私人聊天"
 
-#: ../libempathy-gtk/empathy-chat.c:1080
+#: ../libempathy-gtk/empathy-chat.c:1086
 msgid "/msg <contact ID> <message>: open a private chat"
 msgstr "/msg <聯絡人 ID> <訊息>:開啟私人聊天"
 
-#: ../libempathy-gtk/empathy-chat.c:1083
+#: ../libempathy-gtk/empathy-chat.c:1089
 msgid "/nick <nickname>: change your nickname on the current server"
 msgstr "/nick <暱稱>:變更在目前伺服器上的您的暱稱"
 
-#: ../libempathy-gtk/empathy-chat.c:1086
+#: ../libempathy-gtk/empathy-chat.c:1092
 msgid "/me <message>: send an ACTION message to the current conversation"
 msgstr "/me <訊息>:送出一個 ACTION 訊息到目前的談話中"
 
-#: ../libempathy-gtk/empathy-chat.c:1089
+#: ../libempathy-gtk/empathy-chat.c:1095
 msgid ""
 "/say <message>: send <message> to the current conversation. This is used to "
 "send a message starting with a '/'. For example: \"/say /join is used to "
@@ -1365,11 +1373,11 @@ msgstr ""
 "/say <訊息>:送出 <訊息> 到目前的談話中。這用於傳送以「/」開頭的訊息。舉例來"
 "說:「/say /join 是用來參加新的聊天室」"
 
-#: ../libempathy-gtk/empathy-chat.c:1094
+#: ../libempathy-gtk/empathy-chat.c:1100
 msgid "/whois <contact ID>: display information about a contact"
 msgstr "/whois <聯絡人 ID>:顯示聯絡人的相關資訊"
 
-#: ../libempathy-gtk/empathy-chat.c:1097
+#: ../libempathy-gtk/empathy-chat.c:1103
 msgid ""
 "/help [<command>]: show all supported commands. If <command> is defined, "
 "show its usage."
@@ -1377,113 +1385,120 @@ msgstr ""
 "/help [<命令>]:顯示所有支援的指令。如果有定義這個 <命令> 的話,便顯示它的用"
 "法。"
 
-#: ../libempathy-gtk/empathy-chat.c:1114
+#: ../libempathy-gtk/empathy-chat.c:1122
 #, c-format
 msgid "Usage: %s"
 msgstr "用法:%s"
 
-#: ../libempathy-gtk/empathy-chat.c:1159
+#: ../libempathy-gtk/empathy-chat.c:1167
 msgid "Unknown command"
 msgstr "未知的命令"
 
-#: ../libempathy-gtk/empathy-chat.c:1285
+#: ../libempathy-gtk/empathy-chat.c:1293
 msgid "Unknown command; see /help for the available commands"
 msgstr "未知的指令;請參見 /help 以取得可用的指令"
 
-#. translators: error used when user doesn't have enough credit on his
-#. * account to send the message.
-#: ../libempathy-gtk/empathy-chat.c:1455
+#: ../libempathy-gtk/empathy-chat.c:1457
 msgid "insufficient balance to send message"
 msgstr "餘額不足以傳送訊息"
 
-#: ../libempathy-gtk/empathy-chat.c:1457
+#: ../libempathy-gtk/empathy-chat.c:1461 ../libempathy-gtk/empathy-chat.c:1475
+#: ../libempathy-gtk/empathy-chat.c:1538
+#, c-format
+msgid "Error sending message '%s': %s"
+msgstr "傳送訊息「%s」時發生錯誤:%s"
+
+#: ../libempathy-gtk/empathy-chat.c:1463 ../libempathy-gtk/empathy-chat.c:1480
+#: ../libempathy-gtk/empathy-chat.c:1542
+#, c-format
+msgid "Error sending message: %s"
+msgstr "傳送訊息時發生錯誤:%s"
+
+#. translators: error used when user doesn't have enough credit on his
+#. * account to send the message.
+#: ../libempathy-gtk/empathy-chat.c:1469
+#, c-format
+msgid "insufficient balance to send message. <a href='%s'>Top up</a>."
+msgstr "餘額不足以傳送訊息。<a href='%s'>加值</a>。"
+
+#: ../libempathy-gtk/empathy-chat.c:1509
 msgid "not capable"
 msgstr "無法"
 
-#: ../libempathy-gtk/empathy-chat.c:1464
+#: ../libempathy-gtk/empathy-chat.c:1516
 msgid "offline"
 msgstr "離線"
 
-#: ../libempathy-gtk/empathy-chat.c:1467
+#: ../libempathy-gtk/empathy-chat.c:1519
 msgid "invalid contact"
 msgstr "無效的連絡人"
 
-#: ../libempathy-gtk/empathy-chat.c:1470
+#: ../libempathy-gtk/empathy-chat.c:1522
 msgid "permission denied"
 msgstr "權限被拒絕"
 
-#: ../libempathy-gtk/empathy-chat.c:1473
+#: ../libempathy-gtk/empathy-chat.c:1525
 msgid "too long message"
 msgstr "太長的訊息"
 
-#: ../libempathy-gtk/empathy-chat.c:1476
+#: ../libempathy-gtk/empathy-chat.c:1528
 msgid "not implemented"
 msgstr "未實作"
 
-#: ../libempathy-gtk/empathy-chat.c:1480
+#: ../libempathy-gtk/empathy-chat.c:1532
 msgid "unknown"
 msgstr "不明"
 
-#: ../libempathy-gtk/empathy-chat.c:1486
-#, c-format
-msgid "Error sending message '%s': %s"
-msgstr "傳送訊息「%s」時發生錯誤:%s"
-
-#: ../libempathy-gtk/empathy-chat.c:1490
-#, c-format
-msgid "Error sending message: %s"
-msgstr "傳送訊息時發生錯誤:%s"
-
-#: ../libempathy-gtk/empathy-chat.c:1551 ../src/empathy-chat-window.c:761
+#: ../libempathy-gtk/empathy-chat.c:1599 ../src/empathy-chat-window.c:761
 msgid "Topic:"
 msgstr "主題:"
 
-#: ../libempathy-gtk/empathy-chat.c:1563
+#: ../libempathy-gtk/empathy-chat.c:1611
 #, c-format
 msgid "Topic set to: %s"
 msgstr "主題設定為: %s"
 
-#: ../libempathy-gtk/empathy-chat.c:1565
+#: ../libempathy-gtk/empathy-chat.c:1613
 msgid "No topic defined"
 msgstr "尚未定義主題"
 
-#: ../libempathy-gtk/empathy-chat.c:2074
+#: ../libempathy-gtk/empathy-chat.c:2126
 msgid "(No Suggestions)"
 msgstr "(沒有建議)"
 
 #. translators: %s is the selected word
-#: ../libempathy-gtk/empathy-chat.c:2142
+#: ../libempathy-gtk/empathy-chat.c:2194
 #, c-format
 msgid "Add '%s' to Dictionary"
 msgstr "加入「%s」至字典"
 
 #. translators: first %s is the selected word,
 #. * second %s is the language name of the target dictionary
-#: ../libempathy-gtk/empathy-chat.c:2179
+#: ../libempathy-gtk/empathy-chat.c:2231
 #, c-format
 msgid "Add '%s' to %s Dictionary"
 msgstr "加入「%s」至 %s 字典"
 
-#: ../libempathy-gtk/empathy-chat.c:2249
+#: ../libempathy-gtk/empathy-chat.c:2301
 msgid "Insert Smiley"
 msgstr "插入表情符號"
 
 #. send button
-#: ../libempathy-gtk/empathy-chat.c:2267
-#: ../libempathy-gtk/empathy-ui-utils.c:1839
+#: ../libempathy-gtk/empathy-chat.c:2319
+#: ../libempathy-gtk/empathy-ui-utils.c:1867
 msgid "_Send"
 msgstr "傳送(_S)"
 
 #. Spelling suggestions
-#: ../libempathy-gtk/empathy-chat.c:2321
+#: ../libempathy-gtk/empathy-chat.c:2376
 msgid "_Spelling Suggestions"
 msgstr "拼字建議(_S)"
 
-#: ../libempathy-gtk/empathy-chat.c:2410
+#: ../libempathy-gtk/empathy-chat.c:2465
 msgid "Failed to retrieve recent logs"
 msgstr "無法取得最近的日誌"
 
-#: ../libempathy-gtk/empathy-chat.c:2547
+#: ../libempathy-gtk/empathy-chat.c:2602
 #, c-format
 msgid "%s has disconnected"
 msgstr "%s 已斷線"
@@ -1491,12 +1506,12 @@ msgstr "%s 已斷線"
 #. translators: reverse the order of these arguments
 #. * if the kicked should come before the kicker in your locale.
 #.
-#: ../libempathy-gtk/empathy-chat.c:2554
+#: ../libempathy-gtk/empathy-chat.c:2609
 #, c-format
 msgid "%1$s was kicked by %2$s"
 msgstr "%1$s 被 %2$s 踢出去"
 
-#: ../libempathy-gtk/empathy-chat.c:2557
+#: ../libempathy-gtk/empathy-chat.c:2612
 #, c-format
 msgid "%s was kicked"
 msgstr "%s 被踢出"
@@ -1504,17 +1519,17 @@ msgstr "%s 被踢出"
 #. translators: reverse the order of these arguments
 #. * if the banned should come before the banner in your locale.
 #.
-#: ../libempathy-gtk/empathy-chat.c:2565
+#: ../libempathy-gtk/empathy-chat.c:2620
 #, c-format
 msgid "%1$s was banned by %2$s"
 msgstr "%1$s 被 %2$s 設為黑名單"
 
-#: ../libempathy-gtk/empathy-chat.c:2568
+#: ../libempathy-gtk/empathy-chat.c:2623
 #, c-format
 msgid "%s was banned"
 msgstr "%s 被設為黑名單"
 
-#: ../libempathy-gtk/empathy-chat.c:2572
+#: ../libempathy-gtk/empathy-chat.c:2627
 #, c-format
 msgid "%s has left the room"
 msgstr "%s 已經離開此聊天室"
@@ -1524,17 +1539,17 @@ msgstr "%s 已經離開此聊天室"
 #. * given by the user living the room. If this poses a problem,
 #. * please let us know. :-)
 #.
-#: ../libempathy-gtk/empathy-chat.c:2581
+#: ../libempathy-gtk/empathy-chat.c:2636
 #, c-format
 msgid " (%s)"
 msgstr " (%s)"
 
-#: ../libempathy-gtk/empathy-chat.c:2606
+#: ../libempathy-gtk/empathy-chat.c:2661
 #, c-format
 msgid "%s has joined the room"
 msgstr "%s 已經參加此聊天室"
 
-#: ../libempathy-gtk/empathy-chat.c:2631
+#: ../libempathy-gtk/empathy-chat.c:2686
 #, c-format
 msgid "%s is now known as %s"
 msgstr "%s 現在被稱為 %s"
@@ -1542,88 +1557,87 @@ msgstr "%s 現在被稱為 %s"
 #. We don't know if the incoming call has been accepted or not, so we
 #. * assume it hasn't and if it has, we'll set the proper status when
 #. * we get the new handler.
-#: ../libempathy-gtk/empathy-chat.c:2784
-#: ../src/empathy-streamed-media-window.c:1894
-#: ../src/empathy-event-manager.c:1240 ../src/empathy-call-window.c:1432
-#: ../src/empathy-call-window.c:1482 ../src/empathy-call-window.c:2527
+#: ../libempathy-gtk/empathy-chat.c:2839
+#: ../src/empathy-streamed-media-window.c:1886
+#: ../src/empathy-event-manager.c:1260 ../src/empathy-call-window.c:1539
+#: ../src/empathy-call-window.c:1589 ../src/empathy-call-window.c:2635
 msgid "Disconnected"
 msgstr "已斷線"
 
 #. Add message
-#: ../libempathy-gtk/empathy-chat.c:3428
+#: ../libempathy-gtk/empathy-chat.c:3485
 msgid "Would you like to store this password?"
 msgstr "您想要儲存此密碼?"
 
-#: ../libempathy-gtk/empathy-chat.c:3434
+#: ../libempathy-gtk/empathy-chat.c:3491
 msgid "Remember"
 msgstr "記住"
 
-#: ../libempathy-gtk/empathy-chat.c:3444
+#: ../libempathy-gtk/empathy-chat.c:3501
 msgid "Not now"
 msgstr "現在不要"
 
-#: ../libempathy-gtk/empathy-chat.c:3488
+#: ../libempathy-gtk/empathy-chat.c:3545
 msgid "Retry"
 msgstr "重試"
 
-#: ../libempathy-gtk/empathy-chat.c:3492
+#: ../libempathy-gtk/empathy-chat.c:3549
 msgid "Wrong password; please try again:"
 msgstr "密碼錯誤;請再試一次:"
 
 #. Add message
-#: ../libempathy-gtk/empathy-chat.c:3622
+#: ../libempathy-gtk/empathy-chat.c:3679
 msgid "This room is protected by a password:"
 msgstr "此聊天室已被密碼保護:"
 
-#: ../libempathy-gtk/empathy-chat.c:3649
+#: ../libempathy-gtk/empathy-chat.c:3706
 msgid "Join"
 msgstr "參加"
 
-#: ../libempathy-gtk/empathy-chat.c:3851 ../src/empathy-event-manager.c:1261
+#: ../libempathy-gtk/empathy-chat.c:3894 ../src/empathy-event-manager.c:1281
 msgid "Connected"
 msgstr "成功連線"
 
-#: ../libempathy-gtk/empathy-chat.c:3906
+#: ../libempathy-gtk/empathy-chat.c:3949
 msgid "Conversation"
 msgstr "談話"
 
 #. Translators: this string is a something like
 #. * "Escher Cat (SMS)"
-#: ../libempathy-gtk/empathy-chat.c:3911
+#: ../libempathy-gtk/empathy-chat.c:3954
 #, c-format
 msgid "%s (SMS)"
 msgstr "%s (SMS)"
 
-#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:424
+#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:265
 msgid "Unknown or invalid identifier"
 msgstr "未知或無效的識別身分"
 
-#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:426
+#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:267
 msgid "Contact blocking temporarily unavailable"
 msgstr "聯絡人封鎖暫時無法使用"
 
-#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:428
+#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:269
 msgid "Contact blocking unavailable"
 msgstr "聯絡人封鎖無法使用"
 
-#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:430
+#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:271
 msgid "Permission Denied"
 msgstr "已拒絕授權"
 
-#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:434
+#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:275
 msgid "Could not block contact"
 msgstr "無法封鎖聯絡人"
 
-#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:774
+#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:622
 msgid "Edit Blocked Contacts"
 msgstr "編輯封鎖的聯絡人"
 
 #. Account and Identifier
 #: ../libempathy-gtk/empathy-contact-blocking-dialog.ui.h:1
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:512
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:506
 #: ../libempathy-gtk/empathy-contact-widget.ui.h:2
-#: ../libempathy-gtk/empathy-individual-widget.c:1489
-#: ../libempathy-gtk/empathy-contact-selector-dialog.ui.h:1
+#: ../libempathy-gtk/empathy-individual-widget.c:1441
 #: ../src/empathy-chatrooms-window.ui.h:1
 #: ../src/empathy-new-chatroom-dialog.ui.h:1
 msgid "Account:"
@@ -1641,56 +1655,56 @@ msgid "Remove"
 msgstr "移除"
 
 #. Copy Link Address menu item
-#: ../libempathy-gtk/empathy-chat-text-view.c:320
+#: ../libempathy-gtk/empathy-chat-text-view.c:322
 #: ../libempathy-gtk/empathy-webkit-utils.c:277
 msgid "_Copy Link Address"
 msgstr "複製連結位址(_C)"
 
 #. Open Link menu item
-#: ../libempathy-gtk/empathy-chat-text-view.c:327
+#: ../libempathy-gtk/empathy-chat-text-view.c:329
 #: ../libempathy-gtk/empathy-webkit-utils.c:284
 msgid "_Open Link"
 msgstr "開啟連結(_O)"
 
 #. Translators: timestamp displayed between conversations in
 #. * chat windows (strftime format string)
-#: ../libempathy-gtk/empathy-chat-text-view.c:415
+#: ../libempathy-gtk/empathy-chat-text-view.c:417
 msgid "%A %B %d %Y"
 msgstr "%Y %B %d %A"
 
-#: ../libempathy-gtk/empathy-contact-dialogs.c:299
+#: ../libempathy-gtk/empathy-contact-dialogs.c:287
 #: ../libempathy-gtk/empathy-individual-edit-dialog.c:247
 msgid "Edit Contact Information"
 msgstr "編輯連絡人資訊"
 
-#: ../libempathy-gtk/empathy-contact-dialogs.c:350
+#: ../libempathy-gtk/empathy-contact-dialogs.c:338
 msgid "Personal Information"
 msgstr "個人資訊"
 
-#: ../libempathy-gtk/empathy-contact-dialogs.c:459
+#: ../libempathy-gtk/empathy-contact-dialogs.c:439
 #: ../libempathy-gtk/empathy-individual-dialogs.c:119
 msgid "New Contact"
 msgstr "新增連絡人"
 
-#: ../libempathy-gtk/empathy-contact-dialogs.c:533
-#: ../libempathy-gtk/empathy-individual-dialogs.c:200
+#: ../libempathy-gtk/empathy-contact-dialogs.c:508
+#: ../libempathy-gtk/empathy-individual-dialogs.c:198
 #, c-format
 msgid "Block %s?"
 msgstr "封鎖 %s?"
 
-#: ../libempathy-gtk/empathy-contact-dialogs.c:538
-#: ../libempathy-gtk/empathy-individual-dialogs.c:255
+#: ../libempathy-gtk/empathy-contact-dialogs.c:513
+#: ../libempathy-gtk/empathy-individual-dialogs.c:253
 #, c-format
 msgid "Are you sure you want to block '%s' from contacting you again?"
 msgstr "您確定想要封鎖「%s」讓他無法再與您聯絡嗎?"
 
-#: ../libempathy-gtk/empathy-contact-dialogs.c:543
-#: ../libempathy-gtk/empathy-individual-dialogs.c:277
+#: ../libempathy-gtk/empathy-contact-dialogs.c:518
+#: ../libempathy-gtk/empathy-individual-dialogs.c:275
 msgid "_Block"
 msgstr "封鎖(_B)"
 
-#: ../libempathy-gtk/empathy-contact-dialogs.c:559
-#: ../libempathy-gtk/empathy-individual-dialogs.c:286
+#: ../libempathy-gtk/empathy-contact-dialogs.c:536
+#: ../libempathy-gtk/empathy-individual-dialogs.c:284
 msgid "_Report this contact as abusive"
 msgid_plural "_Report these contacts as abusive"
 msgstr[0] "回報這些聯絡人濫用帳號(_R)"
@@ -1707,349 +1721,359 @@ msgstr "訂閱要求"
 msgid "_Block User"
 msgstr "封鎖使用者(_B)"
 
-#: ../libempathy-gtk/empathy-contact-list-store.h:71
-msgid "Ungrouped"
-msgstr "未群組"
-
-#: ../libempathy-gtk/empathy-contact-list-store.h:72
-msgid "Favorite People"
-msgstr "喜好的人"
-
-#: ../libempathy-gtk/empathy-contact-list-view.c:1986
-#: ../libempathy-gtk/empathy-individual-view.c:2376
+#: ../libempathy-gtk/empathy-contact-list-view.c:1935
+#: ../libempathy-gtk/empathy-individual-view.c:2375
 #, c-format
 msgid "Do you really want to remove the group '%s'?"
 msgstr "是否想要移除群組「%s」?"
 
-#: ../libempathy-gtk/empathy-contact-list-view.c:1988
-#: ../libempathy-gtk/empathy-individual-view.c:2379
+#: ../libempathy-gtk/empathy-contact-list-view.c:1937
+#: ../libempathy-gtk/empathy-individual-view.c:2378
 msgid "Removing group"
 msgstr "正在移除群組"
 
 #. Remove
-#: ../libempathy-gtk/empathy-contact-list-view.c:2037
-#: ../libempathy-gtk/empathy-contact-list-view.c:2114
-#: ../libempathy-gtk/empathy-individual-view.c:2434
-#: ../libempathy-gtk/empathy-individual-view.c:2637
+#: ../libempathy-gtk/empathy-contact-list-view.c:1986
+#: ../libempathy-gtk/empathy-contact-list-view.c:2059
+#: ../libempathy-gtk/empathy-individual-view.c:2433
+#: ../libempathy-gtk/empathy-individual-view.c:2636
 msgid "_Remove"
 msgstr "移除(_R)"
 
-#: ../libempathy-gtk/empathy-contact-list-view.c:2067
-#: ../libempathy-gtk/empathy-individual-view.c:2501
+#: ../libempathy-gtk/empathy-contact-list-view.c:2015
+#: ../libempathy-gtk/empathy-individual-view.c:2500
 #, c-format
 msgid "Do you really want to remove the contact '%s'?"
 msgstr "是否想要移除連絡人「%s」?"
 
-#: ../libempathy-gtk/empathy-contact-list-view.c:2069
-#: ../libempathy-gtk/empathy-individual-view.c:2522
+#: ../libempathy-gtk/empathy-contact-list-view.c:2017
+#: ../libempathy-gtk/empathy-individual-view.c:2521
 msgid "Removing contact"
 msgstr "正在移除連絡人"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:220
+#: ../libempathy-gtk/empathy-contact-menu.c:212
 #: ../src/empathy-main-window-menubar.ui.h:14
 msgid "_Add Contact…"
 msgstr "加入聯絡人(_A)…"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:300
+#: ../libempathy-gtk/empathy-contact-menu.c:287
 msgid "_Block Contact"
 msgstr "封鎖聯絡人(_B)"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:329
+#. add chat button
+#: ../libempathy-gtk/empathy-contact-menu.c:316
 #: ../libempathy-gtk/empathy-individual-menu.c:758
+#: ../libempathy-gtk/empathy-new-message-dialog.c:320
 #: ../src/empathy-main-window-menubar.ui.h:16
 msgid "_Chat"
 msgstr "聊天(_C)"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:361
-#: ../libempathy-gtk/empathy-individual-menu.c:849
+#: ../libempathy-gtk/empathy-contact-menu.c:348
+#: ../libempathy-gtk/empathy-individual-menu.c:850
 msgctxt "menu item"
 msgid "_Audio Call"
 msgstr "語音通話(_A)"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:394
-#: ../libempathy-gtk/empathy-individual-menu.c:894
+#: ../libempathy-gtk/empathy-contact-menu.c:381
+#: ../libempathy-gtk/empathy-individual-menu.c:895
 msgctxt "menu item"
 msgid "_Video Call"
 msgstr "視訊通話(_V)"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:440
-#: ../libempathy-gtk/empathy-individual-menu.c:947
+#: ../libempathy-gtk/empathy-contact-menu.c:427
+#: ../libempathy-gtk/empathy-individual-menu.c:948
 #: ../src/empathy-main-window-menubar.ui.h:27
 msgid "_Previous Conversations"
 msgstr "過往談話(_P)"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:462
-#: ../libempathy-gtk/empathy-individual-menu.c:988
+#: ../libempathy-gtk/empathy-contact-menu.c:449
+#: ../libempathy-gtk/empathy-individual-menu.c:989
 msgid "Send File"
 msgstr "傳送檔案"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:485
-#: ../libempathy-gtk/empathy-individual-menu.c:1030
+#: ../libempathy-gtk/empathy-contact-menu.c:472
+#: ../libempathy-gtk/empathy-individual-menu.c:1031
 msgid "Share My Desktop"
 msgstr "分享我的桌面"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:525
-#: ../libempathy-gtk/empathy-contact-widget.c:1886
-#: ../libempathy-gtk/empathy-individual-menu.c:1065
-#: ../libempathy-gtk/empathy-individual-widget.c:1372
-msgid "Favorite"
-msgstr "喜好"
-
-#: ../libempathy-gtk/empathy-contact-menu.c:554
-#: ../libempathy-gtk/empathy-individual-menu.c:1093
+#: ../libempathy-gtk/empathy-contact-menu.c:501
+#: ../libempathy-gtk/empathy-individual-menu.c:1094
 msgid "Infor_mation"
 msgstr "資訊(_M)"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:600
+#: ../libempathy-gtk/empathy-contact-menu.c:547
 msgctxt "Edit contact (contextual menu)"
 msgid "_Edit"
 msgstr "編輯(_E)"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:654
-#: ../libempathy-gtk/empathy-individual-menu.c:1284
+#: ../libempathy-gtk/empathy-contact-menu.c:601
+#: ../libempathy-gtk/empathy-individual-menu.c:1285
 #: ../src/empathy-chat-window.c:1011
 msgid "Inviting you to this room"
 msgstr "邀請您到這個聊天室"
 
-#: ../libempathy-gtk/empathy-contact-menu.c:685
-#: ../libempathy-gtk/empathy-individual-menu.c:1330
+#: ../libempathy-gtk/empathy-contact-menu.c:632
+#: ../libempathy-gtk/empathy-individual-menu.c:1331
 msgid "_Invite to Chat Room"
 msgstr "邀請到聊天室(_I)"
 
 #. Title
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:505
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:499
 msgid "Search contacts"
 msgstr "搜尋連絡人"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:535
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:529
 msgid "Search: "
 msgstr "搜尋:"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:593
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:587
 msgid "_Add Contact"
 msgstr "加入聯絡人(_A)"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:611
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:605
 msgid "No contacts found"
 msgstr "找不到聯絡人"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:627
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:621
 msgid "Your message introducing yourself:"
 msgstr "您的訊息"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:635
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:629
 msgid "Please let me see when you're online. Thanks!"
 msgstr "當您上線時請讓我知道。感謝!"
 
-#: ../libempathy-gtk/empathy-contact-selector.c:129
-msgid "Select a contact"
-msgstr "選擇連絡人"
-
-#: ../libempathy-gtk/empathy-contact-widget.c:336
-#: ../libempathy-gtk/empathy-individual-widget.c:153
-msgid "Full name:"
-msgstr "全名:"
-
-#: ../libempathy-gtk/empathy-contact-widget.c:337
-#: ../libempathy-gtk/empathy-individual-widget.c:154
-msgid "Phone number:"
-msgstr "電話號碼:"
-
-#: ../libempathy-gtk/empathy-contact-widget.c:338
-#: ../libempathy-gtk/empathy-individual-widget.c:155
-msgid "E-mail address:"
-msgstr "電子信箱位址:"
-
-#: ../libempathy-gtk/empathy-contact-widget.c:339
-#: ../libempathy-gtk/empathy-individual-widget.c:156
-msgid "Website:"
-msgstr "網站:"
-
-#: ../libempathy-gtk/empathy-contact-widget.c:340
-#: ../libempathy-gtk/empathy-individual-widget.c:157
-msgid "Birthday:"
-msgstr "生日:"
-
-#. Note to translators: this is the caption for a string of the form "5
-#. * minutes ago", and refers to the time since the contact last interacted
-#. * with their IM client.
-#.
-#: ../libempathy-gtk/empathy-contact-widget.c:346
-msgid "Last seen:"
-msgstr "上次看見:"
-
-#: ../libempathy-gtk/empathy-contact-widget.c:348
-msgid "Connected from:"
-msgstr "已連接從:"
-
-#. FIXME: once Idle implements SimplePresence using this information, we can
-#. * and should bin this.
-#.
-#: ../libempathy-gtk/empathy-contact-widget.c:353
-msgid "Away message:"
-msgstr "離開訊息:"
-
-#: ../libempathy-gtk/empathy-contact-widget.c:606
+#: ../libempathy-gtk/empathy-contact-widget.c:504
 msgid "Channels:"
 msgstr "頻道:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:897
-#: ../libempathy-gtk/empathy-individual-widget.c:469
+#: ../libempathy-gtk/empathy-contact-widget.c:799
+#: ../libempathy-gtk/empathy-individual-widget.c:421
 msgid "Country ISO Code:"
 msgstr "國家 ISO 碼:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:899
-#: ../libempathy-gtk/empathy-individual-widget.c:471
+#: ../libempathy-gtk/empathy-contact-widget.c:801
+#: ../libempathy-gtk/empathy-individual-widget.c:423
 msgid "Country:"
 msgstr "國家:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:901
-#: ../libempathy-gtk/empathy-individual-widget.c:473
+#: ../libempathy-gtk/empathy-contact-widget.c:803
+#: ../libempathy-gtk/empathy-individual-widget.c:425
 msgid "State:"
 msgstr "州:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:903
-#: ../libempathy-gtk/empathy-individual-widget.c:475
+#: ../libempathy-gtk/empathy-contact-widget.c:805
+#: ../libempathy-gtk/empathy-individual-widget.c:427
 msgid "City:"
 msgstr "市:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:905
-#: ../libempathy-gtk/empathy-individual-widget.c:477
+#: ../libempathy-gtk/empathy-contact-widget.c:807
+#: ../libempathy-gtk/empathy-individual-widget.c:429
 msgid "Area:"
 msgstr "區域:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:907
-#: ../libempathy-gtk/empathy-individual-widget.c:479
+#: ../libempathy-gtk/empathy-contact-widget.c:809
+#: ../libempathy-gtk/empathy-individual-widget.c:431
 msgid "Postal Code:"
 msgstr "郵遞區號:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:909
-#: ../libempathy-gtk/empathy-individual-widget.c:481
+#: ../libempathy-gtk/empathy-contact-widget.c:811
+#: ../libempathy-gtk/empathy-individual-widget.c:433
 msgid "Street:"
 msgstr "街:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:911
-#: ../libempathy-gtk/empathy-individual-widget.c:483
+#: ../libempathy-gtk/empathy-contact-widget.c:813
+#: ../libempathy-gtk/empathy-individual-widget.c:435
 msgid "Building:"
 msgstr "建築:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:913
-#: ../libempathy-gtk/empathy-individual-widget.c:485
+#: ../libempathy-gtk/empathy-contact-widget.c:815
+#: ../libempathy-gtk/empathy-individual-widget.c:437
 msgid "Floor:"
 msgstr "樓層:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:915
-#: ../libempathy-gtk/empathy-individual-widget.c:487
+#: ../libempathy-gtk/empathy-contact-widget.c:817
+#: ../libempathy-gtk/empathy-individual-widget.c:439
 msgid "Room:"
 msgstr "室:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:917
-#: ../libempathy-gtk/empathy-individual-widget.c:489
+#: ../libempathy-gtk/empathy-contact-widget.c:819
+#: ../libempathy-gtk/empathy-individual-widget.c:441
 msgid "Text:"
 msgstr "文字:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:919
-#: ../libempathy-gtk/empathy-individual-widget.c:491
+#: ../libempathy-gtk/empathy-contact-widget.c:821
+#: ../libempathy-gtk/empathy-individual-widget.c:443
 msgid "Description:"
 msgstr "描述:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:921
-#: ../libempathy-gtk/empathy-individual-widget.c:493
+#: ../libempathy-gtk/empathy-contact-widget.c:823
+#: ../libempathy-gtk/empathy-individual-widget.c:445
 msgid "URI:"
 msgstr "URI:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:923
-#: ../libempathy-gtk/empathy-individual-widget.c:495
+#: ../libempathy-gtk/empathy-contact-widget.c:825
+#: ../libempathy-gtk/empathy-individual-widget.c:447
 msgid "Accuracy Level:"
 msgstr "準確度等級:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:925
-#: ../libempathy-gtk/empathy-individual-widget.c:497
+#: ../libempathy-gtk/empathy-contact-widget.c:827
+#: ../libempathy-gtk/empathy-individual-widget.c:449
 msgid "Error:"
 msgstr "錯誤:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:927
-#: ../libempathy-gtk/empathy-individual-widget.c:499
+#: ../libempathy-gtk/empathy-contact-widget.c:829
+#: ../libempathy-gtk/empathy-individual-widget.c:451
 msgid "Vertical Error (meters):"
 msgstr "垂直誤差 (公尺):"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:929
-#: ../libempathy-gtk/empathy-individual-widget.c:501
+#: ../libempathy-gtk/empathy-contact-widget.c:831
+#: ../libempathy-gtk/empathy-individual-widget.c:453
 msgid "Horizontal Error (meters):"
 msgstr "水平誤差 (公尺):"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:931
-#: ../libempathy-gtk/empathy-individual-widget.c:503
+#: ../libempathy-gtk/empathy-contact-widget.c:833
+#: ../libempathy-gtk/empathy-individual-widget.c:455
 msgid "Speed:"
 msgstr "速度:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:933
-#: ../libempathy-gtk/empathy-individual-widget.c:505
+#: ../libempathy-gtk/empathy-contact-widget.c:835
+#: ../libempathy-gtk/empathy-individual-widget.c:457
 msgid "Bearing:"
 msgstr "方位:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:935
-#: ../libempathy-gtk/empathy-individual-widget.c:507
+#: ../libempathy-gtk/empathy-contact-widget.c:837
+#: ../libempathy-gtk/empathy-individual-widget.c:459
 msgid "Climb Speed:"
 msgstr "爬升速度:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:937
-#: ../libempathy-gtk/empathy-individual-widget.c:509
+#: ../libempathy-gtk/empathy-contact-widget.c:839
+#: ../libempathy-gtk/empathy-individual-widget.c:461
 msgid "Last Updated on:"
 msgstr "上次更新於:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:939
-#: ../libempathy-gtk/empathy-individual-widget.c:511
+#: ../libempathy-gtk/empathy-contact-widget.c:841
+#: ../libempathy-gtk/empathy-individual-widget.c:463
 msgid "Longitude:"
 msgstr "經度:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:941
-#: ../libempathy-gtk/empathy-individual-widget.c:513
+#: ../libempathy-gtk/empathy-contact-widget.c:843
+#: ../libempathy-gtk/empathy-individual-widget.c:465
 msgid "Latitude:"
 msgstr "緯度:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:943
-#: ../libempathy-gtk/empathy-individual-widget.c:515
+#: ../libempathy-gtk/empathy-contact-widget.c:845
+#: ../libempathy-gtk/empathy-individual-widget.c:467
 msgid "Altitude:"
 msgstr "緯度:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:996
-#: ../libempathy-gtk/empathy-contact-widget.c:1011
-#: ../libempathy-gtk/empathy-individual-widget.c:607
-#: ../libempathy-gtk/empathy-individual-widget.c:622
+#: ../libempathy-gtk/empathy-contact-widget.c:898
+#: ../libempathy-gtk/empathy-contact-widget.c:913
+#: ../libempathy-gtk/empathy-individual-widget.c:559
+#: ../libempathy-gtk/empathy-individual-widget.c:574
 #: ../src/empathy-preferences.ui.h:17
 msgid "Location"
 msgstr "位置"
 
 #. translators: format is "Location, $date"
-#: ../libempathy-gtk/empathy-contact-widget.c:1013
-#: ../libempathy-gtk/empathy-individual-widget.c:624
+#: ../libempathy-gtk/empathy-contact-widget.c:915
+#: ../libempathy-gtk/empathy-individual-widget.c:576
 #, c-format
 msgid "%s, %s"
 msgstr "%s,%s"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:1065
-#: ../libempathy-gtk/empathy-individual-widget.c:673
+#: ../libempathy-gtk/empathy-contact-widget.c:967
+#: ../libempathy-gtk/empathy-individual-widget.c:625
 msgid "%B %e, %Y at %R UTC"
 msgstr "%Y %B %e 於 %R UTC"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:1147
-#: ../libempathy-gtk/empathy-individual-widget.c:915
+#: ../libempathy-gtk/empathy-contact-widget.c:1049
+#: ../libempathy-gtk/empathy-individual-widget.c:867
 msgid "Save Avatar"
 msgstr "儲存大頭貼"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:1203
-#: ../libempathy-gtk/empathy-individual-widget.c:973
+#: ../libempathy-gtk/empathy-contact-widget.c:1105
+#: ../libempathy-gtk/empathy-individual-widget.c:925
 msgid "Unable to save avatar"
 msgstr "無法儲存大頭貼"
 
+#: ../libempathy-gtk/empathy-contact-widget.c:1793
+#: ../libempathy-gtk/empathy-individual-menu.c:1066
+#: ../libempathy-gtk/empathy-individual-widget.c:1324
+msgid "Favorite"
+msgstr "喜好"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:102
+msgid "Full name"
+msgstr "全名"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:103
+msgid "Phone number"
+msgstr "電話號碼"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:104
+msgid "E-mail address"
+msgstr "電子信箱位址"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:105
+msgid "Website"
+msgstr "網站"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:106
+msgid "Birthday"
+msgstr "生日"
+
+#. Note to translators: this is the caption for a string of the form "5
+#. * minutes ago", and refers to the time since the contact last interacted
+#. * with their IM client.
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:111
+msgid "Last seen:"
+msgstr "上次看見:"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:113
+msgid "Connected from:"
+msgstr "已連接從:"
+
+#. FIXME: once Idle implements SimplePresence using this information, we can
+#. * and should bin this.
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:117
+msgid "Away message:"
+msgstr "離開訊息:"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:130
+msgid "work"
+msgstr "工作"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:131
+msgid "home"
+msgstr "住家"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:132
+msgid "mobile"
+msgstr "行動"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:133
+msgid "voice"
+msgstr "聲音"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:134
+msgid "preferred"
+msgstr "偏好"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:135
+msgid "postal"
+msgstr "郵遞"
+
+#: ../libempathy-gtk/empathy-contactinfo-utils.c:136
+msgid "parcel"
+msgstr "包裹"
+
 #: ../libempathy-gtk/empathy-contact-widget.ui.h:1
 msgid "<b>Location</b> at (date)\t"
 msgstr "<b>位置</b> 於 (date)\t"
 
 #. Alias
 #: ../libempathy-gtk/empathy-contact-widget.ui.h:3
-#: ../libempathy-gtk/empathy-individual-widget.c:1308
+#: ../libempathy-gtk/empathy-individual-widget.c:1260
 msgid "Alias:"
 msgstr "別名:"
 
@@ -2069,7 +2093,7 @@ msgstr "連絡人詳細資料"
 #. Identifier to connect to Instant Messaging network
 #. Translators: Identifier to connect to Instant Messaging network
 #: ../libempathy-gtk/empathy-contact-widget.ui.h:8
-#: ../libempathy-gtk/empathy-individual-widget.c:1517
+#: ../libempathy-gtk/empathy-individual-widget.c:1469
 msgid "Identifier:"
 msgstr "識別身分:"
 
@@ -2107,16 +2131,16 @@ msgid "Select"
 msgstr "選取"
 
 #: ../libempathy-gtk/empathy-groups-widget.c:409
-#: ../src/empathy-main-window.c:1807
+#: ../src/empathy-main-window.c:1953
 msgid "Group"
 msgstr "群組"
 
-#: ../libempathy-gtk/empathy-individual-dialogs.c:260
+#: ../libempathy-gtk/empathy-individual-dialogs.c:258
 msgid "The following identity will be blocked:"
 msgid_plural "The following identities will be blocked:"
 msgstr[0] "下列識別身分將被封鎖:"
 
-#: ../libempathy-gtk/empathy-individual-dialogs.c:267
+#: ../libempathy-gtk/empathy-individual-dialogs.c:265
 msgid "The following identity can not be blocked:"
 msgid_plural "The following identities can not be blocked:"
 msgstr[0] "下列識別身分無法被封鎖:"
@@ -2154,7 +2178,7 @@ msgstr "選取要用來放置通話的帳號"
 #. * title
 #: ../libempathy-gtk/empathy-individual-menu.c:313
 #: ../libempathy-gtk/empathy-log-window.ui.h:2
-#: ../src/empathy-streamed-media-window.c:1299
+#: ../src/empathy-streamed-media-window.c:1285
 #: ../src/empathy-call-window.ui.h:2
 msgid "Call"
 msgstr "通話"
@@ -2171,29 +2195,29 @@ msgstr "工作"
 msgid "HOME"
 msgstr "住家"
 
-#. add an SMS button
-#: ../libempathy-gtk/empathy-individual-menu.c:804
-#: ../libempathy-gtk/empathy-new-message-dialog.c:215
+#. add SMS button
+#: ../libempathy-gtk/empathy-individual-menu.c:805
+#: ../libempathy-gtk/empathy-new-message-dialog.c:314
 msgid "_SMS"
 msgstr "_SMS"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1142
+#: ../libempathy-gtk/empathy-individual-menu.c:1143
 msgctxt "Edit individual (contextual menu)"
 msgid "_Edit"
 msgstr "編輯(_E)"
 
 #. Translators: this is a verb meaning "to connect two contacts together
 #. * to form a meta-contact".
-#: ../libempathy-gtk/empathy-individual-menu.c:1168
+#: ../libempathy-gtk/empathy-individual-menu.c:1169
 msgctxt "Link individual (contextual menu)"
 msgid "_Link Contacts…"
 msgstr "連結聯絡人(_L)…"
 
-#: ../libempathy-gtk/empathy-individual-view.c:2341
+#: ../libempathy-gtk/empathy-individual-view.c:2340
 msgid "Delete and _Block"
 msgstr "刪除並封鎖(_B)"
 
-#: ../libempathy-gtk/empathy-individual-view.c:2510
+#: ../libempathy-gtk/empathy-individual-view.c:2509
 #, c-format
 msgid ""
 "Do you really want to remove the linked contact '%s'? Note that this will "
@@ -2202,7 +2226,7 @@ msgstr ""
 "您真的想要移除連結聯絡人「%s」嗎?請注意這會移除所有構成此連結聯絡群的聯絡"
 "人。"
 
-#: ../libempathy-gtk/empathy-individual-widget.c:1656
+#: ../libempathy-gtk/empathy-individual-widget.c:1608
 #, c-format
 msgid "Linked contact containing %u contact"
 msgid_plural "Linked contacts containing %u contacts"
@@ -2283,133 +2307,133 @@ msgctxt "Unlink individual (button)"
 msgid "_Unlink"
 msgstr "取消連結(_U)"
 
-#: ../libempathy-gtk/empathy-log-window.c:634
+#: ../libempathy-gtk/empathy-log-window.c:620
 msgid "History"
 msgstr "歷史"
 
-#: ../libempathy-gtk/empathy-log-window.c:689
+#: ../libempathy-gtk/empathy-log-window.c:675
 msgid "Show"
 msgstr "顯示"
 
-#: ../libempathy-gtk/empathy-log-window.c:711
+#: ../libempathy-gtk/empathy-log-window.c:697
 msgid "Search"
 msgstr "搜尋"
 
-#: ../libempathy-gtk/empathy-log-window.c:1159
+#: ../libempathy-gtk/empathy-log-window.c:1145
 #, c-format
 msgid "Chat in %s"
 msgstr "於 %s 內聊天"
 
-#: ../libempathy-gtk/empathy-log-window.c:1161
+#: ../libempathy-gtk/empathy-log-window.c:1147
 #, c-format
 msgid "Chat with %s"
 msgstr "與 %s 聊天中"
 
-#: ../libempathy-gtk/empathy-log-window.c:1211
-#: ../libempathy-gtk/empathy-log-window.c:1358
+#: ../libempathy-gtk/empathy-log-window.c:1197
+#: ../libempathy-gtk/empathy-log-window.c:1344
 msgctxt "A date with the time"
 msgid "%A, %e %B %Y %X"
 msgstr "%Y %B %d %A"
 
 #. Translators: this is an emote: '* Danielle waves'
-#: ../libempathy-gtk/empathy-log-window.c:1300
+#: ../libempathy-gtk/empathy-log-window.c:1286
 #, c-format
 msgid "<i>* %s %s</i>"
 msgstr "<i>* %s %s</i>"
 
 #. Translators: this is a message: 'Danielle: hello'
 #. * The string in bold is the sender's name
-#: ../libempathy-gtk/empathy-log-window.c:1306
+#: ../libempathy-gtk/empathy-log-window.c:1292
 #, c-format
 msgid "<b>%s:</b> %s"
 msgstr "<b>%s:</b> %s"
 
-#: ../libempathy-gtk/empathy-log-window.c:1382
+#: ../libempathy-gtk/empathy-log-window.c:1368
 #, c-format
 msgid "%s second"
 msgid_plural "%s seconds"
 msgstr[0] "%s 秒"
 
-#: ../libempathy-gtk/empathy-log-window.c:1389
+#: ../libempathy-gtk/empathy-log-window.c:1375
 #, c-format
 msgid "%s minute"
 msgid_plural "%s minutes"
 msgstr[0] "%s 分鐘"
 
-#: ../libempathy-gtk/empathy-log-window.c:1397
+#: ../libempathy-gtk/empathy-log-window.c:1383
 #, c-format
 msgid "Call took %s, ended at %s"
 msgstr "通話時間 %s,結束於 %s"
 
-#: ../libempathy-gtk/empathy-log-window.c:1729
+#: ../libempathy-gtk/empathy-log-window.c:1715
 msgid "Today"
 msgstr "今日"
 
-#: ../libempathy-gtk/empathy-log-window.c:1733
+#: ../libempathy-gtk/empathy-log-window.c:1719
 msgid "Yesterday"
 msgstr "昨日"
 
 #. Translators: A date such as '23 May 2010' (strftime format)
-#: ../libempathy-gtk/empathy-log-window.c:1748
+#: ../libempathy-gtk/empathy-log-window.c:1734
 msgid "%e %B %Y"
 msgstr "%Y年%B%e日"
 
-#: ../libempathy-gtk/empathy-log-window.c:1829
-#: ../libempathy-gtk/empathy-log-window.c:3444
+#: ../libempathy-gtk/empathy-log-window.c:1815
+#: ../libempathy-gtk/empathy-log-window.c:3430
 msgid "Anytime"
 msgstr "任何時間"
 
-#: ../libempathy-gtk/empathy-log-window.c:1916
-#: ../libempathy-gtk/empathy-log-window.c:2372
+#: ../libempathy-gtk/empathy-log-window.c:1902
+#: ../libempathy-gtk/empathy-log-window.c:2358
 msgid "Anyone"
 msgstr "任一個"
 
-#: ../libempathy-gtk/empathy-log-window.c:2685
+#: ../libempathy-gtk/empathy-log-window.c:2671
 msgid "Who"
 msgstr "誰"
 
-#: ../libempathy-gtk/empathy-log-window.c:2889
+#: ../libempathy-gtk/empathy-log-window.c:2875
 msgid "When"
 msgstr "何時"
 
-#: ../libempathy-gtk/empathy-log-window.c:3005
+#: ../libempathy-gtk/empathy-log-window.c:2991
 msgid "Anything"
 msgstr "任何事"
 
-#: ../libempathy-gtk/empathy-log-window.c:3007
+#: ../libempathy-gtk/empathy-log-window.c:2993
 msgid "Text chats"
 msgstr "文字聊天"
 
-#: ../libempathy-gtk/empathy-log-window.c:3009
+#: ../libempathy-gtk/empathy-log-window.c:2995
 #: ../src/empathy-preferences.ui.h:4
 msgid "Calls"
 msgstr "通話"
 
-#: ../libempathy-gtk/empathy-log-window.c:3014
+#: ../libempathy-gtk/empathy-log-window.c:3000
 msgid "Incoming calls"
 msgstr "來電"
 
-#: ../libempathy-gtk/empathy-log-window.c:3015
+#: ../libempathy-gtk/empathy-log-window.c:3001
 msgid "Outgoing calls"
 msgstr "播出"
 
-#: ../libempathy-gtk/empathy-log-window.c:3016
+#: ../libempathy-gtk/empathy-log-window.c:3002
 msgid "Missed calls"
 msgstr "漏接來電"
 
-#: ../libempathy-gtk/empathy-log-window.c:3038
+#: ../libempathy-gtk/empathy-log-window.c:3024
 msgid "What"
 msgstr "什麼"
 
-#: ../libempathy-gtk/empathy-log-window.c:3747
+#: ../libempathy-gtk/empathy-log-window.c:3719
 msgid "Are you sure you want to delete all logs of previous conversations?"
 msgstr "您確定要刪除過往談話的所有紀錄嗎?"
 
-#: ../libempathy-gtk/empathy-log-window.c:3751
+#: ../libempathy-gtk/empathy-log-window.c:3723
 msgid "Clear All"
 msgstr "清除全部"
 
-#: ../libempathy-gtk/empathy-log-window.c:3758
+#: ../libempathy-gtk/empathy-log-window.c:3730
 msgid "Delete from:"
 msgstr "刪除從:"
 
@@ -2450,32 +2474,72 @@ msgstr "檔案(_F)"
 msgid "page 2"
 msgstr "頁面 2"
 
-#: ../libempathy-gtk/empathy-contact-selector-dialog.ui.h:2
-msgid "Contact ID:"
-msgstr "é\80£çµ¡äºº IDï¼\9a"
+#: ../libempathy-gtk/empathy-new-message-dialog.c:84
+msgid "The contact is offline"
+msgstr "è\81¯çµ¡äººå·²ç¶\93é\9b¢ç·\9a"
 
-#. add chat button
-#: ../libempathy-gtk/empathy-new-message-dialog.c:225
-msgid "C_hat"
-msgstr "聊天(_C)"
+#: ../libempathy-gtk/empathy-new-message-dialog.c:86
+msgid "The specified contact is either invalid or unknown"
+msgstr "指定的聯絡人無效或未知"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.c:88
+msgid "The contact does not support this kind of conversation"
+msgstr "該聯絡人不支援這類談話"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.c:90
+msgid "The requested functionality is not implemented for this protocol"
+msgstr "請求的功能尚未在此協定中實作"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.c:96
+msgid "Could not start a conversation with the given contact"
+msgstr "無法啟動與給定聯絡人的談話"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.c:98
+msgid "You are banned from this channel"
+msgstr "您被此頻道禁封"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.c:100
+msgid "This channel is full"
+msgstr "此頻道已滿"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.c:102
+msgid "You must be invited to join this channel"
+msgstr "您必須被邀請才能參加此頻道"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.c:104
+msgid "Can't proceed while disconnected"
+msgstr "斷線時無法處理"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.c:106
+msgid "Permission denied"
+msgstr "許可被拒絕"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.c:112
+msgid "There was an error starting the conversation"
+msgstr "啟動談話時發生錯誤"
+
+#: ../libempathy-gtk/empathy-new-message-dialog.c:291
+#: ../libempathy-gtk/empathy-new-call-dialog.c:203
+msgid "Enter a contact identifier or phone number:"
+msgstr "請輸入聯絡人辨識身份或電話號碼:"
 
 #. Tweak the dialog
-#: ../libempathy-gtk/empathy-new-message-dialog.c:244
+#: ../libempathy-gtk/empathy-new-message-dialog.c:334
 msgid "New Conversation"
 msgstr "新增談話"
 
-#. add video toggle
-#: ../libempathy-gtk/empathy-new-call-dialog.c:204
-msgid "Send _Video"
-msgstr "傳送視訊(_V)"
+#. add video button
+#: ../libempathy-gtk/empathy-new-call-dialog.c:226
+msgid "_Video Call"
+msgstr "視訊通話(_V)"
 
-#. add chat button
-#: ../libempathy-gtk/empathy-new-call-dialog.c:215
-msgid "C_all"
-msgstr "通話(_A)"
+#. add audio button
+#: ../libempathy-gtk/empathy-new-call-dialog.c:236
+msgid "_Audio Call"
+msgstr "語音通話(_A)"
 
 #. Tweak the dialog
-#: ../libempathy-gtk/empathy-new-call-dialog.c:225
+#: ../libempathy-gtk/empathy-new-call-dialog.c:246
 msgid "New Call"
 msgstr "新增通話"
 
@@ -2516,12 +2580,8 @@ msgstr "按這裡將這個狀態設為喜好"
 msgid "Set status"
 msgstr "設定狀態"
 
-#: ../libempathy-gtk/empathy-presence-chooser.c:943
-msgid "Set your presence and current status"
-msgstr "設定您的上線與目前的狀態"
-
 #. Custom messages
-#: ../libempathy-gtk/empathy-presence-chooser.c:1131
+#: ../libempathy-gtk/empathy-presence-chooser.c:1135
 msgid "Custom messages…"
 msgstr "自訂訊息…"
 
@@ -2598,12 +2658,12 @@ msgstr "語音通話結束"
 msgid "Edit Custom Messages"
 msgstr "編輯自訂訊息"
 
-#: ../libempathy-gtk/empathy-theme-adium.c:1036
+#: ../libempathy-gtk/empathy-theme-adium.c:1047
 #, c-format
 msgid "Message edited at %s"
 msgstr "訊息編輯於 %s"
 
-#: ../libempathy-gtk/empathy-theme-adium.c:1726
+#: ../libempathy-gtk/empathy-theme-adium.c:1752
 msgid "Normal"
 msgstr "一般"
 
@@ -2694,26 +2754,26 @@ msgstr "請記住此選擇以供未來連線使用"
 msgid "Certificate Details"
 msgstr "憑證詳細資料"
 
-#: ../libempathy-gtk/empathy-ui-utils.c:1735
+#: ../libempathy-gtk/empathy-ui-utils.c:1741
 msgid "Unable to open URI"
 msgstr "無法開啓 URI"
 
-#: ../libempathy-gtk/empathy-ui-utils.c:1831
+#: ../libempathy-gtk/empathy-ui-utils.c:1859
 msgid "Select a file"
 msgstr "選擇一個檔案"
 
-#: ../libempathy-gtk/empathy-ui-utils.c:1903
+#: ../libempathy-gtk/empathy-ui-utils.c:1934
 msgid "Insufficient free space to save file"
 msgstr "空間不足以儲存檔案"
 
-#: ../libempathy-gtk/empathy-ui-utils.c:1911
+#: ../libempathy-gtk/empathy-ui-utils.c:1942
 #, c-format
 msgid ""
 "%s of free space are required to save this file, but only %s is available. "
 "Please choose another location."
 msgstr "需要 %s 的空間以儲存此檔案,但僅有 %s 可用。請選擇其他位置。"
 
-#: ../libempathy-gtk/empathy-ui-utils.c:1955
+#: ../libempathy-gtk/empathy-ui-utils.c:1986
 #, c-format
 msgid "Incoming file from %s"
 msgstr "收到來自 %s 的檔案"
@@ -2885,39 +2945,31 @@ msgstr "西歐語系"
 msgid "Vietnamese"
 msgstr "越南文"
 
-#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:108
-msgid "The selected contact cannot receive files."
-msgstr "所選的聯絡人無法接收檔案。"
-
-#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:114
-msgid "The selected contact is offline."
-msgstr "所選的聯絡人已經離線。"
-
-#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:169
+#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:203
 msgid "No error message"
 msgstr "沒有錯誤訊息"
 
-#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:242
+#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:276
 msgid "Instant Message (Empathy)"
 msgstr "即時通訊 (Empathy)"
 
-#: ../src/empathy.c:431
+#: ../src/empathy.c:433
 msgid "Don't connect on startup"
 msgstr "啟動時不要自動連線"
 
-#: ../src/empathy.c:435
+#: ../src/empathy.c:437
 msgid "Don't display the contact list or any other dialogs on startup"
 msgstr "啟動時不顯示連絡人清單或任何其他對話窗"
 
-#: ../src/empathy.c:450
+#: ../src/empathy.c:452
 msgid "- Empathy IM Client"
 msgstr "- Empathy 即時通用戶端"
 
-#: ../src/empathy.c:637
+#: ../src/empathy.c:639
 msgid "Error contacting the Account Manager"
 msgstr "聯絡帳號管理程式時發生錯誤"
 
-#: ../src/empathy.c:639
+#: ../src/empathy.c:641
 #, c-format
 msgid ""
 "There was an error while trying to connect to the Telepathy Account Manager. "
@@ -3070,8 +3122,8 @@ msgid "Select the accounts you want to import:"
 msgstr "選擇要匯入的帳號:"
 
 #: ../src/empathy-account-assistant.c:813
-#: ../src/empathy-new-chatroom-dialog.c:555
-#: ../src/empathy-new-chatroom-dialog.c:556
+#: ../src/empathy-new-chatroom-dialog.c:625
+#: ../src/empathy-new-chatroom-dialog.c:626
 msgid "Yes"
 msgstr "是"
 
@@ -3144,8 +3196,8 @@ msgid "Your new account has not been saved yet."
 msgstr "尚未儲存您的新帳號。"
 
 #: ../src/empathy-accounts-dialog.c:345
-#: ../src/empathy-streamed-media-window.c:754
-#: ../src/empathy-call-window.c:1216
+#: ../src/empathy-streamed-media-window.c:755
+#: ../src/empathy-call-window.c:1326
 msgid "Connecting…"
 msgstr "連線中…"
 
@@ -3239,11 +3291,11 @@ msgstr "要加入新的帳號,您必須先安裝每個會用到的通訊協定
 msgid "_Import…"
 msgstr "匯入(_I)…"
 
-#: ../src/empathy-auth-client.c:249
+#: ../src/empathy-auth-client.c:251
 msgid " - Empathy authentication client"
 msgstr "- Empathy 認證用戶端"
 
-#: ../src/empathy-auth-client.c:265
+#: ../src/empathy-auth-client.c:267
 msgid "Empathy authentication client"
 msgstr "Empathy 認證用戶端"
 
@@ -3251,157 +3303,145 @@ msgstr "Empathy 認證用戶端"
 msgid "People nearby"
 msgstr "附近的人"
 
-#: ../src/empathy-av.c:118 ../src/empathy-call.c:192
+#: ../src/empathy-av.c:118 ../src/empathy-call.c:193
 msgid "- Empathy Audio/Video Client"
 msgstr "- Empathy 音訊視訊用戶端"
 
-#: ../src/empathy-av.c:134 ../src/empathy-call.c:217
+#: ../src/empathy-av.c:134 ../src/empathy-call.c:218
 msgid "Empathy Audio/Video Client"
 msgstr "Empathy 音訊視訊用戶端"
 
-#: ../src/empathy-streamed-media-window.c:431
+#: ../src/empathy-streamed-media-window.c:432
 msgid "Contrast"
 msgstr "對比"
 
-#: ../src/empathy-streamed-media-window.c:434
+#: ../src/empathy-streamed-media-window.c:435
 msgid "Brightness"
 msgstr "亮度"
 
-#: ../src/empathy-streamed-media-window.c:437
+#: ../src/empathy-streamed-media-window.c:438
 msgid "Gamma"
 msgstr "Gamma"
 
-#: ../src/empathy-streamed-media-window.c:542
+#: ../src/empathy-streamed-media-window.c:543
 msgid "Volume"
 msgstr "音量"
 
-#: ../src/empathy-streamed-media-window.c:1110
+#: ../src/empathy-streamed-media-window.c:1094
 msgid "_Sidebar"
 msgstr "側邊欄(_S)"
 
-#: ../src/empathy-streamed-media-window.c:1130
+#: ../src/empathy-streamed-media-window.c:1114
 msgid "Audio input"
 msgstr "音效輸入"
 
-#: ../src/empathy-streamed-media-window.c:1134
+#: ../src/empathy-streamed-media-window.c:1118
 msgid "Video input"
 msgstr "視訊輸入"
 
-#: ../src/empathy-streamed-media-window.c:1140
+#: ../src/empathy-streamed-media-window.c:1126
 msgid "Dialpad"
 msgstr "播號盤"
 
-#: ../src/empathy-streamed-media-window.c:1151
+#: ../src/empathy-streamed-media-window.c:1137
 msgid "Details"
 msgstr "詳細資料"
 
 #. translators: Call is a noun and %s is the contact name. This string
 #. * is used in the window title
-#: ../src/empathy-streamed-media-window.c:1220
-#: ../src/empathy-call-window.c:1825
+#: ../src/empathy-streamed-media-window.c:1206
+#: ../src/empathy-call-window.c:1932
 #, c-format
 msgid "Call with %s"
 msgstr "與 %s 通話中"
 
-#: ../src/empathy-streamed-media-window.c:1453
-#: ../src/empathy-call-window.c:2069
+#: ../src/empathy-streamed-media-window.c:1439
+#: ../src/empathy-call-window.c:2176
 msgid "The IP address as seen by the machine"
 msgstr "機器看見的 IP 位址"
 
-#: ../src/empathy-streamed-media-window.c:1455
-#: ../src/empathy-call-window.c:2071
+#: ../src/empathy-streamed-media-window.c:1441
+#: ../src/empathy-call-window.c:2178
 msgid "The IP address as seen by a server on the Internet"
 msgstr "網際網路上的伺服器看見的 IP 位址"
 
-#: ../src/empathy-streamed-media-window.c:1457
-#: ../src/empathy-call-window.c:2073
+#: ../src/empathy-streamed-media-window.c:1443
+#: ../src/empathy-call-window.c:2180
 msgid "The IP address of the peer as seen by the other side"
 msgstr "其他端看見的點的 IP 位址"
 
-#: ../src/empathy-streamed-media-window.c:1459
-#: ../src/empathy-call-window.c:2075
+#: ../src/empathy-streamed-media-window.c:1445
+#: ../src/empathy-call-window.c:2182
 msgid "The IP address of a relay server"
 msgstr "中繼伺服器的 IP 位址"
 
-#: ../src/empathy-streamed-media-window.c:1461
-#: ../src/empathy-call-window.c:2077
+#: ../src/empathy-streamed-media-window.c:1447
+#: ../src/empathy-call-window.c:2184
 msgid "The IP address of the multicast group"
 msgstr "多點廣播群組的 IP 位址"
 
-#: ../src/empathy-streamed-media-window.c:1843
-msgctxt "encoding video codec"
-msgid "Unknown"
-msgstr "未知"
-
-#: ../src/empathy-streamed-media-window.c:1846
-msgctxt "encoding audio codec"
-msgid "Unknown"
-msgstr "未知"
-
-#: ../src/empathy-streamed-media-window.c:1849
-msgctxt "decoding video codec"
-msgid "Unknown"
-msgstr "未知"
-
-#: ../src/empathy-streamed-media-window.c:1852
-msgctxt "decoding audio codec"
+#: ../src/empathy-streamed-media-window.c:1835
+#: ../src/empathy-streamed-media-window.c:1838
+#: ../src/empathy-streamed-media-window.c:1841
+#: ../src/empathy-streamed-media-window.c:1844
+msgctxt "codec"
 msgid "Unknown"
 msgstr "未知"
 
 #. Translators: number of minutes:seconds the caller has been connected
-#: ../src/empathy-streamed-media-window.c:2144
+#: ../src/empathy-streamed-media-window.c:2136
 #, c-format
 msgid "Connected — %d:%02dm"
 msgstr "已連線 — %d:%02dm"
 
-#: ../src/empathy-streamed-media-window.c:2205
-#: ../src/empathy-call-window.c:2846
+#: ../src/empathy-streamed-media-window.c:2197
+#: ../src/empathy-call-window.c:3045
 msgid "Technical Details"
 msgstr "技術細節"
 
-#: ../src/empathy-streamed-media-window.c:2243
-#: ../src/empathy-call-window.c:2884
+#: ../src/empathy-streamed-media-window.c:2235
+#: ../src/empathy-call-window.c:3084
 #, c-format
 msgid ""
 "%s's software does not understand any of the audio formats supported by your "
 "computer"
 msgstr "%s 的軟體不瞭解任何您電腦上所支援的音訊格式"
 
-#: ../src/empathy-streamed-media-window.c:2248
-#: ../src/empathy-call-window.c:2889
+#: ../src/empathy-streamed-media-window.c:2240
+#: ../src/empathy-call-window.c:3089
 #, c-format
 msgid ""
 "%s's software does not understand any of the video formats supported by your "
 "computer"
 msgstr "%s 的軟體不瞭解任何您電腦上所支援的視訊格式"
 
-#: ../src/empathy-streamed-media-window.c:2254
-#: ../src/empathy-call-window.c:2895
+#: ../src/empathy-streamed-media-window.c:2246
+#: ../src/empathy-call-window.c:3095
 #, c-format
 msgid ""
 "Can't establish a connection to %s. One of you might be on a network that "
 "does not allow direct connections."
 msgstr "無法和 %s 建立連線。您們其中之一可能在一個不允許直接連線的網路之上。"
 
-#: ../src/empathy-streamed-media-window.c:2260
-#: ../src/empathy-call-window.c:2901
+#: ../src/empathy-streamed-media-window.c:2252
+#: ../src/empathy-call-window.c:3101
 msgid "There was a failure on the network"
 msgstr "這個網路上有錯誤發生"
 
-#: ../src/empathy-streamed-media-window.c:2264
-#: ../src/empathy-call-window.c:2905
+#: ../src/empathy-streamed-media-window.c:2256
+#: ../src/empathy-call-window.c:3105
 msgid ""
 "The audio formats necessary for this call are not installed on your computer"
 msgstr "此通話所必要的音訊格式尚未在您的電腦上安裝"
 
-#: ../src/empathy-streamed-media-window.c:2267
-#: ../src/empathy-call-window.c:2908
+#: ../src/empathy-streamed-media-window.c:2259
+#: ../src/empathy-call-window.c:3108
 msgid ""
 "The video formats necessary for this call are not installed on your computer"
 msgstr "此通話所必要的視訊格式尚未在您的電腦上安裝"
 
-#: ../src/empathy-streamed-media-window.c:2277
-#: ../src/empathy-call-window.c:2920
+#: ../src/empathy-streamed-media-window.c:2269
+#: ../src/empathy-call-window.c:3120
 #, c-format
 msgid ""
 "Something unexpected happened in a Telepathy component. Please <a href=\"%s"
@@ -3411,23 +3451,23 @@ msgstr ""
 "在 Telepathy 元件中發生未預期的狀況。請<a href=\"%s\">回報這個錯誤</a>並附上"
 "從求助選單內的「除錯」視窗中所收集的紀錄。"
 
-#: ../src/empathy-streamed-media-window.c:2285
-#: ../src/empathy-call-window.c:2929
+#: ../src/empathy-streamed-media-window.c:2277
+#: ../src/empathy-call-window.c:3129
 msgid "There was a failure in the call engine"
 msgstr "通話引擎內有錯誤發生"
 
-#: ../src/empathy-streamed-media-window.c:2288
-#: ../src/empathy-call-window.c:2932
+#: ../src/empathy-streamed-media-window.c:2280
+#: ../src/empathy-call-window.c:3132
 msgid "The end of the stream was reached"
 msgstr "已達串流末端"
 
-#: ../src/empathy-streamed-media-window.c:2328
-#: ../src/empathy-call-window.c:2972
+#: ../src/empathy-streamed-media-window.c:2320
+#: ../src/empathy-call-window.c:3172
 msgid "Can't establish audio stream"
 msgstr "無法建立音訊串流"
 
-#: ../src/empathy-streamed-media-window.c:2338
-#: ../src/empathy-call-window.c:2982
+#: ../src/empathy-streamed-media-window.c:2330
+#: ../src/empathy-call-window.c:3182
 msgid "Can't establish video stream"
 msgstr "無法建立視訊串流"
 
@@ -3518,8 +3558,8 @@ msgstr "切換視訊傳播"
 
 #: ../src/empathy-call-window.ui.h:21
 #: ../src/empathy-streamed-media-window.ui.h:18
-#: ../src/empathy-call-window.c:2476 ../src/empathy-call-window.c:2477
-#: ../src/empathy-call-window.c:2478 ../src/empathy-call-window.c:2479
+#: ../src/empathy-call-window.c:2584 ../src/empathy-call-window.c:2585
+#: ../src/empathy-call-window.c:2586 ../src/empathy-call-window.c:2587
 msgid "Unknown"
 msgstr "不明"
 
@@ -3683,7 +3723,7 @@ msgstr "管理喜好的聊天室"
 msgid "Incoming video call"
 msgstr "傳入的視訊通話"
 
-#: ../src/empathy-event-manager.c:521 ../src/empathy-call-window.c:1449
+#: ../src/empathy-event-manager.c:521 ../src/empathy-call-window.c:1556
 msgid "Incoming call"
 msgstr "來電"
 
@@ -3698,7 +3738,7 @@ msgid "%s is calling you. Do you want to answer?"
 msgstr "%s 要與您進行通話。您是否要接聽?"
 
 #: ../src/empathy-event-manager.c:529 ../src/empathy-event-manager.c:730
-#: ../src/empathy-event-manager.c:763 ../src/empathy-call-window.c:1455
+#: ../src/empathy-event-manager.c:763 ../src/empathy-call-window.c:1562
 #, c-format
 msgid "Incoming call from %s"
 msgstr "%s 的來電"
@@ -3716,7 +3756,7 @@ msgid "_Answer with video"
 msgstr "以視訊接聽(_A)"
 
 #: ../src/empathy-event-manager.c:730 ../src/empathy-event-manager.c:763
-#: ../src/empathy-call-window.c:1455
+#: ../src/empathy-call-window.c:1562
 #, c-format
 msgid "Incoming video call from %s"
 msgstr "來自 %s 的視訊通話"
@@ -3759,16 +3799,16 @@ msgstr "您被邀請參加 %s"
 msgid "Incoming file transfer from %s"
 msgstr "收到來自 %s 的檔案傳輸"
 
-#: ../src/empathy-event-manager.c:1134 ../src/empathy-main-window.c:375
+#: ../src/empathy-event-manager.c:1145 ../src/empathy-main-window.c:378
 msgid "Password required"
 msgstr "需要密碼"
 
-#: ../src/empathy-event-manager.c:1190
+#: ../src/empathy-event-manager.c:1210
 #, c-format
 msgid "%s would like permission to see when you are online"
 msgstr "%s 想要得到查看您是否上線的許可"
 
-#: ../src/empathy-event-manager.c:1194
+#: ../src/empathy-event-manager.c:1214
 #, c-format
 msgid ""
 "\n"
@@ -3911,51 +3951,60 @@ msgstr "通訊協定"
 msgid "Source"
 msgstr "來源"
 
-#: ../src/empathy-main-window.c:392
+#: ../src/empathy-main-window.c:395
 msgid "Provide Password"
 msgstr "提供密碼"
 
-#: ../src/empathy-main-window.c:398
+#: ../src/empathy-main-window.c:401
 msgid "Disconnect"
 msgstr "斷線"
 
-#: ../src/empathy-main-window.c:622
+#: ../src/empathy-main-window.c:638
 msgid "No match found"
 msgstr "找不到符合項目"
 
-#: ../src/empathy-main-window.c:777
+#: ../src/empathy-main-window.c:746
+#, c-format
+msgid "Sorry, %s accounts can’t be used until your %s software is updated."
+msgstr "很抱歉,%s 帳號無法使用,除非您的 %s 軟體已更新。"
+
+#: ../src/empathy-main-window.c:814
+msgid "Update software..."
+msgstr "更新軟體..."
+
+#: ../src/empathy-main-window.c:820 ../src/empathy-main-window.c:941
+msgid "Close"
+msgstr "關閉"
+
+#: ../src/empathy-main-window.c:929
 msgid "Reconnect"
 msgstr "重新連接"
 
-#: ../src/empathy-main-window.c:783
+#: ../src/empathy-main-window.c:935
 msgid "Edit Account"
 msgstr "編輯帳號"
 
-#: ../src/empathy-main-window.c:789
-msgid "Close"
-msgstr "關閉"
-
 #. Translators: this string will be something like:
 #. *   Top up My Account ($1.23)..."
-#: ../src/empathy-main-window.c:928
+#: ../src/empathy-main-window.c:1074
 #, c-format
 msgid "Top up %s (%s)..."
 msgstr "加值 %s (%s)..."
 
-#: ../src/empathy-main-window.c:975
+#: ../src/empathy-main-window.c:1121
 msgid "Top up account credit"
-msgstr "加值帳號額度"
+msgstr "加值帳號存額"
 
 #. top up button
-#: ../src/empathy-main-window.c:1046
+#: ../src/empathy-main-window.c:1192
 msgid "Top Up..."
 msgstr "加值..."
 
-#: ../src/empathy-main-window.c:1789
+#: ../src/empathy-main-window.c:1935
 msgid "Contact"
 msgstr "連絡人"
 
-#: ../src/empathy-main-window.c:2121
+#: ../src/empathy-main-window.c:2310
 msgid "Contact List"
 msgstr "連絡人清單"
 
@@ -4048,17 +4097,17 @@ msgstr "聊天室(_R)"
 msgid "_Search for Contacts…"
 msgstr "搜尋聯絡人(_S)…"
 
-#: ../src/empathy-new-chatroom-dialog.c:337
+#: ../src/empathy-new-chatroom-dialog.c:369
 msgid "Chat Room"
 msgstr "聊天室"
 
-#: ../src/empathy-new-chatroom-dialog.c:353
+#: ../src/empathy-new-chatroom-dialog.c:385
 msgid "Members"
 msgstr "成員"
 
 #. Translators: Room/Join's roomlist tooltip. Parameters are a channel name,
 #. yes/no, yes/no and a number.
-#: ../src/empathy-new-chatroom-dialog.c:553
+#: ../src/empathy-new-chatroom-dialog.c:623
 #, c-format
 msgid ""
 "%s\n"
@@ -4071,16 +4120,16 @@ msgstr ""
 "需要密碼:%s\n"
 "成員:%s"
 
-#: ../src/empathy-new-chatroom-dialog.c:555
-#: ../src/empathy-new-chatroom-dialog.c:556
+#: ../src/empathy-new-chatroom-dialog.c:625
+#: ../src/empathy-new-chatroom-dialog.c:626
 msgid "No"
 msgstr "否"
 
-#: ../src/empathy-new-chatroom-dialog.c:584
+#: ../src/empathy-new-chatroom-dialog.c:654
 msgid "Could not start room listing"
 msgstr "無法開始列出聊天室清單"
 
-#: ../src/empathy-new-chatroom-dialog.c:594
+#: ../src/empathy-new-chatroom-dialog.c:664
 msgid "Could not stop room listing"
 msgstr "無法停止列出聊天室清單"
 
@@ -4184,7 +4233,7 @@ msgstr "將來有命終相見,無命今生不相逄。"
 msgid "Juliet has disconnected"
 msgstr "祝英台已斷線"
 
-#: ../src/empathy-preferences.c:1166
+#: ../src/empathy-preferences.c:1175
 msgid "Preferences"
 msgstr "偏好設定"
 
@@ -4307,43 +4356,47 @@ msgid "Themes"
 msgstr "佈景主題"
 
 #: ../src/empathy-preferences.ui.h:30
+msgid "Use _echo cancellation to improve call quality"
+msgstr "使用回音消除來改善通話品質(_E)"
+
+#: ../src/empathy-preferences.ui.h:31
 msgid "Variant:"
 msgstr "樣式:"
 
-#: ../src/empathy-preferences.ui.h:31
+#: ../src/empathy-preferences.ui.h:32
 msgid "_Automatically connect on startup"
 msgstr "啟動時自動連線(_A)"
 
-#: ../src/empathy-preferences.ui.h:32
+#: ../src/empathy-preferences.ui.h:33
 msgid "_Cellphone"
 msgstr "手機(_C)"
 
-#: ../src/empathy-preferences.ui.h:33
+#: ../src/empathy-preferences.ui.h:34
 msgid "_Enable bubble notifications"
 msgstr "啟用氣泡式通知(_E)"
 
-#: ../src/empathy-preferences.ui.h:34
+#: ../src/empathy-preferences.ui.h:35
 msgid "_Enable sound notifications"
 msgstr "啟用音效通知(_E)"
 
-#: ../src/empathy-preferences.ui.h:35
+#: ../src/empathy-preferences.ui.h:36
 msgid "_GPS"
 msgstr "_GPS"
 
-#: ../src/empathy-preferences.ui.h:36
+#: ../src/empathy-preferences.ui.h:37
 msgid "_Network (IP, Wi-Fi)"
 msgstr "網路 (IP, Wi-Fi)(_N)"
 
-#: ../src/empathy-preferences.ui.h:37
+#: ../src/empathy-preferences.ui.h:38
 msgid "_Open new chats in separate windows"
 msgstr "在個別視窗開啟新的聊天(_O)"
 
-#: ../src/empathy-preferences.ui.h:38
+#: ../src/empathy-preferences.ui.h:39
 msgid "_Publish location to my contacts"
 msgstr "對我的連絡人公開位置(_P)"
 
 #. To translators: The longitude and latitude are rounded to closest 0,1 degrees, so for example 146,2345° is rounded to round(146,2345*10)/10 = 146,2 degrees.
-#: ../src/empathy-preferences.ui.h:40
+#: ../src/empathy-preferences.ui.h:41
 msgid "_Reduce location accuracy"
 msgstr "降低位置準確度(_R)"
 
@@ -4469,16 +4522,16 @@ msgid ""
 "extension."
 msgstr "選取的連線管理程式不支援遠端偵錯擴充功能。"
 
-#: ../src/empathy-invite-participant-dialog.c:179
-#: ../src/empathy-invite-participant-dialog.c:205
+#: ../src/empathy-invite-participant-dialog.c:197
+#: ../src/empathy-invite-participant-dialog.c:225
 msgid "Invite Participant"
 msgstr "邀請參與"
 
-#: ../src/empathy-invite-participant-dialog.c:180
+#: ../src/empathy-invite-participant-dialog.c:198
 msgid "Choose a contact to invite into the conversation:"
 msgstr "選擇想要邀請進入談話的聯絡人:"
 
-#: ../src/empathy-invite-participant-dialog.c:201
+#: ../src/empathy-invite-participant-dialog.c:221
 msgid "Invite"
 msgstr "邀請"
 
@@ -4499,23 +4552,27 @@ msgstr "初始選取所給予的帳號 (例:gabble/jabber/foo_40example_2eorg0
 msgid "<account-id>"
 msgstr "<account-id>"
 
-#: ../src/empathy-accounts.c:198
+#: ../src/empathy-accounts.c:196
+msgid "Show account assistant"
+msgstr "顯示帳號助理"
+
+#: ../src/empathy-accounts.c:202
 msgid "- Empathy Accounts"
 msgstr "- Empathy 帳號"
 
-#: ../src/empathy-accounts.c:237
+#: ../src/empathy-accounts.c:238
 msgid "Empathy Accounts"
 msgstr "Empathy 帳號"
 
-#: ../src/empathy-debugger.c:70
+#: ../src/empathy-debugger.c:69
 msgid "Show a particular service"
 msgstr "顯示特定服務"
 
-#: ../src/empathy-debugger.c:75
+#: ../src/empathy-debugger.c:74
 msgid "- Empathy Debugger"
 msgstr "- Empathy 除錯器"
 
-#: ../src/empathy-debugger.c:114
+#: ../src/empathy-debugger.c:113
 msgid "Empathy Debugger"
 msgstr "Empathy 除錯程式"
 
@@ -4523,39 +4580,39 @@ msgstr "Empathy 除錯程式"
 msgid "- Empathy Chat Client"
 msgstr "- Empathy 聊天用戶端"
 
-#: ../src/empathy-notifications-approver.c:203
+#: ../src/empathy-notifications-approver.c:190
 msgid "Respond"
 msgstr "回應"
 
-#: ../src/empathy-notifications-approver.c:217
-#: ../src/empathy-call-window.c:1459
+#: ../src/empathy-notifications-approver.c:204
+#: ../src/empathy-call-window.c:1566
 msgid "Reject"
 msgstr "拒絕"
 
-#: ../src/empathy-notifications-approver.c:222
-#: ../src/empathy-notifications-approver.c:227
-#: ../src/empathy-call-window.c:1460
+#: ../src/empathy-notifications-approver.c:209
+#: ../src/empathy-notifications-approver.c:214
+#: ../src/empathy-call-window.c:1567
 msgid "Answer"
 msgstr "接聽"
 
-#: ../src/empathy-notifications-approver.c:227
+#: ../src/empathy-notifications-approver.c:214
 msgid "Answer with video"
 msgstr "以視訊接聽"
 
-#: ../src/empathy-notifications-approver.c:235
-#: ../src/empathy-notifications-approver.c:245
+#: ../src/empathy-notifications-approver.c:222
+#: ../src/empathy-notifications-approver.c:232
 msgid "Decline"
 msgstr "拒絕"
 
-#: ../src/empathy-notifications-approver.c:239
-#: ../src/empathy-notifications-approver.c:250
+#: ../src/empathy-notifications-approver.c:226
+#: ../src/empathy-notifications-approver.c:237
 msgid "Accept"
 msgstr "接受"
 
 #. translators: the 'Provide' button is displayed in a notification
 #. * bubble when Empathy is asking for an account password; clicking on it
 #. * brings the password popup.
-#: ../src/empathy-notifications-approver.c:260
+#: ../src/empathy-notifications-approver.c:247
 msgid "Provide"
 msgstr "提供"
 
@@ -4566,32 +4623,97 @@ msgstr "%s 剛剛播打給您,但您正與他人通話。"
 
 #. Translators: this is an "Info" label. It should be as short
 #. * as possible.
-#: ../src/empathy-call-window.c:1088 ../src/empathy-call-window.c:1111
+#: ../src/empathy-call-window.c:1173 ../src/empathy-call-window.c:1196
 msgid "i"
 msgstr "訊"
 
-#: ../src/empathy-call-window.c:2775
+#: ../src/empathy-call-window.c:2941
 msgid "On hold"
 msgstr "保留"
 
-#: ../src/empathy-call-window.c:2778
+#: ../src/empathy-call-window.c:2944
 msgid "Mute"
 msgstr "靜音"
 
-#: ../src/empathy-call-window.c:2780
+#: ../src/empathy-call-window.c:2946
 msgid "Duration"
 msgstr "時間"
 
 #. Translators: 'status - minutes:seconds' the caller has been connected
-#: ../src/empathy-call-window.c:2783
+#: ../src/empathy-call-window.c:2949
 #, c-format
 msgid "%s — %d:%02dm"
 msgstr "%s — %d:%02dm"
 
+#: ../src/empathy-call-window.c:3219
+#, c-format
+msgid "Your current balance is %s."
+msgstr "您目前的餘額為 %s。"
+
+#: ../src/empathy-call-window.c:3223
+msgid "Sorry, you don’t have enough credit for that call."
+msgstr "很抱歉,您的存額不足以進行該通話。"
+
+#: ../src/empathy-call-window.c:3225
+msgid "Top Up"
+msgstr "加值"
+
 #: ../libempathy-gtk/empathy-search-bar.c:243
 msgid "_Match case"
 msgstr "比對大小寫(_M)"
 
+#~ msgid "Empathy has migrated butterfly logs"
+#~ msgstr "Empathy 已轉移 butterfly 日誌"
+
+#~ msgid "Whether Empathy has migrated butterfly logs."
+#~ msgstr "Empathy 是否應轉移 butterfly 日誌。"
+
+#~ msgid "Ungrouped"
+#~ msgstr "未群組"
+
+#~ msgid "Favorite People"
+#~ msgstr "喜好的人"
+
+#~ msgid "Select a contact"
+#~ msgstr "選擇連絡人"
+
+#~ msgid "Contact ID:"
+#~ msgstr "連絡人 ID:"
+
+#~ msgid "C_hat"
+#~ msgstr "聊天(_C)"
+
+#~ msgid "Send _Video"
+#~ msgstr "傳送視訊(_V)"
+
+#~ msgid "C_all"
+#~ msgstr "通話(_A)"
+
+#~ msgid "Set your presence and current status"
+#~ msgstr "設定您的上線與目前的狀態"
+
+#~ msgid "The selected contact cannot receive files."
+#~ msgstr "所選的聯絡人無法接收檔案。"
+
+#~ msgid "The selected contact is offline."
+#~ msgstr "所選的聯絡人已經離線。"
+
+#~ msgctxt "encoding video codec"
+#~ msgid "Unknown"
+#~ msgstr "未知"
+
+#~ msgctxt "encoding audio codec"
+#~ msgid "Unknown"
+#~ msgstr "未知"
+
+#~ msgctxt "decoding video codec"
+#~ msgid "Unknown"
+#~ msgstr "未知"
+
+#~ msgctxt "decoding audio codec"
+#~ msgid "Unknown"
+#~ msgstr "未知"
+
 #~ msgid "Find Next"
 #~ msgstr "尋找下一個"
 
@@ -4753,9 +4875,6 @@ msgstr "比對大小寫(_M)"
 #~ "fails"
 #~ msgstr "嘗試匯入任何認識的帳號,若失敗時則顯示協助"
 
-#~ msgid "Show the accounts dialog"
-#~ msgstr "顯示帳號對話盒"
-
 #~ msgid "The error message was: <span style=\"italic\">%s</span>"
 #~ msgstr "錯誤訊息為: <span style=\"italic\">%s</span>"
 
index 0a4d2675c64637720d350db3392cdc635b6b189c..5d5dc62620d21423760f67c9345478a3f1e373b2 100755 (executable)
@@ -9,7 +9,7 @@ import time
 from string import Template
 from optparse import OptionParser
 
-last_tag_pattern = 'EMPATHY_3_2*'
+last_tag_pattern = 'EMPATHY_3_3*'
 upload_server = 'master.gnome.org'
 template = '''\
 $name $version is now available for download from:
index efd6dc1844b3d8b41401a7b4cfc259e990a8d9f3..ecfd78344446e60d4036026b11812152df761187 100644 (file)
@@ -119,11 +119,11 @@ build_error_vbox (const gchar *primary_message,
   GtkWidget *main_vbox, *w, *hbox;
   PangoAttrList *list;
 
-  main_vbox = gtk_vbox_new (FALSE, 12);
+  main_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12);
   gtk_container_set_border_width (GTK_CONTAINER (main_vbox), 12);
   gtk_widget_show (main_vbox);
 
-  hbox = gtk_hbox_new (FALSE, 12);
+  hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
   gtk_box_pack_start (GTK_BOX (main_vbox), hbox, FALSE, FALSE, 0);
   gtk_widget_show (hbox);
 
@@ -600,11 +600,11 @@ account_assistant_build_introduction_page (EmpathyAccountAssistant *self)
   GdkPixbuf *pix;
   const gchar *str;
 
-  main_vbox = gtk_vbox_new (FALSE, 12);
+  main_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12);
   gtk_widget_show (main_vbox);
   gtk_container_set_border_width (GTK_CONTAINER (main_vbox), 12);
 
-  hbox_1 = gtk_hbox_new (FALSE, 12);
+  hbox_1 = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
   gtk_box_pack_start (GTK_BOX (main_vbox), hbox_1, TRUE, TRUE, 0);
   gtk_widget_show (hbox_1);
 
@@ -638,13 +638,14 @@ account_assistant_build_introduction_page (EmpathyAccountAssistant *self)
   gtk_box_pack_start (GTK_BOX (main_vbox), w, TRUE, TRUE, 0);
   gtk_widget_show (w);
 
-  vbox_1 = gtk_vbox_new (TRUE, 0);
+  vbox_1 = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
+  gtk_box_set_homogeneous (GTK_BOX (vbox_1), TRUE);
   gtk_container_add (GTK_CONTAINER (w), vbox_1);
   gtk_widget_show (vbox_1);
 
   if (empathy_import_accounts_to_import ())
     {
-      hbox_1 = gtk_hbox_new (FALSE, 0);
+      hbox_1 = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
       gtk_box_pack_start (GTK_BOX (vbox_1), hbox_1, TRUE, TRUE, 0);
       gtk_widget_show (hbox_1);
 
@@ -721,7 +722,7 @@ account_assistant_build_import_page (EmpathyAccountAssistant *self)
   EmpathyImportWidget *iw;
   EmpathyAccountAssistantPriv *priv = GET_PRIV (self);
 
-  main_vbox = gtk_vbox_new (FALSE, 12);
+  main_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12);
   gtk_container_set_border_width (GTK_CONTAINER (main_vbox), 12);
   w = gtk_label_new (_("Select the accounts you want to import:"));
   gtk_misc_set_alignment (GTK_MISC (w), 0.0, 0.5);
@@ -767,11 +768,11 @@ account_assistant_build_enter_or_create_page (EmpathyAccountAssistant *self)
   EmpathyAccountAssistantPriv *priv = GET_PRIV (self);
   GtkWidget *main_vbox, *w, *chooser, *vbox, *hbox, *radio;
 
-  main_vbox = gtk_vbox_new (FALSE, 12);
+  main_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12);
   gtk_container_set_border_width (GTK_CONTAINER (main_vbox), 12);
   gtk_widget_show (main_vbox);
 
-  hbox = gtk_hbox_new (FALSE, 6);
+  hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
   gtk_box_pack_start (GTK_BOX (main_vbox), hbox, FALSE, FALSE, 0);
   gtk_widget_show (hbox);
 
@@ -790,7 +791,7 @@ account_assistant_build_enter_or_create_page (EmpathyAccountAssistant *self)
   gtk_widget_show (chooser);
   priv->chooser = chooser;
 
-  vbox = gtk_vbox_new (FALSE, 6);
+  vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
   gtk_box_pack_end (GTK_BOX (main_vbox), vbox, FALSE, FALSE, 0);
   gtk_widget_show (vbox);
 
@@ -806,7 +807,7 @@ account_assistant_build_enter_or_create_page (EmpathyAccountAssistant *self)
   gtk_box_pack_start (GTK_BOX (vbox), w, FALSE, FALSE, 0);
   gtk_widget_show (w);
 
-  hbox = gtk_hbox_new (FALSE, 6);
+  hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
   gtk_container_add (GTK_CONTAINER (w), hbox);
   gtk_widget_show (hbox);
 
@@ -1072,11 +1073,11 @@ account_assistant_build_salut_page (EmpathyAccountAssistant *self)
   EmpathyAccountWidget *widget_object;
   gchar *markup;
 
-  main_vbox = gtk_vbox_new (FALSE, 12);
+  main_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12);
   gtk_widget_show (main_vbox);
   gtk_container_set_border_width (GTK_CONTAINER (main_vbox), 12);
 
-  hbox_1 = gtk_hbox_new (FALSE, 12);
+  hbox_1 = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
   gtk_box_pack_start (GTK_BOX (main_vbox), hbox_1, TRUE, TRUE, 0);
   gtk_widget_show (hbox_1);
 
index d1c7e12044982ce98884d7830930cc480fa3caf2..9e2fea781614e546c73271ae9d9477a1fcf3a837 100644 (file)
@@ -2178,7 +2178,7 @@ accounts_dialog_build_ui (EmpathyAccountsDialog *dialog)
   gchar                        *filename;
   EmpathyAccountsDialogPriv    *priv = GET_PRIV (dialog);
   GtkWidget *content_area, *action_area;
-  GtkWidget *grid;
+  GtkWidget *grid, *hbox;
   GtkWidget *alig;
   GtkWidget *sw, *toolbar;
   GtkStyleContext *context;
@@ -2277,7 +2277,13 @@ accounts_dialog_build_ui (EmpathyAccountsDialog *dialog)
 
   /* first row */
   priv->label_name = gtk_label_new (NULL);
-  gtk_grid_attach (GTK_GRID (grid), priv->label_name, 1, 0, 3, 1);
+  gtk_grid_attach (GTK_GRID (grid), priv->label_name, 1, 0, 1, 1);
+
+  /* second row */
+  hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 2);
+  gtk_widget_set_hexpand (hbox, TRUE);
+  gtk_widget_set_halign (hbox, GTK_ALIGN_CENTER);
+  gtk_grid_attach (GTK_GRID (grid), hbox, 1, 1, 1, 1);
 
   /* set up spinner */
   priv->throbber = gtk_spinner_new ();
@@ -2288,18 +2294,17 @@ accounts_dialog_build_ui (EmpathyAccountsDialog *dialog)
 
   priv->label_status = gtk_label_new (NULL);
   gtk_label_set_line_wrap (GTK_LABEL (priv->label_status), TRUE);
-  gtk_widget_set_hexpand (priv->label_status, TRUE);
 
-  gtk_grid_attach (GTK_GRID (grid), priv->throbber, 1, 1, 1, 1);
-  gtk_grid_attach (GTK_GRID (grid), priv->image_status, 2, 1, 1, 1);
-  gtk_grid_attach (GTK_GRID (grid), priv->label_status, 3, 1, 1, 1);
+  gtk_box_pack_start (GTK_BOX (hbox), priv->throbber, FALSE, FALSE, 0);
+  gtk_box_pack_start (GTK_BOX (hbox), priv->image_status, FALSE, FALSE, 0);
+  gtk_box_pack_start (GTK_BOX (hbox), priv->label_status, FALSE, FALSE, 0);
 
   /* enabled switch */
   priv->enabled_switch = gtk_switch_new ();
   gtk_widget_set_valign (priv->enabled_switch, GTK_ALIGN_CENTER);
   g_signal_connect (priv->enabled_switch, "notify::active",
       G_CALLBACK (accounts_dialog_enable_switch_active_cb), dialog);
-  gtk_grid_attach (GTK_GRID (grid), priv->enabled_switch, 4, 0, 1, 2);
+  gtk_grid_attach (GTK_GRID (grid), priv->enabled_switch, 2, 0, 1, 2);
 
   gtk_widget_show_all (grid);
 
index 3d4496cd144d3b57493c407628775db11f3c93dc..5ab14b541a636a8d7c0619fe08d6f64d3446f38c 100644 (file)
@@ -61,6 +61,10 @@ enum {
 struct _EmpathyGstAudioSinkPrivate
 {
   GstElement *sink;
+  gboolean echo_cancel;
+  gdouble volume;
+  gint volume_idle_id;
+  GStaticMutex volume_mutex;
 };
 
 #define EMPATHY_GST_AUDIO_SINK_GET_PRIVATE(o) \
@@ -71,6 +75,8 @@ static void
 empathy_audio_sink_init (EmpathyGstAudioSink *self)
 {
   self->priv = EMPATHY_GST_AUDIO_SINK_GET_PRIVATE (self);
+  self->priv->echo_cancel = TRUE;
+  g_static_mutex_init (&self->priv->volume_mutex);
 }
 
 static GstPad * empathy_audio_sink_request_new_pad (GstElement *self,
@@ -84,11 +90,13 @@ static void
 empathy_audio_sink_set_property (GObject *object,
   guint property_id, const GValue *value, GParamSpec *pspec)
 {
+  EmpathyGstAudioSink *self = EMPATHY_GST_AUDIO_SINK (object);
   switch (property_id)
     {
       case PROP_VOLUME:
-        empathy_audio_sink_set_volume (EMPATHY_GST_AUDIO_SINK (object),
-          g_value_get_double (value));
+        g_static_mutex_lock (&self->priv->volume_mutex);
+        self->priv->volume = g_value_get_double (value);
+        g_static_mutex_unlock (&self->priv->volume_mutex);
         break;
       default:
         G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
@@ -99,17 +107,34 @@ static void
 empathy_audio_sink_get_property (GObject *object,
   guint property_id, GValue *value, GParamSpec *pspec)
 {
+  EmpathyGstAudioSink *self = EMPATHY_GST_AUDIO_SINK (object);
   switch (property_id)
     {
       case PROP_VOLUME:
-        g_value_set_double (value,
-          empathy_audio_sink_get_volume (EMPATHY_GST_AUDIO_SINK (object)));
+        g_value_set_double (value, self->priv->volume);
         break;
       default:
         G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
     }
 }
 
+static void
+empathy_audio_sink_dispose (GObject *object)
+{
+  EmpathyGstAudioSink *self = EMPATHY_GST_AUDIO_SINK (object);
+  EmpathyGstAudioSinkPrivate *priv = self->priv;
+
+  if (priv->volume_idle_id != 0)
+    g_source_remove (priv->volume_idle_id);
+  priv->volume_idle_id = 0;
+
+  g_static_mutex_free (&self->priv->volume_mutex);
+
+  /* release any references held by the object here */
+  if (G_OBJECT_CLASS (empathy_audio_sink_parent_class)->dispose)
+    G_OBJECT_CLASS (empathy_audio_sink_parent_class)->dispose (object);
+}
+
 static void
 empathy_audio_sink_class_init (EmpathyGstAudioSinkClass
   *empathy_audio_sink_class)
@@ -127,6 +152,7 @@ empathy_audio_sink_class_init (EmpathyGstAudioSinkClass
 
   object_class->set_property = empathy_audio_sink_set_property;
   object_class->get_property = empathy_audio_sink_get_property;
+  object_class->dispose = empathy_audio_sink_dispose;
 
   element_class->request_new_pad = empathy_audio_sink_request_new_pad;
   element_class->release_pad = empathy_audio_sink_release_pad;
@@ -151,47 +177,22 @@ empathy_audio_sink_new (void)
   return gst_element_factory_make ("empathyaudiosink", NULL);
 }
 
-static gboolean
-check_volume_support (EmpathyGstAudioSink *self)
-{
-  gchar *name;
-
-  if (GST_IS_STREAM_VOLUME (self->priv->sink))
-    return TRUE;
-
-  name = gst_element_get_name (self->priv->sink);
-  DEBUG ("Element %s doesn't support volume", name);
-
-  g_free (name);
-  return FALSE;
-}
-
 void
 empathy_audio_sink_set_volume (EmpathyGstAudioSink *sink, gdouble volume)
 {
-  EmpathyGstAudioSinkPrivate *priv = EMPATHY_GST_AUDIO_SINK_GET_PRIVATE (sink);
-
-  if (!check_volume_support (sink))
-      return;
-
-  g_object_set (priv->sink, "volume", volume, NULL);
+  g_object_set (sink, "volume", volume, NULL);
 }
 
 gdouble
 empathy_audio_sink_get_volume (EmpathyGstAudioSink *sink)
 {
   EmpathyGstAudioSinkPrivate *priv = EMPATHY_GST_AUDIO_SINK_GET_PRIVATE (sink);
-  gdouble volume;
-
-  if (!check_volume_support (sink))
-      return 1.0;
 
-  g_object_get (priv->sink, "volume", &volume, NULL);
-  return volume;
+  return priv->volume;
 }
 
 static GstElement *
-create_sink (void)
+create_sink (EmpathyGstAudioSink *self)
 {
   GstElement *sink;
   const gchar *description;
@@ -217,18 +218,84 @@ create_sink (void)
   if (sink == NULL)
     return NULL;
 
-  empathy_call_set_stream_properties (sink);
+  empathy_call_set_stream_properties (sink, self->priv->echo_cancel);
+
+  /* Set latency (buffering on the PulseAudio side) of 40ms and transfer data
+   * in 10ms chunks */
+  g_object_set (sink, "buffer-time", 40000, "latency-time", 10000, NULL);
 
   return sink;
 }
 
+static gboolean
+empathy_audio_sink_volume_idle_updated (gpointer user_data)
+{
+  EmpathyGstAudioSink *self = EMPATHY_GST_AUDIO_SINK (user_data);
+
+  g_static_mutex_lock (&self->priv->volume_mutex);
+  self->priv->volume_idle_id = 0;
+  g_static_mutex_unlock (&self->priv->volume_mutex);
+
+  g_object_notify (G_OBJECT (self), "volume");
+
+  return FALSE;
+}
+
+static void
+empathy_audio_sink_volume_updated (GObject *object,
+  GParamSpec *pspec,
+  gpointer user_data)
+{
+  EmpathyGstAudioSink *self = EMPATHY_GST_AUDIO_SINK (user_data);
+  gdouble volume;
+
+  g_static_mutex_lock (&self->priv->volume_mutex);
+
+  g_object_get (object, "volume", &volume, NULL);
+  if (self->priv->volume == volume)
+    goto out;
+
+  self->priv->volume = volume;
+  if (self->priv->volume_idle_id == 0)
+    self->priv->volume_idle_id = g_idle_add (
+      empathy_audio_sink_volume_idle_updated, self);
+
+out:
+  g_static_mutex_unlock (&self->priv->volume_mutex);
+}
+
+static gboolean
+empathy_audio_sink_volume_idle_setup (gpointer user_data)
+{
+  EmpathyGstAudioSink *self = EMPATHY_GST_AUDIO_SINK (user_data);
+  gdouble volume;
+
+  g_static_mutex_lock (&self->priv->volume_mutex);
+  self->priv->volume_idle_id = 0;
+  g_static_mutex_unlock (&self->priv->volume_mutex);
+
+  /* We can't do a bidirection bind as the ::notify comes from another
+   * thread, for other bits of empathy it's most simpler if it comes from
+   * the main thread */
+  g_object_bind_property (self, "volume", self->priv->sink, "volume",
+    G_BINDING_DEFAULT);
+
+  /* sync and callback for bouncing */
+  g_object_get (self->priv->sink, "volume", &volume, NULL);
+  g_object_set (self, "volume", volume, NULL);
+  g_signal_connect (self->priv->sink, "notify::volume",
+    G_CALLBACK (empathy_audio_sink_volume_updated), self);
+
+  return FALSE;
+}
+
 static GstPad *
 empathy_audio_sink_request_new_pad (GstElement *element,
   GstPadTemplate *templ,
   const gchar* name)
 {
   EmpathyGstAudioSink *self = EMPATHY_GST_AUDIO_SINK (element);
-  GstElement *bin, *volume, *resample, *audioconvert0, *audioconvert1;
+  GstElement *bin, *resample, *audioconvert0, *audioconvert1;
   GstPad *pad = NULL;
   GstPad *subpad, *filterpad;
 
@@ -252,20 +319,30 @@ empathy_audio_sink_request_new_pad (GstElement *element,
 
   gst_bin_add (GST_BIN (bin), audioconvert1);
 
-  volume = gst_element_factory_make ("volume", NULL);
-  if (volume == NULL)
+  self->priv->sink = create_sink (self);
+  if (self->priv->sink == NULL)
     goto error;
 
-  gst_bin_add (GST_BIN (bin), volume);
+  if (GST_IS_STREAM_VOLUME (self->priv->sink))
+    {
+      g_static_mutex_lock (&self->priv->volume_mutex);
+      if (self->priv->volume_idle_id == 0)
+        self->priv->volume_idle_id = g_idle_add (
+          empathy_audio_sink_volume_idle_setup, self);
+      g_static_mutex_unlock (&self->priv->volume_mutex);
+    }
+  else
+    {
+      gchar *n = gst_element_get_name (self->priv->sink);
 
-  self->priv->sink = create_sink ();
-  if (self->priv->sink == NULL)
-    goto error;
+      DEBUG ("Element %s doesn't support volume", n);
+      g_free (n);
+    }
 
   gst_bin_add (GST_BIN (bin), self->priv->sink);
 
   if (!gst_element_link_many (audioconvert0, resample, audioconvert1,
-      volume, self->priv->sink, NULL))
+      self->priv->sink, NULL))
     goto error;
 
   filterpad = gst_element_get_static_pad (audioconvert0, "sink");
@@ -311,3 +388,14 @@ empathy_audio_sink_release_pad (GstElement *element,
   gst_pad_set_active (pad, FALSE);
   gst_element_remove_pad (element, pad);
 }
+
+void
+empathy_audio_sink_set_echo_cancel (EmpathyGstAudioSink *sink,
+  gboolean echo_cancel)
+{
+  DEBUG ("Sink echo cancellation setting: %s", echo_cancel ? "on" : "off");
+  sink->priv->echo_cancel = echo_cancel;
+  if (sink->priv->sink != NULL)
+    empathy_call_set_stream_properties (sink->priv->sink,
+      sink->priv->echo_cancel);
+}
index cc21fc4675d7ae691b79f4ef343577127f3c651b..ceb0bbe360d8c2b38c96c6b8252b297062563ea6 100644 (file)
@@ -63,6 +63,8 @@ GstElement *empathy_audio_sink_new (void);
 void empathy_audio_sink_set_volume (EmpathyGstAudioSink *sink, gdouble volume);
 
 gdouble empathy_audio_sink_get_volume (EmpathyGstAudioSink *sink);
+void empathy_audio_sink_set_echo_cancel (EmpathyGstAudioSink *sink,
+  gboolean echo_cancel);
 
 G_END_DECLS
 
index bd3c433fad5ced3dba01ad6dfe5851c7f7a5ca84..aa271fa1c067680d578b7a37a39d03bdf09e115f 100644 (file)
@@ -23,6 +23,8 @@
 #include <stdio.h>
 #include <stdlib.h>
 
+#include <gst/interfaces/mixer.h>
+
 #include <libempathy/empathy-utils.h>
 #include <libempathy-gtk/empathy-call-utils.h>
 
@@ -47,19 +49,17 @@ static guint signals[LAST_SIGNAL] = {0};
 
 enum {
     PROP_VOLUME = 1,
+    PROP_MUTE,
     PROP_RMS_LEVEL,
     PROP_PEAK_LEVEL,
     PROP_MICROPHONE,
 };
 
 /* private structure */
-typedef struct _EmpathyGstAudioSrcPrivate EmpathyGstAudioSrcPrivate;
-
 struct _EmpathyGstAudioSrcPrivate
 {
   gboolean dispose_has_run;
   GstElement *src;
-  GstElement *volume;
   GstElement *level;
 
   EmpathyMicMonitor *mic_monitor;
@@ -72,14 +72,100 @@ struct _EmpathyGstAudioSrcPrivate
   gdouble peak_level;
   gdouble rms_level;
 
+  gdouble volume;
+  gboolean mute;
+  /* the mixer track on src we follow and adjust */
+  GstMixerTrack *track;
+
   GMutex *lock;
-  guint idle_id;
+  guint level_idle_id;
+  guint volume_idle_id;
 };
 
 #define EMPATHY_GST_AUDIO_SRC_GET_PRIVATE(o) \
   (G_TYPE_INSTANCE_GET_PRIVATE ((o), EMPATHY_TYPE_GST_AUDIO_SRC, \
   EmpathyGstAudioSrcPrivate))
 
+/* There is no predefined maximum channels by gstreamer, just pick 32, which is
+ * the same as the pulseaudio maximum */
+#define MAX_MIC_CHANNELS 32
+
+static void
+empathy_audio_set_hw_mute (EmpathyGstAudioSrc *self, gboolean mute)
+{
+  g_mutex_lock (self->priv->lock);
+  /* If there is no mixer available ignore the setting */
+  if (self->priv->track == NULL)
+    goto out;
+
+  gst_mixer_set_mute (GST_MIXER (self->priv->src), self->priv->track, mute);
+
+out:
+  g_mutex_unlock (self->priv->lock);
+  self->priv->mute = mute;
+}
+
+static gboolean
+empathy_audio_src_get_hw_mute (EmpathyGstAudioSrc *self)
+{
+  gboolean result = self->priv->mute;
+
+  g_mutex_lock (self->priv->lock);
+  if (self->priv->track == NULL)
+    goto out;
+
+  result = GST_MIXER_TRACK_HAS_FLAG (self->priv->track, GST_MIXER_TRACK_MUTE);
+out:
+  g_mutex_unlock (self->priv->lock);
+
+  return result;
+}
+
+static void
+empathy_audio_src_set_hw_volume (EmpathyGstAudioSrc *self,
+    gdouble volume)
+{
+  gint volumes[MAX_MIC_CHANNELS];
+  int i;
+
+  g_mutex_lock (self->priv->lock);
+  /* If there is no mixer available ignore the setting */
+  if (self->priv->track == NULL)
+    goto out;
+
+  for (i = 0; i < MAX_MIC_CHANNELS; i++)
+    volumes[i] = self->priv->track->max_volume * volume;
+
+  gst_mixer_set_volume (GST_MIXER (self->priv->src),
+    self->priv->track, volumes);
+
+out:
+   g_mutex_unlock (self->priv->lock);
+
+  self->priv->volume = volume;
+}
+
+static gdouble
+empathy_audio_src_get_hw_volume (EmpathyGstAudioSrc *self)
+{
+  gint volumes[MAX_MIC_CHANNELS];
+  gdouble result = self->priv->volume;
+
+  g_mutex_lock (self->priv->lock);
+  if (self->priv->track == NULL)
+    goto out;
+
+  gst_mixer_get_volume (GST_MIXER (self->priv->src),
+    self->priv->track, volumes);
+  result = volumes[0]/(gdouble)self->priv->track->max_volume;
+
+out:
+  g_mutex_unlock (self->priv->lock);
+
+  return result;
+}
+
+
 gboolean
 empathy_audio_src_supports_changing_mic (EmpathyGstAudioSrc *self)
 {
@@ -106,7 +192,6 @@ empathy_audio_src_get_mic_index (EmpathyGstAudioSrc *self)
   return audio_src_idx;
 }
 
-
 static void
 empathy_audio_src_microphone_changed_cb (EmpathyMicMonitor *monitor,
     guint source_output_idx,
@@ -180,6 +265,43 @@ empathy_audio_src_source_output_index_notify (GObject *object,
       source_output_idx, empathy_audio_src_get_current_mic_cb, self);
 }
 
+static GstMixerTrack *
+empathy_audio_src_get_track (GstElement *src)
+{
+  const GList *t;
+  GstMixerTrack *track = NULL;
+
+  if (!gst_element_implements_interface (src, GST_TYPE_MIXER))
+    {
+      g_warning ("No mixer interface implementation, can't control volume");
+      return NULL;
+    }
+
+  for (t = gst_mixer_list_tracks (GST_MIXER (src));
+      t != NULL; t = g_list_next (t))
+    {
+      GstMixerTrack *tr = t->data;
+      if (!tp_strdiff (tr->label, "Master"))
+        {
+          track = tr;
+          break;
+        }
+    }
+
+  if (track == NULL)
+    {
+      g_warning ("No suitable track found");
+    }
+  else if (track->num_channels > MAX_MIC_CHANNELS)
+    {
+      g_warning ("Microphones with more then %d channels not supported ",
+        MAX_MIC_CHANNELS);
+      track = NULL;
+    }
+
+  return track;
+}
+
 static GstElement *
 create_src (void)
 {
@@ -207,7 +329,10 @@ create_src (void)
   if (src == NULL)
     return NULL;
 
-  empathy_call_set_stream_properties (src);
+  empathy_call_set_stream_properties (src, TRUE);
+
+  /* Set latency (buffering on the PulseAudio side) of 20ms */
+  g_object_set (src, "buffer-time", 20000, NULL);
 
   return src;
 }
@@ -217,9 +342,13 @@ empathy_audio_src_init (EmpathyGstAudioSrc *obj)
 {
   EmpathyGstAudioSrcPrivate *priv = EMPATHY_GST_AUDIO_SRC_GET_PRIVATE (obj);
   GstPad *ghost, *src;
+  GstElement *capsfilter;
+  GstCaps *caps;
 
+  obj->priv = priv;
   priv->peak_level = -G_MAXDOUBLE;
   priv->lock = g_mutex_new ();
+  priv->volume = 1.0;
 
   priv->src = create_src ();
   if (priv->src == NULL)
@@ -227,15 +356,25 @@ empathy_audio_src_init (EmpathyGstAudioSrc *obj)
 
   gst_bin_add (GST_BIN (obj), priv->src);
 
-  priv->volume = gst_element_factory_make ("volume", NULL);
-  g_object_ref (priv->volume);
-
-  gst_bin_add (GST_BIN (obj), priv->volume);
-  gst_element_link (priv->src, priv->volume);
+  /* Explicitly state what format we want from pulsesrc. This pushes resampling
+   * and format conversion as early as possible, lowering the amount of data
+   * transferred and thus improving performance. When moving to GStreamer
+   * 0.11/1.0, this should change so that we actually request what the encoder
+   * wants downstream. */
+  caps = gst_caps_new_simple ("audio/x-raw-int",
+      "channels", G_TYPE_INT, 1,
+      "width", G_TYPE_INT, 16,
+      "depth", G_TYPE_INT, 16,
+      "rate", G_TYPE_INT, 32000,
+      NULL);
+  capsfilter = gst_element_factory_make ("capsfilter", NULL);
+  g_object_set (G_OBJECT (capsfilter), "caps", caps, NULL);
+  gst_bin_add (GST_BIN (obj), capsfilter);
+  gst_element_link (priv->src, capsfilter);
 
   priv->level = gst_element_factory_make ("level", NULL);
   gst_bin_add (GST_BIN (obj), priv->level);
-  gst_element_link (priv->volume, priv->level);
+  gst_element_link (capsfilter, priv->level);
 
   src = gst_element_get_static_pad (priv->level, "src");
 
@@ -272,9 +411,13 @@ empathy_audio_src_set_property (GObject *object,
   switch (property_id)
     {
       case PROP_VOLUME:
-        empathy_audio_src_set_volume (EMPATHY_GST_AUDIO_SRC (object),
+        empathy_audio_src_set_hw_volume (EMPATHY_GST_AUDIO_SRC (object),
           g_value_get_double (value));
         break;
+      case PROP_MUTE:
+        empathy_audio_set_hw_mute (EMPATHY_GST_AUDIO_SRC (object),
+          g_value_get_boolean (value));
+        break;
       default:
         G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
     }
@@ -290,8 +433,10 @@ empathy_audio_src_get_property (GObject *object,
   switch (property_id)
     {
       case PROP_VOLUME:
-        g_value_set_double (value,
-          empathy_audio_src_get_volume (self));
+        g_value_set_double (value, priv->volume);
+        break;
+      case PROP_MUTE:
+        g_value_set_boolean (value, priv->mute);
         break;
       case PROP_PEAK_LEVEL:
         g_mutex_lock (priv->lock);
@@ -336,6 +481,11 @@ empathy_audio_src_class_init (EmpathyGstAudioSrcClass
     G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
   g_object_class_install_property (object_class, PROP_VOLUME, param_spec);
 
+  param_spec = g_param_spec_boolean ("mute", "Mute", "mute contol",
+    FALSE,
+    G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+  g_object_class_install_property (object_class, PROP_MUTE, param_spec);
+
   param_spec = g_param_spec_double ("peak-level", "peak level", "peak level",
     -G_MAXDOUBLE, G_MAXDOUBLE, 0,
     G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
@@ -379,10 +529,13 @@ empathy_audio_src_dispose (GObject *object)
 
   priv->dispose_has_run = TRUE;
 
-  if (priv->idle_id != 0)
-    g_source_remove (priv->idle_id);
+  if (priv->level_idle_id != 0)
+    g_source_remove (priv->level_idle_id);
+  priv->level_idle_id = 0;
 
-  priv->idle_id = 0;
+  if (priv->volume_idle_id != 0)
+    g_source_remove (priv->volume_idle_id);
+  priv->volume_idle_id = 0;
 
   tp_clear_object (&priv->mic_monitor);
 
@@ -414,21 +567,51 @@ empathy_audio_src_levels_updated (gpointer user_data)
 
   g_signal_emit (self, signals[PEAK_LEVEL_CHANGED], 0, priv->peak_level);
   g_signal_emit (self, signals[RMS_LEVEL_CHANGED], 0, priv->rms_level);
-  priv->idle_id = 0;
+  priv->level_idle_id = 0;
 
   g_mutex_unlock (priv->lock);
 
   return FALSE;
 }
 
+static gboolean
+empathy_audio_src_volume_changed (gpointer user_data)
+{
+  EmpathyGstAudioSrc *self = EMPATHY_GST_AUDIO_SRC (user_data);
+  EmpathyGstAudioSrcPrivate *priv = EMPATHY_GST_AUDIO_SRC_GET_PRIVATE (self);
+  gdouble volume;
+  gboolean mute;
+
+  g_mutex_lock (priv->lock);
+  priv->volume_idle_id = 0;
+  g_mutex_unlock (priv->lock);
+
+  volume = empathy_audio_src_get_hw_volume (self);
+
+  if (volume != priv->volume)
+    {
+      priv->volume = volume;
+      g_object_notify (G_OBJECT (self), "volume");
+    }
+
+  mute = empathy_audio_src_get_hw_mute (self);
+  if (mute != priv->mute)
+    {
+      priv->mute = mute;
+      g_object_notify (G_OBJECT (self), "mute");
+    }
+
+  return FALSE;
+}
+
 static void
 empathy_audio_src_handle_message (GstBin *bin, GstMessage *message)
 {
   EmpathyGstAudioSrc *self = EMPATHY_GST_AUDIO_SRC (bin);
   EmpathyGstAudioSrcPrivate *priv = EMPATHY_GST_AUDIO_SRC_GET_PRIVATE (self);
 
-  if  (GST_MESSAGE_TYPE (message) == GST_MESSAGE_ELEMENT &&
-        GST_MESSAGE_SRC (message) == GST_OBJECT (priv->level))
+  if (GST_MESSAGE_TYPE (message) == GST_MESSAGE_ELEMENT &&
+      GST_MESSAGE_SRC (message) == GST_OBJECT (priv->level))
     {
       const GstStructure *s;
       const gchar *name;
@@ -473,11 +656,63 @@ empathy_audio_src_handle_message (GstBin *bin, GstMessage *message)
 
       priv->peak_level = peak;
       priv->rms_level = rms;
-      if (priv->idle_id == 0)
-        priv->idle_id = g_idle_add (empathy_audio_src_levels_updated, self);
+      if (priv->level_idle_id == 0)
+        priv->level_idle_id = g_idle_add (
+          empathy_audio_src_levels_updated, self);
 
       g_mutex_unlock (priv->lock);
     }
+  else if (GST_MESSAGE_TYPE (message) == GST_MESSAGE_ELEMENT &&
+        GST_MESSAGE_SRC (message) == GST_OBJECT (priv->src))
+    {
+      GstMixerTrack *track = NULL;
+
+      /* Listen for mute or volume changes on the src element */
+      if (gst_mixer_message_get_type (message) ==
+          GST_MIXER_MESSAGE_VOLUME_CHANGED)
+        gst_mixer_message_parse_volume_changed (message, &track,
+            NULL, NULL);
+
+      if (gst_mixer_message_get_type (message) ==
+          GST_MIXER_MESSAGE_MUTE_TOGGLED)
+        gst_mixer_message_parse_mute_toggled (message, &track, NULL);
+
+      g_mutex_lock (priv->lock);
+
+      if (track != NULL && track == priv->track && priv->volume_idle_id == 0)
+        priv->volume_idle_id = g_idle_add (
+            empathy_audio_src_volume_changed, self);
+
+      g_mutex_unlock (priv->lock);
+    }
+  else if  (GST_MESSAGE_TYPE (message) == GST_MESSAGE_STATE_CHANGED &&
+      GST_MESSAGE_SRC (message) == GST_OBJECT (priv->src))
+    {
+      GstState old, new;
+
+      gst_message_parse_state_changed (message, &old, &new, NULL);
+
+      /* GstMixer is only available in state >= READY, so only start
+       * controlling the source element when going to ready state and stop
+       * doing so when going below ready. Furthermore once we have mixer read
+       * the current volume level from it and remove the settings done by
+       * Empathy. We want to pick up the level pulseaudio saved */
+      if (old == GST_STATE_NULL && new == GST_STATE_READY)
+        {
+          g_mutex_lock (priv->lock);
+          priv->track = empathy_audio_src_get_track (priv->src);
+          if (priv->track != NULL)
+            priv->volume_idle_id = g_idle_add (
+              empathy_audio_src_volume_changed, self);
+          g_mutex_unlock (priv->lock);
+        }
+      else if (old == GST_STATE_READY && new == GST_STATE_NULL)
+        {
+          g_mutex_lock (priv->lock);
+          priv->track = NULL;
+          g_mutex_unlock (priv->lock);
+        }
+    }
 
 out:
    GST_BIN_CLASS (empathy_audio_src_parent_class)->handle_message (bin,
@@ -499,33 +734,23 @@ empathy_audio_src_new (void)
 }
 
 void
-empathy_audio_src_set_volume (EmpathyGstAudioSrc *src, gdouble volume)
+empathy_audio_src_set_echo_cancel (EmpathyGstAudioSrc *src,
+  gboolean enable)
 {
-  EmpathyGstAudioSrcPrivate *priv = EMPATHY_GST_AUDIO_SRC_GET_PRIVATE (src);
-  GParamSpec *pspec;
-  GParamSpecDouble *pspec_double;
-
-  pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (priv->volume),
-    "volume");
-
-  g_assert (pspec != NULL);
-
-  pspec_double = G_PARAM_SPEC_DOUBLE (pspec);
-
-  volume = CLAMP (volume, pspec_double->minimum, pspec_double->maximum);
+  DEBUG ("Src echo cancellation setting: %s", enable ? "on" : "off");
+  empathy_call_set_stream_properties (src->priv->src, enable);
+}
 
-  g_object_set (G_OBJECT (priv->volume), "volume", volume, NULL);
+void
+empathy_audio_src_set_volume (EmpathyGstAudioSrc *src, gdouble volume)
+{
+  g_object_set (src, "volume", volume, NULL);
 }
 
 gdouble
 empathy_audio_src_get_volume (EmpathyGstAudioSrc *src)
 {
-  EmpathyGstAudioSrcPrivate *priv = EMPATHY_GST_AUDIO_SRC_GET_PRIVATE (src);
-  gdouble volume;
-
-  g_object_get (G_OBJECT (priv->volume), "volume", &volume, NULL);
-
-  return volume;
+  return src->priv->volume;
 }
 
 guint
index 14813abc19c58da171ac104bda83f84f4871cd5d..ff568ce30e070b98f1659f10cf30b315639646af 100644 (file)
@@ -29,6 +29,8 @@ G_BEGIN_DECLS
 
 typedef struct _EmpathyGstAudioSrc EmpathyGstAudioSrc;
 typedef struct _EmpathyGstAudioSrcClass EmpathyGstAudioSrcClass;
+typedef struct _EmpathyGstAudioSrcPrivate EmpathyGstAudioSrcPrivate;
+
 
 struct _EmpathyGstAudioSrcClass {
     GstBinClass parent_class;
@@ -36,6 +38,7 @@ struct _EmpathyGstAudioSrcClass {
 
 struct _EmpathyGstAudioSrc {
     GstBin parent;
+    EmpathyGstAudioSrcPrivate *priv;
 };
 
 GType empathy_audio_src_get_type (void);
@@ -59,6 +62,9 @@ GType empathy_audio_src_get_type (void);
 
 GstElement *empathy_audio_src_new (void);
 
+void empathy_audio_src_set_echo_cancel (EmpathyGstAudioSrc *src, gboolean
+  enable);
+
 void empathy_audio_src_set_volume (EmpathyGstAudioSrc *src, gdouble volume);
 gdouble empathy_audio_src_get_volume (EmpathyGstAudioSrc *src);
 
index bb7446847bfe5e7e4248695e17371f7945d84b81..5b3e48ce86356fbd1377d0fafd79d0f5e2a4c368 100644 (file)
@@ -36,6 +36,7 @@
 #include <libempathy/empathy-tls-verifier.h>
 #include <libempathy/empathy-utils.h>
 
+#include <libempathy-gtk/empathy-bad-password-dialog.h>
 #include <libempathy-gtk/empathy-password-dialog.h>
 #include <libempathy-gtk/empathy-tls-dialog.h>
 #include <libempathy-gtk/empathy-ui-utils.h>
@@ -235,6 +236,38 @@ auth_factory_new_sasl_handler_cb (EmpathyAuthFactory *factory,
     }
 }
 
+static void
+retry_account_cb (GtkWidget *dialog,
+    TpAccount *account,
+    const gchar *password,
+    EmpathyAuthFactory *factory)
+{
+  DEBUG ("Try reconnecting to %s", tp_account_get_path_suffix (account));
+
+  empathy_auth_factory_save_retry_password (factory, account, password);
+
+  tp_account_reconnect_async (account, NULL, NULL);
+}
+
+static void
+auth_factory_auth_passsword_failed (EmpathyAuthFactory *factory,
+    TpAccount *account,
+    const gchar *password,
+    gpointer user_data)
+{
+  GtkWidget *dialog;
+
+  DEBUG ("Authentification on %s failed, popup password dialog",
+      tp_account_get_path_suffix (account));
+
+  dialog = empathy_bad_password_dialog_new (account, password);
+
+  tp_g_signal_connect_object (dialog, "retry",
+      G_CALLBACK (retry_account_cb), factory, 0);
+
+  gtk_widget_show (dialog);
+}
+
 int
 main (int argc,
     char **argv)
@@ -294,6 +327,9 @@ main (int argc,
   g_signal_connect (factory, "new-server-sasl-handler",
       G_CALLBACK (auth_factory_new_sasl_handler_cb), NULL);
 
+  g_signal_connect (factory, "auth-password-failed",
+      G_CALLBACK (auth_factory_auth_passsword_failed), NULL);
+
   if (!empathy_auth_factory_register (factory, &error))
     {
       g_critical ("Failed to register the auth factory: %s\n", error->message);
index ef07c503aa0bab49226d59234a6e00a6ee036bb0..4014ad6c663aca92935cab37deff9db77ed861bb 100644 (file)
@@ -47,8 +47,8 @@ enum {
   CONFERENCE_ADDED,
   CONFERENCE_REMOVED,
   SRC_PAD_ADDED,
-  SINK_PAD_ADDED,
-  SINK_PAD_REMOVED,
+  CONTENT_ADDED,
+  CONTENT_REMOVED,
   CLOSED,
   CANDIDATES_CHANGED,
   STATE_CHANGED,
@@ -479,21 +479,21 @@ empathy_call_handler_class_init (EmpathyCallHandlerClass *klass)
       G_SIGNAL_RUN_LAST, 0, NULL, NULL,
       g_cclosure_marshal_generic,
       G_TYPE_BOOLEAN,
-      2, GST_TYPE_PAD, G_TYPE_UINT);
+      2, TF_TYPE_CONTENT, GST_TYPE_PAD);
 
-  signals[SINK_PAD_ADDED] =
-    g_signal_new ("sink-pad-added", G_TYPE_FROM_CLASS (klass),
+  signals[CONTENT_ADDED] =
+    g_signal_new ("content-added", G_TYPE_FROM_CLASS (klass),
       G_SIGNAL_RUN_LAST, 0, NULL, NULL,
       g_cclosure_marshal_generic,
       G_TYPE_BOOLEAN,
-      2, GST_TYPE_PAD, G_TYPE_UINT);
+      1, TF_TYPE_CONTENT);
 
-  signals[SINK_PAD_REMOVED] =
-    g_signal_new ("sink-pad-removed", G_TYPE_FROM_CLASS (klass),
+  signals[CONTENT_REMOVED] =
+    g_signal_new ("content-removed", G_TYPE_FROM_CLASS (klass),
       G_SIGNAL_RUN_LAST, 0, NULL, NULL,
       g_cclosure_marshal_generic,
       G_TYPE_BOOLEAN,
-      2, GST_TYPE_PAD, G_TYPE_UINT);
+      1, TF_TYPE_CONTENT);
 
   signals[CLOSED] =
     g_signal_new ("closed", G_TYPE_FROM_CLASS (klass),
@@ -763,13 +763,10 @@ on_tf_content_src_pad_added_cb (TfContent *content,
   FsCodec *codec,
   EmpathyCallHandler *handler)
 {
-  guint media_type;
   gboolean retval;
 
-  g_object_get (content, "media-type", &media_type, NULL);
-
   g_signal_emit (G_OBJECT (handler), signals[SRC_PAD_ADDED], 0,
-      pad, media_type, &retval);
+      content, pad, &retval);
 
   if (!retval)
     g_idle_add (src_pad_added_error_idle, g_object_ref (content));
@@ -806,7 +803,6 @@ on_tf_channel_content_added_cb (TfChannel *tfchannel,
   EmpathyCallHandler *handler)
 {
   FsMediaType mtype;
-  GstPad *spad;
   FsSession *session;
 //  FsStream *fs_stream;
   FsCodec *codec;
@@ -822,11 +818,8 @@ on_tf_channel_content_added_cb (TfChannel *tfchannel,
       G_CALLBACK (on_tf_content_stop_sending_cb), handler);
 #endif
 
-  g_object_get (content, "media-type", &mtype,
-    "sink-pad", &spad, NULL);
-
-  g_signal_emit (G_OBJECT (handler), signals[SINK_PAD_ADDED], 0,
-      spad, mtype, &retval);
+  g_signal_emit (G_OBJECT (handler), signals[CONTENT_ADDED], 0,
+    content, &retval);
 
  if (!retval)
       tf_content_error (content, 0 /* FIXME */,
@@ -852,6 +845,8 @@ on_tf_channel_content_added_cb (TfChannel *tfchannel,
  tp_clear_object (&fs_stream);
 */
 
+  g_object_get (content, "media-type", &mtype, NULL);
+
  if (mtype == FS_MEDIA_TYPE_VIDEO)
    {
      guint framerate, width, height;
@@ -878,8 +873,6 @@ on_tf_channel_content_added_cb (TfChannel *tfchannel,
        g_signal_emit (G_OBJECT (handler), signals[RESOLUTION_CHANGED], 0,
            width, height);
    }
-
- gst_object_unref (spad);
 }
 
 static void
@@ -887,17 +880,12 @@ on_tf_channel_content_removed_cb (TfChannel *tfchannel,
   TfContent *content,
   EmpathyCallHandler *handler)
 {
-  FsMediaType mtype;
-  GstPad *spad;
   gboolean retval;
 
   DEBUG ("removing content");
 
-  g_object_get (content, "media-type", &mtype,
-    "sink-pad", &spad, NULL);
-
-  g_signal_emit (G_OBJECT (handler), signals[SINK_PAD_REMOVED], 0,
-      spad, mtype, &retval);
+  g_signal_emit (G_OBJECT (handler), signals[CONTENT_REMOVED], 0,
+      content, &retval);
 
   if (!retval)
     {
index ab7dbeef8ea3cd215d080e947ad305862297029d..7a4994c93b59a80e08b13f88eb9c12cd697cb4f0 100644 (file)
@@ -167,6 +167,7 @@ struct _EmpathyCallWindowPriv
   GtkWidget *audio_call_button;
   GtkWidget *video_call_button;
   GtkWidget *mic_button;
+  GtkWidget *volume_button;
   GtkWidget *camera_button;
   GtkWidget *dialpad_button;
   GtkWidget *toolbar;
@@ -200,8 +201,6 @@ struct _EmpathyCallWindowPriv
   gulong video_output_motion_handler_id;
   guint bus_message_source_id;
 
-  gdouble volume;
-
   /* String that contains the queued tones to send after the current ones
      are sent */
   GString *tones;
@@ -229,6 +228,7 @@ struct _EmpathyCallWindowPriv
   GstElement *video_output_sink;
   GstElement *audio_input;
   GstElement *audio_output;
+  gboolean audio_output_added;
   GstElement *pipeline;
   GstElement *video_tee;
 
@@ -287,9 +287,6 @@ static gboolean empathy_call_window_state_event_cb (GtkWidget *widget,
 static void empathy_call_window_set_send_video (EmpathyCallWindow *window,
   CameraState state);
 
-static void empathy_call_window_mic_toggled_cb (
-  GtkToggleToolButton *toggle, EmpathyCallWindow *window);
-
 static void empathy_call_window_hangup_cb (gpointer object,
   EmpathyCallWindow *window);
 
@@ -323,10 +320,6 @@ static void empathy_call_window_status_message (EmpathyCallWindow *window,
 static gboolean empathy_call_window_bus_message (GstBus *bus,
   GstMessage *message, gpointer user_data);
 
-static void
-empathy_call_window_volume_changed_cb (GtkScaleButton *button,
-  gdouble value, EmpathyCallWindow *window);
-
 static void
 empathy_call_window_show_hangup_button (EmpathyCallWindow *self,
     gboolean show)
@@ -410,39 +403,6 @@ dtmf_start_tone_cb (EmpathyDialpadWidget *dialpad,
   empathy_call_window_maybe_emit_tones (self);
 }
 
-static void
-empathy_call_window_mic_volume_changed (EmpathyCallWindow *self)
-{
-  EmpathyCallWindowPriv *priv = GET_PRIV (self);
-  gdouble volume;
-
-  volume = g_settings_get_double (priv->settings,
-      EMPATHY_PREFS_CALL_SOUND_VOLUME) / 100.0;
-
-  /* Don't store the volume because of muting */
-  if (volume > 0 || gtk_toggle_tool_button_get_active (
-        GTK_TOGGLE_TOOL_BUTTON (priv->mic_button)))
-    priv->volume = volume;
-
-  /* Ensure that the toggle button is active if the volume is > 0 and inactive
-   * if it's smaller than 0 */
-  if ((volume > 0) != gtk_toggle_tool_button_get_active (
-        GTK_TOGGLE_TOOL_BUTTON (priv->mic_button)))
-    gtk_toggle_tool_button_set_active (
-      GTK_TOGGLE_TOOL_BUTTON (priv->mic_button), volume > 0);
-
-  empathy_audio_src_set_volume (EMPATHY_GST_AUDIO_SRC (priv->audio_input),
-    volume);
-}
-
-static void
-empathy_call_window_prefs_volume_changed_cb (GSettings *settings,
-    gchar *key,
-    EmpathyCallWindow *self)
-{
-  empathy_call_window_mic_volume_changed (self);
-}
-
 static void
 empathy_call_window_raise_actors (EmpathyCallWindow *self)
 {
@@ -502,6 +462,40 @@ create_video_input (EmpathyCallWindow *self)
   gst_object_sink (priv->video_input);
 }
 
+static gboolean
+audio_control_volume_to_element (GBinding *binding,
+  const GValue *source_value,
+  GValue *target_value,
+  gpointer user_data)
+{
+  /* AudioControl volume is 0-255, with -1 for unknown */
+  gint hv;
+
+  hv = g_value_get_int (source_value);
+  if (hv < 0)
+    return FALSE;
+
+  hv = MIN (hv, 255);
+  g_value_set_double (target_value, hv/255.0);
+
+  return TRUE;
+}
+
+static gboolean
+element_volume_to_audio_control (GBinding *binding,
+  const GValue *source_value,
+  GValue *target_value,
+  gpointer user_data)
+{
+  gdouble ev;
+
+  ev = g_value_get_double (source_value);
+  ev = CLAMP (ev, 0.0, 1.0);
+
+  g_value_set_int (target_value, ev * 255);
+  return TRUE;
+}
+
 static void
 create_audio_input (EmpathyCallWindow *self)
 {
@@ -511,6 +505,11 @@ create_audio_input (EmpathyCallWindow *self)
   priv->audio_input = empathy_audio_src_new ();
   gst_object_ref (priv->audio_input);
   gst_object_sink (priv->audio_input);
+
+  g_object_bind_property (priv->mic_button, "active",
+    priv->audio_input, "mute",
+    G_BINDING_BIDIRECTIONAL |
+      G_BINDING_INVERT_BOOLEAN | G_BINDING_SYNC_CREATE);
 }
 
 static void
@@ -1644,6 +1643,7 @@ empathy_call_window_init (EmpathyCallWindow *self)
     "audiocall", &priv->audio_call_button,
     "videocall", &priv->video_call_button,
     "microphone", &priv->mic_button,
+    "volume", &priv->volume_button,
     "camera", &priv->camera_button,
     "hangup", &priv->hangup_button,
     "dialpad", &priv->dialpad_button,
@@ -1672,8 +1672,6 @@ empathy_call_window_init (EmpathyCallWindow *self)
     "hangup", "clicked", empathy_call_window_hangup_cb,
     "audiocall", "clicked", empathy_call_window_audio_call_cb,
     "videocall", "clicked", empathy_call_window_video_call_cb,
-    "volume", "value-changed", empathy_call_window_volume_changed_cb,
-    "microphone", "toggled", empathy_call_window_mic_toggled_cb,
     "camera", "toggled", empathy_call_window_camera_toggled_cb,
     "dialpad", "toggled", empathy_call_window_dialpad_cb,
     "menufullscreen", "activate", empathy_call_window_fullscreen_cb,
@@ -1704,7 +1702,8 @@ empathy_call_window_init (EmpathyCallWindow *self)
 
   gtk_container_add (GTK_CONTAINER (self), top_vbox);
 
-  priv->content_hbox = gtk_hbox_new (FALSE, CONTENT_HBOX_SPACING);
+  priv->content_hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL,
+      CONTENT_HBOX_SPACING);
   gtk_container_set_border_width (GTK_CONTAINER (priv->content_hbox),
                                   CONTENT_HBOX_BORDER_WIDTH);
   gtk_box_pack_start (GTK_BOX (priv->pane), priv->content_hbox,
@@ -1718,6 +1717,9 @@ empathy_call_window_init (EmpathyCallWindow *self)
 
   priv->video_container = gtk_clutter_embed_new ();
 
+  gtk_widget_set_size_request (priv->video_container,
+      EMPATHY_VIDEO_WIDGET_DEFAULT_WIDTH, EMPATHY_VIDEO_WIDGET_DEFAULT_HEIGHT);
+
   /* Set the background color to that of the rest of the window */
   context = gtk_widget_get_style_context (priv->content_hbox);
   gtk_style_context_get_background_color (context,
@@ -1870,13 +1872,6 @@ empathy_call_window_init (EmpathyCallWindow *self)
 
   empathy_call_window_show_hangup_button (self, TRUE);
 
-  /* Retrieve initial volume */
-  priv->volume = g_settings_get_double (priv->settings,
-      EMPATHY_PREFS_CALL_SOUND_VOLUME) / 100.0;
-
-  g_signal_connect (priv->settings, "changed::"EMPATHY_PREFS_CALL_SOUND_VOLUME,
-      G_CALLBACK (empathy_call_window_prefs_volume_changed_cb), self);
-
   empathy_geometry_bind (GTK_WINDOW (self), "call-window");
   /* These signals are used to track the window position and save it
    * when the window is destroyed. We need to do this as we don't want
@@ -2540,6 +2535,7 @@ empathy_call_window_reset_pipeline (EmpathyCallWindow *self)
       if (priv->audio_output != NULL)
         g_object_unref (priv->audio_output);
       priv->audio_output = NULL;
+      priv->audio_output_added = FALSE;
 
       if (priv->video_tee != NULL)
         g_object_unref (priv->video_tee);
@@ -2691,15 +2687,34 @@ empathy_call_window_channel_closed_cb (EmpathyCallHandler *handler,
 }
 
 static gboolean
-empathy_call_window_sink_removed_cb (EmpathyCallHandler *handler,
-    GstPad *sink,
-    FsMediaType media_type,
+empathy_call_window_content_is_raw (TfContent *content)
+{
+  FsConference *conference;
+  gboolean israw;
+
+  g_object_get (content, "fs-conference", &conference, NULL);
+  g_assert (conference != NULL);
+
+  /* FIXME: Ugly hack, update when moving a packetization property into
+   * farstream */
+  israw = g_str_has_prefix (GST_OBJECT_NAME (conference), "fsrawconf");
+  gst_object_unref (conference);
+
+  return israw;
+}
+
+static gboolean
+empathy_call_window_content_removed_cb (EmpathyCallHandler *handler,
+    TfContent *content,
     EmpathyCallWindow *self)
 {
   EmpathyCallWindowPriv *priv = GET_PRIV (self);
+  FsMediaType media_type;
 
   DEBUG ("removing content");
 
+  g_object_get (content, "media-type", &media_type, NULL);
+
   /*
    * This assumes that there is only one video stream per channel...
    */
@@ -2718,7 +2733,6 @@ empathy_call_window_sink_removed_cb (EmpathyCallHandler *handler,
           gst_bin_remove (GST_BIN (priv->pipeline), output);
           gst_bin_remove (GST_BIN (priv->pipeline), priv->funnel);
           priv->funnel = NULL;
-          return TRUE;
         }
     }
   else if (media_type == FS_MEDIA_TYPE_AUDIO)
@@ -2727,13 +2741,18 @@ empathy_call_window_sink_removed_cb (EmpathyCallHandler *handler,
         {
           gst_element_set_state (priv->audio_output, GST_STATE_NULL);
 
-          gst_bin_remove (GST_BIN (priv->pipeline), priv->audio_output);
+          if (priv->audio_output_added)
+            gst_bin_remove (GST_BIN (priv->pipeline), priv->audio_output);
           priv->audio_output = NULL;
-          return TRUE;
+          priv->audio_output_added = FALSE;
         }
     }
+  else
+    {
+      g_assert_not_reached ();
+    }
 
-  return FALSE;
+  return TRUE;
 }
 
 static void
@@ -2847,17 +2866,15 @@ empathy_call_window_get_video_sink_pad (EmpathyCallWindow *self)
 
 /* Called with global lock held */
 static GstPad *
-empathy_call_window_get_audio_sink_pad (EmpathyCallWindow *self)
+empathy_call_window_get_audio_sink_pad (EmpathyCallWindow *self,
+  TfContent *content)
 {
   EmpathyCallWindowPriv *priv = GET_PRIV (self);
   GstPad *pad;
   GstPadTemplate *template;
 
-  if (priv->audio_output == NULL)
+  if (!priv->audio_output_added)
     {
-      priv->audio_output = empathy_audio_sink_new ();
-      g_object_ref_sink (priv->audio_output);
-
       if (!gst_bin_add (GST_BIN (priv->pipeline), priv->audio_output))
         {
           g_warning ("Could not add audio sink to pipeline");
@@ -2986,7 +3003,7 @@ display_error (EmpathyCallWindow *self,
   content_area = gtk_info_bar_get_content_area (GTK_INFO_BAR (info_bar));
 
   /* hbox containing the image and the messages vbox */
-  hbox = gtk_hbox_new (FALSE, 3);
+  hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 3);
   gtk_container_add (GTK_CONTAINER (content_area), hbox);
 
   /* Add image */
@@ -2994,7 +3011,7 @@ display_error (EmpathyCallWindow *self,
   gtk_box_pack_start (GTK_BOX (hbox), image, FALSE, FALSE, 0);
 
   /* vbox containing the main message and the details expander */
-  vbox = gtk_vbox_new (FALSE, 3);
+  vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 3);
   gtk_box_pack_start (GTK_BOX (hbox), vbox, TRUE, TRUE, 0);
 
   /* Add text */
@@ -3322,20 +3339,23 @@ empathy_call_window_video_probe_cb (GstPad *pad,
 /* Called from the streaming thread */
 static gboolean
 empathy_call_window_src_added_cb (EmpathyCallHandler *handler,
-  GstPad *src, guint media_type, gpointer user_data)
+  TfContent *content, GstPad *src, gpointer user_data)
 {
   EmpathyCallWindow *self = EMPATHY_CALL_WINDOW (user_data);
   EmpathyCallWindowPriv *priv = GET_PRIV (self);
   gboolean retval = FALSE;
+  guint media_type;
 
   GstPad *pad;
 
   g_mutex_lock (priv->lock);
 
+  g_object_get (content, "media-type", &media_type, NULL);
+
   switch (media_type)
     {
       case TP_MEDIA_STREAM_TYPE_AUDIO:
-        pad = empathy_call_window_get_audio_sink_pad (self);
+        pad = empathy_call_window_get_audio_sink_pad (self, content);
         break;
       case TP_MEDIA_STREAM_TYPE_VIDEO:
         g_idle_add (empathy_call_window_show_video_output_cb, self);
@@ -3400,18 +3420,88 @@ empathy_call_window_src_added_cb (EmpathyCallHandler *handler,
   return TRUE;
 }
 
+static void
+empathy_call_window_prepare_audio_output (EmpathyCallWindow *self,
+  TfContent *content)
+{
+  EmpathyCallWindowPriv *priv = self->priv;
+
+  g_assert (priv->audio_output_added == FALSE);
+  g_assert (priv->audio_output == FALSE);
+
+  priv->audio_output = empathy_audio_sink_new ();
+  g_object_ref_sink (priv->audio_output);
+
+  /* volume button to output volume linking */
+  g_object_bind_property (priv->audio_output, "volume",
+    priv->volume_button, "value",
+    G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE);
+
+  g_object_bind_property_full (content, "requested-output-volume",
+    priv->audio_output, "volume",
+    G_BINDING_DEFAULT,
+    audio_control_volume_to_element,
+    element_volume_to_audio_control,
+    NULL, NULL);
+
+  /* Link volumes together, sync the current audio input volume property
+    * back to farstream first */
+  g_object_bind_property_full (priv->audio_output, "volume",
+    content, "reported-output-volume",
+    G_BINDING_SYNC_CREATE,
+    element_volume_to_audio_control,
+    audio_control_volume_to_element,
+    NULL, NULL);
+
+  /* For raw audio conferences assume that the producer of the raw data
+   * has already processed it, so turn off any echo cancellation and any
+   * other audio improvements that come with it */
+  empathy_audio_sink_set_echo_cancel (
+    EMPATHY_GST_AUDIO_SINK (priv->audio_output),
+    !empathy_call_window_content_is_raw (content));
+}
+
+
 static gboolean
-empathy_call_window_sink_added_cb (EmpathyCallHandler *handler,
-  GstPad *sink, FsMediaType media_type, gpointer user_data)
+empathy_call_window_content_added_cb (EmpathyCallHandler *handler,
+  TfContent *content, gpointer user_data)
 {
   EmpathyCallWindow *self = EMPATHY_CALL_WINDOW (user_data);
   EmpathyCallWindowPriv *priv = GET_PRIV (self);
-  GstPad *pad;
+  GstPad *sink, *pad;
+  FsMediaType media_type;
   gboolean retval = FALSE;
 
+  g_object_get (content, "media-type", &media_type, "sink-pad", &sink, NULL);
+  g_assert (sink != NULL);
+
   switch (media_type)
     {
       case FS_MEDIA_TYPE_AUDIO:
+
+        /* For raw audio conferences assume that the receiver of the raw data
+         * wants it unprocessed, so turn off any echo cancellation and any
+         * other audio improvements that come with it */
+        empathy_audio_src_set_echo_cancel (
+          EMPATHY_GST_AUDIO_SRC (priv->audio_input),
+          !empathy_call_window_content_is_raw (content));
+
+        /* Link volumes together, sync the current audio input volume property
+         * back to farstream first */
+        g_object_bind_property_full (content, "requested-input-volume",
+          priv->audio_input, "volume",
+          G_BINDING_DEFAULT,
+          audio_control_volume_to_element,
+          element_volume_to_audio_control,
+          NULL, NULL);
+
+        g_object_bind_property_full (priv->audio_input, "volume",
+          content, "reported-input-volume",
+          G_BINDING_SYNC_CREATE,
+          element_volume_to_audio_control,
+          audio_control_volume_to_element,
+          NULL, NULL);
+
         if (!gst_bin_add (GST_BIN (priv->pipeline), priv->audio_input))
           {
             g_warning ("Could not add audio source to pipeline");
@@ -3441,6 +3531,9 @@ empathy_call_window_sink_added_cb (EmpathyCallHandler *handler,
             break;
           }
 
+        /* Prepare our audio output, not added yet though */
+        empathy_call_window_prepare_audio_output (self, content);
+
         retval = TRUE;
         break;
       case FS_MEDIA_TYPE_VIDEO:
@@ -3461,6 +3554,7 @@ empathy_call_window_sink_added_cb (EmpathyCallHandler *handler,
         g_assert_not_reached ();
     }
 
+  gst_object_unref (sink);
   return retval;
 }
 
@@ -3705,10 +3799,10 @@ empathy_call_window_connect_handler (EmpathyCallWindow *self)
     G_CALLBACK (empathy_call_window_channel_closed_cb), self);
   g_signal_connect (priv->handler, "src-pad-added",
     G_CALLBACK (empathy_call_window_src_added_cb), self);
-  g_signal_connect (priv->handler, "sink-pad-added",
-    G_CALLBACK (empathy_call_window_sink_added_cb), self);
-  g_signal_connect (priv->handler, "sink-pad-removed",
-    G_CALLBACK (empathy_call_window_sink_removed_cb), self);
+  g_signal_connect (priv->handler, "content-added",
+    G_CALLBACK (empathy_call_window_content_added_cb), self);
+  g_signal_connect (priv->handler, "content-removed",
+    G_CALLBACK (empathy_call_window_content_removed_cb), self);
 
   /* We connect to ::call-channel unconditionally since we'll
    * get new channels if we hangup and redial or if we reuse the
@@ -3930,40 +4024,6 @@ empathy_call_window_set_send_video (EmpathyCallWindow *window,
   g_object_unref (call);
 }
 
-static void
-empathy_call_window_mic_toggled_cb (GtkToggleToolButton *toggle,
-  EmpathyCallWindow *self)
-{
-  EmpathyCallWindowPriv *priv = GET_PRIV (self);
-  gboolean active;
-
-  active = (gtk_toggle_tool_button_get_active (toggle));
-
-  /* We don't want the settings callback to react to this change to avoid
-   * a loop. */
-  g_signal_handlers_block_by_func (priv->settings,
-      empathy_call_window_prefs_volume_changed_cb, self);
-
-  if (active)
-    {
-      g_settings_set_double (priv->settings, EMPATHY_PREFS_CALL_SOUND_VOLUME,
-          priv->volume * 100);
-    }
-  else
-    {
-      /* TODO, Instead of setting the input volume to 0 we should probably
-       * stop sending but this would cause the audio call to drop if both
-       * sides mute at the same time on certain CMs AFAIK. Need to revisit this
-       * in the future. GNOME #574574
-       */
-      g_settings_set_double (priv->settings, EMPATHY_PREFS_CALL_SOUND_VOLUME,
-          0);
-    }
-
-    g_signal_handlers_unblock_by_func (priv->settings,
-      empathy_call_window_prefs_volume_changed_cb, self);
-}
-
 static void
 empathy_call_window_hangup_cb (gpointer object,
     EmpathyCallWindow *self)
@@ -3983,12 +4043,6 @@ empathy_call_window_restart_call (EmpathyCallWindow *window)
       (GtkCallback) gtk_widget_destroy, NULL);
 
   create_video_output_widget (window);
-
-  /* While the call was disconnected, the input volume might have changed.
-   * However, since the audio_input source was destroyed, its volume has not
-   * been updated during that time. That's why we manually update it here */
-  empathy_call_window_mic_volume_changed (window);
-
   priv->outgoing = TRUE;
   empathy_call_window_set_state_connecting (window);
 
@@ -4100,19 +4154,6 @@ empathy_call_window_status_message (EmpathyCallWindow *self,
   gtk_label_set_label (GTK_LABEL (self->priv->status_label), message);
 }
 
-static void
-empathy_call_window_volume_changed_cb (GtkScaleButton *button,
-  gdouble value, EmpathyCallWindow *window)
-{
-  EmpathyCallWindowPriv *priv = GET_PRIV (window);
-
-  if (priv->audio_output == NULL)
-    return;
-
-  empathy_audio_sink_set_volume (EMPATHY_GST_AUDIO_SINK (priv->audio_output),
-    value);
-}
-
 GtkUIManager *
 empathy_call_window_get_ui_manager (EmpathyCallWindow *window)
 {
@@ -4134,3 +4175,23 @@ empathy_call_window_get_video_src (EmpathyCallWindow *self)
 {
   return EMPATHY_GST_VIDEO_SRC (self->priv->video_input);
 }
+
+void
+empathy_call_window_change_webcam (EmpathyCallWindow *self,
+    const gchar *device)
+{
+  EmpathyGstVideoSrc *video;
+  gboolean running;
+
+  /* Restart the camera only if it's already running */
+  running = (self->priv->video_preview != NULL);
+  video = empathy_call_window_get_video_src (self);
+
+  if (running)
+    empathy_call_window_play_camera (self, FALSE);
+
+  empathy_video_src_change_device (video, device);
+
+  if (running)
+    empathy_call_window_play_camera (self, TRUE);
+}
index 81cf170aef42669797c1459c2efaba5e929958a6..abaae276308b0ea126a1db4bb5996d822f8ea791 100644 (file)
@@ -78,6 +78,9 @@ EmpathyGstVideoSrc *empathy_call_window_get_video_src (EmpathyCallWindow *window
 void empathy_call_window_play_camera (EmpathyCallWindow *self,
     gboolean play);
 
+void empathy_call_window_change_webcam (EmpathyCallWindow *self,
+    const gchar *device);
+
 G_END_DECLS
 
 #endif /* #ifndef __EMPATHY_CALL_WINDOW_H__*/
index cee11d75978d40746a7e195c9a42dbba543c326c..9633d84fa2b78eb2674c92e3c3c573f55230fde9 100644 (file)
@@ -146,9 +146,7 @@ empathy_camera_menu_activate_cb (GtkAction *action,
   if (!tp_strdiff (device, current_device))
     goto out;
 
-  empathy_call_window_play_camera (self->priv->window, FALSE);
-  empathy_video_src_change_device (video, device);
-  empathy_call_window_play_camera (self->priv->window, TRUE);
+  empathy_call_window_change_webcam (self->priv->window, device);
 
  out:
   g_free (current_device);
index 46f76466b2d838b9ea945a7e9b98a72572453138..9ad6b29754e210bcbdf48c56c3adc684705091e0 100644 (file)
@@ -269,7 +269,7 @@ chat_window_create_label (EmpathyChatWindow *window,
        PangoAttribute       *attr;
 
        /* The spacing between the button and the label. */
-       hbox = gtk_hbox_new (FALSE, 0);
+       hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
 
        event_box = gtk_event_box_new ();
        gtk_event_box_set_visible_window (GTK_EVENT_BOX (event_box), FALSE);
@@ -295,7 +295,7 @@ chat_window_create_label (EmpathyChatWindow *window,
        status_image = gtk_image_new ();
 
        /* Spacing between the icon and label. */
-       event_box_hbox = gtk_hbox_new (FALSE, 0);
+       event_box_hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
 
        gtk_box_pack_start (GTK_BOX (event_box_hbox), status_image, FALSE, FALSE, 0);
        gtk_box_pack_start (GTK_BOX (event_box_hbox), name_label, TRUE, TRUE, 0);
index 294c6afe089fbee321c81b848b1c515da6948e8e..b298600a9a6c410b6ce4ef0c68f208968aadabf6 100644 (file)
@@ -631,7 +631,7 @@ get_cm_display_name (EmpathyDebugWindow *self,
       retval = g_strdup (cm_name);
     }
 
-  g_hash_table_destroy (protocols);
+  g_hash_table_unref (protocols);
 
   return retval;
 }
@@ -1439,7 +1439,7 @@ am_prepared_cb (GObject *am,
   g_signal_connect (object, "key-press-event",
       G_CALLBACK (debug_window_key_press_event_cb), NULL);
 
-  vbox = gtk_vbox_new (FALSE, 0);
+  vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
   gtk_container_add (GTK_CONTAINER (object), vbox);
   gtk_widget_show (vbox);
 
@@ -1721,7 +1721,7 @@ debug_window_finalize (GObject *object)
       debug_message_list_free (values);
     }
 
-  g_hash_table_destroy (priv->cache);
+  g_hash_table_unref (priv->cache);
 
   (G_OBJECT_CLASS (empathy_debug_window_parent_class)->finalize) (object);
 }
index bc15262a1b3f7bc63b0cee98cc86db7a8bc17bd0..18ca1938a3e57041a9eb6ba70b09ee61f1f382f4 100644 (file)
@@ -1081,7 +1081,7 @@ empathy_ft_manager_finalize (GObject *object)
 
   DEBUG ("FT Manager %p", object);
 
-  g_hash_table_destroy (priv->ft_handler_to_row_ref);
+  g_hash_table_unref (priv->ft_handler_to_row_ref);
 
   G_OBJECT_CLASS (empathy_ft_manager_parent_class)->finalize (object);
 }
index da0c9d3ea91f895970c02c1a24ce653e84068132..77d11298f3de3c7648ff9d6fcc6351bf4e1d697b 100644 (file)
@@ -78,8 +78,8 @@ import_dialog_show_warning_message (EmpathyImportDialog *self)
 {
   GtkWidget *hbox, *vbox, *w;
 
-  vbox = gtk_vbox_new (FALSE, 12);
-  hbox = gtk_hbox_new (FALSE, 12);
+  vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12);
+  hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
 
   w = gtk_label_new (_("No accounts to import could be found. Empathy "
           "currently only supports importing accounts from Pidgin."));
index bf7f29e3ba7faeb24fd38be06795d49efc2182b9..0c878e8f6aeb6c2915508fbe225c009060450e80 100644 (file)
@@ -55,7 +55,7 @@ empathy_import_account_data_free (EmpathyImportAccountData *data)
   if (data->connection_manager != NULL)
     g_free (data->connection_manager);
   if (data->settings != NULL)
-    g_hash_table_destroy (data->settings);
+    g_hash_table_unref (data->settings);
   if (data->source != NULL)
     g_free (data->source);
 
index 8d9d7129218dc72c68ae9ac383bafd136fe3fe3e..f905c827ed1bc0967bd8af611d90d4d88a63e7f6 100644 (file)
@@ -15,6 +15,7 @@
 #include "empathy-invite-participant-dialog.h"
 
 #include <libempathy/empathy-utils.h>
+#include <libempathy/empathy-contact-list.h>
 
 #include <libempathy-gtk/empathy-contact-chooser.h>
 #include <libempathy-gtk/empathy-individual-view.h>
index fe39ca454ffcdf4d260455fe6a08781fe7111d68..2f73acf92dcb8b235b6076f7f5c814eaee4f096a 100644 (file)
@@ -47,8 +47,6 @@
 #include <libempathy/empathy-tp-contact-factory.h>
 
 #include <libempathy-gtk/empathy-contact-dialogs.h>
-#include <libempathy-gtk/empathy-contact-list-store.h>
-#include <libempathy-gtk/empathy-contact-list-view.h>
 #include <libempathy-gtk/empathy-live-search.h>
 #include <libempathy-gtk/empathy-contact-blocking-dialog.h>
 #include <libempathy-gtk/empathy-contact-search-dialog.h>
@@ -56,6 +54,7 @@
 #include <libempathy-gtk/empathy-gtk-enum-types.h>
 #include <libempathy-gtk/empathy-individual-dialogs.h>
 #include <libempathy-gtk/empathy-individual-store.h>
+#include <libempathy-gtk/empathy-individual-store-manager.h>
 #include <libempathy-gtk/empathy-individual-view.h>
 #include <libempathy-gtk/empathy-new-message-dialog.h>
 #include <libempathy-gtk/empathy-new-call-dialog.h>
@@ -569,7 +568,7 @@ main_window_load_events_idle_cb (gpointer user_data)
 }
 
 static void
-main_window_row_activated_cb (EmpathyContactListView *view,
+main_window_row_activated_cb (EmpathyIndividualView *view,
                              GtkTreePath            *path,
                              GtkTreeViewColumn      *col,
                              EmpathyMainWindow      *window)
@@ -1167,7 +1166,7 @@ main_window_setup_balance_create_widget (EmpathyMainWindow *window,
        EmpathyMainWindowPriv *priv = GET_PRIV (window);
        GtkWidget *hbox, *image, *label, *button;
 
-       hbox = gtk_hbox_new (FALSE, 6);
+       hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
 
        /* protocol icon */
        image = gtk_image_new ();
@@ -1374,8 +1373,8 @@ empathy_main_window_finalize (GObject *window)
        g_object_unref (priv->individual_store);
        g_object_unref (priv->contact_manager);
        g_object_unref (priv->sound_mgr);
-       g_hash_table_destroy (priv->errors);
-       g_hash_table_destroy (priv->auths);
+       g_hash_table_unref (priv->errors);
+       g_hash_table_unref (priv->auths);
 
        /* disconnect all handlers of status-changed signal */
        g_hash_table_iter_init (&iter, priv->status_changed_handlers);
@@ -1383,7 +1382,7 @@ empathy_main_window_finalize (GObject *window)
                g_signal_handler_disconnect (TP_ACCOUNT (key),
                                             GPOINTER_TO_UINT (value));
 
-       g_hash_table_destroy (priv->status_changed_handlers);
+       g_hash_table_unref (priv->status_changed_handlers);
 
        g_signal_handlers_disconnect_by_func (priv->event_manager,
                                              main_window_event_added_cb,
@@ -1519,7 +1518,7 @@ main_window_view_sort_contacts_cb (GtkRadioAction    *action,
                                   EmpathyMainWindow *window)
 {
        EmpathyMainWindowPriv *priv = GET_PRIV (window);
-       EmpathyContactListStoreSort value;
+       EmpathyIndividualStoreSort value;
        GSList      *group;
        GType        type;
        GEnumClass  *enum_class;
@@ -2463,8 +2462,8 @@ empathy_main_window_init (EmpathyMainWindow *window)
        priv->contact_manager = EMPATHY_CONTACT_LIST (
                        empathy_contact_manager_dup_singleton ());
        individual_manager = empathy_individual_manager_dup_singleton ();
-       priv->individual_store = empathy_individual_store_new (
-                       individual_manager);
+       priv->individual_store = EMPATHY_INDIVIDUAL_STORE (
+                       empathy_individual_store_manager_new (individual_manager));
        g_object_unref (individual_manager);
 
        /* For the moment, we disallow Persona drops onto the main contact list (e.g. from things such as
@@ -2473,7 +2472,7 @@ empathy_main_window_init (EmpathyMainWindow *window)
        priv->individual_view = empathy_individual_view_new (
                        priv->individual_store,
                        EMPATHY_INDIVIDUAL_VIEW_FEATURE_ALL ^ EMPATHY_INDIVIDUAL_VIEW_FEATURE_PERSONA_DROP,
-                       EMPATHY_INDIVIDUAL_FEATURE_ALL);
+                       EMPATHY_INDIVIDUAL_FEATURE_ALL ^ EMPATHY_INDIVIDUAL_FEATURE_ADD_CONTACT);
 
        gtk_widget_show (GTK_WIDGET (priv->individual_view));
        gtk_container_add (GTK_CONTAINER (sw),
index 9e6cc6dee0e7be7e0c2e4f286dd8e6771379f844..72aab0b2cd61352fa3b3d3584c2f8ec51d331777 100644 (file)
@@ -412,7 +412,7 @@ empathy_map_view_finalize (GObject *object)
   g_signal_handler_disconnect (priv->contact_list,
       priv->members_changed_id);
 
-  g_hash_table_destroy (priv->markers);
+  g_hash_table_unref (priv->markers);
   g_object_unref (priv->contact_list);
   g_object_unref (priv->layer);
 
index c312a3be6686ede40d8f145113f2a456ffc6eea1..ac51459fb76eb8db1a1abd7bf93d1f0137a2162c 100644 (file)
@@ -27,7 +27,6 @@
 
 #include <telepathy-yell/telepathy-yell.h>
 
-#include <libempathy/empathy-contact-manager.h>
 #include <libempathy/empathy-tp-streamed-media.h>
 
 #include <libempathy-gtk/empathy-notify-manager.h>
@@ -158,18 +157,12 @@ notification_decline_subscription_cb (NotifyNotification *notification,
     gchar *action,
     EmpathyNotificationsApprover *self)
 {
-  EmpathyContactManager *manager;
-
   if (self->priv->event == NULL)
     return;
 
-  manager = empathy_contact_manager_dup_singleton ();
-  empathy_contact_list_remove (EMPATHY_CONTACT_LIST (manager),
-      self->priv->event->contact, "");
+  empathy_contact_remove_from_contact_list (self->priv->event->contact);
 
   empathy_event_remove (self->priv->event);
-
-  g_object_unref (manager);
 }
 
 static void
@@ -177,18 +170,12 @@ notification_accept_subscription_cb (NotifyNotification *notification,
     gchar *action,
     EmpathyNotificationsApprover *self)
 {
-  EmpathyContactManager *manager;
-
   if (self->priv->event == NULL)
     return;
 
-  manager = empathy_contact_manager_dup_singleton ();
-  empathy_contact_list_add (EMPATHY_CONTACT_LIST (manager),
-      self->priv->event->contact, "");
+  empathy_contact_add_to_contact_list (self->priv->event->contact, "");
 
   empathy_event_remove (self->priv->event);
-
-  g_object_unref (manager);
 }
 
 static void
index 3eb9e608dbc49e1f788f64f37b6970795f0a1ef7..6775d4a245bb5f7c88a00e3a5cfe9c3abd57c6ee 100644 (file)
@@ -39,7 +39,6 @@
 #include <libempathy-gtk/empathy-ui-utils.h>
 #include <libempathy-gtk/empathy-theme-manager.h>
 #include <libempathy-gtk/empathy-spell.h>
-#include <libempathy-gtk/empathy-contact-list-store.h>
 #include <libempathy-gtk/empathy-gtk-enum-types.h>
 #include <libempathy-gtk/empathy-theme-adium.h>
 
@@ -83,8 +82,6 @@ struct _EmpathyPreferencesPriv {
        GtkWidget *checkbutton_notifications_contact_signin;
        GtkWidget *checkbutton_notifications_contact_signout;
 
-       GtkWidget *scale_call_volume;
-       GtkWidget *adj_call_volume;
        GtkWidget *echo_cancellation;
 
        GtkWidget *treeview_spell_checker;
@@ -272,12 +269,6 @@ preferences_setup_widgets (EmpathyPreferences *preferences)
                         "active",
                         G_SETTINGS_BIND_DEFAULT);
 
-       g_settings_bind (priv->gsettings_call,
-                        EMPATHY_PREFS_CALL_SOUND_VOLUME,
-                        priv->adj_call_volume,
-                        "value",
-                        G_SETTINGS_BIND_DEFAULT);
-
        g_settings_bind (priv->gsettings_call,
                         EMPATHY_PREFS_CALL_ECHO_CANCELLATION,
                         priv->echo_cancellation,
@@ -1108,13 +1099,6 @@ preferences_themes_setup (EmpathyPreferences *preferences)
                          preferences);
 }
 
-static gchar *
-preferences_call_format_volume_cb (GtkScale *scale,
-                                  gdouble value)
-{
-       return g_strdup_printf ("%g%%", value);
-}
-
 static void
 empathy_preferences_response (GtkDialog *widget,
                              gint response)
@@ -1162,8 +1146,6 @@ empathy_preferences_init (EmpathyPreferences *preferences)
        GtkBuilder                *gui;
        gchar                     *filename;
        GtkWidget                 *page;
-       GtkWidget                 *call_volume_scale_box;
-       GtkWidget                 *call_volume_bar_box;
 
        priv = preferences->priv = G_TYPE_INSTANCE_GET_PRIVATE (preferences,
                        EMPATHY_TYPE_PREFERENCES, EmpathyPreferencesPriv);
@@ -1206,10 +1188,6 @@ empathy_preferences_init (EmpathyPreferences *preferences)
                "checkbutton_location_resource_network", &priv->checkbutton_location_resource_network,
                "checkbutton_location_resource_cell", &priv->checkbutton_location_resource_cell,
                "checkbutton_location_resource_gps", &priv->checkbutton_location_resource_gps,
-               "call_volume_scale_box", &call_volume_scale_box,
-               "call_volume_bar_box", &call_volume_bar_box,
-               "call_volume_scale", &priv->scale_call_volume,
-               "call_volume_adjustment", &priv->adj_call_volume,
                "call_echo_cancellation", &priv->echo_cancellation,
                NULL);
        g_free (filename);
@@ -1235,15 +1213,6 @@ empathy_preferences_init (EmpathyPreferences *preferences)
                          preferences, 0);
        preferences_preview_theme_changed_cb (priv->theme_manager, preferences);
 
-       g_signal_connect (priv->scale_call_volume, "format-value",
-                         G_CALLBACK (preferences_call_format_volume_cb),
-                         preferences);
-
-#ifndef HAVE_CALL
-       gtk_widget_hide (call_volume_scale_box);
-       gtk_widget_hide (call_volume_bar_box);
-#endif
-
        preferences_themes_setup (preferences);
 
        preferences_setup_widgets (preferences);
index 46d6879015d29016702ad630d07c65edc3a629a6..03a628cb6a9414418bd266ce6ae98db3439e39fb 100644 (file)
                     <property name="can_focus">False</property>
                     <property name="orientation">vertical</property>
                     <property name="spacing">6</property>
-                    <child>
-                      <object class="GtkBox" id="call_volume_scale_box">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="spacing">6</property>
-                        <child>
-                          <object class="GtkLabel" id="label12">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="xalign">0</property>
-                            <property name="label" translatable="yes">Input volume:</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">True</property>
-                            <property name="position">0</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkScale" id="call_volume_scale">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="adjustment">call_volume_adjustment</property>
-                            <property name="round_digits">0</property>
-                            <property name="digits">0</property>
-                            <property name="value_pos">bottom</property>
-                          </object>
-                          <packing>
-                            <property name="expand">True</property>
-                            <property name="fill">True</property>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">True</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkBox" id="call_volume_bar_box">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="spacing">6</property>
-                        <child>
-                          <object class="GtkLabel" id="label13">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="xalign">0</property>
-                            <property name="label" translatable="yes">Input level:</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">True</property>
-                            <property name="position">0</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkProgressBar" id="progressbar2">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                          </object>
-                          <packing>
-                            <property name="expand">True</property>
-                            <property name="fill">True</property>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">True</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
                     <child>
                       <object class="GtkCheckButton" id="call_echo_cancellation">
                         <property name="label" translatable="yes">Use _echo cancellation to improve call quality</property>
       </packing>
     </child>
   </object>
-  <object class="GtkSizeGroup" id="sizegroup1">
-    <widgets>
-      <widget name="label12"/>
-      <widget name="label13"/>
-    </widgets>
-  </object>
 </interface>
index 67527d8e409d67ed5fe224489fbbc08451f2e70a..a3c539773ecf33ec519c09bcd96b7c99eb9c3a4e 100644 (file)
@@ -708,27 +708,6 @@ empathy_streamed_media_handler_tf_channel_closed_cb (TfChannel *tfchannel,
   g_signal_emit (G_OBJECT (handler), signals[CLOSED], 0);
 }
 
-static GList *
-empathy_streamed_media_handler_tf_channel_codec_config_cb (TfChannel *channel,
-  guint stream_id, FsMediaType media_type, guint direction, gpointer user_data)
-{
-  gchar *filename = empathy_file_lookup ("codec-preferences", "data");
-  GList *codecs;
-  GError *error = NULL;
-
-  codecs = fs_codec_list_from_keyfile (filename, &error);
-  g_free (filename);
-
-  if (!codecs)
-    {
-      g_warning ("No codec-preferences file: %s",
-          error ? error->message : "No error message");
-    }
-  g_clear_error (&error);
-
-  return codecs;
-}
-
 static void
 empathy_streamed_media_handler_start_tpfs (EmpathyStreamedMediaHandler *self)
 {
@@ -748,8 +727,6 @@ empathy_streamed_media_handler_start_tpfs (EmpathyStreamedMediaHandler *self)
       G_CALLBACK (empathy_streamed_media_handler_tf_channel_stream_created_cb), self);
   g_signal_connect (priv->tfchannel, "closed",
       G_CALLBACK (empathy_streamed_media_handler_tf_channel_closed_cb), self);
-  g_signal_connect (priv->tfchannel, "stream-get-codec-config",
-      G_CALLBACK (empathy_streamed_media_handler_tf_channel_codec_config_cb), self);
 
   g_object_unref (channel);
 }
index c74910b6baa3a409c830572376a6c5ebf0e8101f..df3fbab007c9b464c67154d29e7c5b42afc3bc66 100644 (file)
@@ -35,6 +35,7 @@
 #include <telepathy-glib/util.h>
 
 #include <gst/farsight/fs-element-added-notifier.h>
+#include <gst/farsight/fs-utils.h>
 
 #include <libempathy/empathy-tp-contact-factory.h>
 #include <libempathy/empathy-utils.h>
@@ -370,7 +371,7 @@ static GtkWidget *
 empathy_streamed_media_window_create_video_input_add_slider (EmpathyStreamedMediaWindow *self,
   gchar *label_text, GtkWidget *bin)
 {
-   GtkWidget *vbox = gtk_vbox_new (FALSE, 2);
+   GtkWidget *vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 2);
    GtkWidget *scale = gtk_vscale_new_with_range (0, 100, 10);
    GtkWidget *label = gtk_label_new (label_text);
 
@@ -425,7 +426,8 @@ empathy_streamed_media_window_create_video_input (EmpathyStreamedMediaWindow *se
   EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (self);
   GtkWidget *hbox;
 
-  hbox = gtk_hbox_new (TRUE, 3);
+  hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 3);
+  gtk_box_set_homogeneous (GTK_BOX (hbox), TRUE);
 
   priv->video_contrast = empathy_streamed_media_window_create_video_input_add_slider (
     self,  _("Contrast"), hbox);
@@ -532,9 +534,10 @@ empathy_streamed_media_window_create_audio_input (EmpathyStreamedMediaWindow *se
   EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (self);
   GtkWidget *hbox, *vbox, *label;
 
-  hbox = gtk_hbox_new (TRUE, 3);
+  hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 3);
+  gtk_box_set_homogeneous (GTK_BOX (hbox), TRUE);
 
-  vbox = gtk_vbox_new (FALSE, 3);
+  vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 3);
   gtk_box_pack_start (GTK_BOX (hbox), vbox, FALSE, FALSE, 3);
 
   priv->volume_scale = gtk_vscale_new_with_range (0, 150, 100);
@@ -981,8 +984,6 @@ empathy_streamed_media_window_init (EmpathyStreamedMediaWindow *self)
   GtkWidget *arrow;
   GtkWidget *page;
   gchar *filename;
-  GKeyFile *keyfile;
-  GError *error = NULL;
   GtkWidget *scroll;
 
   filename = empathy_file_lookup ("empathy-streamed-media-window.ui", "src");
@@ -1036,7 +1037,8 @@ empathy_streamed_media_window_init (EmpathyStreamedMediaWindow *self)
 
   gtk_container_add (GTK_CONTAINER (self), top_vbox);
 
-  priv->content_hbox = gtk_hbox_new (FALSE, CONTENT_HBOX_SPACING);
+  priv->content_hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL,
+      CONTENT_HBOX_SPACING);
   gtk_container_set_border_width (GTK_CONTAINER (priv->content_hbox),
                                   CONTENT_HBOX_BORDER_WIDTH);
   gtk_paned_pack1 (GTK_PANED (priv->pane), priv->content_hbox, TRUE, FALSE);
@@ -1049,7 +1051,7 @@ empathy_streamed_media_window_init (EmpathyStreamedMediaWindow *self)
       priv->remote_user_output_frame, TRUE, TRUE,
       CONTENT_HBOX_CHILDREN_PACKING_PADDING);
 
-  priv->remote_user_output_hbox = gtk_hbox_new (FALSE, 0);
+  priv->remote_user_output_hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
 
   priv->remote_user_avatar_widget = gtk_image_new ();
 
@@ -1064,7 +1066,7 @@ empathy_streamed_media_window_init (EmpathyStreamedMediaWindow *self)
   gtk_widget_set_size_request (priv->self_user_output_frame,
       SELF_VIDEO_SECTION_WIDTH, SELF_VIDEO_SECTION_HEIGTH);
 
-  priv->self_user_output_hbox = gtk_hbox_new (FALSE, 0);
+  priv->self_user_output_hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
 
   priv->self_user_avatar_widget = gtk_image_new ();
   gtk_box_pack_start (GTK_BOX (priv->self_user_output_hbox),
@@ -1084,22 +1086,7 @@ empathy_streamed_media_window_init (EmpathyStreamedMediaWindow *self)
   /* The call will be started as soon the pipeline is playing */
   priv->start_call_when_playing = TRUE;
 
-  keyfile = g_key_file_new ();
-  filename = empathy_file_lookup ("element-properties", "data");
-  if (g_key_file_load_from_file (keyfile, filename, G_KEY_FILE_NONE, &error))
-    {
-      fs_element_added_notifier_set_properties_from_keyfile (priv->fsnotifier,
-          keyfile);
-    }
-  else
-    {
-      g_warning ("Could not load element-properties file: %s", error->message);
-      g_key_file_free (keyfile);
-      g_clear_error (&error);
-    }
-  g_free (filename);
-
-  priv->vbox = gtk_vbox_new (FALSE, 3);
+  priv->vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 3);
   gtk_box_pack_start (GTK_BOX (priv->content_hbox), priv->vbox,
       FALSE, FALSE, CONTENT_HBOX_CHILDREN_PACKING_PADDING);
   gtk_box_pack_start (GTK_BOX (priv->vbox), priv->self_user_output_frame,
@@ -1114,7 +1101,7 @@ empathy_streamed_media_window_init (EmpathyStreamedMediaWindow *self)
 
   gtk_button_set_image (GTK_BUTTON (priv->sidebar_button), arrow);
 
-  h = gtk_hbox_new (FALSE, 3);
+  h = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 3);
   gtk_box_pack_end (GTK_BOX (priv->vbox), h, FALSE, FALSE, 3);
   gtk_box_pack_end (GTK_BOX (h), priv->sidebar_button, FALSE, FALSE, 3);
 
@@ -1759,6 +1746,12 @@ empathy_streamed_media_window_conference_added_cb (EmpathyStreamedMediaHandler *
 {
   EmpathyStreamedMediaWindow *self = EMPATHY_STREAMED_MEDIA_WINDOW (user_data);
   EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (self);
+  GKeyFile *keyfile;
+
+  keyfile = fs_utils_get_default_element_properties (conference);
+  if (keyfile != NULL)
+    fs_element_added_notifier_set_properties_from_keyfile (priv->fsnotifier,
+        keyfile);
 
   gst_bin_add (GST_BIN (priv->pipeline), conference);
 
@@ -2177,7 +2170,7 @@ display_error (EmpathyStreamedMediaWindow *self,
   content_area = gtk_info_bar_get_content_area (GTK_INFO_BAR (info_bar));
 
   /* hbox containing the image and the messages vbox */
-  hbox = gtk_hbox_new (FALSE, 3);
+  hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 3);
   gtk_container_add (GTK_CONTAINER (content_area), hbox);
 
   /* Add image */
@@ -2185,7 +2178,7 @@ display_error (EmpathyStreamedMediaWindow *self,
   gtk_box_pack_start (GTK_BOX (hbox), image, FALSE, FALSE, 0);
 
   /* vbox containing the main message and the details expander */
-  vbox = gtk_vbox_new (FALSE, 3);
+  vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 3);
   gtk_box_pack_start (GTK_BOX (hbox), vbox, TRUE, TRUE, 0);
 
   /* Add text */
index b73bf1b038c47fb5e9d3e5204e4ca0ed04c788eb..57f5c8418329724224143a9ef36578e51dff88df 100644 (file)
@@ -48,6 +48,8 @@
 
 #include <telepathy-logger/log-manager.h>
 
+#include <libempathy/empathy-client-factory.h>
+#include <libempathy/empathy-connection-aggregator.h>
 #include <libempathy/empathy-presence-manager.h>
 #include <libempathy/empathy-utils.h>
 #include <libempathy/empathy-chatroom-manager.h>
@@ -122,6 +124,7 @@ struct _EmpathyApp
   EmpathyConnectivity *connectivity;
   GSettings *gsettings;
   EmpathyNotificationsApprover *notifications_approver;
+  EmpathyConnectionAggregator *conn_aggregator;
 #ifdef HAVE_GEOCLUE
   EmpathyLocationManager *location_manager;
 #endif
@@ -167,6 +170,7 @@ empathy_app_dispose (GObject *object)
   tp_clear_object (&self->ft_factory);
   tp_clear_object (&self->gsettings);
   tp_clear_object (&self->notifications_approver);
+  tp_clear_object (&self->conn_aggregator);
 
   if (dispose != NULL)
     dispose (object);
@@ -808,11 +812,31 @@ empathy_app_constructed (GObject *object)
   self->location_manager = empathy_location_manager_dup_singleton ();
 #endif
 
+  self->conn_aggregator = empathy_connection_aggregator_dup_singleton ();
+
   self->activated = FALSE;
   self->ft_factory = NULL;
   self->window = NULL;
 }
 
+static void
+add_empathy_features (void)
+{
+  /* Add 'empathy' specific feature before doing any preparation */
+  EmpathyClientFactory *factory;
+
+  factory = empathy_client_factory_dup ();
+
+  tp_simple_client_factory_add_connection_features_varargs (
+      TP_SIMPLE_CLIENT_FACTORY (factory),
+      /* empathy_connection_aggregator_get_all_groups(), used by
+       * EmpathyGroupsWidget relies on it */
+      TP_CONNECTION_FEATURE_CONTACT_GROUPS,
+      NULL);
+
+  g_object_unref (factory);
+}
+
 int
 main (int argc, char *argv[])
 {
@@ -832,6 +856,8 @@ main (int argc, char *argv[])
   gtk_init (&argc, &argv);
   empathy_gtk_init ();
 
+  add_empathy_features ();
+
   app = g_object_new (EMPATHY_TYPE_APP,
       "application-id", EMPATHY_DBUS_NAME,
       "flags", G_APPLICATION_HANDLES_COMMAND_LINE,
index 1d0b2df2f6c9193acf9368ce5451195aeec99933..a50736982c33dc6498bbf56af417ee72407a937e 100644 (file)
@@ -152,15 +152,15 @@ ev_sidebar_init (EvSidebar *ev_sidebar)
                                            G_TYPE_INT);
 
        /* create a 6 6 6 0 border with GtkBoxes */
-       hbox = gtk_hbox_new (FALSE, 6);
+       hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
        gtk_box_pack_start (GTK_BOX (ev_sidebar), hbox, TRUE, TRUE, 6);
 
-       vbox = gtk_vbox_new (FALSE, 6);
+       vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
        gtk_box_pack_start (GTK_BOX (hbox), vbox, TRUE, TRUE, 0);
-       gtk_box_pack_start (GTK_BOX (hbox), gtk_vbox_new (FALSE, 0), FALSE, FALSE, 0);
+       gtk_box_pack_start (GTK_BOX (hbox), gtk_box_new (GTK_ORIENTATION_VERTICAL, 0), FALSE, FALSE, 0);
 
        /* top option menu */
-       hbox = gtk_hbox_new (FALSE, 6);
+       hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
        gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
        gtk_widget_show (hbox);
 
index 966027f385a890df07bbf6bd4156df88a215a80b..3ba0239f1208f0817954743b54c5974bb8215b6f 100644 (file)
@@ -76,7 +76,7 @@ check_chatrooms_list (EmpathyChatroomManager *mgr,
   fail_if (g_hash_table_size (found) != 0);
 
   g_list_free (chatrooms);
-  g_hash_table_destroy (found);
+  g_hash_table_unref (found);
 }
 
 static gboolean
index f2b667d0bf0aa84bb48906e6bffb9aabf12280c9..8256da477aab72945ff2a7ad0bf9797f05c848ed 100644 (file)
@@ -102,7 +102,7 @@ mock_tls_certificate_finalize (GObject *object)
       &self->rejections);
   g_free (self->cert_type);
   self->cert_type = NULL;
-  g_ptr_array_free (self->cert_data, TRUE);
+  g_ptr_array_unref (self->cert_data);
   self->cert_data = NULL;
 
   G_OBJECT_CLASS (mock_tls_certificate_parent_class)->finalize (object);
@@ -226,7 +226,7 @@ mock_tls_certificate_assert_rejected (MockTLSCertificate *self,
               TP_HASH_TYPE_STRING_VARIANT_MAP, &rejection_details,
               NULL);
       g_free (rejection_error);
-      g_hash_table_destroy (rejection_details);
+      g_hash_table_unref (rejection_details);
 
       if (rejection_reason == reason)
         return;
index e850d25a461be108d2cc93858ed6b65e76823f96..e07ed65f7e4678292280295ea6af9044b8d37c35 100644 (file)
@@ -14,7 +14,6 @@ LDADD =                                                               \
        $(EDS_LIBS)
 
 noinst_PROGRAMS =                      \
-       contact-manager                 \
        empathy-logs                    \
        test-empathy-account-assistant \
        test-empathy-contact-blocking-dialog \
@@ -23,7 +22,6 @@ noinst_PROGRAMS =                     \
        test-empathy-protocol-chooser \
        test-empathy-account-chooser
 
-contact_manager_SOURCES = contact-manager.c
 empathy_logs_SOURCES = empathy-logs.c
 test_empathy_contact_blocking_dialog_SOURCES = test-empathy-contact-blocking-dialog.c
 test_empathy_presence_chooser_SOURCES = test-empathy-presence-chooser.c
diff --git a/tests/interactive/contact-manager.c b/tests/interactive/contact-manager.c
deleted file mode 100644 (file)
index e391df6..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-#include <stdlib.h>
-
-#include <glib.h>
-#include <gtk/gtk.h>
-#include <libempathy/empathy-contact-manager.h>
-#include <libempathy/empathy-debug.h>
-
-#include <libempathy-gtk/empathy-contact-list-store.h>
-#include <libempathy-gtk/empathy-ui-utils.h>
-
-int
-main (int argc, char **argv)
-{
-       EmpathyContactManager *manager;
-       EmpathyContactListStore *store;
-       GtkWidget *combo;
-       GtkWidget *window;
-       GtkCellRenderer *renderer;
-
-       gtk_init (&argc, &argv);
-       empathy_gtk_init ();
-
-       empathy_debug_set_flags (g_getenv ("EMPATHY_DEBUG"));
-       g_main_loop_new (NULL, FALSE);
-       manager = empathy_contact_manager_dup_singleton ();
-       store = empathy_contact_list_store_new (EMPATHY_CONTACT_LIST (manager));
-       empathy_contact_list_store_set_is_compact (store, TRUE);
-       empathy_contact_list_store_set_show_groups (store, FALSE);
-       combo = gtk_combo_box_new_with_model (GTK_TREE_MODEL (store));
-       renderer = gtk_cell_renderer_text_new ();
-       gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo), renderer, TRUE);
-       gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (combo), renderer, "text", EMPATHY_CONTACT_LIST_STORE_COL_NAME);
-       window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
-       gtk_container_add (GTK_CONTAINER (window), combo);
-       gtk_widget_show (combo);
-       gtk_widget_show (window);
-       g_object_unref (manager);
-
-       gtk_main ();
-
-       return EXIT_SUCCESS;
-}
-
index b9f38e0e7faabba9993193c3492a7eaf5b015f8e..76717596e7904a98b894e16a05e9cadc952cb6b6 100644 (file)
@@ -1,4 +1,3 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
 /*
  * Copyright (C) 2008 Collabora Ltd.
  *
 #include <gtk/gtk.h>
 
 #include <libempathy/empathy-debug.h>
+#include <libempathy/empathy-utils.h>
 #include <libempathy-gtk/empathy-log-window.h>
 #include <libempathy-gtk/empathy-ui-utils.h>
 
 static void
 destroy_cb (GtkWidget *dialog,
-           gpointer   user_data)
+    gpointer user_data)
 {
-       gtk_main_quit ();
+  gtk_main_quit ();
+}
+
+static void
+account_manager_prepare_cb (GObject *source,
+    GAsyncResult *result,
+    gpointer user_data)
+{
+  GError *error = NULL;
+  GtkWidget *window;
+
+  tp_proxy_prepare_finish (source, result, &error);
+  g_assert_no_error (error);
+
+  window = empathy_log_window_show (NULL, NULL, FALSE, NULL);
+
+  g_signal_connect (window, "destroy", G_CALLBACK (destroy_cb), NULL);
 }
 
 int
-main (int argc, char *argv[])
+main (int argc,
+    char *argv[])
 {
-       GtkWidget *window;
+  TpAccountManager *mgr;
 
-       g_thread_init (NULL);
-       gtk_init (&argc, &argv);
-       empathy_gtk_init ();
-       g_set_application_name (PACKAGE_NAME);
-       gtk_window_set_default_icon_name ("empathy");
+  g_thread_init (NULL);
+  gtk_init (&argc, &argv);
+  empathy_gtk_init ();
+  g_set_application_name (PACKAGE_NAME);
+  gtk_window_set_default_icon_name ("empathy");
 
-       window = empathy_log_window_show (NULL, NULL, FALSE, NULL);
+  mgr = tp_account_manager_dup ();
 
-       g_signal_connect (window, "destroy",
-                         G_CALLBACK (destroy_cb),
-                         NULL);
+  tp_proxy_prepare_async (mgr, NULL, account_manager_prepare_cb, NULL);
 
-       gtk_main ();
+  gtk_main ();
 
-       return EXIT_SUCCESS;
-}
+  g_object_unref (mgr);
 
+  return EXIT_SUCCESS;
+}
index dd62fb7ba3ff4323e01dc71bbcb75bf73abf109d..4330b1479f6154ef4752787ea86e7f3a5129f16f 100644 (file)
@@ -44,6 +44,19 @@ if grep -En '^ *(static |const |)* *[[:alnum:]_]+\*+([[:alnum:]_]|;|$)' \
   fail=1
 fi
 
+if grep -n 'g_hash_table_destroy' "$@"; then
+  echo "^^^ Our coding style is to use g_hash_table_unref"
+  fail=1
+fi
+
+for p in "" "ptr_" "byte_"; do
+  if grep -En "g_${p}array_free \(([^ ,]+), TRUE\)" "$@"; then
+    echo "^^^ Our coding style is to use g_${p}array_unref in the case "
+    echo "    the underlying C array is not used"
+    fail=1
+  fi
+done
+
 if test -n "$CHECK_FOR_LONG_LINES"
 then
   if egrep -n '.{80,}' "$@"