ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
DISTCHECK_CONFIGURE_FLAGS = \
- --enable-empathy-av \
--disable-scrollkeeper \
--disable-schemas-install
+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)
============
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])
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])
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
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)
# -----------------------------------------------------------
# -----------------------------------------------------------
# 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
# -----------------------------------------------------------
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
# -----------------------------------------------------------
tests/Makefile
tests/interactive/Makefile
tests/xml/Makefile
+ tests/certificates/Makefile
tools/Makefile
])
AC_OUTPUT
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}
"
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
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
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)|" $< > $@
Empathy.Call.client \
Empathy.FileTransfer.client
-if HAVE_EMPATHY_AV
-clientfile_DATA += \
- Empathy.AudioVideo.client
-endif
-
htmldir = $(datadir)/empathy
html_DATA = \
Template.html \
$(html_DATA) \
$(clientfile_DATA) \
$(servicefile_in_files) \
- $(gsettings_files) \
+ $(gsettings_SCHEMAS) \
$(NULL)
DISTCLEANFILES = \
--- /dev/null
+<?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>
+++ /dev/null
-<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>
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");
}
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
{
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;
}
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;
}
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;
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);
EmpathyIrcNetworkChooser *
empathy_account_widget_irc_build_simple (EmpathyAccountWidget *self,
- const char *filename)
+ const char *filename,
+ GtkWidget **box)
{
EmpathyAccountWidgetIrc *settings;
EmpathyAccountSettings *ac_settings;
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);
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
G_BEGIN_DECLS
struct _EmpathyAccountWidgetUIDetails {
- GtkWidget *widget;
-
GtkBuilder *gui;
char *default_focus;
empathy_account_widget_changed (sip_settings->self);
}
-void
+GtkWidget *
empathy_account_widget_sip_build (EmpathyAccountWidget *self,
const char *filename,
GtkWidget **grid_common_settings)
"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 (
gtk_widget_show (settings->combobox_keep_alive_mechanism);
}
- self->ui_details->widget = vbox_settings;
+ return vbox_settings;
}
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);
<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>
#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
{
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);
}
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);
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
{
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);
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);
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);
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",
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)
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,
{
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,
self->priv->remember_password_widget = GTK_WIDGET (
gtk_builder_get_object (self->ui_details->gui, "remember_password"));
}
+
+ return box;
}
static void
return NO_SERVICE;
}
-static void
+static GtkWidget *
account_widget_build_jabber (EmpathyAccountWidget *self,
const char *filename)
{
GtkWidget *label_example;
GtkWidget *expander_advanced;
GtkWidget *entry_id;
+ GtkWidget *box;
Service service;
service = account_widget_get_service (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,
{
/* 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,
{
/* 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);
/* 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,
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);
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,
{
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);
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,
{
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);
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,
{
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,
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,
{
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,
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
{ #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;
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,
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 },
WIDGET (sofiasip, sip),
};
const gchar *protocol, *cm_name;
+ GtkWidget *box;
account = empathy_account_settings_get_account (self->priv->settings);
filename = empathy_file_lookup (widgets[i].file,
"libempathy-gtk");
- widgets[i].func (self, filename);
+ box = widgets[i].func (self, filename);
g_free (filename);
break;
{
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)
{
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",
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);
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 *
typedef struct _EmpathyAccountWidgetUIDetails EmpathyAccountWidgetUIDetails;
typedef struct {
- GObject parent;
+ GtkBox parent;
EmpathyAccountWidgetUIDetails *ui_details;
} 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);
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);
}
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,
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);
}
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);
#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>
}
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, ¤t, FALSE);
#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>
}
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);
}
}
#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"
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);
}
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);
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)
{
#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>
GtkTreeModelFilterVisibleFunc custom_filter;
gpointer custom_filter_data;
+
+ GtkCellRenderer *text_renderer;
} EmpathyIndividualViewPriv;
typedef struct
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;
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);
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)
{
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)
{
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))
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)->
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 (
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
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 (
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
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 {
{"false", empathy_plist_parse_boolean},
{"data", empathy_plist_parse_data},
{"dict", empathy_plist_parse_dict},
- {"array", empathy_plist_parse_array},
{NULL, NULL} };
static ParseCallback
#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>
typedef struct {
EmpathyPresenceManager *presence_mgr;
- EmpathyConnectivity *connectivity;
+ GNetworkMonitor *connectivity;
gboolean editing_status;
int block_set_editing;
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);
gtk_entry_set_icon_sensitive (GTK_ENTRY (entry),
GTK_ENTRY_ICON_PRIMARY,
FALSE);
+ g_free (status);
+ g_free (tooltip_text);
} else {
GtkWidget *window;
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);
}
static void
-presence_chooser_connectivity_state_change (EmpathyConnectivity *connectivity,
+presence_chooser_network_change (GNetworkMonitor *connectivity,
gboolean new_online,
EmpathyPresenceChooser *chooser)
{
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);
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 \
empathy-tp-chat.h \
empathy-tp-contact-factory.h \
empathy-tp-roomlist.h \
- empathy-tp-streamed-media.h \
empathy-types.h \
empathy-utils.h
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 \
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
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;
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);
+ }
+}
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__*/
+++ /dev/null
-/* -*- 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");
-}
+++ /dev/null
-/* -*- 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__ */
-
+++ /dev/null
-/* -*- 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);
- }
-}
+++ /dev/null
-/* -*- 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__ */
-
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)
/* 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);
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++)
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;
}
}
-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,
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)
{
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 */
(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)
{
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;
-}
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);
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__ */
#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
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);
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);
-/* -*- 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-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);
}
/**
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
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);
+ }
}
-/* -*- 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
};
typedef union {
- EmpathyTpContactFactoryContactsByIdCb ids_cb;
- EmpathyTpContactFactoryContactsByHandleCb handles_cb;
EmpathyTpContactFactoryContactCb contact_cb;
} GetContactsCb;
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,
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,
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,
+++ /dev/null
-/*
- * 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;
-}
+++ /dev/null
-/* -*- 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__ */
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;
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;
}
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;
}
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
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
[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
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"
#. 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"
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"
#. * 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"
#: ../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"
#: ../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?"
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"
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?"
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"
"/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 "
"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."
"/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"
#. 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"
#. 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"
#. * 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"
#. 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
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)"
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
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"
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"
#. 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…"
#. 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…"
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. "
#. 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."
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?"
"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?"
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"
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 "
"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 "
"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."
"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."
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"
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"
"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"
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"
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"
"seleccioneu <span style=\"italic\">Edita → Comptes</span> a la llista de "
"contactes."
+#~ msgid "_Enable"
+#~ msgstr "_Habilita"
+
+#~ msgid "_Disable"
+#~ msgstr "_Inhabilita"
+
#~ msgid "%s"
#~ msgstr "%s"
#~ msgid "All"
#~ msgstr "Tots"
-#~ msgid "_Enabled"
-#~ msgstr "_Habilitat"
-
#~ msgid "Date"
#~ msgstr "Data"
#~ 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"
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"
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"
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."
"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 "
"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."
"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."
"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."
"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"
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"
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"
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"
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:"
#: ../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
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"
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."
"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?"
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"
"/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 "
"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."
"/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"
#. 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"
#. 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"
#. * 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"
#. 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
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
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
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"
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."
"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"
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 "
"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"
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:"
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:"
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"
#. 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"
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
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. "
"%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"
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. "
"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?"
"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?"
"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 ""
"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 "
"%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 "
"%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 "
"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"
"\">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"
#: ../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"
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 "
"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 "
"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."
"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."
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"
#: ../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."
"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"
#. 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"
"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"
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"
#: ../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 ""
"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"
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."
"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"
msgid "Empathy Debugger"
msgstr "Empathy Debugger"
-#: ../src/empathy-chat.c:107
+#: ../src/empathy-chat.c:109
msgid "- Empathy Chat Client"
msgstr "- Empathy Chat Client"
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"
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"
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"
"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"
#. 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"
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."
"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."
"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 "
"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."
"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."
"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."
"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."
"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 ""
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"
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"
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:"
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"
#. * 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"
#: ../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"
#: ../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"
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"
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."
"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?"
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?"
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"
"/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 "
"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."
"/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"
#. 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"
#. 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"
#. * 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"
#. 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)"
#. 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
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
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"
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."
"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"
#. 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 "
"¿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"
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:"
#. 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…"
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. "
#. 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 "
"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?"
"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?"
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"
#. 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"
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 "
"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 "
"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 "
"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 ""
"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 ""
"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"
"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"
#: ../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"
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 "
"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 "
"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."
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"
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"
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"
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"
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"
#. 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"
"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"
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"
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 ""
"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"
msgid "- Empathy Accounts"
msgstr ": Cuentas en Empathy"
-#: ../src/empathy-accounts.c:231
+#: ../src/empathy-accounts.c:230
msgid "Empathy Accounts"
msgstr "Cuentas en Empathy"
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"
#. 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"
"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."
#~ msgid "_For:"
#~ msgstr "_Para:"
-#~ msgid "_Enabled"
-#~ msgstr "_Activada"
-
#~ msgid "%s is now offline."
#~ msgstr "Ahora %s está desconectado."
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"
#. 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"
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 "اینکه امپاتی دقت مکان را به دلیل حریم خصوصی کاهش دهد یا خیر."
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 "این منبع از قبل به کارگزار متصل شده است"
msgstr "نرمافزار شما خیلی قدیمی است"
#: ../libempathy/empathy-utils.c:375
-#| msgid "Interval (seconds)"
msgid "Internal error"
msgstr "خطا داخلی"
msgstr "در آینده"
#: ../libempathy/empathy-keyring.c:75
-#| msgid "Phrase not found"
msgid "Password not found"
msgstr "گذرواژه یافت نشد"
msgstr "تمام حسابها"
#: ../libempathy-gtk/empathy-account-widget.c:682
-#: ../src/empathy-import-widget.c:336
+#: ../src/empathy-import-widget.c:323
msgid "Account"
msgstr "حساب"
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 "نام کاربری:"
#: ../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 "پیشرفته"
#: ../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 "به خاطر سپردن گذرواژه"
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 "هیچکدام"
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 چیست؟"
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 شما چیست؟"
#. * 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>."
#: ../libempathy-gtk/empathy-chat.c:1724
#, c-format
-#| msgid "Topic set to: %s"
msgid "Topic set by %s to: %s"
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 "قطع شد"
#. 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
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 "لطفا اجازه بدهید بدانم چه زمانی برخط هستید. تشکر!"
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 "روز تولد"
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 "ترجیح داده شده"
msgstr "کد پستی"
#: ../libempathy-gtk/empathy-contactinfo-utils.c:138
-#| msgid "Appearance"
msgid "parcel"
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 "گروه"
msgstr "علاقهمندیها"
#: ../libempathy-gtk/empathy-individual-menu.c:1264
-#| msgid "telepathy-salut not installed"
msgid "gnome-contacts not installed"
msgstr "برنامهی gnome-contacts نصب نشده است"
#. 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 "پاک کردن از:"
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 "آشنا از این نوع گفتگو پشتیبانی نمیکند"
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 "خطایی در هنگام شروع گفتگو رُخ داد"
#. 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 "تماس _صوتی"
#: ../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> شکست خورد"
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 "پیامهای دلخواه..."
msgstr "گواهی نام میزبان: %s"
#: ../libempathy-gtk/empathy-tls-dialog.c:281
-#| msgid "Continue"
msgid "C_ontinue"
msgstr "_ادامه"
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 "پیام فوری (امپاتی)"
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?"
"شما درحال انتخاب حساب دیگری هستید، که این کار تغییرات شما را نادیده\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?"
msgstr "برای افزودن حساب جدید، اول از همه باید پسانهی لازم برای هر قراردادی را که میخواهید استفاده کنید، نصب کنید."
#: ../src/empathy-accounts-dialog.ui.h:6
-#| msgid "No protocol installed"
msgid "No protocol backends installed"
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 مربوط به گروه چندگانه"
#: ../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 "ناشناس"
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 "نمیتوان جریان ویدئویی را برقرار کرد"
#: ../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 "ناشناخته"
msgstr "صدا"
#: ../src/empathy-chat-window.c:289
-#| msgid "Hide the main window."
msgid "Close this window?"
msgstr "بستن این پنجره؟"
#: ../src/empathy-chat-window.c:314
#, c-format
-#| msgid "Level "
msgid "Leave %s?"
msgstr "ترک %s؟"
msgstr "بستن پنجره"
#: ../src/empathy-chat-window.c:334
-#| msgid "Level "
msgid "Leave room"
msgstr "ترک اتاق"
msgstr "در حال دریافت تماس ویدئویی"
#: ../src/empathy-event-manager.c:522
-#: ../src/empathy-call-window.c:1519
+#: ../src/empathy-call-window.c:1483
msgid "Incoming call"
msgstr "در حال دریافت تماس"
#: ../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"
#: ../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"
msgstr "انتقالهای کامل شده، لغو شده و خراب شده از فهرست حذف شوند"
#: ../src/empathy-import-dialog.c:76
-#| msgid "Import"
msgid "_Import"
msgstr "_وارد کردن"
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 "منبع"
msgstr "فهرست آشناها"
#: ../src/empathy-roster-window.ui.h:1
-#| msgid "_Accounts"
msgid "Account settings"
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"
"نیاز به گذرواژه: %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 "توقف فهرست کردن اتاق امکان پذیر نشد"
msgstr "گفتگوی جدید"
#: ../src/empathy-preferences.c:169
-#| msgid "Contact goes online"
msgid "Contact comes online"
msgstr "آشنا برخط میشود"
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 "ترجیحات"
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 "دادهها برای یک ارسال بسیار بزرگ است. لطفا رویدادها را بر روی یک پرونده ذخیره کنید."
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 "فراهم کردن"
#. 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 "بالا بردن"
msgstr "چه نوع حساب گپی دارید؟"
#: ../libempathy-gtk/empathy-new-account-dialog.c:166
-#| msgid "New account"
msgid "Adding new account"
msgstr "اضافه کردن حساب جدید"
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 "امپاتی میتواند به طور خودکار افرادی که بر روی شبکه مشابه هستند را پیدا کند تا با آنها گپ بزنید. اگر میخواهید از این قابلیت استفاده کنید، بررسی کنید که جزئیات زیر درست باشند."
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 "_غیرفعالکردن"
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"
#. 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"
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."
"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."
"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 "
"«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 ""
"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."
"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."
"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 ""
"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 ""
"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."
"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."
"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 ""
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"
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"
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:"
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"
#. * 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"
#: ../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"
#: ../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"
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"
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."
"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?"
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?"
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"
"/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 "
"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."
"/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"
#. 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"
#. 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"
#. * 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"
#. 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)"
#. 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
# 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
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"
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."
"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"
#. 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 "
"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"
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:"
#. 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…"
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. "
#. 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 "
"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?"
"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?"
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"
#. 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"
# 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 "
"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 "
"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 "
"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"
"«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"
#: ../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"
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 "
"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 "
"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"
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."
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"
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"
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"
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"
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"
#. 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"
"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"
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"
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 ""
"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"
msgstr "- Contas de Empathy"
# rever
-#: ../src/empathy-accounts.c:231
+#: ../src/empathy-accounts.c:230
msgid "Empathy Accounts"
msgstr "Contas de Empathy"
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"
#. 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"
"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."
#~ msgid "_For:"
#~ msgstr "_Por:"
-#~ msgid "_Enabled"
-#~ msgstr "_Activado"
-
#~ msgid "Context"
#~ msgstr "Contexto"
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"
#. 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"
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"
msgstr "כל החשבונות"
#: ../libempathy-gtk/empathy-account-widget.c:682
-#: ../src/empathy-import-widget.c:336
+#: ../src/empathy-import-widget.c:323
msgid "Account"
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 "יצירת חשבון חדש על השרת"
#. * 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 "חשבון חדש"
#: ../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 "ססמ_ה:"
#: ../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 "שמירת הססמה"
#: ../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"
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 "ללא"
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 "ש_ם משתמש:"
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 התנתק"
#. 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 סולק"
#. 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 עזב את החדר"
#. * 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"
#. 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)"
#. 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
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
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"
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 "קבוצה"
#. 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 "הוספת _איש קשר…"
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 "מחיקה עד מ־:"
#. 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 "הודעות מותאמות אישית…"
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"
#. 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?"
"אתה עומד לבחור חשבון חדש, מה שיבטל\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?"
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"
#. 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 של קבוצת התשדורת"
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 "לא ניתן לקיים תזרים וידאו"
#: ../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 "לא ידוע"
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 "הודעה מוקלדת."
msgstr "שיחה קולית נכנסת"
#: ../src/empathy-event-manager.c:522
-#: ../src/empathy-call-window.c:1519
+#: ../src/empathy-call-window.c:1483
msgid "Incoming call"
msgstr "שיחה נכנסת"
#: ../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"
#: ../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"
msgstr "העברת קבצים נכנסת מ־%s"
#: ../src/empathy-event-manager.c:1146
-#: ../src/empathy-roster-window.c:374
+#: ../src/empathy-roster-window.c:373
msgid "Password required"
msgstr "נדרשת ססמה"
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 "רשימת אנשי קשר"
#. 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"
"נדרשת ססמה: %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 "לא ניתן לעצור את הצגת החדרים"
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 "העדפות"
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 "הזמנה"
msgid "- Empathy Accounts"
msgstr "- חשבונות Empathy"
-#: ../src/empathy-accounts.c:231
+#: ../src/empathy-accounts.c:230
msgid "Empathy Accounts"
msgstr "חשבונות Empathy"
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 "הזנה"
#. 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"
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"
#~ msgid "_For:"
#~ msgstr "_ערך:"
-#~ msgid "_Enabled"
-#~ msgstr "מו_פעל"
-
#~ msgid "%s is now offline."
#~ msgstr "%s מנותק/ת כעת."
#~ msgid "Re_name"
#~ msgstr "שנה _שם"
-#~ msgid "Rename"
-#~ msgstr "שנה שם"
-
#~ msgid "_Use for chat rooms"
#~ msgstr "_שימוש בחדרי שיחה"
# 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"
#. 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"
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."
"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."
"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 "
"å 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."
"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."
"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."
"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."
"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 ""
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"
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"
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"
#. * 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"
#: ../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"
#: ../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"
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"
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?"
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"
"/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 "
"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."
"/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"
#. 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"
#. 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"
#. * 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"
#. 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)"
#. 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
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
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"
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."
"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"
#. 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 "
"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"
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:"
#. 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 …"
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. "
#. 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 "
"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?"
"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?"
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"
#. 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"
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 "
"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 "
"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 "
"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 ""
"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 ""
"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"
"«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"
#: ../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"
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 "
"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 "
"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."
"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"
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"
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"
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"
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"
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"
#. 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"
"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"
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"
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"
msgid "- Empathy Accounts"
msgstr "- Empathy-kontoer"
-#: ../src/empathy-accounts.c:231
+#: ../src/empathy-accounts.c:230
msgid "Empathy Accounts"
msgstr "Empathy-kontoer"
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"
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"
#. 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"
"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
#. 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"
#: ../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"
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"
#: ../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"
#: ../libempathy/empathy-utils.c:375
#, fuzzy
+#| msgid "Interval (seconds)"
msgid "Internal error"
msgstr "Interval (sekundy)"
#: ../libempathy/empathy-keyring.c:75
#, fuzzy
+#| msgid "Phrase not found"
msgid "Password not found"
msgstr "Fráza sa nenašla"
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"
#. * 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"
#: ../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é"
#: ../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"
# * 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"
#. 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"
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?"
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"
"/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 "
"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."
"/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"
# 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"
#. 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ý"
#. 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ť"
#. * 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"
#. 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
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)"
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
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"
#: ../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:"
#: ../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"
#: ../libempathy-gtk/empathy-contactinfo-utils.c:138
#, fuzzy
+#| msgid "Appearance"
msgid "parcel"
msgstr "Vzhľad"
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"
#. 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…"
#: ../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á"
#: ../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."
#. add audio button
#: ../libempathy-gtk/empathy-new-call-dialog.c:233
#, fuzzy
+#| msgctxt "menu item"
+#| msgid "_Audio Call"
msgid "_Audio Call"
msgstr "_Zvukový 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"
#. 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…"
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"
#: ../libempathy-gtk/empathy-tls-dialog.c:281
#, fuzzy
+#| msgid "Continue"
msgid "C_ontinue"
msgstr "Pokračovať"
#: ../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ť"
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. "
#. 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ý."
#: ../src/empathy-accounts-dialog.c:608
#, fuzzy
+#| msgid "Connection has been refused"
msgid "Edit Connection Parameters"
msgstr "Pripojenie bolo zamietnuté"
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?"
# * 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?"
#: ../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"
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 "
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)"
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)"
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)"
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)"
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"
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."
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"
#: ../src/empathy-import-dialog.c:76
#, fuzzy
+#| msgid "Import"
msgid "_Import"
msgstr "Importovať"
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"
msgstr "Nová konverzácia"
#: ../src/empathy-preferences.c:169
+#| msgid "Contact goes online"
msgid "Contact comes online"
msgstr "Kontakt sa prihlásil"
"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
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ť"
msgid "- Empathy Accounts"
msgstr "- účty Empathy"
-#: ../src/empathy-accounts.c:231
+#: ../src/empathy-accounts.c:230
msgid "Empathy Accounts"
msgstr "Empathy - účty"
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"
#: ../src/empathy-call-window.c:3144
#, fuzzy
+#| msgid "Top Up..."
msgid "Top Up"
msgstr "Dobiť..."
#: ../libempathy-gtk/empathy-new-account-dialog.c:166
#, fuzzy
+#| msgid "New account"
msgid "Adding new account"
msgstr "Nový účet"
"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"
#~ "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:"
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"
#. 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"
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."
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"
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"
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:"
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"
#. * 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"
#: ../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"
#: ../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"
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"
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?"
"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
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?"
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"
#. 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"
#. 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"
#. * 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"
#. 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)"
#. 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
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
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"
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"
#. 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"
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"
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"
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:"
#. 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 ..."
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"
#. 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?"
"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?"
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"
#. 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"
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"
#: ../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"
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."
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)"
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)"
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)"
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"
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."
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"
#: ../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"
#: ../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"
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"
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"
#: ../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…"
#: ../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"
#: ../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"
#: ../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"
#. 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"
"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"
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"
#: ../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"
#: ../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"
#: ../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"
#: ../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"
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."
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"
msgid "- Empathy Accounts"
msgstr "- Empathy računi"
-#: ../src/empathy-accounts.c:231
+#: ../src/empathy-accounts.c:230
msgid "Empathy Accounts"
msgstr "Empathy računi"
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"
#. 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"
#: ../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"
#~ msgid "_For:"
#~ msgstr "_Za:"
-#~ msgid "_Enabled"
-#~ msgstr "_Omogoči"
-
#~ msgid "%s is now offline."
#~ msgstr "%s ni povezan."
# 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"
#. 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 ఖాతాలు"
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 నుపిలువుము"
msgstr "ఖాతాలు అన్నియు"
#: ../libempathy-gtk/empathy-account-widget.c:682
-#: ../src/empathy-import-widget.c:336
+#: ../src/empathy-import-widget.c:323
msgid "Account"
msgstr "ఖాతా"
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 "ఈ సేవకము పై ఒక కొత్త ఖాతాను సృష్టించు"
#. * 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 "కొత్త ఖాతా"
#: ../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 "అధునాతన"
#: ../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 "సంకేతపదం గుర్తించుకొను"
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 "ఏదీకాదు"
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 ఖాతా సంకేతపదం ఏమిటి?"
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 "
"/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."
"/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 అననుసంధానించారు"
#. 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 తోసివేయబడ్డారు"
#. 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 గదిని వదిలివెళ్ళారు"
#. * 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 వలె అయినారు"
#. 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)"
#. 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
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
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"
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."
"గుంపులో కనిపించాలనుకుంటున్న పరిచయాన్ని ఎంచుకోండి. మీరు ఒకటి కన్నా ఎక్కువ గుంపులను "
"ఎంచుకొనవచ్చు లేదా అస్సలు ఎంచుకొనపోవచ్చునని గమనించండి."
-#: ../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 "గుంపు"
#. 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)"
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 "దీని నుండి తొలగ్మిచు:"
#. 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 "అనురూపిత సందేశాలు..."
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. "
#. 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?"
"మీరు వేరే ఖాతాను ఎంచుకోబోతున్నారు, అది మీ మార్పులను\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?"
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 "ఎంపతి ఆడియో/వీడియో క్లయింటు"
#. 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 చిరునామా"
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 "
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 "
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 "
"ఉండి వుండవచ్చును."
#: ../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"
"సహాయం మెను లో 'డీబగ్' విండో నుండి సేకరించిన లాగ్లను అటాచ్."
#: ../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 "వీడియో ప్రవాహాన్ని స్థాపించలేకపోతుంది"
#: ../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 "తెలియదు"
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 "
"మీరు బయటకి వెళ్ళునప్పుడు ఈ విండోను మూయుము %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 "
"మీరు బయటకి వెళ్ళునప్పుడు %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 "ఒక సందేశమును టైపు చేస్తున్నారు."
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 "లోనికివచ్చు కాల్"
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 నుండి లోనికి కాల్ వస్తున్నది"
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 నుండి వీడియో కాల్ వస్తున్నది"
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 "సంకేతపదం అవసరం"
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 "పరిచయముల జాబితా"
#. 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"
"సంకేతపదము అవసరం: %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 "గది జాబితాకరణను ఆపలేకపోయింది"
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 "ప్రాధాన్యతలు"
"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 "ఆహ్వానించు"
msgid "- Empathy Accounts"
msgstr "- ఎంపతి ఖాతాలు"
-#: ../src/empathy-accounts.c:231
+#: ../src/empathy-accounts.c:230
msgid "Empathy Accounts"
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 "సమకూర్చు"
#. 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 "టాప్ అప్..."
"మీరు <span ను ఎంచుకొనుట ద్వార ఈ లక్షణము యొక్క వివరములను తర్వాత మార్చండి లేదా అచేతనము చేయండి "
"style=\"italic\">Edit → ఖాతాలు</span> చిరునామా జాబితాలో"
+#~ msgid "_Disable"
+#~ msgstr "అచేతనపరుచు (_D)"
+
#~| msgid "%s:"
#~ msgid "%s"
#~ msgstr "%s:"
"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"
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:
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 \
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 \
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 \
#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>
GtkWidget *enabled_switch;
GtkWidget *treeview;
+ GtkCellRenderer *name_renderer;
GtkWidget *button_add;
GtkWidget *button_remove;
* That's kinda ugly; cf bgo #640417.
*
* */
- EmpathyAccountWidget *setting_widget_object;
+ EmpathyAccountWidget *setting_widget;
gboolean connecting_show;
guint connecting_id;
TpAccountManager *account_manager;
EmpathyConnectionManagers *cms;
- EmpathyConnectivity *connectivity;
+ GNetworkMonitor *connectivity;
GtkWindow *parent_window;
TpAccount *initial_selection;
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"));
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)
{
GtkTreeIter iter;
gboolean creating;
- g_object_get (priv->setting_widget_object,
+ g_object_get (priv->setting_widget,
"creating-account", &creating, NULL);
if (!creating)
{
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)
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));
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);
}
}
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);
gtk_container_add (GTK_CONTAINER (alig), editor);
gtk_widget_show (alig);
gtk_widget_show (editor);
+ g_object_unref (contact);
}
static void
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);
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
{
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
response = gtk_dialog_run (GTK_DIALOG (dialog));
- if (response == GTK_RESPONSE_OK)
+ if (response == GTK_RESPONSE_APPLY)
{
EmpathyAccountSettings *settings;
TpAccount *account;
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)
{
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 *
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);
}
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 (
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,
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)
/* 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 */
{
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);
}
}
{
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);
}
}
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;
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);
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);
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
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:
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++)
GObjectClass *app_class;
gint retval;
- g_thread_init (NULL);
empathy_init ();
+ textdomain (GETTEXT_PACKAGE);
gtk_init (&argc, &argv);
empathy_gtk_init ();
/* 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);
gboolean echo_cancel;
gdouble volume;
gint volume_idle_id;
- GStaticMutex volume_mutex;
+ GMutex volume_mutex;
};
#define EMPATHY_GST_AUDIO_SINK_GET_PRIVATE(o) \
{
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,
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);
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)
{
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");
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)
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
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
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
{
/* the mixer track on src we follow and adjust */
GstMixerTrack *track;
- GMutex *lock;
+ GMutex lock;
guint level_idle_id;
guint volume_idle_id;
};
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;
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;
}
{
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;
}
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;
self->priv->track, volumes);
out:
- g_mutex_unlock (self->priv->lock);
+ g_mutex_unlock (&self->priv->lock);
self->priv->volume = volume;
}
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;
result = volumes[0]/(gdouble)self->priv->track->max_volume;
out:
- g_mutex_unlock (self->priv->lock);
+ g_mutex_unlock (&self->priv->lock);
return result;
}
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 ();
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);
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);
}
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;
}
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);
rms = MAX (db, rms);
}
- g_mutex_lock (priv->lock);
+ g_mutex_lock (&priv->lock);
priv->peak_level = peak;
priv->rms_level = rms;
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))
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))
* 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);
}
}
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);
+++ /dev/null
-/*
- * 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;
-}
}
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));
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)
{
#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"
#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
/* 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
GTimer *timer;
guint timer_id;
- GMutex *lock;
+ GMutex lock;
gboolean call_started;
gboolean sending_video;
CameraState camera_state;
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);
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);
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);
if (could_reset_pipeline)
{
- g_mutex_lock (priv->lock);
+ g_mutex_lock (&priv->lock);
g_timer_stop (priv->timer);
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
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);
GstPad *pad;
- g_mutex_lock (priv->lock);
+ g_mutex_lock (&priv->lock);
g_object_get (content, "media-type", &media_type, NULL);
}
- g_mutex_unlock (priv->lock);
+ g_mutex_unlock (&priv->lock);
return TRUE;
}
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 */
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 "
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",
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,
{
/* 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);
}
}
#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>
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);
}
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:
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))
{
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))
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);
/* 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);
#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>
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,
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);
}
}
-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,
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)
{
}
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,
}
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
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
{
tp_add_dispatch_operation_context_fail (context, &error);
return;
}
-
-out:
- tp_add_dispatch_operation_context_accept (context);
}
static void
typedef enum {
EMPATHY_EVENT_TYPE_CHAT,
- EMPATHY_EVENT_TYPE_VOIP,
EMPATHY_EVENT_TYPE_CALL,
EMPATHY_EVENT_TYPE_TRANSFER,
EMPATHY_EVENT_TYPE_SUBSCRIPTION,
#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>
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;
#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>
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);
* 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:
CASE(CHAT)
CASE(PRESENCE_ONLINE)
CASE(PRESENCE_OFFLINE)
- CASE(VOIP)
CASE(CALL)
CASE(TRANSFER)
CASE(INVITATION)
#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>
/* 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);
+++ /dev/null
-/*
- * 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);
-}
+++ /dev/null
-/*
- * 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__*/
+++ /dev/null
-/*
- * 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;
-}
+++ /dev/null
-/*
- * 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__*/
+++ /dev/null
-/*
- * 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);
-}
+++ /dev/null
-/*
- * 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__*/
+++ /dev/null
-/*
- * 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&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);
-}
+++ /dev/null
-/*
- * 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__*/
+++ /dev/null
-<?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>
+++ /dev/null
-/*
- * 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;
-}
+++ /dev/null
-/*
- * 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__*/
#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>
EmpathyChatroomManager *chatroom_manager;
EmpathyFTFactory *ft_factory;
EmpathyPresenceManager *presence_mgr;
- EmpathyConnectivity *connectivity;
GSettings *gsettings;
EmpathyNotificationsApprover *notifications_approver;
EmpathyConnectionAggregator *conn_aggregator;
#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);
/* 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"));
{
}
-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)
{
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 */
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,
EmpathyApp *app;
gint retval;
- g_thread_init (NULL);
g_type_init ();
#ifdef HAVE_LIBCHAMPLAIN
+++ /dev/null
-/* 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);
- }
-}
-
+++ /dev/null
-/* 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__ */
-
-
-SUBDIRS = interactive xml
+SUBDIRS = interactive xml certificates
CLEANFILES=
$(EMPATHY_CFLAGS) \
$(WARN_CFLAGS) \
$(DISABLE_DEPRECATED) \
+ -DSRCDIR=\""$(abs_srcdir)"\" \
$(NULL)
LDADD = \
$(EMPATHY_LIBS) \
$(NULL)
-TEST_PROGS = \
+tests_list = \
empathy-irc-server-test \
empathy-irc-network-test \
empathy-irc-network-manager-test \
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 \
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
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 $<
--- /dev/null
+EXTRA_DIST = \
+ collabora-ca.cer \
+ dhansak-collabora.cer
#include <libempathy/empathy-tls-certificate.h>
#include <libempathy/empathy-tls-verifier.h>
#include "test-helper.h"
+#include "mock-pkcs11.h"
#include <gcr/gcr.h>
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);
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)
}
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);
}
"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);
*/
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);
};
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 */
};
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);
};
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);
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)
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 ();
{
TpAccountManager *mgr;
- g_thread_init (NULL);
gtk_init (&argc, &argv);
empathy_gtk_init ();
g_set_application_name (PACKAGE_NAME);
--- /dev/null
+/*
+ * 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
+};
--- /dev/null
+/*
+ * 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 */