]> git.0d.be Git - empathy.git/commitdiff
Merge branch 'gnome-3-4'
authorGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>
Wed, 9 May 2012 12:02:13 +0000 (14:02 +0200)
committerGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>
Wed, 9 May 2012 12:02:13 +0000 (14:02 +0200)
Conflicts:
configure.ac
libempathy/empathy-tp-chat.c
src/empathy-event-manager.c
src/empathy-streamed-media-window.c
src/empathy-video-widget.c

103 files changed:
Makefile.am
NEWS
configure.ac
data/.gitignore
data/Makefile.am
data/org.gnome.Empathy.gschema.xml [new file with mode: 0644]
data/org.gnome.Empathy.gschema.xml.in [deleted file]
goa-mc-plugin/mcp-account-manager-goa.c
libempathy-gtk/empathy-account-widget-irc.c
libempathy-gtk/empathy-account-widget-irc.h
libempathy-gtk/empathy-account-widget-private.h
libempathy-gtk/empathy-account-widget-sip.c
libempathy-gtk/empathy-account-widget-sip.h
libempathy-gtk/empathy-account-widget-sip.ui
libempathy-gtk/empathy-account-widget.c
libempathy-gtk/empathy-account-widget.h
libempathy-gtk/empathy-call-utils.c
libempathy-gtk/empathy-call-utils.h
libempathy-gtk/empathy-chat.c
libempathy-gtk/empathy-contact-widget.c
libempathy-gtk/empathy-individual-menu.c
libempathy-gtk/empathy-individual-store-channel.c
libempathy-gtk/empathy-individual-view.c
libempathy-gtk/empathy-live-search.c
libempathy-gtk/empathy-local-xmpp-assistant-widget.c
libempathy-gtk/empathy-new-account-dialog.c
libempathy-gtk/empathy-plist.c
libempathy-gtk/empathy-presence-chooser.c
libempathy/Makefile.am
libempathy/empathy-client-factory.c
libempathy/empathy-connection-aggregator.c
libempathy/empathy-connection-aggregator.h
libempathy/empathy-connectivity.c [deleted file]
libempathy/empathy-connectivity.h [deleted file]
libempathy/empathy-contact-list.c [deleted file]
libempathy/empathy-contact-list.h [deleted file]
libempathy/empathy-contact.c
libempathy/empathy-ft-handler.c
libempathy/empathy-individual-manager.c
libempathy/empathy-individual-manager.h
libempathy/empathy-request-util.h
libempathy/empathy-tls-verifier.c
libempathy/empathy-tp-chat.c
libempathy/empathy-tp-chat.h
libempathy/empathy-tp-contact-factory.c
libempathy/empathy-tp-contact-factory.h
libempathy/empathy-tp-streamed-media.c [deleted file]
libempathy/empathy-tp-streamed-media.h [deleted file]
libempathy/empathy-utils.c
po/POTFILES.in
po/ca@valencia.po
po/en_CA.po
po/es.po
po/fa.po
po/gl.po
po/he.po
po/nb.po
po/sk.po
po/sl.po
po/te.po
po/zh_CN.po
release.py
src/Makefile.am
src/empathy-accounts-dialog.c
src/empathy-accounts.c
src/empathy-audio-sink.c
src/empathy-audio-src.c
src/empathy-auth-client.c
src/empathy-av.c [deleted file]
src/empathy-call-observer.c
src/empathy-call-window.c
src/empathy-call.c
src/empathy-chat-manager.c
src/empathy-chat-window.c
src/empathy-chat.c
src/empathy-debugger.c
src/empathy-event-manager.c
src/empathy-event-manager.h
src/empathy-invite-participant-dialog.c
src/empathy-notifications-approver.c
src/empathy-roster-window.c
src/empathy-streamed-media-factory.c [deleted file]
src/empathy-streamed-media-factory.h [deleted file]
src/empathy-streamed-media-handler.c [deleted file]
src/empathy-streamed-media-handler.h [deleted file]
src/empathy-streamed-media-window-fullscreen.c [deleted file]
src/empathy-streamed-media-window-fullscreen.h [deleted file]
src/empathy-streamed-media-window.c [deleted file]
src/empathy-streamed-media-window.h [deleted file]
src/empathy-streamed-media-window.ui [deleted file]
src/empathy-video-widget.c [deleted file]
src/empathy-video-widget.h [deleted file]
src/empathy.c
src/ev-sidebar.c [deleted file]
src/ev-sidebar.h [deleted file]
tests/Makefile.am
tests/certificates/Makefile.am [new file with mode: 0644]
tests/certificates/collabora-ca.cer [new file with mode: 0644]
tests/certificates/collabora-ca/collabora-ca.cer [deleted file]
tests/empathy-tls-test.c
tests/interactive/empathy-logs.c
tests/mock-pkcs11.c [new file with mode: 0644]
tests/mock-pkcs11.h [new file with mode: 0644]

index 59a2435d661532e79cc4952d6430c350d653de27..1a3a118b5aa7a2164d730d660e565d3bdc392023 100644 (file)
@@ -17,7 +17,6 @@ endif
 ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
 
 DISTCHECK_CONFIGURE_FLAGS =            \
-       --enable-empathy-av             \
        --disable-scrollkeeper          \
        --disable-schemas-install
 
diff --git a/NEWS b/NEWS
index caf311a07469d596bbb4669069128884f2a041db..7d3b49ee0df1e948a70ec3ca6cd3e4cf0232409a 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,51 @@
+NEW in 3.5.1 (30/04/2012)
+============
+
+Dependencies:
+ • GLib ≥ 2.32.0
+ • telepathy-glib ≥ 0.17.6
+ • Intltool ≥ 0.50.0
+
+Bugs fixed:
+ - Fixed #501065, Can't rename group (Guillaume Desmottes)
+ - Fixed #668186, make check does not run the test suite (which doesn't pass when it is run) (Guillaume Desmottes)
+ - Fixed #668261, empathy-tls-test (Stef Walter)
+ - Fixed #669134, SIP widget: add local IP widgets (Laurent Contzen)
+ - Fixed #669177, Show who changed the subject.
+ - Fixed #672619, Drop org.gnome.Empathy.gschema.xml.in (Guillaume Desmottes)
+ - Fixed #672976, Use GNetworkMonitor (Guillaume Desmottes)
+ - Fixed #673159, Add 'Rename' entry to accounts context menu (Guillaume Desmottes)
+ - Fixed #673410, Tooltip text when editing should be translatable (Laurent)
+ - Fixed #673821, Remove old contact list code (Guillaume Desmottes)
+ - Fixed #674432, The buddy list window is very small by default (Guillaume Desmottes)
+ - Fixed #640846, No tooltips in status picker (Laurent Contzen)
+
+Translations:
+ - Updated an Translation (Daniel Martinez Cucalon)
+ - Updated ar Translation (Ibrahim Saed)
+ - Updated ca Translation (Jordi Serratosa)
+ - Updated ca@valencia Translation (Carles Ferrando)
+ - Updated en_CA Translation (Tiffany Antopolski)
+ - Updated es Translation (Daniel Mustieles)
+ - Updated eu Translation (Inaki Larranaga Murgoitio)
+ - Updated fa Translation (Arash Mousavi)
+ - Updated gl Translation (Fran Diéguez)
+ - Updated he Translation (Yaron Shahrabani)
+ - Updated hi Translation (Chandan Kumar)
+ - Updated id Translation (Andika Triwidada)
+ - Updated ja Translation (Mako N)
+ - Updated ko Translation (Changwoo Ryu)
+ - Updated nb Translation (Kjartan Maraas)
+ - Updated or Translation (ManojKumar Giri)
+ - Updated sk Translation (Pavol Klačanský)
+ - Updated sl Translation (Matej Urbančič, Andrej Žnidaršič)
+ - Updated te Translation (Sasi Bhushan)
+ - Updated zh_CN Translation (Automatic Mirroring)
+
+Documentation translations:
+ - Updated fr Documentation translation (Bruno Brouard)
+ - Updated ja Documentation translation (Mako N)
+
 NEW in 3.4.1 (16/04/2012)
 ============
 
index 1c45c90fa74529f3053b24eb8a07d27d61809ae6..3b04f6ed17cb497bd3b48c1066a63cabe77d41ae 100644 (file)
@@ -2,7 +2,7 @@ dnl If not 1, append datestamp to the version number
 m4_define(empathy_released, 0)
 
 m4_define([empathy_major_version], [3])
-m4_define([empathy_minor_version], [4])
+m4_define([empathy_minor_version], [5])
 m4_define([empathy_micro_version], [1])
 m4_define([empathy_nano_version], [0])
 
@@ -37,9 +37,9 @@ AC_COPYRIGHT([
 FOLKS_REQUIRED=0.6.6
 GNUTLS_REQUIRED=2.8.5
 
-GLIB_REQUIRED=2.30.0
+GLIB_REQUIRED=2.32.0
 AC_DEFINE(GLIB_VERSION_MIN_REQUIRED, GLIB_VERSION_2_30, [Ignore post 2.30 deprecations])
-AC_DEFINE(GLIB_VERSION_MAX_ALLOWED, GLIB_VERSION_2_30, [Prevent post 2.30 APIs])
+AC_DEFINE(GLIB_VERSION_MAX_ALLOWED, GLIB_VERSION_2_32, [Prevent post 2.32 APIs])
 
 GTK_REQUIRED=3.3.6
 AC_DEFINE(GDK_VERSION_MIN_REQUIRED, GDK_VERSION_3_4, [Ignore post 3.4 deprecations])
@@ -64,7 +64,7 @@ LIBNOTIFY_REQUIRED=0.7.0
 TELEPATHY_FARSTREAM_REQUIRED=0.2.1
 TELEPATHY_LOGGER=0.2.13
 WEBKIT_REQUIRED=1.3.13
-GOA_REQUIRED=3.3.0
+GOA_REQUIRED=3.5.1
 
 # Optional deps
 ENCHANT_REQUIRED=1.2.0
@@ -216,24 +216,6 @@ PKG_CHECK_MODULES(EMPATHY_CALL,
 AC_DEFINE(EMPATHY_GOA_PROVIDER, "org.gnome.OnlineAccounts",
    [Name of provider for accounts imported from GOA])
 
-# -----------------------------------------------------------
-# Build empathy-av?
-# -----------------------------------------------------------
-AC_ARG_ENABLE(empathy-av,
-            AS_HELP_STRING([--enable-empathy-av=@<:@no/yes@:>@],
-            [build empathy-av (legacy call UI)]),,
-            [enable_empathy_av=no])
-if test "x$enable_empathy_av" != "xno" ; then
-   PKG_CHECK_MODULES(EMPATHY_AV,
-   [
-      farstream-0.1
-      telepathy-farstream >= $TELEPATHY_FARSTREAM_REQUIRED
-   ])
-   AC_DEFINE(HAVE_EMPATHY_AV, 1, [Define if you have StreamedMedia channel support])
-   have_empathy_av=yes
-fi
-AM_CONDITIONAL(HAVE_EMPATHY_AV, test "x$have_empathy_av" = "xyes")
-
 # -----------------------------------------------------------
 # evolution-data-server (about-me)
 # -----------------------------------------------------------
@@ -262,64 +244,12 @@ fi
 # -----------------------------------------------------------
 # Language Support
 # -----------------------------------------------------------
-IT_PROG_INTLTOOL([0.40.0])
+IT_PROG_INTLTOOL([0.50.0])
 
 GETTEXT_PACKAGE=empathy
 AC_SUBST(GETTEXT_PACKAGE)
 AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE",[Gettext package name])
 
-# -----------------------------------------------------------
-# Connectivity integration
-# -----------------------------------------------------------
-AC_ARG_WITH(connectivity,
-              AS_HELP_STRING([--with-connectivity=@<:@nm/connman/auto/no@:>@],
-                             [build with connectivity support]), ,
-                             with_connectivity=auto)
-
-if test "x$with_connectivity" = "xno"; then
-   have_nm=no
-   have_connman=no
-
-elif test "x$with_connectivity" = "xconnman"; then
-   have_nm=no
-
-   PKG_CHECK_MODULES(CONNMAN,
-   [
-      dbus-glib-1
-   ], have_connman="yes", have_connman="no")
-
-   if test "x$have_connman" = "xyes"; then
-      AC_DEFINE(HAVE_CONNMAN, 1, [Define if you have connman dependencies])
-   fi
-
-else
-   have_connman=no
-
-   PKG_CHECK_MODULES(NETWORK_MANAGER,
-   [
-      libnm-glib >= $NETWORK_MANAGER_REQUIRED
-   ], have_nm="yes", have_nm="no")
-
-   if test "x$have_nm" = "xyes"; then
-      AC_DEFINE(HAVE_NM, 1, [Define if you have libnm-glib])
-   fi
-fi
-
-if test "x$with_connectivity" = "xconnman" -a "x$have_connman" != "xyes"; then
-   AC_MSG_ERROR([Couldn't find connman dependencies:
-
-$CONNMAN_PKG_ERRORS])
-fi
-
-if test "x$with_connectivity" = "xnm" -a "x$have_nm" != "xyes"; then
-   AC_MSG_ERROR([Couldn't find Network Manager dependencies:
-
-$NETWORK_MANAGER_PKG_ERRORS])
-fi
-
-AM_CONDITIONAL(HAVE_NM, test "x$have_nm" = "xyes")
-AM_CONDITIONAL(HAVE_CONNMAN, test "x$have_connman" = "xyes")
-
 # -----------------------------------------------------------
 # gudev
 # -----------------------------------------------------------
@@ -481,38 +411,6 @@ AM_CONDITIONAL(HAVE_GEOCODE, test "x$have_geocode" = "xyes")
 AC_SUBST(GEOCODE_CFLAGS)
 AC_SUBST(GEOCODE_LIBS)
 
-# -----------------------------------------------------------
-# meego widgets support
-# -----------------------------------------------------------
-AC_ARG_ENABLE(meego,
-              AS_HELP_STRING([--enable-meego=@<:@no/yes@:>@],
-                             [Enable meego widgets]), ,
-                             enable_meego=no)
-
-if test "x$enable_meego" != "xno"; then
-    PKG_CHECK_MODULES(MEEGO,
-    [
-       mx-gtk-1.0
-       gio-unix-2.0
-    ], have_meego="yes", have_meego="no")
-
-    if test "x$have_meego" = "xyes"; then
-       AC_DEFINE(HAVE_MEEGO, 1, [Define if you have meego])
-    fi
-else
-   have_meego="no"
-fi
-
-if test "x$enable_meego" = "xyes" -a "x$have_meego" != "xyes"; then
-   AC_MSG_ERROR([Could not find meego dependencies:
-
-$MEEGO_PKG_ERRORS])
-fi
-
-AM_CONDITIONAL(HAVE_MEEGO, test "x$have_meego" = "xyes")
-AC_SUBST(MEEGO_CFLAGS)
-AC_SUBST(MEEGO_LIBS)
-
 # -----------------------------------------------------------
 # nautilus-sendto
 # -----------------------------------------------------------
@@ -625,6 +523,7 @@ AC_CONFIG_FILES([
    tests/Makefile
    tests/interactive/Makefile
    tests/xml/Makefile
+   tests/certificates/Makefile
    tools/Makefile
 ])
 AC_OUTPUT
@@ -643,17 +542,11 @@ Configure summary:
        Display maps (libchamplain).:  ${have_libchamplain}
        Location awareness (Geoclue):  ${have_geoclue}
        Geocode support (Geocode)...:  ${have_geocode}
-       Meego widgets...............:  ${have_meego}
        Cheese webcam support ......:  ${have_cheese}
        Camera monitoring...........:  ${have_gudev}
 
-    Connectivity:
-       NetworkManager integration..:  ${have_nm}
-       ConnMan integration.........:  ${have_connman}
-
     Extras:
        Nautilus-sendto plugin......:  ${have_nst}
        GOA MC plugin...............:  ${have_goa}
        Salut E-D-S support.........:  ${with_eds}
-       empathy-av (legacy).........:  ${enable_empathy_av}
 "
index 2d4a96f0ca671a9b04aa170060c1ebf4638b657d..1b5fab599a2bdd4fd66628b374cf51f00eb088d5 100644 (file)
@@ -1,7 +1,6 @@
 empathy.desktop
 empathy.desktop.in
 org.gnome.Empathy.gschema.valid
-org.gnome.Empathy.gschema.xml
 gschemas.compiled
 org.freedesktop.Telepathy.Client.Empathy.Chat.service
 org.freedesktop.Telepathy.Client.Empathy.AudioVideo.service
index a2be750cfe7f0cc76fecbfbf942de4c81885a9af..ffef27bf132cd919f6500b3e4674b6acb97b1512 100644 (file)
@@ -8,11 +8,7 @@ desktop_in_files = \
 desktop_DATA = $(desktop_in_files:.desktop.in=.desktop)
 @INTLTOOL_DESKTOP_RULE@
 
-gsettings_files = \
-       org.gnome.Empathy.gschema.xml.in \
-       $(NULL)
-gsettings_SCHEMAS = $(gsettings_files:.xml.in=.xml)
-@INTLTOOL_XML_NOMERGE_RULE@
+gsettings_SCHEMAS = org.gnome.Empathy.gschema.xml
 @GSETTINGS_RULES@
 
 # We need to compile schemas at make time
@@ -33,19 +29,11 @@ servicefile_in_files = \
        org.freedesktop.Telepathy.Client.Empathy.Call.service.in \
        org.freedesktop.Telepathy.Client.Empathy.FileTransfer.service.in
 
-if HAVE_EMPATHY_AV
-servicefile_in_files += \
-       org.freedesktop.Telepathy.Client.Empathy.AudioVideo.service.in
-endif
-
 servicefile_DATA = $(servicefile_in_files:.service.in=.service)
 
 org.freedesktop.Telepathy.Client.Empathy.Chat.service: org.freedesktop.Telepathy.Client.Empathy.Chat.service.in
        $(AM_V_GEN)sed -e "s|[@]libexecdir[@]|$(libexecdir)|" $< > $@
 
-org.freedesktop.Telepathy.Client.Empathy.AudioVideo.service: org.freedesktop.Telepathy.Client.Empathy.AudioVideo.service.in
-       $(AM_V_GEN)sed -e "s|[@]libexecdir[@]|$(libexecdir)|" $< > $@
-
 org.freedesktop.Telepathy.Client.Empathy.Auth.service: org.freedesktop.Telepathy.Client.Empathy.Auth.service.in
        $(AM_V_GEN)sed -e "s|[@]libexecdir[@]|$(libexecdir)|" $< > $@
 
@@ -62,11 +50,6 @@ clientfile_DATA = \
        Empathy.Call.client \
        Empathy.FileTransfer.client
 
-if HAVE_EMPATHY_AV
-clientfile_DATA += \
-       Empathy.AudioVideo.client
-endif
-
 htmldir = $(datadir)/empathy
 html_DATA = \
        Template.html \
@@ -81,7 +64,7 @@ EXTRA_DIST =                          \
        $(html_DATA)                    \
        $(clientfile_DATA)              \
        $(servicefile_in_files)         \
-       $(gsettings_files)              \
+       $(gsettings_SCHEMAS)            \
        $(NULL)
 
 DISTCLEANFILES =               \
diff --git a/data/org.gnome.Empathy.gschema.xml b/data/org.gnome.Empathy.gschema.xml
new file mode 100644 (file)
index 0000000..583eaca
--- /dev/null
@@ -0,0 +1,303 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schemalist>
+
+  <enum id="position">
+    <value nick="top-left" value="1"/>
+    <value nick="top-right" value="2"/>
+    <value nick="bottom-left" value="3"/>
+    <value nick="bottom-right" value="4"/>
+  </enum>
+
+  <schema id="org.gnome.Empathy" path="/org/gnome/empathy/">
+    <key name="use-conn" type="b">
+      <default>true</default>
+      <summary>Connection managers should be used</summary>
+      <description>Whether connectivity managers should be used to automatically disconnect/reconnect.</description>
+    </key>
+    <key name="autoconnect" type="b">
+      <default>true</default>
+      <summary>Empathy should auto-connect on startup</summary>
+      <description>Whether Empathy should automatically log into your accounts on startup.</description>
+    </key>
+    <key name="autoaway" type="b">
+      <default>true</default>
+      <summary>Empathy should auto-away when idle</summary>
+      <description>Whether Empathy should go into away mode automatically if the user is idle.</description>
+    </key>
+    <key name="file-transfer-default-folder" type="s">
+      <default>''</default>
+      <summary>Empathy default download folder</summary>
+      <description>The default folder to save file transfers in.</description>
+    </key>
+    <key name="sanity-cleaning-number" type="u">
+      <default>0</default>
+      <!-- translators: Automatic tasks which are run once to port/update account settings. Ideally, this shouldn't be exposed to users at all, we just use a gsettings key here as an optimization to only run it only once. -->
+      <summary>Magic number used to check if sanity cleaning tasks should be run</summary>
+      <description>empathy-sanity-cleaning.c uses this number to check if the cleaning tasks should be executed or not. Users should not change this key manually.</description>
+    </key>
+    <child name="ui" schema="org.gnome.Empathy.ui"/>
+    <child name="contacts" schema="org.gnome.Empathy.contacts"/>
+    <child name="sounds" schema="org.gnome.Empathy.sounds"/>
+    <child name="notifications" schema="org.gnome.Empathy.notifications"/>
+    <child name="conversation" schema="org.gnome.Empathy.conversation"/>
+    <child name="hints" schema="org.gnome.Empathy.hints"/>
+    <child name="location" schema="org.gnome.Empathy.location"/>
+  </schema>
+  <schema id="org.gnome.Empathy.ui" path="/org/gnome/empathy/ui/">
+    <key name="show-offline" type="b">
+      <default>true</default>
+      <summary>Show offline contacts</summary>
+      <description>Whether to show contacts that are offline in the contact list.</description>
+    </key>
+    <key name="show-avatars" type="b">
+      <default>true</default>
+      <summary>Show avatars</summary>
+      <description>Whether to show avatars for contacts in the contact list and chat windows.</description>
+    </key>
+    <key name="show-protocols" type="b">
+      <default>false</default>
+      <summary>Show protocols</summary>
+      <description>Whether to show protocols for contacts in the contact list.</description>
+    </key>
+    <key name="show-balance-in-roster" type="b">
+      <default>false</default>
+      <summary>Show Balance in contact list</summary>
+      <description>Whether to show account balances in the contact list.</description>
+    </key>
+    <key name="compact-contact-list" type="b">
+      <default>false</default>
+      <summary>Compact contact list</summary>
+      <description>Whether to show the contact list in compact mode.</description>
+    </key>
+    <key name="main-window-hidden" type="b">
+      <default>false</default>
+      <summary>Hide main window</summary>
+      <description>Hide the main window.</description>
+    </key>
+    <key name="avatar-directory" type="s">
+      <default>''</default>
+      <summary>Default directory to select an avatar image from</summary>
+      <description>The last directory that an avatar image was chosen from.</description>
+    </key>
+    <key name="separate-chat-windows" type="b">
+      <default>false</default>
+      <summary>Open new chats in separate windows</summary>
+      <description>Always open a separate chat window for new chats.</description>
+    </key>
+    <key name="events-notify-area" type="b">
+      <default>true</default>
+      <summary>Display incoming events in the status area</summary>
+      <description>Display incoming events in the status area. If false,
+present them to the user immediately.</description>
+    </key>
+    <key name="chat-window-paned-pos" type="i">
+      <default>0</default>
+      <summary>The position for the chat window side pane</summary>
+      <description>The stored position (in pixels) of the chat window side pane.</description>
+    </key>
+    <key name="show-groups" type="b">
+      <default>true</default>
+      <summary>Show contact groups</summary>
+      <description>Whether to show groups in the contact list.</description>
+    </key>
+  </schema>
+  <schema id="org.gnome.Empathy.contacts" path="/org/gnome/empathy/contacts/">
+    <key name="sort-criterium" type="s">
+      <default>'state'</default>
+      <summary>Contact list sort criterion</summary>
+      <description>Which criterion to use when sorting the contact list. Default is to sort by the contact's state with the value "state". A value of "name" will sort the contact list by name.</description>
+    </key>
+  </schema>
+  <schema id="org.gnome.Empathy.sounds" path="/org/gnome/empathy/sounds/">
+    <key name="sounds-enabled" type="b">
+      <default>true</default>
+      <summary>Use notification sounds</summary>
+      <description>Whether to play a sound to notify of events.</description>
+    </key>
+    <key name="sounds-disabled-away" type="b">
+      <default>true</default>
+      <summary>Disable sounds when away</summary>
+      <description>Whether to play sound notifications when away or busy.</description>
+    </key>
+    <key name="sounds-incoming-message" type="b">
+      <default>true</default>
+      <summary>Play a sound for incoming messages</summary>
+      <description>Whether to play a sound to notify of incoming messages.</description>
+    </key>
+    <key name="sounds-outgoing-message" type="b">
+      <default>false</default>
+      <summary>Play a sound for outgoing messages</summary>
+      <description>Whether to play a sound to notify of outgoing messages.</description>
+    </key>
+    <key name="sounds-new-conversation" type="b">
+      <default>true</default>
+      <summary>Play a sound for new conversations</summary>
+      <description>Whether to play a sound to notify of new conversations.</description>
+    </key>
+    <key name="sounds-contact-login" type="b">
+      <default>false</default>
+      <summary>Play a sound when a contact logs in</summary>
+      <description>Whether to play a sound to notify of contacts logging into the network.</description>
+    </key>
+    <key name="sounds-contact-logout" type="b">
+      <default>false</default>
+      <summary>Play a sound when a contact logs out</summary>
+      <description>Whether to play a sound to notify of contacts logging out of the network.</description>
+    </key>
+    <key name="sounds-service-login" type="b">
+      <default>false</default>
+      <summary>Play a sound when we log in</summary>
+      <description>Whether to play a sound when logging into a network.</description>
+    </key>
+    <key name="sounds-service-logout" type="b">
+      <default>false</default>
+      <summary>Play a sound when we log out</summary>
+      <description>Whether to play a sound when logging out of a network.</description>
+    </key>
+  </schema>
+  <schema id="org.gnome.Empathy.notifications" path="/org/gnome/empathy/notifications/">
+    <key name="notifications-enabled" type="b">
+      <default>true</default>
+      <summary>Enable popup notifications for new messages</summary>
+      <description>Whether to show a popup notification when receiving a new message.</description>
+    </key>
+    <key name="notifications-disabled-away" type="b">
+      <default>true</default>
+      <summary>Disable popup notifications when away</summary>
+      <description>Whether to show popup notifications when away or busy.</description>
+    </key>
+    <key name="notifications-focus" type="b">
+      <default>false</default>
+      <summary>Pop up notifications if the chat isn't focused</summary>
+      <description>Whether to show a popup notification when receiving a new message even if the chat is already opened, but not focused.</description>
+    </key>
+    <key name="notifications-contact-signin" type="b">
+      <default>false</default>
+      <summary>Pop up notifications when a contact logs in</summary>
+      <description>Whether to show a popup notification when a contact goes online.</description>
+    </key>
+    <key name="notifications-contact-signout" type="b">
+      <default>false</default>
+      <summary>Pop up notifications when a contact logs out</summary>
+      <description>Whether to show a popup notification when a contact goes offline.</description>
+    </key>
+  </schema>
+  <schema id="org.gnome.Empathy.conversation" path="/org/gnome/empathy/conversation/">
+    <key name="graphical-smileys" type="b">
+      <default>true</default>
+      <summary>Use graphical smileys</summary>
+      <description>Whether to convert smileys into graphical images in conversations.</description>
+    </key>
+    <key name="show-contacts-in-rooms" type="b">
+      <default>true</default>
+      <summary>Show contact list in rooms</summary>
+      <description>Whether to show the contact list in chat rooms.</description>
+    </key>
+    <key name="theme" type="s">
+      <default>'classic'</default>
+      <summary>Chat window theme</summary>
+      <description>The theme that is used to display the conversation in chat windows.</description>
+    </key>
+    <key name="theme-variant" type="s">
+      <default>''</default>
+      <summary>Chat window theme variant</summary>
+      <description>The theme variant that is used to display the conversation in chat windows.</description>
+    </key>
+    <key name="adium-path" type="s">
+      <default>''</default>
+      <summary>Path of the Adium theme to use</summary>
+      <description>Path of the Adium theme to use if the theme used for chat is Adium.</description>
+    </key>
+    <key name="enable-webkit-developer-tools" type="b">
+      <default>false</default>
+      <summary>Enable WebKit Developer Tools</summary>
+      <description>Whether WebKit developer tools, such as the Web Inspector, should be enabled.</description>
+    </key>
+    <key name="send-chat-states" type="b">
+      <default>true</default>
+      <summary>Inform other users when you are typing to them</summary>
+      <description>Whether to send the 'composing' or 'paused' chat states. Does not currently affect the 'gone' state.</description>
+    </key>
+    <key name="theme-chat-room" type="b">
+      <default>true</default>
+      <summary>Use theme for chat rooms</summary>
+      <description>Whether to use the theme for chat rooms.</description>
+    </key>
+    <key name="spell-checker-languages" type="s">
+      <default>'en'</default>
+      <summary>Spell checking languages</summary>
+      <description>Comma-separated list of spell checker languages to use (e.g. "en, fr, nl").</description>
+    </key>
+    <key name="spell-checker-enabled" type="b">
+      <default>true</default>
+      <summary>Enable spell checker</summary>
+      <description>Whether to check words typed against the languages you want to check with.</description>
+    </key>
+    <key name="nick-completion-char" type="s">
+      <default>':'</default>
+      <summary>Nick completed character</summary>
+      <description>Character to add after nickname when using nick completion (tab) in group chat.</description>
+    </key>
+    <key name="avatar-in-icon" type="b">
+      <default>false</default>
+      <summary>Empathy should use the avatar of the contact as the chat window icon</summary>
+      <description>Whether Empathy should use the avatar of the contact as the chat window icon.</description>
+    </key>
+    <key name="room-last-account" type="o">
+      <default>"/"</default>
+      <summary>Last account selected in Join Room dialog</summary>
+      <description>D-Bus object path of the last account selected to join a room.</description>
+    </key>
+  </schema>
+  <schema id="org.gnome.Empathy.call" path="/org/gnome/empathy/call/">
+    <key name="camera-device" type="s">
+      <default>''</default>
+      <summary>Camera device</summary>
+      <description>Default camera device to use in video calls, e.g. /dev/video0.</description>
+    </key>
+    <key name="camera-position" enum="position">
+      <default>'bottom-left'</default>
+      <summary>Camera position</summary>
+      <description>Position the camera preview should be during a call.</description>
+    </key>
+    <key name="echo-cancellation" type="b">
+      <default>true</default>
+      <summary>Echo cancellation support</summary>
+      <description>Whether to enable Pulseaudio's echo cancellation filter.</description>
+    </key>
+  </schema>
+  <schema id="org.gnome.Empathy.hints" path="/org/gnome/empathy/hints/">
+    <key name="close-main-window" type="b">
+      <default>true</default>
+      <summary>Show hint about closing the main window</summary>
+      <description>Whether to show the message dialog about closing the main window with the 'x' button in the title bar.</description>
+    </key>
+  </schema>
+  <schema id="org.gnome.Empathy.location" path="/org/gnome/empathy/location/">
+    <key name="publish" type="b">
+      <default>false</default>
+      <summary>Empathy can publish the user's location</summary>
+      <description>Whether Empathy can publish the user's location to their contacts.</description>
+    </key>
+    <key name="resource-network" type="b">
+      <default>true</default>
+      <summary>Empathy can use the network to guess the location</summary>
+      <description>Whether Empathy can use the network to guess the location.</description>
+    </key>
+    <key name="resource-cell" type="b">
+      <default>true</default>
+      <summary>Empathy can use the cellular network to guess the location</summary>
+      <description>Whether Empathy can use the cellular network to guess the location.</description>
+    </key>
+    <key name="resource-gps" type="b">
+      <default>false</default>
+      <summary>Empathy can use the GPS to guess the location</summary>
+      <description>Whether Empathy can use the GPS to guess the location.</description>
+    </key>
+    <key name="reduce-accuracy" type="b">
+      <default>true</default>
+      <summary>Empathy should reduce the location's accuracy</summary>
+      <description>Whether Empathy should reduce the location's accuracy for privacy reasons.</description>
+    </key>
+  </schema>
+</schemalist>
diff --git a/data/org.gnome.Empathy.gschema.xml.in b/data/org.gnome.Empathy.gschema.xml.in
deleted file mode 100644 (file)
index c1ac758..0000000
+++ /dev/null
@@ -1,302 +0,0 @@
-<schemalist>
-
-  <enum id="position">
-    <value nick="top-left" value="1"/>
-    <value nick="top-right" value="2"/>
-    <value nick="bottom-left" value="3"/>
-    <value nick="bottom-right" value="4"/>
-  </enum>
-
-  <schema id="org.gnome.Empathy" path="/org/gnome/empathy/">
-    <key name="use-conn" type="b">
-      <default>true</default>
-      <_summary>Connection managers should be used</_summary>
-      <_description>Whether connectivity managers should be used to automatically disconnect/reconnect.</_description>
-    </key>
-    <key name="autoconnect" type="b">
-      <default>true</default>
-      <_summary>Empathy should auto-connect on startup</_summary>
-      <_description>Whether Empathy should automatically log into your accounts on startup.</_description>
-    </key>
-    <key name="autoaway" type="b">
-      <default>true</default>
-      <_summary>Empathy should auto-away when idle</_summary>
-      <_description>Whether Empathy should go into away mode automatically if the user is idle.</_description>
-    </key>
-    <key name="file-transfer-default-folder" type="s">
-      <default>''</default>
-      <_summary>Empathy default download folder</_summary>
-      <_description>The default folder to save file transfers in.</_description>
-    </key>
-    <key name="sanity-cleaning-number" type="u">
-      <default>0</default>
-      <!-- translators: Automatic tasks which are run once to port/update account settings. Ideally, this shouldn't be exposed to users at all, we just use a gsettings key here as an optimization to only run it only once. -->
-      <_summary>Magic number used to check if sanity cleaning tasks should be run</_summary>
-      <_description>empathy-sanity-cleaning.c uses this number to check if the cleaning tasks should be executed or not. Users should not change this key manually.</_description>
-    </key>
-    <child name="ui" schema="org.gnome.Empathy.ui"/>
-    <child name="contacts" schema="org.gnome.Empathy.contacts"/>
-    <child name="sounds" schema="org.gnome.Empathy.sounds"/>
-    <child name="notifications" schema="org.gnome.Empathy.notifications"/>
-    <child name="conversation" schema="org.gnome.Empathy.conversation"/>
-    <child name="hints" schema="org.gnome.Empathy.hints"/>
-    <child name="location" schema="org.gnome.Empathy.location"/>
-  </schema>
-  <schema id="org.gnome.Empathy.ui" path="/org/gnome/empathy/ui/">
-    <key name="show-offline" type="b">
-      <default>true</default>
-      <_summary>Show offline contacts</_summary>
-      <_description>Whether to show contacts that are offline in the contact list.</_description>
-    </key>
-    <key name="show-avatars" type="b">
-      <default>true</default>
-      <_summary>Show avatars</_summary>
-      <_description>Whether to show avatars for contacts in the contact list and chat windows.</_description>
-    </key>
-    <key name="show-protocols" type="b">
-      <default>false</default>
-      <_summary>Show protocols</_summary>
-      <_description>Whether to show protocols for contacts in the contact list.</_description>
-    </key>
-    <key name="show-balance-in-roster" type="b">
-      <default>false</default>
-      <_summary>Show Balance in contact list</_summary>
-      <_description>Whether to show account balances in the contact list.</_description>
-    </key>
-    <key name="compact-contact-list" type="b">
-      <default>false</default>
-      <_summary>Compact contact list</_summary>
-      <_description>Whether to show the contact list in compact mode.</_description>
-    </key>
-    <key name="main-window-hidden" type="b">
-      <default>false</default>
-      <_summary>Hide main window</_summary>
-      <_description>Hide the main window.</_description>
-    </key>
-    <key name="avatar-directory" type="s">
-      <default>''</default>
-      <_summary>Default directory to select an avatar image from</_summary>
-      <_description>The last directory that an avatar image was chosen from.</_description>
-    </key>
-    <key name="separate-chat-windows" type="b">
-      <default>false</default>
-      <_summary>Open new chats in separate windows</_summary>
-      <_description>Always open a separate chat window for new chats.</_description>
-    </key>
-    <key name="events-notify-area" type="b">
-      <default>true</default>
-      <_summary>Display incoming events in the status area</_summary>
-      <_description>Display incoming events in the status area. If false,
-present them to the user immediately.</_description>
-    </key>
-    <key name="chat-window-paned-pos" type="i">
-      <default>0</default>
-      <_summary>The position for the chat window side pane</_summary>
-      <_description>The stored position (in pixels) of the chat window side pane.</_description>
-    </key>
-    <key name="show-groups" type="b">
-      <default>true</default>
-      <_summary>Show contact groups</_summary>
-      <_description>Whether to show groups in the contact list.</_description>
-    </key>
-  </schema>
-  <schema id="org.gnome.Empathy.contacts" path="/org/gnome/empathy/contacts/">
-    <key name="sort-criterium" type="s">
-      <default>'state'</default>
-      <_summary>Contact list sort criterion</_summary>
-      <_description>Which criterion to use when sorting the contact list. Default is to sort by the contact's state with the value "state". A value of "name" will sort the contact list by name.</_description>
-    </key>
-  </schema>
-  <schema id="org.gnome.Empathy.sounds" path="/org/gnome/empathy/sounds/">
-    <key name="sounds-enabled" type="b">
-      <default>true</default>
-      <_summary>Use notification sounds</_summary>
-      <_description>Whether to play a sound to notify of events.</_description>
-    </key>
-    <key name="sounds-disabled-away" type="b">
-      <default>true</default>
-      <_summary>Disable sounds when away</_summary>
-      <_description>Whether to play sound notifications when away or busy.</_description>
-    </key>
-    <key name="sounds-incoming-message" type="b">
-      <default>true</default>
-      <_summary>Play a sound for incoming messages</_summary>
-      <_description>Whether to play a sound to notify of incoming messages.</_description>
-    </key>
-    <key name="sounds-outgoing-message" type="b">
-      <default>false</default>
-      <_summary>Play a sound for outgoing messages</_summary>
-      <_description>Whether to play a sound to notify of outgoing messages.</_description>
-    </key>
-    <key name="sounds-new-conversation" type="b">
-      <default>true</default>
-      <_summary>Play a sound for new conversations</_summary>
-      <_description>Whether to play a sound to notify of new conversations.</_description>
-    </key>
-    <key name="sounds-contact-login" type="b">
-      <default>false</default>
-      <_summary>Play a sound when a contact logs in</_summary>
-      <_description>Whether to play a sound to notify of contacts logging into the network.</_description>
-    </key>
-    <key name="sounds-contact-logout" type="b">
-      <default>false</default>
-      <_summary>Play a sound when a contact logs out</_summary>
-      <_description>Whether to play a sound to notify of contacts logging out of the network.</_description>
-    </key>
-    <key name="sounds-service-login" type="b">
-      <default>false</default>
-      <_summary>Play a sound when we log in</_summary>
-      <_description>Whether to play a sound when logging into a network.</_description>
-    </key>
-    <key name="sounds-service-logout" type="b">
-      <default>false</default>
-      <_summary>Play a sound when we log out</_summary>
-      <_description>Whether to play a sound when logging out of a network.</_description>
-    </key>
-  </schema>
-  <schema id="org.gnome.Empathy.notifications" path="/org/gnome/empathy/notifications/">
-    <key name="notifications-enabled" type="b">
-      <default>true</default>
-      <_summary>Enable popup notifications for new messages</_summary>
-      <_description>Whether to show a popup notification when receiving a new message.</_description>
-    </key>
-    <key name="notifications-disabled-away" type="b">
-      <default>true</default>
-      <_summary>Disable popup notifications when away</_summary>
-      <_description>Whether to show popup notifications when away or busy.</_description>
-    </key>
-    <key name="notifications-focus" type="b">
-      <default>false</default>
-      <_summary>Pop up notifications if the chat isn't focused</_summary>
-      <_description>Whether to show a popup notification when receiving a new message even if the chat is already opened, but not focused.</_description>
-    </key>
-    <key name="notifications-contact-signin" type="b">
-      <default>false</default>
-      <_summary>Pop up notifications when a contact logs in</_summary>
-      <_description>Whether to show a popup notification when a contact goes online.</_description>
-    </key>
-    <key name="notifications-contact-signout" type="b">
-      <default>false</default>
-      <_summary>Pop up notifications when a contact logs out</_summary>
-      <_description>Whether to show a popup notification when a contact goes offline.</_description>
-    </key>
-  </schema>
-  <schema id="org.gnome.Empathy.conversation" path="/org/gnome/empathy/conversation/">
-    <key name="graphical-smileys" type="b">
-      <default>true</default>
-      <_summary>Use graphical smileys</_summary>
-      <_description>Whether to convert smileys into graphical images in conversations.</_description>
-    </key>
-    <key name="show-contacts-in-rooms" type="b">
-      <default>true</default>
-      <_summary>Show contact list in rooms</_summary>
-      <_description>Whether to show the contact list in chat rooms.</_description>
-    </key>
-    <key name="theme" type="s">
-      <default>'classic'</default>
-      <_summary>Chat window theme</_summary>
-      <_description>The theme that is used to display the conversation in chat windows.</_description>
-    </key>
-    <key name="theme-variant" type="s">
-      <default>''</default>
-      <_summary>Chat window theme variant</_summary>
-      <_description>The theme variant that is used to display the conversation in chat windows.</_description>
-    </key>
-    <key name="adium-path" type="s">
-      <default>''</default>
-      <_summary>Path of the Adium theme to use</_summary>
-      <_description>Path of the Adium theme to use if the theme used for chat is Adium.</_description>
-    </key>
-    <key name="enable-webkit-developer-tools" type="b">
-      <default>false</default>
-      <_summary>Enable WebKit Developer Tools</_summary>
-      <_description>Whether WebKit developer tools, such as the Web Inspector, should be enabled.</_description>
-    </key>
-    <key name="send-chat-states" type="b">
-      <default>true</default>
-      <_summary>Inform other users when you are typing to them</_summary>
-      <_description>Whether to send the 'composing' or 'paused' chat states. Does not currently affect the 'gone' state.</_description>
-    </key>
-    <key name="theme-chat-room" type="b">
-      <default>true</default>
-      <_summary>Use theme for chat rooms</_summary>
-      <_description>Whether to use the theme for chat rooms.</_description>
-    </key>
-    <key name="spell-checker-languages" type="s">
-      <default>'en'</default>
-      <_summary>Spell checking languages</_summary>
-      <_description>Comma-separated list of spell checker languages to use (e.g. "en, fr, nl").</_description>
-    </key>
-    <key name="spell-checker-enabled" type="b">
-      <default>true</default>
-      <_summary>Enable spell checker</_summary>
-      <_description>Whether to check words typed against the languages you want to check with.</_description>
-    </key>
-    <key name="nick-completion-char" type="s">
-      <default>':'</default>
-      <_summary>Nick completed character</_summary>
-      <_description>Character to add after nickname when using nick completion (tab) in group chat.</_description>
-    </key>
-    <key name="avatar-in-icon" type="b">
-      <default>false</default>
-      <_summary>Empathy should use the avatar of the contact as the chat window icon</_summary>
-      <_description>Whether Empathy should use the avatar of the contact as the chat window icon.</_description>
-    </key>
-    <key name="room-last-account" type="o">
-      <default>"/"</default>
-      <_summary>Last account selected in Join Room dialog</_summary>
-      <_description>D-Bus object path of the last account selected to join a room.</_description>
-    </key>
-  </schema>
-  <schema id="org.gnome.Empathy.call" path="/org/gnome/empathy/call/">
-    <key name="camera-device" type="s">
-      <default>''</default>
-      <_summary>Camera device</_summary>
-      <_description>Default camera device to use in video calls, e.g. /dev/video0.</_description>
-    </key>
-    <key name="camera-position" enum="position">
-      <default>'bottom-left'</default>
-      <_summary>Camera position</_summary>
-      <_description>Position the camera preview should be during a call.</_description>
-    </key>
-    <key name="echo-cancellation" type="b">
-      <default>true</default>
-      <_summary>Echo cancellation support</_summary>
-      <_description>Whether to enable Pulseaudio's echo cancellation filter.</_description>
-    </key>
-  </schema>
-  <schema id="org.gnome.Empathy.hints" path="/org/gnome/empathy/hints/">
-    <key name="close-main-window" type="b">
-      <default>true</default>
-      <_summary>Show hint about closing the main window</_summary>
-      <_description>Whether to show the message dialog about closing the main window with the 'x' button in the title bar.</_description>
-    </key>
-  </schema>
-  <schema id="org.gnome.Empathy.location" path="/org/gnome/empathy/location/">
-    <key name="publish" type="b">
-      <default>false</default>
-      <_summary>Empathy can publish the user's location</_summary>
-      <_description>Whether Empathy can publish the user's location to their contacts.</_description>
-    </key>
-    <key name="resource-network" type="b">
-      <default>true</default>
-      <_summary>Empathy can use the network to guess the location</_summary>
-      <_description>Whether Empathy can use the network to guess the location.</_description>
-    </key>
-    <key name="resource-cell" type="b">
-      <default>true</default>
-      <_summary>Empathy can use the cellular network to guess the location</_summary>
-      <_description>Whether Empathy can use the cellular network to guess the location.</_description>
-    </key>
-    <key name="resource-gps" type="b">
-      <default>false</default>
-      <_summary>Empathy can use the GPS to guess the location</_summary>
-      <_description>Whether Empathy can use the GPS to guess the location.</_description>
-    </key>
-    <key name="reduce-accuracy" type="b">
-      <default>true</default>
-      <_summary>Empathy should reduce the location's accuracy</_summary>
-      <_description>Whether Empathy should reduce the location's accuracy for privacy reasons.</_description>
-    </key>
-  </schema>
-</schemalist>
index aa7f7fe785435e732b25e4fe85aeef96d45a5b6c..2f6e53b86cb2314fe6dc326deaf87346f2772f0d 100644 (file)
@@ -356,10 +356,10 @@ static void
 get_enabled (const McpAccountStorage *self,
     const McpAccountManager *am,
     const gchar *acc,
-    GoaObject *object)
+    GoaAccount *account)
 {
   mcp_account_manager_set_value (am, acc, "Enabled",
-      goa_object_peek_chat (object) != NULL ? "true" : "false");
+      goa_account_get_chat_disabled (account) == FALSE ? "true" : "false");
 }
 
 
@@ -419,11 +419,11 @@ mcp_account_manager_goa_get (const McpAccountStorage *self,
       g_strfreev (keys);
 
       /* Enabled */
-      get_enabled (self, am, acc, object);
+      get_enabled (self, am, acc, account);
     }
   else if (!tp_strdiff (key, "Enabled"))
     {
-      get_enabled (self, am, acc, object);
+      get_enabled (self, am, acc, account);
     }
   else
     {
@@ -468,18 +468,33 @@ mcp_account_manager_goa_set (const McpAccountStorage *self,
   if (!account_is_in_goa (self, account))
     return FALSE;
 
-  /* No need to save Enabled, it's up to the GOA configuration if the account
-   * is configured or not. */
+  DEBUG ("%s: (%s, %s, %s)", G_STRFUNC, account, key, val);
+
   if (!tp_strdiff (key, "Enabled"))
-    return TRUE;
+    {
+      GoaObject *object;
+      GoaAccount *acc;
 
-  DEBUG ("%s: (%s, %s, %s)", G_STRFUNC, account, key, val);
+      object = g_hash_table_lookup (priv->accounts, account);
+
+      if (object == NULL)
+        return FALSE;
+
+      acc = goa_object_peek_account (object);
+
+      if (acc == NULL)
+        return FALSE;
+
+      goa_account_set_chat_disabled (acc, tp_strdiff (val, "true"));
+      goto out;
+    }
 
   if (val != NULL)
     g_key_file_set_value (priv->store, account, key, val);
   else
     g_key_file_remove_key (priv->store, account, key, NULL);
 
+ out:
   /* Pretend we save everything so MC won't save this in accounts.cfg */
   return TRUE;
 }
@@ -562,8 +577,7 @@ mcp_account_manager_goa_get_restrictions (const McpAccountStorage *self,
     const gchar *account)
 {
   return TP_STORAGE_RESTRICTION_FLAG_CANNOT_SET_PARAMETERS |
-         TP_STORAGE_RESTRICTION_FLAG_CANNOT_SET_SERVICE |
-         TP_STORAGE_RESTRICTION_FLAG_CANNOT_SET_ENABLED;
+         TP_STORAGE_RESTRICTION_FLAG_CANNOT_SET_SERVICE;
 }
 
 
index d7282b198b1c4cc7e3612f517504fb202c748eb0..a4343e16141777148cd0c74b7304ee8cb4677ca5 100644 (file)
@@ -139,7 +139,8 @@ entry_password_changed_cb (GtkEntry *entry,
 EmpathyIrcNetworkChooser *
 empathy_account_widget_irc_build (EmpathyAccountWidget *self,
     const char *filename,
-    GtkWidget **table_common_settings)
+    GtkWidget **table_common_settings,
+    GtkWidget **box)
 {
   EmpathyAccountWidgetIrc *settings;
   EmpathyAccountSettings *ac_settings;
@@ -151,7 +152,7 @@ empathy_account_widget_irc_build (EmpathyAccountWidget *self,
 
   self->ui_details->gui = empathy_builder_get_file (filename,
       "table_irc_settings", table_common_settings,
-      "vbox_irc", &self->ui_details->widget,
+      "vbox_irc", box,
       "table_irc_settings", &settings->vbox_settings,
       "entry_password", &entry_password,
       NULL);
@@ -204,7 +205,8 @@ empathy_account_widget_irc_build (EmpathyAccountWidget *self,
 
 EmpathyIrcNetworkChooser *
 empathy_account_widget_irc_build_simple (EmpathyAccountWidget *self,
-    const char *filename)
+    const char *filename,
+    GtkWidget **box)
 {
   EmpathyAccountWidgetIrc *settings;
   EmpathyAccountSettings *ac_settings;
@@ -214,7 +216,7 @@ empathy_account_widget_irc_build_simple (EmpathyAccountWidget *self,
   settings->self = self;
 
   self->ui_details->gui = empathy_builder_get_file (filename,
-      "vbox_irc_simple", &self->ui_details->widget,
+      "vbox_irc_simple", box,
       "alignment_network_simple", &alignment,
       NULL);
 
index cc5dfff2747dce0398ad7eef7563699e742a1da3..bcd45b76a66dee947ce1da016d10c389562a814e 100644 (file)
@@ -30,11 +30,13 @@ G_BEGIN_DECLS
 EmpathyIrcNetworkChooser * empathy_account_widget_irc_build (
     EmpathyAccountWidget *self,
     const char *filename,
-    GtkWidget **table_common_settings);
+    GtkWidget **table_common_settings,
+    GtkWidget **box);
 
 EmpathyIrcNetworkChooser * empathy_account_widget_irc_build_simple (
     EmpathyAccountWidget *self,
-    const char *filename);
+    const char *filename,
+    GtkWidget **box);
 
 G_END_DECLS
 
index db8dc7ddf256eb2d513cc72afc485e16ecdc5af2..988b09883e48bb39b0c5ca7ced44c3d7d028bb8c 100644 (file)
@@ -29,8 +29,6 @@
 G_BEGIN_DECLS
 
 struct _EmpathyAccountWidgetUIDetails {
-  GtkWidget *widget;
-
   GtkBuilder *gui;
 
   char *default_focus;
index 05be1b874726e72509528dce5446bc3399b2e771..8aa4e89d1fa0aa3fedd811e69436614530d2b520 100644 (file)
@@ -108,7 +108,7 @@ checkbutton_tel_toggled (
   empathy_account_widget_changed (sip_settings->self);
 }
 
-void
+GtkWidget *
 empathy_account_widget_sip_build (EmpathyAccountWidget *self,
     const char *filename,
     GtkWidget **grid_common_settings)
@@ -174,6 +174,8 @@ empathy_account_widget_sip_build (EmpathyAccountWidget *self,
           "checkbutton_discover-binding", "discover-binding",
           "spinbutton_keepalive-interval", "keepalive-interval",
           "checkbutton_ignore-tls-errors", "ignore-tls-errors",
+          "entry_local-ip-address", "local-ip-address",
+          "spinbutton_local-port", "local-port",
           NULL);
 
       account_widget_sip_discover_stun_toggled_cb (
@@ -263,5 +265,5 @@ empathy_account_widget_sip_build (EmpathyAccountWidget *self,
       gtk_widget_show (settings->combobox_keep_alive_mechanism);
     }
 
-  self->ui_details->widget = vbox_settings;
+  return vbox_settings;
 }
index 7673a5bfd92332d5ccfca9178e290a2e2d471fb1..84e96e7b63d5e3d4cd6e0b01fbc612b21e7d0d89 100644 (file)
@@ -26,7 +26,7 @@
 
 G_BEGIN_DECLS
 
-void empathy_account_widget_sip_build (EmpathyAccountWidget *self,
+GtkWidget * empathy_account_widget_sip_build (EmpathyAccountWidget *self,
     const char *filename,
     GtkWidget **grid_common_settings);
 
index e86e588500f53b94fc47ddcad5363778262dd7e0..4104572d10080cb9005a64d49c459182f5da97fa 100644 (file)
     <property name="step_increment">1</property>
     <property name="page_increment">10</property>
   </object>
+  <object class="GtkAdjustment" id="adjustment4">
+    <property name="upper">65535</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
   <object class="GtkVBox" id="vbox_sip_settings">
     <property name="visible">True</property>
     <property name="can_focus">False</property>
                             <property name="width">3</property>
                           </packing>
                         </child>
+                        <child>
+                         <object class="GtkEntry" id="entry_local-ip-address">
+                           <property name="visible">True</property>
+                           <property name="can_focus">True</property>
+                         </object>
+                         <packing>
+                           <property name="left_attach">1</property>
+                           <property name="top_attach">14</property>
+                         </packing>
+                        </child>
                         <child>
                           <object class="GtkLabel" id="label_nat_traversal">
                             <property name="visible">True</property>
                             <property name="top_attach">5</property>
                           </packing>
                         </child>
+                        <child>
+                          <object class="GtkAlignment" id="alignment16">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="left_padding">12</property>
+                            <child>
+                              <object class="GtkLabel" id="label_local-ip-address">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="xalign">0</property>
+                                <property name="label" translatable="yes">Local IP Address:</property>
+                                <property name="mnemonic_widget">entry_local-ip-address</property>
+                              </object>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">14</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="label_local-port">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="xalign">0</property>
+                            <property name="label" translatable="yes">Port:</property>
+                            <property name="mnemonic_widget">spinbutton_local-port</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">2</property>
+                            <property name="top_attach">14</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkSpinButton" id="spinbutton_local-port">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="adjustment">adjustment4</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">3</property>
+                            <property name="top_attach">14</property>
+                          </packing>
+                        </child>
                       </object>
                     </child>
                   </object>
index 7530914fca37be41cb0ce704bfb1d01c3a883578..96e6a88685689ea2502137695cfeae69fe1c8c5d 100644 (file)
@@ -50,7 +50,7 @@
 #define DEBUG_FLAG EMPATHY_DEBUG_ACCOUNT
 #include <libempathy/empathy-debug.h>
 
-G_DEFINE_TYPE (EmpathyAccountWidget, empathy_account_widget, G_TYPE_OBJECT)
+G_DEFINE_TYPE (EmpathyAccountWidget, empathy_account_widget, GTK_TYPE_BOX)
 
 typedef enum
 {
@@ -903,6 +903,8 @@ account_widget_account_enabled_cb (GObject *source_object,
       empathy_connect_new_account (account, self->priv->account_manager);
     }
 
+  g_signal_emit (self, signals[CLOSE], 0, GTK_RESPONSE_APPLY);
+
   /* unref self - part of the workaround */
   g_object_unref (self);
 }
@@ -917,6 +919,7 @@ account_widget_applied_cb (GObject *source_object,
   EmpathyAccountSettings *settings = EMPATHY_ACCOUNT_SETTINGS (source_object);
   EmpathyAccountWidget *self = EMPATHY_ACCOUNT_WIDGET (user_data);
   gboolean reconnect_required;
+  gboolean fire_close = TRUE;
 
   empathy_account_settings_apply_finish (settings, res, &reconnect_required,
       &error);
@@ -942,6 +945,9 @@ account_widget_applied_cb (GObject *source_object,
           tp_account_set_enabled_async (account, TRUE,
               account_widget_account_enabled_cb, self);
           g_signal_emit (self, signals[ACCOUNT_CREATED], 0, account);
+
+          /* Will be fired in account_widget_account_enabled_cb */
+          fire_close = FALSE;
         }
       else
         {
@@ -969,8 +975,11 @@ account_widget_applied_cb (GObject *source_object,
 
   self->priv->contains_pending_changes = FALSE;
 
-  /* announce the widget can be closed */
-  g_signal_emit (self, signals[CLOSE], 0, GTK_RESPONSE_APPLY);
+  if (fire_close)
+    {
+      /* announce the widget can be closed */
+      g_signal_emit (self, signals[CLOSE], 0, GTK_RESPONSE_APPLY);
+    }
 
   /* unref the widget - part of the workaround */
   g_object_unref (self);
@@ -1049,15 +1058,15 @@ account_widget_settings_ready_cb (EmpathyAccountSettings *settings,
     account_widget_setup_generic (self);
 }
 
-static void
+static GtkWidget *
 account_widget_build_generic (EmpathyAccountWidget *self,
     const char *filename)
 {
-  GtkWidget *expander_advanced;
+  GtkWidget *expander_advanced, *box;
 
   self->ui_details->gui = empathy_builder_get_file (filename,
       "grid_common_settings", &self->priv->grid_common_settings,
-      "vbox_generic_settings", &self->ui_details->widget,
+      "vbox_generic_settings", &box,
       "expander_advanced_settings", &expander_advanced,
       NULL);
 
@@ -1071,17 +1080,19 @@ account_widget_build_generic (EmpathyAccountWidget *self,
   else
     g_signal_connect (self->priv->settings, "notify::ready",
         G_CALLBACK (account_widget_settings_ready_cb), self);
+
+  return box;
 }
 
-static void
+static GtkWidget *
 account_widget_build_salut (EmpathyAccountWidget *self,
     const char *filename)
 {
-  GtkWidget *expander_advanced;
+  GtkWidget *expander_advanced, *box;
 
   self->ui_details->gui = empathy_builder_get_file (filename,
       "grid_common_settings", &self->priv->grid_common_settings,
-      "vbox_salut_settings", &self->ui_details->widget,
+      "vbox_salut_settings", &box,
       "expander_advanced_settings", &expander_advanced,
       NULL);
 
@@ -1098,12 +1109,16 @@ account_widget_build_salut (EmpathyAccountWidget *self,
     gtk_widget_hide (expander_advanced);
 
   self->ui_details->default_focus = g_strdup ("entry_first_name");
+
+  return box;
 }
 
-static void
+static GtkWidget *
 account_widget_build_irc (EmpathyAccountWidget *self,
   const char *filename)
 {
+  GtkWidget *box;
+
   empathy_account_settings_set_regex (self->priv->settings, "account",
       ACCOUNT_REGEX_IRC);
   empathy_account_settings_set_regex (self->priv->settings, "username",
@@ -1112,20 +1127,24 @@ account_widget_build_irc (EmpathyAccountWidget *self,
   if (self->priv->simple)
     {
       self->priv->irc_network_chooser = empathy_account_widget_irc_build_simple
-        (self, filename);
+        (self, filename, &box);
     }
   else
     {
       self->priv->irc_network_chooser = empathy_account_widget_irc_build (self,
-          filename, &self->priv->grid_common_settings);
+          filename, &self->priv->grid_common_settings, &box);
     }
+
+  return box;
 }
 
-static void
+static GtkWidget *
 account_widget_build_sip (EmpathyAccountWidget *self,
   const char *filename)
 {
-  empathy_account_widget_sip_build (self, filename,
+  GtkWidget *box;
+
+  box = empathy_account_widget_sip_build (self, filename,
     &self->priv->grid_common_settings);
 
   if (self->priv->simple)
@@ -1139,19 +1158,23 @@ account_widget_build_sip (EmpathyAccountWidget *self,
       self->priv->remember_password_widget = GTK_WIDGET (
           gtk_builder_get_object (self->ui_details->gui, "remember_password"));
     }
+
+  return box;
 }
 
-static void
+static GtkWidget *
 account_widget_build_msn (EmpathyAccountWidget *self,
     const char *filename)
 {
+  GtkWidget *box;
+
   empathy_account_settings_set_regex (self->priv->settings, "account",
       ACCOUNT_REGEX_MSN);
 
   if (self->priv->simple)
     {
       self->ui_details->gui = empathy_builder_get_file (filename,
-          "vbox_msn_simple", &self->ui_details->widget,
+          "vbox_msn_simple", &box,
           NULL);
 
       empathy_account_widget_handle_params (self,
@@ -1169,7 +1192,7 @@ account_widget_build_msn (EmpathyAccountWidget *self,
     {
       self->ui_details->gui = empathy_builder_get_file (filename,
           "grid_common_msn_settings", &self->priv->grid_common_settings,
-          "vbox_msn_settings", &self->ui_details->widget,
+          "vbox_msn_settings", &box,
           NULL);
 
       empathy_account_widget_handle_params (self,
@@ -1184,6 +1207,8 @@ account_widget_build_msn (EmpathyAccountWidget *self,
       self->priv->remember_password_widget = GTK_WIDGET (
           gtk_builder_get_object (self->ui_details->gui, "remember_password"));
     }
+
+  return box;
 }
 
 static void
@@ -1277,7 +1302,7 @@ account_widget_get_service (EmpathyAccountWidget *self)
   return NO_SERVICE;
 }
 
-static void
+static GtkWidget *
 account_widget_build_jabber (EmpathyAccountWidget *self,
     const char *filename)
 {
@@ -1289,6 +1314,7 @@ account_widget_build_jabber (EmpathyAccountWidget *self,
   GtkWidget *label_example;
   GtkWidget *expander_advanced;
   GtkWidget *entry_id;
+  GtkWidget *box;
   Service service;
 
   service = account_widget_get_service (self);
@@ -1300,7 +1326,7 @@ account_widget_build_jabber (EmpathyAccountWidget *self,
     {
       /* Simple widget for XMPP */
       self->ui_details->gui = empathy_builder_get_file (filename,
-          "vbox_jabber_simple", &self->ui_details->widget,
+          "vbox_jabber_simple", &box,
           "label_id_simple", &label_id,
           "label_id_create", &label_id_create,
           "label_password_simple", &label_password,
@@ -1331,7 +1357,7 @@ account_widget_build_jabber (EmpathyAccountWidget *self,
     {
       /* Simple widget for Google Talk */
       self->ui_details->gui = empathy_builder_get_file (filename,
-          "vbox_gtalk_simple", &self->ui_details->widget,
+          "vbox_gtalk_simple", &box,
           NULL);
 
       empathy_account_widget_handle_params (self,
@@ -1349,7 +1375,7 @@ account_widget_build_jabber (EmpathyAccountWidget *self,
     {
       /* Simple widget for Facebook */
       self->ui_details->gui = empathy_builder_get_file (filename,
-          "vbox_fb_simple", &self->ui_details->widget,
+          "vbox_fb_simple", &box,
           "entry_id_fb_simple", &entry_id,
           NULL);
 
@@ -1372,7 +1398,7 @@ account_widget_build_jabber (EmpathyAccountWidget *self,
       /* Full widget for XMPP, Google Talk and Facebook*/
       self->ui_details->gui = empathy_builder_get_file (filename,
           "grid_common_settings", &self->priv->grid_common_settings,
-          "vbox_jabber_settings", &self->ui_details->widget,
+          "vbox_jabber_settings", &box,
           "spinbutton_port", &spinbutton_port,
           "checkbutton_ssl", &checkbutton_ssl,
           "label_username_f_example", &label_example_fb,
@@ -1434,13 +1460,16 @@ account_widget_build_jabber (EmpathyAccountWidget *self,
       if (!info.show_advanced)
         gtk_widget_hide (expander_advanced);
     }
+
+  return box;
 }
 
-static void
+static GtkWidget *
 account_widget_build_icq (EmpathyAccountWidget *self,
     const char *filename)
 {
   GtkWidget *spinbutton_port;
+  GtkWidget *box;
 
   empathy_account_settings_set_regex (self->priv->settings, "account",
       ACCOUNT_REGEX_ICQ);
@@ -1448,7 +1477,7 @@ account_widget_build_icq (EmpathyAccountWidget *self,
   if (self->priv->simple)
     {
       self->ui_details->gui = empathy_builder_get_file (filename,
-          "vbox_icq_simple", &self->ui_details->widget,
+          "vbox_icq_simple", &box,
           NULL);
 
       empathy_account_widget_handle_params (self,
@@ -1466,7 +1495,7 @@ account_widget_build_icq (EmpathyAccountWidget *self,
     {
       self->ui_details->gui = empathy_builder_get_file (filename,
           "grid_common_settings", &self->priv->grid_common_settings,
-          "vbox_icq_settings", &self->ui_details->widget,
+          "vbox_icq_settings", &box,
           "spinbutton_port", &spinbutton_port,
           NULL);
 
@@ -1483,18 +1512,20 @@ account_widget_build_icq (EmpathyAccountWidget *self,
       self->priv->remember_password_widget = GTK_WIDGET (
           gtk_builder_get_object (self->ui_details->gui, "remember_password"));
     }
+
+  return box;
 }
 
-static void
+static GtkWidget *
 account_widget_build_aim (EmpathyAccountWidget *self,
     const char *filename)
 {
-  GtkWidget *spinbutton_port;
+  GtkWidget *spinbutton_port, *box;
 
   if (self->priv->simple)
     {
       self->ui_details->gui = empathy_builder_get_file (filename,
-          "vbox_aim_simple", &self->ui_details->widget,
+          "vbox_aim_simple", &box,
           NULL);
 
       empathy_account_widget_handle_params (self,
@@ -1512,7 +1543,7 @@ account_widget_build_aim (EmpathyAccountWidget *self,
     {
       self->ui_details->gui = empathy_builder_get_file (filename,
           "grid_common_settings", &self->priv->grid_common_settings,
-          "vbox_aim_settings", &self->ui_details->widget,
+          "vbox_aim_settings", &box,
           "spinbutton_port", &spinbutton_port,
           NULL);
 
@@ -1528,19 +1559,23 @@ account_widget_build_aim (EmpathyAccountWidget *self,
       self->priv->remember_password_widget = GTK_WIDGET (
           gtk_builder_get_object (self->ui_details->gui, "remember_password"));
     }
+
+  return box;
 }
 
-static void
+static GtkWidget *
 account_widget_build_yahoo (EmpathyAccountWidget *self,
     const char *filename)
 {
+  GtkWidget *box;
+
   empathy_account_settings_set_regex (self->priv->settings, "account",
       ACCOUNT_REGEX_YAHOO);
 
   if (self->priv->simple)
     {
       self->ui_details->gui = empathy_builder_get_file (filename,
-          "vbox_yahoo_simple", &self->ui_details->widget,
+          "vbox_yahoo_simple", &box,
           NULL);
 
       empathy_account_widget_handle_params (self,
@@ -1558,7 +1593,7 @@ account_widget_build_yahoo (EmpathyAccountWidget *self,
     {
       self->ui_details->gui = empathy_builder_get_file (filename,
           "grid_common_settings", &self->priv->grid_common_settings,
-          "vbox_yahoo_settings", &self->ui_details->widget,
+          "vbox_yahoo_settings", &box,
           NULL);
 
       empathy_account_widget_handle_params (self,
@@ -1575,16 +1610,20 @@ account_widget_build_yahoo (EmpathyAccountWidget *self,
       self->priv->remember_password_widget = GTK_WIDGET (
           gtk_builder_get_object (self->ui_details->gui, "remember_password"));
     }
+
+  return box;
 }
 
-static void
+static GtkWidget *
 account_widget_build_groupwise (EmpathyAccountWidget *self,
     const char *filename)
 {
+  GtkWidget *box;
+
   if (self->priv->simple)
     {
       self->ui_details->gui = empathy_builder_get_file (filename,
-          "vbox_groupwise_simple", &self->ui_details->widget,
+          "vbox_groupwise_simple", &box,
           NULL);
 
       empathy_account_widget_handle_params (self,
@@ -1602,7 +1641,7 @@ account_widget_build_groupwise (EmpathyAccountWidget *self,
     {
       self->ui_details->gui = empathy_builder_get_file (filename,
           "grid_common_groupwise_settings", &self->priv->grid_common_settings,
-          "vbox_groupwise_settings", &self->ui_details->widget,
+          "vbox_groupwise_settings", &box,
           NULL);
 
       empathy_account_widget_handle_params (self,
@@ -1617,16 +1656,8 @@ account_widget_build_groupwise (EmpathyAccountWidget *self,
       self->priv->remember_password_widget = GTK_WIDGET (
           gtk_builder_get_object (self->ui_details->gui, "remember_password"));
     }
-}
-
-static void
-account_widget_destroy_cb (GtkWidget *widget,
-    EmpathyAccountWidget *self)
-{
-  /* set the destroyed flag - workaround */
-  self->priv->destroyed = TRUE;
 
-  g_object_unref (self);
+  return box;
 }
 
 void
@@ -1782,15 +1813,12 @@ out:
   { #cm, #proto, "empathy-account-widget-"#proto".ui", \
     account_widget_build_##proto }
 
-#ifndef HAVE_MEEGO
-/* Meego doesn't support registration */
 static void
 add_register_buttons (EmpathyAccountWidget *self,
     TpAccount *account)
 {
   const TpConnectionManagerProtocol *protocol;
   GtkWidget *radiobutton_register;
-  GtkWidget *vbox = self->ui_details->widget;
 
   if (!self->priv->creating_account)
     return;
@@ -1815,15 +1843,14 @@ add_register_buttons (EmpathyAccountWidget *self,
         GTK_RADIO_BUTTON (self->priv->radiobutton_reuse)),
       _("Create a new account on the server"));
 
-  gtk_box_pack_start (GTK_BOX (vbox), self->priv->radiobutton_reuse, FALSE,
+  gtk_box_pack_start (GTK_BOX (self), self->priv->radiobutton_reuse, FALSE,
       FALSE, 0);
-  gtk_box_pack_start (GTK_BOX (vbox), radiobutton_register, FALSE, FALSE, 0);
-  gtk_box_reorder_child (GTK_BOX (vbox), self->priv->radiobutton_reuse, 0);
-  gtk_box_reorder_child (GTK_BOX (vbox), radiobutton_register, 1);
+  gtk_box_pack_start (GTK_BOX (self), radiobutton_register, FALSE, FALSE, 0);
+  gtk_box_reorder_child (GTK_BOX (self), self->priv->radiobutton_reuse, 0);
+  gtk_box_reorder_child (GTK_BOX (self), radiobutton_register, 1);
   gtk_widget_show (self->priv->radiobutton_reuse);
   gtk_widget_show (radiobutton_register);
 }
-#endif /* HAVE_MEEGO */
 
 static void
 remember_password_toggled_cb (GtkToggleButton *button,
@@ -1876,7 +1903,7 @@ do_constructed (GObject *obj)
     const gchar *cm_name;
     const gchar *protocol;
     const char *file;
-    void (*func)(EmpathyAccountWidget *self, const gchar *filename);
+    GtkWidget * (*func)(EmpathyAccountWidget *self, const gchar *filename);
   } widgets [] = {
     { "salut", "local-xmpp", "empathy-account-widget-local-xmpp.ui",
         account_widget_build_salut },
@@ -1890,6 +1917,7 @@ do_constructed (GObject *obj)
     WIDGET (sofiasip, sip),
   };
   const gchar *protocol, *cm_name;
+  GtkWidget *box;
 
   account = empathy_account_settings_get_account (self->priv->settings);
 
@@ -1905,7 +1933,7 @@ do_constructed (GObject *obj)
 
           filename = empathy_file_lookup (widgets[i].file,
               "libempathy-gtk");
-          widgets[i].func (self, filename);
+          box = widgets[i].func (self, filename);
           g_free (filename);
 
           break;
@@ -1916,10 +1944,12 @@ do_constructed (GObject *obj)
     {
       gchar *filename = empathy_file_lookup (
           "empathy-account-widget-generic.ui", "libempathy-gtk");
-      account_widget_build_generic (self, filename);
+      box = account_widget_build_generic (self, filename);
       g_free (filename);
     }
 
+  gtk_container_add (GTK_CONTAINER (self), box);
+
   /* handle default focus */
   if (self->ui_details->default_focus != NULL)
     {
@@ -1997,7 +2027,7 @@ do_constructed (GObject *obj)
   gtk_box_pack_end (GTK_BOX (self->priv->hbox_buttons),
       self->priv->cancel_button, TRUE, TRUE, 3);
 
-  gtk_box_pack_end (GTK_BOX (self->ui_details->widget), self->priv->hbox_buttons, FALSE,
+  gtk_box_pack_end (GTK_BOX (self), self->priv->hbox_buttons, FALSE,
       FALSE, 3);
 
   g_signal_connect (self->priv->cancel_button, "clicked",
@@ -2017,20 +2047,9 @@ do_constructed (GObject *obj)
   else
     account_widget_set_control_buttons_sensitivity (self, FALSE);
 
-#ifndef HAVE_MEEGO
   add_register_buttons (self, account);
-#endif /* HAVE_MEEGO */
-
-  /* hook up to widget destruction to unref ourselves */
-  g_signal_connect (self->ui_details->widget, "destroy",
-      G_CALLBACK (account_widget_destroy_cb), self);
 
-  if (self->ui_details->gui != NULL)
-    {
-      empathy_builder_unref_and_keep_widget (self->ui_details->gui,
-          self->ui_details->widget);
-      self->ui_details->gui = NULL;
-    }
+  g_clear_object (&self->ui_details->gui);
 
   display_name = empathy_account_settings_get_display_name (
       self->priv->settings);
@@ -2185,28 +2204,19 @@ empathy_account_widget_handle_params (EmpathyAccountWidget *self,
   va_end (args);
 }
 
-GtkWidget *
-empathy_account_widget_get_widget (EmpathyAccountWidget *widget)
-{
-  return widget->ui_details->widget;
-}
-
 EmpathyAccountWidget *
 empathy_account_widget_new_for_protocol (EmpathyAccountSettings *settings,
     gboolean simple)
 {
-  EmpathyAccountWidget *self;
-
   g_return_val_if_fail (EMPATHY_IS_ACCOUNT_SETTINGS (settings), NULL);
 
-  self = g_object_new
-    (EMPATHY_TYPE_ACCOUNT_WIDGET,
-        "settings", settings, "simple", simple,
+  return g_object_new (EMPATHY_TYPE_ACCOUNT_WIDGET,
+        "orientation", GTK_ORIENTATION_VERTICAL,
+        "settings", settings,
+        "simple", simple,
         "creating-account",
-        empathy_account_settings_get_account (settings) == NULL,
+          empathy_account_settings_get_account (settings) == NULL,
         NULL);
-
-  return self;
 }
 
 gchar *
index 5279d75f288104cd545cd716e10fe46d036ddddc..acc8a051a7534158bb641f45f652ae7b7f301717 100644 (file)
@@ -46,7 +46,7 @@ typedef struct _EmpathyAccountWidgetPriv EmpathyAccountWidgetPriv;
 typedef struct _EmpathyAccountWidgetUIDetails EmpathyAccountWidgetUIDetails;
 
 typedef struct {
-  GObject parent;
+  GtkBox parent;
 
   EmpathyAccountWidgetUIDetails *ui_details;
 
@@ -54,13 +54,11 @@ typedef struct {
 } EmpathyAccountWidget;
 
 typedef struct {
-  GObjectClass parent_class;
+  GtkBoxClass parent_class;
 } EmpathyAccountWidgetClass;
 
 GType empathy_account_widget_get_type (void);
 
-GtkWidget *empathy_account_widget_get_widget (EmpathyAccountWidget *widget);
-
 EmpathyAccountWidget * empathy_account_widget_new_for_protocol (
     EmpathyAccountSettings *settings,
     gboolean simple);
index 545ec7ce80782af0908437b01cba3d76767c2182..77fdb565acdf020046aac8d96fe485c61f2321f2 100644 (file)
@@ -95,71 +95,19 @@ empathy_call_create_call_request (const gchar *contact,
     NULL);
 }
 
-GHashTable *
-empathy_call_create_streamed_media_request (const gchar *contact,
-    gboolean initial_audio,
-    gboolean initial_video)
-{
-  return tp_asv_new (
-    TP_PROP_CHANNEL_CHANNEL_TYPE, G_TYPE_STRING,
-      TP_IFACE_CHANNEL_TYPE_STREAMED_MEDIA,
-    TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, G_TYPE_UINT,
-      TP_HANDLE_TYPE_CONTACT,
-    TP_PROP_CHANNEL_TARGET_ID, G_TYPE_STRING,
-      contact,
-    TP_PROP_CHANNEL_TYPE_STREAMED_MEDIA_INITIAL_AUDIO, G_TYPE_BOOLEAN,
-      initial_audio,
-    TP_PROP_CHANNEL_TYPE_STREAMED_MEDIA_INITIAL_VIDEO, G_TYPE_BOOLEAN,
-      initial_video,
-    NULL);
-}
-
-static void
-create_streamed_media_channel_cb (GObject *source,
-    GAsyncResult *result,
-    gpointer user_data)
-{
-  GError *error = NULL;
-
-  if (!tp_account_channel_request_create_channel_finish (
-           TP_ACCOUNT_CHANNEL_REQUEST (source),
-           result,
-           &error))
-    {
-      DEBUG ("Failed to create StreamedMedia channel: %s", error->message);
-      show_call_error (error);
-      g_error_free (error);
-    }
-}
-
 static void
 create_call_channel_cb (GObject *source,
     GAsyncResult *result,
     gpointer user_data)
 {
-  TpAccountChannelRequest *streamed_media_req = user_data;
   GError *error = NULL;
 
   if (tp_account_channel_request_create_channel_finish (
       TP_ACCOUNT_CHANNEL_REQUEST (source), result, &error))
-    {
-      g_clear_object (&streamed_media_req);
-      return;
-    }
+    return;
 
   DEBUG ("Failed to create Call channel: %s", error->message);
 
-  if (streamed_media_req != NULL)
-    {
-      DEBUG ("Let's try with an StreamedMedia channel");
-      g_error_free (error);
-      tp_account_channel_request_create_channel_async (streamed_media_req,
-          EMPATHY_AV_BUS_NAME, NULL,
-          create_streamed_media_channel_cb,
-          NULL);
-      return;
-    }
-
   show_call_error (error);
 }
 
@@ -172,10 +120,7 @@ call_new_with_streams (const gchar *contact,
     gint64 timestamp)
 {
   GHashTable *call_request;
-  TpAccountChannelRequest *call_req, *streamed_media_req = NULL;
-#ifdef HAVE_EMPATHY_AV
-  GHashTable *streamed_media_request;
-#endif
+  TpAccountChannelRequest *call_req;
 
   /* Call */
   call_request = empathy_call_create_call_request (contact,
@@ -186,20 +131,8 @@ call_new_with_streams (const gchar *contact,
 
   g_hash_table_unref (call_request);
 
-#ifdef HAVE_EMPATHY_AV
-  /* StreamedMedia */
-  streamed_media_request = empathy_call_create_streamed_media_request (
-      contact, initial_audio, initial_video);
-
-  streamed_media_req = tp_account_channel_request_new (account,
-      streamed_media_request,
-      timestamp);
-
-  g_hash_table_unref (streamed_media_request);
-#endif
-
   tp_account_channel_request_create_channel_async (call_req,
-      EMPATHY_CALL_BUS_NAME, NULL, create_call_channel_cb, streamed_media_req);
+      EMPATHY_CALL_BUS_NAME, NULL, create_call_channel_cb, NULL);
 
   g_object_unref (call_req);
 }
index 99e4ecf9116b9881658701041e2cc457f94eb5a9..6d78908b8cc1c2066aa999b55bb31dbb997ec783 100644 (file)
@@ -36,10 +36,6 @@ GHashTable * empathy_call_create_call_request (const gchar *contact,
     gboolean initial_audio,
     gboolean initial_video);
 
-GHashTable * empathy_call_create_streamed_media_request (const gchar *contact,
-    gboolean initial_audio,
-    gboolean initial_video);
-
 void empathy_call_set_stream_properties (GstElement *element,
     gboolean echo_cancellation);
 
index e6019f8212cd4f690a6804b98058c2a57e67635c..b2224c2dba52489227b1aa22e6c5cc25aabf21ef 100644 (file)
@@ -39,7 +39,6 @@
 #include <telepathy-glib/account-manager.h>
 #include <telepathy-glib/util.h>
 #include <telepathy-logger/telepathy-logger.h>
-#include <libempathy/empathy-contact-list.h>
 #include <libempathy/empathy-gsettings.h>
 #include <libempathy/empathy-keyring.h>
 #include <libempathy/empathy-utils.h>
@@ -2012,7 +2011,7 @@ chat_input_key_press_event_cb (GtkWidget   *widget,
                }
                is_start_of_buffer = gtk_text_iter_is_start (&start);
 
-               list = empathy_contact_list_get_members (EMPATHY_CONTACT_LIST (priv->tp_chat));
+               list = empathy_tp_chat_get_members (priv->tp_chat);
                g_completion_add_items (priv->completion, list);
 
                nick = gtk_text_buffer_get_text (buffer, &start, &current, FALSE);
index 5691891a229ba6e65effb60fd932b91a1d4320ec..ee896d5b72ec0e3b5cdbba80a7eeae211a5767cb 100644 (file)
@@ -37,7 +37,6 @@
 #include <telepathy-glib/interfaces.h>
 
 #include <libempathy/empathy-tp-contact-factory.h>
-#include <libempathy/empathy-contact-list.h>
 #include <libempathy/empathy-location.h>
 #include <libempathy/empathy-time.h>
 #include <libempathy/empathy-utils.h>
@@ -1534,10 +1533,13 @@ contact_widget_change_contact (EmpathyContactWidget *information)
     }
   else
     {
-      empathy_tp_contact_factory_get_from_handle (connection,
-          tp_connection_get_self_handle (connection),
-          contact_widget_got_contact_cb, information, NULL,
-          G_OBJECT (information->vbox_contact_widget));
+      EmpathyContact *contact;
+
+      contact = empathy_contact_dup_from_tp_contact (
+          tp_connection_get_self_contact (connection));
+
+      contact_widget_set_contact (information, contact);
+      g_object_unref (contact);
     }
 }
 
index 22d3148827588a280dd77bd0e9b68b8d50e8fd0a..7f65735b83d808fe4682abb485a810632380123b 100644 (file)
@@ -38,7 +38,6 @@
 #include <libempathy/empathy-individual-manager.h>
 #include <libempathy/empathy-chatroom-manager.h>
 #include <libempathy/empathy-utils.h>
-#include <libempathy/empathy-contact-list.h>
 #include <libempathy/empathy-pkg-kit.h>
 
 #include "empathy-account-selector-dialog.h"
@@ -1560,8 +1559,7 @@ room_sub_menu_activate_cb (GtkWidget *item,
   g_return_if_fail (EMPATHY_IS_CONTACT (contact));
 
   /* send invitation */
-  empathy_contact_list_add (EMPATHY_CONTACT_LIST (chat),
-      contact, _("Inviting you to this room"));
+  empathy_tp_chat_add (chat, contact, _("Inviting you to this room"));
 
 out:
   g_object_unref (contact);
index 76ff74e25c97029c7f61a7e0d42aa1b28b54d9a7..e5edb264268f4414d0b9d33cd44061067bf39302 100644 (file)
@@ -139,22 +139,14 @@ group_contacts_changed_cb (TpChannel *channel,
 }
 
 static void
-channel_prepare_cb (GObject *source,
-    GAsyncResult *result,
-    gpointer user_data)
+individual_store_channel_set_individual_channel (
+    EmpathyIndividualStoreChannel *self,
+    TpChannel *channel)
 {
-  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);
-    }
+  g_assert (self->priv->channel == NULL); /* construct only */
+  self->priv->channel = g_object_ref (channel);
 
   /* Add initial members */
   members = tp_channel_group_dup_members_contacts (channel);
@@ -168,19 +160,6 @@ channel_prepare_cb (GObject *source,
       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)
 {
index 54712d25a772bb4c622b5f026167e5718cec17c1..c048124157f12e6ffa8a330645220bc8e1ce8ea7 100644 (file)
@@ -38,6 +38,7 @@
 #include <folks/folks.h>
 #include <folks/folks-telepathy.h>
 
+#include <libempathy/empathy-connection-aggregator.h>
 #include <libempathy/empathy-individual-manager.h>
 #include <libempathy/empathy-contact-groups.h>
 #include <libempathy/empathy-request-util.h>
@@ -90,6 +91,8 @@ typedef struct
 
   GtkTreeModelFilterVisibleFunc custom_filter;
   gpointer custom_filter_data;
+
+  GtkCellRenderer *text_renderer;
 } EmpathyIndividualViewPriv;
 
 typedef struct
@@ -1811,10 +1814,62 @@ individual_view_filter_visible_func (GtkTreeModel *model,
   return FALSE;
 }
 
+static gchar * empathy_individual_view_dup_selected_group (
+    EmpathyIndividualView *view,
+    gboolean *is_fake_group);
+
+static void
+text_edited_cb (GtkCellRendererText *cellrenderertext,
+    gchar *path,
+    gchar *name,
+    EmpathyIndividualView *self)
+{
+  EmpathyIndividualViewPriv *priv = GET_PRIV (self);
+  gchar *old_name, *new_name;
+
+  g_object_set (priv->text_renderer, "editable", FALSE, NULL);
+
+  new_name = g_strdup (name);
+  g_strstrip (new_name);
+
+  if (tp_str_empty (new_name))
+    goto out;
+
+  old_name = empathy_individual_view_dup_selected_group (self, NULL);
+  g_return_if_fail (old_name != NULL);
+
+  if (tp_strdiff (old_name, new_name))
+    {
+      EmpathyConnectionAggregator *aggregator;
+
+      DEBUG ("rename group '%s' to '%s'", old_name, new_name);
+
+      aggregator = empathy_connection_aggregator_dup_singleton ();
+
+      empathy_connection_aggregator_rename_group (aggregator, old_name,
+          new_name);
+      g_object_unref (aggregator);
+    }
+
+  g_free (old_name);
+out:
+  g_free (new_name);
+}
+
+static void
+text_renderer_editing_cancelled_cb (GtkCellRenderer *renderer,
+    EmpathyIndividualView *self)
+{
+  EmpathyIndividualViewPriv *priv = GET_PRIV (self);
+
+  g_object_set (priv->text_renderer, "editable", FALSE, NULL);
+}
+
 static void
 individual_view_constructed (GObject *object)
 {
   EmpathyIndividualView *view = EMPATHY_INDIVIDUAL_VIEW (object);
+  EmpathyIndividualViewPriv *priv = GET_PRIV (view);
   GtkCellRenderer *cell;
   GtkTreeViewColumn *col;
   guint i;
@@ -1856,26 +1911,31 @@ individual_view_constructed (GObject *object)
       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,
+  priv->text_renderer = empathy_cell_renderer_text_new ();
+  gtk_tree_view_column_pack_start (col, priv->text_renderer, TRUE);
+  gtk_tree_view_column_set_cell_data_func (col, priv->text_renderer,
       (GtkTreeCellDataFunc) individual_view_text_cell_data_func, view, NULL);
 
-  gtk_tree_view_column_add_attribute (col, cell,
+  gtk_tree_view_column_add_attribute (col, priv->text_renderer,
       "name", EMPATHY_INDIVIDUAL_STORE_COL_NAME);
-  gtk_tree_view_column_add_attribute (col, cell,
+  gtk_tree_view_column_add_attribute (col, priv->text_renderer,
       "text", EMPATHY_INDIVIDUAL_STORE_COL_NAME);
-  gtk_tree_view_column_add_attribute (col, cell,
+  gtk_tree_view_column_add_attribute (col, priv->text_renderer,
       "presence-type", EMPATHY_INDIVIDUAL_STORE_COL_PRESENCE_TYPE);
-  gtk_tree_view_column_add_attribute (col, cell,
+  gtk_tree_view_column_add_attribute (col, priv->text_renderer,
       "status", EMPATHY_INDIVIDUAL_STORE_COL_STATUS);
-  gtk_tree_view_column_add_attribute (col, cell,
+  gtk_tree_view_column_add_attribute (col, priv->text_renderer,
       "is_group", EMPATHY_INDIVIDUAL_STORE_COL_IS_GROUP);
-  gtk_tree_view_column_add_attribute (col, cell,
+  gtk_tree_view_column_add_attribute (col, priv->text_renderer,
       "compact", EMPATHY_INDIVIDUAL_STORE_COL_COMPACT);
-  gtk_tree_view_column_add_attribute (col, cell,
+  gtk_tree_view_column_add_attribute (col, priv->text_renderer,
       "client-types", EMPATHY_INDIVIDUAL_STORE_COL_CLIENT_TYPES);
 
+  g_signal_connect (priv->text_renderer, "editing-canceled",
+      G_CALLBACK (text_renderer_editing_cancelled_cb), view);
+  g_signal_connect (priv->text_renderer, "edited",
+      G_CALLBACK (text_edited_cb), view);
+
   /* Audio Call Icon */
   cell = empathy_cell_renderer_activatable_new ();
   gtk_tree_view_column_pack_start (col, cell, FALSE);
@@ -2354,6 +2414,31 @@ individual_view_group_remove_activate_cb (GtkMenuItem *menuitem,
   g_free (group);
 }
 
+static void
+individual_view_group_rename_activate_cb (GtkMenuItem *menuitem,
+    EmpathyIndividualView *self)
+{
+  EmpathyIndividualViewPriv *priv = GET_PRIV (self);
+  GtkTreePath *path;
+  GtkTreeIter iter;
+  GtkTreeSelection *selection;
+  GtkTreeModel *model;
+
+  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (self));
+  if (!gtk_tree_selection_get_selected (selection, &model, &iter))
+    return;
+  path = gtk_tree_model_get_path (model, &iter);
+
+  g_object_set (G_OBJECT (priv->text_renderer), "editable", TRUE, NULL);
+
+  gtk_tree_view_set_enable_search (GTK_TREE_VIEW (self), FALSE);
+  gtk_widget_grab_focus (GTK_WIDGET (self));
+  gtk_tree_view_set_cursor (GTK_TREE_VIEW (self), path,
+      gtk_tree_view_get_column (GTK_TREE_VIEW (self), 0), TRUE);
+
+  gtk_tree_path_free (path);
+}
+
 GtkWidget *
 empathy_individual_view_get_group_menu (EmpathyIndividualView *view)
 {
@@ -2380,17 +2465,14 @@ empathy_individual_view_get_group_menu (EmpathyIndividualView *view)
 
   menu = gtk_menu_new ();
 
-  /* TODO: implement
-     if (priv->view_features &
-     EMPATHY_INDIVIDUAL_VIEW_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 (individual_view_group_rename_activate_cb),
-     view);
+  if (priv->view_features & EMPATHY_INDIVIDUAL_VIEW_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 (individual_view_group_rename_activate_cb), view);
      }
-   */
 
   if (priv->view_features & EMPATHY_INDIVIDUAL_VIEW_FEATURE_GROUPS_REMOVE)
     {
index 3dc77998c39d7d24d9f644a5098ea8f0cfe45db7..f03aa9fe4c4c563568e1e35753dccce7b667edb2 100644 (file)
@@ -357,6 +357,14 @@ live_search_key_press_event_cb (GtkWidget *widget,
          return FALSE;
      }
 
+   /* Don't forward shift keys events as focusing the search entry would
+    * cancel an in-progress editing on a cell renderer (like when renaming a
+    * group). There is no point focusing it anyway as we don't display the
+    * search entry when only a shift key is pressed. */
+   if (event->keyval == GDK_KEY_Shift_L ||
+       event->keyval == GDK_KEY_Shift_R)
+       return FALSE;
+
   /* realize the widget if it is not realized yet */
   gtk_widget_realize (priv->search_entry);
   if (!gtk_widget_has_focus (priv->search_entry))
index 9caca7de95b3c28fff80db206bc9d16ee8bd8e80..cf38039285de521ddd387c26e55306c9ed7ca2e4 100644 (file)
@@ -137,8 +137,7 @@ empathy_local_xmpp_assistant_widget_constructed (GObject *object)
     object;
   GtkWidget *w;
   GdkPixbuf *pix;
-  GtkWidget *account_widget;
-  EmpathyAccountWidget *widget_object;
+  EmpathyAccountWidget *account_widget;
   gchar *markup;
 
   G_OBJECT_CLASS (empathy_local_xmpp_assistant_widget_parent_class)->
@@ -165,17 +164,15 @@ empathy_local_xmpp_assistant_widget_constructed (GObject *object)
 
   self->priv->settings = create_salut_account_settings ();
 
-  widget_object = empathy_account_widget_new_for_protocol (self->priv->settings,
-      TRUE);
-  empathy_account_widget_hide_buttons (widget_object);
+  account_widget = empathy_account_widget_new_for_protocol (
+      self->priv->settings, TRUE);
+  empathy_account_widget_hide_buttons (account_widget);
 
-  account_widget = empathy_account_widget_get_widget (widget_object);
-
-  g_signal_connect (widget_object, "handle-apply",
+  g_signal_connect (account_widget, "handle-apply",
       G_CALLBACK (handle_apply_cb), self);
 
-  gtk_grid_attach (GTK_GRID (self), account_widget, 0, 1, 2, 1);
-  gtk_widget_show (account_widget);
+  gtk_grid_attach (GTK_GRID (self), GTK_WIDGET (account_widget), 0, 1, 2, 1);
+  gtk_widget_show (GTK_WIDGET (account_widget));
 
   w = gtk_label_new (NULL);
   markup = g_strdup_printf (
index cab22ea4d46225042a41501dc6c4ef524b1b5fed..ed09be829662d4b496e12dcce7931ec9e8320b33 100644 (file)
@@ -34,27 +34,19 @@ G_DEFINE_TYPE (EmpathyNewAccountDialog, empathy_new_account_dialog, \
 struct _EmpathyNewAccountDialogPrivate
 {
   GtkWidget *chooser;
-  GtkWidget *current_account_widget;
+  EmpathyAccountWidget *current_account_widget;
   GtkWidget *main_vbox;
   GtkWidget *connect_button;
 
-  EmpathyAccountWidget *current_widget_object;
   EmpathyAccountSettings *settings;
 };
 
 static void
-account_created_cb (EmpathyAccountWidget *widget,
-    TpAccount *account,
+close_cb (EmpathyAccountWidget *widget,
+    GtkResponseType response,
     EmpathyNewAccountDialog *self)
 {
-  gtk_dialog_response (GTK_DIALOG (self), GTK_RESPONSE_OK);
-}
-
-static void
-cancelled_cb (EmpathyAccountWidget *widget,
-    EmpathyNewAccountDialog *self)
-{
-  gtk_dialog_response (GTK_DIALOG (self), GTK_RESPONSE_CANCEL);
+  gtk_dialog_response (GTK_DIALOG (self), response);
 }
 
 static void
@@ -62,8 +54,7 @@ protocol_changed_cb (GtkComboBox *chooser,
     EmpathyNewAccountDialog *self)
 {
   EmpathyAccountSettings *settings;
-  GtkWidget *account_widget;
-  EmpathyAccountWidget *widget_object;
+  EmpathyAccountWidget *account_widget;
   gchar *password = NULL, *account = NULL;
 
   settings = empathy_protocol_chooser_create_account_settings (
@@ -84,45 +75,39 @@ protocol_changed_cb (GtkComboBox *chooser,
       g_object_unref (self->priv->settings);
     }
 
-  widget_object = empathy_account_widget_new_for_protocol (settings, TRUE);
-  account_widget = empathy_account_widget_get_widget (widget_object);
+  account_widget = empathy_account_widget_new_for_protocol (settings, TRUE);
 
   if (self->priv->current_account_widget != NULL)
     {
-      g_signal_handlers_disconnect_by_func (self->priv->current_widget_object,
-          account_created_cb, self);
-      g_signal_handlers_disconnect_by_func (self->priv->current_widget_object,
-          cancelled_cb, self);
+      g_signal_handlers_disconnect_by_func (self->priv->current_account_widget,
+          close_cb, self);
 
-      gtk_widget_destroy (self->priv->current_account_widget);
+      gtk_widget_destroy (GTK_WIDGET (self->priv->current_account_widget));
     }
 
   self->priv->current_account_widget = account_widget;
-  self->priv->current_widget_object = widget_object;
 
   self->priv->settings = settings;
 
-  g_signal_connect (self->priv->current_widget_object, "account-created",
-      G_CALLBACK (account_created_cb), self);
-  g_signal_connect (self->priv->current_widget_object, "cancelled",
-      G_CALLBACK (cancelled_cb), self);
+  g_signal_connect (self->priv->current_account_widget, "close",
+      G_CALLBACK (close_cb), self);
 
   /* Restore "account" and "password" parameters in the new widget */
   if (account != NULL)
     {
-      empathy_account_widget_set_account_param (widget_object, account);
+      empathy_account_widget_set_account_param (account_widget, account);
       g_free (account);
     }
 
   if (password != NULL)
     {
-      empathy_account_widget_set_password_param (widget_object, password);
+      empathy_account_widget_set_password_param (account_widget, password);
       g_free (password);
     }
 
-  gtk_box_pack_start (GTK_BOX (self->priv->main_vbox), account_widget,
-      FALSE, FALSE, 0);
-  gtk_widget_show (account_widget);
+  gtk_box_pack_start (GTK_BOX (self->priv->main_vbox),
+      GTK_WIDGET (account_widget), FALSE, FALSE, 0);
+  gtk_widget_show (GTK_WIDGET (account_widget));
 }
 
 static void
index 73d31466ac932481a7394139257a004cfcce01ee..1bd4d8ecfb41157e67a2ff6554f34d68ece96679 100644 (file)
@@ -169,34 +169,6 @@ empathy_plist_parse_dict (xmlNode *a_node)
        return tp_g_value_slice_new_take_boxed (G_TYPE_HASH_TABLE, dict);
 }
 
-static GValue *
-empathy_plist_parse_array (xmlNode *a_node)
-{
-       xmlNode *cur_node = a_node->children;
-       GValueArray *array;
-
-       array = g_value_array_new (4);
-
-       while (cur_node) {
-               GValue *cur_value;
-
-               cur_value = empathy_plist_parse_node (cur_node);
-               if (cur_value) {
-                       g_value_array_append (array, cur_value);
-                       tp_g_value_slice_free (cur_value);
-               }
-
-               /* When an array contains an element enclosed in "unknown" tags (ie
-                * non-type ones), we silently skip them since early
-                * SysInfoExtended files used to have <key> values enclosed within
-                * <array> tags.
-                */
-               cur_node = cur_node->next;
-       }
-
-       return tp_g_value_slice_new_take_boxed (G_TYPE_VALUE_ARRAY, array);
-}
-
 typedef GValue *(*ParseCallback) (xmlNode *);
 
 struct Parser {
@@ -211,7 +183,6 @@ static const struct Parser parsers[] = { {"integer", empathy_plist_parse_integer
                                         {"false",   empathy_plist_parse_boolean},
                                         {"data",    empathy_plist_parse_data},
                                         {"dict",    empathy_plist_parse_dict},
-                                        {"array",   empathy_plist_parse_array},
                                         {NULL,   NULL} };
 
 static ParseCallback
index 948a0a7bde21975d1551a1fe2926b2bad7e8047f..33637d48362fccb7c2ac2830c07f6be5bc537082 100644 (file)
@@ -36,7 +36,6 @@
 #include <telepathy-glib/account-manager.h>
 #include <telepathy-glib/util.h>
 
-#include <libempathy/empathy-connectivity.h>
 #include <libempathy/empathy-presence-manager.h>
 #include <libempathy/empathy-utils.h>
 #include <libempathy/empathy-status-presets.h>
@@ -97,7 +96,7 @@ typedef enum  {
 
 typedef struct {
        EmpathyPresenceManager *presence_mgr;
-       EmpathyConnectivity *connectivity;
+       GNetworkMonitor *connectivity;
 
        gboolean     editing_status;
        int          block_set_editing;
@@ -378,8 +377,17 @@ presence_chooser_set_status_editing (EmpathyPresenceChooser *self,
 
        entry = gtk_bin_get_child (GTK_BIN (self));
        if (editing) {
+               gchar *tooltip_text;
+               gchar *status;
+
                priv->editing_status = TRUE;
 
+               get_state_and_status (self, &status);
+               /* Translators: %s is a status message like 'At the pub' for example */
+               tooltip_text = g_strdup_printf (_("<b>Current message: %s</b>\n"
+                       "<small><i>Press Enter to set the new message or Esc to cancel.</i></small>"),
+                   status);
+               gtk_widget_set_tooltip_markup (entry, tooltip_text);
                gtk_entry_set_icon_from_stock (GTK_ENTRY (entry),
                                               GTK_ENTRY_ICON_SECONDARY,
                                               GTK_STOCK_OK);
@@ -389,6 +397,8 @@ presence_chooser_set_status_editing (EmpathyPresenceChooser *self,
                gtk_entry_set_icon_sensitive (GTK_ENTRY (entry),
                                              GTK_ENTRY_ICON_PRIMARY,
                                              FALSE);
+               g_free (status);
+               g_free (tooltip_text);
        } else {
                GtkWidget *window;
 
@@ -764,7 +774,7 @@ update_sensitivity_am_prepared_cb (GObject *source_object,
 
        g_list_free (accounts);
 
-       if (!empathy_connectivity_is_online (priv->connectivity))
+       if (!g_network_monitor_get_network_available (priv->connectivity))
                sensitive = FALSE;
 
        gtk_widget_set_sensitive (GTK_WIDGET (chooser), sensitive);
@@ -802,7 +812,7 @@ presence_chooser_account_manager_account_changed_cb (
 }
 
 static void
-presence_chooser_connectivity_state_change (EmpathyConnectivity *connectivity,
+presence_chooser_network_change (GNetworkMonitor *connectivity,
                                            gboolean new_online,
                                            EmpathyPresenceChooser *chooser)
 {
@@ -945,10 +955,12 @@ presence_chooser_constructed (GObject *object)
        status_tooltip = gtk_entry_get_text (GTK_ENTRY (entry));
        gtk_widget_set_tooltip_text (GTK_WIDGET (chooser), status_tooltip);
 
-       priv->connectivity = empathy_connectivity_dup_singleton ();
+       priv->connectivity = g_network_monitor_get_default ();
+       g_object_ref (priv->connectivity);
+
        tp_g_signal_connect_object (priv->connectivity,
-               "state-change",
-               G_CALLBACK (presence_chooser_connectivity_state_change),
+               "network-changed",
+               G_CALLBACK (presence_chooser_network_change),
                chooser, 0);
 
        presence_chooser_update_sensitivity (chooser);
index 3d7e5fca75d0b1434c46fd91221e5a62dc123955..fc1c84a2695a4bd06716709e1ecfaa3bfc3e0309 100644 (file)
@@ -34,10 +34,8 @@ libempathy_headers =                         \
        empathy-chatroom.h                      \
        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.h                       \
        empathy-debug.h                         \
        empathy-ft-factory.h                    \
@@ -62,7 +60,6 @@ libempathy_headers =                          \
        empathy-tp-chat.h                       \
        empathy-tp-contact-factory.h            \
        empathy-tp-roomlist.h                   \
-       empathy-tp-streamed-media.h             \
        empathy-types.h                         \
        empathy-utils.h
 
@@ -76,10 +73,8 @@ libempathy_handwritten_source =                              \
        empathy-chatroom.c                              \
        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.c                               \
        empathy-debug.c                                 \
        empathy-ft-factory.c                            \
@@ -102,7 +97,6 @@ libempathy_handwritten_source =                              \
        empathy-tp-chat.c                               \
        empathy-tp-contact-factory.c                    \
        empathy-tp-roomlist.c                           \
-       empathy-tp-streamed-media.c                     \
        empathy-utils.c
 
 # these are sources that depend on GOA
index 2a85594410daeae3c557fceda61484c3e4410193..9135562fbd02c73f689663a0183f347b20d5f1cc 100644 (file)
@@ -66,6 +66,9 @@ empathy_client_factory_dup_channel_features (TpSimpleClientFactory *factory,
 
   features = chainup->dup_channel_features (factory, channel);
 
+  feature = TP_CHANNEL_FEATURE_CONTACTS;
+  g_array_append_val (features, feature);
+
   if (EMPATHY_IS_TP_CHAT (channel))
     {
       feature = TP_CHANNEL_FEATURE_CHAT_STATES;
index fde365c27eaa25995f494394b048a90542b435db..2b517bf51a397cb02a3e2e64d39497f1cb2bb0c9 100644 (file)
@@ -288,3 +288,44 @@ empathy_connection_aggregator_dup_all_contacts (
 
   return result;
 }
+
+static void
+rename_group_cb (GObject *source,
+    GAsyncResult *result,
+    gpointer user_data)
+{
+  GError *error = NULL;
+
+  if (!tp_connection_rename_group_finish (TP_CONNECTION (source), result,
+        &error))
+    {
+      DEBUG ("Failed to rename group on %s: %s",
+          tp_proxy_get_object_path (source), error->message);
+      g_error_free (error);
+    }
+}
+
+void
+empathy_connection_aggregator_rename_group (EmpathyConnectionAggregator *self,
+    const gchar *old_name,
+    const gchar *new_name)
+{
+  GList *l;
+
+  for (l = self->priv->conns; l != NULL; l = g_list_next (l))
+    {
+      TpConnection *conn = l->data;
+      const gchar * const *groups;
+
+      groups = tp_connection_get_contact_groups (conn);
+
+      if (!tp_strv_contains (groups, old_name))
+        continue;
+
+      DEBUG ("Rename group '%s' to '%s' on %s", old_name, new_name,
+          tp_proxy_get_object_path (conn));
+
+      tp_connection_rename_group_async (conn, old_name, new_name,
+          rename_group_cb, NULL);
+    }
+}
index c21c04dec8d6dd881930b4adba662750485b2599..5f85193c984cebbd3708a785091888278b5e7f2d 100644 (file)
@@ -67,6 +67,11 @@ GList * empathy_connection_aggregator_get_all_groups (
 GPtrArray * empathy_connection_aggregator_dup_all_contacts (
     EmpathyConnectionAggregator *self);
 
+void empathy_connection_aggregator_rename_group (
+    EmpathyConnectionAggregator *self,
+    const gchar *old_name,
+    const gchar *new_name);
+
 G_END_DECLS
 
 #endif /* #ifndef __EMPATHY_CONNECTION_AGGREGATOR_H__*/
diff --git a/libempathy/empathy-connectivity.c b/libempathy/empathy-connectivity.c
deleted file mode 100644 (file)
index f84505f..0000000
+++ /dev/null
@@ -1,435 +0,0 @@
-/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2; -*- */
-/*
- * Copyright (C) 2009 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
- *
- * Authors: Jonny Lamb <jonny.lamb@collabora.co.uk>
- */
-
-#include "config.h"
-#include "empathy-connectivity.h"
-
-#ifdef HAVE_NM
-#include <nm-client.h>
-#endif
-
-#ifdef HAVE_CONNMAN
-#include <dbus/dbus-glib.h>
-#endif
-
-#include <telepathy-glib/util.h>
-
-#include "empathy-utils.h"
-
-#define DEBUG_FLAG EMPATHY_DEBUG_CONNECTIVITY
-#include "empathy-debug.h"
-
-#define GET_PRIV(obj) EMPATHY_GET_PRIV (obj, EmpathyConnectivity)
-
-typedef struct {
-#ifdef HAVE_NM
-  NMClient *nm_client;
-  gulong state_change_signal_id;
-#endif
-
-#ifdef HAVE_CONNMAN
-  DBusGProxy *proxy;
-#endif
-
-  gboolean connected;
-  gboolean use_conn;
-} EmpathyConnectivityPriv;
-
-enum {
-  STATE_CHANGE,
-  LAST_SIGNAL
-};
-
-enum {
-  PROP_0,
-  PROP_USE_CONN,
-};
-
-static guint signals[LAST_SIGNAL];
-static EmpathyConnectivity *connectivity_singleton = NULL;
-
-G_DEFINE_TYPE (EmpathyConnectivity, empathy_connectivity, G_TYPE_OBJECT);
-
-static void
-connectivity_change_state (EmpathyConnectivity *connectivity,
-    gboolean new_state)
-{
-  EmpathyConnectivityPriv *priv;
-
-  priv = GET_PRIV (connectivity);
-
-  if (priv->connected == new_state)
-    return;
-
-  priv->connected = new_state;
-
-  g_signal_emit (connectivity, signals[STATE_CHANGE], 0,
-      priv->connected);
-}
-
-#ifdef HAVE_NM
-
-#if !defined(NM_CHECK_VERSION)
-#define NM_CHECK_VERSION(x,y,z) 0
-#endif
-
-static void
-connectivity_nm_state_change_cb (NMClient *client,
-    const GParamSpec *pspec,
-    EmpathyConnectivity *connectivity)
-{
-  EmpathyConnectivityPriv *priv;
-  gboolean new_nm_connected;
-  NMState state;
-
-  priv = GET_PRIV (connectivity);
-
-  if (!priv->use_conn)
-    return;
-
-  state = nm_client_get_state (priv->nm_client);
-  new_nm_connected = !(state == NM_STATE_CONNECTING
-#if NM_CHECK_VERSION(0,8,992)
-      || state == NM_STATE_DISCONNECTING
-#endif
-      || state == NM_STATE_ASLEEP
-      || state == NM_STATE_DISCONNECTED);
-
-  DEBUG ("New NetworkManager network state %d (connected: %s)", state,
-      new_nm_connected ? "true" : "false");
-
-  connectivity_change_state (connectivity, new_nm_connected);
-}
-#endif
-
-#ifdef HAVE_CONNMAN
-static void
-connectivity_connman_state_changed_cb (DBusGProxy *proxy,
-    const gchar *new_state,
-    EmpathyConnectivity *connectivity)
-{
-  EmpathyConnectivityPriv *priv;
-  gboolean new_connected;
-
-  priv = GET_PRIV (connectivity);
-
-  if (!priv->use_conn)
-    return;
-
-  new_connected = !tp_strdiff (new_state, "online");
-
-  DEBUG ("New ConnMan network state %s", new_state);
-
-  connectivity_change_state (connectivity, new_connected);
-}
-
-static void
-connectivity_connman_check_state_cb (DBusGProxy *proxy,
-    DBusGProxyCall *call_id,
-    gpointer user_data)
-{
-  EmpathyConnectivity *connectivity = (EmpathyConnectivity *) user_data;
-  GError *error = NULL;
-  gchar *state;
-
-  if (dbus_g_proxy_end_call (proxy, call_id, &error,
-          G_TYPE_STRING, &state, G_TYPE_INVALID))
-    {
-      connectivity_connman_state_changed_cb (proxy, state,
-          connectivity);
-      g_free (state);
-    }
-  else
-    {
-      DEBUG ("Failed to call GetState: %s", error->message);
-      connectivity_connman_state_changed_cb (proxy, "offline",
-          connectivity);
-    }
-}
-
-static void
-connectivity_connman_check_state (EmpathyConnectivity *connectivity)
-{
-  EmpathyConnectivityPriv *priv;
-
-  priv = GET_PRIV (connectivity);
-
-  dbus_g_proxy_begin_call (priv->proxy, "GetState",
-      connectivity_connman_check_state_cb, connectivity, NULL,
-      G_TYPE_INVALID);
-}
-#endif
-
-static void
-empathy_connectivity_init (EmpathyConnectivity *connectivity)
-{
-  EmpathyConnectivityPriv *priv;
-#ifdef HAVE_CONNMAN
-  DBusGConnection *connection;
-  GError *error = NULL;
-#endif
-
-  priv = G_TYPE_INSTANCE_GET_PRIVATE (connectivity,
-      EMPATHY_TYPE_CONNECTIVITY, EmpathyConnectivityPriv);
-
-  connectivity->priv = priv;
-
-  priv->use_conn = TRUE;
-
-#ifdef HAVE_NM
-  priv->nm_client = nm_client_new ();
-  if (priv->nm_client != NULL)
-    {
-      priv->state_change_signal_id = g_signal_connect (priv->nm_client,
-          "notify::" NM_CLIENT_STATE,
-          G_CALLBACK (connectivity_nm_state_change_cb), connectivity);
-
-      connectivity_nm_state_change_cb (priv->nm_client, NULL, connectivity);
-    }
-  else
-    {
-      DEBUG ("Failed to get NetworkManager proxy");
-    }
-#endif
-
-#ifdef HAVE_CONNMAN
-  connection = dbus_g_bus_get (DBUS_BUS_SYSTEM, &error);
-  if (connection != NULL)
-    {
-      priv->proxy = dbus_g_proxy_new_for_name (connection,
-          "net.connman", "/",
-          "net.connman.Manager");
-
-      dbus_g_object_register_marshaller (
-          g_cclosure_marshal_generic,
-          G_TYPE_NONE, G_TYPE_STRING, G_TYPE_INVALID);
-
-      dbus_g_proxy_add_signal (priv->proxy, "StateChanged",
-          G_TYPE_STRING, G_TYPE_INVALID);
-
-      dbus_g_proxy_connect_signal (priv->proxy, "StateChanged",
-          G_CALLBACK (connectivity_connman_state_changed_cb),
-          connectivity, NULL);
-
-      connectivity_connman_check_state (connectivity);
-    }
-  else
-    {
-      DEBUG ("Failed to get system bus connection: %s", error->message);
-      g_error_free (error);
-    }
-#endif
-
-#if !defined(HAVE_NM) && !defined(HAVE_CONNMAN)
-  priv->connected = TRUE;
-#endif
-}
-
-static void
-connectivity_finalize (GObject *object)
-{
-#ifdef HAVE_NM
-  EmpathyConnectivity *connectivity = EMPATHY_CONNECTIVITY (object);
-  EmpathyConnectivityPriv *priv = GET_PRIV (connectivity);
-
-  if (priv->nm_client != NULL)
-    {
-      g_signal_handler_disconnect (priv->nm_client,
-          priv->state_change_signal_id);
-      priv->state_change_signal_id = 0;
-      g_object_unref (priv->nm_client);
-      priv->nm_client = NULL;
-    }
-#endif
-
-#ifdef HAVE_CONNMAN
-  EmpathyConnectivity *connectivity = EMPATHY_CONNECTIVITY (object);
-  EmpathyConnectivityPriv *priv = GET_PRIV (connectivity);
-
-  if (priv->proxy != NULL)
-    {
-      dbus_g_proxy_disconnect_signal (priv->proxy, "StateChanged",
-          G_CALLBACK (connectivity_connman_state_changed_cb), connectivity);
-
-      g_object_unref (priv->proxy);
-      priv->proxy = NULL;
-    }
-#endif
-
-  G_OBJECT_CLASS (empathy_connectivity_parent_class)->finalize (object);
-}
-
-static void
-connectivity_dispose (GObject *object)
-{
-  G_OBJECT_CLASS (empathy_connectivity_parent_class)->dispose (object);
-}
-
-static GObject *
-connectivity_constructor (GType type,
-    guint n_construct_params,
-    GObjectConstructParam *construct_params)
-{
-  GObject *retval;
-
-  if (!connectivity_singleton)
-    {
-      retval = G_OBJECT_CLASS (empathy_connectivity_parent_class)->constructor
-        (type, n_construct_params, construct_params);
-
-      connectivity_singleton = EMPATHY_CONNECTIVITY (retval);
-      g_object_add_weak_pointer (retval, (gpointer) &connectivity_singleton);
-    }
-  else
-    {
-      retval = g_object_ref (connectivity_singleton);
-    }
-
-  return retval;
-}
-
-static void
-connectivity_get_property (GObject *object,
-    guint param_id,
-    GValue *value,
-    GParamSpec *pspec)
-{
-  EmpathyConnectivity *connectivity = EMPATHY_CONNECTIVITY (object);
-
-  switch (param_id)
-    {
-    case PROP_USE_CONN:
-      g_value_set_boolean (value, empathy_connectivity_get_use_conn (
-              connectivity));
-      break;
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
-      break;
-    };
-}
-
-static void
-connectivity_set_property (GObject *object,
-    guint param_id,
-    const GValue *value,
-    GParamSpec *pspec)
-{
-  EmpathyConnectivity *connectivity = EMPATHY_CONNECTIVITY (object);
-
-  switch (param_id)
-    {
-    case PROP_USE_CONN:
-      empathy_connectivity_set_use_conn (connectivity,
-          g_value_get_boolean (value));
-      break;
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
-      break;
-    };
-}
-
-static void
-empathy_connectivity_class_init (EmpathyConnectivityClass *klass)
-{
-  GObjectClass *oclass = G_OBJECT_CLASS (klass);
-
-  oclass->finalize = connectivity_finalize;
-  oclass->dispose = connectivity_dispose;
-  oclass->constructor = connectivity_constructor;
-  oclass->get_property = connectivity_get_property;
-  oclass->set_property = connectivity_set_property;
-
-  signals[STATE_CHANGE] =
-    g_signal_new ("state-change",
-        G_TYPE_FROM_CLASS (klass),
-        G_SIGNAL_RUN_LAST,
-        0,
-        NULL, NULL,
-        g_cclosure_marshal_generic,
-        G_TYPE_NONE,
-        1, G_TYPE_BOOLEAN, NULL);
-
-  g_object_class_install_property (oclass,
-      PROP_USE_CONN,
-      g_param_spec_boolean ("use-conn",
-          "Use connectivity managers",
-          "Set presence according to connectivity managers",
-          TRUE,
-          G_PARAM_CONSTRUCT | G_PARAM_READWRITE));
-
-  g_type_class_add_private (oclass, sizeof (EmpathyConnectivityPriv));
-}
-
-/* public methods */
-
-EmpathyConnectivity *
-empathy_connectivity_dup_singleton (void)
-{
-  return g_object_new (EMPATHY_TYPE_CONNECTIVITY, NULL);
-}
-
-gboolean
-empathy_connectivity_is_online (EmpathyConnectivity *connectivity)
-{
-  EmpathyConnectivityPriv *priv = GET_PRIV (connectivity);
-
-  return priv->connected;
-}
-
-gboolean
-empathy_connectivity_get_use_conn (EmpathyConnectivity *connectivity)
-{
-  EmpathyConnectivityPriv *priv = GET_PRIV (connectivity);
-
-  return priv->use_conn;
-}
-
-void
-empathy_connectivity_set_use_conn (EmpathyConnectivity *connectivity,
-    gboolean use_conn)
-{
-  EmpathyConnectivityPriv *priv = GET_PRIV (connectivity);
-
-  if (use_conn == priv->use_conn)
-    return;
-
-  DEBUG ("use_conn GSetting key changed; new value = %s",
-      use_conn ? "true" : "false");
-
-  priv->use_conn = use_conn;
-
-#if defined(HAVE_NM) || defined(HAVE_CONNMAN)
-  if (use_conn)
-    {
-#if defined(HAVE_NM)
-      connectivity_nm_state_change_cb (priv->nm_client, NULL, connectivity);
-#elif defined(HAVE_CONNMAN)
-      connectivity_connman_check_state (connectivity);
-#endif
-    }
-  else
-#endif
-    {
-      connectivity_change_state (connectivity, TRUE);
-    }
-
-  g_object_notify (G_OBJECT (connectivity), "use-conn");
-}
diff --git a/libempathy/empathy-connectivity.h b/libempathy/empathy-connectivity.h
deleted file mode 100644 (file)
index ca507e9..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2; -*- */
-/*
- * Copyright (C) 2009 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
- *
- * Authors: Jonny Lamb <jonny.lamb@collabora.co.uk>
- */
-
-#ifndef __EMPATHY_CONNECTIVITY_H__
-#define __EMPATHY_CONNECTIVITY_H__
-
-#include <glib-object.h>
-
-G_BEGIN_DECLS
-
-#define EMPATHY_TYPE_CONNECTIVITY (empathy_connectivity_get_type ())
-#define EMPATHY_CONNECTIVITY(o) \
-  (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_CONNECTIVITY, \
-      EmpathyConnectivity))
-#define EMPATHY_CONNECTIVITY_CLASS(k) \
-  (G_TYPE_CHECK_CLASS_CAST ((k), EMPATHY_TYPE_CONNECTIVITY, \
-      EmpathyConnectivityClass))
-#define EMPATHY_IS_CONNECTIVITY(o) \
-  (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_CONNECTIVITY))
-#define EMPATHY_IS_CONNECTIVITY_CLASS(k) \
-  (G_TYPE_CHECK_CLASS_TYPE ((k), EMPATHY_TYPE_CONNECTIVITY))
-#define EMPATHY_CONNECTIVITY_GET_CLASS(o) \
-  (G_TYPE_INSTANCE_GET_CLASS ((o), EMPATHY_TYPE_CONNECTIVITY, \
-      EmpathyConnectivityClass))
-
-typedef struct _EmpathyConnectivity EmpathyConnectivity;
-typedef struct _EmpathyConnectivityClass EmpathyConnectivityClass;
-
-struct _EmpathyConnectivity {
-  GObject parent;
-  gpointer priv;
-};
-
-struct _EmpathyConnectivityClass {
-  GObjectClass parent_class;
-};
-
-GType empathy_connectivity_get_type (void);
-
-/* public methods */
-
-EmpathyConnectivity * empathy_connectivity_dup_singleton (void);
-
-gboolean empathy_connectivity_is_online (EmpathyConnectivity *connectivity);
-
-gboolean empathy_connectivity_get_use_conn (EmpathyConnectivity *connectivity);
-void empathy_connectivity_set_use_conn (EmpathyConnectivity *connectivity,
-    gboolean use_conn);
-
-G_END_DECLS
-
-#endif /* __EMPATHY_CONNECTIVITY_H__ */
-
diff --git a/libempathy/empathy-contact-list.c b/libempathy/empathy-contact-list.c
deleted file mode 100644 (file)
index b80071c..0000000
+++ /dev/null
@@ -1,214 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Copyright (C) 2007-2008 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
- *
- * Authors: Xavier Claessens <xclaesse@gmail.com>
- */
-
-#include "config.h"
-
-#include "empathy-contact-list.h"
-
-static void contact_list_base_init (gpointer klass);
-
-GType
-empathy_contact_list_get_type (void)
-{
-       static GType type = 0;
-
-       if (!type) {
-               static const GTypeInfo type_info = {
-                       sizeof (EmpathyContactListIface),
-                       contact_list_base_init,
-                       NULL,
-               };
-
-               type = g_type_register_static (G_TYPE_INTERFACE,
-                                              "EmpathyContactList",
-                                              &type_info, 0);
-
-               g_type_interface_add_prerequisite (type, G_TYPE_OBJECT);
-       }
-
-       return type;
-}
-
-static void
-contact_list_base_init (gpointer klass)
-{
-       static gboolean initialized = FALSE;
-
-       if (!initialized) {
-               g_signal_new ("member-renamed",
-                             G_TYPE_FROM_CLASS (klass),
-                             G_SIGNAL_RUN_LAST,
-                             0,
-                             NULL, NULL,
-                             g_cclosure_marshal_generic,
-                             G_TYPE_NONE,
-                             4, EMPATHY_TYPE_CONTACT, EMPATHY_TYPE_CONTACT, G_TYPE_UINT, G_TYPE_STRING);
-
-               g_signal_new ("members-changed",
-                             G_TYPE_FROM_CLASS (klass),
-                             G_SIGNAL_RUN_LAST,
-                             0,
-                             NULL, NULL,
-                             g_cclosure_marshal_generic,
-                             G_TYPE_NONE,
-                             5, EMPATHY_TYPE_CONTACT, EMPATHY_TYPE_CONTACT,
-                             G_TYPE_UINT, G_TYPE_STRING, G_TYPE_BOOLEAN);
-
-               g_signal_new ("pendings-changed",
-                             G_TYPE_FROM_CLASS (klass),
-                             G_SIGNAL_RUN_LAST,
-                             0,
-                             NULL, NULL,
-                             g_cclosure_marshal_generic,
-                             G_TYPE_NONE,
-                             5, EMPATHY_TYPE_CONTACT, EMPATHY_TYPE_CONTACT,
-                             G_TYPE_UINT, G_TYPE_STRING, G_TYPE_BOOLEAN);
-
-               g_signal_new ("groups-changed",
-                             G_TYPE_FROM_CLASS (klass),
-                             G_SIGNAL_RUN_LAST,
-                             0,
-                             NULL, NULL,
-                             g_cclosure_marshal_generic,
-                             G_TYPE_NONE,
-                             3, EMPATHY_TYPE_CONTACT, G_TYPE_STRING, G_TYPE_BOOLEAN);
-
-               initialized = TRUE;
-       }
-}
-
-void
-empathy_contact_list_add (EmpathyContactList *list,
-                         EmpathyContact     *contact,
-                         const gchar        *message)
-{
-       g_return_if_fail (EMPATHY_IS_CONTACT_LIST (list));
-       g_return_if_fail (EMPATHY_IS_CONTACT (contact));
-
-       if (EMPATHY_CONTACT_LIST_GET_IFACE (list)->add) {
-               EMPATHY_CONTACT_LIST_GET_IFACE (list)->add (list, contact, message);
-       }
-}
-
-void
-empathy_contact_list_remove (EmpathyContactList *list,
-                            EmpathyContact     *contact,
-                            const gchar        *message)
-{
-       g_return_if_fail (EMPATHY_IS_CONTACT_LIST (list));
-       g_return_if_fail (EMPATHY_IS_CONTACT (contact));
-
-       if (EMPATHY_CONTACT_LIST_GET_IFACE (list)->remove) {
-               EMPATHY_CONTACT_LIST_GET_IFACE (list)->remove (list, contact, message);
-       }
-}
-
-GList *
-empathy_contact_list_get_members (EmpathyContactList *list)
-{
-       g_return_val_if_fail (EMPATHY_IS_CONTACT_LIST (list), NULL);
-
-       if (EMPATHY_CONTACT_LIST_GET_IFACE (list)->get_members) {
-               return EMPATHY_CONTACT_LIST_GET_IFACE (list)->get_members (list);
-       }
-
-       return NULL;
-}
-
-GList *
-empathy_contact_list_get_pendings (EmpathyContactList *list)
-{
-       g_return_val_if_fail (EMPATHY_IS_CONTACT_LIST (list), NULL);
-
-       if (EMPATHY_CONTACT_LIST_GET_IFACE (list)->get_pendings) {
-               return EMPATHY_CONTACT_LIST_GET_IFACE (list)->get_pendings (list);
-       }
-
-       return NULL;
-}
-
-GList *
-empathy_contact_list_get_groups (EmpathyContactList *list,
-                                EmpathyContact     *contact)
-{
-       g_return_val_if_fail (EMPATHY_IS_CONTACT_LIST (list), NULL);
-       g_return_val_if_fail (EMPATHY_IS_CONTACT (contact), NULL);
-
-       if (EMPATHY_CONTACT_LIST_GET_IFACE (list)->get_groups) {
-               return EMPATHY_CONTACT_LIST_GET_IFACE (list)->get_groups (list, contact);
-       }
-
-       return NULL;
-}
-
-void
-empathy_contact_list_add_to_group (EmpathyContactList *list,
-                                  EmpathyContact     *contact,
-                                  const gchar        *group)
-{
-       g_return_if_fail (EMPATHY_IS_CONTACT_LIST (list));
-       g_return_if_fail (EMPATHY_IS_CONTACT (contact));
-       g_return_if_fail (group != NULL);
-
-       if (EMPATHY_CONTACT_LIST_GET_IFACE (list)->add_to_group) {
-               EMPATHY_CONTACT_LIST_GET_IFACE (list)->add_to_group (list, contact, group);
-       }
-}
-
-void
-empathy_contact_list_remove_from_group (EmpathyContactList *list,
-                                       EmpathyContact     *contact,
-                                       const gchar        *group)
-{
-       g_return_if_fail (EMPATHY_IS_CONTACT_LIST (list));
-       g_return_if_fail (EMPATHY_IS_CONTACT (contact));
-       g_return_if_fail (group != NULL);
-
-       if (EMPATHY_CONTACT_LIST_GET_IFACE (list)->remove_from_group) {
-               EMPATHY_CONTACT_LIST_GET_IFACE (list)->remove_from_group (list, contact, group);
-       }
-}
-
-void
-empathy_contact_list_rename_group (EmpathyContactList *list,
-                                  const gchar        *old_group,
-                                  const gchar        *new_group)
-{
-       g_return_if_fail (EMPATHY_IS_CONTACT_LIST (list));
-       g_return_if_fail (old_group != NULL);
-       g_return_if_fail (new_group != NULL);
-
-       if (EMPATHY_CONTACT_LIST_GET_IFACE (list)->rename_group) {
-               EMPATHY_CONTACT_LIST_GET_IFACE (list)->rename_group (list, old_group, new_group);
-       }
-}
-
-void
-empathy_contact_list_remove_group (EmpathyContactList *list,
-                                  const gchar *group)
-{
-       g_return_if_fail (EMPATHY_IS_CONTACT_LIST (list));
-       g_return_if_fail (group != NULL);
-
-       if (EMPATHY_CONTACT_LIST_GET_IFACE (list)->remove_group) {
-               EMPATHY_CONTACT_LIST_GET_IFACE (list)->remove_group (list, group);
-       }
-}
diff --git a/libempathy/empathy-contact-list.h b/libempathy/empathy-contact-list.h
deleted file mode 100644 (file)
index a914936..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Copyright (C) 2007-2008 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
- *
- * Authors: Xavier Claessens <xclaesse@gmail.com>
- */
-
-#ifndef __EMPATHY_CONTACT_LIST_H__
-#define __EMPATHY_CONTACT_LIST_H__
-
-#include <glib-object.h>
-
-#include "empathy-types.h"
-#include "empathy-contact.h"
-
-G_BEGIN_DECLS
-
-#define EMPATHY_TYPE_CONTACT_LIST         (empathy_contact_list_get_type ())
-#define EMPATHY_CONTACT_LIST(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_CONTACT_LIST, EmpathyContactList))
-#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 struct _EmpathyContactListIface EmpathyContactListIface;
-
-struct _EmpathyContactListIface {
-       GTypeInterface   base_iface;
-
-       /* VTabled */
-       void             (*add)               (EmpathyContactList *list,
-                                              EmpathyContact     *contact,
-                                              const gchar        *message);
-       void             (*remove)            (EmpathyContactList *list,
-                                              EmpathyContact     *contact,
-                                              const gchar        *message);
-       GList *          (*get_members)       (EmpathyContactList *list);
-       GList *          (*get_pendings)      (EmpathyContactList *list);
-       GList *          (*get_groups)        (EmpathyContactList *list,
-                                              EmpathyContact     *contact);
-       void             (*add_to_group)      (EmpathyContactList *list,
-                                              EmpathyContact     *contact,
-                                              const gchar        *group);
-       void             (*remove_from_group) (EmpathyContactList *list,
-                                              EmpathyContact     *contact,
-                                              const gchar        *group);
-       void             (*rename_group)      (EmpathyContactList *list,
-                                              const gchar        *old_group,
-                                              const gchar        *new_group);
-       void             (*remove_group)      (EmpathyContactList *list,
-                                              const gchar        *group);
-};
-
-GType    empathy_contact_list_get_type          (void) G_GNUC_CONST;
-void     empathy_contact_list_add               (EmpathyContactList *list,
-                                                EmpathyContact     *contact,
-                                                const gchar        *message);
-void     empathy_contact_list_remove            (EmpathyContactList *list,
-                                                EmpathyContact     *contact,
-                                                const gchar        *message);
-GList *  empathy_contact_list_get_members       (EmpathyContactList *list);
-GList *  empathy_contact_list_get_pendings      (EmpathyContactList *list);
-GList *  empathy_contact_list_get_groups        (EmpathyContactList *list,
-                                                EmpathyContact     *contact);
-void     empathy_contact_list_add_to_group      (EmpathyContactList *list,
-                                                EmpathyContact     *contact,
-                                                const gchar        *group);
-void     empathy_contact_list_remove_from_group (EmpathyContactList *list,
-                                                EmpathyContact     *contact,
-                                                const gchar        *group);
-void     empathy_contact_list_rename_group      (EmpathyContactList *list,
-                                                const gchar        *old_group,
-                                                const gchar        *new_group);
-void    empathy_contact_list_remove_group      (EmpathyContactList *list,
-                                                const gchar        *group);
-
-G_END_DECLS
-
-#endif /* __EMPATHY_CONTACT_LIST_H__ */
-
index 0c4ef755f91181c685b410f3b64f43fea08607b5..b741210dd0be9bd19c503bf24db11a66369f7202 100644 (file)
@@ -229,8 +229,7 @@ contact_constructed (GObject *object)
   EmpathyContact *contact = (EmpathyContact *) object;
   EmpathyContactPriv *priv = GET_PRIV (contact);
   GHashTable *location;
-  TpHandle self_handle;
-  TpHandle handle;
+  TpContact *self_contact;
   const gchar * const *client_types;
 
   if (priv->tp_contact == NULL)
@@ -254,10 +253,9 @@ contact_constructed (GObject *object)
   /* Set is-user property. Note that it could still be the handle is
    * different from the connection's self handle, in the case the handle
    * comes from a group interface. */
-  self_handle = tp_connection_get_self_handle (
+  self_contact = tp_connection_get_self_contact (
       tp_contact_get_connection (priv->tp_contact));
-  handle = tp_contact_get_handle (priv->tp_contact);
-  empathy_contact_set_is_user (contact, self_handle == handle);
+  empathy_contact_set_is_user (contact, self_contact == priv->tp_contact);
 
   g_signal_connect (priv->tp_contact, "notify",
     G_CALLBACK (tp_contact_notify_cb), contact);
@@ -1701,6 +1699,23 @@ tp_caps_to_capabilities (TpCapabilities *caps)
   guint i;
   GPtrArray *classes;
 
+  if (tp_capabilities_supports_file_transfer (caps))
+    capabilities |= EMPATHY_CAPABILITIES_FT;
+
+  if (tp_capabilities_supports_stream_tubes (caps, TP_HANDLE_TYPE_CONTACT,
+        "rfb"))
+    capabilities |= EMPATHY_CAPABILITIES_RFB_STREAM_TUBE;
+
+  if (tp_capabilities_supports_audio_video_call (caps, TP_HANDLE_TYPE_CONTACT))
+    {
+      capabilities |= EMPATHY_CAPABILITIES_AUDIO;
+      capabilities |= EMPATHY_CAPABILITIES_VIDEO;
+    }
+  else if (tp_capabilities_supports_audio_call (caps, TP_HANDLE_TYPE_CONTACT))
+    {
+      capabilities |= EMPATHY_CAPABILITIES_AUDIO;
+    }
+
   classes = tp_capabilities_get_channel_classes (caps);
 
   for (i = 0; i < classes->len; i++)
@@ -1724,69 +1739,12 @@ tp_caps_to_capabilities (TpCapabilities *caps)
       chan_type = tp_asv_get_string (fixed_prop,
           TP_PROP_CHANNEL_CHANNEL_TYPE);
 
-      if (!tp_strdiff (chan_type, TP_IFACE_CHANNEL_TYPE_FILE_TRANSFER))
-        {
-          capabilities |= EMPATHY_CAPABILITIES_FT;
-        }
-      else if (!tp_strdiff (chan_type, TP_IFACE_CHANNEL_TYPE_STREAM_TUBE))
-        {
-          const gchar *service;
-
-          service = tp_asv_get_string (fixed_prop,
-              TP_PROP_CHANNEL_TYPE_STREAM_TUBE_SERVICE);
-
-          if (!tp_strdiff (service, "rfb"))
-            capabilities |= EMPATHY_CAPABILITIES_RFB_STREAM_TUBE;
-        }
-      else if (!tp_strdiff (chan_type, TP_IFACE_CHANNEL_TYPE_STREAMED_MEDIA))
-        {
-          guint j;
-
-          for (j = 0; allowed_prop[j] != NULL; j++)
-            {
-              if (!tp_strdiff (allowed_prop[j],
-                    TP_PROP_CHANNEL_TYPE_STREAMED_MEDIA_INITIAL_AUDIO))
-                capabilities |= EMPATHY_CAPABILITIES_AUDIO;
-              else if (!tp_strdiff (allowed_prop[j],
-                    TP_PROP_CHANNEL_TYPE_STREAMED_MEDIA_INITIAL_VIDEO))
-                capabilities |= EMPATHY_CAPABILITIES_VIDEO;
-            }
-
-          if (tp_asv_get_boolean (fixed_prop,
-                    TP_PROP_CHANNEL_TYPE_STREAMED_MEDIA_INITIAL_AUDIO, NULL))
-            capabilities |= EMPATHY_CAPABILITIES_AUDIO;
-          if (tp_asv_get_boolean (fixed_prop,
-                    TP_PROP_CHANNEL_TYPE_STREAMED_MEDIA_INITIAL_VIDEO, NULL))
-            capabilities |= EMPATHY_CAPABILITIES_VIDEO;
-        }
-      else if (!tp_strdiff (chan_type, TP_IFACE_CHANNEL_TYPE_TEXT))
+      if (!tp_strdiff (chan_type, TP_IFACE_CHANNEL_TYPE_TEXT))
         {
           if (tp_asv_get_boolean (fixed_prop,
                 TP_PROP_CHANNEL_INTERFACE_SMS_SMS_CHANNEL, NULL))
             capabilities |= EMPATHY_CAPABILITIES_SMS;
         }
-      else if (!tp_strdiff (chan_type, TP_IFACE_CHANNEL_TYPE_CALL))
-        {
-          guint j;
-
-          if (tp_asv_get_boolean (fixed_prop,
-              TP_PROP_CHANNEL_TYPE_CALL_INITIAL_AUDIO, NULL))
-            capabilities |= EMPATHY_CAPABILITIES_AUDIO;
-
-          if (tp_asv_get_boolean (fixed_prop,
-              TP_PROP_CHANNEL_TYPE_CALL_INITIAL_VIDEO, NULL))
-            capabilities |= EMPATHY_CAPABILITIES_VIDEO;
-
-          for (j = 0; allowed_prop[j] != NULL; j++)
-            {
-              if (!tp_strdiff (allowed_prop[j],
-                    TP_PROP_CHANNEL_TYPE_CALL_INITIAL_AUDIO))
-                capabilities |= EMPATHY_CAPABILITIES_AUDIO;
-              else if (!tp_strdiff (allowed_prop[j],
-                    TP_PROP_CHANNEL_TYPE_CALL_INITIAL_VIDEO))
-                capabilities |= EMPATHY_CAPABILITIES_VIDEO;
-            }
-        }
     }
 
   return capabilities;
index effbf81bc891ab4081625f02b23c48b5b1615487..708f045df3fae187e989524398cc052d3ddb0a38 100644 (file)
@@ -1298,32 +1298,6 @@ out:
     }
 }
 
-static void
-contact_factory_contact_cb (TpConnection *connection,
-    EmpathyContact *contact,
-    const GError *error,
-    gpointer user_data,
-    GObject *weak_object)
-{
-  CallbacksData *cb_data = user_data;
-  EmpathyFTHandler *handler = EMPATHY_FT_HANDLER (weak_object);
-  EmpathyFTHandlerPriv *priv = GET_PRIV (handler);
-
-  if (error != NULL)
-    {
-      if (!g_cancellable_is_cancelled (priv->cancellable))
-        g_cancellable_cancel (priv->cancellable);
-
-      cb_data->callback (handler, (GError *) error, cb_data->user_data);
-      callbacks_data_free (cb_data);
-      return;
-    }
-
-  priv->contact = g_object_ref (contact);
-
-  cb_data->callback (handler, NULL, cb_data->user_data);
-}
-
 static void
 channel_get_all_properties_cb (TpProxy *proxy,
     GHashTable *properties,
@@ -1334,7 +1308,7 @@ channel_get_all_properties_cb (TpProxy *proxy,
   CallbacksData *cb_data = user_data;
   EmpathyFTHandler *handler = EMPATHY_FT_HANDLER (weak_object);
   EmpathyFTHandlerPriv *priv = GET_PRIV (handler);
-  TpHandle c_handle;
+  TpContact *contact;
 
   if (error != NULL)
     {
@@ -1353,11 +1327,10 @@ channel_get_all_properties_cb (TpProxy *proxy,
   priv->content_hash_type = g_value_get_uint (
       g_hash_table_lookup (properties, "ContentHashType"));
 
-  c_handle = tp_channel_get_handle (TP_CHANNEL (proxy), NULL);
-  empathy_tp_contact_factory_get_from_handle (
-      tp_channel_borrow_connection (TP_CHANNEL (proxy)), c_handle,
-      contact_factory_contact_cb, cb_data, callbacks_data_free,
-      G_OBJECT (handler));
+  contact = tp_channel_get_target_contact (TP_CHANNEL (proxy));
+  priv->contact = empathy_contact_dup_from_tp_contact (contact);
+
+  cb_data->callback (handler, NULL, cb_data->user_data);
 }
 
 /* public methods */
index 68b094ef1be14d492ba8ceeab466b905a8b21bf7..28f35df2d581d8b31de6bc3be5ae7cd6a7fb436a 100644 (file)
@@ -687,75 +687,6 @@ empathy_individual_manager_remove_group (EmpathyIndividualManager *manager,
       (gpointer) group);
 }
 
-static void
-link_personas_cb (FolksIndividualAggregator *aggregator,
-    GAsyncResult *async_result,
-    gpointer user_data)
-{
-  GError *error = NULL;
-
-  folks_individual_aggregator_link_personas_finish (aggregator, async_result,
-      &error);
-
-  if (error != NULL)
-    {
-      g_warning ("Failed to link personas: %s", error->message);
-      g_clear_error (&error);
-    }
-}
-
-void
-empathy_individual_manager_link_personas (EmpathyIndividualManager *self,
-    GeeSet *personas)
-{
-  EmpathyIndividualManagerPriv *priv;
-
-  g_return_if_fail (EMPATHY_IS_INDIVIDUAL_MANAGER (self));
-  g_return_if_fail (personas != NULL);
-
-  priv = GET_PRIV (self);
-
-  DEBUG ("Linking %u personas",
-      gee_collection_get_size (GEE_COLLECTION (personas)));
-
-  folks_individual_aggregator_link_personas (priv->aggregator, personas,
-      (GAsyncReadyCallback) link_personas_cb, NULL);
-}
-
-static void
-unlink_individual_cb (FolksIndividualAggregator *aggregator,
-    GAsyncResult *async_result,
-    gpointer user_data)
-{
-  GError *error = NULL;
-
-  folks_individual_aggregator_unlink_individual_finish (aggregator,
-      async_result, &error);
-
-  if (error != NULL)
-    {
-      g_warning ("Failed to unlink individual: %s", error->message);
-      g_clear_error (&error);
-    }
-}
-
-void
-empathy_individual_manager_unlink_individual (EmpathyIndividualManager *self,
-    FolksIndividual *individual)
-{
-  EmpathyIndividualManagerPriv *priv;
-
-  g_return_if_fail (EMPATHY_IS_INDIVIDUAL_MANAGER (self));
-  g_return_if_fail (FOLKS_IS_INDIVIDUAL (individual));
-
-  priv = GET_PRIV (self);
-
-  DEBUG ("Unlinking individual '%s'", folks_individual_get_id (individual));
-
-  folks_individual_aggregator_unlink_individual (priv->aggregator, individual,
-      (GAsyncReadyCallback) unlink_individual_cb, NULL);
-}
-
 gboolean
 empathy_individual_manager_get_contacts_loaded (EmpathyIndividualManager *self)
 {
@@ -763,55 +694,3 @@ empathy_individual_manager_get_contacts_loaded (EmpathyIndividualManager *self)
 
   return priv->contacts_loaded;
 }
-
-static gboolean
-individual_has_contact (FolksIndividual *individual,
-    TpContact *contact)
-{
-  GeeSet *personas;
-  GeeIterator *iter;
-  gboolean found = FALSE;
-
-  personas = folks_individual_get_personas (individual);
-  iter = gee_iterable_iterator (GEE_ITERABLE (personas));
-
-  while (!found && gee_iterator_next (iter))
-    {
-      TpfPersona *persona = gee_iterator_get (iter);
-
-      if (TPF_IS_PERSONA (persona))
-        {
-          TpContact *c = tpf_persona_get_contact (persona);
-
-          if (c == contact)
-            found = TRUE;
-        }
-
-      g_clear_object (&persona);
-    }
-
-  g_clear_object (&iter);
-
-  return found;
-}
-
-/* Try finding a FolksIndividual containing @contact as one of his persona */
-FolksIndividual *
-empathy_individual_manager_lookup_by_contact (EmpathyIndividualManager *self,
-    TpContact *contact)
-{
-  EmpathyIndividualManagerPriv *priv = GET_PRIV (self);
-  GHashTableIter iter;
-  gpointer value;
-
-  g_hash_table_iter_init (&iter, priv->individuals);
-  while (g_hash_table_iter_next (&iter, NULL, &value))
-    {
-      FolksIndividual *individual = value;
-
-      if (individual_has_contact (individual, contact))
-        return individual;
-    }
-
-  return NULL;
-}
index 08a1faade155136f328e56211ecbad4d9bf6e458..3e17bbd85d63b3786917637bd2d6ae17e12fadbc 100644 (file)
@@ -74,13 +74,6 @@ void empathy_individual_manager_remove (EmpathyIndividualManager *manager,
 void empathy_individual_manager_remove_group (EmpathyIndividualManager *manager,
     const gchar *group);
 
-void empathy_individual_manager_link_personas (EmpathyIndividualManager *self,
-    GeeSet *personas);
-
-void empathy_individual_manager_unlink_individual (
-    EmpathyIndividualManager *self,
-    FolksIndividual *individual);
-
 gboolean empathy_individual_manager_supports_blocking (
     EmpathyIndividualManager *self,
     FolksIndividual *individual);
@@ -93,9 +86,5 @@ void empathy_individual_manager_set_blocked (EmpathyIndividualManager *self,
 gboolean empathy_individual_manager_get_contacts_loaded (
     EmpathyIndividualManager *self);
 
-FolksIndividual * empathy_individual_manager_lookup_by_contact (
-    EmpathyIndividualManager *self,
-    TpContact *contact);
-
 G_END_DECLS
 #endif /* __EMPATHY_INDIVIDUAL_MANAGER_H__ */
index 6781b72d40b4ac2351f5a4fa08ce0da0cdefe005..cdecc631d49fea9156d8fdea932be16cc7bc5b1c 100644 (file)
@@ -33,9 +33,6 @@ G_BEGIN_DECLS
 #define EMPATHY_CHAT_BUS_NAME_SUFFIX "Empathy.Chat"
 #define EMPATHY_CHAT_BUS_NAME TP_CLIENT_BUS_NAME_BASE EMPATHY_CHAT_BUS_NAME_SUFFIX
 
-#define EMPATHY_AV_BUS_NAME_SUFFIX "Empathy.AudioVideo"
-#define EMPATHY_AV_BUS_NAME TP_CLIENT_BUS_NAME_BASE EMPATHY_AV_BUS_NAME_SUFFIX
-
 #define EMPATHY_CALL_BUS_NAME_SUFFIX "Empathy.Call"
 #define EMPATHY_CALL_BUS_NAME TP_CLIENT_BUS_NAME_BASE EMPATHY_CALL_BUS_NAME_SUFFIX
 
index 2f20ca8e383ce99f880248917f36eef8cd8c3047..dbf083dbaba859e34161224841f2235a1cbb6fe1 100644 (file)
@@ -531,7 +531,7 @@ empathy_tls_verifier_verify_async (EmpathyTLSVerifier *self,
     g_object_unref (cert);
   }
 
-  gcr_certificate_chain_build_async (chain, GCR_PURPOSE_CLIENT_AUTH, priv->hostname, 0,
+  gcr_certificate_chain_build_async (chain, GCR_PURPOSE_SERVER_AUTH, priv->hostname, 0,
           NULL, perform_verification_cb, g_object_ref (self));
 
   g_object_unref (chain);
@@ -595,7 +595,7 @@ empathy_tls_verifier_store_exception (EmpathyTLSVerifier *self)
   DEBUG ("Storing pinned certificate:");
   debug_certificate (cert);
 
-  if (!gcr_trust_add_pinned_certificate (cert, GCR_PURPOSE_CLIENT_AUTH,
+  if (!gcr_trust_add_pinned_certificate (cert, GCR_PURPOSE_SERVER_AUTH,
           priv->hostname, NULL, &error))
       DEBUG ("Can't store the pinned certificate: %s", error->message);
 
index e90f6ede2ce98a9509a880fb9df2720c931f49d1..6a8080e9db70dee4885f0968adf82d83b5972963 100644 (file)
@@ -1,6 +1,5 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
 /*
- * Copyright (C) 2007-2008 Collabora Ltd.
+ * Copyright (C) 2007-2012 Collabora Ltd.
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -29,7 +28,6 @@
 
 #include "empathy-tp-chat.h"
 #include "empathy-tp-contact-factory.h"
-#include "empathy-contact-list.h"
 #include "empathy-request-util.h"
 #include "empathy-time.h"
 #include "empathy-utils.h"
 #define DEBUG_FLAG EMPATHY_DEBUG_TP | EMPATHY_DEBUG_CHAT
 #include "empathy-debug.h"
 
-struct _EmpathyTpChatPrivate {
-       TpAccount             *account;
-       EmpathyContact        *user;
-       EmpathyContact        *remote_contact;
-       GList                 *members;
-       /* Queue of messages not signalled yet */
-       GQueue                *messages_queue;
-       /* Queue of messages signalled but not acked yet */
-       GQueue                *pending_messages_queue;
+struct _EmpathyTpChatPrivate
+{
+  TpAccount *account;
+  EmpathyContact *user;
+  EmpathyContact *remote_contact;
+  GList *members;
+  /* Queue of messages signalled but not acked yet */
+  GQueue *pending_messages_queue;
 
-       /* Subject */
-       gboolean               supports_subject;
-       gboolean               can_set_subject;
-       gchar                 *subject;
-       gchar                 *subject_actor;
+  /* Subject */
+  gboolean supports_subject;
+  gboolean can_set_subject;
+  gchar *subject;
+  gchar *subject_actor;
 
-       /* Room config (for now, we only track the title and don't support
-        * setting it) */
-       gchar                 *title;
+  /* Room config (for now, we only track the title and don't support
+   * setting it) */
+  gchar *title;
 
-       gboolean               can_upgrade_to_muc;
+  gboolean can_upgrade_to_muc;
 
-       GHashTable            *messages_being_sent;
+  GHashTable *messages_being_sent;
 
-       /* GSimpleAsyncResult used when preparing EMPATHY_TP_CHAT_FEATURE_CORE */
-       GSimpleAsyncResult    *ready_result;
+  /* GSimpleAsyncResult used when preparing EMPATHY_TP_CHAT_FEATURE_CORE */
+  GSimpleAsyncResult *ready_result;
 };
 
-static void tp_chat_iface_init         (EmpathyContactListIface *iface);
-
-enum {
-       PROP_0,
-       PROP_ACCOUNT,
-       PROP_SELF_CONTACT,
-       PROP_REMOTE_CONTACT,
-       PROP_N_MESSAGES_SENDING,
-       PROP_TITLE,
-       PROP_SUBJECT,
+enum
+{
+  PROP_0,
+  PROP_ACCOUNT,
+  PROP_SELF_CONTACT,
+  PROP_REMOTE_CONTACT,
+  PROP_N_MESSAGES_SENDING,
+  PROP_TITLE,
+  PROP_SUBJECT,
 };
 
-enum {
-       MESSAGE_RECEIVED,
-       SEND_ERROR,
-       CHAT_STATE_CHANGED,
-       MESSAGE_ACKNOWLEDGED,
-       LAST_SIGNAL
+enum
+{
+  MESSAGE_RECEIVED,
+  SEND_ERROR,
+  CHAT_STATE_CHANGED,
+  MESSAGE_ACKNOWLEDGED,
+  SIG_MEMBER_RENAMED,
+  SIG_MEMBERS_CHANGED,
+  LAST_SIGNAL
 };
 
 static guint signals[LAST_SIGNAL];
 
-G_DEFINE_TYPE_WITH_CODE (EmpathyTpChat, empathy_tp_chat, TP_TYPE_TEXT_CHANNEL,
-                        G_IMPLEMENT_INTERFACE (EMPATHY_TYPE_CONTACT_LIST,
-                                               tp_chat_iface_init));
+G_DEFINE_TYPE (EmpathyTpChat, empathy_tp_chat, TP_TYPE_TEXT_CHANNEL)
 
 static void
-tp_chat_set_delivery_status (EmpathyTpChat         *self,
-                            const gchar           *token,
-                            EmpathyDeliveryStatus  delivery_status)
-{
-       TpDeliveryReportingSupportFlags flags =
-               tp_text_channel_get_delivery_reporting_support (
-                       TP_TEXT_CHANNEL (self));
-
-       /* channel must support receiving failures and successes */
-       if (!tp_str_empty (token) &&
-           flags & TP_DELIVERY_REPORTING_SUPPORT_FLAG_RECEIVE_FAILURES &&
-           flags & TP_DELIVERY_REPORTING_SUPPORT_FLAG_RECEIVE_SUCCESSES) {
-
-               DEBUG ("Delivery status (%s) = %u", token, delivery_status);
-
-               switch (delivery_status) {
-                       case EMPATHY_DELIVERY_STATUS_NONE:
-                               g_hash_table_remove (self->priv->messages_being_sent,
-                                       token);
-                               break;
-
-                       default:
-                               g_hash_table_insert (self->priv->messages_being_sent,
-                                       g_strdup (token),
-                                       GUINT_TO_POINTER (delivery_status));
-                               break;
-               }
-
-               g_object_notify (G_OBJECT (self), "n-messages-sending");
-       }
+tp_chat_set_delivery_status (EmpathyTpChat *self,
+    const gchar *token,
+    EmpathyDeliveryStatus delivery_status)
+{
+  TpDeliveryReportingSupportFlags flags =
+    tp_text_channel_get_delivery_reporting_support (
+      TP_TEXT_CHANNEL (self));
+
+  /* channel must support receiving failures and successes */
+  if (!tp_str_empty (token) &&
+      flags & TP_DELIVERY_REPORTING_SUPPORT_FLAG_RECEIVE_FAILURES &&
+      flags & TP_DELIVERY_REPORTING_SUPPORT_FLAG_RECEIVE_SUCCESSES)
+    {
+      DEBUG ("Delivery status (%s) = %u", token, delivery_status);
+
+      switch (delivery_status)
+        {
+          case EMPATHY_DELIVERY_STATUS_NONE:
+            g_hash_table_remove (self->priv->messages_being_sent,
+              token);
+            break;
+
+          default:
+            g_hash_table_insert (self->priv->messages_being_sent,
+              g_strdup (token),
+              GUINT_TO_POINTER (delivery_status));
+            break;
+        }
+
+    g_object_notify (G_OBJECT (self), "n-messages-sending");
+  }
 }
 
 static void tp_chat_prepare_ready_async (TpProxy *proxy,
-       const TpProxyFeature *feature,
-       GAsyncReadyCallback callback,
-       gpointer user_data);
+  const TpProxyFeature *feature,
+  GAsyncReadyCallback callback,
+  gpointer user_data);
 
 static void
 tp_chat_async_cb (TpChannel *proxy,
-                 const GError *error,
-                 gpointer user_data,
-                 GObject *weak_object)
+    const GError *error,
+    gpointer user_data,
+    GObject *weak_object)
 {
-       if (error) {
-               DEBUG ("Error %s: %s", (gchar *) user_data, error->message);
-       }
+  if (error != NULL)
+    DEBUG ("Error %s: %s", (gchar *) user_data, error->message);
 }
 
 static void
 create_conference_cb (GObject *source,
-                     GAsyncResult *result,
-                     gpointer user_data)
+    GAsyncResult *result,
+    gpointer user_data)
 {
-       GError *error = NULL;
-
-       if (!tp_account_channel_request_create_channel_finish (
-                       TP_ACCOUNT_CHANNEL_REQUEST (source), result, &error)) {
-               DEBUG ("Failed to create conference channel: %s", error->message);
-               g_error_free (error);
-       }
-}
+  GError *error = NULL;
 
-static void
-tp_chat_add (EmpathyContactList *list,
-            EmpathyContact     *contact,
-            const gchar        *message)
-{
-       EmpathyTpChat *self = (EmpathyTpChat *) list;
-       TpChannel *channel = (TpChannel *) self;
-
-       if (tp_proxy_has_interface_by_id (self,
-               TP_IFACE_QUARK_CHANNEL_INTERFACE_GROUP)) {
-               TpHandle           handle;
-               GArray             handles = {(gchar *) &handle, 1};
-
-               g_return_if_fail (EMPATHY_IS_TP_CHAT (list));
-               g_return_if_fail (EMPATHY_IS_CONTACT (contact));
-
-               handle = empathy_contact_get_handle (contact);
-               tp_cli_channel_interface_group_call_add_members (channel,
-                       -1, &handles, NULL, NULL, NULL, NULL, NULL);
-       } else if (self->priv->can_upgrade_to_muc) {
-               TpAccountChannelRequest *req;
-               GHashTable        *props;
-               const char        *object_path;
-               GPtrArray          channels = { (gpointer *) &object_path, 1 };
-               const char        *invitees[2] = { NULL, };
-
-               invitees[0] = empathy_contact_get_id (contact);
-               object_path = tp_proxy_get_object_path (self);
-
-               props = tp_asv_new (
-                   TP_PROP_CHANNEL_CHANNEL_TYPE, G_TYPE_STRING,
-                       TP_IFACE_CHANNEL_TYPE_TEXT,
-                   TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, G_TYPE_UINT,
-                       TP_HANDLE_TYPE_NONE,
-                   TP_PROP_CHANNEL_INTERFACE_CONFERENCE_INITIAL_CHANNELS,
-                       TP_ARRAY_TYPE_OBJECT_PATH_LIST, &channels,
-                   TP_PROP_CHANNEL_INTERFACE_CONFERENCE_INITIAL_INVITEE_IDS,
-                       G_TYPE_STRV, invitees,
-                   /* FIXME: InvitationMessage ? */
-                   NULL);
-
-               req = tp_account_channel_request_new (self->priv->account, props,
-                       TP_USER_ACTION_TIME_NOT_USER_ACTION);
-
-               /* Although this is a MUC, it's anonymous, so CreateChannel is
-                * valid. */
-               tp_account_channel_request_create_channel_async (req, EMPATHY_CHAT_BUS_NAME,
-                       NULL, create_conference_cb, NULL);
-
-               g_object_unref (req);
-               g_hash_table_unref (props);
-       } else {
-               g_warning ("Cannot add to this channel");
-       }
+  if (!tp_account_channel_request_create_channel_finish (
+      TP_ACCOUNT_CHANNEL_REQUEST (source), result, &error))
+    {
+      DEBUG ("Failed to create conference channel: %s", error->message);
+      g_error_free (error);
+    }
 }
 
-static void
-tp_chat_remove (EmpathyContactList *list,
-               EmpathyContact     *contact,
-               const gchar        *message)
-{
-       EmpathyTpChat *self = (EmpathyTpChat *) list;
-       TpHandle           handle;
-       GArray             handles = {(gchar *) &handle, 1};
-
-       g_return_if_fail (EMPATHY_IS_TP_CHAT (list));
-       g_return_if_fail (EMPATHY_IS_CONTACT (contact));
-
-       handle = empathy_contact_get_handle (contact);
-       tp_cli_channel_interface_group_call_remove_members ((TpChannel *) self, -1,
-                                                           &handles, NULL,
-                                                           NULL, NULL, NULL,
-                                                           NULL);
-}
-
-static GList *
-tp_chat_get_members (EmpathyContactList *list)
-{
-       EmpathyTpChat *self = (EmpathyTpChat *) list;
-       GList             *members = NULL;
-
-       g_return_val_if_fail (EMPATHY_IS_TP_CHAT (list), NULL);
-
-       if (self->priv->members) {
-               members = g_list_copy (self->priv->members);
-               g_list_foreach (members, (GFunc) g_object_ref, NULL);
-       } else {
-               members = g_list_prepend (members, g_object_ref (self->priv->user));
-               if (self->priv->remote_contact != NULL)
-                       members = g_list_prepend (members, g_object_ref (self->priv->remote_contact));
-       }
-
-       return members;
+void
+empathy_tp_chat_add (EmpathyTpChat *self,
+    EmpathyContact *contact,
+    const gchar *message)
+{
+  TpChannel *channel = (TpChannel *) self;
+
+  if (tp_proxy_has_interface_by_id (self,
+    TP_IFACE_QUARK_CHANNEL_INTERFACE_GROUP))
+    {
+      TpHandle handle;
+      GArray handles = {(gchar *) &handle, 1};
+
+      g_return_if_fail (EMPATHY_IS_CONTACT (contact));
+
+      handle = empathy_contact_get_handle (contact);
+      tp_cli_channel_interface_group_call_add_members (channel,
+        -1, &handles, NULL, NULL, NULL, NULL, NULL);
+    }
+  else if (self->priv->can_upgrade_to_muc)
+    {
+      TpAccountChannelRequest *req;
+      GHashTable *props;
+      const char *object_path;
+      GPtrArray channels = { (gpointer *) &object_path, 1 };
+      const char *invitees[2] = { NULL, };
+
+      invitees[0] = empathy_contact_get_id (contact);
+      object_path = tp_proxy_get_object_path (self);
+
+      props = tp_asv_new (
+          TP_PROP_CHANNEL_CHANNEL_TYPE, G_TYPE_STRING,
+              TP_IFACE_CHANNEL_TYPE_TEXT,
+          TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, G_TYPE_UINT,
+              TP_HANDLE_TYPE_NONE,
+          TP_PROP_CHANNEL_INTERFACE_CONFERENCE_INITIAL_CHANNELS,
+              TP_ARRAY_TYPE_OBJECT_PATH_LIST, &channels,
+          TP_PROP_CHANNEL_INTERFACE_CONFERENCE_INITIAL_INVITEE_IDS,
+              G_TYPE_STRV, invitees,
+          /* FIXME: InvitationMessage ? */
+          NULL);
+
+      req = tp_account_channel_request_new (self->priv->account, props,
+        TP_USER_ACTION_TIME_NOT_USER_ACTION);
+
+      /* Although this is a MUC, it's anonymous, so CreateChannel is
+       * valid. */
+      tp_account_channel_request_create_channel_async (req,
+          EMPATHY_CHAT_BUS_NAME, NULL, create_conference_cb, NULL);
+
+      g_object_unref (req);
+      g_hash_table_unref (props);
+    }
+  else
+    {
+      g_warning ("Cannot add to this channel");
+    }
+}
+
+GList *
+empathy_tp_chat_get_members (EmpathyTpChat *self)
+{
+  GList *members = NULL;
+
+  if (self->priv->members)
+    {
+      members = g_list_copy (self->priv->members);
+      g_list_foreach (members, (GFunc) g_object_ref, NULL);
+    }
+  else
+    {
+      members = g_list_prepend (members, g_object_ref (self->priv->user));
+
+      if (self->priv->remote_contact != NULL)
+        members = g_list_prepend (members,
+            g_object_ref (self->priv->remote_contact));
+    }
+
+  return members;
 }
 
 static void
 check_ready (EmpathyTpChat *self)
 {
-       if (self->priv->ready_result == NULL)
-               return;
-
-       if (g_queue_get_length (self->priv->messages_queue) > 0)
-               return;
+  if (self->priv->ready_result == NULL)
+    return;
 
-       DEBUG ("Ready");
+  DEBUG ("Ready");
 
-       g_simple_async_result_complete (self->priv->ready_result);
-       tp_clear_object (&self->priv->ready_result);
+  g_simple_async_result_complete_in_idle (self->priv->ready_result);
+  tp_clear_object (&self->priv->ready_result);
 }
 
 static void
-tp_chat_emit_queued_messages (EmpathyTpChat *self)
+tp_chat_build_message (EmpathyTpChat *self,
+    TpMessage *msg,
+    gboolean incoming)
 {
-       EmpathyMessage    *message;
+  EmpathyMessage *message;
+  TpContact *sender;
 
-       /* Check if we can now emit some queued messages */
-       while ((message = g_queue_peek_head (self->priv->messages_queue)) != NULL) {
-               if (empathy_message_get_sender (message) == NULL) {
-                       break;
-               }
+  message = empathy_message_new_from_tp_message (msg, incoming);
+  /* FIXME: this is actually a lie for incoming messages. */
+  empathy_message_set_receiver (message, self->priv->user);
 
-               DEBUG ("Queued message ready");
-               g_queue_pop_head (self->priv->messages_queue);
-               g_queue_push_tail (self->priv->pending_messages_queue, message);
-               g_signal_emit (self, signals[MESSAGE_RECEIVED], 0, message);
-       }
+  sender = tp_signalled_message_get_sender (msg);
+  g_assert (sender != NULL);
 
-       check_ready (self);
-}
+  if (tp_contact_get_handle (sender) == 0)
+    {
+      empathy_message_set_sender (message, self->priv->user);
+    }
+  else
+    {
+      EmpathyContact *contact;
 
-static void
-tp_chat_got_sender_cb (TpConnection            *connection,
-                      EmpathyContact          *contact,
-                      const GError            *error,
-                      gpointer                 message,
-                      GObject                 *chat)
-{
-       EmpathyTpChat *self = (EmpathyTpChat *) chat;
+      contact = empathy_contact_dup_from_tp_contact (sender);
 
-       if (error) {
-               DEBUG ("Error: %s", error->message);
-               /* Do not block the message queue, just drop this message */
-               g_queue_remove (self->priv->messages_queue, message);
-       } else {
-               empathy_message_set_sender (message, contact);
-       }
+      empathy_message_set_sender (message, contact);
 
-       tp_chat_emit_queued_messages (EMPATHY_TP_CHAT (self));
-}
+      g_object_unref (contact);
+    }
 
-static void
-tp_chat_build_message (EmpathyTpChat *self,
-                      TpMessage     *msg,
-                      gboolean       incoming)
-{
-       EmpathyMessage    *message;
-       TpContact *sender;
-
-       message = empathy_message_new_from_tp_message (msg, incoming);
-       /* FIXME: this is actually a lie for incoming messages. */
-       empathy_message_set_receiver (message, self->priv->user);
-
-       g_queue_push_tail (self->priv->messages_queue, message);
-
-       sender = tp_signalled_message_get_sender (msg);
-       g_assert (sender != NULL);
-
-       if (tp_contact_get_handle (sender) == 0) {
-               empathy_message_set_sender (message, self->priv->user);
-               tp_chat_emit_queued_messages (self);
-       } else {
-               TpConnection *connection = tp_channel_borrow_connection (
-                       (TpChannel *) self);
-
-               empathy_tp_contact_factory_get_from_handle (connection,
-                       tp_contact_get_handle (sender),
-                       tp_chat_got_sender_cb,
-                       message, NULL, G_OBJECT (self));
-       }
+  g_queue_push_tail (self->priv->pending_messages_queue, message);
+  g_signal_emit (self, signals[MESSAGE_RECEIVED], 0, message);
 }
 
 static void
 handle_delivery_report (EmpathyTpChat *self,
-               TpMessage *message)
-{
-       TpDeliveryStatus delivery_status;
-       const GHashTable *header;
-       TpChannelTextSendError delivery_error;
-       gboolean valid;
-       GPtrArray *echo;
-       const gchar *message_body = NULL;
-       const gchar *delivery_dbus_error;
-       const gchar *delivery_token = NULL;
-
-       header = tp_message_peek (message, 0);
-       if (header == NULL)
-               goto out;
-
-       delivery_token = tp_asv_get_string (header, "delivery-token");
-       delivery_status = tp_asv_get_uint32 (header, "delivery-status", &valid);
-
-       if (!valid) {
-               goto out;
-       } else if (delivery_status == TP_DELIVERY_STATUS_ACCEPTED) {
-               DEBUG ("Accepted %s", delivery_token);
-               tp_chat_set_delivery_status (self, delivery_token,
-                       EMPATHY_DELIVERY_STATUS_ACCEPTED);
-               goto out;
-       } else if (delivery_status == TP_DELIVERY_STATUS_DELIVERED) {
-               DEBUG ("Delivered %s", delivery_token);
-               tp_chat_set_delivery_status (self, delivery_token,
-                       EMPATHY_DELIVERY_STATUS_NONE);
-               goto out;
-       } else if (delivery_status != TP_DELIVERY_STATUS_PERMANENTLY_FAILED &&
-                  delivery_status != TP_DELIVERY_STATUS_TEMPORARILY_FAILED) {
-               goto out;
-       }
-
-       delivery_error = tp_asv_get_uint32 (header, "delivery-error", &valid);
-       if (!valid)
-               delivery_error = TP_CHANNEL_TEXT_SEND_ERROR_UNKNOWN;
-
-       delivery_dbus_error = tp_asv_get_string (header, "delivery-dbus-error");
-
-       /* TODO: ideally we should use tp-glib API giving us the echoed message as a
-        * TpMessage. (fdo #35884) */
-       echo = tp_asv_get_boxed (header, "delivery-echo",
-               TP_ARRAY_TYPE_MESSAGE_PART_LIST);
-       if (echo != NULL && echo->len >= 2) {
-               const GHashTable *echo_body;
-
-               echo_body = g_ptr_array_index (echo, 1);
-               if (echo_body != NULL)
-                       message_body = tp_asv_get_string (echo_body, "content");
-       }
-
-       tp_chat_set_delivery_status (self, delivery_token,
-                       EMPATHY_DELIVERY_STATUS_NONE);
-       g_signal_emit (self, signals[SEND_ERROR], 0, message_body,
-                       delivery_error, delivery_dbus_error);
+    TpMessage *message)
+{
+  TpDeliveryStatus delivery_status;
+  const GHashTable *header;
+  TpChannelTextSendError delivery_error;
+  gboolean valid;
+  GPtrArray *echo;
+  const gchar *message_body = NULL;
+  const gchar *delivery_dbus_error;
+  const gchar *delivery_token = NULL;
+
+  header = tp_message_peek (message, 0);
+  if (header == NULL)
+    goto out;
+
+  delivery_token = tp_asv_get_string (header, "delivery-token");
+  delivery_status = tp_asv_get_uint32 (header, "delivery-status", &valid);
+
+  if (!valid)
+    {
+      goto out;
+    }
+  else if (delivery_status == TP_DELIVERY_STATUS_ACCEPTED)
+    {
+      DEBUG ("Accepted %s", delivery_token);
+      tp_chat_set_delivery_status (self, delivery_token,
+        EMPATHY_DELIVERY_STATUS_ACCEPTED);
+      goto out;
+    }
+  else if (delivery_status == TP_DELIVERY_STATUS_DELIVERED)
+    {
+      DEBUG ("Delivered %s", delivery_token);
+      tp_chat_set_delivery_status (self, delivery_token,
+        EMPATHY_DELIVERY_STATUS_NONE);
+      goto out;
+    }
+  else if (delivery_status != TP_DELIVERY_STATUS_PERMANENTLY_FAILED &&
+       delivery_status != TP_DELIVERY_STATUS_TEMPORARILY_FAILED)
+    {
+      goto out;
+    }
+
+  delivery_error = tp_asv_get_uint32 (header, "delivery-error", &valid);
+  if (!valid)
+    delivery_error = TP_CHANNEL_TEXT_SEND_ERROR_UNKNOWN;
+
+  delivery_dbus_error = tp_asv_get_string (header, "delivery-dbus-error");
+
+  /* TODO: ideally we should use tp-glib API giving us the echoed message as a
+   * TpMessage. (fdo #35884) */
+  echo = tp_asv_get_boxed (header, "delivery-echo",
+    TP_ARRAY_TYPE_MESSAGE_PART_LIST);
+  if (echo != NULL && echo->len >= 2)
+    {
+      const GHashTable *echo_body;
+
+      echo_body = g_ptr_array_index (echo, 1);
+      if (echo_body != NULL)
+        message_body = tp_asv_get_string (echo_body, "content");
+    }
+
+  tp_chat_set_delivery_status (self, delivery_token,
+      EMPATHY_DELIVERY_STATUS_NONE);
+  g_signal_emit (self, signals[SEND_ERROR], 0, message_body,
+      delivery_error, delivery_dbus_error);
 
 out:
-       tp_text_channel_ack_message_async (TP_TEXT_CHANNEL (self),
-               message, NULL, NULL);
+  tp_text_channel_ack_message_async (TP_TEXT_CHANNEL (self),
+    message, NULL, NULL);
 }
 
 static void
 handle_incoming_message (EmpathyTpChat *self,
-                        TpMessage *message,
-                        gboolean pending)
+    TpMessage *message,
+    gboolean pending)
 {
-       gchar *message_body;
+  gchar *message_body;
 
-       if (tp_message_is_delivery_report (message)) {
-               handle_delivery_report (self, message);
-               return;
-       }
+  if (tp_message_is_delivery_report (message))
+    {
+      handle_delivery_report (self, message);
+      return;
+    }
 
-       message_body = tp_message_to_text (message, NULL);
+  message_body = tp_message_to_text (message, NULL);
 
-       DEBUG ("Message %s (channel %s): %s",
-               pending ? "pending" : "received",
-               tp_proxy_get_object_path (self), message_body);
+  DEBUG ("Message %s (channel %s): %s",
+    pending ? "pending" : "received",
+    tp_proxy_get_object_path (self), message_body);
 
-       if (message_body == NULL) {
-               DEBUG ("Empty message with NonTextContent, ignoring and acking.");
+  if (message_body == NULL)
+    {
+      DEBUG ("Empty message with NonTextContent, ignoring and acking.");
 
-               tp_text_channel_ack_message_async (TP_TEXT_CHANNEL (self),
-                       message, NULL, NULL);
-               return;
-       }
+      tp_text_channel_ack_message_async (TP_TEXT_CHANNEL (self),
+        message, NULL, NULL);
+      return;
+    }
 
-       tp_chat_build_message (self, message, TRUE);
+  tp_chat_build_message (self, message, TRUE);
 
-       g_free (message_body);
+  g_free (message_body);
 }
 
 static void
-message_received_cb (TpTextChannel   *channel,
-                    TpMessage *message,
-                    EmpathyTpChat *self)
+message_received_cb (TpTextChannel *channel,
+    TpMessage *message,
+    EmpathyTpChat *self)
 {
-       handle_incoming_message (self, message, FALSE);
+  handle_incoming_message (self, message, FALSE);
 }
 
 static gboolean
 find_pending_message_func (gconstpointer a,
-                          gconstpointer b)
+    gconstpointer b)
 {
-       EmpathyMessage *msg = (EmpathyMessage *) a;
-       TpMessage *message = (TpMessage *) b;
+  EmpathyMessage *msg = (EmpathyMessage *) a;
+  TpMessage *message = (TpMessage *) b;
 
-       if (empathy_message_get_tp_message (msg) == message)
-               return 0;
+  if (empathy_message_get_tp_message (msg) == message)
+    return 0;
 
-       return -1;
+  return -1;
 }
 
 static void
 pending_message_removed_cb (TpTextChannel   *channel,
-                           TpMessage *message,
-                           EmpathyTpChat *self)
+    TpMessage *message,
+    EmpathyTpChat *self)
 {
-       GList *m;
+  GList *m;
 
-       m = g_queue_find_custom (self->priv->pending_messages_queue, message,
-                                find_pending_message_func);
+  m = g_queue_find_custom (self->priv->pending_messages_queue, message,
+      find_pending_message_func);
 
-       if (m == NULL)
-               return;
+  if (m == NULL)
+    return;
 
-       g_signal_emit (self, signals[MESSAGE_ACKNOWLEDGED], 0, m->data);
+  g_signal_emit (self, signals[MESSAGE_ACKNOWLEDGED], 0, m->data);
 
-       g_object_unref (m->data);
-       g_queue_delete_link (self->priv->pending_messages_queue, m);
+  g_object_unref (m->data);
+  g_queue_delete_link (self->priv->pending_messages_queue, m);
 }
 
 static void
-message_sent_cb (TpTextChannel   *channel,
-                TpMessage *message,
-                TpMessageSendingFlags flags,
-                gchar              *token,
-                EmpathyTpChat      *self)
+message_sent_cb (TpTextChannel *channel,
+    TpMessage *message,
+    TpMessageSendingFlags flags,
+    gchar *token,
+    EmpathyTpChat *self)
 {
-       gchar *message_body;
+  gchar *message_body;
 
-       message_body = tp_message_to_text (message, NULL);
+  message_body = tp_message_to_text (message, NULL);
 
-       DEBUG ("Message sent: %s", message_body);
+  DEBUG ("Message sent: %s", message_body);
 
-       tp_chat_build_message (self, message, FALSE);
+  tp_chat_build_message (self, message, FALSE);
 
-       g_free (message_body);
+  g_free (message_body);
 }
 
 static TpChannelTextSendError
 error_to_text_send_error (GError *error)
 {
-       if (error->domain != TP_ERROR)
-               return TP_CHANNEL_TEXT_SEND_ERROR_UNKNOWN;
-
-       switch (error->code) {
-               case TP_ERROR_OFFLINE:
-                       return TP_CHANNEL_TEXT_SEND_ERROR_OFFLINE;
-               case TP_ERROR_INVALID_HANDLE:
-                       return TP_CHANNEL_TEXT_SEND_ERROR_INVALID_CONTACT;
-               case TP_ERROR_PERMISSION_DENIED:
-                       return TP_CHANNEL_TEXT_SEND_ERROR_PERMISSION_DENIED;
-               case TP_ERROR_NOT_IMPLEMENTED:
-                       return TP_CHANNEL_TEXT_SEND_ERROR_NOT_IMPLEMENTED;
-       }
-
-       return TP_CHANNEL_TEXT_SEND_ERROR_UNKNOWN;
+  if (error->domain != TP_ERROR)
+    return TP_CHANNEL_TEXT_SEND_ERROR_UNKNOWN;
+
+  switch (error->code)
+    {
+      case TP_ERROR_OFFLINE:
+        return TP_CHANNEL_TEXT_SEND_ERROR_OFFLINE;
+      case TP_ERROR_INVALID_HANDLE:
+        return TP_CHANNEL_TEXT_SEND_ERROR_INVALID_CONTACT;
+      case TP_ERROR_PERMISSION_DENIED:
+        return TP_CHANNEL_TEXT_SEND_ERROR_PERMISSION_DENIED;
+      case TP_ERROR_NOT_IMPLEMENTED:
+        return TP_CHANNEL_TEXT_SEND_ERROR_NOT_IMPLEMENTED;
+    }
+
+  return TP_CHANNEL_TEXT_SEND_ERROR_UNKNOWN;
 }
 
 static void
 message_send_cb (GObject *source,
-                GAsyncResult *result,
-                gpointer      user_data)
+     GAsyncResult *result,
+     gpointer user_data)
 {
-       EmpathyTpChat *self = user_data;
-       TpTextChannel *channel = (TpTextChannel *) source;
-       gchar *token = NULL;
-       GError *error = NULL;
-
-       if (!tp_text_channel_send_message_finish (channel, result, &token, &error)) {
-               DEBUG ("Error: %s", error->message);
-
-               /* FIXME: we should use the body of the message as first argument of the
-                * signal but can't easily get it as we just get a user_data pointer. Once
-                * we'll have rebased EmpathyTpChat on top of TpTextChannel we'll be able
-                * to use the user_data pointer to pass the message and fix this. */
-               g_signal_emit (self, signals[SEND_ERROR], 0,
-                              NULL, error_to_text_send_error (error), NULL);
-
-               g_error_free (error);
-       }
-
-       tp_chat_set_delivery_status (self, token,
-               EMPATHY_DELIVERY_STATUS_SENDING);
-       g_free (token);
+  EmpathyTpChat *self = user_data;
+  TpTextChannel *channel = (TpTextChannel *) source;
+  gchar *token = NULL;
+  GError *error = NULL;
+
+  if (!tp_text_channel_send_message_finish (channel, result, &token, &error))
+    {
+      DEBUG ("Error: %s", error->message);
+
+      /* FIXME: we should use the body of the message as first argument of the
+       * signal but can't easily get it as we just get a user_data pointer. Once
+       * we'll have rebased EmpathyTpChat on top of TpTextChannel we'll be able
+       * to use the user_data pointer to pass the message and fix this. */
+      g_signal_emit (self, signals[SEND_ERROR], 0,
+               NULL, error_to_text_send_error (error), NULL);
+
+      g_error_free (error);
+    }
+
+  tp_chat_set_delivery_status (self, token,
+    EMPATHY_DELIVERY_STATUS_SENDING);
+  g_free (token);
 }
 
 typedef struct {
-       EmpathyTpChat *chat;
-       TpChannelChatState state;
+  EmpathyTpChat *chat;
+  TpChannelChatState state;
 } StateChangedData;
 
 static void
-tp_chat_state_changed_got_contact_cb (TpConnection            *connection,
-                                     EmpathyContact          *contact,
-                                     const GError            *error,
-                                     gpointer                 user_data,
-                                     GObject                 *chat)
+tp_chat_state_changed_got_contact_cb (TpConnection *connection,
+    EmpathyContact *contact,
+    const GError *error,
+    gpointer user_data,
+    GObject *chat)
 {
-       TpChannelChatState state;
+  TpChannelChatState state;
 
-       if (error) {
-               DEBUG ("Error: %s", error->message);
-               return;
-       }
+  if (error != NULL)
+    {
+      DEBUG ("Error: %s", error->message);
+      return;
+    }
 
-       state = GPOINTER_TO_UINT (user_data);
-       DEBUG ("Chat state changed for %s (%d): %d",
-               empathy_contact_get_alias (contact),
-               empathy_contact_get_handle (contact), state);
+  state = GPOINTER_TO_UINT (user_data);
+  DEBUG ("Chat state changed for %s (%d): %d",
+    empathy_contact_get_alias (contact),
+    empathy_contact_get_handle (contact), state);
 
-       g_signal_emit (chat, signals[CHAT_STATE_CHANGED], 0, contact, state);
+  g_signal_emit (chat, signals[CHAT_STATE_CHANGED], 0, contact, state);
 }
 
 static void
 tp_chat_state_changed_cb (TpChannel *channel,
-                         TpHandle   handle,
-                         TpChannelChatState state,
-                         EmpathyTpChat *self)
+    TpHandle handle,
+    TpChannelChatState state,
+    EmpathyTpChat *self)
 {
-       TpConnection *connection = tp_channel_borrow_connection (
-               (TpChannel *) self);
+  TpConnection *connection = tp_channel_borrow_connection (
+    (TpChannel *) self);
 
-       empathy_tp_contact_factory_get_from_handle (connection, handle,
-               tp_chat_state_changed_got_contact_cb, GUINT_TO_POINTER (state),
-               NULL, G_OBJECT (self));
+  empathy_tp_contact_factory_get_from_handle (connection, handle,
+    tp_chat_state_changed_got_contact_cb, GUINT_TO_POINTER (state),
+    NULL, G_OBJECT (self));
 }
 
 static void
 list_pending_messages (EmpathyTpChat *self)
 {
-       GList *messages, *l;
+  GList *messages, *l;
 
-       messages = tp_text_channel_get_pending_messages (
-               TP_TEXT_CHANNEL (self));
+  messages = tp_text_channel_get_pending_messages (TP_TEXT_CHANNEL (self));
 
-       for (l = messages; l != NULL; l = g_list_next (l)) {
-               TpMessage *message = l->data;
+  for (l = messages; l != NULL; l = g_list_next (l))
+    {
+      TpMessage *message = l->data;
 
-               handle_incoming_message (self, message, FALSE);
-       }
+      handle_incoming_message (self, message, FALSE);
+    }
 
-       g_list_free (messages);
+  g_list_free (messages);
 }
 
 static void
 update_subject (EmpathyTpChat *self,
-               GHashTable *properties)
+    GHashTable *properties)
 {
-       EmpathyTpChatPrivate *priv = self->priv;
-       gboolean can_set, valid;
-       const gchar *subject;
-
-       can_set = tp_asv_get_boolean (properties, "CanSet", &valid);
-       if (valid) {
-               priv->can_set_subject = can_set;
-       }
-
-       subject = tp_asv_get_string (properties, "Subject");
-       if (subject != NULL) {
-               const gchar *actor;
-
-               g_free (priv->subject);
-               priv->subject = g_strdup (subject);
-
-               /* If the actor is included with this update, use it;
-                * otherwise, clear it to avoid showing stale information.
-                * Why might it not be included? When you join an IRC channel,
-                * you get a pair of messages: first, the current topic; next,
-                * who set it, and when. Idle reports these in two separate
-                * signals.
-                */
-               actor = tp_asv_get_string (properties, "Actor");
-               g_free (priv->subject_actor);
-               priv->subject_actor = g_strdup (actor);
-
-               g_object_notify (G_OBJECT (self), "subject");
-       }
-
-       /* TODO: track Timestamp. */
+  gboolean can_set, valid;
+  const gchar *subject;
+
+  can_set = tp_asv_get_boolean (properties, "CanSet", &valid);
+  if (valid)
+    self->priv->can_set_subject = can_set;
+
+  subject = tp_asv_get_string (properties, "Subject");
+  if (subject != NULL)
+    {
+      const gchar *actor;
+
+      g_free (self->priv->subject);
+      self->priv->subject = g_strdup (subject);
+
+      /* If the actor is included with this update, use it;
+       * otherwise, clear it to avoid showing stale information.
+       * Why might it not be included? When you join an IRC channel,
+       * you get a pair of messages: first, the current topic; next,
+       * who set it, and when. Idle reports these in two separate
+       * signals.
+       */
+      actor = tp_asv_get_string (properties, "Actor");
+      g_free (self->priv->subject_actor);
+      self->priv->subject_actor = g_strdup (actor);
+
+      g_object_notify (G_OBJECT (self), "subject");
+    }
+
+  /* TODO: track Timestamp. */
 }
 
 static void
-tp_chat_get_all_subject_cb (TpProxy      *proxy,
-                           GHashTable   *properties,
-                           const GError *error,
-                           gpointer      user_data G_GNUC_UNUSED,
-                           GObject      *chat)
+tp_chat_get_all_subject_cb (TpProxy *proxy,
+    GHashTable *properties,
+    const GError *error,
+    gpointer user_data G_GNUC_UNUSED,
+    GObject *chat)
 {
-       EmpathyTpChat *self = EMPATHY_TP_CHAT (chat);
-       EmpathyTpChatPrivate *priv = self->priv;
+  EmpathyTpChat *self = EMPATHY_TP_CHAT (chat);
 
-       if (error) {
-               DEBUG ("Error fetching subject: %s", error->message);
-               return;
-       }
+  if (error != NULL)
+    {
+      DEBUG ("Error fetching subject: %s", error->message);
+      return;
+    }
 
-       priv->supports_subject = TRUE;
-       update_subject (self, properties);
+  self->priv->supports_subject = TRUE;
+  update_subject (self, properties);
 }
 
 static void
 update_title (EmpathyTpChat *self,
-             GHashTable *properties)
+    GHashTable *properties)
 {
-       EmpathyTpChatPrivate *priv = self->priv;
-       const gchar *title = tp_asv_get_string (properties, "Title");
-
-       if (title != NULL) {
-               if (tp_str_empty (title)) {
-                       title = NULL;
-               }
-
-               g_free (priv->title);
-               priv->title = g_strdup (title);
-               g_object_notify (G_OBJECT (self), "title");
-       }
+  const gchar *title = tp_asv_get_string (properties, "Title");
+
+  if (title != NULL)
+    {
+      if (tp_str_empty (title))
+        title = NULL;
+
+      g_free (self->priv->title);
+      self->priv->title = g_strdup (title);
+      g_object_notify (G_OBJECT (self), "title");
+    }
 }
 
 static void
-tp_chat_get_all_room_config_cb (TpProxy      *proxy,
-                               GHashTable   *properties,
-                               const GError *error,
-                               gpointer      user_data G_GNUC_UNUSED,
-                               GObject      *chat)
+tp_chat_get_all_room_config_cb (TpProxy *proxy,
+    GHashTable *properties,
+    const GError *error,
+    gpointer user_data G_GNUC_UNUSED,
+    GObject *chat)
 {
-       EmpathyTpChat *self = EMPATHY_TP_CHAT (chat);
+  EmpathyTpChat *self = EMPATHY_TP_CHAT (chat);
 
-       if (error) {
-               DEBUG ("Error fetching room config: %s", error->message);
-               return;
-       }
+  if (error)
+    {
+      DEBUG ("Error fetching room config: %s", error->message);
+      return;
+    }
 
-       update_title (self, properties);
+  update_title (self, properties);
 }
 
 static void
 tp_chat_dbus_properties_changed_cb (TpProxy *proxy,
-                                   const gchar *interface_name,
-                                   GHashTable *changed,
-                                   const gchar **invalidated,
-                                   gpointer user_data,
-                                   GObject *chat)
+    const gchar *interface_name,
+    GHashTable *changed,
+    const gchar **invalidated,
+    gpointer user_data,
+    GObject *chat)
 {
-       EmpathyTpChat *self = EMPATHY_TP_CHAT (chat);
+  EmpathyTpChat *self = EMPATHY_TP_CHAT (chat);
 
-       if (!tp_strdiff (interface_name, TP_IFACE_CHANNEL_INTERFACE_SUBJECT)) {
-               update_subject (self, changed);
-       }
+  if (!tp_strdiff (interface_name, TP_IFACE_CHANNEL_INTERFACE_SUBJECT))
+    update_subject (self, changed);
 
-       if (!tp_strdiff (interface_name, TP_IFACE_CHANNEL_INTERFACE_ROOM_CONFIG)) {
-               update_title (self, changed);
-       }
+  if (!tp_strdiff (interface_name, TP_IFACE_CHANNEL_INTERFACE_ROOM_CONFIG))
+    update_title (self, changed);
 }
 
 void
 empathy_tp_chat_set_subject (EmpathyTpChat *self,
-                            const gchar   *subject)
+    const gchar *subject)
 {
-       tp_cli_channel_interface_subject_call_set_subject (TP_CHANNEL (self), -1,
-                                                          subject,
-                                                          tp_chat_async_cb,
-                                                          "while setting subject", NULL,
-                                                          G_OBJECT (self));
+  tp_cli_channel_interface_subject_call_set_subject (TP_CHANNEL (self), -1,
+      subject, tp_chat_async_cb, "while setting subject", NULL,
+      G_OBJECT (self));
 }
 
 const gchar *
 empathy_tp_chat_get_title (EmpathyTpChat *self)
 {
-       EmpathyTpChatPrivate *priv = self->priv;
-
-       return priv->title;
+  return self->priv->title;
 }
 
 gboolean
 empathy_tp_chat_supports_subject (EmpathyTpChat *self)
 {
-       EmpathyTpChatPrivate *priv = self->priv;
-
-       return priv->supports_subject;
+  return self->priv->supports_subject;
 }
 
 gboolean
 empathy_tp_chat_can_set_subject (EmpathyTpChat *self)
 {
-       EmpathyTpChatPrivate *priv = self->priv;
-
-       return priv->can_set_subject;
+  return self->priv->can_set_subject;
 }
 
 const gchar *
 empathy_tp_chat_get_subject (EmpathyTpChat *self)
 {
-       EmpathyTpChatPrivate *priv = self->priv;
-
-       return priv->subject;
+  return self->priv->subject;
 }
 
 const gchar *
 empathy_tp_chat_get_subject_actor (EmpathyTpChat *self)
 {
-       EmpathyTpChatPrivate *priv = self->priv;
-
-       return priv->subject_actor;
+  return self->priv->subject_actor;
 }
 
 static void
 tp_chat_dispose (GObject *object)
 {
-       EmpathyTpChat *self = EMPATHY_TP_CHAT (object);
+  EmpathyTpChat *self = EMPATHY_TP_CHAT (object);
 
-       tp_clear_object (&self->priv->account);
-       tp_clear_object (&self->priv->remote_contact);
-       tp_clear_object (&self->priv->user);
+  tp_clear_object (&self->priv->account);
+  tp_clear_object (&self->priv->remote_contact);
+  tp_clear_object (&self->priv->user);
 
-       g_queue_foreach (self->priv->messages_queue, (GFunc) g_object_unref, NULL);
-       g_queue_clear (self->priv->messages_queue);
+  g_queue_foreach (self->priv->pending_messages_queue,
+    (GFunc) g_object_unref, NULL);
+  g_queue_clear (self->priv->pending_messages_queue);
 
-       g_queue_foreach (self->priv->pending_messages_queue,
-               (GFunc) g_object_unref, NULL);
-       g_queue_clear (self->priv->pending_messages_queue);
+  tp_clear_object (&self->priv->ready_result);
 
-       tp_clear_object (&self->priv->ready_result);
-
-       if (G_OBJECT_CLASS (empathy_tp_chat_parent_class)->dispose)
-               G_OBJECT_CLASS (empathy_tp_chat_parent_class)->dispose (object);
+  if (G_OBJECT_CLASS (empathy_tp_chat_parent_class)->dispose)
+    G_OBJECT_CLASS (empathy_tp_chat_parent_class)->dispose (object);
 }
 
 static void
 tp_chat_finalize (GObject *object)
 {
-       EmpathyTpChat *self = (EmpathyTpChat *) object;
+  EmpathyTpChat *self = (EmpathyTpChat *) object;
 
-       DEBUG ("Finalize: %p", object);
+  DEBUG ("Finalize: %p", object);
 
-       g_queue_free (self->priv->messages_queue);
-       g_queue_free (self->priv->pending_messages_queue);
-       g_hash_table_unref (self->priv->messages_being_sent);
+  g_queue_free (self->priv->pending_messages_queue);
+  g_hash_table_unref (self->priv->messages_being_sent);
 
-       g_free (self->priv->title);
-       g_free (self->priv->subject);
-       g_free (self->priv->subject_actor);
+  g_free (self->priv->title);
+  g_free (self->priv->subject);
+  g_free (self->priv->subject_actor);
 
-       G_OBJECT_CLASS (empathy_tp_chat_parent_class)->finalize (object);
+  G_OBJECT_CLASS (empathy_tp_chat_parent_class)->finalize (object);
 }
 
 static void
 check_almost_ready (EmpathyTpChat *self)
 {
-       TpChannel *channel = (TpChannel *) self;
+  TpChannel *channel = (TpChannel *) self;
 
-       if (self->priv->ready_result == NULL)
-               return;
+  if (self->priv->ready_result == NULL)
+    return;
 
-       if (self->priv->user == NULL)
-               return;
+  if (self->priv->user == NULL)
+    return;
 
-       /* We need either the members (room) or the remote contact (private chat).
-        * If the chat is protected by a password we can't get these information so
-        * consider the chat as ready so it can be presented to the user. */
-       if (!tp_channel_password_needed (channel) && self->priv->members == NULL &&
-           self->priv->remote_contact == NULL)
-               return;
+  /* We need either the members (room) or the remote contact (private chat).
+   * If the chat is protected by a password we can't get these information so
+   * consider the chat as ready so it can be presented to the user. */
+  if (!tp_channel_password_needed (channel) && self->priv->members == NULL &&
+      self->priv->remote_contact == NULL)
+    return;
 
-       g_assert (tp_proxy_is_prepared (self,
-               TP_TEXT_CHANNEL_FEATURE_INCOMING_MESSAGES));
+  g_assert (tp_proxy_is_prepared (self,
+    TP_TEXT_CHANNEL_FEATURE_INCOMING_MESSAGES));
 
-       tp_g_signal_connect_object (self, "message-received",
-               G_CALLBACK (message_received_cb), self, 0);
-       tp_g_signal_connect_object (self, "pending-message-removed",
-               G_CALLBACK (pending_message_removed_cb), self, 0);
+  tp_g_signal_connect_object (self, "message-received",
+    G_CALLBACK (message_received_cb), self, 0);
+  tp_g_signal_connect_object (self, "pending-message-removed",
+    G_CALLBACK (pending_message_removed_cb), self, 0);
 
-       list_pending_messages (self);
+  list_pending_messages (self);
 
-       tp_g_signal_connect_object (self, "message-sent",
-               G_CALLBACK (message_sent_cb), self, 0);
+  tp_g_signal_connect_object (self, "message-sent",
+    G_CALLBACK (message_sent_cb), self, 0);
 
-       tp_g_signal_connect_object (self, "chat-state-changed",
-               G_CALLBACK (tp_chat_state_changed_cb), self, 0);
+  /* TODO: use the TpContact signal once it's released
+   * (fdo #49215) */
+  tp_g_signal_connect_object (self, "chat-state-changed",
+    G_CALLBACK (tp_chat_state_changed_cb), self, 0);
 
-       check_ready (self);
+  check_ready (self);
 }
 
 static void
-tp_chat_got_added_contacts_cb (TpConnection            *connection,
-                              guint                    n_contacts,
-                              EmpathyContact * const * contacts,
-                              guint                    n_failed,
-                              const TpHandle          *failed,
-                              const GError            *error,
-                              gpointer                 user_data,
-                              GObject                 *chat)
-{
-       EmpathyTpChat *self = (EmpathyTpChat *) chat;
-       guint i;
-       const TpIntSet *members;
-       TpHandle handle;
-       EmpathyContact *contact;
-
-       if (error) {
-               DEBUG ("Error: %s", error->message);
-               return;
-       }
-
-       members = tp_channel_group_get_members ((TpChannel *) self);
-       for (i = 0; i < n_contacts; i++) {
-               contact = contacts[i];
-               handle = empathy_contact_get_handle (contact);
-
-               /* Make sure the contact is still member */
-               if (tp_intset_is_member (members, handle)) {
-                       self->priv->members = g_list_prepend (self->priv->members,
-                               g_object_ref (contact));
-                       g_signal_emit_by_name (chat, "members-changed",
-                                              contact, NULL, 0, NULL, TRUE);
-               }
-       }
-
-       check_almost_ready (EMPATHY_TP_CHAT (chat));
-}
-
-static EmpathyContact *
-chat_lookup_contact (EmpathyTpChat *self,
-                    TpHandle       handle,
-                    gboolean       remove_)
+add_members_contact (EmpathyTpChat *self,
+    GPtrArray *contacts)
 {
-       GList *l;
+  guint i;
 
-       for (l = self->priv->members; l; l = l->next) {
-               EmpathyContact *c = l->data;
+  for (i = 0; i < contacts->len; i++)
+    {
+      EmpathyContact *contact;
 
-               if (empathy_contact_get_handle (c) != handle) {
-                       continue;
-               }
+      contact = empathy_contact_dup_from_tp_contact (g_ptr_array_index (
+            contacts, i));
 
-               if (remove_) {
-                       /* Caller takes the reference. */
-                       self->priv->members = g_list_delete_link (self->priv->members, l);
-               } else {
-                       g_object_ref (c);
-               }
+      self->priv->members = g_list_prepend (self->priv->members, contact);
 
-               return c;
-       }
+      g_signal_emit (self, signals[SIG_MEMBERS_CHANGED], 0,
+                 contact, NULL, 0, NULL, TRUE);
+    }
 
-       return NULL;
+  check_almost_ready (self);
 }
 
-typedef struct
-{
-    TpHandle old_handle;
-    guint reason;
-    gchar *message;
-} ContactRenameData;
-
-static ContactRenameData *
-contact_rename_data_new (TpHandle handle,
-                        guint reason,
-                        const gchar* message)
+static void
+remove_member (EmpathyTpChat *self,
+    EmpathyContact *contact)
 {
-       ContactRenameData *data = g_new (ContactRenameData, 1);
-       data->old_handle = handle;
-       data->reason = reason;
-       data->message = g_strdup (message);
+  GList *l;
 
-       return data;
-}
+  for (l = self->priv->members; l; l = l->next)
+    {
+      EmpathyContact *c = l->data;
 
-static void
-contact_rename_data_free (ContactRenameData* data)
-{
-       g_free (data->message);
-       g_free (data);
+      if (contact == c)
+        {
+          self->priv->members = g_list_delete_link (self->priv->members, l);
+          g_object_unref (c);
+          break;
+        }
+    }
 }
 
 static void
-tp_chat_got_renamed_contacts_cb (TpConnection            *connection,
-                                 guint                    n_contacts,
-                                 EmpathyContact * const * contacts,
-                                 guint                    n_failed,
-                                 const TpHandle          *failed,
-                                 const GError            *error,
-                                 gpointer                 user_data,
-                                 GObject                 *chat)
+contact_renamed (EmpathyTpChat *self,
+    TpContact *old_contact,
+    TpContact *new_contact,
+    TpChannelGroupChangeReason reason,
+    const gchar *message)
 {
-       EmpathyTpChat *self = (EmpathyTpChat *) chat;
-       const TpIntSet *members;
-       TpHandle handle;
-       EmpathyContact *old = NULL, *new = NULL;
-       ContactRenameData *rename_data = (ContactRenameData *) user_data;
-
-       if (error) {
-               DEBUG ("Error: %s", error->message);
-               return;
-       }
-
-       /* renamed members can only be delivered one at a time */
-       g_warn_if_fail (n_contacts == 1);
-
-       new = contacts[0];
-
-       members = tp_channel_group_get_members ((TpChannel *) self);
-       handle = empathy_contact_get_handle (new);
-
-       old = chat_lookup_contact (self, rename_data->old_handle, TRUE);
-
-       /* Make sure the contact is still member */
-       if (tp_intset_is_member (members, handle)) {
-               self->priv->members = g_list_prepend (self->priv->members,
-                       g_object_ref (new));
-
-               if (old != NULL) {
-                       g_signal_emit_by_name (self, "member-renamed",
-                                              old, new, rename_data->reason,
-                                              rename_data->message);
-                       g_object_unref (old);
-               }
-       }
-
-       if (self->priv->user == old) {
-               /* We change our nick */
-               tp_clear_object (&self->priv->user);
-               self->priv->user = g_object_ref (new);
-               g_object_notify (chat, "self-contact");
-       }
-
-       check_almost_ready (self);
-}
+  EmpathyContact *old = NULL, *new = NULL;
+
+  old = empathy_contact_dup_from_tp_contact (old_contact);
+  new = empathy_contact_dup_from_tp_contact (new_contact);
+
+  self->priv->members = g_list_prepend (self->priv->members, new);
 
+  if (old != NULL)
+    {
+      remove_member (self, old);
+
+      g_signal_emit (self, signals[SIG_MEMBER_RENAMED], 0, old, new,
+          reason, message);
+      g_object_unref (old);
+    }
+
+  if (self->priv->user == old)
+    {
+      /* We change our nick */
+      tp_clear_object (&self->priv->user);
+      self->priv->user = g_object_ref (new);
+      g_object_notify (G_OBJECT (self), "self-contact");
+    }
+
+  check_almost_ready (self);
+}
 
 static void
-tp_chat_group_members_changed_cb (TpChannel     *channel,
-                                 gchar         *message,
-                                 GArray        *added,
-                                 GArray        *removed,
-                                 GArray        *local_pending,
-                                 GArray        *remote_pending,
-                                 guint          actor,
-                                 guint          reason,
-                                 EmpathyTpChat *self)
-{
-       EmpathyContact *contact;
-       EmpathyContact *actor_contact = NULL;
-       guint i;
-       ContactRenameData *rename_data;
-       TpHandle old_handle;
-       TpConnection *connection = tp_channel_borrow_connection (
-               (TpChannel *) self);
-
-       /* Contact renamed */
-       if (reason == TP_CHANNEL_GROUP_CHANGE_REASON_RENAMED) {
-               /* there can only be a single 'added' and a single 'removed' handle */
-               if (removed->len != 1 || added->len != 1) {
-                       g_warning ("RENAMED with %u added, %u removed (expected 1, 1)",
-                               added->len, removed->len);
-                       return;
-               }
-
-               old_handle = g_array_index (removed, guint, 0);
-
-               rename_data = contact_rename_data_new (old_handle, reason, message);
-               empathy_tp_contact_factory_get_from_handles (connection,
-                       added->len, (TpHandle *) added->data,
-                       tp_chat_got_renamed_contacts_cb,
-                       rename_data, (GDestroyNotify) contact_rename_data_free,
-                       G_OBJECT (self));
-               return;
-       }
-
-       if (actor != 0) {
-               actor_contact = chat_lookup_contact (self, actor, FALSE);
-               if (actor_contact == NULL) {
-                       /* FIXME: handle this a tad more gracefully: perhaps
-                        * the actor was a server op. We could use the
-                        * contact-ids detail of MembersChangedDetailed.
-                        */
-                       DEBUG ("actor %u not a channel member", actor);
-               }
-       }
-
-       /* Remove contacts that are not members anymore */
-       for (i = 0; i < removed->len; i++) {
-               contact = chat_lookup_contact (self,
-                       g_array_index (removed, TpHandle, i), TRUE);
-
-               if (contact != NULL) {
-                       g_signal_emit_by_name (self, "members-changed", contact,
-                                              actor_contact, reason, message,
-                                              FALSE);
-                       g_object_unref (contact);
-               }
-       }
-
-       /* Request added contacts */
-       if (added->len > 0) {
-               empathy_tp_contact_factory_get_from_handles (connection,
-                       added->len, (TpHandle *) added->data,
-                       tp_chat_got_added_contacts_cb, NULL, NULL,
-                       G_OBJECT (self));
-       }
-
-       if (actor_contact != NULL) {
-               g_object_unref (actor_contact);
-       }
+tp_chat_group_contacts_changed_cb (TpChannel *channel,
+    GPtrArray *added,
+    GPtrArray *removed,
+    GPtrArray *local_pending,
+    GPtrArray *remote_pending,
+    TpContact *actor,
+    GHashTable *details,
+    EmpathyTpChat *self)
+{
+  EmpathyContact *actor_contact = NULL;
+  guint i;
+  TpChannelGroupChangeReason reason;
+  const gchar *message;
+
+  reason = tp_asv_get_uint32 (details, "change-reason", NULL);
+  message = tp_asv_get_string (details, "message");
+
+  /* Contact renamed */
+  if (reason == TP_CHANNEL_GROUP_CHANGE_REASON_RENAMED)
+    {
+      /* there can only be a single 'added' and a single 'removed' handle */
+      if (removed->len != 1 || added->len != 1)
+        {
+          g_warning ("RENAMED with %u added, %u removed (expected 1, 1)",
+            added->len, removed->len);
+          return;
+        }
+
+      contact_renamed (self, g_ptr_array_index (removed, 0),
+          g_ptr_array_index (added, 0), reason, message);
+      return;
+    }
+
+  if (actor != NULL)
+    {
+      actor_contact = empathy_contact_dup_from_tp_contact (actor);
+
+      if (actor_contact == NULL)
+        {
+          /* FIXME: handle this a tad more gracefully: perhaps
+           * the actor was a server op. We could use the
+           * contact-ids detail of MembersChangedDetailed.
+           */
+          DEBUG ("actor %s not a channel member",
+              tp_contact_get_identifier (actor));
+        }
+    }
+
+  /* Remove contacts that are not members anymore */
+  for (i = 0; i < removed->len; i++)
+    {
+      TpContact *tp_contact = g_ptr_array_index (removed, i);
+      EmpathyContact *contact;
+
+      contact = empathy_contact_dup_from_tp_contact (tp_contact);
+
+      if (contact != NULL)
+        {
+          remove_member (self, contact);
+
+          g_signal_emit (self, signals[SIG_MEMBERS_CHANGED], 0,
+                     contact, actor_contact, reason, message, FALSE);
+          g_object_unref (contact);
+        }
+    }
+
+  if (added->len > 0)
+    {
+      add_members_contact (self, added);
+    }
+
+  if (actor_contact != NULL)
+    g_object_unref (actor_contact);
 }
 
 static void
-tp_chat_got_remote_contact_cb (TpConnection            *connection,
-                              EmpathyContact          *contact,
-                              const GError            *error,
-                              gpointer                 user_data,
-                              GObject                 *chat)
+create_remote_contact (EmpathyTpChat *self,
+    TpContact *contact)
 {
-       EmpathyTpChat *self = (EmpathyTpChat *) chat;
-
-       if (error) {
-               DEBUG ("Error: %s", error->message);
-               empathy_tp_chat_leave (self, "");
-               return;
-       }
+  self->priv->remote_contact = empathy_contact_dup_from_tp_contact (contact);
+  g_object_notify (G_OBJECT (self), "remote-contact");
 
-       self->priv->remote_contact = g_object_ref (contact);
-       g_object_notify (chat, "remote-contact");
-
-       check_almost_ready (self);
+  check_almost_ready (self);
 }
 
 static void
-tp_chat_got_self_contact_cb (TpConnection            *connection,
-                            EmpathyContact          *contact,
-                            const GError            *error,
-                            gpointer                 user_data,
-                            GObject                 *chat)
+create_self_contact (EmpathyTpChat *self,
+    TpContact *contact)
 {
-       EmpathyTpChat *self = (EmpathyTpChat *) chat;
-
-       if (error) {
-               DEBUG ("Error: %s", error->message);
-               empathy_tp_chat_leave (self, "");
-               return;
-       }
-
-       self->priv->user = g_object_ref (contact);
-       empathy_contact_set_is_user (self->priv->user, TRUE);
-       g_object_notify (chat, "self-contact");
-       check_almost_ready (self);
+  self->priv->user = empathy_contact_dup_from_tp_contact (contact);
+  empathy_contact_set_is_user (self->priv->user, TRUE);
+  g_object_notify (G_OBJECT (self), "self-contact");
+  check_almost_ready (self);
 }
 
 static void
-tp_chat_get_property (GObject    *object,
-                     guint       param_id,
-                     GValue     *value,
-                     GParamSpec *pspec)
-{
-       EmpathyTpChat *self = EMPATHY_TP_CHAT (object);
-
-       switch (param_id) {
-       case PROP_ACCOUNT:
-               g_value_set_object (value, self->priv->account);
-               break;
-       case PROP_SELF_CONTACT:
-               g_value_set_object (value, self->priv->user);
-               break;
-       case PROP_REMOTE_CONTACT:
-               g_value_set_object (value, self->priv->remote_contact);
-               break;
-       case PROP_N_MESSAGES_SENDING:
-               g_value_set_uint (value,
-                       g_hash_table_size (self->priv->messages_being_sent));
-               break;
-       case PROP_TITLE:
-               g_value_set_string (value,
-                       empathy_tp_chat_get_title (self));
-               break;
-       case PROP_SUBJECT:
-               g_value_set_string (value,
-                       empathy_tp_chat_get_subject (self));
-               break;
-       default:
-               G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
-               break;
-       };
+tp_chat_get_property (GObject *object,
+    guint param_id,
+    GValue *value,
+    GParamSpec *pspec)
+{
+  EmpathyTpChat *self = EMPATHY_TP_CHAT (object);
+
+  switch (param_id)
+    {
+      case PROP_ACCOUNT:
+        g_value_set_object (value, self->priv->account);
+        break;
+      case PROP_SELF_CONTACT:
+        g_value_set_object (value, self->priv->user);
+        break;
+      case PROP_REMOTE_CONTACT:
+        g_value_set_object (value, self->priv->remote_contact);
+        break;
+      case PROP_N_MESSAGES_SENDING:
+        g_value_set_uint (value,
+          g_hash_table_size (self->priv->messages_being_sent));
+        break;
+      case PROP_TITLE:
+        g_value_set_string (value,
+          empathy_tp_chat_get_title (self));
+        break;
+      case PROP_SUBJECT:
+        g_value_set_string (value,
+          empathy_tp_chat_get_subject (self));
+        break;
+      default:
+        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+        break;
+    };
 }
 
 static void
-tp_chat_set_property (GObject      *object,
-                     guint         param_id,
-                     const GValue *value,
-                     GParamSpec   *pspec)
+tp_chat_set_property (GObject *object,
+    guint param_id,
+    const GValue *value,
+    GParamSpec   *pspec)
 {
-       EmpathyTpChat *self = EMPATHY_TP_CHAT (object);
-
-       switch (param_id) {
-       case PROP_ACCOUNT:
-               self->priv->account = g_value_dup_object (value);
-               break;
-       default:
-               G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
-               break;
-       };
+  EmpathyTpChat *self = EMPATHY_TP_CHAT (object);
+
+  switch (param_id)
+    {
+      case PROP_ACCOUNT:
+        self->priv->account = g_value_dup_object (value);
+        break;
+      default:
+        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+        break;
+    };
 }
 
 enum {
-       FEAT_READY,
-       N_FEAT
+  FEAT_READY,
+  N_FEAT
 };
 
 static const TpProxyFeature *
 tp_chat_list_features (TpProxyClass *cls G_GNUC_UNUSED)
 {
-       static TpProxyFeature features[N_FEAT + 1] = { { 0 } };
+  static TpProxyFeature features[N_FEAT + 1] = { { 0 } };
   static GQuark need[2] = {0, 0};
 
-       if (G_LIKELY (features[0].name != 0))
-               return features;
+  if (G_LIKELY (features[0].name != 0))
+    return features;
 
-       features[FEAT_READY].name = EMPATHY_TP_CHAT_FEATURE_READY;
-       need[0] = TP_TEXT_CHANNEL_FEATURE_INCOMING_MESSAGES;
-       features[FEAT_READY].depends_on = need;
-       features[FEAT_READY].prepare_async =
-               tp_chat_prepare_ready_async;
+  features[FEAT_READY].name = EMPATHY_TP_CHAT_FEATURE_READY;
+  need[0] = TP_TEXT_CHANNEL_FEATURE_INCOMING_MESSAGES;
+  features[FEAT_READY].depends_on = need;
+  features[FEAT_READY].prepare_async =
+    tp_chat_prepare_ready_async;
 
-       /* assert that the terminator at the end is there */
-       g_assert (features[N_FEAT].name == 0);
+  /* assert that the terminator at the end is there */
+  g_assert (features[N_FEAT].name == 0);
 
-       return features;
+  return features;
 }
 
 static void
 empathy_tp_chat_class_init (EmpathyTpChatClass *klass)
 {
-       GObjectClass *object_class = G_OBJECT_CLASS (klass);
-       TpProxyClass *proxy_class = TP_PROXY_CLASS (klass);
-
-       object_class->dispose = tp_chat_dispose;
-       object_class->finalize = tp_chat_finalize;
-       object_class->get_property = tp_chat_get_property;
-       object_class->set_property = tp_chat_set_property;
-
-       proxy_class->list_features = tp_chat_list_features;
-
-       g_object_class_install_property (object_class,
-                                        PROP_ACCOUNT,
-                                        g_param_spec_object ("account",
-                                                             "TpAccount",
-                                                             "the account associated with the chat",
-                                                             TP_TYPE_ACCOUNT,
-                                                             G_PARAM_READWRITE |
-                                                             G_PARAM_CONSTRUCT_ONLY |
-                                                             G_PARAM_STATIC_STRINGS));
-
-       /**
-        * EmpathyTpChat:self-contact:
-        *
-        * Not to be confused with TpChannel:group-self-contact.
-        */
-       g_object_class_install_property (object_class,
-                                        PROP_SELF_CONTACT,
-                                        g_param_spec_object ("self-contact",
-                                                             "The local contact",
-                                                             "The EmpathyContact for the local user on this channel",
-                                                             EMPATHY_TYPE_CONTACT,
-                                                             G_PARAM_READABLE));
-
-       g_object_class_install_property (object_class,
-                                        PROP_REMOTE_CONTACT,
-                                        g_param_spec_object ("remote-contact",
-                                                             "The remote contact",
-                                                             "The remote contact if there is no group iface on the channel",
-                                                             EMPATHY_TYPE_CONTACT,
-                                                             G_PARAM_READABLE));
-
-       g_object_class_install_property (object_class,
-                                        PROP_N_MESSAGES_SENDING,
-                                        g_param_spec_uint ("n-messages-sending",
-                                                           "Num Messages Sending",
-                                                           "The number of messages being sent",
-                                                           0, G_MAXUINT, 0,
-                                                           G_PARAM_READABLE));
-
-       g_object_class_install_property (object_class,
-                                        PROP_TITLE,
-                                        g_param_spec_string ("title",
-                                                             "Title",
-                                                             "A human-readable name for the room, if any",
-                                                             NULL,
-                                                             G_PARAM_READABLE |
-                                                             G_PARAM_STATIC_STRINGS));
-
-       g_object_class_install_property (object_class,
-                                        PROP_SUBJECT,
-                                        g_param_spec_string ("subject",
-                                                             "Subject",
-                                                             "The room's current subject, if any",
-                                                             NULL,
-                                                             G_PARAM_READABLE |
-                                                             G_PARAM_STATIC_STRINGS));
-
-       /* Signals */
-       signals[MESSAGE_RECEIVED] =
-               g_signal_new ("message-received-empathy",
-                             G_TYPE_FROM_CLASS (klass),
-                             G_SIGNAL_RUN_LAST,
-                             0,
-                             NULL, NULL,
-                             g_cclosure_marshal_generic,
-                             G_TYPE_NONE,
-                             1, EMPATHY_TYPE_MESSAGE);
-
-       signals[SEND_ERROR] =
-               g_signal_new ("send-error",
-                             G_TYPE_FROM_CLASS (klass),
-                             G_SIGNAL_RUN_LAST,
-                             0,
-                             NULL, NULL,
-                             g_cclosure_marshal_generic,
-                             G_TYPE_NONE,
-                             3, G_TYPE_STRING, G_TYPE_UINT, G_TYPE_STRING);
-
-       signals[CHAT_STATE_CHANGED] =
-               g_signal_new ("chat-state-changed-empathy",
-                             G_TYPE_FROM_CLASS (klass),
-                             G_SIGNAL_RUN_LAST,
-                             0,
-                             NULL, NULL,
-                             g_cclosure_marshal_generic,
-                             G_TYPE_NONE,
-                             2, EMPATHY_TYPE_CONTACT, G_TYPE_UINT);
-
-       signals[MESSAGE_ACKNOWLEDGED] =
-               g_signal_new ("message-acknowledged",
-                             G_TYPE_FROM_CLASS (klass),
-                             G_SIGNAL_RUN_LAST,
-                             0,
-                             NULL, NULL,
-                             g_cclosure_marshal_generic,
-                             G_TYPE_NONE,
-                             1, EMPATHY_TYPE_MESSAGE);
-
-       g_type_class_add_private (object_class, sizeof (EmpathyTpChatPrivate));
+  GObjectClass *object_class = G_OBJECT_CLASS (klass);
+  TpProxyClass *proxy_class = TP_PROXY_CLASS (klass);
+
+  object_class->dispose = tp_chat_dispose;
+  object_class->finalize = tp_chat_finalize;
+  object_class->get_property = tp_chat_get_property;
+  object_class->set_property = tp_chat_set_property;
+
+  proxy_class->list_features = tp_chat_list_features;
+
+  g_object_class_install_property (object_class, PROP_ACCOUNT,
+      g_param_spec_object ("account", "TpAccount",
+        "the account associated with the chat",
+        TP_TYPE_ACCOUNT,
+        G_PARAM_READWRITE |
+        G_PARAM_CONSTRUCT_ONLY |
+        G_PARAM_STATIC_STRINGS));
+
+  /**
+   * EmpathyTpChat:self-contact:
+   *
+   * Not to be confused with TpChannel:group-self-contact.
+   */
+  g_object_class_install_property (object_class, PROP_SELF_CONTACT,
+      g_param_spec_object ("self-contact", "The local contact",
+        "The EmpathyContact for the local user on this channel",
+        EMPATHY_TYPE_CONTACT,
+        G_PARAM_READABLE));
+
+  g_object_class_install_property (object_class, PROP_REMOTE_CONTACT,
+      g_param_spec_object ("remote-contact", "The remote contact",
+        "The remote contact if there is no group iface on the channel",
+        EMPATHY_TYPE_CONTACT,
+        G_PARAM_READABLE));
+
+  g_object_class_install_property (object_class, PROP_N_MESSAGES_SENDING,
+      g_param_spec_uint ("n-messages-sending", "Num Messages Sending",
+        "The number of messages being sent",
+        0, G_MAXUINT, 0,
+        G_PARAM_READABLE));
+
+  g_object_class_install_property (object_class, PROP_TITLE,
+      g_param_spec_string ("title", "Title",
+        "A human-readable name for the room, if any",
+        NULL,
+        G_PARAM_READABLE |
+        G_PARAM_STATIC_STRINGS));
+
+  g_object_class_install_property (object_class, PROP_SUBJECT,
+      g_param_spec_string ("subject", "Subject",
+        "The room's current subject, if any",
+        NULL,
+        G_PARAM_READABLE |
+        G_PARAM_STATIC_STRINGS));
+
+  /* Signals */
+  signals[MESSAGE_RECEIVED] = g_signal_new ("message-received-empathy",
+      G_TYPE_FROM_CLASS (klass),
+      G_SIGNAL_RUN_LAST,
+      0,
+      NULL, NULL,
+      g_cclosure_marshal_generic,
+      G_TYPE_NONE,
+      1, EMPATHY_TYPE_MESSAGE);
+
+  signals[SEND_ERROR] = g_signal_new ("send-error",
+      G_TYPE_FROM_CLASS (klass),
+      G_SIGNAL_RUN_LAST,
+      0,
+      NULL, NULL,
+      g_cclosure_marshal_generic,
+      G_TYPE_NONE,
+      3, G_TYPE_STRING, G_TYPE_UINT, G_TYPE_STRING);
+
+  signals[CHAT_STATE_CHANGED] = g_signal_new ("chat-state-changed-empathy",
+      G_TYPE_FROM_CLASS (klass),
+      G_SIGNAL_RUN_LAST,
+      0,
+      NULL, NULL,
+      g_cclosure_marshal_generic,
+      G_TYPE_NONE,
+      2, EMPATHY_TYPE_CONTACT, G_TYPE_UINT);
+
+  signals[MESSAGE_ACKNOWLEDGED] = g_signal_new ("message-acknowledged",
+      G_TYPE_FROM_CLASS (klass),
+      G_SIGNAL_RUN_LAST,
+      0,
+      NULL, NULL,
+      g_cclosure_marshal_generic,
+      G_TYPE_NONE,
+      1, EMPATHY_TYPE_MESSAGE);
+
+  signals[SIG_MEMBER_RENAMED] = g_signal_new ("member-renamed",
+      G_OBJECT_CLASS_TYPE (klass),
+      G_SIGNAL_RUN_LAST,
+      0, NULL, NULL, NULL,
+      G_TYPE_NONE,
+      4, EMPATHY_TYPE_CONTACT, EMPATHY_TYPE_CONTACT,
+      G_TYPE_UINT, G_TYPE_STRING);
+
+  signals[SIG_MEMBERS_CHANGED] = g_signal_new ("members-changed",
+      G_OBJECT_CLASS_TYPE (klass),
+      G_SIGNAL_RUN_LAST,
+      0, NULL, NULL, NULL,
+      G_TYPE_NONE,
+      5, EMPATHY_TYPE_CONTACT, EMPATHY_TYPE_CONTACT,
+      G_TYPE_UINT, G_TYPE_STRING, G_TYPE_BOOLEAN);
+
+  g_type_class_add_private (object_class, sizeof (EmpathyTpChatPrivate));
 }
 
 static void
 empathy_tp_chat_init (EmpathyTpChat *self)
 {
-       self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self,
-               EMPATHY_TYPE_TP_CHAT, EmpathyTpChatPrivate);
-
-       self->priv->messages_queue = g_queue_new ();
-       self->priv->pending_messages_queue = g_queue_new ();
-       self->priv->messages_being_sent = g_hash_table_new_full (
-               g_str_hash, g_str_equal, g_free, NULL);
-}
+  self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, EMPATHY_TYPE_TP_CHAT,
+      EmpathyTpChatPrivate);
 
-static void
-tp_chat_iface_init (EmpathyContactListIface *iface)
-{
-       iface->add         = tp_chat_add;
-       iface->remove      = tp_chat_remove;
-       iface->get_members = tp_chat_get_members;
+  self->priv->pending_messages_queue = g_queue_new ();
+  self->priv->messages_being_sent = g_hash_table_new_full (
+      g_str_hash, g_str_equal, g_free, NULL);
 }
 
 EmpathyTpChat *
-empathy_tp_chat_new (
-                    TpSimpleClientFactory *factory,
-                    TpAccount *account,
-                    TpConnection *conn,
-                    const gchar *object_path,
-                    const GHashTable *immutable_properties)
+empathy_tp_chat_new (TpSimpleClientFactory *factory,
+    TpAccount *account,
+    TpConnection *conn,
+    const gchar *object_path,
+    const GHashTable *immutable_properties)
 {
-       TpProxy *conn_proxy = (TpProxy *) conn;
-
-       g_return_val_if_fail (TP_IS_ACCOUNT (account), NULL);
-       g_return_val_if_fail (TP_IS_CONNECTION (conn), NULL);
-       g_return_val_if_fail (immutable_properties != NULL, NULL);
-
-       return g_object_new (EMPATHY_TYPE_TP_CHAT,
-                            "factory", factory,
-                            "account", account,
-                            "connection", conn,
-                            "dbus-daemon", conn_proxy->dbus_daemon,
-                            "bus-name", conn_proxy->bus_name,
-                            "object-path", object_path,
-                            "channel-properties", immutable_properties,
-                            NULL);
+  TpProxy *conn_proxy = (TpProxy *) conn;
+
+  g_return_val_if_fail (TP_IS_ACCOUNT (account), NULL);
+  g_return_val_if_fail (TP_IS_CONNECTION (conn), NULL);
+  g_return_val_if_fail (immutable_properties != NULL, NULL);
+
+  return g_object_new (EMPATHY_TYPE_TP_CHAT,
+      "factory", factory,
+       "account", account,
+       "connection", conn,
+       "dbus-daemon", conn_proxy->dbus_daemon,
+       "bus-name", conn_proxy->bus_name,
+       "object-path", object_path,
+       "channel-properties", immutable_properties,
+       NULL);
 }
 
 const gchar *
 empathy_tp_chat_get_id (EmpathyTpChat *self)
 {
-       const gchar *id;
+  const gchar *id;
 
-       g_return_val_if_fail (EMPATHY_IS_TP_CHAT (self), NULL);
+  g_return_val_if_fail (EMPATHY_IS_TP_CHAT (self), NULL);
 
-       id = tp_channel_get_identifier ((TpChannel *) self);
-       if (!EMP_STR_EMPTY (id))
-               return id;
-       else if (self->priv->remote_contact)
-               return empathy_contact_get_id (self->priv->remote_contact);
-       else
-               return NULL;
+  id = tp_channel_get_identifier ((TpChannel *) self);
+  if (!EMP_STR_EMPTY (id))
+    return id;
+  else if (self->priv->remote_contact)
+    return empathy_contact_get_id (self->priv->remote_contact);
+  else
+    return NULL;
 
 }
 
 EmpathyContact *
 empathy_tp_chat_get_remote_contact (EmpathyTpChat *self)
 {
-       g_return_val_if_fail (EMPATHY_IS_TP_CHAT (self), NULL);
+  g_return_val_if_fail (EMPATHY_IS_TP_CHAT (self), NULL);
 
-       return self->priv->remote_contact;
+  return self->priv->remote_contact;
 }
 
 TpAccount *
 empathy_tp_chat_get_account (EmpathyTpChat *self)
 {
-       g_return_val_if_fail (EMPATHY_IS_TP_CHAT (self), NULL);
+  g_return_val_if_fail (EMPATHY_IS_TP_CHAT (self), NULL);
 
-       return self->priv->account;
+  return self->priv->account;
 }
 
 void
 empathy_tp_chat_send (EmpathyTpChat *self,
-                     TpMessage *message)
+          TpMessage *message)
 {
-       gchar *message_body;
+  gchar *message_body;
 
-       g_return_if_fail (EMPATHY_IS_TP_CHAT (self));
-       g_return_if_fail (TP_IS_CLIENT_MESSAGE (message));
+  g_return_if_fail (EMPATHY_IS_TP_CHAT (self));
+  g_return_if_fail (TP_IS_CLIENT_MESSAGE (message));
 
-       message_body = tp_message_to_text (message, NULL);
+  message_body = tp_message_to_text (message, NULL);
 
-       DEBUG ("Sending message: %s", message_body);
+  DEBUG ("Sending message: %s", message_body);
 
-       tp_text_channel_send_message_async (TP_TEXT_CHANNEL (self),
-               message, TP_MESSAGE_SENDING_FLAG_REPORT_DELIVERY,
-               message_send_cb, self);
+  tp_text_channel_send_message_async (TP_TEXT_CHANNEL (self),
+    message, TP_MESSAGE_SENDING_FLAG_REPORT_DELIVERY,
+    message_send_cb, self);
 
-       g_free (message_body);
+  g_free (message_body);
 }
 
 const GList *
 empathy_tp_chat_get_pending_messages (EmpathyTpChat *self)
 {
-       g_return_val_if_fail (EMPATHY_IS_TP_CHAT (self), NULL);
+  g_return_val_if_fail (EMPATHY_IS_TP_CHAT (self), NULL);
 
-       return self->priv->pending_messages_queue->head;
+  return self->priv->pending_messages_queue->head;
 }
 
 void
 empathy_tp_chat_acknowledge_message (EmpathyTpChat *self,
-                                    EmpathyMessage *message) {
-       TpMessage *tp_msg;
+    EmpathyMessage *message)
+{
+  TpMessage *tp_msg;
 
-       g_return_if_fail (EMPATHY_IS_TP_CHAT (self));
+  g_return_if_fail (EMPATHY_IS_TP_CHAT (self));
 
-       if (!empathy_message_is_incoming (message))
-               return;
+  if (!empathy_message_is_incoming (message))
+    return;
 
-       tp_msg = empathy_message_get_tp_message (message);
-       tp_text_channel_ack_message_async (TP_TEXT_CHANNEL (self),
-                                          tp_msg, NULL, NULL);
+  tp_msg = empathy_message_get_tp_message (message);
+  tp_text_channel_ack_message_async (TP_TEXT_CHANNEL (self),
+             tp_msg, NULL, NULL);
 }
 
 /**
@@ -1423,11 +1262,11 @@ empathy_tp_chat_acknowledge_message (EmpathyTpChat *self,
 gboolean
 empathy_tp_chat_can_add_contact (EmpathyTpChat *self)
 {
-       g_return_val_if_fail (EMPATHY_IS_TP_CHAT (self), FALSE);
+  g_return_val_if_fail (EMPATHY_IS_TP_CHAT (self), FALSE);
 
-       return self->priv->can_upgrade_to_muc ||
-               tp_proxy_has_interface_by_id (self,
-                       TP_IFACE_QUARK_CHANNEL_INTERFACE_GROUP);;
+  return self->priv->can_upgrade_to_muc ||
+    tp_proxy_has_interface_by_id (self,
+      TP_IFACE_QUARK_CHANNEL_INTERFACE_GROUP);;
 }
 
 static void
@@ -1435,197 +1274,168 @@ tp_channel_leave_async_cb (GObject *source_object,
         GAsyncResult *res,
         gpointer user_data)
 {
-       GError *error = NULL;
+  GError *error = NULL;
 
-       if (!tp_channel_leave_finish (TP_CHANNEL (source_object), res, &error)) {
-               DEBUG ("Could not leave channel properly: (%s); closing the channel",
-                       error->message);
-               g_error_free (error);
-       }
+  if (!tp_channel_leave_finish (TP_CHANNEL (source_object), res, &error))
+    {
+      DEBUG ("Could not leave channel properly: (%s); closing the channel",
+        error->message);
+      g_error_free (error);
+    }
 }
 
 void
 empathy_tp_chat_leave (EmpathyTpChat *self,
-               const gchar *message)
-{
-       TpChannel *channel = (TpChannel *) self;
-
-       DEBUG ("Leaving channel %s with message \"%s\"",
-               tp_channel_get_identifier (channel), message);
-
-       tp_channel_leave_async (channel, TP_CHANNEL_GROUP_CHANGE_REASON_NONE,
-               message, tp_channel_leave_async_cb, self);
-}
-
-static void
-add_members_cb (TpChannel *proxy,
-               const GError *error,
-               gpointer user_data,
-               GObject *weak_object)
+    const gchar *message)
 {
-       EmpathyTpChat *self = (EmpathyTpChat *) weak_object;
+  TpChannel *channel = (TpChannel *) self;
 
-       if (error != NULL) {
-               DEBUG ("Failed to join chat (%s): %s",
-                       tp_channel_get_identifier ((TpChannel *) self), error->message);
-       }
-}
+  DEBUG ("Leaving channel %s with message \"%s\"",
+    tp_channel_get_identifier (channel), message);
 
-void
-empathy_tp_chat_join (EmpathyTpChat *self)
-{
-       TpHandle self_handle;
-       GArray *members;
-
-       self_handle = tp_channel_group_get_self_handle ((TpChannel *) self);
-
-       members = g_array_sized_new (FALSE, FALSE, sizeof (TpHandle), 1);
-       g_array_append_val (members, self_handle);
-
-       tp_cli_channel_interface_group_call_add_members ((TpChannel *) self, -1, members,
-               "", add_members_cb, NULL, NULL, G_OBJECT (self));
-
-       g_array_unref (members);
+  tp_channel_leave_async (channel, TP_CHANNEL_GROUP_CHANGE_REASON_NONE,
+    message, tp_channel_leave_async_cb, self);
 }
 
 gboolean
 empathy_tp_chat_is_invited (EmpathyTpChat *self,
-                           TpHandle *inviter)
+    TpContact **inviter)
 {
-       TpHandle self_handle;
+  TpContact *self_contact;
+  TpChannel *channel = TP_CHANNEL (self);
 
-       if (!tp_proxy_has_interface (self, TP_IFACE_CHANNEL_INTERFACE_GROUP))
-               return FALSE;
+  if (!tp_proxy_has_interface (self, TP_IFACE_CHANNEL_INTERFACE_GROUP))
+    return FALSE;
 
-       self_handle = tp_channel_group_get_self_handle ((TpChannel *) self);
-       if (self_handle == 0)
-               return FALSE;
+  self_contact = tp_channel_group_get_self_contact (channel);
+  if (self_contact == NULL)
+    return FALSE;
 
-       return tp_channel_group_get_local_pending_info ((TpChannel *) self, self_handle,
-               inviter, NULL, NULL);
+  return tp_channel_group_get_local_pending_contact_info (channel,
+      self_contact, inviter, NULL, NULL);
 }
 
 TpChannelChatState
 empathy_tp_chat_get_chat_state (EmpathyTpChat *self,
-                           EmpathyContact *contact)
+    EmpathyContact *contact)
 {
-       return tp_channel_get_chat_state ((TpChannel *) self,
-               empathy_contact_get_handle (contact));
+  return tp_channel_get_chat_state ((TpChannel *) self,
+    empathy_contact_get_handle (contact));
 }
 
 EmpathyContact *
 empathy_tp_chat_get_self_contact (EmpathyTpChat *self)
 {
-       g_return_val_if_fail (EMPATHY_IS_TP_CHAT (self), NULL);
+  g_return_val_if_fail (EMPATHY_IS_TP_CHAT (self), NULL);
 
-       return self->priv->user;
+  return self->priv->user;
 }
 
 GQuark
 empathy_tp_chat_get_feature_ready (void)
 {
-       return g_quark_from_static_string ("empathy-tp-chat-feature-ready");
+  return g_quark_from_static_string ("empathy-tp-chat-feature-ready");
 }
 
 static void
 tp_chat_prepare_ready_async (TpProxy *proxy,
-       const TpProxyFeature *feature,
-       GAsyncReadyCallback callback,
-       gpointer user_data)
-{
-       EmpathyTpChat *self = (EmpathyTpChat *) proxy;
-       TpChannel *channel = (TpChannel *) proxy;
-       TpConnection *connection;
-       gboolean listen_for_dbus_properties_changed = FALSE;
-
-       g_assert (self->priv->ready_result == NULL);
-       self->priv->ready_result = g_simple_async_result_new (G_OBJECT (self),
-               callback, user_data, tp_chat_prepare_ready_async);
-
-       connection = tp_channel_borrow_connection (channel);
-
-       if (tp_proxy_has_interface_by_id (self,
-                                         TP_IFACE_QUARK_CHANNEL_INTERFACE_GROUP)) {
-               const TpIntSet *members;
-               GArray *handles;
-               TpHandle handle;
-
-               /* Get self contact from the group's self handle */
-               handle = tp_channel_group_get_self_handle (channel);
-               empathy_tp_contact_factory_get_from_handle (connection,
-                       handle, tp_chat_got_self_contact_cb,
-                       NULL, NULL, G_OBJECT (self));
-
-               /* Get initial member contacts */
-               members = tp_channel_group_get_members (channel);
-               handles = tp_intset_to_array (members);
-               empathy_tp_contact_factory_get_from_handles (connection,
-                       handles->len, (TpHandle *) handles->data,
-                       tp_chat_got_added_contacts_cb, NULL, NULL, G_OBJECT (self));
-
-               self->priv->can_upgrade_to_muc = FALSE;
-
-               tp_g_signal_connect_object (self, "group-members-changed",
-                       G_CALLBACK (tp_chat_group_members_changed_cb), self, 0);
-       } else {
-               TpCapabilities *caps;
-               GPtrArray *classes;
-               guint i;
-               TpHandle handle;
-
-               /* Get the self contact from the connection's self handle */
-               handle = tp_connection_get_self_handle (connection);
-               empathy_tp_contact_factory_get_from_handle (connection,
-                       handle, tp_chat_got_self_contact_cb,
-                       NULL, NULL, G_OBJECT (self));
-
-               /* Get the remote contact */
-               handle = tp_channel_get_handle (channel, NULL);
-               empathy_tp_contact_factory_get_from_handle (connection,
-                       handle, tp_chat_got_remote_contact_cb,
-                       NULL, NULL, G_OBJECT (self));
-
-               caps = tp_connection_get_capabilities (connection);
-               g_assert (caps != NULL);
-
-               classes = tp_capabilities_get_channel_classes (caps);
-
-               for (i = 0; i < classes->len; i++) {
-                       GValueArray *array = g_ptr_array_index (classes, i);
-                       const char **oprops = g_value_get_boxed (
-                               g_value_array_get_nth (array, 1));
-
-                       if (tp_strv_contains (oprops, TP_PROP_CHANNEL_INTERFACE_CONFERENCE_INITIAL_CHANNELS)) {
-                               self->priv->can_upgrade_to_muc = TRUE;
-                               break;
-                       }
-               }
-       }
-
-       if (tp_proxy_has_interface_by_id (self,
-                                         TP_IFACE_QUARK_CHANNEL_INTERFACE_SUBJECT)) {
-               tp_cli_dbus_properties_call_get_all (channel, -1,
-                                                    TP_IFACE_CHANNEL_INTERFACE_SUBJECT,
-                                                    tp_chat_get_all_subject_cb,
-                                                    NULL, NULL,
-                                                    G_OBJECT (self));
-               listen_for_dbus_properties_changed = TRUE;
-       }
-
-       if (tp_proxy_has_interface_by_id (self,
-                                         TP_IFACE_QUARK_CHANNEL_INTERFACE_ROOM_CONFIG)) {
-               tp_cli_dbus_properties_call_get_all (channel, -1,
-                                                    TP_IFACE_CHANNEL_INTERFACE_ROOM_CONFIG,
-                                                    tp_chat_get_all_room_config_cb,
-                                                    NULL, NULL,
-                                                    G_OBJECT (self));
-               listen_for_dbus_properties_changed = TRUE;
-       }
-
-       if (listen_for_dbus_properties_changed) {
-               tp_cli_dbus_properties_connect_to_properties_changed (channel,
-                                                                     tp_chat_dbus_properties_changed_cb,
-                                                                     NULL, NULL,
-                                                                     G_OBJECT (self), NULL);
-       }
+  const TpProxyFeature *feature,
+  GAsyncReadyCallback callback,
+  gpointer user_data)
+{
+  EmpathyTpChat *self = (EmpathyTpChat *) proxy;
+  TpChannel *channel = (TpChannel *) proxy;
+  TpConnection *connection;
+  gboolean listen_for_dbus_properties_changed = FALSE;
+
+  g_assert (self->priv->ready_result == NULL);
+  self->priv->ready_result = g_simple_async_result_new (G_OBJECT (self),
+    callback, user_data, tp_chat_prepare_ready_async);
+
+  connection = tp_channel_borrow_connection (channel);
+
+  if (tp_proxy_has_interface_by_id (self,
+            TP_IFACE_QUARK_CHANNEL_INTERFACE_GROUP))
+    {
+      GPtrArray *contacts;
+      TpContact *contact;
+
+      /* Get self contact from the group's self handle */
+      contact = tp_channel_group_get_self_contact (channel);
+      create_self_contact (self, contact);
+
+      /* Get initial member contacts */
+      contacts = tp_channel_group_dup_members_contacts (channel);
+      add_members_contact (self, contacts);
+      g_ptr_array_unref (contacts);
+
+      self->priv->can_upgrade_to_muc = FALSE;
+
+      tp_g_signal_connect_object (self, "group-contacts-changed",
+        G_CALLBACK (tp_chat_group_contacts_changed_cb), self, 0);
+    }
+  else
+    {
+      TpCapabilities *caps;
+      GPtrArray *classes;
+      guint i;
+      TpContact *contact;
+
+      /* Get the self contact from the connection's self handle */
+      contact = tp_connection_get_self_contact (connection);
+      create_self_contact (self, contact);
+
+      /* Get the remote contact */
+      contact = tp_channel_get_target_contact (channel);
+      create_remote_contact (self, contact);
+
+      caps = tp_connection_get_capabilities (connection);
+      g_assert (caps != NULL);
+
+      classes = tp_capabilities_get_channel_classes (caps);
+
+      for (i = 0; i < classes->len; i++)
+        {
+          GValueArray *array = g_ptr_array_index (classes, i);
+          const char **oprops = g_value_get_boxed (
+            g_value_array_get_nth (array, 1));
+
+          if (tp_strv_contains (oprops,
+                TP_PROP_CHANNEL_INTERFACE_CONFERENCE_INITIAL_CHANNELS))
+            {
+              self->priv->can_upgrade_to_muc = TRUE;
+              break;
+            }
+        }
+    }
+
+  if (tp_proxy_has_interface_by_id (self,
+            TP_IFACE_QUARK_CHANNEL_INTERFACE_SUBJECT))
+    {
+      tp_cli_dbus_properties_call_get_all (channel, -1,
+                   TP_IFACE_CHANNEL_INTERFACE_SUBJECT,
+                   tp_chat_get_all_subject_cb,
+                   NULL, NULL,
+                   G_OBJECT (self));
+      listen_for_dbus_properties_changed = TRUE;
+    }
+
+  if (tp_proxy_has_interface_by_id (self,
+            TP_IFACE_QUARK_CHANNEL_INTERFACE_ROOM_CONFIG))
+    {
+      tp_cli_dbus_properties_call_get_all (channel, -1,
+                   TP_IFACE_CHANNEL_INTERFACE_ROOM_CONFIG,
+                   tp_chat_get_all_room_config_cb,
+                   NULL, NULL,
+                   G_OBJECT (self));
+      listen_for_dbus_properties_changed = TRUE;
+    }
+
+  if (listen_for_dbus_properties_changed)
+    {
+      tp_cli_dbus_properties_connect_to_properties_changed (channel,
+                        tp_chat_dbus_properties_changed_cb,
+                        NULL, NULL,
+                        G_OBJECT (self), NULL);
+    }
 }
index 885479cb3d0bd6f864715502f63afe57c28d488a..d3ad334b3bec0a5217717d775a8c823eca226823 100644 (file)
@@ -1,6 +1,5 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
 /*
- * Copyright (C) 2007-2008 Collabora Ltd.
+ * Copyright (C) 2007-2012 Collabora Ltd.
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
 #include "empathy-message.h"
 #include "empathy-contact.h"
 
-
 G_BEGIN_DECLS
 
-#define EMPATHY_TYPE_TP_CHAT         (empathy_tp_chat_get_type ())
-#define EMPATHY_TP_CHAT(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_TP_CHAT, EmpathyTpChat))
-#define EMPATHY_TP_CHAT_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), EMPATHY_TYPE_TP_CHAT, EmpathyTpChatClass))
-#define EMPATHY_IS_TP_CHAT(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_TP_CHAT))
-#define EMPATHY_IS_TP_CHAT_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), EMPATHY_TYPE_TP_CHAT))
+#define EMPATHY_TYPE_TP_CHAT (empathy_tp_chat_get_type ())
+#define EMPATHY_TP_CHAT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_TP_CHAT, EmpathyTpChat))
+#define EMPATHY_TP_CHAT_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), EMPATHY_TYPE_TP_CHAT, EmpathyTpChatClass))
+#define EMPATHY_IS_TP_CHAT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_TP_CHAT))
+#define EMPATHY_IS_TP_CHAT_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EMPATHY_TYPE_TP_CHAT))
 #define EMPATHY_TP_CHAT_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EMPATHY_TYPE_TP_CHAT, EmpathyTpChatClass))
 
-typedef struct _EmpathyTpChat      EmpathyTpChat;
+typedef struct _EmpathyTpChat EmpathyTpChat;
 typedef struct _EmpathyTpChatClass EmpathyTpChatClass;
 typedef struct _EmpathyTpChatPrivate EmpathyTpChatPrivate;
 
-struct _EmpathyTpChat {
-       TpTextChannel parent;
-       EmpathyTpChatPrivate *priv;
+struct _EmpathyTpChat
+{
+  TpTextChannel parent;
+  EmpathyTpChatPrivate *priv;
 };
 
-struct _EmpathyTpChatClass {
-       TpTextChannelClass parent_class;
+struct _EmpathyTpChatClass
+{
+  TpTextChannelClass parent_class;
 };
 
 typedef enum {
-       EMPATHY_DELIVERY_STATUS_NONE,
-       EMPATHY_DELIVERY_STATUS_SENDING,
-       EMPATHY_DELIVERY_STATUS_ACCEPTED
+  EMPATHY_DELIVERY_STATUS_NONE,
+  EMPATHY_DELIVERY_STATUS_SENDING,
+  EMPATHY_DELIVERY_STATUS_ACCEPTED
 } EmpathyDeliveryStatus;
 
 #define EMPATHY_TP_CHAT_FEATURE_READY empathy_tp_chat_get_feature_ready ()
 GQuark empathy_tp_chat_get_feature_ready (void) G_GNUC_CONST;
 
-GType          empathy_tp_chat_get_type             (void) G_GNUC_CONST;
+GType empathy_tp_chat_get_type (void) G_GNUC_CONST;
 
-EmpathyTpChat *empathy_tp_chat_new                  (
-                                                    TpSimpleClientFactory *factory,
-                                                    TpAccount *account,
-                                                    TpConnection *connection,
-                                                    const gchar *object_path,
-                                                    const GHashTable *immutable_properties);
+EmpathyTpChat * empathy_tp_chat_new (TpSimpleClientFactory *factory,
+    TpAccount *account,
+    TpConnection *connection,
+    const gchar *object_path,
+    const GHashTable *immutable_properties);
 
-const gchar *  empathy_tp_chat_get_id               (EmpathyTpChat      *chat);
-EmpathyContact *empathy_tp_chat_get_remote_contact   (EmpathyTpChat      *chat);
-TpAccount    * empathy_tp_chat_get_account          (EmpathyTpChat      *chat);
-void           empathy_tp_chat_send                 (EmpathyTpChat      *chat,
-                                                    TpMessage     *message);
+const gchar * empathy_tp_chat_get_id (EmpathyTpChat      *chat);
+EmpathyContact * empathy_tp_chat_get_remote_contact (EmpathyTpChat *chat);
+TpAccount * empathy_tp_chat_get_account (EmpathyTpChat *chat);
+void empathy_tp_chat_send (EmpathyTpChat *chat,
+    TpMessage *message);
 
-const gchar *  empathy_tp_chat_get_title            (EmpathyTpChat *self);
+const gchar * empathy_tp_chat_get_title (EmpathyTpChat *self);
 
-gboolean       empathy_tp_chat_supports_subject     (EmpathyTpChat *self);
-const gchar *  empathy_tp_chat_get_subject          (EmpathyTpChat *self);
-const gchar *  empathy_tp_chat_get_subject_actor    (EmpathyTpChat *self);
-gboolean       empathy_tp_chat_can_set_subject      (EmpathyTpChat *self);
-void           empathy_tp_chat_set_subject          (EmpathyTpChat *self,
-                                                    const gchar   *subject);
+gboolean empathy_tp_chat_supports_subject (EmpathyTpChat *self);
+const gchar * empathy_tp_chat_get_subject (EmpathyTpChat *self);
+const gchar * empathy_tp_chat_get_subject_actor (EmpathyTpChat *self);
+gboolean empathy_tp_chat_can_set_subject (EmpathyTpChat *self);
+void empathy_tp_chat_set_subject (EmpathyTpChat *self,
+    const gchar *subject);
 
 /* Returns a read-only list of pending messages (should be a copy maybe ?) */
 const GList *  empathy_tp_chat_get_pending_messages (EmpathyTpChat *chat);
-void           empathy_tp_chat_acknowledge_message (EmpathyTpChat *chat,
-                                                    EmpathyMessage *message);
+void empathy_tp_chat_acknowledge_message (EmpathyTpChat *chat,
+    EmpathyMessage *message);
+
+gboolean empathy_tp_chat_can_add_contact (EmpathyTpChat *self);
+
+void empathy_tp_chat_leave (EmpathyTpChat *chat,
+    const gchar *message);
 
-gboolean       empathy_tp_chat_can_add_contact (EmpathyTpChat *self);
+gboolean empathy_tp_chat_is_invited (EmpathyTpChat *chat,
+    TpContact **inviter);
+TpChannelChatState empathy_tp_chat_get_chat_state (EmpathyTpChat *chat,
+    EmpathyContact *contact);
 
-void           empathy_tp_chat_leave                (EmpathyTpChat      *chat,
-                                                      const gchar *message);
-void           empathy_tp_chat_join                 (EmpathyTpChat      *chat);
+EmpathyContact * empathy_tp_chat_get_self_contact (EmpathyTpChat *self);
 
-gboolean       empathy_tp_chat_is_invited           (EmpathyTpChat      *chat,
-                                                    TpHandle *inviter);
-TpChannelChatState
-               empathy_tp_chat_get_chat_state       (EmpathyTpChat      *chat,
-                                    EmpathyContact *contact);
+void empathy_tp_chat_add (EmpathyTpChat *self,
+    EmpathyContact *contact,
+    const gchar *message);
 
-EmpathyContact * empathy_tp_chat_get_self_contact   (EmpathyTpChat      *self);
+GList * empathy_tp_chat_get_members (EmpathyTpChat *self);
 
 G_END_DECLS
 
index 111e3190a34b38e38236a067a7761f80e2f345a9..63a1cedeb860a07236fad33b06d363914d96300c 100644 (file)
@@ -36,8 +36,6 @@ static TpContactFeature contact_features[] = {
 };
 
 typedef union {
-       EmpathyTpContactFactoryContactsByIdCb ids_cb;
-       EmpathyTpContactFactoryContactsByHandleCb handles_cb;
        EmpathyTpContactFactoryContactCb contact_cb;
 } GetContactsCb;
 
@@ -61,89 +59,6 @@ get_contacts_data_free (gpointer user_data)
        g_slice_free (GetContactsData, data);
 }
 
-static EmpathyContact **
-contacts_array_new (guint n_contacts,
-                   TpContact * const * contacts)
-{
-       EmpathyContact **ret;
-       guint            i;
-
-       ret = g_new0 (EmpathyContact *, n_contacts);
-       for (i = 0; i < n_contacts; i++) {
-               ret[i] = empathy_contact_dup_from_tp_contact (contacts[i]);
-       }
-
-       return ret;
-}
-
-static void
-contacts_array_free (guint            n_contacts,
-                    EmpathyContact **contacts)
-{
-       guint i;
-
-       for (i = 0; i < n_contacts; i++) {
-               g_object_unref (contacts[i]);
-       }
-       g_free (contacts);
-}
-
-static void
-get_contacts_by_id_cb (TpConnection *connection,
-                      guint n_contacts,
-                      TpContact * const *contacts,
-                      const gchar * const *requested_ids,
-                      GHashTable *failed_id_errors,
-                      const GError *error,
-                      gpointer user_data,
-                      GObject *weak_object)
-{
-       GetContactsData *data = user_data;
-       EmpathyContact **empathy_contacts;
-
-       empathy_contacts = contacts_array_new (n_contacts, contacts);
-       if (data->callback.ids_cb) {
-               data->callback.ids_cb (data->connection,
-                                      n_contacts, empathy_contacts,
-                                      requested_ids,
-                                      failed_id_errors,
-                                      error,
-                                      data->user_data, weak_object);
-       }
-
-       contacts_array_free (n_contacts, empathy_contacts);
-}
-
-/* The callback is NOT given a reference to the EmpathyContact objects */
-void
-empathy_tp_contact_factory_get_from_ids (TpConnection            *connection,
-                                        guint                    n_ids,
-                                        const gchar * const     *ids,
-                                        EmpathyTpContactFactoryContactsByIdCb callback,
-                                        gpointer                 user_data,
-                                        GDestroyNotify           destroy,
-                                        GObject                 *weak_object)
-{
-       GetContactsData *data;
-
-       g_return_if_fail (TP_IS_CONNECTION (connection));
-       g_return_if_fail (ids != NULL);
-
-       data = g_slice_new (GetContactsData);
-       data->callback.ids_cb = callback;
-       data->user_data = user_data;
-       data->destroy = destroy;
-       data->connection = g_object_ref (connection);
-       tp_connection_get_contacts_by_id (connection,
-                                         n_ids, ids,
-                                         G_N_ELEMENTS (contact_features),
-                                         contact_features,
-                                         get_contacts_by_id_cb,
-                                         data,
-                                         (GDestroyNotify) get_contacts_data_free,
-                                         weak_object);
-}
-
 static void
 get_contact_by_id_cb (TpConnection *connection,
                      guint n_contacts,
@@ -213,66 +128,6 @@ empathy_tp_contact_factory_get_from_id (TpConnection            *connection,
                                          weak_object);
 }
 
-static void
-get_contacts_by_handle_cb (TpConnection *connection,
-                          guint n_contacts,
-                          TpContact * const *contacts,
-                          guint n_failed,
-                          const TpHandle *failed,
-                          const GError *error,
-                          gpointer user_data,
-                          GObject *weak_object)
-{
-       GetContactsData *data = user_data;
-       EmpathyContact **empathy_contacts;
-
-       empathy_contacts = contacts_array_new (n_contacts, contacts);
-       if (data->callback.handles_cb) {
-               data->callback.handles_cb (data->connection,
-                                          n_contacts, empathy_contacts,
-                                          n_failed, failed,
-                                          error,
-                                          data->user_data, weak_object);
-       }
-
-       contacts_array_free (n_contacts, empathy_contacts);
-}
-
-/* The callback is NOT given a reference to the EmpathyContact objects */
-void
-empathy_tp_contact_factory_get_from_handles (TpConnection *connection,
-                                            guint n_handles,
-                                            const TpHandle *handles,
-                                            EmpathyTpContactFactoryContactsByHandleCb callback,
-                                            gpointer                 user_data,
-                                            GDestroyNotify           destroy,
-                                            GObject                 *weak_object)
-{
-       GetContactsData *data;
-
-       if (n_handles == 0) {
-               callback (connection, 0, NULL, 0, NULL, NULL, user_data, weak_object);
-               return;
-       }
-
-       g_return_if_fail (TP_IS_CONNECTION (connection));
-       g_return_if_fail (handles != NULL);
-
-       data = g_slice_new (GetContactsData);
-       data->callback.handles_cb = callback;
-       data->user_data = user_data;
-       data->destroy = destroy;
-       data->connection = g_object_ref (connection);
-       tp_connection_get_contacts_by_handle (connection,
-                                             n_handles, handles,
-                                             G_N_ELEMENTS (contact_features),
-                                             contact_features,
-                                             get_contacts_by_handle_cb,
-                                             data,
-                                             (GDestroyNotify) get_contacts_data_free,
-                                             weak_object);
-}
-
 /* The callback is NOT given a reference to the EmpathyContact objects */
 static void
 get_contact_by_handle_cb (TpConnection *connection,
index 29146cb32d07d4ebecb8253a24f2e654d8e0a691..20d699a3eb49e51d67baa4ad9d84d6807293773a 100644 (file)
 
 G_BEGIN_DECLS
 
-typedef void (*EmpathyTpContactFactoryContactsByIdCb) (TpConnection            *connection,
-                                                      guint                    n_contacts,
-                                                      EmpathyContact * const * contacts,
-                                                      const gchar * const *    requested_ids,
-                                                      GHashTable              *failed_id_errors,
-                                                      const GError            *error,
-                                                      gpointer                 user_data,
-                                                      GObject                 *weak_object);
-
-typedef void (*EmpathyTpContactFactoryContactsByHandleCb) (TpConnection            *connection,
-                                                          guint                    n_contacts,
-                                                          EmpathyContact * const * contacts,
-                                                           guint                    n_failed,
-                                                           const TpHandle          *failed,
-                                                           const GError            *error,
-                                                          gpointer                 user_data,
-                                                          GObject                 *weak_object);
-
 typedef void (*EmpathyTpContactFactoryContactCb) (TpConnection            *connection,
                                                  EmpathyContact          *contact,
                                                  const GError            *error,
                                                  gpointer                 user_data,
                                                  GObject                 *weak_object);
 
-void                     empathy_tp_contact_factory_get_from_ids     (TpConnection            *connection,
-                                                                     guint                    n_ids,
-                                                                     const gchar * const     *ids,
-                                                                     EmpathyTpContactFactoryContactsByIdCb callback,
-                                                                     gpointer                 user_data,
-                                                                     GDestroyNotify           destroy,
-                                                                     GObject                 *weak_object);
-void                     empathy_tp_contact_factory_get_from_handles (TpConnection            *connection,
-                                                                     guint                    n_handles,
-                                                                     const TpHandle          *handles,
-                                                                     EmpathyTpContactFactoryContactsByHandleCb callback,
-                                                                     gpointer                 user_data,
-                                                                     GDestroyNotify           destroy,
-                                                                     GObject                 *weak_object);
 void                     empathy_tp_contact_factory_get_from_id      (TpConnection            *connection,
                                                                      const gchar             *id,
                                                                      EmpathyTpContactFactoryContactCb callback,
diff --git a/libempathy/empathy-tp-streamed-media.c b/libempathy/empathy-tp-streamed-media.c
deleted file mode 100644 (file)
index f245dcf..0000000
+++ /dev/null
@@ -1,856 +0,0 @@
-/*
- * Copyright (C) 2007 Elliot Fairweather
- * Copyright (C) 2007-2008 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
- *
- * Authors: Elliot Fairweather <elliot.fairweather@collabora.co.uk>
- *          Xavier Claessens <xclaesse@gmail.com>
- */
-
-#include "config.h"
-
-#include <string.h>
-
-#include <telepathy-glib/proxy-subclass.h>
-#include <telepathy-glib/dbus.h>
-#include <telepathy-glib/interfaces.h>
-#include <telepathy-glib/util.h>
-
-#include "empathy-tp-streamed-media.h"
-#include "empathy-tp-contact-factory.h"
-#include "empathy-utils.h"
-
-#define DEBUG_FLAG EMPATHY_DEBUG_VOIP
-#include "empathy-debug.h"
-
-#define GET_PRIV(obj) EMPATHY_GET_PRIV (obj, EmpathyTpStreamedMedia)
-typedef struct
-{
-  gboolean dispose_has_run;
-  TpAccount *account;
-  TpChannel *channel;
-  EmpathyContact *contact;
-  gboolean is_incoming;
-  guint status;
-
-  EmpathyTpStreamedMediaStream *audio;
-  EmpathyTpStreamedMediaStream *video;
-} EmpathyTpStreamedMediaPriv;
-
-/* signal enum */
-enum {
-  AUDIO_STREAM_ERROR,
-  VIDEO_STREAM_ERROR,
-  LAST_SIGNAL
-};
-
-static guint signals[LAST_SIGNAL] = {0};
-
-enum
-{
-  PROP_0,
-  PROP_ACCOUNT,
-  PROP_CHANNEL,
-  PROP_CONTACT,
-  PROP_STATUS,
-  PROP_AUDIO_STREAM,
-  PROP_VIDEO_STREAM
-};
-
-G_DEFINE_TYPE (EmpathyTpStreamedMedia, empathy_tp_streamed_media, G_TYPE_OBJECT)
-
-static void
-tp_streamed_media_add_stream (EmpathyTpStreamedMedia *call,
-                    guint stream_id,
-                    guint contact_handle,
-                    guint stream_type,
-                    guint stream_state,
-                    guint stream_direction)
-{
-  EmpathyTpStreamedMediaPriv *priv = GET_PRIV (call);
-
-  switch (stream_type)
-    {
-      case TP_MEDIA_STREAM_TYPE_AUDIO:
-        DEBUG ("Audio stream - id: %d, state: %d, direction: %d",
-            stream_id, stream_state, stream_direction);
-        priv->audio->exists = TRUE;
-        priv->audio->id = stream_id;
-        priv->audio->state = stream_state;
-        priv->audio->direction = stream_direction;
-        g_object_notify (G_OBJECT (call), "audio-stream");
-        break;
-      case TP_MEDIA_STREAM_TYPE_VIDEO:
-        DEBUG ("Video stream - id: %d, state: %d, direction: %d",
-            stream_id, stream_state, stream_direction);
-        priv->video->exists = TRUE;
-        priv->video->id = stream_id;
-        priv->video->state = stream_state;
-        priv->video->direction = stream_direction;
-        g_object_notify (G_OBJECT (call), "video-stream");
-        break;
-      default:
-        DEBUG ("Unknown stream type: %d", stream_type);
-    }
-}
-
-static void
-tp_streamed_media_stream_added_cb (TpChannel *channel,
-                         guint stream_id,
-                         guint contact_handle,
-                         guint stream_type,
-                         gpointer user_data,
-                         GObject *call)
-{
-  DEBUG ("Stream added - stream id: %d, contact handle: %d, stream type: %d",
-      stream_id, contact_handle, stream_type);
-
-  tp_streamed_media_add_stream (EMPATHY_TP_STREAMED_MEDIA (call), stream_id, contact_handle,
-      stream_type, TP_MEDIA_STREAM_STATE_DISCONNECTED,
-      TP_MEDIA_STREAM_DIRECTION_NONE);
-}
-
-static void
-tp_streamed_media_stream_removed_cb (TpChannel *channel,
-                           guint stream_id,
-                           gpointer user_data,
-                           GObject *call)
-{
-  EmpathyTpStreamedMediaPriv *priv = GET_PRIV (call);
-
-  DEBUG ("Stream removed - stream id: %d", stream_id);
-
-  if (stream_id == priv->audio->id)
-    {
-      priv->audio->exists = FALSE;
-      g_object_notify (call, "audio-stream");
-    }
-  else if (stream_id == priv->video->id)
-    {
-      priv->video->exists = FALSE;
-      g_object_notify (call, "video-stream");
-    }
-}
-
-static void
-tp_streamed_media_stream_state_changed_cb (TpChannel *proxy,
-                                 guint stream_id,
-                                 guint stream_state,
-                                 gpointer user_data,
-                                 GObject *call)
-{
-  EmpathyTpStreamedMediaPriv *priv = GET_PRIV (call);
-
-  DEBUG ("Stream state changed - stream id: %d, state state: %d",
-      stream_id, stream_state);
-
-  if (stream_id == priv->audio->id)
-    {
-      priv->audio->state = stream_state;
-      g_object_notify (call, "audio-stream");
-    }
-  else if (stream_id == priv->video->id)
-    {
-      priv->video->state = stream_state;
-      g_object_notify (call, "video-stream");
-    }
-}
-
-static void
-tp_streamed_media_stream_direction_changed_cb (TpChannel *channel,
-                                     guint stream_id,
-                                     guint stream_direction,
-                                     guint pending_flags,
-                                     gpointer user_data,
-                                     GObject *call)
-{
-  EmpathyTpStreamedMediaPriv *priv = GET_PRIV (call);
-
-  DEBUG ("Stream direction changed - stream: %d, direction: %d",
-      stream_id, stream_direction);
-
-  if (stream_id == priv->audio->id)
-    {
-      priv->audio->direction = stream_direction;
-      g_object_notify (call, "audio-stream");
-    }
-  else if (stream_id == priv->video->id)
-    {
-      priv->video->direction = stream_direction;
-      g_object_notify (call, "video-stream");
-    }
-}
-
-static void
-tp_streamed_media_request_streams_cb (TpChannel *channel,
-                            const GPtrArray *streams,
-                            const GError *error,
-                            gpointer user_data,
-                            GObject *call)
-{
-  guint i;
-
-  if (error)
-    {
-      DEBUG ("Error requesting streams: %s", error->message);
-      return;
-    }
-
-  for (i = 0; i < streams->len; i++)
-    {
-      GValueArray *values;
-      guint stream_id;
-      guint contact_handle;
-      guint stream_type;
-      guint stream_state;
-      guint stream_direction;
-
-      values = g_ptr_array_index (streams, i);
-      stream_id = g_value_get_uint (g_value_array_get_nth (values, 0));
-      contact_handle = g_value_get_uint (g_value_array_get_nth (values, 1));
-      stream_type = g_value_get_uint (g_value_array_get_nth (values, 2));
-      stream_state = g_value_get_uint (g_value_array_get_nth (values, 3));
-      stream_direction = g_value_get_uint (g_value_array_get_nth (values, 4));
-
-      tp_streamed_media_add_stream (EMPATHY_TP_STREAMED_MEDIA (call), stream_id, contact_handle,
-          stream_type, stream_state, stream_direction);
-  }
-}
-
-static void
-tp_streamed_media_request_streams_for_capabilities (EmpathyTpStreamedMedia *call,
-                                          EmpathyCapabilities capabilities)
-{
-  EmpathyTpStreamedMediaPriv *priv = GET_PRIV (call);
-  GArray *stream_types;
-  guint handle;
-  guint stream_type;
-
-  if (capabilities == EMPATHY_CAPABILITIES_UNKNOWN)
-      capabilities = EMPATHY_CAPABILITIES_AUDIO | EMPATHY_CAPABILITIES_VIDEO;
-
-  DEBUG ("Requesting new stream for capabilities %d",
-      capabilities);
-
-  stream_types = g_array_new (FALSE, FALSE, sizeof (guint));
-  handle = empathy_contact_get_handle (priv->contact);
-
-  if (capabilities & EMPATHY_CAPABILITIES_AUDIO)
-    {
-      stream_type = TP_MEDIA_STREAM_TYPE_AUDIO;
-      g_array_append_val (stream_types, stream_type);
-    }
-  if (capabilities & EMPATHY_CAPABILITIES_VIDEO)
-    {
-      stream_type = TP_MEDIA_STREAM_TYPE_VIDEO;
-      g_array_append_val (stream_types, stream_type);
-    }
-
-  tp_cli_channel_type_streamed_media_call_request_streams (priv->channel, -1,
-      handle, stream_types, tp_streamed_media_request_streams_cb, NULL, NULL,
-      G_OBJECT (call));
-
-  g_array_unref (stream_types);
-}
-
-static void
-tp_streamed_media_got_contact_cb (TpConnection            *connection,
-                        EmpathyContact          *contact,
-                        const GError            *error,
-                        gpointer                 user_data,
-                        GObject                 *call)
-{
-  EmpathyTpStreamedMediaPriv *priv = GET_PRIV (call);
-
-  if (error)
-    {
-      DEBUG ("Error: %s", error->message);
-      return;
-    }
-
-  priv->contact = g_object_ref (contact);
-
-  if (priv->status < EMPATHY_TP_STREAMED_MEDIA_STATUS_PENDING)
-    {
-      priv->status = EMPATHY_TP_STREAMED_MEDIA_STATUS_PENDING;
-      g_object_notify (G_OBJECT (call), "status");
-    }
-
-  g_object_notify (G_OBJECT (call), "contact");
-}
-
-static void
-tp_streamed_media_update_status (EmpathyTpStreamedMedia *call)
-{
-  EmpathyTpStreamedMediaPriv *priv = GET_PRIV (call);
-  TpHandle self_handle;
-  const TpIntSet *set;
-  TpIntSetIter iter;
-
-  g_object_ref (call);
-
-  self_handle = tp_channel_group_get_self_handle (priv->channel);
-  set = tp_channel_group_get_members (priv->channel);
-  tp_intset_iter_init (&iter, set);
-  while (tp_intset_iter_next (&iter))
-    {
-      if (priv->status == EMPATHY_TP_STREAMED_MEDIA_STATUS_PENDING &&
-          ((priv->is_incoming && iter.element == self_handle) ||
-           (!priv->is_incoming && iter.element != self_handle)))
-        {
-          priv->status = EMPATHY_TP_STREAMED_MEDIA_STATUS_ACCEPTED;
-          g_object_notify (G_OBJECT (call), "status");
-        }
-    }
-
-  g_object_unref (call);
-}
-
-static void
-tp_streamed_media_channel_invalidated_cb (TpChannel     *channel,
-                                GQuark         domain,
-                                gint           code,
-                                gchar         *message,
-                                EmpathyTpStreamedMedia *call)
-{
-  EmpathyTpStreamedMediaPriv *priv = GET_PRIV (call);
-
-  DEBUG ("Channel invalidated: %s", message);
-  priv->status = EMPATHY_TP_STREAMED_MEDIA_STATUS_CLOSED;
-  g_object_notify (G_OBJECT (call), "status");
-}
-
-static void
-tp_streamed_media_async_cb (TpProxy *proxy,
-                  const GError *error,
-                  gpointer user_data,
-                  GObject *call)
-{
-  if (error)
-      DEBUG ("Error %s: %s", (gchar *) user_data, error->message);
-}
-
-static void
-tp_streamed_media_stream_error_cb (TpChannel *channel,
-    guint stream_id,
-    guint error_code,
-    const gchar *msg,
-    gpointer user_data,
-    GObject *call)
-{
-  EmpathyTpStreamedMedia *self = EMPATHY_TP_STREAMED_MEDIA (call);
-  EmpathyTpStreamedMediaPriv *priv = GET_PRIV (self);
-
-  DEBUG ("Stream error on stream %u: %s (code: %u)", stream_id, msg,
-      error_code);
-
-  if (priv->audio->id == stream_id)
-    {
-      g_signal_emit (call, signals[AUDIO_STREAM_ERROR], 0, error_code, msg);
-    }
-  else if (priv->video->id == stream_id)
-    {
-      g_signal_emit (call, signals[VIDEO_STREAM_ERROR], 0, error_code, msg);
-    }
-  else
-    {
-      DEBUG ("Unknown stream id: %u", stream_id);
-    }
-}
-
-static GObject *
-tp_streamed_media_constructor (GType type,
-                     guint n_construct_params,
-                     GObjectConstructParam *construct_params)
-{
-  GObject *object;
-  EmpathyTpStreamedMedia *call;
-  EmpathyTpStreamedMediaPriv *priv;
-
-  object = G_OBJECT_CLASS (empathy_tp_streamed_media_parent_class)->constructor (type,
-      n_construct_params, construct_params);
-
-  call = EMPATHY_TP_STREAMED_MEDIA (object);
-  priv = GET_PRIV (call);
-
-  /* Setup streamed media channel */
-  g_signal_connect (priv->channel, "invalidated",
-      G_CALLBACK (tp_streamed_media_channel_invalidated_cb), call);
-  tp_cli_channel_type_streamed_media_connect_to_stream_added (priv->channel,
-      tp_streamed_media_stream_added_cb, NULL, NULL, G_OBJECT (call), NULL);
-  tp_cli_channel_type_streamed_media_connect_to_stream_removed (priv->channel,
-      tp_streamed_media_stream_removed_cb, NULL, NULL, G_OBJECT (call), NULL);
-  tp_cli_channel_type_streamed_media_connect_to_stream_state_changed (priv->channel,
-      tp_streamed_media_stream_state_changed_cb, NULL, NULL, G_OBJECT (call), NULL);
-  tp_cli_channel_type_streamed_media_connect_to_stream_direction_changed (priv->channel,
-      tp_streamed_media_stream_direction_changed_cb, NULL, NULL, G_OBJECT (call), NULL);
-  tp_cli_channel_type_streamed_media_connect_to_stream_error (priv->channel,
-      tp_streamed_media_stream_error_cb, NULL, NULL, G_OBJECT (call), NULL);
-  tp_cli_channel_type_streamed_media_call_list_streams (priv->channel, -1,
-      tp_streamed_media_request_streams_cb, NULL, NULL, G_OBJECT (call));
-
-  /* Is the call incoming? */
-  priv->is_incoming = !tp_channel_get_requested (priv->channel);
-
-  /* Get the remote contact */
-  empathy_tp_contact_factory_get_from_handle (
-      tp_channel_borrow_connection (priv->channel),
-      tp_channel_get_handle (priv->channel, NULL), tp_streamed_media_got_contact_cb,
-      NULL, NULL, object);
-
-  /* Update status when members changes */
-  tp_streamed_media_update_status (call);
-  tp_g_signal_connect_object (priv->channel, "group-members-changed",
-      G_CALLBACK (tp_streamed_media_update_status), call, G_CONNECT_SWAPPED);
-
-  return object;
-}
-static void
-tp_streamed_media_dispose (GObject *object)
-{
-  EmpathyTpStreamedMediaPriv *priv = GET_PRIV (object);
-
-  DEBUG ("Disposing: %p, %d", object, priv->dispose_has_run);
-
-  if (priv->dispose_has_run)
-    return;
-
-  priv->dispose_has_run = TRUE;
-
-  if (priv->channel != NULL)
-    {
-      g_signal_handlers_disconnect_by_func (priv->channel,
-        tp_streamed_media_channel_invalidated_cb, object);
-
-      g_object_unref (priv->channel);
-      priv->channel = NULL;
-    }
-
-  if (priv->contact != NULL)
-      g_object_unref (priv->contact);
-
-  tp_clear_object (&priv->account);
-
-  if (G_OBJECT_CLASS (empathy_tp_streamed_media_parent_class)->dispose)
-    G_OBJECT_CLASS (empathy_tp_streamed_media_parent_class)->dispose (object);
-}
-
-static void
-tp_streamed_media_finalize (GObject *object)
-{
-  EmpathyTpStreamedMediaPriv *priv = GET_PRIV (object);
-
-  DEBUG ("Finalizing: %p", object);
-
-  g_slice_free (EmpathyTpStreamedMediaStream, priv->audio);
-  g_slice_free (EmpathyTpStreamedMediaStream, priv->video);
-
-  (G_OBJECT_CLASS (empathy_tp_streamed_media_parent_class)->finalize) (object);
-}
-
-static void
-tp_streamed_media_set_property (GObject *object,
-                      guint prop_id,
-                      const GValue *value,
-                      GParamSpec *pspec)
-{
-  EmpathyTpStreamedMediaPriv *priv = GET_PRIV (object);
-
-  switch (prop_id)
-    {
-    case PROP_ACCOUNT:
-      priv->account = g_value_dup_object (value);
-      break;
-    case PROP_CHANNEL:
-      priv->channel = g_value_dup_object (value);
-      break;
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
-  }
-}
-
-static void
-tp_streamed_media_get_property (GObject *object,
-                      guint prop_id,
-                      GValue *value,
-                      GParamSpec *pspec)
-{
-  EmpathyTpStreamedMediaPriv *priv = GET_PRIV (object);
-
-  switch (prop_id)
-    {
-    case PROP_ACCOUNT:
-      g_value_set_object (value, priv->channel);
-      break;
-    case PROP_CHANNEL:
-      g_value_set_object (value, priv->channel);
-      break;
-    case PROP_CONTACT:
-      g_value_set_object (value, priv->contact);
-      break;
-    case PROP_STATUS:
-      g_value_set_uint (value, priv->status);
-      break;
-    case PROP_AUDIO_STREAM:
-      g_value_set_pointer (value, priv->audio);
-      break;
-    case PROP_VIDEO_STREAM:
-      g_value_set_pointer (value, priv->video);
-      break;
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
-  }
-}
-
-static void
-empathy_tp_streamed_media_class_init (EmpathyTpStreamedMediaClass *klass)
-{
-  GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
-  object_class->constructor = tp_streamed_media_constructor;
-  object_class->dispose = tp_streamed_media_dispose;
-  object_class->finalize = tp_streamed_media_finalize;
-  object_class->set_property = tp_streamed_media_set_property;
-  object_class->get_property = tp_streamed_media_get_property;
-
-  g_type_class_add_private (klass, sizeof (EmpathyTpStreamedMediaPriv));
-
-  g_object_class_install_property (object_class, PROP_ACCOUNT,
-      g_param_spec_object ("account", "TpAccount", "TpAccount",
-      TP_TYPE_ACCOUNT,
-      G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE |
-      G_PARAM_STATIC_STRINGS));
-
-  g_object_class_install_property (object_class, PROP_CHANNEL,
-      g_param_spec_object ("channel", "channel", "channel",
-      TP_TYPE_CHANNEL,
-      G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE |
-      G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB));
-
-  g_object_class_install_property (object_class, PROP_CONTACT,
-      g_param_spec_object ("contact", "Call contact", "Call contact",
-      EMPATHY_TYPE_CONTACT,
-      G_PARAM_READABLE | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB));
-
-  g_object_class_install_property (object_class, PROP_STATUS,
-      g_param_spec_uint ("status", "Call status",
-      "Call status", 0, 255, 0, G_PARAM_READABLE | G_PARAM_STATIC_NICK |
-      G_PARAM_STATIC_BLURB));
-
-  g_object_class_install_property (object_class, PROP_AUDIO_STREAM,
-      g_param_spec_pointer ("audio-stream", "Audio stream data",
-      "Audio stream data",
-      G_PARAM_READABLE | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB));
-
-  g_object_class_install_property (object_class, PROP_VIDEO_STREAM,
-      g_param_spec_pointer ("video-stream", "Video stream data",
-      "Video stream data",
-      G_PARAM_READABLE | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB));
-
-  signals[AUDIO_STREAM_ERROR] =
-    g_signal_new ("audio-stream-error",
-      G_TYPE_FROM_CLASS (klass),
-      G_SIGNAL_RUN_LAST, 0,
-      NULL, NULL,
-      g_cclosure_marshal_generic,
-      G_TYPE_NONE,
-      2, G_TYPE_UINT, G_TYPE_STRING);
-
-  signals[VIDEO_STREAM_ERROR] =
-    g_signal_new ("video-stream-error",
-      G_TYPE_FROM_CLASS (klass),
-      G_SIGNAL_RUN_LAST, 0,
-      NULL, NULL,
-      g_cclosure_marshal_generic,
-      G_TYPE_NONE,
-      2, G_TYPE_UINT, G_TYPE_STRING);
-}
-
-static void
-empathy_tp_streamed_media_init (EmpathyTpStreamedMedia *call)
-{
-  EmpathyTpStreamedMediaPriv *priv = G_TYPE_INSTANCE_GET_PRIVATE (call,
-    EMPATHY_TYPE_TP_STREAMED_MEDIA, EmpathyTpStreamedMediaPriv);
-
-  call->priv = priv;
-  priv->status = EMPATHY_TP_STREAMED_MEDIA_STATUS_READYING;
-  priv->contact = NULL;
-  priv->audio = g_slice_new0 (EmpathyTpStreamedMediaStream);
-  priv->video = g_slice_new0 (EmpathyTpStreamedMediaStream);
-  priv->audio->exists = FALSE;
-  priv->video->exists = FALSE;
-}
-
-EmpathyTpStreamedMedia *
-empathy_tp_streamed_media_new (TpAccount *account,
-    TpChannel *channel)
-{
-  g_return_val_if_fail (TP_IS_ACCOUNT (account), NULL);
-  g_return_val_if_fail (TP_IS_CHANNEL (channel), NULL);
-
-  return g_object_new (EMPATHY_TYPE_TP_STREAMED_MEDIA,
-      "account", account,
-      "channel", channel,
-      NULL);
-}
-
-void
-empathy_tp_streamed_media_accept_incoming_call (EmpathyTpStreamedMedia *call)
-{
-  EmpathyTpStreamedMediaPriv *priv = GET_PRIV (call);
-  TpHandle self_handle;
-  GArray handles = {(gchar *) &self_handle, 1};
-
-  g_return_if_fail (EMPATHY_IS_TP_STREAMED_MEDIA (call));
-  g_return_if_fail (priv->status == EMPATHY_TP_STREAMED_MEDIA_STATUS_PENDING);
-
-  if (!priv->is_incoming)
-    return;
-
-  DEBUG ("Accepting incoming call");
-
-  self_handle = tp_channel_group_get_self_handle (priv->channel);
-  tp_cli_channel_interface_group_call_add_members (priv->channel, -1,
-      &handles, NULL, NULL, NULL, NULL, NULL);
-}
-
-void
-empathy_tp_streamed_media_close (EmpathyTpStreamedMedia *call)
-{
-  EmpathyTpStreamedMediaPriv *priv = GET_PRIV (call);
-
-  g_return_if_fail (EMPATHY_IS_TP_STREAMED_MEDIA (call));
-
-  if (priv->status == EMPATHY_TP_STREAMED_MEDIA_STATUS_CLOSED)
-      return;
-
-  DEBUG ("Closing channel");
-
-  tp_cli_channel_call_close (priv->channel, -1,
-      NULL, NULL, NULL, NULL);
-
-  priv->status = EMPATHY_TP_STREAMED_MEDIA_STATUS_CLOSED;
-  g_object_notify (G_OBJECT (call), "status");
-}
-
-void
-empathy_tp_streamed_media_request_video_stream_direction (EmpathyTpStreamedMedia *call,
-                                                gboolean is_sending)
-{
-  EmpathyTpStreamedMediaPriv *priv = GET_PRIV (call);
-  guint new_direction;
-
-  g_return_if_fail (EMPATHY_IS_TP_STREAMED_MEDIA (call));
-  g_return_if_fail (priv->status == EMPATHY_TP_STREAMED_MEDIA_STATUS_ACCEPTED);
-
-  DEBUG ("Requesting video stream direction - is_sending: %d", is_sending);
-
-  if (!priv->video->exists)
-    {
-      if (is_sending)
-          tp_streamed_media_request_streams_for_capabilities (call,
-              EMPATHY_CAPABILITIES_VIDEO);
-      return;
-    }
-
-  if (is_sending)
-      new_direction = priv->video->direction | TP_MEDIA_STREAM_DIRECTION_SEND;
-  else
-      new_direction = priv->video->direction & ~TP_MEDIA_STREAM_DIRECTION_SEND;
-
-  tp_cli_channel_type_streamed_media_call_request_stream_direction (priv->channel,
-      -1, priv->video->id, new_direction,
-      (tp_cli_channel_type_streamed_media_callback_for_request_stream_direction)
-      tp_streamed_media_async_cb, NULL, NULL, G_OBJECT (call));
-}
-
-void
-empathy_tp_streamed_media_start_tone (EmpathyTpStreamedMedia *call, TpDTMFEvent event)
-{
-  EmpathyTpStreamedMediaPriv *priv = GET_PRIV (call);
-
-  g_return_if_fail (EMPATHY_IS_TP_STREAMED_MEDIA (call));
-  g_return_if_fail (priv->status == EMPATHY_TP_STREAMED_MEDIA_STATUS_ACCEPTED);
-
-  if (!priv->audio->exists)
-      return;
-
-  tp_cli_channel_interface_dtmf_call_start_tone (priv->channel, -1,
-      priv->audio->id, event,
-      (tp_cli_channel_interface_dtmf_callback_for_start_tone) tp_streamed_media_async_cb,
-      "starting tone", NULL, G_OBJECT (call));
-}
-
-void
-empathy_tp_streamed_media_stop_tone (EmpathyTpStreamedMedia *call)
-{
-  EmpathyTpStreamedMediaPriv *priv = GET_PRIV (call);
-
-  g_return_if_fail (EMPATHY_IS_TP_STREAMED_MEDIA (call));
-  g_return_if_fail (priv->status == EMPATHY_TP_STREAMED_MEDIA_STATUS_ACCEPTED);
-
-  if (!priv->audio->exists)
-      return;
-
-  tp_cli_channel_interface_dtmf_call_stop_tone (priv->channel, -1,
-      priv->audio->id,
-      (tp_cli_channel_interface_dtmf_callback_for_stop_tone) tp_streamed_media_async_cb,
-      "stoping tone", NULL, G_OBJECT (call));
-}
-
-gboolean
-empathy_tp_streamed_media_has_dtmf (EmpathyTpStreamedMedia *call)
-{
-  EmpathyTpStreamedMediaPriv *priv = GET_PRIV (call);
-
-  g_return_val_if_fail (EMPATHY_IS_TP_STREAMED_MEDIA (call), FALSE);
-
-  return tp_proxy_has_interface_by_id (priv->channel,
-      TP_IFACE_QUARK_CHANNEL_INTERFACE_DTMF);
-}
-
-/**
- * empathy_tp_streamed_media_is_receiving_video:
- * @call: the call
- *
- * Indicates if the call is receiving video or not.
- *
- * Returns: %TRUE if the call is currently receiving video, %FALSE otherwise.
- */
-gboolean
-empathy_tp_streamed_media_is_receiving_video (EmpathyTpStreamedMedia *call)
-{
-  EmpathyTpStreamedMediaPriv *priv = GET_PRIV (call);
-
-  g_return_val_if_fail (EMPATHY_IS_TP_STREAMED_MEDIA (call), FALSE);
-
-  if (!priv->video->exists)
-    return FALSE;
-
-  return priv->video->direction & TP_MEDIA_STREAM_DIRECTION_RECEIVE ?
-      TRUE : FALSE;
-}
-
-/**
- * empathy_tp_streamed_media_is_sending_video:
- * @call: the call
- *
- * Indicates if the call is sending video or not.
- *
- * Returns: %TRUE if the call is currently sending video, %FALSE otherwise.
- */
-gboolean
-empathy_tp_streamed_media_is_sending_video (EmpathyTpStreamedMedia *call)
-{
-  EmpathyTpStreamedMediaPriv *priv = GET_PRIV (call);
-
-  g_return_val_if_fail (EMPATHY_IS_TP_STREAMED_MEDIA (call), FALSE);
-
-  if (!priv->video->exists)
-    return FALSE;
-
-  return priv->video->direction & TP_MEDIA_STREAM_DIRECTION_SEND ?
-      TRUE : FALSE;
-}
-
-const gchar *
-empathy_tp_streamed_media_get_connection_manager (EmpathyTpStreamedMedia *self)
-{
-  EmpathyTpStreamedMediaPriv *priv = GET_PRIV (self);
-
-  return tp_account_get_connection_manager (priv->account);
-}
-
-gboolean
-empathy_tp_streamed_media_has_initial_video (EmpathyTpStreamedMedia *self)
-{
-  EmpathyTpStreamedMediaPriv *priv = GET_PRIV (self);
-  GHashTable *props;
-  gboolean initial_video;
-  gboolean valid;
-
-  if (priv->channel == NULL)
-    return FALSE;
-
-  g_object_get (priv->channel, "channel-properties", &props, NULL);
-
-  initial_video = tp_asv_get_boolean (props,
-    TP_IFACE_CHANNEL_TYPE_STREAMED_MEDIA ".InitialVideo", &valid);
-  if (!valid)
-    initial_video = FALSE;
-
-  g_hash_table_unref (props);
-  return initial_video;
-}
-
-static void
-leave_remove_members_cb (TpChannel *proxy,
-    const GError *error,
-    gpointer user_data,
-    GObject *weak_object)
-{
-  EmpathyTpStreamedMedia *self = user_data;
-
-  if (error == NULL)
-    return;
-
-  DEBUG ("RemoveMembers failed (%s); closing the channel", error->message);
-  empathy_tp_streamed_media_close (self);
-}
-
-void
-empathy_tp_streamed_media_leave (EmpathyTpStreamedMedia *self)
-{
-  EmpathyTpStreamedMediaPriv *priv = GET_PRIV (self);
-  TpHandle self_handle;
-  GArray array = { (gchar *) &self_handle, 1 };
-
-  if (!tp_proxy_has_interface_by_id (priv->channel,
-        TP_IFACE_QUARK_CHANNEL_INTERFACE_GROUP))
-    {
-      empathy_tp_streamed_media_close (self);
-      return;
-    }
-
-  self_handle = tp_channel_group_get_self_handle (priv->channel);
-  if (self_handle == 0)
-    {
-      /* we are not member of the channel */
-      empathy_tp_streamed_media_close (self);
-      return;
-    }
-
-  tp_cli_channel_interface_group_call_remove_members (priv->channel, -1, &array,
-      "", leave_remove_members_cb, self, NULL, G_OBJECT (self));
-}
-
-EmpathyTpStreamedMediaStatus
-empathy_tp_streamed_media_get_status (EmpathyTpStreamedMedia *self)
-{
-  EmpathyTpStreamedMediaPriv *priv = GET_PRIV (self);
-
-  return priv->status;
-}
-
-TpAccount *
-empathy_tp_streamed_media_get_account (EmpathyTpStreamedMedia *self)
-{
-  EmpathyTpStreamedMediaPriv *priv = GET_PRIV (self);
-
-  return priv->account;
-}
diff --git a/libempathy/empathy-tp-streamed-media.h b/libempathy/empathy-tp-streamed-media.h
deleted file mode 100644 (file)
index 35612b2..0000000
+++ /dev/null
@@ -1,113 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Copyright (C) 2007 Elliot Fairweather
- * Copyright (C) 2007-2008 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
- *
- * Authors: Elliot Fairweather <elliot.fairweather@collabora.co.uk>
- *          Xavier Claessens <xclaesse@gmail.com>
- */
-
-#ifndef __EMPATHY_TP_STREAMED_MEDIA_H__
-#define __EMPATHY_TP_STREAMED_MEDIA_H__
-
-#include <glib.h>
-#include <telepathy-glib/channel.h>
-
-#include "empathy-contact.h"
-
-G_BEGIN_DECLS
-
-#define EMPATHY_TYPE_TP_STREAMED_MEDIA (empathy_tp_streamed_media_get_type ())
-#define EMPATHY_TP_STREAMED_MEDIA(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), \
-    EMPATHY_TYPE_TP_STREAMED_MEDIA, EmpathyTpStreamedMedia))
-#define EMPATHY_TP_STREAMED_MEDIA_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), \
-    EMPATHY_TYPE_TP_STREAMED_MEDIA, EmpathyTpStreamedMediaClass))
-#define EMPATHY_IS_TP_STREAMED_MEDIA(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), \
-    EMPATHY_TYPE_TP_STREAMED_MEDIA))
-#define EMPATHY_IS_TP_STREAMED_MEDIA_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), \
-    EMPATHY_TYPE_TP_STREAMED_MEDIA))
-#define EMPATHY_TP_STREAMED_MEDIA_GET_CLASS(object) \
-  (G_TYPE_INSTANCE_GET_CLASS ((object), \
-    EMPATHY_TYPE_TP_STREAMED_MEDIA, EmpathyTpStreamedMediaClass))
-
-typedef struct _EmpathyTpStreamedMedia EmpathyTpStreamedMedia;
-typedef struct _EmpathyTpStreamedMediaClass EmpathyTpStreamedMediaClass;
-
-struct _EmpathyTpStreamedMedia {
-  GObject parent;
-  gpointer priv;
-};
-
-struct _EmpathyTpStreamedMediaClass {
-  GObjectClass parent_class;
-};
-
-typedef enum
-{
-  EMPATHY_TP_STREAMED_MEDIA_STATUS_READYING,
-  EMPATHY_TP_STREAMED_MEDIA_STATUS_PENDING,
-  EMPATHY_TP_STREAMED_MEDIA_STATUS_ACCEPTED,
-  EMPATHY_TP_STREAMED_MEDIA_STATUS_CLOSED
-} EmpathyTpStreamedMediaStatus;
-
-typedef struct
-{
-  gboolean exists;
-  guint id;
-  guint state;
-  guint direction;
-} EmpathyTpStreamedMediaStream;
-
-GType empathy_tp_streamed_media_get_type (void) G_GNUC_CONST;
-EmpathyTpStreamedMedia *empathy_tp_streamed_media_new (TpAccount *account,
-    TpChannel *channel);
-void empathy_tp_streamed_media_close (EmpathyTpStreamedMedia *streamed_media);
-
-void empathy_tp_streamed_media_accept_incoming_call (
-    EmpathyTpStreamedMedia *streamed_media);
-void empathy_tp_streamed_media_request_video_stream_direction (
-    EmpathyTpStreamedMedia *streamed_media,
-    gboolean is_sending);
-void empathy_tp_streamed_media_start_tone (
-    EmpathyTpStreamedMedia *streamed_media,
-    TpDTMFEvent event);
-void empathy_tp_streamed_media_stop_tone (
-    EmpathyTpStreamedMedia *streamed_media);
-gboolean empathy_tp_streamed_media_has_dtmf (
-    EmpathyTpStreamedMedia *streamed_media);
-gboolean empathy_tp_streamed_media_is_receiving_video (
-    EmpathyTpStreamedMedia *streamed_media);
-gboolean empathy_tp_streamed_media_is_sending_video (
-    EmpathyTpStreamedMedia *streamed_media);
-
-const gchar * empathy_tp_streamed_media_get_connection_manager (
-    EmpathyTpStreamedMedia *self);
-
-gboolean empathy_tp_streamed_media_has_initial_video (
-    EmpathyTpStreamedMedia *self);
-
-void empathy_tp_streamed_media_leave (EmpathyTpStreamedMedia *self);
-
-EmpathyTpStreamedMediaStatus empathy_tp_streamed_media_get_status (
-    EmpathyTpStreamedMedia *self);
-
-TpAccount * empathy_tp_streamed_media_get_account (
-    EmpathyTpStreamedMedia *self);
-
-G_END_DECLS
-
-#endif /* __EMPATHY_TP_STREAMED_MEDIA_H__ */
index 2f4c9eddece5c09d9ab92bb2ed126f9d8cd147c0..62c6544287d9ef037c049f5d2538e7f91e03c875 100644 (file)
@@ -1167,10 +1167,28 @@ empathy_sasl_channel_supports_mechanism (TpChannel *channel,
   return tp_strv_contains (available_mechanisms, mechanism);
 }
 
+static FolksIndividual *
+create_individual_from_persona (FolksPersona *persona)
+{
+  GeeSet *personas;
+  FolksIndividual *individual;
+
+  personas = GEE_SET (
+      gee_hash_set_new (FOLKS_TYPE_PERSONA, g_object_ref, g_object_unref,
+      g_direct_hash, g_direct_equal));
+
+  gee_collection_add (GEE_COLLECTION (personas), persona);
+
+  individual = folks_individual_new (personas);
+
+  g_clear_object (&personas);
+
+  return individual;
+}
+
 FolksIndividual *
 empathy_create_individual_from_tp_contact (TpContact *contact)
 {
-  GeeSet *personas;
   TpfPersona *persona;
   FolksIndividual *individual;
 
@@ -1182,17 +1200,9 @@ empathy_create_individual_from_tp_contact (TpContact *contact)
       return NULL;
     }
 
-  personas = GEE_SET (
-      gee_hash_set_new (FOLKS_TYPE_PERSONA, g_object_ref, g_object_unref,
-      g_direct_hash, g_direct_equal));
-
-  gee_collection_add (GEE_COLLECTION (personas), persona);
-
-  individual = folks_individual_new (personas);
-
-  g_clear_object (&persona);
-  g_clear_object (&personas);
+  individual = create_individual_from_persona (FOLKS_PERSONA (persona));
 
+  g_object_unref (persona);
   return individual;
 }
 
@@ -1201,17 +1211,24 @@ empathy_create_individual_from_tp_contact (TpContact *contact)
 FolksIndividual *
 empathy_ensure_individual_from_tp_contact (TpContact *contact)
 {
-  EmpathyIndividualManager *mgr;
+  TpfPersona *persona;
   FolksIndividual *individual;
 
-  mgr = empathy_individual_manager_dup_singleton ();
-  individual = empathy_individual_manager_lookup_by_contact (mgr, contact);
+  persona = tpf_persona_dup_for_contact (contact);
+  if (persona == NULL)
+    {
+      DEBUG ("Failed to get a persona for %s",
+          tp_contact_get_identifier (contact));
+      return NULL;
+    }
+
+  individual = folks_persona_get_individual (FOLKS_PERSONA (persona));
 
   if (individual != NULL)
     g_object_ref (individual);
   else
-    individual = empathy_create_individual_from_tp_contact (contact);
+    individual = create_individual_from_persona (FOLKS_PERSONA (persona));
 
-  g_object_unref (mgr);
+  g_object_unref (persona);
   return individual;
 }
index 597cf8620bb354cfdc8639dae63443e35193aac7..f79cb3f3be2de9ae74d7fdae806d5945dccedd7a 100644 (file)
@@ -3,7 +3,7 @@
 
 data/empathy.desktop.in.in
 data/empathy-accounts.desktop.in.in
-data/org.gnome.Empathy.gschema.xml.in
+[type: gettext/gsettings]data/org.gnome.Empathy.gschema.xml
 
 libempathy/empathy-ft-handler.c
 libempathy/empathy-message.c
@@ -79,8 +79,6 @@ src/empathy-about-dialog.c
 src/empathy-accounts-dialog.c
 [type: gettext/glade]src/empathy-accounts-dialog.ui
 src/empathy-auth-client.c
-src/empathy-av.c
-src/empathy-streamed-media-window.c
 [type: gettext/glade]src/empathy-call-window.ui
 src/empathy-chat-window.c
 [type: gettext/glade]src/empathy-chat-window.ui
@@ -102,14 +100,12 @@ src/empathy-preferences.c
 [type: gettext/glade]src/empathy-preferences.ui
 src/empathy-status-icon.c
 [type: gettext/glade]src/empathy-status-icon.ui
-[type: gettext/glade]src/empathy-streamed-media-window.ui
 [type: gettext/glade]src/empathy-call-window-fullscreen.ui
 src/empathy-map-view.c
 [type: gettext/glade]src/empathy-map-view.ui
 src/empathy-debug-window.c
 src/empathy-invite-participant-dialog.c
 src/empathy-accounts.c
-src/empathy-av.c
 src/empathy-debugger.c
 src/empathy-chat.c
 src/empathy-notifications-approver.c
index 49ddd0e5bd8c4c9df4e594cee39314a921052d79..549ce2d7001b0946b151d154baf19ab3210809ca 100644 (file)
@@ -9,7 +9,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: empathy\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-04-10 23:31+0200\n"
+"POT-Creation-Date: 2012-04-10 23:32+0200\n"
 "PO-Revision-Date: 2012-03-17 00:05+0100\n"
 "Last-Translator: Gil Forcada <gilforcada@guifi.net>\n"
 "Language-Team: català; valencià <tradgnome@softcatala.org>\n"
@@ -39,7 +39,7 @@ msgstr ""
 
 #. Tweak the dialog
 #: ../data/empathy-accounts.desktop.in.in.h:1
-#: ../src/empathy-accounts-dialog.c:2552
+#: ../src/empathy-accounts-dialog.c:2527
 msgid "Messaging and VoIP Accounts"
 msgstr "Comptes de missatgeria i VoIP"
 
@@ -887,11 +887,11 @@ msgstr "_Aplica"
 msgid "L_og in"
 msgstr "_Entra"
 
-#: ../libempathy-gtk/empathy-account-widget.c:1812
+#: ../libempathy-gtk/empathy-account-widget.c:1810
 msgid "This account already exists on the server"
 msgstr "Ja existeix este compte al servidor"
 
-#: ../libempathy-gtk/empathy-account-widget.c:1816
+#: ../libempathy-gtk/empathy-account-widget.c:1814
 msgid "Create a new account on the server"
 msgstr "Crea un compte nou al servidor"
 
@@ -900,19 +900,19 @@ msgstr "Crea un compte nou al servidor"
 #. * 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:2241
+#: ../libempathy-gtk/empathy-account-widget.c:2236
 #, c-format
 msgid "%1$s on %2$s"
 msgstr "%1$s a %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:2267
+#: ../libempathy-gtk/empathy-account-widget.c:2262
 #, c-format
 msgid "%s Account"
 msgstr "Compte %s"
 
-#: ../libempathy-gtk/empathy-account-widget.c:2271
+#: ../libempathy-gtk/empathy-account-widget.c:2266
 msgid "New account"
 msgstr "Compte nou"
 
@@ -972,7 +972,7 @@ msgstr "_Servidor:"
 #: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:23
 #: ../libempathy-gtk/empathy-account-widget-msn.ui.h:7
 #: ../libempathy-gtk/empathy-account-widget-local-xmpp.ui.h:7
-#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:21
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:22
 #: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:9
 msgid "Advanced"
 msgstr "Avançat"
@@ -990,7 +990,7 @@ msgstr "Quina és la vostra contrasenya de l'AIM?"
 #: ../libempathy-gtk/empathy-account-widget-icq.ui.h:11
 #: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:7
 #: ../libempathy-gtk/empathy-account-widget-msn.ui.h:10
-#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:24
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:25
 msgid "Remember Password"
 msgstr "Recorda la contrasenya?"
 
@@ -1034,32 +1034,32 @@ msgstr "Quin és el vostre UIN de l'ICQ?"
 msgid "What is your ICQ password?"
 msgstr "Quina és la vostra contrasenya de l'ICQ?"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.c:205
-#: ../libempathy-gtk/empathy-account-widget-sip.c:238
+#: ../libempathy-gtk/empathy-account-widget-sip.c:207
+#: ../libempathy-gtk/empathy-account-widget-sip.c:240
 msgid "Auto"
 msgstr "Automàtic"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.c:208
+#: ../libempathy-gtk/empathy-account-widget-sip.c:210
 msgid "UDP"
 msgstr "UDP"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.c:211
+#: ../libempathy-gtk/empathy-account-widget-sip.c:213
 msgid "TCP"
 msgstr "TCP"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.c:214
+#: ../libempathy-gtk/empathy-account-widget-sip.c:216
 msgid "TLS"
 msgstr "TLS"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.c:243
+#: ../libempathy-gtk/empathy-account-widget-sip.c:245
 msgid "Register"
 msgstr "Registre"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.c:248
+#: ../libempathy-gtk/empathy-account-widget-sip.c:250
 msgid "Options"
 msgstr "Opcions"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.c:251
+#: ../libempathy-gtk/empathy-account-widget-sip.c:253
 msgid "None"
 msgstr "Cap"
 
@@ -1320,11 +1320,16 @@ msgstr "Ignora els errors de la TLS"
 msgid "Port:"
 msgstr "Port:"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:22
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:21
+#, fuzzy
+msgid "Local IP Address:"
+msgstr "_Adreça electrònica:"
+
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:23
 msgid "What is your SIP login ID?"
 msgstr "Quin és el vostre identificador d'entrada de SIP?"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:23
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:24
 msgid "What is your SIP account password?"
 msgstr "Quina és la vostra contrasenya del compte de SIP?"
 
@@ -1410,40 +1415,40 @@ msgstr "Este protocol no permet fer trucades d'emergència"
 msgid "You don't have enough credit in order to place this call"
 msgstr "No teniu prou saldo per fer esta trucada"
 
-#: ../libempathy-gtk/empathy-chat.c:728
+#: ../libempathy-gtk/empathy-chat.c:727
 msgid "Failed to open private chat"
 msgstr "No s'ha pogut obrir un xat privat"
 
-#: ../libempathy-gtk/empathy-chat.c:786
+#: ../libempathy-gtk/empathy-chat.c:785
 msgid "Topic not supported on this conversation"
 msgstr "No es pot establir el tema en esta conversa"
 
-#: ../libempathy-gtk/empathy-chat.c:792
+#: ../libempathy-gtk/empathy-chat.c:791
 msgid "You are not allowed to change the topic"
 msgstr "No podeu canviar el tema"
 
-#: ../libempathy-gtk/empathy-chat.c:991
+#: ../libempathy-gtk/empathy-chat.c:990
 #, c-format
 msgid "“%s” is not a valid contact ID"
 msgstr "«%s» no és un identificador de contacte vàlid"
 
-#: ../libempathy-gtk/empathy-chat.c:1086
+#: ../libempathy-gtk/empathy-chat.c:1085
 msgid "/clear: clear all messages from the current conversation"
 msgstr "/clear: neteja tots els missatges de la conversa actual"
 
-#: ../libempathy-gtk/empathy-chat.c:1089
+#: ../libempathy-gtk/empathy-chat.c:1088
 msgid "/topic <topic>: set the topic of the current conversation"
 msgstr "/topic <tema>: estableix el tema de la conversa actual"
 
-#: ../libempathy-gtk/empathy-chat.c:1092
+#: ../libempathy-gtk/empathy-chat.c:1091
 msgid "/join <chat room ID>: join a new chat room"
 msgstr "/join <ID sala de xat>: entra a una sala de xat nova"
 
-#: ../libempathy-gtk/empathy-chat.c:1095
+#: ../libempathy-gtk/empathy-chat.c:1094
 msgid "/j <chat room ID>: join a new chat room"
 msgstr "/j <ID sala de xat>: entra a una sala de xat nova"
 
-#: ../libempathy-gtk/empathy-chat.c:1099
+#: ../libempathy-gtk/empathy-chat.c:1098
 msgid ""
 "/part [<chat room ID>] [<reason>]: leave the chat room, by default the "
 "current one"
@@ -1451,23 +1456,23 @@ msgstr ""
 "/part [<identificador de la sala de xat>] [<motiu>]: eixiu de la sala de "
 "xat, si no s'indica el contrari, l'actual"
 
-#: ../libempathy-gtk/empathy-chat.c:1103
+#: ../libempathy-gtk/empathy-chat.c:1102
 msgid "/query <contact ID> [<message>]: open a private chat"
 msgstr "/query <ID d'un contacte> [missatge]: obri un xat privat"
 
-#: ../libempathy-gtk/empathy-chat.c:1106
+#: ../libempathy-gtk/empathy-chat.c:1105
 msgid "/msg <contact ID> <message>: open a private chat"
 msgstr "/msg <ID d'un contacte> <missatge>: obri un xat privat"
 
-#: ../libempathy-gtk/empathy-chat.c:1109
+#: ../libempathy-gtk/empathy-chat.c:1108
 msgid "/nick <nickname>: change your nickname on the current server"
 msgstr "/nick <sobrenom>: canvieu el vostre sobrenom en el servidor actual"
 
-#: ../libempathy-gtk/empathy-chat.c:1112
+#: ../libempathy-gtk/empathy-chat.c:1111
 msgid "/me <message>: send an ACTION message to the current conversation"
 msgstr "/me <missatge>: envia un missatge d'ACCIÓ a la conversa actual"
 
-#: ../libempathy-gtk/empathy-chat.c:1115
+#: ../libempathy-gtk/empathy-chat.c:1114
 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 "
@@ -1477,12 +1482,12 @@ msgstr ""
 "enviar un missatge que comence per «/». Per exemple: «/say /join s'utilitza "
 "per entrar a una sala de xat nova»"
 
-#: ../libempathy-gtk/empathy-chat.c:1120
+#: ../libempathy-gtk/empathy-chat.c:1119
 msgid "/whois <contact ID>: display information about a contact"
 msgstr ""
 "/whois <identificador del contacte>: mostra informació sobre el contacte"
 
-#: ../libempathy-gtk/empathy-chat.c:1123
+#: ../libempathy-gtk/empathy-chat.c:1122
 msgid ""
 "/help [<command>]: show all supported commands. If <command> is defined, "
 "show its usage."
@@ -1490,127 +1495,127 @@ msgstr ""
 "/help [<orde>]: mostra totes les ordes possibles. Si s'indica una <orde> es "
 "mostra com s'ha d'utilitzar."
 
-#: ../libempathy-gtk/empathy-chat.c:1142
+#: ../libempathy-gtk/empathy-chat.c:1141
 #, c-format
 msgid "Usage: %s"
 msgstr "Forma d'ús: %s"
 
-#: ../libempathy-gtk/empathy-chat.c:1187
+#: ../libempathy-gtk/empathy-chat.c:1186
 msgid "Unknown command"
 msgstr "Orde desconeguda"
 
-#: ../libempathy-gtk/empathy-chat.c:1313
+#: ../libempathy-gtk/empathy-chat.c:1312
 msgid "Unknown command; see /help for the available commands"
 msgstr "Orde desconeguda, vegeu /help per a la llista d'ordes disponibles"
 
-#: ../libempathy-gtk/empathy-chat.c:1564
+#: ../libempathy-gtk/empathy-chat.c:1563
 msgid "insufficient balance to send message"
 msgstr "no hi ha prou saldo per enviar el missatge"
 
-#: ../libempathy-gtk/empathy-chat.c:1568 ../libempathy-gtk/empathy-chat.c:1582
-#: ../libempathy-gtk/empathy-chat.c:1645
+#: ../libempathy-gtk/empathy-chat.c:1567 ../libempathy-gtk/empathy-chat.c:1581
+#: ../libempathy-gtk/empathy-chat.c:1644
 #, c-format
 msgid "Error sending message '%s': %s"
 msgstr "S'ha produït un error en enviar el missatge «%s»: %s"
 
-#: ../libempathy-gtk/empathy-chat.c:1570 ../libempathy-gtk/empathy-chat.c:1587
-#: ../libempathy-gtk/empathy-chat.c:1649
+#: ../libempathy-gtk/empathy-chat.c:1569 ../libempathy-gtk/empathy-chat.c:1586
+#: ../libempathy-gtk/empathy-chat.c:1648
 #, c-format
 msgid "Error sending message: %s"
 msgstr "S'ha produït un error en enviar el missatge: %s"
 
 #. translators: error used when user doesn't have enough credit on his
 #. * account to send the message.
-#: ../libempathy-gtk/empathy-chat.c:1576
+#: ../libempathy-gtk/empathy-chat.c:1575
 #, c-format
 msgid "insufficient balance to send message. <a href='%s'>Top up</a>."
 msgstr ""
 "no hi ha prou saldo per enviar el missatge. <a href='%s'>Recarrega</a>."
 
-#: ../libempathy-gtk/empathy-chat.c:1616
+#: ../libempathy-gtk/empathy-chat.c:1615
 msgid "not capable"
 msgstr "no es pot realitzar"
 
-#: ../libempathy-gtk/empathy-chat.c:1623
+#: ../libempathy-gtk/empathy-chat.c:1622
 msgid "offline"
 msgstr "desconnectat"
 
-#: ../libempathy-gtk/empathy-chat.c:1626
+#: ../libempathy-gtk/empathy-chat.c:1625
 msgid "invalid contact"
 msgstr "contacte no vàlid"
 
-#: ../libempathy-gtk/empathy-chat.c:1629
+#: ../libempathy-gtk/empathy-chat.c:1628
 msgid "permission denied"
 msgstr "s'ha denegat el permís"
 
-#: ../libempathy-gtk/empathy-chat.c:1632
+#: ../libempathy-gtk/empathy-chat.c:1631
 msgid "too long message"
 msgstr "el missatge és massa llarg"
 
-#: ../libempathy-gtk/empathy-chat.c:1635
+#: ../libempathy-gtk/empathy-chat.c:1634
 msgid "not implemented"
 msgstr "no implementat"
 
-#: ../libempathy-gtk/empathy-chat.c:1639
+#: ../libempathy-gtk/empathy-chat.c:1638
 msgid "unknown"
 msgstr "desconegut"
 
-#: ../libempathy-gtk/empathy-chat.c:1706 ../src/empathy-chat-window.c:920
+#: ../libempathy-gtk/empathy-chat.c:1705 ../src/empathy-chat-window.c:919
 msgid "Topic:"
 msgstr "Tema:"
 
-#: ../libempathy-gtk/empathy-chat.c:1721
+#: ../libempathy-gtk/empathy-chat.c:1720
 #, c-format
 msgid "Topic set to: %s"
 msgstr "Tema establit a: %s"
 
-#: ../libempathy-gtk/empathy-chat.c:1723
+#: ../libempathy-gtk/empathy-chat.c:1722
 #, c-format
 msgid "Topic set by %s to: %s"
 msgstr "Tema establit per %s a: %s"
 
 #. No need to display this 'event' is no topic can be defined anyway
-#: ../libempathy-gtk/empathy-chat.c:1728
+#: ../libempathy-gtk/empathy-chat.c:1727
 msgid "No topic defined"
 msgstr "No s'ha definit cap tema"
 
-#: ../libempathy-gtk/empathy-chat.c:2244
+#: ../libempathy-gtk/empathy-chat.c:2243
 msgid "(No Suggestions)"
 msgstr "(Cap suggeriment)"
 
 #. translators: %s is the selected word
-#: ../libempathy-gtk/empathy-chat.c:2312
+#: ../libempathy-gtk/empathy-chat.c:2311
 #, c-format
 msgid "Add '%s' to Dictionary"
 msgstr "Afig «%s» al diccionari"
 
 #. translators: first %s is the selected word,
 #. * second %s is the language name of the target dictionary
-#: ../libempathy-gtk/empathy-chat.c:2349
+#: ../libempathy-gtk/empathy-chat.c:2348
 #, c-format
 msgid "Add '%s' to %s Dictionary"
 msgstr "Afig «%s» al diccionari %s"
 
-#: ../libempathy-gtk/empathy-chat.c:2419
+#: ../libempathy-gtk/empathy-chat.c:2418
 msgid "Insert Smiley"
 msgstr "Insereix una emoticona"
 
 #. send button
-#: ../libempathy-gtk/empathy-chat.c:2437
+#: ../libempathy-gtk/empathy-chat.c:2436
 #: ../libempathy-gtk/empathy-ui-utils.c:1880
 msgid "_Send"
 msgstr "_Envia"
 
 #. Spelling suggestions
-#: ../libempathy-gtk/empathy-chat.c:2494
+#: ../libempathy-gtk/empathy-chat.c:2493
 msgid "_Spelling Suggestions"
 msgstr "_Suggeriments d'ortografia"
 
-#: ../libempathy-gtk/empathy-chat.c:2583
+#: ../libempathy-gtk/empathy-chat.c:2582
 msgid "Failed to retrieve recent logs"
 msgstr "No s'han pogut recuperar els registres recents"
 
-#: ../libempathy-gtk/empathy-chat.c:2722
+#: ../libempathy-gtk/empathy-chat.c:2721
 #, c-format
 msgid "%s has disconnected"
 msgstr "En/na %s s'ha desconnectat"
@@ -1618,12 +1623,12 @@ msgstr "En/na %s s'ha desconnectat"
 #. translators: reverse the order of these arguments
 #. * if the kicked should come before the kicker in your locale.
 #.
-#: ../libempathy-gtk/empathy-chat.c:2729
+#: ../libempathy-gtk/empathy-chat.c:2728
 #, c-format
 msgid "%1$s was kicked by %2$s"
 msgstr "En/na %2$s ha expulsat en/na %1$s"
 
-#: ../libempathy-gtk/empathy-chat.c:2732
+#: ../libempathy-gtk/empathy-chat.c:2731
 #, c-format
 msgid "%s was kicked"
 msgstr "S'ha expulsat en/na %s"
@@ -1631,17 +1636,17 @@ msgstr "S'ha expulsat en/na %s"
 #. translators: reverse the order of these arguments
 #. * if the banned should come before the banner in your locale.
 #.
-#: ../libempathy-gtk/empathy-chat.c:2740
+#: ../libempathy-gtk/empathy-chat.c:2739
 #, c-format
 msgid "%1$s was banned by %2$s"
 msgstr "En/na %2$s ha bandejat en/na %1$s"
 
-#: ../libempathy-gtk/empathy-chat.c:2743
+#: ../libempathy-gtk/empathy-chat.c:2742
 #, c-format
 msgid "%s was banned"
 msgstr "s'ha bandejat en/na %s"
 
-#: ../libempathy-gtk/empathy-chat.c:2747
+#: ../libempathy-gtk/empathy-chat.c:2746
 #, c-format
 msgid "%s has left the room"
 msgstr "En/na %s ha eixit de la sala"
@@ -1651,17 +1656,17 @@ msgstr "En/na %s ha eixit de la sala"
 #. * given by the user living the room. If this poses a problem,
 #. * please let us know. :-)
 #.
-#: ../libempathy-gtk/empathy-chat.c:2756
+#: ../libempathy-gtk/empathy-chat.c:2755
 #, c-format
 msgid " (%s)"
 msgstr " (%s)"
 
-#: ../libempathy-gtk/empathy-chat.c:2781
+#: ../libempathy-gtk/empathy-chat.c:2780
 #, c-format
 msgid "%s has joined the room"
 msgstr "En/na %s ha entrat a la sala"
 
-#: ../libempathy-gtk/empathy-chat.c:2806
+#: ../libempathy-gtk/empathy-chat.c:2805
 #, c-format
 msgid "%s is now known as %s"
 msgstr "En/na %s ara es diu %s"
@@ -1669,7 +1674,7 @@ msgstr "En/na %s ara es diu %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:2993
+#: ../libempathy-gtk/empathy-chat.c:2992
 #: ../src/empathy-streamed-media-window.c:1888
 #: ../src/empathy-event-manager.c:1279 ../src/empathy-call-window.c:1466
 #: ../src/empathy-call-window.c:1516 ../src/empathy-call-window.c:2562
@@ -1677,47 +1682,47 @@ msgid "Disconnected"
 msgstr "Fora de línia"
 
 #. Add message
-#: ../libempathy-gtk/empathy-chat.c:3657
+#: ../libempathy-gtk/empathy-chat.c:3656
 msgid "Would you like to store this password?"
 msgstr "Voleu emmagatzemar esta contrasenya?"
 
-#: ../libempathy-gtk/empathy-chat.c:3663
+#: ../libempathy-gtk/empathy-chat.c:3662
 msgid "Remember"
 msgstr "Recorda-la"
 
-#: ../libempathy-gtk/empathy-chat.c:3673
+#: ../libempathy-gtk/empathy-chat.c:3672
 msgid "Not now"
 msgstr "Ara no"
 
-#: ../libempathy-gtk/empathy-chat.c:3717
+#: ../libempathy-gtk/empathy-chat.c:3716
 #: ../libempathy-gtk/empathy-bad-password-dialog.c:142
 msgid "Retry"
 msgstr "Torna-ho a intentar"
 
-#: ../libempathy-gtk/empathy-chat.c:3721
+#: ../libempathy-gtk/empathy-chat.c:3720
 msgid "Wrong password; please try again:"
 msgstr "Contrasenya errònia, torneu-ho a intentar:"
 
 #. Add message
-#: ../libempathy-gtk/empathy-chat.c:3851
+#: ../libempathy-gtk/empathy-chat.c:3850
 msgid "This room is protected by a password:"
 msgstr "Esta sala és protegida per una contrasenya:"
 
-#: ../libempathy-gtk/empathy-chat.c:3878
+#: ../libempathy-gtk/empathy-chat.c:3877
 msgid "Join"
 msgstr "Uneix-m'hi"
 
-#: ../libempathy-gtk/empathy-chat.c:4070 ../src/empathy-event-manager.c:1300
+#: ../libempathy-gtk/empathy-chat.c:4069 ../src/empathy-event-manager.c:1300
 msgid "Connected"
 msgstr "Connectat"
 
-#: ../libempathy-gtk/empathy-chat.c:4125
+#: ../libempathy-gtk/empathy-chat.c:4124
 msgid "Conversation"
 msgstr "Conversa"
 
 #. Translators: this string is a something like
 #. * "Escher Cat (SMS)"
-#: ../libempathy-gtk/empathy-chat.c:4130
+#: ../libempathy-gtk/empathy-chat.c:4129
 #, c-format
 msgid "%s (SMS)"
 msgstr "%s (SMS)"
@@ -1844,133 +1849,133 @@ msgstr "El vostre missatge d'introducció:"
 msgid "Please let me see when you're online. Thanks!"
 msgstr "Permeta'm veure quan estàs en línia. Gràcies."
 
-#: ../libempathy-gtk/empathy-contact-widget.c:567
+#: ../libempathy-gtk/empathy-contact-widget.c:566
 #: ../libempathy-gtk/empathy-individual-widget.c:304
 msgid "Channels:"
 msgstr "Canals:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:747
+#: ../libempathy-gtk/empathy-contact-widget.c:746
 #: ../libempathy-gtk/empathy-individual-widget.c:455
 msgid "Country ISO Code:"
 msgstr "Codi ISO del país:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:749
+#: ../libempathy-gtk/empathy-contact-widget.c:748
 #: ../libempathy-gtk/empathy-individual-widget.c:457
 msgid "Country:"
 msgstr "País:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:751
+#: ../libempathy-gtk/empathy-contact-widget.c:750
 #: ../libempathy-gtk/empathy-individual-widget.c:459
 msgid "State:"
 msgstr "Estat:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:753
+#: ../libempathy-gtk/empathy-contact-widget.c:752
 #: ../libempathy-gtk/empathy-individual-widget.c:461
 msgid "City:"
 msgstr "Ciutat:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:755
+#: ../libempathy-gtk/empathy-contact-widget.c:754
 #: ../libempathy-gtk/empathy-individual-widget.c:463
 msgid "Area:"
 msgstr "Àrea:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:757
+#: ../libempathy-gtk/empathy-contact-widget.c:756
 #: ../libempathy-gtk/empathy-individual-widget.c:465
 msgid "Postal Code:"
 msgstr "Codi postal:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:759
+#: ../libempathy-gtk/empathy-contact-widget.c:758
 #: ../libempathy-gtk/empathy-individual-widget.c:467
 msgid "Street:"
 msgstr "Carrer:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:761
+#: ../libempathy-gtk/empathy-contact-widget.c:760
 #: ../libempathy-gtk/empathy-individual-widget.c:469
 msgid "Building:"
 msgstr "Edifici:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:763
+#: ../libempathy-gtk/empathy-contact-widget.c:762
 #: ../libempathy-gtk/empathy-individual-widget.c:471
 msgid "Floor:"
 msgstr "Planta:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:765
+#: ../libempathy-gtk/empathy-contact-widget.c:764
 #: ../libempathy-gtk/empathy-individual-widget.c:473
 msgid "Room:"
 msgstr "Habitació:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:767
+#: ../libempathy-gtk/empathy-contact-widget.c:766
 #: ../libempathy-gtk/empathy-individual-widget.c:475
 msgid "Text:"
 msgstr "Text:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:769
+#: ../libempathy-gtk/empathy-contact-widget.c:768
 #: ../libempathy-gtk/empathy-individual-widget.c:477
 msgid "Description:"
 msgstr "Descripció:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:771
+#: ../libempathy-gtk/empathy-contact-widget.c:770
 #: ../libempathy-gtk/empathy-individual-widget.c:479
 msgid "URI:"
 msgstr "URI:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:773
+#: ../libempathy-gtk/empathy-contact-widget.c:772
 #: ../libempathy-gtk/empathy-individual-widget.c:481
 msgid "Accuracy Level:"
 msgstr "Nivell de precisió:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:775
+#: ../libempathy-gtk/empathy-contact-widget.c:774
 #: ../libempathy-gtk/empathy-individual-widget.c:483
 msgid "Error:"
 msgstr "Error:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:777
+#: ../libempathy-gtk/empathy-contact-widget.c:776
 #: ../libempathy-gtk/empathy-individual-widget.c:485
 msgid "Vertical Error (meters):"
 msgstr "Error vertical (metres):"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:779
+#: ../libempathy-gtk/empathy-contact-widget.c:778
 #: ../libempathy-gtk/empathy-individual-widget.c:487
 msgid "Horizontal Error (meters):"
 msgstr "Error horitzontal (metres):"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:781
+#: ../libempathy-gtk/empathy-contact-widget.c:780
 #: ../libempathy-gtk/empathy-individual-widget.c:489
 msgid "Speed:"
 msgstr "Velocitat:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:783
+#: ../libempathy-gtk/empathy-contact-widget.c:782
 #: ../libempathy-gtk/empathy-individual-widget.c:491
 msgid "Bearing:"
 msgstr "Direcció:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:785
+#: ../libempathy-gtk/empathy-contact-widget.c:784
 #: ../libempathy-gtk/empathy-individual-widget.c:493
 msgid "Climb Speed:"
 msgstr "Velocitat de pujada:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:787
+#: ../libempathy-gtk/empathy-contact-widget.c:786
 #: ../libempathy-gtk/empathy-individual-widget.c:495
 msgid "Last Updated on:"
 msgstr "Última actualització a:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:789
+#: ../libempathy-gtk/empathy-contact-widget.c:788
 #: ../libempathy-gtk/empathy-individual-widget.c:497
 msgid "Longitude:"
 msgstr "Longitud:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:791
+#: ../libempathy-gtk/empathy-contact-widget.c:790
 #: ../libempathy-gtk/empathy-individual-widget.c:499
 msgid "Latitude:"
 msgstr "Latitud:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:793
+#: ../libempathy-gtk/empathy-contact-widget.c:792
 #: ../libempathy-gtk/empathy-individual-widget.c:501
 msgid "Altitude:"
 msgstr "Altitud:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:846
-#: ../libempathy-gtk/empathy-contact-widget.c:861
+#: ../libempathy-gtk/empathy-contact-widget.c:845
+#: ../libempathy-gtk/empathy-contact-widget.c:860
 #: ../libempathy-gtk/empathy-individual-widget.c:593
 #: ../libempathy-gtk/empathy-individual-widget.c:608
 #: ../src/empathy-preferences.ui.h:35
@@ -1978,32 +1983,32 @@ msgid "Location"
 msgstr "Ubicació"
 
 #. translators: format is "Location, $date"
-#: ../libempathy-gtk/empathy-contact-widget.c:863
+#: ../libempathy-gtk/empathy-contact-widget.c:862
 #: ../libempathy-gtk/empathy-individual-widget.c:610
 #, c-format
 msgid "%s, %s"
 msgstr "%s el %s"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:915
+#: ../libempathy-gtk/empathy-contact-widget.c:914
 #: ../libempathy-gtk/empathy-individual-widget.c:659
 msgid "%B %e, %Y at %R UTC"
 msgstr "%e de %B de %Y a les %R UTC"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:997
+#: ../libempathy-gtk/empathy-contact-widget.c:996
 #: ../libempathy-gtk/empathy-individual-widget.c:900
 msgid "Save Avatar"
 msgstr "Alça l'avatar"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:1053
+#: ../libempathy-gtk/empathy-contact-widget.c:1052
 #: ../libempathy-gtk/empathy-individual-widget.c:958
 msgid "Unable to save avatar"
 msgstr "No s'ha pogut alçar l'avatar"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:1455
+#: ../libempathy-gtk/empathy-contact-widget.c:1454
 msgid "Personal Details"
 msgstr "Dades personals"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:1458
+#: ../libempathy-gtk/empathy-contact-widget.c:1457
 #: ../libempathy-gtk/empathy-contact-widget.ui.h:6
 #: ../libempathy-gtk/empathy-individual-widget.ui.h:3
 msgid "Contact Details"
@@ -2134,7 +2139,7 @@ msgid "Select"
 msgstr "Seleccioneu"
 
 #: ../libempathy-gtk/empathy-groups-widget.c:403
-#: ../src/empathy-roster-window.c:1970
+#: ../src/empathy-roster-window.c:1969
 msgid "Group"
 msgstr "Grup"
 
@@ -2162,109 +2167,110 @@ msgstr "Metacontactes"
 #. 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:173
+#: ../libempathy-gtk/empathy-individual-menu.c:172
 #, c-format
 msgid "%s (%s)"
 msgstr "%s (%s)"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:345
+#: ../libempathy-gtk/empathy-individual-menu.c:344
 msgid "Select account to use to place the call"
 msgstr "Seleccioneu el compte amb el que voleu fer la trucada"
 
 #. translators: Call is a noun. This string is used in the window
 #. * title
-#: ../libempathy-gtk/empathy-individual-menu.c:349
+#: ../libempathy-gtk/empathy-individual-menu.c:348
 #: ../libempathy-gtk/empathy-log-window.ui.h:6
 #: ../src/empathy-streamed-media-window.c:1290
 #: ../src/empathy-call-window.ui.h:18
 msgid "Call"
 msgstr "Trucada"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:414
+#: ../libempathy-gtk/empathy-individual-menu.c:413
 msgid "Mobile"
 msgstr "Mòbil"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:416
+#: ../libempathy-gtk/empathy-individual-menu.c:415
 msgid "Work"
 msgstr "Faena"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:418
+#: ../libempathy-gtk/empathy-individual-menu.c:417
 msgid "HOME"
 msgstr "Casa"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:659
+#: ../libempathy-gtk/empathy-individual-menu.c:658
 msgid "_Block Contact"
 msgstr "_Bloca el contacte"
 
 #. add chat button
-#: ../libempathy-gtk/empathy-individual-menu.c:1018
+#: ../libempathy-gtk/empathy-individual-menu.c:1017
 #: ../libempathy-gtk/empathy-new-message-dialog.c:319
 #: ../src/empathy-roster-window-menubar.ui.h:1
 msgid "_Chat"
 msgstr "_Xat"
 
 #. add SMS button
-#: ../libempathy-gtk/empathy-individual-menu.c:1053
+#: ../libempathy-gtk/empathy-individual-menu.c:1052
 #: ../libempathy-gtk/empathy-new-message-dialog.c:313
 msgid "_SMS"
 msgstr "_SMS"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1086
+#: ../libempathy-gtk/empathy-individual-menu.c:1085
 msgctxt "menu item"
 msgid "_Audio Call"
 msgstr "Trucada de _veu"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1119
+#: ../libempathy-gtk/empathy-individual-menu.c:1118
 msgctxt "menu item"
 msgid "_Video Call"
 msgstr "_Trucada de vídeo"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1160
+#: ../libempathy-gtk/empathy-individual-menu.c:1159
 #: ../src/empathy-roster-window-menubar.ui.h:4
 msgid "_Previous Conversations"
 msgstr "Converses _anteriors"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1189
+#: ../libempathy-gtk/empathy-individual-menu.c:1188
 msgid "Send File"
 msgstr "Envia un fitxer"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1219
+#: ../libempathy-gtk/empathy-individual-menu.c:1218
 msgid "Share My Desktop"
 msgstr "Comparteix el meu escriptori"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1245
+#: ../libempathy-gtk/empathy-individual-menu.c:1244
 #: ../libempathy-gtk/empathy-individual-widget.c:1357
 msgid "Favorite"
 msgstr "Preferit"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1264
+#: ../libempathy-gtk/empathy-individual-menu.c:1263
 msgid "gnome-contacts not installed"
 msgstr "El Contactes del GNOME no està instal·lat"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1267
+#: ../libempathy-gtk/empathy-individual-menu.c:1266
 msgid "Please install gnome-contacts to access contacts details."
 msgstr ""
 "Instal·leu el Contactes del GNOME per accedir a les dades dels contactes."
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1398
+#: ../libempathy-gtk/empathy-individual-menu.c:1397
 msgid "Infor_mation"
 msgstr "Infor_mació"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1447
+#: ../libempathy-gtk/empathy-individual-menu.c:1446
 msgctxt "Edit individual (contextual menu)"
 msgid "_Edit"
 msgstr "_Edita"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1564
-#: ../src/empathy-chat-window.c:1192
+#. send invitation
+#: ../libempathy-gtk/empathy-individual-menu.c:1562
+#: ../src/empathy-chat-window.c:1190
 msgid "Inviting you to this room"
 msgstr "Se vos està convidant a esta sala"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1610
+#: ../libempathy-gtk/empathy-individual-menu.c:1608
 msgid "_Invite to Chat Room"
 msgstr "_Convida a la sala de xat"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1806
+#: ../libempathy-gtk/empathy-individual-menu.c:1804
 #: ../src/empathy-roster-window-menubar.ui.h:5
 msgid "_Add Contact…"
 msgstr "_Afig un contacte…"
@@ -2606,30 +2612,38 @@ msgstr ""
 #. COL_DISPLAY_MARKUP
 #. COL_STATUS_CUSTOMISABLE
 #. COL_TYPE
-#: ../libempathy-gtk/empathy-presence-chooser.c:167
-#: ../libempathy-gtk/empathy-presence-chooser.c:203
+#: ../libempathy-gtk/empathy-presence-chooser.c:166
+#: ../libempathy-gtk/empathy-presence-chooser.c:202
 msgid "Custom Message…"
 msgstr "Missatge personalitzat…"
 
-#: ../libempathy-gtk/empathy-presence-chooser.c:220
-#: ../libempathy-gtk/empathy-presence-chooser.c:222
+#: ../libempathy-gtk/empathy-presence-chooser.c:219
+#: ../libempathy-gtk/empathy-presence-chooser.c:221
 msgid "Edit Custom Messages…"
 msgstr "Edita els missatges personalitzats…"
 
-#: ../libempathy-gtk/empathy-presence-chooser.c:345
+#: ../libempathy-gtk/empathy-presence-chooser.c:344
 msgid "Click to remove this status as a favorite"
 msgstr "Feu clic per suprimir este estat com a preferit"
 
-#: ../libempathy-gtk/empathy-presence-chooser.c:354
+#: ../libempathy-gtk/empathy-presence-chooser.c:353
 msgid "Click to make this status a favorite"
 msgstr "Feu clic per fer que este estat siga un preferit"
 
-#: ../libempathy-gtk/empathy-presence-chooser.c:388
+#. Translators: %s is a status message like 'At the pub' for example
+#: ../libempathy-gtk/empathy-presence-chooser.c:387
+#, c-format
+msgid ""
+"<b>Current message: %s</b>\n"
+"<small><i>Press Enter to set the new message or Esc to cancel.</i></small>"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-presence-chooser.c:396
 msgid "Set status"
 msgstr "Estableix l'estat"
 
 #. Custom messages
-#: ../libempathy-gtk/empathy-presence-chooser.c:1135
+#: ../libempathy-gtk/empathy-presence-chooser.c:1147
 msgid "Custom messages…"
 msgstr "Missatges personalitzats…"
 
@@ -3018,23 +3032,23 @@ msgstr "No hi ha missatge d'error"
 msgid "Instant Message (Empathy)"
 msgstr "Missatgeria instantània (Empathy)"
 
-#: ../src/empathy.c:435
+#: ../src/empathy.c:432
 msgid "Don't connect on startup"
 msgstr "No connectes en iniciar"
 
-#: ../src/empathy.c:439
+#: ../src/empathy.c:436
 msgid "Don't display the contact list or any other dialogs on startup"
 msgstr "No mostres la llista de contactes ni  cap altre diàleg en iniciar"
 
-#: ../src/empathy.c:454
+#: ../src/empathy.c:451
 msgid "- Empathy IM Client"
 msgstr "- Client de missatgeria instantània Empathy"
 
-#: ../src/empathy.c:641
+#: ../src/empathy.c:627
 msgid "Error contacting the Account Manager"
 msgstr "S'ha produït un error en contactar amb el gestor de comptes"
 
-#: ../src/empathy.c:643
+#: ../src/empathy.c:629
 #, c-format
 msgid ""
 "There was an error while trying to connect to the Telepathy Account Manager. "
@@ -3094,14 +3108,14 @@ msgstr ""
 
 #. The primary text of the dialog shown to the user when he is about to lose
 #. * unsaved changes
-#: ../src/empathy-accounts-dialog.c:72
+#: ../src/empathy-accounts-dialog.c:71
 #, c-format
 msgid "There are unsaved modifications to your %s account."
 msgstr "Hi ha modificacions no alçades en el compte %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:76
+#: ../src/empathy-accounts-dialog.c:75
 msgid "Your new account has not been saved yet."
 msgstr "Encara no heu alçat el vostre compte nou."
 
@@ -3168,7 +3182,7 @@ msgstr "Voleu suprimir %s de l'ordinador?"
 msgid "This will not remove your account on the server."
 msgstr "Amb això no se suprimirà el vostre compte del servidor."
 
-#: ../src/empathy-accounts-dialog.c:1602
+#: ../src/empathy-accounts-dialog.c:1571
 msgid ""
 "You are about to select another account, which will discard\n"
 "your changes. Are you sure you want to proceed?"
@@ -3176,24 +3190,25 @@ msgstr ""
 "Esteu a punt de seleccionar un altre compte i perdreu els\n"
 "canvis fets fins ara. Segur que voleu continuar?"
 
-#. Menu items: to enabled/disable the account
-#: ../src/empathy-accounts-dialog.c:1779
-msgid "_Enable"
-msgstr "_Habilita"
+#. Menu item: to enabled/disable the account
+#: ../src/empathy-accounts-dialog.c:1762
+msgid "_Enabled"
+msgstr "_Habilitat"
 
-#: ../src/empathy-accounts-dialog.c:1780
-msgid "_Disable"
-msgstr "_Inhabilita"
+#. Menu item: Rename
+#: ../src/empathy-accounts-dialog.c:1785
+msgid "Rename"
+msgstr "Reanomena"
 
-#: ../src/empathy-accounts-dialog.c:2221
+#: ../src/empathy-accounts-dialog.c:2201
 msgid "_Skip"
 msgstr "_Omet"
 
-#: ../src/empathy-accounts-dialog.c:2225
+#: ../src/empathy-accounts-dialog.c:2205
 msgid "_Connect"
 msgstr "_Connecta"
 
-#: ../src/empathy-accounts-dialog.c:2404
+#: ../src/empathy-accounts-dialog.c:2384
 msgid ""
 "You are about to close the window, which will discard\n"
 "your changes. Are you sure you want to proceed?"
@@ -3221,19 +3236,19 @@ msgstr ""
 msgid "No protocol backends installed"
 msgstr "No hi ha cap protocol de rerefons instal·lat"
 
-#: ../src/empathy-auth-client.c:288
+#: ../src/empathy-auth-client.c:286
 msgid " - Empathy authentication client"
 msgstr " - Client d'autenticació de l'Empathy"
 
-#: ../src/empathy-auth-client.c:304
+#: ../src/empathy-auth-client.c:302
 msgid "Empathy authentication client"
 msgstr "Client d'autenticació de l'Empathy"
 
-#: ../src/empathy-av.c:118 ../src/empathy-call.c:201
+#: ../src/empathy-av.c:115 ../src/empathy-call.c:198
 msgid "- Empathy Audio/Video Client"
 msgstr "- Client d'àudio/vídeo de l'Empathy"
 
-#: ../src/empathy-av.c:134 ../src/empathy-call.c:223
+#: ../src/empathy-av.c:131 ../src/empathy-call.c:220
 msgid "Empathy Audio/Video Client"
 msgstr "Client d'àudio/vídeo de l'Empathy"
 
@@ -3542,11 +3557,11 @@ msgstr "Candidat local:"
 msgid "Audio"
 msgstr "Àudio"
 
-#: ../src/empathy-chat-window.c:289
+#: ../src/empathy-chat-window.c:288
 msgid "Close this window?"
 msgstr "Voleu tancar esta finestra?"
 
-#: ../src/empathy-chat-window.c:294
+#: ../src/empathy-chat-window.c:293
 #, c-format
 msgid ""
 "Closing this window will leave %s. You will not receive any further messages "
@@ -3555,7 +3570,7 @@ msgstr ""
 "Si tanqueu la finestra eixireu de %s. No rebreu cap més missatge fins que no "
 "hi torneu a entrar."
 
-#: ../src/empathy-chat-window.c:305
+#: ../src/empathy-chat-window.c:304
 #, c-format
 msgid ""
 "Closing this window will leave a chat room. You will not receive any further "
@@ -3570,12 +3585,12 @@ msgstr[1] ""
 "Si tanqueu la finestra eixireu de %u sales de xat. No rebreu més missatges "
 "fins que no hi torneu a entrar."
 
-#: ../src/empathy-chat-window.c:314
+#: ../src/empathy-chat-window.c:313
 #, c-format
 msgid "Leave %s?"
 msgstr "Voleu eixir de %s?"
 
-#: ../src/empathy-chat-window.c:315
+#: ../src/empathy-chat-window.c:314
 msgid ""
 "You will not receive any further messages from this chat room until you "
 "rejoin it."
@@ -3583,54 +3598,54 @@ msgstr ""
 "No rebreu cap més missatge d'esta sala de xat fins que no hi torneu a entrar-"
 "hi."
 
-#: ../src/empathy-chat-window.c:334
+#: ../src/empathy-chat-window.c:333
 msgid "Close window"
 msgstr "Tanca la finestra"
 
-#: ../src/empathy-chat-window.c:334
+#: ../src/empathy-chat-window.c:333
 msgid "Leave room"
 msgstr "Ix de la sala"
 
-#: ../src/empathy-chat-window.c:640 ../src/empathy-chat-window.c:660
+#: ../src/empathy-chat-window.c:639 ../src/empathy-chat-window.c:659
 #, c-format
 msgid "%s (%d unread)"
 msgid_plural "%s (%d unread)"
 msgstr[0] "%s (%d sense llegir)"
 msgstr[1] "%s (%d sense llegir)"
 
-#: ../src/empathy-chat-window.c:652
+#: ../src/empathy-chat-window.c:651
 #, c-format
 msgid "%s (and %u other)"
 msgid_plural "%s (and %u others)"
 msgstr[0] "%s (i %u altre)"
 msgstr[1] "%s (i %u altres)"
 
-#: ../src/empathy-chat-window.c:668
+#: ../src/empathy-chat-window.c:667
 #, c-format
 msgid "%s (%d unread from others)"
 msgid_plural "%s (%d unread from others)"
 msgstr[0] "%s (%d sense llegir d'altres)"
 msgstr[1] "%s (%d sense llegir d'altres)"
 
-#: ../src/empathy-chat-window.c:677
+#: ../src/empathy-chat-window.c:676
 #, c-format
 msgid "%s (%d unread from all)"
 msgid_plural "%s (%d unread from all)"
 msgstr[0] "%s (%d sense llegir de tots)"
 msgstr[1] "%s (%d sense llegir de tots)"
 
-#: ../src/empathy-chat-window.c:892
+#: ../src/empathy-chat-window.c:891
 msgid "SMS:"
 msgstr "SMS:"
 
-#: ../src/empathy-chat-window.c:902
+#: ../src/empathy-chat-window.c:901
 #, c-format
 msgid "Sending %d message"
 msgid_plural "Sending %d messages"
 msgstr[0] "S'està enviant %d missatge"
 msgstr[1] "S'estan enviant %d missatges"
 
-#: ../src/empathy-chat-window.c:924
+#: ../src/empathy-chat-window.c:923
 msgid "Typing a message."
 msgstr "S'està escrivint un missatge."
 
@@ -3790,7 +3805,7 @@ msgstr "Vos han convidat a entrar a %s"
 msgid "Incoming file transfer from %s"
 msgstr "Transferència de fitxers entrant d'en/na %s"
 
-#: ../src/empathy-event-manager.c:1146 ../src/empathy-roster-window.c:374
+#: ../src/empathy-event-manager.c:1146 ../src/empathy-roster-window.c:373
 msgid "Password required"
 msgstr "Cal la contrasenya"
 
@@ -3950,76 +3965,76 @@ msgstr "Protocol"
 msgid "Source"
 msgstr "Font"
 
-#: ../src/empathy-roster-window.c:391
+#: ../src/empathy-roster-window.c:390
 msgid "Provide Password"
 msgstr "Introduïu la contrasenya"
 
-#: ../src/empathy-roster-window.c:397
+#: ../src/empathy-roster-window.c:396
 msgid "Disconnect"
 msgstr "Desconnecta"
 
-#: ../src/empathy-roster-window.c:657
+#: ../src/empathy-roster-window.c:656
 msgid "You need to setup an account to see contacts here."
 msgstr "Heu de configurar un compte per veure'n els contactes ací."
 
-#: ../src/empathy-roster-window.c:673
+#: ../src/empathy-roster-window.c:672
 msgid "No match found"
 msgstr "No s'ha trobat cap coincidència"
 
-#: ../src/empathy-roster-window.c:783
+#: ../src/empathy-roster-window.c:782
 #, c-format
 msgid "Sorry, %s accounts can’t be used until your %s software is updated."
 msgstr ""
 "No podeu utilitzar els comptes de %s fins que no actualitzeu el programari "
 "de %s."
 
-#: ../src/empathy-roster-window.c:849
+#: ../src/empathy-roster-window.c:848
 msgid "Update software..."
 msgstr "Actualitza el programari..."
 
-#: ../src/empathy-roster-window.c:855 ../src/empathy-roster-window.c:972
+#: ../src/empathy-roster-window.c:854 ../src/empathy-roster-window.c:971
 msgid "Close"
 msgstr "Tanca"
 
-#: ../src/empathy-roster-window.c:960
+#: ../src/empathy-roster-window.c:959
 msgid "Reconnect"
 msgstr "Torna a connectar"
 
-#: ../src/empathy-roster-window.c:966
+#: ../src/empathy-roster-window.c:965
 msgid "Edit Account"
 msgstr "Edita el compte"
 
 #. Translators: this string will be something like:
 #. * Top up My Account ($1.23)..."
-#: ../src/empathy-roster-window.c:1110
+#: ../src/empathy-roster-window.c:1109
 #, c-format
 msgid "Top up %s (%s)..."
 msgstr "Recarrega %s (%s)..."
 
-#: ../src/empathy-roster-window.c:1156
+#: ../src/empathy-roster-window.c:1155
 msgid "Top up account credit"
 msgstr "Recarrega el saldo del compte"
 
 #. top up button
-#: ../src/empathy-roster-window.c:1228
+#: ../src/empathy-roster-window.c:1227
 msgid "Top Up..."
 msgstr "Recarrega..."
 
-#: ../src/empathy-roster-window.c:1952
+#: ../src/empathy-roster-window.c:1951
 msgid "Contact"
 msgstr "Contacte"
 
-#: ../src/empathy-roster-window.c:2150
+#: ../src/empathy-roster-window.c:2149
 msgid "You need to enable one of your accounts to see contacts here."
 msgstr "Heu d'habilitar com a mínim un compte per veure contactes ací."
 
 #. translators: argument is an account name
-#: ../src/empathy-roster-window.c:2158
+#: ../src/empathy-roster-window.c:2157
 #, c-format
 msgid "You need to enable %s to see contacts here."
 msgstr "Heu d'habilitar %s per veure contactes ací."
 
-#: ../src/empathy-roster-window.c:2460
+#: ../src/empathy-roster-window.c:2459
 msgid "Contact List"
 msgstr "Llista de contactes"
 
@@ -4570,16 +4585,16 @@ msgstr ""
 "El gestor de connexions seleccionat no permet utilitzar l'extensió de "
 "depuració remota."
 
-#: ../src/empathy-invite-participant-dialog.c:202
-#: ../src/empathy-invite-participant-dialog.c:230
+#: ../src/empathy-invite-participant-dialog.c:200
+#: ../src/empathy-invite-participant-dialog.c:228
 msgid "Invite Participant"
 msgstr "Convida un participant"
 
-#: ../src/empathy-invite-participant-dialog.c:203
+#: ../src/empathy-invite-participant-dialog.c:201
 msgid "Choose a contact to invite into the conversation:"
 msgstr "Seleccioneu un contacte per convidar-lo a la conversa:"
 
-#: ../src/empathy-invite-participant-dialog.c:226
+#: ../src/empathy-invite-participant-dialog.c:224
 msgid "Invite"
 msgstr "Convida"
 
@@ -4606,7 +4621,7 @@ msgstr "<identificador-del-compte>"
 msgid "- Empathy Accounts"
 msgstr "- Comptes de l'Empathy"
 
-#: ../src/empathy-accounts.c:231
+#: ../src/empathy-accounts.c:230
 msgid "Empathy Accounts"
 msgstr "Comptes de l'Empathy"
 
@@ -4618,11 +4633,11 @@ msgstr "Mostra un servei en concret"
 msgid "- Empathy Debugger"
 msgstr "- Depurador de l'Empathy"
 
-#: ../src/empathy-debugger.c:113
+#: ../src/empathy-debugger.c:112
 msgid "Empathy Debugger"
 msgstr "Depurador de l'Empathy"
 
-#: ../src/empathy-chat.c:109
+#: ../src/empathy-chat.c:106
 msgid "- Empathy Chat Client"
 msgstr "- Client de xat Empathy"
 
@@ -4739,6 +4754,12 @@ msgstr ""
 "seleccioneu <span style=\"italic\">Edita → Comptes</span> a la llista de "
 "contactes."
 
+#~ msgid "_Enable"
+#~ msgstr "_Habilita"
+
+#~ msgid "_Disable"
+#~ msgstr "_Inhabilita"
+
 #~ msgid "%s"
 #~ msgstr "%s"
 
@@ -5012,9 +5033,6 @@ msgstr ""
 #~ msgid "All"
 #~ msgstr "Tots"
 
-#~ msgid "_Enabled"
-#~ msgstr "_Habilitat"
-
 #~ msgid "Date"
 #~ msgstr "Data"
 
@@ -5650,9 +5668,6 @@ msgstr ""
 #~ msgid "Re_name"
 #~ msgstr "Rea_nomena"
 
-#~ msgid "Rename"
-#~ msgstr "Reanomena"
-
 #~ msgid "Edit the groups and name for this contact"
 #~ msgstr "Edita els grups i nom per a aquest contacte"
 
index 2d3d810d5dec3de4e85f42d58a18c03f5007126f..ee8da8ca30f8bd1f8d11a95be3c1e9e778c14d2e 100644 (file)
@@ -7,17 +7,18 @@
 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: 2012-02-08 15:44+0000\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=empath"
+"y&keywords=I18N+L10N&component=General\n"
+"POT-Creation-Date: 2012-04-02 17:52+0000\n"
 "PO-Revision-Date: 2012-02-08 19:16-0500\n"
 "Last-Translator: Tiffany Antopolski <tiffany.antopolski@gmail.com>\n"
 "Language-Team: Canadian English\n"
+"Language: en_CA\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Language: en_CA\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-DamnedLies-Scope: partial\n"
 
 #: ../data/empathy.desktop.in.in.h:1
 msgid "Empathy"
@@ -35,6 +36,16 @@ msgstr "Empathy Internet Messaging"
 msgid "Chat on Google Talk, Facebook, MSN and many other chat services"
 msgstr "Chat on Google Talk, Facebook, MSN and many other chat services"
 
+#. Tweak the dialog
+#: ../data/empathy-accounts.desktop.in.in.h:1
+#: ../src/empathy-accounts-dialog.c:2550
+msgid "Messaging and VoIP Accounts"
+msgstr "Messaging and VoIP Accounts"
+
+#: ../data/empathy-accounts.desktop.in.in.h:2
+msgid "Manage Messaging and VoIP accounts"
+msgstr "Manage Messaging and VoIP accounts"
+
 #: ../data/org.gnome.Empathy.gschema.xml.in.h:1
 msgid "Connection managers should be used"
 msgstr "Connection managers should be used"
@@ -74,77 +85,77 @@ msgstr "Empathy default download folder"
 msgid "The default folder to save file transfers in."
 msgstr "The default folder to save file transfers in."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:9
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:12
 msgid "Show offline contacts"
 msgstr "Show offline contacts"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:10
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:13
 msgid "Whether to show contacts that are offline in the contact list."
 msgstr "Whether to show contacts that are offline in the contact list."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:11
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:14
 msgid "Show avatars"
 msgstr "Show avatars"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:12
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:15
 msgid ""
 "Whether to show avatars for contacts in the contact list and chat windows."
 msgstr ""
 "Whether to show avatars for contacts in the contact list and chat windows."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:13
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:16
 msgid "Show protocols"
 msgstr "Show protocols"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:14
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:17
 msgid "Whether to show protocols for contacts in the contact list."
 msgstr "Whether to show protocols for contacts in the contact list."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:15
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:18
 msgid "Show Balance in contact list"
 msgstr "Show Balance in contact list"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:16
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:19
 msgid "Whether to show account balances in the contact list."
 msgstr "Whether to show account balances in the contact list."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:17
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:20
 msgid "Compact contact list"
 msgstr "Compact contact list"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:18
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:21
 msgid "Whether to show the contact list in compact mode."
 msgstr "Whether to show the contact list in compact mode."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:19
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:22
 msgid "Hide main window"
 msgstr "Hide main window"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:20
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:23
 msgid "Hide the main window."
 msgstr "Hide the main window."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:21
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:24
 msgid "Default directory to select an avatar image from"
 msgstr "Default directory to select an avatar image from"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:22
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:25
 msgid "The last directory that an avatar image was chosen from."
 msgstr "The last directory that an avatar image was chosen from."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:23
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:26
 msgid "Open new chats in separate windows"
 msgstr "Open new chats in separate windows"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:24
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:27
 msgid "Always open a separate chat window for new chats."
 msgstr "Always open a separate chat window for new chats."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:25
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:28
 msgid "Display incoming events in the status area"
 msgstr "Display incoming events in the status area"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:26
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:29
 msgid ""
 "Display incoming events in the status area. If false, present them to the "
 "user immediately."
@@ -152,19 +163,31 @@ msgstr ""
 "Display incoming events in the status area. If false, present them to the "
 "user immediately."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:27
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:30
 msgid "The position for the chat window side pane"
 msgstr "The position for the chat window side pane"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:28
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:31
 msgid "The stored position (in pixels) of the chat window side pane."
 msgstr "The stored position (in pixels) of the chat window side pane."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:29
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:32
+#, fuzzy
+#| msgid "Show contact list in rooms"
+msgid "Show contact groups"
+msgstr "Show contact list in rooms"
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:33
+#, fuzzy
+#| msgid "Whether to show account balances in the contact list."
+msgid "Whether to show groups in the contact list."
+msgstr "Whether to show account balances in the contact list."
+
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:34
 msgid "Contact list sort criterion"
 msgstr "Contact list sort criterion"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:30
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:35
 msgid ""
 "Which criterion to use when sorting the contact list. Default is to sort by "
 "the contact's state with the value \"state\". A value of \"name\" will sort "
@@ -174,102 +197,102 @@ msgstr ""
 "the contact's state with the value \"state\". A value of \"name\" will sort "
 "the contact list by name."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:31
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:36
 msgid "Use notification sounds"
 msgstr "Use notification sounds"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:32
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:37
 msgid "Whether to play a sound to notify of events."
 msgstr "Whether to play a sound to notify of events."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:33
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:38
 msgid "Disable sounds when away"
 msgstr "Disable sounds when away"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:34
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:39
 msgid "Whether to play sound notifications when away or busy."
 msgstr "Whether to play sound notifications when away or busy."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:35
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:40
 msgid "Play a sound for incoming messages"
 msgstr "Play a sound for incoming messages"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:36
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:41
 msgid "Whether to play a sound to notify of incoming messages."
 msgstr "Whether to play a sound to notify of incoming messages."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:37
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:42
 msgid "Play a sound for outgoing messages"
 msgstr "Play a sound for outgoing messages"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:38
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:43
 msgid "Whether to play a sound to notify of outgoing messages."
 msgstr "Whether to play a sound to notify of outgoing messages."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:39
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:44
 msgid "Play a sound for new conversations"
 msgstr "Play a sound for new conversations"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:40
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:45
 msgid "Whether to play a sound to notify of new conversations."
 msgstr "Whether to play a sound to notify of new conversations."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:41
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:46
 msgid "Play a sound when a contact logs in"
 msgstr "Play a sound when a contact logs in"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:42
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:47
 msgid "Whether to play a sound to notify of contacts logging into the network."
 msgstr ""
 "Whether to play a sound to notify of contacts logging into the network."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:43
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:48
 msgid "Play a sound when a contact logs out"
 msgstr "Play a sound when a contact logs out"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:44
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:49
 msgid ""
 "Whether to play a sound to notify of contacts logging out of the network."
 msgstr ""
 "Whether to play a sound to notify of contacts logging out of the network."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:45
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:50
 msgid "Play a sound when we log in"
 msgstr "Play a sound when we log in"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:46
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:51
 msgid "Whether to play a sound when logging into a network."
 msgstr "Whether to play a sound when logging into a network."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:47
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:52
 msgid "Play a sound when we log out"
 msgstr "Play a sound when we log out"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:48
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:53
 msgid "Whether to play a sound when logging out of a network."
 msgstr "Whether to play a sound when logging out of a network."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:49
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:54
 msgid "Enable popup notifications for new messages"
 msgstr "Enable popup notifications for new messages"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:50
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:55
 msgid "Whether to show a popup notification when receiving a new message."
 msgstr "Whether to show a popup notification when receiving a new message."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:51
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:56
 msgid "Disable popup notifications when away"
 msgstr "Disable popup notifications when away"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:52
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:57
 msgid "Whether to show popup notifications when away or busy."
 msgstr "Whether to show popup notifications when away or busy."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:53
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:58
 msgid "Pop up notifications if the chat isn't focused"
 msgstr "Pop up notifications if the chat isn't focused"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:54
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:59
 msgid ""
 "Whether to show a popup notification when receiving a new message even if "
 "the chat is already opened, but not focused."
@@ -277,107 +300,107 @@ msgstr ""
 "Whether to show a popup notification when receiving a new message even if "
 "the chat is already opened, but not focused."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:55
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:60
 msgid "Pop up notifications when a contact logs in"
 msgstr "Pop up notifications when a contact logs in"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:56
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:61
 msgid "Whether to show a popup notification when a contact goes online."
 msgstr "Whether to show a popup notification when a contact goes online."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:57
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:62
 msgid "Pop up notifications when a contact logs out"
 msgstr "Pop up notifications when a contact logs out"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:58
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:63
 msgid "Whether to show a popup notification when a contact goes offline."
 msgstr "Whether to show a popup notification when a contact goes offline."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:59
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:64
 msgid "Use graphical smileys"
 msgstr "Use graphical smileys"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:60
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:65
 msgid "Whether to convert smileys into graphical images in conversations."
 msgstr "Whether to convert smileys into graphical images in conversations."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:61
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:66
 msgid "Show contact list in rooms"
 msgstr "Show contact list in rooms"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:62
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:67
 msgid "Whether to show the contact list in chat rooms."
 msgstr "Whether to show the contact list in chat rooms."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:63
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:68
 msgid "Chat window theme"
 msgstr "Chat window theme"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:64
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:69
 msgid "The theme that is used to display the conversation in chat windows."
 msgstr "The theme that is used to display the conversation in chat windows."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:65
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:70
 msgid "Chat window theme variant"
 msgstr "Chat window theme variant"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:66
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:71
 msgid ""
 "The theme variant that is used to display the conversation in chat windows."
 msgstr ""
 "The theme variant that is used to display the conversation in chat windows."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:67
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:72
 msgid "Path of the Adium theme to use"
 msgstr "Path of the Adium theme to use"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:68
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:73
 msgid "Path of the Adium theme to use if the theme used for chat is Adium."
 msgstr "Path of the Adium theme to use if the theme used for chat is Adium."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:69
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:74
 msgid "Enable WebKit Developer Tools"
 msgstr "Enable WebKit Developer Tools"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:70
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:75
 msgid ""
 "Whether WebKit developer tools, such as the Web Inspector, should be enabled."
 msgstr ""
 "Whether WebKit developer tools, such as the Web Inspector, should be enabled."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:71
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:78
 msgid "Use theme for chat rooms"
 msgstr "Use theme for chat rooms"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:72
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:79
 msgid "Whether to use the theme for chat rooms."
 msgstr "Whether to use the theme for chat rooms."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:73
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:80
 msgid "Spell checking languages"
 msgstr "Spell checking languages"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:74
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:81
 msgid ""
 "Comma-separated list of spell checker languages to use (e.g. \"en, fr, nl\")."
 msgstr ""
 "Comma-separated list of spell checker languages to use (e.g. \"en, fr, nl\")."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:75
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:82
 msgid "Enable spell checker"
 msgstr "Enable spell checker"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:76
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:83
 msgid ""
 "Whether to check words typed against the languages you want to check with."
 msgstr ""
 "Whether to check words typed against the languages you want to check with."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:77
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:84
 msgid "Nick completed character"
 msgstr "Nick completed character"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:78
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:85
 msgid ""
 "Character to add after nickname when using nick completion (tab) in group "
 "chat."
@@ -385,53 +408,53 @@ msgstr ""
 "Character to add after nickname when using nick completion (tab) in group "
 "chat."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:79
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:86
 msgid "Empathy should use the avatar of the contact as the chat window icon"
 msgstr "Empathy should use the avatar of the contact as the chat window icon"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:80
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:87
 msgid ""
 "Whether Empathy should use the avatar of the contact as the chat window icon."
 msgstr ""
 "Whether Empathy should use the avatar of the contact as the chat window icon."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:81
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:88
 msgid "Last account selected in Join Room dialog"
 msgstr "Last account selected in Join Room dialog"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:82
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:89
 msgid "D-Bus object path of the last account selected to join a room."
 msgstr "D-Bus object path of the last account selected to join a room."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:83
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:90
 msgid "Camera device"
 msgstr "Camera device"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:84
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:91
 msgid "Default camera device to use in video calls, e.g. /dev/video0."
 msgstr "Default camera device to use in video calls, e.g. /dev/video0."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:85
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:92
 msgid "Camera position"
 msgstr "Camera position"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:86
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:93
 msgid "Position the camera preview should be during a call."
 msgstr "Position the camera preview should be during a call."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:87
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:94
 msgid "Echo cancellation support"
-msgstr "Echo cancellllation support"
+msgstr "Echo cancellation support"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:88
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:95
 msgid "Whether to enable Pulseaudio's echo cancellation filter."
-msgstr "Whether to enable Pulseaudio's echo cancellllation filter."
+msgstr "Whether to enable Pulseaudio's echo cancellation filter."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:89
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:96
 msgid "Show hint about closing the main window"
 msgstr "Show hint about closing the main window"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:90
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:97
 msgid ""
 "Whether to show the message dialog about closing the main window with the "
 "'x' button in the title bar."
@@ -439,103 +462,93 @@ msgstr ""
 "Whether to show the message dialog about closing the main window with the "
 "'x' button in the title bar."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:91
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:98
 msgid "Empathy can publish the user's location"
 msgstr "Empathy can publish the user's location"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:92
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:99
 msgid "Whether Empathy can publish the user's location to their contacts."
 msgstr "Whether Empathy can publish the user's location to their contacts."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:93
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:100
 msgid "Empathy can use the network to guess the location"
 msgstr "Empathy can use the network to guess the location"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:94
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:101
 msgid "Whether Empathy can use the network to guess the location."
 msgstr "Whether Empathy can use the network to guess the location."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:95
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:102
 msgid "Empathy can use the cellular network to guess the location"
 msgstr "Empathy can use the cellular network to guess the location"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:96
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:103
 msgid "Whether Empathy can use the cellular network to guess the location."
 msgstr "Whether Empathy can use the cellular network to guess the location."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:97
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:104
 msgid "Empathy can use the GPS to guess the location"
 msgstr "Empathy can use the GPS to guess the location"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:98
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:105
 msgid "Whether Empathy can use the GPS to guess the location."
 msgstr "Whether Empathy can use the GPS to guess the location."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:99
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:106
 msgid "Empathy should reduce the location's accuracy"
 msgstr "Empathy should reduce the location's accuracy"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:100
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:107
 msgid ""
 "Whether Empathy should reduce the location's accuracy for privacy reasons."
 msgstr ""
 "Whether Empathy should reduce the location's accuracy for privacy reasons."
 
-#. Tweak the dialog
-#: ../data/empathy-accounts.desktop.in.in.h:1
-#: ../src/empathy-accounts-dialog.c:2327
-msgid "Messaging and VoIP Accounts"
-msgstr "Messaging and VoIP Accounts"
-
-#: ../data/empathy-accounts.desktop.in.in.h:2
-msgid "Manage Messaging and VoIP accounts"
-msgstr "Manage Messaging and VoIP accounts"
-
-#: ../libempathy/empathy-ft-handler.c:736
+#: ../libempathy/empathy-ft-handler.c:738
 msgid "No reason was specified"
 msgstr "No reason was specified"
 
-#: ../libempathy/empathy-ft-handler.c:739
+#: ../libempathy/empathy-ft-handler.c:741
 msgid "The change in state was requested"
 msgstr "The change in state was requested"
 
-#: ../libempathy/empathy-ft-handler.c:742
+#: ../libempathy/empathy-ft-handler.c:744
 msgid "You canceled the file transfer"
-msgstr "You cancellled the file transfer"
+msgstr "You cancelled the file transfer"
 
-#: ../libempathy/empathy-ft-handler.c:745
+#: ../libempathy/empathy-ft-handler.c:747
 msgid "The other participant canceled the file transfer"
-msgstr "The other participant cancellled the file transfer"
+msgstr "The other participant cancelled the file transfer"
 
-#: ../libempathy/empathy-ft-handler.c:748
+#: ../libempathy/empathy-ft-handler.c:750
 msgid "Error while trying to transfer the file"
 msgstr "Error while trying to transfer the file"
 
-#: ../libempathy/empathy-ft-handler.c:751
+#: ../libempathy/empathy-ft-handler.c:753
 msgid "The other participant is unable to transfer the file"
 msgstr "The other participant is unable to transfer the file"
 
-#: ../libempathy/empathy-ft-handler.c:754 ../libempathy/empathy-utils.c:313
+#: ../libempathy/empathy-ft-handler.c:756 ../libempathy/empathy-utils.c:313
 msgid "Unknown reason"
 msgstr "Unknown reason"
 
-#: ../libempathy/empathy-ft-handler.c:917
+#: ../libempathy/empathy-ft-handler.c:919
 msgid "File transfer completed, but the file was corrupted"
 msgstr "File transfer completed, but the file was corrupted"
 
-#: ../libempathy/empathy-ft-handler.c:1203
+#: ../libempathy/empathy-ft-handler.c:1205
 msgid "File transfer not supported by remote contact"
 msgstr "File transfer not supported by remote contact"
 
-#: ../libempathy/empathy-ft-handler.c:1259
+#: ../libempathy/empathy-ft-handler.c:1261
 msgid "The selected file is not a regular file"
 msgstr "The selected file is not a regular file"
 
-#: ../libempathy/empathy-ft-handler.c:1268
+#: ../libempathy/empathy-ft-handler.c:1270
 msgid "The selected file is empty"
 msgstr "The selected file is empty"
 
-#: ../libempathy/empathy-message.c:415 ../src/empathy-call-observer.c:131
+#: ../libempathy/empathy-message.c:415 ../src/empathy-call-observer.c:129
 #, c-format
 msgid "Missed call from %s"
 msgstr "Missed call from %s"
@@ -586,7 +599,7 @@ msgid "Status is set to offline"
 msgstr "Status is set to offline"
 
 #: ../libempathy/empathy-utils.c:289 ../libempathy/empathy-utils.c:323
-#: ../libempathy-gtk/empathy-call-utils.c:49
+#: ../libempathy-gtk/empathy-call-utils.c:47
 #: ../libempathy-gtk/empathy-new-message-dialog.c:81
 msgid "Network error"
 msgstr "Network error"
@@ -761,12 +774,28 @@ msgstr[1] "%d months ago"
 msgid "in the future"
 msgstr "in the future"
 
+#: ../libempathy/empathy-keyring.c:75
+#, fuzzy
+#| msgid "Phrase not found"
+msgid "Password not found"
+msgstr "Phrase not found"
+
+#: ../libempathy/empathy-keyring.c:218
+#, c-format
+msgid "IM account password for %s (%s)"
+msgstr ""
+
+#: ../libempathy/empathy-keyring.c:253
+#, c-format
+msgid "Password for chatroom '%s' on account %s (%s)"
+msgstr ""
+
 #: ../libempathy-gtk/empathy-account-chooser.c:692
 msgid "All accounts"
 msgstr "All accounts"
 
 #: ../libempathy-gtk/empathy-account-widget.c:682
-#: ../src/empathy-import-widget.c:335
+#: ../src/empathy-import-widget.c:323
 msgid "Account"
 msgstr "Account"
 
@@ -775,12 +804,12 @@ msgid "Password"
 msgstr "Password"
 
 #: ../libempathy-gtk/empathy-account-widget.c:684
-#: ../libempathy-gtk/empathy-irc-network-dialog.c:507
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:511
 msgid "Server"
 msgstr "Server"
 
 #: ../libempathy-gtk/empathy-account-widget.c:685
-#: ../libempathy-gtk/empathy-irc-network-dialog.c:522
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:529
 msgid "Port"
 msgstr "Port"
 
@@ -791,7 +820,7 @@ msgid "%s:"
 msgstr "%s:"
 
 #: ../libempathy-gtk/empathy-account-widget.c:1398
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:10
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:16
 msgid "Username:"
 msgstr "Username:"
 
@@ -884,7 +913,7 @@ msgstr "_Server:"
 #: ../libempathy-gtk/empathy-account-widget-generic.ui.h:1
 #: ../libempathy-gtk/empathy-account-widget-groupwise.ui.h:7
 #: ../libempathy-gtk/empathy-account-widget-icq.ui.h:8
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:11
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:17
 #: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:23
 #: ../libempathy-gtk/empathy-account-widget-msn.ui.h:7
 #: ../libempathy-gtk/empathy-account-widget-local-xmpp.ui.h:7
@@ -950,36 +979,32 @@ msgstr "What is your ICQ UIN?"
 msgid "What is your ICQ password?"
 msgstr "What is your ICQ password?"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.c:206
-#: ../libempathy-gtk/empathy-account-widget-sip.c:239
+#: ../libempathy-gtk/empathy-account-widget-sip.c:205
+#: ../libempathy-gtk/empathy-account-widget-sip.c:238
 msgid "Auto"
 msgstr "Auto"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.c:209
+#: ../libempathy-gtk/empathy-account-widget-sip.c:208
 msgid "UDP"
 msgstr "UDP"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.c:212
+#: ../libempathy-gtk/empathy-account-widget-sip.c:211
 msgid "TCP"
 msgstr "TCP"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.c:215
+#: ../libempathy-gtk/empathy-account-widget-sip.c:214
 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:244
+#: ../libempathy-gtk/empathy-account-widget-sip.c:243
 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:249
+#: ../libempathy-gtk/empathy-account-widget-sip.c:248
 msgid "Options"
 msgstr "Options"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.c:252
+#: ../libempathy-gtk/empathy-account-widget-sip.c:251
 msgid "None"
 msgstr "None"
 
@@ -996,10 +1021,35 @@ msgid "Character set:"
 msgstr "Character set:"
 
 #: ../libempathy-gtk/empathy-account-widget-irc.ui.h:4
+#: ../src/empathy-accounts-dialog.ui.h:1
+msgid "Add…"
+msgstr "Add…"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:5
+#: ../libempathy-gtk/empathy-contact-blocking-dialog.ui.h:3
+#: ../libempathy-gtk/empathy-status-preset-dialog.ui.h:1
+#: ../src/empathy-accounts-dialog.ui.h:2
+#: ../src/empathy-chatrooms-window.ui.h:3
+msgid "Remove"
+msgstr "Remove"
+
+#. Translators: tooltip on a 'Go Up' button used to sort IRC servers by priority
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:7
+msgid "Up"
+msgstr ""
+
+#. Translators: tooltip on a 'Go Down' button used to sort IRC servers by priority
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:9
+#, fuzzy
+#| msgid "Domain"
+msgid "Down"
+msgstr "Domain"
+
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:10
 msgid "Servers"
 msgstr "Servers"
 
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:5
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:11
 msgid ""
 "Most IRC servers don't need a password, so if you're not sure, don't enter a "
 "password."
@@ -1007,27 +1057,27 @@ msgstr ""
 "Most IRC servers don't need a password, so if you're not sure, don't enter a "
 "password."
 
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:6
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:12
 msgid "Nickname:"
 msgstr "Nickname:"
 
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:7
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:13
 msgid "Password:"
 msgstr "Password:"
 
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:8
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:14
 msgid "Quit message:"
 msgstr "Quit message:"
 
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:9
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:15
 msgid "Real name:"
 msgstr "Real name:"
 
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:12
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:18
 msgid "Which IRC network?"
 msgstr "Which IRC network?"
 
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:13
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:19
 msgid "What is your IRC nickname?"
 msgstr "What is your IRC nickname?"
 
@@ -1282,65 +1332,65 @@ msgstr "All Files"
 msgid "Click to enlarge"
 msgstr "Click to enlarge"
 
-#: ../libempathy-gtk/empathy-call-utils.c:44
-#: ../libempathy-gtk/empathy-call-utils.c:62
+#: ../libempathy-gtk/empathy-call-utils.c:42
+#: ../libempathy-gtk/empathy-call-utils.c:60
 msgid "There was an error starting the call"
 msgstr "There was an error starting the call"
 
-#: ../libempathy-gtk/empathy-call-utils.c:51
+#: ../libempathy-gtk/empathy-call-utils.c:49
 msgid "The specified contact doesn't support calls"
 msgstr "The specified contact doesn't support calls"
 
-#: ../libempathy-gtk/empathy-call-utils.c:53
+#: ../libempathy-gtk/empathy-call-utils.c:51
 msgid "The specified contact is offline"
 msgstr "The specified contact is offline"
 
-#: ../libempathy-gtk/empathy-call-utils.c:55
+#: ../libempathy-gtk/empathy-call-utils.c:53
 msgid "The specified contact is not valid"
 msgstr "The specified contact is not valid"
 
-#: ../libempathy-gtk/empathy-call-utils.c:57
+#: ../libempathy-gtk/empathy-call-utils.c:55
 msgid "Emergency calls are not supported on this protocol"
 msgstr "Emergency calls are not supported on this protocol"
 
-#: ../libempathy-gtk/empathy-call-utils.c:59
+#: ../libempathy-gtk/empathy-call-utils.c:57
 msgid "You don't have enough credit in order to place this call"
 msgstr "You don't have enough credit in order to place this call"
 
-#: ../libempathy-gtk/empathy-chat.c:710
+#: ../libempathy-gtk/empathy-chat.c:729
 msgid "Failed to open private chat"
 msgstr "Failed to open private chat"
 
-#: ../libempathy-gtk/empathy-chat.c:768
+#: ../libempathy-gtk/empathy-chat.c:787
 msgid "Topic not supported on this conversation"
 msgstr "Topic not supported on this conversation"
 
-#: ../libempathy-gtk/empathy-chat.c:774
+#: ../libempathy-gtk/empathy-chat.c:793
 msgid "You are not allowed to change the topic"
 msgstr "You are not allowed to change the topic"
 
-#: ../libempathy-gtk/empathy-chat.c:973
+#: ../libempathy-gtk/empathy-chat.c:992
 #, c-format
 msgid "“%s” is not a valid contact ID"
 msgstr "“%s” is not a valid contact ID"
 
-#: ../libempathy-gtk/empathy-chat.c:1068
+#: ../libempathy-gtk/empathy-chat.c:1087
 msgid "/clear: clear all messages from the current conversation"
 msgstr "/clear: clear all messages from the current conversation"
 
-#: ../libempathy-gtk/empathy-chat.c:1071
+#: ../libempathy-gtk/empathy-chat.c:1090
 msgid "/topic <topic>: set the topic of the current conversation"
 msgstr "/topic <topic>: set the topic of the current conversation"
 
-#: ../libempathy-gtk/empathy-chat.c:1074
+#: ../libempathy-gtk/empathy-chat.c:1093
 msgid "/join <chat room ID>: join a new chat room"
 msgstr "/join <chat room ID>: join a new chat room"
 
-#: ../libempathy-gtk/empathy-chat.c:1077
+#: ../libempathy-gtk/empathy-chat.c:1096
 msgid "/j <chat room ID>: join a new chat room"
 msgstr "/j <chat room ID>: join a new chat room"
 
-#: ../libempathy-gtk/empathy-chat.c:1081
+#: ../libempathy-gtk/empathy-chat.c:1100
 msgid ""
 "/part [<chat room ID>] [<reason>]: leave the chat room, by default the "
 "current one"
@@ -1348,23 +1398,23 @@ msgstr ""
 "/part [<chat room ID>] [<reason>]: leave the chat room, by default the "
 "current one"
 
-#: ../libempathy-gtk/empathy-chat.c:1085
+#: ../libempathy-gtk/empathy-chat.c:1104
 msgid "/query <contact ID> [<message>]: open a private chat"
 msgstr "/query <contact ID> [<message>]: open a private chat"
 
-#: ../libempathy-gtk/empathy-chat.c:1088
+#: ../libempathy-gtk/empathy-chat.c:1107
 msgid "/msg <contact ID> <message>: open a private chat"
 msgstr "/msg <contact ID> <message>: open a private chat"
 
-#: ../libempathy-gtk/empathy-chat.c:1091
+#: ../libempathy-gtk/empathy-chat.c:1110
 msgid "/nick <nickname>: change your nickname on the current server"
 msgstr "/nick <nickname>: change your nickname on the current server"
 
-#: ../libempathy-gtk/empathy-chat.c:1094
+#: ../libempathy-gtk/empathy-chat.c:1113
 msgid "/me <message>: send an ACTION message to the current conversation"
 msgstr "/me <message>: send an ACTION message to the current conversation"
 
-#: ../libempathy-gtk/empathy-chat.c:1097
+#: ../libempathy-gtk/empathy-chat.c:1116
 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 "
@@ -1374,11 +1424,11 @@ msgstr ""
 "send a message starting with a '/'. For example: \"/say /join is used to "
 "join a new chat room\""
 
-#: ../libempathy-gtk/empathy-chat.c:1102
+#: ../libempathy-gtk/empathy-chat.c:1121
 msgid "/whois <contact ID>: display information about a contact"
 msgstr "/whois <contact ID>: display information about a contact"
 
-#: ../libempathy-gtk/empathy-chat.c:1105
+#: ../libempathy-gtk/empathy-chat.c:1124
 msgid ""
 "/help [<command>]: show all supported commands. If <command> is defined, "
 "show its usage."
@@ -1386,126 +1436,126 @@ msgstr ""
 "/help [<command>]: show all supported commands. If <command> is defined, "
 "show its usage."
 
-#: ../libempathy-gtk/empathy-chat.c:1124
+#: ../libempathy-gtk/empathy-chat.c:1143
 #, c-format
 msgid "Usage: %s"
 msgstr "Usage: %s"
 
-#: ../libempathy-gtk/empathy-chat.c:1169
+#: ../libempathy-gtk/empathy-chat.c:1188
 msgid "Unknown command"
 msgstr "Unknown command"
 
-#: ../libempathy-gtk/empathy-chat.c:1295
+#: ../libempathy-gtk/empathy-chat.c:1314
 msgid "Unknown command; see /help for the available commands"
 msgstr "Unknown command; see /help for the available commands"
 
-#: ../libempathy-gtk/empathy-chat.c:1541
+#: ../libempathy-gtk/empathy-chat.c:1565
 msgid "insufficient balance to send message"
 msgstr "insufficient balance to send message"
 
-#: ../libempathy-gtk/empathy-chat.c:1545 ../libempathy-gtk/empathy-chat.c:1559
-#: ../libempathy-gtk/empathy-chat.c:1622
+#: ../libempathy-gtk/empathy-chat.c:1569 ../libempathy-gtk/empathy-chat.c:1583
+#: ../libempathy-gtk/empathy-chat.c:1646
 #, c-format
 msgid "Error sending message '%s': %s"
 msgstr "Error sending message '%s': %s"
 
-#: ../libempathy-gtk/empathy-chat.c:1547 ../libempathy-gtk/empathy-chat.c:1564
-#: ../libempathy-gtk/empathy-chat.c:1626
+#: ../libempathy-gtk/empathy-chat.c:1571 ../libempathy-gtk/empathy-chat.c:1588
+#: ../libempathy-gtk/empathy-chat.c:1650
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Error sending message: %s"
 
 #. translators: error used when user doesn't have enough credit on his
 #. * account to send the message.
-#: ../libempathy-gtk/empathy-chat.c:1553
+#: ../libempathy-gtk/empathy-chat.c:1577
 #, c-format
 msgid "insufficient balance to send message. <a href='%s'>Top up</a>."
 msgstr "insufficient balance to send message. <a href='%s'>Top up</a>."
 
-#: ../libempathy-gtk/empathy-chat.c:1593
+#: ../libempathy-gtk/empathy-chat.c:1617
 msgid "not capable"
 msgstr "not capable"
 
-#: ../libempathy-gtk/empathy-chat.c:1600
+#: ../libempathy-gtk/empathy-chat.c:1624
 msgid "offline"
 msgstr "offline"
 
-#: ../libempathy-gtk/empathy-chat.c:1603
+#: ../libempathy-gtk/empathy-chat.c:1627
 msgid "invalid contact"
 msgstr "invalid contact"
 
-#: ../libempathy-gtk/empathy-chat.c:1606
+#: ../libempathy-gtk/empathy-chat.c:1630
 msgid "permission denied"
 msgstr "permission denied"
 
-#: ../libempathy-gtk/empathy-chat.c:1609
+#: ../libempathy-gtk/empathy-chat.c:1633
 msgid "too long message"
 msgstr "too long message"
 
-#: ../libempathy-gtk/empathy-chat.c:1612
+#: ../libempathy-gtk/empathy-chat.c:1636
 msgid "not implemented"
 msgstr "not implemented"
 
-#: ../libempathy-gtk/empathy-chat.c:1616
+#: ../libempathy-gtk/empathy-chat.c:1640
 msgid "unknown"
 msgstr "unknown"
 
-#: ../libempathy-gtk/empathy-chat.c:1683 ../src/empathy-chat-window.c:916
+#: ../libempathy-gtk/empathy-chat.c:1707 ../src/empathy-chat-window.c:920
 msgid "Topic:"
 msgstr "Topic:"
 
-#: ../libempathy-gtk/empathy-chat.c:1698
+#: ../libempathy-gtk/empathy-chat.c:1722
 #, c-format
 msgid "Topic set to: %s"
 msgstr "Topic set to: %s"
 
-#: ../libempathy-gtk/empathy-chat.c:1700
+#: ../libempathy-gtk/empathy-chat.c:1724
 #, c-format
 msgid "Topic set by %s to: %s"
 msgstr "Topic set by %s to: %s"
 
 #. No need to display this 'event' is no topic can be defined anyway
-#: ../libempathy-gtk/empathy-chat.c:1705
+#: ../libempathy-gtk/empathy-chat.c:1729
 msgid "No topic defined"
 msgstr "No topic defined"
 
-#: ../libempathy-gtk/empathy-chat.c:2221
+#: ../libempathy-gtk/empathy-chat.c:2245
 msgid "(No Suggestions)"
 msgstr "(No Suggestions)"
 
 #. translators: %s is the selected word
-#: ../libempathy-gtk/empathy-chat.c:2289
+#: ../libempathy-gtk/empathy-chat.c:2313
 #, c-format
 msgid "Add '%s' to Dictionary"
 msgstr "Add '%s' to Dictionary"
 
 #. translators: first %s is the selected word,
 #. * second %s is the language name of the target dictionary
-#: ../libempathy-gtk/empathy-chat.c:2326
+#: ../libempathy-gtk/empathy-chat.c:2350
 #, c-format
 msgid "Add '%s' to %s Dictionary"
 msgstr "Add '%s' to %s Dictionary"
 
-#: ../libempathy-gtk/empathy-chat.c:2396
+#: ../libempathy-gtk/empathy-chat.c:2420
 msgid "Insert Smiley"
 msgstr "Insert Smiley"
 
 #. send button
-#: ../libempathy-gtk/empathy-chat.c:2414
-#: ../libempathy-gtk/empathy-ui-utils.c:1867
+#: ../libempathy-gtk/empathy-chat.c:2438
+#: ../libempathy-gtk/empathy-ui-utils.c:1880
 msgid "_Send"
 msgstr "_Send"
 
 #. Spelling suggestions
-#: ../libempathy-gtk/empathy-chat.c:2471
+#: ../libempathy-gtk/empathy-chat.c:2495
 msgid "_Spelling Suggestions"
 msgstr "_Spelling Suggestions"
 
-#: ../libempathy-gtk/empathy-chat.c:2560
+#: ../libempathy-gtk/empathy-chat.c:2584
 msgid "Failed to retrieve recent logs"
 msgstr "Failed to retrieve recent logs"
 
-#: ../libempathy-gtk/empathy-chat.c:2699
+#: ../libempathy-gtk/empathy-chat.c:2723
 #, c-format
 msgid "%s has disconnected"
 msgstr "%s has disconnected"
@@ -1513,12 +1563,12 @@ msgstr "%s has disconnected"
 #. translators: reverse the order of these arguments
 #. * if the kicked should come before the kicker in your locale.
 #.
-#: ../libempathy-gtk/empathy-chat.c:2706
+#: ../libempathy-gtk/empathy-chat.c:2730
 #, c-format
 msgid "%1$s was kicked by %2$s"
 msgstr "%1$s was kicked by %2$s"
 
-#: ../libempathy-gtk/empathy-chat.c:2709
+#: ../libempathy-gtk/empathy-chat.c:2733
 #, c-format
 msgid "%s was kicked"
 msgstr "%s was kicked"
@@ -1526,17 +1576,17 @@ msgstr "%s was kicked"
 #. translators: reverse the order of these arguments
 #. * if the banned should come before the banner in your locale.
 #.
-#: ../libempathy-gtk/empathy-chat.c:2717
+#: ../libempathy-gtk/empathy-chat.c:2741
 #, c-format
 msgid "%1$s was banned by %2$s"
 msgstr "%1$s was banned by %2$s"
 
-#: ../libempathy-gtk/empathy-chat.c:2720
+#: ../libempathy-gtk/empathy-chat.c:2744
 #, c-format
 msgid "%s was banned"
 msgstr "%s was banned"
 
-#: ../libempathy-gtk/empathy-chat.c:2724
+#: ../libempathy-gtk/empathy-chat.c:2748
 #, c-format
 msgid "%s has left the room"
 msgstr "%s has left the room"
@@ -1546,17 +1596,17 @@ msgstr "%s has left the room"
 #. * given by the user living the room. If this poses a problem,
 #. * please let us know. :-)
 #.
-#: ../libempathy-gtk/empathy-chat.c:2733
+#: ../libempathy-gtk/empathy-chat.c:2757
 #, c-format
 msgid " (%s)"
 msgstr " (%s)"
 
-#: ../libempathy-gtk/empathy-chat.c:2758
+#: ../libempathy-gtk/empathy-chat.c:2782
 #, c-format
 msgid "%s has joined the room"
 msgstr "%s has joined the room"
 
-#: ../libempathy-gtk/empathy-chat.c:2783
+#: ../libempathy-gtk/empathy-chat.c:2807
 #, c-format
 msgid "%s is now known as %s"
 msgstr "%s is now known as %s"
@@ -1564,86 +1614,86 @@ msgstr "%s is now known as %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:2970
-#: ../src/empathy-streamed-media-window.c:1889
-#: ../src/empathy-event-manager.c:1280 ../src/empathy-call-window.c:1538
-#: ../src/empathy-call-window.c:1588 ../src/empathy-call-window.c:2631
+#: ../libempathy-gtk/empathy-chat.c:2994
+#: ../src/empathy-streamed-media-window.c:1888
+#: ../src/empathy-event-manager.c:1279 ../src/empathy-call-window.c:1466
+#: ../src/empathy-call-window.c:1516 ../src/empathy-call-window.c:2562
 msgid "Disconnected"
 msgstr "Disconnected"
 
 #. Add message
-#: ../libempathy-gtk/empathy-chat.c:3634
+#: ../libempathy-gtk/empathy-chat.c:3658
 msgid "Would you like to store this password?"
 msgstr "Would you like to store this password?"
 
-#: ../libempathy-gtk/empathy-chat.c:3640
+#: ../libempathy-gtk/empathy-chat.c:3664
 msgid "Remember"
 msgstr "Remember"
 
-#: ../libempathy-gtk/empathy-chat.c:3650
+#: ../libempathy-gtk/empathy-chat.c:3674
 msgid "Not now"
 msgstr "Not now"
 
-#: ../libempathy-gtk/empathy-chat.c:3694
+#: ../libempathy-gtk/empathy-chat.c:3718
 #: ../libempathy-gtk/empathy-bad-password-dialog.c:142
 msgid "Retry"
 msgstr "Retry"
 
-#: ../libempathy-gtk/empathy-chat.c:3698
+#: ../libempathy-gtk/empathy-chat.c:3722
 msgid "Wrong password; please try again:"
 msgstr "Wrong password; please try again:"
 
 #. Add message
-#: ../libempathy-gtk/empathy-chat.c:3828
+#: ../libempathy-gtk/empathy-chat.c:3852
 msgid "This room is protected by a password:"
 msgstr "This room is protected by a password:"
 
-#: ../libempathy-gtk/empathy-chat.c:3855
+#: ../libempathy-gtk/empathy-chat.c:3879
 msgid "Join"
 msgstr "Join"
 
-#: ../libempathy-gtk/empathy-chat.c:4047 ../src/empathy-event-manager.c:1301
+#: ../libempathy-gtk/empathy-chat.c:4071 ../src/empathy-event-manager.c:1300
 msgid "Connected"
 msgstr "Connected"
 
-#: ../libempathy-gtk/empathy-chat.c:4102
+#: ../libempathy-gtk/empathy-chat.c:4126
 msgid "Conversation"
 msgstr "Conversation"
 
 #. Translators: this string is a something like
 #. * "Escher Cat (SMS)"
-#: ../libempathy-gtk/empathy-chat.c:4107
+#: ../libempathy-gtk/empathy-chat.c:4131
 #, c-format
 msgid "%s (SMS)"
 msgstr "%s (SMS)"
 
-#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:264
+#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:262
 msgid "Unknown or invalid identifier"
 msgstr "Unknown or invalid identifier"
 
-#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:266
+#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:264
 msgid "Contact blocking temporarily unavailable"
 msgstr "Contact blocking temporarily unavailable"
 
-#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:268
+#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:266
 msgid "Contact blocking unavailable"
 msgstr "Contact blocking unavailable"
 
-#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:270
+#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:268
 msgid "Permission Denied"
 msgstr "Permission Denied"
 
-#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:274
+#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:272
 msgid "Could not block contact"
 msgstr "Could not block contact"
 
-#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:612
+#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:610
 msgid "Edit Blocked Contacts"
 msgstr "Edit Blocked Contacts"
 
 #. Account and Identifier
 #: ../libempathy-gtk/empathy-contact-blocking-dialog.ui.h:1
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:506
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:503
 #: ../libempathy-gtk/empathy-contact-widget.ui.h:1
 #: ../libempathy-gtk/empathy-individual-widget.c:1474
 #: ../src/empathy-chatrooms-window.ui.h:2
@@ -1655,13 +1705,6 @@ msgstr "Account:"
 msgid "Blocked Contacts"
 msgstr "Blocked Contacts"
 
-#: ../libempathy-gtk/empathy-contact-blocking-dialog.ui.h:3
-#: ../libempathy-gtk/empathy-status-preset-dialog.ui.h:1
-#: ../src/empathy-accounts-dialog.ui.h:2
-#: ../src/empathy-chatrooms-window.ui.h:3
-msgid "Remove"
-msgstr "Remove"
-
 #. Copy Link Address menu item
 #: ../libempathy-gtk/empathy-chat-text-view.c:322
 #: ../libempathy-gtk/empathy-webkit-utils.c:277
@@ -1722,157 +1765,157 @@ msgid "Decide _Later"
 msgstr "Decide _Later"
 
 #. Title
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:499
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:496
 msgid "Search contacts"
 msgstr "Search contacts"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:529
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:526
 msgid "Search: "
 msgstr "Search: "
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:587
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:584
 msgid "_Add Contact"
 msgstr "_Add Contact"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:605
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:602
 msgid "No contacts found"
 msgstr "No contacts found"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:621
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:618
 msgid "Your message introducing yourself:"
 msgstr "Your message introducing yourself:"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:629
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:626
 msgid "Please let me see when you're online. Thanks!"
 msgstr "Please let me see when you're online. Thanks!"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:569
+#: ../libempathy-gtk/empathy-contact-widget.c:567
 #: ../libempathy-gtk/empathy-individual-widget.c:304
 msgid "Channels:"
 msgstr "Channels:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:749
+#: ../libempathy-gtk/empathy-contact-widget.c:747
 #: ../libempathy-gtk/empathy-individual-widget.c:455
 msgid "Country ISO Code:"
 msgstr "Country ISO Code:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:751
+#: ../libempathy-gtk/empathy-contact-widget.c:749
 #: ../libempathy-gtk/empathy-individual-widget.c:457
 msgid "Country:"
 msgstr "Country:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:753
+#: ../libempathy-gtk/empathy-contact-widget.c:751
 #: ../libempathy-gtk/empathy-individual-widget.c:459
 msgid "State:"
 msgstr "State:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:755
+#: ../libempathy-gtk/empathy-contact-widget.c:753
 #: ../libempathy-gtk/empathy-individual-widget.c:461
 msgid "City:"
 msgstr "City:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:757
+#: ../libempathy-gtk/empathy-contact-widget.c:755
 #: ../libempathy-gtk/empathy-individual-widget.c:463
 msgid "Area:"
 msgstr "Area:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:759
+#: ../libempathy-gtk/empathy-contact-widget.c:757
 #: ../libempathy-gtk/empathy-individual-widget.c:465
 msgid "Postal Code:"
 msgstr "Postal Code:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:761
+#: ../libempathy-gtk/empathy-contact-widget.c:759
 #: ../libempathy-gtk/empathy-individual-widget.c:467
 msgid "Street:"
 msgstr "Street:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:763
+#: ../libempathy-gtk/empathy-contact-widget.c:761
 #: ../libempathy-gtk/empathy-individual-widget.c:469
 msgid "Building:"
 msgstr "Building:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:765
+#: ../libempathy-gtk/empathy-contact-widget.c:763
 #: ../libempathy-gtk/empathy-individual-widget.c:471
 msgid "Floor:"
 msgstr "Floor:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:767
+#: ../libempathy-gtk/empathy-contact-widget.c:765
 #: ../libempathy-gtk/empathy-individual-widget.c:473
 msgid "Room:"
 msgstr "Room:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:769
+#: ../libempathy-gtk/empathy-contact-widget.c:767
 #: ../libempathy-gtk/empathy-individual-widget.c:475
 msgid "Text:"
 msgstr "Text:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:771
+#: ../libempathy-gtk/empathy-contact-widget.c:769
 #: ../libempathy-gtk/empathy-individual-widget.c:477
 msgid "Description:"
 msgstr "Description:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:773
+#: ../libempathy-gtk/empathy-contact-widget.c:771
 #: ../libempathy-gtk/empathy-individual-widget.c:479
 msgid "URI:"
 msgstr "URI:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:775
+#: ../libempathy-gtk/empathy-contact-widget.c:773
 #: ../libempathy-gtk/empathy-individual-widget.c:481
 msgid "Accuracy Level:"
 msgstr "Accuracy Level:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:777
+#: ../libempathy-gtk/empathy-contact-widget.c:775
 #: ../libempathy-gtk/empathy-individual-widget.c:483
 msgid "Error:"
 msgstr "Error:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:779
+#: ../libempathy-gtk/empathy-contact-widget.c:777
 #: ../libempathy-gtk/empathy-individual-widget.c:485
 msgid "Vertical Error (meters):"
 msgstr "Vertical Error (metres):"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:781
+#: ../libempathy-gtk/empathy-contact-widget.c:779
 #: ../libempathy-gtk/empathy-individual-widget.c:487
 msgid "Horizontal Error (meters):"
 msgstr "Horizontal Error (metres):"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:783
+#: ../libempathy-gtk/empathy-contact-widget.c:781
 #: ../libempathy-gtk/empathy-individual-widget.c:489
 msgid "Speed:"
 msgstr "Speed:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:785
+#: ../libempathy-gtk/empathy-contact-widget.c:783
 #: ../libempathy-gtk/empathy-individual-widget.c:491
 msgid "Bearing:"
 msgstr "Bearing:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:787
+#: ../libempathy-gtk/empathy-contact-widget.c:785
 #: ../libempathy-gtk/empathy-individual-widget.c:493
 msgid "Climb Speed:"
 msgstr "Climb Speed:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:789
+#: ../libempathy-gtk/empathy-contact-widget.c:787
 #: ../libempathy-gtk/empathy-individual-widget.c:495
 msgid "Last Updated on:"
 msgstr "Last Updated on:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:791
+#: ../libempathy-gtk/empathy-contact-widget.c:789
 #: ../libempathy-gtk/empathy-individual-widget.c:497
 msgid "Longitude:"
 msgstr "Longitude:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:793
+#: ../libempathy-gtk/empathy-contact-widget.c:791
 #: ../libempathy-gtk/empathy-individual-widget.c:499
 msgid "Latitude:"
 msgstr "Latitude:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:795
+#: ../libempathy-gtk/empathy-contact-widget.c:793
 #: ../libempathy-gtk/empathy-individual-widget.c:501
 msgid "Altitude:"
 msgstr "Altitude:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:848
-#: ../libempathy-gtk/empathy-contact-widget.c:863
+#: ../libempathy-gtk/empathy-contact-widget.c:846
+#: ../libempathy-gtk/empathy-contact-widget.c:861
 #: ../libempathy-gtk/empathy-individual-widget.c:593
 #: ../libempathy-gtk/empathy-individual-widget.c:608
 #: ../src/empathy-preferences.ui.h:35
@@ -1880,32 +1923,32 @@ msgid "Location"
 msgstr "Location"
 
 #. translators: format is "Location, $date"
-#: ../libempathy-gtk/empathy-contact-widget.c:865
+#: ../libempathy-gtk/empathy-contact-widget.c:863
 #: ../libempathy-gtk/empathy-individual-widget.c:610
 #, c-format
 msgid "%s, %s"
 msgstr "%s, %s"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:917
+#: ../libempathy-gtk/empathy-contact-widget.c:915
 #: ../libempathy-gtk/empathy-individual-widget.c:659
 msgid "%B %e, %Y at %R UTC"
 msgstr "%B %e, %Y at %I:%M %p UTC"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:999
+#: ../libempathy-gtk/empathy-contact-widget.c:997
 #: ../libempathy-gtk/empathy-individual-widget.c:900
 msgid "Save Avatar"
 msgstr "Save Avatar"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:1055
+#: ../libempathy-gtk/empathy-contact-widget.c:1053
 #: ../libempathy-gtk/empathy-individual-widget.c:958
 msgid "Unable to save avatar"
 msgstr "Unable to save avatar"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:1446
+#: ../libempathy-gtk/empathy-contact-widget.c:1455
 msgid "Personal Details"
 msgstr "Personal Details"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:1449
+#: ../libempathy-gtk/empathy-contact-widget.c:1458
 #: ../libempathy-gtk/empathy-contact-widget.ui.h:6
 #: ../libempathy-gtk/empathy-individual-widget.ui.h:3
 msgid "Contact Details"
@@ -2014,11 +2057,11 @@ msgstr "Version:"
 msgid "Client:"
 msgstr "Client:"
 
-#: ../libempathy-gtk/empathy-groups-widget.c:331
+#: ../libempathy-gtk/empathy-groups-widget.c:327
 msgid "Groups"
 msgstr "Groups"
 
-#: ../libempathy-gtk/empathy-groups-widget.c:343
+#: ../libempathy-gtk/empathy-groups-widget.c:339
 msgid ""
 "Select the groups you want this contact to appear in.  Note that you can "
 "select more than one group or no groups."
@@ -2026,17 +2069,17 @@ msgstr ""
 "Select the groups you want this contact to appear in.  Note that you can "
 "select more than one group or no groups."
 
-#: ../libempathy-gtk/empathy-groups-widget.c:362
+#: ../libempathy-gtk/empathy-groups-widget.c:358
 msgid "_Add Group"
 msgstr "_Add Group"
 
-#: ../libempathy-gtk/empathy-groups-widget.c:397
+#: ../libempathy-gtk/empathy-groups-widget.c:393
 msgctxt "verb in a column header displaying group names"
 msgid "Select"
 msgstr "Select"
 
-#: ../libempathy-gtk/empathy-groups-widget.c:407
-#: ../src/empathy-roster-window.c:1951
+#: ../libempathy-gtk/empathy-groups-widget.c:403
+#: ../src/empathy-roster-window.c:1970
 msgid "Group"
 msgstr "Group"
 
@@ -2056,140 +2099,147 @@ msgstr[1] "The following identities can not be blocked:"
 msgid "Edit Contact Information"
 msgstr "Edit Contact Information"
 
+#. Translators: the heading at the top of the Information dialogue
+#: ../libempathy-gtk/empathy-individual-information-dialog.c:288
+#, fuzzy
+#| msgid "Blocked Contacts"
+msgid "Linked Contacts"
+msgstr "Blocked Contacts"
+
 #. 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:172
+#: ../libempathy-gtk/empathy-individual-menu.c:173
 #, c-format
 msgid "%s (%s)"
 msgstr "%s (%s)"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:344
+#: ../libempathy-gtk/empathy-individual-menu.c:345
 msgid "Select account to use to place the call"
 msgstr "Select account to use to place the call"
 
 #. translators: Call is a noun. This string is used in the window
 #. * title
-#: ../libempathy-gtk/empathy-individual-menu.c:348
+#: ../libempathy-gtk/empathy-individual-menu.c:349
 #: ../libempathy-gtk/empathy-log-window.ui.h:6
-#: ../src/empathy-streamed-media-window.c:1288
+#: ../src/empathy-streamed-media-window.c:1290
 #: ../src/empathy-call-window.ui.h:18
 msgid "Call"
 msgstr "Call"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:413
+#: ../libempathy-gtk/empathy-individual-menu.c:414
 msgid "Mobile"
 msgstr "Mobile"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:415
+#: ../libempathy-gtk/empathy-individual-menu.c:416
 msgid "Work"
 msgstr "Work"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:417
+#: ../libempathy-gtk/empathy-individual-menu.c:418
 msgid "HOME"
 msgstr "HOME"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:658
+#: ../libempathy-gtk/empathy-individual-menu.c:659
 msgid "_Block Contact"
 msgstr "_Block Contact"
 
 #. add chat button
-#: ../libempathy-gtk/empathy-individual-menu.c:1017
+#: ../libempathy-gtk/empathy-individual-menu.c:1018
 #: ../libempathy-gtk/empathy-new-message-dialog.c:319
 #: ../src/empathy-roster-window-menubar.ui.h:1
 msgid "_Chat"
 msgstr "_Chat"
 
 #. add SMS button
-#: ../libempathy-gtk/empathy-individual-menu.c:1052
+#: ../libempathy-gtk/empathy-individual-menu.c:1053
 #: ../libempathy-gtk/empathy-new-message-dialog.c:313
 msgid "_SMS"
 msgstr "_SMS"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1085
+#: ../libempathy-gtk/empathy-individual-menu.c:1086
 msgctxt "menu item"
 msgid "_Audio Call"
 msgstr "_Audio Call"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1118
+#: ../libempathy-gtk/empathy-individual-menu.c:1119
 msgctxt "menu item"
 msgid "_Video Call"
 msgstr "_Video Call"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1159
+#: ../libempathy-gtk/empathy-individual-menu.c:1160
 #: ../src/empathy-roster-window-menubar.ui.h:4
 msgid "_Previous Conversations"
 msgstr "_Previous Conversations"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1188
+#: ../libempathy-gtk/empathy-individual-menu.c:1189
 msgid "Send File"
 msgstr "Send File"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1218
+#: ../libempathy-gtk/empathy-individual-menu.c:1219
 msgid "Share My Desktop"
 msgstr "Share My Desktop"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1244
+#: ../libempathy-gtk/empathy-individual-menu.c:1245
 #: ../libempathy-gtk/empathy-individual-widget.c:1357
 msgid "Favorite"
 msgstr "Favourite"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1263
+#: ../libempathy-gtk/empathy-individual-menu.c:1264
 msgid "gnome-contacts not installed"
 msgstr "gnome-contacts not installed"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1266
+#: ../libempathy-gtk/empathy-individual-menu.c:1267
 msgid "Please install gnome-contacts to access contacts details."
 msgstr "Please install gnome-contacts to access contacts details."
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1377
+#: ../libempathy-gtk/empathy-individual-menu.c:1398
 msgid "Infor_mation"
 msgstr "Infor_mation"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1426
+#: ../libempathy-gtk/empathy-individual-menu.c:1447
 msgctxt "Edit individual (contextual menu)"
 msgid "_Edit"
 msgstr "_Edit"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1543
-#: ../src/empathy-chat-window.c:1166
+#: ../libempathy-gtk/empathy-individual-menu.c:1564
+#: ../src/empathy-chat-window.c:1192
 msgid "Inviting you to this room"
 msgstr "Inviting you to this room"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1589
+#: ../libempathy-gtk/empathy-individual-menu.c:1610
 msgid "_Invite to Chat Room"
 msgstr "_Invite to Chat Room"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1785
+#: ../libempathy-gtk/empathy-individual-menu.c:1806
 #: ../src/empathy-roster-window-menubar.ui.h:5
 msgid "_Add Contact…"
 msgstr "_Add Contact…"
 
-#: ../libempathy-gtk/empathy-individual-view.c:2306
+#: ../libempathy-gtk/empathy-individual-view.c:2304
 msgid "Delete and _Block"
 msgstr "Delete and _Block"
 
-#: ../libempathy-gtk/empathy-individual-view.c:2341
+#: ../libempathy-gtk/empathy-individual-view.c:2339
 #, c-format
 msgid "Do you really want to remove the group '%s'?"
 msgstr "Do you really want to remove the group '%s'?"
 
-#: ../libempathy-gtk/empathy-individual-view.c:2344
+#: ../libempathy-gtk/empathy-individual-view.c:2342
 msgid "Removing group"
 msgstr "Removing group"
 
 #. Remove
-#: ../libempathy-gtk/empathy-individual-view.c:2399
-#: ../libempathy-gtk/empathy-individual-view.c:2603
+#: ../libempathy-gtk/empathy-individual-view.c:2397
+#: ../libempathy-gtk/empathy-individual-view.c:2601
 msgid "_Remove"
 msgstr "_Remove"
 
-#: ../libempathy-gtk/empathy-individual-view.c:2476
+#: ../libempathy-gtk/empathy-individual-view.c:2474
 #, c-format
 msgid "Do you really want to remove the contact '%s'?"
 msgstr "Do you really want to remove the contact '%s'?"
 
-#: ../libempathy-gtk/empathy-individual-view.c:2485
+#: ../libempathy-gtk/empathy-individual-view.c:2483
 #, c-format
 msgid ""
 "Do you really want to remove the linked contact '%s'? Note that this will "
@@ -2198,7 +2248,7 @@ msgstr ""
 "Do you really want to remove the linked contact '%s'? Note that this will "
 "remove all the contacts which make up this linked contact."
 
-#: ../libempathy-gtk/empathy-individual-view.c:2497
+#: ../libempathy-gtk/empathy-individual-view.c:2495
 msgid "Removing contact"
 msgstr "Removing contact"
 
@@ -2238,139 +2288,139 @@ msgstr "Select"
 msgid "new server"
 msgstr "new server"
 
-#: ../libempathy-gtk/empathy-irc-network-dialog.c:535
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:539
 msgid "SSL"
 msgstr "SSL"
 
-#: ../libempathy-gtk/empathy-log-window.c:622
+#: ../libempathy-gtk/empathy-log-window.c:620
 msgid "History"
 msgstr "History"
 
-#: ../libempathy-gtk/empathy-log-window.c:677
+#: ../libempathy-gtk/empathy-log-window.c:675
 msgid "Show"
 msgstr "Show"
 
-#: ../libempathy-gtk/empathy-log-window.c:699
+#: ../libempathy-gtk/empathy-log-window.c:697
 msgid "Search"
 msgstr "Search"
 
-#: ../libempathy-gtk/empathy-log-window.c:1150
+#: ../libempathy-gtk/empathy-log-window.c:1148
 #, c-format
 msgid "Chat in %s"
 msgstr "Chat in %s"
 
-#: ../libempathy-gtk/empathy-log-window.c:1152
+#: ../libempathy-gtk/empathy-log-window.c:1150
 #, c-format
 msgid "Chat with %s"
 msgstr "Chat with %s"
 
-#: ../libempathy-gtk/empathy-log-window.c:1202
-#: ../libempathy-gtk/empathy-log-window.c:1349
+#: ../libempathy-gtk/empathy-log-window.c:1200
+#: ../libempathy-gtk/empathy-log-window.c:1347
 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:1291
+#: ../libempathy-gtk/empathy-log-window.c:1289
 #, 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:1297
+#: ../libempathy-gtk/empathy-log-window.c:1295
 #, c-format
 msgid "<b>%s:</b> %s"
 msgstr "<b>%s:</b> %s"
 
-#: ../libempathy-gtk/empathy-log-window.c:1373
+#: ../libempathy-gtk/empathy-log-window.c:1371
 #, c-format
 msgid "%s second"
 msgid_plural "%s seconds"
 msgstr[0] "%s second"
 msgstr[1] "%s seconds"
 
-#: ../libempathy-gtk/empathy-log-window.c:1380
+#: ../libempathy-gtk/empathy-log-window.c:1378
 #, c-format
 msgid "%s minute"
 msgid_plural "%s minutes"
 msgstr[0] "%s minute"
 msgstr[1] "%s minutes"
 
-#: ../libempathy-gtk/empathy-log-window.c:1388
+#: ../libempathy-gtk/empathy-log-window.c:1386
 #, c-format
 msgid "Call took %s, ended at %s"
 msgstr "Call took %s, ended at %s"
 
-#: ../libempathy-gtk/empathy-log-window.c:1722
+#: ../libempathy-gtk/empathy-log-window.c:1720
 msgid "Today"
 msgstr "Today"
 
-#: ../libempathy-gtk/empathy-log-window.c:1726
+#: ../libempathy-gtk/empathy-log-window.c:1724
 msgid "Yesterday"
 msgstr "Yesterday"
 
 #. Translators: A date such as '23 May 2010' (strftime format)
-#: ../libempathy-gtk/empathy-log-window.c:1741
+#: ../libempathy-gtk/empathy-log-window.c:1739
 msgid "%e %B %Y"
 msgstr "%e %B %Y"
 
-#: ../libempathy-gtk/empathy-log-window.c:1829
-#: ../libempathy-gtk/empathy-log-window.c:3489
+#: ../libempathy-gtk/empathy-log-window.c:1843
+#: ../libempathy-gtk/empathy-log-window.c:3471
 msgid "Anytime"
 msgstr "Anytime"
 
-#: ../libempathy-gtk/empathy-log-window.c:1918
-#: ../libempathy-gtk/empathy-log-window.c:2402
+#: ../libempathy-gtk/empathy-log-window.c:1942
+#: ../libempathy-gtk/empathy-log-window.c:2401
 msgid "Anyone"
 msgstr "Anyone"
 
-#: ../libempathy-gtk/empathy-log-window.c:2715
+#: ../libempathy-gtk/empathy-log-window.c:2714
 msgid "Who"
 msgstr "Who"
 
-#: ../libempathy-gtk/empathy-log-window.c:2924
+#: ../libempathy-gtk/empathy-log-window.c:2923
 msgid "When"
 msgstr "When"
 
-#: ../libempathy-gtk/empathy-log-window.c:3040
+#: ../libempathy-gtk/empathy-log-window.c:3039
 msgid "Anything"
 msgstr "Anything"
 
-#: ../libempathy-gtk/empathy-log-window.c:3042
+#: ../libempathy-gtk/empathy-log-window.c:3041
 msgid "Text chats"
 msgstr "Text chats"
 
-#: ../libempathy-gtk/empathy-log-window.c:3044
+#: ../libempathy-gtk/empathy-log-window.c:3043
 #: ../src/empathy-preferences.ui.h:25
 msgid "Calls"
 msgstr "Calls"
 
-#: ../libempathy-gtk/empathy-log-window.c:3049
+#: ../libempathy-gtk/empathy-log-window.c:3048
 msgid "Incoming calls"
 msgstr "Incoming calls"
 
-#: ../libempathy-gtk/empathy-log-window.c:3050
+#: ../libempathy-gtk/empathy-log-window.c:3049
 msgid "Outgoing calls"
 msgstr "Outgoing calls"
 
-#: ../libempathy-gtk/empathy-log-window.c:3051
+#: ../libempathy-gtk/empathy-log-window.c:3050
 msgid "Missed calls"
 msgstr "Missed calls"
 
-#: ../libempathy-gtk/empathy-log-window.c:3073
+#: ../libempathy-gtk/empathy-log-window.c:3072
 msgid "What"
 msgstr "What"
 
-#: ../libempathy-gtk/empathy-log-window.c:3782
+#: ../libempathy-gtk/empathy-log-window.c:3764
 msgid "Are you sure you want to delete all logs of previous conversations?"
 msgstr "Are you sure you want to delete all logs of previous conversations?"
 
-#: ../libempathy-gtk/empathy-log-window.c:3786
+#: ../libempathy-gtk/empathy-log-window.c:3768
 msgid "Clear All"
 msgstr "Clear All"
 
-#: ../libempathy-gtk/empathy-log-window.c:3793
+#: ../libempathy-gtk/empathy-log-window.c:3775
 msgid "Delete from:"
 msgstr "Delete from:"
 
@@ -2456,7 +2506,7 @@ msgid "There was an error starting the conversation"
 msgstr "There was an error starting the conversation"
 
 #: ../libempathy-gtk/empathy-new-message-dialog.c:290
-#: ../libempathy-gtk/empathy-new-call-dialog.c:202
+#: ../libempathy-gtk/empathy-new-call-dialog.c:200
 msgid "Enter a contact identifier or phone number:"
 msgstr "Enter a contact identifier or phone number:"
 
@@ -2466,17 +2516,17 @@ msgid "New Conversation"
 msgstr "New Conversation"
 
 #. add video button
-#: ../libempathy-gtk/empathy-new-call-dialog.c:225
+#: ../libempathy-gtk/empathy-new-call-dialog.c:223
 msgid "_Video Call"
 msgstr "_Video Call"
 
 #. add audio button
-#: ../libempathy-gtk/empathy-new-call-dialog.c:235
+#: ../libempathy-gtk/empathy-new-call-dialog.c:233
 msgid "_Audio Call"
 msgstr "_Audio Call"
 
 #. Tweak the dialog
-#: ../libempathy-gtk/empathy-new-call-dialog.c:245
+#: ../libempathy-gtk/empathy-new-call-dialog.c:243
 msgid "New Call"
 msgstr "New Call"
 
@@ -2532,7 +2582,7 @@ msgstr "Custom messages…"
 #. To translator: %s is the name of the protocol, such as "Google Talk" or
 #. * "Yahoo!"
 #.
-#: ../libempathy-gtk/empathy-protocol-chooser.c:584
+#: ../libempathy-gtk/empathy-protocol-chooser.c:588
 #, c-format
 msgid "New %s account"
 msgstr "New %s account"
@@ -2684,7 +2734,9 @@ msgid "Certificate hostname: %s"
 msgstr "Certificate hostname: %s"
 
 #: ../libempathy-gtk/empathy-tls-dialog.c:281
-msgid "Continue"
+#, fuzzy
+#| msgid "Continue"
+msgid "C_ontinue"
 msgstr "Continue"
 
 #: ../libempathy-gtk/empathy-tls-dialog.c:287
@@ -2703,19 +2755,19 @@ msgstr "Remember this choice for future connections"
 msgid "Certificate Details"
 msgstr "Certificate Details"
 
-#: ../libempathy-gtk/empathy-ui-utils.c:1741
+#: ../libempathy-gtk/empathy-ui-utils.c:1754
 msgid "Unable to open URI"
 msgstr "Unable to open URI"
 
-#: ../libempathy-gtk/empathy-ui-utils.c:1859
+#: ../libempathy-gtk/empathy-ui-utils.c:1872
 msgid "Select a file"
 msgstr "Select a file"
 
-#: ../libempathy-gtk/empathy-ui-utils.c:1934
+#: ../libempathy-gtk/empathy-ui-utils.c:1947
 msgid "Insufficient free space to save file"
 msgstr "Insufficient free space to save file"
 
-#: ../libempathy-gtk/empathy-ui-utils.c:1942
+#: ../libempathy-gtk/empathy-ui-utils.c:1955
 #, c-format
 msgid ""
 "%s of free space are required to save this file, but only %s is available. "
@@ -2724,7 +2776,7 @@ msgstr ""
 "%s of free space are required to save this file, but only %s is available. "
 "Please choose another location."
 
-#: ../libempathy-gtk/empathy-ui-utils.c:1986
+#: ../libempathy-gtk/empathy-ui-utils.c:1999
 #, c-format
 msgid "Incoming file from %s"
 msgstr "Incoming file from %s"
@@ -2896,31 +2948,45 @@ msgstr "Western"
 msgid "Vietnamese"
 msgstr "Vietnamese"
 
-#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:202
+#: ../libempathy-gtk/empathy-calendar-button.c:66
+#, fuzzy
+#| msgctxt "verb in a column header displaying group names"
+#| msgid "Select"
+msgid "Select..."
+msgstr "Select"
+
+#: ../libempathy-gtk/empathy-calendar-button.c:154
+#, fuzzy
+#| msgctxt "verb in a column header displaying group names"
+#| msgid "Select"
+msgid "_Select"
+msgstr "Select"
+
+#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:201
 msgid "No error message"
 msgstr "No error message"
 
-#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:275
+#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:274
 msgid "Instant Message (Empathy)"
 msgstr "Instant Message (Empathy)"
 
-#: ../src/empathy.c:437
+#: ../src/empathy.c:435
 msgid "Don't connect on startup"
 msgstr "Don't connect on startup"
 
-#: ../src/empathy.c:441
+#: ../src/empathy.c:439
 msgid "Don't display the contact list or any other dialogs on startup"
 msgstr "Don't display the contact list or any other dialogs on startup"
 
-#: ../src/empathy.c:456
+#: ../src/empathy.c:454
 msgid "- Empathy IM Client"
 msgstr "- Empathy IM Client"
 
-#: ../src/empathy.c:643
+#: ../src/empathy.c:641
 msgid "Error contacting the Account Manager"
 msgstr "Error contacting the Account Manager"
 
-#: ../src/empathy.c:645
+#: ../src/empathy.c:643
 #, c-format
 msgid ""
 "There was an error while trying to connect to the Telepathy Account Manager. "
@@ -2977,231 +3043,80 @@ msgstr ""
 "Adam Weinberger\n"
 "Tiffany Antopolski"
 
-#: ../src/empathy-account-assistant.c:167
-msgid "There was an error while importing the accounts."
-msgstr "There was an error while importing the accounts."
-
-#: ../src/empathy-account-assistant.c:170
-msgid "There was an error while parsing the account details."
-msgstr "There was an error while parsing the account details."
-
-#: ../src/empathy-account-assistant.c:173
-msgid "There was an error while creating the account."
-msgstr "There was an error while creating the account."
-
-#: ../src/empathy-account-assistant.c:175
-msgid "There was an error."
-msgstr "There was an error."
-
-#: ../src/empathy-account-assistant.c:179
-#, c-format
-msgid "The error message was: %s"
-msgstr "The error message was: %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 ""
-"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."
-
-#: ../src/empathy-account-assistant.c:220
-#: ../src/empathy-account-assistant.c:1276
-msgid "An error occurred"
-msgstr "An error occurred"
-
-#: ../src/empathy-account-assistant.c:469
-#: ../libempathy-gtk/empathy-new-account-dialog.c:144
-msgid "What kind of chat account do you have?"
-msgstr "What kind of chat account do you have?"
-
-#: ../src/empathy-account-assistant.c:475
-msgid "Do you have any other chat accounts you want to set up?"
-msgstr "Do you have any other chat accounts you want to set up?"
-
-#: ../src/empathy-account-assistant.c:481
-msgid "Enter your account details"
-msgstr "Enter your account details"
-
-#: ../src/empathy-account-assistant.c:486
-msgid "What kind of chat account do you want to create?"
-msgstr "What kind of chat account do you want to create?"
-
-#: ../src/empathy-account-assistant.c:492
-msgid "Do you want to create other chat accounts?"
-msgstr "Do you want to create other chat accounts?"
-
-#: ../src/empathy-account-assistant.c:499
-msgid "Enter the details for the new account"
-msgstr "Enter the details for the new account"
-
-#: ../src/empathy-account-assistant.c:614
-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 ""
-"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."
-
-#: ../src/empathy-account-assistant.c:631
-msgid "Do you have an account you've been using with another chat program?"
-msgstr "Do you have an account you've been using with another chat program?"
-
-#: ../src/empathy-account-assistant.c:655
-msgid "Yes, import my account details from "
-msgstr "Yes, import my account details from "
-
-#: ../src/empathy-account-assistant.c:676
-msgid "Yes, I'll enter my account details now"
-msgstr "Yes, I'll enter my account details now"
-
-#: ../src/empathy-account-assistant.c:698
-msgid "No, I want a new account"
-msgstr "No, I want a new account"
-
-#: ../src/empathy-account-assistant.c:708
-msgid "No, I just want to see people online nearby for now"
-msgstr "No, I just want to see people online nearby for now"
-
-#: ../src/empathy-account-assistant.c:729
-msgid "Select the accounts you want to import:"
-msgstr "Select the accounts you want to import:"
-
-#: ../src/empathy-account-assistant.c:816
-#: ../src/empathy-new-chatroom-dialog.c:639
-#: ../src/empathy-new-chatroom-dialog.c:640
-msgid "Yes"
-msgstr "Yes"
-
-#: ../src/empathy-account-assistant.c:823
-msgid "No, that's all for now"
-msgstr "No, that's all for now"
-
-#: ../src/empathy-account-assistant.c:1088
-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 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"
-
-#: ../src/empathy-account-assistant.c:1094
-#: ../src/empathy-account-assistant.c:1152
-msgid "Edit->Accounts"
-msgstr "Edit->Accounts"
-
-#: ../src/empathy-account-assistant.c:1110
-msgid "I do _not want to enable this feature for now"
-msgstr "I do _not want to enable this feature for now"
-
-#: ../src/empathy-account-assistant.c:1148
-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 ""
-"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"
-
-#: ../src/empathy-account-assistant.c:1154
-msgid "telepathy-salut not installed"
-msgstr "telepathy-salut not installed"
-
-#: ../src/empathy-account-assistant.c:1200
-msgid "Messaging and VoIP Accounts Assistant"
-msgstr "Messaging and VoIP Accounts Assistant"
-
-#: ../src/empathy-account-assistant.c:1234
-msgid "Welcome to Empathy"
-msgstr "Welcome to Empathy"
-
-#: ../src/empathy-account-assistant.c:1243
-msgid "Import your existing accounts"
-msgstr "Import your existing accounts"
-
-#: ../src/empathy-account-assistant.c:1261
-msgid "Please enter personal details"
-msgstr "Please enter personal details"
-
 #. The primary text of the dialog shown to the user when he is about to lose
 #. * unsaved changes
-#: ../src/empathy-accounts-dialog.c:69
+#: ../src/empathy-accounts-dialog.c:72
 #, c-format
 msgid "There are unsaved modifications to your %s account."
 msgstr "There are unsaved modifications to your %s account."
 
 #. 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:73
+#: ../src/empathy-accounts-dialog.c:76
 msgid "Your new account has not been saved yet."
 msgstr "Your new account has not been saved yet."
 
-#: ../src/empathy-accounts-dialog.c:344
-#: ../src/empathy-streamed-media-window.c:757
-#: ../src/empathy-call-window.c:1325
+#: ../src/empathy-accounts-dialog.c:404
+#: ../src/empathy-streamed-media-window.c:759
+#: ../src/empathy-call-window.c:1267
 msgid "Connecting…"
 msgstr "Connecting…"
 
-#: ../src/empathy-accounts-dialog.c:385
+#: ../src/empathy-accounts-dialog.c:445
 #, c-format
 msgid "Offline — %s"
 msgstr "Offline — %s"
 
-#: ../src/empathy-accounts-dialog.c:397
+#: ../src/empathy-accounts-dialog.c:457
 #, c-format
 msgid "Disconnected — %s"
 msgstr "Disconnected — %s"
 
-#: ../src/empathy-accounts-dialog.c:408
+#: ../src/empathy-accounts-dialog.c:468
 msgid "Offline — No Network Connection"
 msgstr "Offline — No Network Connection"
 
-#: ../src/empathy-accounts-dialog.c:415
+#: ../src/empathy-accounts-dialog.c:475
 msgid "Unknown Status"
 msgstr "Unknown Status"
 
-#: ../src/empathy-accounts-dialog.c:427
+#: ../src/empathy-accounts-dialog.c:492
+msgid ""
+"This account has been disabled because it relies on an old, unsupported "
+"backend. Please install telepathy-haze and restart your session to migrate "
+"the account."
+msgstr ""
+
+#: ../src/empathy-accounts-dialog.c:502
 msgid "Offline — Account Disabled"
 msgstr "Offline — Account Disabled"
 
-#: ../src/empathy-accounts-dialog.c:530
+#: ../src/empathy-accounts-dialog.c:608
 msgid "Edit Connection Parameters"
-msgstr "Edit Connection Parametres"
+msgstr "Edit Connection Parameters"
 
-#: ../src/empathy-accounts-dialog.c:693
+#: ../src/empathy-accounts-dialog.c:773
 msgid "Failed to retrieve your personal information from the server."
 msgstr "Failed to retrieve your personal information from the server."
 
-#: ../src/empathy-accounts-dialog.c:699
+#: ../src/empathy-accounts-dialog.c:779
 msgid "Go online to edit your personal information."
 msgstr "Go online to edit your personal information."
 
-#: ../src/empathy-accounts-dialog.c:784
+#: ../src/empathy-accounts-dialog.c:866
 msgid "_Edit Connection Parameters..."
-msgstr "_Edit Connection Parametres..."
+msgstr "_Edit Connection Parameters..."
 
-#: ../src/empathy-accounts-dialog.c:1289
+#: ../src/empathy-accounts-dialog.c:1362
 #, c-format
 msgid "Do you want to remove %s from your computer?"
 msgstr "Do you want to remove %s from your computer?"
 
-#: ../src/empathy-accounts-dialog.c:1293
+#: ../src/empathy-accounts-dialog.c:1366
 msgid "This will not remove your account on the server."
 msgstr "This will not remove your account on the server."
 
-#: ../src/empathy-accounts-dialog.c:1529
+#: ../src/empathy-accounts-dialog.c:1602
 msgid ""
 "You are about to select another account, which will discard\n"
 "your changes. Are you sure you want to proceed?"
@@ -3210,15 +3125,25 @@ msgstr ""
 "your changes. Are you sure you want to proceed?"
 
 #. Menu items: to enabled/disable the account
-#: ../src/empathy-accounts-dialog.c:1705
+#: ../src/empathy-accounts-dialog.c:1779
 msgid "_Enable"
 msgstr "_Enable"
 
-#: ../src/empathy-accounts-dialog.c:1706
+#: ../src/empathy-accounts-dialog.c:1780
 msgid "_Disable"
 msgstr "_Disable"
 
-#: ../src/empathy-accounts-dialog.c:2176
+#: ../src/empathy-accounts-dialog.c:2221
+msgid "_Skip"
+msgstr ""
+
+#: ../src/empathy-accounts-dialog.c:2225
+#, fuzzy
+#| msgid "Connected"
+msgid "_Connect"
+msgstr "Connected"
+
+#: ../src/empathy-accounts-dialog.c:2402
 msgid ""
 "You are about to close the window, which will discard\n"
 "your changes. Are you sure you want to proceed?"
@@ -3226,17 +3151,13 @@ msgstr ""
 "You are about to close the window, which will discard\n"
 "your changes. Are you sure you want to proceed?"
 
-#: ../src/empathy-accounts-dialog.ui.h:1
-msgid "Add…"
-msgstr "Add…"
-
 #: ../src/empathy-accounts-dialog.ui.h:3
 msgid "_Import…"
 msgstr "_Import…"
 
 #: ../src/empathy-accounts-dialog.ui.h:4
-msgid "Protocol:"
-msgstr "Protocol:"
+msgid "Loading account information"
+msgstr "Loading account information"
 
 #: ../src/empathy-accounts-dialog.ui.h:5
 msgid ""
@@ -3247,123 +3168,117 @@ msgstr ""
 "you want to use."
 
 #: ../src/empathy-accounts-dialog.ui.h:6
-msgid "No protocol installed"
+#, fuzzy
+#| msgid "No protocol installed"
+msgid "No protocol backends installed"
 msgstr "No protocol installed"
 
-#: ../src/empathy-accounts-dialog.ui.h:7
-msgid "Loading account information"
-msgstr "Loading account information"
-
-#: ../src/empathy-auth-client.c:286
+#: ../src/empathy-auth-client.c:288
 msgid " - Empathy authentication client"
 msgstr " - Empathy authentication client"
 
-#: ../src/empathy-auth-client.c:302
+#: ../src/empathy-auth-client.c:304
 msgid "Empathy authentication client"
 msgstr "Empathy authentication client"
 
-#: ../src/empathy-auto-salut-account-helper.c:83
-msgid "People nearby"
-msgstr "People nearby"
-
-#: ../src/empathy-av.c:118 ../src/empathy-call.c:193
+#: ../src/empathy-av.c:118 ../src/empathy-call.c:201
 msgid "- Empathy Audio/Video Client"
 msgstr "- Empathy Audio/Video Client"
 
-#: ../src/empathy-av.c:134 ../src/empathy-call.c:218
+#: ../src/empathy-av.c:134 ../src/empathy-call.c:223
 msgid "Empathy Audio/Video Client"
 msgstr "Empathy Audio/Video Client"
 
-#: ../src/empathy-streamed-media-window.c:433
+#: ../src/empathy-streamed-media-window.c:434
 msgid "Contrast"
 msgstr "Contrast"
 
-#: ../src/empathy-streamed-media-window.c:436
+#: ../src/empathy-streamed-media-window.c:437
 msgid "Brightness"
 msgstr "Brightness"
 
-#: ../src/empathy-streamed-media-window.c:439
+#: ../src/empathy-streamed-media-window.c:440
 msgid "Gamma"
 msgstr "Gamma"
 
-#: ../src/empathy-streamed-media-window.c:545
+#: ../src/empathy-streamed-media-window.c:547
 msgid "Volume"
 msgstr "Volume"
 
-#: ../src/empathy-streamed-media-window.c:1097
+#: ../src/empathy-streamed-media-window.c:1099
 msgid "_Sidebar"
 msgstr "_Sidebar"
 
-#: ../src/empathy-streamed-media-window.c:1117
+#: ../src/empathy-streamed-media-window.c:1119
 msgid "Audio input"
 msgstr "Audio input"
 
-#: ../src/empathy-streamed-media-window.c:1121
+#: ../src/empathy-streamed-media-window.c:1123
 msgid "Video input"
 msgstr "Video input"
 
-#: ../src/empathy-streamed-media-window.c:1129
+#: ../src/empathy-streamed-media-window.c:1131
 msgid "Dialpad"
 msgstr "Dialpad"
 
-#: ../src/empathy-streamed-media-window.c:1140
+#: ../src/empathy-streamed-media-window.c:1142
 msgid "Details"
 msgstr "Details"
 
 #. 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:1209
-#: ../src/empathy-call-window.c:1927
+#: ../src/empathy-streamed-media-window.c:1211
+#: ../src/empathy-call-window.c:1861
 #, c-format
 msgid "Call with %s"
 msgstr "Call with %s"
 
-#: ../src/empathy-streamed-media-window.c:1442
-#: ../src/empathy-call-window.c:2171
+#: ../src/empathy-streamed-media-window.c:1444
+#: ../src/empathy-call-window.c:2105
 msgid "The IP address as seen by the machine"
 msgstr "The IP address as seen by the machine"
 
-#: ../src/empathy-streamed-media-window.c:1444
-#: ../src/empathy-call-window.c:2173
+#: ../src/empathy-streamed-media-window.c:1446
+#: ../src/empathy-call-window.c:2107
 msgid "The IP address as seen by a server on the Internet"
 msgstr "The IP address as seen by a server on the Internet"
 
-#: ../src/empathy-streamed-media-window.c:1446
-#: ../src/empathy-call-window.c:2175
+#: ../src/empathy-streamed-media-window.c:1448
+#: ../src/empathy-call-window.c:2109
 msgid "The IP address of the peer as seen by the other side"
 msgstr "The IP address of the peer as seen by the other side"
 
-#: ../src/empathy-streamed-media-window.c:1448
-#: ../src/empathy-call-window.c:2177
+#: ../src/empathy-streamed-media-window.c:1450
+#: ../src/empathy-call-window.c:2111
 msgid "The IP address of a relay server"
 msgstr "The IP address of a relay server"
 
-#: ../src/empathy-streamed-media-window.c:1450
-#: ../src/empathy-call-window.c:2179
+#: ../src/empathy-streamed-media-window.c:1452
+#: ../src/empathy-call-window.c:2113
 msgid "The IP address of the multicast group"
 msgstr "The IP address of the multicast group"
 
-#: ../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:1837
+#: ../src/empathy-streamed-media-window.c:1840
+#: ../src/empathy-streamed-media-window.c:1843
+#: ../src/empathy-streamed-media-window.c:1846
 msgctxt "codec"
 msgid "Unknown"
 msgstr "Unknown"
 
 #. Translators: number of minutes:seconds the caller has been connected
-#: ../src/empathy-streamed-media-window.c:2139
+#: ../src/empathy-streamed-media-window.c:2138
 #, c-format
 msgid "Connected — %d:%02dm"
 msgstr "Connected — %d:%02dm"
 
-#: ../src/empathy-streamed-media-window.c:2200
-#: ../src/empathy-call-window.c:3033
+#: ../src/empathy-streamed-media-window.c:2199
+#: ../src/empathy-call-window.c:2964
 msgid "Technical Details"
 msgstr "Technical Details"
 
-#: ../src/empathy-streamed-media-window.c:2238
-#: ../src/empathy-call-window.c:3072
+#: ../src/empathy-streamed-media-window.c:2237
+#: ../src/empathy-call-window.c:3003
 #, c-format
 msgid ""
 "%s's software does not understand any of the audio formats supported by your "
@@ -3372,8 +3287,8 @@ msgstr ""
 "%s's software does not understand any of the audio formats supported by your "
 "computer"
 
-#: ../src/empathy-streamed-media-window.c:2243
-#: ../src/empathy-call-window.c:3077
+#: ../src/empathy-streamed-media-window.c:2242
+#: ../src/empathy-call-window.c:3008
 #, c-format
 msgid ""
 "%s's software does not understand any of the video formats supported by your "
@@ -3382,8 +3297,8 @@ msgstr ""
 "%s's software does not understand any of the video formats supported by your "
 "computer"
 
-#: ../src/empathy-streamed-media-window.c:2249
-#: ../src/empathy-call-window.c:3083
+#: ../src/empathy-streamed-media-window.c:2248
+#: ../src/empathy-call-window.c:3014
 #, c-format
 msgid ""
 "Can't establish a connection to %s. One of you might be on a network that "
@@ -3392,27 +3307,27 @@ msgstr ""
 "Can't establish a connection to %s. One of you might be on a network that "
 "does not allow direct connections."
 
-#: ../src/empathy-streamed-media-window.c:2255
-#: ../src/empathy-call-window.c:3089
+#: ../src/empathy-streamed-media-window.c:2254
+#: ../src/empathy-call-window.c:3020
 msgid "There was a failure on the network"
 msgstr "There was a failure on the network"
 
-#: ../src/empathy-streamed-media-window.c:2259
-#: ../src/empathy-call-window.c:3093
+#: ../src/empathy-streamed-media-window.c:2258
+#: ../src/empathy-call-window.c:3024
 msgid ""
 "The audio formats necessary for this call are not installed on your computer"
 msgstr ""
 "The audio formats necessary for this call are not installed on your computer"
 
-#: ../src/empathy-streamed-media-window.c:2262
-#: ../src/empathy-call-window.c:3096
+#: ../src/empathy-streamed-media-window.c:2261
+#: ../src/empathy-call-window.c:3027
 msgid ""
 "The video formats necessary for this call are not installed on your computer"
 msgstr ""
 "The video formats necessary for this call are not installed on your computer"
 
-#: ../src/empathy-streamed-media-window.c:2272
-#: ../src/empathy-call-window.c:3108
+#: ../src/empathy-streamed-media-window.c:2271
+#: ../src/empathy-call-window.c:3039
 #, c-format
 msgid ""
 "Something unexpected happened in a Telepathy component. Please <a href=\"%s"
@@ -3423,23 +3338,23 @@ msgstr ""
 "\">report this bug</a> and attach logs gathered from the 'Debug' window in "
 "the Help menu."
 
-#: ../src/empathy-streamed-media-window.c:2280
-#: ../src/empathy-call-window.c:3117
+#: ../src/empathy-streamed-media-window.c:2279
+#: ../src/empathy-call-window.c:3048
 msgid "There was a failure in the call engine"
 msgstr "There was a failure in the call engine"
 
-#: ../src/empathy-streamed-media-window.c:2283
-#: ../src/empathy-call-window.c:3120
+#: ../src/empathy-streamed-media-window.c:2282
+#: ../src/empathy-call-window.c:3051
 msgid "The end of the stream was reached"
 msgstr "The end of the stream was reached"
 
-#: ../src/empathy-streamed-media-window.c:2323
-#: ../src/empathy-call-window.c:3160
+#: ../src/empathy-streamed-media-window.c:2322
+#: ../src/empathy-call-window.c:3091
 msgid "Can't establish audio stream"
 msgstr "Can't establish audio stream"
 
-#: ../src/empathy-streamed-media-window.c:2333
-#: ../src/empathy-call-window.c:3170
+#: ../src/empathy-streamed-media-window.c:2332
+#: ../src/empathy-call-window.c:3101
 msgid "Can't establish video stream"
 msgstr "Can't establish video stream"
 
@@ -3552,8 +3467,8 @@ msgstr "Encoding Codec:"
 
 #: ../src/empathy-call-window.ui.h:28
 #: ../src/empathy-streamed-media-window.ui.h:21
-#: ../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:2514 ../src/empathy-call-window.c:2515
+#: ../src/empathy-call-window.c:2516 ../src/empathy-call-window.c:2517
 msgid "Unknown"
 msgstr "Unknown"
 
@@ -3577,11 +3492,11 @@ msgstr "Local Candidate:"
 msgid "Audio"
 msgstr "Audio"
 
-#: ../src/empathy-chat-window.c:285
+#: ../src/empathy-chat-window.c:289
 msgid "Close this window?"
 msgstr "Close this window?"
 
-#: ../src/empathy-chat-window.c:290
+#: ../src/empathy-chat-window.c:294
 #, c-format
 msgid ""
 "Closing this window will leave %s. You will not receive any further messages "
@@ -3590,7 +3505,7 @@ msgstr ""
 "Closing this window will leave %s. You will not receive any further messages "
 "until you rejoin it."
 
-#: ../src/empathy-chat-window.c:301
+#: ../src/empathy-chat-window.c:305
 #, c-format
 msgid ""
 "Closing this window will leave a chat room. You will not receive any further "
@@ -3605,12 +3520,12 @@ msgstr[1] ""
 "Closing this window will leave %u chat rooms. You will not receive any "
 "further messages until you rejoin them."
 
-#: ../src/empathy-chat-window.c:310
+#: ../src/empathy-chat-window.c:314
 #, c-format
 msgid "Leave %s?"
 msgstr "Leave %s?"
 
-#: ../src/empathy-chat-window.c:311
+#: ../src/empathy-chat-window.c:315
 msgid ""
 "You will not receive any further messages from this chat room until you "
 "rejoin it."
@@ -3618,54 +3533,54 @@ msgstr ""
 "You will not receive any further messages from this chat room until you "
 "rejoin it."
 
-#: ../src/empathy-chat-window.c:330
+#: ../src/empathy-chat-window.c:334
 msgid "Close window"
 msgstr "Close window"
 
-#: ../src/empathy-chat-window.c:330
+#: ../src/empathy-chat-window.c:334
 msgid "Leave room"
 msgstr "Leave room"
 
-#: ../src/empathy-chat-window.c:636 ../src/empathy-chat-window.c:656
+#: ../src/empathy-chat-window.c:640 ../src/empathy-chat-window.c:660
 #, c-format
 msgid "%s (%d unread)"
 msgid_plural "%s (%d unread)"
 msgstr[0] "%s (%d unread)"
 msgstr[1] "%s (%d unread)"
 
-#: ../src/empathy-chat-window.c:648
+#: ../src/empathy-chat-window.c:652
 #, c-format
 msgid "%s (and %u other)"
 msgid_plural "%s (and %u others)"
 msgstr[0] "%s (and %u other)"
 msgstr[1] "%s (and %u others)"
 
-#: ../src/empathy-chat-window.c:664
+#: ../src/empathy-chat-window.c:668
 #, c-format
 msgid "%s (%d unread from others)"
 msgid_plural "%s (%d unread from others)"
 msgstr[0] "%s (%d unread from others)"
 msgstr[1] "%s (%d unread from others)"
 
-#: ../src/empathy-chat-window.c:673
+#: ../src/empathy-chat-window.c:677
 #, c-format
 msgid "%s (%d unread from all)"
 msgid_plural "%s (%d unread from all)"
 msgstr[0] "%s (%d unread from all)"
 msgstr[1] "%s (%d unread from all)"
 
-#: ../src/empathy-chat-window.c:888
+#: ../src/empathy-chat-window.c:892
 msgid "SMS:"
 msgstr "SMS:"
 
-#: ../src/empathy-chat-window.c:898
+#: ../src/empathy-chat-window.c:902
 #, c-format
 msgid "Sending %d message"
 msgid_plural "Sending %d messages"
 msgstr[0] "Sending %d message"
 msgstr[1] "Sending %d messages"
 
-#: ../src/empathy-chat-window.c:920
+#: ../src/empathy-chat-window.c:924
 msgid "Typing a message."
 msgstr "Typing a message."
 
@@ -3745,96 +3660,96 @@ msgstr "Auto-Connect"
 msgid "Manage Favorite Rooms"
 msgstr "Manage Favourite Rooms"
 
-#: ../src/empathy-event-manager.c:523
+#: ../src/empathy-event-manager.c:522
 msgid "Incoming video call"
 msgstr "Incoming video call"
 
-#: ../src/empathy-event-manager.c:523 ../src/empathy-call-window.c:1555
+#: ../src/empathy-event-manager.c:522 ../src/empathy-call-window.c:1483
 msgid "Incoming call"
 msgstr "Incoming call"
 
-#: ../src/empathy-event-manager.c:527
+#: ../src/empathy-event-manager.c:526
 #, c-format
 msgid "%s is video calling you. Do you want to answer?"
 msgstr "%s is video calling you. Do you want to answer?"
 
-#: ../src/empathy-event-manager.c:528
+#: ../src/empathy-event-manager.c:527
 #, c-format
 msgid "%s is calling you. Do you want to answer?"
 msgstr "%s is calling you. Do you want to answer?"
 
-#: ../src/empathy-event-manager.c:531 ../src/empathy-event-manager.c:732
-#: ../src/empathy-event-manager.c:765 ../src/empathy-call-window.c:1561
+#: ../src/empathy-event-manager.c:530 ../src/empathy-event-manager.c:731
+#: ../src/empathy-event-manager.c:764 ../src/empathy-call-window.c:1489
 #, c-format
 msgid "Incoming call from %s"
 msgstr "Incoming call from %s"
 
-#: ../src/empathy-event-manager.c:556
+#: ../src/empathy-event-manager.c:555
 msgid "_Reject"
 msgstr "_Reject"
 
-#: ../src/empathy-event-manager.c:564 ../src/empathy-event-manager.c:572
+#: ../src/empathy-event-manager.c:563 ../src/empathy-event-manager.c:571
 msgid "_Answer"
 msgstr "_Answer"
 
-#: ../src/empathy-event-manager.c:572
+#: ../src/empathy-event-manager.c:571
 msgid "_Answer with video"
 msgstr "_Answer with video"
 
-#: ../src/empathy-event-manager.c:732 ../src/empathy-event-manager.c:765
-#: ../src/empathy-call-window.c:1561
+#: ../src/empathy-event-manager.c:731 ../src/empathy-event-manager.c:764
+#: ../src/empathy-call-window.c:1489
 #, c-format
 msgid "Incoming video call from %s"
 msgstr "Incoming video call from %s"
 
-#: ../src/empathy-event-manager.c:838
+#: ../src/empathy-event-manager.c:837
 msgid "Room invitation"
 msgstr "Room invitation"
 
-#: ../src/empathy-event-manager.c:840
+#: ../src/empathy-event-manager.c:839
 #, c-format
 msgid "Invitation to join %s"
 msgstr "Invitation to join %s"
 
-#: ../src/empathy-event-manager.c:847
+#: ../src/empathy-event-manager.c:846
 #, c-format
 msgid "%s is inviting you to join %s"
 msgstr "%s is inviting you to join %s"
 
-#: ../src/empathy-event-manager.c:855
+#: ../src/empathy-event-manager.c:854
 msgid "_Decline"
 msgstr "_Decline"
 
-#: ../src/empathy-event-manager.c:860
+#: ../src/empathy-event-manager.c:859
 #: ../src/empathy-new-chatroom-dialog.ui.h:2
 msgid "_Join"
 msgstr "_Join"
 
-#: ../src/empathy-event-manager.c:887
+#: ../src/empathy-event-manager.c:886
 #, c-format
 msgid "%s invited you to join %s"
 msgstr "%s invited you to join %s"
 
-#: ../src/empathy-event-manager.c:893
+#: ../src/empathy-event-manager.c:892
 #, c-format
 msgid "You have been invited to join %s"
 msgstr "You have been invited to join %s"
 
-#: ../src/empathy-event-manager.c:944
+#: ../src/empathy-event-manager.c:943
 #, c-format
 msgid "Incoming file transfer from %s"
 msgstr "Incoming file transfer from %s"
 
-#: ../src/empathy-event-manager.c:1147 ../src/empathy-roster-window.c:372
+#: ../src/empathy-event-manager.c:1146 ../src/empathy-roster-window.c:374
 msgid "Password required"
 msgstr "Password required"
 
-#: ../src/empathy-event-manager.c:1217
+#: ../src/empathy-event-manager.c:1216
 #, c-format
 msgid "%s would like permission to see when you are online"
 msgstr "%s would like permission to see when you are online"
 
-#: ../src/empathy-event-manager.c:1223
+#: ../src/empathy-event-manager.c:1222
 #, c-format
 msgid ""
 "\n"
@@ -3952,9 +3867,15 @@ msgstr "File Transfers"
 
 #: ../src/empathy-ft-manager.ui.h:2
 msgid "Remove completed, canceled and failed file transfers from the list"
-msgstr "Remove completed, cancellled and failed file transfers from the list"
+msgstr "Remove completed, cancelled and failed file transfers from the list"
+
+#: ../src/empathy-import-dialog.c:76
+#, fuzzy
+#| msgid "Import"
+msgid "_Import"
+msgstr "Import"
 
-#: ../src/empathy-import-dialog.c:84
+#: ../src/empathy-import-dialog.c:88
 msgid ""
 "No accounts to import could be found. Empathy currently only supports "
 "importing accounts from Pidgin."
@@ -3962,91 +3883,91 @@ msgstr ""
 "No accounts to import could be found. Empathy currently only supports "
 "importing accounts from Pidgin."
 
-#: ../src/empathy-import-dialog.c:199
+#: ../src/empathy-import-dialog.c:209
 msgid "Import Accounts"
 msgstr "Import Accounts"
 
 #. Translators: this is the header of a treeview column
-#: ../src/empathy-import-widget.c:315
+#: ../src/empathy-import-widget.c:303
 msgid "Import"
 msgstr "Import"
 
-#: ../src/empathy-import-widget.c:324
+#: ../src/empathy-import-widget.c:312
 msgid "Protocol"
 msgstr "Protocol"
 
-#: ../src/empathy-import-widget.c:348
+#: ../src/empathy-import-widget.c:336
 msgid "Source"
 msgstr "Source"
 
-#: ../src/empathy-roster-window.c:389
+#: ../src/empathy-roster-window.c:391
 msgid "Provide Password"
 msgstr "Provide Password"
 
-#: ../src/empathy-roster-window.c:395
+#: ../src/empathy-roster-window.c:397
 msgid "Disconnect"
 msgstr "Disconnect"
 
-#: ../src/empathy-roster-window.c:644
+#: ../src/empathy-roster-window.c:657
 msgid "You need to setup an account to see contacts here."
 msgstr "You need to setup an account to see contacts here."
 
-#: ../src/empathy-roster-window.c:660
+#: ../src/empathy-roster-window.c:673
 msgid "No match found"
 msgstr "No match found"
 
-#: ../src/empathy-roster-window.c:765
+#: ../src/empathy-roster-window.c:783
 #, c-format
 msgid "Sorry, %s accounts can’t be used until your %s software is updated."
 msgstr "Sorry, %s accounts can’t be used until your %s software is updated."
 
-#: ../src/empathy-roster-window.c:831
+#: ../src/empathy-roster-window.c:849
 msgid "Update software..."
 msgstr "Update software..."
 
-#: ../src/empathy-roster-window.c:837 ../src/empathy-roster-window.c:954
+#: ../src/empathy-roster-window.c:855 ../src/empathy-roster-window.c:972
 msgid "Close"
 msgstr "Close"
 
-#: ../src/empathy-roster-window.c:942
+#: ../src/empathy-roster-window.c:960
 msgid "Reconnect"
 msgstr "Reconnect"
 
-#: ../src/empathy-roster-window.c:948
+#: ../src/empathy-roster-window.c:966
 msgid "Edit Account"
 msgstr "Edit Account"
 
 #. Translators: this string will be something like:
 #. * Top up My Account ($1.23)..."
-#: ../src/empathy-roster-window.c:1092
+#: ../src/empathy-roster-window.c:1110
 #, c-format
 msgid "Top up %s (%s)..."
 msgstr "Top up %s (%s)..."
 
-#: ../src/empathy-roster-window.c:1138
+#: ../src/empathy-roster-window.c:1156
 msgid "Top up account credit"
 msgstr "Top up account credit"
 
 #. top up button
-#: ../src/empathy-roster-window.c:1210
+#: ../src/empathy-roster-window.c:1228
 msgid "Top Up..."
 msgstr "Top Up..."
 
-#: ../src/empathy-roster-window.c:1933
+#: ../src/empathy-roster-window.c:1952
 msgid "Contact"
 msgstr "Contact"
 
-#: ../src/empathy-roster-window.c:2131
+#: ../src/empathy-roster-window.c:2150
 msgid "You need to enable one of your accounts to see contacts here."
 msgstr "You need to enable one of your accounts to see contacts here."
 
 #. translators: argument is an account name
-#: ../src/empathy-roster-window.c:2139
+#: ../src/empathy-roster-window.c:2158
 #, c-format
 msgid "You need to enable %s to see contacts here."
 msgstr "You need to enable %s to see contacts here."
 
-#: ../src/empathy-roster-window.c:2419
+#: ../src/empathy-roster-window.c:2460
 msgid "Contact List"
 msgstr "Contact List"
 
@@ -4150,7 +4071,7 @@ msgstr "Members"
 
 #. Translators: Room/Join's roomlist tooltip. Parameters are a channel name,
 #. yes/no, yes/no and a number.
-#: ../src/empathy-new-chatroom-dialog.c:637
+#: ../src/empathy-new-chatroom-dialog.c:636
 #, c-format
 msgid ""
 "%s\n"
@@ -4163,16 +4084,21 @@ msgstr ""
 "Password required: %s\n"
 "Members: %s"
 
+#: ../src/empathy-new-chatroom-dialog.c:638
+#: ../src/empathy-new-chatroom-dialog.c:639
+msgid "Yes"
+msgstr "Yes"
+
+#: ../src/empathy-new-chatroom-dialog.c:638
 #: ../src/empathy-new-chatroom-dialog.c:639
-#: ../src/empathy-new-chatroom-dialog.c:640
 msgid "No"
 msgstr "No"
 
-#: ../src/empathy-new-chatroom-dialog.c:668
+#: ../src/empathy-new-chatroom-dialog.c:666
 msgid "Could not start room listing"
 msgstr "Could not start room listing"
 
-#: ../src/empathy-new-chatroom-dialog.c:678
+#: ../src/empathy-new-chatroom-dialog.c:676
 msgid "Could not stop room listing"
 msgstr "Could not stop room listing"
 
@@ -4239,46 +4165,46 @@ msgid "Language"
 msgstr "Language"
 
 #. translators: Contact name for the chat theme preview
-#: ../src/empathy-preferences.c:726
+#: ../src/empathy-preferences.c:724
 msgid "Juliet"
 msgstr "Juliet"
 
 #. translators: Contact name for the chat theme preview
-#: ../src/empathy-preferences.c:733
+#: ../src/empathy-preferences.c:731
 msgid "Romeo"
 msgstr "Romeo"
 
 #. translators: Quote from Romeo & Julier, for chat theme preview
-#: ../src/empathy-preferences.c:739
+#: ../src/empathy-preferences.c:737
 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:743
+#: ../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:746
+#: ../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:749
+#: ../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:752
+#: ../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:755
+#: ../src/empathy-preferences.c:753
 msgid "Juliet has disconnected"
 msgstr "Juliet has disconnected"
 
-#: ../src/empathy-preferences.c:1159
+#: ../src/empathy-preferences.c:1157
 msgid "Preferences"
 msgstr "Preferences"
 
@@ -4368,7 +4294,7 @@ msgstr "Sounds"
 
 #: ../src/empathy-preferences.ui.h:22
 msgid "Use _echo cancellation to improve call quality"
-msgstr "Use _echo cancellllation to improve call quality"
+msgstr "Use _echo cancellation to improve call quality"
 
 #: ../src/empathy-preferences.ui.h:23
 msgid ""
@@ -4377,10 +4303,10 @@ msgid ""
 "hear strange noises or glitches during calls, try turning echo cancellation "
 "off and restarting the call."
 msgstr ""
-"Echo cancellllation helps to make your voice sound clearer to the other "
+"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 "
-"cancellllation off and restarting the call."
+"cancellation off and restarting the call."
 
 #: ../src/empathy-preferences.ui.h:26
 msgid "_Publish location to my contacts"
@@ -4509,63 +4435,79 @@ msgstr "Enable camera and send video"
 msgid "Contact Map View"
 msgstr "Contact Map View"
 
-#: ../src/empathy-debug-window.c:1228
+#: ../src/empathy-debug-window.c:1607
 msgid "Save"
 msgstr "Save"
 
-#: ../src/empathy-debug-window.c:1435
+#: ../src/empathy-debug-window.c:1667
+msgid "Pastebin link"
+msgstr ""
+
+#: ../src/empathy-debug-window.c:1676
+msgid "Pastebin response"
+msgstr ""
+
+#: ../src/empathy-debug-window.c:1683
+msgid "Data too large for a single paste. Please save logs to file."
+msgstr ""
+
+#: ../src/empathy-debug-window.c:1912
 msgid "Debug Window"
 msgstr "Debug Window"
 
-#: ../src/empathy-debug-window.c:1517
+#: ../src/empathy-debug-window.c:1970
+msgid "Send to pastebin"
+msgstr ""
+
+#: ../src/empathy-debug-window.c:2009
 msgid "Pause"
 msgstr "Pause"
 
-#: ../src/empathy-debug-window.c:1529
+#: ../src/empathy-debug-window.c:2021
 msgid "Level "
 msgstr "Level "
 
-#: ../src/empathy-debug-window.c:1549
+#: ../src/empathy-debug-window.c:2040
 msgid "Debug"
 msgstr "Debug"
 
-#: ../src/empathy-debug-window.c:1555
+#: ../src/empathy-debug-window.c:2045
 msgid "Info"
 msgstr "Info"
 
-#: ../src/empathy-debug-window.c:1561 ../src/empathy-debug-window.c:1610
+#: ../src/empathy-debug-window.c:2050 ../src/empathy-debug-window.c:2096
 msgid "Message"
 msgstr "Message"
 
-#: ../src/empathy-debug-window.c:1567
+#: ../src/empathy-debug-window.c:2055
 msgid "Warning"
 msgstr "Warning"
 
-#: ../src/empathy-debug-window.c:1573
+#: ../src/empathy-debug-window.c:2060
 msgid "Critical"
 msgstr "Critical"
 
-#: ../src/empathy-debug-window.c:1579
+#: ../src/empathy-debug-window.c:2065
 msgid "Error"
 msgstr "Error"
 
-#: ../src/empathy-debug-window.c:1598
+#: ../src/empathy-debug-window.c:2084
 msgid "Time"
 msgstr "Time"
 
-#: ../src/empathy-debug-window.c:1601
+#: ../src/empathy-debug-window.c:2087
 msgid "Domain"
 msgstr "Domain"
 
-#: ../src/empathy-debug-window.c:1603
+#: ../src/empathy-debug-window.c:2089
 msgid "Category"
 msgstr "Category"
 
-#: ../src/empathy-debug-window.c:1605
+#: ../src/empathy-debug-window.c:2091
 msgid "Level"
 msgstr "Level"
 
-#: ../src/empathy-debug-window.c:1642
+#: ../src/empathy-debug-window.c:2114
 msgid ""
 "The selected connection manager does not support the remote debugging "
 "extension."
@@ -4573,47 +4515,43 @@ msgstr ""
 "The selected connection manager does not support the remote debugging "
 "extension."
 
-#: ../src/empathy-invite-participant-dialog.c:200
-#: ../src/empathy-invite-participant-dialog.c:228
+#: ../src/empathy-invite-participant-dialog.c:202
+#: ../src/empathy-invite-participant-dialog.c:230
 msgid "Invite Participant"
 msgstr "Invite Participant"
 
-#: ../src/empathy-invite-participant-dialog.c:201
+#: ../src/empathy-invite-participant-dialog.c:203
 msgid "Choose a contact to invite into the conversation:"
 msgstr "Choose a contact to invite into the conversation:"
 
-#: ../src/empathy-invite-participant-dialog.c:224
+#: ../src/empathy-invite-participant-dialog.c:226
 msgid "Invite"
 msgstr "Invite"
 
-#: ../src/empathy-accounts.c:183
+#: ../src/empathy-accounts.c:180
 msgid "Don't display any dialogs; do any work (eg, importing) and exit"
 msgstr "Don't display any dialogs; do any work (eg, importing) and exit"
 
-#: ../src/empathy-accounts.c:187
+#: ../src/empathy-accounts.c:184
 msgid ""
 "Don't display any dialogs unless there are only \"People Nearby\" accounts"
 msgstr ""
 "Don't display any dialogs unless there are only \"People Nearby\" accounts"
 
-#: ../src/empathy-accounts.c:191
+#: ../src/empathy-accounts.c:188
 msgid "Initially select given account (eg, gabble/jabber/foo_40example_2eorg0)"
 msgstr ""
 "Initially select given account (eg, gabble/jabber/foo_40example_2eorg0)"
 
-#: ../src/empathy-accounts.c:193
+#: ../src/empathy-accounts.c:190
 msgid "<account-id>"
 msgstr "<account-id>"
 
-#: ../src/empathy-accounts.c:196
-msgid "Show account assistant"
-msgstr "Show account assistant"
-
-#: ../src/empathy-accounts.c:202
+#: ../src/empathy-accounts.c:195
 msgid "- Empathy Accounts"
 msgstr "- Empathy Accounts"
 
-#: ../src/empathy-accounts.c:238
+#: ../src/empathy-accounts.c:231
 msgid "Empathy Accounts"
 msgstr "Empathy Accounts"
 
@@ -4629,7 +4567,7 @@ msgstr "- Empathy Debugger"
 msgid "Empathy Debugger"
 msgstr "Empathy Debugger"
 
-#: ../src/empathy-chat.c:107
+#: ../src/empathy-chat.c:109
 msgid "- Empathy Chat Client"
 msgstr "- Empathy Chat Client"
 
@@ -4638,13 +4576,13 @@ msgid "Respond"
 msgstr "Respond"
 
 #: ../src/empathy-notifications-approver.c:204
-#: ../src/empathy-call-window.c:1565
+#: ../src/empathy-call-window.c:1493
 msgid "Reject"
 msgstr "Reject"
 
 #: ../src/empathy-notifications-approver.c:209
 #: ../src/empathy-notifications-approver.c:214
-#: ../src/empathy-call-window.c:1566
+#: ../src/empathy-call-window.c:1494
 msgid "Answer"
 msgstr "Answer"
 
@@ -4669,45 +4607,45 @@ msgstr "Accept"
 msgid "Provide"
 msgstr "Provide"
 
-#: ../src/empathy-call-observer.c:134
+#: ../src/empathy-call-observer.c:132
 #, c-format
 msgid "%s just tried to call you, but you were in another call."
 msgstr "%s just tried to call you, but you were in another call."
 
 #. 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
+#: ../src/empathy-call-window.c:1124 ../src/empathy-call-window.c:1140
 msgid "i"
 msgstr "i"
 
-#: ../src/empathy-call-window.c:2929
+#: ../src/empathy-call-window.c:2860
 msgid "On hold"
 msgstr "On hold"
 
-#: ../src/empathy-call-window.c:2932
+#: ../src/empathy-call-window.c:2863
 msgid "Mute"
 msgstr "Mute"
 
-#: ../src/empathy-call-window.c:2934
+#: ../src/empathy-call-window.c:2865
 msgid "Duration"
 msgstr "Duration"
 
 #. Translators: 'status - minutes:seconds' the caller has been connected
-#: ../src/empathy-call-window.c:2937
+#: ../src/empathy-call-window.c:2868
 #, c-format
 msgid "%s — %d:%02dm"
 msgstr "%s — %d:%02dm"
 
-#: ../src/empathy-call-window.c:3207
+#: ../src/empathy-call-window.c:3138
 #, c-format
 msgid "Your current balance is %s."
 msgstr "Your current balance is %s."
 
-#: ../src/empathy-call-window.c:3211
+#: ../src/empathy-call-window.c:3142
 msgid "Sorry, you don’t have enough credit for that call."
 msgstr "Sorry, you don’t have enough credit for that call."
 
-#: ../src/empathy-call-window.c:3213
+#: ../src/empathy-call-window.c:3144
 msgid "Top Up"
 msgstr "Top Up"
 
@@ -4715,6 +4653,147 @@ msgstr "Top Up"
 msgid "_Match case"
 msgstr "_Match case"
 
+#: ../libempathy-gtk/empathy-new-account-dialog.c:144
+msgid "What kind of chat account do you have?"
+msgstr "What kind of chat account do you have?"
+
 #: ../libempathy-gtk/empathy-new-account-dialog.c:166
 msgid "Adding new account"
 msgstr "Adding new account"
+
+#: ../libempathy-gtk/empathy-local-xmpp-assistant-widget.c:77
+msgid "People nearby"
+msgstr "People nearby"
+
+#: ../libempathy-gtk/empathy-local-xmpp-assistant-widget.c:150
+#, fuzzy
+#| 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"
+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."
+msgstr ""
+"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"
+
+#: ../libempathy-gtk/empathy-local-xmpp-assistant-widget.c:183
+msgid ""
+"You can change these details later or disable this feature by choosing <span "
+"style=\"italic\">Edit → Accounts</span> in the Contact List."
+msgstr ""
+
+#~ msgid "There was an error while importing the accounts."
+#~ msgstr "There was an error while importing the accounts."
+
+#~ msgid "There was an error while parsing the account details."
+#~ msgstr "There was an error while parsing the account details."
+
+#~ msgid "There was an error while creating the account."
+#~ msgstr "There was an error while creating the account."
+
+#~ msgid "There was an error."
+#~ msgstr "There was an error."
+
+#~ msgid "The error message was: %s"
+#~ msgstr "The error message was: %s"
+
+#~ 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 ""
+#~ "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."
+
+#~ msgid "An error occurred"
+#~ msgstr "An error occurred"
+
+#~ msgid "Do you have any other chat accounts you want to set up?"
+#~ msgstr "Do you have any other chat accounts you want to set up?"
+
+#~ msgid "Enter your account details"
+#~ msgstr "Enter your account details"
+
+#~ msgid "What kind of chat account do you want to create?"
+#~ msgstr "What kind of chat account do you want to create?"
+
+#~ msgid "Do you want to create other chat accounts?"
+#~ msgstr "Do you want to create other chat accounts?"
+
+#~ msgid "Enter the details for the new account"
+#~ msgstr "Enter the details for the new account"
+
+#~ 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 ""
+#~ "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."
+
+#~ msgid "Do you have an account you've been using with another chat program?"
+#~ msgstr "Do you have an account you've been using with another chat program?"
+
+#~ msgid "Yes, import my account details from "
+#~ msgstr "Yes, import my account details from "
+
+#~ msgid "Yes, I'll enter my account details now"
+#~ msgstr "Yes, I'll enter my account details now"
+
+#~ msgid "No, I want a new account"
+#~ msgstr "No, I want a new account"
+
+#~ msgid "No, I just want to see people online nearby for now"
+#~ msgstr "No, I just want to see people online nearby for now"
+
+#~ msgid "Select the accounts you want to import:"
+#~ msgstr "Select the accounts you want to import:"
+
+#~ msgid "No, that's all for now"
+#~ msgstr "No, that's all for now"
+
+#~ msgid "Edit->Accounts"
+#~ msgstr "Edit->Accounts"
+
+#~ msgid "I do _not want to enable this feature for now"
+#~ msgstr "I do _not want to enable this feature for now"
+
+#~ 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 ""
+#~ "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"
+
+#~ msgid "telepathy-salut not installed"
+#~ msgstr "telepathy-salut not installed"
+
+#~ msgid "Messaging and VoIP Accounts Assistant"
+#~ msgstr "Messaging and VoIP Accounts Assistant"
+
+#~ msgid "Welcome to Empathy"
+#~ msgstr "Welcome to Empathy"
+
+#~ msgid "Import your existing accounts"
+#~ msgstr "Import your existing accounts"
+
+#~ msgid "Please enter personal details"
+#~ msgstr "Please enter personal details"
+
+#~ msgid "Protocol:"
+#~ msgstr "Protocol:"
+
+#~ msgid "Show account assistant"
+#~ msgstr "Show account assistant"
index 54e0136b127d42fda7665e49995485cb4d44845a..56680df0e5e4baa3b9e44405763e7da322ef3034 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: 2012-03-16 10:47+0000\n"
-"PO-Revision-Date: 2012-03-16 14:13+0100\n"
+"POT-Creation-Date: 2012-04-20 11:36+0000\n"
+"PO-Revision-Date: 2012-04-20 14:14+0200\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"
@@ -37,7 +37,7 @@ msgstr "Chatee en Google Talk, Facebook, MSN y muchos otros servicios de chat"
 
 #. Tweak the dialog
 #: ../data/empathy-accounts.desktop.in.in.h:1
-#: ../src/empathy-accounts-dialog.c:2512
+#: ../src/empathy-accounts-dialog.c:2527
 msgid "Messaging and VoIP Accounts"
 msgstr "Cuentas de mensajería y Voz IP"
 
@@ -86,12 +86,13 @@ msgstr "Carpeta de descargas predeterminada de Epiphany"
 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:9
+#. translators: Automatic tasks which are run once to port/update account settings. Ideally, this shouldn't be exposed to users at all, we just use a gsettings key here as an optimization to only run it only once.
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:10
 msgid "Magic number used to check if sanity cleaning tasks should be run"
 msgstr ""
 "Número mágico usado para comprobar si se deben ejecutar tareas de limpieza"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:10
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:11
 msgid ""
 "empathy-sanity-cleaning.c uses this number to check if the cleaning tasks "
 "should be executed or not. Users should not change this key manually."
@@ -100,82 +101,82 @@ msgstr ""
 "ejecutar o no las tareas de limpieza. Los usuarios no deben cambiar esta "
 "clave manualmente."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:11
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:12
 msgid "Show offline contacts"
 msgstr "Mostrar contactos no conectados"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:12
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:13
 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:13
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:14
 msgid "Show avatars"
 msgstr "Mostrar avatares"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:14
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:15
 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:15
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:16
 msgid "Show protocols"
 msgstr "Mostrar protocolos"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:16
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:17
 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:17
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:18
 msgid "Show Balance in contact list"
 msgstr "Mostrar crédito en la lista de contactos"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:18
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:19
 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:19
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:20
 msgid "Compact contact list"
 msgstr "Lista compacta de contactos"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:20
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:21
 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:21
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:22
 msgid "Hide main window"
 msgstr "Ocultar la ventana principal"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:22
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:23
 msgid "Hide the main window."
 msgstr "Ocultar la ventana principal."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:23
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:24
 msgid "Default directory to select an avatar image from"
 msgstr "Carpeta predeterminada para seleccionar un avatar"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:24
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:25
 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:25
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:26
 msgid "Open new chats in separate windows"
 msgstr "Abrir chats nuevos en ventanas separadas"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:26
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:27
 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:27
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:28
 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:28
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:29
 msgid ""
 "Display incoming events in the status area. If false, present them to the "
 "user immediately."
@@ -183,29 +184,29 @@ 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:29
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:30
 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:30
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:31
 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:31
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:32
 msgid "Show contact groups"
 msgstr "Mostrar grupos de contactos"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:32
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:33
 msgid "Whether to show groups in the contact list."
 msgstr "Indica si se deben mostrar los grupos en la lista de contactos."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:33
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:34
 msgid "Contact list sort criterion"
 msgstr "Criterio de ordenación de la lista de contactos"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:34
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:35
 msgid ""
 "Which criterion to use when sorting the contact list. Default is to sort by "
 "the contact's state with the value \"state\". A value of \"name\" will sort "
@@ -215,114 +216,114 @@ msgstr ""
 "ordenar por el estado del contacto con el valor «state» (estado). Un valor "
 "«nombre» (nombre) ordenará la lista por el nombre."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:35
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:36
 msgid "Use notification sounds"
 msgstr "Usar sonidos de notificación"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:36
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:37
 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:37
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:38
 msgid "Disable sounds when away"
 msgstr "Desactivar los sonidos al ausentarse"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:38
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:39
 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:39
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:40
 msgid "Play a sound for incoming messages"
 msgstr "Reproducir un sonido cuando lleguen mensajes"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:40
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:41
 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:41
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:42
 msgid "Play a sound for outgoing messages"
 msgstr "Reproducir un sonido al enviar mensajes"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:42
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:43
 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:43
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:44
 msgid "Play a sound for new conversations"
 msgstr "Reproducir un sonido para conversaciones nuevas"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:44
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:45
 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:45
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:46
 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:46
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:47
 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:47
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:48
 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:48
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:49
 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:49
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:50
 msgid "Play a sound when we log in"
 msgstr "Reproducir un sonido cuando inicio sesión"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:50
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:51
 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:51
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:52
 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:52
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:53
 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:53
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:54
 msgid "Enable popup notifications for new messages"
 msgstr "Activar notificaciones emergentes para mensajes nuevos"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:54
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:55
 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:55
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:56
 msgid "Disable popup notifications when away"
 msgstr "Desactivar las notificaciones emergentes al estar ausente"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:56
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:57
 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:57
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:58
 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:58
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:59
 msgid ""
 "Whether to show a popup notification when receiving a new message even if "
 "the chat is already opened, but not focused."
@@ -330,88 +331,88 @@ 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:59
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:60
 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:60
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:61
 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:61
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:62
 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:62
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:63
 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:63
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:64
 msgid "Use graphical smileys"
 msgstr "Usar emoticonos gráficos"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:64
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:65
 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:65
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:66
 msgid "Show contact list in rooms"
 msgstr "Mostrar lista de contactos en salas"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:66
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:67
 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:67
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:68
 msgid "Chat window theme"
 msgstr "Tema de la ventana de charla"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:68
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:69
 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:69
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:70
 msgid "Chat window theme variant"
 msgstr "Variante del tema de la ventana de charla"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:70
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:71
 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:71
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:72
 msgid "Path of the Adium theme to use"
 msgstr "Ruta del tema Adium que usar"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:72
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:73
 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:73
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:74
 msgid "Enable WebKit Developer Tools"
 msgstr "Activar las herramientas de desarrollo de WebKit"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:74
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:75
 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:75
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:76
 msgid "Inform other users when you are typing to them"
 msgstr "Informar a otros usuarios de cuándo les esta escribiendo"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:76
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:77
 msgid ""
 "Whether to send the 'composing' or 'paused' chat states. Does not currently "
 "affect the 'gone' state."
@@ -419,41 +420,41 @@ msgstr ""
 "Indica si enviar los estados de chat «escribiendo» o «en pausa». No afecta al "
 "estado «ausente»."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:77
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:78
 msgid "Use theme for chat rooms"
 msgstr "Usar tema para salas de chat"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:78
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:79
 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:79
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:80
 msgid "Spell checking languages"
 msgstr "Idiomas para revisión ortográfica"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:80
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:81
 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:81
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:82
 msgid "Enable spell checker"
 msgstr "Activar revisor ortográfico"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:82
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:83
 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:83
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:84
 msgid "Nick completed character"
 msgstr "Carácter de completado de apodo"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:84
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:85
 msgid ""
 "Character to add after nickname when using nick completion (tab) in group "
 "chat."
@@ -461,60 +462,60 @@ 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:85
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:86
 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:86
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:87
 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:87
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:88
 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:88
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:89
 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:89
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:90
 msgid "Camera device"
 msgstr "Dispositivo de cámara"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:90
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:91
 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:91
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:92
 msgid "Camera position"
 msgstr "Posición de la cámara"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:92
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:93
 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:93
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:94
 msgid "Echo cancellation support"
 msgstr "Soporte de cancelación de eco"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:94
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:95
 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:95
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:96
 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:96
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:97
 msgid ""
 "Whether to show the message dialog about closing the main window with the "
 "'x' button in the title bar."
@@ -522,46 +523,46 @@ 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:97
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:98
 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:98
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:99
 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:99
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:100
 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:100
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:101
 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:101
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:102
 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:102
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:103
 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:103
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:104
 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:104
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:105
 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:105
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:106
 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:106
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:107
 msgid ""
 "Whether Empathy should reduce the location's accuracy for privacy reasons."
 msgstr ""
@@ -612,18 +613,18 @@ msgstr "El archivo seleccionado no es un archivo regular"
 msgid "The selected file is empty"
 msgstr "El archivo seleccionado está vacío"
 
-#: ../libempathy/empathy-message.c:415 ../src/empathy-call-observer.c:129
+#: ../libempathy/empathy-message.c:407 ../src/empathy-call-observer.c:129
 #, c-format
 msgid "Missed call from %s"
 msgstr "Llamada perdida de %s"
 
 #. Translators: this is an outgoing call, e.g. 'Called Alice'
-#: ../libempathy/empathy-message.c:419
+#: ../libempathy/empathy-message.c:411
 #, c-format
 msgid "Called %s"
 msgstr "Llamó %s"
 
-#: ../libempathy/empathy-message.c:422
+#: ../libempathy/empathy-message.c:414
 #, c-format
 msgid "Call from %s"
 msgstr "Llamada de %s"
@@ -860,7 +861,7 @@ msgid "All accounts"
 msgstr "Todas las cuentas"
 
 #: ../libempathy-gtk/empathy-account-widget.c:682
-#: ../src/empathy-import-widget.c:336
+#: ../src/empathy-import-widget.c:323
 msgid "Account"
 msgstr "Cuenta"
 
@@ -885,7 +886,7 @@ msgid "%s:"
 msgstr "%s:"
 
 #: ../libempathy-gtk/empathy-account-widget.c:1398
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:14
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:16
 msgid "Username:"
 msgstr "Nombre de usuario:"
 
@@ -897,11 +898,11 @@ msgstr "_Aplicar"
 msgid "L_og in"
 msgstr "Iniciar _sesión"
 
-#: ../libempathy-gtk/empathy-account-widget.c:1812
+#: ../libempathy-gtk/empathy-account-widget.c:1810
 msgid "This account already exists on the server"
 msgstr "Esta cuenta ya existe en el servidor"
 
-#: ../libempathy-gtk/empathy-account-widget.c:1816
+#: ../libempathy-gtk/empathy-account-widget.c:1814
 msgid "Create a new account on the server"
 msgstr "Crear una cuenta nueva en el servidor"
 
@@ -910,19 +911,19 @@ msgstr "Crear una cuenta nueva en el servidor"
 #. * 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:2241
+#: ../libempathy-gtk/empathy-account-widget.c:2236
 #, 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:2267
+#: ../libempathy-gtk/empathy-account-widget.c:2262
 #, c-format
 msgid "%s Account"
 msgstr "Cuenta %s"
 
-#: ../libempathy-gtk/empathy-account-widget.c:2271
+#: ../libempathy-gtk/empathy-account-widget.c:2266
 msgid "New account"
 msgstr "Cuenta nueva"
 
@@ -978,11 +979,11 @@ msgstr "_Servidor:"
 #: ../libempathy-gtk/empathy-account-widget-generic.ui.h:1
 #: ../libempathy-gtk/empathy-account-widget-groupwise.ui.h:7
 #: ../libempathy-gtk/empathy-account-widget-icq.ui.h:8
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:15
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:17
 #: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:23
 #: ../libempathy-gtk/empathy-account-widget-msn.ui.h:7
 #: ../libempathy-gtk/empathy-account-widget-local-xmpp.ui.h:7
-#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:21
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:22
 #: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:9
 msgid "Advanced"
 msgstr "Avanzadas"
@@ -1000,7 +1001,7 @@ msgstr "¿Cuál es su contraseña de AIM?"
 #: ../libempathy-gtk/empathy-account-widget-icq.ui.h:11
 #: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:7
 #: ../libempathy-gtk/empathy-account-widget-msn.ui.h:10
-#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:24
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:25
 msgid "Remember Password"
 msgstr "Recordar contraseña"
 
@@ -1044,36 +1045,32 @@ msgstr "¿Cuál es su UIN de ICQ?"
 msgid "What is your ICQ password?"
 msgstr "¿Cuál es su contraseña de ICQ?"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.c:206
-#: ../libempathy-gtk/empathy-account-widget-sip.c:239
+#: ../libempathy-gtk/empathy-account-widget-sip.c:207
+#: ../libempathy-gtk/empathy-account-widget-sip.c:240
 msgid "Auto"
 msgstr "Auto"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.c:209
+#: ../libempathy-gtk/empathy-account-widget-sip.c:210
 msgid "UDP"
 msgstr "UDP"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.c:212
+#: ../libempathy-gtk/empathy-account-widget-sip.c:213
 msgid "TCP"
 msgstr "TCP"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.c:215
+#: ../libempathy-gtk/empathy-account-widget-sip.c:216
 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:244
+#: ../libempathy-gtk/empathy-account-widget-sip.c:245
 msgid "Register"
 msgstr "Registrador"
 
-#. translators: this string is very specific to SIP's internal; maybe
-#. * best to keep the English version.
-#: ../libempathy-gtk/empathy-account-widget-sip.c:249
+#: ../libempathy-gtk/empathy-account-widget-sip.c:250
 msgid "Options"
 msgstr "Opciones"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.c:252
+#: ../libempathy-gtk/empathy-account-widget-sip.c:253
 msgid "None"
 msgstr "Ninguno"
 
@@ -1102,19 +1099,21 @@ msgstr "Añadir…"
 msgid "Remove"
 msgstr "Quitar"
 
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:6
+#. Translators: tooltip on a 'Go Up' button used to sort IRC servers by priority
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:7
 msgid "Up"
 msgstr "Subir"
 
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:7
+#. Translators: tooltip on a 'Go Down' button used to sort IRC servers by priority
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:9
 msgid "Down"
 msgstr "Abajo"
 
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:8
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:10
 msgid "Servers"
 msgstr "Servidores"
 
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:9
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:11
 msgid ""
 "Most IRC servers don't need a password, so if you're not sure, don't enter a "
 "password."
@@ -1122,27 +1121,27 @@ msgstr ""
 "La mayoría de los servidores IRC no necesitan una contraseña, de tal forma "
 "que si no está seguro, no introduzca una contraseña."
 
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:10
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:12
 msgid "Nickname:"
 msgstr "Apodo:"
 
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:11
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:13
 msgid "Password:"
 msgstr "Contraseña:"
 
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:12
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:14
 msgid "Quit message:"
 msgstr "Mensaje de salida:"
 
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:13
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:15
 msgid "Real name:"
 msgstr "Nombre real:"
 
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:16
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:18
 msgid "Which IRC network?"
 msgstr "¿Qué red de IRC?"
 
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:17
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:19
 msgid "What is your IRC nickname?"
 msgstr "¿Cuál es su apodo del IRC?"
 
@@ -1332,11 +1331,15 @@ msgstr "Ignorar errores TLS"
 msgid "Port:"
 msgstr "Puerto:"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:22
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:21
+msgid "Local IP Address:"
+msgstr "Dirección IP local:"
+
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:23
 msgid "What is your SIP login ID?"
 msgstr "¿Cuál es su ID de inicio de sesión SIP?"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:23
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:24
 msgid "What is your SIP account password?"
 msgstr "¿Cuál es la contraseña de su cuenta SIP?"
 
@@ -1422,40 +1425,40 @@ msgstr "Este protocolo no soporta llamadas de emergencia"
 msgid "You don't have enough credit in order to place this call"
 msgstr "No tiene crédito suficiente para hacer esta llamada"
 
-#: ../libempathy-gtk/empathy-chat.c:729
+#: ../libempathy-gtk/empathy-chat.c:727
 msgid "Failed to open private chat"
 msgstr "Falló al abrir el chat privado"
 
-#: ../libempathy-gtk/empathy-chat.c:787
+#: ../libempathy-gtk/empathy-chat.c:785
 msgid "Topic not supported on this conversation"
 msgstr "El tema no está soportado en esta conversación"
 
-#: ../libempathy-gtk/empathy-chat.c:793
+#: ../libempathy-gtk/empathy-chat.c:791
 msgid "You are not allowed to change the topic"
 msgstr "No le está permitido cambiar el tema"
 
-#: ../libempathy-gtk/empathy-chat.c:992
+#: ../libempathy-gtk/empathy-chat.c:990
 #, c-format
 msgid "“%s” is not a valid contact ID"
 msgstr "%s no es un identificador de contacto válido"
 
-#: ../libempathy-gtk/empathy-chat.c:1087
+#: ../libempathy-gtk/empathy-chat.c:1085
 msgid "/clear: clear all messages from the current conversation"
 msgstr "/clear: limpiar todos los mensajes de la conversación actual"
 
-#: ../libempathy-gtk/empathy-chat.c:1090
+#: ../libempathy-gtk/empathy-chat.c:1088
 msgid "/topic <topic>: set the topic of the current conversation"
 msgstr "/topic <tema>: establecer el tema para la conversación actual"
 
-#: ../libempathy-gtk/empathy-chat.c:1093
+#: ../libempathy-gtk/empathy-chat.c:1091
 msgid "/join <chat room ID>: join a new chat room"
 msgstr "/join <id de sala de chat>: unirse a una sala de chat nueva"
 
-#: ../libempathy-gtk/empathy-chat.c:1096
+#: ../libempathy-gtk/empathy-chat.c:1094
 msgid "/j <chat room ID>: join a new chat room"
 msgstr "/j <id de sala de chat>: unirse a una sala de chat nueva"
 
-#: ../libempathy-gtk/empathy-chat.c:1100
+#: ../libempathy-gtk/empathy-chat.c:1098
 msgid ""
 "/part [<chat room ID>] [<reason>]: leave the chat room, by default the "
 "current one"
@@ -1463,23 +1466,23 @@ msgstr ""
 "/part [<ID de la sala de chat>] [<razón>]: abandonar la sala de chat, la "
 "actual de manera predeterminada"
 
-#: ../libempathy-gtk/empathy-chat.c:1104
+#: ../libempathy-gtk/empathy-chat.c:1102
 msgid "/query <contact ID> [<message>]: open a private chat"
 msgstr "/query <id del contacto> [<mensaje>]: abrir un chat privado"
 
-#: ../libempathy-gtk/empathy-chat.c:1107
+#: ../libempathy-gtk/empathy-chat.c:1105
 msgid "/msg <contact ID> <message>: open a private chat"
 msgstr "/msg <id del contacto> <mensaje>: abrir un chat privado"
 
-#: ../libempathy-gtk/empathy-chat.c:1110
+#: ../libempathy-gtk/empathy-chat.c:1108
 msgid "/nick <nickname>: change your nickname on the current server"
 msgstr "/nick <apodo>: cambiar su apodo en el servidor actual"
 
-#: ../libempathy-gtk/empathy-chat.c:1113
+#: ../libempathy-gtk/empathy-chat.c:1111
 msgid "/me <message>: send an ACTION message to the current conversation"
 msgstr "/me <mensaje>: enviar un mensaje de ACCIÓN a la conversación actual"
 
-#: ../libempathy-gtk/empathy-chat.c:1116
+#: ../libempathy-gtk/empathy-chat.c:1114
 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 "
@@ -1489,11 +1492,11 @@ msgstr ""
 "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:1121
+#: ../libempathy-gtk/empathy-chat.c:1119
 msgid "/whois <contact ID>: display information about a contact"
 msgstr "/whois <ID del contacto>: mostrar información sobre un contacto"
 
-#: ../libempathy-gtk/empathy-chat.c:1124
+#: ../libempathy-gtk/empathy-chat.c:1122
 msgid ""
 "/help [<command>]: show all supported commands. If <command> is defined, "
 "show its usage."
@@ -1501,128 +1504,128 @@ msgstr ""
 "/help [<comando>]: mostrar todos los comandos soportados. Si <comando> está "
 "definido, muestra su uso."
 
-#: ../libempathy-gtk/empathy-chat.c:1143
+#: ../libempathy-gtk/empathy-chat.c:1141
 #, c-format
 msgid "Usage: %s"
 msgstr "Uso: %s"
 
-#: ../libempathy-gtk/empathy-chat.c:1188
+#: ../libempathy-gtk/empathy-chat.c:1186
 msgid "Unknown command"
 msgstr "Comando desconocido"
 
-#: ../libempathy-gtk/empathy-chat.c:1314
+#: ../libempathy-gtk/empathy-chat.c:1312
 msgid "Unknown command; see /help for the available commands"
 msgstr "Comando desconocido; consulte /help para ver los comandos disponibles"
 
-#: ../libempathy-gtk/empathy-chat.c:1565
+#: ../libempathy-gtk/empathy-chat.c:1563
 msgid "insufficient balance to send message"
 msgstr "no tiene balance suficiente para enviar el mensaje"
 
-#: ../libempathy-gtk/empathy-chat.c:1569 ../libempathy-gtk/empathy-chat.c:1583
-#: ../libempathy-gtk/empathy-chat.c:1646
+#: ../libempathy-gtk/empathy-chat.c:1567 ../libempathy-gtk/empathy-chat.c:1581
+#: ../libempathy-gtk/empathy-chat.c:1644
 #, c-format
 msgid "Error sending message '%s': %s"
 msgstr "Error al enviar el mensaje «%s»: %s"
 
-#: ../libempathy-gtk/empathy-chat.c:1571 ../libempathy-gtk/empathy-chat.c:1588
-#: ../libempathy-gtk/empathy-chat.c:1650
+#: ../libempathy-gtk/empathy-chat.c:1569 ../libempathy-gtk/empathy-chat.c:1586
+#: ../libempathy-gtk/empathy-chat.c:1648
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Error al enviar el mensaje: %s"
 
 #. translators: error used when user doesn't have enough credit on his
 #. * account to send the message.
-#: ../libempathy-gtk/empathy-chat.c:1577
+#: ../libempathy-gtk/empathy-chat.c:1575
 #, c-format
 msgid "insufficient balance to send message. <a href='%s'>Top up</a>."
 msgstr ""
 "no tiene balance suficiente para enviar el mensaje. <a href='%s'>Recargar</"
 "a>."
 
-#: ../libempathy-gtk/empathy-chat.c:1617
+#: ../libempathy-gtk/empathy-chat.c:1615
 msgid "not capable"
 msgstr "no es posible"
 
-#: ../libempathy-gtk/empathy-chat.c:1624
+#: ../libempathy-gtk/empathy-chat.c:1622
 msgid "offline"
 msgstr "desconectado"
 
-#: ../libempathy-gtk/empathy-chat.c:1627
+#: ../libempathy-gtk/empathy-chat.c:1625
 msgid "invalid contact"
 msgstr "contacto no válido"
 
-#: ../libempathy-gtk/empathy-chat.c:1630
+#: ../libempathy-gtk/empathy-chat.c:1628
 msgid "permission denied"
 msgstr "permiso denegado"
 
-#: ../libempathy-gtk/empathy-chat.c:1633
+#: ../libempathy-gtk/empathy-chat.c:1631
 msgid "too long message"
 msgstr "mensaje demasiado largo"
 
-#: ../libempathy-gtk/empathy-chat.c:1636
+#: ../libempathy-gtk/empathy-chat.c:1634
 msgid "not implemented"
 msgstr "no implementado"
 
-#: ../libempathy-gtk/empathy-chat.c:1640
+#: ../libempathy-gtk/empathy-chat.c:1638
 msgid "unknown"
 msgstr "desconocido"
 
-#: ../libempathy-gtk/empathy-chat.c:1707 ../src/empathy-chat-window.c:920
+#: ../libempathy-gtk/empathy-chat.c:1705 ../src/empathy-chat-window.c:919
 msgid "Topic:"
 msgstr "Tema:"
 
-#: ../libempathy-gtk/empathy-chat.c:1722
+#: ../libempathy-gtk/empathy-chat.c:1720
 #, c-format
 msgid "Topic set to: %s"
 msgstr "El tema se ha establecido a: %s"
 
-#: ../libempathy-gtk/empathy-chat.c:1724
+#: ../libempathy-gtk/empathy-chat.c:1722
 #, c-format
 msgid "Topic set by %s to: %s"
 msgstr "Tema establecido por %s a: %s"
 
 #. No need to display this 'event' is no topic can be defined anyway
-#: ../libempathy-gtk/empathy-chat.c:1729
+#: ../libempathy-gtk/empathy-chat.c:1727
 msgid "No topic defined"
 msgstr "No se ha definido el tema"
 
-#: ../libempathy-gtk/empathy-chat.c:2245
+#: ../libempathy-gtk/empathy-chat.c:2243
 msgid "(No Suggestions)"
 msgstr "(Sin sugerencias)"
 
 #. translators: %s is the selected word
-#: ../libempathy-gtk/empathy-chat.c:2313
+#: ../libempathy-gtk/empathy-chat.c:2311
 #, c-format
 msgid "Add '%s' to Dictionary"
 msgstr "Añadir «%s» al diccionario"
 
 #. translators: first %s is the selected word,
 #. * second %s is the language name of the target dictionary
-#: ../libempathy-gtk/empathy-chat.c:2350
+#: ../libempathy-gtk/empathy-chat.c:2348
 #, c-format
 msgid "Add '%s' to %s Dictionary"
 msgstr "Añadir «%s» al diccionario de «%s»"
 
-#: ../libempathy-gtk/empathy-chat.c:2420
+#: ../libempathy-gtk/empathy-chat.c:2418
 msgid "Insert Smiley"
 msgstr "Insertar emoticono"
 
 #. send button
-#: ../libempathy-gtk/empathy-chat.c:2438
+#: ../libempathy-gtk/empathy-chat.c:2436
 #: ../libempathy-gtk/empathy-ui-utils.c:1880
 msgid "_Send"
 msgstr "E_nviar"
 
 #. Spelling suggestions
-#: ../libempathy-gtk/empathy-chat.c:2495
+#: ../libempathy-gtk/empathy-chat.c:2493
 msgid "_Spelling Suggestions"
 msgstr "_Sugerencias ortográficas"
 
-#: ../libempathy-gtk/empathy-chat.c:2584
+#: ../libempathy-gtk/empathy-chat.c:2582
 msgid "Failed to retrieve recent logs"
 msgstr "Falló al recibir los registros recientes"
 
-#: ../libempathy-gtk/empathy-chat.c:2723
+#: ../libempathy-gtk/empathy-chat.c:2721
 #, c-format
 msgid "%s has disconnected"
 msgstr "%s se ha desconectado"
@@ -1630,12 +1633,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:2730
+#: ../libempathy-gtk/empathy-chat.c:2728
 #, c-format
 msgid "%1$s was kicked by %2$s"
 msgstr "%2$s expulsó a %1$s"
 
-#: ../libempathy-gtk/empathy-chat.c:2733
+#: ../libempathy-gtk/empathy-chat.c:2731
 #, c-format
 msgid "%s was kicked"
 msgstr "%s fue expulsado"
@@ -1643,17 +1646,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:2741
+#: ../libempathy-gtk/empathy-chat.c:2739
 #, c-format
 msgid "%1$s was banned by %2$s"
 msgstr "%2$s vetó a %1$s"
 
-#: ../libempathy-gtk/empathy-chat.c:2744
+#: ../libempathy-gtk/empathy-chat.c:2742
 #, c-format
 msgid "%s was banned"
 msgstr "%s fue vetado"
 
-#: ../libempathy-gtk/empathy-chat.c:2748
+#: ../libempathy-gtk/empathy-chat.c:2746
 #, c-format
 msgid "%s has left the room"
 msgstr "%s ha dejado la sala"
@@ -1663,17 +1666,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:2757
+#: ../libempathy-gtk/empathy-chat.c:2755
 #, c-format
 msgid " (%s)"
 msgstr " (%s)"
 
-#: ../libempathy-gtk/empathy-chat.c:2782
+#: ../libempathy-gtk/empathy-chat.c:2780
 #, c-format
 msgid "%s has joined the room"
 msgstr "%s ha entrado en la sala"
 
-#: ../libempathy-gtk/empathy-chat.c:2807
+#: ../libempathy-gtk/empathy-chat.c:2805
 #, c-format
 msgid "%s is now known as %s"
 msgstr "Ahora %s se llama %s"
@@ -1681,55 +1684,55 @@ 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:2994
+#: ../libempathy-gtk/empathy-chat.c:2992
 #: ../src/empathy-streamed-media-window.c:1888
-#: ../src/empathy-event-manager.c:1279 ../src/empathy-call-window.c:1502
-#: ../src/empathy-call-window.c:1552 ../src/empathy-call-window.c:2590
+#: ../src/empathy-event-manager.c:1279 ../src/empathy-call-window.c:1466
+#: ../src/empathy-call-window.c:1516 ../src/empathy-call-window.c:2562
 msgid "Disconnected"
 msgstr "Desconectado"
 
 #. Add message
-#: ../libempathy-gtk/empathy-chat.c:3658
+#: ../libempathy-gtk/empathy-chat.c:3656
 msgid "Would you like to store this password?"
 msgstr "¿Quiere guardar esta contraseña?"
 
-#: ../libempathy-gtk/empathy-chat.c:3664
+#: ../libempathy-gtk/empathy-chat.c:3662
 msgid "Remember"
 msgstr "Recordar"
 
-#: ../libempathy-gtk/empathy-chat.c:3674
+#: ../libempathy-gtk/empathy-chat.c:3672
 msgid "Not now"
 msgstr "Ahora no"
 
-#: ../libempathy-gtk/empathy-chat.c:3718
+#: ../libempathy-gtk/empathy-chat.c:3716
 #: ../libempathy-gtk/empathy-bad-password-dialog.c:142
 msgid "Retry"
 msgstr "Volver a intentarlo"
 
-#: ../libempathy-gtk/empathy-chat.c:3722
+#: ../libempathy-gtk/empathy-chat.c:3720
 msgid "Wrong password; please try again:"
 msgstr "Contraseña incorrecta; inténtelo de nuevo:"
 
 #. Add message
-#: ../libempathy-gtk/empathy-chat.c:3852
+#: ../libempathy-gtk/empathy-chat.c:3850
 msgid "This room is protected by a password:"
 msgstr "Esta sala está protegida por contraseña:"
 
-#: ../libempathy-gtk/empathy-chat.c:3879
+#: ../libempathy-gtk/empathy-chat.c:3877
 msgid "Join"
 msgstr "Unirse"
 
-#: ../libempathy-gtk/empathy-chat.c:4071 ../src/empathy-event-manager.c:1300
+#: ../libempathy-gtk/empathy-chat.c:4069 ../src/empathy-event-manager.c:1300
 msgid "Connected"
 msgstr "Conectado"
 
-#: ../libempathy-gtk/empathy-chat.c:4126
+#: ../libempathy-gtk/empathy-chat.c:4124
 msgid "Conversation"
 msgstr "Conversación"
 
 #. Translators: this string is a something like
 #. * "Escher Cat (SMS)"
-#: ../libempathy-gtk/empathy-chat.c:4131
+#: ../libempathy-gtk/empathy-chat.c:4129
 #, c-format
 msgid "%s (SMS)"
 msgstr "%s (SMS)"
@@ -1760,7 +1763,7 @@ msgstr "Editar contactos bloqueados"
 
 #. Account and Identifier
 #: ../libempathy-gtk/empathy-contact-blocking-dialog.ui.h:1
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:506
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:503
 #: ../libempathy-gtk/empathy-contact-widget.ui.h:1
 #: ../libempathy-gtk/empathy-individual-widget.c:1474
 #: ../src/empathy-chatrooms-window.ui.h:2
@@ -1833,157 +1836,157 @@ msgid "Decide _Later"
 msgstr "Decidir _luego"
 
 #. Title
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:499
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:496
 msgid "Search contacts"
 msgstr "Buscar contactos"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:529
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:526
 msgid "Search: "
 msgstr "Buscar:"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:587
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:584
 msgid "_Add Contact"
 msgstr "_Añadir contacto"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:605
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:602
 msgid "No contacts found"
 msgstr "No se encontraron contactos"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:621
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:618
 msgid "Your message introducing yourself:"
 msgstr "Su mensaje de presentación:"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:629
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:626
 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:567
+#: ../libempathy-gtk/empathy-contact-widget.c:566
 #: ../libempathy-gtk/empathy-individual-widget.c:304
 msgid "Channels:"
 msgstr "Canales:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:747
+#: ../libempathy-gtk/empathy-contact-widget.c:746
 #: ../libempathy-gtk/empathy-individual-widget.c:455
 msgid "Country ISO Code:"
 msgstr "Código ISO de país:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:749
+#: ../libempathy-gtk/empathy-contact-widget.c:748
 #: ../libempathy-gtk/empathy-individual-widget.c:457
 msgid "Country:"
 msgstr "País:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:751
+#: ../libempathy-gtk/empathy-contact-widget.c:750
 #: ../libempathy-gtk/empathy-individual-widget.c:459
 msgid "State:"
 msgstr "Estado:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:753
+#: ../libempathy-gtk/empathy-contact-widget.c:752
 #: ../libempathy-gtk/empathy-individual-widget.c:461
 msgid "City:"
 msgstr "Ciudad:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:755
+#: ../libempathy-gtk/empathy-contact-widget.c:754
 #: ../libempathy-gtk/empathy-individual-widget.c:463
 msgid "Area:"
 msgstr "Área:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:757
+#: ../libempathy-gtk/empathy-contact-widget.c:756
 #: ../libempathy-gtk/empathy-individual-widget.c:465
 msgid "Postal Code:"
 msgstr "Código postal:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:759
+#: ../libempathy-gtk/empathy-contact-widget.c:758
 #: ../libempathy-gtk/empathy-individual-widget.c:467
 msgid "Street:"
 msgstr "Calle:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:761
+#: ../libempathy-gtk/empathy-contact-widget.c:760
 #: ../libempathy-gtk/empathy-individual-widget.c:469
 msgid "Building:"
 msgstr "Edificio:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:763
+#: ../libempathy-gtk/empathy-contact-widget.c:762
 #: ../libempathy-gtk/empathy-individual-widget.c:471
 msgid "Floor:"
 msgstr "Planta:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:765
+#: ../libempathy-gtk/empathy-contact-widget.c:764
 #: ../libempathy-gtk/empathy-individual-widget.c:473
 msgid "Room:"
 msgstr "Habitación:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:767
+#: ../libempathy-gtk/empathy-contact-widget.c:766
 #: ../libempathy-gtk/empathy-individual-widget.c:475
 msgid "Text:"
 msgstr "Texto:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:769
+#: ../libempathy-gtk/empathy-contact-widget.c:768
 #: ../libempathy-gtk/empathy-individual-widget.c:477
 msgid "Description:"
 msgstr "Descripción:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:771
+#: ../libempathy-gtk/empathy-contact-widget.c:770
 #: ../libempathy-gtk/empathy-individual-widget.c:479
 msgid "URI:"
 msgstr "URI:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:773
+#: ../libempathy-gtk/empathy-contact-widget.c:772
 #: ../libempathy-gtk/empathy-individual-widget.c:481
 msgid "Accuracy Level:"
 msgstr "Nivel de precisión:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:775
+#: ../libempathy-gtk/empathy-contact-widget.c:774
 #: ../libempathy-gtk/empathy-individual-widget.c:483
 msgid "Error:"
 msgstr "Error:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:777
+#: ../libempathy-gtk/empathy-contact-widget.c:776
 #: ../libempathy-gtk/empathy-individual-widget.c:485
 msgid "Vertical Error (meters):"
 msgstr "Error vertical (metros):"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:779
+#: ../libempathy-gtk/empathy-contact-widget.c:778
 #: ../libempathy-gtk/empathy-individual-widget.c:487
 msgid "Horizontal Error (meters):"
 msgstr "Error horizontal (metros):"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:781
+#: ../libempathy-gtk/empathy-contact-widget.c:780
 #: ../libempathy-gtk/empathy-individual-widget.c:489
 msgid "Speed:"
 msgstr "Velocidad:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:783
+#: ../libempathy-gtk/empathy-contact-widget.c:782
 #: ../libempathy-gtk/empathy-individual-widget.c:491
 msgid "Bearing:"
 msgstr "Retardo:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:785
+#: ../libempathy-gtk/empathy-contact-widget.c:784
 #: ../libempathy-gtk/empathy-individual-widget.c:493
 msgid "Climb Speed:"
 msgstr "Velocidad de ascenso:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:787
+#: ../libempathy-gtk/empathy-contact-widget.c:786
 #: ../libempathy-gtk/empathy-individual-widget.c:495
 msgid "Last Updated on:"
 msgstr "Actualizado por última vez:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:789
+#: ../libempathy-gtk/empathy-contact-widget.c:788
 #: ../libempathy-gtk/empathy-individual-widget.c:497
 msgid "Longitude:"
 msgstr "Longitud_"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:791
+#: ../libempathy-gtk/empathy-contact-widget.c:790
 #: ../libempathy-gtk/empathy-individual-widget.c:499
 msgid "Latitude:"
 msgstr "Latitud:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:793
+#: ../libempathy-gtk/empathy-contact-widget.c:792
 #: ../libempathy-gtk/empathy-individual-widget.c:501
 msgid "Altitude:"
 msgstr "Altitud:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:846
-#: ../libempathy-gtk/empathy-contact-widget.c:861
+#: ../libempathy-gtk/empathy-contact-widget.c:845
+#: ../libempathy-gtk/empathy-contact-widget.c:860
 #: ../libempathy-gtk/empathy-individual-widget.c:593
 #: ../libempathy-gtk/empathy-individual-widget.c:608
 #: ../src/empathy-preferences.ui.h:35
@@ -1991,32 +1994,32 @@ msgid "Location"
 msgstr "Ubicación geográfica"
 
 #. translators: format is "Location, $date"
-#: ../libempathy-gtk/empathy-contact-widget.c:863
+#: ../libempathy-gtk/empathy-contact-widget.c:862
 #: ../libempathy-gtk/empathy-individual-widget.c:610
 #, c-format
 msgid "%s, %s"
 msgstr "%s, %s"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:915
+#: ../libempathy-gtk/empathy-contact-widget.c:914
 #: ../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:997
+#: ../libempathy-gtk/empathy-contact-widget.c:996
 #: ../libempathy-gtk/empathy-individual-widget.c:900
 msgid "Save Avatar"
 msgstr "Guardar avatar"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:1053
+#: ../libempathy-gtk/empathy-contact-widget.c:1052
 #: ../libempathy-gtk/empathy-individual-widget.c:958
 msgid "Unable to save avatar"
 msgstr "No se pudo guardar el avatar"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:1444
+#: ../libempathy-gtk/empathy-contact-widget.c:1454
 msgid "Personal Details"
 msgstr "Detalles personales"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:1447
+#: ../libempathy-gtk/empathy-contact-widget.c:1457
 #: ../libempathy-gtk/empathy-contact-widget.ui.h:6
 #: ../libempathy-gtk/empathy-individual-widget.ui.h:3
 msgid "Contact Details"
@@ -2125,11 +2128,11 @@ msgstr "Versión:"
 msgid "Client:"
 msgstr "Cliente:"
 
-#: ../libempathy-gtk/empathy-groups-widget.c:331
+#: ../libempathy-gtk/empathy-groups-widget.c:327
 msgid "Groups"
 msgstr "Grupos"
 
-#: ../libempathy-gtk/empathy-groups-widget.c:343
+#: ../libempathy-gtk/empathy-groups-widget.c:339
 msgid ""
 "Select the groups you want this contact to appear in.  Note that you can "
 "select more than one group or no groups."
@@ -2137,17 +2140,17 @@ msgstr ""
 "Seleccione los grupos en los que quiere que este contacto aparezca, Note que "
 "puede seleccionar más de un grupo o ningún grupo."
 
-#: ../libempathy-gtk/empathy-groups-widget.c:362
+#: ../libempathy-gtk/empathy-groups-widget.c:358
 msgid "_Add Group"
 msgstr "_Añadir grupo"
 
-#: ../libempathy-gtk/empathy-groups-widget.c:397
+#: ../libempathy-gtk/empathy-groups-widget.c:393
 msgctxt "verb in a column header displaying group names"
 msgid "Select"
 msgstr "Seleccionar"
 
-#: ../libempathy-gtk/empathy-groups-widget.c:407
-#: ../src/empathy-roster-window.c:1970
+#: ../libempathy-gtk/empathy-groups-widget.c:403
+#: ../src/empathy-roster-window.c:1969
 msgid "Group"
 msgstr "Grupo"
 
@@ -2175,137 +2178,143 @@ msgstr "Contactos enlazados"
 #. 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:173
+#: ../libempathy-gtk/empathy-individual-menu.c:172
 #, c-format
 msgid "%s (%s)"
 msgstr "%s (%s)"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:345
+#: ../libempathy-gtk/empathy-individual-menu.c:344
 msgid "Select account to use to place the call"
 msgstr "Seleccionar la cuenta que usar para realizar la llamada"
 
 #. translators: Call is a noun. This string is used in the window
 #. * title
-#: ../libempathy-gtk/empathy-individual-menu.c:349
+#: ../libempathy-gtk/empathy-individual-menu.c:348
 #: ../libempathy-gtk/empathy-log-window.ui.h:6
 #: ../src/empathy-streamed-media-window.c:1290
 #: ../src/empathy-call-window.ui.h:18
 msgid "Call"
 msgstr "Llamar"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:414
+#: ../libempathy-gtk/empathy-individual-menu.c:413
 msgid "Mobile"
 msgstr "Móvil"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:416
+#: ../libempathy-gtk/empathy-individual-menu.c:415
 msgid "Work"
 msgstr "Trabajo"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:418
+#: ../libempathy-gtk/empathy-individual-menu.c:417
 msgid "HOME"
 msgstr "Casa"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:659
+#: ../libempathy-gtk/empathy-individual-menu.c:658
 msgid "_Block Contact"
 msgstr "_Bloquear contacto"
 
 #. add chat button
-#: ../libempathy-gtk/empathy-individual-menu.c:1018
+#: ../libempathy-gtk/empathy-individual-menu.c:1017
 #: ../libempathy-gtk/empathy-new-message-dialog.c:319
 #: ../src/empathy-roster-window-menubar.ui.h:1
 msgid "_Chat"
 msgstr "_Chat"
 
 #. add SMS button
-#: ../libempathy-gtk/empathy-individual-menu.c:1053
+#: ../libempathy-gtk/empathy-individual-menu.c:1052
 #: ../libempathy-gtk/empathy-new-message-dialog.c:313
 msgid "_SMS"
 msgstr "_SMS"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1086
+#: ../libempathy-gtk/empathy-individual-menu.c:1085
 msgctxt "menu item"
 msgid "_Audio Call"
 msgstr "Llamada de vo_z"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1119
+#: ../libempathy-gtk/empathy-individual-menu.c:1118
 msgctxt "menu item"
 msgid "_Video Call"
 msgstr "Llamada de _vídeo"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1160
+#: ../libempathy-gtk/empathy-individual-menu.c:1159
 #: ../src/empathy-roster-window-menubar.ui.h:4
 msgid "_Previous Conversations"
 msgstr "Conversaciones an_teriores"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1189
+#: ../libempathy-gtk/empathy-individual-menu.c:1188
 msgid "Send File"
 msgstr "Enviar archivo"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1219
+#: ../libempathy-gtk/empathy-individual-menu.c:1218
 msgid "Share My Desktop"
 msgstr "Compartir mi escritorio"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1245
+#: ../libempathy-gtk/empathy-individual-menu.c:1244
 #: ../libempathy-gtk/empathy-individual-widget.c:1357
 msgid "Favorite"
 msgstr "Favorita"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1264
+#: ../libempathy-gtk/empathy-individual-menu.c:1263
 msgid "gnome-contacts not installed"
 msgstr "gnome-contacts no está instalado"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1267
+#: ../libempathy-gtk/empathy-individual-menu.c:1266
 msgid "Please install gnome-contacts to access contacts details."
 msgstr "Instale gnome-contacts para acceder a los detalles de los contactos."
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1398
+#: ../libempathy-gtk/empathy-individual-menu.c:1397
 msgid "Infor_mation"
 msgstr "Infor_mación"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1447
+#: ../libempathy-gtk/empathy-individual-menu.c:1446
 msgctxt "Edit individual (contextual menu)"
 msgid "_Edit"
 msgstr "_Editar"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1564
-#: ../src/empathy-chat-window.c:1192
+#. send invitation
+#: ../libempathy-gtk/empathy-individual-menu.c:1562
+#: ../src/empathy-chat-window.c:1190
 msgid "Inviting you to this room"
 msgstr "Invitándolo a esta sala"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1610
+#: ../libempathy-gtk/empathy-individual-menu.c:1608
 msgid "_Invite to Chat Room"
 msgstr "_Invitar a sala de chat"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1806
+#: ../libempathy-gtk/empathy-individual-menu.c:1804
 #: ../src/empathy-roster-window-menubar.ui.h:5
 msgid "_Add Contact…"
 msgstr "_Añadir contacto…"
 
-#: ../libempathy-gtk/empathy-individual-view.c:2304
+#: ../libempathy-gtk/empathy-individual-view.c:2364
 msgid "Delete and _Block"
 msgstr "Eliminar y _bloquear"
 
-#: ../libempathy-gtk/empathy-individual-view.c:2339
+#: ../libempathy-gtk/empathy-individual-view.c:2399
 #, c-format
 msgid "Do you really want to remove the group '%s'?"
 msgstr "¿Realmente quiere quitar el grupo «%s»?"
 
-#: ../libempathy-gtk/empathy-individual-view.c:2342
+#: ../libempathy-gtk/empathy-individual-view.c:2402
 msgid "Removing group"
 msgstr "Quitando grupo"
 
+#: ../libempathy-gtk/empathy-individual-view.c:2470
+#| msgid "Rename"
+msgid "Re_name"
+msgstr "Re_nombrar"
+
 #. Remove
-#: ../libempathy-gtk/empathy-individual-view.c:2397
-#: ../libempathy-gtk/empathy-individual-view.c:2601
+#: ../libempathy-gtk/empathy-individual-view.c:2479
+#: ../libempathy-gtk/empathy-individual-view.c:2683
 msgid "_Remove"
 msgstr "_Quitar"
 
-#: ../libempathy-gtk/empathy-individual-view.c:2474
+#: ../libempathy-gtk/empathy-individual-view.c:2556
 #, c-format
 msgid "Do you really want to remove the contact '%s'?"
 msgstr "¿Realmente quiere quitar el contacto «%s»?"
 
-#: ../libempathy-gtk/empathy-individual-view.c:2483
+#: ../libempathy-gtk/empathy-individual-view.c:2565
 #, c-format
 msgid ""
 "Do you really want to remove the linked contact '%s'? Note that this will "
@@ -2314,7 +2323,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-view.c:2495
+#: ../libempathy-gtk/empathy-individual-view.c:2577
 msgid "Removing contact"
 msgstr "Quitando el contacto"
 
@@ -2358,137 +2367,137 @@ msgstr "servidor nuevo"
 msgid "SSL"
 msgstr "SSL"
 
-#: ../libempathy-gtk/empathy-log-window.c:620
+#: ../libempathy-gtk/empathy-log-window.c:617
 msgid "History"
 msgstr "Histórico"
 
-#: ../libempathy-gtk/empathy-log-window.c:675
+#: ../libempathy-gtk/empathy-log-window.c:672
 msgid "Show"
 msgstr "Mostrar"
 
-#: ../libempathy-gtk/empathy-log-window.c:697
+#: ../libempathy-gtk/empathy-log-window.c:694
 msgid "Search"
 msgstr "Buscar"
 
-#: ../libempathy-gtk/empathy-log-window.c:1148
+#: ../libempathy-gtk/empathy-log-window.c:1145
 #, c-format
 msgid "Chat in %s"
 msgstr "Chatee en %s"
 
-#: ../libempathy-gtk/empathy-log-window.c:1150
+#: ../libempathy-gtk/empathy-log-window.c:1147
 #, c-format
 msgid "Chat with %s"
 msgstr "Chat con %s"
 
-#: ../libempathy-gtk/empathy-log-window.c:1200
-#: ../libempathy-gtk/empathy-log-window.c:1347
+#: ../libempathy-gtk/empathy-log-window.c:1197
+#: ../libempathy-gtk/empathy-log-window.c:1341
 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:1289
+#: ../libempathy-gtk/empathy-log-window.c:1284
 #, 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:1295
+#: ../libempathy-gtk/empathy-log-window.c:1290
 #, c-format
 msgid "<b>%s:</b> %s"
 msgstr "<b>%s:</b> %s"
 
-#: ../libempathy-gtk/empathy-log-window.c:1371
+#: ../libempathy-gtk/empathy-log-window.c:1365
 #, c-format
 msgid "%s second"
 msgid_plural "%s seconds"
 msgstr[0] "%s segundo"
 msgstr[1] "%s segundos"
 
-#: ../libempathy-gtk/empathy-log-window.c:1378
+#: ../libempathy-gtk/empathy-log-window.c:1372
 #, c-format
 msgid "%s minute"
 msgid_plural "%s minutes"
 msgstr[0] "%s minuto"
 msgstr[1] "%s minutos"
 
-#: ../libempathy-gtk/empathy-log-window.c:1386
+#: ../libempathy-gtk/empathy-log-window.c:1380
 #, c-format
 msgid "Call took %s, ended at %s"
 msgstr "La llamada duró %s, finalizó a las %s"
 
-#: ../libempathy-gtk/empathy-log-window.c:1720
+#: ../libempathy-gtk/empathy-log-window.c:1711
 msgid "Today"
 msgstr "Hoy"
 
-#: ../libempathy-gtk/empathy-log-window.c:1724
+#: ../libempathy-gtk/empathy-log-window.c:1715
 msgid "Yesterday"
 msgstr "Ayer"
 
 #. Translators: A date such as '23 May 2010' (strftime format)
-#: ../libempathy-gtk/empathy-log-window.c:1739
+#: ../libempathy-gtk/empathy-log-window.c:1730
 msgid "%e %B %Y"
 msgstr "%e de %B de %Y"
 
-#: ../libempathy-gtk/empathy-log-window.c:1827
-#: ../libempathy-gtk/empathy-log-window.c:3487
+#: ../libempathy-gtk/empathy-log-window.c:1834
+#: ../libempathy-gtk/empathy-log-window.c:3457
 msgid "Anytime"
 msgstr "Cualquier hora"
 
-#: ../libempathy-gtk/empathy-log-window.c:1916
-#: ../libempathy-gtk/empathy-log-window.c:2400
+#: ../libempathy-gtk/empathy-log-window.c:1933
+#: ../libempathy-gtk/empathy-log-window.c:2392
 msgid "Anyone"
 msgstr "Cualquiera"
 
-#: ../libempathy-gtk/empathy-log-window.c:2713
+#: ../libempathy-gtk/empathy-log-window.c:2705
 msgid "Who"
 msgstr "Quién"
 
-#: ../libempathy-gtk/empathy-log-window.c:2922
+#: ../libempathy-gtk/empathy-log-window.c:2914
 msgid "When"
 msgstr "Cuándo"
 
-#: ../libempathy-gtk/empathy-log-window.c:3038
+#: ../libempathy-gtk/empathy-log-window.c:3032
 msgid "Anything"
 msgstr "Cualquier cosa"
 
-#: ../libempathy-gtk/empathy-log-window.c:3040
+#: ../libempathy-gtk/empathy-log-window.c:3034
 msgid "Text chats"
 msgstr "Chats de texto"
 
-#: ../libempathy-gtk/empathy-log-window.c:3042
+#: ../libempathy-gtk/empathy-log-window.c:3035
 #: ../src/empathy-preferences.ui.h:25
 msgid "Calls"
 msgstr "Llamadas"
 
-#: ../libempathy-gtk/empathy-log-window.c:3047
+#: ../libempathy-gtk/empathy-log-window.c:3039
 msgid "Incoming calls"
 msgstr "Llamadas entrantes"
 
-#: ../libempathy-gtk/empathy-log-window.c:3048
+#: ../libempathy-gtk/empathy-log-window.c:3040
 msgid "Outgoing calls"
 msgstr "Llamadas salientes"
 
-#: ../libempathy-gtk/empathy-log-window.c:3049
+#: ../libempathy-gtk/empathy-log-window.c:3041
 msgid "Missed calls"
 msgstr "Llamadas perdidas"
 
-#: ../libempathy-gtk/empathy-log-window.c:3071
+#: ../libempathy-gtk/empathy-log-window.c:3061
 msgid "What"
 msgstr "Qué"
 
-#: ../libempathy-gtk/empathy-log-window.c:3780
+#: ../libempathy-gtk/empathy-log-window.c:3750
 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:3784
+#: ../libempathy-gtk/empathy-log-window.c:3754
 msgid "Clear All"
 msgstr "Limpiar todo"
 
-#: ../libempathy-gtk/empathy-log-window.c:3791
+#: ../libempathy-gtk/empathy-log-window.c:3761
 msgid "Delete from:"
 msgstr "Eliminar de:"
 
@@ -2619,30 +2628,41 @@ msgstr ""
 #. COL_DISPLAY_MARKUP
 #. COL_STATUS_CUSTOMISABLE
 #. COL_TYPE
-#: ../libempathy-gtk/empathy-presence-chooser.c:167
-#: ../libempathy-gtk/empathy-presence-chooser.c:203
+#: ../libempathy-gtk/empathy-presence-chooser.c:166
+#: ../libempathy-gtk/empathy-presence-chooser.c:202
 msgid "Custom Message…"
 msgstr "Mensaje personalizado…"
 
-#: ../libempathy-gtk/empathy-presence-chooser.c:220
-#: ../libempathy-gtk/empathy-presence-chooser.c:222
+#: ../libempathy-gtk/empathy-presence-chooser.c:219
+#: ../libempathy-gtk/empathy-presence-chooser.c:221
 msgid "Edit Custom Messages…"
 msgstr "Editar mensajes personalizados…"
 
-#: ../libempathy-gtk/empathy-presence-chooser.c:345
+#: ../libempathy-gtk/empathy-presence-chooser.c:344
 msgid "Click to remove this status as a favorite"
 msgstr "Pulse pare eliminar este estado de los favoritos"
 
-#: ../libempathy-gtk/empathy-presence-chooser.c:354
+#: ../libempathy-gtk/empathy-presence-chooser.c:353
 msgid "Click to make this status a favorite"
 msgstr "Pulse para hacer este estado uno favorito"
 
-#: ../libempathy-gtk/empathy-presence-chooser.c:388
+#. Translators: %s is a status message like 'At the pub' for example
+#: ../libempathy-gtk/empathy-presence-chooser.c:387
+#, c-format
+msgid ""
+"<b>Current message: %s</b>\n"
+"<small><i>Press Enter to set the new message or Esc to cancel.</i></small>"
+msgstr ""
+"<b>Mensaje actual: %s</b>\n"
+"<small><i>Pulse Intro para establecer el mensaje nuevo o Esc para cancelar.</"
+"i></small>"
+
+#: ../libempathy-gtk/empathy-presence-chooser.c:396
 msgid "Set status"
 msgstr "Establecer estado"
 
 #. Custom messages
-#: ../libempathy-gtk/empathy-presence-chooser.c:1135
+#: ../libempathy-gtk/empathy-presence-chooser.c:1147
 msgid "Custom messages…"
 msgstr "Mensajes personalizados…"
 
@@ -3016,42 +3036,38 @@ msgid "Vietnamese"
 msgstr "Vietnamita"
 
 #: ../libempathy-gtk/empathy-calendar-button.c:66
-#| msgctxt "verb in a column header displaying group names"
-#| msgid "Select"
 msgid "Select..."
 msgstr "Seleccionar…"
 
 #: ../libempathy-gtk/empathy-calendar-button.c:154
-#| msgctxt "verb in a column header displaying group names"
-#| msgid "Select"
 msgid "_Select"
 msgstr "_Seleccionar"
 
-#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:202
+#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:201
 msgid "No error message"
 msgstr "Sin mensaje de eeror"
 
-#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:275
+#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:274
 msgid "Instant Message (Empathy)"
 msgstr "Mensaje instantáneo (Empathy)"
 
-#: ../src/empathy.c:435
+#: ../src/empathy.c:425
 msgid "Don't connect on startup"
 msgstr "No conectarse automáticamente al inicio"
 
-#: ../src/empathy.c:439
+#: ../src/empathy.c:429
 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:454
+#: ../src/empathy.c:444
 msgid "- Empathy IM Client"
 msgstr "- Cliente de mensajería instantánea Empathy"
 
-#: ../src/empathy.c:641
+#: ../src/empathy.c:620
 msgid "Error contacting the Account Manager"
 msgstr "Error al contactar con el Gestor de cuentas"
 
-#: ../src/empathy.c:643
+#: ../src/empathy.c:622
 #, c-format
 msgid ""
 "There was an error while trying to connect to the Telepathy Account Manager. "
@@ -3110,42 +3126,42 @@ msgstr ""
 
 #. The primary text of the dialog shown to the user when he is about to lose
 #. * unsaved changes
-#: ../src/empathy-accounts-dialog.c:72
+#: ../src/empathy-accounts-dialog.c:71
 #, c-format
 msgid "There are unsaved modifications to your %s account."
 msgstr "Existen modificaciones sin guardar en su cuenta %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:76
+#: ../src/empathy-accounts-dialog.c:75
 msgid "Your new account has not been saved yet."
 msgstr "Aún no se ha guardado su cuenta nueva."
 
-#: ../src/empathy-accounts-dialog.c:381
+#: ../src/empathy-accounts-dialog.c:404
 #: ../src/empathy-streamed-media-window.c:759
-#: ../src/empathy-call-window.c:1289
+#: ../src/empathy-call-window.c:1267
 msgid "Connecting…"
 msgstr "Conectando…"
 
-#: ../src/empathy-accounts-dialog.c:422
+#: ../src/empathy-accounts-dialog.c:445
 #, c-format
 msgid "Offline — %s"
 msgstr "Desconectado: %s"
 
-#: ../src/empathy-accounts-dialog.c:434
+#: ../src/empathy-accounts-dialog.c:457
 #, c-format
 msgid "Disconnected — %s"
 msgstr "Desconectado: %s"
 
-#: ../src/empathy-accounts-dialog.c:445
+#: ../src/empathy-accounts-dialog.c:468
 msgid "Offline — No Network Connection"
 msgstr "Desconectado: sin conexión de red"
 
-#: ../src/empathy-accounts-dialog.c:452
+#: ../src/empathy-accounts-dialog.c:475
 msgid "Unknown Status"
 msgstr "Estado desconocido"
 
-#: ../src/empathy-accounts-dialog.c:469
+#: ../src/empathy-accounts-dialog.c:492
 msgid ""
 "This account has been disabled because it relies on an old, unsupported "
 "backend. Please install telepathy-haze and restart your session to migrate "
@@ -3155,36 +3171,36 @@ msgstr ""
 "soportado. Instale telepathy-haze y reinicie la sesión para migrar esta "
 "cuenta."
 
-#: ../src/empathy-accounts-dialog.c:479
+#: ../src/empathy-accounts-dialog.c:502
 msgid "Offline — Account Disabled"
 msgstr "Desconectado: cuenta desactivada"
 
-#: ../src/empathy-accounts-dialog.c:585
+#: ../src/empathy-accounts-dialog.c:608
 msgid "Edit Connection Parameters"
 msgstr "Editar los parámetros de la conexión"
 
-#: ../src/empathy-accounts-dialog.c:750
+#: ../src/empathy-accounts-dialog.c:773
 msgid "Failed to retrieve your personal information from the server."
 msgstr "Falló al recuperar su información personal del servidor."
 
-#: ../src/empathy-accounts-dialog.c:756
+#: ../src/empathy-accounts-dialog.c:779
 msgid "Go online to edit your personal information."
 msgstr "Conéctese para editar su información personal."
 
-#: ../src/empathy-accounts-dialog.c:843
+#: ../src/empathy-accounts-dialog.c:866
 msgid "_Edit Connection Parameters..."
 msgstr "_Editar los parámetros de la conexión…"
 
-#: ../src/empathy-accounts-dialog.c:1339
+#: ../src/empathy-accounts-dialog.c:1362
 #, c-format
 msgid "Do you want to remove %s from your computer?"
 msgstr "¿Quiere quitar %s de su equipo?"
 
-#: ../src/empathy-accounts-dialog.c:1343
+#: ../src/empathy-accounts-dialog.c:1366
 msgid "This will not remove your account on the server."
 msgstr "Esto no quitará su cuenta del servidor."
 
-#: ../src/empathy-accounts-dialog.c:1579
+#: ../src/empathy-accounts-dialog.c:1571
 msgid ""
 "You are about to select another account, which will discard\n"
 "your changes. Are you sure you want to proceed?"
@@ -3192,24 +3208,25 @@ msgstr ""
 "Va a seleccionar otra cuenta lo que descartará sus cambios.\n"
 "¿Seguro que quiere continuar?"
 
-#. Menu items: to enabled/disable the account
-#: ../src/empathy-accounts-dialog.c:1755
-msgid "_Enable"
-msgstr "_Activar"
+#. Menu item: to enabled/disable the account
+#: ../src/empathy-accounts-dialog.c:1762
+msgid "_Enabled"
+msgstr "_Activada"
 
-#: ../src/empathy-accounts-dialog.c:1756
-msgid "_Disable"
-msgstr "_Desactivar"
+#. Menu item: Rename
+#: ../src/empathy-accounts-dialog.c:1785
+msgid "Rename"
+msgstr "Renombrar"
 
-#: ../src/empathy-accounts-dialog.c:2184
+#: ../src/empathy-accounts-dialog.c:2201
 msgid "_Skip"
 msgstr "_Omitir"
 
-#: ../src/empathy-accounts-dialog.c:2188
+#: ../src/empathy-accounts-dialog.c:2205
 msgid "_Connect"
 msgstr "_Conectar"
 
-#: ../src/empathy-accounts-dialog.c:2365
+#: ../src/empathy-accounts-dialog.c:2384
 msgid ""
 "You are about to close the window, which will discard\n"
 "your changes. Are you sure you want to proceed?"
@@ -3237,19 +3254,19 @@ msgstr ""
 msgid "No protocol backends installed"
 msgstr "No hay «backends» de protocolos instalados"
 
-#: ../src/empathy-auth-client.c:288
+#: ../src/empathy-auth-client.c:286
 msgid " - Empathy authentication client"
 msgstr ": Cliente de autenticación de Empathy"
 
-#: ../src/empathy-auth-client.c:304
+#: ../src/empathy-auth-client.c:302
 msgid "Empathy authentication client"
 msgstr "Cliente de autenticación de Empathy"
 
-#: ../src/empathy-av.c:118 ../src/empathy-call.c:201
+#: ../src/empathy-av.c:115 ../src/empathy-call.c:198
 msgid "- Empathy Audio/Video Client"
 msgstr ": Cliente de sonido/vídeo Empathy"
 
-#: ../src/empathy-av.c:134 ../src/empathy-call.c:223
+#: ../src/empathy-av.c:131 ../src/empathy-call.c:220
 msgid "Empathy Audio/Video Client"
 msgstr "Cliente de sonido/vídeo Empathy"
 
@@ -3292,33 +3309,33 @@ 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:1211
-#: ../src/empathy-call-window.c:1889
+#: ../src/empathy-call-window.c:1861
 #, c-format
 msgid "Call with %s"
 msgstr "Llamada con %s"
 
 #: ../src/empathy-streamed-media-window.c:1444
-#: ../src/empathy-call-window.c:2133
+#: ../src/empathy-call-window.c:2105
 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:1446
-#: ../src/empathy-call-window.c:2135
+#: ../src/empathy-call-window.c:2107
 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:1448
-#: ../src/empathy-call-window.c:2137
+#: ../src/empathy-call-window.c:2109
 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:1450
-#: ../src/empathy-call-window.c:2139
+#: ../src/empathy-call-window.c:2111
 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:1452
-#: ../src/empathy-call-window.c:2141
+#: ../src/empathy-call-window.c:2113
 msgid "The IP address of the multicast group"
 msgstr "La dirección IP del grupo multicast"
 
@@ -3337,12 +3354,12 @@ msgid "Connected — %d:%02dm"
 msgstr "Conectado — %d:%02dm"
 
 #: ../src/empathy-streamed-media-window.c:2199
-#: ../src/empathy-call-window.c:2992
+#: ../src/empathy-call-window.c:2964
 msgid "Technical Details"
 msgstr "Detalles técnicos"
 
 #: ../src/empathy-streamed-media-window.c:2237
-#: ../src/empathy-call-window.c:3031
+#: ../src/empathy-call-window.c:3003
 #, c-format
 msgid ""
 "%s's software does not understand any of the audio formats supported by your "
@@ -3352,7 +3369,7 @@ msgstr ""
 "por su equipo"
 
 #: ../src/empathy-streamed-media-window.c:2242
-#: ../src/empathy-call-window.c:3036
+#: ../src/empathy-call-window.c:3008
 #, c-format
 msgid ""
 "%s's software does not understand any of the video formats supported by your "
@@ -3362,7 +3379,7 @@ msgstr ""
 "por su equipo"
 
 #: ../src/empathy-streamed-media-window.c:2248
-#: ../src/empathy-call-window.c:3042
+#: ../src/empathy-call-window.c:3014
 #, c-format
 msgid ""
 "Can't establish a connection to %s. One of you might be on a network that "
@@ -3372,12 +3389,12 @@ msgstr ""
 "una red que no acepta conexiones directas."
 
 #: ../src/empathy-streamed-media-window.c:2254
-#: ../src/empathy-call-window.c:3048
+#: ../src/empathy-call-window.c:3020
 msgid "There was a failure on the network"
 msgstr "Hubo un fallo en la red"
 
 #: ../src/empathy-streamed-media-window.c:2258
-#: ../src/empathy-call-window.c:3052
+#: ../src/empathy-call-window.c:3024
 msgid ""
 "The audio formats necessary for this call are not installed on your computer"
 msgstr ""
@@ -3385,7 +3402,7 @@ msgstr ""
 "llamada"
 
 #: ../src/empathy-streamed-media-window.c:2261
-#: ../src/empathy-call-window.c:3055
+#: ../src/empathy-call-window.c:3027
 msgid ""
 "The video formats necessary for this call are not installed on your computer"
 msgstr ""
@@ -3393,7 +3410,7 @@ msgstr ""
 "llamada"
 
 #: ../src/empathy-streamed-media-window.c:2271
-#: ../src/empathy-call-window.c:3067
+#: ../src/empathy-call-window.c:3039
 #, c-format
 msgid ""
 "Something unexpected happened in a Telepathy component. Please <a href=\"%s"
@@ -3405,22 +3422,22 @@ msgstr ""
 "de «Depuración» en el menú de Ayuda."
 
 #: ../src/empathy-streamed-media-window.c:2279
-#: ../src/empathy-call-window.c:3076
+#: ../src/empathy-call-window.c:3048
 msgid "There was a failure in the call engine"
 msgstr "Hubo un fallo en el motor de llamadas"
 
 #: ../src/empathy-streamed-media-window.c:2282
-#: ../src/empathy-call-window.c:3079
+#: ../src/empathy-call-window.c:3051
 msgid "The end of the stream was reached"
 msgstr "Se llegó al final del flujo"
 
 #: ../src/empathy-streamed-media-window.c:2322
-#: ../src/empathy-call-window.c:3119
+#: ../src/empathy-call-window.c:3091
 msgid "Can't establish audio stream"
 msgstr "No se puede establecer el flujo de voz"
 
 #: ../src/empathy-streamed-media-window.c:2332
-#: ../src/empathy-call-window.c:3129
+#: ../src/empathy-call-window.c:3101
 msgid "Can't establish video stream"
 msgstr "No se puede establecer el flujo de vídeo"
 
@@ -3533,8 +3550,8 @@ msgstr "Códec de codificación:"
 
 #: ../src/empathy-call-window.ui.h:28
 #: ../src/empathy-streamed-media-window.ui.h:21
-#: ../src/empathy-call-window.c:2542 ../src/empathy-call-window.c:2543
-#: ../src/empathy-call-window.c:2544 ../src/empathy-call-window.c:2545
+#: ../src/empathy-call-window.c:2514 ../src/empathy-call-window.c:2515
+#: ../src/empathy-call-window.c:2516 ../src/empathy-call-window.c:2517
 msgid "Unknown"
 msgstr "Desconocido"
 
@@ -3558,11 +3575,11 @@ msgstr "Candidato local:"
 msgid "Audio"
 msgstr "Sonido"
 
-#: ../src/empathy-chat-window.c:289
+#: ../src/empathy-chat-window.c:288
 msgid "Close this window?"
 msgstr "¿Cerrar esta ventana?"
 
-#: ../src/empathy-chat-window.c:294
+#: ../src/empathy-chat-window.c:293
 #, c-format
 msgid ""
 "Closing this window will leave %s. You will not receive any further messages "
@@ -3571,7 +3588,7 @@ msgstr ""
 "Cerrar esta ventana hará que abandone %s. No recibirá más mensajes hasta que "
 "se una de nuevo."
 
-#: ../src/empathy-chat-window.c:305
+#: ../src/empathy-chat-window.c:304
 #, c-format
 msgid ""
 "Closing this window will leave a chat room. You will not receive any further "
@@ -3586,65 +3603,65 @@ msgstr[1] ""
 "Cerrar esta ventana hará que abandone %u salas de chat. No recibirá más "
 "mensajes hasta que se una a ellas de nuevo."
 
-#: ../src/empathy-chat-window.c:314
+#: ../src/empathy-chat-window.c:313
 #, c-format
 msgid "Leave %s?"
 msgstr "¿Cerrar %s?"
 
-#: ../src/empathy-chat-window.c:315
+#: ../src/empathy-chat-window.c:314
 msgid ""
 "You will not receive any further messages from this chat room until you "
 "rejoin it."
 msgstr "No recibirá más mensajes de este chat hasta que se una de nuevo."
 
-#: ../src/empathy-chat-window.c:334
+#: ../src/empathy-chat-window.c:333
 msgid "Close window"
 msgstr "Cerrar la ventana"
 
-#: ../src/empathy-chat-window.c:334
+#: ../src/empathy-chat-window.c:333
 msgid "Leave room"
 msgstr "Abandonar la sala"
 
-#: ../src/empathy-chat-window.c:640 ../src/empathy-chat-window.c:660
+#: ../src/empathy-chat-window.c:639 ../src/empathy-chat-window.c:659
 #, c-format
 msgid "%s (%d unread)"
 msgid_plural "%s (%d unread)"
 msgstr[0] "%s (%d sin leer)"
 msgstr[1] "%s (%d sin leer)"
 
-#: ../src/empathy-chat-window.c:652
+#: ../src/empathy-chat-window.c:651
 #, c-format
 msgid "%s (and %u other)"
 msgid_plural "%s (and %u others)"
 msgstr[0] "%s (y otra)"
 msgstr[1] "%s (y otras %u)"
 
-#: ../src/empathy-chat-window.c:668
+#: ../src/empathy-chat-window.c:667
 #, c-format
 msgid "%s (%d unread from others)"
 msgid_plural "%s (%d unread from others)"
 msgstr[0] "%s (%d sin leer de otros)"
 msgstr[1] "%s (%d sin leer de otros)"
 
-#: ../src/empathy-chat-window.c:677
+#: ../src/empathy-chat-window.c:676
 #, c-format
 msgid "%s (%d unread from all)"
 msgid_plural "%s (%d unread from all)"
 msgstr[0] "%s (%d sin leer de todos)"
 msgstr[1] "%s (%d sin leer de todos)"
 
-#: ../src/empathy-chat-window.c:892
+#: ../src/empathy-chat-window.c:891
 msgid "SMS:"
 msgstr "SMS:"
 
-#: ../src/empathy-chat-window.c:902
+#: ../src/empathy-chat-window.c:901
 #, c-format
 msgid "Sending %d message"
 msgid_plural "Sending %d messages"
 msgstr[0] "Enviando %d mensaje"
 msgstr[1] "Enviando %d mensajes"
 
-#: ../src/empathy-chat-window.c:924
+#: ../src/empathy-chat-window.c:923
 msgid "Typing a message."
 msgstr "Tecleando un mensaje."
 
@@ -3728,7 +3745,7 @@ msgstr "Gestionar salas favoritas"
 msgid "Incoming video call"
 msgstr "Llamada de vídeo entrante"
 
-#: ../src/empathy-event-manager.c:522 ../src/empathy-call-window.c:1519
+#: ../src/empathy-event-manager.c:522 ../src/empathy-call-window.c:1483
 msgid "Incoming call"
 msgstr "Llamada entrante"
 
@@ -3743,7 +3760,7 @@ msgid "%s is calling you. Do you want to answer?"
 msgstr "%s le está llamando. ¿Quiere responder?"
 
 #: ../src/empathy-event-manager.c:530 ../src/empathy-event-manager.c:731
-#: ../src/empathy-event-manager.c:764 ../src/empathy-call-window.c:1525
+#: ../src/empathy-event-manager.c:764 ../src/empathy-call-window.c:1489
 #, c-format
 msgid "Incoming call from %s"
 msgstr "Llamada entrante de %s"
@@ -3761,7 +3778,7 @@ msgid "_Answer with video"
 msgstr "_Responder con vídeo"
 
 #: ../src/empathy-event-manager.c:731 ../src/empathy-event-manager.c:764
-#: ../src/empathy-call-window.c:1525
+#: ../src/empathy-call-window.c:1489
 #, c-format
 msgid "Incoming video call from %s"
 msgstr "Llamada de vídeo entrante de %s"
@@ -3804,7 +3821,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:1146 ../src/empathy-roster-window.c:374
+#: ../src/empathy-event-manager.c:1146 ../src/empathy-roster-window.c:373
 msgid "Password required"
 msgstr "Se requiere una contraseña"
 
@@ -3952,88 +3969,88 @@ msgid "Import Accounts"
 msgstr "Importar cuentas"
 
 #. Translators: this is the header of a treeview column
-#: ../src/empathy-import-widget.c:316
+#: ../src/empathy-import-widget.c:303
 msgid "Import"
 msgstr "Importar"
 
-#: ../src/empathy-import-widget.c:325
+#: ../src/empathy-import-widget.c:312
 msgid "Protocol"
 msgstr "Protocolo"
 
-#: ../src/empathy-import-widget.c:349
+#: ../src/empathy-import-widget.c:336
 msgid "Source"
 msgstr "Origen"
 
-#: ../src/empathy-roster-window.c:391
+#: ../src/empathy-roster-window.c:390
 msgid "Provide Password"
 msgstr "Escriba su contraseña"
 
-#: ../src/empathy-roster-window.c:397
+#: ../src/empathy-roster-window.c:396
 msgid "Disconnect"
 msgstr "Desconectar"
 
-#: ../src/empathy-roster-window.c:657
+#: ../src/empathy-roster-window.c:656
 msgid "You need to setup an account to see contacts here."
 msgstr "Debe configurar una cuenta para ver contactos aquí."
 
-#: ../src/empathy-roster-window.c:673
+#: ../src/empathy-roster-window.c:672
 msgid "No match found"
 msgstr "No se encontró ninguna coincidencia"
 
-#: ../src/empathy-roster-window.c:783
+#: ../src/empathy-roster-window.c:782
 #, 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-roster-window.c:849
+#: ../src/empathy-roster-window.c:848
 msgid "Update software..."
 msgstr "Actualizar software…"
 
-#: ../src/empathy-roster-window.c:855 ../src/empathy-roster-window.c:972
+#: ../src/empathy-roster-window.c:854 ../src/empathy-roster-window.c:971
 msgid "Close"
 msgstr "Cerrar"
 
-#: ../src/empathy-roster-window.c:960
+#: ../src/empathy-roster-window.c:959
 msgid "Reconnect"
 msgstr "Reconectar"
 
-#: ../src/empathy-roster-window.c:966
+#: ../src/empathy-roster-window.c:965
 msgid "Edit Account"
 msgstr "Editar cuenta"
 
 #. Translators: this string will be something like:
 #. * Top up My Account ($1.23)..."
-#: ../src/empathy-roster-window.c:1110
+#: ../src/empathy-roster-window.c:1109
 #, c-format
 msgid "Top up %s (%s)..."
 msgstr "Recargar %s (%s)…"
 
-#: ../src/empathy-roster-window.c:1156
+#: ../src/empathy-roster-window.c:1155
 msgid "Top up account credit"
 msgstr "Recargar el saldo de la cuenta"
 
 #. top up button
-#: ../src/empathy-roster-window.c:1228
+#: ../src/empathy-roster-window.c:1227
 msgid "Top Up..."
 msgstr "Recargar…"
 
-#: ../src/empathy-roster-window.c:1952
+#: ../src/empathy-roster-window.c:1951
 msgid "Contact"
 msgstr "Contacto"
 
-#: ../src/empathy-roster-window.c:2150
+#: ../src/empathy-roster-window.c:2149
 msgid "You need to enable one of your accounts to see contacts here."
 msgstr "Debe activar una de sus cuentas para ver contactos aquí."
 
 #. translators: argument is an account name
-#: ../src/empathy-roster-window.c:2158
+#: ../src/empathy-roster-window.c:2157
 #, c-format
 msgid "You need to enable %s to see contacts here."
 msgstr "Debe activar %s para ver contactos aquí."
 
-#: ../src/empathy-roster-window.c:2460
+#: ../src/empathy-roster-window.c:2459
 msgid "Contact List"
 msgstr "Lista de contactos"
 
@@ -4137,7 +4154,7 @@ msgstr "Miembros"
 
 #. Translators: Room/Join's roomlist tooltip. Parameters are a channel name,
 #. yes/no, yes/no and a number.
-#: ../src/empathy-new-chatroom-dialog.c:637
+#: ../src/empathy-new-chatroom-dialog.c:636
 #, c-format
 msgid ""
 "%s\n"
@@ -4150,21 +4167,21 @@ msgstr ""
 "Se necesita contraseña: %s\n"
 "Miembros: %s"
 
+#: ../src/empathy-new-chatroom-dialog.c:638
 #: ../src/empathy-new-chatroom-dialog.c:639
-#: ../src/empathy-new-chatroom-dialog.c:640
 msgid "Yes"
 msgstr "Sí"
 
+#: ../src/empathy-new-chatroom-dialog.c:638
 #: ../src/empathy-new-chatroom-dialog.c:639
-#: ../src/empathy-new-chatroom-dialog.c:640
 msgid "No"
 msgstr "No"
 
-#: ../src/empathy-new-chatroom-dialog.c:668
+#: ../src/empathy-new-chatroom-dialog.c:666
 msgid "Could not start room listing"
 msgstr "No se pudo iniciar la lista de la sala"
 
-#: ../src/empathy-new-chatroom-dialog.c:678
+#: ../src/empathy-new-chatroom-dialog.c:676
 msgid "Could not stop room listing"
 msgstr "No se pudo parar la lista de la sala"
 
@@ -4232,46 +4249,46 @@ msgid "Language"
 msgstr "Idioma"
 
 #. translators: Contact name for the chat theme preview
-#: ../src/empathy-preferences.c:726
+#: ../src/empathy-preferences.c:724
 msgid "Juliet"
 msgstr "Julieta"
 
 #. translators: Contact name for the chat theme preview
-#: ../src/empathy-preferences.c:733
+#: ../src/empathy-preferences.c:731
 msgid "Romeo"
 msgstr "Romeo"
 
 #. translators: Quote from Romeo & Julier, for chat theme preview
-#: ../src/empathy-preferences.c:739
+#: ../src/empathy-preferences.c:737
 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:743
+#: ../src/empathy-preferences.c:741
 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:746
+#: ../src/empathy-preferences.c:744
 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:749
+#: ../src/empathy-preferences.c:747
 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:752
+#: ../src/empathy-preferences.c:750
 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:755
+#: ../src/empathy-preferences.c:753
 msgid "Juliet has disconnected"
 msgstr "Julieta se ha desconectado"
 
-#: ../src/empathy-preferences.c:1159
+#: ../src/empathy-preferences.c:1157
 msgid "Preferences"
 msgstr "Preferencias"
 
@@ -4514,11 +4531,6 @@ msgstr "Enlace a pastebin"
 msgid "Pastebin response"
 msgstr "Respuesta de pastebin"
 
-#: ../src/empathy-debug-window.c:1680
-#, c-format
-msgid "%s"
-msgstr "%s"
-
 #: ../src/empathy-debug-window.c:1683
 msgid "Data too large for a single paste. Please save logs to file."
 msgstr ""
@@ -4589,16 +4601,16 @@ msgstr ""
 "El gestor de conexiones seleccionado no soporta la extensión de depuración "
 "remota."
 
-#: ../src/empathy-invite-participant-dialog.c:202
-#: ../src/empathy-invite-participant-dialog.c:230
+#: ../src/empathy-invite-participant-dialog.c:200
+#: ../src/empathy-invite-participant-dialog.c:228
 msgid "Invite Participant"
 msgstr "Invitar participante"
 
-#: ../src/empathy-invite-participant-dialog.c:203
+#: ../src/empathy-invite-participant-dialog.c:201
 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:226
+#: ../src/empathy-invite-participant-dialog.c:224
 msgid "Invite"
 msgstr "Invitar"
 
@@ -4626,7 +4638,7 @@ msgstr "<id-de-cuenta>"
 msgid "- Empathy Accounts"
 msgstr ": Cuentas en Empathy"
 
-#: ../src/empathy-accounts.c:231
+#: ../src/empathy-accounts.c:230
 msgid "Empathy Accounts"
 msgstr "Cuentas en Empathy"
 
@@ -4638,47 +4650,47 @@ msgstr "Mostrar un servicio en particular"
 msgid "- Empathy Debugger"
 msgstr "- Depurador de Empathy"
 
-#: ../src/empathy-debugger.c:113
+#: ../src/empathy-debugger.c:112
 msgid "Empathy Debugger"
 msgstr "Depurador de Empathy"
 
-#: ../src/empathy-chat.c:109
+#: ../src/empathy-chat.c:106
 msgid "- Empathy Chat Client"
 msgstr ": Cliente de chat Empathy"
 
-#: ../src/empathy-notifications-approver.c:189
+#: ../src/empathy-notifications-approver.c:190
 msgid "Respond"
 msgstr "Respuesta"
 
-#: ../src/empathy-notifications-approver.c:203
-#: ../src/empathy-call-window.c:1529
+#: ../src/empathy-notifications-approver.c:204
+#: ../src/empathy-call-window.c:1493
 msgid "Reject"
 msgstr "Rechazar"
 
-#: ../src/empathy-notifications-approver.c:208
-#: ../src/empathy-notifications-approver.c:213
-#: ../src/empathy-call-window.c:1530
+#: ../src/empathy-notifications-approver.c:209
+#: ../src/empathy-notifications-approver.c:214
+#: ../src/empathy-call-window.c:1494
 msgid "Answer"
 msgstr "Responder"
 
-#: ../src/empathy-notifications-approver.c:213
+#: ../src/empathy-notifications-approver.c:214
 msgid "Answer with video"
 msgstr "Responder con vídeo"
 
-#: ../src/empathy-notifications-approver.c:221
-#: ../src/empathy-notifications-approver.c:231
+#: ../src/empathy-notifications-approver.c:222
+#: ../src/empathy-notifications-approver.c:232
 msgid "Decline"
 msgstr "Rechazar"
 
-#: ../src/empathy-notifications-approver.c:225
-#: ../src/empathy-notifications-approver.c:236
+#: ../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:246
+#: ../src/empathy-notifications-approver.c:247
 msgid "Provide"
 msgstr "Proporcionar"
 
@@ -4689,38 +4701,38 @@ msgstr "%s intentó llamarle, pero estaba en otra llamada."
 
 #. Translators: this is an "Info" label. It should be as short
 #. * as possible.
-#: ../src/empathy-call-window.c:1140 ../src/empathy-call-window.c:1162
+#: ../src/empathy-call-window.c:1124 ../src/empathy-call-window.c:1140
 msgid "i"
 msgstr "Información"
 
-#: ../src/empathy-call-window.c:2888
+#: ../src/empathy-call-window.c:2860
 msgid "On hold"
 msgstr "En espera"
 
-#: ../src/empathy-call-window.c:2891
+#: ../src/empathy-call-window.c:2863
 msgid "Mute"
 msgstr "Silenciar"
 
-#: ../src/empathy-call-window.c:2893
+#: ../src/empathy-call-window.c:2865
 msgid "Duration"
 msgstr "Duración"
 
 #. Translators: 'status - minutes:seconds' the caller has been connected
-#: ../src/empathy-call-window.c:2896
+#: ../src/empathy-call-window.c:2868
 #, c-format
 msgid "%s — %d:%02dm"
 msgstr "%s: %d:%02dm"
 
-#: ../src/empathy-call-window.c:3166
+#: ../src/empathy-call-window.c:3138
 #, c-format
 msgid "Your current balance is %s."
 msgstr "su balance actual es %s."
 
-#: ../src/empathy-call-window.c:3170
+#: ../src/empathy-call-window.c:3142
 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:3172
+#: ../src/empathy-call-window.c:3144
 msgid "Top Up"
 msgstr "Recargar"
 
@@ -4759,6 +4771,15 @@ msgstr ""
 "característica eligiendo <span style=\"italic\">Editar → Cuentas</span> en "
 "la lista de contactos."
 
+#~ msgid "_Enable"
+#~ msgstr "_Activar"
+
+#~ msgid "_Disable"
+#~ msgstr "_Desactivar"
+
+#~ msgid "%s"
+#~ msgstr "%s"
+
 #~ msgid "There was an error while importing the accounts."
 #~ msgstr "Hubo un error al importar las cuentas."
 
@@ -5058,9 +5079,6 @@ msgstr ""
 #~ msgid "_For:"
 #~ msgstr "_Para:"
 
-#~ msgid "_Enabled"
-#~ msgstr "_Activada"
-
 #~ msgid "%s is now offline."
 #~ msgstr "Ahora %s está desconectado."
 
index 140b52a14ed5728de980044086ff61166d175f04..fcdde9f928954993705eea8908ce3ca01b892939 100644 (file)
--- a/po/fa.po
+++ b/po/fa.po
@@ -8,8 +8,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: empathy 2.28.1.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=empathy&keywords=I18N+L10N&component=General\n"
-"POT-Creation-Date: 2012-03-16 10:47+0000\n"
-"PO-Revision-Date: 2012-03-31 15:49+0330\n"
+"POT-Creation-Date: 2012-04-02 11:48+0000\n"
+"PO-Revision-Date: 2012-04-02 18:31+0330\n"
 "Last-Translator: Arash Mousavi <mousavi.arash@gmail.com>\n"
 "Language-Team: Persian\n"
 "MIME-Version: 1.0\n"
@@ -39,7 +39,7 @@ msgstr "گپ در گوگل تاک، فیس بوک، ام‌اس‌ان، و بس
 
 #. Tweak the dialog
 #: ../data/empathy-accounts.desktop.in.in.h:1
-#: ../src/empathy-accounts-dialog.c:2512
+#: ../src/empathy-accounts-dialog.c:2563
 msgid "Messaging and VoIP Accounts"
 msgstr "حساب‌های پیام‌رسانی و VoIP"
 
@@ -79,401 +79,396 @@ msgstr "پوشه‌ی پیش‌فرض بارگیری امپاتی"
 msgid "The default folder to save file transfers in."
 msgstr "پوشه‌ی پیش‌فرض برای ذخیره‌ی پرونده‌های انتقالی."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:9
+#. translators: Automatic tasks which are run once to port/update account settings. Ideally, this shouldn't be exposed to users at all, we just use a gsettings key here as an optimization to only run it only once.
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:10
 msgid "Magic number used to check if sanity cleaning tasks should be run"
 msgstr "عدد جادویی برای بررسی وضعیت پاک‌سازی جهت اجرا"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:10
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:11
 msgid "empathy-sanity-cleaning.c uses this number to check if the cleaning tasks should be executed or not. Users should not change this key manually."
 msgstr "پرونده empathy-sanity-cleaning.c این عدد را بررسی می‌کند تا متوجه شود که پاک‌سازی باید اجرا شود یا خیر. کاربران نباید این کلید را بصورت دستی تغییر دهند."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:11
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:12
 msgid "Show offline contacts"
 msgstr "نمایش آشنا‌های برون‌خط"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:12
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:13
 msgid "Whether to show contacts that are offline in the contact list."
 msgstr "این‌که آشناهایی که برون‌خط هستند در فهرست آشناها دیده شوند یا خیر."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:13
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:14
 msgid "Show avatars"
 msgstr "نشان دادن آواتارها"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:14
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:15
 msgid "Whether to show avatars for contacts in the contact list and chat windows."
 msgstr "این‌که آواتار برای آشناها در فهرست آشنایان و پنجره‌ی گپ نشان داده شوند یا خیر."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:15
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:16
 msgid "Show protocols"
 msgstr "نشان دادن پروتکل‌ها"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:16
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:17
 msgid "Whether to show protocols for contacts in the contact list."
 msgstr "این‌که در فهرست آشناها، پروتکل‌های مورد استفاده برای آشناها هم دیده شوند یا خیر."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:17
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:18
 msgid "Show Balance in contact list"
 msgstr "نمایش اعتبار در فهرست آشناها"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:18
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:19
 msgid "Whether to show account balances in the contact list."
 msgstr "این‌که در فهرست آشناها، اعتبار حساب‌ها نمایش داده شود یا خیر."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:19
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:20
 msgid "Compact contact list"
 msgstr "فهرست فشرده‌ی آشناها"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:20
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:21
 msgid "Whether to show the contact list in compact mode."
 msgstr "این‌که فهرست آشنا‌ها در حالت فشرده نمایش داده شود یا خیر."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:21
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:22
 msgid "Hide main window"
 msgstr "مخفی کردن پنجره‌ی اصلی"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:22
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:23
 msgid "Hide the main window."
 msgstr "مخفی کردن پنجره‌ی اصلی."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:23
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:24
 msgid "Default directory to select an avatar image from"
 msgstr "شاخه‌ی پیش‌فرض برای انتخاب تصویر آواتار از آن"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:24
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:25
 msgid "The last directory that an avatar image was chosen from."
 msgstr "آخرین شاخه‌ای که یک آواتار از آن انتخاب شده بود."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:25
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:26
 msgid "Open new chats in separate windows"
 msgstr "گپ‌های جدید در پنجره‌ی مجزا باز شود"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:26
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:27
 msgid "Always open a separate chat window for new chats."
 msgstr "برای گپ‌های جدید، همیشه یک پنجره‌ی جدید گپ باز شود."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:27
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:28
 msgid "Display incoming events in the status area"
 msgstr "رویدادهای ورودی در منطقه‌ی وضعیت نمایش داده شوند"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:28
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:29
 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:29
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:30
 msgid "The position for the chat window side pane"
 msgstr "مکان قاب کناری پنجره‌ی گپ"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:30
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:31
 msgid "The stored position (in pixels) of the chat window side pane."
 msgstr "مکان ذخیره شده‌ی (به نقطه) قاب کناری پنجره‌ی گپ."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:31
-#| msgid "Show contact list in rooms"
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:32
 msgid "Show contact groups"
 msgstr "نمایش گروه آشناها"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:32
-#| msgid "Whether to show account balances in the contact list."
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:33
 msgid "Whether to show groups in the contact list."
 msgstr "این‌که آیا در فهرست آشناها گروه‌ها نمایش داده شود یا نه."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:33
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:34
 msgid "Contact list sort criterion"
 msgstr "معیارهای مرتب‌سازی فهرست آشناها"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:34
-#| 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."
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:35
 msgid "Which criterion to use when sorting the contact list. Default is to sort by the contact's state with the value \"state\". A value of \"name\" will sort the contact list by name."
 msgstr "کدام معیار برای مرتب کردن فهرست آشناها بکار گرفته شود. پیش فرض بر روی مرتب کردن بر اساس وضعیت آشنا با مقدار «state» است. مقدار «name» فهرست را بر اساس نام آشنا مرتب می‌کند."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:35
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:36
 msgid "Use notification sounds"
 msgstr "به کار انداختن صداهای اخطارها"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:36
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:37
 msgid "Whether to play a sound to notify of events."
 msgstr "این‌که برای اطلاع رویدادها صدایی پخش بشود یا خیر."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:37
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:38
 msgid "Disable sounds when away"
 msgstr "در حالت «غایب»، صداها از کار بیافتند"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:38
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:39
 msgid "Whether to play sound notifications when away or busy."
 msgstr "این‌که هنگام تغییر حالت به «مشغول» یا «غایب» صدایی پخش شود یا خیر."
 
-#: ../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 "Whether to play a sound to notify of incoming messages."
 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 "Whether to play a sound to notify of outgoing messages."
 msgstr "این‌که برای اطلاع از پیام‌های خروجی صدایی پخش شود یا خیر."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:43
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:44
 msgid "Play a sound for new conversations"
 msgstr "برای مکالمه‌های جدید صدایی پخش شود"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:44
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:45
 msgid "Whether to play a sound to notify of new conversations."
 msgstr "این‌که برای اطلاع از گفتگوهای جدید صدایی پخش شود یا خیر."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:45
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:46
 msgid "Play a sound when a contact logs in"
 msgstr "وقتی آشنایی وارد می‌شود صدایی پخش شود"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:46
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:47
 msgid "Whether to play a sound to notify of contacts logging into the network."
 msgstr "این‌که برای اطلاع دادن از ورود آشناها به شبکه، صدایی پخش شود یا خیر."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:47
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:48
 msgid "Play a sound when a contact logs out"
 msgstr "وقتی کاربری خارج می‌شود صدایی پخش شود"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:48
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:49
 msgid "Whether to play a sound to notify of contacts logging out of the network."
 msgstr "این‌که برای اطلاع دادن از خروج آشناها از شبکه، صدای پخش شود یا خیر."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:49
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:50
 msgid "Play a sound when we log in"
 msgstr "وقتی وارد می‌شویم صدایی پخش شود"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:50
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:51
 msgid "Whether to play a sound when logging into a network."
 msgstr "این‌که هنگام ورود به شبکه صدایی پخش شود یا خیر."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:51
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:52
 msgid "Play a sound when we log out"
 msgstr "وقتی خارج می‌شویم صدایی پخش شود"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:52
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:53
 msgid "Whether to play a sound when logging out of a network."
 msgstr "این‌که هنگام خروج از شبکه صدایی پخش شود یا خیر."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:53
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:54
 msgid "Enable popup notifications for new messages"
 msgstr "فعال‌سازی اطلاعیه‌های واشو برای پیام‌های جدید"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:54
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:55
 msgid "Whether to show a popup notification when receiving a new message."
 msgstr "این‌که هنگام دریافت یک پیام جدید، یک اطلاعیه‌ی واشو نمایش داده شود یا خیر."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:55
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:56
 msgid "Disable popup notifications when away"
 msgstr "در حالت «غایب»، اطلاعیه‌های واشو از کار بیافتند"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:56
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:57
 msgid "Whether to show popup notifications when away or busy."
 msgstr "این‌که در حالت «غایب» یا «مشغول»، اطلاعیه‌های واشو نمایش داده شوند یا خیر."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:57
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:58
 msgid "Pop up notifications if the chat isn't focused"
 msgstr "در صورتیکه پنجره‌ی گپ در مرکز توجه نیست، اطلاعیه‌های واشو انجام شود"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:58
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:59
 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:59
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:60
 msgid "Pop up notifications when a contact logs in"
 msgstr "وقتی آشنایی وارد می‌شود، اطلاعیه‌های واشو انجام شود"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:60
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:61
 msgid "Whether to show a popup notification when a contact goes online."
 msgstr "این‌که وقتی آشنایی برخط می‌شود، یک اطلاعیه‌ی واشو نمایش داده شود یا خیر."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:61
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:62
 msgid "Pop up notifications when a contact logs out"
 msgstr "وقتی آشنایی خارج می‌شود، اطلاعیه‌های واشو انجام شود"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:62
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:63
 msgid "Whether to show a popup notification when a contact goes offline."
 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 "Whether to convert smileys into graphical images in conversations."
 msgstr "این‌که در گفتگوها، صورتک‌ها تبدیل به تصویر گرافیکی شوند یا خیر."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:65
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:66
 msgid "Show contact list in rooms"
 msgstr "نمایش فهرست افراد در اتاق‌ها"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:66
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:67
 msgid "Whether to show the contact list in chat rooms."
 msgstr "این‌که فهرست آشناها در اتاق‌های گپ دیده شود یا خیر."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:67
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:68
 msgid "Chat window theme"
 msgstr "تم پنجره‌ی گپ"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:68
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:69
 msgid "The theme that is used to display the conversation in chat windows."
 msgstr "تمی که برای نشان دادن گفتگو در پنجره‌ی چت استفاده می‌شود."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:69
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:70
 msgid "Chat window theme variant"
 msgstr "گزینه‌های تم پنجره‌ی گپ"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:70
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:71
 msgid "The theme variant that is used to display the conversation in chat windows."
 msgstr "گزینه تمی که برای نمایش گفتگو پنجره گپ استفاده می‌شود."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:71
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:72
 msgid "Path of the Adium theme to use"
 msgstr "مسیر تم Adium برای استفاده"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:72
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:73
 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:73
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:74
 msgid "Enable WebKit Developer Tools"
 msgstr "فعال‌سازی ابزارهای توسعه‌ی WebKit"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:74
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:75
 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:75
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:76
 msgid "Inform other users when you are typing to them"
 msgstr "هنگامی که شما در حال تایپ هستید به کاربران دیگر اطلاع داده شود"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:76
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:77
 msgid "Whether to send the 'composing' or 'paused' chat states. Does not currently affect the 'gone' state."
 msgstr "این‌که آیا وضعیت‌های «درحال ارسال» یا «مکث» ارسال شود یا نه. درحال حاضر در وضعیت «غایب» تاثیری ندارد."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:77
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:78
 msgid "Use theme for chat rooms"
 msgstr "استفاده از تم برای اتاق‌های گپ"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:78
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:79
 msgid "Whether to use the theme for chat rooms."
 msgstr "این‌که از تم برای اتاق‌های گپ استفاده شود یا خیر."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:79
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:80
 msgid "Spell checking languages"
 msgstr "زبان‌ها برای غلط‌یابی املایی"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:80
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:81
 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:81
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:82
 msgid "Enable spell checker"
 msgstr "به کار انداختن غلط‌یابی املایی"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:82
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:83
 msgid "Whether to check words typed against the languages you want to check with."
 msgstr "این‌که کلماتی که تایپ می‌کنید براساس زبان‌هایی که می‌خواهید بررسی شود، یا خیر."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:83
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:84
 msgid "Nick completed character"
 msgstr "نویسه‌ی کامل شده لقب"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:84
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:85
 msgid "Character to add after nickname when using nick completion (tab) in group chat."
 msgstr "نویسه‌ای که هنگام کامل کردن اسم (با کلید جهش) در گپ گروهی، بعد از نام مستعار اضافه می‌شود."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:85
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:86
 msgid "Empathy should use the avatar of the contact as the chat window icon"
 msgstr "امپاتی از آواتار برای شمایل پنجره‌ی گپ استفاده کند"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:86
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:87
 msgid "Whether Empathy should use the avatar of the contact as the chat window icon."
 msgstr "این‌که امپاتی از آواتار آشنا برای شمایل پنجره‌ی گپ استفاده کند یا خیر."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:87
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:88
 msgid "Last account selected in Join Room dialog"
 msgstr "آخرین حساب انتخاب شده در محاوره‌ی «پیوستن به اتاق»"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:88
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:89
 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:89
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:90
 msgid "Camera device"
 msgstr "دوربین"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:90
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:91
 msgid "Default camera device to use in video calls, e.g. /dev/video0."
 msgstr "دستگاه دوربین پیش‌فرض جهت استفاده در تماس‌های ویدئویی، مثال dev/video0/."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:91
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:92
 msgid "Camera position"
 msgstr "محل دوربین"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:92
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:93
 msgid "Position the camera preview should be during a call."
 msgstr "موقعیتی که پیش‌نمایش دوربین باید در حین تماس آنجا باشد."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:93
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:94
 msgid "Echo cancellation support"
 msgstr "پشتیبانی از لغو پژواک صدا"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:94
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:95
 msgid "Whether to enable Pulseaudio's echo cancellation filter."
 msgstr "این‌که آیا فیلتر لغو پژواک صدای Pulseaudio فعال شود یا خیر."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:95
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:96
 msgid "Show hint about closing the main window"
 msgstr "هنگام بستن پنجره، راهنمایی نشان داده شود"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:96
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:97
 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:97
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:98
 msgid "Empathy can publish the user's location"
 msgstr "امپاتی می‌تواند مکان کاربر را منتشر کند"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:98
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:99
 msgid "Whether Empathy can publish the user's location to their contacts."
 msgstr "این‌که امپاتی اجازه داشته باشد، مکان کاربر را برای آشنایان منتشر کنند یا خیر."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:99
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:100
 msgid "Empathy can use the network to guess the location"
 msgstr "امپاتی می‌تواند از شبکه برای حدس مکان استفاده کند"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:100
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:101
 msgid "Whether Empathy can use the network to guess the location."
 msgstr "این‌که امپاتی اجازه داشته باشد، از شبکه برای حدس مکان استفاده کند یا خیر."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:101
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:102
 msgid "Empathy can use the cellular network to guess the location"
 msgstr "امپاتی می‌تواند از شبکه‌ی سلولی برای حدس مکان استفاده کند"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:102
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:103
 msgid "Whether Empathy can use the cellular network to guess the location."
 msgstr "این‌که امپاتی اجازه داشته باشد، از شبکه‌ی سلولی برای حدس مکان استفاده کند یا خیر."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:103
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:104
 msgid "Empathy can use the GPS to guess the location"
 msgstr "امپاتی می‌تواند از مکان‌یاب جغرافیایی (جی‌پی‌اس) استفاده کند تا مکان کاربر را حدس بزند"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:104
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:105
 msgid "Whether Empathy can use the GPS to guess the location."
 msgstr "این‌که امپاتی اجازه داشته باشد، از مکان‌یاب جغرافیایی (جی‌پی‌اس) برای حدس مکان استفاده کند یا خیر."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:105
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:106
 msgid "Empathy should reduce the location's accuracy"
 msgstr "امپاتی دقت مکان را کاهش دهد"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:106
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:107
 msgid "Whether Empathy should reduce the location's accuracy for privacy reasons."
 msgstr "این‌که امپاتی دقت مکان را به دلیل حریم خصوصی کاهش دهد یا خیر."
 
@@ -655,7 +650,6 @@ msgid "Connection has been lost"
 msgstr "اتصال از دست رفت"
 
 #: ../libempathy/empathy-utils.c:355
-#| msgid "This resource is already connected to the server"
 msgid "This account is already connected to the server"
 msgstr "این منبع از قبل به کارگزار متصل شده است"
 
@@ -688,7 +682,6 @@ msgid "Your software is too old"
 msgstr "نرم‌افزار شما خیلی قدیمی است"
 
 #: ../libempathy/empathy-utils.c:375
-#| msgid "Interval (seconds)"
 msgid "Internal error"
 msgstr "خطا داخلی"
 
@@ -755,7 +748,6 @@ msgid "in the future"
 msgstr "در آینده"
 
 #: ../libempathy/empathy-keyring.c:75
-#| msgid "Phrase not found"
 msgid "Password not found"
 msgstr "گذرواژه یافت نشد"
 
@@ -774,7 +766,7 @@ msgid "All accounts"
 msgstr "تمام حساب‌ها"
 
 #: ../libempathy-gtk/empathy-account-widget.c:682
-#: ../src/empathy-import-widget.c:336
+#: ../src/empathy-import-widget.c:323
 msgid "Account"
 msgstr "حساب"
 
@@ -799,7 +791,7 @@ msgid "%s:"
 msgstr "%s:"
 
 #: ../libempathy-gtk/empathy-account-widget.c:1398
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:14
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:16
 msgid "Username:"
 msgstr "نام کاربری:"
 
@@ -892,11 +884,11 @@ msgstr "_کارگزار:"
 #: ../libempathy-gtk/empathy-account-widget-generic.ui.h:1
 #: ../libempathy-gtk/empathy-account-widget-groupwise.ui.h:7
 #: ../libempathy-gtk/empathy-account-widget-icq.ui.h:8
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:15
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:17
 #: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:23
 #: ../libempathy-gtk/empathy-account-widget-msn.ui.h:7
 #: ../libempathy-gtk/empathy-account-widget-local-xmpp.ui.h:7
-#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:21
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:22
 #: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:9
 msgid "Advanced"
 msgstr "پیشرفته"
@@ -914,7 +906,7 @@ msgstr "گذرواژه‌ی AIM شما چیست؟"
 #: ../libempathy-gtk/empathy-account-widget-icq.ui.h:11
 #: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:7
 #: ../libempathy-gtk/empathy-account-widget-msn.ui.h:10
-#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:24
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:25
 msgid "Remember Password"
 msgstr "به خاطر سپردن گذرواژه"
 
@@ -958,36 +950,32 @@ msgstr "نام کاربری (UIN) شما در ICQ چیست؟"
 msgid "What is your ICQ password?"
 msgstr "گذرواژه‌ی ICQ شما چیست؟"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.c:206
-#: ../libempathy-gtk/empathy-account-widget-sip.c:239
+#: ../libempathy-gtk/empathy-account-widget-sip.c:207
+#: ../libempathy-gtk/empathy-account-widget-sip.c:240
 msgid "Auto"
 msgstr "خودکار"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.c:209
+#: ../libempathy-gtk/empathy-account-widget-sip.c:210
 msgid "UDP"
 msgstr "UDP"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.c:212
+#: ../libempathy-gtk/empathy-account-widget-sip.c:213
 msgid "TCP"
 msgstr "TCP"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.c:215
+#: ../libempathy-gtk/empathy-account-widget-sip.c:216
 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:244
+#: ../libempathy-gtk/empathy-account-widget-sip.c:245
 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:249
+#: ../libempathy-gtk/empathy-account-widget-sip.c:250
 msgid "Options"
 msgstr "Options"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.c:252
+#: ../libempathy-gtk/empathy-account-widget-sip.c:253
 msgid "None"
 msgstr "هیچ‌کدام"
 
@@ -1016,44 +1004,45 @@ msgstr "افزودن..."
 msgid "Remove"
 msgstr "حذف"
 
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:6
+#. Translators: tooltip on a 'Go Up' button used to sort IRC servers by priority
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:7
 msgid "Up"
 msgstr "بالا"
 
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:7
-#| msgid "Domain"
+#. Translators: tooltip on a 'Go Down' button used to sort IRC servers by priority
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:9
 msgid "Down"
 msgstr "پایین"
 
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:8
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:10
 msgid "Servers"
 msgstr "کارگزارها"
 
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:9
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:11
 msgid "Most IRC servers don't need a password, so if you're not sure, don't enter a password."
 msgstr "بیشتر کارگزارهای IRC احتیاجی به گذرواژه ندارند، بنابراین چناچه مطمئن نیستید، هیچ گذرواژه‌ای وارد نکنید."
 
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:10
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:12
 msgid "Nickname:"
 msgstr "نام مستعار:"
 
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:11
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:13
 msgid "Password:"
 msgstr "گذرواژه:"
 
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:12
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:14
 msgid "Quit message:"
 msgstr "پیغام ترک:"
 
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:13
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:15
 msgid "Real name:"
 msgstr "نام واقعی:"
 
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:16
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:18
 msgid "Which IRC network?"
 msgstr "کدام شبکه IRC؟"
 
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:17
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:19
 msgid "What is your IRC nickname?"
 msgstr "نام مستعار شما در IRC چیست؟"
 
@@ -1241,11 +1230,16 @@ msgstr "نادیده گرفتن خطاهای TLS"
 msgid "Port:"
 msgstr "درگاه:"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:22
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:21
+#| msgid "E-_mail address:"
+msgid "Local IP Address:"
+msgstr "آدرس IP محلی:"
+
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:23
 msgid "What is your SIP login ID?"
 msgstr "شناسه‌ی ورود SIP شما چیست؟"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:23
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:24
 msgid "What is your SIP account password?"
 msgstr "گذرواژه‌ی حساب SIP شما چیست؟"
 
@@ -1431,7 +1425,6 @@ msgstr "خطا در فرستان پیام: %s"
 #. * account to send the message.
 #: ../libempathy-gtk/empathy-chat.c:1577
 #, c-format
-#| msgid "insufficient balance to send message"
 msgid "insufficient balance to send message. <a href='%s'>Top up</a>."
 msgstr "مانده اعتبار برای ارسال پیام کافی نیست. <a href='%s'>بالا بردن</a>."
 
@@ -1475,7 +1468,6 @@ msgstr "سرفصل تنظیم شد: %s"
 
 #: ../libempathy-gtk/empathy-chat.c:1724
 #, c-format
-#| msgid "Topic set to: %s"
 msgid "Topic set by %s to: %s"
 msgstr "سرفصل توسط %s تنظیم شد: %s"
 
@@ -1582,9 +1574,9 @@ msgstr "فرد %s اکنون با %s شناخته می‌شود"
 #: ../libempathy-gtk/empathy-chat.c:2994
 #: ../src/empathy-streamed-media-window.c:1888
 #: ../src/empathy-event-manager.c:1279
-#: ../src/empathy-call-window.c:1502
-#: ../src/empathy-call-window.c:1552
-#: ../src/empathy-call-window.c:2590
+#: ../src/empathy-call-window.c:1466
+#: ../src/empathy-call-window.c:1516
+#: ../src/empathy-call-window.c:2562
 msgid "Disconnected"
 msgstr "قطع شد"
 
@@ -1661,7 +1653,7 @@ msgstr "ویرایش آشناهای مسدود شده"
 
 #. Account and Identifier
 #: ../libempathy-gtk/empathy-contact-blocking-dialog.ui.h:1
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:506
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:503
 #: ../libempathy-gtk/empathy-contact-widget.ui.h:1
 #: ../libempathy-gtk/empathy-individual-widget.c:1474
 #: ../src/empathy-chatrooms-window.ui.h:2
@@ -1733,27 +1725,27 @@ msgid "Decide _Later"
 msgstr "بعدا _تصمیم می‌گیرم"
 
 #. Title
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:499
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:496
 msgid "Search contacts"
 msgstr "جستجو آشناها"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:529
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:526
 msgid "Search: "
 msgstr "جستجو: "
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:587
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:584
 msgid "_Add Contact"
 msgstr "ا_فزودن آشنا"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:605
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:602
 msgid "No contacts found"
 msgstr "هیچ آشنایی پیدا نشد"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:621
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:618
 msgid "Your message introducing yourself:"
 msgstr "پیام شما برای معرفی خودتان:"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:629
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:626
 msgid "Please let me see when you're online. Thanks!"
 msgstr "لطفا اجازه بدهید بدانم چه زمانی برخط هستید. تشکر!"
 
@@ -1912,39 +1904,33 @@ msgstr "ذخیره‌ی آواتار"
 msgid "Unable to save avatar"
 msgstr "ذخیره‌ی آواتار ممکن نیست"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:1444
-#| msgid "Technical Details"
+#: ../libempathy-gtk/empathy-contact-widget.c:1455
 msgid "Personal Details"
 msgstr "جزئیات شخصی"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:1447
+#: ../libempathy-gtk/empathy-contact-widget.c:1458
 #: ../libempathy-gtk/empathy-contact-widget.ui.h:6
 #: ../libempathy-gtk/empathy-individual-widget.ui.h:3
 msgid "Contact Details"
 msgstr "جزئیات آشنا"
 
 #: ../libempathy-gtk/empathy-contactinfo-utils.c:104
-#| msgid "Full name:"
 msgid "Full name"
 msgstr "نام کامل"
 
 #: ../libempathy-gtk/empathy-contactinfo-utils.c:105
-#| msgid "Phone number:"
 msgid "Phone number"
 msgstr "شماره‌ی تلفن"
 
 #: ../libempathy-gtk/empathy-contactinfo-utils.c:106
-#| msgid "E-mail address:"
 msgid "E-mail address"
 msgstr "نشانی پست‌الکترونیکی"
 
 #: ../libempathy-gtk/empathy-contactinfo-utils.c:107
-#| msgid "Website:"
 msgid "Website"
 msgstr "پایگاه‌وب"
 
 #: ../libempathy-gtk/empathy-contactinfo-utils.c:108
-#| msgid "Birthday:"
 msgid "Birthday"
 msgstr "روز تولد"
 
@@ -1966,27 +1952,22 @@ msgid "Away message:"
 msgstr "پیغام ترک:"
 
 #: ../libempathy-gtk/empathy-contactinfo-utils.c:132
-#| msgid "Work"
 msgid "work"
 msgstr "کار"
 
 #: ../libempathy-gtk/empathy-contactinfo-utils.c:133
-#| msgid "Romeo"
 msgid "home"
 msgstr "خانه"
 
 #: ../libempathy-gtk/empathy-contactinfo-utils.c:134
-#| msgid "Mobile"
 msgid "mobile"
 msgstr "تلفن همراه"
 
 #: ../libempathy-gtk/empathy-contactinfo-utils.c:135
-#| msgid "Favorite"
 msgid "voice"
 msgstr "صوتی"
 
 #: ../libempathy-gtk/empathy-contactinfo-utils.c:136
-#| msgid "Preferences"
 msgid "preferred"
 msgstr "ترجیح داده شده"
 
@@ -1995,7 +1976,6 @@ msgid "postal"
 msgstr "کد پستی"
 
 #: ../libempathy-gtk/empathy-contactinfo-utils.c:138
-#| msgid "Appearance"
 msgid "parcel"
 msgstr "بسته"
 
@@ -2037,24 +2017,24 @@ msgstr "نسخه:"
 msgid "Client:"
 msgstr "کارگیر:"
 
-#: ../libempathy-gtk/empathy-groups-widget.c:331
+#: ../libempathy-gtk/empathy-groups-widget.c:327
 msgid "Groups"
 msgstr "گروه‌ها"
 
-#: ../libempathy-gtk/empathy-groups-widget.c:343
+#: ../libempathy-gtk/empathy-groups-widget.c:339
 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:362
+#: ../libempathy-gtk/empathy-groups-widget.c:358
 msgid "_Add Group"
 msgstr "_افزودن گروه"
 
-#: ../libempathy-gtk/empathy-groups-widget.c:397
+#: ../libempathy-gtk/empathy-groups-widget.c:393
 msgctxt "verb in a column header displaying group names"
 msgid "Select"
 msgstr "انتخاب"
 
-#: ../libempathy-gtk/empathy-groups-widget.c:407
+#: ../libempathy-gtk/empathy-groups-widget.c:403
 #: ../src/empathy-roster-window.c:1970
 msgid "Group"
 msgstr "گروه"
@@ -2159,7 +2139,6 @@ msgid "Favorite"
 msgstr "علاقه‌مندی‌ها"
 
 #: ../libempathy-gtk/empathy-individual-menu.c:1264
-#| msgid "telepathy-salut not installed"
 msgid "gnome-contacts not installed"
 msgstr "برنامه‌ی gnome-contacts نصب نشده است"
 
@@ -2333,68 +2312,65 @@ msgstr "دیروز"
 
 #. Translators: A date such as '23 May 2010' (strftime format)
 #: ../libempathy-gtk/empathy-log-window.c:1739
-#| msgctxt ""
-#| "A date such as '23 May 2010', %e is the day, %B the month and %Y the year"
-#| msgid "%e %B %Y"
 msgid "%e %B %Y"
 msgstr "%e %B %Y"
 
-#: ../libempathy-gtk/empathy-log-window.c:1827
-#: ../libempathy-gtk/empathy-log-window.c:3487
+#: ../libempathy-gtk/empathy-log-window.c:1843
+#: ../libempathy-gtk/empathy-log-window.c:3471
 msgid "Anytime"
 msgstr "هرزمانی"
 
-#: ../libempathy-gtk/empathy-log-window.c:1916
-#: ../libempathy-gtk/empathy-log-window.c:2400
+#: ../libempathy-gtk/empathy-log-window.c:1942
+#: ../libempathy-gtk/empathy-log-window.c:2401
 msgid "Anyone"
 msgstr "هرکسی"
 
-#: ../libempathy-gtk/empathy-log-window.c:2713
+#: ../libempathy-gtk/empathy-log-window.c:2714
 msgid "Who"
 msgstr "چه کسی"
 
-#: ../libempathy-gtk/empathy-log-window.c:2922
+#: ../libempathy-gtk/empathy-log-window.c:2923
 msgid "When"
 msgstr "چه زمانی"
 
-#: ../libempathy-gtk/empathy-log-window.c:3038
+#: ../libempathy-gtk/empathy-log-window.c:3039
 msgid "Anything"
 msgstr "هرچیزی"
 
-#: ../libempathy-gtk/empathy-log-window.c:3040
+#: ../libempathy-gtk/empathy-log-window.c:3041
 msgid "Text chats"
 msgstr "گپ‌های متنی"
 
-#: ../libempathy-gtk/empathy-log-window.c:3042
+#: ../libempathy-gtk/empathy-log-window.c:3043
 #: ../src/empathy-preferences.ui.h:25
 msgid "Calls"
 msgstr "تماس‌ها"
 
-#: ../libempathy-gtk/empathy-log-window.c:3047
+#: ../libempathy-gtk/empathy-log-window.c:3048
 msgid "Incoming calls"
 msgstr "تماس‌های ورودی"
 
-#: ../libempathy-gtk/empathy-log-window.c:3048
+#: ../libempathy-gtk/empathy-log-window.c:3049
 msgid "Outgoing calls"
 msgstr "تماس خروجی"
 
-#: ../libempathy-gtk/empathy-log-window.c:3049
+#: ../libempathy-gtk/empathy-log-window.c:3050
 msgid "Missed calls"
 msgstr "تماس‌های از دست رفته"
 
-#: ../libempathy-gtk/empathy-log-window.c:3071
+#: ../libempathy-gtk/empathy-log-window.c:3072
 msgid "What"
 msgstr "کدام"
 
-#: ../libempathy-gtk/empathy-log-window.c:3780
+#: ../libempathy-gtk/empathy-log-window.c:3764
 msgid "Are you sure you want to delete all logs of previous conversations?"
 msgstr "آیا مطمئنید که می‌خواهید تمام وقایع ثبت شده گفتگوهای قبلی را حذف کنید؟"
 
-#: ../libempathy-gtk/empathy-log-window.c:3784
+#: ../libempathy-gtk/empathy-log-window.c:3768
 msgid "Clear All"
 msgstr "پاک کردن همه"
 
-#: ../libempathy-gtk/empathy-log-window.c:3791
+#: ../libempathy-gtk/empathy-log-window.c:3775
 msgid "Delete from:"
 msgstr "پاک کردن از:"
 
@@ -2437,17 +2413,14 @@ msgid "<span size=\"x-large\">Loading...</span>"
 msgstr "<span size=\"x-large\">بارگیری...</span>"
 
 #: ../libempathy-gtk/empathy-new-message-dialog.c:83
-#| msgid "The specified contact is offline"
 msgid "The contact is offline"
 msgstr "آشنا برون‌خط است"
 
 #: ../libempathy-gtk/empathy-new-message-dialog.c:85
-#| msgid "The specified contact is not valid"
 msgid "The specified contact is either invalid or unknown"
 msgstr "آشنای مشخص شده یا نامعتبر است یا ناشناس"
 
 #: ../libempathy-gtk/empathy-new-message-dialog.c:87
-#| msgid "Topic not supported on this conversation"
 msgid "The contact does not support this kind of conversation"
 msgstr "آشنا از این نوع گفتگو پشتیبانی نمی‌کند"
 
@@ -2468,22 +2441,18 @@ msgid "This channel is full"
 msgstr "این کانال پُر است"
 
 #: ../libempathy-gtk/empathy-new-message-dialog.c:101
-#| msgid "You have been invited to join %s"
 msgid "You must be invited to join this channel"
 msgstr "شما باید به این اتاق دعوت شده باشید تا به آن بپیوندید"
 
 #: ../libempathy-gtk/empathy-new-message-dialog.c:103
-#| msgid "Contact disconnected"
 msgid "Can't proceed while disconnected"
 msgstr "نمی‌توان هنگام قطع ارتباط ادامه داد"
 
 #: ../libempathy-gtk/empathy-new-message-dialog.c:105
-#| msgid "permission denied"
 msgid "Permission denied"
 msgstr "مجوز رد شد"
 
 #: ../libempathy-gtk/empathy-new-message-dialog.c:111
-#| msgid "There was an error starting the call"
 msgid "There was an error starting the conversation"
 msgstr "خطایی در هنگام شروع گفتگو رُخ داد"
 
@@ -2499,15 +2468,11 @@ msgstr "گفتگوی جدید"
 
 #. add video button
 #: ../libempathy-gtk/empathy-new-call-dialog.c:223
-#| msgctxt "menu item"
-#| msgid "_Video Call"
 msgid "_Video Call"
 msgstr "تماس _تصویری"
 
 #. add audio button
 #: ../libempathy-gtk/empathy-new-call-dialog.c:233
-#| msgctxt "menu item"
-#| msgid "_Audio Call"
 msgid "_Audio Call"
 msgstr "تماس _صوتی"
 
@@ -2518,7 +2483,6 @@ msgstr "تماس جدید"
 
 #: ../libempathy-gtk/empathy-bad-password-dialog.c:130
 #, c-format
-#| msgid "Authentication failed"
 msgid "Authentification failed for account <b>%s</b>"
 msgstr "تأیید هویتِ حساب <b>%s</b> شکست خورد"
 
@@ -2556,12 +2520,12 @@ msgstr "برای برداشتن این مورد از فهرست علاقه‌م
 msgid "Click to make this status a favorite"
 msgstr "برای افزودن این وضعیت به علاقه‌مندی‌ها کلیک کنید"
 
-#: ../libempathy-gtk/empathy-presence-chooser.c:388
+#: ../libempathy-gtk/empathy-presence-chooser.c:396
 msgid "Set status"
 msgstr "تنظیم وضعیت"
 
 #. Custom messages
-#: ../libempathy-gtk/empathy-presence-chooser.c:1135
+#: ../libempathy-gtk/empathy-presence-chooser.c:1145
 msgid "Custom messages…"
 msgstr "پیام‌های دلخواه..."
 
@@ -2718,7 +2682,6 @@ msgid "Certificate hostname: %s"
 msgstr "گواهی نام میزبان: %s"
 
 #: ../libempathy-gtk/empathy-tls-dialog.c:281
-#| msgid "Continue"
 msgid "C_ontinue"
 msgstr "_ادامه"
 
@@ -2928,22 +2891,18 @@ msgid "Vietnamese"
 msgstr "ویتنامی"
 
 #: ../libempathy-gtk/empathy-calendar-button.c:66
-#| msgctxt "verb in a column header displaying group names"
-#| msgid "Select"
 msgid "Select..."
 msgstr "انتخاب..."
 
 #: ../libempathy-gtk/empathy-calendar-button.c:154
-#| msgctxt "verb in a column header displaying group names"
-#| msgid "Select"
 msgid "_Select"
 msgstr "_انتخاب"
 
-#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:202
+#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:201
 msgid "No error message"
 msgstr "پیغام خطایی وجود ندارد"
 
-#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:275
+#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:274
 msgid "Instant Message (Empathy)"
 msgstr "پیام فوری (امپاتی)"
 
@@ -3009,65 +2968,64 @@ msgstr "تغییرات ذخیره نشده برای حساب %s شما وجود
 msgid "Your new account has not been saved yet."
 msgstr "حساب جدید شما هنوز ذخیره نشده است."
 
-#: ../src/empathy-accounts-dialog.c:381
+#: ../src/empathy-accounts-dialog.c:405
 #: ../src/empathy-streamed-media-window.c:759
-#: ../src/empathy-call-window.c:1289
+#: ../src/empathy-call-window.c:1267
 msgid "Connecting…"
 msgstr "در حال اتصال..."
 
-#: ../src/empathy-accounts-dialog.c:422
+#: ../src/empathy-accounts-dialog.c:446
 #, c-format
 msgid "Offline — %s"
 msgstr "برون‌خط — %s"
 
-#: ../src/empathy-accounts-dialog.c:434
+#: ../src/empathy-accounts-dialog.c:458
 #, c-format
 msgid "Disconnected — %s"
 msgstr "قطع شد — %s"
 
-#: ../src/empathy-accounts-dialog.c:445
+#: ../src/empathy-accounts-dialog.c:469
 msgid "Offline — No Network Connection"
 msgstr "برون‌خط — هیچ اتصال شبکه‌ای نیست"
 
-#: ../src/empathy-accounts-dialog.c:452
+#: ../src/empathy-accounts-dialog.c:476
 msgid "Unknown Status"
 msgstr "وضعیت ناشناخته"
 
-#: ../src/empathy-accounts-dialog.c:469
+#: ../src/empathy-accounts-dialog.c:493
 msgid "This account has been disabled because it relies on an old, unsupported backend. Please install telepathy-haze and restart your session to migrate the account."
 msgstr "این حساب به دلیل استفاده از یک پسانه‌ی قدیمی و پشتیبانی نشده غیرفعال شده است. لطفا telepathy-haze را نصب و نشست را مجددا راه‌اندازی کنید تا حساب منتقل شود."
 
-#: ../src/empathy-accounts-dialog.c:479
+#: ../src/empathy-accounts-dialog.c:503
 msgid "Offline — Account Disabled"
 msgstr "برون‌خط — حساب غیرفعال شد"
 
-#: ../src/empathy-accounts-dialog.c:585
-#| msgid "Connection has been refused"
+#: ../src/empathy-accounts-dialog.c:609
 msgid "Edit Connection Parameters"
 msgstr "ویرایش پارامترهای اتصال"
 
-#: ../src/empathy-accounts-dialog.c:750
+#: ../src/empathy-accounts-dialog.c:774
 msgid "Failed to retrieve your personal information from the server."
 msgstr "دریافت اطلاعات شخصی شما از کارگزار شکست خورد."
 
-#: ../src/empathy-accounts-dialog.c:756
+#: ../src/empathy-accounts-dialog.c:780
 msgid "Go online to edit your personal information."
 msgstr "برای ویرایش اطلاعات شخصی برخط شوید."
 
-#: ../src/empathy-accounts-dialog.c:843
+#: ../src/empathy-accounts-dialog.c:867
 msgid "_Edit Connection Parameters..."
 msgstr "_ویرایش پارامترهای اتصال"
 
-#: ../src/empathy-accounts-dialog.c:1339
+#: ../src/empathy-accounts-dialog.c:1363
 #, c-format
 msgid "Do you want to remove %s from your computer?"
 msgstr "آیا می‌خواهید %s را از رایانه‌تان حذف کنید؟"
 
-#: ../src/empathy-accounts-dialog.c:1343
+#: ../src/empathy-accounts-dialog.c:1367
 msgid "This will not remove your account on the server."
 msgstr "این کار حساب شما بر روی کارگزار را پاک نخواهد کرد."
 
-#: ../src/empathy-accounts-dialog.c:1579
+#: ../src/empathy-accounts-dialog.c:1604
 msgid ""
 "You are about to select another account, which will discard\n"
 "your changes. Are you sure you want to proceed?"
@@ -3075,25 +3033,27 @@ msgstr ""
 "شما درحال انتخاب حساب دیگری هستید، که این کار تغییرات شما را نادیده\n"
 "خواهد گرفت. آیا مطمئنید که میخواهید ادامه دهید؟"
 
-#. Menu items: to enabled/disable the account
-#: ../src/empathy-accounts-dialog.c:1755
-msgid "_Enable"
-msgstr "_فعال‌کردن"
+#. Menu item: to enabled/disable the account
+#: ../src/empathy-accounts-dialog.c:1795
+#| msgid "_Enable"
+msgid "_Enabled"
+msgstr "_فعال شده"
 
-#: ../src/empathy-accounts-dialog.c:1756
-msgid "_Disable"
-msgstr "_غیرفعال‌کردن"
+#. Menu item: Rename
+#: ../src/empathy-accounts-dialog.c:1818
+#| msgid "Real name:"
+msgid "Rename"
+msgstr "تغییر نام"
 
-#: ../src/empathy-accounts-dialog.c:2184
+#: ../src/empathy-accounts-dialog.c:2234
 msgid "_Skip"
 msgstr "_نادیده گرفتن"
 
-#: ../src/empathy-accounts-dialog.c:2188
-#| msgid "Connected"
+#: ../src/empathy-accounts-dialog.c:2238
 msgid "_Connect"
 msgstr "_اتصال"
 
-#: ../src/empathy-accounts-dialog.c:2365
+#: ../src/empathy-accounts-dialog.c:2415
 msgid ""
 "You are about to close the window, which will discard\n"
 "your changes. Are you sure you want to proceed?"
@@ -3114,7 +3074,6 @@ msgid "To add a new account, you first have to install a backend for each protoc
 msgstr "برای افزودن حساب جدید، اول از همه باید پسانه‌ی لازم برای هر قراردادی را که می‌خواهید استفاده کنید، نصب کنید."
 
 #: ../src/empathy-accounts-dialog.ui.h:6
-#| msgid "No protocol installed"
 msgid "No protocol backends installed"
 msgstr "هیچ پسانه‌ی قراردادی نصب نشده است"
 
@@ -3175,33 +3134,33 @@ 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:1211
-#: ../src/empathy-call-window.c:1889
+#: ../src/empathy-call-window.c:1861
 #, c-format
 msgid "Call with %s"
 msgstr "تماس با %s"
 
 #: ../src/empathy-streamed-media-window.c:1444
-#: ../src/empathy-call-window.c:2133
+#: ../src/empathy-call-window.c:2105
 msgid "The IP address as seen by the machine"
 msgstr "نشانی IP همانطور که توسط ماشین دیده می‌شود"
 
 #: ../src/empathy-streamed-media-window.c:1446
-#: ../src/empathy-call-window.c:2135
+#: ../src/empathy-call-window.c:2107
 msgid "The IP address as seen by a server on the Internet"
 msgstr "آدرس IP همانطور که توسط کارگزار روی اینترنت دیده می‌شود"
 
 #: ../src/empathy-streamed-media-window.c:1448
-#: ../src/empathy-call-window.c:2137
+#: ../src/empathy-call-window.c:2109
 msgid "The IP address of the peer as seen by the other side"
 msgstr "آدرس IP مربوط به peer همانطور که توسط طرف مقابل دیده می‌شود"
 
 #: ../src/empathy-streamed-media-window.c:1450
-#: ../src/empathy-call-window.c:2139
+#: ../src/empathy-call-window.c:2111
 msgid "The IP address of a relay server"
 msgstr "آدرس IP مربوط به سرور بازپخش"
 
 #: ../src/empathy-streamed-media-window.c:1452
-#: ../src/empathy-call-window.c:2141
+#: ../src/empathy-call-window.c:2113
 msgid "The IP address of the multicast group"
 msgstr "آدرس IP مربوط به گروه چندگانه"
 
@@ -3209,7 +3168,6 @@ msgstr "آدرس IP مربوط به گروه چندگانه"
 #: ../src/empathy-streamed-media-window.c:1840
 #: ../src/empathy-streamed-media-window.c:1843
 #: ../src/empathy-streamed-media-window.c:1846
-#| msgid "Unknown"
 msgctxt "codec"
 msgid "Unknown"
 msgstr "ناشناس"
@@ -3221,66 +3179,66 @@ msgid "Connected — %d:%02dm"
 msgstr "متصل شد — %Id: %I02dm"
 
 #: ../src/empathy-streamed-media-window.c:2199
-#: ../src/empathy-call-window.c:2992
+#: ../src/empathy-call-window.c:2964
 msgid "Technical Details"
 msgstr "جزئیات فنی"
 
 #: ../src/empathy-streamed-media-window.c:2237
-#: ../src/empathy-call-window.c:3031
+#: ../src/empathy-call-window.c:3003
 #, 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:2242
-#: ../src/empathy-call-window.c:3036
+#: ../src/empathy-call-window.c:3008
 #, 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:2248
-#: ../src/empathy-call-window.c:3042
+#: ../src/empathy-call-window.c:3014
 #, 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:2254
-#: ../src/empathy-call-window.c:3048
+#: ../src/empathy-call-window.c:3020
 msgid "There was a failure on the network"
 msgstr "یک خرابی در شبکه بوجود آمده بود"
 
 #: ../src/empathy-streamed-media-window.c:2258
-#: ../src/empathy-call-window.c:3052
+#: ../src/empathy-call-window.c:3024
 msgid "The audio formats necessary for this call are not installed on your computer"
 msgstr "قالب‌های صوتی لازم برای برقراری این تماس روی رایانه‌ی شما نصب نشده‌اند"
 
 #: ../src/empathy-streamed-media-window.c:2261
-#: ../src/empathy-call-window.c:3055
+#: ../src/empathy-call-window.c:3027
 msgid "The video formats necessary for this call are not installed on your computer"
 msgstr "قالب‌های ویدئویی لازم برای برقراری این تماس روی رایانه‌ی شما نصب نشده‌اند"
 
 #: ../src/empathy-streamed-media-window.c:2271
-#: ../src/empathy-call-window.c:3067
+#: ../src/empathy-call-window.c:3039
 #, 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-streamed-media-window.c:2279
-#: ../src/empathy-call-window.c:3076
+#: ../src/empathy-call-window.c:3048
 msgid "There was a failure in the call engine"
 msgstr "یک خرابی در موتور تماس بوجود آمده بود"
 
 #: ../src/empathy-streamed-media-window.c:2282
-#: ../src/empathy-call-window.c:3079
+#: ../src/empathy-call-window.c:3051
 msgid "The end of the stream was reached"
 msgstr "به انتهای جریان رسیدیم"
 
 #: ../src/empathy-streamed-media-window.c:2322
-#: ../src/empathy-call-window.c:3119
+#: ../src/empathy-call-window.c:3091
 msgid "Can't establish audio stream"
 msgstr "نمی‌توان جریان صوتی را برقرار کرد"
 
 #: ../src/empathy-streamed-media-window.c:2332
-#: ../src/empathy-call-window.c:3129
+#: ../src/empathy-call-window.c:3101
 msgid "Can't establish video stream"
 msgstr "نمی‌توان جریان ویدئویی را برقرار کرد"
 
@@ -3395,10 +3353,10 @@ msgstr "رمزنگاری کُدک:"
 
 #: ../src/empathy-call-window.ui.h:28
 #: ../src/empathy-streamed-media-window.ui.h:21
-#: ../src/empathy-call-window.c:2542
-#: ../src/empathy-call-window.c:2543
-#: ../src/empathy-call-window.c:2544
-#: ../src/empathy-call-window.c:2545
+#: ../src/empathy-call-window.c:2514
+#: ../src/empathy-call-window.c:2515
+#: ../src/empathy-call-window.c:2516
+#: ../src/empathy-call-window.c:2517
 msgid "Unknown"
 msgstr "ناشناخته"
 
@@ -3424,7 +3382,6 @@ msgid "Audio"
 msgstr "صدا"
 
 #: ../src/empathy-chat-window.c:289
-#| msgid "Hide the main window."
 msgid "Close this window?"
 msgstr "بستن این پنجره؟"
 
@@ -3442,7 +3399,6 @@ msgstr[1] "بستن این پنجره باعث ترک %Iu اتاق گپ می‌
 
 #: ../src/empathy-chat-window.c:314
 #, c-format
-#| msgid "Level "
 msgid "Leave %s?"
 msgstr "ترک %s؟"
 
@@ -3455,7 +3411,6 @@ msgid "Close window"
 msgstr "بستن پنجره"
 
 #: ../src/empathy-chat-window.c:334
-#| msgid "Level "
 msgid "Leave room"
 msgstr "ترک اتاق"
 
@@ -3585,7 +3540,7 @@ msgid "Incoming video call"
 msgstr "در حال دریافت تماس ویدئویی"
 
 #: ../src/empathy-event-manager.c:522
-#: ../src/empathy-call-window.c:1519
+#: ../src/empathy-call-window.c:1483
 msgid "Incoming call"
 msgstr "در حال دریافت تماس"
 
@@ -3602,7 +3557,7 @@ msgstr "فرد %s با شما تماس گرفته است، آیا جواب می
 #: ../src/empathy-event-manager.c:530
 #: ../src/empathy-event-manager.c:731
 #: ../src/empathy-event-manager.c:764
-#: ../src/empathy-call-window.c:1525
+#: ../src/empathy-call-window.c:1489
 #, c-format
 msgid "Incoming call from %s"
 msgstr "در حال دریافت تماس از %s"
@@ -3622,7 +3577,7 @@ msgstr "_پاسخگویی با ویدئو"
 
 #: ../src/empathy-event-manager.c:731
 #: ../src/empathy-event-manager.c:764
-#: ../src/empathy-call-window.c:1525
+#: ../src/empathy-call-window.c:1489
 #, c-format
 msgid "Incoming video call from %s"
 msgstr "ویدئو ورودی از %s"
@@ -3799,7 +3754,6 @@ msgid "Remove completed, canceled and failed file transfers from the list"
 msgstr "انتقال‌های کامل شده، لغو شده و خراب شده از فهرست حذف شوند"
 
 #: ../src/empathy-import-dialog.c:76
-#| msgid "Import"
 msgid "_Import"
 msgstr "_وارد کردن"
 
@@ -3812,15 +3766,15 @@ msgid "Import Accounts"
 msgstr "وارد کردن حساب‌ها"
 
 #. Translators: this is the header of a treeview column
-#: ../src/empathy-import-widget.c:316
+#: ../src/empathy-import-widget.c:303
 msgid "Import"
 msgstr "وارد کردن"
 
-#: ../src/empathy-import-widget.c:325
+#: ../src/empathy-import-widget.c:312
 msgid "Protocol"
 msgstr "قرارداد"
 
-#: ../src/empathy-import-widget.c:349
+#: ../src/empathy-import-widget.c:336
 msgid "Source"
 msgstr "منبع"
 
@@ -3897,7 +3851,6 @@ msgid "Contact List"
 msgstr "فهرست آشناها"
 
 #: ../src/empathy-roster-window.ui.h:1
-#| msgid "_Accounts"
 msgid "Account settings"
 msgstr "تنظیمات حساب"
 
@@ -3997,7 +3950,7 @@ 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:637
+#: ../src/empathy-new-chatroom-dialog.c:636
 #, c-format
 msgid ""
 "%s\n"
@@ -4010,21 +3963,21 @@ msgstr ""
 "نیاز به گذرواژه: %s\n"
 "اعضا: %s"
 
+#: ../src/empathy-new-chatroom-dialog.c:638
 #: ../src/empathy-new-chatroom-dialog.c:639
-#: ../src/empathy-new-chatroom-dialog.c:640
 msgid "Yes"
 msgstr "بله"
 
+#: ../src/empathy-new-chatroom-dialog.c:638
 #: ../src/empathy-new-chatroom-dialog.c:639
-#: ../src/empathy-new-chatroom-dialog.c:640
 msgid "No"
 msgstr "خیر"
 
-#: ../src/empathy-new-chatroom-dialog.c:668
+#: ../src/empathy-new-chatroom-dialog.c:666
 msgid "Could not start room listing"
 msgstr "شروع به فهرست کردن اتاق ممکن نبود"
 
-#: ../src/empathy-new-chatroom-dialog.c:678
+#: ../src/empathy-new-chatroom-dialog.c:676
 msgid "Could not stop room listing"
 msgstr "توقف فهرست کردن اتاق امکان پذیر نشد"
 
@@ -4065,7 +4018,6 @@ msgid "New conversation"
 msgstr "گفتگوی جدید"
 
 #: ../src/empathy-preferences.c:169
-#| msgid "Contact goes online"
 msgid "Contact comes online"
 msgstr "آشنا برخط می‌شود"
 
@@ -4086,46 +4038,46 @@ msgid "Language"
 msgstr "زبان"
 
 #. translators: Contact name for the chat theme preview
-#: ../src/empathy-preferences.c:726
+#: ../src/empathy-preferences.c:724
 msgid "Juliet"
 msgstr "ژولیت"
 
 #. translators: Contact name for the chat theme preview
-#: ../src/empathy-preferences.c:733
+#: ../src/empathy-preferences.c:731
 msgid "Romeo"
 msgstr "رومئو"
 
 #. translators: Quote from Romeo & Julier, for chat theme preview
-#: ../src/empathy-preferences.c:739
+#: ../src/empathy-preferences.c:737
 msgid "O Romeo, Romeo, wherefore art thou Romeo?"
 msgstr "چه کار داری می‌کنی؟"
 
 #. translators: Quote from Romeo & Julier, for chat theme preview
-#: ../src/empathy-preferences.c:743
+#: ../src/empathy-preferences.c:741
 msgid "Deny thy father and refuse thy name;"
 msgstr "مِی می‌زنم."
 
 #. translators: Quote from Romeo & Julier, for chat theme preview
-#: ../src/empathy-preferences.c:746
+#: ../src/empathy-preferences.c:744
 msgid "Or if thou wilt not, be but sworn my love"
 msgstr "مِی می‌زنی که چی؟"
 
 #. translators: Quote from Romeo & Julier, for chat theme preview
-#: ../src/empathy-preferences.c:749
+#: ../src/empathy-preferences.c:747
 msgid "And I'll no longer be a Capulet."
 msgstr "که فراموش کنم."
 
 #. translators: Quote from Romeo & Julier, for chat theme preview
-#: ../src/empathy-preferences.c:752
+#: ../src/empathy-preferences.c:750
 msgid "Shall I hear more, or shall I speak at this?"
 msgstr "چی رو فراموش کنی؟"
 
 #. translators: Quote from Romeo & Julier, for chat theme preview
-#: ../src/empathy-preferences.c:755
+#: ../src/empathy-preferences.c:753
 msgid "Juliet has disconnected"
 msgstr "ژولیت قطع شده است"
 
-#: ../src/empathy-preferences.c:1159
+#: ../src/empathy-preferences.c:1157
 msgid "Preferences"
 msgstr "ترجیحات"
 
@@ -4350,12 +4302,6 @@ msgstr "پیوند Pastebin"
 msgid "Pastebin response"
 msgstr "پاسخ Pastebin"
 
-#: ../src/empathy-debug-window.c:1680
-#, c-format
-#| msgid "%s:"
-msgid "%s"
-msgstr "%s"
-
 #: ../src/empathy-debug-window.c:1683
 msgid "Data too large for a single paste. Please save logs to file."
 msgstr "داده‌ها برای یک ارسال بسیار بزرگ است. لطفا رویدادها را بر روی یک پرونده ذخیره کنید."
@@ -4474,39 +4420,39 @@ msgstr "اشکال‌زدای امپاتی"
 msgid "- Empathy Chat Client"
 msgstr "- کارگیر گپ امپاتی"
 
-#: ../src/empathy-notifications-approver.c:189
+#: ../src/empathy-notifications-approver.c:190
 msgid "Respond"
 msgstr "پاسخ"
 
-#: ../src/empathy-notifications-approver.c:203
-#: ../src/empathy-call-window.c:1529
+#: ../src/empathy-notifications-approver.c:204
+#: ../src/empathy-call-window.c:1493
 msgid "Reject"
 msgstr "رَد"
 
-#: ../src/empathy-notifications-approver.c:208
-#: ../src/empathy-notifications-approver.c:213
-#: ../src/empathy-call-window.c:1530
+#: ../src/empathy-notifications-approver.c:209
+#: ../src/empathy-notifications-approver.c:214
+#: ../src/empathy-call-window.c:1494
 msgid "Answer"
 msgstr "پاسخ"
 
-#: ../src/empathy-notifications-approver.c:213
+#: ../src/empathy-notifications-approver.c:214
 msgid "Answer with video"
 msgstr "پاسخگویی با ویدئو"
 
-#: ../src/empathy-notifications-approver.c:221
-#: ../src/empathy-notifications-approver.c:231
+#: ../src/empathy-notifications-approver.c:222
+#: ../src/empathy-notifications-approver.c:232
 msgid "Decline"
 msgstr "چشم پوشی"
 
-#: ../src/empathy-notifications-approver.c:225
-#: ../src/empathy-notifications-approver.c:236
+#: ../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:246
+#: ../src/empathy-notifications-approver.c:247
 msgid "Provide"
 msgstr "فراهم کردن"
 
@@ -4517,40 +4463,39 @@ msgstr "لحظاتی پیش %s سعی کرد تا با شما تماس بگیر
 
 #. Translators: this is an "Info" label. It should be as short
 #. * as possible.
+#: ../src/empathy-call-window.c:1124
 #: ../src/empathy-call-window.c:1140
-#: ../src/empathy-call-window.c:1162
 msgid "i"
 msgstr "ر"
 
-#: ../src/empathy-call-window.c:2888
+#: ../src/empathy-call-window.c:2860
 msgid "On hold"
 msgstr "نگه داشتن پشت خط"
 
-#: ../src/empathy-call-window.c:2891
+#: ../src/empathy-call-window.c:2863
 msgid "Mute"
 msgstr "بی‌صدا"
 
-#: ../src/empathy-call-window.c:2893
+#: ../src/empathy-call-window.c:2865
 msgid "Duration"
 msgstr "مدت"
 
 #. Translators: 'status - minutes:seconds' the caller has been connected
-#: ../src/empathy-call-window.c:2896
+#: ../src/empathy-call-window.c:2868
 #, c-format
 msgid "%s — %d:%02dm"
 msgstr "%s — %Id:%I02dm"
 
-#: ../src/empathy-call-window.c:3166
+#: ../src/empathy-call-window.c:3138
 #, c-format
 msgid "Your current balance is %s."
 msgstr "اعتبار فعلی شما %s."
 
-#: ../src/empathy-call-window.c:3170
+#: ../src/empathy-call-window.c:3142
 msgid "Sorry, you don’t have enough credit for that call."
 msgstr "متاسفم، شما برای این تماس اعتبار کافی ندارید."
 
-#: ../src/empathy-call-window.c:3172
-#| msgid "Top Up..."
+#: ../src/empathy-call-window.c:3144
 msgid "Top Up"
 msgstr "بالا بردن"
 
@@ -4563,7 +4508,6 @@ msgid "What kind of chat account do you have?"
 msgstr "چه نوع حساب گپی دارید؟"
 
 #: ../libempathy-gtk/empathy-new-account-dialog.c:166
-#| msgid "New account"
 msgid "Adding new account"
 msgstr "اضافه کردن حساب جدید"
 
@@ -4572,11 +4516,6 @@ msgid "People nearby"
 msgstr "افراد دور و بر"
 
 #: ../libempathy-gtk/empathy-local-xmpp-assistant-widget.c:150
-#| 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"
 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."
 msgstr "امپاتی می‌تواند به طور خودکار افرادی که بر روی شبکه مشابه هستند را پیدا کند تا با آن‌ها گپ بزنید. اگر می‌خواهید از این قابلیت استفاده کنید، بررسی کنید که جزئیات زیر درست باشند."
 
@@ -4584,244 +4523,5 @@ msgstr "امپاتی می‌تواند به طور خودکار افرادی ک
 msgid "You can change these details later or disable this feature by choosing <span style=\"italic\">Edit → Accounts</span> in the Contact List."
 msgstr "شما می‌توانید این جزئیات را بعدا تغییر دهید یا این امکان را با انتخاب <span style=\"italic\">ویرایش ‍⃪    حساب‌ها</span> در فهرست آشناها غیرفعال کنید."
 
-#~ msgid "Call volume"
-#~ msgstr "بلندی صدای تماس"
-
-#~ msgid "Call volume, as a percentage."
-#~ msgstr "بلندی صدای تماس، بر اساس درصد"
-
-#~ msgid "Empathy has migrated butterfly logs"
-#~ msgstr "امپاتی ثبت وقایع پروانه‌ای (butterfly) را منتقل کرده است"
-
-#~ msgid "Whether Empathy has migrated butterfly logs."
-#~ msgstr "این‌که امپاتی وقایع پروانه‌ای را منتقل کرده است یا خیر."
-
-#~ msgid "Socket type not supported"
-#~ msgstr "نوع سوکت پشتیبانی نمی‌شود"
-
-#~ msgid "My Web Accounts"
-#~ msgstr "حساب‌های وب من"
-
-#~ msgid "The account %s is edited via %s."
-#~ msgstr "حساب %s از طریقِ %s ویرایش شد."
-
-#~ msgid "The account %s cannot be edited in Empathy."
-#~ msgstr "حساب %s از طریق امپاتی قابل ویرایش نیست."
-
-#~ msgid "Launch My Web Accounts"
-#~ msgstr "اجرای حساب‌های وب من"
-
-#~ msgid "Edit %s"
-#~ msgstr "ویرایش %s"
-
-#~ msgid "Ca_ncel"
-#~ msgstr "_لغو"
-
-#~ msgid "Personal Information"
-#~ msgstr "اطلاعات شخصی"
-
-#~ msgid "Ungrouped"
-#~ msgstr "گروه‌بندی لغو شد"
-
-#~ msgid "Favorite People"
-#~ msgstr "افراد موردپسند"
-#~ msgctxt "Edit contact (contextual menu)"
-
-#~ msgid "_Edit"
-#~ msgstr "_ویرایش"
-
-#~ msgid "Select a contact"
-#~ msgstr "آشنایی انتخاب کنید"
-
-#~ msgid "Select contacts to link"
-#~ msgstr "آشناها را انتخاب کنید تا پیوند داده شود"
-
-#~ msgid "New contact preview"
-#~ msgstr "پیش‌نمایش آشنای جدید"
-
-#~ msgid "Contacts selected in the list on the left will be linked together."
-#~ msgstr "آشناهای انتخاب شده در فهرست سمت چپ با یکدیگر پیوند داده می‌شوند."
-#~ msgctxt "Link individual (contextual menu)"
-
-#~ msgid "_Link Contacts…"
-#~ msgstr "_پیوند آشناها..."
-
-#~ msgid "Link Contacts"
-#~ msgstr "پیوند آشنایان"
-#~ msgctxt "Unlink individual (button)"
-
-#~ msgid "_Unlink…"
-#~ msgstr "_لغو پیوند..."
-
-#~ msgid ""
-#~ "Completely split the displayed linked contacts into the separate contacts."
-#~ msgstr ""
-#~ "جدا کردن کامل آشناهای پیوند شده‌ی نمایش داده شده به آشناهای جدا از هم."
-
-#~ msgid "_Link"
-#~ msgstr "_پیوند"
-
-#~ msgid "Unlink linked contacts '%s'?"
-#~ msgstr "لغو پیوند آشناهای پیوند شده «%s»؟"
-
-#~ msgid ""
-#~ "Are you sure you want to unlink these linked contacts? This will "
-#~ "completely split the linked contacts into separate contacts."
-#~ msgstr ""
-#~ "آیا مطمئن هستید که می‌خواهید این آشناهای پیوند شده را لغو پیوند کنید؟ این "
-#~ "کار باعث می‌شود تا آشناهای پیوند شده کاملا از هم جدا شوند."
-#~ msgctxt "Unlink individual (button)"
-
-#~ msgid "_Unlink"
-#~ msgstr "_لغو پیوند"
-
-#~ msgid "Contact ID:"
-#~ msgstr "شناسه‌ی آشنا:"
-
-#~ msgid "C_hat"
-#~ msgstr "_گپ"
-
-#~ msgid "Send _Video"
-#~ msgstr "فرستادن _ویدئو"
-
-#~ msgid "C_all"
-#~ msgstr "_تماس"
-
-#~ msgid "Set your presence and current status"
-#~ msgstr "حضور و وضعیت جاری خود را تنظیم کنید"
-
-#~ msgid "The selected contact cannot receive files."
-#~ msgstr "آشنای گزیده شده نمی‌تواند پرونده دریافت کند."
-
-#~ msgid "The selected contact is offline."
-#~ msgstr "آشنای انتخاب شده برون‌خط است."
-
-#~ msgid "There was an error while importing the accounts."
-#~ msgstr "هنگام وارد کردن حساب‌ها خطایی به رخ داد."
-
-#~ msgid "There was an error while parsing the account details."
-#~ msgstr "هنگام تجزیه کردن جزئیات حساب خطایی رخ داد."
-
-#~ msgid "There was an error while creating the account."
-#~ msgstr "خطایی در هنگام ایجاد حساب رخ داد."
-
-#~ msgid "There was an error."
-#~ msgstr "خطایی وجود داشت."
-
-#~ msgid "The error message was: %s"
-#~ msgstr "خطا این بود: %s"
-
-#~ 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 ""
-#~ "می‌توانید جزئیات حساب‌های خود را دوباره وارد کنید یا از این دستیار خارج شده "
-#~ "و بعدا حساب‌های خود را از منوی ویرایش بافزایید."
-
-#~ msgid "An error occurred"
-#~ msgstr "خطایی رخ داد"
-
-#~ msgid "Do you have any other chat accounts you want to set up?"
-#~ msgstr "آیا حساب‌های گپ دیگری هم دارید که بخواهید برپا کنید؟"
-
-#~ msgid "Enter your account details"
-#~ msgstr "جزئیات حساب خود را وارد کنید"
-
-#~ msgid "What kind of chat account do you want to create?"
-#~ msgstr "چه نوع حساب گپی می‌خواهید ایجاد کنید؟"
-
-#~ msgid "Do you want to create other chat accounts?"
-#~ msgstr "آیا می‌خواهید حساب‌های گپ دیگری هم بسازید؟"
-
-#~ msgid "Enter the details for the new account"
-#~ msgstr "جزئیات حساب جدید را وارد کنید"
-
-#~ 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 ""
-#~ "با امپاتی می‌توانید با دیگران به صورت بر خط گپ بزنید و با دوستان و هم "
-#~ "دوره‌ای‌هایی که از گوگل‌تاک، AIM، ویندوز لایو و خیلی برنامه‌های گپ دیگر "
-#~ "استفاده می‌کنند ارتباط داشته باشید. با یک میکروفون یا یک وب‌کم می‌توانید صدا "
-#~ "و تصویر ویدئویی هم داشته باشید."
-
-#~ msgid "Do you have an account you've been using with another chat program?"
-#~ msgstr "آیا حسابی دارید که با برنامه‌ی گپ دیگری از آن استفاده می‌کرده‌اید؟"
-
-#~ msgid "Yes, import my account details from "
-#~ msgstr "بله، جزئیات حساب مرا وارد کن از "
-
-#~ msgid "Yes, I'll enter my account details now"
-#~ msgstr "بله، جزئیات حسابم را هم اکنون وارد خواهم کرد"
-
-#~ msgid "No, I want a new account"
-#~ msgstr "خیر، حساب جدیدی می‌خواهم"
-
-#~ msgid "No, I just want to see people online nearby for now"
-#~ msgstr "خیر، الان فقط می‌خواهم افراد برخطِ دور و بر را ببینم"
-
-#~ msgid "Select the accounts you want to import:"
-#~ msgstr "حساب‌هایی که می‌خواهید وارد کنید را انتخاب کنید:"
-
-#~ msgid "No, that's all for now"
-#~ msgstr "خیر، فعلا کافیه"
-
-#~ msgid "Edit->Accounts"
-#~ msgstr "ویرایش->حساب‌ها"
-
-#~ msgid "I do _not want to enable this feature for now"
-#~ msgstr "_نمی‌خواهم فعلا این قابلیت را فعلا فعال کنم"
-
-#~ 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 را نصب کنید و در محاوره‌ی حساب‌ها یک حسابِ «افراد دور و "
-#~ "بر» ایجاد کنید"
-
-#~ msgid "Messaging and VoIP Accounts Assistant"
-#~ msgstr "دستیار حساب‌های پیام‌رسان و VoIP"
-
-#~ msgid "Welcome to Empathy"
-#~ msgstr "به امپاتی خوش آمدید"
-
-#~ msgid "Import your existing accounts"
-#~ msgstr "وارد کردن حساب‌های موجود شما"
-
-#~ msgid "Please enter personal details"
-#~ msgstr "لطفاً جزئیات شخصی را وارد کنید"
-
-#~ msgid ""
-#~ "You are about to create a new account, which will discard\n"
-#~ "your changes. Are you sure you want to proceed?"
-#~ msgstr ""
-#~ "شما درحال ایجاد یک حساب جدید هستید، این کار تغییرات شما را نادیده\n"
-#~ "خواهد گرفت. آیا مطمئنید که می‌خواهید ادامه دهید؟"
-
-#~ msgid "Protocol:"
-#~ 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 "_Personal Information"
-#~ msgstr "_اطلاعات شخصی"
+#~ msgid "_Disable"
+#~ msgstr "_غیرفعال‌کردن"
index fa25b405a2b3c21c2c296d0c52ae249f59bd1e19..1c10649fedfcf8b9cdc2b810b0bcb4daf955f215 100644 (file)
--- a/po/gl.po
+++ b/po/gl.po
@@ -13,8 +13,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: empathy-master-po-gl-57278_.merged\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-03-17 15:14+0100\n"
-"PO-Revision-Date: 2012-03-17 15:15+0100\n"
+"POT-Creation-Date: 2012-04-20 15:31+0200\n"
+"PO-Revision-Date: 2012-04-20 15:31+0200\n"
 "Last-Translator: Fran Dieguez <frandieguez@gnome.org>\n"
 "Language-Team: Galician <gnome-l10n-gl@gnome.org>\n"
 "Language: gl\n"
@@ -42,7 +42,7 @@ msgstr "Converse en Google Talk, Facebook, MSN e moitos máis servizos de chat"
 
 #. Tweak the dialog
 #: ../data/empathy-accounts.desktop.in.in.h:1
-#: ../src/empathy-accounts-dialog.c:2512
+#: ../src/empathy-accounts-dialog.c:2527
 msgid "Messaging and VoIP Accounts"
 msgstr "Contas de mensaxaría e Voz IP"
 
@@ -99,12 +99,13 @@ msgstr "Cartafol de descargas predeterminado do Empathy"
 msgid "The default folder to save file transfers in."
 msgstr "O cartafol predeterminado no que gardar os ficheiros transferidos."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:9
+#. translators: Automatic tasks which are run once to port/update account settings. Ideally, this shouldn't be exposed to users at all, we just use a gsettings key here as an optimization to only run it only once.
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:10
 msgid "Magic number used to check if sanity cleaning tasks should be run"
 msgstr ""
 "Número máxico usado para comprobar se se deben executar as tarefas de limpeza"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:10
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:11
 msgid ""
 "empathy-sanity-cleaning.c uses this number to check if the cleaning tasks "
 "should be executed or not. Users should not change this key manually."
@@ -113,96 +114,96 @@ msgstr ""
 "as tarefas de limpeza. Os usuarios non deben cambiar esta chave manualmente."
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:11
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:12
 msgid "Show offline contacts"
 msgstr "Mostrar contactos desconectados"
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:12
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:13
 msgid "Whether to show contacts that are offline in the contact list."
 msgstr ""
 "Indica se se debe mostrar os contactos que están desconectados na lista de "
 "contactos."
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:13
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:14
 msgid "Show avatars"
 msgstr "Mostrar avatares"
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:14
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:15
 msgid ""
 "Whether to show avatars for contacts in the contact list and chat windows."
 msgstr ""
 "Indica se se deben mostrar os avatares dos contactos na lista de contactos e "
 "das xanelas de conversa."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:15
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:16
 msgid "Show protocols"
 msgstr "Mostrar protocolos"
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:16
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:17
 msgid "Whether to show protocols for contacts in the contact list."
 msgstr ""
 "Indica se se deben mostrar os protocolos para os contactos na lista de "
 "contactos."
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:17
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:18
 msgid "Show Balance in contact list"
 msgstr "Mostrar crédito na lista de contactos"
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:18
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:19
 msgid "Whether to show account balances in the contact list."
 msgstr "Indica se se debe mostrar o crédito na lista de contactos."
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:19
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:20
 msgid "Compact contact list"
 msgstr "Lista compacta de contactos"
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:20
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:21
 msgid "Whether to show the contact list in compact mode."
 msgstr "Indica se se debe mostrar a lista de contactos en modo compacto."
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:21
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:22
 msgid "Hide main window"
 msgstr "Ocultar a xanela principal"
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:22
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:23
 msgid "Hide the main window."
 msgstr "Ocultar a xanela principal."
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:23
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:24
 msgid "Default directory to select an avatar image from"
 msgstr "Cartafol predeterminado para seleccionar un avatar"
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:24
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:25
 msgid "The last directory that an avatar image was chosen from."
 msgstr "Último cartafol do que escolleu unha imaxe de avatar."
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:25
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:26
 msgid "Open new chats in separate windows"
 msgstr "Abrir as novas conversas en xanelas separadas"
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:26
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:27
 msgid "Always open a separate chat window for new chats."
 msgstr "Abrir sempre unha xanela de conversa separada para as conversas novas."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:27
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:28
 msgid "Display incoming events in the status area"
 msgstr "Mostrar os eventos entrantes na área de estado"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:28
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:29
 msgid ""
 "Display incoming events in the status area. If false, present them to the "
 "user immediately."
@@ -210,32 +211,32 @@ msgstr ""
 "Mostrar os eventos entrantes na área de estado. Se é falso mostrarllos "
 "directamente ao usuario."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:29
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:30
 msgid "The position for the chat window side pane"
 msgstr "A posición do panel lateral da xanela de conversa"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:30
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:31
 msgid "The stored position (in pixels) of the chat window side pane."
 msgstr ""
 "A posición almacenada (en píxeles) do panel lateral da xanela de conversa."
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:31
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:32
 msgid "Show contact groups"
 msgstr "Mostrar grupos de contactos"
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:32
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:33
 msgid "Whether to show groups in the contact list."
 msgstr "Indica se se deben mostrar os grupos na lista de contactos."
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:33
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:34
 msgid "Contact list sort criterion"
 msgstr "Criterio de ordenación da lista de contactos"
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:34
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:35
 msgid ""
 "Which criterion to use when sorting the contact list. Default is to sort by "
 "the contact's state with the value \"state\". A value of \"name\" will sort "
@@ -246,76 +247,76 @@ msgstr ""
 "«name» (nome) ordenará a lista de contactos polo nome."
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:35
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:36
 msgid "Use notification sounds"
 msgstr "Usar sons de notificación"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:36
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:37
 msgid "Whether to play a sound to notify of events."
 msgstr "Indica se se debe reproducir un son para notificar os eventos."
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:37
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:38
 msgid "Disable sounds when away"
 msgstr "Desactivar os sons ao ausentarse"
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:38
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:39
 msgid "Whether to play sound notifications when away or busy."
 msgstr ""
 "Indica se se debe reproducir un son para notificar cando se está ocupado ou "
 "ausente."
 
 # rever
-#: ../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 "Reproducir un son cando cheguen mensaxes"
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:40
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:41
 msgid "Whether to play a sound to notify of incoming messages."
 msgstr "Indica se se debe reproducir un son para notificar mensaxes entrantes."
 
 # rever
-#: ../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 "Reproducir un son ao enviar mensaxes"
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:42
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:43
 msgid "Whether to play a sound to notify of outgoing messages."
 msgstr ""
 "Indica se se debe reproducir un son para notificar as mensaxes saíntes."
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:43
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:44
 msgid "Play a sound for new conversations"
 msgstr "Reproducir un son para as conversas novas"
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:44
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:45
 msgid "Whether to play a sound to notify of new conversations."
 msgstr "Indica se se debe reproducir un son para notificar as conversas novas."
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:45
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:46
 msgid "Play a sound when a contact logs in"
 msgstr "Reproducir un son cando un contacto inicie sesión"
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:46
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:47
 msgid "Whether to play a sound to notify of contacts logging into the network."
 msgstr ""
 "Indica se se debe reproducir un son para notificar os inicio de sesión dos "
 "contactos na rede."
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:47
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:48
 msgid "Play a sound when a contact logs out"
 msgstr "Reproducir un son cando un contacto saia da sesión"
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:48
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:49
 msgid ""
 "Whether to play a sound to notify of contacts logging out of the network."
 msgstr ""
@@ -323,56 +324,56 @@ msgstr ""
 "unha sesión na rede."
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:49
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:50
 msgid "Play a sound when we log in"
 msgstr "Reproducir un son cando inicio sesión"
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:50
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:51
 msgid "Whether to play a sound when logging into a network."
 msgstr "Indica se se debe reproducir un son cando se inicia sesión na rede."
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:51
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:52
 msgid "Play a sound when we log out"
 msgstr "Reproducir un son cando ao saír da sesión"
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:52
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:53
 msgid "Whether to play a sound when logging out of a network."
 msgstr "Indica se se debe reproducir un son cando se sae da sesión na rede."
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:53
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:54
 msgid "Enable popup notifications for new messages"
 msgstr "Activar as notificacións emerxentes para as mensaxes novas"
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:54
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:55
 msgid "Whether to show a popup notification when receiving a new message."
 msgstr ""
 "Indica se mostrar ou non unha notificación emerxente cando se reciba unha "
 "mensaxe nova."
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:55
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:56
 msgid "Disable popup notifications when away"
 msgstr "Desactivar as notificacións emerxentes cando se está ausente"
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:56
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:57
 msgid "Whether to show popup notifications when away or busy."
 msgstr ""
 "Indica se mostrar ou non as notificacións emerxentes cando se está ausente "
 "ou ocupado."
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:57
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:58
 msgid "Pop up notifications if the chat isn't focused"
 msgstr "Facer emerxer unha notificación cando a conversa non está enfocada"
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:58
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:59
 msgid ""
 "Whether to show a popup notification when receiving a new message even if "
 "the chat is already opened, but not focused."
@@ -381,98 +382,98 @@ msgstr ""
 "mensaxe nova, aínda cando a conversa xa estea aberta mais non estea enfocada."
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:59
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:60
 msgid "Pop up notifications when a contact logs in"
 msgstr "Facer emerxer unha notificación cando un contacto entra"
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:60
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:61
 msgid "Whether to show a popup notification when a contact goes online."
 msgstr ""
 "Indica se mostrar ou non unha notificación emerxente cando un contacto está "
 "conectado."
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:61
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:62
 msgid "Pop up notifications when a contact logs out"
 msgstr "Facer emerxer unha notificación cando un contacto sae"
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:62
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:63
 msgid "Whether to show a popup notification when a contact goes offline."
 msgstr ""
 "Indica se mostrar ou non unha notificación emerxente cando un contacto está "
 "desconectado."
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:63
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:64
 msgid "Use graphical smileys"
 msgstr "Usar emoticonas gráficas"
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:64
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:65
 msgid "Whether to convert smileys into graphical images in conversations."
 msgstr ""
 "Indica se converter ou non as emoticonas en imaxes gráficas nas conversas."
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:65
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:66
 msgid "Show contact list in rooms"
 msgstr "Mostrar a lista de contactos nas salas"
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:66
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:67
 msgid "Whether to show the contact list in chat rooms."
 msgstr "Indica se mostrar ou non a lista de contactos nas salas de conversa."
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:67
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:68
 msgid "Chat window theme"
 msgstr "Tema da xanela de conversa"
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:68
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:69
 msgid "The theme that is used to display the conversation in chat windows."
 msgstr "O tema usado para mostrar as conversa nas xanelas de conversa."
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:69
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:70
 msgid "Chat window theme variant"
 msgstr "Variante do tema da xanela de charla"
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:70
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:71
 msgid ""
 "The theme variant that is used to display the conversation in chat windows."
 msgstr ""
 "A variante do tema que se usará para mostrar a conversa nas xanelas de chat."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:71
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:72
 msgid "Path of the Adium theme to use"
 msgstr "Ruta do tema de Adium para usar"
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:72
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:73
 msgid "Path of the Adium theme to use if the theme used for chat is Adium."
 msgstr ""
 "Ruta do tema de Adium para usar se o tema usado para o chat é de Adium."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:73
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:74
 msgid "Enable WebKit Developer Tools"
 msgstr "Activar as ferramentas de desenvolvedor WebKit"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:74
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:75
 msgid ""
 "Whether WebKit developer tools, such as the Web Inspector, should be enabled."
 msgstr ""
 "Indica se as ferramentas de desenvolvedor WebKit, tales como Web Inspector, "
 "deberían ser activadas."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:75
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:76
 msgid "Inform other users when you are typing to them"
 msgstr "Informar a outros usuarios cando vostede está escribindo"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:76
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:77
 msgid ""
 "Whether to send the 'composing' or 'paused' chat states. Does not currently "
 "affect the 'gone' state."
@@ -481,22 +482,22 @@ msgstr ""
 "afecta realmente ao estado «ausente»."
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:77
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:78
 msgid "Use theme for chat rooms"
 msgstr "Usar un tema para as salas de conversa"
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:78
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:79
 msgid "Whether to use the theme for chat rooms."
 msgstr "Indica se usar ou non o tema para as salas de conversa."
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:79
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:80
 msgid "Spell checking languages"
 msgstr "Idiomas para a corrección ortográfica"
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:80
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:81
 msgid ""
 "Comma-separated list of spell checker languages to use (e.g. \"en, fr, nl\")."
 msgstr ""
@@ -504,12 +505,12 @@ msgstr ""
 "ex., «gl, pt, en»)."
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:81
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:82
 msgid "Enable spell checker"
 msgstr "Activar a verificación ortográfica"
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:82
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:83
 msgid ""
 "Whether to check words typed against the languages you want to check with."
 msgstr ""
@@ -517,12 +518,12 @@ msgstr ""
 "as quere verificar."
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:83
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:84
 msgid "Nick completed character"
 msgstr "Carácter de completado de alcume"
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:84
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:85
 msgid ""
 "Character to add after nickname when using nick completion (tab) in group "
 "chat."
@@ -531,63 +532,63 @@ msgstr ""
 "alcume (tabulador) nunha conversa de grupo."
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:85
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:86
 msgid "Empathy should use the avatar of the contact as the chat window icon"
 msgstr ""
 "O Empathy debería usar o avatar do contacto como a icona da xanela de "
 "conversa"
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:86
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:87
 msgid ""
 "Whether Empathy should use the avatar of the contact as the chat window icon."
 msgstr ""
 "Indica se o Empathy debería usar o avatar dos contactos como a icona da "
 "xanela da conversa ou non."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:87
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:88
 msgid "Last account selected in Join Room dialog"
 msgstr "Última conta seleccionada no diálogo Unirse á sala"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:88
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:89
 msgid "D-Bus object path of the last account selected to join a room."
 msgstr ""
 "Ruta do obxecto D-Bus da última conta seleccionada para unirse a unha sala."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:89
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:90
 msgid "Camera device"
 msgstr "Dispositivo da cámara"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:90
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:91
 msgid "Default camera device to use in video calls, e.g. /dev/video0."
 msgstr ""
 "Dispositivo de cámara predeterminado para usar nas chamadas de vídeo, p.ex. /"
 "dev/video0."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:91
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:92
 msgid "Camera position"
 msgstr "Posición da cámara"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:92
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:93
 msgid "Position the camera preview should be during a call."
 msgstr ""
 "Posición onde debe estar a vista previa da cámara durante unha chamada."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:93
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:94
 msgid "Echo cancellation support"
 msgstr "Compatibilidade de cancelación de eco"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:94
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:95
 msgid "Whether to enable Pulseaudio's echo cancellation filter."
 msgstr "Indica se activar o filtro de cancelación de eco de Pulseaudio."
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:95
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:96
 msgid "Show hint about closing the main window"
 msgstr "Mostrar unha indicación sobre pechar a xanela principal"
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:96
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:97
 msgid ""
 "Whether to show the message dialog about closing the main window with the "
 "'x' button in the title bar."
@@ -595,55 +596,55 @@ msgstr ""
 "Indica se mostrar ou non o diálogo de mensaxe sobre pechar a xanela "
 "principal co botón 'x' da barra de título."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:97
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:98
 msgid "Empathy can publish the user's location"
 msgstr "Empathy pode publicar a localización dos usuarios"
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:98
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:99
 msgid "Whether Empathy can publish the user's location to their contacts."
 msgstr ""
 "Indica se o Empathy pode ou non publicar a localización do usuario aos seus "
 "contactos."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:99
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:100
 msgid "Empathy can use the network to guess the location"
 msgstr "Empathy pode usar a rede para adiviñar a localización"
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:100
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:101
 msgid "Whether Empathy can use the network to guess the location."
 msgstr ""
 "Indica se o Empathy pode ou non usar a rede para adiviñar a localización."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:101
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:102
 msgid "Empathy can use the cellular network to guess the location"
 msgstr "Empathy pode usar a rede de móbiles para seguir a localización"
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:102
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:103
 msgid "Whether Empathy can use the cellular network to guess the location."
 msgstr ""
 "Indica se o Empathy pode ou non usar a rede de telefonía móbil para adiviñar "
 "a localización."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:103
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:104
 msgid "Empathy can use the GPS to guess the location"
 msgstr "Empathy pode usar o GPS para seguir a localización"
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:104
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:105
 msgid "Whether Empathy can use the GPS to guess the location."
 msgstr ""
 "Indica se o Empathy pode usar ou non o GPS para adiviñar a localización."
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:105
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:106
 msgid "Empathy should reduce the location's accuracy"
 msgstr "O Empathy debería reducir a precisión da localización"
 
 # rever
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:106
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:107
 msgid ""
 "Whether Empathy should reduce the location's accuracy for privacy reasons."
 msgstr ""
@@ -701,18 +702,18 @@ msgstr "O ficheiro seleccionado non é un ficheiro regular"
 msgid "The selected file is empty"
 msgstr "O ficheiro seleccionado está baleiro"
 
-#: ../libempathy/empathy-message.c:415 ../src/empathy-call-observer.c:129
+#: ../libempathy/empathy-message.c:407 ../src/empathy-call-observer.c:129
 #, c-format
 msgid "Missed call from %s"
 msgstr "Chamada perdida de %s"
 
 #. Translators: this is an outgoing call, e.g. 'Called Alice'
-#: ../libempathy/empathy-message.c:419
+#: ../libempathy/empathy-message.c:411
 #, c-format
 msgid "Called %s"
 msgstr "Chamou %s"
 
-#: ../libempathy/empathy-message.c:422
+#: ../libempathy/empathy-message.c:414
 #, c-format
 msgid "Call from %s"
 msgstr "Chamada de %s"
@@ -967,7 +968,7 @@ msgid "All accounts"
 msgstr "Todas as contas"
 
 #: ../libempathy-gtk/empathy-account-widget.c:682
-#: ../src/empathy-import-widget.c:336
+#: ../src/empathy-import-widget.c:323
 msgid "Account"
 msgstr "Conta"
 
@@ -992,7 +993,7 @@ msgid "%s:"
 msgstr "%s:"
 
 #: ../libempathy-gtk/empathy-account-widget.c:1398
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:14
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:16
 msgid "Username:"
 msgstr "Nome de usuario:"
 
@@ -1004,11 +1005,11 @@ msgstr "_Aplicar"
 msgid "L_og in"
 msgstr "Iniciar _sesión"
 
-#: ../libempathy-gtk/empathy-account-widget.c:1812
+#: ../libempathy-gtk/empathy-account-widget.c:1810
 msgid "This account already exists on the server"
 msgstr "Esta conta xa existe no servidor"
 
-#: ../libempathy-gtk/empathy-account-widget.c:1816
+#: ../libempathy-gtk/empathy-account-widget.c:1814
 msgid "Create a new account on the server"
 msgstr "Crear unha nova conta no servidor"
 
@@ -1018,20 +1019,20 @@ msgstr "Crear unha nova conta no servidor"
 #. * 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:2241
+#: ../libempathy-gtk/empathy-account-widget.c:2236
 #, c-format
 msgid "%1$s on %2$s"
 msgstr "%1$s sobre %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:2267
+#: ../libempathy-gtk/empathy-account-widget.c:2262
 #, c-format
 msgid "%s Account"
 msgstr "Conta %s"
 
 # rever
-#: ../libempathy-gtk/empathy-account-widget.c:2271
+#: ../libempathy-gtk/empathy-account-widget.c:2266
 msgid "New account"
 msgstr "Conta nova"
 
@@ -1088,11 +1089,11 @@ msgstr "_Servidor:"
 #: ../libempathy-gtk/empathy-account-widget-generic.ui.h:1
 #: ../libempathy-gtk/empathy-account-widget-groupwise.ui.h:7
 #: ../libempathy-gtk/empathy-account-widget-icq.ui.h:8
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:15
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:17
 #: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:23
 #: ../libempathy-gtk/empathy-account-widget-msn.ui.h:7
 #: ../libempathy-gtk/empathy-account-widget-local-xmpp.ui.h:7
-#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:21
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:22
 #: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:9
 msgid "Advanced"
 msgstr "Avanzadas"
@@ -1110,7 +1111,7 @@ msgstr "Cal e o seu contrasinal para AIM?"
 #: ../libempathy-gtk/empathy-account-widget-icq.ui.h:11
 #: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:7
 #: ../libempathy-gtk/empathy-account-widget-msn.ui.h:10
-#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:24
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:25
 msgid "Remember Password"
 msgstr "Lembrar o contrasinal"
 
@@ -1156,36 +1157,32 @@ msgstr "Cal é o seu UIN para ICQ?"
 msgid "What is your ICQ password?"
 msgstr "Cal é o seu contrasinal pra ICQ?"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.c:206
-#: ../libempathy-gtk/empathy-account-widget-sip.c:239
+#: ../libempathy-gtk/empathy-account-widget-sip.c:207
+#: ../libempathy-gtk/empathy-account-widget-sip.c:240
 msgid "Auto"
 msgstr "Auto"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.c:209
+#: ../libempathy-gtk/empathy-account-widget-sip.c:210
 msgid "UDP"
 msgstr "UDP"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.c:212
+#: ../libempathy-gtk/empathy-account-widget-sip.c:213
 msgid "TCP"
 msgstr "TCP"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.c:215
+#: ../libempathy-gtk/empathy-account-widget-sip.c:216
 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:244
+#: ../libempathy-gtk/empathy-account-widget-sip.c:245
 msgid "Register"
 msgstr "Rexistrador"
 
-#. translators: this string is very specific to SIP's internal; maybe
-#. * best to keep the English version.
-#: ../libempathy-gtk/empathy-account-widget-sip.c:249
+#: ../libempathy-gtk/empathy-account-widget-sip.c:250
 msgid "Options"
 msgstr "Opcións"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.c:252
+#: ../libempathy-gtk/empathy-account-widget-sip.c:253
 msgid "None"
 msgstr "Ningún"
 
@@ -1215,19 +1212,21 @@ msgstr "Engadir…"
 msgid "Remove"
 msgstr "Eliminar"
 
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:6
+#. Translators: tooltip on a 'Go Up' button used to sort IRC servers by priority
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:7
 msgid "Up"
 msgstr "Arriba"
 
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:7
+#. Translators: tooltip on a 'Go Down' button used to sort IRC servers by priority
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:9
 msgid "Down"
 msgstr "Abaixo"
 
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:8
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:10
 msgid "Servers"
 msgstr "Servidores"
 
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:9
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:11
 msgid ""
 "Most IRC servers don't need a password, so if you're not sure, don't enter a "
 "password."
@@ -1235,28 +1234,28 @@ msgstr ""
 "A maioría dos servidores IRC non precisan contrasinal, polo que se non está "
 "seguro non escriba un contrasinal."
 
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:10
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:12
 msgid "Nickname:"
 msgstr "Alcume:"
 
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:11
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:13
 msgid "Password:"
 msgstr "Contrasinal:"
 
 # rever
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:12
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:14
 msgid "Quit message:"
 msgstr "Mensaxe de saída:"
 
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:13
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:15
 msgid "Real name:"
 msgstr "Nome real:"
 
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:16
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:18
 msgid "Which IRC network?"
 msgstr "Que rede IRC?"
 
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:17
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:19
 msgid "What is your IRC nickname?"
 msgstr "Cal é o seu alcume de IRC?"
 
@@ -1452,11 +1451,15 @@ msgstr "Ignorar erros TLS"
 msgid "Port:"
 msgstr "Porto:"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:22
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:21
+msgid "Local IP Address:"
+msgstr "Enderezo IP local:"
+
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:23
 msgid "What is your SIP login ID?"
 msgstr "Cal é o seu ID de inicio de sesión SIP?"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:23
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:24
 msgid "What is your SIP account password?"
 msgstr "Cal é o contrasinal da súa conta SIP?"
 
@@ -1551,40 +1554,40 @@ msgstr "Este protocolo non admite as chamadas de emerxencia"
 msgid "You don't have enough credit in order to place this call"
 msgstr "Non ten crédito dabondo para facer esta chamada"
 
-#: ../libempathy-gtk/empathy-chat.c:729
+#: ../libempathy-gtk/empathy-chat.c:727
 msgid "Failed to open private chat"
 msgstr "Produciuse un fallo ao abrir un chat privado"
 
-#: ../libempathy-gtk/empathy-chat.c:787
+#: ../libempathy-gtk/empathy-chat.c:785
 msgid "Topic not supported on this conversation"
 msgstr "O asunto non é ocmpatíbel nesta conversa"
 
-#: ../libempathy-gtk/empathy-chat.c:793
+#: ../libempathy-gtk/empathy-chat.c:791
 msgid "You are not allowed to change the topic"
 msgstr "Non se lle permite cambiar o asunto"
 
-#: ../libempathy-gtk/empathy-chat.c:992
+#: ../libempathy-gtk/empathy-chat.c:990
 #, c-format
 msgid "“%s” is not a valid contact ID"
 msgstr "«%s» non é un ID de contacto válido"
 
-#: ../libempathy-gtk/empathy-chat.c:1087
+#: ../libempathy-gtk/empathy-chat.c:1085
 msgid "/clear: clear all messages from the current conversation"
 msgstr "/clear, limpa todas as mensaxes da conversa actual"
 
-#: ../libempathy-gtk/empathy-chat.c:1090
+#: ../libempathy-gtk/empathy-chat.c:1088
 msgid "/topic <topic>: set the topic of the current conversation"
 msgstr "/topic <topic>, estabelece o asunto da conversa actual"
 
-#: ../libempathy-gtk/empathy-chat.c:1093
+#: ../libempathy-gtk/empathy-chat.c:1091
 msgid "/join <chat room ID>: join a new chat room"
 msgstr "/join <chatroom id>, unirse a unha nova sala de conversa"
 
-#: ../libempathy-gtk/empathy-chat.c:1096
+#: ../libempathy-gtk/empathy-chat.c:1094
 msgid "/j <chat room ID>: join a new chat room"
 msgstr "/j <chatroom id>, unirse a unha nova sala de conversa"
 
-#: ../libempathy-gtk/empathy-chat.c:1100
+#: ../libempathy-gtk/empathy-chat.c:1098
 msgid ""
 "/part [<chat room ID>] [<reason>]: leave the chat room, by default the "
 "current one"
@@ -1592,23 +1595,23 @@ msgstr ""
 "/part [<ID da sala de conversa>] [<razón>]: abandonar a sala de char, por "
 "omisión a actual"
 
-#: ../libempathy-gtk/empathy-chat.c:1104
+#: ../libempathy-gtk/empathy-chat.c:1102
 msgid "/query <contact ID> [<message>]: open a private chat"
 msgstr "/query <id do contacto> [<mensaxe>], abre unha conversa privada"
 
-#: ../libempathy-gtk/empathy-chat.c:1107
+#: ../libempathy-gtk/empathy-chat.c:1105
 msgid "/msg <contact ID> <message>: open a private chat"
 msgstr "/msg <id do contacto> <mensaxe>, abre unha conversa privada"
 
-#: ../libempathy-gtk/empathy-chat.c:1110
+#: ../libempathy-gtk/empathy-chat.c:1108
 msgid "/nick <nickname>: change your nickname on the current server"
 msgstr "/nick <alcume>, cambia o seu nome de usuario no servidor actual"
 
-#: ../libempathy-gtk/empathy-chat.c:1113
+#: ../libempathy-gtk/empathy-chat.c:1111
 msgid "/me <message>: send an ACTION message to the current conversation"
 msgstr "/me <mensaxe>, envía unha mensaxe ACTION á conversa actual"
 
-#: ../libempathy-gtk/empathy-chat.c:1116
+#: ../libempathy-gtk/empathy-chat.c:1114
 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 "
@@ -1618,11 +1621,11 @@ msgstr ""
 "unha mensaxe que comeza cunha '/'. Por exemplo: \"/say /join úsase para "
 "unirse a unha nova sala de conversa\""
 
-#: ../libempathy-gtk/empathy-chat.c:1121
+#: ../libempathy-gtk/empathy-chat.c:1119
 msgid "/whois <contact ID>: display information about a contact"
 msgstr "/whois <ID do contacto>: mostra información sobre un contacto"
 
-#: ../libempathy-gtk/empathy-chat.c:1124
+#: ../libempathy-gtk/empathy-chat.c:1122
 msgid ""
 "/help [<command>]: show all supported commands. If <command> is defined, "
 "show its usage."
@@ -1630,134 +1633,134 @@ msgstr ""
 "/help [<orde>], mostra todas as ordes admitidas. Se <orde> está definida, "
 "mostra o seu uso."
 
-#: ../libempathy-gtk/empathy-chat.c:1143
+#: ../libempathy-gtk/empathy-chat.c:1141
 #, c-format
 msgid "Usage: %s"
 msgstr "Uso: %s"
 
-#: ../libempathy-gtk/empathy-chat.c:1188
+#: ../libempathy-gtk/empathy-chat.c:1186
 msgid "Unknown command"
 msgstr "Orde descoñecida"
 
-#: ../libempathy-gtk/empathy-chat.c:1314
+#: ../libempathy-gtk/empathy-chat.c:1312
 msgid "Unknown command; see /help for the available commands"
 msgstr "Orde descoñecida, vexa /help para obter as ordes dispoñíbeis"
 
-#: ../libempathy-gtk/empathy-chat.c:1565
+#: ../libempathy-gtk/empathy-chat.c:1563
 msgid "insufficient balance to send message"
 msgstr "non ten balance suficiente para enviar a mensaxe"
 
 # rever
-#: ../libempathy-gtk/empathy-chat.c:1569 ../libempathy-gtk/empathy-chat.c:1583
-#: ../libempathy-gtk/empathy-chat.c:1646
+#: ../libempathy-gtk/empathy-chat.c:1567 ../libempathy-gtk/empathy-chat.c:1581
+#: ../libempathy-gtk/empathy-chat.c:1644
 #, c-format
 msgid "Error sending message '%s': %s"
 msgstr "Produciuse un erro ao enviar a mensaxe '%s': %s"
 
 # rever
-#: ../libempathy-gtk/empathy-chat.c:1571 ../libempathy-gtk/empathy-chat.c:1588
-#: ../libempathy-gtk/empathy-chat.c:1650
+#: ../libempathy-gtk/empathy-chat.c:1569 ../libempathy-gtk/empathy-chat.c:1586
+#: ../libempathy-gtk/empathy-chat.c:1648
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Produciuse un erro ao enviar a mensaxe: %s"
 
 #. translators: error used when user doesn't have enough credit on his
 #. * account to send the message.
-#: ../libempathy-gtk/empathy-chat.c:1577
+#: ../libempathy-gtk/empathy-chat.c:1575
 #, c-format
 msgid "insufficient balance to send message. <a href='%s'>Top up</a>."
 msgstr ""
 "non ten balance dabondo para enviar a mensaxe <a href='%s'>Recargar</a>."
 
-#: ../libempathy-gtk/empathy-chat.c:1617
+#: ../libempathy-gtk/empathy-chat.c:1615
 msgid "not capable"
 msgstr "non é posíbel"
 
-#: ../libempathy-gtk/empathy-chat.c:1624
+#: ../libempathy-gtk/empathy-chat.c:1622
 msgid "offline"
 msgstr "desconectado"
 
-#: ../libempathy-gtk/empathy-chat.c:1627
+#: ../libempathy-gtk/empathy-chat.c:1625
 msgid "invalid contact"
 msgstr "contacto non válido"
 
-#: ../libempathy-gtk/empathy-chat.c:1630
+#: ../libempathy-gtk/empathy-chat.c:1628
 msgid "permission denied"
 msgstr "permiso denegado"
 
 # rever
-#: ../libempathy-gtk/empathy-chat.c:1633
+#: ../libempathy-gtk/empathy-chat.c:1631
 msgid "too long message"
 msgstr "mensaxe é demasiado longa"
 
-#: ../libempathy-gtk/empathy-chat.c:1636
+#: ../libempathy-gtk/empathy-chat.c:1634
 msgid "not implemented"
 msgstr "non implementado"
 
-#: ../libempathy-gtk/empathy-chat.c:1640
+#: ../libempathy-gtk/empathy-chat.c:1638
 msgid "unknown"
 msgstr "descoñecido"
 
-#: ../libempathy-gtk/empathy-chat.c:1707 ../src/empathy-chat-window.c:920
+#: ../libempathy-gtk/empathy-chat.c:1705 ../src/empathy-chat-window.c:919
 msgid "Topic:"
 msgstr "Asunto:"
 
 # rever
-#: ../libempathy-gtk/empathy-chat.c:1722
+#: ../libempathy-gtk/empathy-chat.c:1720
 #, c-format
 msgid "Topic set to: %s"
 msgstr "Cambiouse o asunto a: %s"
 
 # rever
-#: ../libempathy-gtk/empathy-chat.c:1724
+#: ../libempathy-gtk/empathy-chat.c:1722
 #, c-format
 msgid "Topic set by %s to: %s"
 msgstr "Tema estabelecido por %s a: %s"
 
 # rever
 #. No need to display this 'event' is no topic can be defined anyway
-#: ../libempathy-gtk/empathy-chat.c:1729
+#: ../libempathy-gtk/empathy-chat.c:1727
 msgid "No topic defined"
 msgstr "Non se definiu o asunto"
 
-#: ../libempathy-gtk/empathy-chat.c:2245
+#: ../libempathy-gtk/empathy-chat.c:2243
 msgid "(No Suggestions)"
 msgstr "(Sen suxestións)"
 
 #. translators: %s is the selected word
-#: ../libempathy-gtk/empathy-chat.c:2313
+#: ../libempathy-gtk/empathy-chat.c:2311
 #, c-format
 msgid "Add '%s' to Dictionary"
 msgstr "Engadir «%s» ao dicionario"
 
 #. translators: first %s is the selected word,
 #. * second %s is the language name of the target dictionary
-#: ../libempathy-gtk/empathy-chat.c:2350
+#: ../libempathy-gtk/empathy-chat.c:2348
 #, c-format
 msgid "Add '%s' to %s Dictionary"
 msgstr "Engadir «%s» ao dicionario de %s"
 
-#: ../libempathy-gtk/empathy-chat.c:2420
+#: ../libempathy-gtk/empathy-chat.c:2418
 msgid "Insert Smiley"
 msgstr "Inserir unha emoticona"
 
 #. send button
-#: ../libempathy-gtk/empathy-chat.c:2438
+#: ../libempathy-gtk/empathy-chat.c:2436
 #: ../libempathy-gtk/empathy-ui-utils.c:1880
 msgid "_Send"
 msgstr "_Enviar"
 
 #. Spelling suggestions
-#: ../libempathy-gtk/empathy-chat.c:2495
+#: ../libempathy-gtk/empathy-chat.c:2493
 msgid "_Spelling Suggestions"
 msgstr "Suxestións de _ortografía"
 
-#: ../libempathy-gtk/empathy-chat.c:2584
+#: ../libempathy-gtk/empathy-chat.c:2582
 msgid "Failed to retrieve recent logs"
 msgstr "Produciuse un fallo ao obter os rexistros recentes"
 
 # rever
-#: ../libempathy-gtk/empathy-chat.c:2723
+#: ../libempathy-gtk/empathy-chat.c:2721
 #, c-format
 msgid "%s has disconnected"
 msgstr "%s desconectou"
@@ -1765,12 +1768,12 @@ msgstr "%s desconectou"
 #. translators: reverse the order of these arguments
 #. * if the kicked should come before the kicker in your locale.
 #.
-#: ../libempathy-gtk/empathy-chat.c:2730
+#: ../libempathy-gtk/empathy-chat.c:2728
 #, c-format
 msgid "%1$s was kicked by %2$s"
 msgstr "%1$s foi expulsado por %2$s"
 
-#: ../libempathy-gtk/empathy-chat.c:2733
+#: ../libempathy-gtk/empathy-chat.c:2731
 #, c-format
 msgid "%s was kicked"
 msgstr "%s foi expulsado"
@@ -1778,17 +1781,17 @@ msgstr "%s foi expulsado"
 #. translators: reverse the order of these arguments
 #. * if the banned should come before the banner in your locale.
 #.
-#: ../libempathy-gtk/empathy-chat.c:2741
+#: ../libempathy-gtk/empathy-chat.c:2739
 #, c-format
 msgid "%1$s was banned by %2$s"
 msgstr "%1$s foi vetado por %2$s"
 
-#: ../libempathy-gtk/empathy-chat.c:2744
+#: ../libempathy-gtk/empathy-chat.c:2742
 #, c-format
 msgid "%s was banned"
 msgstr "%s foi excluído"
 
-#: ../libempathy-gtk/empathy-chat.c:2748
+#: ../libempathy-gtk/empathy-chat.c:2746
 #, c-format
 msgid "%s has left the room"
 msgstr "%s deixou a sala"
@@ -1798,18 +1801,18 @@ msgstr "%s deixou a sala"
 #. * given by the user living the room. If this poses a problem,
 #. * please let us know. :-)
 #.
-#: ../libempathy-gtk/empathy-chat.c:2757
+#: ../libempathy-gtk/empathy-chat.c:2755
 #, c-format
 msgid " (%s)"
 msgstr " (%s)"
 
 # rever
-#: ../libempathy-gtk/empathy-chat.c:2782
+#: ../libempathy-gtk/empathy-chat.c:2780
 #, c-format
 msgid "%s has joined the room"
 msgstr "%s uniuse á sala"
 
-#: ../libempathy-gtk/empathy-chat.c:2807
+#: ../libempathy-gtk/empathy-chat.c:2805
 #, c-format
 msgid "%s is now known as %s"
 msgstr "%s agora é coñecido como %s"
@@ -1817,55 +1820,55 @@ msgstr "%s agora é coñecido como %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:2994
+#: ../libempathy-gtk/empathy-chat.c:2992
 #: ../src/empathy-streamed-media-window.c:1888
-#: ../src/empathy-event-manager.c:1279 ../src/empathy-call-window.c:1502
-#: ../src/empathy-call-window.c:1552 ../src/empathy-call-window.c:2590
+#: ../src/empathy-event-manager.c:1279 ../src/empathy-call-window.c:1466
+#: ../src/empathy-call-window.c:1516 ../src/empathy-call-window.c:2562
 msgid "Disconnected"
 msgstr "Desconectado"
 
 #. Add message
-#: ../libempathy-gtk/empathy-chat.c:3658
+#: ../libempathy-gtk/empathy-chat.c:3656
 msgid "Would you like to store this password?"
 msgstr "Desexa gardar este contrasinal?"
 
-#: ../libempathy-gtk/empathy-chat.c:3664
+#: ../libempathy-gtk/empathy-chat.c:3662
 msgid "Remember"
 msgstr "Lembrar"
 
-#: ../libempathy-gtk/empathy-chat.c:3674
+#: ../libempathy-gtk/empathy-chat.c:3672
 msgid "Not now"
 msgstr "Agora non"
 
-#: ../libempathy-gtk/empathy-chat.c:3718
+#: ../libempathy-gtk/empathy-chat.c:3716
 #: ../libempathy-gtk/empathy-bad-password-dialog.c:142
 msgid "Retry"
 msgstr "Reintentar"
 
-#: ../libempathy-gtk/empathy-chat.c:3722
+#: ../libempathy-gtk/empathy-chat.c:3720
 msgid "Wrong password; please try again:"
 msgstr "O contrasinal é incorrecto, ténteo de novo:"
 
 #. Add message
-#: ../libempathy-gtk/empathy-chat.c:3852
+#: ../libempathy-gtk/empathy-chat.c:3850
 msgid "This room is protected by a password:"
 msgstr "Esta sala está protexida por un contrasinal:"
 
-#: ../libempathy-gtk/empathy-chat.c:3879
+#: ../libempathy-gtk/empathy-chat.c:3877
 msgid "Join"
 msgstr "Unirse"
 
-#: ../libempathy-gtk/empathy-chat.c:4071 ../src/empathy-event-manager.c:1300
+#: ../libempathy-gtk/empathy-chat.c:4069 ../src/empathy-event-manager.c:1300
 msgid "Connected"
 msgstr "Conectado"
 
-#: ../libempathy-gtk/empathy-chat.c:4126
+#: ../libempathy-gtk/empathy-chat.c:4124
 msgid "Conversation"
 msgstr "Conversa"
 
 #. Translators: this string is a something like
 #. * "Escher Cat (SMS)"
-#: ../libempathy-gtk/empathy-chat.c:4131
+#: ../libempathy-gtk/empathy-chat.c:4129
 #, c-format
 msgid "%s (SMS)"
 msgstr "%s (SMS)"
@@ -1897,7 +1900,7 @@ msgstr "Editar os contactos bloqueados"
 
 #. Account and Identifier
 #: ../libempathy-gtk/empathy-contact-blocking-dialog.ui.h:1
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:506
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:503
 #: ../libempathy-gtk/empathy-contact-widget.ui.h:1
 #: ../libempathy-gtk/empathy-individual-widget.c:1474
 #: ../src/empathy-chatrooms-window.ui.h:2
@@ -1974,160 +1977,160 @@ msgstr "Decidir máis _adiante"
 
 # rever
 #. Title
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:499
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:496
 msgid "Search contacts"
 msgstr "Buscar contactos"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:529
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:526
 msgid "Search: "
 msgstr "Buscar:"
 
 # rever
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:587
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:584
 msgid "_Add Contact"
 msgstr "_Engadir contacto"
 
 # rever
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:605
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:602
 msgid "No contacts found"
 msgstr "Non se atoparon contactos"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:621
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:618
 msgid "Your message introducing yourself:"
 msgstr "A súa mensaxe de presentación:"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:629
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:626
 msgid "Please let me see when you're online. Thanks!"
 msgstr "Permítame ver cando está en liña. Grazas."
 
-#: ../libempathy-gtk/empathy-contact-widget.c:567
+#: ../libempathy-gtk/empathy-contact-widget.c:566
 #: ../libempathy-gtk/empathy-individual-widget.c:304
 msgid "Channels:"
 msgstr "Canles:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:747
+#: ../libempathy-gtk/empathy-contact-widget.c:746
 #: ../libempathy-gtk/empathy-individual-widget.c:455
 msgid "Country ISO Code:"
 msgstr "Código ISO de país:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:749
+#: ../libempathy-gtk/empathy-contact-widget.c:748
 #: ../libempathy-gtk/empathy-individual-widget.c:457
 msgid "Country:"
 msgstr "País:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:751
+#: ../libempathy-gtk/empathy-contact-widget.c:750
 #: ../libempathy-gtk/empathy-individual-widget.c:459
 msgid "State:"
 msgstr "Rexión:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:753
+#: ../libempathy-gtk/empathy-contact-widget.c:752
 #: ../libempathy-gtk/empathy-individual-widget.c:461
 msgid "City:"
 msgstr "Cidade:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:755
+#: ../libempathy-gtk/empathy-contact-widget.c:754
 #: ../libempathy-gtk/empathy-individual-widget.c:463
 msgid "Area:"
 msgstr "Área:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:757
+#: ../libempathy-gtk/empathy-contact-widget.c:756
 #: ../libempathy-gtk/empathy-individual-widget.c:465
 msgid "Postal Code:"
 msgstr "Código postal:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:759
+#: ../libempathy-gtk/empathy-contact-widget.c:758
 #: ../libempathy-gtk/empathy-individual-widget.c:467
 msgid "Street:"
 msgstr "Rúa:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:761
+#: ../libempathy-gtk/empathy-contact-widget.c:760
 #: ../libempathy-gtk/empathy-individual-widget.c:469
 msgid "Building:"
 msgstr "Edificio:"
 
 # rever
-#: ../libempathy-gtk/empathy-contact-widget.c:763
+#: ../libempathy-gtk/empathy-contact-widget.c:762
 #: ../libempathy-gtk/empathy-individual-widget.c:471
 msgid "Floor:"
 msgstr "_Andar:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:765
+#: ../libempathy-gtk/empathy-contact-widget.c:764
 #: ../libempathy-gtk/empathy-individual-widget.c:473
 msgid "Room:"
 msgstr "Sala:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:767
+#: ../libempathy-gtk/empathy-contact-widget.c:766
 #: ../libempathy-gtk/empathy-individual-widget.c:475
 msgid "Text:"
 msgstr "Texto:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:769
+#: ../libempathy-gtk/empathy-contact-widget.c:768
 #: ../libempathy-gtk/empathy-individual-widget.c:477
 msgid "Description:"
 msgstr "Descrición:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:771
+#: ../libempathy-gtk/empathy-contact-widget.c:770
 #: ../libempathy-gtk/empathy-individual-widget.c:479
 msgid "URI:"
 msgstr "URI:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:773
+#: ../libempathy-gtk/empathy-contact-widget.c:772
 #: ../libempathy-gtk/empathy-individual-widget.c:481
 msgid "Accuracy Level:"
 msgstr "Nivel de precisión:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:775
+#: ../libempathy-gtk/empathy-contact-widget.c:774
 #: ../libempathy-gtk/empathy-individual-widget.c:483
 msgid "Error:"
 msgstr "Erro:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:777
+#: ../libempathy-gtk/empathy-contact-widget.c:776
 #: ../libempathy-gtk/empathy-individual-widget.c:485
 msgid "Vertical Error (meters):"
 msgstr "Erro vertical (metros):"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:779
+#: ../libempathy-gtk/empathy-contact-widget.c:778
 #: ../libempathy-gtk/empathy-individual-widget.c:487
 msgid "Horizontal Error (meters):"
 msgstr "Erro horizontal (metros):"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:781
+#: ../libempathy-gtk/empathy-contact-widget.c:780
 #: ../libempathy-gtk/empathy-individual-widget.c:489
 msgid "Speed:"
 msgstr "Velocidade:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:783
+#: ../libempathy-gtk/empathy-contact-widget.c:782
 #: ../libempathy-gtk/empathy-individual-widget.c:491
 msgid "Bearing:"
 msgstr "Orientación:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:785
+#: ../libempathy-gtk/empathy-contact-widget.c:784
 #: ../libempathy-gtk/empathy-individual-widget.c:493
 msgid "Climb Speed:"
 msgstr "Velocidade de incremento:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:787
+#: ../libempathy-gtk/empathy-contact-widget.c:786
 #: ../libempathy-gtk/empathy-individual-widget.c:495
 msgid "Last Updated on:"
 msgstr "Última actualización:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:789
+#: ../libempathy-gtk/empathy-contact-widget.c:788
 #: ../libempathy-gtk/empathy-individual-widget.c:497
 msgid "Longitude:"
 msgstr "Lonxitude:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:791
+#: ../libempathy-gtk/empathy-contact-widget.c:790
 #: ../libempathy-gtk/empathy-individual-widget.c:499
 msgid "Latitude:"
 msgstr "Latitude:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:793
+#: ../libempathy-gtk/empathy-contact-widget.c:792
 #: ../libempathy-gtk/empathy-individual-widget.c:501
 msgid "Altitude:"
 msgstr "Altitude:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:846
-#: ../libempathy-gtk/empathy-contact-widget.c:861
+#: ../libempathy-gtk/empathy-contact-widget.c:845
+#: ../libempathy-gtk/empathy-contact-widget.c:860
 #: ../libempathy-gtk/empathy-individual-widget.c:593
 #: ../libempathy-gtk/empathy-individual-widget.c:608
 #: ../src/empathy-preferences.ui.h:35
@@ -2135,36 +2138,36 @@ msgid "Location"
 msgstr "Localización"
 
 #. translators: format is "Location, $date"
-#: ../libempathy-gtk/empathy-contact-widget.c:863
+#: ../libempathy-gtk/empathy-contact-widget.c:862
 #: ../libempathy-gtk/empathy-individual-widget.c:610
 #, c-format
 msgid "%s, %s"
 msgstr "%s, %s"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:915
+#: ../libempathy-gtk/empathy-contact-widget.c:914
 #: ../libempathy-gtk/empathy-individual-widget.c:659
 msgid "%B %e, %Y at %R UTC"
 msgstr "%B %e, %Y de %R UTC"
 
 # rever
-#: ../libempathy-gtk/empathy-contact-widget.c:997
+#: ../libempathy-gtk/empathy-contact-widget.c:996
 #: ../libempathy-gtk/empathy-individual-widget.c:900
 msgid "Save Avatar"
 msgstr "Gardar o avatar"
 
 # rever
-#: ../libempathy-gtk/empathy-contact-widget.c:1053
+#: ../libempathy-gtk/empathy-contact-widget.c:1052
 #: ../libempathy-gtk/empathy-individual-widget.c:958
 msgid "Unable to save avatar"
 msgstr "Non foi posíbel gardar o avatar"
 
 # rever
-#: ../libempathy-gtk/empathy-contact-widget.c:1444
+#: ../libempathy-gtk/empathy-contact-widget.c:1454
 msgid "Personal Details"
 msgstr "Detalles persoais"
 
 # rever
-#: ../libempathy-gtk/empathy-contact-widget.c:1447
+#: ../libempathy-gtk/empathy-contact-widget.c:1457
 #: ../libempathy-gtk/empathy-contact-widget.ui.h:6
 #: ../libempathy-gtk/empathy-individual-widget.ui.h:3
 msgid "Contact Details"
@@ -2276,11 +2279,11 @@ msgstr "Versión:"
 msgid "Client:"
 msgstr "Cliente:"
 
-#: ../libempathy-gtk/empathy-groups-widget.c:331
+#: ../libempathy-gtk/empathy-groups-widget.c:327
 msgid "Groups"
 msgstr "Grupos"
 
-#: ../libempathy-gtk/empathy-groups-widget.c:343
+#: ../libempathy-gtk/empathy-groups-widget.c:339
 msgid ""
 "Select the groups you want this contact to appear in.  Note that you can "
 "select more than one group or no groups."
@@ -2288,17 +2291,17 @@ msgstr ""
 "Seleccione os grupos en que quere que aparezan estes contactos. Note que "
 "pode seleccionar máis dun grupo ou ningún."
 
-#: ../libempathy-gtk/empathy-groups-widget.c:362
+#: ../libempathy-gtk/empathy-groups-widget.c:358
 msgid "_Add Group"
 msgstr "Eng_adir grupo"
 
-#: ../libempathy-gtk/empathy-groups-widget.c:397
+#: ../libempathy-gtk/empathy-groups-widget.c:393
 msgctxt "verb in a column header displaying group names"
 msgid "Select"
 msgstr "Seleccionar"
 
-#: ../libempathy-gtk/empathy-groups-widget.c:407
-#: ../src/empathy-roster-window.c:1970
+#: ../libempathy-gtk/empathy-groups-widget.c:403
+#: ../src/empathy-roster-window.c:1969
 msgid "Group"
 msgstr "Grupo"
 
@@ -2327,147 +2330,152 @@ msgstr "Contactos ligados"
 #. 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:173
+#: ../libempathy-gtk/empathy-individual-menu.c:172
 #, c-format
 msgid "%s (%s)"
 msgstr "%s (%s)"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:345
+#: ../libempathy-gtk/empathy-individual-menu.c:344
 msgid "Select account to use to place the call"
 msgstr "Seleccione a conta a usar para realizar a chamada"
 
 #. translators: Call is a noun. This string is used in the window
 #. * title
-#: ../libempathy-gtk/empathy-individual-menu.c:349
+#: ../libempathy-gtk/empathy-individual-menu.c:348
 #: ../libempathy-gtk/empathy-log-window.ui.h:6
 #: ../src/empathy-streamed-media-window.c:1290
 #: ../src/empathy-call-window.ui.h:18
 msgid "Call"
 msgstr "Chamar"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:414
+#: ../libempathy-gtk/empathy-individual-menu.c:413
 msgid "Mobile"
 msgstr "Móbil"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:416
+#: ../libempathy-gtk/empathy-individual-menu.c:415
 msgid "Work"
 msgstr "Traballo"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:418
+#: ../libempathy-gtk/empathy-individual-menu.c:417
 msgid "HOME"
 msgstr "Casa"
 
 # rever
-#: ../libempathy-gtk/empathy-individual-menu.c:659
+#: ../libempathy-gtk/empathy-individual-menu.c:658
 msgid "_Block Contact"
 msgstr "_Bloquear contacto"
 
 #. add chat button
-#: ../libempathy-gtk/empathy-individual-menu.c:1018
+#: ../libempathy-gtk/empathy-individual-menu.c:1017
 #: ../libempathy-gtk/empathy-new-message-dialog.c:319
 #: ../src/empathy-roster-window-menubar.ui.h:1
 msgid "_Chat"
 msgstr "_Conversa"
 
 #. add SMS button
-#: ../libempathy-gtk/empathy-individual-menu.c:1053
+#: ../libempathy-gtk/empathy-individual-menu.c:1052
 #: ../libempathy-gtk/empathy-new-message-dialog.c:313
 msgid "_SMS"
 msgstr "_SMS"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1086
+#: ../libempathy-gtk/empathy-individual-menu.c:1085
 msgctxt "menu item"
 msgid "_Audio Call"
 msgstr "_Audiochamada"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1119
+#: ../libempathy-gtk/empathy-individual-menu.c:1118
 msgctxt "menu item"
 msgid "_Video Call"
 msgstr "_Videochamada"
 
 # rever
-#: ../libempathy-gtk/empathy-individual-menu.c:1160
+#: ../libempathy-gtk/empathy-individual-menu.c:1159
 #: ../src/empathy-roster-window-menubar.ui.h:4
 msgid "_Previous Conversations"
 msgstr "Conversas _previas"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1189
+#: ../libempathy-gtk/empathy-individual-menu.c:1188
 msgid "Send File"
 msgstr "Enviar ficheiro"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1219
+#: ../libempathy-gtk/empathy-individual-menu.c:1218
 msgid "Share My Desktop"
 msgstr "Compartir o meu escritorio"
 
 # rever
-#: ../libempathy-gtk/empathy-individual-menu.c:1245
+#: ../libempathy-gtk/empathy-individual-menu.c:1244
 #: ../libempathy-gtk/empathy-individual-widget.c:1357
 msgid "Favorite"
 msgstr "Favorito"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1264
+#: ../libempathy-gtk/empathy-individual-menu.c:1263
 msgid "gnome-contacts not installed"
 msgstr "gnome-contacts non está instalado"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1267
+#: ../libempathy-gtk/empathy-individual-menu.c:1266
 msgid "Please install gnome-contacts to access contacts details."
 msgstr ""
 "Instale o programa gnome-contacts para acceder aos detalles dos contactos"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1398
+#: ../libempathy-gtk/empathy-individual-menu.c:1397
 msgid "Infor_mation"
 msgstr "Infor_mación"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1447
+#: ../libempathy-gtk/empathy-individual-menu.c:1446
 msgctxt "Edit individual (contextual menu)"
 msgid "_Edit"
 msgstr "_Editar"
 
 # rever
-#: ../libempathy-gtk/empathy-individual-menu.c:1564
-#: ../src/empathy-chat-window.c:1192
+#. send invitation
+#: ../libempathy-gtk/empathy-individual-menu.c:1562
+#: ../src/empathy-chat-window.c:1190
 msgid "Inviting you to this room"
 msgstr "Invítao a vostede a esta sala"
 
 # rever
-#: ../libempathy-gtk/empathy-individual-menu.c:1610
+#: ../libempathy-gtk/empathy-individual-menu.c:1608
 msgid "_Invite to Chat Room"
 msgstr "Conv_idar a sala de conversa"
 
 # rever
-#: ../libempathy-gtk/empathy-individual-menu.c:1806
+#: ../libempathy-gtk/empathy-individual-menu.c:1804
 #: ../src/empathy-roster-window-menubar.ui.h:5
 msgid "_Add Contact…"
 msgstr "Eng_adir un contacto…"
 
-#: ../libempathy-gtk/empathy-individual-view.c:2304
+#: ../libempathy-gtk/empathy-individual-view.c:2364
 msgid "Delete and _Block"
 msgstr "Eliminar e _bloquear"
 
 # rever
-#: ../libempathy-gtk/empathy-individual-view.c:2339
+#: ../libempathy-gtk/empathy-individual-view.c:2399
 #, c-format
 msgid "Do you really want to remove the group '%s'?"
 msgstr "Está seguro de que quere eliminar o grupo '%s'?"
 
 # rever
-#: ../libempathy-gtk/empathy-individual-view.c:2342
+#: ../libempathy-gtk/empathy-individual-view.c:2402
 msgid "Removing group"
 msgstr "Eliminando o grupo"
 
+#: ../libempathy-gtk/empathy-individual-view.c:2470
+msgid "Re_name"
+msgstr "Re_nomear"
+
 #. Remove
-#: ../libempathy-gtk/empathy-individual-view.c:2397
-#: ../libempathy-gtk/empathy-individual-view.c:2601
+#: ../libempathy-gtk/empathy-individual-view.c:2479
+#: ../libempathy-gtk/empathy-individual-view.c:2683
 msgid "_Remove"
 msgstr "_Eliminar"
 
 # rever
-#: ../libempathy-gtk/empathy-individual-view.c:2474
+#: ../libempathy-gtk/empathy-individual-view.c:2556
 #, c-format
 msgid "Do you really want to remove the contact '%s'?"
 msgstr "Está seguro de quere eliminar o contacto '%s'?"
 
-#: ../libempathy-gtk/empathy-individual-view.c:2483
+#: ../libempathy-gtk/empathy-individual-view.c:2565
 #, c-format
 msgid ""
 "Do you really want to remove the linked contact '%s'? Note that this will "
@@ -2476,7 +2484,7 @@ msgstr ""
 "Desexa eliminar o contacto ligado %s? Teña en conta que eliminaranse tamén "
 "todos os contactos que forman este contacto ligado."
 
-#: ../libempathy-gtk/empathy-individual-view.c:2495
+#: ../libempathy-gtk/empathy-individual-view.c:2577
 msgid "Removing contact"
 msgstr "Eliminando o contacto"
 
@@ -2521,137 +2529,137 @@ msgstr "servidor novo"
 msgid "SSL"
 msgstr "SSL"
 
-#: ../libempathy-gtk/empathy-log-window.c:620
+#: ../libempathy-gtk/empathy-log-window.c:617
 msgid "History"
 msgstr "Historial"
 
-#: ../libempathy-gtk/empathy-log-window.c:675
+#: ../libempathy-gtk/empathy-log-window.c:672
 msgid "Show"
 msgstr "Mostrar"
 
-#: ../libempathy-gtk/empathy-log-window.c:697
+#: ../libempathy-gtk/empathy-log-window.c:694
 msgid "Search"
 msgstr "Buscar"
 
-#: ../libempathy-gtk/empathy-log-window.c:1148
+#: ../libempathy-gtk/empathy-log-window.c:1145
 #, c-format
 msgid "Chat in %s"
 msgstr "Conversar en %s"
 
-#: ../libempathy-gtk/empathy-log-window.c:1150
+#: ../libempathy-gtk/empathy-log-window.c:1147
 #, c-format
 msgid "Chat with %s"
 msgstr "Conversa con %s"
 
-#: ../libempathy-gtk/empathy-log-window.c:1200
-#: ../libempathy-gtk/empathy-log-window.c:1347
+#: ../libempathy-gtk/empathy-log-window.c:1197
+#: ../libempathy-gtk/empathy-log-window.c:1341
 msgctxt "A date with the time"
 msgid "%A, %e %B %Y %X"
 msgstr "%A, %e de %B de %Y ás %X"
 
 #. Translators: this is an emote: '* Danielle waves'
-#: ../libempathy-gtk/empathy-log-window.c:1289
+#: ../libempathy-gtk/empathy-log-window.c:1284
 #, 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:1295
+#: ../libempathy-gtk/empathy-log-window.c:1290
 #, c-format
 msgid "<b>%s:</b> %s"
 msgstr "<b>%s:</b> %s"
 
-#: ../libempathy-gtk/empathy-log-window.c:1371
+#: ../libempathy-gtk/empathy-log-window.c:1365
 #, c-format
 msgid "%s second"
 msgid_plural "%s seconds"
 msgstr[0] "%s segundo"
 msgstr[1] "%s segundos"
 
-#: ../libempathy-gtk/empathy-log-window.c:1378
+#: ../libempathy-gtk/empathy-log-window.c:1372
 #, c-format
 msgid "%s minute"
 msgid_plural "%s minutes"
 msgstr[0] "%s minuto"
 msgstr[1] "%s minutos"
 
-#: ../libempathy-gtk/empathy-log-window.c:1386
+#: ../libempathy-gtk/empathy-log-window.c:1380
 #, c-format
 msgid "Call took %s, ended at %s"
 msgstr "A chamada levou %s, rematou ás %s"
 
-#: ../libempathy-gtk/empathy-log-window.c:1720
+#: ../libempathy-gtk/empathy-log-window.c:1711
 msgid "Today"
 msgstr "Hoxe"
 
-#: ../libempathy-gtk/empathy-log-window.c:1724
+#: ../libempathy-gtk/empathy-log-window.c:1715
 msgid "Yesterday"
 msgstr "Mañá"
 
 #. Translators: A date such as '23 May 2010' (strftime format)
-#: ../libempathy-gtk/empathy-log-window.c:1739
+#: ../libempathy-gtk/empathy-log-window.c:1730
 msgid "%e %B %Y"
 msgstr "%e de %B de %Y"
 
-#: ../libempathy-gtk/empathy-log-window.c:1827
-#: ../libempathy-gtk/empathy-log-window.c:3487
+#: ../libempathy-gtk/empathy-log-window.c:1834
+#: ../libempathy-gtk/empathy-log-window.c:3457
 msgid "Anytime"
 msgstr "Calquera momento"
 
-#: ../libempathy-gtk/empathy-log-window.c:1916
-#: ../libempathy-gtk/empathy-log-window.c:2400
+#: ../libempathy-gtk/empathy-log-window.c:1933
+#: ../libempathy-gtk/empathy-log-window.c:2392
 msgid "Anyone"
 msgstr "Calquera persoa"
 
-#: ../libempathy-gtk/empathy-log-window.c:2713
+#: ../libempathy-gtk/empathy-log-window.c:2705
 msgid "Who"
 msgstr "Quen"
 
-#: ../libempathy-gtk/empathy-log-window.c:2922
+#: ../libempathy-gtk/empathy-log-window.c:2914
 msgid "When"
 msgstr "Cando"
 
-#: ../libempathy-gtk/empathy-log-window.c:3038
+#: ../libempathy-gtk/empathy-log-window.c:3032
 msgid "Anything"
 msgstr "Calquera cousa"
 
-#: ../libempathy-gtk/empathy-log-window.c:3040
+#: ../libempathy-gtk/empathy-log-window.c:3034
 msgid "Text chats"
 msgstr "Conversas de texto"
 
-#: ../libempathy-gtk/empathy-log-window.c:3042
+#: ../libempathy-gtk/empathy-log-window.c:3035
 #: ../src/empathy-preferences.ui.h:25
 msgid "Calls"
 msgstr "Chamadas"
 
 # rever
-#: ../libempathy-gtk/empathy-log-window.c:3047
+#: ../libempathy-gtk/empathy-log-window.c:3039
 msgid "Incoming calls"
 msgstr "Chamadas entrantes"
 
 # rever
-#: ../libempathy-gtk/empathy-log-window.c:3048
+#: ../libempathy-gtk/empathy-log-window.c:3040
 msgid "Outgoing calls"
 msgstr "Chamadas de voz saíntes"
 
-#: ../libempathy-gtk/empathy-log-window.c:3049
+#: ../libempathy-gtk/empathy-log-window.c:3041
 msgid "Missed calls"
 msgstr "Chamadas perdidas de %s"
 
-#: ../libempathy-gtk/empathy-log-window.c:3071
+#: ../libempathy-gtk/empathy-log-window.c:3061
 msgid "What"
 msgstr "Que"
 
-#: ../libempathy-gtk/empathy-log-window.c:3780
+#: ../libempathy-gtk/empathy-log-window.c:3750
 msgid "Are you sure you want to delete all logs of previous conversations?"
 msgstr "Ten certeza de eliminar tódolos rexistros das conversas anteriores?"
 
-#: ../libempathy-gtk/empathy-log-window.c:3784
+#: ../libempathy-gtk/empathy-log-window.c:3754
 msgid "Clear All"
 msgstr "Limpar todo"
 
-#: ../libempathy-gtk/empathy-log-window.c:3791
+#: ../libempathy-gtk/empathy-log-window.c:3761
 msgid "Delete from:"
 msgstr "Eliminar desde:"
 
@@ -2786,30 +2794,41 @@ msgstr ""
 #. COL_DISPLAY_MARKUP
 #. COL_STATUS_CUSTOMISABLE
 #. COL_TYPE
-#: ../libempathy-gtk/empathy-presence-chooser.c:167
-#: ../libempathy-gtk/empathy-presence-chooser.c:203
+#: ../libempathy-gtk/empathy-presence-chooser.c:166
+#: ../libempathy-gtk/empathy-presence-chooser.c:202
 msgid "Custom Message…"
 msgstr "Mensaxe personalizada…"
 
-#: ../libempathy-gtk/empathy-presence-chooser.c:220
-#: ../libempathy-gtk/empathy-presence-chooser.c:222
+#: ../libempathy-gtk/empathy-presence-chooser.c:219
+#: ../libempathy-gtk/empathy-presence-chooser.c:221
 msgid "Edit Custom Messages…"
 msgstr "Editar mensaxes personalizadas…"
 
-#: ../libempathy-gtk/empathy-presence-chooser.c:345
+#: ../libempathy-gtk/empathy-presence-chooser.c:344
 msgid "Click to remove this status as a favorite"
 msgstr "Faga clic para eliminar este estado como favorito"
 
-#: ../libempathy-gtk/empathy-presence-chooser.c:354
+#: ../libempathy-gtk/empathy-presence-chooser.c:353
 msgid "Click to make this status a favorite"
 msgstr "Faga clic para facer este estado un dos favoritos"
 
-#: ../libempathy-gtk/empathy-presence-chooser.c:388
+#. Translators: %s is a status message like 'At the pub' for example
+#: ../libempathy-gtk/empathy-presence-chooser.c:387
+#, c-format
+msgid ""
+"<b>Current message: %s</b>\n"
+"<small><i>Press Enter to set the new message or Esc to cancel.</i></small>"
+msgstr ""
+"<b>Mensaxe actual: %s</b>\n"
+"<small><i>Prema Intro para estabelecer o novo mensaxe ou Esc para cancelar.</"
+"i></small>"
+
+#: ../libempathy-gtk/empathy-presence-chooser.c:396
 msgid "Set status"
 msgstr "Estabelecer status"
 
 #. Custom messages
-#: ../libempathy-gtk/empathy-presence-chooser.c:1135
+#: ../libempathy-gtk/empathy-presence-chooser.c:1147
 msgid "Custom messages…"
 msgstr "Mensaxes personalizadas…"
 
@@ -3208,34 +3227,34 @@ msgid "_Select"
 msgstr "_Seleccionar"
 
 # rever
-#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:202
+#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:201
 msgid "No error message"
 msgstr "Non hai mensaxe de erro"
 
-#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:275
+#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:274
 msgid "Instant Message (Empathy)"
 msgstr "Mensaxe instantáneo (Empathy)"
 
 # rever
-#: ../src/empathy.c:435
+#: ../src/empathy.c:425
 msgid "Don't connect on startup"
 msgstr "Non conectarse ao inicio"
 
 # rever
-#: ../src/empathy.c:439
+#: ../src/empathy.c:429
 msgid "Don't display the contact list or any other dialogs on startup"
 msgstr "Non mostrar a lista de contactos nin outros diálogos no inicio"
 
 # rever
-#: ../src/empathy.c:454
+#: ../src/empathy.c:444
 msgid "- Empathy IM Client"
 msgstr " - Cliente de mensaxaría instantánea Empathy"
 
-#: ../src/empathy.c:641
+#: ../src/empathy.c:620
 msgid "Error contacting the Account Manager"
 msgstr "Produciuse un erro ao contactar co Xestor de contas"
 
-#: ../src/empathy.c:643
+#: ../src/empathy.c:622
 #, c-format
 msgid ""
 "There was an error while trying to connect to the Telepathy Account Manager. "
@@ -3302,42 +3321,42 @@ msgstr ""
 
 #. The primary text of the dialog shown to the user when he is about to lose
 #. * unsaved changes
-#: ../src/empathy-accounts-dialog.c:72
+#: ../src/empathy-accounts-dialog.c:71
 #, c-format
 msgid "There are unsaved modifications to your %s account."
 msgstr "Hai modificacións sen gardar respecto da súa conta %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:76
+#: ../src/empathy-accounts-dialog.c:75
 msgid "Your new account has not been saved yet."
 msgstr "A súa nova conta aínda non foi gardada."
 
-#: ../src/empathy-accounts-dialog.c:381
+#: ../src/empathy-accounts-dialog.c:404
 #: ../src/empathy-streamed-media-window.c:759
-#: ../src/empathy-call-window.c:1289
+#: ../src/empathy-call-window.c:1267
 msgid "Connecting…"
 msgstr "Conectando…"
 
-#: ../src/empathy-accounts-dialog.c:422
+#: ../src/empathy-accounts-dialog.c:445
 #, c-format
 msgid "Offline — %s"
 msgstr "Desconectado — %s"
 
-#: ../src/empathy-accounts-dialog.c:434
+#: ../src/empathy-accounts-dialog.c:457
 #, c-format
 msgid "Disconnected — %s"
 msgstr "Desconectado — %s"
 
-#: ../src/empathy-accounts-dialog.c:445
+#: ../src/empathy-accounts-dialog.c:468
 msgid "Offline — No Network Connection"
 msgstr "Desconectado — Sen conexión de rede"
 
-#: ../src/empathy-accounts-dialog.c:452
+#: ../src/empathy-accounts-dialog.c:475
 msgid "Unknown Status"
 msgstr "Estado descoñecido"
 
-#: ../src/empathy-accounts-dialog.c:469
+#: ../src/empathy-accounts-dialog.c:492
 msgid ""
 "This account has been disabled because it relies on an old, unsupported "
 "backend. Please install telepathy-haze and restart your session to migrate "
@@ -3346,39 +3365,39 @@ msgstr ""
 "Esta conta desactivouse porque básease nun «backend» non compatíbel. Instale "
 "telepathy-haze e reinicie a sesión para migrar esta conta."
 
-#: ../src/empathy-accounts-dialog.c:479
+#: ../src/empathy-accounts-dialog.c:502
 msgid "Offline — Account Disabled"
 msgstr "Desconectado — Conta desactivada"
 
 # rever
-#: ../src/empathy-accounts-dialog.c:585
+#: ../src/empathy-accounts-dialog.c:608
 msgid "Edit Connection Parameters"
 msgstr "Editar os parámetros da conexión"
 
-#: ../src/empathy-accounts-dialog.c:750
+#: ../src/empathy-accounts-dialog.c:773
 msgid "Failed to retrieve your personal information from the server."
 msgstr "Produciuse un fallo ao recuperar a súa información persoal do servidor"
 
-#: ../src/empathy-accounts-dialog.c:756
+#: ../src/empathy-accounts-dialog.c:779
 msgid "Go online to edit your personal information."
 msgstr "Conéctese para editar a súa información persoal"
 
-#: ../src/empathy-accounts-dialog.c:843
+#: ../src/empathy-accounts-dialog.c:866
 msgid "_Edit Connection Parameters..."
 msgstr "_Editar os parámetros da conexión…"
 
 # rever
-#: ../src/empathy-accounts-dialog.c:1339
+#: ../src/empathy-accounts-dialog.c:1362
 #, c-format
 msgid "Do you want to remove %s from your computer?"
 msgstr "Está seguro de que quere eliminar o grupo '%s' do seu computador?"
 
-#: ../src/empathy-accounts-dialog.c:1343
+#: ../src/empathy-accounts-dialog.c:1366
 msgid "This will not remove your account on the server."
 msgstr "Isto non eliminará a súa conta no servidor."
 
 # rever
-#: ../src/empathy-accounts-dialog.c:1579
+#: ../src/empathy-accounts-dialog.c:1571
 msgid ""
 "You are about to select another account, which will discard\n"
 "your changes. Are you sure you want to proceed?"
@@ -3386,25 +3405,26 @@ msgstr ""
 "Vai seleccionar outra conta, e descartaranse os seus cambios\n"
 "Está seguro de que quere proceder?"
 
-#. Menu items: to enabled/disable the account
-#: ../src/empathy-accounts-dialog.c:1755
-msgid "_Enable"
-msgstr "_Activar"
+#. Menu item: to enabled/disable the account
+#: ../src/empathy-accounts-dialog.c:1762
+msgid "_Enabled"
+msgstr "_Activado"
 
-#: ../src/empathy-accounts-dialog.c:1756
-msgid "_Disable"
-msgstr "_Desactivar"
+#. Menu item: Rename
+#: ../src/empathy-accounts-dialog.c:1785
+msgid "Rename"
+msgstr "Renomear"
 
-#: ../src/empathy-accounts-dialog.c:2184
+#: ../src/empathy-accounts-dialog.c:2201
 msgid "_Skip"
 msgstr "_Omitir"
 
-#: ../src/empathy-accounts-dialog.c:2188
+#: ../src/empathy-accounts-dialog.c:2205
 msgid "_Connect"
 msgstr "_Conectar"
 
 # rever
-#: ../src/empathy-accounts-dialog.c:2365
+#: ../src/empathy-accounts-dialog.c:2384
 msgid ""
 "You are about to close the window, which will discard\n"
 "your changes. Are you sure you want to proceed?"
@@ -3435,20 +3455,20 @@ msgid "No protocol backends installed"
 msgstr "Non hai «backends» de protocolos instalados"
 
 # rever
-#: ../src/empathy-auth-client.c:288
+#: ../src/empathy-auth-client.c:286
 msgid " - Empathy authentication client"
 msgstr "- Cliente de autenticación Empathy"
 
-#: ../src/empathy-auth-client.c:304
+#: ../src/empathy-auth-client.c:302
 msgid "Empathy authentication client"
 msgstr "Cliente de autenticación Empathy"
 
 # rever
-#: ../src/empathy-av.c:118 ../src/empathy-call.c:201
+#: ../src/empathy-av.c:115 ../src/empathy-call.c:198
 msgid "- Empathy Audio/Video Client"
 msgstr "- Cliente de voz/vídeo Empathy"
 
-#: ../src/empathy-av.c:134 ../src/empathy-call.c:223
+#: ../src/empathy-av.c:131 ../src/empathy-call.c:220
 msgid "Empathy Audio/Video Client"
 msgstr "Cliente de voz/vídeo Empathy"
 
@@ -3494,33 +3514,33 @@ 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:1211
-#: ../src/empathy-call-window.c:1889
+#: ../src/empathy-call-window.c:1861
 #, c-format
 msgid "Call with %s"
 msgstr "Chamada con %s"
 
 #: ../src/empathy-streamed-media-window.c:1444
-#: ../src/empathy-call-window.c:2133
+#: ../src/empathy-call-window.c:2105
 msgid "The IP address as seen by the machine"
 msgstr "O enderezo IP como é visto polo computador"
 
 #: ../src/empathy-streamed-media-window.c:1446
-#: ../src/empathy-call-window.c:2135
+#: ../src/empathy-call-window.c:2107
 msgid "The IP address as seen by a server on the Internet"
 msgstr "O enderezo IP como é visto por un servidor na Internet"
 
 #: ../src/empathy-streamed-media-window.c:1448
-#: ../src/empathy-call-window.c:2137
+#: ../src/empathy-call-window.c:2109
 msgid "The IP address of the peer as seen by the other side"
 msgstr "O enderezo IP do par como é visto pola outra parte"
 
 #: ../src/empathy-streamed-media-window.c:1450
-#: ../src/empathy-call-window.c:2139
+#: ../src/empathy-call-window.c:2111
 msgid "The IP address of a relay server"
 msgstr "O enderezo IP dun servidor de desvío"
 
 #: ../src/empathy-streamed-media-window.c:1452
-#: ../src/empathy-call-window.c:2141
+#: ../src/empathy-call-window.c:2113
 msgid "The IP address of the multicast group"
 msgstr "O enderezo IP do grupo multicast"
 
@@ -3541,12 +3561,12 @@ msgstr "Conectado — %d:%02dm"
 
 # rever
 #: ../src/empathy-streamed-media-window.c:2199
-#: ../src/empathy-call-window.c:2992
+#: ../src/empathy-call-window.c:2964
 msgid "Technical Details"
 msgstr "Detalles técnicos"
 
 #: ../src/empathy-streamed-media-window.c:2237
-#: ../src/empathy-call-window.c:3031
+#: ../src/empathy-call-window.c:3003
 #, c-format
 msgid ""
 "%s's software does not understand any of the audio formats supported by your "
@@ -3556,7 +3576,7 @@ msgstr ""
 "computador"
 
 #: ../src/empathy-streamed-media-window.c:2242
-#: ../src/empathy-call-window.c:3036
+#: ../src/empathy-call-window.c:3008
 #, c-format
 msgid ""
 "%s's software does not understand any of the video formats supported by your "
@@ -3566,7 +3586,7 @@ msgstr ""
 "computador"
 
 #: ../src/empathy-streamed-media-window.c:2248
-#: ../src/empathy-call-window.c:3042
+#: ../src/empathy-call-window.c:3014
 #, c-format
 msgid ""
 "Can't establish a connection to %s. One of you might be on a network that "
@@ -3576,24 +3596,24 @@ msgstr ""
 "que non permite conexións directas."
 
 #: ../src/empathy-streamed-media-window.c:2254
-#: ../src/empathy-call-window.c:3048
+#: ../src/empathy-call-window.c:3020
 msgid "There was a failure on the network"
 msgstr "Produciuse un fallo na rede"
 
 #: ../src/empathy-streamed-media-window.c:2258
-#: ../src/empathy-call-window.c:3052
+#: ../src/empathy-call-window.c:3024
 msgid ""
 "The audio formats necessary for this call are not installed on your computer"
 msgstr "Non ten instalados os formatos de audio necesarios neste computador"
 
 #: ../src/empathy-streamed-media-window.c:2261
-#: ../src/empathy-call-window.c:3055
+#: ../src/empathy-call-window.c:3027
 msgid ""
 "The video formats necessary for this call are not installed on your computer"
 msgstr "Non ten instalados os formatos de vídeo necesarios neste computador"
 
 #: ../src/empathy-streamed-media-window.c:2271
-#: ../src/empathy-call-window.c:3067
+#: ../src/empathy-call-window.c:3039
 #, c-format
 msgid ""
 "Something unexpected happened in a Telepathy component. Please <a href=\"%s"
@@ -3605,22 +3625,22 @@ msgstr ""
 "«Depuración» no menú Axuda."
 
 #: ../src/empathy-streamed-media-window.c:2279
-#: ../src/empathy-call-window.c:3076
+#: ../src/empathy-call-window.c:3048
 msgid "There was a failure in the call engine"
 msgstr "Produciuse un fallo ao chamar ao motor"
 
 #: ../src/empathy-streamed-media-window.c:2282
-#: ../src/empathy-call-window.c:3079
+#: ../src/empathy-call-window.c:3051
 msgid "The end of the stream was reached"
 msgstr "Chegouse ao final do fluxo"
 
 #: ../src/empathy-streamed-media-window.c:2322
-#: ../src/empathy-call-window.c:3119
+#: ../src/empathy-call-window.c:3091
 msgid "Can't establish audio stream"
 msgstr "Non é posíbel estabelecer un fluxo de audio"
 
 #: ../src/empathy-streamed-media-window.c:2332
-#: ../src/empathy-call-window.c:3129
+#: ../src/empathy-call-window.c:3101
 msgid "Can't establish video stream"
 msgstr "Non é posíbel estabelecer un fluxo de vídeo"
 
@@ -3735,8 +3755,8 @@ msgstr "Códec de codificación:"
 
 #: ../src/empathy-call-window.ui.h:28
 #: ../src/empathy-streamed-media-window.ui.h:21
-#: ../src/empathy-call-window.c:2542 ../src/empathy-call-window.c:2543
-#: ../src/empathy-call-window.c:2544 ../src/empathy-call-window.c:2545
+#: ../src/empathy-call-window.c:2514 ../src/empathy-call-window.c:2515
+#: ../src/empathy-call-window.c:2516 ../src/empathy-call-window.c:2517
 msgid "Unknown"
 msgstr "Descoñecido"
 
@@ -3761,11 +3781,11 @@ msgid "Audio"
 msgstr "Son"
 
 # rever
-#: ../src/empathy-chat-window.c:289
+#: ../src/empathy-chat-window.c:288
 msgid "Close this window?"
 msgstr "Pechar esta xanela?"
 
-#: ../src/empathy-chat-window.c:294
+#: ../src/empathy-chat-window.c:293
 #, c-format
 msgid ""
 "Closing this window will leave %s. You will not receive any further messages "
@@ -3774,7 +3794,7 @@ msgstr ""
 "Pechar esta xanela fará que abandone %s. Non recibirá máis mensaxes até que "
 "se una de novo."
 
-#: ../src/empathy-chat-window.c:305
+#: ../src/empathy-chat-window.c:304
 #, c-format
 msgid ""
 "Closing this window will leave a chat room. You will not receive any further "
@@ -3789,59 +3809,59 @@ msgstr[1] ""
 "Pechar esta xanela fará que abandone %u salas de chat. Non recibirá máis "
 "mensaxes até que se una de novo."
 
-#: ../src/empathy-chat-window.c:314
+#: ../src/empathy-chat-window.c:313
 #, c-format
 msgid "Leave %s?"
 msgstr "Pechar %s?"
 
-#: ../src/empathy-chat-window.c:315
+#: ../src/empathy-chat-window.c:314
 msgid ""
 "You will not receive any further messages from this chat room until you "
 "rejoin it."
 msgstr "Non recibirá máis mensaxes deste chat até que se una de novo."
 
-#: ../src/empathy-chat-window.c:334
+#: ../src/empathy-chat-window.c:333
 msgid "Close window"
 msgstr "Pechar a xanela"
 
-#: ../src/empathy-chat-window.c:334
+#: ../src/empathy-chat-window.c:333
 msgid "Leave room"
 msgstr "Abandonar a sala"
 
-#: ../src/empathy-chat-window.c:640 ../src/empathy-chat-window.c:660
+#: ../src/empathy-chat-window.c:639 ../src/empathy-chat-window.c:659
 #, c-format
 msgid "%s (%d unread)"
 msgid_plural "%s (%d unread)"
 msgstr[0] "%s (%d sen ler)"
 msgstr[1] "%s (%d sen ler)"
 
-#: ../src/empathy-chat-window.c:652
+#: ../src/empathy-chat-window.c:651
 #, c-format
 msgid "%s (and %u other)"
 msgid_plural "%s (and %u others)"
 msgstr[0] "%s (e outro %u)"
 msgstr[1] "%s (e outros %u)"
 
-#: ../src/empathy-chat-window.c:668
+#: ../src/empathy-chat-window.c:667
 #, c-format
 msgid "%s (%d unread from others)"
 msgid_plural "%s (%d unread from others)"
 msgstr[0] "%s (%d sen ler de outros)"
 msgstr[1] "%s (%d sen ler de outros)"
 
-#: ../src/empathy-chat-window.c:677
+#: ../src/empathy-chat-window.c:676
 #, c-format
 msgid "%s (%d unread from all)"
 msgid_plural "%s (%d unread from all)"
 msgstr[0] "%s (%d sen ler de todos)"
 msgstr[1] "%s (%d sen ler de todos)"
 
-#: ../src/empathy-chat-window.c:892
+#: ../src/empathy-chat-window.c:891
 msgid "SMS:"
 msgstr "SMS:"
 
 # rever
-#: ../src/empathy-chat-window.c:902
+#: ../src/empathy-chat-window.c:901
 #, c-format
 msgid "Sending %d message"
 msgid_plural "Sending %d messages"
@@ -3849,7 +3869,7 @@ msgstr[0] "Enviando %d mensaxe."
 msgstr[1] "Enviando %d mensaxes."
 
 # rever
-#: ../src/empathy-chat-window.c:924
+#: ../src/empathy-chat-window.c:923
 msgid "Typing a message."
 msgstr "Escribindo unha mensaxe."
 
@@ -3941,7 +3961,7 @@ msgid "Incoming video call"
 msgstr "Chamada de vídeo entrante"
 
 # rever
-#: ../src/empathy-event-manager.c:522 ../src/empathy-call-window.c:1519
+#: ../src/empathy-event-manager.c:522 ../src/empathy-call-window.c:1483
 msgid "Incoming call"
 msgstr "Chamada entrante"
 
@@ -3958,7 +3978,7 @@ msgid "%s is calling you. Do you want to answer?"
 msgstr "%s estao chamando. Quere responder?"
 
 #: ../src/empathy-event-manager.c:530 ../src/empathy-event-manager.c:731
-#: ../src/empathy-event-manager.c:764 ../src/empathy-call-window.c:1525
+#: ../src/empathy-event-manager.c:764 ../src/empathy-call-window.c:1489
 #, c-format
 msgid "Incoming call from %s"
 msgstr "Chamada entrante de %s"
@@ -3977,7 +3997,7 @@ msgid "_Answer with video"
 msgstr "_Responder con vídeo"
 
 #: ../src/empathy-event-manager.c:731 ../src/empathy-event-manager.c:764
-#: ../src/empathy-call-window.c:1525
+#: ../src/empathy-call-window.c:1489
 #, c-format
 msgid "Incoming video call from %s"
 msgstr "Videochamada entrante de %s"
@@ -4026,7 +4046,7 @@ msgstr "Vostede foi convidado a unirse a %s"
 msgid "Incoming file transfer from %s"
 msgstr "Transferencia de ficheiro entrante de %s"
 
-#: ../src/empathy-event-manager.c:1146 ../src/empathy-roster-window.c:374
+#: ../src/empathy-event-manager.c:1146 ../src/empathy-roster-window.c:373
 msgid "Password required"
 msgstr "Requírese o contrasinal"
 
@@ -4187,89 +4207,89 @@ msgid "Import Accounts"
 msgstr "Importar contas"
 
 #. Translators: this is the header of a treeview column
-#: ../src/empathy-import-widget.c:316
+#: ../src/empathy-import-widget.c:303
 msgid "Import"
 msgstr "Importar"
 
-#: ../src/empathy-import-widget.c:325
+#: ../src/empathy-import-widget.c:312
 msgid "Protocol"
 msgstr "Protocolo"
 
-#: ../src/empathy-import-widget.c:349
+#: ../src/empathy-import-widget.c:336
 msgid "Source"
 msgstr "Orixe"
 
-#: ../src/empathy-roster-window.c:391
+#: ../src/empathy-roster-window.c:390
 msgid "Provide Password"
 msgstr "Escriba o seu contrasinal"
 
-#: ../src/empathy-roster-window.c:397
+#: ../src/empathy-roster-window.c:396
 msgid "Disconnect"
 msgstr "Desconectar"
 
-#: ../src/empathy-roster-window.c:657
+#: ../src/empathy-roster-window.c:656
 msgid "You need to setup an account to see contacts here."
 msgstr "Debe configurar unha conta para ver contactos aquí."
 
 # rever
-#: ../src/empathy-roster-window.c:673
+#: ../src/empathy-roster-window.c:672
 msgid "No match found"
 msgstr "Non se atopou ningunha coincidencia."
 
-#: ../src/empathy-roster-window.c:783
+#: ../src/empathy-roster-window.c:782
 #, c-format
 msgid "Sorry, %s accounts can’t be used until your %s software is updated."
 msgstr ""
 "As contas de %s non se poden usar até que non teña actualizado o seu "
 "software %s."
 
-#: ../src/empathy-roster-window.c:849
+#: ../src/empathy-roster-window.c:848
 msgid "Update software..."
 msgstr "Actualizar software…"
 
-#: ../src/empathy-roster-window.c:855 ../src/empathy-roster-window.c:972
+#: ../src/empathy-roster-window.c:854 ../src/empathy-roster-window.c:971
 msgid "Close"
 msgstr "Pechar"
 
-#: ../src/empathy-roster-window.c:960
+#: ../src/empathy-roster-window.c:959
 msgid "Reconnect"
 msgstr "Reconectar"
 
-#: ../src/empathy-roster-window.c:966
+#: ../src/empathy-roster-window.c:965
 msgid "Edit Account"
 msgstr "Editar a conta"
 
 #. Translators: this string will be something like:
 #. * Top up My Account ($1.23)..."
-#: ../src/empathy-roster-window.c:1110
+#: ../src/empathy-roster-window.c:1109
 #, c-format
 msgid "Top up %s (%s)..."
 msgstr "Recargar %s (%s)…"
 
-#: ../src/empathy-roster-window.c:1156
+#: ../src/empathy-roster-window.c:1155
 msgid "Top up account credit"
 msgstr "Recargar o saldo da conta"
 
 #. top up button
-#: ../src/empathy-roster-window.c:1228
+#: ../src/empathy-roster-window.c:1227
 msgid "Top Up..."
 msgstr "Recargar…"
 
-#: ../src/empathy-roster-window.c:1952
+#: ../src/empathy-roster-window.c:1951
 msgid "Contact"
 msgstr "Contacto"
 
-#: ../src/empathy-roster-window.c:2150
+#: ../src/empathy-roster-window.c:2149
 msgid "You need to enable one of your accounts to see contacts here."
 msgstr "Debe activar unha das súas contas para ver contactos aquí."
 
 #. translators: argument is an account name
-#: ../src/empathy-roster-window.c:2158
+#: ../src/empathy-roster-window.c:2157
 #, c-format
 msgid "You need to enable %s to see contacts here."
 msgstr "Debe activar %s para ver contactos aquí."
 
-#: ../src/empathy-roster-window.c:2460
+#: ../src/empathy-roster-window.c:2459
 msgid "Contact List"
 msgstr "Lista de contactos"
 
@@ -4380,7 +4400,7 @@ msgstr "Membros"
 
 #. Translators: Room/Join's roomlist tooltip. Parameters are a channel name,
 #. yes/no, yes/no and a number.
-#: ../src/empathy-new-chatroom-dialog.c:637
+#: ../src/empathy-new-chatroom-dialog.c:636
 #, c-format
 msgid ""
 "%s\n"
@@ -4393,21 +4413,21 @@ msgstr ""
 "Requírese contrasinal: %s\n"
 "Membros: %s"
 
+#: ../src/empathy-new-chatroom-dialog.c:638
 #: ../src/empathy-new-chatroom-dialog.c:639
-#: ../src/empathy-new-chatroom-dialog.c:640
 msgid "Yes"
 msgstr "Si"
 
+#: ../src/empathy-new-chatroom-dialog.c:638
 #: ../src/empathy-new-chatroom-dialog.c:639
-#: ../src/empathy-new-chatroom-dialog.c:640
 msgid "No"
 msgstr "Non"
 
-#: ../src/empathy-new-chatroom-dialog.c:668
+#: ../src/empathy-new-chatroom-dialog.c:666
 msgid "Could not start room listing"
 msgstr "Non foi posíbel arrincar a lista da sala"
 
-#: ../src/empathy-new-chatroom-dialog.c:678
+#: ../src/empathy-new-chatroom-dialog.c:676
 msgid "Could not stop room listing"
 msgstr "Non foi posíbel deter a lista da sala"
 
@@ -4482,47 +4502,47 @@ msgid "Language"
 msgstr "Idioma"
 
 #. translators: Contact name for the chat theme preview
-#: ../src/empathy-preferences.c:726
+#: ../src/empathy-preferences.c:724
 msgid "Juliet"
 msgstr "Xulieta"
 
 #. translators: Contact name for the chat theme preview
-#: ../src/empathy-preferences.c:733
+#: ../src/empathy-preferences.c:731
 msgid "Romeo"
 msgstr "Romeo"
 
 #. translators: Quote from Romeo & Julier, for chat theme preview
-#: ../src/empathy-preferences.c:739
+#: ../src/empathy-preferences.c:737
 msgid "O Romeo, Romeo, wherefore art thou Romeo?"
 msgstr "Oh, Romeu, Romeu!, ¿onde estás que non te vexo?"
 
 #. translators: Quote from Romeo & Julier, for chat theme preview
-#: ../src/empathy-preferences.c:743
+#: ../src/empathy-preferences.c:741
 msgid "Deny thy father and refuse thy name;"
 msgstr "Nega ao teu pai e rexeita o teu nome;"
 
 #. translators: Quote from Romeo & Julier, for chat theme preview
-#: ../src/empathy-preferences.c:746
+#: ../src/empathy-preferences.c:744
 msgid "Or if thou wilt not, be but sworn my love"
 msgstr "Ou, se non queres, xúrame tan só que me amas"
 
 #. translators: Quote from Romeo & Julier, for chat theme preview
-#: ../src/empathy-preferences.c:749
+#: ../src/empathy-preferences.c:747
 msgid "And I'll no longer be a Capulet."
 msgstr "E deixarei eu de ser un Capuleto."
 
 #. translators: Quote from Romeo & Julier, for chat theme preview
-#: ../src/empathy-preferences.c:752
+#: ../src/empathy-preferences.c:750
 msgid "Shall I hear more, or shall I speak at this?"
 msgstr "Debo escoitar máis ou contestar ao dito?"
 
 # rever
 #. translators: Quote from Romeo & Julier, for chat theme preview
-#: ../src/empathy-preferences.c:755
+#: ../src/empathy-preferences.c:753
 msgid "Juliet has disconnected"
 msgstr "Xulieta desconectouse"
 
-#: ../src/empathy-preferences.c:1159
+#: ../src/empathy-preferences.c:1157
 msgid "Preferences"
 msgstr "Preferencias"
 
@@ -4783,11 +4803,6 @@ msgstr "Ligazón a pastebin"
 msgid "Pastebin response"
 msgstr "Resposta de pastebin"
 
-#: ../src/empathy-debug-window.c:1680
-#, c-format
-msgid "%s"
-msgstr "%s"
-
 #: ../src/empathy-debug-window.c:1683
 msgid "Data too large for a single paste. Please save logs to file."
 msgstr ""
@@ -4857,16 +4872,16 @@ msgstr ""
 "O xestor de conexións seleccionado non é compatíbel coa extensión de "
 "depuración remota."
 
-#: ../src/empathy-invite-participant-dialog.c:202
-#: ../src/empathy-invite-participant-dialog.c:230
+#: ../src/empathy-invite-participant-dialog.c:200
+#: ../src/empathy-invite-participant-dialog.c:228
 msgid "Invite Participant"
 msgstr "Convidar participante"
 
-#: ../src/empathy-invite-participant-dialog.c:203
+#: ../src/empathy-invite-participant-dialog.c:201
 msgid "Choose a contact to invite into the conversation:"
 msgstr "Seleccione un contacto para convidalo á conversa:"
 
-#: ../src/empathy-invite-participant-dialog.c:226
+#: ../src/empathy-invite-participant-dialog.c:224
 msgid "Invite"
 msgstr "Convidar"
 
@@ -4896,7 +4911,7 @@ msgid "- Empathy Accounts"
 msgstr "- Contas de Empathy"
 
 # rever
-#: ../src/empathy-accounts.c:231
+#: ../src/empathy-accounts.c:230
 msgid "Empathy Accounts"
 msgstr "Contas de Empathy"
 
@@ -4908,49 +4923,49 @@ msgstr "Mostrar un servizo en particular"
 msgid "- Empathy Debugger"
 msgstr "- Depurador de Empathy"
 
-#: ../src/empathy-debugger.c:113
+#: ../src/empathy-debugger.c:112
 msgid "Empathy Debugger"
 msgstr "Depurador de Empathy"
 
 # rever
-#: ../src/empathy-chat.c:109
+#: ../src/empathy-chat.c:106
 msgid "- Empathy Chat Client"
 msgstr "- Cliente de conversa Empathy"
 
-#: ../src/empathy-notifications-approver.c:189
+#: ../src/empathy-notifications-approver.c:190
 msgid "Respond"
 msgstr "Responder"
 
-#: ../src/empathy-notifications-approver.c:203
-#: ../src/empathy-call-window.c:1529
+#: ../src/empathy-notifications-approver.c:204
+#: ../src/empathy-call-window.c:1493
 msgid "Reject"
 msgstr "Rexeitar"
 
 # rever
-#: ../src/empathy-notifications-approver.c:208
-#: ../src/empathy-notifications-approver.c:213
-#: ../src/empathy-call-window.c:1530
+#: ../src/empathy-notifications-approver.c:209
+#: ../src/empathy-notifications-approver.c:214
+#: ../src/empathy-call-window.c:1494
 msgid "Answer"
 msgstr "Responder"
 
-#: ../src/empathy-notifications-approver.c:213
+#: ../src/empathy-notifications-approver.c:214
 msgid "Answer with video"
 msgstr "Responder con vídeo"
 
-#: ../src/empathy-notifications-approver.c:221
-#: ../src/empathy-notifications-approver.c:231
+#: ../src/empathy-notifications-approver.c:222
+#: ../src/empathy-notifications-approver.c:232
 msgid "Decline"
 msgstr "Rexeitar"
 
-#: ../src/empathy-notifications-approver.c:225
-#: ../src/empathy-notifications-approver.c:236
+#: ../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:246
+#: ../src/empathy-notifications-approver.c:247
 msgid "Provide"
 msgstr "Fornecer"
 
@@ -4961,39 +4976,39 @@ msgstr "%s tentou chamarlle, pero vostede estaba noutra chamada."
 
 #. Translators: this is an "Info" label. It should be as short
 #. * as possible.
-#: ../src/empathy-call-window.c:1140 ../src/empathy-call-window.c:1162
+#: ../src/empathy-call-window.c:1124 ../src/empathy-call-window.c:1140
 msgid "i"
 msgstr "Información"
 
-#: ../src/empathy-call-window.c:2888
+#: ../src/empathy-call-window.c:2860
 msgid "On hold"
 msgstr "En espera"
 
-#: ../src/empathy-call-window.c:2891
+#: ../src/empathy-call-window.c:2863
 msgid "Mute"
 msgstr "Silenciar"
 
-#: ../src/empathy-call-window.c:2893
+#: ../src/empathy-call-window.c:2865
 msgid "Duration"
 msgstr "Duración"
 
 # rever
 #. Translators: 'status - minutes:seconds' the caller has been connected
-#: ../src/empathy-call-window.c:2896
+#: ../src/empathy-call-window.c:2868
 #, c-format
 msgid "%s — %d:%02dm"
 msgstr "%s — %d:%02dm"
 
-#: ../src/empathy-call-window.c:3166
+#: ../src/empathy-call-window.c:3138
 #, c-format
 msgid "Your current balance is %s."
 msgstr "O seu crédito actual é %s."
 
-#: ../src/empathy-call-window.c:3170
+#: ../src/empathy-call-window.c:3142
 msgid "Sorry, you don’t have enough credit for that call."
 msgstr "Non ten crédito dabondo para facer esta chamada."
 
-#: ../src/empathy-call-window.c:3172
+#: ../src/empathy-call-window.c:3144
 msgid "Top Up"
 msgstr "Recargar"
 
@@ -5034,6 +5049,15 @@ msgstr ""
 "característica usando o diálogo <span style=\"italic\">Editar → Contas</"
 "span> na Lista de contactos."
 
+#~ msgid "_Enable"
+#~ msgstr "_Activar"
+
+#~ msgid "_Disable"
+#~ msgstr "_Desactivar"
+
+#~ msgid "%s"
+#~ msgstr "%s"
+
 # rever
 #~ msgid "There was an error while importing the accounts."
 #~ msgstr "Produciuse un erro ao importar as contas."
@@ -5352,9 +5376,6 @@ msgstr ""
 #~ msgid "_For:"
 #~ msgstr "_Por:"
 
-#~ msgid "_Enabled"
-#~ msgstr "_Activado"
-
 #~ msgid "Context"
 #~ msgstr "Contexto"
 
index 79162d0b69929e1fa2b3f230e951513aa145b66e..28d1f6b69d39f16ae5a4124476c4316cd56b2664 100644 (file)
--- a/po/he.po
+++ b/po/he.po
@@ -6,8 +6,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: empathy\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-03-24 19:28+0200\n"
-"PO-Revision-Date: 2012-03-24 19:30+0200\n"
+"POT-Creation-Date: 2012-04-13 01:01+0300\n"
+"PO-Revision-Date: 2012-04-13 01:02+0200\n"
 "Last-Translator: Yaron Shahrabani <sh.yaron@gmail.com>\n"
 "Language-Team: \n"
 "Language: \n"
@@ -39,7 +39,7 @@ msgstr "ניהול חשבונות התכתבות ו־VoIP"
 
 #. Tweak the dialog
 #: ../data/empathy-accounts.desktop.in.in.h:2
-#: ../src/empathy-accounts-dialog.c:2513
+#: ../src/empathy-accounts-dialog.c:2527
 msgid "Messaging and VoIP Accounts"
 msgstr "חשבונות התכתבות ו־VoIP"
 
@@ -513,19 +513,19 @@ msgstr "הקובץ הנבחר אינו קובץ רגיל"
 msgid "The selected file is empty"
 msgstr "הקובץ הנבחר ריק"
 
-#: ../libempathy/empathy-message.c:415
+#: ../libempathy/empathy-message.c:407
 #: ../src/empathy-call-observer.c:129
 #, c-format
 msgid "Missed call from %s"
 msgstr "שיחה שלא נענתה מאת %s"
 
 #. Translators: this is an outgoing call, e.g. 'Called Alice'
-#: ../libempathy/empathy-message.c:419
+#: ../libempathy/empathy-message.c:411
 #, c-format
 msgid "Called %s"
 msgstr "התקשרת ל%s"
 
-#: ../libempathy/empathy-message.c:422
+#: ../libempathy/empathy-message.c:414
 #, c-format
 msgid "Call from %s"
 msgstr "שיחה מאת %s"
@@ -762,7 +762,7 @@ msgid "All accounts"
 msgstr "כל החשבונות"
 
 #: ../libempathy-gtk/empathy-account-widget.c:682
-#: ../src/empathy-import-widget.c:336
+#: ../src/empathy-import-widget.c:323
 msgid "Account"
 msgstr "חשבון"
 
@@ -799,11 +799,11 @@ msgstr "ה_חלה"
 msgid "L_og in"
 msgstr "_כניסה"
 
-#: ../libempathy-gtk/empathy-account-widget.c:1812
+#: ../libempathy-gtk/empathy-account-widget.c:1810
 msgid "This account already exists on the server"
 msgstr "חשבון זה כבר קיים על השרת"
 
-#: ../libempathy-gtk/empathy-account-widget.c:1816
+#: ../libempathy-gtk/empathy-account-widget.c:1814
 msgid "Create a new account on the server"
 msgstr "יצירת חשבון חדש על השרת"
 
@@ -812,19 +812,19 @@ msgstr "יצירת חשבון חדש על השרת"
 #. * 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:2241
+#: ../libempathy-gtk/empathy-account-widget.c:2236
 #, c-format
 msgid "%1$s on %2$s"
 msgstr "‏%1$s על גבי %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:2267
+#: ../libempathy-gtk/empathy-account-widget.c:2262
 #, c-format
 msgid "%s Account"
 msgstr "חשבון %s"
 
-#: ../libempathy-gtk/empathy-account-widget.c:2271
+#: ../libempathy-gtk/empathy-account-widget.c:2266
 msgid "New account"
 msgstr "חשבון חדש"
 
@@ -850,7 +850,7 @@ msgstr "מתקדם"
 #: ../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:13
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:14
 #: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:5
 msgid "Pass_word:"
 msgstr "ססמ_ה:"
@@ -860,7 +860,7 @@ msgstr "ססמ_ה:"
 #: ../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:16
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:17
 msgid "Remember Password"
 msgstr "שמירת הססמה"
 
@@ -870,7 +870,7 @@ msgstr "שמירת הססמה"
 #: ../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:17
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:18
 #: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:6
 #: ../libempathy-gtk/empathy-base-password-dialog.c:261
 msgid "Remember password"
@@ -946,36 +946,32 @@ msgstr "מספר מנוי ה־ICQ שלך?"
 msgid "What is your ICQ password?"
 msgstr "ססמת ה־ICQ שלך?"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.c:206
-#: ../libempathy-gtk/empathy-account-widget-sip.c:239
+#: ../libempathy-gtk/empathy-account-widget-sip.c:207
+#: ../libempathy-gtk/empathy-account-widget-sip.c:240
 msgid "Auto"
 msgstr "אוטומטי"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.c:209
+#: ../libempathy-gtk/empathy-account-widget-sip.c:210
 msgid "UDP"
 msgstr "UDP"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.c:212
+#: ../libempathy-gtk/empathy-account-widget-sip.c:213
 msgid "TCP"
 msgstr "TCP"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.c:215
+#: ../libempathy-gtk/empathy-account-widget-sip.c:216
 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:244
+#: ../libempathy-gtk/empathy-account-widget-sip.c:245
 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:249
+#: ../libempathy-gtk/empathy-account-widget-sip.c:250
 msgid "Options"
 msgstr "אפשרויות"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.c:252
+#: ../libempathy-gtk/empathy-account-widget-sip.c:253
 msgid "None"
 msgstr "ללא"
 
@@ -1186,55 +1182,59 @@ msgid "Keep-Alive Options"
 msgstr "אפשרויות Keep-Alive"
 
 #: ../libempathy-gtk/empathy-account-widget-sip.ui.h:9
+msgid "Local IP Address:"
+msgstr "כתובת IP מקומית:"
+
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:10
 msgid "Loose Routing"
 msgstr "Loose Routing"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:10
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:11
 msgid "Mechanism:"
 msgstr "מנגנון:"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:11
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:12
 msgid "Miscellaneous Options"
 msgstr "אפשרויות אחרות"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:12
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:13
 msgid "NAT Traversal Options"
 msgstr "אפשרויות מעקף NAT"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:14
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:15
 msgid "Port:"
 msgstr "_פתחה:"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:15
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:16
 msgid "Proxy Options"
 msgstr "אפשרויות מתווך"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:18
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:19
 msgid "STUN Server:"
 msgstr "שרת STUN:"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:19
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:20
 #: ../libempathy-gtk/empathy-contactinfo-utils.c:114
 msgid "Server:"
 msgstr "שרת:"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:20
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:21
 msgid "Transport:"
 msgstr "תעבורה:"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:21
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:22
 msgid "Use this account to call _landlines and mobile phones"
 msgstr "יש להשתמש בחשבון זה על מנת להתקשר לטלפונים ניי_חים וניידים"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:22
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:23
 msgid "What is your SIP account password?"
 msgstr "מהי ססמת חשבון ה־SIP שלך?"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:23
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:24
 msgid "What is your SIP login ID?"
 msgstr "מהו מזהה ההתחברות של חשבון ה־SIP שלך?"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:24
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:25
 msgid "_Username:"
 msgstr "ש_ם משתמש:"
 
@@ -1320,194 +1320,194 @@ msgstr "אין תמיכה בשיחות חירום בפרוטוקול זה"
 msgid "You don't have enough credit in order to place this call"
 msgstr "אין לך די אשראי כדי לבצע שיחה זו"
 
-#: ../libempathy-gtk/empathy-chat.c:729
+#: ../libempathy-gtk/empathy-chat.c:727
 msgid "Failed to open private chat"
 msgstr "ארע כשל בפתיחת שיחה פרטית"
 
-#: ../libempathy-gtk/empathy-chat.c:787
+#: ../libempathy-gtk/empathy-chat.c:785
 msgid "Topic not supported on this conversation"
 msgstr "אין תמיכה בשימוש בנושא בדיון זה"
 
-#: ../libempathy-gtk/empathy-chat.c:793
+#: ../libempathy-gtk/empathy-chat.c:791
 msgid "You are not allowed to change the topic"
 msgstr "אין לך הרשאה לשנות את הנושא"
 
-#: ../libempathy-gtk/empathy-chat.c:992
+#: ../libempathy-gtk/empathy-chat.c:990
 #, c-format
 msgid "“%s” is not a valid contact ID"
 msgstr "\"%s\" אינו מזהה איש קשר לא תקין"
 
-#: ../libempathy-gtk/empathy-chat.c:1087
+#: ../libempathy-gtk/empathy-chat.c:1085
 msgid "/clear: clear all messages from the current conversation"
 msgstr "/clear: פינוי כל ההודעות מהדיון הנוכחי"
 
-#: ../libempathy-gtk/empathy-chat.c:1090
+#: ../libempathy-gtk/empathy-chat.c:1088
 msgid "/topic <topic>: set the topic of the current conversation"
 msgstr "/topic <נושא>:‎ הגדרת נושא השיחה הנוכחית"
 
-#: ../libempathy-gtk/empathy-chat.c:1093
+#: ../libempathy-gtk/empathy-chat.c:1091
 msgid "/join <chat room ID>: join a new chat room"
 msgstr "/join <זיהוי החדר>:‎ הצטרפות לחדר שיחה חדש"
 
-#: ../libempathy-gtk/empathy-chat.c:1096
+#: ../libempathy-gtk/empathy-chat.c:1094
 msgid "/j <chat room ID>: join a new chat room"
 msgstr "/j <זיהוי החדר>:‎ הצטרפות לחדר שיחה חדש"
 
-#: ../libempathy-gtk/empathy-chat.c:1100
+#: ../libempathy-gtk/empathy-chat.c:1098
 msgid "/part [<chat room ID>] [<reason>]: leave the chat room, by default the current one"
 msgstr "/part [<זיהוי החדר>]‎ [<סיבה>]:‎ עזיבת ערוץ השיחה, הנוכחי הוא בררת המחדל"
 
-#: ../libempathy-gtk/empathy-chat.c:1104
+#: ../libempathy-gtk/empathy-chat.c:1102
 msgid "/query <contact ID> [<message>]: open a private chat"
 msgstr "/query <זיהוי איש הקשר> ‎[<הודעה>]:‎ פתיחת צ׳אט אישי"
 
-#: ../libempathy-gtk/empathy-chat.c:1107
+#: ../libempathy-gtk/empathy-chat.c:1105
 msgid "/msg <contact ID> <message>: open a private chat"
 msgstr "/msg <זיהוי איש הקשר>‎ <הודעה>:‎ פתיחת צ׳אט פרטי"
 
-#: ../libempathy-gtk/empathy-chat.c:1110
+#: ../libempathy-gtk/empathy-chat.c:1108
 msgid "/nick <nickname>: change your nickname on the current server"
 msgstr "/nick <כינוי>:‎ שינוי הכינוי שלך בשרת הנוכחי"
 
-#: ../libempathy-gtk/empathy-chat.c:1113
+#: ../libempathy-gtk/empathy-chat.c:1111
 msgid "/me <message>: send an ACTION message to the current conversation"
 msgstr "/me <הודעה>:‎ שליחת הודעת ACTION לדיון הנוכחי"
 
-#: ../libempathy-gtk/empathy-chat.c:1116
+#: ../libempathy-gtk/empathy-chat.c:1114
 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:1121
+#: ../libempathy-gtk/empathy-chat.c:1119
 msgid "/whois <contact ID>: display information about a contact"
 msgstr "/whois <מזהה המשתמש>:‎ הצגת פרטים על איש הקשר"
 
-#: ../libempathy-gtk/empathy-chat.c:1124
+#: ../libempathy-gtk/empathy-chat.c:1122
 msgid "/help [<command>]: show all supported commands. If <command> is defined, show its usage."
 msgstr "/help [<פקודה>]:‎ הצגת כל הפקודות הנתמכות. אם יש הגדרה ל־<פקודה> יוצג אופן הפעלתה."
 
-#: ../libempathy-gtk/empathy-chat.c:1143
+#: ../libempathy-gtk/empathy-chat.c:1141
 #, c-format
 msgid "Usage: %s"
 msgstr "שימוש: %s"
 
-#: ../libempathy-gtk/empathy-chat.c:1188
+#: ../libempathy-gtk/empathy-chat.c:1186
 msgid "Unknown command"
 msgstr "פקודה לא ידועה"
 
-#: ../libempathy-gtk/empathy-chat.c:1314
+#: ../libempathy-gtk/empathy-chat.c:1312
 msgid "Unknown command; see /help for the available commands"
 msgstr "פקודה בלתי מוכרת; יש לעיין ב־‎/help לצפייה בפקודות הזמינות"
 
-#: ../libempathy-gtk/empathy-chat.c:1565
+#: ../libempathy-gtk/empathy-chat.c:1563
 msgid "insufficient balance to send message"
 msgstr "המאזן אינו מאפשר לשלוח הודעה"
 
-#: ../libempathy-gtk/empathy-chat.c:1569
-#: ../libempathy-gtk/empathy-chat.c:1583
-#: ../libempathy-gtk/empathy-chat.c:1646
+#: ../libempathy-gtk/empathy-chat.c:1567
+#: ../libempathy-gtk/empathy-chat.c:1581
+#: ../libempathy-gtk/empathy-chat.c:1644
 #, c-format
 msgid "Error sending message '%s': %s"
 msgstr "שגיאה בשליחת ההודעה '%s': ‏%s"
 
-#: ../libempathy-gtk/empathy-chat.c:1571
-#: ../libempathy-gtk/empathy-chat.c:1588
-#: ../libempathy-gtk/empathy-chat.c:1650
+#: ../libempathy-gtk/empathy-chat.c:1569
+#: ../libempathy-gtk/empathy-chat.c:1586
+#: ../libempathy-gtk/empathy-chat.c:1648
 #, 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:1577
+#: ../libempathy-gtk/empathy-chat.c:1575
 #, c-format
 msgid "insufficient balance to send message. <a href='%s'>Top up</a>."
 msgstr "המאזן אינו מאפשר לשלוח הודעה. <a href='%s'>Top up</a>."
 
-#: ../libempathy-gtk/empathy-chat.c:1617
+#: ../libempathy-gtk/empathy-chat.c:1615
 msgid "not capable"
 msgstr "ללא יכולת"
 
-#: ../libempathy-gtk/empathy-chat.c:1624
+#: ../libempathy-gtk/empathy-chat.c:1622
 msgid "offline"
 msgstr "לא מחובר"
 
-#: ../libempathy-gtk/empathy-chat.c:1627
+#: ../libempathy-gtk/empathy-chat.c:1625
 msgid "invalid contact"
 msgstr "איש קשר לא תקין"
 
-#: ../libempathy-gtk/empathy-chat.c:1630
+#: ../libempathy-gtk/empathy-chat.c:1628
 msgid "permission denied"
 msgstr "איש קשר לא תקין"
 
-#: ../libempathy-gtk/empathy-chat.c:1633
+#: ../libempathy-gtk/empathy-chat.c:1631
 msgid "too long message"
 msgstr "הודעה ארוכה מדי"
 
-#: ../libempathy-gtk/empathy-chat.c:1636
+#: ../libempathy-gtk/empathy-chat.c:1634
 msgid "not implemented"
 msgstr "לא ממומש"
 
-#: ../libempathy-gtk/empathy-chat.c:1640
+#: ../libempathy-gtk/empathy-chat.c:1638
 msgid "unknown"
 msgstr "לא ידוע"
 
-#: ../libempathy-gtk/empathy-chat.c:1707
-#: ../src/empathy-chat-window.c:920
+#: ../libempathy-gtk/empathy-chat.c:1705
+#: ../src/empathy-chat-window.c:919
 msgid "Topic:"
 msgstr "נושא:"
 
-#: ../libempathy-gtk/empathy-chat.c:1722
+#: ../libempathy-gtk/empathy-chat.c:1720
 #, c-format
 msgid "Topic set to: %s"
 msgstr "הנושא הוגדר ל־: %s"
 
-#: ../libempathy-gtk/empathy-chat.c:1724
+#: ../libempathy-gtk/empathy-chat.c:1722
 #, c-format
 msgid "Topic set by %s to: %s"
 msgstr "הנושא הוגדר על ידי %s בתור: %s"
 
 #. No need to display this 'event' is no topic can be defined anyway
-#: ../libempathy-gtk/empathy-chat.c:1729
+#: ../libempathy-gtk/empathy-chat.c:1727
 msgid "No topic defined"
 msgstr "לא נקבע נושא"
 
-#: ../libempathy-gtk/empathy-chat.c:2245
+#: ../libempathy-gtk/empathy-chat.c:2243
 msgid "(No Suggestions)"
 msgstr "(אין הצעות)"
 
 #. translators: %s is the selected word
-#: ../libempathy-gtk/empathy-chat.c:2313
+#: ../libempathy-gtk/empathy-chat.c:2311
 #, 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:2350
+#: ../libempathy-gtk/empathy-chat.c:2348
 #, c-format
 msgid "Add '%s' to %s Dictionary"
 msgstr "הוספת '%s' למילון %s"
 
-#: ../libempathy-gtk/empathy-chat.c:2420
+#: ../libempathy-gtk/empathy-chat.c:2418
 msgid "Insert Smiley"
 msgstr "הכנס סמיילי"
 
 #. send button
-#: ../libempathy-gtk/empathy-chat.c:2438
+#: ../libempathy-gtk/empathy-chat.c:2436
 #: ../libempathy-gtk/empathy-ui-utils.c:1880
 msgid "_Send"
 msgstr "_שלח"
 
 #. Spelling suggestions
-#: ../libempathy-gtk/empathy-chat.c:2495
+#: ../libempathy-gtk/empathy-chat.c:2493
 msgid "_Spelling Suggestions"
 msgstr "הצעות _איות"
 
-#: ../libempathy-gtk/empathy-chat.c:2584
+#: ../libempathy-gtk/empathy-chat.c:2582
 msgid "Failed to retrieve recent logs"
 msgstr "ארע כשל בקבלת הדוחות האחרונים"
 
-#: ../libempathy-gtk/empathy-chat.c:2723
+#: ../libempathy-gtk/empathy-chat.c:2721
 #, c-format
 msgid "%s has disconnected"
 msgstr "‏%s התנתק"
@@ -1515,12 +1515,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:2730
+#: ../libempathy-gtk/empathy-chat.c:2728
 #, c-format
 msgid "%1$s was kicked by %2$s"
 msgstr "‏%1$s סולק על ידי %2$s"
 
-#: ../libempathy-gtk/empathy-chat.c:2733
+#: ../libempathy-gtk/empathy-chat.c:2731
 #, c-format
 msgid "%s was kicked"
 msgstr "‏%s סולק"
@@ -1528,17 +1528,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:2741
+#: ../libempathy-gtk/empathy-chat.c:2739
 #, c-format
 msgid "%1$s was banned by %2$s"
 msgstr "‏%1$s נחסם על ידי %2$s"
 
-#: ../libempathy-gtk/empathy-chat.c:2744
+#: ../libempathy-gtk/empathy-chat.c:2742
 #, c-format
 msgid "%s was banned"
 msgstr "‏%s נחסם"
 
-#: ../libempathy-gtk/empathy-chat.c:2748
+#: ../libempathy-gtk/empathy-chat.c:2746
 #, c-format
 msgid "%s has left the room"
 msgstr "‏%s עזב את החדר"
@@ -1548,17 +1548,17 @@ msgstr "‏%s עזב את החדר"
 #. * given by the user living the room. If this poses a problem,
 #. * please let us know. :-)
 #.
-#: ../libempathy-gtk/empathy-chat.c:2757
+#: ../libempathy-gtk/empathy-chat.c:2755
 #, c-format
 msgid " (%s)"
 msgstr " (%s)"
 
-#: ../libempathy-gtk/empathy-chat.c:2782
+#: ../libempathy-gtk/empathy-chat.c:2780
 #, c-format
 msgid "%s has joined the room"
 msgstr "‏%s הצטרף לחדר"
 
-#: ../libempathy-gtk/empathy-chat.c:2807
+#: ../libempathy-gtk/empathy-chat.c:2805
 #, c-format
 msgid "%s is now known as %s"
 msgstr "‏%s נודע כעת בכינוי %s"
@@ -1566,58 +1566,58 @@ 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:2994
+#: ../libempathy-gtk/empathy-chat.c:2992
 #: ../src/empathy-streamed-media-window.c:1888
 #: ../src/empathy-event-manager.c:1279
-#: ../src/empathy-call-window.c:1502
-#: ../src/empathy-call-window.c:1552
-#: ../src/empathy-call-window.c:2590
+#: ../src/empathy-call-window.c:1466
+#: ../src/empathy-call-window.c:1516
+#: ../src/empathy-call-window.c:2562
 msgid "Disconnected"
 msgstr "מנותק"
 
 #. Add message
-#: ../libempathy-gtk/empathy-chat.c:3658
+#: ../libempathy-gtk/empathy-chat.c:3656
 msgid "Would you like to store this password?"
 msgstr "האם ברצונך לאחסן ססמה זו?"
 
-#: ../libempathy-gtk/empathy-chat.c:3664
+#: ../libempathy-gtk/empathy-chat.c:3662
 msgid "Remember"
 msgstr "שמירה"
 
-#: ../libempathy-gtk/empathy-chat.c:3674
+#: ../libempathy-gtk/empathy-chat.c:3672
 msgid "Not now"
 msgstr "לא כעת"
 
-#: ../libempathy-gtk/empathy-chat.c:3718
+#: ../libempathy-gtk/empathy-chat.c:3716
 #: ../libempathy-gtk/empathy-bad-password-dialog.c:142
 msgid "Retry"
 msgstr "ניסיון חוזר"
 
-#: ../libempathy-gtk/empathy-chat.c:3722
+#: ../libempathy-gtk/empathy-chat.c:3720
 msgid "Wrong password; please try again:"
 msgstr "ססמה שגויה; נא לנסות שוב:"
 
 #. Add message
-#: ../libempathy-gtk/empathy-chat.c:3852
+#: ../libempathy-gtk/empathy-chat.c:3850
 msgid "This room is protected by a password:"
 msgstr "חדר זה מוגן בססמה:"
 
-#: ../libempathy-gtk/empathy-chat.c:3879
+#: ../libempathy-gtk/empathy-chat.c:3877
 msgid "Join"
 msgstr "הצטרפות"
 
-#: ../libempathy-gtk/empathy-chat.c:4071
+#: ../libempathy-gtk/empathy-chat.c:4069
 #: ../src/empathy-event-manager.c:1300
 msgid "Connected"
 msgstr "מחובר"
 
-#: ../libempathy-gtk/empathy-chat.c:4126
+#: ../libempathy-gtk/empathy-chat.c:4124
 msgid "Conversation"
 msgstr "שיחה"
 
 #. Translators: this string is a something like
 #. * "Escher Cat (SMS)"
-#: ../libempathy-gtk/empathy-chat.c:4131
+#: ../libempathy-gtk/empathy-chat.c:4129
 #, c-format
 msgid "%s (SMS)"
 msgstr "%s (SMS)"
@@ -1648,7 +1648,7 @@ msgstr "עריכת אנשי הקשר החסומים"
 
 #. Account and Identifier
 #: ../libempathy-gtk/empathy-contact-blocking-dialog.ui.h:1
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:506
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:503
 #: ../libempathy-gtk/empathy-contact-widget.ui.h:2
 #: ../libempathy-gtk/empathy-individual-widget.c:1474
 #: ../src/empathy-chatrooms-window.ui.h:1
@@ -1720,157 +1720,157 @@ msgid "_Block User"
 msgstr "_חסימת משתמש"
 
 #. Title
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:499
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:496
 msgid "Search contacts"
 msgstr "חיפוש בין אנשי הקשר"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:529
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:526
 msgid "Search: "
 msgstr "חיפוש:"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:587
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:584
 msgid "_Add Contact"
 msgstr "הוספת _איש קשר"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:605
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:602
 msgid "No contacts found"
 msgstr "לא נמצאו אנשי קשר"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:621
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:618
 msgid "Your message introducing yourself:"
 msgstr "ההודעה המציגה אותך:"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:629
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:626
 msgid "Please let me see when you're online. Thanks!"
 msgstr "נא לאפשר לי לראות מתי מצבך הוא מחובר. תודה!"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:567
+#: ../libempathy-gtk/empathy-contact-widget.c:566
 #: ../libempathy-gtk/empathy-individual-widget.c:304
 msgid "Channels:"
 msgstr "ערוצים:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:747
+#: ../libempathy-gtk/empathy-contact-widget.c:746
 #: ../libempathy-gtk/empathy-individual-widget.c:455
 msgid "Country ISO Code:"
 msgstr "קוד המדינה בתקן ISO:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:749
+#: ../libempathy-gtk/empathy-contact-widget.c:748
 #: ../libempathy-gtk/empathy-individual-widget.c:457
 msgid "Country:"
 msgstr "ארץ:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:751
+#: ../libempathy-gtk/empathy-contact-widget.c:750
 #: ../libempathy-gtk/empathy-individual-widget.c:459
 msgid "State:"
 msgstr "מדינה:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:753
+#: ../libempathy-gtk/empathy-contact-widget.c:752
 #: ../libempathy-gtk/empathy-individual-widget.c:461
 msgid "City:"
 msgstr "עיר:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:755
+#: ../libempathy-gtk/empathy-contact-widget.c:754
 #: ../libempathy-gtk/empathy-individual-widget.c:463
 msgid "Area:"
 msgstr "אזור:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:757
+#: ../libempathy-gtk/empathy-contact-widget.c:756
 #: ../libempathy-gtk/empathy-individual-widget.c:465
 msgid "Postal Code:"
 msgstr "מיקוד:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:759
+#: ../libempathy-gtk/empathy-contact-widget.c:758
 #: ../libempathy-gtk/empathy-individual-widget.c:467
 msgid "Street:"
 msgstr "רחוב:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:761
+#: ../libempathy-gtk/empathy-contact-widget.c:760
 #: ../libempathy-gtk/empathy-individual-widget.c:469
 msgid "Building:"
 msgstr "מבנה:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:763
+#: ../libempathy-gtk/empathy-contact-widget.c:762
 #: ../libempathy-gtk/empathy-individual-widget.c:471
 msgid "Floor:"
 msgstr "קומה:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:765
+#: ../libempathy-gtk/empathy-contact-widget.c:764
 #: ../libempathy-gtk/empathy-individual-widget.c:473
 msgid "Room:"
 msgstr "חדר:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:767
+#: ../libempathy-gtk/empathy-contact-widget.c:766
 #: ../libempathy-gtk/empathy-individual-widget.c:475
 msgid "Text:"
 msgstr "טקסט:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:769
+#: ../libempathy-gtk/empathy-contact-widget.c:768
 #: ../libempathy-gtk/empathy-individual-widget.c:477
 msgid "Description:"
 msgstr "תיאור:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:771
+#: ../libempathy-gtk/empathy-contact-widget.c:770
 #: ../libempathy-gtk/empathy-individual-widget.c:479
 msgid "URI:"
 msgstr "כתובת:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:773
+#: ../libempathy-gtk/empathy-contact-widget.c:772
 #: ../libempathy-gtk/empathy-individual-widget.c:481
 msgid "Accuracy Level:"
 msgstr "רמת דיוק:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:775
+#: ../libempathy-gtk/empathy-contact-widget.c:774
 #: ../libempathy-gtk/empathy-individual-widget.c:483
 msgid "Error:"
 msgstr "שגיאה:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:777
+#: ../libempathy-gtk/empathy-contact-widget.c:776
 #: ../libempathy-gtk/empathy-individual-widget.c:485
 msgid "Vertical Error (meters):"
 msgstr "סטייה אנכית (מטרים):"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:779
+#: ../libempathy-gtk/empathy-contact-widget.c:778
 #: ../libempathy-gtk/empathy-individual-widget.c:487
 msgid "Horizontal Error (meters):"
 msgstr "סטייה אופקית (מטרים):"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:781
+#: ../libempathy-gtk/empathy-contact-widget.c:780
 #: ../libempathy-gtk/empathy-individual-widget.c:489
 msgid "Speed:"
 msgstr "מהירות:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:783
+#: ../libempathy-gtk/empathy-contact-widget.c:782
 #: ../libempathy-gtk/empathy-individual-widget.c:491
 msgid "Bearing:"
 msgstr "אזימוט:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:785
+#: ../libempathy-gtk/empathy-contact-widget.c:784
 #: ../libempathy-gtk/empathy-individual-widget.c:493
 msgid "Climb Speed:"
 msgstr "מהירות הטיפוס:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:787
+#: ../libempathy-gtk/empathy-contact-widget.c:786
 #: ../libempathy-gtk/empathy-individual-widget.c:495
 msgid "Last Updated on:"
 msgstr "עדכון אחרון ב־:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:789
+#: ../libempathy-gtk/empathy-contact-widget.c:788
 #: ../libempathy-gtk/empathy-individual-widget.c:497
 msgid "Longitude:"
 msgstr "קו אורך:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:791
+#: ../libempathy-gtk/empathy-contact-widget.c:790
 #: ../libempathy-gtk/empathy-individual-widget.c:499
 msgid "Latitude:"
 msgstr "קו רוחב:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:793
+#: ../libempathy-gtk/empathy-contact-widget.c:792
 #: ../libempathy-gtk/empathy-individual-widget.c:501
 msgid "Altitude:"
 msgstr "גובה:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:846
-#: ../libempathy-gtk/empathy-contact-widget.c:861
+#: ../libempathy-gtk/empathy-contact-widget.c:845
+#: ../libempathy-gtk/empathy-contact-widget.c:860
 #: ../libempathy-gtk/empathy-individual-widget.c:593
 #: ../libempathy-gtk/empathy-individual-widget.c:608
 #: ../src/empathy-preferences.ui.h:15
@@ -1878,32 +1878,32 @@ msgid "Location"
 msgstr "מיקום"
 
 #. translators: format is "Location, $date"
-#: ../libempathy-gtk/empathy-contact-widget.c:863
+#: ../libempathy-gtk/empathy-contact-widget.c:862
 #: ../libempathy-gtk/empathy-individual-widget.c:610
 #, c-format
 msgid "%s, %s"
 msgstr "%s, %s"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:915
+#: ../libempathy-gtk/empathy-contact-widget.c:914
 #: ../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:997
+#: ../libempathy-gtk/empathy-contact-widget.c:996
 #: ../libempathy-gtk/empathy-individual-widget.c:900
 msgid "Save Avatar"
 msgstr "שמירת תמונה אישית"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:1053
+#: ../libempathy-gtk/empathy-contact-widget.c:1052
 #: ../libempathy-gtk/empathy-individual-widget.c:958
 msgid "Unable to save avatar"
 msgstr "לא ניתן לשמור תמונה אישית"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:1444
+#: ../libempathy-gtk/empathy-contact-widget.c:1454
 msgid "Personal Details"
 msgstr "פרטים אישיים"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:1447
+#: ../libempathy-gtk/empathy-contact-widget.c:1457
 #: ../libempathy-gtk/empathy-contact-widget.ui.h:6
 #: ../libempathy-gtk/empathy-individual-widget.ui.h:2
 msgid "Contact Details"
@@ -2012,25 +2012,25 @@ msgstr "מערכת הפעלה:"
 msgid "Version:"
 msgstr "גרסה:"
 
-#: ../libempathy-gtk/empathy-groups-widget.c:331
+#: ../libempathy-gtk/empathy-groups-widget.c:327
 msgid "Groups"
 msgstr "קבוצות"
 
-#: ../libempathy-gtk/empathy-groups-widget.c:343
+#: ../libempathy-gtk/empathy-groups-widget.c:339
 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:362
+#: ../libempathy-gtk/empathy-groups-widget.c:358
 msgid "_Add Group"
 msgstr "הוס_פת קבוצה"
 
-#: ../libempathy-gtk/empathy-groups-widget.c:397
+#: ../libempathy-gtk/empathy-groups-widget.c:393
 msgctxt "verb in a column header displaying group names"
 msgid "Select"
 msgstr "בחירה"
 
-#: ../libempathy-gtk/empathy-groups-widget.c:407
-#: ../src/empathy-roster-window.c:1970
+#: ../libempathy-gtk/empathy-groups-widget.c:403
+#: ../src/empathy-roster-window.c:1969
 msgid "Group"
 msgstr "קבוצה"
 
@@ -2058,108 +2058,109 @@ 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:173
+#: ../libempathy-gtk/empathy-individual-menu.c:172
 #, c-format
 msgid "%s (%s)"
 msgstr "%s (%s)"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:345
+#: ../libempathy-gtk/empathy-individual-menu.c:344
 msgid "Select account to use to place the call"
 msgstr "נא לבחור את החשבון לשימוש לצורך ההתקשרות"
 
 #. translators: Call is a noun. This string is used in the window
 #. * title
-#: ../libempathy-gtk/empathy-individual-menu.c:349
+#: ../libempathy-gtk/empathy-individual-menu.c:348
 #: ../libempathy-gtk/empathy-log-window.ui.h:2
 #: ../src/empathy-streamed-media-window.c:1290
 #: ../src/empathy-call-window.ui.h:2
 msgid "Call"
 msgstr "התקשרות"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:414
+#: ../libempathy-gtk/empathy-individual-menu.c:413
 msgid "Mobile"
 msgstr "סלולרי"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:416
+#: ../libempathy-gtk/empathy-individual-menu.c:415
 msgid "Work"
 msgstr "עבודה"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:418
+#: ../libempathy-gtk/empathy-individual-menu.c:417
 msgid "HOME"
 msgstr "בית"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:659
+#: ../libempathy-gtk/empathy-individual-menu.c:658
 msgid "_Block Contact"
 msgstr "ח_סימת איש קשר"
 
 #. add chat button
-#: ../libempathy-gtk/empathy-individual-menu.c:1018
+#: ../libempathy-gtk/empathy-individual-menu.c:1017
 #: ../libempathy-gtk/empathy-new-message-dialog.c:319
 #: ../src/empathy-roster-window-menubar.ui.h:16
 msgid "_Chat"
 msgstr "_שיחה"
 
 #. add SMS button
-#: ../libempathy-gtk/empathy-individual-menu.c:1053
+#: ../libempathy-gtk/empathy-individual-menu.c:1052
 #: ../libempathy-gtk/empathy-new-message-dialog.c:313
 msgid "_SMS"
 msgstr "_SMS"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1086
+#: ../libempathy-gtk/empathy-individual-menu.c:1085
 msgctxt "menu item"
 msgid "_Audio Call"
 msgstr "שיחה _קולית"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1119
+#: ../libempathy-gtk/empathy-individual-menu.c:1118
 msgctxt "menu item"
 msgid "_Video Call"
 msgstr "שיחת _וידאו"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1160
+#: ../libempathy-gtk/empathy-individual-menu.c:1159
 #: ../src/empathy-roster-window-menubar.ui.h:26
 msgid "_Previous Conversations"
 msgstr "שיחות _קודמות"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1189
+#: ../libempathy-gtk/empathy-individual-menu.c:1188
 msgid "Send File"
 msgstr "שליחת קובץ"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1219
+#: ../libempathy-gtk/empathy-individual-menu.c:1218
 msgid "Share My Desktop"
 msgstr "שיתוף שולחן העבודה שלי"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1245
+#: ../libempathy-gtk/empathy-individual-menu.c:1244
 #: ../libempathy-gtk/empathy-individual-widget.c:1357
 msgid "Favorite"
 msgstr "מועדף"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1264
+#: ../libempathy-gtk/empathy-individual-menu.c:1263
 msgid "gnome-contacts not installed"
 msgstr "לא הותקנה התכנית gnome-contacts"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1267
+#: ../libempathy-gtk/empathy-individual-menu.c:1266
 msgid "Please install gnome-contacts to access contacts details."
 msgstr "נא להתקין את gnome-contacts כדי לכשת לפרטי אנשי הקשר."
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1398
+#: ../libempathy-gtk/empathy-individual-menu.c:1397
 msgid "Infor_mation"
 msgstr "_מידע"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1447
+#: ../libempathy-gtk/empathy-individual-menu.c:1446
 msgctxt "Edit individual (contextual menu)"
 msgid "_Edit"
 msgstr "ע_ריכה"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1564
-#: ../src/empathy-chat-window.c:1192
+#. send invitation
+#: ../libempathy-gtk/empathy-individual-menu.c:1562
+#: ../src/empathy-chat-window.c:1190
 msgid "Inviting you to this room"
 msgstr "מזמין/ה אותך לחדר זה"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1610
+#: ../libempathy-gtk/empathy-individual-menu.c:1608
 msgid "_Invite to Chat Room"
 msgstr "ה_זמנה לחדר שיחה"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1806
+#: ../libempathy-gtk/empathy-individual-menu.c:1804
 #: ../src/empathy-roster-window-menubar.ui.h:14
 msgid "_Add Contact…"
 msgstr "הוספת _איש קשר…"
@@ -2237,135 +2238,135 @@ msgstr "שרת חדש"
 msgid "SSL"
 msgstr "SSL"
 
-#: ../libempathy-gtk/empathy-log-window.c:620
+#: ../libempathy-gtk/empathy-log-window.c:617
 msgid "History"
 msgstr "היסטוריה"
 
-#: ../libempathy-gtk/empathy-log-window.c:675
+#: ../libempathy-gtk/empathy-log-window.c:672
 msgid "Show"
 msgstr "הצגה"
 
-#: ../libempathy-gtk/empathy-log-window.c:697
+#: ../libempathy-gtk/empathy-log-window.c:694
 msgid "Search"
 msgstr "חיפוש"
 
-#: ../libempathy-gtk/empathy-log-window.c:1148
+#: ../libempathy-gtk/empathy-log-window.c:1145
 #, c-format
 msgid "Chat in %s"
 msgstr "שיחה תחת %s"
 
-#: ../libempathy-gtk/empathy-log-window.c:1150
+#: ../libempathy-gtk/empathy-log-window.c:1147
 #, c-format
 msgid "Chat with %s"
 msgstr "שיחה עם %s"
 
-#: ../libempathy-gtk/empathy-log-window.c:1200
-#: ../libempathy-gtk/empathy-log-window.c:1347
+#: ../libempathy-gtk/empathy-log-window.c:1197
+#: ../libempathy-gtk/empathy-log-window.c:1341
 msgctxt "A date with the time"
 msgid "%A, %e %B %Y %X"
 msgstr "%A %d ב%B %Y %X"
 
 #. Translators: this is an emote: '* Danielle waves'
-#: ../libempathy-gtk/empathy-log-window.c:1289
+#: ../libempathy-gtk/empathy-log-window.c:1284
 #, c-format
 msgid "<i>* %s %s</i>"
 msgstr "* %s %s"
 
 #. Translators: this is a message: 'Danielle: hello'
 #. * The string in bold is the sender's name
-#: ../libempathy-gtk/empathy-log-window.c:1295
+#: ../libempathy-gtk/empathy-log-window.c:1290
 #, c-format
 msgid "<b>%s:</b> %s"
 msgstr "<b>%s:</b> %s"
 
-#: ../libempathy-gtk/empathy-log-window.c:1371
+#: ../libempathy-gtk/empathy-log-window.c:1365
 #, c-format
 msgid "%s second"
 msgid_plural "%s seconds"
 msgstr[0] "שנייה אחת"
 msgstr[1] "%s שניות"
 
-#: ../libempathy-gtk/empathy-log-window.c:1378
+#: ../libempathy-gtk/empathy-log-window.c:1372
 #, c-format
 msgid "%s minute"
 msgid_plural "%s minutes"
 msgstr[0] "דקה אחת"
 msgstr[1] "%s דקות"
 
-#: ../libempathy-gtk/empathy-log-window.c:1386
+#: ../libempathy-gtk/empathy-log-window.c:1380
 #, c-format
 msgid "Call took %s, ended at %s"
 msgstr "השיחה ארכה %s, הסתיימה ב־%s"
 
-#: ../libempathy-gtk/empathy-log-window.c:1720
+#: ../libempathy-gtk/empathy-log-window.c:1711
 msgid "Today"
 msgstr "היום"
 
-#: ../libempathy-gtk/empathy-log-window.c:1724
+#: ../libempathy-gtk/empathy-log-window.c:1715
 msgid "Yesterday"
 msgstr "אתמול"
 
 #. Translators: A date such as '23 May 2010' (strftime format)
-#: ../libempathy-gtk/empathy-log-window.c:1739
+#: ../libempathy-gtk/empathy-log-window.c:1730
 msgid "%e %B %Y"
 msgstr "ה־%e ב%B %Y"
 
-#: ../libempathy-gtk/empathy-log-window.c:1827
-#: ../libempathy-gtk/empathy-log-window.c:3487
+#: ../libempathy-gtk/empathy-log-window.c:1834
+#: ../libempathy-gtk/empathy-log-window.c:3457
 msgid "Anytime"
 msgstr "כל זמן שהוא"
 
-#: ../libempathy-gtk/empathy-log-window.c:1916
-#: ../libempathy-gtk/empathy-log-window.c:2400
+#: ../libempathy-gtk/empathy-log-window.c:1933
+#: ../libempathy-gtk/empathy-log-window.c:2392
 msgid "Anyone"
 msgstr "כל אחד"
 
-#: ../libempathy-gtk/empathy-log-window.c:2713
+#: ../libempathy-gtk/empathy-log-window.c:2705
 msgid "Who"
 msgstr "מי"
 
-#: ../libempathy-gtk/empathy-log-window.c:2922
+#: ../libempathy-gtk/empathy-log-window.c:2914
 msgid "When"
 msgstr "מתי"
 
-#: ../libempathy-gtk/empathy-log-window.c:3038
+#: ../libempathy-gtk/empathy-log-window.c:3032
 msgid "Anything"
 msgstr "כל דבר"
 
-#: ../libempathy-gtk/empathy-log-window.c:3040
+#: ../libempathy-gtk/empathy-log-window.c:3034
 msgid "Text chats"
 msgstr "מלל הצ׳אטים"
 
-#: ../libempathy-gtk/empathy-log-window.c:3042
+#: ../libempathy-gtk/empathy-log-window.c:3035
 #: ../src/empathy-preferences.ui.h:4
 msgid "Calls"
 msgstr "שיחות"
 
-#: ../libempathy-gtk/empathy-log-window.c:3047
+#: ../libempathy-gtk/empathy-log-window.c:3039
 msgid "Incoming calls"
 msgstr "שיחות נכנסות"
 
-#: ../libempathy-gtk/empathy-log-window.c:3048
+#: ../libempathy-gtk/empathy-log-window.c:3040
 msgid "Outgoing calls"
 msgstr "שיחות יוצאות"
 
-#: ../libempathy-gtk/empathy-log-window.c:3049
+#: ../libempathy-gtk/empathy-log-window.c:3041
 msgid "Missed calls"
 msgstr "שיחות שלא נענו"
 
-#: ../libempathy-gtk/empathy-log-window.c:3071
+#: ../libempathy-gtk/empathy-log-window.c:3061
 msgid "What"
 msgstr "מה"
 
-#: ../libempathy-gtk/empathy-log-window.c:3780
+#: ../libempathy-gtk/empathy-log-window.c:3750
 msgid "Are you sure you want to delete all logs of previous conversations?"
 msgstr "האם אכן ברצונך למחוק את כל היומנים של הדיונים האחרונים שלך?"
 
-#: ../libempathy-gtk/empathy-log-window.c:3784
+#: ../libempathy-gtk/empathy-log-window.c:3754
 msgid "Clear All"
 msgstr "מחיקת הכול"
 
-#: ../libempathy-gtk/empathy-log-window.c:3791
+#: ../libempathy-gtk/empathy-log-window.c:3761
 msgid "Delete from:"
 msgstr "מחיקה עד מ־:"
 
@@ -2497,30 +2498,40 @@ msgstr ""
 #. COL_DISPLAY_MARKUP
 #. COL_STATUS_CUSTOMISABLE
 #. COL_TYPE
-#: ../libempathy-gtk/empathy-presence-chooser.c:167
-#: ../libempathy-gtk/empathy-presence-chooser.c:203
+#: ../libempathy-gtk/empathy-presence-chooser.c:166
+#: ../libempathy-gtk/empathy-presence-chooser.c:202
 msgid "Custom Message…"
 msgstr "הודעה מותאמת אישית…"
 
-#: ../libempathy-gtk/empathy-presence-chooser.c:220
-#: ../libempathy-gtk/empathy-presence-chooser.c:222
+#: ../libempathy-gtk/empathy-presence-chooser.c:219
+#: ../libempathy-gtk/empathy-presence-chooser.c:221
 msgid "Edit Custom Messages…"
 msgstr "עריכת ההודעות המותאמות אישית…"
 
-#: ../libempathy-gtk/empathy-presence-chooser.c:345
+#: ../libempathy-gtk/empathy-presence-chooser.c:344
 msgid "Click to remove this status as a favorite"
 msgstr "יש ללחוץ כדי להסיר מצב זה מהמועדפים"
 
-#: ../libempathy-gtk/empathy-presence-chooser.c:354
+#: ../libempathy-gtk/empathy-presence-chooser.c:353
 msgid "Click to make this status a favorite"
 msgstr "יש ללחוץ כדי להוסיף מצב זה למועדפים"
 
-#: ../libempathy-gtk/empathy-presence-chooser.c:388
+#. Translators: %s is a status message like 'At the pub' for example
+#: ../libempathy-gtk/empathy-presence-chooser.c:387
+#, c-format
+msgid ""
+"<b>Current message: %s</b>\n"
+"<small><i>Press Enter to set the new message or Esc to cancel.</i></small>"
+msgstr ""
+"<b>הודעה נוכחית: %s</b>\n"
+"<small>יש ללחוץ על Enter כדי להגדיר הודעה חדשה או Esc כדי לבטל.</small>"
+
+#: ../libempathy-gtk/empathy-presence-chooser.c:396
 msgid "Set status"
 msgstr "הגדרת מצב"
 
 #. Custom messages
-#: ../libempathy-gtk/empathy-presence-chooser.c:1135
+#: ../libempathy-gtk/empathy-presence-chooser.c:1147
 msgid "Custom messages…"
 msgstr "הודעות מותאמות אישית…"
 
@@ -2893,31 +2904,31 @@ msgstr "בחירה..."
 msgid "_Select"
 msgstr "_בחירה"
 
-#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:202
+#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:201
 msgid "No error message"
 msgstr "אין הודעת שגיאה"
 
-#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:275
+#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:274
 msgid "Instant Message (Empathy)"
 msgstr "הודעה מיידית (Empathy)"
 
-#: ../src/empathy.c:435
+#: ../src/empathy.c:425
 msgid "Don't connect on startup"
 msgstr "לא להתחבר בהפעלה"
 
-#: ../src/empathy.c:439
+#: ../src/empathy.c:429
 msgid "Don't display the contact list or any other dialogs on startup"
 msgstr "אין להציג את רשימת אנשי הקשר או כל דו־שיח אחר בהפעלה"
 
-#: ../src/empathy.c:454
+#: ../src/empathy.c:444
 msgid "- Empathy IM Client"
 msgstr "- לקוח המסרים המידיים Empathy"
 
-#: ../src/empathy.c:641
+#: ../src/empathy.c:620
 msgid "Error contacting the Account Manager"
 msgstr "שגיאה ביצירת קשר עם מנהל החשבונות"
 
-#: ../src/empathy.c:643
+#: ../src/empathy.c:622
 #, c-format
 msgid ""
 "There was an error while trying to connect to the Telepathy Account Manager. The error was:\n"
@@ -2955,75 +2966,75 @@ msgstr ""
 
 #. The primary text of the dialog shown to the user when he is about to lose
 #. * unsaved changes
-#: ../src/empathy-accounts-dialog.c:72
+#: ../src/empathy-accounts-dialog.c:71
 #, 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:76
+#: ../src/empathy-accounts-dialog.c:75
 msgid "Your new account has not been saved yet."
 msgstr "החשבון החדש שלך לא נשמר עדיין."
 
-#: ../src/empathy-accounts-dialog.c:381
+#: ../src/empathy-accounts-dialog.c:404
 #: ../src/empathy-streamed-media-window.c:759
-#: ../src/empathy-call-window.c:1289
+#: ../src/empathy-call-window.c:1267
 msgid "Connecting…"
 msgstr "בהתחברות…"
 
-#: ../src/empathy-accounts-dialog.c:422
+#: ../src/empathy-accounts-dialog.c:445
 #, c-format
 msgid "Offline — %s"
 msgstr "לא מחובר — %s"
 
-#: ../src/empathy-accounts-dialog.c:434
+#: ../src/empathy-accounts-dialog.c:457
 #, c-format
 msgid "Disconnected — %s"
 msgstr "מנותק  — %s"
 
-#: ../src/empathy-accounts-dialog.c:445
+#: ../src/empathy-accounts-dialog.c:468
 msgid "Offline — No Network Connection"
 msgstr "מנותק — אין חיבור לרשת"
 
-#: ../src/empathy-accounts-dialog.c:452
+#: ../src/empathy-accounts-dialog.c:475
 msgid "Unknown Status"
 msgstr "מצב לא ידוע"
 
-#: ../src/empathy-accounts-dialog.c:469
+#: ../src/empathy-accounts-dialog.c:492
 msgid "This account has been disabled because it relies on an old, unsupported backend. Please install telepathy-haze and restart your session to migrate the account."
 msgstr "חשבון זה נוטרל כיוון שהוא נשען על מנגנון ישן שאינו נתמך עוד. נא להתקין את telepathy-haze ולצאת ולהיכנס לחשבון המשתמש שלך כדי לייבא את החשבון."
 
-#: ../src/empathy-accounts-dialog.c:479
+#: ../src/empathy-accounts-dialog.c:502
 msgid "Offline — Account Disabled"
 msgstr "מנותק — החשבון מנוטרל"
 
-#: ../src/empathy-accounts-dialog.c:585
+#: ../src/empathy-accounts-dialog.c:608
 msgid "Edit Connection Parameters"
 msgstr "עריכת הגדרות החיבור"
 
-#: ../src/empathy-accounts-dialog.c:750
+#: ../src/empathy-accounts-dialog.c:773
 msgid "Failed to retrieve your personal information from the server."
 msgstr "אירע כשל בקבלת הפרטים האישיים שלך מהשרת."
 
-#: ../src/empathy-accounts-dialog.c:756
+#: ../src/empathy-accounts-dialog.c:779
 msgid "Go online to edit your personal information."
 msgstr "עליך להתחבר כדי לערוך את הפרטים האישיים שלך."
 
-#: ../src/empathy-accounts-dialog.c:843
+#: ../src/empathy-accounts-dialog.c:866
 msgid "_Edit Connection Parameters..."
 msgstr "ע_ריכת הגדרות החיבור..."
 
-#: ../src/empathy-accounts-dialog.c:1339
+#: ../src/empathy-accounts-dialog.c:1362
 #, c-format
 msgid "Do you want to remove %s from your computer?"
 msgstr "האם ברצונך להסיר את החשבון '%s' ממחשבך?"
 
-#: ../src/empathy-accounts-dialog.c:1343
+#: ../src/empathy-accounts-dialog.c:1366
 msgid "This will not remove your account on the server."
 msgstr "פעולה זו לא תסיר את חשבונך מהשרת."
 
-#: ../src/empathy-accounts-dialog.c:1579
+#: ../src/empathy-accounts-dialog.c:1571
 msgid ""
 "You are about to select another account, which will discard\n"
 "your changes. Are you sure you want to proceed?"
@@ -3031,24 +3042,25 @@ msgstr ""
 "אתה עומד לבחור חשבון חדש, מה שיבטל\n"
 "את השינויים שלך. האת אתה בטוח שברצונך להמשיך?"
 
-#. Menu items: to enabled/disable the account
-#: ../src/empathy-accounts-dialog.c:1755
-msgid "_Enable"
-msgstr "×\94_פע×\9c×\94"
+#. Menu item: to enabled/disable the account
+#: ../src/empathy-accounts-dialog.c:1762
+msgid "_Enabled"
+msgstr "×\9e×\95_פע×\9c"
 
-#: ../src/empathy-accounts-dialog.c:1756
-msgid "_Disable"
-msgstr "נ_טרול"
+#. Menu item: Rename
+#: ../src/empathy-accounts-dialog.c:1785
+msgid "Rename"
+msgstr "שנה שם"
 
-#: ../src/empathy-accounts-dialog.c:2184
+#: ../src/empathy-accounts-dialog.c:2201
 msgid "_Skip"
 msgstr "_דילוג"
 
-#: ../src/empathy-accounts-dialog.c:2188
+#: ../src/empathy-accounts-dialog.c:2205
 msgid "_Connect"
 msgstr "הת_חברות"
 
-#: ../src/empathy-accounts-dialog.c:2365
+#: ../src/empathy-accounts-dialog.c:2384
 msgid ""
 "You are about to close the window, which will discard\n"
 "your changes. Are you sure you want to proceed?"
@@ -3072,21 +3084,21 @@ msgstr "על מנת להוסיף חשבון חדש עליך להתקין מנו
 msgid "_Import…"
 msgstr "י_בוא…"
 
-#: ../src/empathy-auth-client.c:288
+#: ../src/empathy-auth-client.c:286
 msgid " - Empathy authentication client"
 msgstr "- לקוח האימות של Empathy"
 
-#: ../src/empathy-auth-client.c:304
+#: ../src/empathy-auth-client.c:302
 msgid "Empathy authentication client"
 msgstr "לקוח האימות של Empathy"
 
-#: ../src/empathy-av.c:118
-#: ../src/empathy-call.c:201
+#: ../src/empathy-av.c:115
+#: ../src/empathy-call.c:198
 msgid "- Empathy Audio/Video Client"
 msgstr "- לקוח השמע/הווידאו Empathy"
 
-#: ../src/empathy-av.c:134
-#: ../src/empathy-call.c:223
+#: ../src/empathy-av.c:131
+#: ../src/empathy-call.c:220
 msgid "Empathy Audio/Video Client"
 msgstr "לקוח השמע/הווידאו Empathy"
 
@@ -3129,33 +3141,33 @@ 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:1211
-#: ../src/empathy-call-window.c:1889
+#: ../src/empathy-call-window.c:1861
 #, c-format
 msgid "Call with %s"
 msgstr "שיחה עם %s"
 
 #: ../src/empathy-streamed-media-window.c:1444
-#: ../src/empathy-call-window.c:2133
+#: ../src/empathy-call-window.c:2105
 msgid "The IP address as seen by the machine"
 msgstr "כתובת ה־IP כפי שנראית על ידי המחשב"
 
 #: ../src/empathy-streamed-media-window.c:1446
-#: ../src/empathy-call-window.c:2135
+#: ../src/empathy-call-window.c:2107
 msgid "The IP address as seen by a server on the Internet"
 msgstr "כתובת ה־IP כפי שנראית על ידי שרת באינטרנט"
 
 #: ../src/empathy-streamed-media-window.c:1448
-#: ../src/empathy-call-window.c:2137
+#: ../src/empathy-call-window.c:2109
 msgid "The IP address of the peer as seen by the other side"
 msgstr "כתובת ה־IP כדי שנראית על ידי עמית מהצד השני"
 
 #: ../src/empathy-streamed-media-window.c:1450
-#: ../src/empathy-call-window.c:2139
+#: ../src/empathy-call-window.c:2111
 msgid "The IP address of a relay server"
 msgstr "כתובת ה־IP של שרת הממסר"
 
 #: ../src/empathy-streamed-media-window.c:1452
-#: ../src/empathy-call-window.c:2141
+#: ../src/empathy-call-window.c:2113
 msgid "The IP address of the multicast group"
 msgstr "כתובת ה־IP של קבוצת התשדורת"
 
@@ -3174,66 +3186,66 @@ msgid "Connected — %d:%02dm"
 msgstr "מחובר — %d:%02d דק׳"
 
 #: ../src/empathy-streamed-media-window.c:2199
-#: ../src/empathy-call-window.c:2992
+#: ../src/empathy-call-window.c:2964
 msgid "Technical Details"
 msgstr "פרטים טכניים"
 
 #: ../src/empathy-streamed-media-window.c:2237
-#: ../src/empathy-call-window.c:3031
+#: ../src/empathy-call-window.c:3003
 #, 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:2242
-#: ../src/empathy-call-window.c:3036
+#: ../src/empathy-call-window.c:3008
 #, 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:2248
-#: ../src/empathy-call-window.c:3042
+#: ../src/empathy-call-window.c:3014
 #, 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:2254
-#: ../src/empathy-call-window.c:3048
+#: ../src/empathy-call-window.c:3020
 msgid "There was a failure on the network"
 msgstr "אירעה שגיאה ברשת"
 
 #: ../src/empathy-streamed-media-window.c:2258
-#: ../src/empathy-call-window.c:3052
+#: ../src/empathy-call-window.c:3024
 msgid "The audio formats necessary for this call are not installed on your computer"
 msgstr "מבני השמע הדרושים לקיום שיחה זו אינם מותקנים במחשבך"
 
 #: ../src/empathy-streamed-media-window.c:2261
-#: ../src/empathy-call-window.c:3055
+#: ../src/empathy-call-window.c:3027
 msgid "The video formats necessary for this call are not installed on your computer"
 msgstr "מבני הווידאו הדרושים לקיום שיחה זו אינם מותקנים במחשבך"
 
 #: ../src/empathy-streamed-media-window.c:2271
-#: ../src/empathy-call-window.c:3067
+#: ../src/empathy-call-window.c:3039
 #, 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. נא <a href=\"%s\">לדווח על באג זה</a> ולהוסיף דוחות שנאספו מחלון 'ניפוי השגיאות' שבתפריט העזרה."
 
 #: ../src/empathy-streamed-media-window.c:2279
-#: ../src/empathy-call-window.c:3076
+#: ../src/empathy-call-window.c:3048
 msgid "There was a failure in the call engine"
 msgstr "אירעה שגיאה במנוע הקריאה"
 
 #: ../src/empathy-streamed-media-window.c:2282
-#: ../src/empathy-call-window.c:3079
+#: ../src/empathy-call-window.c:3051
 msgid "The end of the stream was reached"
 msgstr "התזרים הגיע לסיומו"
 
 #: ../src/empathy-streamed-media-window.c:2322
-#: ../src/empathy-call-window.c:3119
+#: ../src/empathy-call-window.c:3091
 msgid "Can't establish audio stream"
 msgstr "לא ניתן לקיים תזרים שמע"
 
 #: ../src/empathy-streamed-media-window.c:2332
-#: ../src/empathy-call-window.c:3129
+#: ../src/empathy-call-window.c:3101
 msgid "Can't establish video stream"
 msgstr "לא ניתן לקיים תזרים וידאו"
 
@@ -3325,10 +3337,10 @@ msgstr "החלפת מצב העברת וידאו"
 
 #: ../src/empathy-call-window.ui.h:21
 #: ../src/empathy-streamed-media-window.ui.h:18
-#: ../src/empathy-call-window.c:2542
-#: ../src/empathy-call-window.c:2543
-#: ../src/empathy-call-window.c:2544
-#: ../src/empathy-call-window.c:2545
+#: ../src/empathy-call-window.c:2514
+#: ../src/empathy-call-window.c:2515
+#: ../src/empathy-call-window.c:2516
+#: ../src/empathy-call-window.c:2517
 msgid "Unknown"
 msgstr "לא ידוע"
 
@@ -3376,80 +3388,80 @@ msgstr "ה_גדרות"
 msgid "_View"
 msgstr "_תצוגה"
 
-#: ../src/empathy-chat-window.c:289
+#: ../src/empathy-chat-window.c:288
 msgid "Close this window?"
 msgstr "האם לסגור חלון זה?"
 
-#: ../src/empathy-chat-window.c:294
+#: ../src/empathy-chat-window.c:293
 #, c-format
 msgid "Closing this window will leave %s. You will not receive any further messages until you rejoin it."
 msgstr "סגירת חלון זה תגרום לעזיבת %s. לא יתקבלו עוד הודעות על להצטרפותך אליו מחדש."
 
-#: ../src/empathy-chat-window.c:305
+#: ../src/empathy-chat-window.c:304
 #, c-format
 msgid "Closing this window will leave a chat room. You will not receive any further messages until you rejoin it."
 msgid_plural "Closing this window will leave %u chat rooms. You will not receive any further messages until you rejoin them."
 msgstr[0] "סגירת חלון זה תוביל לעזיבת חדר הצ׳אט. לא יתקבלו עוד הודעות עד להתחברותך מחדש אליו."
 msgstr[1] "סגירת חלון זה תוביל לעזיבת %u חדרי הצ׳אט. לא יתקבלו עוד הודעות עד להתחברותך מחדש אליהם."
 
-#: ../src/empathy-chat-window.c:314
+#: ../src/empathy-chat-window.c:313
 #, c-format
 msgid "Leave %s?"
 msgstr "האם לעזוב את %s?"
 
-#: ../src/empathy-chat-window.c:315
+#: ../src/empathy-chat-window.c:314
 msgid "You will not receive any further messages from this chat room until you rejoin it."
 msgstr "לא יתקבלו עוד הודעות מחדר צ׳אט זה עד להצטרפותך המחודשת אליו."
 
-#: ../src/empathy-chat-window.c:334
+#: ../src/empathy-chat-window.c:333
 msgid "Close window"
 msgstr "סגירת החלון"
 
-#: ../src/empathy-chat-window.c:334
+#: ../src/empathy-chat-window.c:333
 msgid "Leave room"
 msgstr "עזיבת החדר"
 
-#: ../src/empathy-chat-window.c:640
-#: ../src/empathy-chat-window.c:660
+#: ../src/empathy-chat-window.c:639
+#: ../src/empathy-chat-window.c:659
 #, c-format
 msgid "%s (%d unread)"
 msgid_plural "%s (%d unread)"
 msgstr[0] "‏%s (אחת שלא נקראה)"
 msgstr[1] "‏%s ‏(%d שלא נקראו)"
 
-#: ../src/empathy-chat-window.c:652
+#: ../src/empathy-chat-window.c:651
 #, c-format
 msgid "%s (and %u other)"
 msgid_plural "%s (and %u others)"
 msgstr[0] "‏%s (ואחד נוסף)"
 msgstr[1] "‏%s (ו־%u נוספים)"
 
-#: ../src/empathy-chat-window.c:668
+#: ../src/empathy-chat-window.c:667
 #, c-format
 msgid "%s (%d unread from others)"
 msgid_plural "%s (%d unread from others)"
 msgstr[0] "‏%s (אחת שלא נקראה מאחרים)"
 msgstr[1] "‏%s (%d שלא נקראו מאחרים)"
 
-#: ../src/empathy-chat-window.c:677
+#: ../src/empathy-chat-window.c:676
 #, c-format
 msgid "%s (%d unread from all)"
 msgid_plural "%s (%d unread from all)"
 msgstr[0] "‏%s (אחת שלא נקראה מכולם)"
 msgstr[1] "‏%s (%d שלא נקראו מכולם)"
 
-#: ../src/empathy-chat-window.c:892
+#: ../src/empathy-chat-window.c:891
 msgid "SMS:"
 msgstr "SMS:"
 
-#: ../src/empathy-chat-window.c:902
+#: ../src/empathy-chat-window.c:901
 #, c-format
 msgid "Sending %d message"
 msgid_plural "Sending %d messages"
 msgstr[0] "נשלחת הודעה אחת"
 msgstr[1] "נשלחות %d הודעות"
 
-#: ../src/empathy-chat-window.c:924
+#: ../src/empathy-chat-window.c:923
 msgid "Typing a message."
 msgstr "הודעה מוקלדת."
 
@@ -3535,7 +3547,7 @@ msgid "Incoming video call"
 msgstr "שיחה קולית נכנסת"
 
 #: ../src/empathy-event-manager.c:522
-#: ../src/empathy-call-window.c:1519
+#: ../src/empathy-call-window.c:1483
 msgid "Incoming call"
 msgstr "שיחה נכנסת"
 
@@ -3552,7 +3564,7 @@ msgstr "‏%s מתקשר אליך, האם ברצונך לענות?"
 #: ../src/empathy-event-manager.c:530
 #: ../src/empathy-event-manager.c:731
 #: ../src/empathy-event-manager.c:764
-#: ../src/empathy-call-window.c:1525
+#: ../src/empathy-call-window.c:1489
 #, c-format
 msgid "Incoming call from %s"
 msgstr "שיחה נכנסת מ־%s"
@@ -3572,7 +3584,7 @@ msgstr "מ_ענה עם וידאו"
 
 #: ../src/empathy-event-manager.c:731
 #: ../src/empathy-event-manager.c:764
-#: ../src/empathy-call-window.c:1525
+#: ../src/empathy-call-window.c:1489
 #, c-format
 msgid "Incoming video call from %s"
 msgstr "שיחת וידאו נכנסת מ־%s"
@@ -3616,7 +3628,7 @@ msgid "Incoming file transfer from %s"
 msgstr "העברת קבצים נכנסת מ־%s"
 
 #: ../src/empathy-event-manager.c:1146
-#: ../src/empathy-roster-window.c:374
+#: ../src/empathy-roster-window.c:373
 msgid "Password required"
 msgstr "נדרשת ססמה"
 
@@ -3761,87 +3773,87 @@ msgid "Import Accounts"
 msgstr "יבוא חשבונות"
 
 #. Translators: this is the header of a treeview column
-#: ../src/empathy-import-widget.c:316
+#: ../src/empathy-import-widget.c:303
 msgid "Import"
 msgstr "יבוא"
 
-#: ../src/empathy-import-widget.c:325
+#: ../src/empathy-import-widget.c:312
 msgid "Protocol"
 msgstr "פרוטוקול"
 
-#: ../src/empathy-import-widget.c:349
+#: ../src/empathy-import-widget.c:336
 msgid "Source"
 msgstr "מקור"
 
-#: ../src/empathy-roster-window.c:391
+#: ../src/empathy-roster-window.c:390
 msgid "Provide Password"
 msgstr "הזנת ססמה"
 
-#: ../src/empathy-roster-window.c:397
+#: ../src/empathy-roster-window.c:396
 msgid "Disconnect"
 msgstr "ניתוק"
 
-#: ../src/empathy-roster-window.c:657
+#: ../src/empathy-roster-window.c:656
 msgid "You need to setup an account to see contacts here."
 msgstr "עליך להגדיר חשבון כדי שיופיעו כאן אנשי קשר."
 
-#: ../src/empathy-roster-window.c:673
+#: ../src/empathy-roster-window.c:672
 msgid "No match found"
 msgstr "לא נמצאה התאמה"
 
-#: ../src/empathy-roster-window.c:783
+#: ../src/empathy-roster-window.c:782
 #, c-format
 msgid "Sorry, %s accounts can’t be used until your %s software is updated."
 msgstr "לא ניתן להשתמש בחשבונות %s עד שהתכנה %s תעודכן, עמך הסליחה."
 
-#: ../src/empathy-roster-window.c:849
+#: ../src/empathy-roster-window.c:848
 msgid "Update software..."
 msgstr "עדכון התכנה..."
 
-#: ../src/empathy-roster-window.c:855
-#: ../src/empathy-roster-window.c:972
+#: ../src/empathy-roster-window.c:854
+#: ../src/empathy-roster-window.c:971
 msgid "Close"
 msgstr "סגירה"
 
-#: ../src/empathy-roster-window.c:960
+#: ../src/empathy-roster-window.c:959
 msgid "Reconnect"
 msgstr "התחברות מחדש"
 
-#: ../src/empathy-roster-window.c:966
+#: ../src/empathy-roster-window.c:965
 msgid "Edit Account"
 msgstr "עריכת חשבון"
 
 #. Translators: this string will be something like:
 #. * Top up My Account ($1.23)..."
-#: ../src/empathy-roster-window.c:1110
+#: ../src/empathy-roster-window.c:1109
 #, c-format
 msgid "Top up %s (%s)..."
 msgstr "Top up %s (%s)..."
 
-#: ../src/empathy-roster-window.c:1156
+#: ../src/empathy-roster-window.c:1155
 msgid "Top up account credit"
 msgstr "אשראי חשבון ה־Top up"
 
 #. top up button
-#: ../src/empathy-roster-window.c:1228
+#: ../src/empathy-roster-window.c:1227
 msgid "Top Up..."
 msgstr "Top Up..."
 
-#: ../src/empathy-roster-window.c:1952
+#: ../src/empathy-roster-window.c:1951
 msgid "Contact"
 msgstr "איש קשר"
 
-#: ../src/empathy-roster-window.c:2150
+#: ../src/empathy-roster-window.c:2149
 msgid "You need to enable one of your accounts to see contacts here."
 msgstr "עליך להפעיל את אחד החשבונות שלך כדי שיופיעו כאן אנשי קשר."
 
 #. translators: argument is an account name
-#: ../src/empathy-roster-window.c:2158
+#: ../src/empathy-roster-window.c:2157
 #, c-format
 msgid "You need to enable %s to see contacts here."
 msgstr "עליך להפעיל את %s כדי שיופיעו כאן אנשי קשר."
 
-#: ../src/empathy-roster-window.c:2460
+#: ../src/empathy-roster-window.c:2459
 msgid "Contact List"
 msgstr "רשימת אנשי קשר"
 
@@ -3945,7 +3957,7 @@ 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:637
+#: ../src/empathy-new-chatroom-dialog.c:636
 #, c-format
 msgid ""
 "%s\n"
@@ -3958,21 +3970,21 @@ msgstr ""
 "נדרשת ססמה: %s\n"
 "חברים: %s"
 
+#: ../src/empathy-new-chatroom-dialog.c:638
 #: ../src/empathy-new-chatroom-dialog.c:639
-#: ../src/empathy-new-chatroom-dialog.c:640
 msgid "Yes"
 msgstr "כן"
 
+#: ../src/empathy-new-chatroom-dialog.c:638
 #: ../src/empathy-new-chatroom-dialog.c:639
-#: ../src/empathy-new-chatroom-dialog.c:640
 msgid "No"
 msgstr "לא"
 
-#: ../src/empathy-new-chatroom-dialog.c:668
+#: ../src/empathy-new-chatroom-dialog.c:666
 msgid "Could not start room listing"
 msgstr "לא ניתן להתחיל את הצגת החדרים"
 
-#: ../src/empathy-new-chatroom-dialog.c:678
+#: ../src/empathy-new-chatroom-dialog.c:676
 msgid "Could not stop room listing"
 msgstr "לא ניתן לעצור את הצגת החדרים"
 
@@ -4033,46 +4045,46 @@ msgid "Language"
 msgstr "שפה"
 
 #. translators: Contact name for the chat theme preview
-#: ../src/empathy-preferences.c:726
+#: ../src/empathy-preferences.c:724
 msgid "Juliet"
 msgstr "יוליה"
 
 #. translators: Contact name for the chat theme preview
-#: ../src/empathy-preferences.c:733
+#: ../src/empathy-preferences.c:731
 msgid "Romeo"
 msgstr "רומיאו"
 
 #. translators: Quote from Romeo & Julier, for chat theme preview
-#: ../src/empathy-preferences.c:739
+#: ../src/empathy-preferences.c:737
 msgid "O Romeo, Romeo, wherefore art thou Romeo?"
 msgstr "הו רומיאו, רומיאו, מן אין שבת רומיאו?"
 
 #. translators: Quote from Romeo & Julier, for chat theme preview
-#: ../src/empathy-preferences.c:743
+#: ../src/empathy-preferences.c:741
 msgid "Deny thy father and refuse thy name;"
 msgstr "התכחש לאביך וסרב לשמו;"
 
 #. translators: Quote from Romeo & Julier, for chat theme preview
-#: ../src/empathy-preferences.c:746
+#: ../src/empathy-preferences.c:744
 msgid "Or if thou wilt not, be but sworn my love"
 msgstr "או אם לא תסכים, אשבע לך באהבתי"
 
 #. translators: Quote from Romeo & Julier, for chat theme preview
-#: ../src/empathy-preferences.c:749
+#: ../src/empathy-preferences.c:747
 msgid "And I'll no longer be a Capulet."
 msgstr "ולא אהיה עוד בת קפולט."
 
 #. translators: Quote from Romeo & Julier, for chat theme preview
-#: ../src/empathy-preferences.c:752
+#: ../src/empathy-preferences.c:750
 msgid "Shall I hear more, or shall I speak at this?"
 msgstr "האם דיברתי די או שמא אוסיף לדבר?"
 
 #. translators: Quote from Romeo & Julier, for chat theme preview
-#: ../src/empathy-preferences.c:755
+#: ../src/empathy-preferences.c:753
 msgid "Juliet has disconnected"
 msgstr "יוליה התנתקה"
 
-#: ../src/empathy-preferences.c:1159
+#: ../src/empathy-preferences.c:1157
 msgid "Preferences"
 msgstr "העדפות"
 
@@ -4362,16 +4374,16 @@ msgstr "רמה"
 msgid "The selected connection manager does not support the remote debugging extension."
 msgstr "מנהל החיבורים שנבחר אינו תומך בהרחבת ניפוי שגיאות מרחוק."
 
-#: ../src/empathy-invite-participant-dialog.c:202
-#: ../src/empathy-invite-participant-dialog.c:230
+#: ../src/empathy-invite-participant-dialog.c:200
+#: ../src/empathy-invite-participant-dialog.c:228
 msgid "Invite Participant"
 msgstr "הזמנת משתתפים"
 
-#: ../src/empathy-invite-participant-dialog.c:203
+#: ../src/empathy-invite-participant-dialog.c:201
 msgid "Choose a contact to invite into the conversation:"
 msgstr "נא לבחור אנשי קשר להזמנה לדיון:"
 
-#: ../src/empathy-invite-participant-dialog.c:226
+#: ../src/empathy-invite-participant-dialog.c:224
 msgid "Invite"
 msgstr "הזמנה"
 
@@ -4395,7 +4407,7 @@ msgstr "<account-id>"
 msgid "- Empathy Accounts"
 msgstr "- חשבונות Empathy"
 
-#: ../src/empathy-accounts.c:231
+#: ../src/empathy-accounts.c:230
 msgid "Empathy Accounts"
 msgstr "חשבונות Empathy"
 
@@ -4407,47 +4419,47 @@ msgstr "הצגת שירות מסוים"
 msgid "- Empathy Debugger"
 msgstr "- מנפה השגיאות של Empathy"
 
-#: ../src/empathy-debugger.c:113
+#: ../src/empathy-debugger.c:112
 msgid "Empathy Debugger"
 msgstr "מנפה השגיאות של Empathy"
 
-#: ../src/empathy-chat.c:109
+#: ../src/empathy-chat.c:106
 msgid "- Empathy Chat Client"
 msgstr "- לקוח הצ׳אטים Empathy"
 
-#: ../src/empathy-notifications-approver.c:189
+#: ../src/empathy-notifications-approver.c:190
 msgid "Respond"
 msgstr "תגובה"
 
-#: ../src/empathy-notifications-approver.c:203
-#: ../src/empathy-call-window.c:1529
+#: ../src/empathy-notifications-approver.c:204
+#: ../src/empathy-call-window.c:1493
 msgid "Reject"
 msgstr "דחייה"
 
-#: ../src/empathy-notifications-approver.c:208
-#: ../src/empathy-notifications-approver.c:213
-#: ../src/empathy-call-window.c:1530
+#: ../src/empathy-notifications-approver.c:209
+#: ../src/empathy-notifications-approver.c:214
+#: ../src/empathy-call-window.c:1494
 msgid "Answer"
 msgstr "מענה"
 
-#: ../src/empathy-notifications-approver.c:213
+#: ../src/empathy-notifications-approver.c:214
 msgid "Answer with video"
 msgstr "מענה עם וידאו"
 
-#: ../src/empathy-notifications-approver.c:221
-#: ../src/empathy-notifications-approver.c:231
+#: ../src/empathy-notifications-approver.c:222
+#: ../src/empathy-notifications-approver.c:232
 msgid "Decline"
 msgstr "סירוב"
 
-#: ../src/empathy-notifications-approver.c:225
-#: ../src/empathy-notifications-approver.c:236
+#: ../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:246
+#: ../src/empathy-notifications-approver.c:247
 msgid "Provide"
 msgstr "הזנה"
 
@@ -4458,39 +4470,39 @@ msgstr "התקבלה בקשת שיחה מאת %s, אך באותו הזמן כב
 
 #. Translators: this is an "Info" label. It should be as short
 #. * as possible.
+#: ../src/empathy-call-window.c:1124
 #: ../src/empathy-call-window.c:1140
-#: ../src/empathy-call-window.c:1162
 msgid "i"
 msgstr "i"
 
-#: ../src/empathy-call-window.c:2888
+#: ../src/empathy-call-window.c:2860
 msgid "On hold"
 msgstr "בהמתנה"
 
-#: ../src/empathy-call-window.c:2891
+#: ../src/empathy-call-window.c:2863
 msgid "Mute"
 msgstr "השתק"
 
-#: ../src/empathy-call-window.c:2893
+#: ../src/empathy-call-window.c:2865
 msgid "Duration"
 msgstr "משך"
 
 #. Translators: 'status - minutes:seconds' the caller has been connected
-#: ../src/empathy-call-window.c:2896
+#: ../src/empathy-call-window.c:2868
 #, c-format
 msgid "%s — %d:%02dm"
 msgstr "%s — %d:%02d דק׳"
 
-#: ../src/empathy-call-window.c:3166
+#: ../src/empathy-call-window.c:3138
 #, c-format
 msgid "Your current balance is %s."
 msgstr "המאזן הנוכחי שלך הוא %s."
 
-#: ../src/empathy-call-window.c:3170
+#: ../src/empathy-call-window.c:3142
 msgid "Sorry, you don’t have enough credit for that call."
 msgstr "אין לך מספיק אשראי כדי לבצע שיחה זו."
 
-#: ../src/empathy-call-window.c:3172
+#: ../src/empathy-call-window.c:3144
 msgid "Top Up"
 msgstr "Top Up"
 
@@ -4518,6 +4530,12 @@ msgstr "באפשרות Empathy לגלות ולנהל שיחות עם אנשים
 msgid "You can change these details later or disable this feature by choosing <span style=\"italic\">Edit → Accounts</span> in the Contact List."
 msgstr "באפשרותך לשנות פרטים אלה מאוחר יותר או לנטרל תכונה זו על ידי בחירה ב<span style=\"italic\">עריכה ← חשבונות</span> ברשימת אנשי הקשר."
 
+#~ msgid "_Enable"
+#~ msgstr "ה_פעלה"
+
+#~ msgid "_Disable"
+#~ msgstr "נ_טרול"
+
 #~ msgid "%s"
 #~ msgstr "%s"
 
@@ -4811,9 +4829,6 @@ msgstr "באפשרותך לשנות פרטים אלה מאוחר יותר או 
 #~ msgid "_For:"
 #~ msgstr "_ערך:"
 
-#~ msgid "_Enabled"
-#~ msgstr "מו_פעל"
-
 #~ msgid "%s is now offline."
 #~ msgstr "‏%s מנותק/ת כעת."
 
@@ -5192,8 +5207,5 @@ msgstr "באפשרותך לשנות פרטים אלה מאוחר יותר או 
 #~ msgid "Re_name"
 #~ msgstr "שנה _שם"
 
-#~ msgid "Rename"
-#~ msgstr "שנה שם"
-
 #~ msgid "_Use for chat rooms"
 #~ msgstr "_שימוש בחדרי שיחה"
index 305591e75c9c510c9f6e56fbaf9d20421fa2eb6a..4e3a3ba9a565d5ca01bb3f6884e5e7942180266c 100644 (file)
--- a/po/nb.po
+++ b/po/nb.po
@@ -5,10 +5,10 @@
 # Torstein Adolf Winterseth <kvikende@fsfe.org>, 2010.
 msgid ""
 msgstr ""
-"Project-Id-Version: empathy 3.3.x\n"
+"Project-Id-Version: empathy 3.5.x\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-03-29 09:32+0200\n"
-"PO-Revision-Date: 2012-03-29 09:32+0200\n"
+"POT-Creation-Date: 2012-04-30 10:17+0200\n"
+"PO-Revision-Date: 2012-04-30 10:17+0200\n"
 "Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n"
 "Language-Team: Norwegian bokmål <i18n-nb@lister.ping.uio.no>\n"
 "Language: no\n"
@@ -35,7 +35,7 @@ msgstr "Prat på Google Talk, Facebook, MSN og mange andre pratetjenester"
 
 #. Tweak the dialog
 #: ../data/empathy-accounts.desktop.in.in.h:1
-#: ../src/empathy-accounts-dialog.c:2513
+#: ../src/empathy-accounts-dialog.c:2527
 msgid "Messaging and VoIP Accounts"
 msgstr "Meldings- og VoIP-kontoer"
 
@@ -43,49 +43,49 @@ msgstr "Meldings- og VoIP-kontoer"
 msgid "Manage Messaging and VoIP accounts"
 msgstr "Håndter meldings- og VoIP-kontoer"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:1
+#: ../data/org.gnome.Empathy.gschema.xml.h:1
 msgid "Connection managers should be used"
 msgstr "Tilkoblingshåndterer skal brukes"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:2
+#: ../data/org.gnome.Empathy.gschema.xml.h:2
 msgid ""
 "Whether connectivity managers should be used to automatically disconnect/"
 "reconnect."
 msgstr "Om tilkoblingshåndterere skal brukes til å koble til/fra automatisk."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:3
+#: ../data/org.gnome.Empathy.gschema.xml.h:3
 msgid "Empathy should auto-connect on startup"
 msgstr "Empathy skal koble til automatisk ved oppstart"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:4
+#: ../data/org.gnome.Empathy.gschema.xml.h:4
 msgid "Whether Empathy should automatically log into your accounts on startup."
 msgstr "Om Empathy skal logge inn til dine kontoer automatisk ved oppstart."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:5
+#: ../data/org.gnome.Empathy.gschema.xml.h:5
 msgid "Empathy should auto-away when idle"
 msgstr "Empathy skal sette bortestatus automatisk ved inaktivitet"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:6
+#: ../data/org.gnome.Empathy.gschema.xml.h:6
 msgid ""
 "Whether Empathy should go into away mode automatically if the user is idle."
 msgstr ""
 "Om Empathy skal bytte til bortemodus automatisk hvis bruker ikke er aktiv."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:7
+#: ../data/org.gnome.Empathy.gschema.xml.h:7
 msgid "Empathy default download folder"
 msgstr "Forvalgt nedlastingsmappe for Empathy"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:8
+#: ../data/org.gnome.Empathy.gschema.xml.h:8
 msgid "The default folder to save file transfers in."
 msgstr "Forvalgt mappe for lagring av filoverføringer."
 
 #. translators: Automatic tasks which are run once to port/update account settings. Ideally, this shouldn't be exposed to users at all, we just use a gsettings key here as an optimization to only run it only once.
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:10
+#: ../data/org.gnome.Empathy.gschema.xml.h:10
 msgid "Magic number used to check if sanity cleaning tasks should be run"
 msgstr ""
 "Magisk nummer som brukes til å sjekke om oppryddingsoppgaver skal kjøres"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:11
+#: ../data/org.gnome.Empathy.gschema.xml.h:11
 msgid ""
 "empathy-sanity-cleaning.c uses this number to check if the cleaning tasks "
 "should be executed or not. Users should not change this key manually."
@@ -94,76 +94,76 @@ msgstr ""
 "oppryddingsoppgaver skal kjøres eller ikke. Brukere skal ikke endre dette "
 "manuelt."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:12
+#: ../data/org.gnome.Empathy.gschema.xml.h:12
 msgid "Show offline contacts"
 msgstr "Vis frakoblede kontakter"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:13
+#: ../data/org.gnome.Empathy.gschema.xml.h:13
 msgid "Whether to show contacts that are offline in the contact list."
 msgstr "Om kontakter som er frakoblet skal vises i kontaktlisten."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:14
+#: ../data/org.gnome.Empathy.gschema.xml.h:14
 msgid "Show avatars"
 msgstr "Vis personbilder"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:15
+#: ../data/org.gnome.Empathy.gschema.xml.h:15
 msgid ""
 "Whether to show avatars for contacts in the contact list and chat windows."
 msgstr "Om bilder av kontakter skal vises i kontaktlisten og samtalevinduer."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:16
+#: ../data/org.gnome.Empathy.gschema.xml.h:16
 msgid "Show protocols"
 msgstr "Vis protokoller"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:17
+#: ../data/org.gnome.Empathy.gschema.xml.h:17
 msgid "Whether to show protocols for contacts in the contact list."
 msgstr "Om protokoller for kontakter skal vises i kontaktlisten."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:18
+#: ../data/org.gnome.Empathy.gschema.xml.h:18
 msgid "Show Balance in contact list"
 msgstr "Vis saldo i kontaktliste"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:19
+#: ../data/org.gnome.Empathy.gschema.xml.h:19
 msgid "Whether to show account balances in the contact list."
 msgstr "Om saldo for konto skal vises i kontaktlisten."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:20
+#: ../data/org.gnome.Empathy.gschema.xml.h:20
 msgid "Compact contact list"
 msgstr "Kompakt kontaktliste"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:21
+#: ../data/org.gnome.Empathy.gschema.xml.h:21
 msgid "Whether to show the contact list in compact mode."
 msgstr "Om kontaktlisten skal vises i kompakt modus."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:22
+#: ../data/org.gnome.Empathy.gschema.xml.h:22
 msgid "Hide main window"
 msgstr "Skjul hovedvinduet"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:23
+#: ../data/org.gnome.Empathy.gschema.xml.h:23
 msgid "Hide the main window."
 msgstr "Skjul hovedvinduet."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:24
+#: ../data/org.gnome.Empathy.gschema.xml.h:24
 msgid "Default directory to select an avatar image from"
 msgstr "Forvalgt mappe for personbilde"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:25
+#: ../data/org.gnome.Empathy.gschema.xml.h:25
 msgid "The last directory that an avatar image was chosen from."
 msgstr "Den forrige mappen et personbilde ble valgt fra."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:26
+#: ../data/org.gnome.Empathy.gschema.xml.h:26
 msgid "Open new chats in separate windows"
 msgstr "Åpne nye samtaler i egne vinduer"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:27
+#: ../data/org.gnome.Empathy.gschema.xml.h:27
 msgid "Always open a separate chat window for new chats."
 msgstr "Alltid åpne et eget vindu til nye samtaler."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:28
+#: ../data/org.gnome.Empathy.gschema.xml.h:28
 msgid "Display incoming events in the status area"
 msgstr "Vis innkommende hendelser i statusområdet"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:29
+#: ../data/org.gnome.Empathy.gschema.xml.h:29
 msgid ""
 "Display incoming events in the status area. If false, present them to the "
 "user immediately."
@@ -171,27 +171,27 @@ msgstr ""
 "Vis innkommende hendelser i statusområdet. Hvis denne er «false» vises disse "
 "til bruker med det samme."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:30
+#: ../data/org.gnome.Empathy.gschema.xml.h:30
 msgid "The position for the chat window side pane"
 msgstr "Posisjon for pratevinduets sidelinje"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:31
+#: ../data/org.gnome.Empathy.gschema.xml.h:31
 msgid "The stored position (in pixels) of the chat window side pane."
 msgstr "Lagret posisjon (i pikselr) for pratevinduets sideområde."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:32
+#: ../data/org.gnome.Empathy.gschema.xml.h:32
 msgid "Show contact groups"
 msgstr "Vis kontaktgrupper"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:33
+#: ../data/org.gnome.Empathy.gschema.xml.h:33
 msgid "Whether to show groups in the contact list."
 msgstr "Om kontaktgrupper skal vises i kontaktlisten."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:34
+#: ../data/org.gnome.Empathy.gschema.xml.h:34
 msgid "Contact list sort criterion"
 msgstr "Sorteringskriterier for kontaktliste"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:35
+#: ../data/org.gnome.Empathy.gschema.xml.h:35
 msgid ""
 "Which criterion to use when sorting the contact list. Default is to sort by "
 "the contact's state with the value \"state\". A value of \"name\" will sort "
@@ -201,103 +201,103 @@ msgstr ""
 "å sortere kontakter etter kontaktens tilstand med verdien «state». Hvis man "
 "bruker «name» vil kontaktlisten sorteres etter kontaktens navn."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:36
+#: ../data/org.gnome.Empathy.gschema.xml.h:36
 msgid "Use notification sounds"
 msgstr "Bruk varslingslyder"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:37
+#: ../data/org.gnome.Empathy.gschema.xml.h:37
 msgid "Whether to play a sound to notify of events."
 msgstr "Om lyder skal spilles av for å varsle om hendelser."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:38
+#: ../data/org.gnome.Empathy.gschema.xml.h:38
 msgid "Disable sounds when away"
 msgstr "Slå av lyder når du er borte"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:39
+#: ../data/org.gnome.Empathy.gschema.xml.h:39
 msgid "Whether to play sound notifications when away or busy."
 msgstr "Om lyder skal spilles av når du er borte eller opptatt."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:40
+#: ../data/org.gnome.Empathy.gschema.xml.h:40
 msgid "Play a sound for incoming messages"
 msgstr "Spill av lyd når meldinger kommer inn"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:41
+#: ../data/org.gnome.Empathy.gschema.xml.h:41
 msgid "Whether to play a sound to notify of incoming messages."
 msgstr "Om lyder skal spilles av for å varsle om innkommende meldinger."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:42
+#: ../data/org.gnome.Empathy.gschema.xml.h:42
 msgid "Play a sound for outgoing messages"
 msgstr "Spill av lyd for utgående meldinger"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:43
+#: ../data/org.gnome.Empathy.gschema.xml.h:43
 msgid "Whether to play a sound to notify of outgoing messages."
 msgstr "Om lyder skal spilles av for å varsle om utgående meldinger."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:44
+#: ../data/org.gnome.Empathy.gschema.xml.h:44
 msgid "Play a sound for new conversations"
 msgstr "Spill av lyd ved nye samtaler"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:45
+#: ../data/org.gnome.Empathy.gschema.xml.h:45
 msgid "Whether to play a sound to notify of new conversations."
 msgstr "Om lyder skal spilles av for å varsle om nye samtaler."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:46
+#: ../data/org.gnome.Empathy.gschema.xml.h:46
 msgid "Play a sound when a contact logs in"
 msgstr "Spill av lyd når kontakter logger inn"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:47
+#: ../data/org.gnome.Empathy.gschema.xml.h:47
 msgid "Whether to play a sound to notify of contacts logging into the network."
 msgstr ""
 "Om en lyd skal spilles av for å varsle om at kontakter logger inn på "
 "nettverket."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:48
+#: ../data/org.gnome.Empathy.gschema.xml.h:48
 msgid "Play a sound when a contact logs out"
 msgstr "Spill av lyd når kontakter logger ut"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:49
+#: ../data/org.gnome.Empathy.gschema.xml.h:49
 msgid ""
 "Whether to play a sound to notify of contacts logging out of the network."
 msgstr ""
 "Om en lyd skal spilles av for å varsle at kontakter logger ut av nettverket."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:50
+#: ../data/org.gnome.Empathy.gschema.xml.h:50
 msgid "Play a sound when we log in"
 msgstr "Spill av lyd når du logger inn"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:51
+#: ../data/org.gnome.Empathy.gschema.xml.h:51
 msgid "Whether to play a sound when logging into a network."
 msgstr "Om lyder skal spilles av når du logger inn på et nettverk."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:52
+#: ../data/org.gnome.Empathy.gschema.xml.h:52
 msgid "Play a sound when we log out"
 msgstr "Spill av lyd når du logger ut"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:53
+#: ../data/org.gnome.Empathy.gschema.xml.h:53
 msgid "Whether to play a sound when logging out of a network."
 msgstr "Om lyder skal spilles av når du logger ut av et nettverk."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:54
+#: ../data/org.gnome.Empathy.gschema.xml.h:54
 msgid "Enable popup notifications for new messages"
 msgstr "Aktiver varsling oppsprettmeldinger for nye meldinger"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:55
+#: ../data/org.gnome.Empathy.gschema.xml.h:55
 msgid "Whether to show a popup notification when receiving a new message."
 msgstr "Om varsling skal vises når en ny melding mottas."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:56
+#: ../data/org.gnome.Empathy.gschema.xml.h:56
 msgid "Disable popup notifications when away"
 msgstr "Slå av varsling når du er borte"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:57
+#: ../data/org.gnome.Empathy.gschema.xml.h:57
 msgid "Whether to show popup notifications when away or busy."
 msgstr "Om varsling skal vises når du er borte eller opptatt."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:58
+#: ../data/org.gnome.Empathy.gschema.xml.h:58
 msgid "Pop up notifications if the chat isn't focused"
 msgstr "Vis varsling når prat ikke er fokusert"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:59
+#: ../data/org.gnome.Empathy.gschema.xml.h:59
 msgid ""
 "Whether to show a popup notification when receiving a new message even if "
 "the chat is already opened, but not focused."
@@ -305,77 +305,77 @@ msgstr ""
 "Om varsling skal vises når en melding mottas selv om pratevinduet er åpent "
 "men ikke har fokus."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:60
+#: ../data/org.gnome.Empathy.gschema.xml.h:60
 msgid "Pop up notifications when a contact logs in"
 msgstr "Vis varsling når en kontakt logger inn"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:61
+#: ../data/org.gnome.Empathy.gschema.xml.h:61
 msgid "Whether to show a popup notification when a contact goes online."
 msgstr "Om et varsel skal vises når en kontakt er kobler fra."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:62
+#: ../data/org.gnome.Empathy.gschema.xml.h:62
 msgid "Pop up notifications when a contact logs out"
 msgstr "Vis varsling når en kontakt logger ut"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:63
+#: ../data/org.gnome.Empathy.gschema.xml.h:63
 msgid "Whether to show a popup notification when a contact goes offline."
 msgstr "Om varsel skal vises når en kontakt kobler fra."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:64
+#: ../data/org.gnome.Empathy.gschema.xml.h:64
 msgid "Use graphical smileys"
 msgstr "Vis smilefjes grafisk"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:65
+#: ../data/org.gnome.Empathy.gschema.xml.h:65
 msgid "Whether to convert smileys into graphical images in conversations."
 msgstr "Om smilefjes skal konverteres til grafiske bilder i samtaler."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:66
+#: ../data/org.gnome.Empathy.gschema.xml.h:66
 msgid "Show contact list in rooms"
 msgstr "Vis kontaktliste i rom"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:67
+#: ../data/org.gnome.Empathy.gschema.xml.h:67
 msgid "Whether to show the contact list in chat rooms."
 msgstr "Om kontaktlisten skal vises i praterom."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:68
+#: ../data/org.gnome.Empathy.gschema.xml.h:68
 msgid "Chat window theme"
 msgstr "Tema for samtalevindu"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:69
+#: ../data/org.gnome.Empathy.gschema.xml.h:69
 msgid "The theme that is used to display the conversation in chat windows."
 msgstr "Temaet som brukes til å vise samtaler."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:70
+#: ../data/org.gnome.Empathy.gschema.xml.h:70
 msgid "Chat window theme variant"
 msgstr "Temavariant for samtalevindu"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:71
+#: ../data/org.gnome.Empathy.gschema.xml.h:71
 msgid ""
 "The theme variant that is used to display the conversation in chat windows."
 msgstr "Temavariant som brukes til å vise samtale i pratevinduer."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:72
+#: ../data/org.gnome.Empathy.gschema.xml.h:72
 msgid "Path of the Adium theme to use"
 msgstr "Sti til Adium-tema som skal brukes"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:73
+#: ../data/org.gnome.Empathy.gschema.xml.h:73
 msgid "Path of the Adium theme to use if the theme used for chat is Adium."
 msgstr "Sti til Adium-tema skal brukes hvis tema for prat er Adium."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:74
+#: ../data/org.gnome.Empathy.gschema.xml.h:74
 msgid "Enable WebKit Developer Tools"
 msgstr "Slå på utviklerverktøy for WebKit"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:75
+#: ../data/org.gnome.Empathy.gschema.xml.h:75
 msgid ""
 "Whether WebKit developer tools, such as the Web Inspector, should be enabled."
 msgstr "Om utviklerverktøy for WebKit, som Web Inspector, skal slås på."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:76
+#: ../data/org.gnome.Empathy.gschema.xml.h:76
 msgid "Inform other users when you are typing to them"
 msgstr "Informer andre brukere når du skriver til dem"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:77
+#: ../data/org.gnome.Empathy.gschema.xml.h:77
 msgid ""
 "Whether to send the 'composing' or 'paused' chat states. Does not currently "
 "affect the 'gone' state."
@@ -383,39 +383,39 @@ msgstr ""
 "Hvorvidt tilstand for «skriver» eller «pause» i prat skal sendes. Påvirker "
 "ikke status «borte»."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:78
+#: ../data/org.gnome.Empathy.gschema.xml.h:78
 msgid "Use theme for chat rooms"
 msgstr "Bruk tema for samtalerom"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:79
+#: ../data/org.gnome.Empathy.gschema.xml.h:79
 msgid "Whether to use the theme for chat rooms."
 msgstr "Om tema skal brukes for praterom eller ikke."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:80
+#: ../data/org.gnome.Empathy.gschema.xml.h:80
 msgid "Spell checking languages"
 msgstr "Stavekontrollspråk"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:81
+#: ../data/org.gnome.Empathy.gschema.xml.h:81
 msgid ""
 "Comma-separated list of spell checker languages to use (e.g. \"en, fr, nl\")."
 msgstr ""
 "Kommaseparert liste over stavekontrollspråk som skal brukes (f.eks \"no, en, "
 "fr, nl\")."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:82
+#: ../data/org.gnome.Empathy.gschema.xml.h:82
 msgid "Enable spell checker"
 msgstr "Bruk stavekontroll"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:83
+#: ../data/org.gnome.Empathy.gschema.xml.h:83
 msgid ""
 "Whether to check words typed against the languages you want to check with."
 msgstr "Om stavekontroll skal sjekke ord mot de språkene du ønsker å bruke."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:84
+#: ../data/org.gnome.Empathy.gschema.xml.h:84
 msgid "Nick completed character"
 msgstr "Tegn for fullføring av kallenavn"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:85
+#: ../data/org.gnome.Empathy.gschema.xml.h:85
 msgid ""
 "Character to add after nickname when using nick completion (tab) in group "
 "chat."
@@ -423,54 +423,54 @@ msgstr ""
 "Tegn som skal legges til etter kallenavn når fullføring av kallenavn med "
 "tabulator benyttes i gruppeprat."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:86
+#: ../data/org.gnome.Empathy.gschema.xml.h:86
 msgid "Empathy should use the avatar of the contact as the chat window icon"
 msgstr ""
 "Empathy skal bruke personbildet for kontakten som ikon for pratevinduet"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:87
+#: ../data/org.gnome.Empathy.gschema.xml.h:87
 msgid ""
 "Whether Empathy should use the avatar of the contact as the chat window icon."
 msgstr ""
 "Om Empathy skal bruke personbilde for kontakten som ikon for pratevinduet."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:88
+#: ../data/org.gnome.Empathy.gschema.xml.h:88
 msgid "Last account selected in Join Room dialog"
 msgstr "Siste konto valgt i dialogen «Bli med i rom»"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:89
+#: ../data/org.gnome.Empathy.gschema.xml.h:89
 msgid "D-Bus object path of the last account selected to join a room."
 msgstr "D-Bus objektsti for siste konto valgt for å bli med i et rom."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:90
+#: ../data/org.gnome.Empathy.gschema.xml.h:90
 msgid "Camera device"
 msgstr "Kameraenhet"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:91
+#: ../data/org.gnome.Empathy.gschema.xml.h:91
 msgid "Default camera device to use in video calls, e.g. /dev/video0."
 msgstr "Forvalgt kameraenhet til bruk for videosamtaler. F.eks. /dev/video0."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:92
+#: ../data/org.gnome.Empathy.gschema.xml.h:92
 msgid "Camera position"
 msgstr "Kameraposisjon"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:93
+#: ../data/org.gnome.Empathy.gschema.xml.h:93
 msgid "Position the camera preview should be during a call."
 msgstr "Posisjon for kameraforhåndsvisning under en samtale."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:94
+#: ../data/org.gnome.Empathy.gschema.xml.h:94
 msgid "Echo cancellation support"
 msgstr "Støtte for utlikning av ekko"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:95
+#: ../data/org.gnome.Empathy.gschema.xml.h:95
 msgid "Whether to enable Pulseaudio's echo cancellation filter."
 msgstr "Hvorvidt Pulseaudio's filter for utlikning av ekko skal slås på."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:96
+#: ../data/org.gnome.Empathy.gschema.xml.h:96
 msgid "Show hint about closing the main window"
 msgstr "Vis hint om lukking av hovedvinduet"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:97
+#: ../data/org.gnome.Empathy.gschema.xml.h:97
 msgid ""
 "Whether to show the message dialog about closing the main window with the "
 "'x' button in the title bar."
@@ -478,43 +478,43 @@ msgstr ""
 "Om meldingsdialog om lukking av vinduet med «x»-knappen i tittelfeltet skal "
 "vises."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:98
+#: ../data/org.gnome.Empathy.gschema.xml.h:98
 msgid "Empathy can publish the user's location"
 msgstr "Empathy kan publisere brukers plassering"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:99
+#: ../data/org.gnome.Empathy.gschema.xml.h:99
 msgid "Whether Empathy can publish the user's location to their contacts."
 msgstr "Om Empathy kan publisere brukers plassering til kontakter."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:100
+#: ../data/org.gnome.Empathy.gschema.xml.h:100
 msgid "Empathy can use the network to guess the location"
 msgstr "Empathy kan bruke nettverket til å gjette plassering"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:101
+#: ../data/org.gnome.Empathy.gschema.xml.h:101
 msgid "Whether Empathy can use the network to guess the location."
 msgstr "Om Empathy kan bruke nettverket for å gjette plassering."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:102
+#: ../data/org.gnome.Empathy.gschema.xml.h:102
 msgid "Empathy can use the cellular network to guess the location"
 msgstr "Empathy kan bruke mobilnettverk til å gjette plassering"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:103
+#: ../data/org.gnome.Empathy.gschema.xml.h:103
 msgid "Whether Empathy can use the cellular network to guess the location."
 msgstr "Om Empathy kan bruke mobilnettverk for å gjette plassering."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:104
+#: ../data/org.gnome.Empathy.gschema.xml.h:104
 msgid "Empathy can use the GPS to guess the location"
 msgstr "Empathy kan bruke GPS til å gjette plassering"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:105
+#: ../data/org.gnome.Empathy.gschema.xml.h:105
 msgid "Whether Empathy can use the GPS to guess the location."
 msgstr "Om Empathy kan bruke GPS for å gjette plassering."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:106
+#: ../data/org.gnome.Empathy.gschema.xml.h:106
 msgid "Empathy should reduce the location's accuracy"
 msgstr "Empathy skal redusere nøyaktighet for plasseringenseri"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:107
+#: ../data/org.gnome.Empathy.gschema.xml.h:107
 msgid ""
 "Whether Empathy should reduce the location's accuracy for privacy reasons."
 msgstr ""
@@ -564,18 +564,18 @@ msgstr "Valgt fil er ikke en vanlig fil"
 msgid "The selected file is empty"
 msgstr "Valgt fil er tom"
 
-#: ../libempathy/empathy-message.c:415 ../src/empathy-call-observer.c:129
+#: ../libempathy/empathy-message.c:407 ../src/empathy-call-observer.c:129
 #, c-format
 msgid "Missed call from %s"
 msgstr "Tapt anrop fra %s"
 
 #. Translators: this is an outgoing call, e.g. 'Called Alice'
-#: ../libempathy/empathy-message.c:419
+#: ../libempathy/empathy-message.c:411
 #, c-format
 msgid "Called %s"
 msgstr "Samtale med %s"
 
-#: ../libempathy/empathy-message.c:422
+#: ../libempathy/empathy-message.c:414
 #, c-format
 msgid "Call from %s"
 msgstr "Samtale fra %s"
@@ -809,7 +809,7 @@ msgid "All accounts"
 msgstr "Alle kontoer"
 
 #: ../libempathy-gtk/empathy-account-widget.c:682
-#: ../src/empathy-import-widget.c:326
+#: ../src/empathy-import-widget.c:323
 msgid "Account"
 msgstr "Konto"
 
@@ -846,11 +846,11 @@ msgstr "_Bruk"
 msgid "L_og in"
 msgstr "L_ogg inn"
 
-#: ../libempathy-gtk/empathy-account-widget.c:1812
+#: ../libempathy-gtk/empathy-account-widget.c:1810
 msgid "This account already exists on the server"
 msgstr "Denne kontoen eksisterer allerede på tjeneren"
 
-#: ../libempathy-gtk/empathy-account-widget.c:1816
+#: ../libempathy-gtk/empathy-account-widget.c:1814
 msgid "Create a new account on the server"
 msgstr "Lag en ny konto på tjeneren"
 
@@ -859,19 +859,19 @@ msgstr "Lag en ny konto på tjeneren"
 #. * 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:2241
+#: ../libempathy-gtk/empathy-account-widget.c:2236
 #, c-format
 msgid "%1$s on %2$s"
 msgstr "%1$s av %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:2267
+#: ../libempathy-gtk/empathy-account-widget.c:2262
 #, c-format
 msgid "%s Account"
 msgstr "%s-konto"
 
-#: ../libempathy-gtk/empathy-account-widget.c:2271
+#: ../libempathy-gtk/empathy-account-widget.c:2266
 msgid "New account"
 msgstr "Ny konto"
 
@@ -931,7 +931,7 @@ msgstr "_Tjener:"
 #: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:23
 #: ../libempathy-gtk/empathy-account-widget-msn.ui.h:7
 #: ../libempathy-gtk/empathy-account-widget-local-xmpp.ui.h:7
-#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:21
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:22
 #: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:9
 msgid "Advanced"
 msgstr "Avansert"
@@ -949,7 +949,7 @@ msgstr "HVa er ditt AIM-passord?"
 #: ../libempathy-gtk/empathy-account-widget-icq.ui.h:11
 #: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:7
 #: ../libempathy-gtk/empathy-account-widget-msn.ui.h:10
-#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:24
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:25
 msgid "Remember Password"
 msgstr "Husk passord"
 
@@ -993,36 +993,32 @@ msgstr "Hva er din UIN for ICQ?"
 msgid "What is your ICQ password?"
 msgstr "Hva er ditt passord for ICQ?"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.c:206
-#: ../libempathy-gtk/empathy-account-widget-sip.c:239
+#: ../libempathy-gtk/empathy-account-widget-sip.c:207
+#: ../libempathy-gtk/empathy-account-widget-sip.c:240
 msgid "Auto"
 msgstr "Auto"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.c:209
+#: ../libempathy-gtk/empathy-account-widget-sip.c:210
 msgid "UDP"
 msgstr "UDP"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.c:212
+#: ../libempathy-gtk/empathy-account-widget-sip.c:213
 msgid "TCP"
 msgstr "TCP"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.c:215
+#: ../libempathy-gtk/empathy-account-widget-sip.c:216
 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:244
+#: ../libempathy-gtk/empathy-account-widget-sip.c:245
 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:249
+#: ../libempathy-gtk/empathy-account-widget-sip.c:250
 msgid "Options"
 msgstr "Alternativer"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.c:252
+#: ../libempathy-gtk/empathy-account-widget-sip.c:253
 msgid "None"
 msgstr "Ingen"
 
@@ -1283,11 +1279,15 @@ msgstr "Overse TLS-feil"
 msgid "Port:"
 msgstr "Port:"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:22
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:21
+msgid "Local IP Address:"
+msgstr "Lokal IP-adresse:"
+
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:23
 msgid "What is your SIP login ID?"
 msgstr "Hva er din påloggings-ID for SIP?"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:23
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:24
 msgid "What is your SIP account password?"
 msgstr "Hva er passordet for din SIP-konto?"
 
@@ -1373,40 +1373,40 @@ msgstr "Nødsamtaler er ikke støttet på denne protokollen"
 msgid "You don't have enough credit in order to place this call"
 msgstr "Du har ikke nok kreditt til å starte denne samtalen"
 
-#: ../libempathy-gtk/empathy-chat.c:729
+#: ../libempathy-gtk/empathy-chat.c:727
 msgid "Failed to open private chat"
 msgstr "Klarte ikke å åpne privat prat"
 
-#: ../libempathy-gtk/empathy-chat.c:787
+#: ../libempathy-gtk/empathy-chat.c:785
 msgid "Topic not supported on this conversation"
 msgstr "Emne er ikke støttet for denne samtalen"
 
-#: ../libempathy-gtk/empathy-chat.c:793
+#: ../libempathy-gtk/empathy-chat.c:791
 msgid "You are not allowed to change the topic"
 msgstr "Du har ikke lov til å bytte emne"
 
-#: ../libempathy-gtk/empathy-chat.c:992
+#: ../libempathy-gtk/empathy-chat.c:990
 #, c-format
 msgid "“%s” is not a valid contact ID"
 msgstr "«%s» er ikke en gyldig kontakt-ID"
 
-#: ../libempathy-gtk/empathy-chat.c:1087
+#: ../libempathy-gtk/empathy-chat.c:1085
 msgid "/clear: clear all messages from the current conversation"
 msgstr "/clear: tøm alle meldinger fra aktiv samtale"
 
-#: ../libempathy-gtk/empathy-chat.c:1090
+#: ../libempathy-gtk/empathy-chat.c:1088
 msgid "/topic <topic>: set the topic of the current conversation"
 msgstr "/topic <emne>: sett emne for aktiv samtale"
 
-#: ../libempathy-gtk/empathy-chat.c:1093
+#: ../libempathy-gtk/empathy-chat.c:1091
 msgid "/join <chat room ID>: join a new chat room"
 msgstr "/join <ID for praterom>: bli med i et nytt praterom"
 
-#: ../libempathy-gtk/empathy-chat.c:1096
+#: ../libempathy-gtk/empathy-chat.c:1094
 msgid "/j <chat room ID>: join a new chat room"
 msgstr "/j <prateroms-ID>: bli med i et nytt praterom"
 
-#: ../libempathy-gtk/empathy-chat.c:1100
+#: ../libempathy-gtk/empathy-chat.c:1098
 msgid ""
 "/part [<chat room ID>] [<reason>]: leave the chat room, by default the "
 "current one"
@@ -1414,23 +1414,23 @@ msgstr ""
 "/part [<praterom-ID>] [<årsak>]: forlat praterommet, forvalg er det aktive "
 "rommet"
 
-#: ../libempathy-gtk/empathy-chat.c:1104
+#: ../libempathy-gtk/empathy-chat.c:1102
 msgid "/query <contact ID> [<message>]: open a private chat"
 msgstr "/query <kontakt-ID> [<melding>]: åpne en privat samtale"
 
-#: ../libempathy-gtk/empathy-chat.c:1107
+#: ../libempathy-gtk/empathy-chat.c:1105
 msgid "/msg <contact ID> <message>: open a private chat"
 msgstr "/msg <kontakt-ID> <melding>: åpne en privat samtale"
 
-#: ../libempathy-gtk/empathy-chat.c:1110
+#: ../libempathy-gtk/empathy-chat.c:1108
 msgid "/nick <nickname>: change your nickname on the current server"
 msgstr "/nick <kallenavn>: bytt kallenavn på denne tjeneren"
 
-#: ../libempathy-gtk/empathy-chat.c:1113
+#: ../libempathy-gtk/empathy-chat.c:1111
 msgid "/me <message>: send an ACTION message to the current conversation"
 msgstr "/me <melding>: send en HANDLINGS-melding til aktiv samtale"
 
-#: ../libempathy-gtk/empathy-chat.c:1116
+#: ../libempathy-gtk/empathy-chat.c:1114
 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 "
@@ -1440,11 +1440,11 @@ msgstr ""
 "sende en melding som starter med tegnet «/». For eksempel: «/say /join "
 "brukes til å bli med i et nytt praterom»"
 
-#: ../libempathy-gtk/empathy-chat.c:1121
+#: ../libempathy-gtk/empathy-chat.c:1119
 msgid "/whois <contact ID>: display information about a contact"
 msgstr "/whois <kontakt-ID>: vis informasjon om en kontakt"
 
-#: ../libempathy-gtk/empathy-chat.c:1124
+#: ../libempathy-gtk/empathy-chat.c:1122
 msgid ""
 "/help [<command>]: show all supported commands. If <command> is defined, "
 "show its usage."
@@ -1452,126 +1452,126 @@ msgstr ""
 "/help [<kommando>]: vis alle støttede kommandoer. Vis hjelp for <kommando> "
 "hvis den er definert."
 
-#: ../libempathy-gtk/empathy-chat.c:1143
+#: ../libempathy-gtk/empathy-chat.c:1141
 #, c-format
 msgid "Usage: %s"
 msgstr "Bruk: %s"
 
-#: ../libempathy-gtk/empathy-chat.c:1188
+#: ../libempathy-gtk/empathy-chat.c:1186
 msgid "Unknown command"
 msgstr "Ukjent kommando"
 
-#: ../libempathy-gtk/empathy-chat.c:1314
+#: ../libempathy-gtk/empathy-chat.c:1312
 msgid "Unknown command; see /help for the available commands"
 msgstr "Ukjent kommando; se /help for tilgjengelige kommandoer"
 
-#: ../libempathy-gtk/empathy-chat.c:1565
+#: ../libempathy-gtk/empathy-chat.c:1563
 msgid "insufficient balance to send message"
 msgstr "ikke nok kreditt til å sende melding"
 
-#: ../libempathy-gtk/empathy-chat.c:1569 ../libempathy-gtk/empathy-chat.c:1583
-#: ../libempathy-gtk/empathy-chat.c:1646
+#: ../libempathy-gtk/empathy-chat.c:1567 ../libempathy-gtk/empathy-chat.c:1581
+#: ../libempathy-gtk/empathy-chat.c:1644
 #, c-format
 msgid "Error sending message '%s': %s"
 msgstr "Feil ved sending av melding «%s»: %s"
 
-#: ../libempathy-gtk/empathy-chat.c:1571 ../libempathy-gtk/empathy-chat.c:1588
-#: ../libempathy-gtk/empathy-chat.c:1650
+#: ../libempathy-gtk/empathy-chat.c:1569 ../libempathy-gtk/empathy-chat.c:1586
+#: ../libempathy-gtk/empathy-chat.c:1648
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Feil ved sending av melding: %s"
 
 #. translators: error used when user doesn't have enough credit on his
 #. * account to send the message.
-#: ../libempathy-gtk/empathy-chat.c:1577
+#: ../libempathy-gtk/empathy-chat.c:1575
 #, c-format
 msgid "insufficient balance to send message. <a href='%s'>Top up</a>."
 msgstr "ikke nok kreditt til å sende melding. <a href='%s'>Fyll på</a>."
 
-#: ../libempathy-gtk/empathy-chat.c:1617
+#: ../libempathy-gtk/empathy-chat.c:1615
 msgid "not capable"
 msgstr "ikke kapabel"
 
-#: ../libempathy-gtk/empathy-chat.c:1624
+#: ../libempathy-gtk/empathy-chat.c:1622
 msgid "offline"
 msgstr "frakoblet"
 
-#: ../libempathy-gtk/empathy-chat.c:1627
+#: ../libempathy-gtk/empathy-chat.c:1625
 msgid "invalid contact"
 msgstr "ugyldig kontakt"
 
-#: ../libempathy-gtk/empathy-chat.c:1630
+#: ../libempathy-gtk/empathy-chat.c:1628
 msgid "permission denied"
 msgstr "tilgang nektet"
 
-#: ../libempathy-gtk/empathy-chat.c:1633
+#: ../libempathy-gtk/empathy-chat.c:1631
 msgid "too long message"
 msgstr "meldingen er for lang"
 
-#: ../libempathy-gtk/empathy-chat.c:1636
+#: ../libempathy-gtk/empathy-chat.c:1634
 msgid "not implemented"
 msgstr "ikke implementert"
 
-#: ../libempathy-gtk/empathy-chat.c:1640
+#: ../libempathy-gtk/empathy-chat.c:1638
 msgid "unknown"
 msgstr "ukjent"
 
-#: ../libempathy-gtk/empathy-chat.c:1707 ../src/empathy-chat-window.c:920
+#: ../libempathy-gtk/empathy-chat.c:1705 ../src/empathy-chat-window.c:919
 msgid "Topic:"
 msgstr "Emne:"
 
-#: ../libempathy-gtk/empathy-chat.c:1722
+#: ../libempathy-gtk/empathy-chat.c:1720
 #, c-format
 msgid "Topic set to: %s"
 msgstr "Emne satt til: %s"
 
-#: ../libempathy-gtk/empathy-chat.c:1724
+#: ../libempathy-gtk/empathy-chat.c:1722
 #, c-format
 msgid "Topic set by %s to: %s"
 msgstr "Emne satt av %s til: %s"
 
 #. No need to display this 'event' is no topic can be defined anyway
-#: ../libempathy-gtk/empathy-chat.c:1729
+#: ../libempathy-gtk/empathy-chat.c:1727
 msgid "No topic defined"
 msgstr "Emne ikke definert"
 
-#: ../libempathy-gtk/empathy-chat.c:2245
+#: ../libempathy-gtk/empathy-chat.c:2243
 msgid "(No Suggestions)"
 msgstr "(Ingen forslag)"
 
 #. translators: %s is the selected word
-#: ../libempathy-gtk/empathy-chat.c:2313
+#: ../libempathy-gtk/empathy-chat.c:2311
 #, c-format
 msgid "Add '%s' to Dictionary"
 msgstr "Legg til «%s» i ordboken"
 
 #. translators: first %s is the selected word,
 #. * second %s is the language name of the target dictionary
-#: ../libempathy-gtk/empathy-chat.c:2350
+#: ../libempathy-gtk/empathy-chat.c:2348
 #, c-format
 msgid "Add '%s' to %s Dictionary"
 msgstr "Legg til «%s» i ordbok for %s"
 
-#: ../libempathy-gtk/empathy-chat.c:2420
+#: ../libempathy-gtk/empathy-chat.c:2418
 msgid "Insert Smiley"
 msgstr "Sett inn smilefjes"
 
 #. send button
-#: ../libempathy-gtk/empathy-chat.c:2438
+#: ../libempathy-gtk/empathy-chat.c:2436
 #: ../libempathy-gtk/empathy-ui-utils.c:1880
 msgid "_Send"
 msgstr "_Send"
 
 #. Spelling suggestions
-#: ../libempathy-gtk/empathy-chat.c:2495
+#: ../libempathy-gtk/empathy-chat.c:2493
 msgid "_Spelling Suggestions"
 msgstr "_Staveforslag"
 
-#: ../libempathy-gtk/empathy-chat.c:2584
+#: ../libempathy-gtk/empathy-chat.c:2582
 msgid "Failed to retrieve recent logs"
 msgstr "Klarte ikke å hente siste logger"
 
-#: ../libempathy-gtk/empathy-chat.c:2723
+#: ../libempathy-gtk/empathy-chat.c:2721
 #, c-format
 msgid "%s has disconnected"
 msgstr "%s har koblet fra"
@@ -1579,12 +1579,12 @@ msgstr "%s har koblet fra"
 #. translators: reverse the order of these arguments
 #. * if the kicked should come before the kicker in your locale.
 #.
-#: ../libempathy-gtk/empathy-chat.c:2730
+#: ../libempathy-gtk/empathy-chat.c:2728
 #, c-format
 msgid "%1$s was kicked by %2$s"
 msgstr "%1$s ble sparket av %2$s"
 
-#: ../libempathy-gtk/empathy-chat.c:2733
+#: ../libempathy-gtk/empathy-chat.c:2731
 #, c-format
 msgid "%s was kicked"
 msgstr "%s ble sparket"
@@ -1592,17 +1592,17 @@ msgstr "%s ble sparket"
 #. translators: reverse the order of these arguments
 #. * if the banned should come before the banner in your locale.
 #.
-#: ../libempathy-gtk/empathy-chat.c:2741
+#: ../libempathy-gtk/empathy-chat.c:2739
 #, c-format
 msgid "%1$s was banned by %2$s"
 msgstr "%1$s ble bannlyst av %2$s"
 
-#: ../libempathy-gtk/empathy-chat.c:2744
+#: ../libempathy-gtk/empathy-chat.c:2742
 #, c-format
 msgid "%s was banned"
 msgstr "%s ble bannlyst"
 
-#: ../libempathy-gtk/empathy-chat.c:2748
+#: ../libempathy-gtk/empathy-chat.c:2746
 #, c-format
 msgid "%s has left the room"
 msgstr "%s har forlatt rommet"
@@ -1612,17 +1612,17 @@ msgstr "%s har forlatt rommet"
 #. * given by the user living the room. If this poses a problem,
 #. * please let us know. :-)
 #.
-#: ../libempathy-gtk/empathy-chat.c:2757
+#: ../libempathy-gtk/empathy-chat.c:2755
 #, c-format
 msgid " (%s)"
 msgstr " (%s)"
 
-#: ../libempathy-gtk/empathy-chat.c:2782
+#: ../libempathy-gtk/empathy-chat.c:2780
 #, c-format
 msgid "%s has joined the room"
 msgstr "%s har blitt med i rommet"
 
-#: ../libempathy-gtk/empathy-chat.c:2807
+#: ../libempathy-gtk/empathy-chat.c:2805
 #, c-format
 msgid "%s is now known as %s"
 msgstr "%s er nå kjent som %s"
@@ -1630,55 +1630,55 @@ msgstr "%s er nå kjent som %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:2994
+#: ../libempathy-gtk/empathy-chat.c:2992
 #: ../src/empathy-streamed-media-window.c:1888
-#: ../src/empathy-event-manager.c:1279 ../src/empathy-call-window.c:1477
-#: ../src/empathy-call-window.c:1527 ../src/empathy-call-window.c:2573
+#: ../src/empathy-event-manager.c:1279 ../src/empathy-call-window.c:1466
+#: ../src/empathy-call-window.c:1516 ../src/empathy-call-window.c:2562
 msgid "Disconnected"
 msgstr "Koblet fra"
 
 #. Add message
-#: ../libempathy-gtk/empathy-chat.c:3658
+#: ../libempathy-gtk/empathy-chat.c:3656
 msgid "Would you like to store this password?"
 msgstr "Vil du lagre dette passordet?"
 
-#: ../libempathy-gtk/empathy-chat.c:3664
+#: ../libempathy-gtk/empathy-chat.c:3662
 msgid "Remember"
 msgstr "Husk"
 
-#: ../libempathy-gtk/empathy-chat.c:3674
+#: ../libempathy-gtk/empathy-chat.c:3672
 msgid "Not now"
 msgstr "Ikke nå"
 
-#: ../libempathy-gtk/empathy-chat.c:3718
+#: ../libempathy-gtk/empathy-chat.c:3716
 #: ../libempathy-gtk/empathy-bad-password-dialog.c:142
 msgid "Retry"
 msgstr "Prøv igjen"
 
-#: ../libempathy-gtk/empathy-chat.c:3722
+#: ../libempathy-gtk/empathy-chat.c:3720
 msgid "Wrong password; please try again:"
 msgstr "Feil passord; vennligst prøv igjen:"
 
 #. Add message
-#: ../libempathy-gtk/empathy-chat.c:3852
+#: ../libempathy-gtk/empathy-chat.c:3850
 msgid "This room is protected by a password:"
 msgstr "Dette rommet er beskyttet med et passord:"
 
-#: ../libempathy-gtk/empathy-chat.c:3879
+#: ../libempathy-gtk/empathy-chat.c:3877
 msgid "Join"
 msgstr "Bli med"
 
-#: ../libempathy-gtk/empathy-chat.c:4071 ../src/empathy-event-manager.c:1300
+#: ../libempathy-gtk/empathy-chat.c:4069 ../src/empathy-event-manager.c:1300
 msgid "Connected"
 msgstr "Koblet til"
 
-#: ../libempathy-gtk/empathy-chat.c:4126
+#: ../libempathy-gtk/empathy-chat.c:4124
 msgid "Conversation"
 msgstr "Samtale"
 
 #. Translators: this string is a something like
 #. * "Escher Cat (SMS)"
-#: ../libempathy-gtk/empathy-chat.c:4131
+#: ../libempathy-gtk/empathy-chat.c:4129
 #, c-format
 msgid "%s (SMS)"
 msgstr "%s (SMS)"
@@ -1709,7 +1709,7 @@ msgstr "Rediger blokkerte kontakter"
 
 #. Account and Identifier
 #: ../libempathy-gtk/empathy-contact-blocking-dialog.ui.h:1
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:506
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:503
 #: ../libempathy-gtk/empathy-contact-widget.ui.h:1
 #: ../libempathy-gtk/empathy-individual-widget.c:1474
 #: ../src/empathy-chatrooms-window.ui.h:2
@@ -1781,157 +1781,157 @@ msgid "Decide _Later"
 msgstr "A_vgjør senere"
 
 #. Title
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:499
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:496
 msgid "Search contacts"
 msgstr "Søk i kontakter"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:529
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:526
 msgid "Search: "
 msgstr "Søk: "
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:587
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:584
 msgid "_Add Contact"
 msgstr "_Legg til kontakt"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:605
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:602
 msgid "No contacts found"
 msgstr "Ingen kontakter funnet"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:621
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:618
 msgid "Your message introducing yourself:"
 msgstr "Melding der du introduserer deg selv:"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:629
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:626
 msgid "Please let me see when you're online. Thanks!"
 msgstr "Vennligst la meg så når du er tilkoblet. Takk!"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:567
+#: ../libempathy-gtk/empathy-contact-widget.c:566
 #: ../libempathy-gtk/empathy-individual-widget.c:304
 msgid "Channels:"
 msgstr "Kanaler:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:747
+#: ../libempathy-gtk/empathy-contact-widget.c:746
 #: ../libempathy-gtk/empathy-individual-widget.c:455
 msgid "Country ISO Code:"
 msgstr "ISO-kode for land:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:749
+#: ../libempathy-gtk/empathy-contact-widget.c:748
 #: ../libempathy-gtk/empathy-individual-widget.c:457
 msgid "Country:"
 msgstr "Land:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:751
+#: ../libempathy-gtk/empathy-contact-widget.c:750
 #: ../libempathy-gtk/empathy-individual-widget.c:459
 msgid "State:"
 msgstr "Tilstand:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:753
+#: ../libempathy-gtk/empathy-contact-widget.c:752
 #: ../libempathy-gtk/empathy-individual-widget.c:461
 msgid "City:"
 msgstr "By:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:755
+#: ../libempathy-gtk/empathy-contact-widget.c:754
 #: ../libempathy-gtk/empathy-individual-widget.c:463
 msgid "Area:"
 msgstr "Område:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:757
+#: ../libempathy-gtk/empathy-contact-widget.c:756
 #: ../libempathy-gtk/empathy-individual-widget.c:465
 msgid "Postal Code:"
 msgstr "Postkode:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:759
+#: ../libempathy-gtk/empathy-contact-widget.c:758
 #: ../libempathy-gtk/empathy-individual-widget.c:467
 msgid "Street:"
 msgstr "Gate:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:761
+#: ../libempathy-gtk/empathy-contact-widget.c:760
 #: ../libempathy-gtk/empathy-individual-widget.c:469
 msgid "Building:"
 msgstr "Bygning:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:763
+#: ../libempathy-gtk/empathy-contact-widget.c:762
 #: ../libempathy-gtk/empathy-individual-widget.c:471
 msgid "Floor:"
 msgstr "Etasje:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:765
+#: ../libempathy-gtk/empathy-contact-widget.c:764
 #: ../libempathy-gtk/empathy-individual-widget.c:473
 msgid "Room:"
 msgstr "Rom:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:767
+#: ../libempathy-gtk/empathy-contact-widget.c:766
 #: ../libempathy-gtk/empathy-individual-widget.c:475
 msgid "Text:"
 msgstr "Tekst:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:769
+#: ../libempathy-gtk/empathy-contact-widget.c:768
 #: ../libempathy-gtk/empathy-individual-widget.c:477
 msgid "Description:"
 msgstr "Beskrivelse:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:771
+#: ../libempathy-gtk/empathy-contact-widget.c:770
 #: ../libempathy-gtk/empathy-individual-widget.c:479
 msgid "URI:"
 msgstr "URI:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:773
+#: ../libempathy-gtk/empathy-contact-widget.c:772
 #: ../libempathy-gtk/empathy-individual-widget.c:481
 msgid "Accuracy Level:"
 msgstr "Nøyaktighetsnivå:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:775
+#: ../libempathy-gtk/empathy-contact-widget.c:774
 #: ../libempathy-gtk/empathy-individual-widget.c:483
 msgid "Error:"
 msgstr "Feil:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:777
+#: ../libempathy-gtk/empathy-contact-widget.c:776
 #: ../libempathy-gtk/empathy-individual-widget.c:485
 msgid "Vertical Error (meters):"
 msgstr "Vertikal feil (meter):"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:779
+#: ../libempathy-gtk/empathy-contact-widget.c:778
 #: ../libempathy-gtk/empathy-individual-widget.c:487
 msgid "Horizontal Error (meters):"
 msgstr "Horisontal feil (meter):"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:781
+#: ../libempathy-gtk/empathy-contact-widget.c:780
 #: ../libempathy-gtk/empathy-individual-widget.c:489
 msgid "Speed:"
 msgstr "Hastighet:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:783
+#: ../libempathy-gtk/empathy-contact-widget.c:782
 #: ../libempathy-gtk/empathy-individual-widget.c:491
 msgid "Bearing:"
 msgstr "Retning:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:785
+#: ../libempathy-gtk/empathy-contact-widget.c:784
 #: ../libempathy-gtk/empathy-individual-widget.c:493
 msgid "Climb Speed:"
 msgstr "Klatrehastighet:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:787
+#: ../libempathy-gtk/empathy-contact-widget.c:786
 #: ../libempathy-gtk/empathy-individual-widget.c:495
 msgid "Last Updated on:"
 msgstr "Sist oppdatert:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:789
+#: ../libempathy-gtk/empathy-contact-widget.c:788
 #: ../libempathy-gtk/empathy-individual-widget.c:497
 msgid "Longitude:"
 msgstr "Lengdegrad:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:791
+#: ../libempathy-gtk/empathy-contact-widget.c:790
 #: ../libempathy-gtk/empathy-individual-widget.c:499
 msgid "Latitude:"
 msgstr "Breddegrad:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:793
+#: ../libempathy-gtk/empathy-contact-widget.c:792
 #: ../libempathy-gtk/empathy-individual-widget.c:501
 msgid "Altitude:"
 msgstr "Høyde:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:846
-#: ../libempathy-gtk/empathy-contact-widget.c:861
+#: ../libempathy-gtk/empathy-contact-widget.c:845
+#: ../libempathy-gtk/empathy-contact-widget.c:860
 #: ../libempathy-gtk/empathy-individual-widget.c:593
 #: ../libempathy-gtk/empathy-individual-widget.c:608
 #: ../src/empathy-preferences.ui.h:35
@@ -1939,32 +1939,32 @@ msgid "Location"
 msgstr "Sted"
 
 #. translators: format is "Location, $date"
-#: ../libempathy-gtk/empathy-contact-widget.c:863
+#: ../libempathy-gtk/empathy-contact-widget.c:862
 #: ../libempathy-gtk/empathy-individual-widget.c:610
 #, c-format
 msgid "%s, %s"
 msgstr "%s, %s"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:915
+#: ../libempathy-gtk/empathy-contact-widget.c:914
 #: ../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:997
+#: ../libempathy-gtk/empathy-contact-widget.c:996
 #: ../libempathy-gtk/empathy-individual-widget.c:900
 msgid "Save Avatar"
 msgstr "Lagre personbilder"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:1053
+#: ../libempathy-gtk/empathy-contact-widget.c:1052
 #: ../libempathy-gtk/empathy-individual-widget.c:958
 msgid "Unable to save avatar"
 msgstr "Kan ikke lagre personbilde"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:1455
+#: ../libempathy-gtk/empathy-contact-widget.c:1454
 msgid "Personal Details"
 msgstr "Personlige detaljer"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:1458
+#: ../libempathy-gtk/empathy-contact-widget.c:1457
 #: ../libempathy-gtk/empathy-contact-widget.ui.h:6
 #: ../libempathy-gtk/empathy-individual-widget.ui.h:3
 msgid "Contact Details"
@@ -2073,11 +2073,11 @@ msgstr "Versjon:"
 msgid "Client:"
 msgstr "Klient:"
 
-#: ../libempathy-gtk/empathy-groups-widget.c:331
+#: ../libempathy-gtk/empathy-groups-widget.c:327
 msgid "Groups"
 msgstr "Grupper"
 
-#: ../libempathy-gtk/empathy-groups-widget.c:343
+#: ../libempathy-gtk/empathy-groups-widget.c:339
 msgid ""
 "Select the groups you want this contact to appear in.  Note that you can "
 "select more than one group or no groups."
@@ -2085,17 +2085,17 @@ msgstr ""
 "Velg gruppene du ønsker at denne kontakten skal vises i. Du kan velge flere "
 "eller ingen."
 
-#: ../libempathy-gtk/empathy-groups-widget.c:362
+#: ../libempathy-gtk/empathy-groups-widget.c:358
 msgid "_Add Group"
 msgstr "_Legg til gruppe"
 
-#: ../libempathy-gtk/empathy-groups-widget.c:397
+#: ../libempathy-gtk/empathy-groups-widget.c:393
 msgctxt "verb in a column header displaying group names"
 msgid "Select"
 msgstr "Velg"
 
-#: ../libempathy-gtk/empathy-groups-widget.c:407
-#: ../src/empathy-roster-window.c:1970
+#: ../libempathy-gtk/empathy-groups-widget.c:403
+#: ../src/empathy-roster-window.c:1969
 msgid "Group"
 msgstr "Gruppe"
 
@@ -2123,137 +2123,142 @@ msgstr "Lenkede kontakter"
 #. 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:173
+#: ../libempathy-gtk/empathy-individual-menu.c:172
 #, c-format
 msgid "%s (%s)"
 msgstr "%s (%s)"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:345
+#: ../libempathy-gtk/empathy-individual-menu.c:344
 msgid "Select account to use to place the call"
 msgstr "Velg en konto til bruk for samtalen"
 
 #. translators: Call is a noun. This string is used in the window
 #. * title
-#: ../libempathy-gtk/empathy-individual-menu.c:349
+#: ../libempathy-gtk/empathy-individual-menu.c:348
 #: ../libempathy-gtk/empathy-log-window.ui.h:6
 #: ../src/empathy-streamed-media-window.c:1290
 #: ../src/empathy-call-window.ui.h:18
 msgid "Call"
 msgstr "Ring"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:414
+#: ../libempathy-gtk/empathy-individual-menu.c:413
 msgid "Mobile"
 msgstr "Mobil"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:416
+#: ../libempathy-gtk/empathy-individual-menu.c:415
 msgid "Work"
 msgstr "Arbeid"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:418
+#: ../libempathy-gtk/empathy-individual-menu.c:417
 msgid "HOME"
 msgstr "Hjemme"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:659
+#: ../libempathy-gtk/empathy-individual-menu.c:658
 msgid "_Block Contact"
 msgstr "_Blokker kontakt"
 
 #. add chat button
-#: ../libempathy-gtk/empathy-individual-menu.c:1018
+#: ../libempathy-gtk/empathy-individual-menu.c:1017
 #: ../libempathy-gtk/empathy-new-message-dialog.c:319
 #: ../src/empathy-roster-window-menubar.ui.h:1
 msgid "_Chat"
 msgstr "_Prat"
 
 #. add SMS button
-#: ../libempathy-gtk/empathy-individual-menu.c:1053
+#: ../libempathy-gtk/empathy-individual-menu.c:1052
 #: ../libempathy-gtk/empathy-new-message-dialog.c:313
 msgid "_SMS"
 msgstr "_SMS"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1086
+#: ../libempathy-gtk/empathy-individual-menu.c:1085
 msgctxt "menu item"
 msgid "_Audio Call"
 msgstr "_Lydsamtale"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1119
+#: ../libempathy-gtk/empathy-individual-menu.c:1118
 msgctxt "menu item"
 msgid "_Video Call"
 msgstr "_Videosamtale"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1160
+#: ../libempathy-gtk/empathy-individual-menu.c:1159
 #: ../src/empathy-roster-window-menubar.ui.h:4
 msgid "_Previous Conversations"
 msgstr "_Tidligere samtaler"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1189
+#: ../libempathy-gtk/empathy-individual-menu.c:1188
 msgid "Send File"
 msgstr "Send fil"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1219
+#: ../libempathy-gtk/empathy-individual-menu.c:1218
 msgid "Share My Desktop"
 msgstr "Del mitt skrivebord"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1245
+#: ../libempathy-gtk/empathy-individual-menu.c:1244
 #: ../libempathy-gtk/empathy-individual-widget.c:1357
 msgid "Favorite"
 msgstr "Favoritt"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1264
+#: ../libempathy-gtk/empathy-individual-menu.c:1263
 msgid "gnome-contacts not installed"
 msgstr "gnome-contacts er ikke installert"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1267
+#: ../libempathy-gtk/empathy-individual-menu.c:1266
 msgid "Please install gnome-contacts to access contacts details."
 msgstr "Vennligst installer gnome-contacts for tilgang til kontaktdetaljer."
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1398
+#: ../libempathy-gtk/empathy-individual-menu.c:1397
 msgid "Infor_mation"
 msgstr "Infor_masjon"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1447
+#: ../libempathy-gtk/empathy-individual-menu.c:1446
 msgctxt "Edit individual (contextual menu)"
 msgid "_Edit"
 msgstr "R_ediger"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1564
-#: ../src/empathy-chat-window.c:1192
+#. send invitation
+#: ../libempathy-gtk/empathy-individual-menu.c:1562
+#: ../src/empathy-chat-window.c:1190
 msgid "Inviting you to this room"
 msgstr "Inviterer deg til dette rommet"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1610
+#: ../libempathy-gtk/empathy-individual-menu.c:1608
 msgid "_Invite to Chat Room"
 msgstr "_Inviter til praterom"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1806
+#: ../libempathy-gtk/empathy-individual-menu.c:1804
 #: ../src/empathy-roster-window-menubar.ui.h:5
 msgid "_Add Contact…"
 msgstr "_Legg til kontakt …"
 
-#: ../libempathy-gtk/empathy-individual-view.c:2304
+#: ../libempathy-gtk/empathy-individual-view.c:2364
 msgid "Delete and _Block"
 msgstr "Slett og _blokker"
 
-#: ../libempathy-gtk/empathy-individual-view.c:2339
+#: ../libempathy-gtk/empathy-individual-view.c:2399
 #, c-format
 msgid "Do you really want to remove the group '%s'?"
 msgstr "Vil du virkelig fjerne gruppen «%s»?"
 
-#: ../libempathy-gtk/empathy-individual-view.c:2342
+#: ../libempathy-gtk/empathy-individual-view.c:2402
 msgid "Removing group"
 msgstr "Fjerner gruppe"
 
+#: ../libempathy-gtk/empathy-individual-view.c:2470
+msgid "Re_name"
+msgstr "Endre _navn"
+
 #. Remove
-#: ../libempathy-gtk/empathy-individual-view.c:2397
-#: ../libempathy-gtk/empathy-individual-view.c:2601
+#: ../libempathy-gtk/empathy-individual-view.c:2479
+#: ../libempathy-gtk/empathy-individual-view.c:2683
 msgid "_Remove"
 msgstr "Fje_rn"
 
-#: ../libempathy-gtk/empathy-individual-view.c:2474
+#: ../libempathy-gtk/empathy-individual-view.c:2556
 #, c-format
 msgid "Do you really want to remove the contact '%s'?"
 msgstr "Vil du virkelig fjerne kontakten «%s»?"
 
-#: ../libempathy-gtk/empathy-individual-view.c:2483
+#: ../libempathy-gtk/empathy-individual-view.c:2565
 #, c-format
 msgid ""
 "Do you really want to remove the linked contact '%s'? Note that this will "
@@ -2262,7 +2267,7 @@ msgstr ""
 "Vil du virkelig fjerne lenket kontakt «%s»? Merk at dette vil fjerne alle "
 "kontaktene den lenkede kontakten består av."
 
-#: ../libempathy-gtk/empathy-individual-view.c:2495
+#: ../libempathy-gtk/empathy-individual-view.c:2577
 msgid "Removing contact"
 msgstr "Fjerner kontakt"
 
@@ -2306,135 +2311,135 @@ msgstr "ny tjener"
 msgid "SSL"
 msgstr "SSL"
 
-#: ../libempathy-gtk/empathy-log-window.c:620
+#: ../libempathy-gtk/empathy-log-window.c:617
 msgid "History"
 msgstr "Historikk"
 
-#: ../libempathy-gtk/empathy-log-window.c:675
+#: ../libempathy-gtk/empathy-log-window.c:672
 msgid "Show"
 msgstr "Vis"
 
-#: ../libempathy-gtk/empathy-log-window.c:697
+#: ../libempathy-gtk/empathy-log-window.c:694
 msgid "Search"
 msgstr "Søk"
 
-#: ../libempathy-gtk/empathy-log-window.c:1148
+#: ../libempathy-gtk/empathy-log-window.c:1145
 #, c-format
 msgid "Chat in %s"
 msgstr "Prat i %s"
 
-#: ../libempathy-gtk/empathy-log-window.c:1150
+#: ../libempathy-gtk/empathy-log-window.c:1147
 #, c-format
 msgid "Chat with %s"
 msgstr "Prat med %s"
 
-#: ../libempathy-gtk/empathy-log-window.c:1200
-#: ../libempathy-gtk/empathy-log-window.c:1347
+#: ../libempathy-gtk/empathy-log-window.c:1197
+#: ../libempathy-gtk/empathy-log-window.c:1341
 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:1289
+#: ../libempathy-gtk/empathy-log-window.c:1284
 #, 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:1295
+#: ../libempathy-gtk/empathy-log-window.c:1290
 #, c-format
 msgid "<b>%s:</b> %s"
 msgstr "<b>%s:</b> %s"
 
-#: ../libempathy-gtk/empathy-log-window.c:1371
+#: ../libempathy-gtk/empathy-log-window.c:1365
 #, c-format
 msgid "%s second"
 msgid_plural "%s seconds"
 msgstr[0] "%s sekund"
 msgstr[1] "%s sekunder"
 
-#: ../libempathy-gtk/empathy-log-window.c:1378
+#: ../libempathy-gtk/empathy-log-window.c:1372
 #, c-format
 msgid "%s minute"
 msgid_plural "%s minutes"
 msgstr[0] "%s minutt"
 msgstr[1] "%s minutter"
 
-#: ../libempathy-gtk/empathy-log-window.c:1386
+#: ../libempathy-gtk/empathy-log-window.c:1380
 #, c-format
 msgid "Call took %s, ended at %s"
 msgstr "Samtalen tok %s, avsluttet %s"
 
-#: ../libempathy-gtk/empathy-log-window.c:1720
+#: ../libempathy-gtk/empathy-log-window.c:1711
 msgid "Today"
 msgstr "I dag"
 
-#: ../libempathy-gtk/empathy-log-window.c:1724
+#: ../libempathy-gtk/empathy-log-window.c:1715
 msgid "Yesterday"
 msgstr "I går"
 
 #. Translators: A date such as '23 May 2010' (strftime format)
-#: ../libempathy-gtk/empathy-log-window.c:1739
+#: ../libempathy-gtk/empathy-log-window.c:1730
 msgid "%e %B %Y"
 msgstr "%e %B %Y"
 
-#: ../libempathy-gtk/empathy-log-window.c:1843
-#: ../libempathy-gtk/empathy-log-window.c:3471
+#: ../libempathy-gtk/empathy-log-window.c:1834
+#: ../libempathy-gtk/empathy-log-window.c:3457
 msgid "Anytime"
 msgstr "Når som helst"
 
-#: ../libempathy-gtk/empathy-log-window.c:1942
-#: ../libempathy-gtk/empathy-log-window.c:2401
+#: ../libempathy-gtk/empathy-log-window.c:1933
+#: ../libempathy-gtk/empathy-log-window.c:2392
 msgid "Anyone"
 msgstr "Hvem som helst"
 
-#: ../libempathy-gtk/empathy-log-window.c:2714
+#: ../libempathy-gtk/empathy-log-window.c:2705
 msgid "Who"
 msgstr "Hvem"
 
-#: ../libempathy-gtk/empathy-log-window.c:2923
+#: ../libempathy-gtk/empathy-log-window.c:2914
 msgid "When"
 msgstr "Når"
 
-#: ../libempathy-gtk/empathy-log-window.c:3039
+#: ../libempathy-gtk/empathy-log-window.c:3032
 msgid "Anything"
 msgstr "Hva som helst"
 
-#: ../libempathy-gtk/empathy-log-window.c:3041
+#: ../libempathy-gtk/empathy-log-window.c:3034
 msgid "Text chats"
 msgstr "Tekstsamtaler"
 
-#: ../libempathy-gtk/empathy-log-window.c:3043
+#: ../libempathy-gtk/empathy-log-window.c:3035
 #: ../src/empathy-preferences.ui.h:25
 msgid "Calls"
 msgstr "Samtaler"
 
-#: ../libempathy-gtk/empathy-log-window.c:3048
+#: ../libempathy-gtk/empathy-log-window.c:3039
 msgid "Incoming calls"
 msgstr "Innkommende samtaler"
 
-#: ../libempathy-gtk/empathy-log-window.c:3049
+#: ../libempathy-gtk/empathy-log-window.c:3040
 msgid "Outgoing calls"
 msgstr "Utgående samtaler"
 
-#: ../libempathy-gtk/empathy-log-window.c:3050
+#: ../libempathy-gtk/empathy-log-window.c:3041
 msgid "Missed calls"
 msgstr "Tapte samtaler"
 
-#: ../libempathy-gtk/empathy-log-window.c:3072
+#: ../libempathy-gtk/empathy-log-window.c:3061
 msgid "What"
 msgstr "Hva"
 
-#: ../libempathy-gtk/empathy-log-window.c:3764
+#: ../libempathy-gtk/empathy-log-window.c:3750
 msgid "Are you sure you want to delete all logs of previous conversations?"
 msgstr "Er du sikker på at du vil slette alle logger av tidligere samtaler?"
 
-#: ../libempathy-gtk/empathy-log-window.c:3768
+#: ../libempathy-gtk/empathy-log-window.c:3754
 msgid "Clear All"
 msgstr "Tøm alle"
 
-#: ../libempathy-gtk/empathy-log-window.c:3775
+#: ../libempathy-gtk/empathy-log-window.c:3761
 msgid "Delete from:"
 msgstr "Slett fra:"
 
@@ -2565,30 +2570,41 @@ msgstr ""
 #. COL_DISPLAY_MARKUP
 #. COL_STATUS_CUSTOMISABLE
 #. COL_TYPE
-#: ../libempathy-gtk/empathy-presence-chooser.c:167
-#: ../libempathy-gtk/empathy-presence-chooser.c:203
+#: ../libempathy-gtk/empathy-presence-chooser.c:166
+#: ../libempathy-gtk/empathy-presence-chooser.c:202
 msgid "Custom Message…"
 msgstr "Egendefinert melding …"
 
-#: ../libempathy-gtk/empathy-presence-chooser.c:220
-#: ../libempathy-gtk/empathy-presence-chooser.c:222
+#: ../libempathy-gtk/empathy-presence-chooser.c:219
+#: ../libempathy-gtk/empathy-presence-chooser.c:221
 msgid "Edit Custom Messages…"
 msgstr "Rediger egendefinerte meldinger …"
 
-#: ../libempathy-gtk/empathy-presence-chooser.c:345
+#: ../libempathy-gtk/empathy-presence-chooser.c:344
 msgid "Click to remove this status as a favorite"
 msgstr "Klikk for å fjerne denne statusen som favoritt"
 
-#: ../libempathy-gtk/empathy-presence-chooser.c:354
+#: ../libempathy-gtk/empathy-presence-chooser.c:353
 msgid "Click to make this status a favorite"
 msgstr "Klikk for å gjøre denne statusen til en favoritt"
 
-#: ../libempathy-gtk/empathy-presence-chooser.c:388
+#. Translators: %s is a status message like 'At the pub' for example
+#: ../libempathy-gtk/empathy-presence-chooser.c:387
+#, c-format
+msgid ""
+"<b>Current message: %s</b>\n"
+"<small><i>Press Enter to set the new message or Esc to cancel.</i></small>"
+msgstr ""
+"<b>Aktiv melding: %s</b>\n"
+"<small><i>Trykk linjeskift for å sette ny melding eller Esc for å avbryte.</"
+"i></small>"
+
+#: ../libempathy-gtk/empathy-presence-chooser.c:396
 msgid "Set status"
 msgstr "Sett status"
 
 #. Custom messages
-#: ../libempathy-gtk/empathy-presence-chooser.c:1135
+#: ../libempathy-gtk/empathy-presence-chooser.c:1147
 msgid "Custom messages…"
 msgstr "Egendefinerte meldinger …"
 
@@ -2976,23 +2992,23 @@ msgstr "Ingen feilmelding"
 msgid "Instant Message (Empathy)"
 msgstr "Lynmelding (Empathy)"
 
-#: ../src/empathy.c:435
+#: ../src/empathy.c:425
 msgid "Don't connect on startup"
 msgstr "Ikke koble til ved oppstart"
 
-#: ../src/empathy.c:439
+#: ../src/empathy.c:429
 msgid "Don't display the contact list or any other dialogs on startup"
 msgstr "Ikke vis kontaktlisten eller andre dialoger ved oppstart"
 
-#: ../src/empathy.c:454
+#: ../src/empathy.c:444
 msgid "- Empathy IM Client"
 msgstr "- Empathy lynmeldingsprogram"
 
-#: ../src/empathy.c:641
+#: ../src/empathy.c:620
 msgid "Error contacting the Account Manager"
 msgstr "Feil ved forsøk på å kontakte kontohåndtering"
 
-#: ../src/empathy.c:643
+#: ../src/empathy.c:622
 #, c-format
 msgid ""
 "There was an error while trying to connect to the Telepathy Account Manager. "
@@ -3052,42 +3068,42 @@ msgstr ""
 
 #. The primary text of the dialog shown to the user when he is about to lose
 #. * unsaved changes
-#: ../src/empathy-accounts-dialog.c:72
+#: ../src/empathy-accounts-dialog.c:71
 #, c-format
 msgid "There are unsaved modifications to your %s account."
 msgstr "Det finnes ikke-lagrede endringer for din %s-konto."
 
 #. 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:76
+#: ../src/empathy-accounts-dialog.c:75
 msgid "Your new account has not been saved yet."
 msgstr "Din nye konto er ikke lagret ennå."
 
-#: ../src/empathy-accounts-dialog.c:381
+#: ../src/empathy-accounts-dialog.c:404
 #: ../src/empathy-streamed-media-window.c:759
-#: ../src/empathy-call-window.c:1278
+#: ../src/empathy-call-window.c:1267
 msgid "Connecting…"
 msgstr "Kobler til …"
 
-#: ../src/empathy-accounts-dialog.c:422
+#: ../src/empathy-accounts-dialog.c:445
 #, c-format
 msgid "Offline — %s"
 msgstr "Frakoblet - %s"
 
-#: ../src/empathy-accounts-dialog.c:434
+#: ../src/empathy-accounts-dialog.c:457
 #, c-format
 msgid "Disconnected — %s"
 msgstr "Koblet fra - %s"
 
-#: ../src/empathy-accounts-dialog.c:445
+#: ../src/empathy-accounts-dialog.c:468
 msgid "Offline — No Network Connection"
 msgstr "Frakoblet - Ingen nettverkstilkobling"
 
-#: ../src/empathy-accounts-dialog.c:452
+#: ../src/empathy-accounts-dialog.c:475
 msgid "Unknown Status"
 msgstr "Ukjent status"
 
-#: ../src/empathy-accounts-dialog.c:469
+#: ../src/empathy-accounts-dialog.c:492
 msgid ""
 "This account has been disabled because it relies on an old, unsupported "
 "backend. Please install telepathy-haze and restart your session to migrate "
@@ -3097,36 +3113,36 @@ msgstr ""
 "som ikke støttes. Vennligst installer telepathy-haze og start økten på nytt "
 "for å migrere kontoen."
 
-#: ../src/empathy-accounts-dialog.c:479
+#: ../src/empathy-accounts-dialog.c:502
 msgid "Offline — Account Disabled"
 msgstr "Frakoblet - Konto deaktivert"
 
-#: ../src/empathy-accounts-dialog.c:585
+#: ../src/empathy-accounts-dialog.c:608
 msgid "Edit Connection Parameters"
 msgstr "Rediger parametere for tilkobling"
 
-#: ../src/empathy-accounts-dialog.c:750
+#: ../src/empathy-accounts-dialog.c:773
 msgid "Failed to retrieve your personal information from the server."
 msgstr "Klarte ikke å hente din personlige informasjon fra tjeneren."
 
-#: ../src/empathy-accounts-dialog.c:756
+#: ../src/empathy-accounts-dialog.c:779
 msgid "Go online to edit your personal information."
 msgstr "Rediger din personlige informasjon på nettet."
 
-#: ../src/empathy-accounts-dialog.c:843
+#: ../src/empathy-accounts-dialog.c:866
 msgid "_Edit Connection Parameters..."
 msgstr "R_ediger parametere for tilkoblingen …"
 
-#: ../src/empathy-accounts-dialog.c:1339
+#: ../src/empathy-accounts-dialog.c:1362
 #, c-format
 msgid "Do you want to remove %s from your computer?"
 msgstr "Vil du fjerne %s fra din datamaskin?"
 
-#: ../src/empathy-accounts-dialog.c:1343
+#: ../src/empathy-accounts-dialog.c:1366
 msgid "This will not remove your account on the server."
 msgstr "Dette vil ikke fjerne din konto på tjeneren."
 
-#: ../src/empathy-accounts-dialog.c:1579
+#: ../src/empathy-accounts-dialog.c:1571
 msgid ""
 "You are about to select another account, which will discard\n"
 "your changes. Are you sure you want to proceed?"
@@ -3134,24 +3150,25 @@ msgstr ""
 "Du er i ferd med å velge en annen konto hvilket vil forkaste\n"
 "dine endringer. Er du sikker på at du vil fortsette?"
 
-#. Menu items: to enabled/disable the account
-#: ../src/empathy-accounts-dialog.c:1755
-msgid "_Enable"
-msgstr "Slå _på"
+#. Menu item: to enabled/disable the account
+#: ../src/empathy-accounts-dialog.c:1762
+msgid "_Enabled"
+msgstr "Slått _på"
 
-#: ../src/empathy-accounts-dialog.c:1756
-msgid "_Disable"
-msgstr "Slå _av"
+#. Menu item: Rename
+#: ../src/empathy-accounts-dialog.c:1785
+msgid "Rename"
+msgstr "Endre navn"
 
-#: ../src/empathy-accounts-dialog.c:2184
+#: ../src/empathy-accounts-dialog.c:2201
 msgid "_Skip"
 msgstr "_Hopp over"
 
-#: ../src/empathy-accounts-dialog.c:2188
+#: ../src/empathy-accounts-dialog.c:2205
 msgid "_Connect"
 msgstr "_Koble til"
 
-#: ../src/empathy-accounts-dialog.c:2365
+#: ../src/empathy-accounts-dialog.c:2384
 msgid ""
 "You are about to close the window, which will discard\n"
 "your changes. Are you sure you want to proceed?"
@@ -3179,19 +3196,19 @@ msgstr ""
 msgid "No protocol backends installed"
 msgstr "Ingen protokollmotor installert"
 
-#: ../src/empathy-auth-client.c:288
+#: ../src/empathy-auth-client.c:286
 msgid " - Empathy authentication client"
 msgstr "- Empathy autentiseringsklient"
 
-#: ../src/empathy-auth-client.c:304
+#: ../src/empathy-auth-client.c:302
 msgid "Empathy authentication client"
 msgstr "Empathy autentiseringsklient"
 
-#: ../src/empathy-av.c:118 ../src/empathy-call.c:201
+#: ../src/empathy-av.c:115 ../src/empathy-call.c:198
 msgid "- Empathy Audio/Video Client"
 msgstr "- Empathy lyd-/bildeklient"
 
-#: ../src/empathy-av.c:134 ../src/empathy-call.c:223
+#: ../src/empathy-av.c:131 ../src/empathy-call.c:220
 msgid "Empathy Audio/Video Client"
 msgstr "Empathy lyd-/bildeklient"
 
@@ -3234,33 +3251,33 @@ msgstr "Detaljer"
 #. 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:1211
-#: ../src/empathy-call-window.c:1872
+#: ../src/empathy-call-window.c:1861
 #, c-format
 msgid "Call with %s"
 msgstr "Samtale med %s"
 
 #: ../src/empathy-streamed-media-window.c:1444
-#: ../src/empathy-call-window.c:2116
+#: ../src/empathy-call-window.c:2105
 msgid "The IP address as seen by the machine"
 msgstr "IP-adresse som sett av maskinen"
 
 #: ../src/empathy-streamed-media-window.c:1446
-#: ../src/empathy-call-window.c:2118
+#: ../src/empathy-call-window.c:2107
 msgid "The IP address as seen by a server on the Internet"
 msgstr "IP-adresse som sett av en tjener på internett"
 
 #: ../src/empathy-streamed-media-window.c:1448
-#: ../src/empathy-call-window.c:2120
+#: ../src/empathy-call-window.c:2109
 msgid "The IP address of the peer as seen by the other side"
 msgstr "IP-adresse for peer som sett av andre siden"
 
 #: ../src/empathy-streamed-media-window.c:1450
-#: ../src/empathy-call-window.c:2122
+#: ../src/empathy-call-window.c:2111
 msgid "The IP address of a relay server"
 msgstr "IP-adresse for en relay-tjener"
 
 #: ../src/empathy-streamed-media-window.c:1452
-#: ../src/empathy-call-window.c:2124
+#: ../src/empathy-call-window.c:2113
 msgid "The IP address of the multicast group"
 msgstr "IP-adresse for multicast-gruppe"
 
@@ -3279,12 +3296,12 @@ msgid "Connected — %d:%02dm"
 msgstr "Koblet til - %d:%02dm"
 
 #: ../src/empathy-streamed-media-window.c:2199
-#: ../src/empathy-call-window.c:2975
+#: ../src/empathy-call-window.c:2964
 msgid "Technical Details"
 msgstr "Tekniske detaljer"
 
 #: ../src/empathy-streamed-media-window.c:2237
-#: ../src/empathy-call-window.c:3014
+#: ../src/empathy-call-window.c:3003
 #, c-format
 msgid ""
 "%s's software does not understand any of the audio formats supported by your "
@@ -3294,7 +3311,7 @@ msgstr ""
 "datamaskin"
 
 #: ../src/empathy-streamed-media-window.c:2242
-#: ../src/empathy-call-window.c:3019
+#: ../src/empathy-call-window.c:3008
 #, c-format
 msgid ""
 "%s's software does not understand any of the video formats supported by your "
@@ -3304,7 +3321,7 @@ msgstr ""
 "datamaskin"
 
 #: ../src/empathy-streamed-media-window.c:2248
-#: ../src/empathy-call-window.c:3025
+#: ../src/empathy-call-window.c:3014
 #, c-format
 msgid ""
 "Can't establish a connection to %s. One of you might be on a network that "
@@ -3314,12 +3331,12 @@ msgstr ""
 "ikke tillater direkte tilkoblinger."
 
 #: ../src/empathy-streamed-media-window.c:2254
-#: ../src/empathy-call-window.c:3031
+#: ../src/empathy-call-window.c:3020
 msgid "There was a failure on the network"
 msgstr "Det oppsto en feil på nettverket"
 
 #: ../src/empathy-streamed-media-window.c:2258
-#: ../src/empathy-call-window.c:3035
+#: ../src/empathy-call-window.c:3024
 msgid ""
 "The audio formats necessary for this call are not installed on your computer"
 msgstr ""
@@ -3327,7 +3344,7 @@ msgstr ""
 "datamaskin"
 
 #: ../src/empathy-streamed-media-window.c:2261
-#: ../src/empathy-call-window.c:3038
+#: ../src/empathy-call-window.c:3027
 msgid ""
 "The video formats necessary for this call are not installed on your computer"
 msgstr ""
@@ -3335,7 +3352,7 @@ msgstr ""
 "datamaskin"
 
 #: ../src/empathy-streamed-media-window.c:2271
-#: ../src/empathy-call-window.c:3050
+#: ../src/empathy-call-window.c:3039
 #, c-format
 msgid ""
 "Something unexpected happened in a Telepathy component. Please <a href=\"%s"
@@ -3347,22 +3364,22 @@ msgstr ""
 "«Feilsøking»-vinduet i Hjelp-menyen."
 
 #: ../src/empathy-streamed-media-window.c:2279
-#: ../src/empathy-call-window.c:3059
+#: ../src/empathy-call-window.c:3048
 msgid "There was a failure in the call engine"
 msgstr "Det oppsto en feil i samtalemotoren"
 
 #: ../src/empathy-streamed-media-window.c:2282
-#: ../src/empathy-call-window.c:3062
+#: ../src/empathy-call-window.c:3051
 msgid "The end of the stream was reached"
 msgstr "Slutt på strømmen ble nådd"
 
 #: ../src/empathy-streamed-media-window.c:2322
-#: ../src/empathy-call-window.c:3102
+#: ../src/empathy-call-window.c:3091
 msgid "Can't establish audio stream"
 msgstr "Kan ikke etablere lydstrøm"
 
 #: ../src/empathy-streamed-media-window.c:2332
-#: ../src/empathy-call-window.c:3112
+#: ../src/empathy-call-window.c:3101
 msgid "Can't establish video stream"
 msgstr "Kan ikke etablere videostrøm"
 
@@ -3475,8 +3492,8 @@ msgstr "Kodek for koding:"
 
 #: ../src/empathy-call-window.ui.h:28
 #: ../src/empathy-streamed-media-window.ui.h:21
-#: ../src/empathy-call-window.c:2525 ../src/empathy-call-window.c:2526
-#: ../src/empathy-call-window.c:2527 ../src/empathy-call-window.c:2528
+#: ../src/empathy-call-window.c:2514 ../src/empathy-call-window.c:2515
+#: ../src/empathy-call-window.c:2516 ../src/empathy-call-window.c:2517
 msgid "Unknown"
 msgstr "Ukjent"
 
@@ -3500,11 +3517,11 @@ msgstr "Lokal kandidat:"
 msgid "Audio"
 msgstr "Lyd"
 
-#: ../src/empathy-chat-window.c:289
+#: ../src/empathy-chat-window.c:288
 msgid "Close this window?"
 msgstr "Lukk dette vinduet?"
 
-#: ../src/empathy-chat-window.c:294
+#: ../src/empathy-chat-window.c:293
 #, c-format
 msgid ""
 "Closing this window will leave %s. You will not receive any further messages "
@@ -3513,7 +3530,7 @@ msgstr ""
 "Hvis du lukker dette vinduet vil du forlate %s. Du vil ikke motta videre "
 "meldinger før du blir med igjen."
 
-#: ../src/empathy-chat-window.c:305
+#: ../src/empathy-chat-window.c:304
 #, c-format
 msgid ""
 "Closing this window will leave a chat room. You will not receive any further "
@@ -3528,12 +3545,12 @@ msgstr[1] ""
 "Hvis du lukker dette vinduet vil du forlate %u praterom. Du vil ikke motta "
 "videre meldinger før du blir med igjen."
 
-#: ../src/empathy-chat-window.c:314
+#: ../src/empathy-chat-window.c:313
 #, c-format
 msgid "Leave %s?"
 msgstr "Forlat %s?"
 
-#: ../src/empathy-chat-window.c:315
+#: ../src/empathy-chat-window.c:314
 msgid ""
 "You will not receive any further messages from this chat room until you "
 "rejoin it."
@@ -3541,54 +3558,54 @@ msgstr ""
 "Du vil ikke motta videre meldinger fra dette praterommet før du blir med "
 "igjen."
 
-#: ../src/empathy-chat-window.c:334
+#: ../src/empathy-chat-window.c:333
 msgid "Close window"
 msgstr "Lukk vindu"
 
-#: ../src/empathy-chat-window.c:334
+#: ../src/empathy-chat-window.c:333
 msgid "Leave room"
 msgstr "Forlat rom"
 
-#: ../src/empathy-chat-window.c:640 ../src/empathy-chat-window.c:660
+#: ../src/empathy-chat-window.c:639 ../src/empathy-chat-window.c:659
 #, c-format
 msgid "%s (%d unread)"
 msgid_plural "%s (%d unread)"
 msgstr[0] "%s (%d ulest)"
 msgstr[1] "%s (%d uleste)"
 
-#: ../src/empathy-chat-window.c:652
+#: ../src/empathy-chat-window.c:651
 #, c-format
 msgid "%s (and %u other)"
 msgid_plural "%s (and %u others)"
 msgstr[0] "%s (og %u annen)"
 msgstr[1] "%s (og %u andre)"
 
-#: ../src/empathy-chat-window.c:668
+#: ../src/empathy-chat-window.c:667
 #, c-format
 msgid "%s (%d unread from others)"
 msgid_plural "%s (%d unread from others)"
 msgstr[0] "%s (%d ulest fra andre)"
 msgstr[1] "%s (%d uleste fra andre)"
 
-#: ../src/empathy-chat-window.c:677
+#: ../src/empathy-chat-window.c:676
 #, c-format
 msgid "%s (%d unread from all)"
 msgid_plural "%s (%d unread from all)"
 msgstr[0] "%s (%d ulest fra alle)"
 msgstr[1] "%s (%d uleste fra alle)"
 
-#: ../src/empathy-chat-window.c:892
+#: ../src/empathy-chat-window.c:891
 msgid "SMS:"
 msgstr "SMS:"
 
-#: ../src/empathy-chat-window.c:902
+#: ../src/empathy-chat-window.c:901
 #, c-format
 msgid "Sending %d message"
 msgid_plural "Sending %d messages"
 msgstr[0] "Sender %d melding"
 msgstr[1] "Sender %d meldinger"
 
-#: ../src/empathy-chat-window.c:924
+#: ../src/empathy-chat-window.c:923
 msgid "Typing a message."
 msgstr "Skriver en melding"
 
@@ -3672,7 +3689,7 @@ msgstr "Håndter favorittrom"
 msgid "Incoming video call"
 msgstr "Innkommende videosamtale"
 
-#: ../src/empathy-event-manager.c:522 ../src/empathy-call-window.c:1494
+#: ../src/empathy-event-manager.c:522 ../src/empathy-call-window.c:1483
 msgid "Incoming call"
 msgstr "Innkommende samtale"
 
@@ -3687,7 +3704,7 @@ msgid "%s is calling you. Do you want to answer?"
 msgstr "%s ringer deg. Vil du svare?"
 
 #: ../src/empathy-event-manager.c:530 ../src/empathy-event-manager.c:731
-#: ../src/empathy-event-manager.c:764 ../src/empathy-call-window.c:1500
+#: ../src/empathy-event-manager.c:764 ../src/empathy-call-window.c:1489
 #, c-format
 msgid "Incoming call from %s"
 msgstr "Innkommende samtale fra %s"
@@ -3705,7 +3722,7 @@ msgid "_Answer with video"
 msgstr "Sv_ar med video"
 
 #: ../src/empathy-event-manager.c:731 ../src/empathy-event-manager.c:764
-#: ../src/empathy-call-window.c:1500
+#: ../src/empathy-call-window.c:1489
 #, c-format
 msgid "Incoming video call from %s"
 msgstr "Innkommende videosamtale fra %s"
@@ -3748,7 +3765,7 @@ msgstr "Du har blitt invitert til å bli med i %s"
 msgid "Incoming file transfer from %s"
 msgstr "Innkommende filoverføring fra %s"
 
-#: ../src/empathy-event-manager.c:1146 ../src/empathy-roster-window.c:374
+#: ../src/empathy-event-manager.c:1146 ../src/empathy-roster-window.c:373
 msgid "Password required"
 msgstr "Passord kreves"
 
@@ -3892,86 +3909,86 @@ msgid "Import Accounts"
 msgstr "Importer kontoer"
 
 #. Translators: this is the header of a treeview column
-#: ../src/empathy-import-widget.c:306
+#: ../src/empathy-import-widget.c:303
 msgid "Import"
 msgstr "Importer"
 
-#: ../src/empathy-import-widget.c:315
+#: ../src/empathy-import-widget.c:312
 msgid "Protocol"
 msgstr "Protokoll"
 
-#: ../src/empathy-import-widget.c:339
+#: ../src/empathy-import-widget.c:336
 msgid "Source"
 msgstr "Kilde"
 
-#: ../src/empathy-roster-window.c:391
+#: ../src/empathy-roster-window.c:390
 msgid "Provide Password"
 msgstr "Oppgi passord"
 
-#: ../src/empathy-roster-window.c:397
+#: ../src/empathy-roster-window.c:396
 msgid "Disconnect"
 msgstr "Koble fra"
 
-#: ../src/empathy-roster-window.c:657
+#: ../src/empathy-roster-window.c:656
 msgid "You need to setup an account to see contacts here."
 msgstr "Du må sette opp en konto for å se kontakter her."
 
-#: ../src/empathy-roster-window.c:673
+#: ../src/empathy-roster-window.c:672
 msgid "No match found"
 msgstr "Ingen treff funnet"
 
-#: ../src/empathy-roster-window.c:783
+#: ../src/empathy-roster-window.c:782
 #, c-format
 msgid "Sorry, %s accounts can’t be used until your %s software is updated."
 msgstr "Beklager %s-kontoer kan ikke brukes før %s-programvaren er oppdatert."
 
-#: ../src/empathy-roster-window.c:849
+#: ../src/empathy-roster-window.c:848
 msgid "Update software..."
 msgstr "Oppdater programvare …"
 
-#: ../src/empathy-roster-window.c:855 ../src/empathy-roster-window.c:972
+#: ../src/empathy-roster-window.c:854 ../src/empathy-roster-window.c:971
 msgid "Close"
 msgstr "Lukk"
 
-#: ../src/empathy-roster-window.c:960
+#: ../src/empathy-roster-window.c:959
 msgid "Reconnect"
 msgstr "Koble til på nytt"
 
-#: ../src/empathy-roster-window.c:966
+#: ../src/empathy-roster-window.c:965
 msgid "Edit Account"
 msgstr "Rediger konto"
 
 #. Translators: this string will be something like:
 #. * Top up My Account ($1.23)..."
-#: ../src/empathy-roster-window.c:1110
+#: ../src/empathy-roster-window.c:1109
 #, c-format
 msgid "Top up %s (%s)..."
 msgstr "Fyll opp %s (%s) …"
 
-#: ../src/empathy-roster-window.c:1156
+#: ../src/empathy-roster-window.c:1155
 msgid "Top up account credit"
 msgstr "Fyll opp kreditt for konto"
 
 #. top up button
-#: ../src/empathy-roster-window.c:1228
+#: ../src/empathy-roster-window.c:1227
 msgid "Top Up..."
 msgstr "Fyll opp …"
 
-#: ../src/empathy-roster-window.c:1952
+#: ../src/empathy-roster-window.c:1951
 msgid "Contact"
 msgstr "Kontakt"
 
-#: ../src/empathy-roster-window.c:2150
+#: ../src/empathy-roster-window.c:2149
 msgid "You need to enable one of your accounts to see contacts here."
 msgstr "Du må slå på en av kontoene for å se kontakter her."
 
 #. translators: argument is an account name
-#: ../src/empathy-roster-window.c:2158
+#: ../src/empathy-roster-window.c:2157
 #, c-format
 msgid "You need to enable %s to see contacts here."
 msgstr "Du må slå på %s for å se kontakter her."
 
-#: ../src/empathy-roster-window.c:2460
+#: ../src/empathy-roster-window.c:2459
 msgid "Contact List"
 msgstr "Kontaktliste"
 
@@ -4075,7 +4092,7 @@ msgstr "Medlemmer"
 
 #. Translators: Room/Join's roomlist tooltip. Parameters are a channel name,
 #. yes/no, yes/no and a number.
-#: ../src/empathy-new-chatroom-dialog.c:637
+#: ../src/empathy-new-chatroom-dialog.c:636
 #, c-format
 msgid ""
 "%s\n"
@@ -4088,21 +4105,21 @@ msgstr ""
 "Passord kreves: %s\n"
 "Medlemmer: %s"
 
+#: ../src/empathy-new-chatroom-dialog.c:638
 #: ../src/empathy-new-chatroom-dialog.c:639
-#: ../src/empathy-new-chatroom-dialog.c:640
 msgid "Yes"
 msgstr "Ja"
 
+#: ../src/empathy-new-chatroom-dialog.c:638
 #: ../src/empathy-new-chatroom-dialog.c:639
-#: ../src/empathy-new-chatroom-dialog.c:640
 msgid "No"
 msgstr "Nei"
 
-#: ../src/empathy-new-chatroom-dialog.c:668
+#: ../src/empathy-new-chatroom-dialog.c:666
 msgid "Could not start room listing"
 msgstr "Kunne ikke starte romliste"
 
-#: ../src/empathy-new-chatroom-dialog.c:678
+#: ../src/empathy-new-chatroom-dialog.c:676
 msgid "Could not stop room listing"
 msgstr "Kune ikke stoppe romliste"
 
@@ -4170,46 +4187,46 @@ msgid "Language"
 msgstr "Språk"
 
 #. translators: Contact name for the chat theme preview
-#: ../src/empathy-preferences.c:726
+#: ../src/empathy-preferences.c:724
 msgid "Juliet"
 msgstr "Juliet"
 
 #. translators: Contact name for the chat theme preview
-#: ../src/empathy-preferences.c:733
+#: ../src/empathy-preferences.c:731
 msgid "Romeo"
 msgstr "Romeo"
 
 #. translators: Quote from Romeo & Julier, for chat theme preview
-#: ../src/empathy-preferences.c:739
+#: ../src/empathy-preferences.c:737
 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:743
+#: ../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:746
+#: ../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:749
+#: ../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:752
+#: ../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:755
+#: ../src/empathy-preferences.c:753
 msgid "Juliet has disconnected"
 msgstr "Juliet har koblet fra"
 
-#: ../src/empathy-preferences.c:1159
+#: ../src/empathy-preferences.c:1157
 msgid "Preferences"
 msgstr "Brukervalg"
 
@@ -4519,16 +4536,16 @@ msgid ""
 msgstr ""
 "Valgt tilkoblingshåndterer støtter ikke utvidelse for ekstern feilsøking."
 
-#: ../src/empathy-invite-participant-dialog.c:202
-#: ../src/empathy-invite-participant-dialog.c:230
+#: ../src/empathy-invite-participant-dialog.c:200
+#: ../src/empathy-invite-participant-dialog.c:228
 msgid "Invite Participant"
 msgstr "Inviter deltaker"
 
-#: ../src/empathy-invite-participant-dialog.c:203
+#: ../src/empathy-invite-participant-dialog.c:201
 msgid "Choose a contact to invite into the conversation:"
 msgstr "Velg en kontakt å invitere til samtalen:"
 
-#: ../src/empathy-invite-participant-dialog.c:226
+#: ../src/empathy-invite-participant-dialog.c:224
 msgid "Invite"
 msgstr "Inviter"
 
@@ -4556,7 +4573,7 @@ msgstr "<konto-id>"
 msgid "- Empathy Accounts"
 msgstr "- Empathy-kontoer"
 
-#: ../src/empathy-accounts.c:231
+#: ../src/empathy-accounts.c:230
 msgid "Empathy Accounts"
 msgstr "Empathy-kontoer"
 
@@ -4568,11 +4585,11 @@ msgstr "Vis en spesiell tjeneste"
 msgid "- Empathy Debugger"
 msgstr "- Empathy feilsøking"
 
-#: ../src/empathy-debugger.c:113
+#: ../src/empathy-debugger.c:112
 msgid "Empathy Debugger"
 msgstr "Empathy feilsøking"
 
-#: ../src/empathy-chat.c:109
+#: ../src/empathy-chat.c:106
 msgid "- Empathy Chat Client"
 msgstr "- Empathy lynmeldingsprogram"
 
@@ -4581,13 +4598,13 @@ msgid "Respond"
 msgstr "Svar"
 
 #: ../src/empathy-notifications-approver.c:204
-#: ../src/empathy-call-window.c:1504
+#: ../src/empathy-call-window.c:1493
 msgid "Reject"
 msgstr "Avvis"
 
 #: ../src/empathy-notifications-approver.c:209
 #: ../src/empathy-notifications-approver.c:214
-#: ../src/empathy-call-window.c:1505
+#: ../src/empathy-call-window.c:1494
 msgid "Answer"
 msgstr "Svar"
 
@@ -4619,38 +4636,38 @@ msgstr "%s prøvde å ringe deg, men du var i en annen samtale."
 
 #. Translators: this is an "Info" label. It should be as short
 #. * as possible.
-#: ../src/empathy-call-window.c:1135 ../src/empathy-call-window.c:1151
+#: ../src/empathy-call-window.c:1124 ../src/empathy-call-window.c:1140
 msgid "i"
 msgstr "i"
 
-#: ../src/empathy-call-window.c:2871
+#: ../src/empathy-call-window.c:2860
 msgid "On hold"
 msgstr "På vent"
 
-#: ../src/empathy-call-window.c:2874
+#: ../src/empathy-call-window.c:2863
 msgid "Mute"
 msgstr "Demp"
 
-#: ../src/empathy-call-window.c:2876
+#: ../src/empathy-call-window.c:2865
 msgid "Duration"
 msgstr "Varighet"
 
 #. Translators: 'status - minutes:seconds' the caller has been connected
-#: ../src/empathy-call-window.c:2879
+#: ../src/empathy-call-window.c:2868
 #, c-format
 msgid "%s — %d:%02dm"
 msgstr "%s – %d:%02dm"
 
-#: ../src/empathy-call-window.c:3149
+#: ../src/empathy-call-window.c:3138
 #, c-format
 msgid "Your current balance is %s."
 msgstr "Din saldo er %s."
 
-#: ../src/empathy-call-window.c:3153
+#: ../src/empathy-call-window.c:3142
 msgid "Sorry, you don’t have enough credit for that call."
 msgstr "Du har ikke nok kreditt til å starte denne samtalen."
 
-#: ../src/empathy-call-window.c:3155
+#: ../src/empathy-call-window.c:3144
 msgid "Top Up"
 msgstr "Fyll opp"
 
index b07c69b578e749826e654147554e4523fa56bce3..d0c12baee9d8c5bda6aa7d5e491d403825e20dca 100644 (file)
--- a/po/sk.po
+++ b/po/sk.po
@@ -9,14 +9,14 @@ 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: 2012-04-16 08:59+0000\n"
+"POT-Creation-Date: 2012-04-11 09:10+0000\n"
 "PO-Revision-Date: 2012-04-16 13:53+0200\n"
 "Last-Translator: Pavol Klačanský <pavol@klacansky.com>\n"
 "Language-Team: Slovak <gnome-sk-list@gnome.org>\n"
-"Language: sk\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"Language: sk\n"
 "Plural-Forms: nplurals=3; plural=(n==1) ? 1 : (n>=2 && n<=4) ? 2 : 0;\n"
 
 #: ../data/empathy.desktop.in.in.h:1
@@ -37,7 +37,7 @@ msgstr "Komunikujte pomocou služieb Google Talk, Facebook, MSN a mnoho ďalší
 
 #. Tweak the dialog
 #: ../data/empathy-accounts.desktop.in.in.h:1
-#: ../src/empathy-accounts-dialog.c:2552
+#: ../src/empathy-accounts-dialog.c:2527
 msgid "Messaging and VoIP Accounts"
 msgstr "Rozhovory a VoIP účty"
 
@@ -182,6 +182,7 @@ msgstr ""
 
 #: ../data/org.gnome.Empathy.gschema.xml.in.h:32
 #, fuzzy
+#| msgid "Show contact list in rooms"
 msgid "Show contact groups"
 msgstr "Zobraziť zoznam kontaktov v miestnostiach"
 
@@ -363,8 +364,7 @@ msgstr "Variant témy okna rozhovoru"
 msgid ""
 "The theme variant that is used to display the conversation in chat windows."
 msgstr ""
-"Variant témy, ktorý je použitý na zobrazenie konverzácie v oknách s "
-"rozhovormi."
+"Variant témy, ktorý je použitý na zobrazenie konverzácie v oknách s rozhovormi."
 
 #: ../data/org.gnome.Empathy.gschema.xml.in.h:72
 msgid "Path of the Adium theme to use"
@@ -698,6 +698,7 @@ msgstr "Pripojenie bolo prerušené"
 
 #: ../libempathy/empathy-utils.c:355
 #, fuzzy
+#| msgid "This resource is already connected to the server"
 msgid "This account is already connected to the server"
 msgstr "Tento zdroj už je pripojený k serveru"
 
@@ -737,6 +738,7 @@ msgstr ""
 
 #: ../libempathy/empathy-utils.c:375
 #, fuzzy
+#| msgid "Interval (seconds)"
 msgid "Internal error"
 msgstr "Interval (sekundy)"
 
@@ -810,6 +812,7 @@ msgstr "v budúcnosti"
 
 #: ../libempathy/empathy-keyring.c:75
 #, fuzzy
+#| msgid "Phrase not found"
 msgid "Password not found"
 msgstr "Fráza sa nenašla"
 
@@ -865,11 +868,11 @@ msgstr "Po_užiť"
 msgid "L_og in"
 msgstr "_Prihlásiť sa"
 
-#: ../libempathy-gtk/empathy-account-widget.c:1812
+#: ../libempathy-gtk/empathy-account-widget.c:1810
 msgid "This account already exists on the server"
 msgstr "Tento účet už na serveri existuje"
 
-#: ../libempathy-gtk/empathy-account-widget.c:1816
+#: ../libempathy-gtk/empathy-account-widget.c:1814
 msgid "Create a new account on the server"
 msgstr "Vytvoriť na serveri nový účet"
 
@@ -878,19 +881,19 @@ msgstr "Vytvoriť na serveri nový účet"
 #. * 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:2241
+#: ../libempathy-gtk/empathy-account-widget.c:2236
 #, 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:2267
+#: ../libempathy-gtk/empathy-account-widget.c:2262
 #, c-format
 msgid "%s Account"
 msgstr "Účet %s"
 
-#: ../libempathy-gtk/empathy-account-widget.c:2271
+#: ../libempathy-gtk/empathy-account-widget.c:2266
 msgid "New account"
 msgstr "Nový účet"
 
@@ -950,7 +953,7 @@ msgstr "_Server:"
 #: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:23
 #: ../libempathy-gtk/empathy-account-widget-msn.ui.h:7
 #: ../libempathy-gtk/empathy-account-widget-local-xmpp.ui.h:7
-#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:21
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:22
 #: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:9
 msgid "Advanced"
 msgstr "Pokročilé"
@@ -968,7 +971,7 @@ msgstr "Aké je vaše heslo pre AIM?"
 #: ../libempathy-gtk/empathy-account-widget-icq.ui.h:11
 #: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:7
 #: ../libempathy-gtk/empathy-account-widget-msn.ui.h:10
-#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:24
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:25
 msgid "Remember Password"
 msgstr "Zapamätať heslo"
 
@@ -1018,34 +1021,34 @@ msgstr "Aké je vaše heslo pre ICQ?"
 
 # * https://bugzilla.gnome.org/show_bug.cgi?id=645689
 # PŠ: toto asi nebude správny odkaz na bugreport... opraviť!
-#: ../libempathy-gtk/empathy-account-widget-sip.c:205
-#: ../libempathy-gtk/empathy-account-widget-sip.c:238
+#: ../libempathy-gtk/empathy-account-widget-sip.c:207
+#: ../libempathy-gtk/empathy-account-widget-sip.c:240
 msgid "Auto"
 msgstr "Automaticky"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.c:208
+#: ../libempathy-gtk/empathy-account-widget-sip.c:210
 msgid "UDP"
 msgstr "UDP"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.c:211
+#: ../libempathy-gtk/empathy-account-widget-sip.c:213
 msgid "TCP"
 msgstr "TCP"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.c:214
+#: ../libempathy-gtk/empathy-account-widget-sip.c:216
 msgid "TLS"
 msgstr "TLS"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.c:243
+#: ../libempathy-gtk/empathy-account-widget-sip.c:245
 msgid "Register"
 msgstr "Registrovať"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.c:248
+#: ../libempathy-gtk/empathy-account-widget-sip.c:250
 msgid "Options"
 msgstr "Voľby"
 
 # * https://bugzilla.gnome.org/show_bug.cgi?id=645689
 # PŠ: toto asi nebude správny odkaz na bugreport... opraviť!
-#: ../libempathy-gtk/empathy-account-widget-sip.c:251
+#: ../libempathy-gtk/empathy-account-widget-sip.c:253
 msgid "None"
 msgstr "Žiadna"
 
@@ -1082,6 +1085,7 @@ msgstr ""
 #. Translators: tooltip on a 'Go Down' button used to sort IRC servers by priority
 #: ../libempathy-gtk/empathy-account-widget-irc.ui.h:9
 #, fuzzy
+#| msgid "Domain"
 msgid "Down"
 msgstr "Doména"
 
@@ -1309,11 +1313,17 @@ msgstr "Ignorovať chyby TLS"
 msgid "Port:"
 msgstr "Port:"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:22
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:21
+#, fuzzy
+#| msgid "E-_mail address:"
+msgid "Local IP Address:"
+msgstr "E_mailová adresa:"
+
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:23
 msgid "What is your SIP login ID?"
 msgstr "Aký je váš identifikátor pre SIP prihlásenie?"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:23
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:24
 msgid "What is your SIP account password?"
 msgstr "Aké je heslo pre váš SIP účet?"
 
@@ -1403,41 +1413,41 @@ msgstr "Tiesňové volania nie sú podporované týmto protokolom"
 msgid "You don't have enough credit in order to place this call"
 msgstr ""
 
-#: ../libempathy-gtk/empathy-chat.c:728
+#: ../libempathy-gtk/empathy-chat.c:727
 msgid "Failed to open private chat"
 msgstr "Zlyhalo otvorenie súkromného rozhovoru"
 
-#: ../libempathy-gtk/empathy-chat.c:786
+#: ../libempathy-gtk/empathy-chat.c:785
 msgid "Topic not supported on this conversation"
 msgstr "Téma nie je pri tejto konverzácii podporovaná"
 
-#: ../libempathy-gtk/empathy-chat.c:792
+#: ../libempathy-gtk/empathy-chat.c:791
 msgid "You are not allowed to change the topic"
 msgstr "Nie je vám dovolené meniť tému"
 
-#: ../libempathy-gtk/empathy-chat.c:991
+#: ../libempathy-gtk/empathy-chat.c:990
 #, c-format
 msgid "“%s” is not a valid contact ID"
 msgstr "“%s” je neplatný identifikátor kontaktu"
 
-#: ../libempathy-gtk/empathy-chat.c:1086
+#: ../libempathy-gtk/empathy-chat.c:1085
 msgid "/clear: clear all messages from the current conversation"
 msgstr "/clear: vymaže všetky správy z aktuálnej konverzácie"
 
-#: ../libempathy-gtk/empathy-chat.c:1089
+#: ../libempathy-gtk/empathy-chat.c:1088
 msgid "/topic <topic>: set the topic of the current conversation"
 msgstr "/topic <téma>: nastaví tému aktuálnej konverzácie"
 
-#: ../libempathy-gtk/empathy-chat.c:1092
+#: ../libempathy-gtk/empathy-chat.c:1091
 msgid "/join <chat room ID>: join a new chat room"
 msgstr "/join <ID diskusnej miestnosti>: vstúpi do novej diskusnej miestnosti"
 
-#: ../libempathy-gtk/empathy-chat.c:1095
+#: ../libempathy-gtk/empathy-chat.c:1094
 msgid "/j <chat room ID>: join a new chat room"
 msgstr ""
 "/j <identifikátor diskusnej miestnosti>: vstúpi do novej diskusnej miestnosti"
 
-#: ../libempathy-gtk/empathy-chat.c:1099
+#: ../libempathy-gtk/empathy-chat.c:1098
 msgid ""
 "/part [<chat room ID>] [<reason>]: leave the chat room, by default the "
 "current one"
@@ -1445,23 +1455,23 @@ msgstr ""
 "/part [<identifikátor diskusnej miestnosti>] [<dôvod>]: opustí diskusnú "
 "miestnosť, predvolene aktuálnu"
 
-#: ../libempathy-gtk/empathy-chat.c:1103
+#: ../libempathy-gtk/empathy-chat.c:1102
 msgid "/query <contact ID> [<message>]: open a private chat"
 msgstr "/query <identifikátor kontaktu> [<správa>]: otvorí súkromný rozhovor"
 
-#: ../libempathy-gtk/empathy-chat.c:1106
+#: ../libempathy-gtk/empathy-chat.c:1105
 msgid "/msg <contact ID> <message>: open a private chat"
 msgstr "/msg <identifikátor kontaktu> <správa>: otvorí súkromný rozhovor"
 
-#: ../libempathy-gtk/empathy-chat.c:1109
+#: ../libempathy-gtk/empathy-chat.c:1108
 msgid "/nick <nickname>: change your nickname on the current server"
 msgstr "/nick <prezývka>: zmeni vašu prezývku na aktuálnom serveri"
 
-#: ../libempathy-gtk/empathy-chat.c:1112
+#: ../libempathy-gtk/empathy-chat.c:1111
 msgid "/me <message>: send an ACTION message to the current conversation"
 msgstr "/me <správa>: pošle ACTION správu do aktuálnej konverzácie"
 
-#: ../libempathy-gtk/empathy-chat.c:1115
+#: ../libempathy-gtk/empathy-chat.c:1114
 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 "
@@ -1471,11 +1481,11 @@ msgstr ""
 "odoslanie správy začínajúcej s '/'. Napríklad: \"/say /join sa používa na "
 "vstúpenie do novej diskusnej miestnosti\""
 
-#: ../libempathy-gtk/empathy-chat.c:1120
+#: ../libempathy-gtk/empathy-chat.c:1119
 msgid "/whois <contact ID>: display information about a contact"
 msgstr ""
 
-#: ../libempathy-gtk/empathy-chat.c:1123
+#: ../libempathy-gtk/empathy-chat.c:1122
 msgid ""
 "/help [<command>]: show all supported commands. If <command> is defined, "
 "show its usage."
@@ -1483,95 +1493,96 @@ msgstr ""
 "/help [<príkaz>]: zobrazí zoznam všetkých podporovaných príkazov. Ak je "
 "zadaný aj <príkaz>, zobrazí sa jeho použitie."
 
-#: ../libempathy-gtk/empathy-chat.c:1142
+#: ../libempathy-gtk/empathy-chat.c:1141
 #, c-format
 msgid "Usage: %s"
 msgstr "Použitie: %s"
 
-#: ../libempathy-gtk/empathy-chat.c:1187
+#: ../libempathy-gtk/empathy-chat.c:1186
 msgid "Unknown command"
 msgstr "Neznámy príkaz"
 
-#: ../libempathy-gtk/empathy-chat.c:1313
+#: ../libempathy-gtk/empathy-chat.c:1312
 msgid "Unknown command; see /help for the available commands"
 msgstr "Neznámy príkaz; použite /help na zobrazenie dostupných príkazov"
 
-#: ../libempathy-gtk/empathy-chat.c:1564
+#: ../libempathy-gtk/empathy-chat.c:1563
 msgid "insufficient balance to send message"
 msgstr ""
 
-#: ../libempathy-gtk/empathy-chat.c:1568 ../libempathy-gtk/empathy-chat.c:1582
-#: ../libempathy-gtk/empathy-chat.c:1645
+#: ../libempathy-gtk/empathy-chat.c:1567 ../libempathy-gtk/empathy-chat.c:1581
+#: ../libempathy-gtk/empathy-chat.c:1644
 #, c-format
 msgid "Error sending message '%s': %s"
 msgstr "Chyba pri posielaní správy '%s': %s"
 
-#: ../libempathy-gtk/empathy-chat.c:1570 ../libempathy-gtk/empathy-chat.c:1587
-#: ../libempathy-gtk/empathy-chat.c:1649
+#: ../libempathy-gtk/empathy-chat.c:1569 ../libempathy-gtk/empathy-chat.c:1586
+#: ../libempathy-gtk/empathy-chat.c:1648
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Chyba pri posielaní správy: %s"
 
 #. translators: error used when user doesn't have enough credit on his
 #. * account to send the message.
-#: ../libempathy-gtk/empathy-chat.c:1576
+#: ../libempathy-gtk/empathy-chat.c:1575
 #, c-format
 msgid "insufficient balance to send message. <a href='%s'>Top up</a>."
 msgstr ""
 
-#: ../libempathy-gtk/empathy-chat.c:1616
+#: ../libempathy-gtk/empathy-chat.c:1615
 msgid "not capable"
 msgstr ""
 
-#: ../libempathy-gtk/empathy-chat.c:1623
+#: ../libempathy-gtk/empathy-chat.c:1622
 msgid "offline"
 msgstr "odpojený"
 
-#: ../libempathy-gtk/empathy-chat.c:1626
+#: ../libempathy-gtk/empathy-chat.c:1625
 msgid "invalid contact"
 msgstr "neplatný kontakt"
 
-#: ../libempathy-gtk/empathy-chat.c:1629
+#: ../libempathy-gtk/empathy-chat.c:1628
 msgid "permission denied"
 msgstr "prístup zamietnutý"
 
-#: ../libempathy-gtk/empathy-chat.c:1632
+#: ../libempathy-gtk/empathy-chat.c:1631
 msgid "too long message"
 msgstr "príliš dlhá správa"
 
-#: ../libempathy-gtk/empathy-chat.c:1635
+#: ../libempathy-gtk/empathy-chat.c:1634
 msgid "not implemented"
 msgstr "nie je implementované"
 
-#: ../libempathy-gtk/empathy-chat.c:1639
+#: ../libempathy-gtk/empathy-chat.c:1638
 msgid "unknown"
 msgstr "neznámy"
 
-#: ../libempathy-gtk/empathy-chat.c:1706 ../src/empathy-chat-window.c:920
+#: ../libempathy-gtk/empathy-chat.c:1705 ../src/empathy-chat-window.c:919
 msgid "Topic:"
 msgstr "Téma:"
 
-#: ../libempathy-gtk/empathy-chat.c:1721
+#: ../libempathy-gtk/empathy-chat.c:1720
 #, c-format
 msgid "Topic set to: %s"
 msgstr "Téma nastavená na: %s"
 
-#: ../libempathy-gtk/empathy-chat.c:1723
+#: ../libempathy-gtk/empathy-chat.c:1722
 #, fuzzy, c-format
+#| msgid "Topic set to: %s"
 msgid "Topic set by %s to: %s"
 msgstr "Téma nastavená na: %s"
 
 #. No need to display this 'event' is no topic can be defined anyway
-#: ../libempathy-gtk/empathy-chat.c:1728
+#: ../libempathy-gtk/empathy-chat.c:1727
 msgid "No topic defined"
 msgstr "Nebola nastavená žiadna téma"
 
-#: ../libempathy-gtk/empathy-chat.c:2244
+#: ../libempathy-gtk/empathy-chat.c:2243
 msgid "(No Suggestions)"
 msgstr "(Žiadne návrhy)"
 
 #. translators: %s is the selected word
-#: ../libempathy-gtk/empathy-chat.c:2312
+#: ../libempathy-gtk/empathy-chat.c:2311
 #, c-format
 msgid "Add '%s' to Dictionary"
 msgstr "Pridať '%s' do slovníka"
@@ -1579,32 +1590,32 @@ msgstr "Pridať '%s' do slovníka"
 # slovnik je v tvare napr. "slovencina", "anglictina" (podst. m.)
 #. translators: first %s is the selected word,
 #. * second %s is the language name of the target dictionary
-#: ../libempathy-gtk/empathy-chat.c:2349
+#: ../libempathy-gtk/empathy-chat.c:2348
 #, c-format
 msgid "Add '%s' to %s Dictionary"
 msgstr "Pridať '%s' do slovníka pre jazyk %s"
 
 #  http://live.gnome.org/SlovakTranslation/Others/JULS
-#: ../libempathy-gtk/empathy-chat.c:2419
+#: ../libempathy-gtk/empathy-chat.c:2418
 msgid "Insert Smiley"
 msgstr "Vložiť smejka"
 
 #. send button
-#: ../libempathy-gtk/empathy-chat.c:2437
+#: ../libempathy-gtk/empathy-chat.c:2436
 #: ../libempathy-gtk/empathy-ui-utils.c:1880
 msgid "_Send"
 msgstr "_Poslať"
 
 #. Spelling suggestions
-#: ../libempathy-gtk/empathy-chat.c:2494
+#: ../libempathy-gtk/empathy-chat.c:2493
 msgid "_Spelling Suggestions"
 msgstr "_Návrhy kontroly pravopisu"
 
-#: ../libempathy-gtk/empathy-chat.c:2583
+#: ../libempathy-gtk/empathy-chat.c:2582
 msgid "Failed to retrieve recent logs"
 msgstr "Zlyhalo získavanie nedávnych záznamov"
 
-#: ../libempathy-gtk/empathy-chat.c:2722
+#: ../libempathy-gtk/empathy-chat.c:2721
 #, c-format
 msgid "%s has disconnected"
 msgstr "Kontakt %s sa odpojil"
@@ -1612,12 +1623,12 @@ msgstr "Kontakt %s sa odpojil"
 #. translators: reverse the order of these arguments
 #. * if the kicked should come before the kicker in your locale.
 #.
-#: ../libempathy-gtk/empathy-chat.c:2729
+#: ../libempathy-gtk/empathy-chat.c:2728
 #, c-format
 msgid "%1$s was kicked by %2$s"
 msgstr "Kontakt %1$s bol vykopnutý používateľom %2$s"
 
-#: ../libempathy-gtk/empathy-chat.c:2732
+#: ../libempathy-gtk/empathy-chat.c:2731
 #, c-format
 msgid "%s was kicked"
 msgstr "Kontakt %s bol vykopnutý"
@@ -1625,17 +1636,17 @@ msgstr "Kontakt %s bol vykopnutý"
 #. translators: reverse the order of these arguments
 #. * if the banned should come before the banner in your locale.
 #.
-#: ../libempathy-gtk/empathy-chat.c:2740
+#: ../libempathy-gtk/empathy-chat.c:2739
 #, c-format
 msgid "%1$s was banned by %2$s"
 msgstr "Kontakt %1$s dostal zákaz od %2$s"
 
-#: ../libempathy-gtk/empathy-chat.c:2743
+#: ../libempathy-gtk/empathy-chat.c:2742
 #, c-format
 msgid "%s was banned"
 msgstr "Kontakt %s dostal zákaz"
 
-#: ../libempathy-gtk/empathy-chat.c:2747
+#: ../libempathy-gtk/empathy-chat.c:2746
 #, c-format
 msgid "%s has left the room"
 msgstr "Kontakt %s opustil miestnosť"
@@ -1645,17 +1656,17 @@ msgstr "Kontakt %s opustil miestnosť"
 #. * given by the user living the room. If this poses a problem,
 #. * please let us know. :-)
 #.
-#: ../libempathy-gtk/empathy-chat.c:2756
+#: ../libempathy-gtk/empathy-chat.c:2755
 #, c-format
 msgid " (%s)"
 msgstr " (%s)"
 
-#: ../libempathy-gtk/empathy-chat.c:2781
+#: ../libempathy-gtk/empathy-chat.c:2780
 #, c-format
 msgid "%s has joined the room"
 msgstr "Kontakt %s vstúpil do miestnosti"
 
-#: ../libempathy-gtk/empathy-chat.c:2806
+#: ../libempathy-gtk/empathy-chat.c:2805
 #, c-format
 msgid "%s is now known as %s"
 msgstr "Kontakt %s je teraz známy ako %s"
@@ -1663,7 +1674,7 @@ msgstr "Kontakt %s je teraz známy ako %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:2993
+#: ../libempathy-gtk/empathy-chat.c:2992
 #: ../src/empathy-streamed-media-window.c:1888
 #: ../src/empathy-event-manager.c:1279 ../src/empathy-call-window.c:1466
 #: ../src/empathy-call-window.c:1516 ../src/empathy-call-window.c:2562
@@ -1671,47 +1682,47 @@ msgid "Disconnected"
 msgstr "Odpojený"
 
 #. Add message
-#: ../libempathy-gtk/empathy-chat.c:3657
+#: ../libempathy-gtk/empathy-chat.c:3656
 msgid "Would you like to store this password?"
 msgstr "Želáte si uložiť toto heslo?"
 
-#: ../libempathy-gtk/empathy-chat.c:3663
+#: ../libempathy-gtk/empathy-chat.c:3662
 msgid "Remember"
 msgstr "Zapamätať"
 
-#: ../libempathy-gtk/empathy-chat.c:3673
+#: ../libempathy-gtk/empathy-chat.c:3672
 msgid "Not now"
 msgstr "Teraz nie"
 
-#: ../libempathy-gtk/empathy-chat.c:3717
+#: ../libempathy-gtk/empathy-chat.c:3716
 #: ../libempathy-gtk/empathy-bad-password-dialog.c:142
 msgid "Retry"
 msgstr "Opakovať"
 
-#: ../libempathy-gtk/empathy-chat.c:3721
+#: ../libempathy-gtk/empathy-chat.c:3720
 msgid "Wrong password; please try again:"
 msgstr "Nesprávne heslo; prosím, skúste to znova:"
 
 #. Add message
-#: ../libempathy-gtk/empathy-chat.c:3851
+#: ../libempathy-gtk/empathy-chat.c:3850
 msgid "This room is protected by a password:"
 msgstr "Miestnosť je chránená heslom:"
 
-#: ../libempathy-gtk/empathy-chat.c:3878
+#: ../libempathy-gtk/empathy-chat.c:3877
 msgid "Join"
 msgstr "Vstúpiť"
 
-#: ../libempathy-gtk/empathy-chat.c:4070 ../src/empathy-event-manager.c:1300
+#: ../libempathy-gtk/empathy-chat.c:4069 ../src/empathy-event-manager.c:1300
 msgid "Connected"
 msgstr "Pripojený"
 
-#: ../libempathy-gtk/empathy-chat.c:4125
+#: ../libempathy-gtk/empathy-chat.c:4124
 msgid "Conversation"
 msgstr "Konverzácia"
 
 #. Translators: this string is a something like
 #. * "Escher Cat (SMS)"
-#: ../libempathy-gtk/empathy-chat.c:4130
+#: ../libempathy-gtk/empathy-chat.c:4129
 #, c-format
 msgid "%s (SMS)"
 msgstr "%s (SMS)"
@@ -1839,133 +1850,133 @@ msgstr "Správa, ktorá vás predstaví:"
 msgid "Please let me see when you're online. Thanks!"
 msgstr "Prosím, dovoľte mi vidieť, keď ste prihlásený. Ďakujem!"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:567
+#: ../libempathy-gtk/empathy-contact-widget.c:566
 #: ../libempathy-gtk/empathy-individual-widget.c:304
 msgid "Channels:"
 msgstr "Kanály:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:747
+#: ../libempathy-gtk/empathy-contact-widget.c:746
 #: ../libempathy-gtk/empathy-individual-widget.c:455
 msgid "Country ISO Code:"
 msgstr "ISO kód krajiny:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:749
+#: ../libempathy-gtk/empathy-contact-widget.c:748
 #: ../libempathy-gtk/empathy-individual-widget.c:457
 msgid "Country:"
 msgstr "Krajina:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:751
+#: ../libempathy-gtk/empathy-contact-widget.c:750
 #: ../libempathy-gtk/empathy-individual-widget.c:459
 msgid "State:"
 msgstr "Štát:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:753
+#: ../libempathy-gtk/empathy-contact-widget.c:752
 #: ../libempathy-gtk/empathy-individual-widget.c:461
 msgid "City:"
 msgstr "Mesto:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:755
+#: ../libempathy-gtk/empathy-contact-widget.c:754
 #: ../libempathy-gtk/empathy-individual-widget.c:463
 msgid "Area:"
 msgstr "Oblasť:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:757
+#: ../libempathy-gtk/empathy-contact-widget.c:756
 #: ../libempathy-gtk/empathy-individual-widget.c:465
 msgid "Postal Code:"
 msgstr "PSČ:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:759
+#: ../libempathy-gtk/empathy-contact-widget.c:758
 #: ../libempathy-gtk/empathy-individual-widget.c:467
 msgid "Street:"
 msgstr "Ulica:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:761
+#: ../libempathy-gtk/empathy-contact-widget.c:760
 #: ../libempathy-gtk/empathy-individual-widget.c:469
 msgid "Building:"
 msgstr "Budova:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:763
+#: ../libempathy-gtk/empathy-contact-widget.c:762
 #: ../libempathy-gtk/empathy-individual-widget.c:471
 msgid "Floor:"
 msgstr "Poschodie:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:765
+#: ../libempathy-gtk/empathy-contact-widget.c:764
 #: ../libempathy-gtk/empathy-individual-widget.c:473
 msgid "Room:"
 msgstr "Miestnosť:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:767
+#: ../libempathy-gtk/empathy-contact-widget.c:766
 #: ../libempathy-gtk/empathy-individual-widget.c:475
 msgid "Text:"
 msgstr "Text:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:769
+#: ../libempathy-gtk/empathy-contact-widget.c:768
 #: ../libempathy-gtk/empathy-individual-widget.c:477
 msgid "Description:"
 msgstr "Popis:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:771
+#: ../libempathy-gtk/empathy-contact-widget.c:770
 #: ../libempathy-gtk/empathy-individual-widget.c:479
 msgid "URI:"
 msgstr "URI:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:773
+#: ../libempathy-gtk/empathy-contact-widget.c:772
 #: ../libempathy-gtk/empathy-individual-widget.c:481
 msgid "Accuracy Level:"
 msgstr "Stupeň presnosti:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:775
+#: ../libempathy-gtk/empathy-contact-widget.c:774
 #: ../libempathy-gtk/empathy-individual-widget.c:483
 msgid "Error:"
 msgstr "Chyba:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:777
+#: ../libempathy-gtk/empathy-contact-widget.c:776
 #: ../libempathy-gtk/empathy-individual-widget.c:485
 msgid "Vertical Error (meters):"
 msgstr "Vertikálna chyba (v metroch):"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:779
+#: ../libempathy-gtk/empathy-contact-widget.c:778
 #: ../libempathy-gtk/empathy-individual-widget.c:487
 msgid "Horizontal Error (meters):"
 msgstr "Horizontálna chyba (v metroch):"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:781
+#: ../libempathy-gtk/empathy-contact-widget.c:780
 #: ../libempathy-gtk/empathy-individual-widget.c:489
 msgid "Speed:"
 msgstr "Rýchlosť:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:783
+#: ../libempathy-gtk/empathy-contact-widget.c:782
 #: ../libempathy-gtk/empathy-individual-widget.c:491
 msgid "Bearing:"
 msgstr "Azimut:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:785
+#: ../libempathy-gtk/empathy-contact-widget.c:784
 #: ../libempathy-gtk/empathy-individual-widget.c:493
 msgid "Climb Speed:"
 msgstr "Rýchlosť stúpania:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:787
+#: ../libempathy-gtk/empathy-contact-widget.c:786
 #: ../libempathy-gtk/empathy-individual-widget.c:495
 msgid "Last Updated on:"
 msgstr "Posledná aktualizácia:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:789
+#: ../libempathy-gtk/empathy-contact-widget.c:788
 #: ../libempathy-gtk/empathy-individual-widget.c:497
 msgid "Longitude:"
 msgstr "Zemepisná dĺžka:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:791
+#: ../libempathy-gtk/empathy-contact-widget.c:790
 #: ../libempathy-gtk/empathy-individual-widget.c:499
 msgid "Latitude:"
 msgstr "Zemepisná šírka:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:793
+#: ../libempathy-gtk/empathy-contact-widget.c:792
 #: ../libempathy-gtk/empathy-individual-widget.c:501
 msgid "Altitude:"
 msgstr "Nadmorská výška:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:846
-#: ../libempathy-gtk/empathy-contact-widget.c:861
+#: ../libempathy-gtk/empathy-contact-widget.c:845
+#: ../libempathy-gtk/empathy-contact-widget.c:860
 #: ../libempathy-gtk/empathy-individual-widget.c:593
 #: ../libempathy-gtk/empathy-individual-widget.c:608
 #: ../src/empathy-preferences.ui.h:35
@@ -1973,34 +1984,35 @@ msgid "Location"
 msgstr "Poloha"
 
 #. translators: format is "Location, $date"
-#: ../libempathy-gtk/empathy-contact-widget.c:863
+#: ../libempathy-gtk/empathy-contact-widget.c:862
 #: ../libempathy-gtk/empathy-individual-widget.c:610
 #, c-format
 msgid "%s, %s"
 msgstr "%s, %s"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:915
+#: ../libempathy-gtk/empathy-contact-widget.c:914
 #: ../libempathy-gtk/empathy-individual-widget.c:659
 msgid "%B %e, %Y at %R UTC"
 msgstr "%d. %B %Y, %R UTC"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:997
+#: ../libempathy-gtk/empathy-contact-widget.c:996
 #: ../libempathy-gtk/empathy-individual-widget.c:900
 msgid "Save Avatar"
 msgstr "Uložiť podobizeň"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:1053
+#: ../libempathy-gtk/empathy-contact-widget.c:1052
 #: ../libempathy-gtk/empathy-individual-widget.c:958
 msgid "Unable to save avatar"
 msgstr "Podobizeň sa nedá uložiť"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:1455
+#: ../libempathy-gtk/empathy-contact-widget.c:1454
 #, fuzzy
+#| msgid "Technical Details"
 msgid "Personal Details"
 msgstr "Technické údaje"
 
 # Podrobnosti, že?
-#: ../libempathy-gtk/empathy-contact-widget.c:1458
+#: ../libempathy-gtk/empathy-contact-widget.c:1457
 #: ../libempathy-gtk/empathy-contact-widget.ui.h:6
 #: ../libempathy-gtk/empathy-individual-widget.ui.h:3
 msgid "Contact Details"
@@ -2008,26 +2020,31 @@ msgstr "Informácie o kontakte"
 
 #: ../libempathy-gtk/empathy-contactinfo-utils.c:104
 #, fuzzy
+#| msgid "Full name:"
 msgid "Full name"
 msgstr "Celé meno:"
 
 #: ../libempathy-gtk/empathy-contactinfo-utils.c:105
 #, fuzzy
+#| msgid "Phone number:"
 msgid "Phone number"
 msgstr "Telefónne číslo:"
 
 #: ../libempathy-gtk/empathy-contactinfo-utils.c:106
 #, fuzzy
+#| msgid "E-mail address:"
 msgid "E-mail address"
 msgstr "Emailová adresa:"
 
 #: ../libempathy-gtk/empathy-contactinfo-utils.c:107
 #, fuzzy
+#| msgid "Website:"
 msgid "Website"
 msgstr "Webová stránka:"
 
 #: ../libempathy-gtk/empathy-contactinfo-utils.c:108
 #, fuzzy
+#| msgid "Birthday:"
 msgid "Birthday"
 msgstr "Narodeniny:"
 
@@ -2050,26 +2067,31 @@ msgstr "Správa pri odchode:"
 
 #: ../libempathy-gtk/empathy-contactinfo-utils.c:132
 #, fuzzy
+#| msgid "Work"
 msgid "work"
 msgstr "Práca"
 
 #: ../libempathy-gtk/empathy-contactinfo-utils.c:133
 #, fuzzy
+#| msgid "Romeo"
 msgid "home"
 msgstr "Rómeo"
 
 #: ../libempathy-gtk/empathy-contactinfo-utils.c:134
 #, fuzzy
+#| msgid "Mobile"
 msgid "mobile"
 msgstr "Mobil"
 
 #: ../libempathy-gtk/empathy-contactinfo-utils.c:135
 #, fuzzy
+#| msgid "Favorite"
 msgid "voice"
 msgstr "Obľúbený"
 
 #: ../libempathy-gtk/empathy-contactinfo-utils.c:136
 #, fuzzy
+#| msgid "Preferences"
 msgid "preferred"
 msgstr "Nastavenia"
 
@@ -2079,6 +2101,7 @@ msgstr ""
 
 #: ../libempathy-gtk/empathy-contactinfo-utils.c:138
 #, fuzzy
+#| msgid "Appearance"
 msgid "parcel"
 msgstr "Vzhľad"
 
@@ -2143,7 +2166,7 @@ msgid "Select"
 msgstr "Vybrať"
 
 #: ../libempathy-gtk/empathy-groups-widget.c:403
-#: ../src/empathy-roster-window.c:1970
+#: ../src/empathy-roster-window.c:1969
 msgid "Group"
 msgstr "Skupina"
 
@@ -2173,110 +2196,112 @@ msgstr "Prepojené kontakty"
 #. 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:173
+#: ../libempathy-gtk/empathy-individual-menu.c:172
 #, c-format
 msgid "%s (%s)"
 msgstr "%s (%s)"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:345
+#: ../libempathy-gtk/empathy-individual-menu.c:344
 msgid "Select account to use to place the call"
 msgstr ""
 
 #. translators: Call is a noun. This string is used in the window
 #. * title
-#: ../libempathy-gtk/empathy-individual-menu.c:349
+#: ../libempathy-gtk/empathy-individual-menu.c:348
 #: ../libempathy-gtk/empathy-log-window.ui.h:6
 #: ../src/empathy-streamed-media-window.c:1290
 #: ../src/empathy-call-window.ui.h:18
 msgid "Call"
 msgstr "Hovor"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:414
+#: ../libempathy-gtk/empathy-individual-menu.c:413
 msgid "Mobile"
 msgstr "Mobil"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:416
+#: ../libempathy-gtk/empathy-individual-menu.c:415
 msgid "Work"
 msgstr "Práca"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:418
+#: ../libempathy-gtk/empathy-individual-menu.c:417
 msgid "HOME"
 msgstr "DOMOV"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:659
+#: ../libempathy-gtk/empathy-individual-menu.c:658
 msgid "_Block Contact"
 msgstr "Za_blokovať kontakt"
 
 #. add chat button
-#: ../libempathy-gtk/empathy-individual-menu.c:1018
+#: ../libempathy-gtk/empathy-individual-menu.c:1017
 #: ../libempathy-gtk/empathy-new-message-dialog.c:319
 #: ../src/empathy-roster-window-menubar.ui.h:1
 msgid "_Chat"
 msgstr "_Rozhovor"
 
 #. add SMS button
-#: ../libempathy-gtk/empathy-individual-menu.c:1053
+#: ../libempathy-gtk/empathy-individual-menu.c:1052
 #: ../libempathy-gtk/empathy-new-message-dialog.c:313
 msgid "_SMS"
 msgstr "_SMS"
 
 # PŠ: navrhujem Hlasový
-#: ../libempathy-gtk/empathy-individual-menu.c:1086
+#: ../libempathy-gtk/empathy-individual-menu.c:1085
 msgctxt "menu item"
 msgid "_Audio Call"
 msgstr "_Zvukový hovor"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1119
+#: ../libempathy-gtk/empathy-individual-menu.c:1118
 msgctxt "menu item"
 msgid "_Video Call"
 msgstr "_Videohovor"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1160
+#: ../libempathy-gtk/empathy-individual-menu.c:1159
 #: ../src/empathy-roster-window-menubar.ui.h:4
 msgid "_Previous Conversations"
 msgstr "P_redchádzajúce konverzácie"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1189
+#: ../libempathy-gtk/empathy-individual-menu.c:1188
 msgid "Send File"
 msgstr "Poslať súbor"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1219
+#: ../libempathy-gtk/empathy-individual-menu.c:1218
 msgid "Share My Desktop"
 msgstr "Zdieľať moju plochu"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1245
+#: ../libempathy-gtk/empathy-individual-menu.c:1244
 #: ../libempathy-gtk/empathy-individual-widget.c:1357
 msgid "Favorite"
 msgstr "Obľúbený"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1264
+#: ../libempathy-gtk/empathy-individual-menu.c:1263
 #, fuzzy
+#| msgid "telepathy-salut not installed"
 msgid "gnome-contacts not installed"
 msgstr "telepathy-salut nie je nainštalovaný"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1267
+#: ../libempathy-gtk/empathy-individual-menu.c:1266
 msgid "Please install gnome-contacts to access contacts details."
 msgstr ""
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1398
+#: ../libempathy-gtk/empathy-individual-menu.c:1397
 msgid "Infor_mation"
 msgstr "_Informácie"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1447
+#: ../libempathy-gtk/empathy-individual-menu.c:1446
 msgctxt "Edit individual (contextual menu)"
 msgid "_Edit"
 msgstr "_Upraviť"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1564
-#: ../src/empathy-chat-window.c:1192
+#. send invitation
+#: ../libempathy-gtk/empathy-individual-menu.c:1562
+#: ../src/empathy-chat-window.c:1190
 msgid "Inviting you to this room"
 msgstr "Pozýva vás do tejto miestnosti"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1610
+#: ../libempathy-gtk/empathy-individual-menu.c:1608
 msgid "_Invite to Chat Room"
 msgstr "_Pozvať do diskusnej miestnosti"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1806
+#: ../libempathy-gtk/empathy-individual-menu.c:1804
 #: ../src/empathy-roster-window-menubar.ui.h:5
 msgid "_Add Contact…"
 msgstr "_Pridať kontakt…"
@@ -2532,16 +2557,19 @@ msgstr "<span size=\"x-large\">Načítava sa...</span>"
 
 #: ../libempathy-gtk/empathy-new-message-dialog.c:83
 #, fuzzy
+#| msgid "The specified contact is offline"
 msgid "The contact is offline"
 msgstr "Zvolený kontakt je odhlásený"
 
 #: ../libempathy-gtk/empathy-new-message-dialog.c:85
 #, fuzzy
+#| msgid "The specified contact is not valid"
 msgid "The specified contact is either invalid or unknown"
 msgstr "Zvolený kontakt nie je platný"
 
 #: ../libempathy-gtk/empathy-new-message-dialog.c:87
 #, fuzzy
+#| msgid "Topic not supported on this conversation"
 msgid "The contact does not support this kind of conversation"
 msgstr "Téma nie je pri tejto konverzácii podporovaná"
 
@@ -2563,21 +2591,25 @@ msgstr ""
 
 #: ../libempathy-gtk/empathy-new-message-dialog.c:101
 #, fuzzy
+#| msgid "You have been invited to join %s"
 msgid "You must be invited to join this channel"
 msgstr "Boli ste pozvaný na vstup do %s"
 
 #: ../libempathy-gtk/empathy-new-message-dialog.c:103
 #, fuzzy
+#| msgid "Contact disconnected"
 msgid "Can't proceed while disconnected"
 msgstr "Kontakt sa odpojil"
 
 #: ../libempathy-gtk/empathy-new-message-dialog.c:105
 #, fuzzy
+#| msgid "permission denied"
 msgid "Permission denied"
 msgstr "prístup zamietnutý"
 
 #: ../libempathy-gtk/empathy-new-message-dialog.c:111
 #, fuzzy
+#| msgid "There was an error starting the call"
 msgid "There was an error starting the conversation"
 msgstr "Počas vytvárania hovoru nastala chyba."
 
@@ -2600,6 +2632,8 @@ msgstr "_Videohovor"
 #. add audio button
 #: ../libempathy-gtk/empathy-new-call-dialog.c:233
 #, fuzzy
+#| msgctxt "menu item"
+#| msgid "_Audio Call"
 msgid "_Audio Call"
 msgstr "_Zvukový hovor"
 
@@ -2610,6 +2644,7 @@ msgstr "Nový hovor"
 
 #: ../libempathy-gtk/empathy-bad-password-dialog.c:130
 #, fuzzy, c-format
+#| msgid "Authentication failed"
 msgid "Authentification failed for account <b>%s</b>"
 msgstr "Overenie totožnosti zlyhalo"
 
@@ -2629,30 +2664,38 @@ msgstr ""
 #. COL_DISPLAY_MARKUP
 #. COL_STATUS_CUSTOMISABLE
 #. COL_TYPE
-#: ../libempathy-gtk/empathy-presence-chooser.c:167
-#: ../libempathy-gtk/empathy-presence-chooser.c:203
+#: ../libempathy-gtk/empathy-presence-chooser.c:166
+#: ../libempathy-gtk/empathy-presence-chooser.c:202
 msgid "Custom Message…"
 msgstr "Vlastná správa…"
 
-#: ../libempathy-gtk/empathy-presence-chooser.c:220
-#: ../libempathy-gtk/empathy-presence-chooser.c:222
+#: ../libempathy-gtk/empathy-presence-chooser.c:219
+#: ../libempathy-gtk/empathy-presence-chooser.c:221
 msgid "Edit Custom Messages…"
 msgstr "Upraviť vlastné správy…"
 
-#: ../libempathy-gtk/empathy-presence-chooser.c:345
+#: ../libempathy-gtk/empathy-presence-chooser.c:344
 msgid "Click to remove this status as a favorite"
 msgstr "Kliknutím odstránite tento stav z obľúbených"
 
-#: ../libempathy-gtk/empathy-presence-chooser.c:354
+#: ../libempathy-gtk/empathy-presence-chooser.c:353
 msgid "Click to make this status a favorite"
 msgstr "Kliknutím nastavíte tento stav ako obľúbený"
 
-#: ../libempathy-gtk/empathy-presence-chooser.c:388
+#. Translators: %s is a status message like 'At the pub' for example
+#: ../libempathy-gtk/empathy-presence-chooser.c:387
+#, c-format
+msgid ""
+"<b>Current message: %s</b>\n"
+"<small><i>Press Enter to set the new message or Esc to cancel.</i></small>"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-presence-chooser.c:396
 msgid "Set status"
 msgstr "Nastaviť stav"
 
 #. Custom messages
-#: ../libempathy-gtk/empathy-presence-chooser.c:1135
+#: ../libempathy-gtk/empathy-presence-chooser.c:1147
 msgid "Custom messages…"
 msgstr "Vlastné správy…"
 
@@ -2735,7 +2778,7 @@ msgid "Message edited at %s"
 msgstr "Prijatá správa"
 
 # Varianta:
-# PŠ: keď už, tak "variant"... rod upravený
+#PŠ: keď už, tak "variant"... rod upravený
 #: ../libempathy-gtk/empathy-theme-adium.c:1757
 msgid "Normal"
 msgstr "Normálny"
@@ -2814,6 +2857,7 @@ msgstr "Názov hostiteľa certifikátu: %s"
 
 #: ../libempathy-gtk/empathy-tls-dialog.c:281
 #, fuzzy
+#| msgid "Continue"
 msgid "C_ontinue"
 msgstr "Pokračovať"
 
@@ -3028,11 +3072,15 @@ msgstr "Vietnamské"
 
 #: ../libempathy-gtk/empathy-calendar-button.c:66
 #, fuzzy
+#| msgctxt "verb in a column header displaying group names"
+#| msgid "Select"
 msgid "Select..."
 msgstr "Vybrať"
 
 #: ../libempathy-gtk/empathy-calendar-button.c:154
 #, fuzzy
+#| msgctxt "verb in a column header displaying group names"
+#| msgid "Select"
 msgid "_Select"
 msgstr "Vybrať"
 
@@ -3044,24 +3092,24 @@ msgstr "Žiadna chybová správa"
 msgid "Instant Message (Empathy)"
 msgstr "Okamžitá správa (Empathy)"
 
-#: ../src/empathy.c:428
+#: ../src/empathy.c:425
 msgid "Don't connect on startup"
 msgstr "Nepripájať sa po spustení"
 
-#: ../src/empathy.c:432
+#: ../src/empathy.c:429
 msgid "Don't display the contact list or any other dialogs on startup"
 msgstr ""
 "Nezobrazovať zoznam kontaktov alebo akékoľvek iné dialógové okno pri spustení"
 
-#: ../src/empathy.c:447
+#: ../src/empathy.c:444
 msgid "- Empathy IM Client"
 msgstr "- Komunikátor Empathy"
 
-#: ../src/empathy.c:634
+#: ../src/empathy.c:620
 msgid "Error contacting the Account Manager"
 msgstr ""
 
-#: ../src/empathy.c:636
+#: ../src/empathy.c:622
 #, fuzzy, c-format
 msgid ""
 "There was an error while trying to connect to the Telepathy Account Manager. "
@@ -3116,14 +3164,14 @@ msgstr ""
 
 #. The primary text of the dialog shown to the user when he is about to lose
 #. * unsaved changes
-#: ../src/empathy-accounts-dialog.c:72
+#: ../src/empathy-accounts-dialog.c:71
 #, c-format
 msgid "There are unsaved modifications to your %s account."
 msgstr "Vo vašom účte %s máte neuložené zmeny."
 
 #. 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:76
+#: ../src/empathy-accounts-dialog.c:75
 msgid "Your new account has not been saved yet."
 msgstr "Váš nový účet ešte nebol uložený."
 
@@ -3164,6 +3212,7 @@ msgstr "Odhlásený — Účet zablokovaný"
 
 #: ../src/empathy-accounts-dialog.c:608
 #, fuzzy
+#| msgid "Connection has been refused"
 msgid "Edit Connection Parameters"
 msgstr "Pripojenie bolo zamietnuté"
 
@@ -3188,7 +3237,7 @@ msgstr "Naozaj chcete odstrániť %s z vášho počítača?"
 msgid "This will not remove your account on the server."
 msgstr "Toto neodstráni váš účet na serveri."
 
-#: ../src/empathy-accounts-dialog.c:1602
+#: ../src/empathy-accounts-dialog.c:1571
 msgid ""
 "You are about to select another account, which will discard\n"
 "your changes. Are you sure you want to proceed?"
@@ -3198,26 +3247,31 @@ msgstr ""
 
 # * https://bugzilla.gnome.org/show_bug.cgi?id=645689
 # PŠ: toto asi nebude správny odkaz na bugreport... opraviť!
-#. Menu items: to enabled/disable the account
-#: ../src/empathy-accounts-dialog.c:1779
+#. Menu item: to enabled/disable the account
+#: ../src/empathy-accounts-dialog.c:1762
 #, fuzzy
-msgid "_Enable"
+#| msgid "_Enable"
+msgid "_Enabled"
 msgstr "_Povoliť"
 
-#: ../src/empathy-accounts-dialog.c:1780
-msgid "_Disable"
-msgstr "_Zakázať"
+#. Menu item: Rename
+#: ../src/empathy-accounts-dialog.c:1785
+#, fuzzy
+#| msgid "Real name:"
+msgid "Rename"
+msgstr "Skutočné meno:"
 
-#: ../src/empathy-accounts-dialog.c:2221
+#: ../src/empathy-accounts-dialog.c:2201
 msgid "_Skip"
 msgstr ""
 
-#: ../src/empathy-accounts-dialog.c:2225
+#: ../src/empathy-accounts-dialog.c:2205
 #, fuzzy
+#| msgid "Connected"
 msgid "_Connect"
 msgstr "Pripojený"
 
-#: ../src/empathy-accounts-dialog.c:2404
+#: ../src/empathy-accounts-dialog.c:2384
 msgid ""
 "You are about to close the window, which will discard\n"
 "your changes. Are you sure you want to proceed?"
@@ -3243,24 +3297,25 @@ msgstr ""
 
 #: ../src/empathy-accounts-dialog.ui.h:6
 #, fuzzy
+#| msgid "No protocol installed"
 msgid "No protocol backends installed"
 msgstr "Nebol nainštalovaný žiadny protokol"
 
-#: ../src/empathy-auth-client.c:288
+#: ../src/empathy-auth-client.c:286
 #, fuzzy
 msgid " - Empathy authentication client"
 msgstr "- Komunikátor Empathy"
 
-#: ../src/empathy-auth-client.c:304
+#: ../src/empathy-auth-client.c:302
 #, fuzzy
 msgid "Empathy authentication client"
 msgstr "Autentifikácia zlyhala"
 
-#: ../src/empathy-av.c:118 ../src/empathy-call.c:201
+#: ../src/empathy-av.c:115 ../src/empathy-call.c:198
 msgid "- Empathy Audio/Video Client"
 msgstr "- Empathy - klient pre zvuk a video"
 
-#: ../src/empathy-av.c:134 ../src/empathy-call.c:223
+#: ../src/empathy-av.c:131 ../src/empathy-call.c:220
 msgid "Empathy Audio/Video Client"
 msgstr "Empathy - klient pre zvuk a video"
 
@@ -3571,19 +3626,20 @@ msgstr ""
 msgid "Audio"
 msgstr "Zvuk"
 
-#: ../src/empathy-chat-window.c:289
+#: ../src/empathy-chat-window.c:288
 #, fuzzy
+#| msgid "Hide the main window."
 msgid "Close this window?"
 msgstr "Skryje hlavné okno."
 
-#: ../src/empathy-chat-window.c:294
+#: ../src/empathy-chat-window.c:293
 #, c-format
 msgid ""
 "Closing this window will leave %s. You will not receive any further messages "
 "until you rejoin it."
 msgstr ""
 
-#: ../src/empathy-chat-window.c:305
+#: ../src/empathy-chat-window.c:304
 #, c-format
 msgid ""
 "Closing this window will leave a chat room. You will not receive any further "
@@ -3595,27 +3651,29 @@ msgstr[0] ""
 msgstr[1] ""
 msgstr[2] ""
 
-#: ../src/empathy-chat-window.c:314
+#: ../src/empathy-chat-window.c:313
 #, fuzzy, c-format
+#| msgid "Level "
 msgid "Leave %s?"
 msgstr "Úroveň"
 
-#: ../src/empathy-chat-window.c:315
+#: ../src/empathy-chat-window.c:314
 msgid ""
 "You will not receive any further messages from this chat room until you "
 "rejoin it."
 msgstr ""
 
-#: ../src/empathy-chat-window.c:334
+#: ../src/empathy-chat-window.c:333
 msgid "Close window"
 msgstr ""
 
-#: ../src/empathy-chat-window.c:334
+#: ../src/empathy-chat-window.c:333
 #, fuzzy
+#| msgid "Level "
 msgid "Leave room"
 msgstr "Úroveň"
 
-#: ../src/empathy-chat-window.c:640 ../src/empathy-chat-window.c:660
+#: ../src/empathy-chat-window.c:639 ../src/empathy-chat-window.c:659
 #, c-format
 msgid "%s (%d unread)"
 msgid_plural "%s (%d unread)"
@@ -3623,7 +3681,7 @@ msgstr[0] "%s (%d neprečítaných)"
 msgstr[1] "%s (%d neprečítaná)"
 msgstr[2] "%s (%d neprečítané)"
 
-#: ../src/empathy-chat-window.c:652
+#: ../src/empathy-chat-window.c:651
 #, c-format
 msgid "%s (and %u other)"
 msgid_plural "%s (and %u others)"
@@ -3631,7 +3689,7 @@ msgstr[0] "%s (a %u ostatných)"
 msgstr[1] "%s (a %u ostatný)"
 msgstr[2] "%s (a %u ostatní)"
 
-#: ../src/empathy-chat-window.c:668
+#: ../src/empathy-chat-window.c:667
 #, c-format
 msgid "%s (%d unread from others)"
 msgid_plural "%s (%d unread from others)"
@@ -3639,7 +3697,7 @@ msgstr[0] "%s (%d neprečítaných od iných)"
 msgstr[1] "%s (%d neprečítaná od iných)"
 msgstr[2] "%s (%d neprečítané od iných)"
 
-#: ../src/empathy-chat-window.c:677
+#: ../src/empathy-chat-window.c:676
 #, c-format
 msgid "%s (%d unread from all)"
 msgid_plural "%s (%d unread from all)"
@@ -3647,11 +3705,11 @@ msgstr[0] "%s (%d neprečítaných od všetkých)"
 msgstr[1] "%s (%d neprečítaná od všetkých)"
 msgstr[2] "%s (%d neprečítané od všetkých)"
 
-#: ../src/empathy-chat-window.c:892
+#: ../src/empathy-chat-window.c:891
 msgid "SMS:"
 msgstr "SMS:"
 
-#: ../src/empathy-chat-window.c:902
+#: ../src/empathy-chat-window.c:901
 #, c-format
 msgid "Sending %d message"
 msgid_plural "Sending %d messages"
@@ -3659,7 +3717,7 @@ msgstr[0] "Posiela sa %d správ"
 msgstr[1] "Posiela sa %d správa"
 msgstr[2] "Posielajú sa %d správy"
 
-#: ../src/empathy-chat-window.c:924
+#: ../src/empathy-chat-window.c:923
 msgid "Typing a message."
 msgstr "Píše správu."
 
@@ -3820,7 +3878,7 @@ msgstr "Boli ste pozvaný na vstup do %s"
 msgid "Incoming file transfer from %s"
 msgstr "Prichádzajúci prenos súboru od %s"
 
-#: ../src/empathy-event-manager.c:1146 ../src/empathy-roster-window.c:374
+#: ../src/empathy-event-manager.c:1146 ../src/empathy-roster-window.c:373
 msgid "Password required"
 msgstr "Vyžadované heslo"
 
@@ -3951,6 +4009,7 @@ msgstr "Odstrániť dokončené, zrušené a chybné prenosy súborov zo zoznamu
 
 #: ../src/empathy-import-dialog.c:76
 #, fuzzy
+#| msgid "Import"
 msgid "_Import"
 msgstr "Importovať"
 
@@ -3979,79 +4038,80 @@ msgstr "Protokol"
 msgid "Source"
 msgstr "Zdroj"
 
-#: ../src/empathy-roster-window.c:391
+#: ../src/empathy-roster-window.c:390
 msgid "Provide Password"
 msgstr "Poskytnite heslo"
 
-#: ../src/empathy-roster-window.c:397
+#: ../src/empathy-roster-window.c:396
 msgid "Disconnect"
 msgstr "Odpojiť"
 
-#: ../src/empathy-roster-window.c:657
+#: ../src/empathy-roster-window.c:656
 msgid "You need to setup an account to see contacts here."
 msgstr ""
 
-#: ../src/empathy-roster-window.c:673
+#: ../src/empathy-roster-window.c:672
 msgid "No match found"
 msgstr "Nenájdená žiadna zhoda"
 
-#: ../src/empathy-roster-window.c:783
+#: ../src/empathy-roster-window.c:782
 #, c-format
 msgid "Sorry, %s accounts can’t be used until your %s software is updated."
 msgstr ""
 
-#: ../src/empathy-roster-window.c:849
+#: ../src/empathy-roster-window.c:848
 msgid "Update software..."
 msgstr ""
 
-#: ../src/empathy-roster-window.c:855 ../src/empathy-roster-window.c:972
+#: ../src/empathy-roster-window.c:854 ../src/empathy-roster-window.c:971
 msgid "Close"
 msgstr "Zatvoriť"
 
-#: ../src/empathy-roster-window.c:960
+#: ../src/empathy-roster-window.c:959
 msgid "Reconnect"
 msgstr "Obnoviť spojenie"
 
-#: ../src/empathy-roster-window.c:966
+#: ../src/empathy-roster-window.c:965
 msgid "Edit Account"
 msgstr "Upraviť účet"
 
 #. Translators: this string will be something like:
 #. * Top up My Account ($1.23)..."
-#: ../src/empathy-roster-window.c:1110
+#: ../src/empathy-roster-window.c:1109
 #, c-format
 msgid "Top up %s (%s)..."
 msgstr "Dobiť %s (%s)..."
 
-#: ../src/empathy-roster-window.c:1156
+#: ../src/empathy-roster-window.c:1155
 msgid "Top up account credit"
 msgstr "Dobiť kredit na účte"
 
 #. top up button
-#: ../src/empathy-roster-window.c:1228
+#: ../src/empathy-roster-window.c:1227
 msgid "Top Up..."
 msgstr "Dobiť..."
 
-#: ../src/empathy-roster-window.c:1952
+#: ../src/empathy-roster-window.c:1951
 msgid "Contact"
 msgstr "Kontakt"
 
-#: ../src/empathy-roster-window.c:2150
+#: ../src/empathy-roster-window.c:2149
 msgid "You need to enable one of your accounts to see contacts here."
 msgstr ""
 
 #. translators: argument is an account name
-#: ../src/empathy-roster-window.c:2158
+#: ../src/empathy-roster-window.c:2157
 #, c-format
 msgid "You need to enable %s to see contacts here."
 msgstr ""
 
-#: ../src/empathy-roster-window.c:2460
+#: ../src/empathy-roster-window.c:2459
 msgid "Contact List"
 msgstr "Zoznam kontaktov"
 
 #: ../src/empathy-roster-window.ui.h:1
 #, fuzzy
+#| msgid "_Accounts"
 msgid "Account settings"
 msgstr "Účt_y"
 
@@ -4226,6 +4286,7 @@ msgid "New conversation"
 msgstr "Nová konverzácia"
 
 #: ../src/empathy-preferences.c:169
+#| msgid "Contact goes online"
 msgid "Contact comes online"
 msgstr "Kontakt sa prihlásil"
 
@@ -4386,8 +4447,8 @@ msgid ""
 "off and restarting the call."
 msgstr ""
 "Druhá osoba vám bude lepšie rozumieť potlačením ozveny, ale môže to spôsobiť "
-"problémy na niektorých počítačoch. Ak druhá osoba počuje podivné zvuky alebo "
-"zaznamená výpadky počas hovoru, skúste vypnúť potlačenie ozveny a "
+"problémy na niektorých počítačoch. Ak druhá osoba počuje podivné zvuky "
+"alebo zaznamená výpadky počas hovoru, skúste vypnúť potlačenie ozveny a "
 "reštartovať hovor."
 
 #: ../src/empathy-preferences.ui.h:26
@@ -4593,16 +4654,16 @@ msgid ""
 msgstr ""
 "Zvolený správca pripojenia nepodporuje rozšírenie pre vzdialené ladenie."
 
-#: ../src/empathy-invite-participant-dialog.c:202
-#: ../src/empathy-invite-participant-dialog.c:230
+#: ../src/empathy-invite-participant-dialog.c:200
+#: ../src/empathy-invite-participant-dialog.c:228
 msgid "Invite Participant"
 msgstr "Pozvať účastníka"
 
-#: ../src/empathy-invite-participant-dialog.c:203
+#: ../src/empathy-invite-participant-dialog.c:201
 msgid "Choose a contact to invite into the conversation:"
 msgstr "Vyberte kontakt, ktorý chcete pozvať do konverzácie:"
 
-#: ../src/empathy-invite-participant-dialog.c:226
+#: ../src/empathy-invite-participant-dialog.c:224
 msgid "Invite"
 msgstr "Pozvať"
 
@@ -4630,7 +4691,7 @@ msgstr "<account-id>"
 msgid "- Empathy Accounts"
 msgstr "- účty Empathy"
 
-#: ../src/empathy-accounts.c:231
+#: ../src/empathy-accounts.c:230
 msgid "Empathy Accounts"
 msgstr "Empathy - účty"
 
@@ -4642,11 +4703,11 @@ msgstr ""
 msgid "- Empathy Debugger"
 msgstr "- Odlaďovač Empathy"
 
-#: ../src/empathy-debugger.c:113
+#: ../src/empathy-debugger.c:112
 msgid "Empathy Debugger"
 msgstr "Odlaďovač Empathy"
 
-#: ../src/empathy-chat.c:109
+#: ../src/empathy-chat.c:106
 msgid "- Empathy Chat Client"
 msgstr "- Komunikátor Empathy"
 
@@ -4728,6 +4789,7 @@ msgstr ""
 
 #: ../src/empathy-call-window.c:3144
 #, fuzzy
+#| msgid "Top Up..."
 msgid "Top Up"
 msgstr "Dobiť..."
 
@@ -4741,6 +4803,7 @@ msgstr "Aký typ účtu máte?"
 
 #: ../libempathy-gtk/empathy-new-account-dialog.c:166
 #, fuzzy
+#| msgid "New account"
 msgid "Adding new account"
 msgstr "Nový účet"
 
@@ -4764,16 +4827,6 @@ msgid ""
 "style=\"italic\">Edit → Accounts</span> in the Contact List."
 msgstr ""
 
-#, fuzzy
-#~| msgid "E-_mail address:"
-#~ msgid "Local IP Address:"
-#~ msgstr "E_mailová adresa:"
-
-#, fuzzy
-#~| msgid "Real name:"
-#~ msgid "Rename"
-#~ msgstr "Skutočné meno:"
-
 #, fuzzy
 #~ msgid "My Web Accounts"
 #~ msgstr "- Empathy účty"
@@ -4956,6 +5009,9 @@ msgstr ""
 #~ "Chystáte sa vytvoriť nový účet, čím zrušíte vaše zmeny.\n"
 #~ "Naozaj chcete pokračovať?"
 
+#~ msgid "_Disable"
+#~ msgstr "_Zakázať"
+
 #~ msgid "Protocol:"
 #~ msgstr "Protokol:"
 
index 660ae7df6627cf445ead809493e13804651a8f33..c89ef6809aff2b9f1935aa80d5153289e5600f66 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: 2012-03-16 13:14+0000\n"
-"PO-Revision-Date: 2012-03-16 14:51+0100\n"
+"POT-Creation-Date: 2012-04-20 13:35+0000\n"
+"PO-Revision-Date: 2012-04-21 12:58+0100\n"
 "Last-Translator: Matej Urbančič <mateju@svn.gnome.org>\n"
 "Language-Team: Slovenščina <gnome-si@googlegroups.com>\n"
 "Language: \n"
@@ -41,7 +41,7 @@ msgstr "Klepet na Google Talk, Facebook, MSN in na mnogih drugih klepetalnih sto
 
 #. Tweak the dialog
 #: ../data/empathy-accounts.desktop.in.in.h:1
-#: ../src/empathy-accounts-dialog.c:2512
+#: ../src/empathy-accounts-dialog.c:2527
 msgid "Messaging and VoIP Accounts"
 msgstr "Sporočanje in računi VoIP"
 
@@ -81,395 +81,396 @@ msgstr "Privzeta mapa za prenos datotek"
 msgid "The default folder to save file transfers in."
 msgstr "Privzeta mapa za shranjevanje prejetih datotek."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:9
+#. translators: Automatic tasks which are run once to port/update account settings. Ideally, this shouldn't be exposed to users at all, we just use a gsettings key here as an optimization to only run it only once.
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:10
 msgid "Magic number used to check if sanity cleaning tasks should be run"
 msgstr "Magično število, uporabljeno za preverjanje ali naj se naloge čiščenja izvedejo"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:10
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:11
 msgid "empathy-sanity-cleaning.c uses this number to check if the cleaning tasks should be executed or not. Users should not change this key manually."
 msgstr "Število empathy-sanity-cleaning.c preverja ali naj se naloge čiščenja izvedejo ali ne. Tega ključa ni priporočljivo spreminjati ročno."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:11
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:12
 msgid "Show offline contacts"
 msgstr "Pokaži tudi nepovezane stike"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:12
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:13
 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:13
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:14
 msgid "Show avatars"
 msgstr "Pokaži podobe"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:14
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:15
 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:15
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:16
 msgid "Show protocols"
 msgstr "Pokaži protokole"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:16
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:17
 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:17
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:18
 msgid "Show Balance in contact list"
 msgstr "Pokaži stanje na računu v seznamu stikov"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:18
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:19
 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:19
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:20
 msgid "Compact contact list"
 msgstr "Skrči seznam stikov"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:20
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:21
 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:21
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:22
 msgid "Hide main window"
 msgstr "Skrij glavno okno"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:22
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:23
 msgid "Hide the main window."
 msgstr "Skrivanje glavnega okna."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:23
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:24
 msgid "Default directory to select an avatar image from"
 msgstr "Privzeta mapa slik za izbor podobe"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:24
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:25
 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:25
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:26
 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:26
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:27
 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:27
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:28
 msgid "Display incoming events in the status area"
 msgstr "Prikaz prihajajočih dogodkov v vrstici stanja."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:28
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:29
 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."
+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:29
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:30
 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:30
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:31
 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:31
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:32
 msgid "Show contact groups"
 msgstr "Pokaži skupine stikov"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:32
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:33
 msgid "Whether to show groups in the contact list."
 msgstr "Ali naj se v seznamu stikov pokažejo skupine stikov."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:33
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:34
 msgid "Contact list sort criterion"
 msgstr "Kriterij razvrščanja seznama stikov"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:34
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:35
 msgid "Which criterion to use when sorting the contact list. Default is to sort by the contact's state with the value \"state\". A value of \"name\" will sort the contact list by name."
 msgstr "Kateri kriterij naj se uporabi za razvrščanje seznama stikov. Privzeto je razvrščanje po stanju stika z vrednostjo \"stanje\". Vrednost \"ime\" pa razvrsti seznam poimensko."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:35
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:36
 msgid "Use notification sounds"
 msgstr "Uporabi zvoke obvestil"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:36
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:37
 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:37
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:38
 msgid "Disable sounds when away"
 msgstr "Onemogoči zvok ob odsotnosti"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:38
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:39
 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:39
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:40
 msgid "Play a sound for incoming messages"
 msgstr "Predvajaj zvok ob prejetju novih sporočil"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:40
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:41
 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:41
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:42
 msgid "Play a sound for outgoing messages"
 msgstr "Predvajaj zvok ob pošiljanju sporočil"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:42
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:43
 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:43
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:44
 msgid "Play a sound for new conversations"
 msgstr "Predvajaj zvok ob novih pogovorih"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:44
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:45
 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:45
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:46
 msgid "Play a sound when a contact logs in"
 msgstr "Predvajaj zvok ob prijavi stika"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:46
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:47
 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:47
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:48
 msgid "Play a sound when a contact logs out"
 msgstr "Predvajaj zvok ob odjavi stika"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:48
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:49
 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:49
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:50
 msgid "Play a sound when we log in"
 msgstr "Predvajaj zvok ob prijavi"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:50
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:51
 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:51
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:52
 msgid "Play a sound when we log out"
 msgstr "Predvajaj zvok ob odjavi"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:52
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:53
 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:53
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:54
 msgid "Enable popup notifications for new messages"
 msgstr "Omogoči pojavna obvestila ob novih sporočilih"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:54
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:55
 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:55
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:56
 msgid "Disable popup notifications when away"
 msgstr "Onemogoči pojavna obvestila ob odsotnosti"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:56
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:57
 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:57
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:58
 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:58
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:59
 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:59
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:60
 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:60
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:61
 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:61
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:62
 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:62
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:63
 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:63
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:64
 msgid "Use graphical smileys"
 msgstr "Uporabi slikovne smeške"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:64
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:65
 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:65
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:66
 msgid "Show contact list in rooms"
 msgstr "Pokaži seznam stikov v klepetalnicah"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:66
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:67
 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:67
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:68
 msgid "Chat window theme"
 msgstr "Tema klepetalnega okna"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:68
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:69
 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:69
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:70
 msgid "Chat window theme variant"
 msgstr "Različica teme klepetalnega okna"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:70
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:71
 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:71
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:72
 msgid "Path of the Adium theme to use"
 msgstr "Pot do želene teme Adium "
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:72
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:73
 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:73
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:74
 msgid "Enable WebKit Developer Tools"
 msgstr "Omogoči razvojna orodja WebKit"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:74
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:75
 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:75
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:76
 msgid "Inform other users when you are typing to them"
 msgstr "Obvesti druge uporabnike, da jim tipkate besedilo"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:76
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:77
 msgid "Whether to send the 'composing' or 'paused' chat states. Does not currently affect the 'gone' state."
 msgstr "Ali naj se pošilja tudi stanje klepeta 'vpisovanje' ali pa 'v premoru'. Trenutno ne vpliva na stanje 'odsoten'."
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:77
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:78
 msgid "Use theme for chat rooms"
 msgstr "Uporabi temo za klepetalnice"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:78
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:79
 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:79
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:80
 msgid "Spell checking languages"
 msgstr "Jeziki za črkovanje"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:80
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:81
 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:81
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:82
 msgid "Enable spell checker"
 msgstr "Omogoči črkovalnik"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:82
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:83
 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:83
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:84
 msgid "Nick completed character"
 msgstr "Znak na koncu vzdevka"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:84
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:85
 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:85
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:86
 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:86
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:87
 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:87
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:88
 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:88
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:89
 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:89
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:90
 msgid "Camera device"
 msgstr "Naprava kamere"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:90
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:91
 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:91
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:92
 msgid "Camera position"
 msgstr "Položaj kamere"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:92
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:93
 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:93
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:94
 msgid "Echo cancellation support"
 msgstr "Podpora odpravljanju odmevov"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:94
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:95
 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:95
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:96
 msgid "Show hint about closing the main window"
 msgstr "Pokaži namig ob zapiranju glavnega okna"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:96
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:97
 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:97
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:98
 msgid "Empathy can publish the user's location"
 msgstr "Program Empathy lahko objavi mesto nahajanja uporabnika"
 
-#: ../data/org.gnome.Empathy.gschema.xml.in.h:98
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:99
 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:99
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:100
 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:100
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:101
 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:101
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:102
 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:102
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:103
 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:103
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:104
 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:104
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:105
 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:105
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:106
 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:106
+#: ../data/org.gnome.Empathy.gschema.xml.in.h:107
 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."
 
@@ -518,19 +519,19 @@ msgstr "Izbrana datoteka ni običajna datoteka"
 msgid "The selected file is empty"
 msgstr "Izbrana datoteka je prazna"
 
-#: ../libempathy/empathy-message.c:415
+#: ../libempathy/empathy-message.c:407
 #: ../src/empathy-call-observer.c:129
 #, c-format
 msgid "Missed call from %s"
 msgstr "Zgrešen klic od %s"
 
 #. Translators: this is an outgoing call, e.g. 'Called Alice'
-#: ../libempathy/empathy-message.c:419
+#: ../libempathy/empathy-message.c:411
 #, c-format
 msgid "Called %s"
 msgstr "Klicanje uporabnika %s"
 
-#: ../libempathy/empathy-message.c:422
+#: ../libempathy/empathy-message.c:414
 #, c-format
 msgid "Call from %s"
 msgstr "Klic uporabnika %s"
@@ -779,7 +780,7 @@ msgid "All accounts"
 msgstr "Vsi računi"
 
 #: ../libempathy-gtk/empathy-account-widget.c:682
-#: ../src/empathy-import-widget.c:336
+#: ../src/empathy-import-widget.c:323
 msgid "Account"
 msgstr "Račun"
 
@@ -804,7 +805,7 @@ msgid "%s:"
 msgstr "%s:"
 
 #: ../libempathy-gtk/empathy-account-widget.c:1398
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:14
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:16
 msgid "Username:"
 msgstr "Uporabniško ime:"
 
@@ -816,11 +817,11 @@ msgstr "_Uveljavi"
 msgid "L_og in"
 msgstr "_Prijava"
 
-#: ../libempathy-gtk/empathy-account-widget.c:1812
+#: ../libempathy-gtk/empathy-account-widget.c:1810
 msgid "This account already exists on the server"
 msgstr "Ta račun na strežniku že obstaja"
 
-#: ../libempathy-gtk/empathy-account-widget.c:1816
+#: ../libempathy-gtk/empathy-account-widget.c:1814
 msgid "Create a new account on the server"
 msgstr "Ustvari nov račun na strežniku"
 
@@ -829,19 +830,19 @@ msgstr "Ustvari nov račun na strežniku"
 #. * 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:2241
+#: ../libempathy-gtk/empathy-account-widget.c:2236
 #, 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:2267
+#: ../libempathy-gtk/empathy-account-widget.c:2262
 #, c-format
 msgid "%s Account"
 msgstr "%s račun"
 
-#: ../libempathy-gtk/empathy-account-widget.c:2271
+#: ../libempathy-gtk/empathy-account-widget.c:2266
 msgid "New account"
 msgstr "Nov račun"
 
@@ -897,11 +898,11 @@ msgstr "_Strežnik:"
 #: ../libempathy-gtk/empathy-account-widget-generic.ui.h:1
 #: ../libempathy-gtk/empathy-account-widget-groupwise.ui.h:7
 #: ../libempathy-gtk/empathy-account-widget-icq.ui.h:8
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:15
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:17
 #: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:23
 #: ../libempathy-gtk/empathy-account-widget-msn.ui.h:7
 #: ../libempathy-gtk/empathy-account-widget-local-xmpp.ui.h:7
-#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:21
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:22
 #: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:9
 msgid "Advanced"
 msgstr "Napredno"
@@ -919,7 +920,7 @@ msgstr "Kakšno je vaše geslo AIM?"
 #: ../libempathy-gtk/empathy-account-widget-icq.ui.h:11
 #: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:7
 #: ../libempathy-gtk/empathy-account-widget-msn.ui.h:10
-#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:24
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:25
 msgid "Remember Password"
 msgstr "Zapomni si geslo"
 
@@ -963,36 +964,32 @@ msgstr "Kakšen je vaš UIN ICQ?"
 msgid "What is your ICQ password?"
 msgstr "Kakšno je vaše geslo ICQ?"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.c:206
-#: ../libempathy-gtk/empathy-account-widget-sip.c:239
+#: ../libempathy-gtk/empathy-account-widget-sip.c:207
+#: ../libempathy-gtk/empathy-account-widget-sip.c:240
 msgid "Auto"
 msgstr "Samodejno"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.c:209
+#: ../libempathy-gtk/empathy-account-widget-sip.c:210
 msgid "UDP"
 msgstr "UDP"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.c:212
+#: ../libempathy-gtk/empathy-account-widget-sip.c:213
 msgid "TCP"
 msgstr "TCP"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.c:215
+#: ../libempathy-gtk/empathy-account-widget-sip.c:216
 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:244
+#: ../libempathy-gtk/empathy-account-widget-sip.c:245
 msgid "Register"
 msgstr "Vpiši se"
 
-#. translators: this string is very specific to SIP's internal; maybe
-#. * best to keep the English version.
-#: ../libempathy-gtk/empathy-account-widget-sip.c:249
+#: ../libempathy-gtk/empathy-account-widget-sip.c:250
 msgid "Options"
 msgstr "Možnosti"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.c:252
+#: ../libempathy-gtk/empathy-account-widget-sip.c:253
 msgid "None"
 msgstr "Brez"
 
@@ -1021,43 +1018,45 @@ msgstr "Dodaj ..."
 msgid "Remove"
 msgstr "Odstrani"
 
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:6
+#. Translators: tooltip on a 'Go Up' button used to sort IRC servers by priority
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:7
 msgid "Up"
 msgstr "Navzgor"
 
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:7
+#. Translators: tooltip on a 'Go Down' button used to sort IRC servers by priority
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:9
 msgid "Down"
 msgstr "Navzdol"
 
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:8
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:10
 msgid "Servers"
 msgstr "Strežniki"
 
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:9
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:11
 msgid "Most IRC servers don't need a password, so if you're not sure, don't enter a password."
 msgstr "Večina strežnikov IRC ne zahteva gesla, zato ga, če niste prepričani, ne uporabite."
 
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:10
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:12
 msgid "Nickname:"
 msgstr "Vzdevek:"
 
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:11
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:13
 msgid "Password:"
 msgstr "Geslo:"
 
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:12
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:14
 msgid "Quit message:"
 msgstr "Sporočilo končanja:"
 
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:13
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:15
 msgid "Real name:"
 msgstr "Pravo ime:"
 
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:16
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:18
 msgid "Which IRC network?"
 msgstr "Katero IRC omrežje?"
 
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:17
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:19
 msgid "What is your IRC nickname?"
 msgstr "Kakšen je vaš IRC vzdevek?"
 
@@ -1073,7 +1072,7 @@ msgid ""
 "Use <a href=\"http://www.facebook.com/username/\">this page</a> to choose a Facebook username if you don't have one."
 msgstr ""
 "To je vaše uporabniško ime in ne običajna Facebook prijava.\n"
-"V primeru, da ste facebook.com/<b>badger</b>, vnesite <b>badger</b>.\n"
+"V primeru da ste facebook.com/<b>badger</b>, vnesite <b>badger</b>.\n"
 "Uporabite <a href=\"http://www.facebook.com/username/\">to stran</a> za izbor uporabniškega imena, v kolikor ga še nimate."
 
 #: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:6
@@ -1245,11 +1244,15 @@ msgstr "Prezri napake TLS"
 msgid "Port:"
 msgstr "Vrata:"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:22
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:21
+msgid "Local IP Address:"
+msgstr "Krajevni naslov IP:"
+
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:23
 msgid "What is your SIP login ID?"
 msgstr "Kakšen je prijavni ID vaše SIP?"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:23
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:24
 msgid "What is your SIP account password?"
 msgstr "Kakšno je vaše geslo SIP?"
 
@@ -1335,194 +1338,194 @@ msgstr "Klic v sili ni podprt s tem protokolom"
 msgid "You don't have enough credit in order to place this call"
 msgstr "Na računu ni dovolj visokega zneska za vzpostavitev klica"
 
-#: ../libempathy-gtk/empathy-chat.c:729
+#: ../libempathy-gtk/empathy-chat.c:727
 msgid "Failed to open private chat"
 msgstr "Napaka med odpiranjem zasebnega klepeta"
 
-#: ../libempathy-gtk/empathy-chat.c:787
+#: ../libempathy-gtk/empathy-chat.c:785
 msgid "Topic not supported on this conversation"
 msgstr "Tema ni podprta pri tem pogovoru"
 
-#: ../libempathy-gtk/empathy-chat.c:793
+#: ../libempathy-gtk/empathy-chat.c:791
 msgid "You are not allowed to change the topic"
 msgstr "Za spreminjanje teme nimate ustreznih dovoljenj."
 
-#: ../libempathy-gtk/empathy-chat.c:992
+#: ../libempathy-gtk/empathy-chat.c:990
 #, c-format
 msgid "“%s” is not a valid contact ID"
 msgstr "“%s” ni veljaven ID stika"
 
-#: ../libempathy-gtk/empathy-chat.c:1087
+#: ../libempathy-gtk/empathy-chat.c:1085
 msgid "/clear: clear all messages from the current conversation"
 msgstr "/clear: počisti vsa sporočila trenutnega pogovora"
 
-#: ../libempathy-gtk/empathy-chat.c:1090
+#: ../libempathy-gtk/empathy-chat.c:1088
 msgid "/topic <topic>: set the topic of the current conversation"
 msgstr "/topic <tema>: določi temo trenutnega pogovora"
 
-#: ../libempathy-gtk/empathy-chat.c:1093
+#: ../libempathy-gtk/empathy-chat.c:1091
 msgid "/join <chat room ID>: join a new chat room"
 msgstr "/join <ID klepetalnice>: pridruževanje novi klepetalnici"
 
-#: ../libempathy-gtk/empathy-chat.c:1096
+#: ../libempathy-gtk/empathy-chat.c:1094
 msgid "/j <chat room ID>: join a new chat room"
 msgstr "/j <ID klepetalnice>: pridruži se novi klepetalnici"
 
-#: ../libempathy-gtk/empathy-chat.c:1100
+#: ../libempathy-gtk/empathy-chat.c:1098
 msgid "/part [<chat room ID>] [<reason>]: leave the chat room, by default the current one"
 msgstr "/part [<ID klepetalnice>] [<razlog>]: zapusti klepetalnico, privzeto je to trenutna klepetalnica"
 
-#: ../libempathy-gtk/empathy-chat.c:1104
+#: ../libempathy-gtk/empathy-chat.c:1102
 msgid "/query <contact ID> [<message>]: open a private chat"
 msgstr "/query <ID stika> [<sporočilo>]: odpre zasebni klepet"
 
-#: ../libempathy-gtk/empathy-chat.c:1107
+#: ../libempathy-gtk/empathy-chat.c:1105
 msgid "/msg <contact ID> <message>: open a private chat"
 msgstr "/msg <ID stika> <sporočilo>: odpre zasebni klepet"
 
-#: ../libempathy-gtk/empathy-chat.c:1110
+#: ../libempathy-gtk/empathy-chat.c:1108
 msgid "/nick <nickname>: change your nickname on the current server"
 msgstr "/nick <vzdevek>: spremeni vaš vzdevek na trenutnem strežniku"
 
-#: ../libempathy-gtk/empathy-chat.c:1113
+#: ../libempathy-gtk/empathy-chat.c:1111
 msgid "/me <message>: send an ACTION message to the current conversation"
 msgstr "/me <sporočilo>: pošlje sporočilo DEJANJA v trenutni pogovor"
 
-#: ../libempathy-gtk/empathy-chat.c:1116
+#: ../libempathy-gtk/empathy-chat.c:1114
 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 <sporočilo>: pošlje <sporočilo> v trenutni pogovor. Možnost se uporablja za pošiljanje sporočila, ki se začne z '/'. Primer: \"/say /join se uporablja za pridruževanje novi klepetalnici\""
 
-#: ../libempathy-gtk/empathy-chat.c:1121
+#: ../libempathy-gtk/empathy-chat.c:1119
 msgid "/whois <contact ID>: display information about a contact"
 msgstr "/whois <ID stika>: pokaže podrobnosti stika"
 
-#: ../libempathy-gtk/empathy-chat.c:1124
+#: ../libempathy-gtk/empathy-chat.c:1122
 msgid "/help [<command>]: show all supported commands. If <command> is defined, show its usage."
 msgstr "/help [<ukaz>], pokaže vse podprte ukaze in njihov način uporabe."
 
-#: ../libempathy-gtk/empathy-chat.c:1143
+#: ../libempathy-gtk/empathy-chat.c:1141
 #, c-format
 msgid "Usage: %s"
 msgstr "Uporaba: %s"
 
-#: ../libempathy-gtk/empathy-chat.c:1188
+#: ../libempathy-gtk/empathy-chat.c:1186
 msgid "Unknown command"
 msgstr "Neznan ukaz"
 
-#: ../libempathy-gtk/empathy-chat.c:1314
+#: ../libempathy-gtk/empathy-chat.c:1312
 msgid "Unknown command; see /help for the available commands"
 msgstr "Neznan ukaz, za več si vpišite /help"
 
-#: ../libempathy-gtk/empathy-chat.c:1565
+#: ../libempathy-gtk/empathy-chat.c:1563
 msgid "insufficient balance to send message"
 msgstr "nezadostno stanje na računu za pošiljanje sporočil"
 
-#: ../libempathy-gtk/empathy-chat.c:1569
-#: ../libempathy-gtk/empathy-chat.c:1583
-#: ../libempathy-gtk/empathy-chat.c:1646
+#: ../libempathy-gtk/empathy-chat.c:1567
+#: ../libempathy-gtk/empathy-chat.c:1581
+#: ../libempathy-gtk/empathy-chat.c:1644
 #, c-format
 msgid "Error sending message '%s': %s"
 msgstr "Napaka med pošiljanjem sporočila '%s': %s"
 
-#: ../libempathy-gtk/empathy-chat.c:1571
-#: ../libempathy-gtk/empathy-chat.c:1588
-#: ../libempathy-gtk/empathy-chat.c:1650
+#: ../libempathy-gtk/empathy-chat.c:1569
+#: ../libempathy-gtk/empathy-chat.c:1586
+#: ../libempathy-gtk/empathy-chat.c:1648
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Napaka med pošiljanjem sporočila: %s"
 
 #. translators: error used when user doesn't have enough credit on his
 #. * account to send the message.
-#: ../libempathy-gtk/empathy-chat.c:1577
+#: ../libempathy-gtk/empathy-chat.c:1575
 #, c-format
 msgid "insufficient balance to send message. <a href='%s'>Top up</a>."
 msgstr "Nezadostno stanje na računi za pošiljanje sporočila. <a href='%s'>Povišaj</a>."
 
-#: ../libempathy-gtk/empathy-chat.c:1617
+#: ../libempathy-gtk/empathy-chat.c:1615
 msgid "not capable"
 msgstr "ni mogoče"
 
-#: ../libempathy-gtk/empathy-chat.c:1624
+#: ../libempathy-gtk/empathy-chat.c:1622
 msgid "offline"
 msgstr "brez povezave"
 
-#: ../libempathy-gtk/empathy-chat.c:1627
+#: ../libempathy-gtk/empathy-chat.c:1625
 msgid "invalid contact"
 msgstr "neveljaven stik"
 
-#: ../libempathy-gtk/empathy-chat.c:1630
+#: ../libempathy-gtk/empathy-chat.c:1628
 msgid "permission denied"
 msgstr "ni dovoljenja"
 
-#: ../libempathy-gtk/empathy-chat.c:1633
+#: ../libempathy-gtk/empathy-chat.c:1631
 msgid "too long message"
 msgstr "predolgo sporočilo"
 
-#: ../libempathy-gtk/empathy-chat.c:1636
+#: ../libempathy-gtk/empathy-chat.c:1634
 msgid "not implemented"
 msgstr "ni del programa"
 
-#: ../libempathy-gtk/empathy-chat.c:1640
+#: ../libempathy-gtk/empathy-chat.c:1638
 msgid "unknown"
 msgstr "neznano"
 
-#: ../libempathy-gtk/empathy-chat.c:1707
-#: ../src/empathy-chat-window.c:920
+#: ../libempathy-gtk/empathy-chat.c:1705
+#: ../src/empathy-chat-window.c:919
 msgid "Topic:"
 msgstr "Tema:"
 
-#: ../libempathy-gtk/empathy-chat.c:1722
+#: ../libempathy-gtk/empathy-chat.c:1720
 #, c-format
 msgid "Topic set to: %s"
 msgstr "Tema je določena na: %s"
 
-#: ../libempathy-gtk/empathy-chat.c:1724
+#: ../libempathy-gtk/empathy-chat.c:1722
 #, c-format
 msgid "Topic set by %s to: %s"
 msgstr "%s določa vsebino: %s"
 
 #. No need to display this 'event' is no topic can be defined anyway
-#: ../libempathy-gtk/empathy-chat.c:1729
+#: ../libempathy-gtk/empathy-chat.c:1727
 msgid "No topic defined"
 msgstr "Ni določene teme"
 
-#: ../libempathy-gtk/empathy-chat.c:2245
+#: ../libempathy-gtk/empathy-chat.c:2243
 msgid "(No Suggestions)"
 msgstr "(Ni predlogov)"
 
 #. translators: %s is the selected word
-#: ../libempathy-gtk/empathy-chat.c:2313
+#: ../libempathy-gtk/empathy-chat.c:2311
 #, c-format
 msgid "Add '%s' to Dictionary"
 msgstr "Dodaj '%s' v slovar"
 
 #. translators: first %s is the selected word,
 #. * second %s is the language name of the target dictionary
-#: ../libempathy-gtk/empathy-chat.c:2350
+#: ../libempathy-gtk/empathy-chat.c:2348
 #, c-format
 msgid "Add '%s' to %s Dictionary"
 msgstr "Dodaj '%s' v slovar %s"
 
-#: ../libempathy-gtk/empathy-chat.c:2420
+#: ../libempathy-gtk/empathy-chat.c:2418
 msgid "Insert Smiley"
 msgstr "Vstavi smeška"
 
 #. send button
-#: ../libempathy-gtk/empathy-chat.c:2438
+#: ../libempathy-gtk/empathy-chat.c:2436
 #: ../libempathy-gtk/empathy-ui-utils.c:1880
 msgid "_Send"
 msgstr "_Pošlji"
 
 #. Spelling suggestions
-#: ../libempathy-gtk/empathy-chat.c:2495
+#: ../libempathy-gtk/empathy-chat.c:2493
 msgid "_Spelling Suggestions"
 msgstr "Predlogi čr_kovalnika"
 
-#: ../libempathy-gtk/empathy-chat.c:2584
+#: ../libempathy-gtk/empathy-chat.c:2582
 msgid "Failed to retrieve recent logs"
 msgstr "Napaka med pridobivanjem nedavnih dnevnikov"
 
-#: ../libempathy-gtk/empathy-chat.c:2723
+#: ../libempathy-gtk/empathy-chat.c:2721
 #, c-format
 msgid "%s has disconnected"
 msgstr "%s je prekinil povezavo"
@@ -1530,12 +1533,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:2730
+#: ../libempathy-gtk/empathy-chat.c:2728
 #, c-format
 msgid "%1$s was kicked by %2$s"
 msgstr "%2$s je izgnal %1$s"
 
-#: ../libempathy-gtk/empathy-chat.c:2733
+#: ../libempathy-gtk/empathy-chat.c:2731
 #, c-format
 msgid "%s was kicked"
 msgstr "%s je bil izgnan"
@@ -1543,17 +1546,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:2741
+#: ../libempathy-gtk/empathy-chat.c:2739
 #, c-format
 msgid "%1$s was banned by %2$s"
 msgstr "%2$s je izobčil %1$s"
 
-#: ../libempathy-gtk/empathy-chat.c:2744
+#: ../libempathy-gtk/empathy-chat.c:2742
 #, c-format
 msgid "%s was banned"
 msgstr "%s je izobčen"
 
-#: ../libempathy-gtk/empathy-chat.c:2748
+#: ../libempathy-gtk/empathy-chat.c:2746
 #, c-format
 msgid "%s has left the room"
 msgstr "%s je zapustil klepetalnico"
@@ -1563,17 +1566,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:2757
+#: ../libempathy-gtk/empathy-chat.c:2755
 #, c-format
 msgid " (%s)"
 msgstr " (%s)"
 
-#: ../libempathy-gtk/empathy-chat.c:2782
+#: ../libempathy-gtk/empathy-chat.c:2780
 #, c-format
 msgid "%s has joined the room"
 msgstr "%s je vstopil v klepetalnico"
 
-#: ../libempathy-gtk/empathy-chat.c:2807
+#: ../libempathy-gtk/empathy-chat.c:2805
 #, c-format
 msgid "%s is now known as %s"
 msgstr "%s je preimenovan v %s"
@@ -1581,58 +1584,58 @@ 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:2994
+#: ../libempathy-gtk/empathy-chat.c:2992
 #: ../src/empathy-streamed-media-window.c:1888
 #: ../src/empathy-event-manager.c:1279
-#: ../src/empathy-call-window.c:1502
-#: ../src/empathy-call-window.c:1552
-#: ../src/empathy-call-window.c:2590
+#: ../src/empathy-call-window.c:1466
+#: ../src/empathy-call-window.c:1516
+#: ../src/empathy-call-window.c:2562
 msgid "Disconnected"
 msgstr "Prekinjena povezava"
 
 #. Add message
-#: ../libempathy-gtk/empathy-chat.c:3658
+#: ../libempathy-gtk/empathy-chat.c:3656
 msgid "Would you like to store this password?"
 msgstr "Ali želite shraniti geslo?"
 
-#: ../libempathy-gtk/empathy-chat.c:3664
+#: ../libempathy-gtk/empathy-chat.c:3662
 msgid "Remember"
 msgstr "Zapomni si"
 
-#: ../libempathy-gtk/empathy-chat.c:3674
+#: ../libempathy-gtk/empathy-chat.c:3672
 msgid "Not now"
 msgstr "Ne zdaj"
 
-#: ../libempathy-gtk/empathy-chat.c:3718
+#: ../libempathy-gtk/empathy-chat.c:3716
 #: ../libempathy-gtk/empathy-bad-password-dialog.c:142
 msgid "Retry"
 msgstr "Poskusi znova"
 
-#: ../libempathy-gtk/empathy-chat.c:3722
+#: ../libempathy-gtk/empathy-chat.c:3720
 msgid "Wrong password; please try again:"
 msgstr "Napačno geslo; poskusite znova:"
 
 #. Add message
-#: ../libempathy-gtk/empathy-chat.c:3852
+#: ../libempathy-gtk/empathy-chat.c:3850
 msgid "This room is protected by a password:"
 msgstr "Klepetalnica je zaščitena z geslom:"
 
-#: ../libempathy-gtk/empathy-chat.c:3879
+#: ../libempathy-gtk/empathy-chat.c:3877
 msgid "Join"
 msgstr "Pridruži se"
 
-#: ../libempathy-gtk/empathy-chat.c:4071
+#: ../libempathy-gtk/empathy-chat.c:4069
 #: ../src/empathy-event-manager.c:1300
 msgid "Connected"
 msgstr "Povezano"
 
-#: ../libempathy-gtk/empathy-chat.c:4126
+#: ../libempathy-gtk/empathy-chat.c:4124
 msgid "Conversation"
 msgstr "Pogovor"
 
 #. Translators: this string is a something like
 #. * "Escher Cat (SMS)"
-#: ../libempathy-gtk/empathy-chat.c:4131
+#: ../libempathy-gtk/empathy-chat.c:4129
 #, c-format
 msgid "%s (SMS)"
 msgstr "%s (SMS)"
@@ -1663,7 +1666,7 @@ msgstr "Uredi blokirane stike"
 
 #. Account and Identifier
 #: ../libempathy-gtk/empathy-contact-blocking-dialog.ui.h:1
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:506
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:503
 #: ../libempathy-gtk/empathy-contact-widget.ui.h:1
 #: ../libempathy-gtk/empathy-individual-widget.c:1474
 #: ../src/empathy-chatrooms-window.ui.h:2
@@ -1737,157 +1740,157 @@ msgid "Decide _Later"
 msgstr "Odloči se _kasneje"
 
 #. Title
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:499
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:496
 msgid "Search contacts"
 msgstr "Iskanje stikov"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:529
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:526
 msgid "Search: "
 msgstr "Poišči:"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:587
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:584
 msgid "_Add Contact"
 msgstr "_Dodaj stik"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:605
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:602
 msgid "No contacts found"
 msgstr "Ni najdenih stikov."
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:621
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:618
 msgid "Your message introducing yourself:"
 msgstr "Predstavitveno sporočilo:"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:629
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:626
 msgid "Please let me see when you're online. Thanks!"
-msgstr "Želel bi videti, kdaj ste na zvezi. Hvala!"
+msgstr "Želel bi videti, kdaj ste prisotni v klepetu. Hvala!"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:567
+#: ../libempathy-gtk/empathy-contact-widget.c:566
 #: ../libempathy-gtk/empathy-individual-widget.c:304
 msgid "Channels:"
 msgstr "Kanali:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:747
+#: ../libempathy-gtk/empathy-contact-widget.c:746
 #: ../libempathy-gtk/empathy-individual-widget.c:455
 msgid "Country ISO Code:"
 msgstr "ISO oznaka države:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:749
+#: ../libempathy-gtk/empathy-contact-widget.c:748
 #: ../libempathy-gtk/empathy-individual-widget.c:457
 msgid "Country:"
 msgstr "Država:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:751
+#: ../libempathy-gtk/empathy-contact-widget.c:750
 #: ../libempathy-gtk/empathy-individual-widget.c:459
 msgid "State:"
 msgstr "Okraj:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:753
+#: ../libempathy-gtk/empathy-contact-widget.c:752
 #: ../libempathy-gtk/empathy-individual-widget.c:461
 msgid "City:"
 msgstr "Mesto:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:755
+#: ../libempathy-gtk/empathy-contact-widget.c:754
 #: ../libempathy-gtk/empathy-individual-widget.c:463
 msgid "Area:"
 msgstr "Področje:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:757
+#: ../libempathy-gtk/empathy-contact-widget.c:756
 #: ../libempathy-gtk/empathy-individual-widget.c:465
 msgid "Postal Code:"
 msgstr "Poštna številka:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:759
+#: ../libempathy-gtk/empathy-contact-widget.c:758
 #: ../libempathy-gtk/empathy-individual-widget.c:467
 msgid "Street:"
 msgstr "Ulica:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:761
+#: ../libempathy-gtk/empathy-contact-widget.c:760
 #: ../libempathy-gtk/empathy-individual-widget.c:469
 msgid "Building:"
 msgstr "Stavba:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:763
+#: ../libempathy-gtk/empathy-contact-widget.c:762
 #: ../libempathy-gtk/empathy-individual-widget.c:471
 msgid "Floor:"
 msgstr "Nadstropje:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:765
+#: ../libempathy-gtk/empathy-contact-widget.c:764
 #: ../libempathy-gtk/empathy-individual-widget.c:473
 msgid "Room:"
 msgstr "Klepetalnica:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:767
+#: ../libempathy-gtk/empathy-contact-widget.c:766
 #: ../libempathy-gtk/empathy-individual-widget.c:475
 msgid "Text:"
 msgstr "Besedilo:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:769
+#: ../libempathy-gtk/empathy-contact-widget.c:768
 #: ../libempathy-gtk/empathy-individual-widget.c:477
 msgid "Description:"
 msgstr "Opis:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:771
+#: ../libempathy-gtk/empathy-contact-widget.c:770
 #: ../libempathy-gtk/empathy-individual-widget.c:479
 msgid "URI:"
 msgstr "URI:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:773
+#: ../libempathy-gtk/empathy-contact-widget.c:772
 #: ../libempathy-gtk/empathy-individual-widget.c:481
 msgid "Accuracy Level:"
 msgstr "Raven natančnosti:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:775
+#: ../libempathy-gtk/empathy-contact-widget.c:774
 #: ../libempathy-gtk/empathy-individual-widget.c:483
 msgid "Error:"
 msgstr "Napaka:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:777
+#: ../libempathy-gtk/empathy-contact-widget.c:776
 #: ../libempathy-gtk/empathy-individual-widget.c:485
 msgid "Vertical Error (meters):"
 msgstr "Napaka navpično (v metrih):"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:779
+#: ../libempathy-gtk/empathy-contact-widget.c:778
 #: ../libempathy-gtk/empathy-individual-widget.c:487
 msgid "Horizontal Error (meters):"
 msgstr "Napaka vodoravno (v metrih):"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:781
+#: ../libempathy-gtk/empathy-contact-widget.c:780
 #: ../libempathy-gtk/empathy-individual-widget.c:489
 msgid "Speed:"
 msgstr "Hitrost:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:783
+#: ../libempathy-gtk/empathy-contact-widget.c:782
 #: ../libempathy-gtk/empathy-individual-widget.c:491
 msgid "Bearing:"
 msgstr "Smer:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:785
+#: ../libempathy-gtk/empathy-contact-widget.c:784
 #: ../libempathy-gtk/empathy-individual-widget.c:493
 msgid "Climb Speed:"
 msgstr "Hitrost dviganja:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:787
+#: ../libempathy-gtk/empathy-contact-widget.c:786
 #: ../libempathy-gtk/empathy-individual-widget.c:495
 msgid "Last Updated on:"
 msgstr "Zadnjič posodobljeno:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:789
+#: ../libempathy-gtk/empathy-contact-widget.c:788
 #: ../libempathy-gtk/empathy-individual-widget.c:497
 msgid "Longitude:"
 msgstr "Zemljepisna dolžina:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:791
+#: ../libempathy-gtk/empathy-contact-widget.c:790
 #: ../libempathy-gtk/empathy-individual-widget.c:499
 msgid "Latitude:"
 msgstr "Zemljepisna širina:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:793
+#: ../libempathy-gtk/empathy-contact-widget.c:792
 #: ../libempathy-gtk/empathy-individual-widget.c:501
 msgid "Altitude:"
 msgstr "Nadmorska višina:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:846
-#: ../libempathy-gtk/empathy-contact-widget.c:861
+#: ../libempathy-gtk/empathy-contact-widget.c:845
+#: ../libempathy-gtk/empathy-contact-widget.c:860
 #: ../libempathy-gtk/empathy-individual-widget.c:593
 #: ../libempathy-gtk/empathy-individual-widget.c:608
 #: ../src/empathy-preferences.ui.h:35
@@ -1895,32 +1898,32 @@ msgid "Location"
 msgstr "Mesto"
 
 #. translators: format is "Location, $date"
-#: ../libempathy-gtk/empathy-contact-widget.c:863
+#: ../libempathy-gtk/empathy-contact-widget.c:862
 #: ../libempathy-gtk/empathy-individual-widget.c:610
 #, c-format
 msgid "%s, %s"
 msgstr "%s, %s"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:915
+#: ../libempathy-gtk/empathy-contact-widget.c:914
 #: ../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:997
+#: ../libempathy-gtk/empathy-contact-widget.c:996
 #: ../libempathy-gtk/empathy-individual-widget.c:900
 msgid "Save Avatar"
 msgstr "Shrani podobo"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:1053
+#: ../libempathy-gtk/empathy-contact-widget.c:1052
 #: ../libempathy-gtk/empathy-individual-widget.c:958
 msgid "Unable to save avatar"
 msgstr "Ni mogoče shraniti podobe"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:1444
+#: ../libempathy-gtk/empathy-contact-widget.c:1454
 msgid "Personal Details"
 msgstr "Osebne podrobnosti"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:1447
+#: ../libempathy-gtk/empathy-contact-widget.c:1457
 #: ../libempathy-gtk/empathy-contact-widget.ui.h:6
 #: ../libempathy-gtk/empathy-individual-widget.ui.h:3
 msgid "Contact Details"
@@ -2029,25 +2032,25 @@ msgstr "Različica:"
 msgid "Client:"
 msgstr "Odjemalec:"
 
-#: ../libempathy-gtk/empathy-groups-widget.c:331
+#: ../libempathy-gtk/empathy-groups-widget.c:327
 msgid "Groups"
 msgstr "Skupine"
 
-#: ../libempathy-gtk/empathy-groups-widget.c:343
+#: ../libempathy-gtk/empathy-groups-widget.c:339
 msgid "Select the groups you want this contact to appear in.  Note that you can select more than one group or no groups."
 msgstr "Izbor skupin, ki jim stik pripada. Izbrati je mogoče eno ali več skupin, lahko pa tudi nobene."
 
-#: ../libempathy-gtk/empathy-groups-widget.c:362
+#: ../libempathy-gtk/empathy-groups-widget.c:358
 msgid "_Add Group"
 msgstr "_Dodaj skupino"
 
-#: ../libempathy-gtk/empathy-groups-widget.c:397
+#: ../libempathy-gtk/empathy-groups-widget.c:393
 msgctxt "verb in a column header displaying group names"
 msgid "Select"
 msgstr "Izbor"
 
-#: ../libempathy-gtk/empathy-groups-widget.c:407
-#: ../src/empathy-roster-window.c:1970
+#: ../libempathy-gtk/empathy-groups-widget.c:403
+#: ../src/empathy-roster-window.c:1969
 msgid "Group"
 msgstr "Skupina"
 
@@ -2079,142 +2082,147 @@ msgstr "Povezani stiki"
 #. 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:173
+#: ../libempathy-gtk/empathy-individual-menu.c:172
 #, c-format
 msgid "%s (%s)"
 msgstr "%s (%s)"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:345
+#: ../libempathy-gtk/empathy-individual-menu.c:344
 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:349
+#: ../libempathy-gtk/empathy-individual-menu.c:348
 #: ../libempathy-gtk/empathy-log-window.ui.h:6
 #: ../src/empathy-streamed-media-window.c:1290
 #: ../src/empathy-call-window.ui.h:18
 msgid "Call"
 msgstr "Kliči"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:414
+#: ../libempathy-gtk/empathy-individual-menu.c:413
 msgid "Mobile"
 msgstr "Mobilni telefon"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:416
+#: ../libempathy-gtk/empathy-individual-menu.c:415
 msgid "Work"
 msgstr "Delo"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:418
+#: ../libempathy-gtk/empathy-individual-menu.c:417
 msgid "HOME"
 msgstr "Domača mapa"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:659
+#: ../libempathy-gtk/empathy-individual-menu.c:658
 msgid "_Block Contact"
 msgstr "_Blokiraj stik"
 
 #. add chat button
-#: ../libempathy-gtk/empathy-individual-menu.c:1018
+#: ../libempathy-gtk/empathy-individual-menu.c:1017
 #: ../libempathy-gtk/empathy-new-message-dialog.c:319
 #: ../src/empathy-roster-window-menubar.ui.h:1
 msgid "_Chat"
 msgstr "_Klepet"
 
 #. add SMS button
-#: ../libempathy-gtk/empathy-individual-menu.c:1053
+#: ../libempathy-gtk/empathy-individual-menu.c:1052
 #: ../libempathy-gtk/empathy-new-message-dialog.c:313
 msgid "_SMS"
 msgstr "_SMS"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1086
+#: ../libempathy-gtk/empathy-individual-menu.c:1085
 msgctxt "menu item"
 msgid "_Audio Call"
 msgstr "_Zvočni klic"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1119
+#: ../libempathy-gtk/empathy-individual-menu.c:1118
 msgctxt "menu item"
 msgid "_Video Call"
 msgstr "_Video klic"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1160
+#: ../libempathy-gtk/empathy-individual-menu.c:1159
 #: ../src/empathy-roster-window-menubar.ui.h:4
 msgid "_Previous Conversations"
 msgstr "Predhodni po_govori"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1189
+#: ../libempathy-gtk/empathy-individual-menu.c:1188
 msgid "Send File"
 msgstr "Pošlji datoteko"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1219
+#: ../libempathy-gtk/empathy-individual-menu.c:1218
 msgid "Share My Desktop"
 msgstr "Souporaba namizja"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1245
+#: ../libempathy-gtk/empathy-individual-menu.c:1244
 #: ../libempathy-gtk/empathy-individual-widget.c:1357
 msgid "Favorite"
 msgstr "Priljubljeno"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1264
+#: ../libempathy-gtk/empathy-individual-menu.c:1263
 msgid "gnome-contacts not installed"
 msgstr "Paket gnome-contacts ni nameščen"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1267
+#: ../libempathy-gtk/empathy-individual-menu.c:1266
 msgid "Please install gnome-contacts to access contacts details."
 msgstr "Namestiti je treba paket gnome-contacts za dostop do podrobnosti stikov."
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1398
+#: ../libempathy-gtk/empathy-individual-menu.c:1397
 msgid "Infor_mation"
 msgstr "_Podrobnosti"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1447
+#: ../libempathy-gtk/empathy-individual-menu.c:1446
 msgctxt "Edit individual (contextual menu)"
 msgid "_Edit"
 msgstr "_Uredi"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1564
-#: ../src/empathy-chat-window.c:1192
+#. send invitation
+#: ../libempathy-gtk/empathy-individual-menu.c:1562
+#: ../src/empathy-chat-window.c:1190
 msgid "Inviting you to this room"
 msgstr "Vabila v klepetalnico"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1610
+#: ../libempathy-gtk/empathy-individual-menu.c:1608
 msgid "_Invite to Chat Room"
 msgstr "_Povabi v klepetalnico"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1806
+#: ../libempathy-gtk/empathy-individual-menu.c:1804
 #: ../src/empathy-roster-window-menubar.ui.h:5
 msgid "_Add Contact…"
 msgstr "_Dodaj stik ..."
 
-#: ../libempathy-gtk/empathy-individual-view.c:2304
+#: ../libempathy-gtk/empathy-individual-view.c:2364
 msgid "Delete and _Block"
 msgstr "Izbriši in _blokiraj"
 
-#: ../libempathy-gtk/empathy-individual-view.c:2339
+#: ../libempathy-gtk/empathy-individual-view.c:2399
 #, 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:2342
+#: ../libempathy-gtk/empathy-individual-view.c:2402
 msgid "Removing group"
 msgstr "Odstranjevanje skupine"
 
+#: ../libempathy-gtk/empathy-individual-view.c:2470
+msgid "Re_name"
+msgstr "P_reimenuj"
+
 #. Remove
-#: ../libempathy-gtk/empathy-individual-view.c:2397
-#: ../libempathy-gtk/empathy-individual-view.c:2601
+#: ../libempathy-gtk/empathy-individual-view.c:2479
+#: ../libempathy-gtk/empathy-individual-view.c:2683
 msgid "_Remove"
 msgstr "_Odstrani"
 
-#: ../libempathy-gtk/empathy-individual-view.c:2474
+#: ../libempathy-gtk/empathy-individual-view.c:2556
 #, 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:2483
+#: ../libempathy-gtk/empathy-individual-view.c:2565
 #, 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-view.c:2495
+#: ../libempathy-gtk/empathy-individual-view.c:2577
 msgid "Removing contact"
 msgstr "Odstranjevanje stika"
 
@@ -2260,48 +2268,48 @@ msgstr "nov strežnik"
 msgid "SSL"
 msgstr "SSL"
 
-#: ../libempathy-gtk/empathy-log-window.c:620
+#: ../libempathy-gtk/empathy-log-window.c:617
 msgid "History"
 msgstr "Zgodovina"
 
-#: ../libempathy-gtk/empathy-log-window.c:675
+#: ../libempathy-gtk/empathy-log-window.c:672
 msgid "Show"
 msgstr "Pokaži"
 
-#: ../libempathy-gtk/empathy-log-window.c:697
+#: ../libempathy-gtk/empathy-log-window.c:694
 msgid "Search"
 msgstr "Poišči"
 
-#: ../libempathy-gtk/empathy-log-window.c:1148
+#: ../libempathy-gtk/empathy-log-window.c:1145
 #, c-format
 msgid "Chat in %s"
 msgstr "Klepet v %s"
 
-#: ../libempathy-gtk/empathy-log-window.c:1150
+#: ../libempathy-gtk/empathy-log-window.c:1147
 #, c-format
 msgid "Chat with %s"
 msgstr "Klepet s stikom %s"
 
-#: ../libempathy-gtk/empathy-log-window.c:1200
-#: ../libempathy-gtk/empathy-log-window.c:1347
+#: ../libempathy-gtk/empathy-log-window.c:1197
+#: ../libempathy-gtk/empathy-log-window.c:1341
 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:1289
+#: ../libempathy-gtk/empathy-log-window.c:1284
 #, 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:1295
+#: ../libempathy-gtk/empathy-log-window.c:1290
 #, c-format
 msgid "<b>%s:</b> %s"
 msgstr "<b>%s:</b> %s"
 
-#: ../libempathy-gtk/empathy-log-window.c:1371
+#: ../libempathy-gtk/empathy-log-window.c:1365
 #, c-format
 msgid "%s second"
 msgid_plural "%s seconds"
@@ -2310,7 +2318,7 @@ msgstr[1] "%s sekunda"
 msgstr[2] "%s sekundi"
 msgstr[3] "%s sekunde"
 
-#: ../libempathy-gtk/empathy-log-window.c:1378
+#: ../libempathy-gtk/empathy-log-window.c:1372
 #, c-format
 msgid "%s minute"
 msgid_plural "%s minutes"
@@ -2319,80 +2327,80 @@ msgstr[1] "%s minuta"
 msgstr[2] "%s minuti"
 msgstr[3] "%s minute"
 
-#: ../libempathy-gtk/empathy-log-window.c:1386
+#: ../libempathy-gtk/empathy-log-window.c:1380
 #, c-format
 msgid "Call took %s, ended at %s"
 msgstr "Klic začet %s, končan %s"
 
-#: ../libempathy-gtk/empathy-log-window.c:1720
+#: ../libempathy-gtk/empathy-log-window.c:1711
 msgid "Today"
 msgstr "Danes"
 
-#: ../libempathy-gtk/empathy-log-window.c:1724
+#: ../libempathy-gtk/empathy-log-window.c:1715
 msgid "Yesterday"
 msgstr "Včeraj"
 
 #. Translators: A date such as '23 May 2010' (strftime format)
-#: ../libempathy-gtk/empathy-log-window.c:1739
+#: ../libempathy-gtk/empathy-log-window.c:1730
 msgid "%e %B %Y"
 msgstr "%e. %B %Y"
 
-#: ../libempathy-gtk/empathy-log-window.c:1827
-#: ../libempathy-gtk/empathy-log-window.c:3487
+#: ../libempathy-gtk/empathy-log-window.c:1834
+#: ../libempathy-gtk/empathy-log-window.c:3457
 msgid "Anytime"
 msgstr "Kadarkoli"
 
-#: ../libempathy-gtk/empathy-log-window.c:1916
-#: ../libempathy-gtk/empathy-log-window.c:2400
+#: ../libempathy-gtk/empathy-log-window.c:1933
+#: ../libempathy-gtk/empathy-log-window.c:2392
 msgid "Anyone"
 msgstr "Kdorkoli"
 
-#: ../libempathy-gtk/empathy-log-window.c:2713
+#: ../libempathy-gtk/empathy-log-window.c:2705
 msgid "Who"
 msgstr "Kdo"
 
-#: ../libempathy-gtk/empathy-log-window.c:2922
+#: ../libempathy-gtk/empathy-log-window.c:2914
 msgid "When"
 msgstr "Kdaj"
 
-#: ../libempathy-gtk/empathy-log-window.c:3038
+#: ../libempathy-gtk/empathy-log-window.c:3032
 msgid "Anything"
 msgstr "Karkoli"
 
-#: ../libempathy-gtk/empathy-log-window.c:3040
+#: ../libempathy-gtk/empathy-log-window.c:3034
 msgid "Text chats"
 msgstr "Besedilni klepet"
 
-#: ../libempathy-gtk/empathy-log-window.c:3042
+#: ../libempathy-gtk/empathy-log-window.c:3035
 #: ../src/empathy-preferences.ui.h:25
 msgid "Calls"
 msgstr "Klici"
 
-#: ../libempathy-gtk/empathy-log-window.c:3047
+#: ../libempathy-gtk/empathy-log-window.c:3039
 msgid "Incoming calls"
 msgstr "Dohodni klici"
 
-#: ../libempathy-gtk/empathy-log-window.c:3048
+#: ../libempathy-gtk/empathy-log-window.c:3040
 msgid "Outgoing calls"
 msgstr "Odhodni klici"
 
-#: ../libempathy-gtk/empathy-log-window.c:3049
+#: ../libempathy-gtk/empathy-log-window.c:3041
 msgid "Missed calls"
 msgstr "Prezrti klici"
 
-#: ../libempathy-gtk/empathy-log-window.c:3071
+#: ../libempathy-gtk/empathy-log-window.c:3061
 msgid "What"
 msgstr "Kaj"
 
-#: ../libempathy-gtk/empathy-log-window.c:3780
+#: ../libempathy-gtk/empathy-log-window.c:3750
 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:3784
+#: ../libempathy-gtk/empathy-log-window.c:3754
 msgid "Clear All"
 msgstr "Počisti vse"
 
-#: ../libempathy-gtk/empathy-log-window.c:3791
+#: ../libempathy-gtk/empathy-log-window.c:3761
 msgid "Delete from:"
 msgstr "Izbriši iz:"
 
@@ -2524,30 +2532,40 @@ msgstr ""
 #. COL_DISPLAY_MARKUP
 #. COL_STATUS_CUSTOMISABLE
 #. COL_TYPE
-#: ../libempathy-gtk/empathy-presence-chooser.c:167
-#: ../libempathy-gtk/empathy-presence-chooser.c:203
+#: ../libempathy-gtk/empathy-presence-chooser.c:166
+#: ../libempathy-gtk/empathy-presence-chooser.c:202
 msgid "Custom Message…"
 msgstr "Sporočilo po meri ..."
 
-#: ../libempathy-gtk/empathy-presence-chooser.c:220
-#: ../libempathy-gtk/empathy-presence-chooser.c:222
+#: ../libempathy-gtk/empathy-presence-chooser.c:219
+#: ../libempathy-gtk/empathy-presence-chooser.c:221
 msgid "Edit Custom Messages…"
 msgstr "Uredi sporočilo po meri ..."
 
-#: ../libempathy-gtk/empathy-presence-chooser.c:345
+#: ../libempathy-gtk/empathy-presence-chooser.c:344
 msgid "Click to remove this status as a favorite"
 msgstr "S klikom odstranite stanje kot priljubljeno"
 
-#: ../libempathy-gtk/empathy-presence-chooser.c:354
+#: ../libempathy-gtk/empathy-presence-chooser.c:353
 msgid "Click to make this status a favorite"
 msgstr "S klikom naredite to stanje priljubljeno"
 
-#: ../libempathy-gtk/empathy-presence-chooser.c:388
+#. Translators: %s is a status message like 'At the pub' for example
+#: ../libempathy-gtk/empathy-presence-chooser.c:387
+#, c-format
+msgid ""
+"<b>Current message: %s</b>\n"
+"<small><i>Press Enter to set the new message or Esc to cancel.</i></small>"
+msgstr ""
+"<b>Trenutno sporočilo: %s</b>\n"
+"<small><i>Pritisnite vnosno tipko za nastavitev novega sporočila, ali pa pritisnite tipko Esc za preklic dejanja.</i></small>"
+
+#: ../libempathy-gtk/empathy-presence-chooser.c:396
 msgid "Set status"
 msgstr "Nastavi stanje"
 
 #. Custom messages
-#: ../libempathy-gtk/empathy-presence-chooser.c:1135
+#: ../libempathy-gtk/empathy-presence-chooser.c:1147
 msgid "Custom messages…"
 msgstr "Sporočila po meri ..."
 
@@ -2920,31 +2938,31 @@ msgstr "Izberi ..."
 msgid "_Select"
 msgstr "_Izberi"
 
-#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:202
+#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:201
 msgid "No error message"
 msgstr "Ni sporočil o napakah"
 
-#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:275
+#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:274
 msgid "Instant Message (Empathy)"
 msgstr "Hipno sporočanje (Empathy)"
 
-#: ../src/empathy.c:435
+#: ../src/empathy.c:425
 msgid "Don't connect on startup"
 msgstr "Brez samodejne povezave ob zagonu"
 
-#: ../src/empathy.c:439
+#: ../src/empathy.c:429
 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:454
+#: ../src/empathy.c:444
 msgid "- Empathy IM Client"
 msgstr "- Empathy sporočilnik"
 
-#: ../src/empathy.c:641
+#: ../src/empathy.c:620
 msgid "Error contacting the Account Manager"
 msgstr "Napaka delovanja upravljalnika računov"
 
-#: ../src/empathy.c:643
+#: ../src/empathy.c:622
 #, c-format
 msgid ""
 "There was an error while trying to connect to the Telepathy Account Manager. The error was:\n"
@@ -2976,75 +2994,75 @@ msgstr "Matej Urbančič <mateju@svn.gnome.org>"
 
 #. The primary text of the dialog shown to the user when he is about to lose
 #. * unsaved changes
-#: ../src/empathy-accounts-dialog.c:72
+#: ../src/empathy-accounts-dialog.c:71
 #, c-format
 msgid "There are unsaved modifications to your %s account."
 msgstr "Obstajajo neshranjene spremembe vašega %s računa."
 
 #. 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:76
+#: ../src/empathy-accounts-dialog.c:75
 msgid "Your new account has not been saved yet."
 msgstr "Novi račun še ni bil shranjen."
 
-#: ../src/empathy-accounts-dialog.c:381
+#: ../src/empathy-accounts-dialog.c:404
 #: ../src/empathy-streamed-media-window.c:759
-#: ../src/empathy-call-window.c:1289
+#: ../src/empathy-call-window.c:1267
 msgid "Connecting…"
 msgstr "Povezovanje ..."
 
-#: ../src/empathy-accounts-dialog.c:422
+#: ../src/empathy-accounts-dialog.c:445
 #, c-format
 msgid "Offline — %s"
 msgstr "Brez povezave - %s"
 
-#: ../src/empathy-accounts-dialog.c:434
+#: ../src/empathy-accounts-dialog.c:457
 #, c-format
 msgid "Disconnected — %s"
 msgstr "Prekinjena povezava - %s"
 
-#: ../src/empathy-accounts-dialog.c:445
+#: ../src/empathy-accounts-dialog.c:468
 msgid "Offline — No Network Connection"
 msgstr "Brez povezave - ni omrežne povezave"
 
-#: ../src/empathy-accounts-dialog.c:452
+#: ../src/empathy-accounts-dialog.c:475
 msgid "Unknown Status"
 msgstr "Neznano stanje"
 
-#: ../src/empathy-accounts-dialog.c:469
+#: ../src/empathy-accounts-dialog.c:492
 msgid "This account has been disabled because it relies on an old, unsupported backend. Please install telepathy-haze and restart your session to migrate the account."
 msgstr "Ta račun je onemogočen, ker deluje na starem, nepodprtem ozadnjem programu. Namestiti je treba paket telepathy-haze in ponovno zagnati sejo za prenos računa."
 
-#: ../src/empathy-accounts-dialog.c:479
+#: ../src/empathy-accounts-dialog.c:502
 msgid "Offline — Account Disabled"
 msgstr "Brez povezave - račun je onemogočen"
 
-#: ../src/empathy-accounts-dialog.c:585
+#: ../src/empathy-accounts-dialog.c:608
 msgid "Edit Connection Parameters"
 msgstr "Uredi parametre povezave"
 
-#: ../src/empathy-accounts-dialog.c:750
+#: ../src/empathy-accounts-dialog.c:773
 msgid "Failed to retrieve your personal information from the server."
 msgstr "Pridobivanje osebnih podrobnosti s strežnika je spodletelo."
 
-#: ../src/empathy-accounts-dialog.c:756
+#: ../src/empathy-accounts-dialog.c:779
 msgid "Go online to edit your personal information."
 msgstr "Prijava v omrežje za urejanje osebnih podrobnosti."
 
-#: ../src/empathy-accounts-dialog.c:843
+#: ../src/empathy-accounts-dialog.c:866
 msgid "_Edit Connection Parameters..."
 msgstr "_Uredi parametre povezave ..."
 
-#: ../src/empathy-accounts-dialog.c:1339
+#: ../src/empathy-accounts-dialog.c:1362
 #, c-format
 msgid "Do you want to remove %s from your computer?"
 msgstr "Ali želite odstraniti %s iz računalnika?"
 
-#: ../src/empathy-accounts-dialog.c:1343
+#: ../src/empathy-accounts-dialog.c:1366
 msgid "This will not remove your account on the server."
 msgstr "To ne bo odstranilo vašega računa s strežnika."
 
-#: ../src/empathy-accounts-dialog.c:1579
+#: ../src/empathy-accounts-dialog.c:1571
 msgid ""
 "You are about to select another account, which will discard\n"
 "your changes. Are you sure you want to proceed?"
@@ -3052,24 +3070,25 @@ msgstr ""
 "Izbran bo nov račun, trenutne spremembe pa bodo izgubljene\n"
 "Ali ste prepričani, da želite nadaljevati?"
 
-#. Menu items: to enabled/disable the account
-#: ../src/empathy-accounts-dialog.c:1755
-msgid "_Enable"
+#. Menu item: to enabled/disable the account
+#: ../src/empathy-accounts-dialog.c:1762
+msgid "_Enabled"
 msgstr "_Omogoči"
 
-#: ../src/empathy-accounts-dialog.c:1756
-msgid "_Disable"
-msgstr "O_nemogoči"
+#. Menu item: Rename
+#: ../src/empathy-accounts-dialog.c:1785
+msgid "Rename"
+msgstr "Preimenuj"
 
-#: ../src/empathy-accounts-dialog.c:2184
+#: ../src/empathy-accounts-dialog.c:2201
 msgid "_Skip"
 msgstr "Pre_skoči"
 
-#: ../src/empathy-accounts-dialog.c:2188
+#: ../src/empathy-accounts-dialog.c:2205
 msgid "_Connect"
 msgstr "_Poveži"
 
-#: ../src/empathy-accounts-dialog.c:2365
+#: ../src/empathy-accounts-dialog.c:2384
 msgid ""
 "You are about to close the window, which will discard\n"
 "your changes. Are you sure you want to proceed?"
@@ -3093,21 +3112,21 @@ msgstr "Za dodajanje novega računa morate najprej namestiti zaledje za vsak pro
 msgid "No protocol backends installed"
 msgstr "Ni nameščenega ozadnjega protokola"
 
-#: ../src/empathy-auth-client.c:288
+#: ../src/empathy-auth-client.c:286
 msgid " - Empathy authentication client"
 msgstr "- Empathy odjemalec overitve"
 
-#: ../src/empathy-auth-client.c:304
+#: ../src/empathy-auth-client.c:302
 msgid "Empathy authentication client"
 msgstr "Empathy odjemalec overitve"
 
-#: ../src/empathy-av.c:118
-#: ../src/empathy-call.c:201
+#: ../src/empathy-av.c:115
+#: ../src/empathy-call.c:198
 msgid "- Empathy Audio/Video Client"
 msgstr "- Empathy odjemalec zvoka in slike"
 
-#: ../src/empathy-av.c:134
-#: ../src/empathy-call.c:223
+#: ../src/empathy-av.c:131
+#: ../src/empathy-call.c:220
 msgid "Empathy Audio/Video Client"
 msgstr "Empathy odjemalec zvoka in slike"
 
@@ -3150,33 +3169,33 @@ 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:1211
-#: ../src/empathy-call-window.c:1889
+#: ../src/empathy-call-window.c:1861
 #, c-format
 msgid "Call with %s"
 msgstr "Klic z %s"
 
 #: ../src/empathy-streamed-media-window.c:1444
-#: ../src/empathy-call-window.c:2133
+#: ../src/empathy-call-window.c:2105
 msgid "The IP address as seen by the machine"
 msgstr "Naslov IP kot ga zazna strojna oprema"
 
 #: ../src/empathy-streamed-media-window.c:1446
-#: ../src/empathy-call-window.c:2135
+#: ../src/empathy-call-window.c:2107
 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:1448
-#: ../src/empathy-call-window.c:2137
+#: ../src/empathy-call-window.c:2109
 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:1450
-#: ../src/empathy-call-window.c:2139
+#: ../src/empathy-call-window.c:2111
 msgid "The IP address of a relay server"
 msgstr "Naslov IP posredovalnega strežnika"
 
 #: ../src/empathy-streamed-media-window.c:1452
-#: ../src/empathy-call-window.c:2141
+#: ../src/empathy-call-window.c:2113
 msgid "The IP address of the multicast group"
 msgstr "Naslov IP skupine za večsmerno oddajanje"
 
@@ -3195,66 +3214,66 @@ msgid "Connected — %d:%02dm"
 msgstr "Povezan - %d:%02d m"
 
 #: ../src/empathy-streamed-media-window.c:2199
-#: ../src/empathy-call-window.c:2992
+#: ../src/empathy-call-window.c:2964
 msgid "Technical Details"
 msgstr "Tehnične podrobnosti"
 
 #: ../src/empathy-streamed-media-window.c:2237
-#: ../src/empathy-call-window.c:3031
+#: ../src/empathy-call-window.c:3003
 #, 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:2242
-#: ../src/empathy-call-window.c:3036
+#: ../src/empathy-call-window.c:3008
 #, 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:2248
-#: ../src/empathy-call-window.c:3042
+#: ../src/empathy-call-window.c:3014
 #, 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:2254
-#: ../src/empathy-call-window.c:3048
+#: ../src/empathy-call-window.c:3020
 msgid "There was a failure on the network"
 msgstr "Prišlo je do napake na omrežju"
 
 #: ../src/empathy-streamed-media-window.c:2258
-#: ../src/empathy-call-window.c:3052
+#: ../src/empathy-call-window.c:3024
 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:2261
-#: ../src/empathy-call-window.c:3055
+#: ../src/empathy-call-window.c:3027
 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:2271
-#: ../src/empathy-call-window.c:3067
+#: ../src/empathy-call-window.c:3039
 #, 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:2279
-#: ../src/empathy-call-window.c:3076
+#: ../src/empathy-call-window.c:3048
 msgid "There was a failure in the call engine"
 msgstr "Prišlo je do napake v klicnem programniku"
 
 #: ../src/empathy-streamed-media-window.c:2282
-#: ../src/empathy-call-window.c:3079
+#: ../src/empathy-call-window.c:3051
 msgid "The end of the stream was reached"
 msgstr "Dosežen je konec pretoka"
 
 #: ../src/empathy-streamed-media-window.c:2322
-#: ../src/empathy-call-window.c:3119
+#: ../src/empathy-call-window.c:3091
 msgid "Can't establish audio stream"
 msgstr "Ni mogoče vzpostaviti zvočnega pretoka"
 
 #: ../src/empathy-streamed-media-window.c:2332
-#: ../src/empathy-call-window.c:3129
+#: ../src/empathy-call-window.c:3101
 msgid "Can't establish video stream"
 msgstr "Ni mogoče vzpostaviti video pretoka"
 
@@ -3369,10 +3388,10 @@ msgstr "Kodek kodiranja:"
 
 #: ../src/empathy-call-window.ui.h:28
 #: ../src/empathy-streamed-media-window.ui.h:21
-#: ../src/empathy-call-window.c:2542
-#: ../src/empathy-call-window.c:2543
-#: ../src/empathy-call-window.c:2544
-#: ../src/empathy-call-window.c:2545
+#: ../src/empathy-call-window.c:2514
+#: ../src/empathy-call-window.c:2515
+#: ../src/empathy-call-window.c:2516
+#: ../src/empathy-call-window.c:2517
 msgid "Unknown"
 msgstr "Neznano"
 
@@ -3397,16 +3416,16 @@ msgstr "Krajevni odjemalec:"
 msgid "Audio"
 msgstr "Zvok"
 
-#: ../src/empathy-chat-window.c:289
+#: ../src/empathy-chat-window.c:288
 msgid "Close this window?"
 msgstr "Ali naj se okno zapre?"
 
-#: ../src/empathy-chat-window.c:294
+#: ../src/empathy-chat-window.c:293
 #, c-format
 msgid "Closing this window will leave %s. You will not receive any further messages until you rejoin it."
 msgstr "Z zapiranjem tega okna se prekine tudi povezava s klepetalnico %s. Nadaljnja sporočila ne bodo prikazana do ponovne povezave."
 
-#: ../src/empathy-chat-window.c:305
+#: ../src/empathy-chat-window.c:304
 #, c-format
 msgid "Closing this window will leave a chat room. You will not receive any further messages until you rejoin it."
 msgid_plural "Closing this window will leave %u chat rooms. You will not receive any further messages until you rejoin them."
@@ -3415,25 +3434,25 @@ msgstr[1] "Z zapiranjem tega okna se prekine tudi povezava s %u klepetalnico. Na
 msgstr[2] "Z zapiranjem tega okna se prekine tudi povezava z %u klepetalnicama. Nadaljnja sporočila ne bodo prikazana do ponovne povezave."
 msgstr[3] "Z zapiranjem tega okna se prekine tudi povezava s %u klepetalnicami. Nadaljnja sporočila ne bodo prikazana do ponovne povezave."
 
-#: ../src/empathy-chat-window.c:314
+#: ../src/empathy-chat-window.c:313
 #, c-format
 msgid "Leave %s?"
 msgstr "Ali naj se prekine povezava s klepetalnico %s?"
 
-#: ../src/empathy-chat-window.c:315
+#: ../src/empathy-chat-window.c:314
 msgid "You will not receive any further messages from this chat room until you rejoin it."
 msgstr "Nadaljnja sporočila s te klepetalnice ne bodo prikazana do ponovne povezave."
 
-#: ../src/empathy-chat-window.c:334
+#: ../src/empathy-chat-window.c:333
 msgid "Close window"
 msgstr "Zapri okno"
 
-#: ../src/empathy-chat-window.c:334
+#: ../src/empathy-chat-window.c:333
 msgid "Leave room"
 msgstr "Zapusti klepetalnico"
 
-#: ../src/empathy-chat-window.c:640
-#: ../src/empathy-chat-window.c:660
+#: ../src/empathy-chat-window.c:639
+#: ../src/empathy-chat-window.c:659
 #, c-format
 msgid "%s (%d unread)"
 msgid_plural "%s (%d unread)"
@@ -3442,16 +3461,16 @@ msgstr[1] "%s (%d neprebrano)"
 msgstr[2] "%s (%d neprebrani)"
 msgstr[3] "%s (%d neprebrana)"
 
-#: ../src/empathy-chat-window.c:652
+#: ../src/empathy-chat-window.c:651
 #, c-format
 msgid "%s (and %u other)"
 msgid_plural "%s (and %u others)"
 msgstr[0] "%s (in %u drugih)"
-msgstr[1] "%s (in %u drugo)"
-msgstr[2] "%s (in %u drugi)"
-msgstr[3] "%s (in %u druga)"
+msgstr[1] "%s (in %u drug)"
+msgstr[2] "%s (in %u druga)"
+msgstr[3] "%s (in %u drugi)"
 
-#: ../src/empathy-chat-window.c:668
+#: ../src/empathy-chat-window.c:667
 #, c-format
 msgid "%s (%d unread from others)"
 msgid_plural "%s (%d unread from others)"
@@ -3460,7 +3479,7 @@ msgstr[1] "%s (%d neprebrano od drugih)"
 msgstr[2] "%s (%d neprebrani od drugih)"
 msgstr[3] "%s (%d neprebrana od drugih)"
 
-#: ../src/empathy-chat-window.c:677
+#: ../src/empathy-chat-window.c:676
 #, c-format
 msgid "%s (%d unread from all)"
 msgid_plural "%s (%d unread from all)"
@@ -3469,11 +3488,11 @@ msgstr[1] "%s (%d neprebrano od vseh)"
 msgstr[2] "%s (%d neprebrani od vseh)"
 msgstr[3] "%s (%d neprebrana od vseh)"
 
-#: ../src/empathy-chat-window.c:892
+#: ../src/empathy-chat-window.c:891
 msgid "SMS:"
 msgstr "SMS:"
 
-#: ../src/empathy-chat-window.c:902
+#: ../src/empathy-chat-window.c:901
 #, c-format
 msgid "Sending %d message"
 msgid_plural "Sending %d messages"
@@ -3482,7 +3501,7 @@ msgstr[1] "Pošiljanje %d sporočila"
 msgstr[2] "Pošiljanje %d sporočil"
 msgstr[3] "Pošiljanje %d sporočil"
 
-#: ../src/empathy-chat-window.c:924
+#: ../src/empathy-chat-window.c:923
 msgid "Typing a message."
 msgstr "Pisanje sporočila."
 
@@ -3568,7 +3587,7 @@ msgid "Incoming video call"
 msgstr "Dohodni video klic"
 
 #: ../src/empathy-event-manager.c:522
-#: ../src/empathy-call-window.c:1519
+#: ../src/empathy-call-window.c:1483
 msgid "Incoming call"
 msgstr "Dohodni klic"
 
@@ -3585,7 +3604,7 @@ msgstr "%s vas kliče. Ali se želite javiti?"
 #: ../src/empathy-event-manager.c:530
 #: ../src/empathy-event-manager.c:731
 #: ../src/empathy-event-manager.c:764
-#: ../src/empathy-call-window.c:1525
+#: ../src/empathy-call-window.c:1489
 #, c-format
 msgid "Incoming call from %s"
 msgstr "Dohodni klic od %s"
@@ -3605,7 +3624,7 @@ msgstr "_Odgovori z videom"
 
 #: ../src/empathy-event-manager.c:731
 #: ../src/empathy-event-manager.c:764
-#: ../src/empathy-call-window.c:1525
+#: ../src/empathy-call-window.c:1489
 #, c-format
 msgid "Incoming video call from %s"
 msgstr "Dohodni video klic od %s"
@@ -3649,7 +3668,7 @@ msgid "Incoming file transfer from %s"
 msgstr "Prihajajoč prenos datoteke od %s"
 
 #: ../src/empathy-event-manager.c:1146
-#: ../src/empathy-roster-window.c:374
+#: ../src/empathy-roster-window.c:373
 msgid "Password required"
 msgstr "Zahtevano geslo"
 
@@ -3794,87 +3813,87 @@ msgid "Import Accounts"
 msgstr "Uvozi račune"
 
 #. Translators: this is the header of a treeview column
-#: ../src/empathy-import-widget.c:316
+#: ../src/empathy-import-widget.c:303
 msgid "Import"
 msgstr "Uvozi"
 
-#: ../src/empathy-import-widget.c:325
+#: ../src/empathy-import-widget.c:312
 msgid "Protocol"
 msgstr "Protokol"
 
-#: ../src/empathy-import-widget.c:349
+#: ../src/empathy-import-widget.c:336
 msgid "Source"
 msgstr "Vir"
 
-#: ../src/empathy-roster-window.c:391
+#: ../src/empathy-roster-window.c:390
 msgid "Provide Password"
 msgstr "Vpis gesla"
 
-#: ../src/empathy-roster-window.c:397
+#: ../src/empathy-roster-window.c:396
 msgid "Disconnect"
 msgstr "Prekini povezavo"
 
-#: ../src/empathy-roster-window.c:657
+#: ../src/empathy-roster-window.c:656
 msgid "You need to setup an account to see contacts here."
 msgstr "Ustrezno je treba nastaviti račun za prikaz stikov."
 
-#: ../src/empathy-roster-window.c:673
+#: ../src/empathy-roster-window.c:672
 msgid "No match found"
 msgstr "Ni najdenih zadetkov."
 
-#: ../src/empathy-roster-window.c:783
+#: ../src/empathy-roster-window.c:782
 #, 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-roster-window.c:849
+#: ../src/empathy-roster-window.c:848
 msgid "Update software..."
 msgstr "Posodobitev programske opreme ..."
 
-#: ../src/empathy-roster-window.c:855
-#: ../src/empathy-roster-window.c:972
+#: ../src/empathy-roster-window.c:854
+#: ../src/empathy-roster-window.c:971
 msgid "Close"
 msgstr "Zapri"
 
-#: ../src/empathy-roster-window.c:960
+#: ../src/empathy-roster-window.c:959
 msgid "Reconnect"
 msgstr "Ponovno se poveži"
 
-#: ../src/empathy-roster-window.c:966
+#: ../src/empathy-roster-window.c:965
 msgid "Edit Account"
 msgstr "Uredi račun"
 
 #. Translators: this string will be something like:
 #. * Top up My Account ($1.23)..."
-#: ../src/empathy-roster-window.c:1110
+#: ../src/empathy-roster-window.c:1109
 #, c-format
 msgid "Top up %s (%s)..."
 msgstr "Povišaj %s (%s) ..."
 
-#: ../src/empathy-roster-window.c:1156
+#: ../src/empathy-roster-window.c:1155
 msgid "Top up account credit"
 msgstr "Povišaj znesek na računu"
 
 #. top up button
-#: ../src/empathy-roster-window.c:1228
+#: ../src/empathy-roster-window.c:1227
 msgid "Top Up..."
 msgstr "Povišaj ..."
 
-#: ../src/empathy-roster-window.c:1952
+#: ../src/empathy-roster-window.c:1951
 msgid "Contact"
 msgstr "Stik"
 
-#: ../src/empathy-roster-window.c:2150
+#: ../src/empathy-roster-window.c:2149
 msgid "You need to enable one of your accounts to see contacts here."
 msgstr "Omogočiti je treba enega izmed računov za prikaz stikov."
 
 #. translators: argument is an account name
-#: ../src/empathy-roster-window.c:2158
+#: ../src/empathy-roster-window.c:2157
 #, c-format
 msgid "You need to enable %s to see contacts here."
 msgstr "Omogočiti je treba račun %s za prikaz stikov."
 
-#: ../src/empathy-roster-window.c:2460
+#: ../src/empathy-roster-window.c:2459
 msgid "Contact List"
 msgstr "Seznam stikov"
 
@@ -3890,7 +3909,7 @@ msgstr "_Nov pogovor ..."
 #: ../src/empathy-roster-window-menubar.ui.h:3
 #: ../src/empathy-status-icon.ui.h:3
 msgid "New _Call…"
-msgstr "Nov _klic ..."
+msgstr "Nov k_lic ..."
 
 #: ../src/empathy-roster-window-menubar.ui.h:6
 msgid "_Search for Contacts…"
@@ -3902,11 +3921,11 @@ msgstr "Prenosi _datotek"
 
 #: ../src/empathy-roster-window-menubar.ui.h:8
 msgid "_Offline Contacts"
-msgstr "Nepri_sotni stiki"
+msgstr "_Neprisotni stiki"
 
 #: ../src/empathy-roster-window-menubar.ui.h:9
 msgid "Show P_rotocols"
-msgstr "Pokaži _protokole"
+msgstr "Pokaži p_rotokole"
 
 #: ../src/empathy-roster-window-menubar.ui.h:10
 msgid "Credit Balance"
@@ -3950,7 +3969,7 @@ msgstr "_Običajna velikost"
 
 #: ../src/empathy-roster-window-menubar.ui.h:22
 msgid "_Compact Size"
-msgstr "_Skrčen pogled"
+msgstr "S_krčen pogled"
 
 #: ../src/empathy-roster-window-menubar.ui.h:23
 msgid "_Room"
@@ -3962,7 +3981,7 @@ msgstr "_Pridruži se"
 
 #: ../src/empathy-roster-window-menubar.ui.h:25
 msgid "Join _Favorites"
-msgstr "Pridruži se _priljubljenim"
+msgstr "Pridruži se p_riljubljenim"
 
 #: ../src/empathy-roster-window-menubar.ui.h:26
 msgid "Manage Favorites"
@@ -3978,7 +3997,7 @@ msgstr "Člani"
 
 #. Translators: Room/Join's roomlist tooltip. Parameters are a channel name,
 #. yes/no, yes/no and a number.
-#: ../src/empathy-new-chatroom-dialog.c:637
+#: ../src/empathy-new-chatroom-dialog.c:636
 #, c-format
 msgid ""
 "%s\n"
@@ -3991,21 +4010,21 @@ msgstr ""
 "Zahtevano geslo: %s\n"
 "Člani: %s"
 
+#: ../src/empathy-new-chatroom-dialog.c:638
 #: ../src/empathy-new-chatroom-dialog.c:639
-#: ../src/empathy-new-chatroom-dialog.c:640
 msgid "Yes"
 msgstr "Da"
 
+#: ../src/empathy-new-chatroom-dialog.c:638
 #: ../src/empathy-new-chatroom-dialog.c:639
-#: ../src/empathy-new-chatroom-dialog.c:640
 msgid "No"
 msgstr "Ne"
 
-#: ../src/empathy-new-chatroom-dialog.c:668
+#: ../src/empathy-new-chatroom-dialog.c:666
 msgid "Could not start room listing"
 msgstr "Seznama klepetalnic ni bilo mogoče začeti"
 
-#: ../src/empathy-new-chatroom-dialog.c:678
+#: ../src/empathy-new-chatroom-dialog.c:676
 msgid "Could not stop room listing"
 msgstr "Seznama klepetalnic ni bilo mogoče dokončati"
 
@@ -4066,46 +4085,46 @@ msgid "Language"
 msgstr "Jezik"
 
 #. translators: Contact name for the chat theme preview
-#: ../src/empathy-preferences.c:726
+#: ../src/empathy-preferences.c:724
 msgid "Juliet"
 msgstr "Julija"
 
 #. translators: Contact name for the chat theme preview
-#: ../src/empathy-preferences.c:733
+#: ../src/empathy-preferences.c:731
 msgid "Romeo"
 msgstr "Romeo"
 
 #. translators: Quote from Romeo & Julier, for chat theme preview
-#: ../src/empathy-preferences.c:739
+#: ../src/empathy-preferences.c:737
 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:743
+#: ../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:746
+#: ../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:749
+#: ../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:752
+#: ../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:755
+#: ../src/empathy-preferences.c:753
 msgid "Juliet has disconnected"
 msgstr "Julija je prekinila povezavo."
 
-#: ../src/empathy-preferences.c:1159
+#: ../src/empathy-preferences.c:1157
 msgid "Preferences"
 msgstr "Možnosti"
 
@@ -4115,7 +4134,7 @@ msgstr "Pokaži _smeške kot slike"
 
 #: ../src/empathy-preferences.ui.h:2
 msgid "Show contact _list in rooms"
-msgstr "Pokaži _seznam stikov v klepetalnicah"
+msgstr "Pokaži s_eznam stikov v klepetalnicah"
 
 #: ../src/empathy-preferences.ui.h:3
 msgid "Appearance"
@@ -4127,11 +4146,11 @@ msgstr "Začni klepet v:"
 
 #: ../src/empathy-preferences.ui.h:5
 msgid "new ta_bs"
-msgstr "novi _zavihki"
+msgstr "novih _zavihkih"
 
 #: ../src/empathy-preferences.ui.h:6
 msgid "new _windows"
-msgstr "nova _okna"
+msgstr "novih _oknih"
 
 #: ../src/empathy-preferences.ui.h:7
 msgid "Display incoming events in the notification area"
@@ -4159,7 +4178,7 @@ msgstr "_Omogoči obvestila v oblačkih"
 
 #: ../src/empathy-preferences.ui.h:13
 msgid "Disable notifications when _away or busy"
-msgstr "Onemogoči obvestila  ob _odsotnosti ali zaposlenosti"
+msgstr "Onemogoči obvestila ob odsotnosti ali _zaposlenosti"
 
 #: ../src/empathy-preferences.ui.h:14
 msgid "Enable notifications when the _chat is not focused"
@@ -4199,7 +4218,7 @@ msgstr "Uporabi _podporo odpravljanja odmevov za izboljšanje kakovosti klica."
 
 #: ../src/empathy-preferences.ui.h:23
 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 "Odpravljanje odmevov omogoči čistejši zvok glasu med klicanjem, vendar pa se lahko na nekaterih sistemih pojavijo težave. V primeru, da med pogovorom zaslišite nenavadne zvoke ali šume, onemogočite odpravljanje odmevov in ponovno vzpostavite klic."
+msgstr "Odpravljanje odmevov omogoči čistejši zvok glasu med klicanjem, vendar pa se lahko na nekaterih sistemih pojavijo težave. V primeru da med pogovorom zaslišite nenavadne zvoke ali šume, onemogočite odpravljanje odmevov in ponovno vzpostavite klic."
 
 #: ../src/empathy-preferences.ui.h:26
 msgid "_Publish location to my contacts"
@@ -4330,11 +4349,6 @@ msgstr "Povezava odložišča Pastebin"
 msgid "Pastebin response"
 msgstr "Odziv odložišča Pastebin"
 
-#: ../src/empathy-debug-window.c:1680
-#, c-format
-msgid "%s"
-msgstr "%s"
-
 #: ../src/empathy-debug-window.c:1683
 msgid "Data too large for a single paste. Please save logs to file."
 msgstr "Preveč je podatkov za enkratno lepljenje. Beleženje dnevnika je priporočljivo shraniti v datoteko."
@@ -4400,16 +4414,16 @@ 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:202
-#: ../src/empathy-invite-participant-dialog.c:230
+#: ../src/empathy-invite-participant-dialog.c:200
+#: ../src/empathy-invite-participant-dialog.c:228
 msgid "Invite Participant"
 msgstr "Povabi udeležence"
 
-#: ../src/empathy-invite-participant-dialog.c:203
+#: ../src/empathy-invite-participant-dialog.c:201
 msgid "Choose a contact to invite into the conversation:"
 msgstr "Izbor stika za povabilo v pogovor:"
 
-#: ../src/empathy-invite-participant-dialog.c:226
+#: ../src/empathy-invite-participant-dialog.c:224
 msgid "Invite"
 msgstr "Povabi"
 
@@ -4433,7 +4447,7 @@ msgstr "<id-računa>"
 msgid "- Empathy Accounts"
 msgstr "- Empathy računi"
 
-#: ../src/empathy-accounts.c:231
+#: ../src/empathy-accounts.c:230
 msgid "Empathy Accounts"
 msgstr "Empathy računi"
 
@@ -4445,47 +4459,47 @@ msgstr "Pokaži posebno storitev"
 msgid "- Empathy Debugger"
 msgstr "- razhroščevalnik Empathy"
 
-#: ../src/empathy-debugger.c:113
+#: ../src/empathy-debugger.c:112
 msgid "Empathy Debugger"
 msgstr "Empathy razhroščevalnik"
 
-#: ../src/empathy-chat.c:109
+#: ../src/empathy-chat.c:106
 msgid "- Empathy Chat Client"
 msgstr "- sporočilnik Empathy"
 
-#: ../src/empathy-notifications-approver.c:189
+#: ../src/empathy-notifications-approver.c:190
 msgid "Respond"
 msgstr "Odgovori"
 
-#: ../src/empathy-notifications-approver.c:203
-#: ../src/empathy-call-window.c:1529
+#: ../src/empathy-notifications-approver.c:204
+#: ../src/empathy-call-window.c:1493
 msgid "Reject"
 msgstr "Zavrni"
 
-#: ../src/empathy-notifications-approver.c:208
-#: ../src/empathy-notifications-approver.c:213
-#: ../src/empathy-call-window.c:1530
+#: ../src/empathy-notifications-approver.c:209
+#: ../src/empathy-notifications-approver.c:214
+#: ../src/empathy-call-window.c:1494
 msgid "Answer"
 msgstr "Odgovori"
 
-#: ../src/empathy-notifications-approver.c:213
+#: ../src/empathy-notifications-approver.c:214
 msgid "Answer with video"
 msgstr "Odgovori z videom"
 
-#: ../src/empathy-notifications-approver.c:221
-#: ../src/empathy-notifications-approver.c:231
+#: ../src/empathy-notifications-approver.c:222
+#: ../src/empathy-notifications-approver.c:232
 msgid "Decline"
 msgstr "Odkloni"
 
-#: ../src/empathy-notifications-approver.c:225
-#: ../src/empathy-notifications-approver.c:236
+#: ../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:246
+#: ../src/empathy-notifications-approver.c:247
 msgid "Provide"
 msgstr "Zagotovi"
 
@@ -4496,39 +4510,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:1124
 #: ../src/empathy-call-window.c:1140
-#: ../src/empathy-call-window.c:1162
 msgid "i"
 msgstr "i"
 
-#: ../src/empathy-call-window.c:2888
+#: ../src/empathy-call-window.c:2860
 msgid "On hold"
 msgstr "Zadržano"
 
-#: ../src/empathy-call-window.c:2891
+#: ../src/empathy-call-window.c:2863
 msgid "Mute"
 msgstr "Utišaj"
 
-#: ../src/empathy-call-window.c:2893
+#: ../src/empathy-call-window.c:2865
 msgid "Duration"
 msgstr "Trajanje"
 
 #. Translators: 'status - minutes:seconds' the caller has been connected
-#: ../src/empathy-call-window.c:2896
+#: ../src/empathy-call-window.c:2868
 #, c-format
 msgid "%s — %d:%02dm"
 msgstr "%s — %d:%02dm"
 
-#: ../src/empathy-call-window.c:3166
+#: ../src/empathy-call-window.c:3138
 #, c-format
 msgid "Your current balance is %s."
 msgstr "Trenutno stanje je %s."
 
-#: ../src/empathy-call-window.c:3170
+#: ../src/empathy-call-window.c:3142
 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:3172
+#: ../src/empathy-call-window.c:3144
 msgid "Top Up"
 msgstr "Povišaj"
 
@@ -4550,12 +4564,21 @@ msgstr "Uporabniki v bližini"
 
 #: ../libempathy-gtk/empathy-local-xmpp-assistant-widget.c:150
 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."
-msgstr "Program Empathy lahko samodejno odkrije in izmenjuje podatke z uporabniki v istem omrežju. V primeru, da želite uporabljati to možnost, preverite spodnje podatke."
+msgstr "Program Empathy lahko samodejno odkrije in izmenjuje podatke z uporabniki v istem omrežju. V primeru da želite uporabljati to možnost, preverite spodnje podatke."
 
 #: ../libempathy-gtk/empathy-local-xmpp-assistant-widget.c:183
 msgid "You can change these details later or disable this feature by choosing <span style=\"italic\">Edit → Accounts</span> in the Contact List."
 msgstr "Te podrobnosti je mogoče spreminjati in onemogočiti tudi kasneje preko menija <span style=\"italic\">Uredi → Računi</span> v seznamu stikov."
 
+#~ msgid "_Enable"
+#~ msgstr "_Omogoči"
+
+#~ msgid "_Disable"
+#~ msgstr "O_nemogoči"
+
+#~ msgid "%s"
+#~ msgstr "%s"
+
 #~ msgid "Select contacts to link"
 #~ msgstr "Izbor stikov za povezovanje"
 
@@ -4847,9 +4870,6 @@ msgstr "Te podrobnosti je mogoče spreminjati in onemogočiti tudi kasneje preko
 #~ msgid "_For:"
 #~ msgstr "_Za:"
 
-#~ msgid "_Enabled"
-#~ msgstr "_Omogoči"
-
 #~ msgid "%s is now offline."
 #~ msgstr "%s ni povezan."
 
index 856eae7fd911389894bc44520f3313fb5c92e01c..b57cad2113ab8c0ce4ab8077b720f18d97fdf364 100644 (file)
--- a/po/te.po
+++ b/po/te.po
@@ -1,20 +1,19 @@
 # translation of empathy.master.te.po to Telugu
-# Copyright (C) 2011, 2012 Swecha localisation Team
+# Copyright (C) 2011, 2012 Swecha Telugu localisation Team <localization@swecha.net>
 # This file is distributed under the same license as the empathy package.
 #
-#
 # Krishna Babu K <kkrothap@redhat.com>, 2009.2011
 # Praveen Illa <mail2ipn@gmail.com>, 2011.
 # Sasi Bhushan Boddepalli <Sasi@swecha.net>,2011, 2012
-# Naveen kandimala <naveen@swecha.net>, 2012
-# GVS.Giri (Swecha Team) <gvs.giri947@gmail.com>,2012, 2012.
+# Naveen kandimala(Swecha) <naveen@swecha.net>, 2012
+# GVS.Giri (Swecha Team) <gvs.giri947@gmail.com>,2012.
 msgid ""
 msgstr ""
 "Project-Id-Version: empathy.master.te\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
 "product=empathy&keywords=I18N+L10N&component=General\n"
-"POT-Creation-Date: 2012-03-24 07:45+0000\n"
-"PO-Revision-Date: 2012-03-24 14:54+0530\n"
+"POT-Creation-Date: 2012-04-16 18:23+0000\n"
+"PO-Revision-Date: 2012-04-17 18:24+0530\n"
 "Last-Translator: Sasi Bhushan Boddepalli <sasi@swecha.net>\n"
 "Language-Team: Telugu <indlinux-telugu@lists.sourceforge.net>\n"
 "MIME-Version: 1.0\n"
@@ -42,7 +41,7 @@ msgstr "గూగుల్ టాక్, ఫేస్‌బుక్, MSN వం
 
 #. Tweak the dialog
 #: ../data/empathy-accounts.desktop.in.in.h:1
-#: ../src/empathy-accounts-dialog.c:2513
+#: ../src/empathy-accounts-dialog.c:2527
 msgid "Messaging and VoIP Accounts"
 msgstr "సందేశకము మరియు VoIP ఖాతాలు"
 
@@ -558,18 +557,18 @@ msgstr "ఎంచుకున్న ఫైల్ సాధారణ ఫైల్
 msgid "The selected file is empty"
 msgstr "ఎంచుకున్న ఫైల్ ఖాళీది"
 
-#: ../libempathy/empathy-message.c:415 ../src/empathy-call-observer.c:129
+#: ../libempathy/empathy-message.c:407 ../src/empathy-call-observer.c:129
 #, c-format
 msgid "Missed call from %s"
 msgstr "%s నుండి మిస్సుడ్ కాల్ వచ్చింది"
 
 #. Translators: this is an outgoing call, e.g. 'Called Alice'
-#: ../libempathy/empathy-message.c:419
+#: ../libempathy/empathy-message.c:411
 #, c-format
 msgid "Called %s"
 msgstr "%s పిలవబడినది"
 
-#: ../libempathy/empathy-message.c:422
+#: ../libempathy/empathy-message.c:414
 #, c-format
 msgid "Call from %s"
 msgstr "%s నుపిలువుము"
@@ -801,7 +800,7 @@ msgid "All accounts"
 msgstr "ఖాతాలు అన్నియు"
 
 #: ../libempathy-gtk/empathy-account-widget.c:682
-#: ../src/empathy-import-widget.c:336
+#: ../src/empathy-import-widget.c:323
 msgid "Account"
 msgstr "ఖాతా"
 
@@ -838,11 +837,11 @@ msgstr "అనువర్తించు (_p)"
 msgid "L_og in"
 msgstr "ప్రవేశించు (_J)"
 
-#: ../libempathy-gtk/empathy-account-widget.c:1812
+#: ../libempathy-gtk/empathy-account-widget.c:1810
 msgid "This account already exists on the server"
 msgstr "సేవకములో ఈ ఖాతా ఇంతకుముందే ఉన్నది"
 
-#: ../libempathy-gtk/empathy-account-widget.c:1816
+#: ../libempathy-gtk/empathy-account-widget.c:1814
 msgid "Create a new account on the server"
 msgstr "ఈ సేవకము పై ఒక కొత్త ఖాతాను సృష్టించు"
 
@@ -851,19 +850,19 @@ msgstr "ఈ సేవకము పై ఒక కొత్త ఖాతాను
 #. * 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:2241
+#: ../libempathy-gtk/empathy-account-widget.c:2236
 #, 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:2267
+#: ../libempathy-gtk/empathy-account-widget.c:2262
 #, c-format
 msgid "%s Account"
 msgstr "%s ఖాతా"
 
-#: ../libempathy-gtk/empathy-account-widget.c:2271
+#: ../libempathy-gtk/empathy-account-widget.c:2266
 msgid "New account"
 msgstr "కొత్త ఖాతా"
 
@@ -923,7 +922,7 @@ msgstr "సేవకము (_S):"
 #: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:23
 #: ../libempathy-gtk/empathy-account-widget-msn.ui.h:7
 #: ../libempathy-gtk/empathy-account-widget-local-xmpp.ui.h:7
-#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:21
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:22
 #: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:9
 msgid "Advanced"
 msgstr "అధునాతన"
@@ -941,7 +940,7 @@ msgstr "మీ AIM సంకేతపదము ఏమిటి?"
 #: ../libempathy-gtk/empathy-account-widget-icq.ui.h:11
 #: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:7
 #: ../libempathy-gtk/empathy-account-widget-msn.ui.h:10
-#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:24
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:25
 msgid "Remember Password"
 msgstr "సంకేతపదం గుర్తించుకొను"
 
@@ -985,36 +984,32 @@ msgstr "మీ ICQ UIN ఏమిటి?"
 msgid "What is your ICQ password?"
 msgstr "మీ ICQ సంకేతపదము ఏమిటి?"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.c:206
-#: ../libempathy-gtk/empathy-account-widget-sip.c:239
+#: ../libempathy-gtk/empathy-account-widget-sip.c:207
+#: ../libempathy-gtk/empathy-account-widget-sip.c:240
 msgid "Auto"
 msgstr "స్వయం"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.c:209
+#: ../libempathy-gtk/empathy-account-widget-sip.c:210
 msgid "UDP"
 msgstr "UDP"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.c:212
+#: ../libempathy-gtk/empathy-account-widget-sip.c:213
 msgid "TCP"
 msgstr "TCP"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.c:215
+#: ../libempathy-gtk/empathy-account-widget-sip.c:216
 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:244
+#: ../libempathy-gtk/empathy-account-widget-sip.c:245
 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:249
+#: ../libempathy-gtk/empathy-account-widget-sip.c:250
 msgid "Options"
 msgstr "ఐచ్ఛికాలు"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.c:252
+#: ../libempathy-gtk/empathy-account-widget-sip.c:253
 msgid "None"
 msgstr "ఏదీకాదు"
 
@@ -1275,11 +1270,15 @@ msgstr "TLS దోషాలను విస్మరించు"
 msgid "Port:"
 msgstr "పోర్టు (_P):"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:22
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:21
+msgid "Local IP Address:"
+msgstr "స్థానిక IP చిరునామా: "
+
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:23
 msgid "What is your SIP login ID?"
 msgstr "మీ SIP ప్రవేశ ఐడి ఏమిటి?"
 
-#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:23
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:24
 msgid "What is your SIP account password?"
 msgstr "మీ SIP ఖాతా సంకేతపదం ఏమిటి?"
 
@@ -1365,63 +1364,63 @@ msgstr " అత్యవసర కాల్స్ ఈ నియమావళి 
 msgid "You don't have enough credit in order to place this call"
 msgstr "మీరు సంభాషించుటకు సరిపోయినంత రొక్కము లేదు"
 
-#: ../libempathy-gtk/empathy-chat.c:729
+#: ../libempathy-gtk/empathy-chat.c:727
 msgid "Failed to open private chat"
 msgstr "రహస్య చాట్‌ని తెరుచుటలో విఫలమైంది"
 
-#: ../libempathy-gtk/empathy-chat.c:787
+#: ../libempathy-gtk/empathy-chat.c:785
 msgid "Topic not supported on this conversation"
 msgstr "ఈ సంభాషణ పై విషయము సహకరించుట లేదు"
 
-#: ../libempathy-gtk/empathy-chat.c:793
+#: ../libempathy-gtk/empathy-chat.c:791
 msgid "You are not allowed to change the topic"
 msgstr "విషయమును మార్చుటకు మీరు అనుమతించబడరు"
 
-#: ../libempathy-gtk/empathy-chat.c:992
+#: ../libempathy-gtk/empathy-chat.c:990
 #, c-format
 msgid "“%s” is not a valid contact ID"
 msgstr "“%s” అనేది చెల్లని పరిచయపు ఐడి"
 
-#: ../libempathy-gtk/empathy-chat.c:1087
+#: ../libempathy-gtk/empathy-chat.c:1085
 msgid "/clear: clear all messages from the current conversation"
 msgstr "/clear: ప్రస్తుత సంభాషణలోని అన్ని సందేశాలను తుడిచివేయి"
 
-#: ../libempathy-gtk/empathy-chat.c:1090
+#: ../libempathy-gtk/empathy-chat.c:1088
 msgid "/topic <topic>: set the topic of the current conversation"
 msgstr "/topic <topic>: ప్రస్తుత సంభాషణ యొక్క విషయమును అమర్చు"
 
-#: ../libempathy-gtk/empathy-chat.c:1093
+#: ../libempathy-gtk/empathy-chat.c:1091
 msgid "/join <chat room ID>: join a new chat room"
 msgstr "/join <chat room ID>: ఒక కొత్త చాట్ గదిలో చేరు"
 
-#: ../libempathy-gtk/empathy-chat.c:1096
+#: ../libempathy-gtk/empathy-chat.c:1094
 msgid "/j <chat room ID>: join a new chat room"
 msgstr "/j <chat room ID>: ఒక కొత్త చాట్ గదిలో చేరు"
 
-#: ../libempathy-gtk/empathy-chat.c:1100
+#: ../libempathy-gtk/empathy-chat.c:1098
 msgid ""
 "/part [<chat room ID>] [<reason>]: leave the chat room, by default the "
 "current one"
 msgstr ""
 "/part [<chat room ID>] [<reason>]: ప్రస్తుతపు దానితో అప్రమేయముగా చాట్ గదిని వదిలివెళ్ళు"
 
-#: ../libempathy-gtk/empathy-chat.c:1104
+#: ../libempathy-gtk/empathy-chat.c:1102
 msgid "/query <contact ID> [<message>]: open a private chat"
 msgstr "/query <contact ID> [<message>]: ఒక గోప్య చాట్‌ని తెరువు"
 
-#: ../libempathy-gtk/empathy-chat.c:1107
+#: ../libempathy-gtk/empathy-chat.c:1105
 msgid "/msg <contact ID> <message>: open a private chat"
 msgstr "/msg <contact ID> <message>: ఒక గోప్య చాట్‌ని తెరువు"
 
-#: ../libempathy-gtk/empathy-chat.c:1110
+#: ../libempathy-gtk/empathy-chat.c:1108
 msgid "/nick <nickname>: change your nickname on the current server"
 msgstr "/nick <nickname>: ప్రస్తుత సేవకములో మీ మారుపేరుని మార్చు"
 
-#: ../libempathy-gtk/empathy-chat.c:1113
+#: ../libempathy-gtk/empathy-chat.c:1111
 msgid "/me <message>: send an ACTION message to the current conversation"
 msgstr "/me <message>:ప్రస్తుత సంభాషణకు ఒక ACTION సందేశాన్ని పంపేందుకు"
 
-#: ../libempathy-gtk/empathy-chat.c:1116
+#: ../libempathy-gtk/empathy-chat.c:1114
 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 "
@@ -1430,11 +1429,11 @@ msgstr ""
 "/say <message> : ప్రస్తుత సంభాషణకు <message> పంపండి. ఈ ఒక '/' తో మొదలయ్యే ఒక సందేశాన్ని "
 "పంపడానికి ఉపయోగిస్తారు. ఉదాహరణకు: \"/ చేరడానికి / చెప్పే ఒక కొత్త చాట్ రూమ్ చేరడానికి ఉపయోగిస్తారు\""
 
-#: ../libempathy-gtk/empathy-chat.c:1121
+#: ../libempathy-gtk/empathy-chat.c:1119
 msgid "/whois <contact ID>: display information about a contact"
 msgstr "/ WHOIS <contact ID>: ఒక పరిచయాన్ని గురించి ప్రదర్శన సమాచారం"
 
-#: ../libempathy-gtk/empathy-chat.c:1124
+#: ../libempathy-gtk/empathy-chat.c:1122
 msgid ""
 "/help [<command>]: show all supported commands. If <command> is defined, "
 "show its usage."
@@ -1442,126 +1441,126 @@ msgstr ""
 "/help [<command>]: సహకారము ఉన్న అన్ని ఆదేశాలను చూపిస్తుంది. ఒకవేళ <command> "
 "నిర్వచించబడినట్టయితే, దాని వాడుకని చూపించు."
 
-#: ../libempathy-gtk/empathy-chat.c:1143
+#: ../libempathy-gtk/empathy-chat.c:1141
 #, c-format
 msgid "Usage: %s"
 msgstr "వాడుక: %s"
 
-#: ../libempathy-gtk/empathy-chat.c:1188
+#: ../libempathy-gtk/empathy-chat.c:1186
 msgid "Unknown command"
 msgstr "తెలియని ఆదేశము"
 
-#: ../libempathy-gtk/empathy-chat.c:1314
+#: ../libempathy-gtk/empathy-chat.c:1312
 msgid "Unknown command; see /help for the available commands"
 msgstr "తెలియని ఆదేశము; అందుబాటులోవున్న ఆదేశముల కోసం /help చూడండి"
 
-#: ../libempathy-gtk/empathy-chat.c:1565
+#: ../libempathy-gtk/empathy-chat.c:1563
 msgid "insufficient balance to send message"
 msgstr "సందేశం పంపుటకు కావలసిన బ్యాలెన్స్ లేదు"
 
-#: ../libempathy-gtk/empathy-chat.c:1569 ../libempathy-gtk/empathy-chat.c:1583
-#: ../libempathy-gtk/empathy-chat.c:1646
+#: ../libempathy-gtk/empathy-chat.c:1567 ../libempathy-gtk/empathy-chat.c:1581
+#: ../libempathy-gtk/empathy-chat.c:1644
 #, c-format
 msgid "Error sending message '%s': %s"
 msgstr "'%s' సందేశం పంపుటలో దోషము: %s"
 
-#: ../libempathy-gtk/empathy-chat.c:1571 ../libempathy-gtk/empathy-chat.c:1588
-#: ../libempathy-gtk/empathy-chat.c:1650
+#: ../libempathy-gtk/empathy-chat.c:1569 ../libempathy-gtk/empathy-chat.c:1586
+#: ../libempathy-gtk/empathy-chat.c:1648
 #, 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:1577
+#: ../libempathy-gtk/empathy-chat.c:1575
 #, c-format
 msgid "insufficient balance to send message. <a href='%s'>Top up</a>."
 msgstr "సందేశం పంపుటకు కావలసినంత బ్యాలెన్స్ లేదు. <a href='%s'>Top up</a>."
 
-#: ../libempathy-gtk/empathy-chat.c:1617
+#: ../libempathy-gtk/empathy-chat.c:1615
 msgid "not capable"
 msgstr "సామర్ధ్యాన్ని కలిగి లేదు"
 
-#: ../libempathy-gtk/empathy-chat.c:1624
+#: ../libempathy-gtk/empathy-chat.c:1622
 msgid "offline"
 msgstr "ఆఫ్‌లైన్"
 
-#: ../libempathy-gtk/empathy-chat.c:1627
+#: ../libempathy-gtk/empathy-chat.c:1625
 msgid "invalid contact"
 msgstr "చెల్లని పరిచయం"
 
-#: ../libempathy-gtk/empathy-chat.c:1630
+#: ../libempathy-gtk/empathy-chat.c:1628
 msgid "permission denied"
 msgstr "అనుమతి నిరాకరించబడింది"
 
-#: ../libempathy-gtk/empathy-chat.c:1633
+#: ../libempathy-gtk/empathy-chat.c:1631
 msgid "too long message"
 msgstr "మరీ పొడవైన సందేశము"
 
-#: ../libempathy-gtk/empathy-chat.c:1636
+#: ../libempathy-gtk/empathy-chat.c:1634
 msgid "not implemented"
 msgstr "అమలుపరుచబడలేదు"
 
-#: ../libempathy-gtk/empathy-chat.c:1640
+#: ../libempathy-gtk/empathy-chat.c:1638
 msgid "unknown"
 msgstr "తెలియదు"
 
-#: ../libempathy-gtk/empathy-chat.c:1707 ../src/empathy-chat-window.c:920
+#: ../libempathy-gtk/empathy-chat.c:1705 ../src/empathy-chat-window.c:919
 msgid "Topic:"
 msgstr "విషయం:"
 
-#: ../libempathy-gtk/empathy-chat.c:1722
+#: ../libempathy-gtk/empathy-chat.c:1720
 #, c-format
 msgid "Topic set to: %s"
 msgstr "విషయం దీనికి అమర్చబడింది: %s"
 
-#: ../libempathy-gtk/empathy-chat.c:1724
+#: ../libempathy-gtk/empathy-chat.c:1722
 #, c-format
 msgid "Topic set by %s to: %s"
 msgstr "విషయం దీనికి అమర్చబడింది %s: %s"
 
 #. No need to display this 'event' is no topic can be defined anyway
-#: ../libempathy-gtk/empathy-chat.c:1729
+#: ../libempathy-gtk/empathy-chat.c:1727
 msgid "No topic defined"
 msgstr "ఏ విషయం నిర్వచించిలేదు"
 
-#: ../libempathy-gtk/empathy-chat.c:2245
+#: ../libempathy-gtk/empathy-chat.c:2243
 msgid "(No Suggestions)"
 msgstr "(ఏ సూచనలు లేవు)"
 
 #. translators: %s is the selected word
-#: ../libempathy-gtk/empathy-chat.c:2313
+#: ../libempathy-gtk/empathy-chat.c:2311
 #, 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:2350
+#: ../libempathy-gtk/empathy-chat.c:2348
 #, c-format
 msgid "Add '%s' to %s Dictionary"
 msgstr "'%s'ని %s నిఘంటువుకి చేర్చు"
 
-#: ../libempathy-gtk/empathy-chat.c:2420
+#: ../libempathy-gtk/empathy-chat.c:2418
 msgid "Insert Smiley"
 msgstr "చిరునవ్వును చేర్చు"
 
 #. send button
-#: ../libempathy-gtk/empathy-chat.c:2438
+#: ../libempathy-gtk/empathy-chat.c:2436
 #: ../libempathy-gtk/empathy-ui-utils.c:1880
 msgid "_Send"
 msgstr "పంపు (_S)"
 
 #. Spelling suggestions
-#: ../libempathy-gtk/empathy-chat.c:2495
+#: ../libempathy-gtk/empathy-chat.c:2493
 msgid "_Spelling Suggestions"
 msgstr "అక్షరక్రమం సూచనలు (_S)"
 
-#: ../libempathy-gtk/empathy-chat.c:2584
+#: ../libempathy-gtk/empathy-chat.c:2582
 msgid "Failed to retrieve recent logs"
 msgstr "ఇటీవలి చిట్టాలను పొందుటలో విఫలమైంది"
 
-#: ../libempathy-gtk/empathy-chat.c:2723
+#: ../libempathy-gtk/empathy-chat.c:2721
 #, c-format
 msgid "%s has disconnected"
 msgstr "%s అననుసంధానించారు"
@@ -1569,12 +1568,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:2730
+#: ../libempathy-gtk/empathy-chat.c:2728
 #, c-format
 msgid "%1$s was kicked by %2$s"
 msgstr "%1$s అనునది %2$s చేత బయటకు తోసివేయబడ్డారు"
 
-#: ../libempathy-gtk/empathy-chat.c:2733
+#: ../libempathy-gtk/empathy-chat.c:2731
 #, c-format
 msgid "%s was kicked"
 msgstr "%s తోసివేయబడ్డారు"
@@ -1582,17 +1581,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:2741
+#: ../libempathy-gtk/empathy-chat.c:2739
 #, c-format
 msgid "%1$s was banned by %2$s"
 msgstr "%1$s అనువారు %2$s చేత నిషేధించబడ్డారు"
 
-#: ../libempathy-gtk/empathy-chat.c:2744
+#: ../libempathy-gtk/empathy-chat.c:2742
 #, c-format
 msgid "%s was banned"
 msgstr "%s నిషేధించబడ్డారు"
 
-#: ../libempathy-gtk/empathy-chat.c:2748
+#: ../libempathy-gtk/empathy-chat.c:2746
 #, c-format
 msgid "%s has left the room"
 msgstr "%s గదిని వదిలివెళ్ళారు"
@@ -1602,17 +1601,17 @@ msgstr "%s గదిని వదిలివెళ్ళారు"
 #. * given by the user living the room. If this poses a problem,
 #. * please let us know. :-)
 #.
-#: ../libempathy-gtk/empathy-chat.c:2757
+#: ../libempathy-gtk/empathy-chat.c:2755
 #, c-format
 msgid " (%s)"
 msgstr " (%s)"
 
-#: ../libempathy-gtk/empathy-chat.c:2782
+#: ../libempathy-gtk/empathy-chat.c:2780
 #, c-format
 msgid "%s has joined the room"
 msgstr "%s గదిలో చేరారు"
 
-#: ../libempathy-gtk/empathy-chat.c:2807
+#: ../libempathy-gtk/empathy-chat.c:2805
 #, c-format
 msgid "%s is now known as %s"
 msgstr "%s ఇప్పుడు %s వలె అయినారు"
@@ -1620,55 +1619,55 @@ 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:2994
+#: ../libempathy-gtk/empathy-chat.c:2992
 #: ../src/empathy-streamed-media-window.c:1888
-#: ../src/empathy-event-manager.c:1279 ../src/empathy-call-window.c:1502
-#: ../src/empathy-call-window.c:1552 ../src/empathy-call-window.c:2590
+#: ../src/empathy-event-manager.c:1279 ../src/empathy-call-window.c:1466
+#: ../src/empathy-call-window.c:1516 ../src/empathy-call-window.c:2562
 msgid "Disconnected"
 msgstr "అననుసంధానించబడ్డారు"
 
 #. Add message
-#: ../libempathy-gtk/empathy-chat.c:3658
+#: ../libempathy-gtk/empathy-chat.c:3656
 msgid "Would you like to store this password?"
 msgstr "ఈ సంకేతపదమును భద్రపరచాలనుకుంటున్నారా?"
 
-#: ../libempathy-gtk/empathy-chat.c:3664
+#: ../libempathy-gtk/empathy-chat.c:3662
 msgid "Remember"
 msgstr "గుర్తించుకొను"
 
-#: ../libempathy-gtk/empathy-chat.c:3674
+#: ../libempathy-gtk/empathy-chat.c:3672
 msgid "Not now"
 msgstr "ఇప్పుడు కాదు"
 
-#: ../libempathy-gtk/empathy-chat.c:3718
+#: ../libempathy-gtk/empathy-chat.c:3716
 #: ../libempathy-gtk/empathy-bad-password-dialog.c:142
 msgid "Retry"
 msgstr "మరలా ప్రయత్నించు"
 
-#: ../libempathy-gtk/empathy-chat.c:3722
+#: ../libempathy-gtk/empathy-chat.c:3720
 msgid "Wrong password; please try again:"
 msgstr "సంకేతపదం తప్పు; దయచేసి మళ్ళీ ప్రయత్నించండి:"
 
 #. Add message
-#: ../libempathy-gtk/empathy-chat.c:3852
+#: ../libempathy-gtk/empathy-chat.c:3850
 msgid "This room is protected by a password:"
 msgstr "ఈ గది సంకేతపదముతో రక్షణ కలిగివుంది:"
 
-#: ../libempathy-gtk/empathy-chat.c:3879
+#: ../libempathy-gtk/empathy-chat.c:3877
 msgid "Join"
 msgstr "చేరు"
 
-#: ../libempathy-gtk/empathy-chat.c:4071 ../src/empathy-event-manager.c:1300
+#: ../libempathy-gtk/empathy-chat.c:4069 ../src/empathy-event-manager.c:1300
 msgid "Connected"
 msgstr "అనుసంధానించబడ్డారు"
 
-#: ../libempathy-gtk/empathy-chat.c:4126
+#: ../libempathy-gtk/empathy-chat.c:4124
 msgid "Conversation"
 msgstr "సంభాషణ"
 
 #. Translators: this string is a something like
 #. * "Escher Cat (SMS)"
-#: ../libempathy-gtk/empathy-chat.c:4131
+#: ../libempathy-gtk/empathy-chat.c:4129
 #, c-format
 msgid "%s (SMS)"
 msgstr "%s (SMS)"
@@ -1699,7 +1698,7 @@ msgstr "నిరోధించబడిన పరిచయాలను సవ
 
 #. Account and Identifier
 #: ../libempathy-gtk/empathy-contact-blocking-dialog.ui.h:1
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:506
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:503
 #: ../libempathy-gtk/empathy-contact-widget.ui.h:1
 #: ../libempathy-gtk/empathy-individual-widget.c:1474
 #: ../src/empathy-chatrooms-window.ui.h:2
@@ -1771,157 +1770,157 @@ msgid "Decide _Later"
 msgstr "తర్వాత నిర్ణయిస్తాను (_L)"
 
 #. Title
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:499
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:496
 msgid "Search contacts"
 msgstr "పరిచయాలను వెతుకు"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:529
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:526
 msgid "Search: "
 msgstr "వెతుకు: "
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:587
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:584
 msgid "_Add Contact"
 msgstr "పరిచయాన్ని జతచేయి...(_A)"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:605
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:602
 msgid "No contacts found"
 msgstr "ఏ పరిచయాలు కనపడలేదు"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:621
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:618
 msgid "Your message introducing yourself:"
 msgstr "మీ సందేశం మిమ్మల్ని  పరిచయం చెస్తుంది:"
 
-#: ../libempathy-gtk/empathy-contact-search-dialog.c:629
+#: ../libempathy-gtk/empathy-contact-search-dialog.c:626
 msgid "Please let me see when you're online. Thanks!"
 msgstr "మీరు ఆన్లైన్ ఉన్నప్పుడు నన్ను చూడండి తెలియచేయండి. ధన్యవాదాలు!"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:567
+#: ../libempathy-gtk/empathy-contact-widget.c:566
 #: ../libempathy-gtk/empathy-individual-widget.c:304
 msgid "Channels:"
 msgstr "ఛానళ్ళు:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:747
+#: ../libempathy-gtk/empathy-contact-widget.c:746
 #: ../libempathy-gtk/empathy-individual-widget.c:455
 msgid "Country ISO Code:"
 msgstr "దేశము ISO కోడు:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:749
+#: ../libempathy-gtk/empathy-contact-widget.c:748
 #: ../libempathy-gtk/empathy-individual-widget.c:457
 msgid "Country:"
 msgstr "దేశము:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:751
+#: ../libempathy-gtk/empathy-contact-widget.c:750
 #: ../libempathy-gtk/empathy-individual-widget.c:459
 msgid "State:"
 msgstr "రాష్ట్రము:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:753
+#: ../libempathy-gtk/empathy-contact-widget.c:752
 #: ../libempathy-gtk/empathy-individual-widget.c:461
 msgid "City:"
 msgstr "పట్టణము:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:755
+#: ../libempathy-gtk/empathy-contact-widget.c:754
 #: ../libempathy-gtk/empathy-individual-widget.c:463
 msgid "Area:"
 msgstr "ప్రాంతము:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:757
+#: ../libempathy-gtk/empathy-contact-widget.c:756
 #: ../libempathy-gtk/empathy-individual-widget.c:465
 msgid "Postal Code:"
 msgstr "పోస్టల్ కోడ్:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:759
+#: ../libempathy-gtk/empathy-contact-widget.c:758
 #: ../libempathy-gtk/empathy-individual-widget.c:467
 msgid "Street:"
 msgstr "వీధి:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:761
+#: ../libempathy-gtk/empathy-contact-widget.c:760
 #: ../libempathy-gtk/empathy-individual-widget.c:469
 msgid "Building:"
 msgstr "భవనము:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:763
+#: ../libempathy-gtk/empathy-contact-widget.c:762
 #: ../libempathy-gtk/empathy-individual-widget.c:471
 msgid "Floor:"
 msgstr "అంతస్థు:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:765
+#: ../libempathy-gtk/empathy-contact-widget.c:764
 #: ../libempathy-gtk/empathy-individual-widget.c:473
 msgid "Room:"
 msgstr "గది:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:767
+#: ../libempathy-gtk/empathy-contact-widget.c:766
 #: ../libempathy-gtk/empathy-individual-widget.c:475
 msgid "Text:"
 msgstr "పాఠ్యము:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:769
+#: ../libempathy-gtk/empathy-contact-widget.c:768
 #: ../libempathy-gtk/empathy-individual-widget.c:477
 msgid "Description:"
 msgstr "వివరణ:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:771
+#: ../libempathy-gtk/empathy-contact-widget.c:770
 #: ../libempathy-gtk/empathy-individual-widget.c:479
 msgid "URI:"
 msgstr "URI:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:773
+#: ../libempathy-gtk/empathy-contact-widget.c:772
 #: ../libempathy-gtk/empathy-individual-widget.c:481
 msgid "Accuracy Level:"
 msgstr "ఖచ్చితత్వ స్థాయి:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:775
+#: ../libempathy-gtk/empathy-contact-widget.c:774
 #: ../libempathy-gtk/empathy-individual-widget.c:483
 msgid "Error:"
 msgstr "దోషము:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:777
+#: ../libempathy-gtk/empathy-contact-widget.c:776
 #: ../libempathy-gtk/empathy-individual-widget.c:485
 msgid "Vertical Error (meters):"
 msgstr "నిలువు దోషము (మీటర్లు):"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:779
+#: ../libempathy-gtk/empathy-contact-widget.c:778
 #: ../libempathy-gtk/empathy-individual-widget.c:487
 msgid "Horizontal Error (meters):"
 msgstr "అడ్డ దోషము (మీటర్లు):"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:781
+#: ../libempathy-gtk/empathy-contact-widget.c:780
 #: ../libempathy-gtk/empathy-individual-widget.c:489
 msgid "Speed:"
 msgstr "వేగము:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:783
+#: ../libempathy-gtk/empathy-contact-widget.c:782
 #: ../libempathy-gtk/empathy-individual-widget.c:491
 msgid "Bearing:"
 msgstr "బేరింగ్:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:785
+#: ../libempathy-gtk/empathy-contact-widget.c:784
 #: ../libempathy-gtk/empathy-individual-widget.c:493
 msgid "Climb Speed:"
 msgstr "ఎక్కు వేగము:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:787
+#: ../libempathy-gtk/empathy-contact-widget.c:786
 #: ../libempathy-gtk/empathy-individual-widget.c:495
 msgid "Last Updated on:"
 msgstr "చివరిగా నవీకరించబడింది:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:789
+#: ../libempathy-gtk/empathy-contact-widget.c:788
 #: ../libempathy-gtk/empathy-individual-widget.c:497
 msgid "Longitude:"
 msgstr "రేఖాంశము:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:791
+#: ../libempathy-gtk/empathy-contact-widget.c:790
 #: ../libempathy-gtk/empathy-individual-widget.c:499
 msgid "Latitude:"
 msgstr "అక్షాంశము:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:793
+#: ../libempathy-gtk/empathy-contact-widget.c:792
 #: ../libempathy-gtk/empathy-individual-widget.c:501
 msgid "Altitude:"
 msgstr "ఎత్తు:"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:846
-#: ../libempathy-gtk/empathy-contact-widget.c:861
+#: ../libempathy-gtk/empathy-contact-widget.c:845
+#: ../libempathy-gtk/empathy-contact-widget.c:860
 #: ../libempathy-gtk/empathy-individual-widget.c:593
 #: ../libempathy-gtk/empathy-individual-widget.c:608
 #: ../src/empathy-preferences.ui.h:35
@@ -1929,32 +1928,32 @@ msgid "Location"
 msgstr "స్థానము"
 
 #. translators: format is "Location, $date"
-#: ../libempathy-gtk/empathy-contact-widget.c:863
+#: ../libempathy-gtk/empathy-contact-widget.c:862
 #: ../libempathy-gtk/empathy-individual-widget.c:610
 #, c-format
 msgid "%s, %s"
 msgstr "%s, %s"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:915
+#: ../libempathy-gtk/empathy-contact-widget.c:914
 #: ../libempathy-gtk/empathy-individual-widget.c:659
 msgid "%B %e, %Y at %R UTC"
 msgstr "%B %e, %Y at %R UTC"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:997
+#: ../libempathy-gtk/empathy-contact-widget.c:996
 #: ../libempathy-gtk/empathy-individual-widget.c:900
 msgid "Save Avatar"
 msgstr "అవతారాన్ని భద్రపరుచు"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:1053
+#: ../libempathy-gtk/empathy-contact-widget.c:1052
 #: ../libempathy-gtk/empathy-individual-widget.c:958
 msgid "Unable to save avatar"
 msgstr "అవతారాన్ని భద్రపరచలేకపోతుంది"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:1444
+#: ../libempathy-gtk/empathy-contact-widget.c:1454
 msgid "Personal Details"
 msgstr "వ్యక్తిగత వివరాలు"
 
-#: ../libempathy-gtk/empathy-contact-widget.c:1447
+#: ../libempathy-gtk/empathy-contact-widget.c:1457
 #: ../libempathy-gtk/empathy-contact-widget.ui.h:6
 #: ../libempathy-gtk/empathy-individual-widget.ui.h:3
 msgid "Contact Details"
@@ -2063,11 +2062,11 @@ msgstr "వర్షన్:"
 msgid "Client:"
 msgstr "క్లయింటు:"
 
-#: ../libempathy-gtk/empathy-groups-widget.c:331
+#: ../libempathy-gtk/empathy-groups-widget.c:327
 msgid "Groups"
 msgstr "గుంపులు"
 
-#: ../libempathy-gtk/empathy-groups-widget.c:343
+#: ../libempathy-gtk/empathy-groups-widget.c:339
 msgid ""
 "Select the groups you want this contact to appear in.  Note that you can "
 "select more than one group or no groups."
@@ -2075,17 +2074,17 @@ msgstr ""
 "గుంపులో కనిపించాలనుకుంటున్న పరిచయాన్ని ఎంచుకోండి.  మీరు ఒకటి కన్నా ఎక్కువ గుంపులను "
 "ఎంచుకొనవచ్చు లేదా అస్సలు ఎంచుకొనపోవచ్చునని గమనించండి."
 
-#: ../libempathy-gtk/empathy-groups-widget.c:362
+#: ../libempathy-gtk/empathy-groups-widget.c:358
 msgid "_Add Group"
 msgstr "గుంపును జతచేయి (_A)"
 
-#: ../libempathy-gtk/empathy-groups-widget.c:397
+#: ../libempathy-gtk/empathy-groups-widget.c:393
 msgctxt "verb in a column header displaying group names"
 msgid "Select"
 msgstr "ఎంచుకోండి"
 
-#: ../libempathy-gtk/empathy-groups-widget.c:407
-#: ../src/empathy-roster-window.c:1970
+#: ../libempathy-gtk/empathy-groups-widget.c:403
+#: ../src/empathy-roster-window.c:1969
 msgid "Group"
 msgstr "గుంపు"
 
@@ -2113,108 +2112,109 @@ msgstr "బంధన పరిచయాలు (_O)"
 #. 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:173
+#: ../libempathy-gtk/empathy-individual-menu.c:172
 #, c-format
 msgid "%s (%s)"
 msgstr "%s (%s)"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:345
+#: ../libempathy-gtk/empathy-individual-menu.c:344
 msgid "Select account to use to place the call"
 msgstr "కాల్ స్థానానికి ఉపయోగించడానికి ఖాతా ఎంచుకోండి"
 
 #. translators: Call is a noun. This string is used in the window
 #. * title
-#: ../libempathy-gtk/empathy-individual-menu.c:349
+#: ../libempathy-gtk/empathy-individual-menu.c:348
 #: ../libempathy-gtk/empathy-log-window.ui.h:6
 #: ../src/empathy-streamed-media-window.c:1290
 #: ../src/empathy-call-window.ui.h:18
 msgid "Call"
 msgstr "కాల్"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:414
+#: ../libempathy-gtk/empathy-individual-menu.c:413
 msgid "Mobile"
 msgstr "మొబైలు"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:416
+#: ../libempathy-gtk/empathy-individual-menu.c:415
 msgid "Work"
 msgstr "పని "
 
-#: ../libempathy-gtk/empathy-individual-menu.c:418
+#: ../libempathy-gtk/empathy-individual-menu.c:417
 msgid "HOME"
 msgstr "ఇల్లు "
 
-#: ../libempathy-gtk/empathy-individual-menu.c:659
+#: ../libempathy-gtk/empathy-individual-menu.c:658
 msgid "_Block Contact"
 msgstr "పరిచయాన్ని నిరోధించు (_B)"
 
 #. add chat button
-#: ../libempathy-gtk/empathy-individual-menu.c:1018
+#: ../libempathy-gtk/empathy-individual-menu.c:1017
 #: ../libempathy-gtk/empathy-new-message-dialog.c:319
 #: ../src/empathy-roster-window-menubar.ui.h:1
 msgid "_Chat"
 msgstr "చాట్ (_C)"
 
 #. add SMS button
-#: ../libempathy-gtk/empathy-individual-menu.c:1053
+#: ../libempathy-gtk/empathy-individual-menu.c:1052
 #: ../libempathy-gtk/empathy-new-message-dialog.c:313
 msgid "_SMS"
 msgstr "_SMS"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1086
+#: ../libempathy-gtk/empathy-individual-menu.c:1085
 msgctxt "menu item"
 msgid "_Audio Call"
 msgstr "ఆడియో కాల్ (_A)"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1119
+#: ../libempathy-gtk/empathy-individual-menu.c:1118
 msgctxt "menu item"
 msgid "_Video Call"
 msgstr "వీడియో కాల్ (_V)"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1160
+#: ../libempathy-gtk/empathy-individual-menu.c:1159
 #: ../src/empathy-roster-window-menubar.ui.h:4
 msgid "_Previous Conversations"
 msgstr "మునుపటి సంభాషణలు (_P)"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1189
+#: ../libempathy-gtk/empathy-individual-menu.c:1188
 msgid "Send File"
 msgstr "ఫైలును పంపు"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1219
+#: ../libempathy-gtk/empathy-individual-menu.c:1218
 msgid "Share My Desktop"
 msgstr "నా డెస్క్‍టాప్‌ను పంచుకొను"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1245
+#: ../libempathy-gtk/empathy-individual-menu.c:1244
 #: ../libempathy-gtk/empathy-individual-widget.c:1357
 msgid "Favorite"
 msgstr "ఇష్టాంశము"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1264
+#: ../libempathy-gtk/empathy-individual-menu.c:1263
 msgid "gnome-contacts not installed"
 msgstr "గ్నోమ్‌-చిరునామాలు స్థాపించబడిలేదు"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1267
+#: ../libempathy-gtk/empathy-individual-menu.c:1266
 msgid "Please install gnome-contacts to access contacts details."
 msgstr "చిరునామాల వివరణములు పొందుటకు గ్నోమ్‌-చిరునామాలను స్థాపించండి "
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1398
+#: ../libempathy-gtk/empathy-individual-menu.c:1397
 msgid "Infor_mation"
 msgstr "సమాచారము (_m)"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1447
+#: ../libempathy-gtk/empathy-individual-menu.c:1446
 msgctxt "Edit individual (contextual menu)"
 msgid "_Edit"
 msgstr "సవరణ (_E)"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1564
-#: ../src/empathy-chat-window.c:1192
+#. send invitation
+#: ../libempathy-gtk/empathy-individual-menu.c:1562
+#: ../src/empathy-chat-window.c:1190
 msgid "Inviting you to this room"
 msgstr "మిమ్మల్ని ఈ గదికి ఆహ్వానిస్తున్నారు"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1610
+#: ../libempathy-gtk/empathy-individual-menu.c:1608
 msgid "_Invite to Chat Room"
 msgstr "చాట్ గదికి ఆహ్వానించు (_I)"
 
-#: ../libempathy-gtk/empathy-individual-menu.c:1806
+#: ../libempathy-gtk/empathy-individual-menu.c:1804
 #: ../src/empathy-roster-window-menubar.ui.h:5
 msgid "_Add Contact…"
 msgstr "పరిచయాన్ని జతచేయి...(_A)"
@@ -2296,137 +2296,135 @@ msgstr "కొత్త సేవకము"
 msgid "SSL"
 msgstr "SSL"
 
-#: ../libempathy-gtk/empathy-log-window.c:620
+#: ../libempathy-gtk/empathy-log-window.c:617
 msgid "History"
 msgstr "చరిత్ర"
 
-#: ../libempathy-gtk/empathy-log-window.c:675
+#: ../libempathy-gtk/empathy-log-window.c:672
 msgid "Show"
 msgstr "చూపించు"
 
-#: ../libempathy-gtk/empathy-log-window.c:697
+#: ../libempathy-gtk/empathy-log-window.c:694
 msgid "Search"
 msgstr "వెతుకు"
 
-#: ../libempathy-gtk/empathy-log-window.c:1148
+#: ../libempathy-gtk/empathy-log-window.c:1145
 #, c-format
 msgid "Chat in %s"
 msgstr "%sతో  చాట్"
 
-#: ../libempathy-gtk/empathy-log-window.c:1150
+#: ../libempathy-gtk/empathy-log-window.c:1147
 #, c-format
 msgid "Chat with %s"
 msgstr "చాట్ తో  %s"
 
-#: ../libempathy-gtk/empathy-log-window.c:1200
-#: ../libempathy-gtk/empathy-log-window.c:1347
+#: ../libempathy-gtk/empathy-log-window.c:1197
+#: ../libempathy-gtk/empathy-log-window.c:1341
 msgctxt "A date with the time"
 msgid "%A, %e %B %Y %X"
 msgstr "%A %B %d %Y %X"
 
 #. Translators: this is an emote: '* Danielle waves'
-#: ../libempathy-gtk/empathy-log-window.c:1289
+#: ../libempathy-gtk/empathy-log-window.c:1284
 #, 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:1295
+#: ../libempathy-gtk/empathy-log-window.c:1290
 #, c-format
 msgid "<b>%s:</b> %s"
 msgstr "<b>%s:</b> %s"
 
-#: ../libempathy-gtk/empathy-log-window.c:1371
+#: ../libempathy-gtk/empathy-log-window.c:1365
 #, c-format
-#| msgid "%s second"
-#| msgid_plural "%s seconds"
 msgid "%s second"
 msgid_plural "%s seconds"
 msgstr[0] "%s సెకన్  "
 msgstr[1] "%s సెకన్లు"
 
-#: ../libempathy-gtk/empathy-log-window.c:1378
+#: ../libempathy-gtk/empathy-log-window.c:1372
 #, c-format
 msgid "%s minute"
 msgid_plural "%s minutes"
 msgstr[0] "%s నిముషము"
 msgstr[1] "%s నిముషాలు"
 
-#: ../libempathy-gtk/empathy-log-window.c:1386
+#: ../libempathy-gtk/empathy-log-window.c:1380
 #, c-format
 msgid "Call took %s, ended at %s"
 msgstr "కాల్,% s పట్టింది% s వద్ద ముగిసింది"
 
-#: ../libempathy-gtk/empathy-log-window.c:1720
+#: ../libempathy-gtk/empathy-log-window.c:1711
 msgid "Today"
 msgstr "నేడు"
 
-#: ../libempathy-gtk/empathy-log-window.c:1724
+#: ../libempathy-gtk/empathy-log-window.c:1715
 msgid "Yesterday"
 msgstr "నిన్న"
 
 #. Translators: A date such as '23 May 2010' (strftime format)
-#: ../libempathy-gtk/empathy-log-window.c:1739
+#: ../libempathy-gtk/empathy-log-window.c:1730
 msgid "%e %B %Y"
 msgstr "%A %B %Y"
 
-#: ../libempathy-gtk/empathy-log-window.c:1827
-#: ../libempathy-gtk/empathy-log-window.c:3487
+#: ../libempathy-gtk/empathy-log-window.c:1834
+#: ../libempathy-gtk/empathy-log-window.c:3457
 msgid "Anytime"
 msgstr "ఏ సమయములోనా"
 
-#: ../libempathy-gtk/empathy-log-window.c:1916
-#: ../libempathy-gtk/empathy-log-window.c:2400
+#: ../libempathy-gtk/empathy-log-window.c:1933
+#: ../libempathy-gtk/empathy-log-window.c:2392
 msgid "Anyone"
 msgstr "ఎవరైనా"
 
-#: ../libempathy-gtk/empathy-log-window.c:2713
+#: ../libempathy-gtk/empathy-log-window.c:2705
 msgid "Who"
 msgstr "ఎవరు"
 
-#: ../libempathy-gtk/empathy-log-window.c:2922
+#: ../libempathy-gtk/empathy-log-window.c:2914
 msgid "When"
 msgstr "ఎపుడు"
 
-#: ../libempathy-gtk/empathy-log-window.c:3038
+#: ../libempathy-gtk/empathy-log-window.c:3032
 msgid "Anything"
 msgstr "ఏదైనా"
 
-#: ../libempathy-gtk/empathy-log-window.c:3040
+#: ../libempathy-gtk/empathy-log-window.c:3034
 msgid "Text chats"
 msgstr "పాఠ్య చాట్లు"
 
-#: ../libempathy-gtk/empathy-log-window.c:3042
+#: ../libempathy-gtk/empathy-log-window.c:3035
 #: ../src/empathy-preferences.ui.h:25
 msgid "Calls"
 msgstr "కాల్స్ "
 
-#: ../libempathy-gtk/empathy-log-window.c:3047
+#: ../libempathy-gtk/empathy-log-window.c:3039
 msgid "Incoming calls"
 msgstr "లోనికివచ్చు కాల్స్"
 
-#: ../libempathy-gtk/empathy-log-window.c:3048
+#: ../libempathy-gtk/empathy-log-window.c:3040
 msgid "Outgoing calls"
 msgstr "బయటకు వెళ్ళు వాయిస్ కాల్స్"
 
-#: ../libempathy-gtk/empathy-log-window.c:3049
+#: ../libempathy-gtk/empathy-log-window.c:3041
 msgid "Missed calls"
 msgstr "మిస్సుడ్ కాల్స్"
 
-#: ../libempathy-gtk/empathy-log-window.c:3071
+#: ../libempathy-gtk/empathy-log-window.c:3061
 msgid "What"
 msgstr "ఏమిటి"
 
-#: ../libempathy-gtk/empathy-log-window.c:3780
+#: ../libempathy-gtk/empathy-log-window.c:3750
 msgid "Are you sure you want to delete all logs of previous conversations?"
 msgstr "మీరు మునుపటి సంభాషణలు అన్ని లాగ్లను తొలగించడానికి నిశ్చయించుకున్నారా?"
 
-#: ../libempathy-gtk/empathy-log-window.c:3784
+#: ../libempathy-gtk/empathy-log-window.c:3754
 msgid "Clear All"
 msgstr "అన్న శుభ్రపరచు "
 
-#: ../libempathy-gtk/empathy-log-window.c:3791
+#: ../libempathy-gtk/empathy-log-window.c:3761
 msgid "Delete from:"
 msgstr "దీని నుండి తొలగ్మిచు:"
 
@@ -2557,30 +2555,41 @@ msgstr ""
 #. COL_DISPLAY_MARKUP
 #. COL_STATUS_CUSTOMISABLE
 #. COL_TYPE
-#: ../libempathy-gtk/empathy-presence-chooser.c:167
-#: ../libempathy-gtk/empathy-presence-chooser.c:203
+#: ../libempathy-gtk/empathy-presence-chooser.c:166
+#: ../libempathy-gtk/empathy-presence-chooser.c:202
 msgid "Custom Message…"
 msgstr "అనురూపిత సందేశము..."
 
-#: ../libempathy-gtk/empathy-presence-chooser.c:220
-#: ../libempathy-gtk/empathy-presence-chooser.c:222
+#: ../libempathy-gtk/empathy-presence-chooser.c:219
+#: ../libempathy-gtk/empathy-presence-chooser.c:221
 msgid "Edit Custom Messages…"
 msgstr "అనురూపిత సందేశాలను సవరించు..."
 
-#: ../libempathy-gtk/empathy-presence-chooser.c:345
+#: ../libempathy-gtk/empathy-presence-chooser.c:344
 msgid "Click to remove this status as a favorite"
 msgstr "ఈ స్థితిని ఇష్టాంశము నుండి తీసివేయుటకు నొక్కండి"
 
-#: ../libempathy-gtk/empathy-presence-chooser.c:354
+#: ../libempathy-gtk/empathy-presence-chooser.c:353
 msgid "Click to make this status a favorite"
 msgstr "ఈ స్థితిని ఇష్టాంశముగా చేయుటకు నొక్కండి"
 
-#: ../libempathy-gtk/empathy-presence-chooser.c:388
+#. Translators: %s is a status message like 'At the pub' for example
+#: ../libempathy-gtk/empathy-presence-chooser.c:387
+#, c-format
+msgid ""
+"<b>Current message: %s</b>\n"
+"<small><i>Press Enter to set the new message or Esc to cancel.</i></small>"
+msgstr ""
+"<b>ప్రస్తుత సందేశం: %s</b>\n"
+"<small><i>కొత్త సందేశం పెట్టుట కోసం ఎంటర్ ను నొక్కండి లేదా రద్దు చేయడం కోసం Esc ను నొక్కండి. </"
+"i></small>"
+
+#: ../libempathy-gtk/empathy-presence-chooser.c:396
 msgid "Set status"
 msgstr "స్థితిని అమర్చు"
 
 #. Custom messages
-#: ../libempathy-gtk/empathy-presence-chooser.c:1135
+#: ../libempathy-gtk/empathy-presence-chooser.c:1147
 msgid "Custom messages…"
 msgstr "అనురూపిత సందేశాలు..."
 
@@ -2958,31 +2967,31 @@ msgstr "ఎంచుకోండి..."
 msgid "_Select"
 msgstr "ఎంచుకోండి_S"
 
-#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:202
+#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:201
 msgid "No error message"
 msgstr "ఏ దోష సందేశము లేదు"
 
-#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:275
+#: ../nautilus-sendto-plugin/empathy-nautilus-sendto.c:274
 msgid "Instant Message (Empathy)"
 msgstr "సత్వర సందేశం (ఎంపతి)"
 
-#: ../src/empathy.c:435
+#: ../src/empathy.c:425
 msgid "Don't connect on startup"
 msgstr "వ్యవస్థ ప్రారంభములో అనుసంధానించవద్దు"
 
-#: ../src/empathy.c:439
+#: ../src/empathy.c:429
 msgid "Don't display the contact list or any other dialogs on startup"
 msgstr "వ్యవస్థ ప్రారంభమయినపుడు పరిచయ జాబితా గాని లేక ఏ ఇతర డైలాగులను చూపవద్దు"
 
-#: ../src/empathy.c:454
+#: ../src/empathy.c:444
 msgid "- Empathy IM Client"
 msgstr "- ఎంపతి IM క్లయింటు"
 
-#: ../src/empathy.c:641
+#: ../src/empathy.c:620
 msgid "Error contacting the Account Manager"
 msgstr "ఖాతా నిర్వాహకాన్ని సంప్రదించుటలో దోషము"
 
-#: ../src/empathy.c:643
+#: ../src/empathy.c:622
 #, c-format
 msgid ""
 "There was an error while trying to connect to the Telepathy Account Manager. "
@@ -3039,78 +3048,78 @@ msgstr ""
 
 #. The primary text of the dialog shown to the user when he is about to lose
 #. * unsaved changes
-#: ../src/empathy-accounts-dialog.c:72
+#: ../src/empathy-accounts-dialog.c:71
 #, 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:76
+#: ../src/empathy-accounts-dialog.c:75
 msgid "Your new account has not been saved yet."
 msgstr "మీ కొత్త ఖాతా ఇంకా భద్రపరుచబడలేదు."
 
-#: ../src/empathy-accounts-dialog.c:381
+#: ../src/empathy-accounts-dialog.c:404
 #: ../src/empathy-streamed-media-window.c:759
-#: ../src/empathy-call-window.c:1289
+#: ../src/empathy-call-window.c:1267
 msgid "Connecting…"
 msgstr "అనుసంధానిస్తున్నది..."
 
-#: ../src/empathy-accounts-dialog.c:422
+#: ../src/empathy-accounts-dialog.c:445
 #, c-format
 msgid "Offline — %s"
 msgstr "ఆఫ్‌లైన్ — %s"
 
-#: ../src/empathy-accounts-dialog.c:434
+#: ../src/empathy-accounts-dialog.c:457
 #, c-format
 msgid "Disconnected — %s"
 msgstr "అననుసంధానించబడ్డారు — %s"
 
-#: ../src/empathy-accounts-dialog.c:445
+#: ../src/empathy-accounts-dialog.c:468
 msgid "Offline — No Network Connection"
 msgstr "ఆఫ్‌లైన్ — నెట్‌వర్క్ అనుసంధానం లేదు"
 
-#: ../src/empathy-accounts-dialog.c:452
+#: ../src/empathy-accounts-dialog.c:475
 msgid "Unknown Status"
 msgstr "తెలియని స్థితి"
 
-#: ../src/empathy-accounts-dialog.c:469
+#: ../src/empathy-accounts-dialog.c:492
 msgid ""
 "This account has been disabled because it relies on an old, unsupported "
 "backend. Please install telepathy-haze and restart your session to migrate "
 "the account."
 msgstr "ఈ ఖాతా నిలిపివేయబడుతున్నది ఎందుకనగా ఇది పాతదాని మీద ఆధారపడినది లేదా సహాయము లేనందున "
 
-#: ../src/empathy-accounts-dialog.c:479
+#: ../src/empathy-accounts-dialog.c:502
 msgid "Offline — Account Disabled"
 msgstr "ఆఫ్‌లైన్ — ఖాతా అచేతనం చేయబడింది"
 
-#: ../src/empathy-accounts-dialog.c:585
+#: ../src/empathy-accounts-dialog.c:608
 msgid "Edit Connection Parameters"
 msgstr "అనుసంధాన ప్రమాణాలు సవరించండి "
 
-#: ../src/empathy-accounts-dialog.c:750
+#: ../src/empathy-accounts-dialog.c:773
 msgid "Failed to retrieve your personal information from the server."
 msgstr "మీ వ్యక్తిగత వివరణములు సేవికనుండి తీసుకొనుటలో విఫలం అవుతున్నది "
 
-#: ../src/empathy-accounts-dialog.c:756
+#: ../src/empathy-accounts-dialog.c:779
 msgid "Go online to edit your personal information."
 msgstr "మీ వ్యక్తిగత సమాచారమును సవరించుటకు ఆన్‌లైన్ కి వెళ్ళండి "
 
-#: ../src/empathy-accounts-dialog.c:843
+#: ../src/empathy-accounts-dialog.c:866
 msgid "_Edit Connection Parameters..."
 msgstr "అనుసంధాన ప్రమాణాలు సవరించండి_E"
 
-#: ../src/empathy-accounts-dialog.c:1339
+#: ../src/empathy-accounts-dialog.c:1362
 #, c-format
 msgid "Do you want to remove %s from your computer?"
 msgstr "కంప్యూటర్ నుండి %s ను తీసివేద్దామనుకుంటున్నారా?"
 
-#: ../src/empathy-accounts-dialog.c:1343
+#: ../src/empathy-accounts-dialog.c:1366
 msgid "This will not remove your account on the server."
 msgstr "ఇది మీ ఖాతాను సేవకము నుండి తీసివేయదులేండి."
 
-#: ../src/empathy-accounts-dialog.c:1579
+#: ../src/empathy-accounts-dialog.c:1571
 msgid ""
 "You are about to select another account, which will discard\n"
 "your changes. Are you sure you want to proceed?"
@@ -3118,24 +3127,25 @@ msgstr ""
 "మీరు వేరే ఖాతాను ఎంచుకోబోతున్నారు, అది మీ మార్పులను\n"
 "తీసివేస్తుంది. మీరు ఖచ్చితంగా కొనసాగాలనుకుంటున్నారా?"
 
-#. Menu items: to enabled/disable the account
-#: ../src/empathy-accounts-dialog.c:1755
-msgid "_Enable"
-msgstr "చేతనపరుచు (_E)"
+#. Menu item: to enabled/disable the account
+#: ../src/empathy-accounts-dialog.c:1762
+msgid "_Enabled"
+msgstr "చేతనపరుచు (_E) "
 
-#: ../src/empathy-accounts-dialog.c:1756
-msgid "_Disable"
-msgstr "అచేతనపరుచు (_D)"
+#. Menu item: Rename
+#: ../src/empathy-accounts-dialog.c:1785
+msgid "Rename"
+msgstr "పేరు మార్చండి "
 
-#: ../src/empathy-accounts-dialog.c:2184
+#: ../src/empathy-accounts-dialog.c:2201
 msgid "_Skip"
 msgstr "దాటవేయు_S"
 
-#: ../src/empathy-accounts-dialog.c:2188
+#: ../src/empathy-accounts-dialog.c:2205
 msgid "_Connect"
 msgstr "అనుసంధానించండి_C"
 
-#: ../src/empathy-accounts-dialog.c:2365
+#: ../src/empathy-accounts-dialog.c:2384
 msgid ""
 "You are about to close the window, which will discard\n"
 "your changes. Are you sure you want to proceed?"
@@ -3162,19 +3172,19 @@ msgstr ""
 msgid "No protocol backends installed"
 msgstr "ప్రోటోకాల్ యొక్క అంతర్గత విషయములు  స్థాపించబడిలేదు"
 
-#: ../src/empathy-auth-client.c:288
+#: ../src/empathy-auth-client.c:286
 msgid " - Empathy authentication client"
 msgstr "- ఎంపతి ప్రామాణీకరణ క్లయింటు"
 
-#: ../src/empathy-auth-client.c:304
+#: ../src/empathy-auth-client.c:302
 msgid "Empathy authentication client"
 msgstr "ఎంపతి ప్రామాణీకరణ క్లయింటు"
 
-#: ../src/empathy-av.c:118 ../src/empathy-call.c:201
+#: ../src/empathy-av.c:115 ../src/empathy-call.c:198
 msgid "- Empathy Audio/Video Client"
 msgstr "- ఎంపతి ఆడియో/వీడియో క్లయింటు"
 
-#: ../src/empathy-av.c:134 ../src/empathy-call.c:223
+#: ../src/empathy-av.c:131 ../src/empathy-call.c:220
 msgid "Empathy Audio/Video Client"
 msgstr "ఎంపతి ఆడియో/వీడియో క్లయింటు"
 
@@ -3217,33 +3227,33 @@ 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:1211
-#: ../src/empathy-call-window.c:1889
+#: ../src/empathy-call-window.c:1861
 #, c-format
 msgid "Call with %s"
 msgstr "%sతో కాల్ చేయి"
 
 #: ../src/empathy-streamed-media-window.c:1444
-#: ../src/empathy-call-window.c:2133
+#: ../src/empathy-call-window.c:2105
 msgid "The IP address as seen by the machine"
 msgstr "యంత్రముతో చూడబడిన IP చిరునామా"
 
 #: ../src/empathy-streamed-media-window.c:1446
-#: ../src/empathy-call-window.c:2135
+#: ../src/empathy-call-window.c:2107
 msgid "The IP address as seen by a server on the Internet"
 msgstr "అంతర్జాలంతో ఒక సేవకముతో చూడబడిన IP చిరునామా"
 
 #: ../src/empathy-streamed-media-window.c:1448
-#: ../src/empathy-call-window.c:2137
+#: ../src/empathy-call-window.c:2109
 msgid "The IP address of the peer as seen by the other side"
 msgstr "ఇతర వైపు కనిపించే పీర్ యొక్క IP చిరునామా"
 
 #: ../src/empathy-streamed-media-window.c:1450
-#: ../src/empathy-call-window.c:2139
+#: ../src/empathy-call-window.c:2111
 msgid "The IP address of a relay server"
 msgstr "రిలే సేవకము యొక్క IP చిరునామా"
 
 #: ../src/empathy-streamed-media-window.c:1452
-#: ../src/empathy-call-window.c:2141
+#: ../src/empathy-call-window.c:2113
 msgid "The IP address of the multicast group"
 msgstr "బహుళప్రసార గుంపు యొక్క IP చిరునామా"
 
@@ -3262,12 +3272,12 @@ msgid "Connected — %d:%02dm"
 msgstr "అనుసంధానించబడింది — %d:%02dm"
 
 #: ../src/empathy-streamed-media-window.c:2199
-#: ../src/empathy-call-window.c:2992
+#: ../src/empathy-call-window.c:2964
 msgid "Technical Details"
 msgstr "సాంకేతిక వివరాలు"
 
 #: ../src/empathy-streamed-media-window.c:2237
-#: ../src/empathy-call-window.c:3031
+#: ../src/empathy-call-window.c:3003
 #, c-format
 msgid ""
 "%s's software does not understand any of the audio formats supported by your "
@@ -3275,7 +3285,7 @@ msgid ""
 msgstr "మీ కంప్యూటరుచే సహకరించబడుతున్న ఏ ఆడియో ఫార్మేట్లను %s సాఫ్ట్‌వేర్ అర్థంచేసుకోలేకపోతున్నది"
 
 #: ../src/empathy-streamed-media-window.c:2242
-#: ../src/empathy-call-window.c:3036
+#: ../src/empathy-call-window.c:3008
 #, c-format
 msgid ""
 "%s's software does not understand any of the video formats supported by your "
@@ -3283,7 +3293,7 @@ msgid ""
 msgstr "% s యొక్క సాఫ్ట్వేర్ మీ కంప్యూటర్ మద్దతు వీడియో ఫార్మాట్లలో అర్థం లేదు"
 
 #: ../src/empathy-streamed-media-window.c:2248
-#: ../src/empathy-call-window.c:3042
+#: ../src/empathy-call-window.c:3014
 #, c-format
 msgid ""
 "Can't establish a connection to %s. One of you might be on a network that "
@@ -3293,24 +3303,24 @@ msgstr ""
 "ఉండి వుండవచ్చును."
 
 #: ../src/empathy-streamed-media-window.c:2254
-#: ../src/empathy-call-window.c:3048
+#: ../src/empathy-call-window.c:3020
 msgid "There was a failure on the network"
 msgstr "నెట్‌వర్కు నందు వైఫల్యము ఉన్నది"
 
 #: ../src/empathy-streamed-media-window.c:2258
-#: ../src/empathy-call-window.c:3052
+#: ../src/empathy-call-window.c:3024
 msgid ""
 "The audio formats necessary for this call are not installed on your computer"
 msgstr "ఈ కాల్‌కి అవసరమైన ఆడియో ఫార్మేట్లు మీ కంప్యూటర్‌లో స్థాపించబడిలేవు"
 
 #: ../src/empathy-streamed-media-window.c:2261
-#: ../src/empathy-call-window.c:3055
+#: ../src/empathy-call-window.c:3027
 msgid ""
 "The video formats necessary for this call are not installed on your computer"
 msgstr "ఈ కాల్‌కి అవసరమైన వీడియో ఫార్మేట్లు మీ కంప్యూటర్‌లో స్థాపించబడిలేవు"
 
 #: ../src/empathy-streamed-media-window.c:2271
-#: ../src/empathy-call-window.c:3067
+#: ../src/empathy-call-window.c:3039
 #, c-format
 msgid ""
 "Something unexpected happened in a Telepathy component. Please <a href=\"%s"
@@ -3321,22 +3331,22 @@ msgstr ""
 "సహాయం మెను లో 'డీబగ్' విండో నుండి సేకరించిన లాగ్లను అటాచ్."
 
 #: ../src/empathy-streamed-media-window.c:2279
-#: ../src/empathy-call-window.c:3076
+#: ../src/empathy-call-window.c:3048
 msgid "There was a failure in the call engine"
 msgstr "కాల్ ఇంజనులో ఒక వైఫల్యము ఉన్నది"
 
 #: ../src/empathy-streamed-media-window.c:2282
-#: ../src/empathy-call-window.c:3079
+#: ../src/empathy-call-window.c:3051
 msgid "The end of the stream was reached"
 msgstr "ప్రవాహము చివరకు చేరుకున్నది"
 
 #: ../src/empathy-streamed-media-window.c:2322
-#: ../src/empathy-call-window.c:3119
+#: ../src/empathy-call-window.c:3091
 msgid "Can't establish audio stream"
 msgstr "ఆడియో ప్రవాహాన్ని స్థాపించలేకపోతుంది"
 
 #: ../src/empathy-streamed-media-window.c:2332
-#: ../src/empathy-call-window.c:3129
+#: ../src/empathy-call-window.c:3101
 msgid "Can't establish video stream"
 msgstr "వీడియో ప్రవాహాన్ని స్థాపించలేకపోతుంది"
 
@@ -3449,8 +3459,8 @@ msgstr "ఎన్కోడింగ్ కొడెక్:"
 
 #: ../src/empathy-call-window.ui.h:28
 #: ../src/empathy-streamed-media-window.ui.h:21
-#: ../src/empathy-call-window.c:2542 ../src/empathy-call-window.c:2543
-#: ../src/empathy-call-window.c:2544 ../src/empathy-call-window.c:2545
+#: ../src/empathy-call-window.c:2514 ../src/empathy-call-window.c:2515
+#: ../src/empathy-call-window.c:2516 ../src/empathy-call-window.c:2517
 msgid "Unknown"
 msgstr "తెలియదు"
 
@@ -3474,11 +3484,11 @@ msgstr "స్థానిక అభ్యర్ధి:"
 msgid "Audio"
 msgstr "ఆడియో"
 
-#: ../src/empathy-chat-window.c:289
+#: ../src/empathy-chat-window.c:288
 msgid "Close this window?"
 msgstr "ఈ విండోను మూయుము?"
 
-#: ../src/empathy-chat-window.c:294
+#: ../src/empathy-chat-window.c:293
 #, c-format
 msgid ""
 "Closing this window will leave %s. You will not receive any further messages "
@@ -3487,7 +3497,7 @@ msgstr ""
 "మీరు బయటకి వెళ్ళునప్పుడు ఈ విండోను మూయుము %s. తర్వాతి సందేశములు మీరు పొందలేరుమీరు మరలా "
 "వచ్చువరకు"
 
-#: ../src/empathy-chat-window.c:305
+#: ../src/empathy-chat-window.c:304
 #, c-format
 msgid ""
 "Closing this window will leave a chat room. You will not receive any further "
@@ -3502,66 +3512,66 @@ msgstr[1] ""
 "మీరు బయటకి వెళ్ళునప్పుడు %u చాట్ గదులను  మూయుము. తర్వాతి సందేశములు మీరు పొందలేరుమీరు మరలా "
 "వచ్చువరకు "
 
-#: ../src/empathy-chat-window.c:314
+#: ../src/empathy-chat-window.c:313
 #, c-format
 msgid "Leave %s?"
 msgstr "%s స్థాయి ?"
 
-#: ../src/empathy-chat-window.c:315
+#: ../src/empathy-chat-window.c:314
 msgid ""
 "You will not receive any further messages from this chat room until you "
 "rejoin it."
 msgstr ""
 "మీరు మరలా వచ్చువరకు ఈ ఛాట్ గది నుండి  తర్వాతి సందేశములు మీరు పొందలేరు మీరు మరలా వచ్చువరకు"
 
-#: ../src/empathy-chat-window.c:334
+#: ../src/empathy-chat-window.c:333
 msgid "Close window"
 msgstr "విండోను మూయుము "
 
-#: ../src/empathy-chat-window.c:334
+#: ../src/empathy-chat-window.c:333
 msgid "Leave room"
 msgstr "గదిని వదలండి "
 
-#: ../src/empathy-chat-window.c:640 ../src/empathy-chat-window.c:660
+#: ../src/empathy-chat-window.c:639 ../src/empathy-chat-window.c:659
 #, c-format
 msgid "%s (%d unread)"
 msgid_plural "%s (%d unread)"
 msgstr[0] "%s (%d చదువనిది)"
 msgstr[1] "%s (%d చదువనివి)"
 
-#: ../src/empathy-chat-window.c:652
+#: ../src/empathy-chat-window.c:651
 #, c-format
 msgid "%s (and %u other)"
 msgid_plural "%s (and %u others)"
 msgstr[0] "%s (మరియు %u ఇతర)"
 msgstr[1] "%s (మరియు %u ఇతరాలు)"
 
-#: ../src/empathy-chat-window.c:668
+#: ../src/empathy-chat-window.c:667
 #, c-format
 msgid "%s (%d unread from others)"
 msgid_plural "%s (%d unread from others)"
 msgstr[0] "%s (%d ఇతరుల నుండి చదవనివి)"
 msgstr[1] "%s (%d ఇతరుల నుండి చదవనివి)"
 
-#: ../src/empathy-chat-window.c:677
+#: ../src/empathy-chat-window.c:676
 #, c-format
 msgid "%s (%d unread from all)"
 msgid_plural "%s (%d unread from all)"
 msgstr[0] "%s (%d అన్నిటిని నుండి చదవనివి)"
 msgstr[1] "%s (%d అన్నిటిని నుండి చదవనివి)"
 
-#: ../src/empathy-chat-window.c:892
+#: ../src/empathy-chat-window.c:891
 msgid "SMS:"
 msgstr "SMS:"
 
-#: ../src/empathy-chat-window.c:902
+#: ../src/empathy-chat-window.c:901
 #, c-format
 msgid "Sending %d message"
 msgid_plural "Sending %d messages"
 msgstr[0] "%d సందేశమును పంపుతున్నది"
 msgstr[1] "%d సందేశాలను పంపుతున్నది"
 
-#: ../src/empathy-chat-window.c:924
+#: ../src/empathy-chat-window.c:923
 msgid "Typing a message."
 msgstr "ఒక సందేశమును టైపు చేస్తున్నారు."
 
@@ -3645,7 +3655,7 @@ msgstr "ఇష్టమైన గదులను నిర్వహించు"
 msgid "Incoming video call"
 msgstr "లోనికివచ్చు వీడియో కాల్"
 
-#: ../src/empathy-event-manager.c:522 ../src/empathy-call-window.c:1519
+#: ../src/empathy-event-manager.c:522 ../src/empathy-call-window.c:1483
 msgid "Incoming call"
 msgstr "లోనికివచ్చు కాల్"
 
@@ -3660,7 +3670,7 @@ msgid "%s is calling you. Do you want to answer?"
 msgstr "%s మీకు కాల్ చేస్తున్నారు. మీరు సమాధానమివ్వాలనుకుంటున్నారా?"
 
 #: ../src/empathy-event-manager.c:530 ../src/empathy-event-manager.c:731
-#: ../src/empathy-event-manager.c:764 ../src/empathy-call-window.c:1525
+#: ../src/empathy-event-manager.c:764 ../src/empathy-call-window.c:1489
 #, c-format
 msgid "Incoming call from %s"
 msgstr "%s నుండి లోనికి కాల్ వస్తున్నది"
@@ -3678,7 +3688,7 @@ msgid "_Answer with video"
 msgstr "వీడియోతో జవాబువ్వండి (_A)"
 
 #: ../src/empathy-event-manager.c:731 ../src/empathy-event-manager.c:764
-#: ../src/empathy-call-window.c:1525
+#: ../src/empathy-call-window.c:1489
 #, c-format
 msgid "Incoming video call from %s"
 msgstr "%s నుండి వీడియో కాల్ వస్తున్నది"
@@ -3721,7 +3731,7 @@ msgstr "%s లో చేరుటకు మీరు ఆహ్వానించ
 msgid "Incoming file transfer from %s"
 msgstr "%s నుండి వచ్చుచున్న ఫైల్ బదిలీకరణ"
 
-#: ../src/empathy-event-manager.c:1146 ../src/empathy-roster-window.c:374
+#: ../src/empathy-event-manager.c:1146 ../src/empathy-roster-window.c:373
 msgid "Password required"
 msgstr "సంకేతపదం అవసరం"
 
@@ -3867,86 +3877,86 @@ msgid "Import Accounts"
 msgstr "ఖాతాలను దిగుమతిచేయి"
 
 #. Translators: this is the header of a treeview column
-#: ../src/empathy-import-widget.c:316
+#: ../src/empathy-import-widget.c:303
 msgid "Import"
 msgstr "దిగుమతిచేయి"
 
-#: ../src/empathy-import-widget.c:325
+#: ../src/empathy-import-widget.c:312
 msgid "Protocol"
 msgstr "ప్రోటోకాల్"
 
-#: ../src/empathy-import-widget.c:349
+#: ../src/empathy-import-widget.c:336
 msgid "Source"
 msgstr "మూలము"
 
-#: ../src/empathy-roster-window.c:391
+#: ../src/empathy-roster-window.c:390
 msgid "Provide Password"
 msgstr "సంకేతపదాన్ని సమకూర్చు"
 
-#: ../src/empathy-roster-window.c:397
+#: ../src/empathy-roster-window.c:396
 msgid "Disconnect"
 msgstr "అననుసంధానించు"
 
-#: ../src/empathy-roster-window.c:657
+#: ../src/empathy-roster-window.c:656
 msgid "You need to setup an account to see contacts here."
 msgstr "మీరు ఇక్కడ చిరునామాలు చూడుటకొరకు ఖాతాను పొందుపరచండి"
 
-#: ../src/empathy-roster-window.c:673
+#: ../src/empathy-roster-window.c:672
 msgid "No match found"
 msgstr "సరిపోలినది కనపడలేదు"
 
-#: ../src/empathy-roster-window.c:783
+#: ../src/empathy-roster-window.c:782
 #, c-format
 msgid "Sorry, %s accounts can’t be used until your %s software is updated."
 msgstr "క్షమించండి, మీరు %sసాప్ట్ వేరు నవీకరించువరకు %s ఖాతా వివరములు చూడలేరు  "
 
-#: ../src/empathy-roster-window.c:849
+#: ../src/empathy-roster-window.c:848
 msgid "Update software..."
 msgstr "సాప్ట్ వేరు నవీకరించుట..."
 
-#: ../src/empathy-roster-window.c:855 ../src/empathy-roster-window.c:972
+#: ../src/empathy-roster-window.c:854 ../src/empathy-roster-window.c:971
 msgid "Close"
 msgstr "మూసివేయి"
 
-#: ../src/empathy-roster-window.c:960
+#: ../src/empathy-roster-window.c:959
 msgid "Reconnect"
 msgstr "తిరిగి అనుసంధానించు"
 
-#: ../src/empathy-roster-window.c:966
+#: ../src/empathy-roster-window.c:965
 msgid "Edit Account"
 msgstr "ఖాతాను సవరించు"
 
 #. Translators: this string will be something like:
 #. * Top up My Account ($1.23)..."
-#: ../src/empathy-roster-window.c:1110
+#: ../src/empathy-roster-window.c:1109
 #, c-format
 msgid "Top up %s (%s)..."
 msgstr "టాప్ అప్ %s (%s)..."
 
-#: ../src/empathy-roster-window.c:1156
+#: ../src/empathy-roster-window.c:1155
 msgid "Top up account credit"
 msgstr "టాప్ అప్ ఖాతా క్రెడిట్"
 
 #. top up button
-#: ../src/empathy-roster-window.c:1228
+#: ../src/empathy-roster-window.c:1227
 msgid "Top Up..."
 msgstr "టాప్ అప్..."
 
-#: ../src/empathy-roster-window.c:1952
+#: ../src/empathy-roster-window.c:1951
 msgid "Contact"
 msgstr "చిరునామా"
 
-#: ../src/empathy-roster-window.c:2150
+#: ../src/empathy-roster-window.c:2149
 msgid "You need to enable one of your accounts to see contacts here."
 msgstr "మీరు ఇక్కడ ఖాతాలు చూడుటకొరకు ఒక ఖాతానైన ప్రారంభించండి "
 
 #. translators: argument is an account name
-#: ../src/empathy-roster-window.c:2158
+#: ../src/empathy-roster-window.c:2157
 #, c-format
 msgid "You need to enable %s to see contacts here."
 msgstr "మీరు ఖాతాలు చూడుటకొరకు ఖాతాను ప్రారంభించండి %s"
 
-#: ../src/empathy-roster-window.c:2460
+#: ../src/empathy-roster-window.c:2459
 msgid "Contact List"
 msgstr "పరిచయముల జాబితా"
 
@@ -4050,7 +4060,7 @@ 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:637
+#: ../src/empathy-new-chatroom-dialog.c:636
 #, c-format
 msgid ""
 "%s\n"
@@ -4063,21 +4073,21 @@ msgstr ""
 "సంకేతపదము అవసరం: %s\n"
 "సభ్యులు: %s"
 
+#: ../src/empathy-new-chatroom-dialog.c:638
 #: ../src/empathy-new-chatroom-dialog.c:639
-#: ../src/empathy-new-chatroom-dialog.c:640
 msgid "Yes"
 msgstr "అవును"
 
+#: ../src/empathy-new-chatroom-dialog.c:638
 #: ../src/empathy-new-chatroom-dialog.c:639
-#: ../src/empathy-new-chatroom-dialog.c:640
 msgid "No"
 msgstr "కాదు"
 
-#: ../src/empathy-new-chatroom-dialog.c:668
+#: ../src/empathy-new-chatroom-dialog.c:666
 msgid "Could not start room listing"
 msgstr "గది జాబితాకరణను ప్రారంభించలేకపోయింది"
 
-#: ../src/empathy-new-chatroom-dialog.c:678
+#: ../src/empathy-new-chatroom-dialog.c:676
 msgid "Could not stop room listing"
 msgstr "గది జాబితాకరణను ఆపలేకపోయింది"
 
@@ -4142,46 +4152,46 @@ msgid "Language"
 msgstr "భాష"
 
 #. translators: Contact name for the chat theme preview
-#: ../src/empathy-preferences.c:726
+#: ../src/empathy-preferences.c:724
 msgid "Juliet"
 msgstr "జూలియట్"
 
 #. translators: Contact name for the chat theme preview
-#: ../src/empathy-preferences.c:733
+#: ../src/empathy-preferences.c:731
 msgid "Romeo"
 msgstr "రోమియో"
 
 #. translators: Quote from Romeo & Julier, for chat theme preview
-#: ../src/empathy-preferences.c:739
+#: ../src/empathy-preferences.c:737
 msgid "O Romeo, Romeo, wherefore art thou Romeo?"
 msgstr "ఓ రోమియో, రోమియో, ఎక్కడున్నావు రోమియో?"
 
 #. translators: Quote from Romeo & Julier, for chat theme preview
-#: ../src/empathy-preferences.c:743
+#: ../src/empathy-preferences.c:741
 msgid "Deny thy father and refuse thy name;"
 msgstr "నీ తండ్రి తిరస్కరించు మరియు నీ పేరు తిరస్కరించవచ్చు;"
 
 #. translators: Quote from Romeo & Julier, for chat theme preview
-#: ../src/empathy-preferences.c:746
+#: ../src/empathy-preferences.c:744
 msgid "Or if thou wilt not, be but sworn my love"
 msgstr "లేదా నీవు విల్ట్ లేకపోతే, కానీ నా ప్రేమ ప్రమాణ స్వీకారం"
 
 #. translators: Quote from Romeo & Julier, for chat theme preview
-#: ../src/empathy-preferences.c:749
+#: ../src/empathy-preferences.c:747
 msgid "And I'll no longer be a Capulet."
 msgstr "నేను ఇకపై ఒక Capulet ఉంటాం."
 
 #. translators: Quote from Romeo & Julier, for chat theme preview
-#: ../src/empathy-preferences.c:752
+#: ../src/empathy-preferences.c:750
 msgid "Shall I hear more, or shall I speak at this?"
 msgstr "నేనింకా ఎక్కువ వినాలా, లేక నేను ఇక మాట్లాడవచ్చా?"
 
 #. translators: Quote from Romeo & Julier, for chat theme preview
-#: ../src/empathy-preferences.c:755
+#: ../src/empathy-preferences.c:753
 msgid "Juliet has disconnected"
 msgstr "జూలియట్ అననుసంధానించింది"
 
-#: ../src/empathy-preferences.c:1159
+#: ../src/empathy-preferences.c:1157
 msgid "Preferences"
 msgstr "ప్రాధాన్యతలు"
 
@@ -4486,16 +4496,16 @@ msgid ""
 "extension."
 msgstr "ఎంచుకున్న అనుసంధాన నిర్వాహకము దూరస్థ దోషశుద్ధిచేసే పొడిగింపుకు సహకరించుటలేదు."
 
-#: ../src/empathy-invite-participant-dialog.c:202
-#: ../src/empathy-invite-participant-dialog.c:230
+#: ../src/empathy-invite-participant-dialog.c:200
+#: ../src/empathy-invite-participant-dialog.c:228
 msgid "Invite Participant"
 msgstr "భాగస్వామిని ఆహ్వానించు"
 
-#: ../src/empathy-invite-participant-dialog.c:203
+#: ../src/empathy-invite-participant-dialog.c:201
 msgid "Choose a contact to invite into the conversation:"
 msgstr "సంభాషణలోకి ఆహ్వానించుటకు ఒక పరిచయాన్ని ఎన్నుకోండి:"
 
-#: ../src/empathy-invite-participant-dialog.c:226
+#: ../src/empathy-invite-participant-dialog.c:224
 msgid "Invite"
 msgstr "ఆహ్వానించు"
 
@@ -4520,7 +4530,7 @@ msgstr "<account-id>"
 msgid "- Empathy Accounts"
 msgstr "- ఎంపతి ఖాతాలు"
 
-#: ../src/empathy-accounts.c:231
+#: ../src/empathy-accounts.c:230
 msgid "Empathy Accounts"
 msgstr "ఎంపతి ఖాతాలు"
 
@@ -4532,47 +4542,47 @@ msgstr "ఒక నిర్దిష్ట సేవ చూపించు"
 msgid "- Empathy Debugger"
 msgstr "- తాదాత్మ్యం డీబగ్గర్"
 
-#: ../src/empathy-debugger.c:113
+#: ../src/empathy-debugger.c:112
 msgid "Empathy Debugger"
 msgstr "ఎంపతి దోష శుద్దిచేసేది"
 
-#: ../src/empathy-chat.c:109
+#: ../src/empathy-chat.c:106
 msgid "- Empathy Chat Client"
 msgstr "- ఎంపతి చాట్ క్లయింటు"
 
-#: ../src/empathy-notifications-approver.c:189
+#: ../src/empathy-notifications-approver.c:190
 msgid "Respond"
 msgstr "స్పందించు"
 
-#: ../src/empathy-notifications-approver.c:203
-#: ../src/empathy-call-window.c:1529
+#: ../src/empathy-notifications-approver.c:204
+#: ../src/empathy-call-window.c:1493
 msgid "Reject"
 msgstr "తిరస్కరించు"
 
-#: ../src/empathy-notifications-approver.c:208
-#: ../src/empathy-notifications-approver.c:213
-#: ../src/empathy-call-window.c:1530
+#: ../src/empathy-notifications-approver.c:209
+#: ../src/empathy-notifications-approver.c:214
+#: ../src/empathy-call-window.c:1494
 msgid "Answer"
 msgstr "సమాధానమివ్వు"
 
-#: ../src/empathy-notifications-approver.c:213
+#: ../src/empathy-notifications-approver.c:214
 msgid "Answer with video"
 msgstr "వీడియో తో సమాధానం"
 
-#: ../src/empathy-notifications-approver.c:221
-#: ../src/empathy-notifications-approver.c:231
+#: ../src/empathy-notifications-approver.c:222
+#: ../src/empathy-notifications-approver.c:232
 msgid "Decline"
 msgstr "నిరాకరించు"
 
-#: ../src/empathy-notifications-approver.c:225
-#: ../src/empathy-notifications-approver.c:236
+#: ../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:246
+#: ../src/empathy-notifications-approver.c:247
 msgid "Provide"
 msgstr "సమకూర్చు"
 
@@ -4583,38 +4593,38 @@ msgstr "%s ఇప్పుడే కాల్ చేయడానికి ప్
 
 #. Translators: this is an "Info" label. It should be as short
 #. * as possible.
-#: ../src/empathy-call-window.c:1140 ../src/empathy-call-window.c:1162
+#: ../src/empathy-call-window.c:1124 ../src/empathy-call-window.c:1140
 msgid "i"
 msgstr " నెను"
 
-#: ../src/empathy-call-window.c:2888
+#: ../src/empathy-call-window.c:2860
 msgid "On hold"
 msgstr "లొ దచు"
 
-#: ../src/empathy-call-window.c:2891
+#: ../src/empathy-call-window.c:2863
 msgid "Mute"
 msgstr "నిశబ్దం"
 
-#: ../src/empathy-call-window.c:2893
+#: ../src/empathy-call-window.c:2865
 msgid "Duration"
 msgstr "నిడివి"
 
 #. Translators: 'status - minutes:seconds' the caller has been connected
-#: ../src/empathy-call-window.c:2896
+#: ../src/empathy-call-window.c:2868
 #, c-format
 msgid "%s — %d:%02dm"
 msgstr "%s — %d:%02dm"
 
-#: ../src/empathy-call-window.c:3166
+#: ../src/empathy-call-window.c:3138
 #, c-format
 msgid "Your current balance is %s."
 msgstr "మీ యొక్క రొక్కము %s"
 
-#: ../src/empathy-call-window.c:3170
+#: ../src/empathy-call-window.c:3142
 msgid "Sorry, you don’t have enough credit for that call."
 msgstr "మీరు సంభాషించుటకు సరిపోయినంత రొక్కము లేదు "
 
-#: ../src/empathy-call-window.c:3172
+#: ../src/empathy-call-window.c:3144
 msgid "Top Up"
 msgstr "టాప్ అప్..."
 
@@ -4652,6 +4662,9 @@ msgstr ""
 "మీరు <span ను ఎంచుకొనుట ద్వార ఈ లక్షణము యొక్క వివరములను తర్వాత మార్చండి లేదా అచేతనము చేయండి "
 "style=\"italic\">Edit → ఖాతాలు</span> చిరునామా జాబితాలో"
 
+#~ msgid "_Disable"
+#~ msgstr "అచేతనపరుచు (_D)"
+
 #~| msgid "%s:"
 #~ msgid "%s"
 #~ msgstr "%s:"
index 13bbbf49fc735ab522a31786088af649e6f0d2ed..21c395f3a46d914668b17ac1a9542d9d3c134dfe 100644 (file)
@@ -28,7 +28,7 @@ msgstr ""
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
 "product=empathy&keywords=I18N+L10N&component=General\n"
 "POT-Creation-Date: 2012-03-16 10:47+0000\n"
-"PO-Revision-Date: 2012-04-11 16:40+0000\n"
+"PO-Revision-Date: 2012-04-11 16:38+0000\n"
 "Last-Translator: YunQiang Su <wzssyqa@gmail.com>\n"
 "Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
 "MIME-Version: 1.0\n"
index bfa71e6ed961070f6792b11dff05e69962a19290..9e668346b41e04dc1e2d7829815a65ff3d1a74f0 100755 (executable)
@@ -9,7 +9,7 @@ import time
 from string import Template
 from optparse import OptionParser
 
-last_tag_pattern = 'EMPATHY_3_4*'
+last_tag_pattern = 'EMPATHY_3_5*'
 upload_server = 'master.gnome.org'
 template = '''\
 $name $version is now available for download from:
index dfde2055883db0a8a91b807cf1d47c09e7720ba4..f511b402a80f0b44686aae7f50100df0224bdc0a 100644 (file)
@@ -69,38 +69,6 @@ empathy_debugger_SOURCES =                                           \
        empathy-debugger.c                                              \
        $(NULL)
 
-if HAVE_EMPATHY_AV
-empathy_av_SOURCES = \
-       empathy-av.c \
-       empathy-audio-sink.c \
-       empathy-audio-sink.h \
-       empathy-audio-src.c \
-       empathy-audio-src.h \
-       empathy-streamed-media-factory.c \
-       empathy-streamed-media-factory.h \
-       empathy-streamed-media-handler.c \
-       empathy-streamed-media-handler.h \
-       empathy-streamed-media-window-fullscreen.c \
-       empathy-streamed-media-window-fullscreen.h \
-       empathy-streamed-media-window.c \
-       empathy-streamed-media-window.h \
-       empathy-video-src.c \
-       empathy-video-src.h \
-       empathy-video-widget.c \
-       empathy-video-widget.h \
-       ev-sidebar.c \
-       ev-sidebar.h \
-       empathy-mic-monitor.c \
-       empathy-mic-monitor.h
-       $(NULL)
-
-empathy_av_CFLAGS = $(EMPATHY_AV_CFLAGS)
-empathy_av_LDFLAGS = $(EMPATHY_AV_LIBS) $(LIBM)
-
-libexec_PROGRAMS += empathy-av
-
-endif
-
 empathy_auth_client_SOURCES =                                          \
        empathy-sanity-cleaning.c empathy-sanity-cleaning.h \
        empathy-auth-client.c \
@@ -133,8 +101,6 @@ empathy_call_SOURCES = \
        empathy-audio-src.h \
        empathy-video-src.c \
        empathy-video-src.h \
-       empathy-video-widget.c \
-       empathy-video-widget.h \
        empathy-preferences.c \
        empathy-preferences.h \
        empathy-camera-menu.c \
@@ -201,7 +167,6 @@ ui_DATA =                                   \
        empathy-accounts-dialog.ui              \
        empathy-call-window-fullscreen.ui       \
        empathy-call-window.ui                  \
-       empathy-streamed-media-window.ui        \
        empathy-chat-window.ui                  \
        empathy-chatrooms-window.ui             \
        empathy-ft-manager.ui                   \
index 0e004f5a50b53da0bac5220124763c0a1baf70ed..a9b65b25d603b385843840c3214ca77c6f0cb17c 100644 (file)
@@ -40,7 +40,6 @@
 
 #include <libempathy/empathy-utils.h>
 #include <libempathy/empathy-connection-managers.h>
-#include <libempathy/empathy-connectivity.h>
 #include <libempathy/empathy-pkg-kit.h>
 #include <libempathy/empathy-tp-contact-factory.h>
 
@@ -97,6 +96,7 @@ typedef struct {
   GtkWidget *enabled_switch;
 
   GtkWidget *treeview;
+  GtkCellRenderer *name_renderer;
 
   GtkWidget *button_add;
   GtkWidget *button_remove;
@@ -123,7 +123,7 @@ typedef struct {
    * That's kinda ugly; cf bgo #640417.
    *
    * */
-  EmpathyAccountWidget *setting_widget_object;
+  EmpathyAccountWidget *setting_widget;
 
   gboolean  connecting_show;
   guint connecting_id;
@@ -133,7 +133,7 @@ typedef struct {
 
   TpAccountManager *account_manager;
   EmpathyConnectionManagers *cms;
-  EmpathyConnectivity *connectivity;
+  GNetworkMonitor *connectivity;
 
   GtkWindow *parent_window;
   TpAccount *initial_selection;
@@ -463,7 +463,7 @@ accounts_dialog_update_status_infobar (EmpathyAccountsDialog *dialog,
                 g_free (message);
               }
 
-            if (!empathy_connectivity_is_online (priv->connectivity))
+            if (!g_network_monitor_get_network_available (priv->connectivity))
                accounts_dialog_status_infobar_set_message (dialog,
                     _("Offline — No Network Connection"));
 
@@ -540,7 +540,7 @@ empathy_account_dialog_cancel (EmpathyAccountsDialog *dialog)
       COL_ACCOUNT_SETTINGS, &settings,
       COL_ACCOUNT, &account, -1);
 
-  empathy_account_widget_discard_pending_changes (priv->setting_widget_object);
+  empathy_account_widget_discard_pending_changes (priv->setting_widget);
 
   if (account == NULL)
     {
@@ -580,7 +580,7 @@ accounts_dialog_has_valid_accounts (EmpathyAccountsDialog *dialog)
   GtkTreeIter iter;
   gboolean creating;
 
-  g_object_get (priv->setting_widget_object,
+  g_object_get (priv->setting_widget,
       "creating-account", &creating, NULL);
 
   if (!creating)
@@ -599,7 +599,7 @@ account_dialog_create_edit_params_dialog (EmpathyAccountsDialog *dialog)
 {
   EmpathyAccountsDialogPriv *priv = GET_PRIV (dialog);
   EmpathyAccountSettings *settings;
-  GtkWidget *subdialog, *content, *content_area, *align;
+  GtkWidget *subdialog, *content_area, *align;
 
   settings = accounts_dialog_model_get_selected_settings (dialog);
   if (settings == NULL)
@@ -610,22 +610,20 @@ account_dialog_create_edit_params_dialog (EmpathyAccountsDialog *dialog)
       GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
       NULL, NULL);
 
-  priv->setting_widget_object =
+  priv->setting_widget = (EmpathyAccountWidget *)
     empathy_account_widget_new_for_protocol (settings, FALSE);
 
-  g_object_add_weak_pointer (G_OBJECT (priv->setting_widget_object),
-      (gpointer *) &priv->setting_widget_object);
+  g_object_add_weak_pointer (G_OBJECT (priv->setting_widget),
+      (gpointer *) &priv->setting_widget);
 
   if (accounts_dialog_has_valid_accounts (dialog))
     empathy_account_widget_set_other_accounts_exist (
-        priv->setting_widget_object, TRUE);
+        priv->setting_widget, TRUE);
 
-  content = empathy_account_widget_get_widget (priv->setting_widget_object);
-
-  g_signal_connect (priv->setting_widget_object, "cancelled",
+  g_signal_connect (priv->setting_widget, "cancelled",
           G_CALLBACK (empathy_account_dialog_widget_cancelled_cb), dialog);
 
-  g_signal_connect_swapped (priv->setting_widget_object, "close",
+  g_signal_connect_swapped (priv->setting_widget, "close",
       G_CALLBACK (gtk_widget_destroy), subdialog);
 
   content_area = gtk_dialog_get_content_area (GTK_DIALOG (subdialog));
@@ -633,10 +631,10 @@ account_dialog_create_edit_params_dialog (EmpathyAccountsDialog *dialog)
   align = gtk_alignment_new (0.5, 0.5, 1, 1);
   gtk_alignment_set_padding (GTK_ALIGNMENT (align), 6, 0, 6, 6);
 
-  gtk_container_add (GTK_CONTAINER (align), content);
+  gtk_container_add (GTK_CONTAINER (align), GTK_WIDGET (priv->setting_widget));
   gtk_box_pack_start (GTK_BOX (content_area), align, TRUE, TRUE, 0);
 
-  gtk_widget_show (content);
+  gtk_widget_show (GTK_WIDGET (priv->setting_widget));
   gtk_widget_show (align);
   gtk_widget_show (subdialog);
 }
@@ -787,22 +785,15 @@ account_dialog_show_contact_details_failed (EmpathyAccountsDialog *dialog,
 }
 
 static void
-account_dialog_got_self_contact (TpConnection *conn,
-    EmpathyContact *contact,
-    const GError *in_error,
-    gpointer user_data,
-    GObject *dialog)
+create_contact_info_editor (EmpathyAccountsDialog *self,
+    TpConnection *conn)
 {
-  EmpathyAccountsDialogPriv *priv = GET_PRIV (dialog);
+  EmpathyAccountsDialogPriv *priv = GET_PRIV (self);
   GtkWidget *editor, *alig;
+  EmpathyContact *contact;
 
-  if (in_error != NULL)
-    {
-      DEBUG ("Failed to get self-contact: %s", in_error->message);
-      account_dialog_show_contact_details_failed (
-          EMPATHY_ACCOUNTS_DIALOG (dialog), TRUE);
-      return;
-    }
+  contact = empathy_contact_dup_from_tp_contact (
+      tp_connection_get_self_contact (conn));
 
   alig = gtk_alignment_new (0.5, 0, 1, 1);
 
@@ -818,6 +809,7 @@ account_dialog_got_self_contact (TpConnection *conn,
   gtk_container_add (GTK_CONTAINER (alig), editor);
   gtk_widget_show (alig);
   gtk_widget_show (editor);
+  g_object_unref (contact);
 }
 
 static void
@@ -832,10 +824,6 @@ account_dialog_create_dialog_content (EmpathyAccountsDialog *dialog,
 
   account = empathy_account_settings_get_account (settings);
 
-  // if (priv->setting_widget_object != NULL)
-  //   g_object_remove_weak_pointer (G_OBJECT (priv->setting_widget_object),
-  //       (gpointer *) &priv->setting_widget_object);
-
   priv->dialog_content = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
   gtk_container_add (GTK_CONTAINER (priv->alignment_settings),
       priv->dialog_content);
@@ -848,10 +836,7 @@ account_dialog_create_dialog_content (EmpathyAccountsDialog *dialog,
   if (conn != NULL &&
       tp_proxy_get_invalidated (conn) == NULL)
     {
-      empathy_tp_contact_factory_get_from_handle (conn,
-          tp_connection_get_self_handle (conn),
-          account_dialog_got_self_contact,
-          NULL, NULL, G_OBJECT (dialog));
+      create_contact_info_editor (dialog, conn);
     }
   else
     {
@@ -938,9 +923,9 @@ accounts_dialog_has_pending_change (EmpathyAccountsDialog *dialog,
   if (gtk_tree_selection_get_selected (selection, &model, &iter))
     gtk_tree_model_get (model, &iter, COL_ACCOUNT, account, -1);
 
-  return priv->setting_widget_object != NULL
+  return priv->setting_widget != NULL
       && empathy_account_widget_contains_pending_changes (
-          priv->setting_widget_object);
+          priv->setting_widget);
 }
 
 static void
@@ -1011,7 +996,7 @@ accounts_dialog_button_add_clicked_cb (GtkWidget *button,
 
   response = gtk_dialog_run (GTK_DIALOG (dialog));
 
-  if (response == GTK_RESPONSE_OK)
+  if (response == GTK_RESPONSE_APPLY)
     {
       EmpathyAccountSettings *settings;
       TpAccount *account;
@@ -1390,24 +1375,6 @@ accounts_dialog_button_remove_clicked_cb (GtkWidget *button,
   accounts_dialog_remove_account_iter (dialog, &iter);
 }
 
-#ifdef HAVE_MEEGO
-static void
-accounts_dialog_view_delete_activated_cb (EmpathyCellRendererActivatable *cell,
-    const gchar *path_string,
-    EmpathyAccountsDialog *dialog)
-{
-  EmpathyAccountsDialogPriv *priv = GET_PRIV (dialog);
-  GtkTreeModel *model;
-  GtkTreeIter iter;
-
-  model = gtk_tree_view_get_model (GTK_TREE_VIEW (priv->treeview));
-  if (!gtk_tree_model_get_iter_from_string (model, &iter, path_string))
-    return;
-
-  accounts_dialog_remove_account_iter (dialog, &iter);
-}
-#endif /* HAVE_MEEGO */
-
 static void
 accounts_dialog_model_add_columns (EmpathyAccountsDialog *dialog)
 {
@@ -1443,35 +1410,22 @@ accounts_dialog_model_add_columns (EmpathyAccountsDialog *dialog)
       NULL);
 
   /* Name renderer */
-  cell = gtk_cell_renderer_text_new ();
-  g_object_set (cell,
+  priv->name_renderer = gtk_cell_renderer_text_new ();
+  g_object_set (priv->name_renderer,
       "ellipsize", PANGO_ELLIPSIZE_END,
       "width-chars", 25,
       "editable", TRUE,
       NULL);
-  gtk_tree_view_column_pack_start (column, cell, TRUE);
-  gtk_tree_view_column_add_attribute (column, cell, "text", COL_NAME);
-  g_signal_connect (cell, "edited",
+  gtk_tree_view_column_pack_start (column, priv->name_renderer, TRUE);
+  gtk_tree_view_column_add_attribute (column, priv->name_renderer,
+      "text", COL_NAME);
+  g_signal_connect (priv->name_renderer, "edited",
       G_CALLBACK (accounts_dialog_name_edited_cb),
       dialog);
-  g_signal_connect (cell, "editing-started",
+  g_signal_connect (priv->name_renderer, "editing-started",
       G_CALLBACK (accounts_dialog_name_editing_started_cb),
       dialog);
-  g_object_set (cell, "ypad", 4, NULL);
-
-#ifdef HAVE_MEEGO
-  /* Delete column */
-  cell = empathy_cell_renderer_activatable_new ();
-  gtk_tree_view_column_pack_start (column, cell, FALSE);
-  g_object_set (cell,
-        "icon-name", GTK_STOCK_DELETE,
-        "show-on-select", TRUE,
-        NULL);
-
-  g_signal_connect (cell, "path-activated",
-      G_CALLBACK (accounts_dialog_view_delete_activated_cb),
-      dialog);
-#endif /* HAVE_MEEGO */
+  g_object_set (priv->name_renderer, "ypad", 4, NULL);
 }
 
 static EmpathyAccountSettings *
@@ -1515,9 +1469,9 @@ accounts_dialog_model_selection_changed (GtkTreeSelection *selection,
   if (settings != NULL)
     g_object_unref (settings);
 
-  if (priv->setting_widget_object != NULL)
+  if (priv->setting_widget != NULL)
     {
-      g_object_get (priv->setting_widget_object,
+      g_object_get (priv->setting_widget,
           "creating-account", &creating, NULL);
     }
 
@@ -1546,7 +1500,7 @@ accounts_dialog_selection_change_response_cb (GtkDialog *message_dialog,
 
         priv->force_change_row = TRUE;
         empathy_account_widget_discard_pending_changes (
-            priv->setting_widget_object);
+            priv->setting_widget);
 
         path = gtk_tree_row_reference_get_path (priv->destination_row);
         selection = gtk_tree_view_get_selection (
@@ -1731,6 +1685,30 @@ accounts_dialog_treeview_enabled_cb (GtkMenuItem *item,
   enable_and_connect_account (account, !enabled);
 }
 
+static void
+accounts_dialog_treeview_rename_cb (GtkMenuItem *item,
+    EmpathyAccountsDialog *self)
+{
+  EmpathyAccountsDialogPriv *priv = GET_PRIV (self);
+  GtkTreePath *path;
+  GtkTreeIter iter;
+  GtkTreeSelection *selection;
+  GtkTreeModel *model;
+
+  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (priv->treeview));
+  if (!gtk_tree_selection_get_selected (selection, &model, &iter))
+    return;
+  path = gtk_tree_model_get_path (model, &iter);
+
+  g_object_set (G_OBJECT (priv->name_renderer), "editable", TRUE, NULL);
+
+  gtk_widget_grab_focus (GTK_WIDGET (priv->treeview));
+  gtk_tree_view_set_cursor (GTK_TREE_VIEW (priv->treeview), path,
+      gtk_tree_view_get_column (GTK_TREE_VIEW (priv->treeview), 0), TRUE);
+
+  gtk_tree_path_free (path);
+}
+
 static gboolean
 accounts_dialog_treeview_button_press_event_cb (GtkTreeView *view,
     GdkEventButton *event,
@@ -1742,8 +1720,7 @@ accounts_dialog_treeview_button_press_event_cb (GtkTreeView *view,
   GtkTreePath *path = NULL;
   GtkTreeIter iter;
   GtkWidget *menu;
-  GtkWidget *item_enable, *item_disable;
-  GtkWidget *image_enable, *image_disable;
+  GtkWidget *item;
 
   /* ignore multiple clicks */
   if (event->type != GDK_BUTTON_PRESS)
@@ -1766,49 +1743,37 @@ accounts_dialog_treeview_button_press_event_cb (GtkTreeView *view,
   /* Create the menu */
   menu = empathy_context_menu_new (GTK_WIDGET (view));
 
-  /* Get images for menu items */
-  image_enable = gtk_image_new_from_icon_name (empathy_icon_name_for_presence (
-        tp_account_manager_get_most_available_presence (
-          priv->account_manager, NULL, NULL)),
-      GTK_ICON_SIZE_MENU);
-  image_disable = gtk_image_new_from_icon_name (
-      empathy_icon_name_for_presence (TP_CONNECTION_PRESENCE_TYPE_OFFLINE),
-      GTK_ICON_SIZE_MENU);
-
-  /* Menu items: to enabled/disable the account */
-  item_enable = gtk_image_menu_item_new_with_mnemonic (_("_Enable"));
-  item_disable = gtk_image_menu_item_new_with_mnemonic (_("_Disable"));
-  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item_enable),
-      image_enable);
-  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item_disable),
-      image_disable);
-
-  gtk_menu_shell_append (GTK_MENU_SHELL (menu), item_enable);
-  gtk_menu_shell_append (GTK_MENU_SHELL (menu), item_disable);
+  /* Menu item: to enabled/disable the account */
+  item = gtk_check_menu_item_new_with_mnemonic (_("_Enabled"));
+
+  gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
 
   if (account_can_be_enabled (account))
     {
-      if (tp_account_is_enabled (account))
-        {
-          tp_g_signal_connect_object (item_disable, "activate",
-              G_CALLBACK (accounts_dialog_treeview_enabled_cb), account, 0);
-          gtk_widget_set_sensitive (item_enable, FALSE);
-        }
-      else
-        {
-          tp_g_signal_connect_object (item_enable, "activate",
-              G_CALLBACK (accounts_dialog_treeview_enabled_cb), account, 0);
-          gtk_widget_set_sensitive (item_disable, FALSE);
-        }
+      gboolean active;
+
+      active = tp_account_is_enabled (account);
+      gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item),
+          active);
+
+      tp_g_signal_connect_object (item, "activate",
+          G_CALLBACK (accounts_dialog_treeview_enabled_cb), account, 0);
     }
   else
     {
-      gtk_widget_set_sensitive (item_enable, FALSE);
-      gtk_widget_set_sensitive (item_disable, FALSE);
+      gtk_widget_set_sensitive (item, FALSE);
     }
 
-  gtk_widget_show (item_enable);
-  gtk_widget_show (item_disable);
+  gtk_widget_show (item);
+
+  /* Menu item: Rename */
+  item = gtk_menu_item_new_with_mnemonic (_("Rename"));
+  gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+
+  tp_g_signal_connect_object (item, "activate",
+      G_CALLBACK (accounts_dialog_treeview_rename_cb), dialog, 0);
+
+  gtk_widget_show (item);
 
   /* FIXME: Add here presence items, to be able to set per-account presence */
 
@@ -2072,11 +2037,11 @@ accounts_dialog_accounts_model_row_inserted_cb (GtkTreeModel *model,
 {
   EmpathyAccountsDialogPriv *priv = GET_PRIV (dialog);
 
-  if (priv->setting_widget_object != NULL &&
+  if (priv->setting_widget != NULL &&
       accounts_dialog_has_valid_accounts (dialog))
     {
       empathy_account_widget_set_other_accounts_exist (
-          priv->setting_widget_object, TRUE);
+          priv->setting_widget, TRUE);
     }
 }
 
@@ -2087,11 +2052,11 @@ accounts_dialog_accounts_model_row_deleted_cb (GtkTreeModel *model,
 {
   EmpathyAccountsDialogPriv *priv = GET_PRIV (dialog);
 
-  if (priv->setting_widget_object != NULL &&
+  if (priv->setting_widget != NULL &&
       !accounts_dialog_has_valid_accounts (dialog))
     {
       empathy_account_widget_set_other_accounts_exist (
-          priv->setting_widget_object, FALSE);
+          priv->setting_widget, FALSE);
     }
 }
 
@@ -2467,11 +2432,6 @@ accounts_dialog_build_ui (EmpathyAccountsDialog *dialog)
 
   action_area = gtk_dialog_get_action_area (GTK_DIALOG (dialog));
 
-#ifdef HAVE_MEEGO
-  gtk_widget_hide (action_area);
-  gtk_widget_hide (priv->button_remove);
-#endif /* HAVE_MEEGO */
-
   /* Display loading page */
   priv->loading = TRUE;
 
@@ -2590,6 +2550,12 @@ do_dispose (GObject *obj)
       priv->connecting_id = 0;
     }
 
+  if (priv->connectivity)
+    {
+      g_object_unref (priv->connectivity);
+      priv->connectivity = NULL;
+    }
+
   if (priv->account_manager != NULL)
     {
       g_object_unref (priv->account_manager);
@@ -2602,12 +2568,6 @@ do_dispose (GObject *obj)
       priv->cms = NULL;
     }
 
-  if (priv->connectivity)
-    {
-      g_object_unref (priv->connectivity);
-      priv->connectivity = NULL;
-    }
-
   if (priv->initial_selection != NULL)
     {
       g_object_unref (priv->initial_selection);
@@ -2675,7 +2635,8 @@ do_constructed (GObject *object)
   tp_proxy_prepare_async (priv->account_manager, NULL,
       accounts_dialog_manager_ready_cb, dialog);
 
-  priv->connectivity = empathy_connectivity_dup_singleton ();
+  priv->connectivity = g_network_monitor_get_default ();
+  g_object_ref (priv->connectivity);
 }
 
 static void
@@ -2777,10 +2738,10 @@ empathy_accounts_dialog_is_creating (EmpathyAccountsDialog *dialog)
   EmpathyAccountsDialogPriv *priv = GET_PRIV (dialog);
   gboolean result = FALSE;
 
-  if (priv->setting_widget_object == NULL)
+  if (priv->setting_widget == NULL)
     goto out;
 
-  g_object_get (priv->setting_widget_object,
+  g_object_get (priv->setting_widget,
       "creating-account", &result, NULL);
 
 out:
index 6b51820f7e3d53f88b63179319ca8790a16a0ebc..8feb346e546f5b8c2f75e19d4a508312bfde8ce4 100644 (file)
@@ -195,6 +195,7 @@ local_cmdline (GApplication *app,
   optcontext = g_option_context_new (N_("- Empathy Accounts"));
   g_option_context_add_group (optcontext, gtk_get_option_group (TRUE));
   g_option_context_add_main_entries (optcontext, options, GETTEXT_PACKAGE);
+  g_option_context_set_translation_domain (optcontext, GETTEXT_PACKAGE);
 
   argv = *arguments;
   for (i = 0; argv[i] != NULL; i++)
@@ -222,8 +223,8 @@ main (int argc, char *argv[])
   GObjectClass *app_class;
   gint retval;
 
-  g_thread_init (NULL);
   empathy_init ();
+  textdomain (GETTEXT_PACKAGE);
 
   gtk_init (&argc, &argv);
   empathy_gtk_init ();
@@ -233,7 +234,6 @@ main (int argc, char *argv[])
   /* Make empathy and empathy-accounts appear as the same app in gnome-shell */
   gdk_set_program_class ("Empathy");
   gtk_window_set_default_icon_name ("empathy");
-  textdomain (GETTEXT_PACKAGE);
 
   app = gtk_application_new (EMPATHY_ACCOUNTS_DBUS_NAME,
       G_APPLICATION_HANDLES_COMMAND_LINE);
index 2968fb53c5341d0447275e56d83b4af49463e35a..d48e6af20df8aba2cf6101e28908287291e4430b 100644 (file)
@@ -65,7 +65,7 @@ struct _EmpathyGstAudioSinkPrivate
   gboolean echo_cancel;
   gdouble volume;
   gint volume_idle_id;
-  GStaticMutex volume_mutex;
+  GMutex volume_mutex;
 };
 
 #define EMPATHY_GST_AUDIO_SINK_GET_PRIVATE(o) \
@@ -77,7 +77,7 @@ 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);
+  g_mutex_init (&self->priv->volume_mutex);
 }
 
 static GstPad * empathy_audio_sink_request_new_pad (GstElement *self,
@@ -95,9 +95,9 @@ empathy_audio_sink_set_property (GObject *object,
   switch (property_id)
     {
       case PROP_VOLUME:
-        g_static_mutex_lock (&self->priv->volume_mutex);
+        g_mutex_lock (&self->priv->volume_mutex);
         self->priv->volume = g_value_get_double (value);
-        g_static_mutex_unlock (&self->priv->volume_mutex);
+        g_mutex_unlock (&self->priv->volume_mutex);
         break;
       default:
         G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
@@ -129,7 +129,7 @@ empathy_audio_sink_dispose (GObject *object)
     g_source_remove (priv->volume_idle_id);
   priv->volume_idle_id = 0;
 
-  g_static_mutex_free (&self->priv->volume_mutex);
+  g_mutex_clear (&self->priv->volume_mutex);
 
   /* release any references held by the object here */
   if (G_OBJECT_CLASS (empathy_audio_sink_parent_class)->dispose)
@@ -236,9 +236,9 @@ 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);
+  g_mutex_lock (&self->priv->volume_mutex);
   self->priv->volume_idle_id = 0;
-  g_static_mutex_unlock (&self->priv->volume_mutex);
+  g_mutex_unlock (&self->priv->volume_mutex);
 
   g_object_notify (G_OBJECT (self), "volume");
 
@@ -253,7 +253,7 @@ empathy_audio_sink_volume_updated (GObject *object,
   EmpathyGstAudioSink *self = EMPATHY_GST_AUDIO_SINK (user_data);
   gdouble volume;
 
-  g_static_mutex_lock (&self->priv->volume_mutex);
+  g_mutex_lock (&self->priv->volume_mutex);
 
   g_object_get (object, "volume", &volume, NULL);
   if (self->priv->volume == volume)
@@ -265,7 +265,7 @@ empathy_audio_sink_volume_updated (GObject *object,
       empathy_audio_sink_volume_idle_updated, self);
 
 out:
-  g_static_mutex_unlock (&self->priv->volume_mutex);
+  g_mutex_unlock (&self->priv->volume_mutex);
 }
 
 static gboolean
@@ -274,9 +274,9 @@ 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);
+  g_mutex_lock (&self->priv->volume_mutex);
   self->priv->volume_idle_id = 0;
-  g_static_mutex_unlock (&self->priv->volume_mutex);
+  g_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
@@ -329,11 +329,11 @@ empathy_audio_sink_request_new_pad (GstElement *element,
 
   if (GST_IS_STREAM_VOLUME (self->priv->sink))
     {
-      g_static_mutex_lock (&self->priv->volume_mutex);
+      g_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);
+      g_mutex_unlock (&self->priv->volume_mutex);
     }
   else
     {
index 9a882c1466e471c7b2b4e0e8f5efb23563399716..590c65b66abb83caba1d7d4bfb65fbf98b3d5fbb 100644 (file)
@@ -77,7 +77,7 @@ struct _EmpathyGstAudioSrcPrivate
   /* the mixer track on src we follow and adjust */
   GstMixerTrack *track;
 
-  GMutex *lock;
+  GMutex lock;
   guint level_idle_id;
   guint volume_idle_id;
 };
@@ -93,7 +93,7 @@ struct _EmpathyGstAudioSrcPrivate
 static void
 empathy_audio_set_hw_mute (EmpathyGstAudioSrc *self, gboolean mute)
 {
-  g_mutex_lock (self->priv->lock);
+  g_mutex_lock (&self->priv->lock);
   /* If there is no mixer available ignore the setting */
   if (self->priv->track == NULL)
     goto out;
@@ -101,7 +101,7 @@ empathy_audio_set_hw_mute (EmpathyGstAudioSrc *self, gboolean mute)
   gst_mixer_set_mute (GST_MIXER (self->priv->src), self->priv->track, mute);
 
 out:
-  g_mutex_unlock (self->priv->lock);
+  g_mutex_unlock (&self->priv->lock);
   self->priv->mute = mute;
 }
 
@@ -110,13 +110,13 @@ empathy_audio_src_get_hw_mute (EmpathyGstAudioSrc *self)
 {
   gboolean result = self->priv->mute;
 
-  g_mutex_lock (self->priv->lock);
+  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);
+  g_mutex_unlock (&self->priv->lock);
 
   return result;
 }
@@ -128,7 +128,7 @@ empathy_audio_src_set_hw_volume (EmpathyGstAudioSrc *self,
   gint volumes[MAX_MIC_CHANNELS];
   int i;
 
-  g_mutex_lock (self->priv->lock);
+  g_mutex_lock (&self->priv->lock);
   /* If there is no mixer available ignore the setting */
   if (self->priv->track == NULL)
     goto out;
@@ -140,7 +140,7 @@ empathy_audio_src_set_hw_volume (EmpathyGstAudioSrc *self,
     self->priv->track, volumes);
 
 out:
-   g_mutex_unlock (self->priv->lock);
+   g_mutex_unlock (&self->priv->lock);
 
   self->priv->volume = volume;
 }
@@ -151,7 +151,7 @@ empathy_audio_src_get_hw_volume (EmpathyGstAudioSrc *self)
   gint volumes[MAX_MIC_CHANNELS];
   gdouble result = self->priv->volume;
 
-  g_mutex_lock (self->priv->lock);
+  g_mutex_lock (&self->priv->lock);
   if (self->priv->track == NULL)
     goto out;
 
@@ -160,7 +160,7 @@ empathy_audio_src_get_hw_volume (EmpathyGstAudioSrc *self)
   result = volumes[0]/(gdouble)self->priv->track->max_volume;
 
 out:
-  g_mutex_unlock (self->priv->lock);
+  g_mutex_unlock (&self->priv->lock);
 
   return result;
 }
@@ -347,7 +347,8 @@ empathy_audio_src_init (EmpathyGstAudioSrc *obj)
 
   obj->priv = priv;
   priv->peak_level = -G_MAXDOUBLE;
-  priv->lock = g_mutex_new ();
+  g_mutex_init (&priv->lock);
+
   priv->volume = 1.0;
 
   priv->src = create_src ();
@@ -439,14 +440,14 @@ empathy_audio_src_get_property (GObject *object,
         g_value_set_boolean (value, priv->mute);
         break;
       case PROP_PEAK_LEVEL:
-        g_mutex_lock (priv->lock);
+        g_mutex_lock (&priv->lock);
         g_value_set_double (value, priv->peak_level);
-        g_mutex_unlock (priv->lock);
+        g_mutex_unlock (&priv->lock);
         break;
       case PROP_RMS_LEVEL:
-        g_mutex_lock (priv->lock);
+        g_mutex_lock (&priv->lock);
         g_value_set_double (value, priv->rms_level);
-        g_mutex_unlock (priv->lock);
+        g_mutex_unlock (&priv->lock);
         break;
       case PROP_MICROPHONE:
         g_value_set_uint (value, priv->source_idx);
@@ -552,7 +553,7 @@ empathy_audio_src_finalize (GObject *object)
   EmpathyGstAudioSrcPrivate *priv = EMPATHY_GST_AUDIO_SRC_GET_PRIVATE (self);
 
   /* free any data held directly by the object here */
-  g_mutex_free (priv->lock);
+  g_mutex_clear (&priv->lock);
 
   G_OBJECT_CLASS (empathy_audio_src_parent_class)->finalize (object);
 }
@@ -563,13 +564,13 @@ empathy_audio_src_levels_updated (gpointer user_data)
   EmpathyGstAudioSrc *self = EMPATHY_GST_AUDIO_SRC (user_data);
   EmpathyGstAudioSrcPrivate *priv = EMPATHY_GST_AUDIO_SRC_GET_PRIVATE (self);
 
-  g_mutex_lock (priv->lock);
+  g_mutex_lock (&priv->lock);
 
   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->level_idle_id = 0;
 
-  g_mutex_unlock (priv->lock);
+  g_mutex_unlock (&priv->lock);
 
   return FALSE;
 }
@@ -582,9 +583,9 @@ empathy_audio_src_volume_changed (gpointer user_data)
   gdouble volume;
   gboolean mute;
 
-  g_mutex_lock (priv->lock);
+  g_mutex_lock (&priv->lock);
   priv->volume_idle_id = 0;
-  g_mutex_unlock (priv->lock);
+  g_mutex_unlock (&priv->lock);
 
   volume = empathy_audio_src_get_hw_volume (self);
 
@@ -652,7 +653,7 @@ empathy_audio_src_handle_message (GstBin *bin, GstMessage *message)
           rms = MAX (db, rms);
         }
 
-      g_mutex_lock (priv->lock);
+      g_mutex_lock (&priv->lock);
 
       priv->peak_level = peak;
       priv->rms_level = rms;
@@ -660,7 +661,7 @@ empathy_audio_src_handle_message (GstBin *bin, GstMessage *message)
         priv->level_idle_id = g_idle_add (
           empathy_audio_src_levels_updated, self);
 
-      g_mutex_unlock (priv->lock);
+      g_mutex_unlock (&priv->lock);
     }
   else if (GST_MESSAGE_TYPE (message) == GST_MESSAGE_ELEMENT &&
         GST_MESSAGE_SRC (message) == GST_OBJECT (priv->src))
@@ -677,13 +678,13 @@ empathy_audio_src_handle_message (GstBin *bin, GstMessage *message)
           GST_MIXER_MESSAGE_MUTE_TOGGLED)
         gst_mixer_message_parse_mute_toggled (message, &track, NULL);
 
-      g_mutex_lock (priv->lock);
+      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);
+      g_mutex_unlock (&priv->lock);
     }
   else if  (GST_MESSAGE_TYPE (message) == GST_MESSAGE_STATE_CHANGED &&
       GST_MESSAGE_SRC (message) == GST_OBJECT (priv->src))
@@ -699,18 +700,18 @@ empathy_audio_src_handle_message (GstBin *bin, GstMessage *message)
        * Empathy. We want to pick up the level pulseaudio saved */
       if (old == GST_STATE_NULL && new == GST_STATE_READY)
         {
-          g_mutex_lock (priv->lock);
+          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);
+          g_mutex_unlock (&priv->lock);
         }
       else if (old == GST_STATE_READY && new == GST_STATE_NULL)
         {
-          g_mutex_lock (priv->lock);
+          g_mutex_lock (&priv->lock);
           priv->track = NULL;
-          g_mutex_unlock (priv->lock);
+          g_mutex_unlock (&priv->lock);
         }
     }
 
index ecf1ad1736c1c3473f064b2786b583f8496a76a3..ee33703feb863c0925be37bc332578577caee4b1 100644 (file)
@@ -283,8 +283,6 @@ main (int argc,
   TpSimpleClientFactory *tp_factory;
   TpDBusDaemon *dbus;
 
-  g_thread_init (NULL);
-
   context = g_option_context_new (N_(" - Empathy authentication client"));
   g_option_context_add_group (context, gtk_get_option_group (TRUE));
   g_option_context_set_translation_domain (context, GETTEXT_PACKAGE);
diff --git a/src/empathy-av.c b/src/empathy-av.c
deleted file mode 100644 (file)
index 70acfc4..0000000
+++ /dev/null
@@ -1,172 +0,0 @@
-/*
- * Copyright (C) 2007-2010 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: Xavier Claessens <xclaesse@gmail.com>
- *          Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
- */
-
-#include <config.h>
-
-#include <glib.h>
-#include <glib/gi18n.h>
-#include <gtk/gtk.h>
-
-#include <telepathy-glib/debug-sender.h>
-
-#include <libempathy-gtk/empathy-ui-utils.h>
-
-#include "empathy-streamed-media-window.h"
-#include "empathy-streamed-media-factory.h"
-
-#define DEBUG_FLAG EMPATHY_DEBUG_VOIP
-#include <libempathy/empathy-debug.h>
-
-#include <gst/gst.h>
-
-/* Exit after $TIMEOUT seconds if not displaying any call window */
-#define TIMEOUT 60
-
-#define EMPATHY_AV_DBUS_NAME "org.gnome.Empathy.AudioVideo"
-
-static GtkApplication *app = NULL;
-static gboolean activated = FALSE;
-static gboolean use_timer = TRUE;
-
-static EmpathyStreamedMediaFactory *call_factory = NULL;
-
-static void
-new_call_handler_cb (EmpathyStreamedMediaFactory *factory,
-    EmpathyStreamedMediaHandler *handler,
-    gboolean outgoing,
-    gpointer user_data)
-{
-  EmpathyStreamedMediaWindow *window;
-
-  DEBUG ("Create a new StreamedMedia window");
-
-  window = empathy_streamed_media_window_new (handler);
-
-  g_application_hold (G_APPLICATION (app));
-
-  g_signal_connect_swapped (window, "destroy",
-      G_CALLBACK (g_application_release), app);
-
-  gtk_widget_show (GTK_WIDGET (window));
-}
-
-static void
-activate_cb (GApplication *application)
-{
-  GError *error = NULL;
-
-  if (activated)
-    return;
-
-  activated = TRUE;
-
-  if (!use_timer)
-    {
-      /* keep a 'ref' to the application */
-      g_application_hold (G_APPLICATION (app));
-    }
-
-  g_assert (call_factory == NULL);
-  call_factory = empathy_streamed_media_factory_initialise ();
-
-  g_signal_connect (G_OBJECT (call_factory), "new-streamed-media-handler",
-      G_CALLBACK (new_call_handler_cb), NULL);
-
-  if (!empathy_streamed_media_factory_register (call_factory, &error))
-    {
-      g_critical ("Failed to register Handler: %s", error->message);
-      g_error_free (error);
-    }
-}
-
-int
-main (int argc,
-    char *argv[])
-{
-  GOptionContext *optcontext;
-  GOptionEntry options[] = {
-      { NULL }
-  };
-#ifdef ENABLE_DEBUG
-  TpDebugSender *debug_sender;
-#endif
-  GError *error = NULL;
-  gint retval;
-
-  /* Init */
-  g_thread_init (NULL);
-
-  optcontext = g_option_context_new (N_("- Empathy Audio/Video Client"));
-  g_option_context_add_group (optcontext, gst_init_get_option_group ());
-  g_option_context_add_group (optcontext, gtk_get_option_group (TRUE));
-  g_option_context_add_main_entries (optcontext, options, GETTEXT_PACKAGE);
-
-  if (!g_option_context_parse (optcontext, &argc, &argv, &error)) {
-    g_print ("%s\nRun '%s --help' to see a full list of available command "
-        "line options.\n",
-        error->message, argv[0]);
-    g_warning ("Error in empathy-av init: %s", error->message);
-    return EXIT_FAILURE;
-  }
-
-  g_option_context_free (optcontext);
-
-  empathy_gtk_init ();
-  g_set_application_name (_("Empathy Audio/Video Client"));
-
-  /* Make empathy and empathy-av appear as the same app in gnome-shell */
-  gdk_set_program_class ("Empathy");
-  gtk_window_set_default_icon_name ("empathy");
-  textdomain (GETTEXT_PACKAGE);
-
-  app = gtk_application_new (EMPATHY_AV_DBUS_NAME, G_APPLICATION_FLAGS_NONE);
-  g_signal_connect (app, "activate", G_CALLBACK (activate_cb), NULL);
-
-#ifdef ENABLE_DEBUG
-  /* Set up debug sender */
-  debug_sender = tp_debug_sender_dup ();
-  g_log_set_default_handler (tp_debug_sender_log_handler, G_LOG_DOMAIN);
-#endif
-
-  if (g_getenv ("EMPATHY_PERSIST") != NULL)
-    {
-      DEBUG ("Disable timer");
-
-      use_timer = FALSE;
-    }
-
-  /* the inactivity timeout can only be set while the application is held */
-  g_application_hold (G_APPLICATION (app));
-  g_application_set_inactivity_timeout (G_APPLICATION (app), TIMEOUT * 1000);
-  g_application_release (G_APPLICATION (app));
-
-  retval = g_application_run (G_APPLICATION (app), argc, argv);
-
-  g_object_unref (app);
-  tp_clear_object (&call_factory);
-
-#ifdef ENABLE_DEBUG
-  g_object_unref (debug_sender);
-#endif
-
-  return retval;
-}
index 35ceeb046ee8d91a53ed55e0dfe3a73f9681f979..de21506d51e51e98b570202c11cfa55964dd7aab 100644 (file)
@@ -102,29 +102,16 @@ auto_reject_ctx_free (AutoRejectCtx *ctx)
 }
 
 static void
-get_contact_cb (TpConnection *connection,
-    guint n_contacts,
-    TpContact * const *contacts,
-    guint n_failed,
-    const TpHandle *failed,
-    const GError *error,
-    gpointer user_data,
-    GObject *weak_object)
+display_reject_notification (EmpathyCallObserver *self,
+    TpChannel *channel)
 {
-  EmpathyCallObserver *self = (EmpathyCallObserver *) weak_object;
-  NotifyNotification *notification;
   TpContact *contact;
+  NotifyNotification *notification;
   gchar *summary, *body;
   EmpathyContact *emp_contact;
   GdkPixbuf *pixbuf;
 
-  if (n_contacts != 1)
-    {
-      DEBUG ("Failed to get TpContact; ignoring notification bubble");
-      return;
-    }
-
-  contact = contacts[0];
+  contact = tp_channel_get_target_contact (channel);
 
   summary = g_strdup_printf (_("Missed call from %s"),
       tp_contact_get_alias (contact));
@@ -152,21 +139,6 @@ get_contact_cb (TpConnection *connection,
   g_object_unref (emp_contact);
 }
 
-static void
-display_reject_notification (EmpathyCallObserver *self,
-    TpChannel *channel)
-{
-  TpHandle handle;
-  TpContactFeature features[] = { TP_CONTACT_FEATURE_ALIAS,
-      TP_CONTACT_FEATURE_AVATAR_DATA };
-
-  handle = tp_channel_get_handle (channel, NULL);
-
-  tp_connection_get_contacts_by_handle (tp_channel_borrow_connection (channel),
-      1, &handle, G_N_ELEMENTS (features), features, get_contact_cb,
-      g_object_ref (channel), g_object_unref, G_OBJECT (self));
-}
-
 static TpChannel *
 find_main_channel (GList *channels)
 {
index 083bdb1751fffbcfd92082d6c93942cffe87a268..56f999d99855df0f08ddfd1c07b744c887225c59 100644 (file)
@@ -61,7 +61,6 @@
 #include "empathy-call-window.h"
 #include "empathy-call-window-fullscreen.h"
 #include "empathy-call-factory.h"
-#include "empathy-video-widget.h"
 #include "empathy-about-dialog.h"
 #include "empathy-audio-src.h"
 #include "empathy-audio-sink.h"
@@ -77,6 +76,9 @@
 #define CONTENT_HBOX_SPACING 3
 #define CONTENT_HBOX_CHILDREN_PACKING_PADDING 3
 
+#define REMOTE_VIDEO_DEFAULT_WIDTH 320
+#define REMOTE_VIDEO_DEFAULT_HEIGHT 240
+
 #define SELF_VIDEO_SECTION_WIDTH 120
 #define SELF_VIDEO_SECTION_HEIGHT 90
 #define SELF_VIDEO_SECTION_MARGIN 2
@@ -87,9 +89,8 @@
 
 /* The avatar's default width and height are set to the same value because we
    want a square icon. */
-#define REMOTE_CONTACT_AVATAR_DEFAULT_WIDTH EMPATHY_VIDEO_WIDGET_DEFAULT_HEIGHT
-#define REMOTE_CONTACT_AVATAR_DEFAULT_HEIGHT \
-  EMPATHY_VIDEO_WIDGET_DEFAULT_HEIGHT
+#define REMOTE_CONTACT_AVATAR_DEFAULT_HEIGHT REMOTE_VIDEO_DEFAULT_HEIGHT
+#define REMOTE_CONTACT_AVATAR_DEFAULT_WIDTH REMOTE_VIDEO_DEFAULT_HEIGHT
 
 #define SMALL_TOOLBAR_SIZE 36
 
@@ -242,7 +243,7 @@ struct _EmpathyCallWindowPriv
   GTimer *timer;
   guint timer_id;
 
-  GMutex *lock;
+  GMutex lock;
   gboolean call_started;
   gboolean sending_video;
   CameraState camera_state;
@@ -1635,7 +1636,7 @@ empathy_call_window_init (EmpathyCallWindow *self)
   g_signal_connect (priv->camera_monitor, "removed",
       G_CALLBACK (empathy_call_window_camera_removed_cb), self);
 
-  priv->lock = g_mutex_new ();
+  g_mutex_init (&priv->lock);
 
   gtk_container_add (GTK_CONTAINER (self), top_vbox);
 
@@ -1655,7 +1656,7 @@ 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);
+      REMOTE_VIDEO_DEFAULT_WIDTH, REMOTE_VIDEO_DEFAULT_HEIGHT);
 
   /* Set the background color to that of the rest of the window */
   context = gtk_widget_get_style_context (priv->content_hbox);
@@ -2368,7 +2369,7 @@ empathy_call_window_finalize (GObject *object)
   disconnect_video_output_motion_handler (self);
 
   /* free any data held directly by the object here */
-  g_mutex_free (priv->lock);
+  g_mutex_clear (&priv->lock);
 
   g_timer_destroy (priv->timer);
 
@@ -2541,7 +2542,7 @@ empathy_call_window_disconnected (EmpathyCallWindow *self,
 
   if (could_reset_pipeline)
     {
-      g_mutex_lock (priv->lock);
+      g_mutex_lock (&priv->lock);
 
       g_timer_stop (priv->timer);
 
@@ -2549,7 +2550,7 @@ empathy_call_window_disconnected (EmpathyCallWindow *self,
         g_source_remove (priv->timer_id);
       priv->timer_id = 0;
 
-      g_mutex_unlock (priv->lock);
+      g_mutex_unlock (&priv->lock);
 
       if (!restart)
         /* We are about to destroy the window, no need to update it or create
@@ -3199,12 +3200,12 @@ empathy_call_window_state_changed_cb (EmpathyCallHandler *handler,
 
   g_object_unref (call);
 
-  g_mutex_lock (priv->lock);
+  g_mutex_lock (&priv->lock);
 
   priv->timer_id = g_timeout_add_seconds (1,
     empathy_call_window_update_timer, self);
 
-  g_mutex_unlock (priv->lock);
+  g_mutex_unlock (&priv->lock);
 
   empathy_call_window_update_timer (self);
 
@@ -3278,7 +3279,7 @@ empathy_call_window_src_added_cb (EmpathyCallHandler *handler,
 
   GstPad *pad;
 
-  g_mutex_lock (priv->lock);
+  g_mutex_lock (&priv->lock);
 
   g_object_get (content, "media-type", &media_type, NULL);
 
@@ -3345,7 +3346,7 @@ empathy_call_window_src_added_cb (EmpathyCallHandler *handler,
     }
 
 
-  g_mutex_unlock (priv->lock);
+  g_mutex_unlock (&priv->lock);
 
   return TRUE;
 }
index 207f32f2585d6df352b7bc1f19ed743fb5e6c73c..e19b1d05fda719eb6656b9876bfd4e4cef9d6fff 100644 (file)
@@ -186,9 +186,6 @@ main (int argc,
   gint retval;
   GtkSettings *gtk_settings;
 
-  /* Init */
-  g_thread_init (NULL);
-
 #ifdef GDK_WINDOWING_X11
   /* We can't call clutter_gst_init() before gtk_clutter_init(), so no choice
    * but to intiialise X11 threading ourself */
@@ -206,6 +203,7 @@ main (int argc,
       clutter_get_option_group_without_init ());
   g_option_context_add_group (optcontext, gtk_clutter_get_option_group ());
   g_option_context_add_main_entries (optcontext, options, GETTEXT_PACKAGE);
+  g_option_context_set_translation_domain (optcontext, GETTEXT_PACKAGE);
 
   if (!g_option_context_parse (optcontext, &argc, &argv, &error)) {
     g_print ("%s\nRun '%s --help' to see a full list of available command "
@@ -220,12 +218,12 @@ main (int argc,
   clutter_gst_init (&argc, &argv);
 
   empathy_gtk_init ();
+  textdomain (GETTEXT_PACKAGE);
   g_set_application_name (_("Empathy Audio/Video Client"));
 
   /* Make empathy and empathy-call appear as the same app in gnome-shell */
   gdk_set_program_class ("Empathy");
   gtk_window_set_default_icon_name ("empathy");
-  textdomain (GETTEXT_PACKAGE);
 
   gtk_settings = gtk_settings_get_default ();
   g_object_set (G_OBJECT (gtk_settings), "gtk-application-prefer-dark-theme",
index dd828fa68c5872b78cae4eea24c455a3e7818b35..6a163aaae8e3dd5707a91e938ee938cb237fc006 100644 (file)
@@ -135,6 +135,22 @@ chat_destroyed_cb (gpointer data,
       priv->num_displayed_chat);
 }
 
+static void
+join_cb (GObject *source,
+    GAsyncResult *result,
+    gpointer user_data)
+{
+  TpChannel *channel = TP_CHANNEL (source);
+  GError *error = NULL;
+
+  if (!tp_channel_join_finish (channel, result, &error))
+    {
+      DEBUG ("Failed to join chat (%s): %s",
+          tp_channel_get_identifier (channel), error->message);
+      g_error_free (error);
+    }
+}
+
 static void
 process_tp_chat (EmpathyChatManager *self,
     EmpathyTpChat *tp_chat,
@@ -193,7 +209,7 @@ process_tp_chat (EmpathyChatManager *self,
     {
       /* We have been invited to the room. Add ourself as member as this
        * channel has been approved. */
-      empathy_tp_chat_join (tp_chat);
+      tp_channel_join_async (TP_CHANNEL (tp_chat), "", join_cb, self);
     }
 }
 
index ac3584f34d2ddfca1e4553e28eae913fde6694b4..eb2e4b1330d2cc9182663cd360e3e926474b15a0 100644 (file)
@@ -45,7 +45,6 @@
 #include <libempathy/empathy-gsettings.h>
 #include <libempathy/empathy-utils.h>
 #include <libempathy/empathy-tp-contact-factory.h>
-#include <libempathy/empathy-contact-list.h>
 #include <libempathy/empathy-request-util.h>
 #include <libempathy/empathy-individual-manager.h>
 
@@ -1188,8 +1187,7 @@ chat_window_invite_participant_activate_cb (GtkAction         *action,
 
                contact = empathy_contact_dup_from_tp_contact (tp_contact);
 
-               empathy_contact_list_add (EMPATHY_CONTACT_LIST (tp_chat),
-                               contact, _("Inviting you to this room"));
+               empathy_tp_chat_add (tp_chat, contact, _("Inviting you to this room"));
 
                g_object_unref (contact);
        }
@@ -2045,7 +2043,7 @@ drag_data_received_individual_id (EmpathyChatWindow *self,
                        tp_channel_get_identifier ((TpChannel *) chat));
 
        contact = empathy_contact_dup_from_tp_contact (tp_contact);
-       empathy_contact_list_add (EMPATHY_CONTACT_LIST (chat), contact, NULL);
+       empathy_tp_chat_add (chat, contact, NULL);
        g_object_unref (contact);
 
 out:
index bebca43823a6c5a904b3ee94a91b9218c6ac85f3..3094b5137015f3063be880cbd336de163416285e 100644 (file)
@@ -103,12 +103,10 @@ main (int argc,
   gint retval;
   EmpathyIndividualManager *individual_mgr;
 
-  /* Init */
-  g_thread_init (NULL);
-
   optcontext = g_option_context_new (N_("- Empathy Chat Client"));
   g_option_context_add_group (optcontext, gtk_get_option_group (TRUE));
   g_option_context_add_main_entries (optcontext, options, GETTEXT_PACKAGE);
+  g_option_context_set_translation_domain (optcontext, GETTEXT_PACKAGE);
 
   if (!g_option_context_parse (optcontext, &argc, &argv, &error))
     {
index 0bf34e015c908d3c6a4e12561361032862008252..d4ce3273ab62213c859abc04b1504ca85909ca67 100644 (file)
@@ -74,7 +74,7 @@ command_line_cb (GApplication *application,
   optcontext = g_option_context_new (N_("- Empathy Debugger"));
   g_option_context_add_group (optcontext, gtk_get_option_group (TRUE));
   g_option_context_add_main_entries (optcontext, options, GETTEXT_PACKAGE);
-
+  g_option_context_set_translation_domain (optcontext, GETTEXT_PACKAGE);
   argv = g_application_command_line_get_arguments (command_line, &argc);
 
   if (!g_option_context_parse (optcontext, &argc, &argv, &error))
@@ -101,9 +101,9 @@ main (int argc,
   GtkApplication *app;
   gint retval;
 
-  g_thread_init (NULL);
   gtk_init (&argc, &argv);
   empathy_gtk_init ();
+  textdomain (GETTEXT_PACKAGE);
 
   app = gtk_application_new (EMPATHY_DEBUGGER_DBUS_NAME,
       G_APPLICATION_HANDLES_COMMAND_LINE);
@@ -115,7 +115,6 @@ main (int argc,
   /* Make empathy and empathy-debugger appear as the same app in gnome-shell */
   gdk_set_program_class ("Empathy");
   gtk_window_set_default_icon_name ("empathy");
-  textdomain (GETTEXT_PACKAGE);
 
   retval = g_application_run (G_APPLICATION (app), argc, argv);
 
index 33854974bd1ef65484c9242cb7157b506c300906..0d548ce4327e17df01ad36dab7b61caa50bc1795 100644 (file)
 #include <telepathy-glib/simple-approver.h>
 
 #include <libempathy/empathy-presence-manager.h>
-#include <libempathy/empathy-tp-contact-factory.h>
 #include <libempathy/empathy-connection-aggregator.h>
 #include <libempathy/empathy-tp-chat.h>
-#include <libempathy/empathy-tp-streamed-media.h>
 #include <libempathy/empathy-utils.h>
 #include <libempathy/empathy-gsettings.h>
 
@@ -408,11 +406,7 @@ reject_channel_claim_cb (GObject *source,
       goto out;
     }
 
-  if (EMPATHY_IS_TP_STREAMED_MEDIA (user_data))
-    {
-      empathy_tp_streamed_media_close (user_data);
-    }
-  else if (TP_IS_CALL_CHANNEL (user_data))
+  if (TP_IS_CALL_CHANNEL (user_data))
     {
       tp_call_channel_hangup_async (user_data,
           TP_CALL_STATE_CHANGE_REASON_USER_REQUESTED,
@@ -499,13 +493,7 @@ event_channel_process_voip_func (EventPriv *event)
       return;
     }
 
-  if (etype == EMPATHY_EVENT_TYPE_VOIP)
-    {
-      EmpathyTpStreamedMedia *call;
-      call = EMPATHY_TP_STREAMED_MEDIA (event->approval->handler_instance);
-      video = empathy_tp_streamed_media_has_initial_video (call);
-    }
-  else if (etype == EMPATHY_EVENT_TYPE_CALL)
+  if (etype == EMPATHY_EVENT_TYPE_CALL)
     {
       TpCallChannel *call;
       call = TP_CALL_CHANNEL (event->approval->handler_instance);
@@ -689,112 +677,6 @@ event_manager_call_state_changed_cb (TpCallChannel *call,
     }
 }
 
-static void
-event_manager_call_channel_got_contact_cb (TpConnection *connection,
-                                 EmpathyContact *contact,
-                                 const GError *error,
-                                 gpointer user_data,
-                                 GObject *object)
-{
-  EventManagerApproval *approval = (EventManagerApproval *) user_data;
-  EmpathyEventManagerPriv *priv = GET_PRIV (approval->manager);
-  GtkWidget *window;
-  TpCallChannel *call;
-  gchar *header;
-  gboolean video;
-
-  call = TP_CALL_CHANNEL (approval->handler_instance);
-
-  if (error != NULL)
-    {
-      DEBUG ("Can't get the contact for the call.. Rejecting?");
-      reject_approval (approval);
-      return;
-    }
-
-  if (tp_call_channel_get_state (call, NULL, NULL, NULL) == TP_CALL_STATE_ENDED)
-    {
-      DEBUG ("Call already ended, seems we missed it :/");
-      reject_approval (approval);
-      return;
-    }
-
-  approval->handler = g_signal_connect (call, "state-changed",
-    G_CALLBACK (event_manager_call_state_changed_cb), approval);
-
-  window = empathy_roster_window_dup ();
-  approval->contact = g_object_ref (contact);
-
-  g_object_get (G_OBJECT (call), "initial-video", &video, NULL);
-
-  header = g_strdup_printf (
-    video ? _("Incoming video call from %s") :_("Incoming call from %s"),
-    empathy_contact_get_alias (approval->contact));
-
-  event_manager_add (approval->manager, NULL,
-      approval->contact, EMPATHY_EVENT_TYPE_CALL,
-      video ? EMPATHY_IMAGE_VIDEO_CALL : EMPATHY_IMAGE_VOIP,
-      header, NULL, approval,
-      event_channel_process_voip_func, NULL);
-
-  g_free (header);
-
-  priv->ringing++;
-  if (priv->ringing == 1)
-    empathy_sound_manager_start_playing (priv->sound_mgr, window,
-        EMPATHY_SOUND_PHONE_INCOMING, MS_BETWEEN_RING);
-
-  g_object_unref (window);
-}
-
-static void
-event_manager_media_channel_got_contact (EventManagerApproval *approval)
-{
-  EmpathyEventManagerPriv *priv = GET_PRIV (approval->manager);
-  GtkWidget *window = empathy_roster_window_dup ();
-  gchar *header;
-  EmpathyTpStreamedMedia *call;
-  gboolean video;
-
-  call = EMPATHY_TP_STREAMED_MEDIA (approval->handler_instance);
-
-  video = empathy_tp_streamed_media_has_initial_video (call);
-
-  header = g_strdup_printf (
-    video ? _("Incoming video call from %s") :_("Incoming call from %s"),
-    empathy_contact_get_alias (approval->contact));
-
-  event_manager_add (approval->manager, NULL,
-      approval->contact, EMPATHY_EVENT_TYPE_VOIP,
-      video ? EMPATHY_IMAGE_VIDEO_CALL : EMPATHY_IMAGE_VOIP,
-      header, NULL, approval,
-      event_channel_process_voip_func, NULL);
-
-  g_free (header);
-
-  priv->ringing++;
-  if (priv->ringing == 1)
-    empathy_sound_manager_start_playing (priv->sound_mgr, window,
-        EMPATHY_SOUND_PHONE_INCOMING, MS_BETWEEN_RING);
-
-  g_object_unref (window);
-}
-
-static void
-event_manager_media_channel_contact_changed_cb (EmpathyTpStreamedMedia *call,
-  GParamSpec *param, EventManagerApproval *approval)
-{
-  EmpathyContact *contact;
-
-  g_object_get (G_OBJECT (call), "contact", &contact, NULL);
-
-  if (contact == NULL)
-    return;
-
-  approval->contact = contact;
-  event_manager_media_channel_got_contact (approval);
-}
-
 static void
 invite_dialog_response_cb (GtkDialog *dialog,
                            gint response,
@@ -874,12 +756,12 @@ display_invite_room_dialog (EventManagerApproval *approval)
   GtkWidget *window = empathy_roster_window_dup ();
   const gchar *invite_msg;
   gchar *msg;
-  TpHandle self_handle;
+  TpContact *self_contact;
   EmpathyEventManagerPriv *priv = GET_PRIV (approval->manager);
 
-  self_handle = tp_channel_group_get_self_handle (approval->main_channel);
-  tp_channel_group_get_local_pending_info (approval->main_channel, self_handle,
-      NULL, NULL, &invite_msg);
+  self_contact = tp_channel_group_get_self_contact (approval->main_channel);
+  tp_channel_group_get_local_pending_contact_info (approval->main_channel,
+      self_contact, NULL, NULL, &invite_msg);
 
   if (approval->contact != NULL)
     {
@@ -906,42 +788,179 @@ display_invite_room_dialog (EventManagerApproval *approval)
 }
 
 static void
-event_manager_muc_invite_got_contact_cb (TpConnection *connection,
-                                         EmpathyContact *contact,
-                                         const GError *error,
-                                         gpointer user_data,
-                                         GObject *object)
+event_manager_auth_process_func (EventPriv *event)
+{
+  empathy_event_approve ((EmpathyEvent *) event);
+}
+
+/* If there is a file-transfer, media, or auth channel consider it as
+ * the main one. */
+static TpChannel *
+find_main_channel (GList *channels)
+{
+  GList *l;
+  TpChannel *text = NULL;
+
+  for (l = channels; l != NULL; l = g_list_next (l))
+    {
+      TpChannel *channel = l->data;
+      GQuark channel_type;
+
+      if (tp_proxy_get_invalidated (channel) != NULL)
+        continue;
+
+      channel_type = tp_channel_get_channel_type_id (channel);
+
+      if (channel_type == TP_IFACE_QUARK_CHANNEL_TYPE_STREAMED_MEDIA ||
+          channel_type == TP_IFACE_QUARK_CHANNEL_TYPE_CALL ||
+          channel_type == TP_IFACE_QUARK_CHANNEL_TYPE_FILE_TRANSFER ||
+          channel_type == TP_IFACE_QUARK_CHANNEL_TYPE_SERVER_AUTHENTICATION)
+        return channel;
+
+      else if (channel_type == TP_IFACE_QUARK_CHANNEL_TYPE_TEXT)
+        text = channel;
+    }
+
+  return text;
+}
+
+static void
+approve_text_channel (EmpathyEventManager *self,
+    EventManagerApproval *approval,
+    TpAddDispatchOperationContext *context,
+    EmpathyTpChat *tp_chat)
 {
-  EventManagerApproval *approval = (EventManagerApproval *) user_data;
+  GList *messages, *l;
 
-  if (error != NULL)
+  approval->handler_instance = g_object_ref (tp_chat);
+
+  if (tp_proxy_has_interface (tp_chat, TP_IFACE_CHANNEL_INTERFACE_GROUP))
     {
-      DEBUG ("Error: %s", error->message);
+      /* Are we in local-pending ? */
+      TpContact *inviter;
+
+      if (empathy_tp_chat_is_invited (tp_chat, &inviter))
+        {
+          /* We are invited to a room */
+          DEBUG ("Have been invited to %s. Ask user if he wants to accept",
+              tp_channel_get_identifier (TP_CHANNEL_GROUP_CHANGE_REASON_NONE));
+
+          if (inviter != NULL)
+            {
+              approval->contact = empathy_contact_dup_from_tp_contact (
+                  inviter);
+            }
+
+          display_invite_room_dialog (approval);
+          tp_add_dispatch_operation_context_accept (context);
+
+          return;
+        }
+
+      /* We are not invited, approve the channel right now */
+      tp_add_dispatch_operation_context_accept (context);
+
+      approval->auto_approved = TRUE;
+      event_manager_approval_approve (approval);
+      return;
     }
-  else
+
+  /* 1-1 text channel, wait for the first message */
+  approval->handler = g_signal_connect (tp_chat, "message-received-empathy",
+    G_CALLBACK (event_manager_chat_message_received_cb), approval);
+
+  messages = (GList *) empathy_tp_chat_get_pending_messages (tp_chat);
+  for (l = messages; l != NULL; l = g_list_next (l))
     {
-      approval->contact = g_object_ref (contact);
+      EmpathyMessage *msg = l->data;
+
+      event_manager_chat_message_received_cb (tp_chat, msg, approval);
     }
 
-  display_invite_room_dialog (approval);
+  tp_add_dispatch_operation_context_accept (context);
 }
 
 static void
-event_manager_ft_got_contact_cb (TpConnection *connection,
-                                 EmpathyContact *contact,
-                                 const GError *error,
-                                 gpointer user_data,
-                                 GObject *object)
+approval_set_target_contact (EventManagerApproval *approval,
+    TpChannel *channel)
 {
-  EventManagerApproval *approval = (EventManagerApproval *) user_data;
-  GtkWidget *window = empathy_roster_window_dup ();
-  char *header;
+  TpContact *contact;
+
+  contact = tp_channel_get_target_contact (channel);
+  approval->contact = empathy_contact_dup_from_tp_contact (contact);
+}
+
+static void
+approve_call_channel (EmpathyEventManager *self,
+    EventManagerApproval *approval,
+    TpAddDispatchOperationContext *context,
+    TpCallChannel *call)
+{
+  TpChannel *channel = TP_CHANNEL (call);
   EmpathyEventManagerPriv *priv = GET_PRIV (approval->manager);
+  GtkWidget *window;
+  gchar *header;
+  gboolean video;
 
-  approval->contact = g_object_ref (contact);
+  approval->handler_instance = g_object_ref (call);
+  approval_set_target_contact (approval, channel);
+
+  tp_add_dispatch_operation_context_accept (context);
+
+  if (tp_call_channel_get_state (call, NULL, NULL, NULL) == TP_CALL_STATE_ENDED)
+    {
+      DEBUG ("Call already ended, seems we missed it :/");
+      reject_approval (approval);
+      return;
+    }
+
+  approval->handler = g_signal_connect (call, "state-changed",
+    G_CALLBACK (event_manager_call_state_changed_cb), approval);
+
+  window = empathy_roster_window_dup ();
+
+  g_object_get (G_OBJECT (call), "initial-video", &video, NULL);
+
+  header = g_strdup_printf (
+    video ? _("Incoming video call from %s") :_("Incoming call from %s"),
+    empathy_contact_get_alias (approval->contact));
+
+  event_manager_add (approval->manager, NULL,
+      approval->contact, EMPATHY_EVENT_TYPE_CALL,
+      video ? EMPATHY_IMAGE_VIDEO_CALL : EMPATHY_IMAGE_VOIP,
+      header, NULL, approval,
+      event_channel_process_voip_func, NULL);
+
+  g_free (header);
+
+  priv->ringing++;
+  if (priv->ringing == 1)
+    empathy_sound_manager_start_playing (priv->sound_mgr, window,
+        EMPATHY_SOUND_PHONE_INCOMING, MS_BETWEEN_RING);
+
+  g_object_unref (window);
+}
+
+static void
+approve_ft_channel (EmpathyEventManager *self,
+    EventManagerApproval *approval,
+    TpAddDispatchOperationContext *context,
+    TpFileTransferChannel *ft)
+{
+  TpChannel *channel = TP_CHANNEL (ft);
+  EmpathyEventManagerPriv *priv = GET_PRIV (approval->manager);
+  GtkWidget *window;
+  gchar *header;
+
+  approval->handler_instance = g_object_ref (ft);
+  approval_set_target_contact (approval, channel);
+
+  tp_add_dispatch_operation_context_accept (context);
+
+  window = empathy_roster_window_dup ();
 
   header = g_strdup_printf (_("Incoming file transfer from %s"),
-                            empathy_contact_get_alias (approval->contact));
+      empathy_contact_get_alias (approval->contact));
 
   event_manager_add (approval->manager, NULL,
       approval->contact, EMPATHY_EVENT_TYPE_TRANSFER,
@@ -957,40 +976,39 @@ event_manager_ft_got_contact_cb (TpConnection *connection,
 }
 
 static void
-event_manager_auth_process_func (EventPriv *event)
+approve_sasl_channel (EmpathyEventManager *self,
+    TpAccount *account,
+    EventManagerApproval *approval,
+    TpAddDispatchOperationContext *context,
+    TpChannel *channel)
 {
-  empathy_event_approve ((EmpathyEvent *) event);
-}
+  GHashTable *props;
+  const gchar * const *available_mechanisms;
 
-/* If there is a file-transfer, media, or auth channel consider it as
- * the main one. */
-static TpChannel *
-find_main_channel (GList *channels)
-{
-  GList *l;
-  TpChannel *text = NULL;
+  props = tp_channel_borrow_immutable_properties (channel);
+  available_mechanisms = tp_asv_get_boxed (props,
+      TP_PROP_CHANNEL_INTERFACE_SASL_AUTHENTICATION_AVAILABLE_MECHANISMS,
+      G_TYPE_STRV);
 
-  for (l = channels; l != NULL; l = g_list_next (l))
+  if (tp_strv_contains (available_mechanisms, "X-TELEPATHY-PASSWORD"))
     {
-      TpChannel *channel = l->data;
-      GQuark channel_type;
-
-      if (tp_proxy_get_invalidated (channel) != NULL)
-        continue;
-
-      channel_type = tp_channel_get_channel_type_id (channel);
-
-      if (channel_type == TP_IFACE_QUARK_CHANNEL_TYPE_STREAMED_MEDIA ||
-          channel_type == TP_IFACE_QUARK_CHANNEL_TYPE_CALL ||
-          channel_type == TP_IFACE_QUARK_CHANNEL_TYPE_FILE_TRANSFER ||
-          channel_type == TP_IFACE_QUARK_CHANNEL_TYPE_SERVER_AUTHENTICATION)
-        return channel;
+      event_manager_add (approval->manager, account, NULL,
+          EMPATHY_EVENT_TYPE_AUTH,
+          GTK_STOCK_DIALOG_AUTHENTICATION,
+          tp_account_get_display_name (account),
+          _("Password required"), approval,
+          event_manager_auth_process_func, NULL);
+    }
+  else
+    {
+      GError error = { TP_ERROR, TP_ERROR_NOT_IMPLEMENTED,
+          "Support only X-TELEPATHY-PASSWORD auth method" };
 
-      else if (channel_type == TP_IFACE_QUARK_CHANNEL_TYPE_TEXT)
-        text = channel;
+      tp_add_dispatch_operation_context_fail (context, &error);
+      return;
     }
 
-  return text;
+  tp_add_dispatch_operation_context_accept (context);
 }
 
 static void
@@ -1028,132 +1046,22 @@ approve_channels (TpSimpleApprover *approver,
 
   channel_type = tp_channel_get_channel_type_id (channel);
 
-  if (TP_IS_TEXT_CHANNEL (channel))
-    {
-      EmpathyTpChat *tp_chat = EMPATHY_TP_CHAT (channel);
-      GList *messages, *l;
-
-      approval->handler_instance = g_object_ref (tp_chat);
-
-      if (tp_proxy_has_interface (channel, TP_IFACE_CHANNEL_INTERFACE_GROUP))
-        {
-          /* Are we in local-pending ? */
-          TpHandle inviter;
-
-          if (empathy_tp_chat_is_invited (tp_chat, &inviter))
-            {
-              /* We are invited to a room */
-              DEBUG ("Have been invited to %s. Ask user if he wants to accept",
-                  tp_channel_get_identifier (channel));
-
-              if (inviter != 0)
-                {
-                  empathy_tp_contact_factory_get_from_handle (connection,
-                      inviter, event_manager_muc_invite_got_contact_cb,
-                      approval, NULL, G_OBJECT (self));
-                }
-              else
-                {
-                  display_invite_room_dialog (approval);
-                }
-
-              goto out;
-            }
-
-          /* We are not invited, approve the channel right now */
-          tp_add_dispatch_operation_context_accept (context);
-
-          approval->auto_approved = TRUE;
-          event_manager_approval_approve (approval);
-          return;
-        }
-
-      /* 1-1 text channel, wait for the first message */
-      approval->handler = g_signal_connect (tp_chat, "message-received-empathy",
-        G_CALLBACK (event_manager_chat_message_received_cb), approval);
-
-      messages = (GList *) empathy_tp_chat_get_pending_messages (tp_chat);
-      for (l = messages; l != NULL; l = g_list_next (l))
-        {
-          EmpathyMessage *msg = l->data;
-
-          event_manager_chat_message_received_cb (tp_chat, msg, approval);
-        }
-    }
-  else if (channel_type == TP_IFACE_QUARK_CHANNEL_TYPE_STREAMED_MEDIA)
+  if (EMPATHY_IS_TP_CHAT (channel))
     {
-      EmpathyContact *contact;
-      EmpathyTpStreamedMedia *call = empathy_tp_streamed_media_new (account,
-        channel);
-
-      approval->handler_instance = G_OBJECT (call);
-
-      g_object_get (G_OBJECT (call), "contact", &contact, NULL);
-
-      if (contact == NULL)
-        {
-          g_signal_connect (call, "notify::contact",
-            G_CALLBACK (event_manager_media_channel_contact_changed_cb),
-            approval);
-        }
-      else
-        {
-          approval->contact = contact;
-          event_manager_media_channel_got_contact (approval);
-        }
-
+      approve_text_channel (self, approval, context, EMPATHY_TP_CHAT (channel));
     }
-  else if (channel_type == TP_IFACE_QUARK_CHANNEL_TYPE_CALL)
+  else if (TP_IS_CALL_CHANNEL (channel))
     {
-      TpCallChannel *call = TP_CALL_CHANNEL (channel);
-      const gchar *id;
-
-      approval->handler_instance = g_object_ref (call);
-
-      id = tp_channel_get_identifier (channel);
-
-      empathy_tp_contact_factory_get_from_id (connection, id,
-        event_manager_call_channel_got_contact_cb,
-        approval, NULL, G_OBJECT (self));
+      approve_call_channel (self, approval, context, TP_CALL_CHANNEL (channel));
     }
-  else if (channel_type == TP_IFACE_QUARK_CHANNEL_TYPE_FILE_TRANSFER)
+  else if (TP_IS_FILE_TRANSFER_CHANNEL (channel))
     {
-      TpHandle handle;
-
-      approval->handler_instance = g_object_ref (channel);
-
-      handle = tp_channel_get_handle (channel, NULL);
-
-      empathy_tp_contact_factory_get_from_handle (connection, handle,
-        event_manager_ft_got_contact_cb, approval, NULL, G_OBJECT (self));
+      approve_ft_channel (self, approval, context,
+          TP_FILE_TRANSFER_CHANNEL (channel));
     }
   else if (channel_type == TP_IFACE_QUARK_CHANNEL_TYPE_SERVER_AUTHENTICATION)
     {
-      GHashTable *props;
-      const gchar * const *available_mechanisms;
-
-      props = tp_channel_borrow_immutable_properties (channel);
-      available_mechanisms = tp_asv_get_boxed (props,
-          TP_PROP_CHANNEL_INTERFACE_SASL_AUTHENTICATION_AVAILABLE_MECHANISMS,
-          G_TYPE_STRV);
-
-      if (tp_strv_contains (available_mechanisms, "X-TELEPATHY-PASSWORD"))
-        {
-          event_manager_add (approval->manager, account, NULL,
-              EMPATHY_EVENT_TYPE_AUTH,
-              GTK_STOCK_DIALOG_AUTHENTICATION,
-              tp_account_get_display_name (account),
-              _("Password required"), approval,
-              event_manager_auth_process_func, NULL);
-        }
-      else
-        {
-          GError error = { TP_ERROR, TP_ERROR_NOT_IMPLEMENTED,
-              "Support only X-TELEPATHY-PASSWORD auth method" };
-
-          tp_add_dispatch_operation_context_fail (context, &error);
-          return;
-        }
+      approve_sasl_channel (self, account, approval, context, channel);
     }
   else
     {
@@ -1166,9 +1074,6 @@ approve_channels (TpSimpleApprover *approver,
       tp_add_dispatch_operation_context_fail (context, &error);
       return;
     }
-
-out:
-  tp_add_dispatch_operation_context_accept (context);
 }
 
 static void
index e50ab88840de4577e54c88b7ddcdd3419cf6a20f..394db8d9c9d0b3dcd0cbce9d0d9cddd2ec62393a 100644 (file)
@@ -50,7 +50,6 @@ struct _EmpathyEventManagerClass {
 
 typedef enum {
     EMPATHY_EVENT_TYPE_CHAT,
-    EMPATHY_EVENT_TYPE_VOIP,
     EMPATHY_EVENT_TYPE_CALL,
     EMPATHY_EVENT_TYPE_TRANSFER,
     EMPATHY_EVENT_TYPE_SUBSCRIPTION,
index fd5bd8f7602f4afe9b3f97434996ac5f6d8bc457..ecbf00be93d313fce53fe58f181fc130ccf8358f 100644 (file)
@@ -17,7 +17,6 @@
 #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>
@@ -146,22 +145,22 @@ filter_individual (EmpathyContactChooser *chooser,
     return FALSE;
 
   /* Filter out contacts which are already in the chat */
-  members = empathy_contact_list_get_members (EMPATHY_CONTACT_LIST (
-        self->priv->tp_chat));
+  members = empathy_tp_chat_get_members (self->priv->tp_chat);
 
   for (l = members; l != NULL; l = g_list_next (l))
     {
       EmpathyContact *member = l->data;
-      TpHandle handle;
+      TpContact *owner;
 
-      /* Try to get the non-channel specific handle. */
-      handle = tp_channel_group_get_handle_owner (
+      /* Try to get the non-channel specific contact. */
+      owner = tp_channel_group_get_contact_owner (
           TP_CHANNEL (self->priv->tp_chat),
-          empathy_contact_get_handle (member));
-      if (handle == 0)
-        handle = empathy_contact_get_handle (member);
+          empathy_contact_get_tp_contact (member));
 
-      if (handle == tp_contact_get_handle (contact))
+      if (owner == NULL)
+        owner = empathy_contact_get_tp_contact (member);
+
+      if (owner == contact)
         {
           display = FALSE;
           break;
index 92b3f7475531fe729497d4d3923d6ce9f87db39f..b6abd8c6b57d55c70653bb618f24750fe4902a15 100644 (file)
@@ -25,8 +25,6 @@
 #include <libnotify/notify.h>
 #include <telepathy-glib/telepathy-glib.h>
 
-#include <libempathy/empathy-tp-streamed-media.h>
-
 #include <libempathy-gtk/empathy-notify-manager.h>
 #include <libempathy-gtk/empathy-call-utils.h>
 
@@ -191,12 +189,7 @@ add_notification_actions (EmpathyNotificationsApprover *self,
           self, NULL);
       break;
 
-    case EMPATHY_EVENT_TYPE_VOIP:
     case EMPATHY_EVENT_TYPE_CALL:
-      if (self->priv->event->type == EMPATHY_EVENT_TYPE_VOIP)
-        video = empathy_tp_streamed_media_has_initial_video (
-            EMPATHY_TP_STREAMED_MEDIA (self->priv->event->handler_instance));
-      else
         video = tp_call_channel_has_initial_video (
             TP_CALL_CHANNEL (self->priv->event->handler_instance), NULL);
 
@@ -261,7 +254,6 @@ notification_is_urgent (EmpathyNotificationsApprover *self,
    * interact ASAP */
   switch (self->priv->event->type) {
     case EMPATHY_EVENT_TYPE_CHAT:
-    case EMPATHY_EVENT_TYPE_VOIP:
     case EMPATHY_EVENT_TYPE_CALL:
     case EMPATHY_EVENT_TYPE_TRANSFER:
     case EMPATHY_EVENT_TYPE_INVITATION:
@@ -288,7 +280,6 @@ get_category_for_event_type (EmpathyEventType type)
     CASE(CHAT)
     CASE(PRESENCE_ONLINE)
     CASE(PRESENCE_OFFLINE)
-    CASE(VOIP)
     CASE(CALL)
     CASE(TRANSFER)
     CASE(INVITATION)
index 203a5aede087ed645a348405084ddc209b0e9f26..8e4230488d5c97ee38d5bf3c79128bf08e592cec 100644 (file)
@@ -37,7 +37,6 @@
 #include <libempathy/empathy-request-util.h>
 #include <libempathy/empathy-chatroom-manager.h>
 #include <libempathy/empathy-chatroom.h>
-#include <libempathy/empathy-contact-list.h>
 #include <libempathy/empathy-gsettings.h>
 #include <libempathy/empathy-individual-manager.h>
 #include <libempathy/empathy-gsettings.h>
@@ -2675,6 +2674,7 @@ empathy_roster_window_init (EmpathyRosterWindow *self)
   /* Load user-defined accelerators. */
   roster_window_accels_load ();
 
+  gtk_window_set_default_size (GTK_WINDOW (self), -1, 600);
   /* Set window size. */
   empathy_geometry_bind (GTK_WINDOW (self), GEOMETRY_NAME);
 
diff --git a/src/empathy-streamed-media-factory.c b/src/empathy-streamed-media-factory.c
deleted file mode 100644 (file)
index 713d441..0000000
+++ /dev/null
@@ -1,270 +0,0 @@
-/*
- * empathy-streamed-media-factory.c - Source for EmpathyStreamedMediaFactory
- * Copyright (C) 2008-2011 Collabora Ltd.
- * @author Sjoerd Simons <sjoerd.simons@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 <stdio.h>
-#include <stdlib.h>
-
-#include <telepathy-glib/account-channel-request.h>
-#include <telepathy-glib/simple-handler.h>
-#include <telepathy-glib/interfaces.h>
-#include <telepathy-glib/util.h>
-
-#include <libempathy/empathy-request-util.h>
-#include <libempathy/empathy-utils.h>
-
-#include "empathy-streamed-media-factory.h"
-#include "empathy-streamed-media-handler.h"
-
-#define DEBUG_FLAG EMPATHY_DEBUG_VOIP
-#include <libempathy/empathy-debug.h>
-
-G_DEFINE_TYPE(EmpathyStreamedMediaFactory, empathy_streamed_media_factory, G_TYPE_OBJECT)
-
-static void handle_channels_cb (TpSimpleHandler *handler,
-    TpAccount *account,
-    TpConnection *connection,
-    GList *channels,
-    GList *requests_satisfied,
-    gint64 user_action_time,
-    TpHandleChannelsContext *context,
-    gpointer user_data);
-
-/* signal enum */
-enum
-{
-    NEW_STREAMED_MEDIA_HANDLER,
-    LAST_SIGNAL
-};
-
-static guint signals[LAST_SIGNAL] = {0};
-
-/* private structure */
-typedef struct {
-  TpBaseClient *handler;
-  gboolean dispose_has_run;
-} EmpathyStreamedMediaFactoryPriv;
-
-#define GET_PRIV(obj) EMPATHY_GET_PRIV (obj, EmpathyStreamedMediaFactory)
-
-static GObject *call_factory = NULL;
-
-static void
-empathy_streamed_media_factory_init (EmpathyStreamedMediaFactory *obj)
-{
-  EmpathyStreamedMediaFactoryPriv *priv = G_TYPE_INSTANCE_GET_PRIVATE (obj,
-    EMPATHY_TYPE_STREAMED_MEDIA_FACTORY, EmpathyStreamedMediaFactoryPriv);
-  TpAccountManager *am;
-
-  obj->priv = priv;
-
-  am = tp_account_manager_dup ();
-
-  priv->handler = tp_simple_handler_new_with_am (am, FALSE, FALSE,
-      EMPATHY_AV_BUS_NAME_SUFFIX, FALSE, handle_channels_cb, obj, NULL);
-
-  tp_base_client_take_handler_filter (priv->handler, tp_asv_new (
-        TP_PROP_CHANNEL_CHANNEL_TYPE, G_TYPE_STRING,
-          TP_IFACE_CHANNEL_TYPE_STREAMED_MEDIA,
-        TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, G_TYPE_UINT, TP_HANDLE_TYPE_CONTACT,
-        NULL));
-
-  tp_base_client_take_handler_filter (priv->handler, tp_asv_new (
-        TP_PROP_CHANNEL_CHANNEL_TYPE, G_TYPE_STRING,
-          TP_IFACE_CHANNEL_TYPE_STREAMED_MEDIA,
-        TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, G_TYPE_UINT, TP_HANDLE_TYPE_CONTACT,
-        TP_PROP_CHANNEL_TYPE_STREAMED_MEDIA_INITIAL_AUDIO, G_TYPE_BOOLEAN, TRUE,
-        NULL));
-
-  tp_base_client_take_handler_filter (priv->handler, tp_asv_new (
-        TP_PROP_CHANNEL_CHANNEL_TYPE, G_TYPE_STRING,
-          TP_IFACE_CHANNEL_TYPE_STREAMED_MEDIA,
-        TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, G_TYPE_UINT, TP_HANDLE_TYPE_CONTACT,
-        TP_PROP_CHANNEL_TYPE_STREAMED_MEDIA_INITIAL_VIDEO, G_TYPE_BOOLEAN, TRUE,
-        NULL));
-
-  tp_base_client_add_handler_capabilities_varargs (priv->handler,
-    "org.freedesktop.Telepathy.Channel.Interface.MediaSignalling/ice-udp",
-    "org.freedesktop.Telepathy.Channel.Interface.MediaSignalling/gtalk-p2p",
-    "org.freedesktop.Telepathy.Channel.Interface.MediaSignalling/video/h264",
-    NULL);
-
-  g_object_unref (am);
-}
-
-static GObject *
-empathy_streamed_media_factory_constructor (GType type, guint n_construct_params,
-  GObjectConstructParam *construct_params)
-{
-  g_return_val_if_fail (call_factory == NULL, NULL);
-
-  call_factory = G_OBJECT_CLASS (empathy_streamed_media_factory_parent_class)->constructor
-          (type, n_construct_params, construct_params);
-  g_object_add_weak_pointer (call_factory, (gpointer)&call_factory);
-
-  return call_factory;
-}
-
-static void
-empathy_streamed_media_factory_finalize (GObject *object)
-{
-  /* free any data held directly by the object here */
-
-  if (G_OBJECT_CLASS (empathy_streamed_media_factory_parent_class)->finalize)
-    G_OBJECT_CLASS (empathy_streamed_media_factory_parent_class)->finalize (object);
-}
-
-static void
-empathy_streamed_media_factory_dispose (GObject *object)
-{
-  EmpathyStreamedMediaFactoryPriv *priv = GET_PRIV (object);
-
-  if (priv->dispose_has_run)
-    return;
-
-  priv->dispose_has_run = TRUE;
-
-  tp_clear_object (&priv->handler);
-
-  if (G_OBJECT_CLASS (empathy_streamed_media_factory_parent_class)->dispose)
-    G_OBJECT_CLASS (empathy_streamed_media_factory_parent_class)->dispose (object);
-}
-
-static void
-empathy_streamed_media_factory_class_init (
-  EmpathyStreamedMediaFactoryClass *empathy_streamed_media_factory_class)
-{
-  GObjectClass *object_class = G_OBJECT_CLASS (empathy_streamed_media_factory_class);
-
-  g_type_class_add_private (empathy_streamed_media_factory_class,
-    sizeof (EmpathyStreamedMediaFactoryPriv));
-
-  object_class->constructor = empathy_streamed_media_factory_constructor;
-  object_class->dispose = empathy_streamed_media_factory_dispose;
-  object_class->finalize = empathy_streamed_media_factory_finalize;
-
-  signals[NEW_STREAMED_MEDIA_HANDLER] =
-    g_signal_new ("new-streamed-media-handler",
-      G_TYPE_FROM_CLASS (empathy_streamed_media_factory_class),
-      G_SIGNAL_RUN_LAST, 0,
-      NULL, NULL,
-      g_cclosure_marshal_generic,
-      G_TYPE_NONE,
-      2, EMPATHY_TYPE_STREAMED_MEDIA_HANDLER, G_TYPE_BOOLEAN);
-}
-
-EmpathyStreamedMediaFactory *
-empathy_streamed_media_factory_initialise (void)
-{
-  g_return_val_if_fail (call_factory == NULL, NULL);
-
-  return EMPATHY_STREAMED_MEDIA_FACTORY (g_object_new (EMPATHY_TYPE_STREAMED_MEDIA_FACTORY, NULL));
-}
-
-EmpathyStreamedMediaFactory *
-empathy_streamed_media_factory_get (void)
-{
-  g_return_val_if_fail (call_factory != NULL, NULL);
-
-  return EMPATHY_STREAMED_MEDIA_FACTORY (call_factory);
-}
-
-static void
-create_streamed_media_handler (EmpathyStreamedMediaFactory *factory,
-  EmpathyTpStreamedMedia *call)
-{
-  EmpathyStreamedMediaHandler *handler;
-
-  g_return_if_fail (factory != NULL);
-
-  handler = empathy_streamed_media_handler_new_for_channel (call);
-
-  g_signal_emit (factory, signals[NEW_STREAMED_MEDIA_HANDLER], 0,
-    handler, FALSE);
-
-  g_object_unref (handler);
-}
-
-static void
-call_status_changed_cb (EmpathyTpStreamedMedia *call,
-    GParamSpec *spec,
-    EmpathyStreamedMediaFactory *self)
-{
-  if (empathy_tp_streamed_media_get_status (call) <= EMPATHY_TP_STREAMED_MEDIA_STATUS_READYING)
-    return;
-
-  create_streamed_media_handler (self, call);
-
-  g_signal_handlers_disconnect_by_func (call, call_status_changed_cb, self);
-  g_object_unref (call);
-}
-
-static void
-handle_channels_cb (TpSimpleHandler *handler,
-    TpAccount *account,
-    TpConnection *connection,
-    GList *channels,
-    GList *requests_satisfied,
-    gint64 user_action_time,
-    TpHandleChannelsContext *context,
-    gpointer user_data)
-{
-  EmpathyStreamedMediaFactory *self = user_data;
-  GList *l;
-
-  for (l = channels; l != NULL; l = g_list_next (l))
-    {
-      TpChannel *channel = l->data;
-      EmpathyTpStreamedMedia *call;
-
-      if (tp_proxy_get_invalidated (channel) != NULL)
-        continue;
-
-      if (tp_channel_get_channel_type_id (channel) !=
-          TP_IFACE_QUARK_CHANNEL_TYPE_STREAMED_MEDIA)
-        continue;
-
-      call = empathy_tp_streamed_media_new (account, channel);
-
-      if (empathy_tp_streamed_media_get_status (call) <= EMPATHY_TP_STREAMED_MEDIA_STATUS_READYING)
-        {
-          /* We have to wait that the TpStreamedMedia is ready as the
-           * call-handler rely on it. */
-          tp_g_signal_connect_object (call, "notify::status",
-              G_CALLBACK (call_status_changed_cb), self, 0);
-          continue;
-        }
-
-      create_streamed_media_handler (self, call);
-      g_object_unref (call);
-    }
-
-  tp_handle_channels_context_accept (context);
-}
-
-gboolean
-empathy_streamed_media_factory_register (EmpathyStreamedMediaFactory *self,
-    GError **error)
-{
-  EmpathyStreamedMediaFactoryPriv *priv = GET_PRIV (self);
-
-  return tp_base_client_register (priv->handler, error);
-}
diff --git a/src/empathy-streamed-media-factory.h b/src/empathy-streamed-media-factory.h
deleted file mode 100644 (file)
index c69073e..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * empathy-streamed-media-factory.h - Header for EmpathyStreamedMediaFactory
- * Copyright (C) 2008-2011 Collabora Ltd.
- * @author Sjoerd Simons <sjoerd.simons@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_STREAMED_MEDIA_FACTORY_H__
-#define __EMPATHY_STREAMED_MEDIA_FACTORY_H__
-
-#include <glib-object.h>
-
-G_BEGIN_DECLS
-
-typedef struct _EmpathyStreamedMediaFactory EmpathyStreamedMediaFactory;
-typedef struct _EmpathyStreamedMediaFactoryClass EmpathyStreamedMediaFactoryClass;
-
-struct _EmpathyStreamedMediaFactoryClass {
-    GObjectClass parent_class;
-};
-
-struct _EmpathyStreamedMediaFactory {
-    GObject parent;
-    gpointer priv;
-};
-
-GType empathy_streamed_media_factory_get_type (void);
-
-/* TYPE MACROS */
-#define EMPATHY_TYPE_STREAMED_MEDIA_FACTORY \
-  (empathy_streamed_media_factory_get_type ())
-#define EMPATHY_STREAMED_MEDIA_FACTORY(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj), EMPATHY_TYPE_STREAMED_MEDIA_FACTORY, \
-    EmpathyStreamedMediaFactory))
-#define EMPATHY_STREAMED_MEDIA_FACTORY_CLASS(klass) \
-  (G_TYPE_CHECK_CLASS_CAST((klass), EMPATHY_TYPE_STREAMED_MEDIA_FACTORY, \
-    EmpathyStreamedMediaFactoryClass))
-#define EMPATHY_IS_STREAMED_MEDIA_FACTORY(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj), EMPATHY_TYPE_STREAMED_MEDIA_FACTORY))
-#define EMPATHY_IS_STREAMED_MEDIA_FACTORY_CLASS(klass) \
-  (G_TYPE_CHECK_CLASS_TYPE((klass), EMPATHY_TYPE_STREAMED_MEDIA_FACTORY))
-#define EMPATHY_STREAMED_MEDIA_FACTORY_GET_CLASS(obj) \
-  (G_TYPE_INSTANCE_GET_CLASS ((obj), EMPATHY_TYPE_STREAMED_MEDIA_FACTORY, \
-    EmpathyStreamedMediaFactoryClass))
-
-
-EmpathyStreamedMediaFactory *empathy_streamed_media_factory_initialise (void);
-
-EmpathyStreamedMediaFactory *empathy_streamed_media_factory_get (void);
-
-gboolean empathy_streamed_media_factory_register (EmpathyStreamedMediaFactory *self,
-    GError **error);
-
-G_END_DECLS
-
-#endif /* #ifndef __EMPATHY_STREAMED_MEDIA_FACTORY_H__*/
diff --git a/src/empathy-streamed-media-handler.c b/src/empathy-streamed-media-handler.c
deleted file mode 100644 (file)
index 5e2cac5..0000000
+++ /dev/null
@@ -1,921 +0,0 @@
-/*
- * empathy-streamed-media-handler.c - Source for EmpathyStreamedMediaHandler
- * Copyright (C) 2008-2011 Collabora Ltd.
- * @author Sjoerd Simons <sjoerd.simons@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 <stdio.h>
-#include <stdlib.h>
-
-#include <telepathy-glib/account-channel-request.h>
-#include <telepathy-glib/util.h>
-#include <telepathy-glib/interfaces.h>
-
-#include <telepathy-farstream/telepathy-farstream.h>
-
-#include <libempathy/empathy-utils.h>
-
-#include <libempathy-gtk/empathy-call-utils.h>
-
-#include "empathy-streamed-media-handler.h"
-
-#define DEBUG_FLAG EMPATHY_DEBUG_VOIP
-#include <libempathy/empathy-debug.h>
-
-G_DEFINE_TYPE(EmpathyStreamedMediaHandler, empathy_streamed_media_handler, G_TYPE_OBJECT)
-
-/* signal enum */
-enum {
-  CONFERENCE_ADDED,
-  SRC_PAD_ADDED,
-  SINK_PAD_ADDED,
-  START_RECEIVING,
-  CLOSED,
-  STREAM_CLOSED,
-  CANDIDATES_CHANGED,
-  LAST_SIGNAL
-};
-
-static guint signals[LAST_SIGNAL] = {0};
-
-enum {
-  PROP_TP_STREAMED_MEDIA = 1,
-  PROP_GST_BUS,
-  PROP_CONTACT,
-  PROP_INITIAL_AUDIO,
-  PROP_INITIAL_VIDEO,
-  PROP_SEND_AUDIO_CODEC,
-  PROP_SEND_VIDEO_CODEC,
-  PROP_RECV_AUDIO_CODECS,
-  PROP_RECV_VIDEO_CODECS,
-  PROP_AUDIO_REMOTE_CANDIDATE,
-  PROP_VIDEO_REMOTE_CANDIDATE,
-  PROP_AUDIO_LOCAL_CANDIDATE,
-  PROP_VIDEO_LOCAL_CANDIDATE,
-};
-
-/* private structure */
-
-typedef struct {
-  gboolean dispose_has_run;
-  EmpathyTpStreamedMedia *call;
-  EmpathyContact *contact;
-  TfChannel *tfchannel;
-  gboolean initial_audio;
-  gboolean initial_video;
-
-  FsCodec *send_audio_codec;
-  FsCodec *send_video_codec;
-  GList *recv_audio_codecs;
-  GList *recv_video_codecs;
-  FsCandidate *audio_remote_candidate;
-  FsCandidate *video_remote_candidate;
-  FsCandidate *audio_local_candidate;
-  FsCandidate *video_local_candidate;
-} EmpathyStreamedMediaHandlerPriv;
-
-#define GET_PRIV(obj) EMPATHY_GET_PRIV (obj, EmpathyStreamedMediaHandler)
-
-static void
-empathy_streamed_media_handler_dispose (GObject *object)
-{
-  EmpathyStreamedMediaHandlerPriv *priv = GET_PRIV (object);
-
-  if (priv->dispose_has_run)
-    return;
-
-  priv->dispose_has_run = TRUE;
-
-  if (priv->contact != NULL)
-    g_object_unref (priv->contact);
-
-  priv->contact = NULL;
-
-  if (priv->tfchannel != NULL)
-    g_object_unref (priv->tfchannel);
-
-  priv->tfchannel = NULL;
-
-  if (priv->call != NULL)
-    {
-      empathy_tp_streamed_media_close (priv->call);
-      g_object_unref (priv->call);
-    }
-
-  priv->call = NULL;
-
-  /* release any references held by the object here */
-  if (G_OBJECT_CLASS (empathy_streamed_media_handler_parent_class)->dispose)
-    G_OBJECT_CLASS (empathy_streamed_media_handler_parent_class)->dispose (object);
-}
-
-static void
-empathy_streamed_media_handler_finalize (GObject *object)
-{
-  EmpathyStreamedMediaHandlerPriv *priv = GET_PRIV (object);
-
-  fs_codec_destroy (priv->send_audio_codec);
-  fs_codec_destroy (priv->send_video_codec);
-  fs_codec_list_destroy (priv->recv_audio_codecs);
-  fs_codec_list_destroy (priv->recv_video_codecs);
-  fs_candidate_destroy (priv->audio_remote_candidate);
-  fs_candidate_destroy (priv->video_remote_candidate);
-  fs_candidate_destroy (priv->audio_local_candidate);
-  fs_candidate_destroy (priv->video_local_candidate);
-
-  if (G_OBJECT_CLASS (empathy_streamed_media_handler_parent_class)->finalize)
-    G_OBJECT_CLASS (empathy_streamed_media_handler_parent_class)->finalize (object);
-}
-
-static void
-empathy_streamed_media_handler_init (EmpathyStreamedMediaHandler *obj)
-{
-  EmpathyStreamedMediaHandlerPriv *priv = G_TYPE_INSTANCE_GET_PRIVATE (obj,
-    EMPATHY_TYPE_STREAMED_MEDIA_HANDLER, EmpathyStreamedMediaHandlerPriv);
-
-  obj->priv = priv;
-}
-
-static void
-empathy_streamed_media_handler_constructed (GObject *object)
-{
-  EmpathyStreamedMediaHandlerPriv *priv = GET_PRIV (object);
-
-  if (priv->contact == NULL)
-    {
-      g_object_get (priv->call, "contact", &(priv->contact), NULL);
-    }
-}
-
-static void
-empathy_streamed_media_handler_set_property (GObject *object,
-  guint property_id, const GValue *value, GParamSpec *pspec)
-{
-  EmpathyStreamedMediaHandlerPriv *priv = GET_PRIV (object);
-
-  switch (property_id)
-    {
-      case PROP_CONTACT:
-        priv->contact = g_value_dup_object (value);
-        break;
-      case PROP_TP_STREAMED_MEDIA:
-        priv->call = g_value_dup_object (value);
-        break;
-      case PROP_INITIAL_AUDIO:
-        priv->initial_audio = g_value_get_boolean (value);
-        break;
-      case PROP_INITIAL_VIDEO:
-        priv->initial_video = g_value_get_boolean (value);
-        break;
-      default:
-        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
-    }
-}
-
-static void
-empathy_streamed_media_handler_get_property (GObject *object,
-  guint property_id, GValue *value, GParamSpec *pspec)
-{
-  EmpathyStreamedMediaHandlerPriv *priv = GET_PRIV (object);
-
-  switch (property_id)
-    {
-      case PROP_CONTACT:
-        g_value_set_object (value, priv->contact);
-        break;
-      case PROP_TP_STREAMED_MEDIA:
-        g_value_set_object (value, priv->call);
-        break;
-      case PROP_INITIAL_AUDIO:
-        g_value_set_boolean (value, priv->initial_audio);
-        break;
-      case PROP_INITIAL_VIDEO:
-        g_value_set_boolean (value, priv->initial_video);
-        break;
-      case PROP_SEND_AUDIO_CODEC:
-        g_value_set_boxed (value, priv->send_audio_codec);
-        break;
-      case PROP_SEND_VIDEO_CODEC:
-        g_value_set_boxed (value, priv->send_video_codec);
-        break;
-      case PROP_RECV_AUDIO_CODECS:
-        g_value_set_boxed (value, priv->recv_audio_codecs);
-        break;
-      case PROP_RECV_VIDEO_CODECS:
-        g_value_set_boxed (value, priv->recv_video_codecs);
-        break;
-      case PROP_AUDIO_REMOTE_CANDIDATE:
-        g_value_set_boxed (value, priv->audio_remote_candidate);
-        break;
-      case PROP_VIDEO_REMOTE_CANDIDATE:
-        g_value_set_boxed (value, priv->video_remote_candidate);
-        break;
-      case PROP_AUDIO_LOCAL_CANDIDATE:
-        g_value_set_boxed (value, priv->audio_local_candidate);
-        break;
-      case PROP_VIDEO_LOCAL_CANDIDATE:
-        g_value_set_boxed (value, priv->video_local_candidate);
-        break;
-      default:
-        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
-    }
-}
-
-
-static void
-empathy_streamed_media_handler_class_init (EmpathyStreamedMediaHandlerClass *klass)
-{
-  GObjectClass *object_class = G_OBJECT_CLASS (klass);
-  GParamSpec *param_spec;
-
-  g_type_class_add_private (klass, sizeof (EmpathyStreamedMediaHandlerPriv));
-
-  object_class->constructed = empathy_streamed_media_handler_constructed;
-  object_class->set_property = empathy_streamed_media_handler_set_property;
-  object_class->get_property = empathy_streamed_media_handler_get_property;
-  object_class->dispose = empathy_streamed_media_handler_dispose;
-  object_class->finalize = empathy_streamed_media_handler_finalize;
-
-  param_spec = g_param_spec_object ("contact",
-    "contact", "The remote contact",
-    EMPATHY_TYPE_CONTACT,
-    G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
-  g_object_class_install_property (object_class, PROP_CONTACT, param_spec);
-
-  param_spec = g_param_spec_object ("tp-call",
-    "tp-call", "The calls channel wrapper",
-    EMPATHY_TYPE_TP_STREAMED_MEDIA,
-    G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
-  g_object_class_install_property (object_class, PROP_TP_STREAMED_MEDIA, param_spec);
-
-  param_spec = g_param_spec_boolean ("initial-audio",
-    "initial-audio", "Whether the call should start with audio",
-    TRUE,
-    G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
-  g_object_class_install_property (object_class, PROP_INITIAL_AUDIO,
-      param_spec);
-
-  param_spec = g_param_spec_boolean ("initial-video",
-    "initial-video", "Whether the call should start with video",
-    FALSE,
-    G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
-  g_object_class_install_property (object_class, PROP_INITIAL_VIDEO,
-    param_spec);
-
-  param_spec = g_param_spec_boxed ("send-audio-codec",
-    "send audio codec", "Codec used to encode the outgoing video stream",
-    FS_TYPE_CODEC,
-    G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
-  g_object_class_install_property (object_class, PROP_SEND_AUDIO_CODEC,
-    param_spec);
-
-  param_spec = g_param_spec_boxed ("send-video-codec",
-    "send video codec", "Codec used to encode the outgoing video stream",
-    FS_TYPE_CODEC,
-    G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
-  g_object_class_install_property (object_class, PROP_SEND_VIDEO_CODEC,
-    param_spec);
-
-  param_spec = g_param_spec_boxed ("recv-audio-codecs",
-    "recvs audio codec", "Codecs used to decode the incoming audio stream",
-    FS_TYPE_CODEC_LIST,
-    G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
-  g_object_class_install_property (object_class, PROP_RECV_AUDIO_CODECS,
-    param_spec);
-
-  param_spec = g_param_spec_boxed ("recv-video-codecs",
-    "recvs video codec", "Codecs used to decode the incoming video stream",
-    FS_TYPE_CODEC_LIST,
-    G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
-  g_object_class_install_property (object_class, PROP_RECV_VIDEO_CODECS,
-    param_spec);
-
-  param_spec = g_param_spec_boxed ("audio-remote-candidate",
-    "audio remote candidate",
-    "Remote candidate used for the audio stream",
-    FS_TYPE_CANDIDATE,
-    G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
-  g_object_class_install_property (object_class,
-      PROP_AUDIO_REMOTE_CANDIDATE, param_spec);
-
-  param_spec = g_param_spec_boxed ("video-remote-candidate",
-    "video remote candidate",
-    "Remote candidate used for the video stream",
-    FS_TYPE_CANDIDATE,
-    G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
-  g_object_class_install_property (object_class,
-      PROP_VIDEO_REMOTE_CANDIDATE, param_spec);
-
-  param_spec = g_param_spec_boxed ("audio-local-candidate",
-    "audio local candidate",
-    "Local candidate used for the audio stream",
-    FS_TYPE_CANDIDATE,
-    G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
-  g_object_class_install_property (object_class,
-      PROP_AUDIO_REMOTE_CANDIDATE, param_spec);
-
-  param_spec = g_param_spec_boxed ("video-local-candidate",
-    "video local candidate",
-    "Local candidate used for the video stream",
-    FS_TYPE_CANDIDATE,
-    G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
-  g_object_class_install_property (object_class,
-      PROP_VIDEO_REMOTE_CANDIDATE, param_spec);
-
-  signals[CONFERENCE_ADDED] =
-    g_signal_new ("conference-added", G_TYPE_FROM_CLASS (klass),
-      G_SIGNAL_RUN_LAST, 0, NULL, NULL,
-      g_cclosure_marshal_generic,
-      G_TYPE_NONE,
-      1, FS_TYPE_CONFERENCE);
-
-  signals[SRC_PAD_ADDED] =
-    g_signal_new ("src-pad-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);
-
-  signals[SINK_PAD_ADDED] =
-    g_signal_new ("sink-pad-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);
-
-  signals[START_RECEIVING] =
-    g_signal_new ("start-receiving", G_TYPE_FROM_CLASS (klass),
-      G_SIGNAL_RUN_LAST, 0,
-      g_signal_accumulator_true_handled, NULL,
-      g_cclosure_marshal_generic,
-      G_TYPE_BOOLEAN, 2, G_TYPE_UINT, G_TYPE_UINT);
-
-  signals[CLOSED] =
-    g_signal_new ("closed", G_TYPE_FROM_CLASS (klass),
-      G_SIGNAL_RUN_LAST, 0, NULL, NULL,
-      g_cclosure_marshal_generic,
-      G_TYPE_NONE,
-      0);
-
-  signals[STREAM_CLOSED] =
-    g_signal_new ("stream-closed", G_TYPE_FROM_CLASS (klass),
-      G_SIGNAL_RUN_LAST, 0, NULL, NULL,
-      g_cclosure_marshal_generic,
-      G_TYPE_NONE, 1, TF_TYPE_CONTENT);
-
-  signals[CANDIDATES_CHANGED] =
-    g_signal_new ("candidates-changed", G_TYPE_FROM_CLASS (klass),
-      G_SIGNAL_RUN_LAST, 0, NULL, NULL,
-      g_cclosure_marshal_generic,
-      G_TYPE_NONE, 1, G_TYPE_UINT);
-}
-
-/**
- * empathy_streamed_media_handler_new_for_contact:
- * @contact: an #EmpathyContact
- *
- * Creates a new #EmpathyStreamedMediaHandler with contact @contact.
- *
- * Return value: a new #EmpathyStreamedMediaHandler
- */
-EmpathyStreamedMediaHandler *
-empathy_streamed_media_handler_new_for_contact (EmpathyContact *contact)
-{
-  return EMPATHY_STREAMED_MEDIA_HANDLER (g_object_new (EMPATHY_TYPE_STREAMED_MEDIA_HANDLER,
-    "contact", contact, NULL));
-}
-
-EmpathyStreamedMediaHandler *
-empathy_streamed_media_handler_new_for_channel (EmpathyTpStreamedMedia *call)
-{
-  return EMPATHY_STREAMED_MEDIA_HANDLER (g_object_new (EMPATHY_TYPE_STREAMED_MEDIA_HANDLER,
-    "tp-call", call,
-    "initial-video", empathy_tp_streamed_media_is_receiving_video (call),
-    NULL));
-}
-
-static void
-update_sending_codec (EmpathyStreamedMediaHandler *self,
-    FsCodec *codec,
-    FsSession *session)
-{
-  EmpathyStreamedMediaHandlerPriv *priv = GET_PRIV (self);
-  FsMediaType type;
-
-  if (codec == NULL || session == NULL)
-    return;
-
-  g_object_get (session, "media-type", &type, NULL);
-
-  if (type == FS_MEDIA_TYPE_AUDIO)
-    {
-      priv->send_audio_codec = fs_codec_copy (codec);
-      g_object_notify (G_OBJECT (self), "send-audio-codec");
-    }
-  else if (type == FS_MEDIA_TYPE_VIDEO)
-    {
-      priv->send_video_codec = fs_codec_copy (codec);
-      g_object_notify (G_OBJECT (self), "send-video-codec");
-    }
-}
-
-static void
-update_receiving_codec (EmpathyStreamedMediaHandler *self,
-    GList *codecs,
-    FsStream *stream)
-{
-  EmpathyStreamedMediaHandlerPriv *priv = GET_PRIV (self);
-  FsSession *session;
-  FsMediaType type;
-
-  if (codecs == NULL || stream == NULL)
-    return;
-
-  g_object_get (stream, "session", &session, NULL);
-  if (session == NULL)
-    return;
-
-  g_object_get (session, "media-type", &type, NULL);
-
-  if (type == FS_MEDIA_TYPE_AUDIO)
-    {
-      priv->recv_audio_codecs = fs_codec_list_copy (codecs);
-      g_object_notify (G_OBJECT (self), "recv-audio-codecs");
-    }
-  else if (type == FS_MEDIA_TYPE_VIDEO)
-    {
-      priv->recv_video_codecs = fs_codec_list_copy (codecs);
-      g_object_notify (G_OBJECT (self), "recv-video-codecs");
-    }
-
-  g_object_unref (session);
-}
-
-static void
-update_candidates (EmpathyStreamedMediaHandler *self,
-    FsCandidate *remote_candidate,
-    FsCandidate *local_candidate,
-    FsStream *stream)
-{
-  EmpathyStreamedMediaHandlerPriv *priv = GET_PRIV (self);
-  FsSession *session;
-  FsMediaType type;
-
-  if (stream == NULL)
-    return;
-
-  g_object_get (stream, "session", &session, NULL);
-  if (session == NULL)
-    return;
-
-  g_object_get (session, "media-type", &type, NULL);
-
-  if (type == FS_MEDIA_TYPE_AUDIO)
-    {
-      if (remote_candidate != NULL)
-        {
-          fs_candidate_destroy (priv->audio_remote_candidate);
-          priv->audio_remote_candidate = fs_candidate_copy (remote_candidate);
-          g_object_notify (G_OBJECT (self), "audio-remote-candidate");
-        }
-
-      if (local_candidate != NULL)
-        {
-          fs_candidate_destroy (priv->audio_local_candidate);
-          priv->audio_local_candidate = fs_candidate_copy (local_candidate);
-          g_object_notify (G_OBJECT (self), "audio-local-candidate");
-        }
-
-      g_signal_emit (G_OBJECT (self), signals[CANDIDATES_CHANGED], 0,
-          FS_MEDIA_TYPE_AUDIO);
-    }
-  else if (type == FS_MEDIA_TYPE_VIDEO)
-    {
-      if (remote_candidate != NULL)
-        {
-          fs_candidate_destroy (priv->video_remote_candidate);
-          priv->video_remote_candidate = fs_candidate_copy (remote_candidate);
-          g_object_notify (G_OBJECT (self), "video-remote-candidate");
-        }
-
-      if (local_candidate != NULL)
-        {
-          fs_candidate_destroy (priv->video_local_candidate);
-          priv->video_local_candidate = fs_candidate_copy (local_candidate);
-          g_object_notify (G_OBJECT (self), "video-local-candidate");
-        }
-
-      g_signal_emit (G_OBJECT (self), signals[CANDIDATES_CHANGED], 0,
-          FS_MEDIA_TYPE_VIDEO);
-    }
-
-  g_object_unref (session);
-}
-
-void
-empathy_streamed_media_handler_bus_message (EmpathyStreamedMediaHandler *handler,
-  GstBus *bus, GstMessage *message)
-{
-  EmpathyStreamedMediaHandlerPriv *priv = GET_PRIV (handler);
-  const GstStructure *s = gst_message_get_structure (message);
-
-  if (priv->tfchannel == NULL)
-    return;
-
-  if (s != NULL &&
-      gst_structure_has_name (s, "farstream-send-codec-changed"))
-    {
-      const GValue *val;
-      FsCodec *codec;
-      FsSession *session;
-
-      val = gst_structure_get_value (s, "codec");
-      codec = g_value_get_boxed (val);
-
-      val = gst_structure_get_value (s, "session");
-      session = g_value_get_object (val);
-
-      update_sending_codec (handler, codec, session);
-    }
-  else if (s != NULL &&
-      gst_structure_has_name (s, "farstream-recv-codecs-changed"))
-    {
-      const GValue *val;
-      GList *codecs;
-      FsStream *stream;
-
-      val = gst_structure_get_value (s, "codecs");
-      codecs = g_value_get_boxed (val);
-
-      val = gst_structure_get_value (s, "stream");
-      stream = g_value_get_object (val);
-
-      update_receiving_codec (handler, codecs, stream);
-    }
-  else if (s != NULL &&
-      gst_structure_has_name (s, "farstream-new-active-candidate-pair"))
-    {
-      const GValue *val;
-      FsCandidate *remote_candidate, *local_candidate;
-      FsStream *stream;
-
-      val = gst_structure_get_value (s, "remote-candidate");
-      remote_candidate = g_value_get_boxed (val);
-
-      val = gst_structure_get_value (s, "local-candidate");
-      local_candidate = g_value_get_boxed (val);
-
-      val = gst_structure_get_value (s, "stream");
-      stream = g_value_get_object (val);
-
-      update_candidates (handler, remote_candidate, local_candidate, stream);
-    }
-
-  tf_channel_bus_message (priv->tfchannel, message);
-}
-
-static void
-empathy_streamed_media_handler_tf_channel_conference_added_cb (TfChannel *tfchannel,
-  FsConference *conference,
-  EmpathyStreamedMediaHandler *self)
-{
-  g_signal_emit (G_OBJECT (self), signals[CONFERENCE_ADDED], 0,
-    GST_ELEMENT (conference));
-}
-
-static gboolean
-src_pad_added_error_idle (gpointer data)
-{
-  TfContent *content = data;
-
-  tf_content_error_literal (content, "Could not link sink");
-  g_object_unref (content);
-
-  return FALSE;
-}
-
-static void
-empathy_streamed_media_handler_tf_content_src_pad_added_cb (TfContent *content,
-  guint handle,
-  FsStream *stream,
-  GstPad *pad,
-  FsCodec *codec,
-  EmpathyStreamedMediaHandler  *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);
-
-  if (!retval)
-    g_idle_add (src_pad_added_error_idle, g_object_ref (content));
-}
-
-
-static gboolean
-empathy_streamed_media_handler_tf_content_start_receiving_cb (TfContent *content,
-    guint *handles, guint handle_count, EmpathyTpStreamedMedia *call)
-{
-  gboolean ret = FALSE;
-  guint media_type;
-
-  g_object_get (G_OBJECT (content), "media-type", &media_type, NULL);
-
-  g_signal_emit (G_OBJECT (call),
-    signals[START_RECEIVING], 0, media_type, &ret);
-
-  return ret;
-}
-
-static void
-empathy_streamed_media_handler_tf_content_removed_cb (TfChannel *channel,
-    TfContent *content, EmpathyStreamedMediaHandler *handler)
-{
-  g_signal_emit (handler, signals[STREAM_CLOSED], 0, content);
-}
-
-static void
-empathy_streamed_media_handler_tf_channel_content_added_cb (TfChannel *tfchannel,
-  TfContent *content, EmpathyStreamedMediaHandler *handler)
-{
-  guint media_type;
-  GstPad *spad;
-  gboolean retval;
-  FsSession *session;
-  FsCodec *codec;
-
-  g_signal_connect (content, "src-pad-added",
-      G_CALLBACK (empathy_streamed_media_handler_tf_content_src_pad_added_cb), handler);
-
-  g_signal_connect (content, "start-receiving",
-      G_CALLBACK (empathy_streamed_media_handler_tf_content_start_receiving_cb),
-        handler);
-
-  g_object_get (content, "media-type", &media_type,
-    "sink-pad", &spad, NULL);
-
-  g_signal_emit (G_OBJECT (handler), signals[SINK_PAD_ADDED], 0,
-      spad, media_type, &retval);
-
- if (!retval)
-   tf_content_error_literal (content, "Could not link source");
-
- /* Get sending codec */
- g_object_get (content, "fs-session", &session, NULL);
- g_object_get (session, "current-send-codec", &codec, NULL);
-
- update_sending_codec (handler, codec, session);
-
- tp_clear_object (&session);
- tp_clear_object (&codec);
-
- gst_object_unref (spad);
-}
-
-static void
-empathy_streamed_media_handler_tf_channel_closed_cb (TfChannel *tfchannel,
-  EmpathyStreamedMediaHandler *handler)
-{
-  g_signal_emit (G_OBJECT (handler), signals[CLOSED], 0);
-}
-
-static void
-empathy_streamed_media_handler_start_tpfs (GAsyncInitable *initable,
-    GAsyncResult *res, EmpathyStreamedMediaHandler *self)
-{
-  EmpathyStreamedMediaHandlerPriv *priv = GET_PRIV (self);
-  GError *error = NULL;
-  GPtrArray *conferences;
-
-  if (g_async_initable_init_finish (initable, res, &error))
-    {
-      priv->tfchannel = TF_CHANNEL (initable);
-
-      /* Set up the telepathy farsight channel */
-      g_signal_connect (priv->tfchannel, "fs-conference-added",
-          G_CALLBACK (empathy_streamed_media_handler_tf_channel_conference_added_cb), self);
-      g_signal_connect (priv->tfchannel, "content-added",
-          G_CALLBACK (empathy_streamed_media_handler_tf_channel_content_added_cb), self);
-      g_signal_connect (priv->tfchannel, "content-removed",
-          G_CALLBACK (empathy_streamed_media_handler_tf_content_removed_cb),
-          self);
-      g_signal_connect (priv->tfchannel, "closed",
-          G_CALLBACK (empathy_streamed_media_handler_tf_channel_closed_cb), self);
-
-      g_object_get (priv->tfchannel, "fs-conferences", &conferences, NULL);
-      if (conferences)
-        {
-          if (conferences->len > 0)
-            empathy_streamed_media_handler_tf_channel_conference_added_cb (
-                priv->tfchannel, g_ptr_array_index (conferences, 0), self);
-          g_ptr_array_unref (conferences);
-        }
-
-      empathy_tp_streamed_media_accept_incoming_call (priv->call);
-    }
-  else
-    {
-      g_warning ("Error creating tf channel");
-      g_clear_error (&error);
-    }
-  g_object_unref (self);
-}
-
-static void
-empathy_streamed_media_handler_request_cb (GObject *source,
-    GAsyncResult *result,
-    gpointer user_data)
-{
-  EmpathyStreamedMediaHandler *self = EMPATHY_STREAMED_MEDIA_HANDLER (user_data);
-  EmpathyStreamedMediaHandlerPriv *priv = GET_PRIV (self);
-  TpChannel *channel;
-  GError *error = NULL;
-  TpAccountChannelRequest *req = TP_ACCOUNT_CHANNEL_REQUEST (source);
-  TpAccount *account;
-
-  channel = tp_account_channel_request_create_and_handle_channel_finish (req,
-      result, NULL, &error);
-  if (channel == NULL)
-    {
-      DEBUG ("Failed to create the channel: %s", error->message);
-      g_error_free (error);
-      return;
-    }
-
-  account = tp_account_channel_request_get_account (req);
-
-  priv->call = empathy_tp_streamed_media_new (account, channel);
-
-  g_object_notify (G_OBJECT (self), "tp-call");
-
-
-  tf_channel_new_async (channel,
-      (GAsyncReadyCallback) empathy_streamed_media_handler_start_tpfs,
-      g_object_ref (self));
-
-  g_object_unref (channel);
-}
-
-void
-empathy_streamed_media_handler_start_call (EmpathyStreamedMediaHandler *handler,
-    gint64 timestamp)
-{
-  EmpathyStreamedMediaHandlerPriv *priv = GET_PRIV (handler);
-  TpAccountChannelRequest *req;
-  TpAccount *account;
-  GHashTable *request;
-
-  if (priv->call != NULL)
-    {
-      TpChannel *channel;
-
-      g_object_get (priv->call, "channel", &channel, NULL);
-
-      tf_channel_new_async (channel,
-          (GAsyncReadyCallback)  empathy_streamed_media_handler_start_tpfs,
-          g_object_ref (handler));
-      g_object_unref (channel);
-      return;
-    }
-
-  /* No TpStreamedMedia object (we are redialing). Request a new media channel that
-   * will be used to create a new EmpathyTpStreamedMedia. */
-  g_assert (priv->contact != NULL);
-
-  account = empathy_contact_get_account (priv->contact);
-  request = empathy_call_create_streamed_media_request (
-      empathy_contact_get_id (priv->contact),
-      priv->initial_audio, priv->initial_video);
-
-  req = tp_account_channel_request_new (account, request, timestamp);
-
-  tp_account_channel_request_create_and_handle_channel_async (req, NULL,
-      empathy_streamed_media_handler_request_cb, handler);
-
-  g_object_unref (req);
-  g_hash_table_unref (request);
-}
-
-/**
- * empathy_streamed_media_handler_stop_call:
- * @handler: an #EmpathyStreamedMediaHandler
- *
- * Closes the #EmpathyStreamedMediaHandler's call and frees its resources.
- */
-void
-empathy_streamed_media_handler_stop_call (EmpathyStreamedMediaHandler *handler)
-{
-  EmpathyStreamedMediaHandlerPriv *priv = GET_PRIV (handler);
-
-  if (priv->call != NULL)
-    {
-      empathy_tp_streamed_media_leave (priv->call);
-      g_object_unref (priv->call);
-    }
-
-  priv->call = NULL;
-}
-
-/**
- * empathy_streamed_media_handler_has_initial_video:
- * @handler: an #EmpathyStreamedMediaHandler
- *
- * Return %TRUE if the call managed by this #EmpathyStreamedMediaHandler was
- * created with video enabled
- *
- * Return value: %TRUE if the call was created as a video conversation.
- */
-gboolean
-empathy_streamed_media_handler_has_initial_video (EmpathyStreamedMediaHandler *handler)
-{
-  EmpathyStreamedMediaHandlerPriv *priv = GET_PRIV (handler);
-
-  return priv->initial_video;
-}
-
-FsCodec *
-empathy_streamed_media_handler_get_send_audio_codec (EmpathyStreamedMediaHandler *self)
-{
-  EmpathyStreamedMediaHandlerPriv *priv = GET_PRIV (self);
-
-  return priv->send_audio_codec;
-}
-
-FsCodec *
-empathy_streamed_media_handler_get_send_video_codec (EmpathyStreamedMediaHandler *self)
-{
-  EmpathyStreamedMediaHandlerPriv *priv = GET_PRIV (self);
-
-  return priv->send_video_codec;
-}
-
-GList *
-empathy_streamed_media_handler_get_recv_audio_codecs (EmpathyStreamedMediaHandler *self)
-{
-  EmpathyStreamedMediaHandlerPriv *priv = GET_PRIV (self);
-
-  return priv->recv_audio_codecs;
-}
-
-GList *
-empathy_streamed_media_handler_get_recv_video_codecs (EmpathyStreamedMediaHandler *self)
-{
-  EmpathyStreamedMediaHandlerPriv *priv = GET_PRIV (self);
-
-  return priv->recv_video_codecs;
-}
-
-FsCandidate *
-empathy_streamed_media_handler_get_audio_remote_candidate (
-    EmpathyStreamedMediaHandler *self)
-{
-  EmpathyStreamedMediaHandlerPriv *priv = GET_PRIV (self);
-
-  return priv->audio_remote_candidate;
-}
-
-FsCandidate *
-empathy_streamed_media_handler_get_audio_local_candidate (
-    EmpathyStreamedMediaHandler *self)
-{
-  EmpathyStreamedMediaHandlerPriv *priv = GET_PRIV (self);
-
-  return priv->audio_local_candidate;
-}
-
-FsCandidate *
-empathy_streamed_media_handler_get_video_remote_candidate (
-    EmpathyStreamedMediaHandler *self)
-{
-  EmpathyStreamedMediaHandlerPriv *priv = GET_PRIV (self);
-
-  return priv->video_remote_candidate;
-}
-
-FsCandidate *
-empathy_streamed_media_handler_get_video_local_candidate (
-    EmpathyStreamedMediaHandler *self)
-{
-  EmpathyStreamedMediaHandlerPriv *priv = GET_PRIV (self);
-
-  return priv->video_local_candidate;
-}
diff --git a/src/empathy-streamed-media-handler.h b/src/empathy-streamed-media-handler.h
deleted file mode 100644 (file)
index 429c954..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * empathy-streamed-media-handler.h - Header for EmpathyStreamedMediaHandler
- * Copyright (C) 2008-2009 Collabora Ltd.
- * @author Sjoerd Simons <sjoerd.simons@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_STREAMED_MEDIA_HANDLER_H__
-#define __EMPATHY_STREAMED_MEDIA_HANDLER_H__
-
-#include <glib-object.h>
-
-#include <gst/gst.h>
-#include <farstream/fs-conference.h>
-
-#include <libempathy/empathy-tp-streamed-media.h>
-#include <libempathy/empathy-contact.h>
-
-G_BEGIN_DECLS
-
-typedef struct _EmpathyStreamedMediaHandler EmpathyStreamedMediaHandler;
-typedef struct _EmpathyStreamedMediaHandlerClass EmpathyStreamedMediaHandlerClass;
-
-struct _EmpathyStreamedMediaHandlerClass {
-    GObjectClass parent_class;
-};
-
-struct _EmpathyStreamedMediaHandler {
-    GObject parent;
-    gpointer priv;
-};
-
-GType empathy_streamed_media_handler_get_type (void);
-
-/* TYPE MACROS */
-#define EMPATHY_TYPE_STREAMED_MEDIA_HANDLER \
-  (empathy_streamed_media_handler_get_type ())
-#define EMPATHY_STREAMED_MEDIA_HANDLER(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj), EMPATHY_TYPE_STREAMED_MEDIA_HANDLER, \
-    EmpathyStreamedMediaHandler))
-#define EMPATHY_STREAMED_MEDIA_HANDLER_CLASS(klass) \
-  (G_TYPE_CHECK_CLASS_CAST((klass), EMPATHY_TYPE_STREAMED_MEDIA_HANDLER, \
-  EmpathyStreamedMediaHandlerClass))
-#define EMPATHY_IS_STREAMED_MEDIA_HANDLER(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj), EMPATHY_TYPE_STREAMED_MEDIA_HANDLER))
-#define EMPATHY_IS_STREAMED_MEDIA_HANDLER_CLASS(klass) \
-  (G_TYPE_CHECK_CLASS_TYPE((klass), EMPATHY_TYPE_STREAMED_MEDIA_HANDLER))
-#define EMPATHY_STREAMED_MEDIA_HANDLER_GET_CLASS(obj) \
-  (G_TYPE_INSTANCE_GET_CLASS ((obj), EMPATHY_TYPE_STREAMED_MEDIA_HANDLER, \
-  EmpathyStreamedMediaHandlerClass))
-
-EmpathyStreamedMediaHandler * empathy_streamed_media_handler_new_for_contact (
-  EmpathyContact *contact);
-
-EmpathyStreamedMediaHandler * empathy_streamed_media_handler_new_for_channel (
-  EmpathyTpStreamedMedia *call);
-
-void empathy_streamed_media_handler_start_call (EmpathyStreamedMediaHandler *handler,
-    gint64 timestamp);
-void empathy_streamed_media_handler_stop_call (EmpathyStreamedMediaHandler *handler);
-
-gboolean empathy_streamed_media_handler_has_initial_video (EmpathyStreamedMediaHandler *handler);
-
-void empathy_streamed_media_handler_bus_message (EmpathyStreamedMediaHandler *handler,
-  GstBus *bus, GstMessage *message);
-
-FsCodec * empathy_streamed_media_handler_get_send_audio_codec (
-    EmpathyStreamedMediaHandler *self);
-
-FsCodec * empathy_streamed_media_handler_get_send_video_codec (
-    EmpathyStreamedMediaHandler *self);
-
-GList * empathy_streamed_media_handler_get_recv_audio_codecs (
-    EmpathyStreamedMediaHandler *self);
-
-GList * empathy_streamed_media_handler_get_recv_video_codecs (
-    EmpathyStreamedMediaHandler *self);
-
-FsCandidate * empathy_streamed_media_handler_get_audio_remote_candidate (
-    EmpathyStreamedMediaHandler *self);
-
-FsCandidate * empathy_streamed_media_handler_get_audio_local_candidate (
-    EmpathyStreamedMediaHandler *self);
-
-FsCandidate * empathy_streamed_media_handler_get_video_remote_candidate (
-    EmpathyStreamedMediaHandler *self);
-
-FsCandidate * empathy_streamed_media_handler_get_video_local_candidate (
-    EmpathyStreamedMediaHandler *self);
-
-G_END_DECLS
-
-#endif /* #ifndef __EMPATHY_STREAMED_MEDIA_HANDLER_H__*/
diff --git a/src/empathy-streamed-media-window-fullscreen.c b/src/empathy-streamed-media-window-fullscreen.c
deleted file mode 100644 (file)
index caa34ff..0000000
+++ /dev/null
@@ -1,309 +0,0 @@
-/*
- * empathy-streamed-media-window-fullscreen.c - Source for EmpathyStreamedMediaWindowFullscreen
- * Copyright (C) 2009 Collabora Ltd.
- *
- * Some code is based on the Totem Movie Player, especially
- * totem-fullscreen.c which has the following copyright:
- * Copyright (C) 2001-2007 Bastien Nocera <hadess@hadess.net>
- * Copyright (C) 2007 Sunil Mohan Adapa <sunilmohan@gnu.org.in>
- *
- * 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 "empathy-streamed-media-window-fullscreen.h"
-
-#include <gtk/gtk.h>
-
-#include <libempathy/empathy-utils.h>
-#include <libempathy-gtk/empathy-ui-utils.h>
-
-/* The number of seconds for which the "leave fullscreen" popup should
-   be shown */
-#define FULLSCREEN_POPUP_TIMEOUT 5
-
-G_DEFINE_TYPE (EmpathyStreamedMediaWindowFullscreen, empathy_streamed_media_window_fullscreen,
-    G_TYPE_OBJECT)
-
-/* private structure */
-typedef struct _EmpathyStreamedMediaWindowFullscreenPriv
-    EmpathyStreamedMediaWindowFullscreenPriv;
-
-struct _EmpathyStreamedMediaWindowFullscreenPriv
-{
-  EmpathyStreamedMediaWindow *parent_window;
-
-  GtkWidget *leave_fullscreen_popup;
-  GtkWidget *video_widget;
-
-  guint popup_timeout;
-  gboolean popup_creation_in_progress;
-  gboolean dispose_has_run;
-};
-
-#define GET_PRIV(o) \
-  (G_TYPE_INSTANCE_GET_PRIVATE ((o), EMPATHY_TYPE_STREAMED_MEDIA_WINDOW_FULLSCREEN, \
-    EmpathyStreamedMediaWindowFullscreenPriv))
-
-static void empathy_streamed_media_window_fullscreen_dispose (GObject *object);
-static void empathy_streamed_media_window_fullscreen_finalize (GObject *object);
-
-static gboolean empathy_streamed_media_window_fullscreen_hide_popup (
-    EmpathyStreamedMediaWindowFullscreen *fs);
-
-static void
-empathy_streamed_media_window_fullscreen_set_cursor_visible (
-    EmpathyStreamedMediaWindowFullscreen *fs,
-    gboolean show_cursor)
-{
-  EmpathyStreamedMediaWindowFullscreenPriv *priv = GET_PRIV (fs);
-  GdkWindow *window;
-
-  if (priv->video_widget == NULL)
-    return;
-
-  window = gtk_widget_get_window (priv->video_widget);
-
-  if (!show_cursor)
-    gdk_window_set_cursor (window, gdk_cursor_new (GDK_BLANK_CURSOR));
-  else
-    gdk_window_set_cursor (window, NULL);
-}
-
-static void
-empathy_streamed_media_window_fullscreen_add_popup_timeout (
-    EmpathyStreamedMediaWindowFullscreen *self)
-{
-  EmpathyStreamedMediaWindowFullscreenPriv *priv = GET_PRIV (self);
-
-  if (priv->popup_timeout == 0)
-    {
-      priv->popup_timeout = g_timeout_add_seconds (FULLSCREEN_POPUP_TIMEOUT,
-          (GSourceFunc) empathy_streamed_media_window_fullscreen_hide_popup, self);
-    }
-}
-
-static void
-empathy_streamed_media_window_fullscreen_remove_popup_timeout (
-    EmpathyStreamedMediaWindowFullscreen *self)
-{
-  EmpathyStreamedMediaWindowFullscreenPriv *priv = GET_PRIV (self);
-
-  if (priv->popup_timeout != 0)
-    {
-      g_source_remove (priv->popup_timeout);
-      priv->popup_timeout = 0;
-    }
-}
-
-void
-empathy_streamed_media_window_fullscreen_show_popup (EmpathyStreamedMediaWindowFullscreen *self)
-{
-  gint leave_fullscreen_width, leave_fullscreen_height;
-  GdkScreen *screen;
-  GdkRectangle fullscreen_rect;
-  EmpathyStreamedMediaWindowFullscreenPriv *priv = GET_PRIV (self);
-
-  g_assert (self->is_fullscreen);
-
-  g_return_if_fail (priv->parent_window != NULL);
-
-  if (priv->popup_creation_in_progress)
-    return;
-
-  if (!gtk_window_is_active (GTK_WINDOW (priv->parent_window)))
-    return;
-
-  priv->popup_creation_in_progress = TRUE;
-
-  empathy_streamed_media_window_fullscreen_set_cursor_visible (self, TRUE);
-
-  /* Obtaining the screen rectangle */
-  screen = gtk_window_get_screen (GTK_WINDOW (priv->parent_window));
-  gdk_screen_get_monitor_geometry (screen,
-      gdk_screen_get_monitor_at_window (screen,
-          gtk_widget_get_window (GTK_WIDGET (priv->parent_window))),
-      &fullscreen_rect);
-
-  /* Getting the popup window sizes */
-  gtk_window_get_size (GTK_WINDOW (priv->leave_fullscreen_popup),
-      &leave_fullscreen_width, &leave_fullscreen_height);
-
-  /* Moving the popup to the top-right corner (if the direction is LTR) or the
-     top-left corner (if the direction is RTL).*/
-  if (gtk_widget_get_direction (priv->leave_fullscreen_popup)
-        == GTK_TEXT_DIR_LTR)
-    {
-      gtk_window_move (GTK_WINDOW (priv->leave_fullscreen_popup),
-          fullscreen_rect.width + fullscreen_rect.x - leave_fullscreen_width,
-          fullscreen_rect.y);
-
-    }
-  else
-    {
-      gtk_window_move (GTK_WINDOW (priv->leave_fullscreen_popup),
-          fullscreen_rect.x, fullscreen_rect.y);
-    }
-
-  gtk_widget_show_all (priv->leave_fullscreen_popup);
-  empathy_streamed_media_window_fullscreen_add_popup_timeout (self);
-
-  priv->popup_creation_in_progress = FALSE;
-}
-
-static gboolean
-empathy_streamed_media_window_fullscreen_hide_popup (EmpathyStreamedMediaWindowFullscreen *fs)
-{
-  EmpathyStreamedMediaWindowFullscreenPriv *priv = GET_PRIV (fs);
-
-  if (priv->video_widget == NULL || !fs->is_fullscreen)
-    return TRUE;
-
-  gtk_widget_hide (priv->leave_fullscreen_popup);
-  empathy_streamed_media_window_fullscreen_remove_popup_timeout (fs);
-
-  empathy_streamed_media_window_fullscreen_set_cursor_visible (fs, FALSE);
-
-  return FALSE;
-}
-
-static void
-empathy_streamed_media_window_fullscreen_init (EmpathyStreamedMediaWindowFullscreen *self)
-{
-  EmpathyStreamedMediaWindowFullscreenPriv *priv = GET_PRIV (self);
-  GtkBuilder *gui;
-  gchar *filename;
-
-  filename = empathy_file_lookup ("empathy-call-window-fullscreen.ui", "src");
-  gui = empathy_builder_get_file (filename,
-    "leave_fullscreen_window", &priv->leave_fullscreen_popup,
-    "leave_fullscreen_button", &self->leave_fullscreen_button,
-    NULL);
-
-  gtk_widget_add_events (priv->leave_fullscreen_popup, GDK_POINTER_MOTION_MASK);
-
-  g_object_unref (gui);
-  g_free (filename);
-}
-
-static void
-empathy_streamed_media_window_fullscreen_class_init (
-    EmpathyStreamedMediaWindowFullscreenClass *klass)
-{
-  GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
-  g_type_class_add_private (klass, sizeof (EmpathyStreamedMediaWindowFullscreenPriv));
-
-  object_class->dispose = empathy_streamed_media_window_fullscreen_dispose;
-  object_class->finalize = empathy_streamed_media_window_fullscreen_finalize;
-}
-
-void
-empathy_streamed_media_window_fullscreen_dispose (GObject *object)
-{
-  EmpathyStreamedMediaWindowFullscreen *self = EMPATHY_STREAMED_MEDIA_WINDOW_FULLSCREEN (object);
-  EmpathyStreamedMediaWindowFullscreenPriv *priv = GET_PRIV (self);
-
-  if (priv->dispose_has_run)
-    return;
-
-  priv->dispose_has_run = TRUE;
-
-  if (priv->leave_fullscreen_popup != NULL)
-    gtk_widget_destroy (priv->leave_fullscreen_popup);
-  priv->leave_fullscreen_popup = NULL;
-
-  if (G_OBJECT_CLASS (empathy_streamed_media_window_fullscreen_parent_class)->dispose)
-    {
-      G_OBJECT_CLASS (
-          empathy_streamed_media_window_fullscreen_parent_class)->dispose (object);
-    }
-}
-
-void
-empathy_streamed_media_window_fullscreen_finalize (GObject *object)
-{
-  EmpathyStreamedMediaWindowFullscreen *self = EMPATHY_STREAMED_MEDIA_WINDOW_FULLSCREEN (object);
-
-  empathy_streamed_media_window_fullscreen_remove_popup_timeout (self);
-
-  G_OBJECT_CLASS (
-      empathy_streamed_media_window_fullscreen_parent_class)->finalize (object);
-}
-
-static void
-empathy_streamed_media_window_fullscreen_parent_window_notify (GtkWidget *parent_window,
-    GParamSpec *property, EmpathyStreamedMediaWindowFullscreen *fs)
-{
-  EmpathyStreamedMediaWindowFullscreenPriv *priv = GET_PRIV (fs);
-
-  if (!fs->is_fullscreen)
-    return;
-
-  if (parent_window == GTK_WIDGET (priv->parent_window) &&
-        !gtk_window_is_active (GTK_WINDOW (parent_window)))
-    {
-      empathy_streamed_media_window_fullscreen_hide_popup (fs);
-      empathy_streamed_media_window_fullscreen_set_cursor_visible (fs, TRUE);
-    }
-}
-
-EmpathyStreamedMediaWindowFullscreen *
-empathy_streamed_media_window_fullscreen_new (EmpathyStreamedMediaWindow *parent_window)
-{
-  EmpathyStreamedMediaWindowFullscreen *self = EMPATHY_STREAMED_MEDIA_WINDOW_FULLSCREEN (
-    g_object_new (EMPATHY_TYPE_STREAMED_MEDIA_WINDOW_FULLSCREEN, NULL));
-  EmpathyStreamedMediaWindowFullscreenPriv *priv = GET_PRIV (self);
-
-  priv->parent_window = parent_window;
-  g_signal_connect (G_OBJECT (priv->parent_window), "notify::is-active",
-    G_CALLBACK (empathy_streamed_media_window_fullscreen_parent_window_notify), self);
-
-  return self;
-}
-
-void
-empathy_streamed_media_window_fullscreen_set_fullscreen (EmpathyStreamedMediaWindowFullscreen *fs,
-  gboolean set_fullscreen)
-{
-
-  if (set_fullscreen)
-      empathy_streamed_media_window_fullscreen_remove_popup_timeout (fs);
-  else
-      empathy_streamed_media_window_fullscreen_hide_popup (fs);
-
-  empathy_streamed_media_window_fullscreen_set_cursor_visible (fs, !set_fullscreen);
-  fs->is_fullscreen = set_fullscreen;
-}
-
-static void
-video_widget_destroy_cb (GtkWidget *widget,
-    EmpathyStreamedMediaWindowFullscreen *self)
-{
-  EmpathyStreamedMediaWindowFullscreenPriv *priv = GET_PRIV (self);
-
-  priv->video_widget = NULL;
-}
-
-void
-empathy_streamed_media_window_fullscreen_set_video_widget (
-    EmpathyStreamedMediaWindowFullscreen *fs,
-    GtkWidget *video_widget)
-{
-  EmpathyStreamedMediaWindowFullscreenPriv *priv = GET_PRIV (fs);
-  priv->video_widget = video_widget;
-
-  tp_g_signal_connect_object (video_widget, "destroy",
-      G_CALLBACK (video_widget_destroy_cb), fs, 0);
-}
diff --git a/src/empathy-streamed-media-window-fullscreen.h b/src/empathy-streamed-media-window-fullscreen.h
deleted file mode 100644 (file)
index bdb95fb..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * empathy-streamed-media-window-fullscreen.h - Header for EmpathyStreamedMediaWindowFullscreen
- * Copyright (C) 2009 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_STREAMED_MEDIA_WINDOW_FULLSCREEN_H__
-#define __EMPATHY_STREAMED_MEDIA_WINDOW_FULLSCREEN_H__
-
-#include <glib-object.h>
-#include <gtk/gtk.h>
-
-#include "empathy-streamed-media-window.h"
-
-G_BEGIN_DECLS
-
-typedef struct _EmpathyStreamedMediaWindowFullscreen EmpathyStreamedMediaWindowFullscreen;
-typedef struct _EmpathyStreamedMediaWindowFullscreenClass
-    EmpathyStreamedMediaWindowFullscreenClass;
-
-struct _EmpathyStreamedMediaWindowFullscreenClass {
-  GObjectClass parent_class;
-};
-
-struct _EmpathyStreamedMediaWindowFullscreen {
-  GObject parent;
-  gboolean is_fullscreen;
-  GtkWidget *leave_fullscreen_button;
-};
-
-GType empathy_streamed_media_window_fullscreen_get_type (void);
-
-/* TYPE MACROS */
-#define EMPATHY_TYPE_STREAMED_MEDIA_WINDOW_FULLSCREEN \
-  (empathy_streamed_media_window_fullscreen_get_type ())
-#define EMPATHY_STREAMED_MEDIA_WINDOW_FULLSCREEN(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj), EMPATHY_TYPE_STREAMED_MEDIA_WINDOW_FULLSCREEN, \
-    EmpathyStreamedMediaWindowFullscreen))
-#define EMPATHY_STREAMED_MEDIA_WINDOW_FULLSCREEN_CLASS(klass) \
-  (G_TYPE_CHECK_CLASS_CAST((klass), EMPATHY_TYPE_STREAMED_MEDIA_WINDOW_FULLSCREEN, \
-    EmpathyStreamedMediaWindowClassFullscreen))
-#define EMPATHY_IS_STREAMED_MEDIA_WINDOW_FULLSCREEN(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj), EMPATHY_TYPE_STREAMED_MEDIA_WINDOW_FULLSCREEN))
-#define EMPATHY_IS_STREAMED_MEDIA_WINDOW_FULLSCREEN_CLASS(klass) \
-  (G_TYPE_CHECK_CLASS_TYPE((klass), EMPATHY_TYPE_STREAMED_MEDIA_WINDOW_FULLSCREEN))
-#define EMPATHY_STREAMED_MEDIA_WINDOW_FULLSCREEN_GET_CLASS(obj) \
-  (G_TYPE_INSTANCE_GET_CLASS ((obj), EMPATHY_TYPE_STREAMED_MEDIA_WINDOW_FULLSCREEN, \
-    EmpathyStreamedMediaWindowFullscreenClass))
-
-EmpathyStreamedMediaWindowFullscreen *empathy_streamed_media_window_fullscreen_new (
-    EmpathyStreamedMediaWindow *parent);
-
-void empathy_streamed_media_window_fullscreen_set_fullscreen (
-    EmpathyStreamedMediaWindowFullscreen *fs,
-    gboolean set_fullscreen);
-void empathy_streamed_media_window_fullscreen_set_video_widget (
-    EmpathyStreamedMediaWindowFullscreen *fs,
-    GtkWidget *video_widget);
-void empathy_streamed_media_window_fullscreen_show_popup (
-    EmpathyStreamedMediaWindowFullscreen *fs);
-
-G_END_DECLS
-
-#endif /* #ifndef __EMPATHY_STREAMED_MEDIA_WINDOW_FULLSCREEN_H__*/
diff --git a/src/empathy-streamed-media-window.c b/src/empathy-streamed-media-window.c
deleted file mode 100644 (file)
index 0984e5b..0000000
+++ /dev/null
@@ -1,3200 +0,0 @@
-/*
- * empathy-streamed-media-window.c - Source for EmpathyStreamedMediaWindow
- * Copyright (C) 2008-2009 Collabora Ltd.
- * @author Sjoerd Simons <sjoerd.simons@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 <stdio.h>
-#include <stdlib.h>
-
-#include <math.h>
-
-#include <gdk/gdkkeysyms.h>
-#include <gst/gst.h>
-#include <gtk/gtk.h>
-#include <glib/gi18n.h>
-
-#include <telepathy-glib/util.h>
-
-#include <telepathy-farstream/telepathy-farstream.h>
-
-#include <farstream/fs-element-added-notifier.h>
-#include <farstream/fs-utils.h>
-
-#include <libempathy/empathy-tp-contact-factory.h>
-#include <libempathy/empathy-utils.h>
-#include <libempathy-gtk/empathy-avatar-image.h>
-#include <libempathy-gtk/empathy-dialpad-widget.h>
-#include <libempathy-gtk/empathy-ui-utils.h>
-#include <libempathy-gtk/empathy-sound-manager.h>
-#include <libempathy-gtk/empathy-geometry.h>
-#include <libempathy-gtk/empathy-images.h>
-
-#define DEBUG_FLAG EMPATHY_DEBUG_VOIP
-#include <libempathy/empathy-debug.h>
-
-#include "empathy-streamed-media-window.h"
-#include "empathy-streamed-media-window-fullscreen.h"
-#include "empathy-video-widget.h"
-#include "empathy-audio-src.h"
-#include "empathy-audio-sink.h"
-#include "empathy-video-src.h"
-#include "ev-sidebar.h"
-
-#define CONTENT_HBOX_BORDER_WIDTH 6
-#define CONTENT_HBOX_SPACING 3
-#define CONTENT_HBOX_CHILDREN_PACKING_PADDING 3
-
-#define SELF_VIDEO_SECTION_WIDTH 160
-#define SELF_VIDEO_SECTION_HEIGTH 120
-
-/* The avatar's default width and height are set to the same value because we
-   want a square icon. */
-#define REMOTE_CONTACT_AVATAR_DEFAULT_WIDTH EMPATHY_VIDEO_WIDGET_DEFAULT_HEIGHT
-#define REMOTE_CONTACT_AVATAR_DEFAULT_HEIGHT \
-  EMPATHY_VIDEO_WIDGET_DEFAULT_HEIGHT
-
-/* If an video input error occurs, the error message will start with "v4l" */
-#define VIDEO_INPUT_ERROR_PREFIX "v4l"
-
-/* The time interval in milliseconds between 2 outgoing rings */
-#define MS_BETWEEN_RING 500
-
-G_DEFINE_TYPE(EmpathyStreamedMediaWindow, empathy_streamed_media_window, GTK_TYPE_WINDOW)
-
-/* signal enum */
-#if 0
-enum
-{
-    LAST_SIGNAL
-};
-
-static guint signals[LAST_SIGNAL] = {0};
-#endif
-
-enum {
-  PROP_STREAMED_MEDIA_HANDLER = 1,
-};
-
-typedef enum {
-  CONNECTING,
-  CONNECTED,
-  DISCONNECTED,
-  REDIALING
-} CallState;
-
-typedef enum {
-  CAMERA_STATE_OFF = 0,
-  CAMERA_STATE_PREVIEW,
-  CAMERA_STATE_ON,
-} CameraState;
-
-/* private structure */
-typedef struct _EmpathyStreamedMediaWindowPriv EmpathyStreamedMediaWindowPriv;
-
-struct _EmpathyStreamedMediaWindowPriv
-{
-  gboolean dispose_has_run;
-  EmpathyStreamedMediaHandler *handler;
-  EmpathyContact *contact;
-
-  guint call_state;
-  gboolean outgoing;
-
-  GtkUIManager *ui_manager;
-  GtkWidget *errors_vbox;
-  /* widget displays the video received from the remote user. This widget is
-   * alive only during call. */
-  GtkWidget *video_output;
-  GtkWidget *video_preview;
-  GtkWidget *remote_user_avatar_widget;
-  GtkWidget *self_user_avatar_widget;
-  GtkWidget *sidebar;
-  GtkWidget *sidebar_button;
-  GtkWidget *statusbar;
-  GtkWidget *volume_button;
-  GtkWidget *redial_button;
-  GtkWidget *mic_button;
-  GtkWidget *toolbar;
-  GtkWidget *pane;
-  GtkAction *redial;
-  GtkAction *menu_fullscreen;
-  GtkAction *action_camera_on;
-  GtkWidget *tool_button_camera_off;
-  GtkWidget *tool_button_camera_preview;
-  GtkWidget *tool_button_camera_on;
-
-  /* The frames and boxes that contain self and remote avatar and video
-     input/output. When we redial, we destroy and re-create the boxes */
-  GtkWidget *remote_user_output_frame;
-  GtkWidget *self_user_output_frame;
-  GtkWidget *remote_user_output_hbox;
-  GtkWidget *self_user_output_hbox;
-
-  /* We keep a reference on the hbox which contains the main content so we can
-     easilly repack everything when toggling fullscreen */
-  GtkWidget *content_hbox;
-
-  /* This vbox is contained in the content_hbox and it contains the
-     self_user_output_frame and the sidebar button. When toggling fullscreen,
-     it needs to be repacked. We keep a reference on it for easier access. */
-  GtkWidget *vbox;
-
-  gulong video_output_motion_handler_id;
-  guint bus_message_source_id;
-
-  gdouble volume;
-  GtkWidget *volume_scale;
-  GtkWidget *volume_progress_bar;
-  GtkAdjustment *audio_input_adj;
-
-  GtkWidget *dtmf_panel;
-
-  /* Details vbox */
-  GtkWidget *details_vbox;
-  GtkWidget *vcodec_encoding_label;
-  GtkWidget *acodec_encoding_label;
-  GtkWidget *vcodec_decoding_label;
-  GtkWidget *acodec_decoding_label;
-
-  GtkWidget *audio_remote_candidate_label;
-  GtkWidget *audio_local_candidate_label;
-  GtkWidget *video_remote_candidate_label;
-  GtkWidget *video_local_candidate_label;
-  GtkWidget *video_remote_candidate_info_img;
-  GtkWidget *video_local_candidate_info_img;
-  GtkWidget *audio_remote_candidate_info_img;
-  GtkWidget *audio_local_candidate_info_img;
-
-  GstElement *video_input;
-  GstElement *audio_input;
-  GstElement *audio_output;
-  GstElement *pipeline;
-  GstElement *video_tee;
-
-  GstElement *funnel;
-
-  FsElementAddedNotifier *fsnotifier;
-
-  guint context_id;
-
-  GTimer *timer;
-  guint timer_id;
-
-  GtkWidget *video_contrast;
-  GtkWidget *video_brightness;
-  GtkWidget *video_gamma;
-
-  GMutex *lock;
-  gboolean call_started;
-  gboolean sending_video;
-  CameraState camera_state;
-
-  EmpathyStreamedMediaWindowFullscreen *fullscreen;
-  gboolean is_fullscreen;
-
-  /* Those fields represent the state of the window before it actually was in
-     fullscreen mode. */
-  gboolean sidebar_was_visible_before_fs;
-  gint original_width_before_fs;
-  gint original_height_before_fs;
-
-  /* TRUE if the call should be started when the pipeline is playing */
-  gboolean start_call_when_playing;
-  /* TRUE if we requested to set the pipeline in the playing state */
-  gboolean pipeline_playing;
-
-  EmpathySoundManager *sound_mgr;
-};
-
-#define GET_PRIV(o) \
-  (G_TYPE_INSTANCE_GET_PRIVATE ((o), EMPATHY_TYPE_STREAMED_MEDIA_WINDOW, \
-    EmpathyStreamedMediaWindowPriv))
-
-static void empathy_streamed_media_window_realized_cb (GtkWidget *widget,
-  EmpathyStreamedMediaWindow *window);
-
-static gboolean empathy_streamed_media_window_delete_cb (GtkWidget *widget,
-  GdkEvent *event, EmpathyStreamedMediaWindow *window);
-
-static gboolean empathy_streamed_media_window_state_event_cb (GtkWidget *widget,
-  GdkEventWindowState *event, EmpathyStreamedMediaWindow *window);
-
-static void empathy_streamed_media_window_sidebar_toggled_cb (GtkToggleButton *toggle,
-  EmpathyStreamedMediaWindow *window);
-
-static void empathy_streamed_media_window_set_send_video (EmpathyStreamedMediaWindow *window,
-  CameraState state);
-
-static void empathy_streamed_media_window_mic_toggled_cb (
-  GtkToggleToolButton *toggle, EmpathyStreamedMediaWindow *window);
-
-static void empathy_streamed_media_window_sidebar_hidden_cb (EvSidebar *sidebar,
-  EmpathyStreamedMediaWindow *window);
-
-static void empathy_streamed_media_window_sidebar_shown_cb (EvSidebar *sidebar,
-  EmpathyStreamedMediaWindow *window);
-
-static void empathy_streamed_media_window_hangup_cb (gpointer object,
-  EmpathyStreamedMediaWindow *window);
-
-static void empathy_streamed_media_window_fullscreen_cb (gpointer object,
-  EmpathyStreamedMediaWindow *window);
-
-static void empathy_streamed_media_window_fullscreen_toggle (EmpathyStreamedMediaWindow *window);
-
-static gboolean empathy_streamed_media_window_video_button_press_cb (
-  GtkWidget *video_output, GdkEventButton *event, EmpathyStreamedMediaWindow *window);
-
-static gboolean empathy_streamed_media_window_key_press_cb (GtkWidget *video_output,
-  GdkEventKey *event, EmpathyStreamedMediaWindow *window);
-
-static gboolean empathy_streamed_media_window_video_output_motion_notify (
-  GtkWidget *widget, GdkEventMotion *event, EmpathyStreamedMediaWindow *window);
-
-static void empathy_streamed_media_window_video_menu_popup (EmpathyStreamedMediaWindow *window,
-  guint button);
-
-static void empathy_streamed_media_window_redial_cb (gpointer object,
-  EmpathyStreamedMediaWindow *window);
-
-static void empathy_streamed_media_window_restart_call (EmpathyStreamedMediaWindow *window);
-
-static void empathy_streamed_media_window_status_message (EmpathyStreamedMediaWindow *window,
-  gchar *message);
-
-static void empathy_streamed_media_window_update_avatars_visibility (EmpathyTpStreamedMedia *call,
-  EmpathyStreamedMediaWindow *window);
-
-static gboolean empathy_streamed_media_window_bus_message (GstBus *bus,
-  GstMessage *message, gpointer user_data);
-
-static void
-empathy_streamed_media_window_volume_changed_cb (GtkScaleButton *button,
-  gdouble value, EmpathyStreamedMediaWindow *window);
-
-static void block_camera_control_signals (EmpathyStreamedMediaWindow *self);
-static void unblock_camera_control_signals (EmpathyStreamedMediaWindow *self);
-
-static void
-empathy_streamed_media_window_setup_toolbar (EmpathyStreamedMediaWindow *self)
-{
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (self);
-  GtkToolItem *tool_item;
-  GtkWidget *camera_off_icon;
-  GdkPixbuf *pixbuf, *modded_pixbuf;
-
-  /* set the icon of the 'camera off' button by greying off the webcam icon */
-  pixbuf = empathy_pixbuf_from_icon_name ("camera-web",
-      GTK_ICON_SIZE_SMALL_TOOLBAR);
-
-  modded_pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, TRUE, 8,
-      gdk_pixbuf_get_width (pixbuf),
-      gdk_pixbuf_get_height (pixbuf));
-
-  gdk_pixbuf_saturate_and_pixelate (pixbuf, modded_pixbuf, 1.0, TRUE);
-  g_object_unref (pixbuf);
-
-  camera_off_icon = gtk_image_new_from_pixbuf (modded_pixbuf);
-  g_object_unref (modded_pixbuf);
-  gtk_tool_button_set_icon_widget (GTK_TOOL_BUTTON (
-        priv->tool_button_camera_off), camera_off_icon);
-
-  /* Add an empty expanded GtkToolItem so the volume button is at the end of
-   * the toolbar. */
-  tool_item = gtk_tool_item_new ();
-  gtk_tool_item_set_expand (tool_item, TRUE);
-  gtk_widget_show (GTK_WIDGET (tool_item));
-  gtk_toolbar_insert (GTK_TOOLBAR (priv->toolbar), tool_item, -1);
-
-  priv->volume_button = gtk_volume_button_new ();
-  /* FIXME listen to the audiosinks signals and update the button according to
-   * that, for now starting out at 1.0 and assuming only the app changes the
-   * volume will do */
-  gtk_scale_button_set_value (GTK_SCALE_BUTTON (priv->volume_button), 1.0);
-  g_signal_connect (G_OBJECT (priv->volume_button), "value-changed",
-    G_CALLBACK (empathy_streamed_media_window_volume_changed_cb), self);
-
-  tool_item = gtk_tool_item_new ();
-  gtk_container_add (GTK_CONTAINER (tool_item), priv->volume_button);
-  gtk_widget_show_all (GTK_WIDGET (tool_item));
-  gtk_toolbar_insert (GTK_TOOLBAR (priv->toolbar), tool_item, -1);
-}
-
-static void
-dtmf_start_tone_cb (EmpathyDialpadWidget *dialpad,
-    TpDTMFEvent event,
-    EmpathyStreamedMediaWindow *window)
-{
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (window);
-  EmpathyTpStreamedMedia *call;
-
-  g_object_get (priv->handler, "tp-call", &call, NULL);
-
-  empathy_tp_streamed_media_start_tone (call, event);
-
-  g_object_unref (call);
-}
-
-static void
-dtmf_stop_tone_cb (EmpathyDialpadWidget *self,
-    TpDTMFEvent event,
-    EmpathyStreamedMediaWindow *window)
-{
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (window);
-  EmpathyTpStreamedMedia *call;
-
-  g_object_get (priv->handler, "tp-call", &call, NULL);
-
-  empathy_tp_streamed_media_stop_tone (call);
-
-  g_object_unref (call);
-}
-
-static GtkWidget *
-empathy_streamed_media_window_create_video_input_add_slider (EmpathyStreamedMediaWindow *self,
-  gchar *label_text, GtkWidget *bin)
-{
-   GtkWidget *vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 2);
-   GtkWidget *scale = gtk_scale_new_with_range (GTK_ORIENTATION_VERTICAL, 0,
-       100, 10);
-   GtkWidget *label = gtk_label_new (label_text);
-
-   gtk_widget_set_sensitive (scale, FALSE);
-
-   gtk_container_add (GTK_CONTAINER (bin), vbox);
-
-   gtk_range_set_inverted (GTK_RANGE (scale), TRUE);
-   gtk_box_pack_start (GTK_BOX (vbox), scale, TRUE, TRUE, 0);
-   gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
-
-   return scale;
-}
-
-static void
-empathy_streamed_media_window_video_contrast_changed_cb (GtkAdjustment *adj,
-  EmpathyStreamedMediaWindow *self)
-
-{
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (self);
-
-  empathy_video_src_set_channel (priv->video_input,
-    EMPATHY_GST_VIDEO_SRC_CHANNEL_CONTRAST, gtk_adjustment_get_value (adj));
-}
-
-static void
-empathy_streamed_media_window_video_brightness_changed_cb (GtkAdjustment *adj,
-  EmpathyStreamedMediaWindow *self)
-
-{
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (self);
-
-  empathy_video_src_set_channel (priv->video_input,
-    EMPATHY_GST_VIDEO_SRC_CHANNEL_BRIGHTNESS, gtk_adjustment_get_value (adj));
-}
-
-static void
-empathy_streamed_media_window_video_gamma_changed_cb (GtkAdjustment *adj,
-  EmpathyStreamedMediaWindow *self)
-
-{
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (self);
-
-  empathy_video_src_set_channel (priv->video_input,
-    EMPATHY_GST_VIDEO_SRC_CHANNEL_GAMMA, gtk_adjustment_get_value (adj));
-}
-
-
-static GtkWidget *
-empathy_streamed_media_window_create_video_input (EmpathyStreamedMediaWindow *self)
-{
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (self);
-  GtkWidget *hbox;
-
-  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);
-
-  priv->video_brightness = empathy_streamed_media_window_create_video_input_add_slider (
-    self,  _("Brightness"), hbox);
-
-  priv->video_gamma = empathy_streamed_media_window_create_video_input_add_slider (
-    self,  _("Gamma"), hbox);
-
-  return hbox;
-}
-
-static void
-empathy_streamed_media_window_setup_video_input (EmpathyStreamedMediaWindow *self)
-{
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (self);
-  guint supported;
-  GtkAdjustment *adj;
-
-  supported = empathy_video_src_get_supported_channels (priv->video_input);
-
-  if (supported & EMPATHY_GST_VIDEO_SRC_SUPPORTS_CONTRAST)
-    {
-      adj = gtk_range_get_adjustment (GTK_RANGE (priv->video_contrast));
-
-      gtk_adjustment_set_value (adj,
-        empathy_video_src_get_channel (priv->video_input,
-          EMPATHY_GST_VIDEO_SRC_CHANNEL_CONTRAST));
-
-      g_signal_connect (G_OBJECT (adj), "value-changed",
-        G_CALLBACK (empathy_streamed_media_window_video_contrast_changed_cb), self);
-
-      gtk_widget_set_sensitive (priv->video_contrast, TRUE);
-    }
-
-  if (supported & EMPATHY_GST_VIDEO_SRC_SUPPORTS_BRIGHTNESS)
-    {
-      adj = gtk_range_get_adjustment (GTK_RANGE (priv->video_brightness));
-
-      gtk_adjustment_set_value (adj,
-        empathy_video_src_get_channel (priv->video_input,
-          EMPATHY_GST_VIDEO_SRC_CHANNEL_BRIGHTNESS));
-
-      g_signal_connect (G_OBJECT (adj), "value-changed",
-        G_CALLBACK (empathy_streamed_media_window_video_brightness_changed_cb), self);
-      gtk_widget_set_sensitive (priv->video_brightness, TRUE);
-    }
-
-  if (supported & EMPATHY_GST_VIDEO_SRC_SUPPORTS_GAMMA)
-    {
-      adj = gtk_range_get_adjustment (GTK_RANGE (priv->video_gamma));
-
-      gtk_adjustment_set_value (adj,
-        empathy_video_src_get_channel (priv->video_input,
-          EMPATHY_GST_VIDEO_SRC_CHANNEL_GAMMA));
-
-      g_signal_connect (G_OBJECT (adj), "value-changed",
-        G_CALLBACK (empathy_streamed_media_window_video_gamma_changed_cb), self);
-      gtk_widget_set_sensitive (priv->video_gamma, TRUE);
-    }
-}
-
-static void
-empathy_streamed_media_window_mic_volume_changed_cb (GtkAdjustment *adj,
-  EmpathyStreamedMediaWindow *self)
-{
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (self);
-  gdouble volume;
-
-  volume = gtk_adjustment_get_value (adj)/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_streamed_media_window_audio_input_level_changed_cb (EmpathyGstAudioSrc *src,
-  gdouble level, EmpathyStreamedMediaWindow *window)
-{
-  gdouble value;
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (window);
-
-  value = CLAMP (pow (10, level / 20), 0.0, 1.0);
-  gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (priv->volume_progress_bar),
-      value);
-}
-
-static GtkWidget *
-empathy_streamed_media_window_create_audio_input (EmpathyStreamedMediaWindow *self)
-{
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (self);
-  GtkWidget *hbox, *vbox, *label;
-
-  hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 3);
-  gtk_box_set_homogeneous (GTK_BOX (hbox), TRUE);
-
-  vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 3);
-  gtk_box_pack_start (GTK_BOX (hbox), vbox, FALSE, FALSE, 3);
-
-  priv->volume_scale = gtk_scale_new_with_range (GTK_ORIENTATION_VERTICAL, 0,
-      150, 100);
-  gtk_range_set_inverted (GTK_RANGE (priv->volume_scale), TRUE);
-  label = gtk_label_new (_("Volume"));
-
-  priv->audio_input_adj = gtk_range_get_adjustment (
-    GTK_RANGE (priv->volume_scale));
-  priv->volume =  empathy_audio_src_get_volume (EMPATHY_GST_AUDIO_SRC
-    (priv->audio_input));
-  gtk_adjustment_set_value (priv->audio_input_adj, priv->volume * 100);
-
-  g_signal_connect (G_OBJECT (priv->audio_input_adj), "value-changed",
-    G_CALLBACK (empathy_streamed_media_window_mic_volume_changed_cb), self);
-
-  gtk_box_pack_start (GTK_BOX (vbox), priv->volume_scale, TRUE, TRUE, 3);
-  gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 3);
-
-  priv->volume_progress_bar = gtk_progress_bar_new ();
-
-  gtk_orientable_set_orientation (GTK_ORIENTABLE (priv->volume_progress_bar),
-      GTK_ORIENTATION_VERTICAL);
-
-  gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (priv->volume_progress_bar),
-      0);
-
-  gtk_box_pack_start (GTK_BOX (hbox), priv->volume_progress_bar, FALSE, FALSE,
-      3);
-
-  return hbox;
-}
-
-static void
-create_video_output_widget (EmpathyStreamedMediaWindow *self)
-{
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (self);
-  GstBus *bus;
-
-  g_assert (priv->video_output == NULL);
-  g_assert (priv->pipeline != NULL);
-
-  bus = gst_pipeline_get_bus (GST_PIPELINE (priv->pipeline));
-  priv->video_output = empathy_video_widget_new (bus);
-
-  gtk_box_pack_start (GTK_BOX (priv->remote_user_output_hbox),
-      priv->video_output, TRUE, TRUE, 0);
-
-  gtk_widget_add_events (priv->video_output,
-      GDK_BUTTON_PRESS_MASK | GDK_POINTER_MOTION_MASK);
-  g_signal_connect (G_OBJECT (priv->video_output), "button-press-event",
-      G_CALLBACK (empathy_streamed_media_window_video_button_press_cb), self);
-
-  g_object_unref (bus);
-}
-
-static void
-create_video_input (EmpathyStreamedMediaWindow *self)
-{
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (self);
-
-  g_assert (priv->video_input == NULL);
-  priv->video_input = empathy_video_src_new ();
-  gst_object_ref_sink (priv->video_input);
-}
-
-static void
-create_audio_input (EmpathyStreamedMediaWindow *self)
-{
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (self);
-
-  g_assert (priv->audio_input == NULL);
-  priv->audio_input = empathy_audio_src_new ();
-  gst_object_ref_sink (priv->audio_input);
-
-  tp_g_signal_connect_object (priv->audio_input, "peak-level-changed",
-    G_CALLBACK (empathy_streamed_media_window_audio_input_level_changed_cb),
-    self, 0);
-}
-
-static void
-add_video_preview_to_pipeline (EmpathyStreamedMediaWindow *self)
-{
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (self);
-  GstElement *preview;
-
-  g_assert (priv->video_preview != NULL);
-  g_assert (priv->pipeline != NULL);
-  g_assert (priv->video_input != NULL);
-  g_assert (priv->video_tee != NULL);
-
-  preview = empathy_video_widget_get_element (
-      EMPATHY_VIDEO_WIDGET (priv->video_preview));
-
-  if (!gst_bin_add (GST_BIN (priv->pipeline), priv->video_input))
-    {
-      g_warning ("Could not add video input to pipeline");
-      return;
-    }
-
-  if (!gst_bin_add (GST_BIN (priv->pipeline), priv->video_tee))
-    {
-      g_warning ("Could not add video tee to pipeline");
-      return;
-    }
-
-  if (!gst_bin_add (GST_BIN (priv->pipeline), preview))
-    {
-      g_warning ("Could not add video preview to pipeline");
-      return;
-    }
-
-  if (!gst_element_link (priv->video_input, priv->video_tee))
-    {
-      g_warning ("Could not link video input to video tee");
-      return;
-    }
-
-  if (!gst_element_link (priv->video_tee, preview))
-    {
-      g_warning ("Could not link video tee to video preview");
-      return;
-    }
-}
-
-static void
-create_video_preview (EmpathyStreamedMediaWindow *self)
-{
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (self);
-  GstBus *bus;
-
-  g_assert (priv->video_preview == NULL);
-  g_assert (priv->video_tee == NULL);
-
-  bus = gst_pipeline_get_bus (GST_PIPELINE (priv->pipeline));
-
-  priv->video_preview = empathy_video_widget_new_with_size (bus,
-      SELF_VIDEO_SECTION_WIDTH, SELF_VIDEO_SECTION_HEIGTH);
-  g_object_set (priv->video_preview,
-      "sync", FALSE,
-      "async", TRUE,
-      "flip-video", TRUE,
-      NULL);
-
-  gtk_box_pack_start (GTK_BOX (priv->self_user_output_hbox),
-      priv->video_preview, TRUE, TRUE, 0);
-
-  priv->video_tee = gst_element_factory_make ("tee", NULL);
-  gst_object_ref_sink (priv->video_tee);
-
-  g_object_unref (bus);
-}
-
-static void
-play_camera (EmpathyStreamedMediaWindow *window,
-    gboolean play)
-{
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (window);
-  GstElement *preview;
-  GstState state;
-
-  if (priv->video_preview == NULL)
-    {
-      create_video_preview (window);
-      add_video_preview_to_pipeline (window);
-    }
-
-  if (play)
-    state = GST_STATE_PLAYING;
-  else
-    state = GST_STATE_NULL;
-
-  preview = empathy_video_widget_get_element (
-      EMPATHY_VIDEO_WIDGET (priv->video_preview));
-
-  gst_element_set_state (preview, state);
-  gst_element_set_state (priv->video_input, state);
-  gst_element_set_state (priv->video_tee, state);
-}
-
-static void
-display_video_preview (EmpathyStreamedMediaWindow *self,
-    gboolean display)
-{
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (self);
-
-  if (display)
-    {
-      /* Display the preview and hide the self avatar */
-      DEBUG ("Show video preview");
-
-      play_camera (self, TRUE);
-      gtk_widget_show (priv->video_preview);
-      gtk_widget_hide (priv->self_user_avatar_widget);
-    }
-  else
-    {
-      /* Display the self avatar and hide the preview */
-      DEBUG ("Show self avatar");
-
-      if (priv->video_preview != NULL)
-        {
-          gtk_widget_hide (priv->video_preview);
-          play_camera (self, FALSE);
-        }
-      gtk_widget_show (priv->self_user_avatar_widget);
-    }
-}
-
-static void
-empathy_streamed_media_window_set_state_connecting (EmpathyStreamedMediaWindow *window)
-{
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (window);
-
-  empathy_streamed_media_window_status_message (window, _("Connecting…"));
-  priv->call_state = CONNECTING;
-
-  if (priv->outgoing)
-    empathy_sound_manager_start_playing (priv->sound_mgr, GTK_WIDGET (window),
-        EMPATHY_SOUND_PHONE_OUTGOING, MS_BETWEEN_RING);
-}
-
-static void
-disable_camera (EmpathyStreamedMediaWindow *self)
-{
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (self);
-
-  if (priv->camera_state == CAMERA_STATE_OFF)
-    return;
-
-  DEBUG ("Disable camera");
-
-  display_video_preview (self, FALSE);
-
-  if (priv->camera_state == CAMERA_STATE_ON)
-    empathy_streamed_media_window_set_send_video (self, CAMERA_STATE_OFF);
-
-  block_camera_control_signals (self);
-  gtk_toggle_tool_button_set_active (GTK_TOGGLE_TOOL_BUTTON (
-        priv->tool_button_camera_on), FALSE);
-  gtk_toggle_tool_button_set_active (GTK_TOGGLE_TOOL_BUTTON (
-      priv->tool_button_camera_preview), FALSE);
-
-  gtk_toggle_tool_button_set_active (GTK_TOGGLE_TOOL_BUTTON (
-      priv->tool_button_camera_off), TRUE);
-  gtk_radio_action_set_current_value (GTK_RADIO_ACTION (priv->action_camera_on),
-      CAMERA_STATE_OFF);
-  unblock_camera_control_signals (self);
-
-  priv->camera_state = CAMERA_STATE_OFF;
-}
-
-static void
-tool_button_camera_off_toggled_cb (GtkToggleToolButton *toggle,
-  EmpathyStreamedMediaWindow *self)
-{
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (self);
-
-  if (!gtk_toggle_tool_button_get_active (toggle))
-    {
-      if (priv->camera_state == CAMERA_STATE_OFF)
-        {
-          /* We can't change the state by disabling the button */
-          block_camera_control_signals (self);
-          gtk_toggle_tool_button_set_active (toggle, TRUE);
-          unblock_camera_control_signals (self);
-        }
-
-      return;
-    }
-
-  disable_camera (self);
-}
-
-static void
-enable_preview (EmpathyStreamedMediaWindow *self)
-{
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (self);
-
-  if (priv->camera_state == CAMERA_STATE_PREVIEW)
-    return;
-
-  DEBUG ("Enable preview");
-
-  if (priv->camera_state == CAMERA_STATE_ON)
-    {
-      /* preview is already displayed so we just have to stop sending */
-      empathy_streamed_media_window_set_send_video (self, CAMERA_STATE_PREVIEW);
-    }
-  else
-    {
-      display_video_preview (self, TRUE);
-    }
-
-  block_camera_control_signals (self);
-  gtk_toggle_tool_button_set_active (GTK_TOGGLE_TOOL_BUTTON (
-      priv->tool_button_camera_off), FALSE);
-  gtk_toggle_tool_button_set_active (GTK_TOGGLE_TOOL_BUTTON (
-        priv->tool_button_camera_on), FALSE);
-
-  gtk_toggle_tool_button_set_active (GTK_TOGGLE_TOOL_BUTTON (
-        priv->tool_button_camera_preview), TRUE);
-  gtk_radio_action_set_current_value (GTK_RADIO_ACTION (priv->action_camera_on),
-      CAMERA_STATE_PREVIEW);
-  unblock_camera_control_signals (self);
-
-  priv->camera_state = CAMERA_STATE_PREVIEW;
-}
-
-static void
-tool_button_camera_preview_toggled_cb (GtkToggleToolButton *toggle,
-  EmpathyStreamedMediaWindow *self)
-{
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (self);
-
-  if (!gtk_toggle_tool_button_get_active (toggle))
-    {
-      if (priv->camera_state == CAMERA_STATE_PREVIEW)
-        {
-          /* We can't change the state by disabling the button */
-          block_camera_control_signals (self);
-          gtk_toggle_tool_button_set_active (toggle, TRUE);
-          unblock_camera_control_signals (self);
-        }
-
-      return;
-    }
-
-  enable_preview (self);
-}
-
-static void
-enable_camera (EmpathyStreamedMediaWindow *self)
-{
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (self);
-
-  if (priv->camera_state == CAMERA_STATE_ON)
-    return;
-
-  if (priv->video_input == NULL)
-    {
-      DEBUG ("Can't enable camera, no input");
-      return;
-    }
-
-
-  DEBUG ("Enable camera");
-
-  empathy_streamed_media_window_set_send_video (self, CAMERA_STATE_ON);
-
-  block_camera_control_signals (self);
-  gtk_toggle_tool_button_set_active (GTK_TOGGLE_TOOL_BUTTON (
-      priv->tool_button_camera_off), FALSE);
-  gtk_toggle_tool_button_set_active (GTK_TOGGLE_TOOL_BUTTON (
-        priv->tool_button_camera_preview), FALSE);
-
-  gtk_toggle_tool_button_set_active (GTK_TOGGLE_TOOL_BUTTON (
-      priv->tool_button_camera_on), TRUE);
-  gtk_radio_action_set_current_value (GTK_RADIO_ACTION (priv->action_camera_on),
-      CAMERA_STATE_ON);
-  unblock_camera_control_signals (self);
-
-  priv->camera_state = CAMERA_STATE_ON;
-}
-
-static void
-tool_button_camera_on_toggled_cb (GtkToggleToolButton *toggle,
-  EmpathyStreamedMediaWindow *self)
-{
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (self);
-
-  if (!gtk_toggle_tool_button_get_active (toggle))
-    {
-      if (priv->camera_state == CAMERA_STATE_ON)
-        {
-          /* We can't change the state by disabling the button */
-          block_camera_control_signals (self);
-          gtk_toggle_tool_button_set_active (toggle, TRUE);
-          unblock_camera_control_signals (self);
-        }
-
-      return;
-    }
-
-  enable_camera (self);
-}
-
-static void
-action_camera_change_cb (GtkRadioAction *action,
-    GtkRadioAction *current,
-    EmpathyStreamedMediaWindow *self)
-{
-  CameraState state;
-
-  state = gtk_radio_action_get_current_value (current);
-
-  switch (state)
-    {
-      case CAMERA_STATE_OFF:
-        disable_camera (self);
-        break;
-
-      case CAMERA_STATE_PREVIEW:
-        enable_preview (self);
-        break;
-
-      case CAMERA_STATE_ON:
-        enable_camera (self);
-        break;
-
-      default:
-        g_assert_not_reached ();
-    }
-}
-
-static void
-create_pipeline (EmpathyStreamedMediaWindow *self)
-{
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (self);
-  GstBus *bus;
-
-  g_assert (priv->pipeline == NULL);
-
-  priv->pipeline = gst_pipeline_new (NULL);
-  priv->pipeline_playing = FALSE;
-
-  bus = gst_pipeline_get_bus (GST_PIPELINE (priv->pipeline));
-  priv->bus_message_source_id = gst_bus_add_watch (bus,
-      empathy_streamed_media_window_bus_message, self);
-
-  g_object_unref (bus);
-}
-
-
-static void
-empathy_streamed_media_window_init (EmpathyStreamedMediaWindow *self)
-{
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (self);
-  GtkBuilder *gui;
-  GtkWidget *top_vbox;
-  GtkWidget *h;
-  GtkWidget *arrow;
-  GtkWidget *page;
-  gchar *filename;
-  GtkWidget *scroll;
-
-  filename = empathy_file_lookup ("empathy-streamed-media-window.ui", "src");
-  gui = empathy_builder_get_file (filename,
-    "call_window_vbox", &top_vbox,
-    "errors_vbox", &priv->errors_vbox,
-    "pane", &priv->pane,
-    "statusbar", &priv->statusbar,
-    "redial", &priv->redial_button,
-    "microphone", &priv->mic_button,
-    "toolbar", &priv->toolbar,
-    "menuredial", &priv->redial,
-    "ui_manager", &priv->ui_manager,
-    "menufullscreen", &priv->menu_fullscreen,
-    "camera_off", &priv->tool_button_camera_off,
-    "camera_preview", &priv->tool_button_camera_preview,
-    "camera_on", &priv->tool_button_camera_on,
-    "action_camera_on",  &priv->action_camera_on,
-    "details_vbox",  &priv->details_vbox,
-    "vcodec_encoding_label", &priv->vcodec_encoding_label,
-    "acodec_encoding_label", &priv->acodec_encoding_label,
-    "acodec_decoding_label", &priv->acodec_decoding_label,
-    "vcodec_decoding_label", &priv->vcodec_decoding_label,
-    "audio_remote_candidate_label", &priv->audio_remote_candidate_label,
-    "audio_local_candidate_label", &priv->audio_local_candidate_label,
-    "video_remote_candidate_label", &priv->video_remote_candidate_label,
-    "video_local_candidate_label", &priv->video_local_candidate_label,
-    "video_remote_candidate_info_img", &priv->video_remote_candidate_info_img,
-    "video_local_candidate_info_img", &priv->video_local_candidate_info_img,
-    "audio_remote_candidate_info_img", &priv->audio_remote_candidate_info_img,
-    "audio_local_candidate_info_img", &priv->audio_local_candidate_info_img,
-    NULL);
-  g_free (filename);
-
-  empathy_builder_connect (gui, self,
-    "menuhangup", "activate", empathy_streamed_media_window_hangup_cb,
-    "hangup", "clicked", empathy_streamed_media_window_hangup_cb,
-    "menuredial", "activate", empathy_streamed_media_window_redial_cb,
-    "redial", "clicked", empathy_streamed_media_window_redial_cb,
-    "microphone", "toggled", empathy_streamed_media_window_mic_toggled_cb,
-    "menufullscreen", "activate", empathy_streamed_media_window_fullscreen_cb,
-    "camera_off", "toggled", tool_button_camera_off_toggled_cb,
-    "camera_preview", "toggled", tool_button_camera_preview_toggled_cb,
-    "camera_on", "toggled", tool_button_camera_on_toggled_cb,
-    "action_camera_on", "changed", action_camera_change_cb,
-    NULL);
-
-  gtk_action_set_sensitive (priv->menu_fullscreen, FALSE);
-
-  priv->lock = g_mutex_new ();
-
-  gtk_container_add (GTK_CONTAINER (self), top_vbox);
-
-  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);
-
-  /* remote user output frame */
-  priv->remote_user_output_frame = gtk_frame_new (NULL);
-  gtk_widget_set_size_request (priv->remote_user_output_frame,
-      EMPATHY_VIDEO_WIDGET_DEFAULT_WIDTH, EMPATHY_VIDEO_WIDGET_DEFAULT_HEIGHT);
-  gtk_box_pack_start (GTK_BOX (priv->content_hbox),
-      priv->remote_user_output_frame, TRUE, TRUE,
-      CONTENT_HBOX_CHILDREN_PACKING_PADDING);
-
-  priv->remote_user_output_hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
-
-  priv->remote_user_avatar_widget = gtk_image_new ();
-
-  gtk_box_pack_start (GTK_BOX (priv->remote_user_output_hbox),
-      priv->remote_user_avatar_widget, TRUE, TRUE, 0);
-
-  gtk_container_add (GTK_CONTAINER (priv->remote_user_output_frame),
-      priv->remote_user_output_hbox);
-
-  /* self user output frame */
-  priv->self_user_output_frame = gtk_frame_new (NULL);
-  gtk_widget_set_size_request (priv->self_user_output_frame,
-      SELF_VIDEO_SECTION_WIDTH, SELF_VIDEO_SECTION_HEIGTH);
-
-  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),
-      priv->self_user_avatar_widget, TRUE, TRUE, 0);
-
-  gtk_container_add (GTK_CONTAINER (priv->self_user_output_frame),
-      priv->self_user_output_hbox);
-
-  create_pipeline (self);
-  create_video_output_widget (self);
-  create_audio_input (self);
-  create_video_input (self);
-
-  priv->fsnotifier = fs_element_added_notifier_new ();
-  fs_element_added_notifier_add (priv->fsnotifier, GST_BIN (priv->pipeline));
-
-  /* The call will be started as soon the pipeline is playing */
-  priv->start_call_when_playing = TRUE;
-
-  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,
-      FALSE, FALSE, 0);
-
-  empathy_streamed_media_window_setup_toolbar (self);
-
-  priv->sidebar_button = gtk_toggle_button_new_with_mnemonic (_("_Sidebar"));
-  arrow = gtk_arrow_new (GTK_ARROW_RIGHT, GTK_SHADOW_NONE);
-  g_signal_connect (G_OBJECT (priv->sidebar_button), "toggled",
-    G_CALLBACK (empathy_streamed_media_window_sidebar_toggled_cb), self);
-
-  gtk_button_set_image (GTK_BUTTON (priv->sidebar_button), arrow);
-
-  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);
-
-  priv->sidebar = ev_sidebar_new ();
-  g_signal_connect (G_OBJECT (priv->sidebar),
-    "hide", G_CALLBACK (empathy_streamed_media_window_sidebar_hidden_cb), self);
-  g_signal_connect (G_OBJECT (priv->sidebar),
-    "show", G_CALLBACK (empathy_streamed_media_window_sidebar_shown_cb), self);
-  gtk_paned_pack2 (GTK_PANED (priv->pane), priv->sidebar, FALSE, FALSE);
-
-  page = empathy_streamed_media_window_create_audio_input (self);
-  ev_sidebar_add_page (EV_SIDEBAR (priv->sidebar), "audio-input",
-      _("Audio input"), page);
-
-  page = empathy_streamed_media_window_create_video_input (self);
-  ev_sidebar_add_page (EV_SIDEBAR (priv->sidebar), "video-input",
-      _("Video input"), page);
-
-  priv->dtmf_panel = empathy_dialpad_widget_new ();
-  g_signal_connect (priv->dtmf_panel, "start-tone",
-      G_CALLBACK (dtmf_start_tone_cb), self);
-  g_signal_connect (priv->dtmf_panel, "stop-tone",
-      G_CALLBACK (dtmf_stop_tone_cb), self);
-  ev_sidebar_add_page (EV_SIDEBAR (priv->sidebar), "dialpad",
-      _("Dialpad"), priv->dtmf_panel);
-
-  gtk_widget_set_sensitive (priv->dtmf_panel, FALSE);
-
-  /* Put the details vbox in a scroll window as it can require a lot of
-   * horizontal space. */
-  scroll = gtk_scrolled_window_new (NULL, NULL);
-  gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scroll),
-      priv->details_vbox);
-
-  ev_sidebar_add_page (EV_SIDEBAR (priv->sidebar), "details",
-      _("Details"), scroll);
-
-  gtk_widget_show_all (top_vbox);
-
-  gtk_widget_hide (priv->sidebar);
-
-  priv->fullscreen = empathy_streamed_media_window_fullscreen_new (self);
-  empathy_streamed_media_window_fullscreen_set_video_widget (priv->fullscreen,
-      priv->video_output);
-  g_signal_connect (G_OBJECT (priv->fullscreen->leave_fullscreen_button),
-      "clicked", G_CALLBACK (empathy_streamed_media_window_fullscreen_cb), self);
-
-  g_signal_connect (G_OBJECT (self), "realize",
-    G_CALLBACK (empathy_streamed_media_window_realized_cb), self);
-
-  g_signal_connect (G_OBJECT (self), "delete-event",
-    G_CALLBACK (empathy_streamed_media_window_delete_cb), self);
-
-  g_signal_connect (G_OBJECT (self), "window-state-event",
-    G_CALLBACK (empathy_streamed_media_window_state_event_cb), self);
-
-  g_signal_connect (G_OBJECT (self), "key-press-event",
-      G_CALLBACK (empathy_streamed_media_window_key_press_cb), self);
-
-  priv->timer = g_timer_new ();
-
-  g_object_ref (priv->ui_manager);
-  g_object_unref (gui);
-
-  priv->sound_mgr = empathy_sound_manager_dup_singleton ();
-
-  empathy_geometry_bind (GTK_WINDOW (self), "av-window");
-}
-
-/* Instead of specifying a width and a height, we specify only one size. That's
-   because we want a square avatar icon.  */
-static void
-init_contact_avatar_with_size (EmpathyContact *contact,
-    GtkWidget *image_widget,
-    gint size)
-{
-  GdkPixbuf *pixbuf_avatar = NULL;
-
-  if (contact != NULL)
-    {
-      pixbuf_avatar = empathy_pixbuf_avatar_from_contact_scaled (contact,
-        size, size);
-    }
-
-  if (pixbuf_avatar == NULL)
-    {
-      pixbuf_avatar = empathy_pixbuf_from_icon_name_sized (
-          EMPATHY_IMAGE_AVATAR_DEFAULT, size);
-    }
-
-  gtk_image_set_from_pixbuf (GTK_IMAGE (image_widget), pixbuf_avatar);
-
-  if (pixbuf_avatar != NULL)
-    g_object_unref (pixbuf_avatar);
-}
-
-static void
-set_window_title (EmpathyStreamedMediaWindow *self)
-{
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (self);
-  gchar *tmp;
-
-  /* translators: Call is a noun and %s is the contact name. This string
-   * is used in the window title */
-  tmp = g_strdup_printf (_("Call with %s"),
-      empathy_contact_get_alias (priv->contact));
-  gtk_window_set_title (GTK_WINDOW (self), tmp);
-  g_free (tmp);
-}
-
-static void
-contact_name_changed_cb (EmpathyContact *contact,
-    GParamSpec *pspec, EmpathyStreamedMediaWindow *self)
-{
-  set_window_title (self);
-}
-
-static void
-contact_avatar_changed_cb (EmpathyContact *contact,
-    GParamSpec *pspec, GtkWidget *avatar_widget)
-{
-  int size;
-  GtkAllocation allocation;
-
-  gtk_widget_get_allocation (avatar_widget, &allocation);
-  size = allocation.height;
-
-  if (size == 0)
-    {
-      /* the widget is not allocated yet, set a default size */
-      size = MIN (REMOTE_CONTACT_AVATAR_DEFAULT_HEIGHT,
-          REMOTE_CONTACT_AVATAR_DEFAULT_WIDTH);
-    }
-
-  init_contact_avatar_with_size (contact, avatar_widget, size);
-}
-
-static void
-empathy_streamed_media_window_got_self_contact_cb (TpConnection *connection,
-    EmpathyContact *contact, const GError *error, gpointer user_data,
-    GObject *weak_object)
-{
-  EmpathyStreamedMediaWindow *self = EMPATHY_STREAMED_MEDIA_WINDOW (user_data);
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (self);
-
-  init_contact_avatar_with_size (contact, priv->self_user_avatar_widget,
-      MIN (SELF_VIDEO_SECTION_WIDTH, SELF_VIDEO_SECTION_HEIGTH));
-
-  g_signal_connect (contact, "notify::avatar",
-      G_CALLBACK (contact_avatar_changed_cb), priv->self_user_avatar_widget);
-}
-
-static void
-empathy_streamed_media_window_setup_avatars (EmpathyStreamedMediaWindow *self,
-    EmpathyStreamedMediaHandler *handler)
-{
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (self);
-
-  g_object_get (handler, "contact", &(priv->contact), NULL);
-
-  if (priv->contact != NULL)
-    {
-      TpConnection *connection;
-
-      set_window_title (self);
-
-      g_signal_connect (priv->contact, "notify::name",
-          G_CALLBACK (contact_name_changed_cb), self);
-      g_signal_connect (priv->contact, "notify::avatar",
-          G_CALLBACK (contact_avatar_changed_cb),
-          priv->remote_user_avatar_widget);
-
-      /* Retreiving the self avatar */
-      connection = empathy_contact_get_connection (priv->contact);
-      empathy_tp_contact_factory_get_from_handle (connection,
-          tp_connection_get_self_handle (connection),
-          empathy_streamed_media_window_got_self_contact_cb, self, NULL, G_OBJECT (self));
-    }
-  else
-    {
-      g_warning ("call handler doesn't have a contact");
-      /* translators: Call is a noun. This string is used in the window
-       * title */
-      gtk_window_set_title (GTK_WINDOW (self), _("Call"));
-
-      /* Since we can't access the remote contact, we can't get a connection
-         to it and can't get the self contact (and its avatar). This means
-         that we have to manually set the self avatar. */
-      init_contact_avatar_with_size (NULL, priv->self_user_avatar_widget,
-          MIN (SELF_VIDEO_SECTION_WIDTH, SELF_VIDEO_SECTION_HEIGTH));
-    }
-
-  init_contact_avatar_with_size (priv->contact,
-      priv->remote_user_avatar_widget,
-      MIN (REMOTE_CONTACT_AVATAR_DEFAULT_WIDTH,
-          REMOTE_CONTACT_AVATAR_DEFAULT_HEIGHT));
-
-  /* The remote avatar is shown by default and will be hidden when we receive
-     video from the remote side. */
-  gtk_widget_hide (priv->video_output);
-  gtk_widget_show (priv->remote_user_avatar_widget);
-}
-
-static void
-update_send_codec (EmpathyStreamedMediaWindow *self,
-    gboolean audio)
-{
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (self);
-  FsCodec *codec;
-  GtkWidget *widget;
-  gchar *tmp;
-
-  if (audio)
-    {
-      codec = empathy_streamed_media_handler_get_send_audio_codec (priv->handler);
-      widget = priv->acodec_encoding_label;
-    }
-  else
-    {
-      codec = empathy_streamed_media_handler_get_send_video_codec (priv->handler);
-      widget = priv->vcodec_encoding_label;
-    }
-
-  if (codec == NULL)
-    return;
-
-  tmp = g_strdup_printf ("%s/%u", codec->encoding_name, codec->clock_rate);
-  gtk_label_set_text (GTK_LABEL (widget), tmp);
-  g_free (tmp);
-}
-
-static void
-send_audio_codec_notify_cb (GObject *object,
-    GParamSpec *pspec,
-    gpointer user_data)
-{
-  EmpathyStreamedMediaWindow *self = user_data;
-
-  update_send_codec (self, TRUE);
-}
-
-static void
-send_video_codec_notify_cb (GObject *object,
-    GParamSpec *pspec,
-    gpointer user_data)
-{
-  EmpathyStreamedMediaWindow *self = user_data;
-
-  update_send_codec (self, FALSE);
-}
-
-static void
-update_recv_codec (EmpathyStreamedMediaWindow *self,
-    gboolean audio)
-{
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (self);
-  GList *codecs, *l;
-  GtkWidget *widget;
-  GString *str = NULL;
-
-  if (audio)
-    {
-      codecs = empathy_streamed_media_handler_get_recv_audio_codecs (priv->handler);
-      widget = priv->acodec_decoding_label;
-    }
-  else
-    {
-      codecs = empathy_streamed_media_handler_get_recv_video_codecs (priv->handler);
-      widget = priv->vcodec_decoding_label;
-    }
-
-  if (codecs == NULL)
-    return;
-
-  for (l = codecs; l != NULL; l = g_list_next (l))
-    {
-      FsCodec *codec = l->data;
-
-      if (str == NULL)
-        str = g_string_new (NULL);
-      else
-        g_string_append (str, ", ");
-
-      g_string_append_printf (str, "%s/%u", codec->encoding_name,
-          codec->clock_rate);
-    }
-
-  gtk_label_set_text (GTK_LABEL (widget), str->str);
-  g_string_free (str, TRUE);
-}
-
-static void
-recv_audio_codecs_notify_cb (GObject *object,
-    GParamSpec *pspec,
-    gpointer user_data)
-{
-  EmpathyStreamedMediaWindow *self = user_data;
-
-  update_recv_codec (self, TRUE);
-}
-
-static void
-recv_video_codecs_notify_cb (GObject *object,
-    GParamSpec *pspec,
-    gpointer user_data)
-{
-  EmpathyStreamedMediaWindow *self = user_data;
-
-  update_recv_codec (self, FALSE);
-}
-
-static const gchar *
-candidate_type_to_str (FsCandidate *candidate)
-{
-  switch (candidate->type)
-    {
-      case FS_CANDIDATE_TYPE_HOST:
-        return "host";
-      case FS_CANDIDATE_TYPE_SRFLX:
-        return "server reflexive";
-      case FS_CANDIDATE_TYPE_PRFLX:
-        return "peer reflexive";
-      case FS_CANDIDATE_TYPE_RELAY:
-        return "relay";
-      case FS_CANDIDATE_TYPE_MULTICAST:
-        return "multicast";
-    }
-
-  return NULL;
-}
-
-static const gchar *
-candidate_type_to_desc (FsCandidate *candidate)
-{
-  switch (candidate->type)
-    {
-      case FS_CANDIDATE_TYPE_HOST:
-        return _("The IP address as seen by the machine");
-      case FS_CANDIDATE_TYPE_SRFLX:
-        return _("The IP address as seen by a server on the Internet");
-      case FS_CANDIDATE_TYPE_PRFLX:
-        return _("The IP address of the peer as seen by the other side");
-      case FS_CANDIDATE_TYPE_RELAY:
-        return _("The IP address of a relay server");
-      case FS_CANDIDATE_TYPE_MULTICAST:
-        return _("The IP address of the multicast group");
-    }
-
-  return NULL;
-}
-
-static void
-update_candidat_widget (EmpathyStreamedMediaWindow *self,
-    GtkWidget *label,
-    GtkWidget *img,
-    FsCandidate *candidate)
-{
-  gchar *str;
-
-  g_assert (candidate != NULL);
-  str = g_strdup_printf ("%s %u (%s)", candidate->ip,
-      candidate->port, candidate_type_to_str (candidate));
-
-  gtk_label_set_text (GTK_LABEL (label), str);
-  gtk_widget_set_tooltip_text (img, candidate_type_to_desc (candidate));
-
-  g_free (str);
-}
-
-static void
-candidates_changed_cb (GObject *object,
-    FsMediaType type,
-    EmpathyStreamedMediaWindow *self)
-{
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (self);
-  FsCandidate *candidate = NULL;
-
-  if (type == FS_MEDIA_TYPE_VIDEO)
-    {
-      /* Update remote candidate */
-      candidate = empathy_streamed_media_handler_get_video_remote_candidate (
-          priv->handler);
-
-      update_candidat_widget (self, priv->video_remote_candidate_label,
-          priv->video_remote_candidate_info_img, candidate);
-
-      /* Update local candidate */
-      candidate = empathy_streamed_media_handler_get_video_local_candidate (
-          priv->handler);
-
-      update_candidat_widget (self, priv->video_local_candidate_label,
-          priv->video_local_candidate_info_img, candidate);
-    }
-  else
-    {
-      /* Update remote candidate */
-      candidate = empathy_streamed_media_handler_get_audio_remote_candidate (
-          priv->handler);
-
-      update_candidat_widget (self, priv->audio_remote_candidate_label,
-          priv->audio_remote_candidate_info_img, candidate);
-
-      /* Update local candidate */
-      candidate = empathy_streamed_media_handler_get_audio_local_candidate (
-          priv->handler);
-
-      update_candidat_widget (self, priv->audio_local_candidate_label,
-          priv->audio_local_candidate_info_img, candidate);
-    }
-}
-
-static void
-empathy_streamed_media_window_constructed (GObject *object)
-{
-  EmpathyStreamedMediaWindow *self = EMPATHY_STREAMED_MEDIA_WINDOW (object);
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (self);
-  EmpathyTpStreamedMedia *call;
-
-  g_assert (priv->handler != NULL);
-
-  g_object_get (priv->handler, "tp-call", &call, NULL);
-  priv->outgoing = (call == NULL);
-  if (call != NULL)
-    g_object_unref (call);
-
-  empathy_streamed_media_window_setup_avatars (self, priv->handler);
-  empathy_streamed_media_window_set_state_connecting (self);
-
-  if (!empathy_streamed_media_handler_has_initial_video (priv->handler))
-    {
-      gtk_toggle_tool_button_set_active (
-          GTK_TOGGLE_TOOL_BUTTON (priv->tool_button_camera_off), TRUE);
-    }
-  /* If call has InitialVideo, the preview will be started once the call has
-   * been started (start_call()). */
-
-  update_send_codec (self, TRUE);
-  update_send_codec (self, FALSE);
-  update_recv_codec (self, TRUE);
-  update_recv_codec (self, FALSE);
-
-  tp_g_signal_connect_object (priv->handler, "notify::send-audio-codec",
-      G_CALLBACK (send_audio_codec_notify_cb), self, 0);
-  tp_g_signal_connect_object (priv->handler, "notify::send-video-codec",
-      G_CALLBACK (send_video_codec_notify_cb), self, 0);
-  tp_g_signal_connect_object (priv->handler, "notify::recv-audio-codecs",
-      G_CALLBACK (recv_audio_codecs_notify_cb), self, 0);
-  tp_g_signal_connect_object (priv->handler, "notify::recv-video-codecs",
-      G_CALLBACK (recv_video_codecs_notify_cb), self, 0);
-
-  tp_g_signal_connect_object (priv->handler, "candidates-changed",
-      G_CALLBACK (candidates_changed_cb), self, 0);
-}
-
-static void empathy_streamed_media_window_dispose (GObject *object);
-static void empathy_streamed_media_window_finalize (GObject *object);
-
-static void
-empathy_streamed_media_window_set_property (GObject *object,
-  guint property_id, const GValue *value, GParamSpec *pspec)
-{
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (object);
-
-  switch (property_id)
-    {
-      case PROP_STREAMED_MEDIA_HANDLER:
-        priv->handler = g_value_dup_object (value);
-        break;
-      default:
-        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
-    }
-}
-
-static void
-empathy_streamed_media_window_get_property (GObject *object,
-  guint property_id, GValue *value, GParamSpec *pspec)
-{
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (object);
-
-  switch (property_id)
-    {
-      case PROP_STREAMED_MEDIA_HANDLER:
-        g_value_set_object (value, priv->handler);
-        break;
-      default:
-        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
-    }
-}
-
-static void
-empathy_streamed_media_window_class_init (
-  EmpathyStreamedMediaWindowClass *empathy_streamed_media_window_class)
-{
-  GObjectClass *object_class = G_OBJECT_CLASS (empathy_streamed_media_window_class);
-  GParamSpec *param_spec;
-
-  g_type_class_add_private (empathy_streamed_media_window_class,
-    sizeof (EmpathyStreamedMediaWindowPriv));
-
-  object_class->constructed = empathy_streamed_media_window_constructed;
-  object_class->set_property = empathy_streamed_media_window_set_property;
-  object_class->get_property = empathy_streamed_media_window_get_property;
-
-  object_class->dispose = empathy_streamed_media_window_dispose;
-  object_class->finalize = empathy_streamed_media_window_finalize;
-
-  param_spec = g_param_spec_object ("handler",
-    "handler", "The call handler",
-    EMPATHY_TYPE_STREAMED_MEDIA_HANDLER,
-    G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
-  g_object_class_install_property (object_class,
-    PROP_STREAMED_MEDIA_HANDLER, param_spec);
-}
-
-static void
-empathy_streamed_media_window_video_stream_changed_cb (EmpathyTpStreamedMedia *call,
-    GParamSpec *property, EmpathyStreamedMediaWindow *self)
-{
-  DEBUG ("video stream changed");
-  empathy_streamed_media_window_update_avatars_visibility (call, self);
-}
-
-void
-empathy_streamed_media_window_dispose (GObject *object)
-{
-  EmpathyTpStreamedMedia *call;
-  EmpathyStreamedMediaWindow *self = EMPATHY_STREAMED_MEDIA_WINDOW (object);
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (self);
-
-  if (priv->dispose_has_run)
-    return;
-
-  priv->dispose_has_run = TRUE;
-
-  g_object_get (priv->handler, "tp-call", &call, NULL);
-
-  if (call != NULL)
-    {
-      g_object_unref (call);
-    }
-
-  if (priv->handler != NULL)
-    {
-      empathy_streamed_media_handler_stop_call (priv->handler);
-      g_object_unref (priv->handler);
-    }
-  priv->handler = NULL;
-
-  if (priv->bus_message_source_id != 0)
-    {
-      g_source_remove (priv->bus_message_source_id);
-      priv->bus_message_source_id = 0;
-    }
-
-  if (priv->pipeline != NULL)
-    g_object_unref (priv->pipeline);
-  priv->pipeline = NULL;
-
-  if (priv->video_input != NULL)
-    g_object_unref (priv->video_input);
-  priv->video_input = NULL;
-
-  if (priv->audio_input != NULL)
-    g_object_unref (priv->audio_input);
-  priv->audio_input = NULL;
-
-  if (priv->video_tee != NULL)
-    g_object_unref (priv->video_tee);
-  priv->video_tee = NULL;
-
-  if (priv->fsnotifier != NULL)
-    g_object_unref (priv->fsnotifier);
-  priv->fsnotifier = NULL;
-
-  if (priv->timer_id != 0)
-    g_source_remove (priv->timer_id);
-  priv->timer_id = 0;
-
-  if (priv->ui_manager != NULL)
-    g_object_unref (priv->ui_manager);
-  priv->ui_manager = NULL;
-
-  if (priv->fullscreen != NULL)
-    g_object_unref (priv->fullscreen);
-  priv->fullscreen = NULL;
-
-  if (priv->contact != NULL)
-    {
-      g_signal_handlers_disconnect_by_func (priv->contact,
-          contact_name_changed_cb, self);
-      g_object_unref (priv->contact);
-      priv->contact = NULL;
-    }
-
-  tp_clear_object (&priv->sound_mgr);
-
-  /* release any references held by the object here */
-  if (G_OBJECT_CLASS (empathy_streamed_media_window_parent_class)->dispose)
-    G_OBJECT_CLASS (empathy_streamed_media_window_parent_class)->dispose (object);
-}
-
-static void
-disconnect_video_output_motion_handler (EmpathyStreamedMediaWindow *self)
-{
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (self);
-
-  if (priv->video_output_motion_handler_id != 0)
-    {
-      g_signal_handler_disconnect (G_OBJECT (priv->video_output),
-          priv->video_output_motion_handler_id);
-      priv->video_output_motion_handler_id = 0;
-    }
-}
-
-void
-empathy_streamed_media_window_finalize (GObject *object)
-{
-  EmpathyStreamedMediaWindow *self = EMPATHY_STREAMED_MEDIA_WINDOW (object);
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (self);
-
-  disconnect_video_output_motion_handler (self);
-
-  /* free any data held directly by the object here */
-  g_mutex_free (priv->lock);
-
-  g_timer_destroy (priv->timer);
-
-  G_OBJECT_CLASS (empathy_streamed_media_window_parent_class)->finalize (object);
-}
-
-
-EmpathyStreamedMediaWindow *
-empathy_streamed_media_window_new (EmpathyStreamedMediaHandler *handler)
-{
-  return EMPATHY_STREAMED_MEDIA_WINDOW (
-    g_object_new (EMPATHY_TYPE_STREAMED_MEDIA_WINDOW, "handler", handler, NULL));
-}
-
-static void
-empathy_streamed_media_window_conference_added_cb (EmpathyStreamedMediaHandler *handler,
-  GstElement *conference, gpointer user_data)
-{
-  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);
-
-  gst_element_set_state (conference, GST_STATE_PLAYING);
-}
-
-static gboolean
-empathy_streamed_media_window_start_receiving_cb (EmpathyStreamedMediaHandler *handler,
-  FsMediaType type,gpointer user_data)
-{
-  EmpathyStreamedMediaWindow *self = EMPATHY_STREAMED_MEDIA_WINDOW (user_data);
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (self);
-
-  if (type != FS_MEDIA_TYPE_VIDEO)
-    return TRUE;
-
-  /* video and direction is send */
-  return priv->video_input != NULL;
-}
-
-static gboolean
-empathy_streamed_media_window_reset_pipeline (EmpathyStreamedMediaWindow *self)
-{
-  GstStateChangeReturn state_change_return;
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (self);
-
-  if (priv->pipeline == NULL)
-    return TRUE;
-
-  if (priv->bus_message_source_id != 0)
-    {
-      g_source_remove (priv->bus_message_source_id);
-      priv->bus_message_source_id = 0;
-    }
-
-  state_change_return = gst_element_set_state (priv->pipeline, GST_STATE_NULL);
-
-  if (state_change_return == GST_STATE_CHANGE_SUCCESS ||
-        state_change_return == GST_STATE_CHANGE_NO_PREROLL)
-    {
-      if (priv->pipeline != NULL)
-        g_object_unref (priv->pipeline);
-      priv->pipeline = NULL;
-
-      g_signal_handlers_disconnect_by_func (priv->audio_input_adj,
-          empathy_streamed_media_window_mic_volume_changed_cb, self);
-
-      if (priv->video_tee != NULL)
-        g_object_unref (priv->video_tee);
-      priv->video_tee = NULL;
-
-      if (priv->video_preview != NULL)
-        gtk_widget_destroy (priv->video_preview);
-      priv->video_preview = NULL;
-
-      priv->funnel = NULL;
-
-      create_pipeline (self);
-      /* Call will be started when user will hit the 'redial' button */
-      priv->start_call_when_playing = FALSE;
-      gst_element_set_state (priv->pipeline, GST_STATE_PAUSED);
-
-      return TRUE;
-    }
-  else
-    {
-      g_message ("Error: could not destroy pipeline. Closing call window");
-      gtk_widget_destroy (GTK_WIDGET (self));
-
-      return FALSE;
-    }
-}
-
-static void
-reset_details_pane (EmpathyStreamedMediaWindow *self)
-{
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (self);
-
-  /* translators: encoding video codec is unknown */
-  gtk_label_set_text (GTK_LABEL (priv->vcodec_encoding_label),
-      C_("codec", "Unknown"));
-  /* translators: encoding audio codec is unknown */
-  gtk_label_set_text (GTK_LABEL (priv->acodec_encoding_label),
-      C_("codec", "Unknown"));
-  /* translators: decoding video codec is unknown */
-  gtk_label_set_text (GTK_LABEL (priv->vcodec_decoding_label),
-      C_("codec", "Unknown"));
-  /* translators: decoding audio codec is unknown */
-  gtk_label_set_text (GTK_LABEL (priv->acodec_decoding_label),
-      C_("codec", "Unknown"));
-}
-
-static gboolean
-empathy_streamed_media_window_disconnected (EmpathyStreamedMediaWindow *self,
-    gboolean restart)
-{
-  gboolean could_disconnect = FALSE;
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (self);
-  gboolean could_reset_pipeline;
-
-  /* Leave full screen mode if needed */
-  gtk_window_unfullscreen (GTK_WINDOW (self));
-
-  gtk_action_set_sensitive (priv->menu_fullscreen, FALSE);
-
-  could_reset_pipeline = empathy_streamed_media_window_reset_pipeline (self);
-
-  if (priv->call_state == CONNECTING)
-      empathy_sound_manager_stop (priv->sound_mgr,
-          EMPATHY_SOUND_PHONE_OUTGOING);
-
-  if (priv->call_state != REDIALING)
-    priv->call_state = DISCONNECTED;
-
-  if (could_reset_pipeline)
-    {
-      g_mutex_lock (priv->lock);
-
-      g_timer_stop (priv->timer);
-
-      if (priv->timer_id != 0)
-        g_source_remove (priv->timer_id);
-      priv->timer_id = 0;
-
-      g_mutex_unlock (priv->lock);
-
-      if (!restart)
-        /* We are about to destroy the window, no need to update it or create
-         * a video preview */
-        return TRUE;
-
-      empathy_streamed_media_window_status_message (self, _("Disconnected"));
-
-      gtk_action_set_sensitive (priv->redial, TRUE);
-      gtk_widget_set_sensitive (priv->redial_button, TRUE);
-
-      /* Unsensitive the camera and mic button */
-      gtk_widget_set_sensitive (priv->tool_button_camera_on, FALSE);
-      gtk_action_set_sensitive (priv->action_camera_on, FALSE);
-      gtk_widget_set_sensitive (priv->mic_button, FALSE);
-
-      /* Be sure that the mic button is enabled */
-      gtk_toggle_tool_button_set_active (
-          GTK_TOGGLE_TOOL_BUTTON (priv->mic_button), TRUE);
-
-      if (priv->camera_state == CAMERA_STATE_ON)
-        {
-          /* Enable the 'preview' button as we are not sending atm. */
-          gtk_toggle_tool_button_set_active (
-              GTK_TOGGLE_TOOL_BUTTON (priv->tool_button_camera_preview), TRUE);
-        }
-      else if (priv->camera_state == CAMERA_STATE_PREVIEW)
-        {
-          /* Restart the preview with the new pipeline. */
-          display_video_preview (self, TRUE);
-        }
-
-      gtk_progress_bar_set_fraction (
-          GTK_PROGRESS_BAR (priv->volume_progress_bar), 0);
-
-      /* destroy the video output; it will be recreated when we'll redial */
-      disconnect_video_output_motion_handler (self);
-      gtk_widget_destroy (priv->video_output);
-      priv->video_output = NULL;
-
-      gtk_widget_show (priv->remote_user_avatar_widget);
-
-      reset_details_pane (self);
-
-      priv->sending_video = FALSE;
-      priv->call_started = FALSE;
-
-      could_disconnect = TRUE;
-
-      /* TODO: display the self avatar of the preview (depends if the "Always
-       * Show Video Preview" is enabled or not) */
-    }
-
-  return could_disconnect;
-}
-
-
-static void
-empathy_streamed_media_window_channel_closed_cb (EmpathyStreamedMediaHandler *handler,
-    gpointer user_data)
-{
-  EmpathyStreamedMediaWindow *self = EMPATHY_STREAMED_MEDIA_WINDOW (user_data);
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (self);
-
-  if (empathy_streamed_media_window_disconnected (self, TRUE) &&
-      priv->call_state == REDIALING)
-      empathy_streamed_media_window_restart_call (self);
-}
-
-
-static void
-empathy_streamed_media_window_channel_stream_closed_cb (EmpathyStreamedMediaHandler *handler,
-    TfContent *content, gpointer user_data)
-{
-  EmpathyStreamedMediaWindow *self = EMPATHY_STREAMED_MEDIA_WINDOW (user_data);
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (self);
-  guint media_type;
-
-  g_object_get (content, "media-type", &media_type, NULL);
-
-  /*
-   * This assumes that there is only one video stream per channel...
-   */
-
-  if (media_type == TP_MEDIA_STREAM_TYPE_VIDEO)
-    {
-      if (priv->funnel != NULL)
-        {
-          GstElement *output;
-
-          output = empathy_video_widget_get_element (EMPATHY_VIDEO_WIDGET
-              (priv->video_output));
-
-          gst_element_set_state (output, GST_STATE_NULL);
-          gst_element_set_state (priv->funnel, GST_STATE_NULL);
-
-          gst_bin_remove (GST_BIN (priv->pipeline), output);
-          gst_bin_remove (GST_BIN (priv->pipeline), priv->funnel);
-          priv->funnel = NULL;
-        }
-    }
-  else if (media_type == TP_MEDIA_STREAM_TYPE_AUDIO)
-    {
-      if (priv->audio_output != NULL)
-        {
-          gst_element_set_state (priv->audio_output, GST_STATE_NULL);
-
-          gst_bin_remove (GST_BIN (priv->pipeline), priv->audio_output);
-          priv->audio_output = NULL;
-        }
-    }
-}
-
-/* Called with global lock held */
-static GstPad *
-empathy_streamed_media_window_get_video_sink_pad (EmpathyStreamedMediaWindow *self)
-{
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (self);
-  GstPad *pad;
-  GstElement *output;
-
-  if (priv->funnel == NULL)
-    {
-      output = empathy_video_widget_get_element (EMPATHY_VIDEO_WIDGET
-        (priv->video_output));
-
-      priv->funnel = gst_element_factory_make ("fsfunnel", NULL);
-
-      if (!priv->funnel)
-        {
-          g_warning ("Could not create fsfunnel");
-          return NULL;
-        }
-
-      if (!gst_bin_add (GST_BIN (priv->pipeline), priv->funnel))
-        {
-          gst_object_unref (priv->funnel);
-          priv->funnel = NULL;
-          g_warning ("Could  not add funnel to pipeline");
-          return NULL;
-        }
-
-      if (!gst_bin_add (GST_BIN (priv->pipeline), output))
-        {
-          g_warning ("Could not add the video output widget to the pipeline");
-          goto error;
-        }
-
-      if (!gst_element_link (priv->funnel, output))
-        {
-          g_warning ("Could not link output sink to funnel");
-          goto error_output_added;
-        }
-
-      if (gst_element_set_state (output, GST_STATE_PLAYING) == GST_STATE_CHANGE_FAILURE)
-        {
-          g_warning ("Could not start video sink");
-          goto error_output_added;
-        }
-
-      if (gst_element_set_state (priv->funnel, GST_STATE_PLAYING) == GST_STATE_CHANGE_FAILURE)
-        {
-          g_warning ("Could not start funnel");
-          goto error_output_added;
-        }
-    }
-
-  pad = gst_element_get_request_pad (priv->funnel, "sink%d");
-
-  if (!pad)
-    g_warning ("Could not get request pad from funnel");
-
-  return pad;
-
-
- error_output_added:
-
-  gst_element_set_locked_state (priv->funnel, TRUE);
-  gst_element_set_locked_state (output, TRUE);
-
-  gst_element_set_state (priv->funnel, GST_STATE_NULL);
-  gst_element_set_state (output, GST_STATE_NULL);
-
-  gst_bin_remove (GST_BIN (priv->pipeline), output);
-  gst_element_set_locked_state (output, FALSE);
-
- error:
-
-  gst_bin_remove (GST_BIN (priv->pipeline), priv->funnel);
-  priv->funnel = NULL;
-
-  return NULL;
-}
-
-/* Called with global lock held */
-static GstPad *
-empathy_streamed_media_window_get_audio_sink_pad (EmpathyStreamedMediaWindow *self)
-{
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (self);
-  GstPad *pad;
-  GstPadTemplate *template;
-
-  if (priv->audio_output == NULL)
-    {
-      priv->audio_output = empathy_audio_sink_new ();
-
-      if (!gst_bin_add (GST_BIN (priv->pipeline), priv->audio_output))
-        {
-          g_warning ("Could not add audio sink to pipeline");
-          g_object_unref (priv->audio_output);
-          goto error_add_output;
-        }
-
-      if (gst_element_set_state (priv->audio_output, GST_STATE_PLAYING) == GST_STATE_CHANGE_FAILURE)
-        {
-          g_warning ("Could not start audio sink");
-          goto error;
-        }
-    }
-
-  template = gst_element_class_get_pad_template (
-    GST_ELEMENT_GET_CLASS (priv->audio_output), "sink%d");
-
-  pad = gst_element_request_pad (priv->audio_output,
-    template, NULL, NULL);
-
-  if (pad == NULL)
-    {
-      g_warning ("Could not get sink pad from sink");
-      return NULL;
-    }
-
-  return pad;
-
-error:
-  gst_element_set_locked_state (priv->audio_output, TRUE);
-  gst_element_set_state (priv->audio_output, GST_STATE_NULL);
-  gst_bin_remove (GST_BIN (priv->pipeline), priv->audio_output);
-  priv->audio_output = NULL;
-
-error_add_output:
-
-  return NULL;
-}
-
-static gboolean
-empathy_streamed_media_window_update_timer (gpointer user_data)
-{
-  EmpathyStreamedMediaWindow *self = EMPATHY_STREAMED_MEDIA_WINDOW (user_data);
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (self);
-  gchar *str;
-  gdouble time_;
-
-  time_ = g_timer_elapsed (priv->timer, NULL);
-
-  /* Translators: number of minutes:seconds the caller has been connected */
-  str = g_strdup_printf (_("Connected — %d:%02dm"), (int) time_ / 60,
-    (int) time_ % 60);
-  empathy_streamed_media_window_status_message (self, str);
-  g_free (str);
-
-  return TRUE;
-}
-
-static void
-display_error (EmpathyStreamedMediaWindow *self,
-    EmpathyTpStreamedMedia *call,
-    const gchar *img,
-    const gchar *title,
-    const gchar *desc,
-    const gchar *details)
-{
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (self);
-  GtkWidget *info_bar;
-  GtkWidget *content_area;
-  GtkWidget *hbox;
-  GtkWidget *vbox;
-  GtkWidget *image;
-  GtkWidget *label;
-  gchar *txt;
-
-  /* Create info bar */
-  info_bar = gtk_info_bar_new_with_buttons (GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE,
-      NULL);
-
-  gtk_info_bar_set_message_type (GTK_INFO_BAR (info_bar), GTK_MESSAGE_WARNING);
-
-  content_area = gtk_info_bar_get_content_area (GTK_INFO_BAR (info_bar));
-
-  /* hbox containing the image and the messages vbox */
-  hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 3);
-  gtk_container_add (GTK_CONTAINER (content_area), hbox);
-
-  /* Add image */
-  image = gtk_image_new_from_icon_name (img, GTK_ICON_SIZE_DIALOG);
-  gtk_box_pack_start (GTK_BOX (hbox), image, FALSE, FALSE, 0);
-
-  /* vbox containing the main message and the details expander */
-  vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 3);
-  gtk_box_pack_start (GTK_BOX (hbox), vbox, TRUE, TRUE, 0);
-
-  /* Add text */
-  txt = g_strdup_printf ("<b>%s</b>\n%s", title, desc);
-
-  label = gtk_label_new (NULL);
-  gtk_label_set_markup (GTK_LABEL (label), txt);
-  gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
-  gtk_misc_set_alignment (GTK_MISC (label), 0, 0);
-  g_free (txt);
-
-  gtk_box_pack_start (GTK_BOX (vbox), label, TRUE, TRUE, 0);
-
-  /* Add details */
-  if (details != NULL)
-    {
-      GtkWidget *expander;
-
-      expander = gtk_expander_new (_("Technical Details"));
-
-      txt = g_strdup_printf ("<i>%s</i>", details);
-
-      label = gtk_label_new (NULL);
-      gtk_label_set_markup (GTK_LABEL (label), txt);
-      gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
-      gtk_misc_set_alignment (GTK_MISC (label), 0, 0);
-      g_free (txt);
-
-      gtk_container_add (GTK_CONTAINER (expander), label);
-      gtk_box_pack_start (GTK_BOX (vbox), expander, TRUE, TRUE, 0);
-    }
-
-  g_signal_connect (info_bar, "response",
-      G_CALLBACK (gtk_widget_destroy), NULL);
-
-  gtk_box_pack_start (GTK_BOX (priv->errors_vbox), info_bar,
-      FALSE, FALSE, CONTENT_HBOX_CHILDREN_PACKING_PADDING);
-  gtk_widget_show_all (info_bar);
-}
-
-static gchar *
-media_stream_error_to_txt (EmpathyStreamedMediaWindow *self,
-    EmpathyTpStreamedMedia *call,
-    gboolean audio,
-    TpMediaStreamError error)
-{
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (self);
-  const gchar *cm;
-  gchar *url;
-  gchar *result;
-
-  switch (error)
-    {
-      case TP_MEDIA_STREAM_ERROR_CODEC_NEGOTIATION_FAILED:
-        if (audio)
-          return g_strdup_printf (
-              _("%s's software does not understand any of the audio formats "
-                "supported by your computer"),
-            empathy_contact_get_alias (priv->contact));
-        else
-          return g_strdup_printf (
-              _("%s's software does not understand any of the video formats "
-                "supported by your computer"),
-            empathy_contact_get_alias (priv->contact));
-
-      case TP_MEDIA_STREAM_ERROR_CONNECTION_FAILED:
-        return g_strdup_printf (
-            _("Can't establish a connection to %s. "
-              "One of you might be on a network that does not allow "
-              "direct connections."),
-          empathy_contact_get_alias (priv->contact));
-
-      case TP_MEDIA_STREAM_ERROR_NETWORK_ERROR:
-          return g_strdup (_("There was a failure on the network"));
-
-      case TP_MEDIA_STREAM_ERROR_NO_CODECS:
-        if (audio)
-          return g_strdup (_("The audio formats necessary for this call "
-                "are not installed on your computer"));
-        else
-          return g_strdup (_("The video formats necessary for this call "
-                "are not installed on your computer"));
-
-      case TP_MEDIA_STREAM_ERROR_INVALID_CM_BEHAVIOR:
-        cm = empathy_tp_streamed_media_get_connection_manager (call);
-
-        url = g_strdup_printf ("http://bugs.freedesktop.org/enter_bug.cgi?"
-            "product=Telepathy&amp;component=%s", cm);
-
-        result = g_strdup_printf (
-            _("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."), url);
-
-        g_free (url);
-        return result;
-
-      case TP_MEDIA_STREAM_ERROR_MEDIA_ERROR:
-        return g_strdup (_("There was a failure in the call engine"));
-
-      case TP_MEDIA_STREAM_ERROR_EOS:
-        return g_strdup (_("The end of the stream was reached"));
-
-      case TP_MEDIA_STREAM_ERROR_UNKNOWN:
-      default:
-        return NULL;
-    }
-}
-
-static void
-empathy_streamed_media_window_stream_error (EmpathyStreamedMediaWindow *self,
-    EmpathyTpStreamedMedia *call,
-    gboolean audio,
-    guint code,
-    const gchar *msg,
-    const gchar *icon,
-    const gchar *title)
-{
-  gchar *desc;
-
-  desc = media_stream_error_to_txt (self, call, audio, code);
-  if (desc == NULL)
-    {
-      /* No description, use the error message. That's not great as it's not
-       * localized but it's better than nothing. */
-      display_error (self, call, icon, title, msg, NULL);
-    }
-  else
-    {
-      display_error (self, call, icon, title, desc, msg);
-      g_free (desc);
-    }
-}
-
-static void
-empathy_streamed_media_window_audio_stream_error (EmpathyTpStreamedMedia *call,
-    guint code,
-    const gchar *msg,
-    EmpathyStreamedMediaWindow *self)
-{
-  empathy_streamed_media_window_stream_error (self, call, TRUE, code, msg,
-      "gnome-stock-mic", _("Can't establish audio stream"));
-}
-
-static void
-empathy_streamed_media_window_video_stream_error (EmpathyTpStreamedMedia *call,
-    guint code,
-    const gchar *msg,
-    EmpathyStreamedMediaWindow *self)
-{
-  empathy_streamed_media_window_stream_error (self, call, FALSE, code, msg,
-      "camera-web", _("Can't establish video stream"));
-}
-
-static gboolean
-empathy_streamed_media_window_connected (gpointer user_data)
-{
-  EmpathyStreamedMediaWindow *self = EMPATHY_STREAMED_MEDIA_WINDOW (user_data);
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (self);
-  EmpathyTpStreamedMedia *call;
-  gboolean can_send_video;
-
-  empathy_sound_manager_stop (priv->sound_mgr, EMPATHY_SOUND_PHONE_OUTGOING);
-
-  can_send_video = priv->video_input != NULL && priv->contact != NULL &&
-    empathy_contact_can_voip_video (priv->contact);
-
-  g_object_get (priv->handler, "tp-call", &call, NULL);
-
-  tp_g_signal_connect_object (call, "notify::video-stream",
-    G_CALLBACK (empathy_streamed_media_window_video_stream_changed_cb),
-    self, 0);
-
-  if (empathy_tp_streamed_media_has_dtmf (call))
-    gtk_widget_set_sensitive (priv->dtmf_panel, TRUE);
-
-  if (priv->video_input == NULL)
-    empathy_streamed_media_window_set_send_video (self, CAMERA_STATE_OFF);
-
-  priv->sending_video = can_send_video ?
-    empathy_tp_streamed_media_is_sending_video (call) : FALSE;
-
-  gtk_toggle_tool_button_set_active (
-      GTK_TOGGLE_TOOL_BUTTON (priv->tool_button_camera_on),
-      priv->sending_video && priv->video_input != NULL);
-  gtk_widget_set_sensitive (priv->tool_button_camera_on, can_send_video);
-  gtk_action_set_sensitive (priv->action_camera_on, can_send_video);
-
-  gtk_action_set_sensitive (priv->redial, FALSE);
-  gtk_widget_set_sensitive (priv->redial_button, FALSE);
-
-  gtk_widget_set_sensitive (priv->mic_button, TRUE);
-
-  empathy_streamed_media_window_update_avatars_visibility (call, self);
-
-  g_object_unref (call);
-
-  g_mutex_lock (priv->lock);
-
-  priv->timer_id = g_timeout_add_seconds (1,
-    empathy_streamed_media_window_update_timer, self);
-
-  g_mutex_unlock (priv->lock);
-
-  empathy_streamed_media_window_update_timer (self);
-
-  gtk_action_set_sensitive (priv->menu_fullscreen, TRUE);
-
-  return FALSE;
-}
-
-
-/* Called from the streaming thread */
-static gboolean
-empathy_streamed_media_window_src_added_cb (EmpathyStreamedMediaHandler *handler,
-  GstPad *src, guint media_type, gpointer user_data)
-{
-  EmpathyStreamedMediaWindow *self = EMPATHY_STREAMED_MEDIA_WINDOW (user_data);
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (self);
-  gboolean retval = FALSE;
-
-  GstPad *pad;
-
-  g_mutex_lock (priv->lock);
-
-  if (priv->call_state != CONNECTED)
-    {
-      g_timer_start (priv->timer);
-      priv->timer_id = g_idle_add  (empathy_streamed_media_window_connected, self);
-      priv->call_state = CONNECTED;
-    }
-
-  switch (media_type)
-    {
-      case TP_MEDIA_STREAM_TYPE_AUDIO:
-        pad = empathy_streamed_media_window_get_audio_sink_pad (self);
-        break;
-      case TP_MEDIA_STREAM_TYPE_VIDEO:
-        gtk_widget_hide (priv->remote_user_avatar_widget);
-        gtk_widget_show (priv->video_output);
-        pad = empathy_streamed_media_window_get_video_sink_pad (self);
-        break;
-      default:
-        g_assert_not_reached ();
-    }
-
-  if (pad == NULL)
-    goto out;
-
-  if (GST_PAD_LINK_FAILED (gst_pad_link (src, pad)))
-      g_warning ("Could not link %s sink pad",
-          media_type == TP_MEDIA_STREAM_TYPE_AUDIO ? "audio" : "video");
-  else
-      retval = TRUE;
-
-  gst_object_unref (pad);
-
- out:
-
-  /* If no sink could be linked, try to add fakesink to prevent the whole call
-   * aborting */
-
-  if (!retval)
-    {
-      GstElement *fakesink = gst_element_factory_make ("fakesink", NULL);
-
-      if (gst_bin_add (GST_BIN (priv->pipeline), fakesink))
-        {
-          GstPad *sinkpad = gst_element_get_static_pad (fakesink, "sink");
-          if (gst_element_set_state (fakesink, GST_STATE_PLAYING) == GST_STATE_CHANGE_FAILURE ||
-              GST_PAD_LINK_FAILED (gst_pad_link (src, sinkpad)))
-            {
-              gst_element_set_locked_state (fakesink, TRUE);
-              gst_element_set_state (fakesink, GST_STATE_NULL);
-              gst_bin_remove (GST_BIN (priv->pipeline), fakesink);
-            }
-          else
-            {
-              DEBUG ("Could not link real sink, linked fakesink instead");
-            }
-          gst_object_unref (sinkpad);
-        }
-      else
-        {
-          gst_object_unref (fakesink);
-        }
-    }
-
-
-  g_mutex_unlock (priv->lock);
-
-  return TRUE;
-}
-
-static gboolean
-empathy_streamed_media_window_sink_added_cb (EmpathyStreamedMediaHandler *handler,
-  GstPad *sink, guint media_type, gpointer user_data)
-{
-  EmpathyStreamedMediaWindow *self = EMPATHY_STREAMED_MEDIA_WINDOW (user_data);
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (self);
-  GstPad *pad;
-  gboolean retval = FALSE;
-
-  switch (media_type)
-    {
-      case TP_MEDIA_STREAM_TYPE_AUDIO:
-        if (!gst_bin_add (GST_BIN (priv->pipeline), priv->audio_input))
-          {
-            g_warning ("Could not add audio source to pipeline");
-            break;
-          }
-
-        pad = gst_element_get_static_pad (priv->audio_input, "src");
-        if (!pad)
-          {
-            gst_bin_remove (GST_BIN (priv->pipeline), priv->audio_input);
-            g_warning ("Could not get source pad from audio source");
-            break;
-          }
-
-        if (GST_PAD_LINK_FAILED (gst_pad_link (pad, sink)))
-          {
-            gst_bin_remove (GST_BIN (priv->pipeline), priv->audio_input);
-            g_warning ("Could not link audio source to farsight");
-            break;
-          }
-
-        if (gst_element_set_state (priv->audio_input, GST_STATE_PLAYING) == GST_STATE_CHANGE_FAILURE)
-          {
-            g_warning ("Could not start audio source");
-            gst_element_set_state (priv->audio_input, GST_STATE_NULL);
-            gst_bin_remove (GST_BIN (priv->pipeline), priv->audio_input);
-            break;
-          }
-
-        retval = TRUE;
-        break;
-      case TP_MEDIA_STREAM_TYPE_VIDEO:
-        if (priv->video_input != NULL)
-          {
-            if (priv->video_tee != NULL)
-              {
-                pad = gst_element_get_request_pad (priv->video_tee, "src%d");
-                if (GST_PAD_LINK_FAILED (gst_pad_link (pad, sink)))
-                  {
-                    g_warning ("Could not link videp soure input pipeline");
-                    break;
-                  }
-                gst_object_unref (pad);
-              }
-
-            retval = TRUE;
-          }
-        break;
-      default:
-        g_assert_not_reached ();
-    }
-
-  return retval;
-}
-
-static void
-empathy_streamed_media_window_remove_video_input (EmpathyStreamedMediaWindow *self)
-{
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (self);
-  GstElement *preview;
-
-  disable_camera (self);
-
-  DEBUG ("remove video input");
-  preview = empathy_video_widget_get_element (
-    EMPATHY_VIDEO_WIDGET (priv->video_preview));
-
-  gst_element_set_state (priv->video_input, GST_STATE_NULL);
-  gst_element_set_state (priv->video_tee, GST_STATE_NULL);
-  gst_element_set_state (preview, GST_STATE_NULL);
-
-  gst_bin_remove_many (GST_BIN (priv->pipeline), priv->video_input,
-    priv->video_tee, preview, NULL);
-
-  g_object_unref (priv->video_input);
-  priv->video_input = NULL;
-  g_object_unref (priv->video_tee);
-  priv->video_tee = NULL;
-  gtk_widget_destroy (priv->video_preview);
-  priv->video_preview = NULL;
-
-  gtk_widget_set_sensitive (priv->tool_button_camera_on, FALSE);
-  gtk_action_set_sensitive (priv->action_camera_on, FALSE);
-  gtk_widget_set_sensitive (priv->tool_button_camera_preview, FALSE);
-}
-
-static void
-start_call (EmpathyStreamedMediaWindow *self)
-{
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (self);
-
-  priv->call_started = TRUE;
-  empathy_streamed_media_handler_start_call (priv->handler,
-      empathy_get_current_action_time ());
-
-  if (empathy_streamed_media_handler_has_initial_video (priv->handler))
-    {
-      /* Enable 'send video' buttons and display the preview */
-      gtk_toggle_tool_button_set_active (
-          GTK_TOGGLE_TOOL_BUTTON (priv->tool_button_camera_on), TRUE);
-    }
-}
-
-static gboolean
-empathy_streamed_media_window_bus_message (GstBus *bus, GstMessage *message,
-  gpointer user_data)
-{
-  EmpathyStreamedMediaWindow *self = EMPATHY_STREAMED_MEDIA_WINDOW (user_data);
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (self);
-  GstState newstate;
-
-  empathy_streamed_media_handler_bus_message (priv->handler, bus, message);
-
-  switch (GST_MESSAGE_TYPE (message))
-    {
-      case GST_MESSAGE_STATE_CHANGED:
-        if (GST_MESSAGE_SRC (message) == GST_OBJECT (priv->video_input))
-          {
-            gst_message_parse_state_changed (message, NULL, &newstate, NULL);
-            if (newstate == GST_STATE_PAUSED)
-                empathy_streamed_media_window_setup_video_input (self);
-          }
-        if (GST_MESSAGE_SRC (message) == GST_OBJECT (priv->pipeline) &&
-            !priv->call_started)
-          {
-            gst_message_parse_state_changed (message, NULL, &newstate, NULL);
-            if (newstate == GST_STATE_PAUSED)
-              {
-                gst_element_set_state (priv->pipeline, GST_STATE_PLAYING);
-                priv->pipeline_playing = TRUE;
-
-                if (priv->start_call_when_playing)
-                  start_call (self);
-              }
-          }
-        break;
-      case GST_MESSAGE_ERROR:
-        {
-          GError *error = NULL;
-          GstElement *gst_error;
-          gchar *debug;
-          gchar *name;
-
-          gst_message_parse_error (message, &error, &debug);
-          gst_error = GST_ELEMENT (GST_MESSAGE_SRC (message));
-
-          g_message ("Element error: %s -- %s\n", error->message, debug);
-
-          name = gst_element_get_name (gst_error);
-          if (g_str_has_prefix (name, VIDEO_INPUT_ERROR_PREFIX))
-            {
-              /* Remove the video input and continue */
-              if (priv->video_input != NULL)
-                empathy_streamed_media_window_remove_video_input (self);
-              gst_element_set_state (priv->pipeline, GST_STATE_PLAYING);
-            }
-          else
-            {
-              empathy_streamed_media_window_disconnected (self, TRUE);
-            }
-          g_free (name);
-          g_error_free (error);
-          g_free (debug);
-        }
-      case GST_MESSAGE_UNKNOWN:
-      case GST_MESSAGE_EOS:
-      case GST_MESSAGE_WARNING:
-      case GST_MESSAGE_INFO:
-      case GST_MESSAGE_TAG:
-      case GST_MESSAGE_BUFFERING:
-      case GST_MESSAGE_STATE_DIRTY:
-      case GST_MESSAGE_STEP_DONE:
-      case GST_MESSAGE_CLOCK_PROVIDE:
-      case GST_MESSAGE_CLOCK_LOST:
-      case GST_MESSAGE_NEW_CLOCK:
-      case GST_MESSAGE_STRUCTURE_CHANGE:
-      case GST_MESSAGE_STREAM_STATUS:
-      case GST_MESSAGE_APPLICATION:
-      case GST_MESSAGE_ELEMENT:
-      case GST_MESSAGE_SEGMENT_START:
-      case GST_MESSAGE_SEGMENT_DONE:
-      case GST_MESSAGE_DURATION:
-      case GST_MESSAGE_ANY:
-      default:
-        break;
-    }
-
-  return TRUE;
-}
-
-static void
-empathy_streamed_media_window_update_avatars_visibility (EmpathyTpStreamedMedia *call,
-    EmpathyStreamedMediaWindow *window)
-{
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (window);
-
-  if (empathy_tp_streamed_media_is_receiving_video (call))
-    {
-      gtk_widget_hide (priv->remote_user_avatar_widget);
-      gtk_widget_show (priv->video_output);
-    }
-  else
-    {
-      gtk_widget_hide (priv->video_output);
-      gtk_widget_show (priv->remote_user_avatar_widget);
-    }
-}
-
-static void
-call_handler_notify_tp_streamed_media_cb (EmpathyStreamedMediaHandler *handler,
-    GParamSpec *spec,
-    EmpathyStreamedMediaWindow *self)
-{
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (self);
-  EmpathyTpStreamedMedia *call;
-
-  g_object_get (priv->handler, "tp-call", &call, NULL);
-  if (call == NULL)
-    return;
-
-  tp_g_signal_connect_object (call, "audio-stream-error",
-      G_CALLBACK (empathy_streamed_media_window_audio_stream_error), self, 0);
-  tp_g_signal_connect_object (call, "video-stream-error",
-      G_CALLBACK (empathy_streamed_media_window_video_stream_error), self, 0);
-
-  g_object_unref (call);
-}
-
-static void
-empathy_streamed_media_window_realized_cb (GtkWidget *widget, EmpathyStreamedMediaWindow *window)
-{
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (window);
-  EmpathyTpStreamedMedia *call;
-
-  g_signal_connect (priv->handler, "conference-added",
-    G_CALLBACK (empathy_streamed_media_window_conference_added_cb), window);
-  g_signal_connect (priv->handler, "start-receiving",
-    G_CALLBACK (empathy_streamed_media_window_start_receiving_cb), window);
-  g_signal_connect (priv->handler, "closed",
-    G_CALLBACK (empathy_streamed_media_window_channel_closed_cb), window);
-  g_signal_connect (priv->handler, "src-pad-added",
-    G_CALLBACK (empathy_streamed_media_window_src_added_cb), window);
-  g_signal_connect (priv->handler, "sink-pad-added",
-    G_CALLBACK (empathy_streamed_media_window_sink_added_cb), window);
-  g_signal_connect (priv->handler, "stream-closed",
-    G_CALLBACK (empathy_streamed_media_window_channel_stream_closed_cb), window);
-
-  g_object_get (priv->handler, "tp-call", &call, NULL);
-  if (call != NULL)
-    {
-      tp_g_signal_connect_object (call, "audio-stream-error",
-        G_CALLBACK (empathy_streamed_media_window_audio_stream_error), window,
-        0);
-      tp_g_signal_connect_object (call, "video-stream-error",
-        G_CALLBACK (empathy_streamed_media_window_video_stream_error), window,
-        0);
-
-      g_object_unref (call);
-    }
-  else
-    {
-      /* tp-call doesn't exist yet, we'll connect signals once it has been
-       * set */
-      g_signal_connect (priv->handler, "notify::tp-call",
-        G_CALLBACK (call_handler_notify_tp_streamed_media_cb), window);
-    }
-
-  gst_element_set_state (priv->pipeline, GST_STATE_PAUSED);
-}
-
-static gboolean
-empathy_streamed_media_window_delete_cb (GtkWidget *widget, GdkEvent*event,
-  EmpathyStreamedMediaWindow *window)
-{
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (window);
-
-  if (priv->pipeline != NULL)
-    {
-      if (priv->bus_message_source_id != 0)
-        {
-          g_source_remove (priv->bus_message_source_id);
-          priv->bus_message_source_id = 0;
-        }
-
-      gst_element_set_state (priv->pipeline, GST_STATE_NULL);
-    }
-
-  if (priv->call_state == CONNECTING)
-    empathy_sound_manager_stop (priv->sound_mgr, EMPATHY_SOUND_PHONE_OUTGOING);
-
-  return FALSE;
-}
-
-static void
-show_controls (EmpathyStreamedMediaWindow *window, gboolean set_fullscreen)
-{
-  GtkWidget *menu;
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (window);
-
-  menu = gtk_ui_manager_get_widget (priv->ui_manager,
-            "/menubar1");
-
-  if (set_fullscreen)
-    {
-      gtk_widget_hide (priv->sidebar);
-      gtk_widget_hide (menu);
-      gtk_widget_hide (priv->vbox);
-      gtk_widget_hide (priv->statusbar);
-      gtk_widget_hide (priv->toolbar);
-    }
-  else
-    {
-      if (priv->sidebar_was_visible_before_fs)
-        gtk_widget_show (priv->sidebar);
-
-      gtk_widget_show (menu);
-      gtk_widget_show (priv->vbox);
-      gtk_widget_show (priv->statusbar);
-      gtk_widget_show (priv->toolbar);
-
-      gtk_window_resize (GTK_WINDOW (window), priv->original_width_before_fs,
-          priv->original_height_before_fs);
-    }
-}
-
-static void
-show_borders (EmpathyStreamedMediaWindow *window, gboolean set_fullscreen)
-{
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (window);
-
-  gtk_container_set_border_width (GTK_CONTAINER (priv->content_hbox),
-      set_fullscreen ? 0 : CONTENT_HBOX_BORDER_WIDTH);
-  gtk_box_set_spacing (GTK_BOX (priv->content_hbox),
-      set_fullscreen ? 0 : CONTENT_HBOX_SPACING);
-
-  if (priv->video_output != NULL)
-    {
-      gtk_box_set_child_packing (GTK_BOX (priv->content_hbox),
-          priv->video_output, TRUE, TRUE,
-          set_fullscreen ? 0 : CONTENT_HBOX_CHILDREN_PACKING_PADDING,
-          GTK_PACK_START);
-    }
-
-  gtk_box_set_child_packing (GTK_BOX (priv->content_hbox),
-      priv->vbox, TRUE, TRUE,
-      set_fullscreen ? 0 : CONTENT_HBOX_CHILDREN_PACKING_PADDING,
-      GTK_PACK_START);
-}
-
-static gboolean
-empathy_streamed_media_window_state_event_cb (GtkWidget *widget,
-  GdkEventWindowState *event, EmpathyStreamedMediaWindow *window)
-{
-  if (event->changed_mask & GDK_WINDOW_STATE_FULLSCREEN)
-    {
-      EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (window);
-      gboolean set_fullscreen = event->new_window_state &
-        GDK_WINDOW_STATE_FULLSCREEN;
-
-      if (set_fullscreen)
-        {
-          gboolean sidebar_was_visible;
-          GtkAllocation allocation;
-          gint original_width, original_height;
-
-          gtk_widget_get_allocation (GTK_WIDGET (window), &allocation);
-          original_width = allocation.width;
-          original_height = allocation.height;
-
-          g_object_get (priv->sidebar, "visible", &sidebar_was_visible, NULL);
-
-          priv->sidebar_was_visible_before_fs = sidebar_was_visible;
-          priv->original_width_before_fs = original_width;
-          priv->original_height_before_fs = original_height;
-
-          if (priv->video_output_motion_handler_id == 0 &&
-                priv->video_output != NULL)
-            {
-              priv->video_output_motion_handler_id = g_signal_connect (
-                  G_OBJECT (priv->video_output), "motion-notify-event",
-                  G_CALLBACK (empathy_streamed_media_window_video_output_motion_notify),
-                  window);
-            }
-        }
-      else
-        {
-          disconnect_video_output_motion_handler (window);
-        }
-
-      empathy_streamed_media_window_fullscreen_set_fullscreen (priv->fullscreen,
-          set_fullscreen);
-      show_controls (window, set_fullscreen);
-      show_borders (window, set_fullscreen);
-      gtk_action_set_stock_id (priv->menu_fullscreen,
-          (set_fullscreen ? "gtk-leave-fullscreen" : "gtk-fullscreen"));
-      priv->is_fullscreen = set_fullscreen;
-  }
-
-  return FALSE;
-}
-
-static void
-empathy_streamed_media_window_sidebar_toggled_cb (GtkToggleButton *toggle,
-  EmpathyStreamedMediaWindow *window)
-{
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (window);
-  GtkWidget *arrow;
-  int w, h, handle_size;
-  GtkAllocation allocation, sidebar_allocation;
-
-  gtk_widget_get_allocation (GTK_WIDGET (window), &allocation);
-  w = allocation.width;
-  h = allocation.height;
-
-  gtk_widget_style_get (priv->pane, "handle_size", &handle_size, NULL);
-
-  gtk_widget_get_allocation (priv->sidebar, &sidebar_allocation);
-  if (gtk_toggle_button_get_active (toggle))
-    {
-      arrow = gtk_arrow_new (GTK_ARROW_LEFT, GTK_SHADOW_NONE);
-      gtk_widget_show (priv->sidebar);
-      w += sidebar_allocation.width + handle_size;
-    }
-  else
-    {
-      arrow = gtk_arrow_new (GTK_ARROW_RIGHT, GTK_SHADOW_NONE);
-      w -= sidebar_allocation.width + handle_size;
-      gtk_widget_hide (priv->sidebar);
-    }
-
-  gtk_button_set_image (GTK_BUTTON (priv->sidebar_button), arrow);
-
-  if (w > 0 && h > 0)
-    gtk_window_resize (GTK_WINDOW (window), w, h);
-}
-
-static void
-empathy_streamed_media_window_set_send_video (EmpathyStreamedMediaWindow *window,
-  CameraState state)
-{
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (window);
-  EmpathyTpStreamedMedia *call;
-
-  priv->sending_video = (state == CAMERA_STATE_ON);
-
-  if (state == CAMERA_STATE_PREVIEW ||
-      state == CAMERA_STATE_ON)
-    {
-      /* When we start sending video, we want to show the video preview by
-         default. */
-      display_video_preview (window, TRUE);
-    }
-  else
-    {
-      display_video_preview (window, FALSE);
-    }
-
-  if (priv->call_state != CONNECTED)
-    return;
-
-  g_object_get (priv->handler, "tp-call", &call, NULL);
-  DEBUG ("%s sending video", priv->sending_video ? "start": "stop");
-  empathy_tp_streamed_media_request_video_stream_direction (call, priv->sending_video);
-  g_object_unref (call);
-}
-
-static void
-empathy_streamed_media_window_mic_toggled_cb (GtkToggleToolButton *toggle,
-  EmpathyStreamedMediaWindow *window)
-{
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (window);
-  gboolean active;
-
-  active = (gtk_toggle_tool_button_get_active (toggle));
-
-  if (active)
-    {
-      empathy_audio_src_set_volume (EMPATHY_GST_AUDIO_SRC (priv->audio_input),
-        priv->volume);
-      gtk_adjustment_set_value (priv->audio_input_adj, 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
-       */
-      empathy_audio_src_set_volume (EMPATHY_GST_AUDIO_SRC (priv->audio_input),
-        0);
-      gtk_adjustment_set_value (priv->audio_input_adj, 0);
-    }
-}
-
-static void
-empathy_streamed_media_window_sidebar_hidden_cb (EvSidebar *sidebar,
-  EmpathyStreamedMediaWindow *window)
-{
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (window);
-
-  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->sidebar_button),
-    FALSE);
-}
-
-static void
-empathy_streamed_media_window_sidebar_shown_cb (EvSidebar *sidebar,
-  EmpathyStreamedMediaWindow *window)
-{
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (window);
-
-  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->sidebar_button),
-    TRUE);
-}
-
-static void
-empathy_streamed_media_window_hangup_cb (gpointer object,
-                               EmpathyStreamedMediaWindow *window)
-{
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (window);
-
-  empathy_streamed_media_handler_stop_call (priv->handler);
-
-  if (empathy_streamed_media_window_disconnected (window, FALSE))
-    gtk_widget_destroy (GTK_WIDGET (window));
-}
-
-static void
-empathy_streamed_media_window_restart_call (EmpathyStreamedMediaWindow *window)
-{
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (window);
-
-  /* Remove error info bars */
-  gtk_container_forall (GTK_CONTAINER (priv->errors_vbox),
-      (GtkCallback) gtk_widget_destroy, NULL);
-
-  create_video_output_widget (window);
-
-  g_signal_connect (G_OBJECT (priv->audio_input_adj), "value-changed",
-      G_CALLBACK (empathy_streamed_media_window_mic_volume_changed_cb), 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_streamed_media_window_mic_volume_changed_cb (priv->audio_input_adj, window);
-
-  priv->outgoing = TRUE;
-  empathy_streamed_media_window_set_state_connecting (window);
-
-  if (priv->pipeline_playing)
-    start_call (window);
-  else
-    /* call will be started when the pipeline is ready */
-    priv->start_call_when_playing = TRUE;
-
-
-  empathy_streamed_media_window_setup_avatars (window, priv->handler);
-
-  gtk_action_set_sensitive (priv->redial, FALSE);
-  gtk_widget_set_sensitive (priv->redial_button, FALSE);
-}
-
-static void
-empathy_streamed_media_window_redial_cb (gpointer object,
-    EmpathyStreamedMediaWindow *window)
-{
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (window);
-
-  if (priv->call_state == CONNECTED)
-    priv->call_state = REDIALING;
-
-  empathy_streamed_media_handler_stop_call (priv->handler);
-
-  if (priv->call_state != CONNECTED)
-    empathy_streamed_media_window_restart_call (window);
-}
-
-static void
-empathy_streamed_media_window_fullscreen_cb (gpointer object,
-                                   EmpathyStreamedMediaWindow *window)
-{
-  empathy_streamed_media_window_fullscreen_toggle (window);
-}
-
-static void
-empathy_streamed_media_window_fullscreen_toggle (EmpathyStreamedMediaWindow *window)
-{
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (window);
-
-  if (priv->is_fullscreen)
-    gtk_window_unfullscreen (GTK_WINDOW (window));
-  else
-    gtk_window_fullscreen (GTK_WINDOW (window));
-}
-
-static gboolean
-empathy_streamed_media_window_video_button_press_cb (GtkWidget *video_output,
-  GdkEventButton *event, EmpathyStreamedMediaWindow *window)
-{
-  if (event->button == 3 && event->type == GDK_BUTTON_PRESS)
-    {
-      empathy_streamed_media_window_video_menu_popup (window, event->button);
-      return TRUE;
-    }
-
-  return FALSE;
-}
-
-static gboolean
-empathy_streamed_media_window_key_press_cb (GtkWidget *video_output,
-  GdkEventKey *event, EmpathyStreamedMediaWindow *window)
-{
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (window);
-
-  if (priv->is_fullscreen && event->keyval == GDK_KEY_Escape)
-    {
-      /* Since we are in fullscreen mode, toggling will bring us back to
-         normal mode. */
-      empathy_streamed_media_window_fullscreen_toggle (window);
-      return TRUE;
-    }
-
-  return FALSE;
-}
-
-static gboolean
-empathy_streamed_media_window_video_output_motion_notify (GtkWidget *widget,
-    GdkEventMotion *event, EmpathyStreamedMediaWindow *window)
-{
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (window);
-
-  if (priv->is_fullscreen)
-    {
-      empathy_streamed_media_window_fullscreen_show_popup (priv->fullscreen);
-      return TRUE;
-    }
-  return FALSE;
-}
-
-static void
-empathy_streamed_media_window_video_menu_popup (EmpathyStreamedMediaWindow *window,
-  guint button)
-{
-  GtkWidget *menu;
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (window);
-
-  menu = gtk_ui_manager_get_widget (priv->ui_manager,
-            "/video-popup");
-  gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL,
-      button, gtk_get_current_event_time ());
-  gtk_menu_shell_select_first (GTK_MENU_SHELL (menu), FALSE);
-}
-
-static void
-empathy_streamed_media_window_status_message (EmpathyStreamedMediaWindow *window,
-  gchar *message)
-{
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (window);
-
-  if (priv->context_id == 0)
-    {
-      priv->context_id = gtk_statusbar_get_context_id (
-        GTK_STATUSBAR (priv->statusbar), "voip call status messages");
-    }
-  else
-    {
-      gtk_statusbar_pop (GTK_STATUSBAR (priv->statusbar), priv->context_id);
-    }
-
-  gtk_statusbar_push (GTK_STATUSBAR (priv->statusbar), priv->context_id,
-    message);
-}
-
-static void
-empathy_streamed_media_window_volume_changed_cb (GtkScaleButton *button,
-  gdouble value, EmpathyStreamedMediaWindow *window)
-{
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (window);
-
-  if (priv->audio_output == NULL)
-    return;
-
-  empathy_audio_sink_set_volume (EMPATHY_GST_AUDIO_SINK (priv->audio_output),
-    value);
-}
-
-/* block all the signals related to camera control widgets. This is useful
- * when we are manually updating the UI and so don't want to fire the
- * callbacks */
-static void
-block_camera_control_signals (EmpathyStreamedMediaWindow *self)
-{
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (self);
-
-  g_signal_handlers_block_by_func (priv->tool_button_camera_off,
-      tool_button_camera_off_toggled_cb, self);
-  g_signal_handlers_block_by_func (priv->tool_button_camera_preview,
-      tool_button_camera_preview_toggled_cb, self);
-  g_signal_handlers_block_by_func (priv->tool_button_camera_on,
-      tool_button_camera_on_toggled_cb, self);
-  g_signal_handlers_block_by_func (priv->action_camera_on,
-      action_camera_change_cb, self);
-}
-
-static void
-unblock_camera_control_signals (EmpathyStreamedMediaWindow *self)
-{
-  EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (self);
-
-  g_signal_handlers_unblock_by_func (priv->tool_button_camera_off,
-      tool_button_camera_off_toggled_cb, self);
-  g_signal_handlers_unblock_by_func (priv->tool_button_camera_preview,
-      tool_button_camera_preview_toggled_cb, self);
-  g_signal_handlers_unblock_by_func (priv->tool_button_camera_on,
-      tool_button_camera_on_toggled_cb, self);
-  g_signal_handlers_unblock_by_func (priv->action_camera_on,
-      action_camera_change_cb, self);
-}
diff --git a/src/empathy-streamed-media-window.h b/src/empathy-streamed-media-window.h
deleted file mode 100644 (file)
index aae56d8..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * empathy-streamed-media-window.h - Header for EmpathyStreamedMediaWindow
- * Copyright (C) 2008 Collabora Ltd.
- * @author Sjoerd Simons <sjoerd.simons@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_STREAMED_MEDIA_WINDOW_H__
-#define __EMPATHY_STREAMED_MEDIA_WINDOW_H__
-
-#include <glib-object.h>
-#include <gtk/gtk.h>
-
-#include "empathy-streamed-media-handler.h"
-
-G_BEGIN_DECLS
-
-typedef struct _EmpathyStreamedMediaWindow EmpathyStreamedMediaWindow;
-typedef struct _EmpathyStreamedMediaWindowClass EmpathyStreamedMediaWindowClass;
-
-struct _EmpathyStreamedMediaWindowClass {
-    GtkWindowClass parent_class;
-};
-
-struct _EmpathyStreamedMediaWindow {
-    GtkWindow parent;
-};
-
-GType empathy_streamed_media_window_get_type (void);
-
-/* TYPE MACROS */
-#define EMPATHY_TYPE_STREAMED_MEDIA_WINDOW \
-  (empathy_streamed_media_window_get_type ())
-#define EMPATHY_STREAMED_MEDIA_WINDOW(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj), EMPATHY_TYPE_STREAMED_MEDIA_WINDOW, \
-    EmpathyStreamedMediaWindow))
-#define EMPATHY_STREAMED_MEDIA_WINDOW_CLASS(klass) \
-  (G_TYPE_CHECK_CLASS_CAST((klass), EMPATHY_TYPE_STREAMED_MEDIA_WINDOW, \
-    EmpathyStreamedMediaWindowClass))
-#define EMPATHY_IS_STREAMED_MEDIA_WINDOW(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj), EMPATHY_TYPE_STREAMED_MEDIA_WINDOW))
-#define EMPATHY_IS_STREAMED_MEDIA_WINDOW_CLASS(klass) \
-  (G_TYPE_CHECK_CLASS_TYPE((klass), EMPATHY_TYPE_STREAMED_MEDIA_WINDOW))
-#define EMPATHY_STREAMED_MEDIA_WINDOW_GET_CLASS(obj) \
-  (G_TYPE_INSTANCE_GET_CLASS ((obj), EMPATHY_TYPE_STREAMED_MEDIA_WINDOW, \
-    EmpathyStreamedMediaWindowClass))
-
-EmpathyStreamedMediaWindow *empathy_streamed_media_window_new (EmpathyStreamedMediaHandler *handler);
-
-G_END_DECLS
-
-#endif /* #ifndef __EMPATHY_STREAMED_MEDIA_WINDOW_H__*/
diff --git a/src/empathy-streamed-media-window.ui b/src/empathy-streamed-media-window.ui
deleted file mode 100644 (file)
index 5f1a16e..0000000
+++ /dev/null
@@ -1,861 +0,0 @@
-<?xml version="1.0"?>
-<!--Generated with glade3 3.4.5 on Mon Feb 16 12:31:56 2009 -->
-<interface>
-  <object class="GtkUIManager" id="ui_manager">
-    <child>
-      <object class="GtkActionGroup" id="actiongroup1">
-        <child>
-          <object class="GtkAction" id="call">
-            <property name="name">call</property>
-            <property name="label" translatable="yes">_Call</property>
-          </object>
-        </child>
-        <child>
-          <object class="GtkAction" id="menuhangup">
-            <property name="icon_name">call-stop</property>
-            <property name="name">menuhangup</property>
-            <property name="label" translatable="yes">Hang up</property>
-          </object>
-        </child>
-        <child>
-          <object class="GtkAction" id="menuredial">
-            <property name="stock_id">gtk-refresh</property>
-            <property name="name">menuredial</property>
-            <property name="label" translatable="yes">Redial</property>
-            <property name="sensitive">False</property>
-          </object>
-        </child>
-        <child>
-          <object class="GtkAction" id="camera">
-            <property name="name">camera</property>
-            <property name="label" translatable="yes">V_ideo</property>
-          </object>
-        </child>
-        <child>
-          <object class="GtkRadioAction" id="action_camera_off">
-            <property name="name">action_camera_off</property>
-            <property name="visible">True</property>
-            <property name="label" translatable="yes">Video Off</property>
-            <property name="draw_as_radio">True</property>
-            <property name="value">0</property>
-            <property name="current-value">0</property>
-          </object>
-        </child>
-        <child>
-          <object class="GtkRadioAction" id="action_camera_preview">
-            <property name="name">action_camera_preview</property>
-            <property name="visible">True</property>
-            <property name="label" translatable="yes">Video Preview</property>
-            <property name="draw_as_radio">True</property>
-            <property name="group">action_camera_off</property>
-            <property name="value">1</property>
-          </object>
-        </child>
-        <child>
-          <object class="GtkRadioAction" id="action_camera_on">
-            <property name="name">action_camera_on</property>
-            <property name="visible">True</property>
-            <property name="sensitive">False</property>
-            <property name="label" translatable="yes">Video On</property>
-            <property name="draw_as_radio">True</property>
-            <property name="group">action_camera_off</property>
-            <property name="value">2</property>
-          </object>
-        </child>
-        <child>
-          <object class="GtkAction" id="view">
-            <property name="name">view</property>
-            <property name="label" translatable="yes">_View</property>
-          </object>
-        </child>
-        <child>
-          <object class="GtkAction" id="menufullscreen">
-            <property name="stock_id">gtk-fullscreen</property>
-            <property name="name">menufullscreen</property>
-          </object>
-          <accelerator key="F11"/>
-        </child>
-      </object>
-    </child>
-    <ui>
-      <menubar name="menubar1">
-        <menu action="call">
-          <menuitem action="menuhangup"/>
-          <menuitem action="menuredial"/>
-        </menu>
-        <menu action="camera">
-          <menuitem action="action_camera_off"/>
-          <menuitem action="action_camera_preview"/>
-          <menuitem action="action_camera_on"/>
-        </menu>
-        <menu action="view">
-          <menuitem action="menufullscreen"/>
-        </menu>
-      </menubar>
-      <popup name="video-popup">
-          <menuitem name="menufullscreen" action="menufullscreen"/>
-      </popup>
-    </ui>
-  </object>
-      <object class="GtkVBox" id="call_window_vbox">
-        <property name="visible">True</property>
-        <child>
-          <object class="GtkMenuBar" constructor="ui_manager" id="menubar1">
-            <property name="visible">True</property>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkToolbar" id="toolbar">
-            <property name="visible">True</property>
-            <style>
-               <class name="primary-toolbar"/>
-            </style>
-            <child>
-              <object class="GtkToolButton" id="hangup">
-                <property name="visible">True</property>
-                <property name="is_important">True</property>
-                <property name="label" translatable="yes">Hang up</property>
-                <property name="icon_name">call-stop</property>
-                <property name="tooltip_text" translatable="yes">Hang up current call</property>
-              </object>
-              <packing>
-                <property name="homogeneous">True</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkToolButton" id="redial">
-                <property name="visible">True</property>
-                <property name="is_important">True</property>
-                <property name="label" translatable="yes">Redial</property>
-                <property name="stock_id">gtk-refresh</property>
-                <property name="sensitive">False</property>
-                <property name="tooltip_text" translatable="yes">Call the contact again</property>
-              </object>
-              <packing>
-                <property name="homogeneous">True</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkSeparatorToolItem" id="toolbutton1">
-                <property name="visible">True</property>
-              </object>
-              <packing>
-                <property name="homogeneous">True</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkToggleToolButton" id="microphone">
-                <property name="visible">True</property>
-                <property name="active">True</property>
-                <property name="label" translatable="yes">Send Audio</property>
-                <property name="icon_name">gnome-stock-mic</property>
-                <property name="tooltip_text" translatable="yes">Toggle audio transmission</property>
-              </object>
-              <packing>
-                <property name="homogeneous">True</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkSeparatorToolItem" id="camera_separator">
-                <property name="visible">True</property>
-              </object>
-              <packing>
-                <property name="homogeneous">True</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkToggleToolButton" id="camera_off">
-                <property name="visible">True</property>
-                <property name="label" translatable="yes">Camera Off</property>
-                <property name="sensitive">True</property>
-                <property name="tooltip_text" translatable="yes">Disable camera and stop sending video</property>
-              </object>
-              <packing>
-                <property name="homogeneous">True</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkToggleToolButton" id="camera_preview">
-                <property name="visible">True</property>
-                <property name="label" translatable="yes">Preview</property>
-                <property name="icon_name">avatar-default</property>
-                <property name="sensitive">True</property>
-                <property name="tooltip_text" translatable="yes">Enable camera but don't send video</property>
-              </object>
-              <packing>
-                <property name="homogeneous">True</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkToggleToolButton" id="camera_on">
-                <property name="visible">True</property>
-                <property name="label" translatable="yes">Camera On</property>
-                <property name="icon_name">camera-web</property>
-                <property name="sensitive">False</property>
-                <property name="tooltip_text" translatable="yes">Enable camera and send video</property>
-              </object>
-              <packing>
-                <property name="homogeneous">True</property>
-              </packing>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkVBox" id="errors_vbox">
-          <property name="visible">True</property>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="position">2</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkHPaned" id="pane">
-            <property name="visible">True</property>
-            <property name="can_focus">True</property>
-            <child>
-              <placeholder/>
-            </child>
-            <child>
-              <placeholder/>
-            </child>
-          </object>
-          <packing>
-            <property name="position">3</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkStatusbar" id="statusbar">
-            <property name="visible">True</property>
-            <property name="spacing">2</property>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="position">4</property>
-          </packing>
-        </child>
-      </object>
-
-  <object class="GtkVBox" id="details_vbox">
-    <property name="border_width">6</property>
-    <property name="visible">False</property>
-    <property name="homogeneous">False</property>
-    <property name="spacing">18</property>
-    <property name="orientation">vertical</property>
-
-    <child>
-      <object class="GtkVBox" id="video_vbox">
-        <property name="visible">True</property>
-        <property name="homogeneous">False</property>
-        <property name="spacing">6</property>
-        <property name="orientation">vertical</property>
-
-        <child>
-    <object class="GtkLabel" id="video_label">
-      <property name="visible">True</property>
-      <property name="label" translatable="yes">Video</property>
-      <property name="use_underline">False</property>
-      <property name="use_markup">True</property>
-      <property name="justify">GTK_JUSTIFY_LEFT</property>
-      <property name="wrap">False</property>
-      <property name="selectable">False</property>
-      <property name="xalign">0</property>
-      <property name="yalign">0.5</property>
-      <property name="xpad">0</property>
-      <property name="ypad">0</property>
-      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-      <property name="width_chars">-1</property>
-      <property name="single_line_mode">False</property>
-      <property name="angle">0</property>
-      <attributes>
-        <attribute name="weight" value="bold"/>
-      </attributes>
-    </object>
-    <packing>
-      <property name="padding">0</property>
-      <property name="expand">True</property>
-      <property name="fill">True</property>
-    </packing>
-        </child>
-
-        <child>
-    <object class="GtkAlignment" id="alignment2">
-      <property name="visible">True</property>
-      <property name="xalign">0.5</property>
-      <property name="yalign">0.5</property>
-      <property name="xscale">1</property>
-      <property name="yscale">1</property>
-      <property name="top_padding">0</property>
-      <property name="bottom_padding">0</property>
-      <property name="left_padding">12</property>
-      <property name="right_padding">0</property>
-
-      <child>
-        <object class="GtkGrid" id="video">
-          <property name="visible">True</property>
-          <property name="row_spacing">6</property>
-          <property name="column_spacing">12</property>
-
-          <child>
-      <object class="GtkLabel" id="vcodec1_label">
-        <property name="visible">True</property>
-        <property name="label" translatable="yes">Encoding Codec:</property>
-        <property name="use_underline">False</property>
-        <property name="use_markup">True</property>
-        <property name="justify">GTK_JUSTIFY_LEFT</property>
-        <property name="wrap">False</property>
-        <property name="selectable">False</property>
-        <property name="xalign">0</property>
-        <property name="yalign">0.5</property>
-        <property name="xpad">0</property>
-        <property name="ypad">0</property>
-        <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-        <property name="width_chars">-1</property>
-        <property name="single_line_mode">False</property>
-        <property name="angle">0</property>
-        <attributes>
-                <attribute name="style" value="PANGO_STYLE_ITALIC"/>
-              </attributes>
-      </object>
-      <packing>
-        <property name="left_attach">0</property>
-        <property name="top_attach">1</property>
-      </packing>
-          </child>
-
-          <child>
-
-      <object class="GtkLabel" id="vcodec_encoding_label">
-        <property name="visible">True</property>
-        <property name="can_focus">True</property>
-        <property name="label" translatable="yes">Unknown</property>
-        <property name="use_underline">False</property>
-        <property name="use_markup">False</property>
-        <property name="justify">GTK_JUSTIFY_LEFT</property>
-        <property name="wrap">False</property>
-        <property name="selectable">True</property>
-        <property name="xalign">0</property>
-        <property name="yalign">0.5</property>
-        <property name="xpad">0</property>
-        <property name="ypad">0</property>
-        <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-        <property name="width_chars">-1</property>
-        <property name="single_line_mode">False</property>
-        <property name="angle">0</property>
-      </object>
-      <packing>
-        <property name="left_attach">1</property>
-        <property name="top_attach">1</property>
-      </packing>
-          </child>
-
-          <child>
-      <object class="GtkLabel" id="vcodec2_label">
-        <property name="visible">True</property>
-        <property name="label" translatable="yes">Decoding Codec:</property>
-        <property name="use_underline">False</property>
-        <property name="use_markup">True</property>
-        <property name="justify">GTK_JUSTIFY_LEFT</property>
-        <property name="wrap">False</property>
-        <property name="selectable">False</property>
-        <property name="xalign">0</property>
-        <property name="yalign">0.5</property>
-        <property name="xpad">0</property>
-        <property name="ypad">0</property>
-        <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-        <property name="width_chars">-1</property>
-        <property name="single_line_mode">False</property>
-        <property name="angle">0</property>
-        <attributes>
-                <attribute name="style" value="PANGO_STYLE_ITALIC"/>
-              </attributes>
-      </object>
-      <packing>
-        <property name="left_attach">0</property>
-        <property name="top_attach">2</property>
-      </packing>
-          </child>
-
-          <child>
-
-      <object class="GtkLabel" id="vcodec_decoding_label">
-        <property name="visible">True</property>
-        <property name="can_focus">True</property>
-        <property name="label" translatable="yes">Unknown</property>
-        <property name="use_underline">False</property>
-        <property name="use_markup">False</property>
-        <property name="justify">GTK_JUSTIFY_LEFT</property>
-        <property name="wrap">False</property>
-        <property name="selectable">True</property>
-        <property name="xalign">0</property>
-        <property name="yalign">0.5</property>
-        <property name="xpad">0</property>
-        <property name="ypad">0</property>
-        <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-        <property name="width_chars">-1</property>
-        <property name="single_line_mode">False</property>
-        <property name="angle">0</property>
-      </object>
-      <packing>
-        <property name="left_attach">1</property>
-        <property name="top_attach">2</property>
-      </packing>
-          </child>
-
-          <child>
-      <object class="GtkLabel" id="vrc_label">
-        <property name="visible">True</property>
-        <property name="label" translatable="yes">Remote Candidate:</property>
-        <property name="use_underline">False</property>
-        <property name="use_markup">True</property>
-        <property name="justify">GTK_JUSTIFY_LEFT</property>
-        <property name="wrap">False</property>
-        <property name="selectable">False</property>
-        <property name="xalign">0</property>
-        <property name="yalign">0.5</property>
-        <property name="xpad">0</property>
-        <property name="ypad">0</property>
-        <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-        <property name="width_chars">-1</property>
-        <property name="single_line_mode">False</property>
-        <property name="angle">0</property>
-        <attributes>
-                <attribute name="style" value="PANGO_STYLE_ITALIC"/>
-              </attributes>
-      </object>
-      <packing>
-        <property name="left_attach">0</property>
-        <property name="top_attach">3</property>
-      </packing>
-          </child>
-
-          <child>
-      <object class="GtkLabel" id="video_remote_candidate_label">
-        <property name="visible">True</property>
-        <property name="can_focus">True</property>
-        <property name="label" translatable="yes">Unknown</property>
-        <property name="use_underline">False</property>
-        <property name="use_markup">False</property>
-        <property name="justify">GTK_JUSTIFY_LEFT</property>
-        <property name="wrap">False</property>
-        <property name="selectable">True</property>
-        <property name="xalign">0</property>
-        <property name="yalign">0.5</property>
-        <property name="xpad">0</property>
-        <property name="ypad">0</property>
-        <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-        <property name="width_chars">-1</property>
-        <property name="single_line_mode">False</property>
-        <property name="angle">0</property>
-      </object>
-      <packing>
-        <property name="left_attach">1</property>
-        <property name="top_attach">3</property>
-      </packing>
-          </child>
-
-          <child>
-            <object class="GtkImage" id="video_remote_candidate_info_img">
-              <property name="visible">True</property>
-              <property name="stock">gtk-info</property>
-              <property name="xalign">0</property>
-            </object>
-            <packing>
-              <property name="left_attach">2</property>
-              <property name="top_attach">3</property>
-            </packing>
-          </child>
-
-
-          <child>
-      <object class="GtkLabel" id="vlc_label">
-        <property name="visible">True</property>
-        <property name="label" translatable="yes">Local Candidate:</property>
-        <property name="use_underline">False</property>
-        <property name="use_markup">True</property>
-        <property name="justify">GTK_JUSTIFY_LEFT</property>
-        <property name="wrap">False</property>
-        <property name="selectable">False</property>
-        <property name="xalign">0</property>
-        <property name="yalign">0.5</property>
-        <property name="xpad">0</property>
-        <property name="ypad">0</property>
-        <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-        <property name="width_chars">-1</property>
-        <property name="single_line_mode">False</property>
-        <property name="angle">0</property>
-        <attributes>
-                <attribute name="style" value="PANGO_STYLE_ITALIC"/>
-              </attributes>
-      </object>
-      <packing>
-        <property name="left_attach">0</property>
-        <property name="top_attach">4</property>
-      </packing>
-          </child>
-
-          <child>
-      <object class="GtkLabel" id="video_local_candidate_label">
-        <property name="visible">True</property>
-        <property name="can_focus">True</property>
-        <property name="label" translatable="yes">Unknown</property>
-        <property name="use_underline">False</property>
-        <property name="use_markup">False</property>
-        <property name="justify">GTK_JUSTIFY_LEFT</property>
-        <property name="wrap">False</property>
-        <property name="selectable">True</property>
-        <property name="xalign">0</property>
-        <property name="yalign">0.5</property>
-        <property name="xpad">0</property>
-        <property name="ypad">0</property>
-        <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-        <property name="width_chars">-1</property>
-        <property name="single_line_mode">False</property>
-        <property name="angle">0</property>
-      </object>
-      <packing>
-        <property name="left_attach">1</property>
-        <property name="top_attach">4</property>
-      </packing>
-          </child>
-
-          <child>
-            <object class="GtkImage" id="video_local_candidate_info_img">
-              <property name="visible">True</property>
-              <property name="stock">gtk-info</property>
-              <property name="xalign">0</property>
-            </object>
-            <packing>
-              <property name="left_attach">2</property>
-              <property name="top_attach">4</property>
-            </packing>
-          </child>
-
-        </object>
-      </child>
-    </object>
-    <packing>
-      <property name="padding">0</property>
-      <property name="expand">True</property>
-      <property name="fill">True</property>
-    </packing>
-        </child>
-      </object>
-      <packing>
-        <property name="padding">0</property>
-        <property name="expand">True</property>
-        <property name="fill">True</property>
-      </packing>
-    </child>
-
-    <child>
-      <object class="GtkVBox" id="audio_vbox">
-        <property name="visible">True</property>
-        <property name="homogeneous">False</property>
-        <property name="spacing">6</property>
-        <property name="orientation">vertical</property>
-
-        <child>
-    <object class="GtkLabel" id="bvwp_audio_label">
-      <property name="visible">True</property>
-      <property name="label" translatable="yes">Audio</property>
-      <property name="use_underline">False</property>
-      <property name="use_markup">True</property>
-      <property name="justify">GTK_JUSTIFY_LEFT</property>
-      <property name="wrap">False</property>
-      <property name="selectable">False</property>
-      <property name="xalign">0</property>
-      <property name="yalign">0.5</property>
-      <property name="xpad">0</property>
-      <property name="ypad">0</property>
-      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-      <property name="width_chars">-1</property>
-      <property name="single_line_mode">False</property>
-      <property name="angle">0</property>
-      <attributes>
-        <attribute name="weight" value="bold"/>
-      </attributes>
-    </object>
-    <packing>
-      <property name="padding">0</property>
-      <property name="expand">True</property>
-      <property name="fill">True</property>
-    </packing>
-        </child>
-
-        <child>
-    <object class="GtkAlignment" id="alignment3">
-      <property name="visible">True</property>
-      <property name="xalign">0.5</property>
-      <property name="yalign">0.5</property>
-      <property name="xscale">1</property>
-      <property name="yscale">1</property>
-      <property name="top_padding">0</property>
-      <property name="bottom_padding">0</property>
-      <property name="left_padding">12</property>
-      <property name="right_padding">0</property>
-
-      <child>
-        <object class="GtkGrid" id="audio">
-          <property name="visible">True</property>
-          <property name="row_spacing">6</property>
-          <property name="column_spacing">12</property>
-
-          <child>
-      <object class="GtkLabel" id="acodec1_label">
-        <property name="visible">True</property>
-        <property name="label" translatable="yes">Encoding Codec:</property>
-        <property name="use_underline">False</property>
-        <property name="use_markup">True</property>
-        <property name="justify">GTK_JUSTIFY_LEFT</property>
-        <property name="wrap">False</property>
-        <property name="selectable">False</property>
-        <property name="xalign">0</property>
-        <property name="yalign">0.5</property>
-        <property name="xpad">0</property>
-        <property name="ypad">0</property>
-        <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-        <property name="width_chars">-1</property>
-        <property name="single_line_mode">False</property>
-        <property name="angle">0</property>
-        <attributes>
-                <attribute name="style" value="PANGO_STYLE_ITALIC"/>
-              </attributes>
-      </object>
-      <packing>
-        <property name="left_attach">0</property>
-        <property name="top_attach">0</property>
-      </packing>
-          </child>
-
-          <child>
-      <object class="GtkLabel" id="acodec_encoding_label">
-        <property name="visible">True</property>
-        <property name="can_focus">True</property>
-        <property name="label" translatable="yes">Unknown</property>
-        <property name="use_underline">False</property>
-        <property name="use_markup">False</property>
-        <property name="justify">GTK_JUSTIFY_LEFT</property>
-        <property name="wrap">False</property>
-        <property name="selectable">True</property>
-        <property name="xalign">0</property>
-        <property name="yalign">0.5</property>
-        <property name="xpad">0</property>
-        <property name="ypad">0</property>
-        <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-        <property name="width_chars">-1</property>
-        <property name="single_line_mode">False</property>
-        <property name="angle">0</property>
-      </object>
-      <packing>
-        <property name="left_attach">1</property>
-        <property name="top_attach">0</property>
-      </packing>
-          </child>
-
-          <child>
-      <object class="GtkLabel" id="acodec2_label">
-        <property name="visible">True</property>
-        <property name="label" translatable="yes">Decoding Codec:</property>
-        <property name="use_underline">False</property>
-        <property name="use_markup">True</property>
-        <property name="justify">GTK_JUSTIFY_LEFT</property>
-        <property name="wrap">False</property>
-        <property name="selectable">False</property>
-        <property name="xalign">0</property>
-        <property name="yalign">0.5</property>
-        <property name="xpad">0</property>
-        <property name="ypad">0</property>
-        <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-        <property name="width_chars">-1</property>
-        <property name="single_line_mode">False</property>
-        <property name="angle">0</property>
-        <attributes>
-                <attribute name="style" value="PANGO_STYLE_ITALIC"/>
-              </attributes>
-      </object>
-      <packing>
-        <property name="left_attach">0</property>
-        <property name="top_attach">1</property>
-      </packing>
-          </child>
-
-          <child>
-      <object class="GtkLabel" id="acodec_decoding_label">
-        <property name="visible">True</property>
-        <property name="can_focus">True</property>
-        <property name="label" translatable="yes">Unknown</property>
-        <property name="use_underline">False</property>
-        <property name="use_markup">False</property>
-        <property name="justify">GTK_JUSTIFY_LEFT</property>
-        <property name="wrap">False</property>
-        <property name="selectable">True</property>
-        <property name="xalign">0</property>
-        <property name="yalign">0.5</property>
-        <property name="xpad">0</property>
-        <property name="ypad">0</property>
-        <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-        <property name="width_chars">-1</property>
-        <property name="single_line_mode">False</property>
-        <property name="angle">0</property>
-      </object>
-      <packing>
-        <property name="left_attach">1</property>
-        <property name="top_attach">1</property>
-      </packing>
-          </child>
-
-          <child>
-      <object class="GtkLabel" id="arc_label">
-        <property name="visible">True</property>
-        <property name="label" translatable="yes">Remote Candidate:</property>
-        <property name="use_underline">False</property>
-        <property name="use_markup">True</property>
-        <property name="justify">GTK_JUSTIFY_LEFT</property>
-        <property name="wrap">False</property>
-        <property name="selectable">False</property>
-        <property name="xalign">0</property>
-        <property name="yalign">0.5</property>
-        <property name="xpad">0</property>
-        <property name="ypad">0</property>
-        <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-        <property name="width_chars">-1</property>
-        <property name="single_line_mode">False</property>
-        <property name="angle">0</property>
-        <attributes>
-                <attribute name="style" value="PANGO_STYLE_ITALIC"/>
-              </attributes>
-      </object>
-      <packing>
-        <property name="left_attach">0</property>
-        <property name="top_attach">2</property>
-      </packing>
-          </child>
-
-          <child>
-      <object class="GtkLabel" id="audio_remote_candidate_label">
-        <property name="visible">True</property>
-        <property name="can_focus">True</property>
-        <property name="label" translatable="yes">Unknown</property>
-        <property name="use_underline">False</property>
-        <property name="use_markup">False</property>
-        <property name="justify">GTK_JUSTIFY_LEFT</property>
-        <property name="wrap">False</property>
-        <property name="selectable">True</property>
-        <property name="xalign">0</property>
-        <property name="yalign">0.5</property>
-        <property name="xpad">0</property>
-        <property name="ypad">0</property>
-        <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-        <property name="width_chars">-1</property>
-        <property name="single_line_mode">False</property>
-        <property name="angle">0</property>
-      </object>
-      <packing>
-        <property name="left_attach">1</property>
-        <property name="top_attach">2</property>
-      </packing>
-          </child>
-
-          <child>
-            <object class="GtkImage" id="audio_remote_candidate_info_img">
-              <property name="visible">True</property>
-              <property name="stock">gtk-info</property>
-              <property name="xalign">0</property>
-            </object>
-            <packing>
-              <property name="left_attach">2</property>
-              <property name="top_attach">2</property>
-            </packing>
-          </child>
-
-          <child>
-      <object class="GtkLabel" id="alc_label">
-        <property name="visible">True</property>
-        <property name="label" translatable="yes">Local Candidate:</property>
-        <property name="use_underline">False</property>
-        <property name="use_markup">True</property>
-        <property name="justify">GTK_JUSTIFY_LEFT</property>
-        <property name="wrap">False</property>
-        <property name="selectable">False</property>
-        <property name="xalign">0</property>
-        <property name="yalign">0.5</property>
-        <property name="xpad">0</property>
-        <property name="ypad">0</property>
-        <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-        <property name="width_chars">-1</property>
-        <property name="single_line_mode">False</property>
-        <property name="angle">0</property>
-        <attributes>
-                <attribute name="style" value="PANGO_STYLE_ITALIC"/>
-              </attributes>
-      </object>
-      <packing>
-        <property name="left_attach">0</property>
-        <property name="top_attach">3</property>
-      </packing>
-          </child>
-
-          <child>
-      <object class="GtkLabel" id="audio_local_candidate_label">
-        <property name="visible">True</property>
-        <property name="can_focus">True</property>
-        <property name="label" translatable="yes">Unknown</property>
-        <property name="use_underline">False</property>
-        <property name="use_markup">False</property>
-        <property name="justify">GTK_JUSTIFY_LEFT</property>
-        <property name="wrap">False</property>
-        <property name="selectable">True</property>
-        <property name="xalign">0</property>
-        <property name="yalign">0.5</property>
-        <property name="xpad">0</property>
-        <property name="ypad">0</property>
-        <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-        <property name="width_chars">-1</property>
-        <property name="single_line_mode">False</property>
-        <property name="angle">0</property>
-      </object>
-      <packing>
-        <property name="left_attach">1</property>
-        <property name="top_attach">3</property>
-      </packing>
-          </child>
-
-          <child>
-            <object class="GtkImage" id="audio_local_candidate_info_img">
-              <property name="visible">True</property>
-              <property name="stock">gtk-info</property>
-              <property name="xalign">0</property>
-            </object>
-            <packing>
-              <property name="left_attach">2</property>
-              <property name="top_attach">3</property>
-            </packing>
-          </child>
-
-        </object>
-      </child>
-    </object>
-    <packing>
-      <property name="padding">0</property>
-      <property name="expand">True</property>
-      <property name="fill">True</property>
-    </packing>
-        </child>
-      </object>
-      <packing>
-        <property name="padding">0</property>
-        <property name="expand">True</property>
-        <property name="fill">True</property>
-      </packing>
-    </child>
-  </object>
-
-</interface>
diff --git a/src/empathy-video-widget.c b/src/empathy-video-widget.c
deleted file mode 100644 (file)
index 43ea212..0000000
+++ /dev/null
@@ -1,512 +0,0 @@
-/*
- * empathy-gst-gtk-widget.c - Source for EmpathyVideoWidget
- * Copyright (C) 2008 Collabora Ltd.
- * @author Sjoerd Simons <sjoerd.simons@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 <stdio.h>
-#include <stdlib.h>
-
-#include <gdk/gdkx.h>
-#include <gst/interfaces/xoverlay.h>
-#include <farstream/fs-element-added-notifier.h>
-
-#include "empathy-video-widget.h"
-
-G_DEFINE_TYPE(EmpathyVideoWidget, empathy_video_widget,
-  GTK_TYPE_DRAWING_AREA)
-
-static void empathy_video_widget_element_added_cb (
-  FsElementAddedNotifier *notifier, GstBin *bin, GstElement *element,
-  EmpathyVideoWidget *self);
-
-static void empathy_video_widget_sync_message_cb (
-  GstBus *bus, GstMessage *message, EmpathyVideoWidget *self);
-
-/* signal enum */
-#if 0
-enum
-{
-    LAST_SIGNAL
-};
-
-static guint signals[LAST_SIGNAL] = {0};
-#endif
-
-enum {
-  PROP_GST_ELEMENT = 1,
-  PROP_GST_BUS,
-  PROP_MIN_WIDTH,
-  PROP_MIN_HEIGHT,
-  PROP_SYNC,
-  PROP_ASYNC,
-  PROP_FLIP_VIDEO,
-};
-
-/* private structure */
-typedef struct _EmpathyVideoWidgetPriv EmpathyVideoWidgetPriv;
-
-struct _EmpathyVideoWidgetPriv
-{
-  gboolean dispose_has_run;
-  GstBus *bus;
-  GstElement *videosink;
-  GstPad *sink_pad;
-  GstElement *overlay;
-  GstElement *flip;
-  FsElementAddedNotifier *notifier;
-  gint min_width;
-  gint min_height;
-  gboolean sync;
-  gboolean async;
-  gboolean flip_video;
-  guintptr xid;
-
-  GMutex *lock;
-};
-
-#define GET_PRIV(o)     (G_TYPE_INSTANCE_GET_PRIVATE ((o), \
-  EMPATHY_TYPE_VIDEO_WIDGET, EmpathyVideoWidgetPriv))
-
-static void
-empathy_video_widget_init (EmpathyVideoWidget *obj)
-{
-  EmpathyVideoWidgetPriv *priv = GET_PRIV (obj);
-  GdkRGBA black;
-
-  priv->lock = g_mutex_new ();
-
-  priv->notifier = fs_element_added_notifier_new ();
-  g_signal_connect (priv->notifier, "element-added",
-    G_CALLBACK (empathy_video_widget_element_added_cb),
-    obj);
-
-  if (gdk_rgba_parse (&black, "Black"))
-    gtk_widget_override_background_color (GTK_WIDGET (obj), 0, &black);
-
-  gtk_widget_set_double_buffered (GTK_WIDGET (obj), FALSE);
-}
-
-static void
-empathy_video_widget_realized (GtkWidget *widget, gpointer user_data)
-{
-  EmpathyVideoWidgetPriv *priv = GET_PRIV (widget);
-
-  /* requesting the XID forces the GdkWindow to be native in GTK+ 2.18
-   * onwards, requesting the native window in a thread causes a BadWindowID,
-   * so we need to request it now. We could call gdk_window_ensure_native(),
-   * but that would mean we require GTK+ 2.18, so instead we call this */
-  priv->xid = GDK_WINDOW_XID (gtk_widget_get_window (GTK_WIDGET (widget)));
-}
-
-static void
-empathy_video_widget_constructed (GObject *object)
-{
-  EmpathyVideoWidgetPriv *priv = GET_PRIV (object);
-  GstElement *colorspace, *videoscale, *sink;
-  GstPad *pad;
-
-  g_signal_connect (object, "realize",
-      G_CALLBACK (empathy_video_widget_realized), NULL);
-
-  priv->videosink = gst_bin_new (NULL);
-
-  gst_object_ref_sink (priv->videosink);
-
-  sink = gst_element_factory_make ("gconfvideosink", NULL);
-  g_assert (sink != NULL);
-
-  videoscale = gst_element_factory_make ("videoscale", NULL);
-  g_assert (videoscale != NULL);
-
-  g_object_set (videoscale, "qos", FALSE, NULL);
-
-  colorspace = gst_element_factory_make ("ffmpegcolorspace", NULL);
-  g_assert (colorspace != NULL);
-
-  g_object_set (colorspace, "qos", FALSE, NULL);
-
-  priv->flip = gst_element_factory_make ("videoflip", NULL);
-  g_assert (priv->flip != NULL);
-
-  gst_bin_add_many (GST_BIN (priv->videosink), colorspace, videoscale,
-    priv->flip, sink, NULL);
-
-  if (!gst_element_link (colorspace, videoscale))
-    g_error ("Failed to link ffmpegcolorspace and videoscale");
-
-  if (!gst_element_link (videoscale, priv->flip))
-    g_error ("Failed to link videoscale and videoflip");
-
-  if (!gst_element_link (priv->flip, sink))
-    g_error ("Failed to link videoflip and gconfvideosink");
-
-  pad = gst_element_get_static_pad (colorspace, "sink");
-  g_assert (pad != NULL);
-
-  priv->sink_pad = gst_ghost_pad_new ("sink", pad);
-  if (!gst_element_add_pad  (priv->videosink, priv->sink_pad))
-    g_error ("Couldn't add sink ghostpad to the bin");
-
-  gst_object_unref (pad);
-
-  fs_element_added_notifier_add (priv->notifier, GST_BIN (priv->videosink));
-  gst_bus_enable_sync_message_emission (priv->bus);
-
-  g_signal_connect (priv->bus, "sync-message",
-    G_CALLBACK (empathy_video_widget_sync_message_cb), object);
-
-  gtk_widget_set_size_request (GTK_WIDGET (object), priv->min_width,
-    priv->min_height);
-}
-
-static void empathy_video_widget_dispose (GObject *object);
-static void empathy_video_widget_finalize (GObject *object);
-
-
-static gboolean empathy_video_widget_draw (GtkWidget *widget,
-  cairo_t *cr);
-
-static void
-empathy_video_widget_element_set_sink_properties (EmpathyVideoWidget *self);
-
-static void
-empathy_video_widget_set_property (GObject *object,
-  guint property_id, const GValue *value, GParamSpec *pspec)
-{
-  EmpathyVideoWidgetPriv *priv = GET_PRIV (object);
-
-  switch (property_id)
-    {
-      case PROP_GST_BUS:
-        priv->bus = g_value_dup_object (value);
-        break;
-      case PROP_MIN_WIDTH:
-        priv->min_width = g_value_get_int (value);
-        break;
-      case PROP_MIN_HEIGHT:
-        priv->min_height = g_value_get_int (value);
-        break;
-      case PROP_SYNC:
-        priv->sync = g_value_get_boolean (value);
-        empathy_video_widget_element_set_sink_properties (
-          EMPATHY_VIDEO_WIDGET (object));
-        break;
-      case PROP_ASYNC:
-        priv->async = g_value_get_boolean (value);
-        empathy_video_widget_element_set_sink_properties (
-          EMPATHY_VIDEO_WIDGET (object));
-        break;
-      case PROP_FLIP_VIDEO:
-        priv->flip_video = g_value_get_boolean (value);
-        gst_util_set_object_arg (G_OBJECT (priv->flip), "method",
-            priv->flip_video ? "horizontal-flip" : "none");
-        break;
-      default:
-        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
-    }
-}
-
-static void
-empathy_video_widget_get_property (GObject *object,
-  guint property_id, GValue *value, GParamSpec *pspec)
-{
-  EmpathyVideoWidgetPriv *priv = GET_PRIV (object);
-
-  switch (property_id)
-    {
-      case PROP_GST_ELEMENT:
-        g_value_set_object (value, priv->videosink);
-        break;
-      case PROP_GST_BUS:
-        g_value_set_object (value, priv->bus);
-        break;
-      case PROP_MIN_WIDTH:
-        g_value_set_int (value, priv->min_width);
-        break;
-      case PROP_MIN_HEIGHT:
-        g_value_set_int (value, priv->min_height);
-        break;
-      case PROP_SYNC:
-        g_value_set_boolean (value, priv->sync);
-        break;
-      case PROP_ASYNC:
-        g_value_set_boolean (value, priv->async);
-        break;
-      case PROP_FLIP_VIDEO:
-        g_value_set_boolean (value, priv->flip_video);
-        break;
-      default:
-        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
-    }
-}
-
-
-static void
-empathy_video_widget_class_init (
-  EmpathyVideoWidgetClass *empathy_video_widget_class)
-{
-  GObjectClass *object_class = G_OBJECT_CLASS (empathy_video_widget_class);
-  GtkWidgetClass *widget_class =
-    GTK_WIDGET_CLASS (empathy_video_widget_class);
-  GParamSpec *param_spec;
-
-  g_type_class_add_private (empathy_video_widget_class,
-    sizeof (EmpathyVideoWidgetPriv));
-
-  object_class->dispose = empathy_video_widget_dispose;
-  object_class->finalize = empathy_video_widget_finalize;
-  object_class->constructed = empathy_video_widget_constructed;
-
-  object_class->set_property = empathy_video_widget_set_property;
-  object_class->get_property = empathy_video_widget_get_property;
-
-  widget_class->draw = empathy_video_widget_draw;
-
-  param_spec = g_param_spec_object ("gst-element",
-    "gst-element", "The underlaying gstreamer element",
-    GST_TYPE_ELEMENT,
-    G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
-  g_object_class_install_property (object_class, PROP_GST_ELEMENT, param_spec);
-
-  param_spec = g_param_spec_object ("gst-bus",
-    "gst-bus",
-    "The toplevel bus from the pipeline in which this bin will be added",
-    GST_TYPE_BUS,
-    G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
-  g_object_class_install_property (object_class, PROP_GST_BUS, param_spec);
-
-  param_spec = g_param_spec_int ("min-width",
-    "min-width",
-    "Minimal width of the widget",
-    0, G_MAXINT, EMPATHY_VIDEO_WIDGET_DEFAULT_WIDTH,
-    G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
-  g_object_class_install_property (object_class, PROP_MIN_WIDTH, param_spec);
-
-  param_spec = g_param_spec_int ("min-height",
-    "min-height",
-    "Minimal height of the widget",
-    0, G_MAXINT, EMPATHY_VIDEO_WIDGET_DEFAULT_HEIGHT,
-    G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
-  g_object_class_install_property (object_class, PROP_MIN_HEIGHT, param_spec);
-
-  param_spec = g_param_spec_boolean ("sync",
-    "sync",
-    "Whether the underlying sink should be sync or not",
-    TRUE,
-    G_PARAM_CONSTRUCT | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
-  g_object_class_install_property (object_class, PROP_SYNC, param_spec);
-
-  param_spec = g_param_spec_boolean ("async",
-    "async",
-    "Whether the underlying sink should be async or not",
-    TRUE,
-    G_PARAM_CONSTRUCT | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
-  g_object_class_install_property (object_class, PROP_ASYNC, param_spec);
-
-  param_spec = g_param_spec_boolean ("flip-video",
-    "flip video",
-    "Whether the video should be flipped horizontally or not",
-    FALSE,
-    G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
-  g_object_class_install_property (object_class, PROP_FLIP_VIDEO, param_spec);
-}
-
-void
-empathy_video_widget_dispose (GObject *object)
-{
-  EmpathyVideoWidget *self = EMPATHY_VIDEO_WIDGET (object);
-  EmpathyVideoWidgetPriv *priv = GET_PRIV (self);
-
-  if (priv->dispose_has_run)
-    return;
-
-  priv->dispose_has_run = TRUE;
-
-  g_signal_handlers_disconnect_by_func (priv->bus,
-    empathy_video_widget_sync_message_cb, object);
-
-  if (priv->bus != NULL)
-    g_object_unref (priv->bus);
-
-  priv->bus = NULL;
-
-  if (priv->videosink != NULL)
-    g_object_unref (priv->videosink);
-
-  priv->videosink = NULL;
-
-
-  /* release any references held by the object here */
-
-  if (G_OBJECT_CLASS (empathy_video_widget_parent_class)->dispose)
-    G_OBJECT_CLASS (empathy_video_widget_parent_class)->dispose (object);
-}
-
-void
-empathy_video_widget_finalize (GObject *object)
-{
-  EmpathyVideoWidget *self = EMPATHY_VIDEO_WIDGET (object);
-  EmpathyVideoWidgetPriv *priv = GET_PRIV (self);
-
-  /* free any data held directly by the object here */
-  g_mutex_free (priv->lock);
-
-  G_OBJECT_CLASS (empathy_video_widget_parent_class)->finalize (object);
-}
-
-
-static void
-empathy_video_widget_element_set_sink_properties_unlocked (
-  EmpathyVideoWidget *self)
-{
-  EmpathyVideoWidgetPriv *priv = GET_PRIV (self);
-
-  if (priv->overlay == NULL)
-    return;
-
-  if (g_object_class_find_property (G_OBJECT_GET_CLASS (priv->overlay),
-      "force-aspect-ratio"))
-    g_object_set (G_OBJECT (priv->overlay), "force-aspect-ratio", TRUE, NULL);
-
-  if (g_object_class_find_property (
-      G_OBJECT_GET_CLASS (priv->overlay), "sync"))
-    g_object_set (G_OBJECT (priv->overlay), "sync", priv->sync, NULL);
-
-  if (g_object_class_find_property (G_OBJECT_GET_CLASS (priv->overlay),
-      "async"))
-    g_object_set (G_OBJECT (priv->overlay), "async", priv->async, NULL);
-}
-
-static void
-empathy_video_widget_element_set_sink_properties (EmpathyVideoWidget *self)
-{
-  EmpathyVideoWidgetPriv *priv = GET_PRIV (self);
-
-  g_mutex_lock (priv->lock);
-  empathy_video_widget_element_set_sink_properties_unlocked (self);
-  g_mutex_unlock (priv->lock);
-}
-
-static void
-empathy_video_widget_element_added_cb (FsElementAddedNotifier *notifier,
-  GstBin *bin, GstElement *element, EmpathyVideoWidget *self)
-{
-  EmpathyVideoWidgetPriv *priv = GET_PRIV (self);
-
-  /* We assume the overlay is the sink */
-  g_mutex_lock (priv->lock);
-  if (priv->overlay == NULL && GST_IS_X_OVERLAY (element))
-    {
-      priv->overlay = element;
-      g_object_add_weak_pointer (G_OBJECT (element),
-        (gpointer) &priv->overlay);
-      empathy_video_widget_element_set_sink_properties_unlocked (self);
-      gst_x_overlay_expose (GST_X_OVERLAY (priv->overlay));
-    }
-  g_mutex_unlock (priv->lock);
-}
-
-static void
-empathy_video_widget_sync_message_cb (GstBus *bus, GstMessage *message,
-  EmpathyVideoWidget *self)
-{
-  EmpathyVideoWidgetPriv *priv = GET_PRIV (self);
-  const GstStructure *s;
-
-  if (GST_MESSAGE_TYPE (message) != GST_MESSAGE_ELEMENT)
-    return;
-
-  if (GST_MESSAGE_SRC (message) != (GstObject *) priv->overlay)
-    return;
-
-  s = gst_message_get_structure (message);
-
-  if (gst_structure_has_name (s, "prepare-xwindow-id"))
-    {
-      g_assert (priv->xid != 0);
-      gst_x_overlay_set_window_handle (GST_X_OVERLAY (priv->overlay),
-          priv->xid);
-    }
-}
-
-static gboolean
-empathy_video_widget_draw (GtkWidget *widget,
-    cairo_t *cr)
-{
-  EmpathyVideoWidget *self = EMPATHY_VIDEO_WIDGET (widget);
-  EmpathyVideoWidgetPriv *priv = GET_PRIV (self);
-  GtkAllocation allocation;
-
-  if (priv->overlay == NULL)
-    {
-      gtk_widget_get_allocation (widget, &allocation);
-
-      gtk_render_frame (gtk_widget_get_style_context (widget), cr,
-          0, 0,
-          gtk_widget_get_allocated_width (widget),
-          gtk_widget_get_allocated_height (widget));
-      return TRUE;
-    }
-
-  gst_x_overlay_set_xwindow_id (GST_X_OVERLAY (priv->overlay),
-    GDK_WINDOW_XID (gtk_widget_get_window (widget)));
-
-  gst_x_overlay_expose (GST_X_OVERLAY (priv->overlay));
-
-  return TRUE;
-}
-
-GtkWidget *
-empathy_video_widget_new_with_size (GstBus *bus, gint width, gint height)
-{
-  g_return_val_if_fail (bus != NULL, NULL);
-
-  return GTK_WIDGET (g_object_new (EMPATHY_TYPE_VIDEO_WIDGET,
-    "gst-bus", bus,
-    "min-width", width,
-    "min-height", height,
-    NULL));
-}
-
-GtkWidget *
-empathy_video_widget_new (GstBus *bus)
-{
-  g_return_val_if_fail (bus != NULL, NULL);
-
-  return GTK_WIDGET (g_object_new (EMPATHY_TYPE_VIDEO_WIDGET,
-    "gst-bus", bus,
-    NULL));
-}
-
-GstPad *
-empathy_video_widget_get_sink (EmpathyVideoWidget *widget)
-{
-  EmpathyVideoWidgetPriv *priv = GET_PRIV (widget);
-
-  return priv->sink_pad;
-}
-
-GstElement *
-empathy_video_widget_get_element (EmpathyVideoWidget *widget)
-{
-  EmpathyVideoWidgetPriv *priv = GET_PRIV (widget);
-
-  return priv->videosink;
-}
diff --git a/src/empathy-video-widget.h b/src/empathy-video-widget.h
deleted file mode 100644 (file)
index cfdd035..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * empathy-gst-gtk-widget.h - Header for EmpathyVideoWidget
- * Copyright (C) 2008 Collabora Ltd.
- * @author Sjoerd Simons <sjoerd.simons@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_VIDEO_WIDGET_H__
-#define __EMPATHY_VIDEO_WIDGET_H__
-
-#define EMPATHY_VIDEO_WIDGET_DEFAULT_WIDTH 320
-#define EMPATHY_VIDEO_WIDGET_DEFAULT_HEIGHT 240
-
-#include <glib-object.h>
-#include <gst/gst.h>
-#include <gtk/gtk.h>
-
-G_BEGIN_DECLS
-
-typedef struct _EmpathyVideoWidget EmpathyVideoWidget;
-typedef struct _EmpathyVideoWidgetClass EmpathyVideoWidgetClass;
-
-struct _EmpathyVideoWidgetClass {
-    GtkDrawingAreaClass parent_class;
-};
-
-struct _EmpathyVideoWidget {
-    GtkDrawingArea parent;
-};
-
-GType empathy_video_widget_get_type (void);
-
-/* TYPE MACROS */
-#define EMPATHY_TYPE_VIDEO_WIDGET \
-  (empathy_video_widget_get_type ())
-#define EMPATHY_VIDEO_WIDGET(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj), EMPATHY_TYPE_VIDEO_WIDGET, \
-    EmpathyVideoWidget))
-#define EMPATHY_VIDEO_WIDGET_CLASS(klass) \
-  (G_TYPE_CHECK_CLASS_CAST((klass), EMPATHY_TYPE_VIDEO_WIDGET, \
-  EmpathyVideoWidgetClass))
-#define EMPATHY_IS_VIDEO_WIDGET(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj), EMPATHY_TYPE_VIDEO_WIDGET))
-#define EMPATHY_IS_VIDEO_WIDGET_CLASS(klass) \
-  (G_TYPE_CHECK_CLASS_TYPE((klass), EMPATHY_TYPE_VIDEO_WIDGET))
-#define EMPATHY_VIDEO_WIDGET_GET_CLASS(obj) \
-  (G_TYPE_INSTANCE_GET_CLASS ((obj), EMPATHY_TYPE_VIDEO_WIDGET, \
-  EmpathyVideoWidgetClass))
-
-GtkWidget *empathy_video_widget_new (GstBus *bus);
-GtkWidget *empathy_video_widget_new_with_size (GstBus *bus,
-  gint width, gint height);
-
-GstElement *empathy_video_widget_get_element (EmpathyVideoWidget *widget);
-GstPad *empathy_video_widget_get_sink (EmpathyVideoWidget *widget);
-
-G_END_DECLS
-
-#endif /* #ifndef __EMPATHY_VIDEO_WIDGET_H__*/
index b06b595e6af7b31ce7eb6a72a348a4131fcbd740..548a5e79f3c750b0073f54252c221828f868c2b1 100644 (file)
@@ -52,7 +52,6 @@
 #include <libempathy/empathy-utils.h>
 #include <libempathy/empathy-chatroom-manager.h>
 #include <libempathy/empathy-account-settings.h>
-#include <libempathy/empathy-connectivity.h>
 #include <libempathy/empathy-connection-managers.h>
 #include <libempathy/empathy-request-util.h>
 #include <libempathy/empathy-ft-factory.h>
@@ -119,7 +118,6 @@ struct _EmpathyApp
   EmpathyChatroomManager *chatroom_manager;
   EmpathyFTFactory  *ft_factory;
   EmpathyPresenceManager *presence_mgr;
-  EmpathyConnectivity *connectivity;
   GSettings *gsettings;
   EmpathyNotificationsApprover *notifications_approver;
   EmpathyConnectionAggregator *conn_aggregator;
@@ -157,7 +155,6 @@ empathy_app_dispose (GObject *object)
 #endif
 
   tp_clear_object (&self->presence_mgr);
-  tp_clear_object (&self->connectivity);
   tp_clear_object (&self->icon);
   tp_clear_object (&self->account_manager);
   tp_clear_object (&self->log_manager);
@@ -442,6 +439,7 @@ empathy_app_local_command_line (GApplication *app,
 
   /* We create a group so that GOptionArgFuncs get the user data */
   group = g_option_group_new ("empathy", NULL, NULL, app, NULL);
+  g_option_group_set_translation_domain (group, GETTEXT_PACKAGE);
   g_option_group_add_entries (group, options);
 
   optcontext = g_option_context_new (N_("- Empathy IM Client"));
@@ -514,17 +512,6 @@ empathy_app_init (EmpathyApp *self)
 {
 }
 
-static void
-use_conn_notify_cb (GSettings *gsettings,
-    const gchar *key,
-    gpointer     user_data)
-{
-  EmpathyConnectivity *connectivity = user_data;
-
-  empathy_connectivity_set_use_conn (connectivity,
-      g_settings_get_boolean (gsettings, key));
-}
-
 static void
 migrate_config_to_xdg_dir (void)
 {
@@ -748,10 +735,10 @@ empathy_app_constructed (GObject *object)
   EmpathyApp *self = (EmpathyApp *) object;
   gboolean chatroom_manager_ready;
 
+  textdomain (GETTEXT_PACKAGE);
   g_set_application_name (_(PACKAGE_NAME));
 
   gtk_window_set_default_icon_name ("empathy");
-  textdomain (GETTEXT_PACKAGE);
 
 #ifdef ENABLE_DEBUG
   /* Set up debug sender */
@@ -766,14 +753,6 @@ empathy_app_constructed (GObject *object)
 
   self->gsettings = g_settings_new (EMPATHY_PREFS_SCHEMA);
 
-  /* Setting up Connectivity */
-  self->connectivity = empathy_connectivity_dup_singleton ();
-  use_conn_notify_cb (self->gsettings, EMPATHY_PREFS_USE_CONN,
-      self->connectivity);
-  g_signal_connect (self->gsettings,
-      "changed::" EMPATHY_PREFS_USE_CONN,
-      G_CALLBACK (use_conn_notify_cb), self->connectivity);
-
   /* account management */
   self->account_manager = tp_account_manager_dup ();
   tp_proxy_prepare_async (self->account_manager, NULL,
@@ -837,7 +816,6 @@ main (int argc, char *argv[])
   EmpathyApp *app;
   gint retval;
 
-  g_thread_init (NULL);
   g_type_init ();
 
 #ifdef HAVE_LIBCHAMPLAIN
diff --git a/src/ev-sidebar.c b/src/ev-sidebar.c
deleted file mode 100644 (file)
index a9eca76..0000000
+++ /dev/null
@@ -1,351 +0,0 @@
-/* this file is part of evince, a gnome document viewer
- *
- *  Copyright (C) 2004 Red Hat, Inc.
- *            (C) 2007 Jan Arne Petersen
- *
- *  Authors:
- *    Jonathan Blandford <jrb@alum.mit.edu>
- *    Jan Arne Petersen <jpetersen@jpetersen.org>
- *
- * Evince 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.
- *
- * Evince is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02110-1301  USA.
- *
- * Thursday 03 May 2007: Bastien Nocera: Add exception clause.
- * See license_change file for details.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <string.h>
-#include <gtk/gtk.h>
-#include <gdk/gdkkeysyms.h>
-
-#include "ev-sidebar.h"
-
-enum
-{
-       PAGE_COLUMN_ID,
-       PAGE_COLUMN_TITLE,
-       PAGE_COLUMN_NUM_COLS
-};
-
-struct _EvSidebarPrivate {
-       GtkWidget *combobox;
-       GtkWidget *notebook;
-};
-
-enum {
-       CLOSED,
-       CHANGED,
-       LAST_SIGNAL
-};
-
-static int ev_sidebar_table_signals[LAST_SIGNAL] = { 0 };
-
-G_DEFINE_TYPE (EvSidebar, ev_sidebar, GTK_TYPE_VBOX)
-
-#define EV_SIDEBAR_GET_PRIVATE(object) \
-               (G_TYPE_INSTANCE_GET_PRIVATE ((object), EV_TYPE_SIDEBAR, EvSidebarPrivate))
-
-static void
-ev_sidebar_class_init (EvSidebarClass *ev_sidebar_class)
-{
-       GObjectClass *g_object_class;
-       g_object_class = G_OBJECT_CLASS (ev_sidebar_class);
-          
-       g_type_class_add_private (g_object_class, sizeof (EvSidebarPrivate));
-
-       ev_sidebar_table_signals[CLOSED] =
-               g_signal_new ("closed",
-                               G_TYPE_FROM_CLASS (g_object_class),
-                               G_SIGNAL_RUN_LAST,
-                               G_STRUCT_OFFSET (EvSidebarClass, closed),
-                               NULL, NULL,
-                               g_cclosure_marshal_generic,
-                               G_TYPE_NONE, 0);
-
-       ev_sidebar_table_signals[CHANGED] =
-               g_signal_new ("changed",
-                               G_TYPE_FROM_CLASS (g_object_class),
-                               G_SIGNAL_RUN_LAST,
-                               G_STRUCT_OFFSET (EvSidebarClass, closed),
-                               NULL, NULL,
-                               g_cclosure_marshal_generic,
-                               G_TYPE_NONE, 1, G_TYPE_STRING);
-
-}
-
-static void
-ev_sidebar_close_clicked_cb (GtkWidget *widget,
-                            gpointer   user_data)
-{
-       EvSidebar *ev_sidebar = EV_SIDEBAR (user_data);
-
-       g_signal_emit (G_OBJECT (ev_sidebar),
-                       ev_sidebar_table_signals[CLOSED], 0, NULL);
-       gtk_widget_hide (GTK_WIDGET (ev_sidebar));
-}
-
-static void
-ev_sidebar_combobox_changed_cb (GtkComboBox *combo_box,
-                               gpointer   user_data)
-{
-       EvSidebar *ev_sidebar = EV_SIDEBAR (user_data);
-       GtkTreeModel *model;
-       GtkTreeIter iter;
-
-       model = gtk_combo_box_get_model (combo_box);
-
-       if (gtk_combo_box_get_active_iter (combo_box, &iter)) {
-               GtkTreePath *path;
-               gint *indices;
-
-               path = gtk_tree_model_get_path (model, &iter);
-               indices = gtk_tree_path_get_indices (path);
-
-               if (indices != NULL) {
-                       gchar *page;
-
-                       gtk_notebook_set_current_page (GTK_NOTEBOOK (ev_sidebar->priv->notebook), indices[0]);
-                       gtk_tree_model_get (model, &iter, PAGE_COLUMN_ID, &page, -1);
-                       g_signal_emit (G_OBJECT (ev_sidebar), ev_sidebar_table_signals[CHANGED], 0, page);
-                       g_free (page);
-               }
-
-               gtk_tree_path_free (path);
-       }
-
-}
-
-static void
-ev_sidebar_init (EvSidebar *ev_sidebar)
-{
-       GtkTreeModel *page_model;
-       GtkWidget *vbox, *hbox;
-       GtkWidget *close_button;
-       GtkCellRenderer *renderer;
-       GtkWidget *image;
-
-       ev_sidebar->priv = EV_SIDEBAR_GET_PRIVATE (ev_sidebar);
-
-       /* data model */
-       page_model = (GtkTreeModel *)
-                       gtk_list_store_new (PAGE_COLUMN_NUM_COLS,
-                                           G_TYPE_STRING,
-                                           G_TYPE_STRING,
-                                           GTK_TYPE_WIDGET,
-                                           G_TYPE_INT);
-
-       /* create a 6 6 6 0 border with GtkBoxes */
-       hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
-       gtk_box_pack_start (GTK_BOX (ev_sidebar), hbox, TRUE, TRUE, 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_box_new (GTK_ORIENTATION_VERTICAL, 0), FALSE, FALSE, 0);
-
-       /* top option menu */
-       hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
-       gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
-       gtk_widget_show (hbox);
-
-       ev_sidebar->priv->combobox = gtk_combo_box_new_with_model (page_model);
-       g_signal_connect (ev_sidebar->priv->combobox, "changed",
-                         G_CALLBACK (ev_sidebar_combobox_changed_cb),
-                         ev_sidebar);
-
-       renderer = gtk_cell_renderer_text_new ();
-       gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (ev_sidebar->priv->combobox), renderer, TRUE);
-       gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (ev_sidebar->priv->combobox), renderer, "text", PAGE_COLUMN_TITLE);
-
-       gtk_box_pack_start (GTK_BOX (hbox), ev_sidebar->priv->combobox, TRUE, TRUE, 0);
-       gtk_widget_show (ev_sidebar->priv->combobox);
-
-       g_object_unref (G_OBJECT (page_model));
-
-       close_button = gtk_button_new ();
-       gtk_button_set_relief (GTK_BUTTON (close_button), GTK_RELIEF_NONE);
-       g_signal_connect (close_button, "clicked",
-                         G_CALLBACK (ev_sidebar_close_clicked_cb),
-                         ev_sidebar);
-
-       image = gtk_image_new_from_stock (GTK_STOCK_CLOSE,
-                                         GTK_ICON_SIZE_MENU);
-       gtk_container_add (GTK_CONTAINER (close_button), image);
-       gtk_widget_show (image);
-   
-       gtk_box_pack_end (GTK_BOX (hbox), close_button, FALSE, FALSE, 0);
-       gtk_widget_show (close_button);
-   
-       ev_sidebar->priv->notebook = gtk_notebook_new ();
-       gtk_notebook_set_show_border (GTK_NOTEBOOK (ev_sidebar->priv->notebook), FALSE);
-       gtk_notebook_set_show_tabs (GTK_NOTEBOOK (ev_sidebar->priv->notebook), FALSE);
-       gtk_box_pack_start (GTK_BOX (vbox), ev_sidebar->priv->notebook,
-                           TRUE, TRUE, 0);
-       gtk_widget_show (ev_sidebar->priv->notebook);
-}
-
-/* Public functions */
-
-GtkWidget *
-ev_sidebar_new (void)
-{
-       GtkWidget *ev_sidebar;
-
-       ev_sidebar = g_object_new (EV_TYPE_SIDEBAR, NULL);
-
-       return ev_sidebar;
-}
-
-/* NOTE: Return values from this have to be g_free()d */
-char *
-ev_sidebar_get_current_page (EvSidebar *ev_sidebar)
-{
-       GtkTreeModel *model;
-       GtkTreeIter iter;
-       char *id;
-
-       g_return_val_if_fail (EV_IS_SIDEBAR (ev_sidebar), NULL);
-       g_return_val_if_fail (ev_sidebar->priv != NULL, NULL);
-
-       model = gtk_combo_box_get_model (GTK_COMBO_BOX (ev_sidebar->priv->combobox));
-
-       if (gtk_combo_box_get_active_iter (GTK_COMBO_BOX (ev_sidebar->priv->combobox), &iter)) {
-               gtk_tree_model_get (model, &iter, PAGE_COLUMN_ID, &id, -1);
-
-               return id;
-       }
-
-       return NULL;
-}
-
-static gboolean
-ev_sidebar_get_iter_for_page_id (EvSidebar *ev_sidebar,
-                                const char *new_page_id,
-                                GtkTreeIter *iter)
-{
-       GtkTreeModel *model;
-       gboolean valid;
-       gchar *page_id;
-
-       g_return_val_if_fail (EV_IS_SIDEBAR (ev_sidebar), FALSE);
-       g_return_val_if_fail (ev_sidebar->priv != NULL, FALSE);
-       g_return_val_if_fail (iter != NULL, FALSE);
-
-       model = gtk_combo_box_get_model (GTK_COMBO_BOX (ev_sidebar->priv->combobox));
-
-       valid = gtk_tree_model_get_iter_first (model, iter);
-
-       while (valid) {
-               gtk_tree_model_get (model, iter, PAGE_COLUMN_ID, &page_id, -1);
-
-               if (page_id != NULL && strcmp (new_page_id, page_id) == 0) {
-                       g_free (page_id);
-                       return TRUE;
-               }
-               g_free (page_id);
-
-               valid = gtk_tree_model_iter_next (model, iter);
-       }
-
-       return FALSE;
-}
-
-void
-ev_sidebar_set_current_page (EvSidebar *ev_sidebar, const char *new_page_id)
-{
-       GtkTreeIter iter;
-
-       g_return_if_fail (EV_IS_SIDEBAR (ev_sidebar));
-       g_return_if_fail (new_page_id != NULL);
-
-
-       if (ev_sidebar_get_iter_for_page_id (ev_sidebar, new_page_id, &iter)) {
-               gtk_combo_box_set_active_iter (GTK_COMBO_BOX (ev_sidebar->priv->combobox), &iter);
-       }
-}
-
-void
-ev_sidebar_add_page (EvSidebar   *ev_sidebar,
-                    const gchar *page_id,
-                    const gchar *title,
-                    GtkWidget   *main_widget)
-{
-       GtkTreeIter iter, iter2;
-       GtkTreeModel *model;
-          
-       g_return_if_fail (EV_IS_SIDEBAR (ev_sidebar));
-       g_return_if_fail (page_id != NULL);
-       g_return_if_fail (title != NULL);
-       g_return_if_fail (GTK_IS_WIDGET (main_widget));
-
-       model = gtk_combo_box_get_model (GTK_COMBO_BOX (ev_sidebar->priv->combobox));
-
-       gtk_widget_set_sensitive (GTK_WIDGET (ev_sidebar), TRUE);
-
-       gtk_widget_show (main_widget);  
-       gtk_notebook_append_page (GTK_NOTEBOOK (ev_sidebar->priv->notebook), main_widget, NULL);
-
-       gtk_list_store_insert_with_values (GTK_LIST_STORE (model), &iter, -1,
-                           PAGE_COLUMN_ID, page_id,
-                           PAGE_COLUMN_TITLE, title,
-                           -1);
-
-       if (!gtk_combo_box_get_active_iter (GTK_COMBO_BOX (ev_sidebar->priv->combobox), &iter2)) {
-               gtk_combo_box_set_active_iter (GTK_COMBO_BOX (ev_sidebar->priv->combobox), &iter);
-       }
-}
-
-void
-ev_sidebar_remove_page (EvSidebar   *ev_sidebar,
-                       const gchar *page_id)
-{
-       GtkTreeIter iter;
-       GtkTreeModel *model;
-          
-       g_return_if_fail (EV_IS_SIDEBAR (ev_sidebar));
-       g_return_if_fail (page_id != NULL);
-
-       model = gtk_combo_box_get_model (GTK_COMBO_BOX (ev_sidebar->priv->combobox));
-
-       if (ev_sidebar_get_iter_for_page_id (ev_sidebar, page_id, &iter)) {
-               GtkTreePath *path;
-               gint *indices;
-
-               path = gtk_tree_model_get_path (model, &iter);
-               indices = gtk_tree_path_get_indices (path);
-
-               g_assert (indices != NULL);
-               gtk_notebook_remove_page (GTK_NOTEBOOK (ev_sidebar->priv->notebook), indices[0]);
-
-               gtk_list_store_remove (GTK_LIST_STORE (model), &iter);
-
-               if (gtk_tree_model_iter_n_children (model, NULL) != 0) {
-                       gtk_tree_path_prev (path);
-
-                       if (gtk_tree_model_get_iter (model, &iter, path)) {
-                               gtk_combo_box_set_active_iter (GTK_COMBO_BOX (ev_sidebar->priv->combobox), &iter);
-                       }
-               } else {
-                       gtk_widget_set_sensitive (GTK_WIDGET (ev_sidebar), FALSE);
-               }
-
-               gtk_tree_path_free (path);
-       }
-}
-
diff --git a/src/ev-sidebar.h b/src/ev-sidebar.h
deleted file mode 100644 (file)
index cfb57f2..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-/* ev-sidebar.h
- *  this file is part of evince, a gnome document viewer
- * 
- * Copyright (C) 2004 Red Hat, Inc.
- *
- * Author:
- *   Jonathan Blandford <jrb@alum.mit.edu>
- *
- * Evince 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.
- *
- * Evince is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02110-1301  USA.
- *
- * Thursday 03 May 2007: Bastien Nocera: Add exception clause.
- * See license_change file for details.
- *
- */
-
-#ifndef __EV_SIDEBAR_H__
-#define __EV_SIDEBAR_H__
-
-#include <gtk/gtk.h>
-
-G_BEGIN_DECLS
-
-typedef struct _EvSidebar EvSidebar;
-typedef struct _EvSidebarClass EvSidebarClass;
-typedef struct _EvSidebarPrivate EvSidebarPrivate;
-
-#define EV_TYPE_SIDEBAR                     (ev_sidebar_get_type())
-#define EV_SIDEBAR(object)          (G_TYPE_CHECK_INSTANCE_CAST((object), EV_TYPE_SIDEBAR, EvSidebar))
-#define EV_SIDEBAR_CLASS(klass)             (G_TYPE_CHECK_CLASS_CAST((klass), EV_TYPE_SIDEBAR, EvSidebarClass))
-#define EV_IS_SIDEBAR(object)       (G_TYPE_CHECK_INSTANCE_TYPE((object), EV_TYPE_SIDEBAR))
-#define EV_IS_SIDEBAR_CLASS(klass)   (G_TYPE_CHECK_CLASS_TYPE((klass), EV_TYPE_SIDEBAR))
-#define EV_SIDEBAR_GET_CLASS(object) (G_TYPE_INSTANCE_GET_CLASS((object), EV_TYPE_SIDEBAR, EvSidebarClass))
-
-struct _EvSidebar {
-       GtkVBox base_instance;
-
-       EvSidebarPrivate *priv;
-};
-
-struct _EvSidebarClass {
-       GtkVBoxClass base_class;
-
-       void (*closed) (EvSidebar *sidebar);
-};
-
-GType      ev_sidebar_get_type     (void);
-GtkWidget *ev_sidebar_new          (void);
-void       ev_sidebar_add_page     (EvSidebar   *ev_sidebar,
-                                   const gchar *page_id,
-                                   const gchar *title,
-                                   GtkWidget   *main_widget);
-void       ev_sidebar_set_current_page
-                                  (EvSidebar *ev_sidebar,
-                                   const char *page_id);
-char      *ev_sidebar_get_current_page
-                                  (EvSidebar *ev_sidebar);
-void        ev_sidebar_remove_page (EvSidebar   *ev_sidebar,
-                                   const gchar *page_id);
-
-G_END_DECLS
-
-#endif /* __EV_SIDEBAR_H__ */
-
-
index 7bcfa5e49c4857a54c6134b5613912a7e84afd72..fdd67482a9cadcfa3eb11d8e5b7d572e2b67844c 100644 (file)
@@ -1,4 +1,4 @@
-SUBDIRS = interactive xml
+SUBDIRS = interactive xml certificates
 
 CLEANFILES=
 
@@ -16,6 +16,7 @@ AM_CPPFLAGS =                                         \
        $(EMPATHY_CFLAGS)                               \
        $(WARN_CFLAGS)                                  \
        $(DISABLE_DEPRECATED)                           \
+       -DSRCDIR=\""$(abs_srcdir)"\"                    \
        $(NULL)
 
 LDADD =                                                                \
@@ -24,7 +25,7 @@ LDADD =                                                               \
        $(EMPATHY_LIBS)                                         \
        $(NULL)
 
-TEST_PROGS =                                     \
+tests_list =  \
      empathy-irc-server-test                     \
      empathy-irc-network-test                    \
      empathy-irc-network-manager-test            \
@@ -34,8 +35,12 @@ TEST_PROGS =                                     \
      empathy-live-search-test                    \
      empathy-tls-test
 
+noinst_PROGRAMS = $(tests_list)
+TESTS = $(tests_list)
+
 empathy_tls_test_SOURCES = empathy-tls-test.c \
-     test-helper.c test-helper.h
+     test-helper.c test-helper.h \
+     mock-pkcs11.c mock-pkcs11.h
 
 empathy_irc_server_test_SOURCES = empathy-irc-server-test.c \
      test-helper.c test-helper.h                       \
@@ -61,8 +66,6 @@ empathy_parser_test_SOURCES = empathy-parser-test.c \
 empathy_live_search_test_SOURCES = empathy-live-search-test.c \
      test-helper.c test-helper.h
 
-check_PROGRAMS = $(TEST_PROGS)
-
 TESTS_ENVIRONMENT = EMPATHY_SRCDIR=@abs_top_srcdir@ \
                    MC_PROFILE_DIR=@abs_top_srcdir@/tests \
                    MC_MANAGER_DIR=@abs_top_srcdir@/tests
@@ -71,10 +74,10 @@ test-report: test-report.xml
        gtester-report $(top_builddir)/tests/$@.xml > \
          $(top_builddir)/tests/$@.html
 
-test-report.xml: ${TEST_PROGS} test
+test-report.xml: ${TESTS} test
 
-test: ${TEST_PROGS}
-       gtester -o test-report.xml -k --verbose ${TEST_PROGS}
+test: ${TESTS}
+       gtester -o test-report.xml -k --verbose ${TESTS}
 
 test-%: empathy-%-test
        gtester -o $@-report.xml -k --verbose $<
diff --git a/tests/certificates/Makefile.am b/tests/certificates/Makefile.am
new file mode 100644 (file)
index 0000000..08fefe9
--- /dev/null
@@ -0,0 +1,3 @@
+EXTRA_DIST = \
+       collabora-ca.cer \
+       dhansak-collabora.cer
diff --git a/tests/certificates/collabora-ca.cer b/tests/certificates/collabora-ca.cer
new file mode 100644 (file)
index 0000000..2842c69
Binary files /dev/null and b/tests/certificates/collabora-ca.cer differ
diff --git a/tests/certificates/collabora-ca/collabora-ca.cer b/tests/certificates/collabora-ca/collabora-ca.cer
deleted file mode 100644 (file)
index 2842c69..0000000
Binary files a/tests/certificates/collabora-ca/collabora-ca.cer and /dev/null differ
index 58c53dc6bbb9d3f886d8c8218a253c54d4c12565..e2ba5b4cc65e95b0af5bdcecd384795610309ae2 100644 (file)
@@ -5,6 +5,7 @@
 #include <libempathy/empathy-tls-certificate.h>
 #include <libempathy/empathy-tls-verifier.h>
 #include "test-helper.h"
+#include "mock-pkcs11.h"
 
 #include <gcr/gcr.h>
 
@@ -289,6 +290,9 @@ static void
 setup (Test *test, gconstpointer data)
 {
   GError *error = NULL;
+  GckModule *module;
+  const gchar *trust_uris[2] = { MOCK_SLOT_ONE_URI, NULL };
+
   test->loop = g_main_loop_new (NULL, FALSE);
 
   test->dbus = tp_dbus_daemon_dup (&error);
@@ -299,13 +303,20 @@ setup (Test *test, gconstpointer data)
   test->result = NULL;
   test->cert = NULL;
 
-  /* No PKCS#11 modules by default, tests add them */
+  /* Add our mock module as the only PKCS#11 module */
+  module = gck_module_new (&mock_default_functions);
+  mock_C_Initialize (NULL);
+
   gcr_pkcs11_set_modules (NULL);
+  gcr_pkcs11_add_module (module);
+  gcr_pkcs11_set_trust_lookup_uris (trust_uris);
 }
 
 static void
 teardown (Test *test, gconstpointer data)
 {
+  mock_C_Finalize (NULL);
+
   test->dbus_name = NULL;
 
   if (test->mock)
@@ -331,42 +342,30 @@ teardown (Test *test, gconstpointer data)
 }
 
 static void
-add_pkcs11_module_for_testing (Test *test,
-        const gchar *filename,
-        const gchar *subdir)
+add_certificate_to_mock (Test *test,
+        const gchar *certificate,
+        const gchar *peer)
 {
   GError *error = NULL;
-  gchar *args, *path, *directory;
-  gchar *standalone, *error_output;
-  gint exit_status;
+  GcrCertificate *cert;
+  gchar *contents;
+  gsize length;
+  gchar *path;
 
-  directory = g_build_filename (g_getenv ("EMPATHY_SRCDIR"),
-          "tests", "certificates", subdir, NULL);
+  path = g_build_filename (g_getenv ("EMPATHY_SRCDIR"),
+                           "tests", "certificates", certificate, NULL);
 
-  /*
-   * Lookup the directory for standalone pkcs11 modules installed by
-   * gnome-keyring. We use these for testing our implementation.
-   */
-  g_spawn_command_line_sync ("pkg-config --variable=pkcs11standalonedir gcr-3",
-          &standalone, &error_output, &exit_status, &error);
+  g_file_get_contents (path, &contents, &length, &error);
   g_assert_no_error (error);
-  if (exit_status != 0)
-    {
-      g_warning ("couldn't determine standalone pkcs11 module directory: %d: %s",
-              exit_status, error_output);
-      g_assert_not_reached ();
-    }
 
-  g_strstrip (standalone);
-  args = g_strdup_printf ("directory=\"%s\"", directory);
-  path = g_build_filename (standalone, filename, NULL);
-  gcr_pkcs11_add_module_from_file (path, args, &error);
-  g_assert_no_error (error);
+  cert = gcr_simple_certificate_new ((const guchar *)contents, length);
+  mock_module_add_certificate (cert);
+  mock_module_add_assertion (cert,
+          peer ? CKT_X_PINNED_CERTIFICATE : CKT_X_ANCHORED_CERTIFICATE,
+          GCR_PURPOSE_SERVER_AUTH, peer);
+  g_object_unref (cert);
 
-  g_free (directory);
-  g_free (standalone);
-  g_free (error_output);
-  g_free (args);
+  g_free (contents);
   g_free (path);
 }
 
@@ -445,8 +444,7 @@ test_certificate_verify_success_with_pkcs11_lookup (Test *test,
           "dhansak-collabora.cer", NULL);
 
   /* We add the collabora directory with the collabora root */
-  add_pkcs11_module_for_testing (test, "gkm-roots-store-standalone.so",
-          "collabora-ca");
+  add_certificate_to_mock (test, "collabora-ca.cer", NULL);
 
   ensure_certificate_proxy (test);
 
@@ -483,11 +481,10 @@ test_certificate_verify_success_with_full_chain (Test *test,
    */
 
   test->mock = mock_tls_certificate_new_and_register (test->dbus,
-          "dhansak-collabora.cer", "collabora-ca/collabora-ca.cer", NULL);
+          "dhansak-collabora.cer", "collabora-ca.cer", NULL);
 
   /* We add the collabora directory with the collabora root */
-  add_pkcs11_module_for_testing (test, "gkm-roots-store-standalone.so",
-          "collabora-ca");
+  add_certificate_to_mock (test, "collabora-ca.cer", NULL);
 
   ensure_certificate_proxy (test);
 
@@ -553,7 +550,7 @@ test_certificate_verify_root_not_anchored (Test *test,
   };
 
   test->mock = mock_tls_certificate_new_and_register (test->dbus,
-          "dhansak-collabora.cer", "collabora-ca/collabora-ca.cer", NULL);
+          "dhansak-collabora.cer", "collabora-ca.cer", NULL);
 
   /* Note that we're not adding any place to find root certs */
 
@@ -588,11 +585,10 @@ test_certificate_verify_identities_invalid (Test *test,
   };
 
   test->mock = mock_tls_certificate_new_and_register (test->dbus,
-          "dhansak-collabora.cer", "collabora-ca/collabora-ca.cer", NULL);
+          "dhansak-collabora.cer", "collabora-ca.cer", NULL);
 
   /* We add the collabora directory with the collabora root */
-  add_pkcs11_module_for_testing (test, "gkm-roots-store-standalone.so",
-          "collabora-ca");
+  add_certificate_to_mock (test, "collabora-ca.cer", NULL);
 
   ensure_certificate_proxy (test);
 
@@ -625,11 +621,10 @@ test_certificate_verify_uses_reference_identities (Test *test,
   };
 
   test->mock = mock_tls_certificate_new_and_register (test->dbus,
-          "dhansak-collabora.cer", "collabora-ca/collabora-ca.cer", NULL);
+          "dhansak-collabora.cer", "collabora-ca.cer", NULL);
 
   /* We add the collabora directory with the collabora root */
-  add_pkcs11_module_for_testing (test, "gkm-roots-store-standalone.so",
-          "collabora-ca");
+  add_certificate_to_mock (test, "collabora-ca.cer", NULL);
 
   ensure_certificate_proxy (test);
 
@@ -650,6 +645,80 @@ test_certificate_verify_uses_reference_identities (Test *test,
   g_object_unref (verifier);
 }
 
+static void
+test_certificate_verify_success_with_pinned (Test *test,
+        gconstpointer data G_GNUC_UNUSED)
+{
+  EmpTLSCertificateRejectReason reason = 0;
+  GError *error = NULL;
+  EmpathyTLSVerifier *verifier;
+  const gchar *reference_identities[] = {
+    "www.collabora.co.uk",
+    NULL
+  };
+
+  /*
+   * In this test the mock TLS connection has a full certificate
+   * chain. We look for an anchor certificate in the chain.
+   */
+
+  test->mock = mock_tls_certificate_new_and_register (test->dbus,
+          "dhansak-collabora.cer", NULL);
+
+  /* We add the collabora directory with the collabora root */
+  add_certificate_to_mock (test, "dhansak-collabora.cer", "www.collabora.co.uk");
+
+  ensure_certificate_proxy (test);
+
+  verifier = empathy_tls_verifier_new (test->cert, "www.collabora.co.uk",
+      reference_identities);
+  empathy_tls_verifier_verify_async (verifier, fetch_callback_result, test);
+  g_main_loop_run (test->loop);
+  empathy_tls_verifier_verify_finish (verifier, test->result, &reason,
+      NULL, &error);
+  g_assert_no_error (error);
+
+  /* Yay the verification was a success! */
+
+  g_clear_error (&error);
+  g_object_unref (verifier);
+}
+
+static void
+test_certificate_verify_pinned_wrong_host (Test *test,
+        gconstpointer data G_GNUC_UNUSED)
+{
+  EmpTLSCertificateRejectReason reason = 0;
+  GError *error = NULL;
+  EmpathyTLSVerifier *verifier;
+  const gchar *reference_identities[] = {
+    "www.collabora.co.uk",
+    NULL
+  };
+
+  test->mock = mock_tls_certificate_new_and_register (test->dbus,
+          "dhansak-collabora.cer", NULL);
+
+  /* Note that we're not adding any place to find root certs */
+
+  ensure_certificate_proxy (test);
+
+  verifier = empathy_tls_verifier_new (test->cert, "another.collabora.co.uk",
+      reference_identities);
+  empathy_tls_verifier_verify_async (verifier, fetch_callback_result, test);
+  g_main_loop_run (test->loop);
+
+  empathy_tls_verifier_verify_finish (verifier, test->result, &reason,
+      NULL, &error);
+
+  /* And it should say we're self-signed */
+  g_assert_error (error, G_IO_ERROR,
+      EMP_TLS_CERTIFICATE_REJECT_REASON_SELF_SIGNED);
+
+  g_clear_error (&error);
+  g_object_unref (verifier);
+}
+
 int
 main (int argc,
     char **argv)
@@ -673,6 +742,10 @@ main (int argc,
           setup, test_certificate_verify_identities_invalid, teardown);
   g_test_add ("/tls/certificate_verify_uses_reference_identities", Test, NULL,
           setup, test_certificate_verify_uses_reference_identities, teardown);
+  g_test_add ("/tls/certificate_verify_success_with_pinned", Test, NULL,
+          setup, test_certificate_verify_success_with_pinned, teardown);
+  g_test_add ("/tls/certificate_verify_pinned_wrong_host", Test, NULL,
+          setup, test_certificate_verify_pinned_wrong_host, teardown);
 
   result = g_test_run ();
   test_deinit ();
index 76717596e7904a98b894e16a05e9cadc952cb6b6..0ed9f95e4f775ca8cd9221b72ab4bc8c66ae9d0d 100644 (file)
@@ -58,7 +58,6 @@ main (int argc,
 {
   TpAccountManager *mgr;
 
-  g_thread_init (NULL);
   gtk_init (&argc, &argv);
   empathy_gtk_init ();
   g_set_application_name (PACKAGE_NAME);
diff --git a/tests/mock-pkcs11.c b/tests/mock-pkcs11.c
new file mode 100644 (file)
index 0000000..4b1219f
--- /dev/null
@@ -0,0 +1,1351 @@
+/*
+ * Copyright (C) 2010 Stefan Walter
+ * Copyright (C) 2011 Collabora Ltd.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General  License as
+ * published by the Free Software Foundation; either version 2.1 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
+ * Lesser General  License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ */
+
+#include "config.h"
+
+#include "mock-pkcs11.h"
+
+#include <gcr/gcr.h>
+
+#include <glib.h>
+
+#include <string.h>
+
+/*
+ * This is *NOT* how you'd want to implement a PKCS#11 module. This
+ * fake module simply provides enough for gnutls-pkcs11 backend to test against.
+ * It doesn't pass any tests, or behave as expected from a PKCS#11 module.
+ */
+
+static gboolean initialized = FALSE;
+
+typedef enum {
+  OP_FIND = 1,
+} Operation;
+
+static CK_OBJECT_HANDLE unique_identifier = 100;
+static GHashTable *the_sessions = NULL;
+static GHashTable *the_certificates = NULL;
+static GHashTable *the_assertions = NULL;
+
+typedef struct {
+  GcrCertificate *cert;
+  CK_ULONG assertion_type;
+  gchar *purpose;
+  gchar *peer;
+} Assertion;
+
+static void
+free_assertion (gpointer data)
+{
+  Assertion *assertion = data;
+  g_clear_object (&assertion->cert);
+  g_free (assertion->purpose);
+  g_free (assertion->peer);
+  g_free (assertion);
+}
+
+typedef struct {
+  CK_SESSION_HANDLE handle;
+  CK_SESSION_INFO info;
+
+  Operation operation;
+
+  /* For find operations */
+  GList *matches;
+} Session;
+
+static void
+free_session (gpointer data)
+{
+  Session *sess = (Session*)data;
+  g_list_free (sess->matches);
+  g_free (sess);
+}
+
+CK_OBJECT_HANDLE
+mock_module_add_certificate (GcrCertificate *cert)
+{
+  CK_OBJECT_HANDLE handle;
+
+  g_return_val_if_fail (GCR_IS_CERTIFICATE (cert), 0);
+
+  handle = unique_identifier++;
+  g_hash_table_insert (the_certificates, GUINT_TO_POINTER (handle), g_object_ref (cert));
+  return handle;
+}
+
+CK_OBJECT_HANDLE
+mock_module_add_assertion (GcrCertificate *cert,
+                           CK_X_ASSERTION_TYPE assertion_type,
+                           const gchar *purpose,
+                           const gchar *peer)
+{
+  Assertion *assertion;
+  CK_OBJECT_HANDLE handle;
+
+  g_return_val_if_fail (GCR_IS_CERTIFICATE (cert), 0);
+
+  assertion = g_new0 (Assertion, 1);
+  assertion->cert = g_object_ref (cert);
+  assertion->assertion_type = assertion_type;
+  assertion->purpose = g_strdup (purpose);
+  assertion->peer = g_strdup (peer);
+
+  handle = unique_identifier++;
+  g_hash_table_insert (the_assertions, GUINT_TO_POINTER (handle), assertion);
+  return handle;
+}
+
+CK_RV
+mock_C_Initialize (CK_VOID_PTR init_args)
+{
+  CK_C_INITIALIZE_ARGS_PTR args;
+
+  g_return_val_if_fail (initialized == FALSE, CKR_CRYPTOKI_ALREADY_INITIALIZED);
+
+  args = (CK_C_INITIALIZE_ARGS_PTR)init_args;
+  if (args)
+    {
+      g_return_val_if_fail(
+          (args->CreateMutex == NULL && args->DestroyMutex == NULL &&
+           args->LockMutex == NULL && args->UnlockMutex == NULL) ||
+          (args->CreateMutex != NULL && args->DestroyMutex != NULL &&
+           args->LockMutex != NULL && args->UnlockMutex != NULL),
+          CKR_ARGUMENTS_BAD);
+
+      /* Flags should allow OS locking and os threads */
+      g_return_val_if_fail ((args->flags & CKF_OS_LOCKING_OK), CKR_CANT_LOCK);
+      g_return_val_if_fail ((args->flags & CKF_LIBRARY_CANT_CREATE_OS_THREADS) == 0, CKR_NEED_TO_CREATE_THREADS);
+    }
+
+  the_sessions = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, free_session);
+  the_certificates = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, (GDestroyNotify)g_object_unref);
+  the_assertions = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, free_assertion);
+
+  initialized = TRUE;
+  return CKR_OK;
+}
+
+CK_RV
+mock_C_Finalize (CK_VOID_PTR reserved)
+{
+  g_return_val_if_fail (reserved == NULL, CKR_ARGUMENTS_BAD);
+  g_return_val_if_fail (initialized == TRUE, CKR_CRYPTOKI_NOT_INITIALIZED);
+
+  initialized = FALSE;
+
+  g_hash_table_destroy (the_certificates);
+  the_certificates = NULL;
+
+  g_hash_table_destroy (the_assertions);
+  the_assertions = NULL;
+
+  g_hash_table_destroy (the_sessions);
+  the_sessions = NULL;
+
+  return CKR_OK;
+}
+
+static const CK_INFO TEST_INFO = {
+  { CRYPTOKI_VERSION_MAJOR, CRYPTOKI_VERSION_MINOR },
+  "TEST MANUFACTURER              ",
+  0,
+  "TEST LIBRARY                   ",
+  { 45, 145 }
+};
+
+CK_RV
+mock_C_GetInfo (CK_INFO_PTR info)
+{
+  g_return_val_if_fail (info, CKR_ARGUMENTS_BAD);
+  memcpy (info, &TEST_INFO, sizeof (*info));
+  return CKR_OK;
+}
+
+CK_RV
+mock_C_GetFunctionList (CK_FUNCTION_LIST_PTR_PTR list)
+{
+  g_return_val_if_fail (list, CKR_ARGUMENTS_BAD);
+  *list = &mock_default_functions;
+  return CKR_OK;
+}
+
+CK_RV
+mock_C_GetSlotList (CK_BBOOL token_present,
+                    CK_SLOT_ID_PTR slot_list,
+                    CK_ULONG_PTR count)
+{
+  CK_ULONG num = 1;
+
+  g_return_val_if_fail (count, CKR_ARGUMENTS_BAD);
+
+  /* Application only wants to know the number of slots. */
+  if (slot_list == NULL)
+    {
+      *count = num;
+      return CKR_OK;
+    }
+
+  if (*count < num)
+    g_return_val_if_reached (CKR_BUFFER_TOO_SMALL);
+
+  *count = num;
+  slot_list[0] = MOCK_SLOT_ONE_ID;
+  return CKR_OK;
+}
+
+/* Update mock-pkcs11.h URIs when updating this */
+
+static const CK_SLOT_INFO MOCK_INFO_ONE = {
+  "MOCK SLOT                                                       ",
+  "MOCK MANUFACTURER              ",
+  CKF_TOKEN_PRESENT | CKF_REMOVABLE_DEVICE,
+  { 55, 155 },
+  { 65, 165 },
+};
+
+CK_RV
+mock_C_GetSlotInfo (CK_SLOT_ID slot_id,
+                    CK_SLOT_INFO_PTR info)
+{
+  g_return_val_if_fail (info, CKR_ARGUMENTS_BAD);
+
+  if (slot_id == MOCK_SLOT_ONE_ID)
+    {
+      memcpy (info, &MOCK_INFO_ONE, sizeof (*info));
+      return CKR_OK;
+    }
+  else
+    {
+      g_return_val_if_reached (CKR_SLOT_ID_INVALID);
+    }
+}
+
+/* Update mock-pkcs11.h URIs when updating this */
+
+static const CK_TOKEN_INFO MOCK_TOKEN_ONE = {
+  "MOCK LABEL                      ",
+  "MOCK MANUFACTURER               ",
+  "MOCK MODEL      ",
+  "MOCK SERIAL     ",
+  CKF_TOKEN_INITIALIZED | CKF_WRITE_PROTECTED,
+  1,
+  2,
+  3,
+  4,
+  5,
+  6,
+  7,
+  8,
+  9,
+  10,
+  { 75, 175 },
+  { 85, 185 },
+  { '1', '9', '9', '9', '0', '5', '2', '5', '0', '9', '1', '9', '5', '9', '0', '0' }
+};
+
+CK_RV
+mock_C_GetTokenInfo (CK_SLOT_ID slot_id,
+                     CK_TOKEN_INFO_PTR info)
+{
+  g_return_val_if_fail (info != NULL, CKR_ARGUMENTS_BAD);
+
+  if (slot_id == MOCK_SLOT_ONE_ID)
+    {
+      memcpy (info, &MOCK_TOKEN_ONE, sizeof (*info));
+      return CKR_OK;
+    }
+  else
+    {
+      g_return_val_if_reached (CKR_SLOT_ID_INVALID);
+    }
+}
+
+CK_RV
+mock_C_GetMechanismList (CK_SLOT_ID slot_id,
+                         CK_MECHANISM_TYPE_PTR mechanism_list,
+                         CK_ULONG_PTR count)
+{
+  g_return_val_if_fail (slot_id == MOCK_SLOT_ONE_ID, CKR_SLOT_ID_INVALID);
+  g_return_val_if_fail (count, CKR_ARGUMENTS_BAD);
+
+  /* Application only wants to know the number of slots. */
+  if (mechanism_list == NULL)
+    {
+      *count = 0;
+      return CKR_OK;
+    }
+
+  return CKR_OK;
+}
+
+CK_RV
+mock_C_GetMechanismInfo (CK_SLOT_ID slot_id,
+                         CK_MECHANISM_TYPE type,
+                         CK_MECHANISM_INFO_PTR info)
+{
+  g_return_val_if_fail (slot_id == MOCK_SLOT_ONE_ID, CKR_SLOT_ID_INVALID);
+  g_return_val_if_fail (info, CKR_ARGUMENTS_BAD);
+
+  g_return_val_if_reached (CKR_MECHANISM_INVALID);
+}
+
+CK_RV
+mock_unsupported_C_InitToken (CK_SLOT_ID slot_id,
+                              CK_UTF8CHAR_PTR pin,
+                              CK_ULONG pin_len,
+                              CK_UTF8CHAR_PTR label)
+{
+  g_return_val_if_fail (slot_id == MOCK_SLOT_ONE_ID, CKR_SLOT_ID_INVALID);
+  return CKR_FUNCTION_NOT_SUPPORTED;
+}
+
+CK_RV
+mock_unsupported_C_WaitForSlotEvent (CK_FLAGS flags,
+                                     CK_SLOT_ID_PTR slot_id,
+                                     CK_VOID_PTR reserved)
+{
+  return CKR_FUNCTION_NOT_SUPPORTED;
+}
+
+CK_RV
+mock_C_OpenSession (CK_SLOT_ID slot_id,
+                    CK_FLAGS flags,
+                    CK_VOID_PTR application,
+                    CK_NOTIFY notify,
+                    CK_SESSION_HANDLE_PTR session)
+{
+  Session *sess;
+
+  g_return_val_if_fail (slot_id == MOCK_SLOT_ONE_ID, CKR_SLOT_ID_INVALID);
+  g_return_val_if_fail (session != NULL, CKR_ARGUMENTS_BAD);
+  g_return_val_if_fail ((flags & CKF_SERIAL_SESSION) == CKF_SERIAL_SESSION, CKR_SESSION_PARALLEL_NOT_SUPPORTED);
+
+  if (flags & CKF_RW_SESSION)
+    return CKR_TOKEN_WRITE_PROTECTED;
+
+  sess = g_new0 (Session, 1);
+  sess->handle = ++unique_identifier;
+  sess->info.flags = flags;
+  sess->info.slotID = slot_id;
+  sess->info.state = CKS_RO_PUBLIC_SESSION;
+  sess->info.ulDeviceError = 0;
+  *session = sess->handle;
+
+  g_hash_table_replace (the_sessions, GUINT_TO_POINTER (sess->handle), sess);
+  return CKR_OK;
+}
+
+CK_RV
+mock_C_CloseSession (CK_SESSION_HANDLE session)
+{
+  Session *sess;
+
+  sess = g_hash_table_lookup (the_sessions, GUINT_TO_POINTER (session));
+  g_return_val_if_fail (sess != NULL, CKR_SESSION_HANDLE_INVALID);
+
+  g_hash_table_remove (the_sessions, GUINT_TO_POINTER (sess));
+  return CKR_OK;
+}
+
+CK_RV
+mock_C_CloseAllSessions (CK_SLOT_ID slot_id)
+{
+  g_return_val_if_fail (slot_id == MOCK_SLOT_ONE_ID, CKR_SLOT_ID_INVALID);
+
+  g_hash_table_remove_all (the_sessions);
+  return CKR_OK;
+}
+
+CK_RV
+mock_C_GetFunctionStatus (CK_SESSION_HANDLE session)
+{
+  return CKR_FUNCTION_NOT_PARALLEL;
+}
+
+CK_RV
+mock_C_CancelFunction (CK_SESSION_HANDLE session)
+{
+  return CKR_FUNCTION_NOT_PARALLEL;
+}
+
+CK_RV
+mock_C_GetSessionInfo (CK_SESSION_HANDLE session,
+                       CK_SESSION_INFO_PTR info)
+{
+  Session *sess;
+
+  g_return_val_if_fail (info != NULL, CKR_ARGUMENTS_BAD);
+
+  sess = g_hash_table_lookup (the_sessions, GUINT_TO_POINTER (session));
+  g_return_val_if_fail (sess != NULL, CKR_SESSION_HANDLE_INVALID);
+
+  memcpy (info, &sess->info, sizeof (*info));
+  return CKR_OK;
+}
+
+CK_RV
+mock_unsupported_C_InitPIN (CK_SESSION_HANDLE session,
+                            CK_UTF8CHAR_PTR pin,
+                            CK_ULONG pin_len)
+{
+  return CKR_FUNCTION_NOT_SUPPORTED;
+}
+
+CK_RV
+mock_unsupported_C_SetPIN (CK_SESSION_HANDLE session,
+                           CK_UTF8CHAR_PTR old_pin,
+                           CK_ULONG old_len,
+                           CK_UTF8CHAR_PTR new_pin,
+                           CK_ULONG new_len)
+{
+  return CKR_FUNCTION_NOT_SUPPORTED;
+}
+
+CK_RV
+mock_unsupported_C_GetOperationState (CK_SESSION_HANDLE session,
+                                      CK_BYTE_PTR operation_state,
+                                      CK_ULONG_PTR operation_state_len)
+{
+  return CKR_FUNCTION_NOT_SUPPORTED;
+}
+
+CK_RV
+mock_unsupported_C_SetOperationState (CK_SESSION_HANDLE session,
+                                      CK_BYTE_PTR operation_state,
+                                      CK_ULONG operation_state_len,
+                                      CK_OBJECT_HANDLE encryption_key,
+                                      CK_OBJECT_HANDLE authentication_key)
+{
+  return CKR_FUNCTION_NOT_SUPPORTED;
+}
+
+CK_RV
+mock_unsupported_C_Login (CK_SESSION_HANDLE session,
+                          CK_USER_TYPE user_type,
+                          CK_UTF8CHAR_PTR pin,
+                          CK_ULONG pin_len)
+{
+  return CKR_FUNCTION_NOT_SUPPORTED;
+}
+
+CK_RV
+mock_unsupported_C_Logout (CK_SESSION_HANDLE session)
+{
+  return CKR_FUNCTION_NOT_SUPPORTED;
+}
+
+CK_RV
+mock_readonly_C_CreateObject (CK_SESSION_HANDLE session,
+                              CK_ATTRIBUTE_PTR template,
+                              CK_ULONG count,
+                              CK_OBJECT_HANDLE_PTR object)
+{
+  Session *sess;
+
+  g_return_val_if_fail (object, CKR_ARGUMENTS_BAD);
+
+  sess = g_hash_table_lookup (the_sessions, GUINT_TO_POINTER (session));
+  g_return_val_if_fail (sess != NULL, CKR_SESSION_HANDLE_INVALID);
+
+  return CKR_TOKEN_WRITE_PROTECTED;
+}
+
+CK_RV
+mock_unsupported_C_CopyObject (CK_SESSION_HANDLE session,
+                               CK_OBJECT_HANDLE object,
+                               CK_ATTRIBUTE_PTR template,
+                               CK_ULONG count,
+                               CK_OBJECT_HANDLE_PTR new_object)
+{
+  return CKR_FUNCTION_NOT_SUPPORTED;
+}
+
+CK_RV
+mock_readonly_C_DestroyObject (CK_SESSION_HANDLE session,
+                               CK_OBJECT_HANDLE object)
+{
+  Session *sess;
+
+  g_return_val_if_fail (object, CKR_ARGUMENTS_BAD);
+
+  sess = g_hash_table_lookup (the_sessions, GUINT_TO_POINTER (session));
+  g_return_val_if_fail (sess != NULL, CKR_SESSION_HANDLE_INVALID);
+
+  return CKR_TOKEN_WRITE_PROTECTED;
+}
+
+CK_RV
+mock_unsupported_C_GetObjectSize (CK_SESSION_HANDLE session,
+                                  CK_OBJECT_HANDLE object,
+                                  CK_ULONG_PTR pulSize)
+{
+  return CKR_FUNCTION_NOT_SUPPORTED;
+}
+
+static CK_RV
+fill_data_attribute (CK_ATTRIBUTE *attr,
+                     gconstpointer data,
+                     gsize length)
+{
+  if (!attr->pValue) {
+      attr->ulValueLen = length;
+      return CKR_OK;
+  } else if (attr->ulValueLen < length) {
+      attr->ulValueLen = length;
+      return CKR_BUFFER_TOO_SMALL;
+  } else {
+      memcpy (attr->pValue, data, length);
+      attr->ulValueLen = length;
+      return CKR_OK;
+  }
+}
+
+static CK_RV
+fill_check_value_attribute (CK_ATTRIBUTE *attr,
+                            GcrCertificate *cert)
+{
+  guchar *data;
+  gsize length;
+  CK_RV rv;
+
+  data = gcr_certificate_get_fingerprint (cert, G_CHECKSUM_SHA1, &length);
+  rv = fill_data_attribute (attr, data, 3);
+  g_free (data);
+
+  return rv;
+}
+
+static CK_RV
+fill_subject_attribute (CK_ATTRIBUTE *attr,
+                        GcrCertificate *cert)
+{
+  guchar *data;
+  gsize length;
+  CK_RV rv;
+
+  data = gcr_certificate_get_subject_raw (cert, &length);
+  rv = fill_data_attribute (attr, data, length);
+  g_free (data);
+
+  return rv;
+}
+
+static CK_RV
+fill_issuer_attribute (CK_ATTRIBUTE *attr,
+                       GcrCertificate *cert)
+{
+  guchar *data;
+  gsize length;
+  CK_RV rv;
+
+  data = gcr_certificate_get_issuer_raw (cert, &length);
+  rv = fill_data_attribute (attr, data, length);
+  g_free (data);
+
+  return rv;
+}
+
+static CK_RV
+fill_serial_attribute (CK_ATTRIBUTE *attr,
+                       GcrCertificate *cert)
+{
+  guchar *data;
+  gsize length;
+  CK_RV rv;
+
+  data = gcr_certificate_get_serial_number (cert, &length);
+  rv = fill_data_attribute (attr, data, length);
+  g_free (data);
+
+  return rv;
+}
+
+static CK_RV
+fill_string_attribute (CK_ATTRIBUTE *attr,
+                       const gchar *data)
+{
+  return fill_data_attribute (attr, data, strlen (data));
+}
+
+static CK_RV
+fill_id_attribute (CK_ATTRIBUTE *attr,
+                   GcrCertificate *cert)
+{
+  gchar *data;
+  CK_RV rv;
+
+  data = g_strdup_printf ("%p", cert);
+  rv = fill_string_attribute (attr, data);
+  g_free (data);
+
+  return rv;
+}
+
+static CK_RV
+fill_value_attribute (CK_ATTRIBUTE *attr,
+                      GcrCertificate *cert)
+{
+  const guchar *data;
+  gsize length;
+
+  data = gcr_certificate_get_der_data (cert, &length);
+  return fill_data_attribute (attr, data, length);
+}
+
+static CK_RV
+fill_ulong_attribute (CK_ATTRIBUTE *attr,
+                      CK_ULONG value)
+{
+  return fill_data_attribute (attr, &value, sizeof (value));
+}
+
+static CK_RV
+fill_bool_attribute (CK_ATTRIBUTE *attr,
+                     CK_BBOOL value)
+{
+  return fill_data_attribute (attr, &value, sizeof (value));
+}
+
+static CK_RV
+fill_certificate_attribute (CK_ATTRIBUTE *attr,
+                            GcrCertificate *cert)
+{
+  switch (attr->type)
+  {
+  case CKA_CLASS:
+    return fill_ulong_attribute (attr, CKO_CERTIFICATE);
+  case CKA_TOKEN:
+    return fill_bool_attribute (attr, CK_TRUE);
+  case CKA_PRIVATE:
+  case CKA_MODIFIABLE:
+  case CKA_TRUSTED:
+    return fill_bool_attribute (attr, CK_FALSE);
+  case CKA_LABEL:
+    return fill_string_attribute (attr, "Certificate");
+  case CKA_CERTIFICATE_TYPE:
+    return fill_ulong_attribute (attr, CKC_X_509);
+  case CKA_CERTIFICATE_CATEGORY:
+    return fill_ulong_attribute (attr, 2);
+  case CKA_CHECK_VALUE:
+    return fill_check_value_attribute (attr, cert);
+  case CKA_START_DATE:
+  case CKA_END_DATE:
+    return fill_data_attribute (attr, "", 0);
+  case CKA_SUBJECT:
+    return fill_subject_attribute (attr, cert);
+  case CKA_ID:
+    return fill_id_attribute (attr, cert);
+  case CKA_ISSUER:
+    return fill_issuer_attribute (attr, cert);
+  case CKA_SERIAL_NUMBER:
+    return fill_serial_attribute (attr, cert);
+  case CKA_VALUE:
+    return fill_value_attribute (attr, cert);
+  case CKA_URL:
+  case CKA_HASH_OF_SUBJECT_PUBLIC_KEY:
+  case CKA_HASH_OF_ISSUER_PUBLIC_KEY:
+  case CKA_JAVA_MIDP_SECURITY_DOMAIN:
+  default:
+    return CKR_ATTRIBUTE_TYPE_INVALID;
+  }
+}
+
+static CK_RV
+fill_assertion_attribute (CK_ATTRIBUTE *attr,
+                          Assertion *assertion)
+{
+  CK_RV rv;
+
+  switch (attr->type)
+  {
+  case CKA_CLASS:
+    return fill_ulong_attribute (attr, CKO_X_TRUST_ASSERTION);
+  case CKA_TOKEN:
+    return fill_bool_attribute (attr, CK_TRUE);
+  case CKA_PRIVATE:
+  case CKA_MODIFIABLE:
+  case CKA_TRUSTED:
+    return fill_bool_attribute (attr, CK_FALSE);
+  case CKA_LABEL:
+    return fill_string_attribute (attr, "Assertion");
+  case CKA_X_ASSERTION_TYPE:
+    return fill_ulong_attribute (attr, assertion->assertion_type);
+  case CKA_X_PURPOSE:
+    return fill_string_attribute (attr, assertion->purpose);
+  case CKA_X_PEER:
+    if (!assertion->peer)
+      return CKR_ATTRIBUTE_TYPE_INVALID;
+    return fill_string_attribute (attr, assertion->peer);
+  case CKA_SERIAL_NUMBER:
+  case CKA_ISSUER:
+    return fill_certificate_attribute (attr, assertion->cert);
+  case CKA_X_CERTIFICATE_VALUE:
+    attr->type = CKA_VALUE;
+    rv = fill_certificate_attribute (attr, assertion->cert);
+    attr->type = CKA_X_CERTIFICATE_VALUE;
+    return rv;
+
+  default:
+    return CKR_ATTRIBUTE_TYPE_INVALID;
+  }
+}
+
+CK_RV
+mock_C_GetAttributeValue (CK_SESSION_HANDLE session,
+                          CK_OBJECT_HANDLE object,
+                          CK_ATTRIBUTE_PTR template,
+                          CK_ULONG count)
+{
+  CK_RV rv, ret = CKR_OK;
+  GcrCertificate *cert;
+  Assertion *assertion;
+  Session *sess;
+  CK_ULONG i;
+
+  sess = g_hash_table_lookup (the_sessions, GUINT_TO_POINTER (session));
+  g_return_val_if_fail (sess != NULL, CKR_SESSION_HANDLE_INVALID);
+
+  cert = g_hash_table_lookup (the_certificates, GUINT_TO_POINTER (object));
+  assertion = g_hash_table_lookup (the_assertions, GUINT_TO_POINTER (object));
+
+  if (cert != NULL) {
+      for (i = 0; i < count; i++) {
+          rv = fill_certificate_attribute (template + i, cert);
+          if (rv != CKR_OK)
+            template[i].ulValueLen = (CK_ULONG)-1;
+          if (ret != CKR_OK)
+            ret = rv;
+      }
+  } else if (assertion != NULL) {
+      for (i = 0; i < count; i++) {
+          rv = fill_assertion_attribute (template + i, assertion);
+          if (rv != CKR_OK)
+            template[i].ulValueLen = (CK_ULONG)-1;
+          if (ret != CKR_OK)
+            ret = rv;
+      }
+  } else {
+      ret = CKR_OBJECT_HANDLE_INVALID;
+  }
+
+  return ret;
+}
+
+CK_RV
+mock_readonly_C_SetAttributeValue (CK_SESSION_HANDLE session,
+                                   CK_OBJECT_HANDLE object,
+                                   CK_ATTRIBUTE_PTR template,
+                                   CK_ULONG count)
+{
+  Session *sess;
+
+  sess = g_hash_table_lookup (the_sessions, GUINT_TO_POINTER (session));
+  g_return_val_if_fail (sess, CKR_SESSION_HANDLE_INVALID);
+
+  return CKR_TOKEN_WRITE_PROTECTED;
+}
+
+static gboolean
+match_object_attributes (CK_SESSION_HANDLE session,
+                         CK_ULONG object,
+                         CK_ATTRIBUTE_PTR template,
+                         CK_ULONG count)
+{
+  CK_ATTRIBUTE_PTR values;
+  gboolean mismatch = FALSE;
+  CK_RV rv;
+  CK_ULONG i;
+
+  values = g_new0 (CK_ATTRIBUTE, count);
+  for (i = 0; i < count; i++) {
+      values[i].type = template[i].type;
+      if (template[i].ulValueLen != 0 &&
+          template[i].ulValueLen != (CK_ULONG)-1)
+          values[i].pValue = g_malloc (template[i].ulValueLen);
+      values[i].ulValueLen = template[i].ulValueLen;
+  }
+
+  rv = mock_C_GetAttributeValue (session, object, values, count);
+
+  if (rv == CKR_OK) {
+      for (i = 0; i < count; i++) {
+          if (gcr_comparable_memcmp (values[i].pValue, values[i].ulValueLen,
+                                     template[i].pValue, template[i].ulValueLen) != 0) {
+            mismatch = TRUE;
+            break;
+          }
+      }
+  }
+
+  for (i = 0; i < count; i++)
+      g_free (values[i].pValue);
+  g_free (values);
+
+  if (rv != CKR_OK)
+    return FALSE;
+
+  return !mismatch;
+}
+
+CK_RV
+mock_C_FindObjectsInit (CK_SESSION_HANDLE session,
+                        CK_ATTRIBUTE_PTR template,
+                        CK_ULONG count)
+{
+  GList *objects = NULL, *l;
+  Session *sess;
+
+  sess = g_hash_table_lookup (the_sessions, GUINT_TO_POINTER (session));
+  g_return_val_if_fail (sess != NULL, CKR_SESSION_HANDLE_INVALID);
+
+  /* Starting an operation, cancels any previous one */
+  if (sess->operation != 0)
+    sess->operation = 0;
+
+  sess->operation = OP_FIND;
+  g_list_free (sess->matches);
+  sess->matches = NULL;
+
+  objects = g_list_concat (objects, g_hash_table_get_keys (the_certificates));
+  objects = g_list_concat (objects, g_hash_table_get_keys (the_assertions));
+
+  for (l = objects; l != NULL; l = g_list_next (l)) {
+      if (match_object_attributes (session, GPOINTER_TO_UINT (l->data), template, count))
+        sess->matches = g_list_prepend (sess->matches, l->data);
+  }
+
+  g_list_free (objects);
+  return CKR_OK;
+}
+
+CK_RV
+mock_C_FindObjects (CK_SESSION_HANDLE session,
+                    CK_OBJECT_HANDLE_PTR object,
+                    CK_ULONG max_object_count,
+                    CK_ULONG_PTR object_count)
+{
+  Session *sess;
+
+  g_return_val_if_fail (object, CKR_ARGUMENTS_BAD);
+  g_return_val_if_fail (object_count, CKR_ARGUMENTS_BAD);
+  g_return_val_if_fail (max_object_count != 0, CKR_ARGUMENTS_BAD);
+
+  sess = g_hash_table_lookup (the_sessions, GUINT_TO_POINTER (session));
+  g_return_val_if_fail (sess != NULL, CKR_SESSION_HANDLE_INVALID);
+  g_return_val_if_fail (sess->operation == OP_FIND, CKR_OPERATION_NOT_INITIALIZED);
+
+  *object_count = 0;
+  while (max_object_count > 0 && sess->matches)
+    {
+      *object = GPOINTER_TO_UINT (sess->matches->data);
+      ++object;
+      --max_object_count;
+      ++(*object_count);
+      sess->matches = g_list_remove (sess->matches, sess->matches->data);
+    }
+
+  return CKR_OK;
+}
+
+CK_RV
+mock_C_FindObjectsFinal (CK_SESSION_HANDLE session)
+{
+  Session *sess;
+
+  sess = g_hash_table_lookup (the_sessions, GUINT_TO_POINTER (session));
+  g_return_val_if_fail (sess != NULL, CKR_SESSION_HANDLE_INVALID);
+  g_return_val_if_fail (sess->operation == OP_FIND, CKR_OPERATION_NOT_INITIALIZED);
+
+  sess->operation = 0;
+  g_list_free (sess->matches);
+  sess->matches = NULL;
+
+  return CKR_OK;
+}
+
+CK_RV
+mock_no_mechanisms_C_EncryptInit (CK_SESSION_HANDLE session,
+                                  CK_MECHANISM_PTR mechanism,
+                                  CK_OBJECT_HANDLE key)
+{
+  Session *sess;
+
+  sess = g_hash_table_lookup (the_sessions, GUINT_TO_POINTER (session));
+  g_return_val_if_fail (sess != NULL, CKR_SESSION_HANDLE_INVALID);
+
+  return CKR_MECHANISM_INVALID;
+}
+
+CK_RV
+mock_not_initialized_C_Encrypt (CK_SESSION_HANDLE session,
+                                CK_BYTE_PTR data,
+                                CK_ULONG data_len,
+                                CK_BYTE_PTR encrypted_data,
+                                CK_ULONG_PTR encrypted_data_len)
+{
+  return CKR_OPERATION_NOT_INITIALIZED;
+}
+
+CK_RV
+mock_unsupported_C_EncryptUpdate (CK_SESSION_HANDLE session,
+                                  CK_BYTE_PTR part,
+                                  CK_ULONG part_len,
+                                  CK_BYTE_PTR encrypted_part,
+                                  CK_ULONG_PTR encrypted_part_len)
+{
+  return CKR_FUNCTION_NOT_SUPPORTED;
+}
+
+CK_RV
+mock_unsupported_C_EncryptFinal (CK_SESSION_HANDLE session,
+                                 CK_BYTE_PTR last_encrypted_part,
+                                 CK_ULONG_PTR last_encrypted_part_len)
+{
+  return CKR_FUNCTION_NOT_SUPPORTED;
+}
+
+CK_RV
+mock_no_mechanisms_C_DecryptInit (CK_SESSION_HANDLE session,
+                                  CK_MECHANISM_PTR mechanism,
+                                  CK_OBJECT_HANDLE key)
+{
+  Session *sess;
+
+  sess = g_hash_table_lookup (the_sessions, GUINT_TO_POINTER (session));
+  g_return_val_if_fail (sess != NULL, CKR_SESSION_HANDLE_INVALID);
+
+  return CKR_MECHANISM_INVALID;
+}
+
+CK_RV
+mock_not_initialized_C_Decrypt (CK_SESSION_HANDLE session,
+                                CK_BYTE_PTR encrypted_data,
+                                CK_ULONG encrypted_data_len,
+                                CK_BYTE_PTR data,
+                                CK_ULONG_PTR data_len)
+{
+  return CKR_OPERATION_NOT_INITIALIZED;
+}
+
+CK_RV
+mock_unsupported_C_DecryptUpdate (CK_SESSION_HANDLE session,
+                                  CK_BYTE_PTR encrypted_part,
+                                  CK_ULONG encrypted_key_len,
+                                  CK_BYTE_PTR part,
+                                  CK_ULONG_PTR part_len)
+{
+  return CKR_FUNCTION_NOT_SUPPORTED;
+}
+
+CK_RV
+mock_unsupported_C_DecryptFinal (CK_SESSION_HANDLE session,
+                                 CK_BYTE_PTR last_part,
+                                 CK_ULONG_PTR last_part_len)
+{
+  return CKR_FUNCTION_NOT_SUPPORTED;
+}
+
+CK_RV
+mock_unsupported_C_DigestInit (CK_SESSION_HANDLE session,
+                               CK_MECHANISM_PTR mechanism)
+{
+  return CKR_FUNCTION_NOT_SUPPORTED;
+}
+
+CK_RV
+mock_unsupported_C_Digest (CK_SESSION_HANDLE session,
+                           CK_BYTE_PTR data,
+                           CK_ULONG data_len,
+                           CK_BYTE_PTR digest,
+                           CK_ULONG_PTR digest_len)
+{
+  return CKR_FUNCTION_NOT_SUPPORTED;
+}
+
+CK_RV
+mock_unsupported_C_DigestUpdate (CK_SESSION_HANDLE session,
+                                 CK_BYTE_PTR part,
+                                 CK_ULONG part_len)
+{
+  return CKR_FUNCTION_NOT_SUPPORTED;
+}
+
+CK_RV
+mock_unsupported_C_DigestKey (CK_SESSION_HANDLE session,
+                              CK_OBJECT_HANDLE key)
+{
+  return CKR_FUNCTION_NOT_SUPPORTED;
+}
+
+CK_RV
+mock_unsupported_C_DigestFinal (CK_SESSION_HANDLE session,
+                                CK_BYTE_PTR digest,
+                                CK_ULONG_PTR digest_len)
+{
+  return CKR_FUNCTION_NOT_SUPPORTED;
+}
+
+CK_RV
+mock_no_mechanisms_C_SignInit (CK_SESSION_HANDLE session,
+                               CK_MECHANISM_PTR mechanism,
+                               CK_OBJECT_HANDLE key)
+{
+  Session *sess;
+
+  sess = g_hash_table_lookup (the_sessions, GUINT_TO_POINTER (session));
+  g_return_val_if_fail (sess != NULL, CKR_SESSION_HANDLE_INVALID);
+
+  return CKR_MECHANISM_INVALID;
+}
+
+CK_RV
+mock_not_initialized_C_Sign (CK_SESSION_HANDLE session,
+                             CK_BYTE_PTR data,
+                             CK_ULONG data_len,
+                             CK_BYTE_PTR signature,
+                             CK_ULONG_PTR signature_len)
+{
+  return CKR_OPERATION_NOT_INITIALIZED;
+}
+
+CK_RV
+mock_unsupported_C_SignUpdate (CK_SESSION_HANDLE session,
+                               CK_BYTE_PTR part,
+                               CK_ULONG part_len)
+{
+  return CKR_FUNCTION_NOT_SUPPORTED;
+}
+
+CK_RV
+mock_unsupported_C_SignFinal (CK_SESSION_HANDLE session,
+                              CK_BYTE_PTR signature,
+                              CK_ULONG_PTR signature_len)
+{
+  return CKR_FUNCTION_NOT_SUPPORTED;
+}
+
+CK_RV
+mock_unsupported_C_SignRecoverInit (CK_SESSION_HANDLE session,
+                                    CK_MECHANISM_PTR mechanism,
+                                    CK_OBJECT_HANDLE key)
+{
+  return CKR_FUNCTION_NOT_SUPPORTED;
+}
+
+CK_RV
+mock_unsupported_C_SignRecover (CK_SESSION_HANDLE session,
+                                CK_BYTE_PTR data,
+                                CK_ULONG data_len,
+                                CK_BYTE_PTR signature,
+                                CK_ULONG_PTR signature_len)
+{
+  return CKR_FUNCTION_NOT_SUPPORTED;
+}
+
+CK_RV
+mock_no_mechanisms_C_VerifyInit (CK_SESSION_HANDLE session,
+                                 CK_MECHANISM_PTR mechanism,
+                                 CK_OBJECT_HANDLE key)
+{
+  Session *sess;
+
+  sess = g_hash_table_lookup (the_sessions, GUINT_TO_POINTER (session));
+  g_return_val_if_fail (sess != NULL, CKR_SESSION_HANDLE_INVALID);
+
+  return CKR_MECHANISM_INVALID;
+}
+
+CK_RV
+mock_not_initialized_C_Verify (CK_SESSION_HANDLE session,
+                               CK_BYTE_PTR data,
+                               CK_ULONG data_len,
+                               CK_BYTE_PTR signature,
+                               CK_ULONG signature_len)
+{
+  return CKR_OPERATION_NOT_INITIALIZED;
+}
+
+CK_RV
+mock_unsupported_C_VerifyUpdate (CK_SESSION_HANDLE session,
+                                 CK_BYTE_PTR part,
+                                 CK_ULONG part_len)
+{
+  return CKR_FUNCTION_NOT_SUPPORTED;
+}
+
+CK_RV
+mock_unsupported_C_VerifyFinal (CK_SESSION_HANDLE session,
+                                CK_BYTE_PTR signature,
+                                CK_ULONG signature_len)
+{
+  return CKR_FUNCTION_NOT_SUPPORTED;
+}
+
+CK_RV
+mock_unsupported_C_VerifyRecoverInit (CK_SESSION_HANDLE session,
+                                      CK_MECHANISM_PTR mechanism,
+                                      CK_OBJECT_HANDLE key)
+{
+  return CKR_FUNCTION_NOT_SUPPORTED;
+}
+
+CK_RV
+mock_unsupported_C_VerifyRecover (CK_SESSION_HANDLE session,
+                                  CK_BYTE_PTR signature,
+                                  CK_ULONG signature_len,
+                                  CK_BYTE_PTR data,
+                                  CK_ULONG_PTR data_len)
+{
+  return CKR_FUNCTION_NOT_SUPPORTED;
+}
+
+CK_RV
+mock_unsupported_C_DigestEncryptUpdate (CK_SESSION_HANDLE session,
+                                        CK_BYTE_PTR part,
+                                        CK_ULONG part_len,
+                                        CK_BYTE_PTR encrypted_part,
+                                        CK_ULONG_PTR encrypted_key_len)
+{
+  return CKR_FUNCTION_NOT_SUPPORTED;
+}
+
+CK_RV
+mock_unsupported_C_DecryptDigestUpdate (CK_SESSION_HANDLE session,
+                                        CK_BYTE_PTR encrypted_part,
+                                        CK_ULONG encrypted_key_len,
+                                        CK_BYTE_PTR part,
+                                        CK_ULONG_PTR part_len)
+{
+  return CKR_FUNCTION_NOT_SUPPORTED;
+}
+
+CK_RV
+mock_unsupported_C_SignEncryptUpdate (CK_SESSION_HANDLE session,
+                                      CK_BYTE_PTR part,
+                                      CK_ULONG part_len,
+                                      CK_BYTE_PTR encrypted_part,
+                                      CK_ULONG_PTR encrypted_key_len)
+{
+  return CKR_FUNCTION_NOT_SUPPORTED;
+}
+
+CK_RV
+mock_unsupported_C_DecryptVerifyUpdate (CK_SESSION_HANDLE session,
+                                        CK_BYTE_PTR encrypted_part,
+                                        CK_ULONG encrypted_key_len,
+                                        CK_BYTE_PTR part,
+                                        CK_ULONG_PTR part_len)
+{
+  return CKR_FUNCTION_NOT_SUPPORTED;
+}
+
+CK_RV
+mock_unsupported_C_GenerateKey (CK_SESSION_HANDLE session,
+                                CK_MECHANISM_PTR mechanism,
+                                CK_ATTRIBUTE_PTR template,
+                                CK_ULONG count,
+                                CK_OBJECT_HANDLE_PTR key)
+{
+  return CKR_FUNCTION_NOT_SUPPORTED;
+}
+
+CK_RV
+mock_no_mechanisms_C_GenerateKeyPair (CK_SESSION_HANDLE session,
+                                      CK_MECHANISM_PTR mechanism,
+                                      CK_ATTRIBUTE_PTR public_key_template,
+                                      CK_ULONG public_key_attribute_count,
+                                      CK_ATTRIBUTE_PTR private_key_template,
+                                      CK_ULONG private_key_attribute_count,
+                                      CK_OBJECT_HANDLE_PTR public_key,
+                                      CK_OBJECT_HANDLE_PTR private_key)
+{
+  Session *sess;
+
+  g_return_val_if_fail (mechanism, CKR_MECHANISM_INVALID);
+  g_return_val_if_fail (public_key_template, CKR_TEMPLATE_INCOMPLETE);
+  g_return_val_if_fail (public_key_attribute_count, CKR_TEMPLATE_INCOMPLETE);
+  g_return_val_if_fail (private_key_template, CKR_TEMPLATE_INCOMPLETE);
+  g_return_val_if_fail (private_key_attribute_count, CKR_TEMPLATE_INCOMPLETE);
+  g_return_val_if_fail (public_key, CKR_ARGUMENTS_BAD);
+  g_return_val_if_fail (private_key, CKR_ARGUMENTS_BAD);
+
+  sess = g_hash_table_lookup (the_sessions, GUINT_TO_POINTER (session));
+  g_return_val_if_fail (sess != NULL, CKR_SESSION_HANDLE_INVALID);
+
+  return CKR_MECHANISM_INVALID;
+}
+
+CK_RV
+mock_no_mechanisms_C_WrapKey (CK_SESSION_HANDLE session,
+                              CK_MECHANISM_PTR mechanism,
+                              CK_OBJECT_HANDLE wrapping_key,
+                              CK_OBJECT_HANDLE key,
+                              CK_BYTE_PTR wrapped_key,
+                              CK_ULONG_PTR wrapped_key_len)
+{
+  Session *sess;
+
+  g_return_val_if_fail (mechanism, CKR_MECHANISM_INVALID);
+  g_return_val_if_fail (wrapping_key, CKR_OBJECT_HANDLE_INVALID);
+  g_return_val_if_fail (key, CKR_OBJECT_HANDLE_INVALID);
+  g_return_val_if_fail (wrapped_key_len, CKR_WRAPPED_KEY_LEN_RANGE);
+
+  sess = g_hash_table_lookup (the_sessions, GUINT_TO_POINTER (session));
+  g_return_val_if_fail (sess != NULL, CKR_SESSION_HANDLE_INVALID);
+
+  return CKR_MECHANISM_INVALID;
+}
+
+CK_RV
+mock_no_mechanisms_C_UnwrapKey (CK_SESSION_HANDLE session,
+                                CK_MECHANISM_PTR mechanism,
+                                CK_OBJECT_HANDLE unwrapping_key,
+                                CK_BYTE_PTR wrapped_key,
+                                CK_ULONG wrapped_key_len,
+                                CK_ATTRIBUTE_PTR template,
+                                CK_ULONG count,
+                                CK_OBJECT_HANDLE_PTR key)
+{
+  Session *sess;
+
+  g_return_val_if_fail (mechanism, CKR_MECHANISM_INVALID);
+  g_return_val_if_fail (unwrapping_key, CKR_WRAPPING_KEY_HANDLE_INVALID);
+  g_return_val_if_fail (wrapped_key, CKR_WRAPPED_KEY_INVALID);
+  g_return_val_if_fail (wrapped_key_len, CKR_WRAPPED_KEY_LEN_RANGE);
+  g_return_val_if_fail (key, CKR_ARGUMENTS_BAD);
+  g_return_val_if_fail (template, CKR_TEMPLATE_INCOMPLETE);
+  g_return_val_if_fail (count, CKR_TEMPLATE_INCONSISTENT);
+
+  sess = g_hash_table_lookup (the_sessions, GUINT_TO_POINTER (session));
+  g_return_val_if_fail (sess != NULL, CKR_SESSION_HANDLE_INVALID);
+
+  return CKR_MECHANISM_INVALID;
+}
+
+CK_RV
+mock_no_mechanisms_C_DeriveKey (CK_SESSION_HANDLE session,
+                                CK_MECHANISM_PTR mechanism,
+                                CK_OBJECT_HANDLE base_key,
+                                CK_ATTRIBUTE_PTR template,
+                                CK_ULONG count,
+                                CK_OBJECT_HANDLE_PTR key)
+{
+  Session *sess;
+
+  g_return_val_if_fail (mechanism, CKR_MECHANISM_INVALID);
+  g_return_val_if_fail (count, CKR_TEMPLATE_INCOMPLETE);
+  g_return_val_if_fail (template, CKR_TEMPLATE_INCOMPLETE);
+  g_return_val_if_fail (key, CKR_ARGUMENTS_BAD);
+
+  sess = g_hash_table_lookup (the_sessions, GUINT_TO_POINTER (session));
+  g_return_val_if_fail (sess != NULL, CKR_SESSION_HANDLE_INVALID);
+
+  return CKR_MECHANISM_INVALID;
+}
+
+CK_RV
+mock_unsupported_C_SeedRandom (CK_SESSION_HANDLE session,
+                               CK_BYTE_PTR pSeed,
+                               CK_ULONG seed_len)
+{
+  return CKR_FUNCTION_NOT_SUPPORTED;
+}
+
+CK_RV
+mock_unsupported_C_GenerateRandom (CK_SESSION_HANDLE session,
+                                   CK_BYTE_PTR random_data,
+                                   CK_ULONG random_len)
+{
+  return CKR_FUNCTION_NOT_SUPPORTED;
+}
+
+CK_FUNCTION_LIST mock_default_functions = {
+  { 2, 11 },   /* version */
+  mock_C_Initialize,
+  mock_C_Finalize,
+  mock_C_GetInfo,
+  mock_C_GetFunctionList,
+  mock_C_GetSlotList,
+  mock_C_GetSlotInfo,
+  mock_C_GetTokenInfo,
+  mock_C_GetMechanismList,
+  mock_C_GetMechanismInfo,
+  mock_unsupported_C_InitToken,
+  mock_unsupported_C_InitPIN,
+  mock_unsupported_C_SetPIN,
+  mock_C_OpenSession,
+  mock_C_CloseSession,
+  mock_C_CloseAllSessions,
+  mock_C_GetSessionInfo,
+  mock_unsupported_C_GetOperationState,
+  mock_unsupported_C_SetOperationState,
+  mock_unsupported_C_Login,
+  mock_unsupported_C_Logout,
+  mock_readonly_C_CreateObject,
+  mock_unsupported_C_CopyObject,
+  mock_readonly_C_DestroyObject,
+  mock_unsupported_C_GetObjectSize,
+  mock_C_GetAttributeValue,
+  mock_readonly_C_SetAttributeValue,
+  mock_C_FindObjectsInit,
+  mock_C_FindObjects,
+  mock_C_FindObjectsFinal,
+  mock_no_mechanisms_C_EncryptInit,
+  mock_not_initialized_C_Encrypt,
+  mock_unsupported_C_EncryptUpdate,
+  mock_unsupported_C_EncryptFinal,
+  mock_no_mechanisms_C_DecryptInit,
+  mock_not_initialized_C_Decrypt,
+  mock_unsupported_C_DecryptUpdate,
+  mock_unsupported_C_DecryptFinal,
+  mock_unsupported_C_DigestInit,
+  mock_unsupported_C_Digest,
+  mock_unsupported_C_DigestUpdate,
+  mock_unsupported_C_DigestKey,
+  mock_unsupported_C_DigestFinal,
+  mock_no_mechanisms_C_SignInit,
+  mock_not_initialized_C_Sign,
+  mock_unsupported_C_SignUpdate,
+  mock_unsupported_C_SignFinal,
+  mock_unsupported_C_SignRecoverInit,
+  mock_unsupported_C_SignRecover,
+  mock_no_mechanisms_C_VerifyInit,
+  mock_not_initialized_C_Verify,
+  mock_unsupported_C_VerifyUpdate,
+  mock_unsupported_C_VerifyFinal,
+  mock_unsupported_C_VerifyRecoverInit,
+  mock_unsupported_C_VerifyRecover,
+  mock_unsupported_C_DigestEncryptUpdate,
+  mock_unsupported_C_DecryptDigestUpdate,
+  mock_unsupported_C_SignEncryptUpdate,
+  mock_unsupported_C_DecryptVerifyUpdate,
+  mock_unsupported_C_GenerateKey,
+  mock_no_mechanisms_C_GenerateKeyPair,
+  mock_no_mechanisms_C_WrapKey,
+  mock_no_mechanisms_C_UnwrapKey,
+  mock_no_mechanisms_C_DeriveKey,
+  mock_unsupported_C_SeedRandom,
+  mock_unsupported_C_GenerateRandom,
+  mock_C_GetFunctionStatus,
+  mock_C_CancelFunction,
+  mock_unsupported_C_WaitForSlotEvent
+};
diff --git a/tests/mock-pkcs11.h b/tests/mock-pkcs11.h
new file mode 100644 (file)
index 0000000..40ef1f2
--- /dev/null
@@ -0,0 +1,352 @@
+/*
+ * Copyright (C) 2010-2012 Stefan Walter
+ * Copyright (C) 2011 Collabora Ltd.
+ *
+ * This program 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 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser 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.
+ */
+
+#include <glib.h>
+
+#include <gcr/gcr.h>
+
+#include <gck/pkcs11.h>
+#include <gck/pkcs11x.h>
+
+#ifndef MOCK_MODULE_H
+#define MOCK_MODULE_H
+
+extern CK_FUNCTION_LIST mock_default_functions;
+
+CK_RV               mock_C_Initialize                          (CK_VOID_PTR pInitArgs);
+
+CK_RV               mock_C_Finalize                            (CK_VOID_PTR pReserved);
+
+CK_RV               mock_C_GetInfo                             (CK_INFO_PTR pInfo);
+
+CK_RV               mock_C_GetFunctionList                     (CK_FUNCTION_LIST_PTR_PTR list);
+
+CK_RV               mock_C_GetSlotList                         (CK_BBOOL tokenPresent,
+                                                                CK_SLOT_ID_PTR pSlotList,
+                                                                CK_ULONG_PTR pulCount);
+
+CK_RV               mock_C_GetSlotInfo                         (CK_SLOT_ID slotID,
+                                                                CK_SLOT_INFO_PTR pInfo);
+
+CK_RV               mock_C_GetTokenInfo                        (CK_SLOT_ID slotID,
+                                                                CK_TOKEN_INFO_PTR pInfo);
+
+CK_RV               mock_C_GetMechanismList                    (CK_SLOT_ID slotID,
+                                                                CK_MECHANISM_TYPE_PTR pMechanismList,
+                                                                CK_ULONG_PTR pulCount);
+
+CK_RV               mock_C_GetMechanismInfo                    (CK_SLOT_ID slotID,
+                                                                CK_MECHANISM_TYPE type,
+                                                                CK_MECHANISM_INFO_PTR pInfo);
+
+CK_RV               mock_unsupported_C_InitToken               (CK_SLOT_ID slotID,
+                                                                CK_UTF8CHAR_PTR pPin,
+                                                                CK_ULONG ulPinLen,
+                                                                CK_UTF8CHAR_PTR pLabel);
+
+CK_RV               mock_unsupported_C_WaitForSlotEvent        (CK_FLAGS flags,
+                                                                CK_SLOT_ID_PTR pSlot,
+                                                                CK_VOID_PTR pReserved);
+
+CK_RV               mock_C_OpenSession                         (CK_SLOT_ID slotID,
+                                                                CK_FLAGS flags,
+                                                                CK_VOID_PTR pApplication,
+                                                                CK_NOTIFY Notify,
+                                                                CK_SESSION_HANDLE_PTR phSession);
+
+CK_RV               mock_C_CloseSession                        (CK_SESSION_HANDLE hSession);
+
+CK_RV               mock_C_CloseAllSessions                    (CK_SLOT_ID slotID);
+
+CK_RV               mock_C_GetFunctionStatus                   (CK_SESSION_HANDLE hSession);
+
+CK_RV               mock_C_CancelFunction                      (CK_SESSION_HANDLE hSession);
+
+CK_RV               mock_C_GetSessionInfo                      (CK_SESSION_HANDLE hSession,
+                                                                CK_SESSION_INFO_PTR pInfo);
+
+CK_RV               mock_unsupported_C_InitPIN                 (CK_SESSION_HANDLE hSession,
+                                                                CK_UTF8CHAR_PTR pPin,
+                                                                CK_ULONG ulPinLen);
+
+CK_RV               mock_unsupported_C_SetPIN                  (CK_SESSION_HANDLE hSession,
+                                                                CK_UTF8CHAR_PTR pOldPin,
+                                                                CK_ULONG ulOldLen,
+                                                                CK_UTF8CHAR_PTR pNewPin,
+                                                                CK_ULONG ulNewLen);
+
+CK_RV               mock_unsupported_C_GetOperationState       (CK_SESSION_HANDLE hSession,
+                                                                CK_BYTE_PTR pOperationState,
+                                                                CK_ULONG_PTR pulOperationStateLen);
+
+CK_RV               mock_unsupported_C_SetOperationState       (CK_SESSION_HANDLE hSession,
+                                                                CK_BYTE_PTR pOperationState,
+                                                                CK_ULONG ulOperationStateLen,
+                                                                CK_OBJECT_HANDLE hEncryptionKey,
+                                                                CK_OBJECT_HANDLE hAuthenticationKey);
+
+CK_RV               mock_unsupported_C_Login                   (CK_SESSION_HANDLE hSession,
+                                                                CK_USER_TYPE userType,
+                                                                CK_UTF8CHAR_PTR pPin,
+                                                                CK_ULONG pPinLen);
+
+CK_RV               mock_unsupported_C_Logout                  (CK_SESSION_HANDLE hSession);
+
+CK_RV               mock_readonly_C_CreateObject               (CK_SESSION_HANDLE hSession,
+                                                                CK_ATTRIBUTE_PTR pTemplate,
+                                                                CK_ULONG ulCount,
+                                                                CK_OBJECT_HANDLE_PTR phObject);
+
+CK_RV               mock_unsupported_C_CopyObject              (CK_SESSION_HANDLE hSession,
+                                                                CK_OBJECT_HANDLE hObject,
+                                                                CK_ATTRIBUTE_PTR pTemplate,
+                                                                CK_ULONG ulCount,
+                                                                CK_OBJECT_HANDLE_PTR phNewObject);
+
+CK_RV               mock_readonly_C_DestroyObject              (CK_SESSION_HANDLE hSession,
+                                                                CK_OBJECT_HANDLE hObject);
+
+CK_RV               mock_unsupported_C_GetObjectSize           (CK_SESSION_HANDLE hSession,
+                                                                CK_OBJECT_HANDLE hObject,
+                                                                CK_ULONG_PTR pulSize);
+
+CK_RV               mock_C_GetAttributeValue                   (CK_SESSION_HANDLE hSession,
+                                                                CK_OBJECT_HANDLE hObject,
+                                                                CK_ATTRIBUTE_PTR pTemplate,
+                                                                CK_ULONG ulCount);
+
+CK_RV               mock_readonly_C_SetAttributeValue          (CK_SESSION_HANDLE hSession,
+                                                                CK_OBJECT_HANDLE hObject,
+                                                                CK_ATTRIBUTE_PTR pTemplate,
+                                                                CK_ULONG ulCount);
+
+CK_RV               mock_C_FindObjectsInit                     (CK_SESSION_HANDLE hSession,
+                                                                CK_ATTRIBUTE_PTR pTemplate,
+                                                                CK_ULONG ulCount);
+
+CK_RV               mock_C_FindObjects                         (CK_SESSION_HANDLE hSession,
+                                                                CK_OBJECT_HANDLE_PTR phObject,
+                                                                CK_ULONG ulMaxObjectCount,
+                                                                CK_ULONG_PTR pulObjectCount);
+
+CK_RV               mock_fail_C_FindObjects                    (CK_SESSION_HANDLE hSession,
+                                                                CK_OBJECT_HANDLE_PTR phObject,
+                                                                CK_ULONG ulMaxObjectCount,
+                                                                CK_ULONG_PTR pulObjectCount);
+
+CK_RV               mock_C_FindObjectsFinal                    (CK_SESSION_HANDLE hSession);
+
+CK_RV               mock_no_mechanisms_C_EncryptInit           (CK_SESSION_HANDLE hSession,
+                                                                CK_MECHANISM_PTR pMechanism,
+                                                                CK_OBJECT_HANDLE hKey);
+
+CK_RV               mock_not_initialized_C_Encrypt             (CK_SESSION_HANDLE hSession,
+                                                                CK_BYTE_PTR pData,
+                                                                CK_ULONG ulDataLen,
+                                                                CK_BYTE_PTR pEncryptedData,
+                                                                CK_ULONG_PTR pulEncryptedDataLen);
+
+CK_RV               mock_unsupported_C_EncryptUpdate           (CK_SESSION_HANDLE hSession,
+                                                                CK_BYTE_PTR pPart,
+                                                                CK_ULONG ulPartLen,
+                                                                CK_BYTE_PTR pEncryptedPart,
+                                                                CK_ULONG_PTR pulEncryptedPartLen);
+
+CK_RV               mock_unsupported_C_EncryptFinal            (CK_SESSION_HANDLE hSession,
+                                                                CK_BYTE_PTR pLastEncryptedPart,
+                                                                CK_ULONG_PTR pulLastEncryptedPartLen);
+
+CK_RV               mock_no_mechanisms_C_DecryptInit           (CK_SESSION_HANDLE hSession,
+                                                                CK_MECHANISM_PTR pMechanism,
+                                                                CK_OBJECT_HANDLE hKey);
+
+CK_RV               mock_not_initialized_C_Decrypt             (CK_SESSION_HANDLE hSession,
+                                                                CK_BYTE_PTR pEncryptedData,
+                                                                CK_ULONG ulEncryptedDataLen,
+                                                                CK_BYTE_PTR pData,
+                                                                CK_ULONG_PTR pulDataLen);
+
+CK_RV               mock_unsupported_C_DecryptUpdate           (CK_SESSION_HANDLE hSession,
+                                                                CK_BYTE_PTR pEncryptedPart,
+                                                                CK_ULONG ulEncryptedPartLen,
+                                                                CK_BYTE_PTR pPart,
+                                                                CK_ULONG_PTR pulPartLen);
+
+CK_RV               mock_unsupported_C_DecryptFinal            (CK_SESSION_HANDLE hSession,
+                                                                CK_BYTE_PTR pLastPart,
+                                                                CK_ULONG_PTR pulLastPartLen);
+
+CK_RV               mock_unsupported_C_DigestInit              (CK_SESSION_HANDLE hSession,
+                                                                CK_MECHANISM_PTR pMechanism);
+
+CK_RV               mock_unsupported_C_Digest                  (CK_SESSION_HANDLE hSession,
+                                                                CK_BYTE_PTR pData,
+                                                                CK_ULONG ulDataLen,
+                                                                CK_BYTE_PTR pDigest,
+                                                                CK_ULONG_PTR pulDigestLen);
+
+CK_RV               mock_unsupported_C_DigestUpdate            (CK_SESSION_HANDLE hSession,
+                                                                CK_BYTE_PTR pPart,
+                                                                CK_ULONG ulPartLen);
+
+CK_RV               mock_unsupported_C_DigestKey               (CK_SESSION_HANDLE hSession,
+                                                                CK_OBJECT_HANDLE hKey);
+
+CK_RV               mock_unsupported_C_DigestFinal             (CK_SESSION_HANDLE hSession,
+                                                                CK_BYTE_PTR pDigest,
+                                                                CK_ULONG_PTR pulDigestLen);
+
+CK_RV               mock_no_mechanisms_C_SignInit              (CK_SESSION_HANDLE hSession,
+                                                                CK_MECHANISM_PTR pMechanism,
+                                                                CK_OBJECT_HANDLE hKey);
+
+CK_RV               mock_not_initialized_C_Sign                (CK_SESSION_HANDLE hSession,
+                                                                CK_BYTE_PTR pData,
+                                                                CK_ULONG ulDataLen,
+                                                                CK_BYTE_PTR pSignature,
+                                                                CK_ULONG_PTR pulSignatureLen);
+
+CK_RV               mock_unsupported_C_SignUpdate              (CK_SESSION_HANDLE hSession,
+                                                                CK_BYTE_PTR pPart,
+                                                                CK_ULONG ulPartLen);
+
+CK_RV               mock_unsupported_C_SignFinal               (CK_SESSION_HANDLE hSession,
+                                                                CK_BYTE_PTR pSignature,
+                                                                CK_ULONG_PTR pulSignatureLen);
+
+CK_RV               mock_unsupported_C_SignRecoverInit         (CK_SESSION_HANDLE hSession,
+                                                                CK_MECHANISM_PTR pMechanism,
+                                                                CK_OBJECT_HANDLE hKey);
+
+CK_RV               mock_unsupported_C_SignRecover             (CK_SESSION_HANDLE hSession,
+                                                                CK_BYTE_PTR pData,
+                                                                CK_ULONG ulDataLen,
+                                                                CK_BYTE_PTR pSignature,
+                                                                CK_ULONG_PTR pulSignatureLen);
+
+CK_RV               mock_no_mechanisms_C_VerifyInit            (CK_SESSION_HANDLE hSession,
+                                                                CK_MECHANISM_PTR pMechanism,
+                                                                CK_OBJECT_HANDLE hKey);
+
+CK_RV               mock_not_initialized_C_Verify              (CK_SESSION_HANDLE hSession,
+                                                                CK_BYTE_PTR pData,
+                                                                CK_ULONG ulDataLen,
+                                                                CK_BYTE_PTR pSignature,
+                                                                CK_ULONG ulSignatureLen);
+
+CK_RV               mock_unsupported_C_VerifyUpdate            (CK_SESSION_HANDLE hSession,
+                                                                CK_BYTE_PTR pPart,
+                                                                CK_ULONG ulPartLen);
+
+CK_RV               mock_unsupported_C_VerifyFinal             (CK_SESSION_HANDLE hSession,
+                                                                CK_BYTE_PTR pSignature,
+                                                                CK_ULONG pulSignatureLen);
+
+CK_RV               mock_unsupported_C_VerifyRecoverInit       (CK_SESSION_HANDLE hSession,
+                                                                CK_MECHANISM_PTR pMechanism,
+                                                                CK_OBJECT_HANDLE hKey);
+
+CK_RV               mock_unsupported_C_VerifyRecover           (CK_SESSION_HANDLE hSession,
+                                                                CK_BYTE_PTR pSignature,
+                                                                CK_ULONG pulSignatureLen,
+                                                                CK_BYTE_PTR pData,
+                                                                CK_ULONG_PTR pulDataLen);
+
+CK_RV               mock_unsupported_C_DigestEncryptUpdate     (CK_SESSION_HANDLE hSession,
+                                                                CK_BYTE_PTR pPart,
+                                                                CK_ULONG ulPartLen,
+                                                                CK_BYTE_PTR pEncryptedPart,
+                                                                CK_ULONG_PTR ulEncryptedPartLen);
+
+CK_RV               mock_unsupported_C_DecryptDigestUpdate     (CK_SESSION_HANDLE hSession,
+                                                                CK_BYTE_PTR pEncryptedPart,
+                                                                CK_ULONG ulEncryptedPartLen,
+                                                                CK_BYTE_PTR pPart,
+                                                                CK_ULONG_PTR pulPartLen);
+
+CK_RV               mock_unsupported_C_SignEncryptUpdate       (CK_SESSION_HANDLE hSession,
+                                                                CK_BYTE_PTR pPart,
+                                                                CK_ULONG ulPartLen,
+                                                                CK_BYTE_PTR pEncryptedPart,
+                                                                CK_ULONG_PTR ulEncryptedPartLen);
+
+CK_RV               mock_unsupported_C_DecryptVerifyUpdate     (CK_SESSION_HANDLE hSession,
+                                                                CK_BYTE_PTR pEncryptedPart,
+                                                                CK_ULONG ulEncryptedPartLen,
+                                                                CK_BYTE_PTR pPart,
+                                                                CK_ULONG_PTR pulPartLen);
+
+CK_RV               mock_unsupported_C_GenerateKey             (CK_SESSION_HANDLE hSession,
+                                                                CK_MECHANISM_PTR pMechanism,
+                                                                CK_ATTRIBUTE_PTR pTemplate,
+                                                                CK_ULONG ulCount,
+                                                                CK_OBJECT_HANDLE_PTR phKey);
+
+CK_RV               mock_no_mechanisms_C_GenerateKeyPair         (CK_SESSION_HANDLE hSession,
+                                                                CK_MECHANISM_PTR pMechanism,
+                                                                CK_ATTRIBUTE_PTR pPublicKeyTemplate,
+                                                                CK_ULONG ulPublicKeyAttributeCount,
+                                                                CK_ATTRIBUTE_PTR pPrivateKeyTemplate,
+                                                                CK_ULONG ulPrivateKeyAttributeCount,
+                                                                CK_OBJECT_HANDLE_PTR phPublicKey,
+                                                                CK_OBJECT_HANDLE_PTR phPrivateKey);
+
+CK_RV               mock_no_mechanisms_C_WrapKey                 (CK_SESSION_HANDLE hSession,
+                                                                CK_MECHANISM_PTR pMechanism,
+                                                                CK_OBJECT_HANDLE hWrappingKey,
+                                                                CK_OBJECT_HANDLE hKey,
+                                                                CK_BYTE_PTR pWrappedKey,
+                                                                CK_ULONG_PTR pulWrappedKeyLen);
+
+CK_RV               mock_no_mechanisms_C_UnwrapKey               (CK_SESSION_HANDLE hSession,
+                                                                CK_MECHANISM_PTR pMechanism,
+                                                                CK_OBJECT_HANDLE pUnwrappingKey,
+                                                                CK_BYTE_PTR pWrappedKey,
+                                                                CK_ULONG pulWrappedKeyLen,
+                                                                CK_ATTRIBUTE_PTR pTemplate,
+                                                                CK_ULONG ulCount,
+                                                                CK_OBJECT_HANDLE_PTR phKey);
+
+CK_RV               mock_no_mechanisms_C_DeriveKey               (CK_SESSION_HANDLE hSession,
+                                                                CK_MECHANISM_PTR pMechanism,
+                                                                CK_OBJECT_HANDLE hBaseKey,
+                                                                CK_ATTRIBUTE_PTR pTemplate,
+                                                                CK_ULONG ulCount,
+                                                                CK_OBJECT_HANDLE_PTR phKey);
+
+CK_RV               mock_unsupported_C_SeedRandom              (CK_SESSION_HANDLE hSession,
+                                                                CK_BYTE_PTR pSeed,
+                                                                CK_ULONG ulSeedLen);
+
+CK_RV               mock_unsupported_C_GenerateRandom          (CK_SESSION_HANDLE hSession,
+                                                                CK_BYTE_PTR pRandomData,
+                                                                CK_ULONG ulRandomLen);
+
+CK_OBJECT_HANDLE    mock_module_add_certificate                (GcrCertificate *cert);
+
+CK_OBJECT_HANDLE    mock_module_add_assertion                  (GcrCertificate *cert,
+                                                                CK_X_ASSERTION_TYPE assertion_type,
+                                                                const gchar *purpose,
+                                                                const gchar *peer);
+
+#define MOCK_SLOT_ONE_ID  1
+#define MOCK_SLOT_ONE_URI "pkcs11:manufacturer=MOCK%20MANUFACTURER;serial=MOCK%20SERIAL"
+
+#endif /* MOCK_MODULE_H */