From: Guillaume Desmottes
Date: Fri, 17 Feb 2012 09:21:41 +0000 (+0100)
Subject: Merge remote-tracking branch 'glassrose/add-All-service-selection-in-debug-window'
X-Git-Url: https://git.0d.be/?p=empathy.git;a=commitdiff_plain;h=e7f57aeaf4c3433dc48fa953791ae6598b34ae3d;hp=1a35f5897e424a4e2273f64f428a798e0812f76f
Merge remote-tracking branch 'glassrose/add-All-service-selection-in-debug-window'
---
diff --git a/NEWS b/NEWS
index b3cc0a9e..d8a919eb 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,140 @@
+NEW in 3.3.5 (06/02/2012)
+============
+Bugs fixed:
+ - Fixed #667037, Crash when editing contacts (Guillaume Desmottes)
+ - Fixed #562462, "Open new chats in separate windows" has no obvious opposite (Danielle Madeley)
+ - Fixed #575669, Join Chatroom lists all accounts (Will Thompson)
+ - Fixed #576912, Highlights me in 1-1 conversations for no reason. (Will Thompson)
+ - Fixed #591667, Improve highlighting messages containing your nickname. (Will Thompson)
+ - Fixed #591756, Warn the user before leaving chat rooms (Will Thompson)
+ - Fixed #612216, Default conversation window size is too small (Ken VanDine)
+ - Fixed #643699, empathy-auth-client window should be modal to the desktop (Guillaume Desmottes)
+ - Fixed #660856, can't add a jabber account without a tld in username (Guillaume Desmottes)
+ - Fixed #662916, Empathy keeps scrolling up (Guillaume Desmottes)
+ - Fixed #666522, Notification unsure if a contact is coming or going (Guillaume Desmottes)
+ - Fixed #666714, Personal Information dialog for my XMPP account has a number of glitches (Guillaume Desmottes)
+ - Fixed #668336, Remove Edit -> Personnal information (Guillaume Desmottes)
+ - Fixed #668372, Adding a second Gmail account lists this account twice (Guillaume Desmottes)
+ - Fixed #668498, Stop watching connectivity change (Guillaume Desmottes)
+ - Fixed #668502, "No topic defined" displayed when reconnecting a private chat (Guillaume Desmottes)
+ - Fixed #668663, The default value of "sort-criterium" is NOT consistent with the description. (Guillaume Desmottes)
+ - Fixed #668681, empathy-auth-client window doesn't have proper name (Danielle Madeley)
+ - Fixed #668796, Is someone in Favourite/Favorite People really "Ungrouped" (Danielle Madeley)
+ - Fixed #669300, accounts assistant: salut widget has Close and Apply buttons (Guillaume Desmottes)
+ - Fixed #667467, Remove about Add New Preset section on the Saved Presets box (Yasumichi Akahoshi)
+ - Fixed #668364, I forgot to remove an unnecessary adjective (Yasumichi Akahoshi)
+
+Translations:
+ - Updated cs Translation (Marek Äernocký)
+ - Updated es Translation (Daniel Mustieles)
+ - Updated gl Translation (Fran Diéguez)
+ - Updated he Translation (Yaron Shahrabani)
+ - Updated nb Translation (Kjartan Maraas)
+ - Updated sl Translation (Matej UrbanÄiÄ)
+ - Updated sv Translation (Daniel Nylander)
+ - Updated te Translation (Praveen Illa)
+ - Updated zh_HK Translation (Cheng-Chia Tseng)
+ - Updated zh_TW Translation (Cheng-Chia Tseng)
+
+Documentation translations:
+ - Updated es Documentation translation (Daniel Mustieles)
+ - Updated gl Documentation translation (Fran Diéguez)
+
+NEW in 3.3.4 (16/01/2012)
+============
+
+The empathy-accounts dialog has been partially re-designed, please report any
+regression you may experience.
+
+Dependencies:
+ ⢠champlain ⥠0.12.1 (optional)
+
+Bugs fixed:
+ - Fixed #631236, Adding # on mistyping of channel names (Jovanka Gulicoska)
+ - Fixed #652670, Combine account parameter editing and personal information editing (Danielle Madeley, Guillaume Desmottes)
+ - Fixed #661500, Display map in tooltip (Guillaume Desmottes)
+ - Fixed #666864, Can't link contacts
+ - Fixed #667676, segfault in empathy-chat (Guillaume Desmottes)
+ - Fixed #667743, Topup menu item not displayed when re-connecting account (Guillaume Desmottes)
+ - Fixed #667791, Should set Account.Service on IRC accounts (Guillaume Desmottes)
+ - Fixed #666531, Invite IRC contacts to join room broken (Guillaume Desmottes)
+
+Translations:
+ - Updated be Translation (Kasia Bondarava)
+ - Updated es Translation (Daniel Mustieles)
+ - Updated et Translation (Mattias Põldaru)
+ - Updated gl Translation (Fran Diéguez)
+ - Updated he Translation (Yaron Shahrabani)
+ - Updated hu Translation (Gabor Kelemen)
+ - Updated mk Translation (Jovan Naumovski)
+ - Updated nl Translation (Hannie Dumoleyn)
+ - Updated ru Translation (Yuri Myasoedov)
+ - Updated tr Translation (Muhammet Kara)
+ - Updated xh Translation (Andiswa Mvanyashe)
+ - Updated zh_HK Translation (Cheng-Chia Tseng)
+ - Updated zh_TW Translation (Cheng-Chia Tseng)
+
+Documentation translations:
+ - Updated es Documentation translation (Daniel Mustieles)
+ - Updated fr Documentation translation (Bruno Brouard)
+ - Updated pl Documentation translation (Piotr DrÄ
g)
+ - Updated sl Documentation translation (Andrej ŽnidarÅ¡iÄ)
+
+NEW in 3.3.3 (19/12/2011)
+============
+
+The "Where else?" release.
+
+A lot of code has been refactored in this release so if you experience any
+regression please report them. Note that inviting IRC contacts is currently
+broken (#666531), it should hopefully be fixed soon.
+
+Dependencies:
+
+ ⢠telepathy-glib ⥠0.17.3
+ ⢠folks ⥠0.6.6
+
+Bugs fixed:
+ - Fixed #649208, Should move to empathy-chat's workspace rather than moving the window to the current workspace (Guillaume Desmottes)
+ - Fixed #654171, [pidgin importer] IRC accounts all show up as "irc (nick)", making them hard to distinguish (Guillaume Desmottes)
+ - Fixed #660547, Get rid of EmpathyContactManager (Guillaume Desmottes)
+ - Fixed #661640, Can't update the password of a Google account added with gnome-online-accounts (Guillaume Desmottes)
+ - Fixed #662873, empathy-chat crashed with SIGSEGV in tp_proxy_get_object_path() (Guillaume Desmottes)
+ - Fixed #663124, improvements to pulsesink/pulsesrc usage (Arun Raghavan)
+ - Fixed #663328, Stop using EmpathyContactListFlags (Guillaume Desmottes)
+ - Fixed #663387, Use the individual manager to display muc members (Guillaume Desmottes)
+ - Fixed #663682, remove EmpathyTpFile (Jonny Lamb)
+ - Fixed #664459, Always start video preview when using a non default webcam (Guillaume Desmottes)
+ - Fixed #664564, Doesn't handle TP_DELIVERY_STATUS_PERMANENTLY_FAILED (Guillaume Desmottes)
+ - Fixed #664795, Theme previews are not rendered correctly (depending on which theme is previewed beforehand) (Guillaume Desmottes)
+ - Fixed #664935, [Patch] Simple little patch to fix the FSF address in the COPYING file. (Brian Pepple)
+ - Fixed #665038, Stop using EmpathyContactMenu (Guillaume Desmottes)
+ - Fixed #665121, Stop using empathy_contact_list_get_all_groups (Guillaume Desmottes)
+ - Fixed #665171, audio-sink: sigsegv while starting a call (Guillaume Desmottes)
+ - Fixed #665256, possible memleak in camera-monitor: on_camera_added (Raluca Elena Podiuc)
+ - Fixed #665403, map-view: stop using EmpathyContactManager (Guillaume Desmottes)
+ - Fixed #665592, Can't call offline contacts from the log viewer (Guillaume Desmottes)
+ - Fixed #665853, Use new folks API to ensure personas (Guillaume Desmottes)
+ - Fixed #666163, EmpathyIndividualMenu cleanup (Guillaume Desmottes)
+ - Fixed #653812, Errors in the user manual (Milo Casagrande)
+ - Fixed #665244, new cheese camera device monitor crashes Empathy (Guillaume Desmottes)
+
+Translations:
+ - Updated es Translation (Daniel Mustieles)
+ - Updated he Translation (Yaron Shahrabani)
+ - Updated nb Translation (Kjartan Maraas)
+ - Updated ro Translation (Lucian Adrian Grijincu)
+ - Updated ru Translation (Vladislav Boboshko)
+ - Updated sl Translation (Matej UrbanÄiÄ)
+ - Updated uk Translation (Daniel Korostil)
+ - Updated zh_CN Translation (Yangtse Su)
+
+Documentation translations:
+ - Updated es Documentation translation (Daniel Mustieles)
+ - Updated it Documentation translation (Milo Casagrande)
+ - Updated sl Documentation translation (Matej UrbanÄiÄ)
+ - Updated zh_CN Documentation translation (Funda Wang, Guanhao Yin)
+
NEW in 3.3.2 (21/11/2011)
============
diff --git a/configure.ac b/configure.ac
index e0e7e43e..cb92b839 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3,7 +3,7 @@ m4_define(empathy_released, 0)
m4_define([empathy_major_version], [3])
m4_define([empathy_minor_version], [3])
-m4_define([empathy_micro_version], [2])
+m4_define([empathy_micro_version], [5])
m4_define([empathy_nano_version], [0])
dnl Display the nano_version only if it's not '0'
@@ -34,7 +34,7 @@ AC_COPYRIGHT([
# Minimal version required
# Hardp deps
-FOLKS_REQUIRED=0.6.2
+FOLKS_REQUIRED=0.6.6
GLIB_REQUIRED=2.30.0
GNUTLS_REQUIRED=2.8.5
GTK_REQUIRED=3.0.2
@@ -57,6 +57,7 @@ GEOCLUE_REQUIRED=0.11
ISO_CODES_REQUIRED=0.35
NAUTILUS_SENDTO_REQUIRED=2.90.0
NETWORK_MANAGER_REQUIRED=0.7.0
+CHAMPLAIN_REQUIRED=0.12.1
# Use --enable-maintainer-mode to disable deprecated symbols,
# disable single include and enable GSEAL. If this is not a released empathy,
@@ -70,6 +71,9 @@ NETWORK_MANAGER_REQUIRED=0.7.0
# those warnings later during the cycle (bgo #662662)
AC_DEFINE(GLIB_DISABLE_DEPRECATION_WARNINGS, 1, [Build with GLib deprecated])
+# FIXME: bgo #669673
+AC_DEFINE(CLUTTER_DISABLE_DEPRECATION_WARNINGS, 1, [Build with Clutter deprecated])
+
# telepathy-yell
prev_top_build_prefix=$ac_top_build_prefix
prev_ac_configure_args=$ac_configure_args
@@ -450,7 +454,7 @@ if test "x$enable_map" != "xno"; then
[
clutter-gtk-1.0
champlain-gtk-0.12
- champlain-0.12
+ champlain-0.12 >= $CHAMPLAIN_REQUIRED
], have_libchamplain="yes", have_libchamplain="no")
if test "x$have_libchamplain" = "xyes"; then
diff --git a/data/org.gnome.Empathy.gschema.xml.in b/data/org.gnome.Empathy.gschema.xml.in
index f3975fce..8e7d9fd1 100644
--- a/data/org.gnome.Empathy.gschema.xml.in
+++ b/data/org.gnome.Empathy.gschema.xml.in
@@ -88,12 +88,17 @@ present them to the user immediately.
<_summary>The position for the chat window side pane
<_description>The stored position (in pixels) of the chat window side pane.
+
+ true
+ <_summary>Show contact groups
+ <_description>Whether to show groups in the contact list.
+
'state'
<_summary>Contact list sort criterion
- <_description>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.
+ <_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.
@@ -201,6 +206,11 @@ present them to the user immediately.
<_summary>Enable WebKit Developer Tools
<_description>Whether WebKit developer tools, such as the Web Inspector, should be enabled.
+
+ true
+ <_summary>Inform other users when you are typing to them
+ <_description>Whether to send the 'composing' or 'paused' chat states. Does not currently affect the 'gone' state.
+
true
<_summary>Use theme for chat rooms
diff --git a/help/C/add-account.page b/help/C/add-account.page
index 86145c0c..b727eddf 100644
--- a/help/C/add-account.page
+++ b/help/C/add-account.page
@@ -14,8 +14,9 @@
-->
-
-
+
+
+
Milo Casagrande
milo@ubuntu.com
@@ -26,7 +27,7 @@
Creative Commons Share Alike 3.0
-
+
+
+
+
Phil Bull
philbull@gmail.com
Creative Commons Share Alike 3.0
-
+
+
Milo Casagrande
milo@ubuntu.com
@@ -53,13 +54,12 @@
side of the window.
-
-
Deselect Enabled on the right side of the
- window.
+
On the right side of the window, switch it off.
- To re-enable the account, simply select Enabled .
+ To re-enable the account, switch it on.
diff --git a/help/C/irc-manage.page b/help/C/irc-manage.page
index 2a85f156..f4be7bbb 100644
--- a/help/C/irc-manage.page
+++ b/help/C/irc-manage.page
@@ -2,8 +2,7 @@
xmlns:e="http://projectmallard.org/experimental/"
xmlns:if="http://projectmallard.org/experimental/if/"
type="guide" style="2column"
- id="irc-manage"
- groups="one two">
+ id="irc-manage">
diff --git a/help/C/prev-conv.page b/help/C/prev-conv.page
index a1668dfe..97718427 100644
--- a/help/C/prev-conv.page
+++ b/help/C/prev-conv.page
@@ -12,6 +12,7 @@
-->
+
Milo Casagrande
milo@ubuntu.com
@@ -22,7 +23,7 @@
Creative Commons Share Alike 3.0
-
+
-
+-->
-
- Deselect the Enabled , and then select it again to try to
- reconnect to the service.
+ Switch the account off, and then switch it on to try to reconnect to the
+ service.
-
+
Proxy support
At the moment Empathy can not be configured to work with a
- proxy.
+ proxy.
diff --git a/help/C/remove-account.page b/help/C/remove-account.page
index ff2d6108..85b6ac07 100644
--- a/help/C/remove-account.page
+++ b/help/C/remove-account.page
@@ -14,13 +14,14 @@
-->
+
Milo Casagrande
milo@ubuntu.com
Creative Commons Share Alike 3.0
-
+
-
+
+
Milo Casagrande
milo@ubuntu.com
Creative Commons Share Alike 3.0
-
+
Start a video conversation
If you have a webcam, you can call your contacts and have a video
- conversation with them. This features only works with certain types of
+ conversation with them. This feature only works with certain types of
accounts, and it requires the other person to have an application that
supports video calls.
@@ -61,7 +62,7 @@
-
- From the Contact List window, right-click on the meta-contact.
+ From the Contact List window, right-click on the meta-contact.
-
@@ -80,6 +81,4 @@
-
-
diff --git a/help/de/de.po b/help/de/de.po
index 4f6e78c5..fb6e8763 100644
--- a/help/de/de.po
+++ b/help/de/de.po
@@ -4,16 +4,16 @@
# documentation package.
#
# Philipp Kerling
, 2008.
-# Mario Blättermann , 2008-2011.
+# Mario Blättermann , 2008-2012.
# Christian Kirbach , 2009, 2010.
#
msgid ""
msgstr ""
"Project-Id-Version: empathy help master\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-09-05 18:45+0000\n"
-"PO-Revision-Date: 2011-09-06 20:40+0100\n"
-"Last-Translator: Mario Blättermann \n"
+"POT-Creation-Date: 2012-01-20 18:47+0000\n"
+"PO-Revision-Date: 2012-02-07 14:50+0100\n"
+"Last-Translator: Mario Blättermann \n"
"Language-Team: Deutsch \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -24,7 +24,7 @@ msgstr ""
#. When image changes, this message will be marked fuzzy or untranslated for you.
#. It doesn't matter what you translate it to: it's not used at all.
-#: C/video-call.page:38(None) C/audio-video.page:70(None)
+#: C/video-call.page:39(None) C/audio-video.page:70(None)
#: C/audio-call.page:36(None)
msgid "@@image: 'figures/camera-web.png'; md5=8166b4372f25b78cbf5a64fe2eac2ce5"
msgstr "original"
@@ -33,15 +33,15 @@ msgstr "original"
msgid "Start a video conversation with one of your contacts."
msgstr "Beginnen Sie eine Videounterhaltung mit einem Ihrer Kontakte."
-#: C/video-call.page:21(name) C/status-icons.page:16(name)
+#: C/video-call.page:22(name) C/status-icons.page:16(name)
#: C/share-desktop.page:14(name) C/set-custom-status.page:19(name)
#: C/send-file.page:21(name) C/salut-protocol.page:18(name)
-#: C/remove-account.page:18(name) C/prob-conn-neterror.page:18(name)
-#: C/prob-conn-name.page:17(name) C/prob-conn-auth.page:21(name)
-#: C/prob-conn-acctdisabled.page:18(name) C/prev-conv.page:16(name)
+#: C/remove-account.page:19(name) C/prob-conn-neterror.page:19(name)
+#: C/prob-conn-name.page:18(name) C/prob-conn-auth.page:21(name)
+#: C/prob-conn-acctdisabled.page:19(name) C/prev-conv.page:17(name)
#: C/link-contacts.page:15(name) C/irc-start-conversation.page:15(name)
#: C/irc-send-file.page:16(name) C/irc-nick-password.page:18(name)
-#: C/irc-manage.page:20(name) C/irc-join-room.page:16(name)
+#: C/irc-manage.page:19(name) C/irc-join-room.page:16(name)
#: C/irc-join-pwd.page:17(name) C/irc-commands.page:10(name)
#: C/introduction.page:13(name) C/index.page:19(name)
#: C/import-account.page:23(name) C/hide-contacts.page:11(name)
@@ -49,21 +49,21 @@ msgstr "Beginnen Sie eine Videounterhaltung mit einem Ihrer Kontakte."
#: C/geolocation-turn.page:18(name) C/geolocation-supported.page:16(name)
#: C/geolocation-privacy.page:17(name) C/geolocation-not-showing.page:17(name)
#: C/geolocation.page:17(name) C/favorite-rooms.page:14(name)
-#: C/disable-account.page:20(name) C/create-account.page:19(name)
+#: C/disable-account.page:21(name) C/create-account.page:19(name)
#: C/audio-video.page:17(name) C/audio-call.page:19(name)
-#: C/add-account.page:20(name)
+#: C/add-account.page:21(name)
msgid "Milo Casagrande"
msgstr "Milo Casagrande"
-#: C/video-call.page:22(email) C/status-icons.page:17(email)
+#: C/video-call.page:23(email) C/status-icons.page:17(email)
#: C/share-desktop.page:15(email) C/set-custom-status.page:20(email)
#: C/send-file.page:22(email) C/salut-protocol.page:19(email)
-#: C/remove-account.page:19(email) C/prob-conn-neterror.page:19(email)
-#: C/prob-conn-name.page:18(email) C/prob-conn-auth.page:22(email)
-#: C/prob-conn-acctdisabled.page:19(email) C/prev-conv.page:17(email)
+#: C/remove-account.page:20(email) C/prob-conn-neterror.page:20(email)
+#: C/prob-conn-name.page:19(email) C/prob-conn-auth.page:22(email)
+#: C/prob-conn-acctdisabled.page:20(email) C/prev-conv.page:18(email)
#: C/link-contacts.page:16(email) C/irc-start-conversation.page:16(email)
#: C/irc-send-file.page:17(email) C/irc-nick-password.page:19(email)
-#: C/irc-manage.page:21(email) C/irc-join-room.page:17(email)
+#: C/irc-manage.page:20(email) C/irc-join-room.page:17(email)
#: C/irc-join-pwd.page:18(email) C/irc-commands.page:11(email)
#: C/introduction.page:14(email) C/index.page:20(email)
#: C/import-account.page:24(email) C/hide-contacts.page:12(email)
@@ -71,21 +71,21 @@ msgstr "Milo Casagrande"
#: C/geolocation-turn.page:19(email) C/geolocation-supported.page:17(email)
#: C/geolocation-privacy.page:18(email)
#: C/geolocation-not-showing.page:18(email) C/geolocation.page:18(email)
-#: C/favorite-rooms.page:15(email) C/disable-account.page:21(email)
+#: C/favorite-rooms.page:15(email) C/disable-account.page:22(email)
#: C/create-account.page:20(email) C/audio-video.page:18(email)
-#: C/audio-call.page:20(email) C/add-account.page:21(email)
+#: C/audio-call.page:20(email) C/add-account.page:22(email)
msgid "milo@ubuntu.com"
msgstr "milo@ubuntu.com"
-#: C/video-call.page:25(p) C/status-icons.page:24(p) C/share-desktop.page:22(p)
+#: C/video-call.page:26(p) C/status-icons.page:24(p) C/share-desktop.page:22(p)
#: C/set-custom-status.page:23(p) C/send-message.page:21(p)
#: C/send-file.page:25(p) C/salut-protocol.page:22(p)
-#: C/remove-account.page:22(p) C/prob-conn.page:18(p)
-#: C/prob-conn-neterror.page:22(p) C/prob-conn-name.page:21(p)
-#: C/prob-conn-auth.page:25(p) C/prob-conn-acctdisabled.page:22(p)
-#: C/prev-conv.page:24(p) C/link-contacts.page:19(p)
+#: C/remove-account.page:23(p) C/prob-conn.page:18(p)
+#: C/prob-conn-neterror.page:23(p) C/prob-conn-name.page:22(p)
+#: C/prob-conn-auth.page:25(p) C/prob-conn-acctdisabled.page:23(p)
+#: C/prev-conv.page:25(p) C/link-contacts.page:19(p)
#: C/irc-start-conversation.page:19(p) C/irc-send-file.page:20(p)
-#: C/irc-nick-password.page:22(p) C/irc-manage.page:24(p)
+#: C/irc-nick-password.page:22(p) C/irc-manage.page:23(p)
#: C/irc-join-room.page:20(p) C/irc-join-pwd.page:21(p)
#: C/irc-commands.page:14(p) C/introduction.page:17(p) C/index.page:23(p)
#: C/import-account.page:31(p) C/hide-contacts.page:15(p)
@@ -93,22 +93,22 @@ msgstr "milo@ubuntu.com"
#: C/geolocation-turn.page:22(p) C/geolocation-supported.page:20(p)
#: C/geolocation-privacy.page:21(p) C/geolocation-not-showing.page:21(p)
#: C/geolocation.page:21(p) C/favorite-rooms.page:18(p)
-#: C/disable-account.page:28(p) C/create-account.page:23(p)
-#: C/change-status.page:23(p) C/audio-video.page:21(p) C/audio-call.page:23(p)
-#: C/add-contact.page:22(p) C/add-account.page:28(p)
+#: C/disable-account.page:29(p) C/create-account.page:23(p)
+#: C/change-status.page:28(p) C/audio-video.page:21(p) C/audio-call.page:23(p)
+#: C/add-contact.page:22(p) C/add-account.page:29(p)
#: C/accounts-window.page:22(p) C/account-jabber.page:18(p)
#: C/account-irc.page:20(p)
msgid "Creative Commons Share Alike 3.0"
msgstr "Creative Commons Share Alike 3.0"
-#: C/video-call.page:28(title)
+#: C/video-call.page:29(title)
msgid "Start a video conversation"
msgstr "Eine Video-Unterhaltung beginnen"
-#: C/video-call.page:30(p)
+#: C/video-call.page:31(p)
msgid ""
"If you have a webcam, you can call your contacts and have a video "
-"conversation with them. This features only works with certain types of "
+"conversation with them. This feature only works with certain types of "
"accounts, and it requires the other person to have an application that "
"supports video calls."
msgstr ""
@@ -117,7 +117,7 @@ msgstr ""
"Kontentypen zur Verfügung. AuÃerdem muss die andere Person mit einer "
"Anwendung arbeiten, die Videoanrufe unterstützt."
-#: C/video-call.page:37(p)
+#: C/video-call.page:38(p)
msgid ""
"From the Contact List window, click the video call icon next to "
@@ -129,7 +129,7 @@ msgstr ""
"neben dem Namen des Kontakts, den Sie anrufen wollen, und wählen Sie Videoanruf ."
-#: C/video-call.page:43(p) C/audio-call.page:42(p)
+#: C/video-call.page:44(p) C/audio-call.page:42(p)
msgid ""
"A new window will open. When the connection is established, you will see "
"Connected at the bottom of the window, along with the total "
@@ -139,13 +139,13 @@ msgstr ""
"Sie am unteren Rand des Fensters Verbunden und die Gesamtzeit der "
"Unterhaltung."
-#: C/video-call.page:48(p) C/audio-call.page:48(p)
+#: C/video-call.page:49(p) C/audio-call.page:48(p)
msgid "To end the conversation, click on Hang up ."
msgstr ""
"Um eine Unterhaltung zu beenden, klicken Sie auf Auflegen ."
-#: C/video-call.page:54(p)
+#: C/video-call.page:55(p)
msgid ""
"To turn a video conversation into an audio conversation, choose Video Video Off ."
@@ -154,16 +154,16 @@ msgstr ""
"Video Video aus"
"gui> ."
-#: C/video-call.page:60(title)
+#: C/video-call.page:61(title)
msgid "Start a video conversation with a meta-contact"
msgstr "Beginnen einer Videounterhaltung mit einem Meta-Kontakt"
-#: C/video-call.page:63(p) C/send-message.page:53(p) C/audio-call.page:66(p)
+#: C/video-call.page:64(p) C/send-message.page:53(p) C/audio-call.page:66(p)
msgid ""
"From the Contact List window, right-click on the meta-contact."
msgstr "Klicken Sie imKontaktlisten -Fenster auf den Meta-Kontakt."
-#: C/video-call.page:68(p)
+#: C/video-call.page:69(p)
msgid ""
"Select the contact you want to have the conversation, and from the menu "
"select Video Call ."
@@ -171,7 +171,7 @@ msgstr ""
"Wählen Sie den Kontakt aus, mit dem Sie eine Unterhaltung beginnen wollen, "
"und wählen Sie im Menü Videoanruf ."
-#: C/video-call.page:75(p) C/send-message.page:65(p) C/audio-call.page:78(p)
+#: C/video-call.page:76(p) C/send-message.page:65(p) C/audio-call.page:78(p)
msgid ""
"To recognize if a contact is a meta-contact , move your mouse on a "
"contact in the Contact List window, and stop over it for a second: "
@@ -212,17 +212,17 @@ msgid "Understanding the various statuses and status icons."
msgstr "Erläuterung der verschiedenen Status und deren Symbole."
#: C/status-icons.page:20(name) C/salut-protocol.page:36(cite)
-#: C/prev-conv.page:20(name) C/prev-conv.page:38(cite)
-#: C/import-account.page:27(name) C/disable-account.page:24(name)
-#: C/audio-video.page:109(cite) C/audio-video.page:117(cite)
-#: C/add-account.page:24(name) C/accounts-window.page:18(name)
-#: C/account-jabber.page:14(name) C/account-irc.page:16(name)
+#: C/prev-conv.page:21(name) C/import-account.page:27(name)
+#: C/disable-account.page:25(name) C/audio-video.page:109(cite)
+#: C/audio-video.page:117(cite) C/add-account.page:25(name)
+#: C/accounts-window.page:18(name) C/account-jabber.page:14(name)
+#: C/account-irc.page:16(name)
msgid "Shaun McCance"
msgstr "Shaun McCance"
-#: C/status-icons.page:21(email) C/prev-conv.page:21(email)
-#: C/import-account.page:28(email) C/disable-account.page:25(email)
-#: C/add-account.page:25(email) C/accounts-window.page:19(email)
+#: C/status-icons.page:21(email) C/prev-conv.page:22(email)
+#: C/import-account.page:28(email) C/disable-account.page:26(email)
+#: C/add-account.page:26(email) C/accounts-window.page:19(email)
#: C/account-jabber.page:15(email) C/account-irc.page:17(email)
msgid "shaunm@gnome.org"
msgstr "shaunm@gnome.org"
@@ -492,13 +492,13 @@ msgstr ""
#: C/set-custom-status.page:64(p)
msgid ""
"If you want to set the custom message as a favorite, saving it in order to "
-"use it again, click on the little star on the right of the text box where you "
-"wrote your custom message."
+"use it again, click on the little heart on the right of the text box where "
+"you wrote your custom message."
msgstr ""
"Wenn Sie die benutzerdefinierte Nachricht als bevorzugt festlegen wollen, "
"speichern Sie sie, um sie wiederverwenden zu können. Klicken Sie anschlieÃend "
-"auf den kleinen Stern an der rechten Seite des Textfeldes, in welches Sie "
-"Ihre benutzerdefinierte Nachricht eingegeben haben."
+"auf das kleine Herz an der rechten Seite des Textfeldes, in welches Sie Ihre "
+"benutzerdefinierte Nachricht eingegeben haben."
#: C/set-custom-status.page:69(p)
msgid ""
@@ -510,9 +510,8 @@ msgstr ""
"für die aktuelle Sitzung gespeichert."
#: C/set-custom-status.page:78(title)
-msgid "Edit, remove and add a custom message"
-msgstr ""
-"Bearbeiten, Entfernen und Hinzufügen einer benutzerdefinierten Nachricht"
+msgid "Edit and remove a custom message"
+msgstr "Eine benutzerdefinierte Nachricht bearbeiten und entfernen"
#: C/set-custom-status.page:88(p)
msgid "Select Edit Custom Message ."
@@ -552,44 +551,17 @@ msgstr ""
msgid "Click on the Remove button."
msgstr "Klicken Sie auf den Knopf Entfernen ."
-#: C/set-custom-status.page:131(p)
-msgid "To add a new custom message, from the Add New Preset section:"
-msgstr ""
-"So fügen Sie im Abschnitt Neue Voreinstellung hinzufügen eine neue "
-"benutzerdefinierte Nachricht hinzu:"
-
-#: C/set-custom-status.page:136(p)
-msgid ""
-"Click on the drop-down list to select the status you want to set a custom "
-"message to."
-msgstr ""
-"Klicken Sie auf die Auswahlliste, um den Status auszuwählen, dem Sie die "
-"benutzerdefinierte Nachricht zuordnen wollen."
-
-#: C/set-custom-status.page:142(p)
-msgid "Click on the text box, and type the new custom message."
-msgstr ""
-"Klicken Sie in das Textfeld und geben Sie die neue benutzerdefinierte "
-"Nachricht ein."
-
-#: C/set-custom-status.page:147(p)
-msgid "Click on Add to add the new message to the presets ones."
-msgstr ""
-"Klicken Sie auf Hinzufügen , um die neue Nachricht zu den "
-"voreingestellten Nachrichten hinzuzufügen."
-
-#: C/set-custom-status.page:156(p)
+#: C/set-custom-status.page:133(p)
msgid "When finished, click on Close ."
msgstr "Klicken Sie auf SchlieÃen , sobald Sie fertig sind."
-#: C/set-custom-status.page:163(p)
+#: C/set-custom-status.page:140(p)
msgid ""
-"When you edit or add a new custom message, it will not be set as the current "
-"status message. You will need to select it from the Contact List "
-"window."
+"When you edit a custom message, it will not be set as the current status "
+"message. You will need to select it from the Contact List window."
msgstr ""
-"Wenn Sie eine neue benutzerdefinierte Nachricht hinzufügen oder bearbeiten, "
-"wird diese nicht als aktuelle Statusnachricht festgelegt. Sie müssen Sie im "
+"Wenn Sie eine neue benutzerdefinierte Nachricht bearbeiten, wird diese nicht "
+"als aktuelle Statusnachricht festgelegt. Sie müssen Sie im "
"Kontaktlisten -Fenster auswählen."
#: C/send-message.page:8(desc)
@@ -597,16 +569,16 @@ msgid "Send a message to one of your contacts."
msgstr "Eine Nachricht an einen Ihrer Kontakte senden."
#: C/send-message.page:17(name) C/send-file.page:17(name)
-#: C/prob-conn.page:14(name) C/prob-conn-neterror.page:14(name)
-#: C/prob-conn-auth.page:17(name) C/prob-conn-acctdisabled.page:14(name)
-#: C/change-status.page:19(name) C/add-contact.page:18(name)
+#: C/prob-conn.page:14(name) C/prob-conn-neterror.page:15(name)
+#: C/prob-conn-auth.page:17(name) C/prob-conn-acctdisabled.page:15(name)
+#: C/change-status.page:24(name) C/add-contact.page:18(name)
msgid "Phil Bull"
msgstr "Phil Bull"
#: C/send-message.page:18(email) C/send-file.page:18(email)
-#: C/prob-conn.page:15(email) C/prob-conn-neterror.page:15(email)
-#: C/prob-conn-auth.page:18(email) C/prob-conn-acctdisabled.page:15(email)
-#: C/change-status.page:20(email) C/add-contact.page:19(email)
+#: C/prob-conn.page:15(email) C/prob-conn-neterror.page:16(email)
+#: C/prob-conn-auth.page:18(email) C/prob-conn-acctdisabled.page:16(email)
+#: C/change-status.page:25(email) C/add-contact.page:19(email)
msgid "philbull@gmail.com"
msgstr "philbull@gmail.com"
@@ -777,11 +749,11 @@ msgstr ""
msgid "Completely remove an account from Empathy ."
msgstr "Ein Konto vollständig aus Empathy löschen."
-#: C/remove-account.page:33(title)
+#: C/remove-account.page:34(title)
msgid "Remove an account"
msgstr "Löschen eines Kontos"
-#: C/remove-account.page:35(p)
+#: C/remove-account.page:36(p)
msgid ""
"You can completely remove an account from Empathy if you no longer "
"wish to use the account. If you wish to use the account in Empathy "
@@ -792,8 +764,8 @@ msgstr ""
"Empathy erneut nutzen wollen, dann müssen Sie die Kontendetails "
"erneut eingeben."
-#: C/remove-account.page:42(p) C/irc-nick-password.page:50(p)
-#: C/disable-account.page:48(p) C/add-account.page:48(p)
+#: C/remove-account.page:43(p) C/irc-nick-password.page:50(p)
+#: C/disable-account.page:49(p) C/add-account.page:49(p)
msgid ""
"From the Contact List window, choose Edit"
"gui>Accounts , or press F4 ."
@@ -801,7 +773,7 @@ msgstr ""
"Wählen Sie im Kontaktlisten -Fenster Bearbeiten"
"gui>Konten oder drücken Sie F4 ."
-#: C/remove-account.page:46(p)
+#: C/remove-account.page:47(p)
msgid ""
"Select the account you wish to remove from the accounts list on the left side "
"of the window."
@@ -809,11 +781,11 @@ msgstr ""
"Wählen Sie das Konto, das Sie aus der Kontenliste entfernen wollen, an der "
"linken Seite des Fensters aus."
-#: C/remove-account.page:50(p)
-msgid "Click on Remove ."
-msgstr "Klicken Sie auf Entfernen ."
+#: C/remove-account.page:51(p)
+msgid "Click - ."
+msgstr "Klicken Sie auf - ."
-#: C/remove-account.page:53(p)
+#: C/remove-account.page:54(p)
msgid ""
"A dialog will be shown asking for confirmation. Click the Remove "
"button to permanently remove the account."
@@ -821,7 +793,7 @@ msgstr ""
"Ein Dialogfenster bittet darum, den Vorgang zu bestätigen. Klicken Sie auf "
"den Knopf Entfernen , um das Konto dauerhaft zu entfernen."
-#: C/remove-account.page:59(p)
+#: C/remove-account.page:60(p)
msgid ""
"Even after removing an account, Empathy does not delete your "
"conversation history for that account."
@@ -841,7 +813,7 @@ msgstr "Probleme beim Verbinden zu einem Sofortnachrichtendienst"
#. When image changes, this message will be marked fuzzy or untranslated for you.
#. It doesn't matter what you translate it to: it's not used at all.
-#: C/prob-conn-neterror.page:58(None) C/prob-conn-name.page:43(None)
+#: C/prob-conn-neterror.page:59(None) C/prob-conn-name.page:44(None)
#: C/prob-conn-auth.page:58(None) C/account-irc.page:109(None)
msgid "@@image: 'figures/gtk-edit.png'; md5=4f21b451732817be0604fe3e2c8da98b"
msgstr "original"
@@ -854,16 +826,16 @@ msgstr ""
"Eine Fehlermeldung mit dem Text »Netzwerkfehler « erscheint im "
"Hauptfenster."
-#: C/prob-conn-neterror.page:33(title)
+#: C/prob-conn-neterror.page:34(title)
msgid "I get a message that says âNetwork errorâ"
msgstr "Eine Meldung zeigt einen »Netzwerkfehler« an"
-#: C/prob-conn-neterror.page:36(cite)
+#: C/prob-conn-neterror.page:37(cite)
msgid "shaunm"
msgstr "shaunm"
# Blöd, dass diese Kommentare auch noch in der pot-Datei erscheinen. Mallard ist eben noch lange nicht da, wo es sein sollte.
-#: C/prob-conn-neterror.page:37(p)
+#: C/prob-conn-neterror.page:38(p)
msgid ""
"Empathy no longer allows you to create an IRC account without a valid nick. "
"I've removed the guide link. Remove the text."
@@ -871,7 +843,7 @@ msgstr ""
"Empathy erlaubt es nicht mehr, ein IRC-Konto ohne einen gültigen "
"Spitznamen anzulegen"
-#: C/prob-conn-neterror.page:41(p)
+#: C/prob-conn-neterror.page:42(p)
msgid ""
"This kind of error happens when Empathy cannot communicate with "
"the instant messaging service for some reason."
@@ -879,7 +851,7 @@ msgstr ""
"Dieser Fehler tritt auf, wenn Empathy aus irgendeinem Grund nicht "
"in der Lage ist, mit dem Sofortnachrichtendienst zu kommunizieren."
-#: C/prob-conn-neterror.page:45(p)
+#: C/prob-conn-neterror.page:46(p)
msgid ""
"Also, this kind of error happens when you try to use an IRC account without "
"setting a nickname."
@@ -887,15 +859,15 @@ msgstr ""
"Dieser Fehler tritt auch auf, wenn Sie ein IRC-Konto verwenden wollen, ohne "
"einen Spitznamen festzulegen."
-#: C/prob-conn-neterror.page:52(p) C/prob-conn-auth.page:45(p)
-#: C/prob-conn-acctdisabled.page:43(p)
+#: C/prob-conn-neterror.page:53(p) C/prob-conn-auth.page:45(p)
+#: C/prob-conn-acctdisabled.page:44(p)
msgid ""
"Make sure that you are connected to the Internet, or to a local area network."
msgstr ""
"Stellen Sie sicher, dass Sie mit dem Internet beziehungsweise mit einem "
"lokalen Netzwerk verbunden sind."
-#: C/prob-conn-neterror.page:57(p) C/prob-conn-name.page:42(p)
+#: C/prob-conn-neterror.page:58(p) C/prob-conn-name.page:43(p)
#: C/prob-conn-auth.page:57(p)
msgid ""
"Click the Bearbeiten -Symbol in der Fehlermeldung."
-#: C/prob-conn-neterror.page:65(p) C/prob-conn-acctdisabled.page:59(p)
+#: C/prob-conn-neterror.page:64(p) C/prob-conn-acctdisabled.page:60(p)
msgid ""
"Check in the Advanced section that all the details are correct. "
"You should be able to find these details from the website of the messaging "
@@ -914,19 +886,19 @@ msgstr ""
"korrekt sind. Es sollte möglich sein, diese Details auf der Webseite des "
"jeweiligen Sofortnachrichtendienstes zu finden."
-#: C/prob-conn-neterror.page:82(p) C/prob-conn-auth.page:68(p)
+#: C/prob-conn-neterror.page:79(p) C/prob-conn-name.page:65(p)
msgid ""
-"Deselect the Enabled , and then select it again to try to reconnect "
-"to the service."
+"Switch the account off, and then switch it on to try to reconnect to the "
+"service."
msgstr ""
-"Deaktivieren Sie das Ankreuzfeld Aktiviert und aktivieren Sie es "
-"erneut, um einen neuen Verbindungsversuch zu starten."
+"Deaktivieren Sie das Konto und aktivieren Sie es erneut, um einen neuen "
+"Verbindungsversuch zu starten."
-#: C/prob-conn-neterror.page:90(title)
+#: C/prob-conn-neterror.page:87(title)
msgid "Proxy support"
msgstr "Proxy-Unterstützung"
-#: C/prob-conn-neterror.page:91(p)
+#: C/prob-conn-neterror.page:88(p)
msgid ""
"At the moment Empathy can not be configured to work with a proxy."
msgstr ""
@@ -945,11 +917,11 @@ msgstr ""
"Eine Fehlermeldung »Name bereits in Benutzung « erscheint im "
"Hauptfenster."
-#: C/prob-conn-name.page:32(title)
+#: C/prob-conn-name.page:33(title)
msgid "I get a message that says âName in useâ"
msgstr "Eine Meldung zeigt »Name bereits in Benutzung« an"
-#: C/prob-conn-name.page:34(p)
+#: C/prob-conn-name.page:35(p)
msgid ""
"This kind of error happens when you try to connect to your IRC account and "
"you are using a nickname that is already being used by someone else on that "
@@ -959,13 +931,13 @@ msgstr ""
"und Sie einen Spitznamen verwenden wollen, den in diesem bestimmten Netzwerk "
"bereits jemand anders gewählt hat."
-#: C/prob-conn-name.page:50(p)
+#: C/prob-conn-name.page:51(p)
msgid "In the Nickname text box, type a new nickname."
msgstr ""
"Geben Sie in das Spitzname -Textfeld einen neuen "
"Spitznamen ein."
-#: C/prob-conn-name.page:55(p)
+#: C/prob-conn-name.page:56(p)
msgid ""
"If you have registered that nickname within the network you are using, set "
"the password for that nickname. For more information, see ."
-#: C/prob-conn-name.page:64(p)
-msgid ""
-"Deselect the Enabled check-box next to the name of your account, "
-"and then select it again to try to reconnect to the service."
-msgstr ""
-"Deaktivieren Sie das Ankreuzfeld Aktiviert neben dem Namen Ihres "
-"Kontos und aktivieren Sie es erneut, um einen neuen Verbindungsversuch zu "
-"starten."
-
#: C/prob-conn-auth.page:8(desc)
msgid ""
"An error message which says âAuthentication failed â appears in the "
@@ -1016,13 +979,21 @@ msgstr ""
"dem Sie sich verbinden wollen. Falls Sie über kein Konto verfügen, verweigern "
"die meisten Dienste die Verbindung."
-#: C/prob-conn-auth.page:63(p) C/prob-conn-acctdisabled.page:54(p)
+#: C/prob-conn-auth.page:63(p) C/prob-conn-acctdisabled.page:55(p)
msgid ""
"Type your username and password again to make sure that they are correct."
msgstr ""
"Geben sie Ihren Benutzernamen und Ihr Passwort erneut ein, um sicher zu "
"stellen, dass diese korrekt sind."
+#: C/prob-conn-auth.page:68(p)
+msgid ""
+"Deselect the Enabled , and then select it again to try to reconnect "
+"to the service."
+msgstr ""
+"Deaktivieren Sie das Ankreuzfeld Aktiviert und aktivieren Sie es "
+"erneut, um einen neuen Verbindungsversuch zu starten."
+
#: C/prob-conn-acctdisabled.page:7(desc)
msgid ""
"The instant messaging account that you want to use is not enabled in the list "
@@ -1031,11 +1002,11 @@ msgstr ""
"Das Sofortnachrichten-Konto, welches Sie verwenden wollen, ist in der "
"Kontenliste nicht aktiviert."
-#: C/prob-conn-acctdisabled.page:33(title)
+#: C/prob-conn-acctdisabled.page:34(title)
msgid "My account is not enabled"
msgstr "Mein Konto ist nicht aktiviert"
-#: C/prob-conn-acctdisabled.page:35(p)
+#: C/prob-conn-acctdisabled.page:36(p)
msgid ""
"If the instant messaging account that you want to use is not enabled in the "
"drop-down account list when you try to start a new conversation or join a "
@@ -1045,7 +1016,7 @@ msgstr ""
"aktiviert ist, wenn Sie eine neue Unterhaltung starten oder einen Raum "
"betreten wollen, könnten Ihre Kontendetails eventuell nicht korrekt sein."
-#: C/prob-conn-acctdisabled.page:48(p)
+#: C/prob-conn-acctdisabled.page:49(p)
msgid ""
"Choose Edit Accounts and select the "
"account that is not working."
@@ -1053,38 +1024,19 @@ msgstr ""
"Wählen Sie Bearbeiten Konten und wählen "
"Sie den nicht funktionierenden Kontakt aus."
-#: C/prob-conn-acctdisabled.page:65(p)
-msgid ""
-"Check that the Enabled check-box is selected. "
-"If it is not, select the check-box to enable the account."
-msgstr ""
-"Stellen Sie sicher, dass das Ankreuzfeld Aktiviert"
-"gui> neben dem Namen Ihres Kontos ausgewählt ist. Falls nicht, aktivieren Sie "
-"das Ankreuzfeld, um das Konto zu aktivieren."
+#: C/prob-conn-acctdisabled.page:66(p)
+msgid "Check that the account is switched on."
+msgstr "Ãberprüfen Sie, ob das Konto eingeschaltet ist."
#: C/prev-conv.page:8(desc)
msgid "Browse or search your previous conversations."
msgstr "Betrachten und Durchsuchen Ihrer früheren Unterhaltungen."
-#: C/prev-conv.page:35(title)
+#: C/prev-conv.page:36(title)
msgid "View previous conversations"
msgstr "Vorherige Unterhaltungen anschauen"
-#: C/prev-conv.page:39(p)
-msgid ""
-"Highlighting text is quirky: #593733. If there's an actual highlighting going on, "
-"independent of the selection (like in yellow or something), we can use the "
-"term \"highlight\". Otherwise we need to use the term \"select\". Watch that "
-"bug."
-msgstr ""
-"Highlighting text is quirky: #593733. If there's an actual highlighting going on, "
-"independent of the selection (like in yellow or something), we can use the "
-"term \"highlight\". Otherwise we need to use the term \"select\". Watch that "
-"bug."
-
-#: C/prev-conv.page:46(p)
+#: C/prev-conv.page:38(p)
msgid ""
"Empathy automatically saves all your text conversations you have "
"with your contacts. You can search through all of your "
@@ -1096,7 +1048,7 @@ msgstr ""
"früheren Unterhaltungen durchsuchen oder frühere Unterhaltungen anhand Kontakt und Datum suchen."
-#: C/prev-conv.page:54(p)
+#: C/prev-conv.page:46(p)
msgid ""
"You do not need to be connected to the Internet to view and search your "
"previous conversations."
@@ -1104,17 +1056,17 @@ msgstr ""
"Sie müssen nicht mit dem Internet verbunden sein, um Ihre vorherigen "
"Unterhaltungen zu betrachten und zu durchsuchen."
-#: C/prev-conv.page:61(title)
+#: C/prev-conv.page:53(title)
msgid "Search previous conversations"
msgstr "Vorherige Unterhaltungen durchsuchen"
-#: C/prev-conv.page:63(p)
+#: C/prev-conv.page:55(p)
msgid ""
"You can perform a full-text search through all of your previous conversations."
msgstr ""
"Sie können den Volltext aller Ihrer vorherigen Unterhaltungen durchsuchen."
-#: C/prev-conv.page:67(p) C/prev-conv.page:96(p)
+#: C/prev-conv.page:59(p) C/prev-conv.page:87(p)
msgid ""
"From the Contact List window, choose View"
"gui>Previous Conversations . Alternatively, press F3"
@@ -1124,41 +1076,33 @@ msgstr ""
"gui>Vorherige Unterhaltungen . Alternativ drücken Sie "
"F3 ."
-#: C/prev-conv.page:71(p)
-msgid "Select the Search tab."
-msgstr "Wählen Sie den Reiter Suchen ."
-
-#: C/prev-conv.page:74(p)
+#: C/prev-conv.page:63(p)
msgid ""
-"In the For field, type the text you want to search for. Click "
-"Find or press Enter ."
+"Select an account from the drop-down list in the top. A list of contacts and "
+"chat room for that account will be shown below."
msgstr ""
-"Geben Sie in das Nach -Textfeld den Text ein, nach dem Sie suchen "
-"wollen. Klicken Sie auf Suchen oder drücken Sie die "
-"Eingabetaste ."
+"Wählen Sie ein Konto in der Auswahlliste oben. Eine Liste der Kontakte und "
+"Unterhaltungsräume für dieses Konto wird darunter angezeigt."
+
+#: C/prev-conv.page:67(p)
+msgid ""
+"Type the text you want to search for in the Search text field."
+msgstr "Geben Sie den zu suchenden Text im Suchfeld ein."
-#: C/prev-conv.page:78(p)
+#: C/prev-conv.page:71(p)
msgid ""
-"Any conversations that matched your search terms will be shown in the list "
-"below the search field. By default, conversations are ordered by date."
+"Any conversations that matched your search terms will be shown. By default, "
+"conversations are ordered by date."
msgstr ""
"Jegliche Unterhaltungen, die auf Ihre Suchbegriffe zutreffen, werden in der "
"Liste unterhalb des Suchfeldes angezeigt. Per Vorgabe sind die Unterhaltungen "
"nach Datum geordnet."
-#: C/prev-conv.page:82(p)
-msgid ""
-"Click on a conversation to view it. Empathy will select the text "
-"in the conversation that matched your search terms."
-msgstr ""
-"Klicken Sie auf eine Unterhaltung, um sie zu betrachten. Empathy "
-"hebt in der Unterhaltung den Text hervor, der Ihren Suchbegriffen entspricht."
-
-#: C/prev-conv.page:89(title)
+#: C/prev-conv.page:80(title)
msgid "Browse previous conversations"
msgstr "Vorherige Unterhaltungen betrachten"
-#: C/prev-conv.page:91(p)
+#: C/prev-conv.page:82(p)
msgid ""
"You can browse your previous conversations with your contacts or in chat "
"rooms by date."
@@ -1166,11 +1110,7 @@ msgstr ""
"Sie können Ihre früheren Unterhaltungen mit Ihren Kontakten oder in "
"Unterhaltungsräumen anhand des Datums durchsuchen."
-#: C/prev-conv.page:100(p)
-msgid "Select the Conversations tab."
-msgstr "Wählen Sie den Reiter Unterhaltungen ."
-
-#: C/prev-conv.page:103(p)
+#: C/prev-conv.page:91(p)
msgid ""
"Select an account from the drop-down list in the top left. A list of contacts "
"and chat room for that account will be shown below."
@@ -1178,7 +1118,7 @@ msgstr ""
"Wählen Sie ein Konto in der Auswahlliste oben links. Eine Liste der Kontakte "
"und Unterhaltungsräume für dieses Konto wird darunter angezeigt."
-#: C/prev-conv.page:107(p)
+#: C/prev-conv.page:95(p)
msgid ""
"Select a contact or chat room to view your previous conversations from. By "
"default the most recent conversation will be shown."
@@ -1187,7 +1127,7 @@ msgstr ""
"Unterhaltungen zu betrachten. Per Vorgabe wird die letzte Unterhaltung "
"angezeigt."
-#: C/prev-conv.page:111(p)
+#: C/prev-conv.page:99(p)
msgid ""
"You can browse your conversations by date. Days on which you had a "
"conversation with the selected contact will be shown in bold text. Click a "
@@ -1200,21 +1140,21 @@ msgstr ""
"Klicken Sie auf die Pfeile neben den Monats- und Jahresangaben, um zu "
"früheren Daten zu gehen."
-#: C/prev-conv.page:117(p)
+#: C/prev-conv.page:105(p)
msgid ""
-"You can search for text in the displayed conversation by typing into the "
-"search field at the top. The matching text will be highlighted."
+"You can search for text in the conversations by typing into the search field "
+"at the top. The matching conversations will be showed."
msgstr ""
-"Sie können nach Text in der angezeigten Unterhaltung suchen, indem Sie ihn in "
-"das Suchfeld oben eingeben. Der damit übereinstimmende Text wird "
+"Sie können nach Text in den Unterhaltungen suchen, indem Sie ihn in das "
+"Suchfeld oben eingeben. Die damit übereinstimmenden unterhaltungen werden "
"hervorgehoben."
-#: C/prev-conv.page:121(p)
+#: C/prev-conv.page:111(p)
msgid ""
"You can quickly view the previous conversations with one of your contacts "
"from the Contact List window. Simply right click the contact and "
-"choose View Previous Conversations . The Previous "
-"Conversations window will open with that contact already selected."
+"choose Previous Conversations . The Previous Conversations"
+"gui> window will open with that contact already selected."
msgstr ""
"Im Kontaktlisten -Fenster können Sie schnell die früheren "
"Unterhaltungen mit einem Ihrer Kontakte betrachten. Klicken Sie einfach mit "
@@ -1526,6 +1466,7 @@ msgstr ""
"Registrierung Ihres Spitznamens verwendet haben."
#: C/irc-nick-password.page:63(p) C/import-account.page:61(p)
+#: C/add-account.page:74(p)
msgid "Click Apply ."
msgstr "Klicken Sie auf Anwenden ."
@@ -1540,15 +1481,15 @@ msgstr ""
"gegenwärtig nicht möglich, mit Empathy einen IRC-Spitznamen zu "
"registrieren oder das Passwort für Ihren Spitznamen zu ändern."
-#: C/irc-manage.page:10(desc)
+#: C/irc-manage.page:9(desc)
msgid "How to use IRC with Empathy ."
msgstr "Benutzung des IRC mit Empathy ."
-#: C/irc-manage.page:35(title)
+#: C/irc-manage.page:34(title)
msgid "Internet Relay Chat (IRC)"
msgstr "Internet Relay Chat (IRC)"
-#: C/irc-manage.page:38(p) C/account-irc.page:39(p)
+#: C/irc-manage.page:37(p) C/account-irc.page:39(p)
msgid ""
"You must have the telepathy-idle package installed to use IRC in "
"Empathy ."
@@ -1556,23 +1497,23 @@ msgstr ""
"Sie müssen das Paket telepathy-idle installiert haben, um das IRC "
"in Empathy nutzen zu können."
-#: C/irc-manage.page:42(link)
+#: C/irc-manage.page:41(link)
msgid "Install telepathy-idle"
msgstr "telepathy-idle installieren"
-#: C/irc-manage.page:49(title)
+#: C/irc-manage.page:48(title)
msgid "IRC Chat Rooms and Conversations"
msgstr "IRC-Räume und Unterhaltungen"
-#: C/irc-manage.page:51(title)
+#: C/irc-manage.page:50(title)
msgid "Chat Rooms and Conversations"
msgstr "Unterhaltungsräume und Unterhaltungen"
-#: C/irc-manage.page:56(title)
+#: C/irc-manage.page:55(title)
msgid "Common IRC Problems"
msgstr "Häufige Probleme im IRC"
-#: C/irc-manage.page:58(title) C/index.page:55(title)
+#: C/irc-manage.page:57(title) C/index.page:55(title)
msgid "Common Problems"
msgstr "Häufig auftretende Probleme"
@@ -2425,11 +2366,11 @@ msgstr ""
"Empathy daran hindern, die Verbindung zu einem Konto automatisch "
"herzustellen."
-#: C/disable-account.page:39(title)
+#: C/disable-account.page:40(title)
msgid "Disable an account"
msgstr "Deaktivieren eines Kontos"
-#: C/disable-account.page:41(p)
+#: C/disable-account.page:42(p)
msgid ""
"You can disable an account to prevent Empathy from logging in to "
"it without removing the account entirely. You may wish to disable and re-"
@@ -2442,7 +2383,7 @@ msgstr ""
"nur zeitweise angemeldet sein wollen, aber Empathy noch für andere "
"Konten nutzen wollen."
-#: C/disable-account.page:52(p)
+#: C/disable-account.page:53(p)
msgid ""
"Select the account you wish to disable from the accounts list on the left "
"side of the window."
@@ -2450,20 +2391,13 @@ msgstr ""
"Wählen Sie das Konto, das Sie aus der Kontenliste entfernen wollen, an der "
"linken Seite des Dialogs aus."
-#: C/disable-account.page:56(p)
-msgid ""
-"Deselect Enabled on the right side of the "
-"window."
-msgstr ""
-"Entfernen Sie die Markierung von Aktiviert an "
-"der rechten Seite des Fensters."
+#: C/disable-account.page:57(p)
+msgid "On the right side of the window, switch it off."
+msgstr "Schalten Sie es an der rechten Seite des Fensters aus."
#: C/disable-account.page:62(p)
-msgid ""
-"To re-enable the account, simply select Enabled ."
-msgstr ""
-"Um das Konto erneut zu aktivieren, wählen Sie Aktiviert ."
+msgid "To re-enable the account, switch it on."
+msgstr "Um das Konto erneut zu aktivieren, schalten Sie es ein."
#: C/create-account.page:9(desc)
msgid "Register for an account with one of the supported messaging services."
@@ -2688,11 +2622,11 @@ msgid "Change your status to advertise your availability to your contacts."
msgstr ""
"Ãndern des Status, um Ihre Kontakte über Ihre Verfügbarkeit zu informieren."
-#: C/change-status.page:34(title)
+#: C/change-status.page:39(title)
msgid "Change your status"
msgstr "Ãndern Ihres Status"
-#: C/change-status.page:36(p)
+#: C/change-status.page:41(p)
msgid ""
"You can set your status to indicate your availability to your contacts. "
"Empathy allows you to select from a list of defined statuses."
@@ -2701,29 +2635,29 @@ msgstr ""
"anzuzeigen. Empathy ermöglicht Ihnen, aus einer Liste "
"vordefinierter Status zu wählen."
-#: C/change-status.page:41(p)
+#: C/change-status.page:46(p)
msgid ""
"Click on the drop-down list at the top of the Contact List window."
msgstr ""
"Klicken Sie auf die Auswahlliste oben im Kontaktlisten -Fenster."
-#: C/change-status.page:46(p)
+#: C/change-status.page:51(p)
msgid "Select a status from the list."
msgstr "Wählen Sie einen Status in der Liste aus."
-#: C/change-status.page:52(p)
+#: C/change-status.page:57(p)
msgid ""
"See for a list of the built-in statuses and "
-"what they mean. You can also add custom "
+"what they mean. You can also add custom "
"status messages to provide more information about your availability to "
"your contacts."
msgstr ""
"In finden Sie eine Liste mitgelieferter Status "
-"sowie deren Bedeutung. Sie können auch benutzerdefinierte Statusmeldungen hinzufügen, um für Ihre Kontakte "
"weitere Informationen über Ihren Status bereitzustellen."
-#: C/change-status.page:58(p)
+#: C/change-status.page:63(p)
msgid ""
"If you do not use your computer for a while, or if the screensaver is on, the "
"status will be automatically set to Away."
@@ -3035,11 +2969,11 @@ msgstr ""
msgid "Add a new account to Empathy ."
msgstr "Einen neuen Kontakt zu Empathy hinzufügen."
-#: C/add-account.page:39(title)
+#: C/add-account.page:40(title)
msgid "Add a new account"
msgstr "Hinzufügen eines neuen Kontos"
-#: C/add-account.page:41(p)
+#: C/add-account.page:42(p)
msgid ""
"You can add instant messaging accounts from any supported service to "
"communicate with all of your contacts in Empathy . For some account "
@@ -3052,11 +2986,11 @@ msgstr ""
"eines neuen Kontos. Weitere Details hierzu finden Sie in ."
-#: C/add-account.page:52(p)
-msgid "Click Add ."
-msgstr "Klicken Sie auf Hinzufügen ."
+#: C/add-account.page:53(p)
+msgid "Click + ."
+msgstr "Klicken Sie auf + ."
-#: C/add-account.page:57(p)
+#: C/add-account.page:58(p)
msgid ""
"From the Protocol drop-down list, select the type of account you "
"wish to add."
@@ -3064,7 +2998,7 @@ msgstr ""
"Aus der Protokoll -Aufklappliste wählen Sie den Kontentyp, welchen "
"Sie hinzufügen wollen."
-#: C/add-account.page:61(p)
+#: C/add-account.page:62(p)
msgid ""
"If you do not already have a registered account, select Create a new "
"account on the server . This feature is not available for all account "
@@ -3077,22 +3011,18 @@ msgstr ""
"Dienstanbietern. Weitere Informationen hierzu finden Sie in ."
-#: C/add-account.page:66(p)
+#: C/add-account.page:69(p)
msgid ""
"Enter the required information. For most accounts, you will only need a login "
"ID and a password. Some accounts may require additional information. See "
-" for more information."
+" for more information."
msgstr ""
"Geben Sie die benötigten Informationen ein. Für die meisten Konten wird die "
"Eingabe einer Anmeldekennung und eines Passworts genügen. Einige Konten "
"könnten zusätzliche Angaben erfordern. Weitere Informationen hierzu finden "
"Sie in ."
-#: C/add-account.page:71(p)
-msgid "Click Log in ."
-msgstr "Klicken Sie auf Anmelden ."
-
-#: C/add-account.page:78(p)
+#: C/add-account.page:81(p)
msgid ""
"To change the name that identifies the account in the Accounts "
"window, select the account from the list on the left and either click on the "
@@ -3513,10 +3443,101 @@ msgstr ""
#: C/index.page:0(None)
msgid "translator-credits"
msgstr ""
-"Mario Blättermann , 2008, 2009, 2010, 2011\n"
+"Mario Blättermann , 2008-2012\n"
"Philipp Kerling , 2008\n"
"Christian Kirbach , 2010."
+#~ msgid "Edit, remove and add a custom message"
+#~ msgstr ""
+#~ "Bearbeiten, Entfernen und Hinzufügen einer benutzerdefinierten Nachricht"
+
+#~ msgid ""
+#~ "To add a new custom message, from the Add New Preset section:"
+#~ msgstr ""
+#~ "So fügen Sie im Abschnitt Neue Voreinstellung hinzufügen eine "
+#~ "neue benutzerdefinierte Nachricht hinzu:"
+
+#~ msgid ""
+#~ "Click on the drop-down list to select the status you want to set a custom "
+#~ "message to."
+#~ msgstr ""
+#~ "Klicken Sie auf die Auswahlliste, um den Status auszuwählen, dem Sie die "
+#~ "benutzerdefinierte Nachricht zuordnen wollen."
+
+#~ msgid "Click on the text box, and type the new custom message."
+#~ msgstr ""
+#~ "Klicken Sie in das Textfeld und geben Sie die neue benutzerdefinierte "
+#~ "Nachricht ein."
+
+#~ msgid "Click on Add to add the new message to the presets ones."
+#~ msgstr ""
+#~ "Klicken Sie auf Hinzufügen , um die neue Nachricht zu den "
+#~ "voreingestellten Nachrichten hinzuzufügen."
+
+#~ msgid "Click on Remove ."
+#~ msgstr "Klicken Sie auf Entfernen ."
+
+#~ msgid ""
+#~ "Deselect the Enabled check-box next to the name of your "
+#~ "account, and then select it again to try to reconnect to the service."
+#~ msgstr ""
+#~ "Deaktivieren Sie das Ankreuzfeld Aktiviert neben dem Namen "
+#~ "Ihres Kontos und aktivieren Sie es erneut, um einen neuen "
+#~ "Verbindungsversuch zu starten."
+
+#~ msgid ""
+#~ "Check that the Enabled check-box is "
+#~ "selected. If it is not, select the check-box to enable the account."
+#~ msgstr ""
+#~ "Stellen Sie sicher, dass das Ankreuzfeld Aktiviert neben dem Namen Ihres Kontos ausgewählt ist. Falls "
+#~ "nicht, aktivieren Sie das Ankreuzfeld, um das Konto zu aktivieren."
+
+#~ msgid ""
+#~ "Highlighting text is quirky: #593733. If there's an actual highlighting "
+#~ "going on, independent of the selection (like in yellow or something), we "
+#~ "can use the term \"highlight\". Otherwise we need to use the term \"select"
+#~ "\". Watch that bug."
+#~ msgstr ""
+#~ "Highlighting text is quirky: #593733. If there's an actual highlighting "
+#~ "going on, independent of the selection (like in yellow or something), we "
+#~ "can use the term \"highlight\". Otherwise we need to use the term \"select"
+#~ "\". Watch that bug."
+
+#~ msgid "Select the Search tab."
+#~ msgstr "Wählen Sie den Reiter Suchen ."
+
+#~ msgid ""
+#~ "In the For field, type the text you want to search for. Click "
+#~ "Find or press Enter ."
+#~ msgstr ""
+#~ "Geben Sie in das Nach -Textfeld den Text ein, nach dem Sie "
+#~ "suchen wollen. Klicken Sie auf Suchen oder drücken Sie die "
+#~ "Eingabetaste ."
+
+#~ msgid ""
+#~ "Click on a conversation to view it. Empathy will select the "
+#~ "text in the conversation that matched your search terms."
+#~ msgstr ""
+#~ "Klicken Sie auf eine Unterhaltung, um sie zu betrachten. Empathy"
+#~ "app> hebt in der Unterhaltung den Text hervor, der Ihren Suchbegriffen "
+#~ "entspricht."
+
+#~ msgid "Select the Conversations tab."
+#~ msgstr "Wählen Sie den Reiter Unterhaltungen ."
+
+#~ msgid ""
+#~ "Deselect Enabled on the right side of the "
+#~ "window."
+#~ msgstr ""
+#~ "Entfernen Sie die Markierung von Aktiviert "
+#~ "an der rechten Seite des Fensters."
+
+#~ msgid "Click Log in ."
+#~ msgstr "Klicken Sie auf Anmelden ."
+
#~ msgid ""
#~ "In order to be able to share your desktop or to remotely use your contacts "
#~ "desktop, it is necessary to have a remote desktop viewer application "
diff --git a/help/es/es.po b/help/es/es.po
index f35a961d..3257a789 100644
--- a/help/es/es.po
+++ b/help/es/es.po
@@ -1,24 +1,24 @@
# translation of empathy-help.master.po to Español
-# Daniel Mustieles , 2011.
# Jorge González , 2009, 2010, 2011.
+# Daniel Mustieles , 2011, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: empathy-help.master\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-09-05 18:45+0000\n"
-"PO-Revision-Date: 2011-09-05 23:28+0200\n"
-"Last-Translator: Jorge González \n"
-"Language-Team: Español; Castellano \n"
+"POT-Creation-Date: 2012-01-20 18:47+0000\n"
+"PO-Revision-Date: 2012-01-21 11:20+0100\n"
+"Last-Translator: Daniel Mustieles \n"
+"Language-Team: Español \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 1.11.4\n"
-"Plural-Forms: nplurals=2; plural=(n!=1);\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. When image changes, this message will be marked fuzzy or untranslated for you.
#. It doesn't matter what you translate it to: it's not used at all.
-#: C/video-call.page:38(None) C/audio-video.page:70(None)
+#: C/video-call.page:39(None) C/audio-video.page:70(None)
#: C/audio-call.page:36(None)
msgid "@@image: 'figures/camera-web.png'; md5=8166b4372f25b78cbf5a64fe2eac2ce5"
msgstr ""
@@ -28,15 +28,15 @@ msgstr ""
msgid "Start a video conversation with one of your contacts."
msgstr "Iniciar una conversación de vÃdeo con uno de sus contactos."
-#: C/video-call.page:21(name) C/status-icons.page:16(name)
+#: C/video-call.page:22(name) C/status-icons.page:16(name)
#: C/share-desktop.page:14(name) C/set-custom-status.page:19(name)
#: C/send-file.page:21(name) C/salut-protocol.page:18(name)
-#: C/remove-account.page:18(name) C/prob-conn-neterror.page:18(name)
-#: C/prob-conn-name.page:17(name) C/prob-conn-auth.page:21(name)
-#: C/prob-conn-acctdisabled.page:18(name) C/prev-conv.page:16(name)
+#: C/remove-account.page:19(name) C/prob-conn-neterror.page:19(name)
+#: C/prob-conn-name.page:18(name) C/prob-conn-auth.page:21(name)
+#: C/prob-conn-acctdisabled.page:19(name) C/prev-conv.page:17(name)
#: C/link-contacts.page:15(name) C/irc-start-conversation.page:15(name)
#: C/irc-send-file.page:16(name) C/irc-nick-password.page:18(name)
-#: C/irc-manage.page:20(name) C/irc-join-room.page:16(name)
+#: C/irc-manage.page:19(name) C/irc-join-room.page:16(name)
#: C/irc-join-pwd.page:17(name) C/irc-commands.page:10(name)
#: C/introduction.page:13(name) C/index.page:19(name)
#: C/import-account.page:23(name) C/hide-contacts.page:11(name)
@@ -44,21 +44,21 @@ msgstr "Iniciar una conversación de vÃdeo con uno de sus contactos."
#: C/geolocation-turn.page:18(name) C/geolocation-supported.page:16(name)
#: C/geolocation-privacy.page:17(name) C/geolocation-not-showing.page:17(name)
#: C/geolocation.page:17(name) C/favorite-rooms.page:14(name)
-#: C/disable-account.page:20(name) C/create-account.page:19(name)
+#: C/disable-account.page:21(name) C/create-account.page:19(name)
#: C/audio-video.page:17(name) C/audio-call.page:19(name)
-#: C/add-account.page:20(name)
+#: C/add-account.page:21(name)
msgid "Milo Casagrande"
msgstr "Milo Casagrande"
-#: C/video-call.page:22(email) C/status-icons.page:17(email)
+#: C/video-call.page:23(email) C/status-icons.page:17(email)
#: C/share-desktop.page:15(email) C/set-custom-status.page:20(email)
#: C/send-file.page:22(email) C/salut-protocol.page:19(email)
-#: C/remove-account.page:19(email) C/prob-conn-neterror.page:19(email)
-#: C/prob-conn-name.page:18(email) C/prob-conn-auth.page:22(email)
-#: C/prob-conn-acctdisabled.page:19(email) C/prev-conv.page:17(email)
+#: C/remove-account.page:20(email) C/prob-conn-neterror.page:20(email)
+#: C/prob-conn-name.page:19(email) C/prob-conn-auth.page:22(email)
+#: C/prob-conn-acctdisabled.page:20(email) C/prev-conv.page:18(email)
#: C/link-contacts.page:16(email) C/irc-start-conversation.page:16(email)
#: C/irc-send-file.page:17(email) C/irc-nick-password.page:19(email)
-#: C/irc-manage.page:21(email) C/irc-join-room.page:17(email)
+#: C/irc-manage.page:20(email) C/irc-join-room.page:17(email)
#: C/irc-join-pwd.page:18(email) C/irc-commands.page:11(email)
#: C/introduction.page:14(email) C/index.page:20(email)
#: C/import-account.page:24(email) C/hide-contacts.page:12(email)
@@ -66,44 +66,44 @@ msgstr "Milo Casagrande"
#: C/geolocation-turn.page:19(email) C/geolocation-supported.page:17(email)
#: C/geolocation-privacy.page:18(email)
#: C/geolocation-not-showing.page:18(email) C/geolocation.page:18(email)
-#: C/favorite-rooms.page:15(email) C/disable-account.page:21(email)
+#: C/favorite-rooms.page:15(email) C/disable-account.page:22(email)
#: C/create-account.page:20(email) C/audio-video.page:18(email)
-#: C/audio-call.page:20(email) C/add-account.page:21(email)
+#: C/audio-call.page:20(email) C/add-account.page:22(email)
msgid "milo@ubuntu.com"
msgstr "milo@ubuntu.com"
-#: C/video-call.page:25(p) C/status-icons.page:24(p)
+#: C/video-call.page:26(p) C/status-icons.page:24(p)
#: C/share-desktop.page:22(p) C/set-custom-status.page:23(p)
#: C/send-message.page:21(p) C/send-file.page:25(p)
-#: C/salut-protocol.page:22(p) C/remove-account.page:22(p)
-#: C/prob-conn.page:18(p) C/prob-conn-neterror.page:22(p)
-#: C/prob-conn-name.page:21(p) C/prob-conn-auth.page:25(p)
-#: C/prob-conn-acctdisabled.page:22(p) C/prev-conv.page:24(p)
+#: C/salut-protocol.page:22(p) C/remove-account.page:23(p)
+#: C/prob-conn.page:18(p) C/prob-conn-neterror.page:23(p)
+#: C/prob-conn-name.page:22(p) C/prob-conn-auth.page:25(p)
+#: C/prob-conn-acctdisabled.page:23(p) C/prev-conv.page:25(p)
#: C/link-contacts.page:19(p) C/irc-start-conversation.page:19(p)
#: C/irc-send-file.page:20(p) C/irc-nick-password.page:22(p)
-#: C/irc-manage.page:24(p) C/irc-join-room.page:20(p)
+#: C/irc-manage.page:23(p) C/irc-join-room.page:20(p)
#: C/irc-join-pwd.page:21(p) C/irc-commands.page:14(p)
#: C/introduction.page:17(p) C/index.page:23(p) C/import-account.page:31(p)
#: C/hide-contacts.page:15(p) C/group-conversations.page:23(p)
#: C/geolocation-what-is.page:22(p) C/geolocation-turn.page:22(p)
#: C/geolocation-supported.page:20(p) C/geolocation-privacy.page:21(p)
#: C/geolocation-not-showing.page:21(p) C/geolocation.page:21(p)
-#: C/favorite-rooms.page:18(p) C/disable-account.page:28(p)
-#: C/create-account.page:23(p) C/change-status.page:23(p)
+#: C/favorite-rooms.page:18(p) C/disable-account.page:29(p)
+#: C/create-account.page:23(p) C/change-status.page:28(p)
#: C/audio-video.page:21(p) C/audio-call.page:23(p) C/add-contact.page:22(p)
-#: C/add-account.page:28(p) C/accounts-window.page:22(p)
+#: C/add-account.page:29(p) C/accounts-window.page:22(p)
#: C/account-jabber.page:18(p) C/account-irc.page:20(p)
msgid "Creative Commons Share Alike 3.0"
msgstr "Creative Commons Compartir Igual 3.0"
-#: C/video-call.page:28(title)
+#: C/video-call.page:29(title)
msgid "Start a video conversation"
msgstr "Comenzar una conversación de vÃdeo"
-#: C/video-call.page:30(p)
+#: C/video-call.page:31(p)
msgid ""
"If you have a webcam, you can call your contacts and have a video "
-"conversation with them. This features only works with certain types of "
+"conversation with them. This feature only works with certain types of "
"accounts, and it requires the other person to have an application that "
"supports video calls."
msgstr ""
@@ -112,7 +112,7 @@ msgstr ""
"cuentas y requiere que la otra persona tenga una aplicación que soporte "
"llamadas de vÃdeo."
-#: C/video-call.page:37(p)
+#: C/video-call.page:38(p)
msgid ""
"From the Contact List window, click the video call icon "
@@ -124,7 +124,7 @@ msgstr ""
"media> junto al nombre del contacto al que desea llamar y seleccione Llamada de vÃdeo ."
-#: C/video-call.page:43(p) C/audio-call.page:42(p)
+#: C/video-call.page:44(p) C/audio-call.page:42(p)
msgid ""
"A new window will open. When the connection is established, you will see "
"Connected at the bottom of the window, along with the total "
@@ -134,12 +134,12 @@ msgstr ""
"en la parte inferior de la ventana, Connectado y el tiempo total "
"de conversación."
-#: C/video-call.page:48(p) C/audio-call.page:48(p)
+#: C/video-call.page:49(p) C/audio-call.page:48(p)
msgid "To end the conversation, click on Hang up ."
msgstr ""
"Para finalizar una conversación pulse Colgar ."
-#: C/video-call.page:54(p)
+#: C/video-call.page:55(p)
msgid ""
"To turn a video conversation into an audio conversation, choose Video Video Off ."
@@ -148,18 +148,18 @@ msgstr ""
"VÃdeo VÃdeo "
"apagado ."
-#: C/video-call.page:60(title)
+#: C/video-call.page:61(title)
msgid "Start a video conversation with a meta-contact"
msgstr "Iniciar una conversación de vÃdeo con uno de sus metacontactos."
-#: C/video-call.page:63(p) C/send-message.page:53(p) C/audio-call.page:66(p)
+#: C/video-call.page:64(p) C/send-message.page:53(p) C/audio-call.page:66(p)
msgid ""
"From the Contact List window, right-click on the meta-contact."
msgstr ""
"Desde la ventana Lista de contactos , pulse con el botón derecho "
"sobre el metacontacto."
-#: C/video-call.page:68(p)
+#: C/video-call.page:69(p)
msgid ""
"Select the contact you want to have the conversation, and from the menu "
"select Video Call ."
@@ -167,7 +167,7 @@ msgstr ""
"Seleccione el contacto con el que quiere tener la conversacioÌn y, del menuÌ, "
"seleccione Llamada de vÃdeo ."
-#: C/video-call.page:75(p) C/send-message.page:65(p) C/audio-call.page:78(p)
+#: C/video-call.page:76(p) C/send-message.page:65(p) C/audio-call.page:78(p)
msgid ""
"To recognize if a contact is a meta-contact , move your mouse on a "
"contact in the Contact List window, and stop over it for a "
@@ -208,17 +208,17 @@ msgid "Understanding the various statuses and status icons."
msgstr "Entender los diversos estados e iconos de estado."
#: C/status-icons.page:20(name) C/salut-protocol.page:36(cite)
-#: C/prev-conv.page:20(name) C/prev-conv.page:38(cite)
-#: C/import-account.page:27(name) C/disable-account.page:24(name)
-#: C/audio-video.page:109(cite) C/audio-video.page:117(cite)
-#: C/add-account.page:24(name) C/accounts-window.page:18(name)
-#: C/account-jabber.page:14(name) C/account-irc.page:16(name)
+#: C/prev-conv.page:21(name) C/import-account.page:27(name)
+#: C/disable-account.page:25(name) C/audio-video.page:109(cite)
+#: C/audio-video.page:117(cite) C/add-account.page:25(name)
+#: C/accounts-window.page:18(name) C/account-jabber.page:14(name)
+#: C/account-irc.page:16(name)
msgid "Shaun McCance"
msgstr "Shaun McCance"
-#: C/status-icons.page:21(email) C/prev-conv.page:21(email)
-#: C/import-account.page:28(email) C/disable-account.page:25(email)
-#: C/add-account.page:25(email) C/accounts-window.page:19(email)
+#: C/status-icons.page:21(email) C/prev-conv.page:22(email)
+#: C/import-account.page:28(email) C/disable-account.page:26(email)
+#: C/add-account.page:26(email) C/accounts-window.page:19(email)
#: C/account-jabber.page:15(email) C/account-irc.page:17(email)
msgid "shaunm@gnome.org"
msgstr "shaunm@gnome.org"
@@ -320,7 +320,6 @@ msgstr ""
"cuentas."
#: C/share-desktop.page:7(desc)
-#| msgid "Share the desktop with your contacts."
msgid "Show your desktop to your contacts."
msgstr "Mostrar su escritorio a sus contactos."
@@ -337,11 +336,6 @@ msgid "Share your desktop"
msgstr "Compartir su escritorio"
#: C/share-desktop.page:35(p)
-#| msgid ""
-#| "It is possible, with some of your contacts, to share your desktop with "
-#| "them, or to start using your contacts desktop. You can use this "
-#| "functionality to show your desktop to your contacts, to ask for help or "
-#| "to help your contacts resolve a problem."
msgid ""
"It is possible to share your desktop with some of your contacts. You can use "
"this functionality to show your desktop to your contacts to, for example, "
@@ -362,18 +356,12 @@ msgstr ""
"servidor VNC de GNOME, tiene el soporte necesario."
#: C/share-desktop.page:51(p)
-#| msgid ""
-#| "From the Contact List window, perform one of the following:"
msgid "From the Contact List window, do one of the following:"
msgstr ""
"En la ventana de la Lista de contactos realice una de las "
"siguientes:"
#: C/share-desktop.page:56(p)
-#| msgid ""
-#| "Select the contact you want to share your desktop with, and choose "
-#| "Edit Contact Share my desktop "
-#| "guiseq>."
msgid ""
"Select the contact you want to share your desktop with and choose "
"Edit Contact Share My Desktop "
@@ -384,9 +372,6 @@ msgstr ""
"gui> ."
#: C/share-desktop.page:63(p)
-#| msgid ""
-#| "Right-click on the name of the contact you want to share your desktop "
-#| "with, and select Share my desktop ."
msgid ""
"Right-click on the name of the contact you want to share your desktop with "
"and select Share My Desktop ."
@@ -412,9 +397,6 @@ msgstr ""
"compartición de escritorio."
#: C/share-desktop.page:82(p)
-#| msgid ""
-#| "For more information about how to use the remote desktop viewer "
-#| "application, refer to its help."
msgid ""
"For more information about how to use the remote desktop sharing "
"application, refer to its help."
@@ -431,10 +413,6 @@ msgstr ""
"ralentización del rendimiento del sistema y una baja velocidad de Internet."
#: C/share-desktop.page:96(p)
-#| msgid ""
-#| "Not all your contacts might be able to support this functionality. It is "
-#| "necessary for them to have at least the 2.28 version of Empathy"
-#| "app> and a remote desktop viewer application installed in their system."
msgid ""
"Some of your contacts may not be able to use this feature. It is necessary "
"for them to have version 2.28, or newer, of Empathy and a "
@@ -503,14 +481,18 @@ msgstr ""
"de la ventana y pulse Intro para establecer el mensaje."
#: C/set-custom-status.page:64(p)
+#| msgid ""
+#| "If you want to set the custom message as a favorite, saving it in order "
+#| "to use it again, click on the little star on the right of the text box "
+#| "where you wrote your custom message."
msgid ""
"If you want to set the custom message as a favorite, saving it in order to "
-"use it again, click on the little star on the right of the text box where "
+"use it again, click on the little heart on the right of the text box where "
"you wrote your custom message."
msgstr ""
"Si quiere establecer el mensaje personalizado como un favorito, guardándolo "
-"para usarlo de nuevo, pulse en la pequeña estrella a la derecha de la caja "
-"de texto donde escribió su mensaje personalizado."
+"para usarlo de nuevo, pulse en el pequeño corazón a la derecha de la caja de "
+"texto donde escribió su mensaje personalizado."
#: C/set-custom-status.page:69(p)
msgid ""
@@ -521,8 +503,9 @@ msgstr ""
"que use Empathy . Sólo se guardará durante la sesión actual."
#: C/set-custom-status.page:78(title)
-msgid "Edit, remove and add a custom message"
-msgstr "Editar, quitar y añadir un mensaje personalizado"
+#| msgid "To remove a custom message:"
+msgid "Edit and remove a custom message"
+msgstr "Editar y quitar un mensaje personalizado"
#: C/set-custom-status.page:88(p)
msgid "Select Edit Custom Message ."
@@ -562,58 +545,38 @@ msgstr ""
msgid "Click on the Remove button."
msgstr "Pulse el botón Quitar ."
-#: C/set-custom-status.page:131(p)
-msgid ""
-"To add a new custom message, from the Add New Preset section:"
-msgstr ""
-"Para añadir un mensaje personalizado nuevo, desde la sección Añadir "
-"estado guardado "
-
-#: C/set-custom-status.page:136(p)
-msgid ""
-"Click on the drop-down list to select the status you want to set a custom "
-"message to."
-msgstr ""
-"Pulse en la lista desplegable para seleccionar el estado en el que quiere "
-"establecer un mensaje personalizado."
-
-#: C/set-custom-status.page:142(p)
-msgid "Click on the text box, and type the new custom message."
-msgstr "Pulse en la caja de texto y escriba el mensaje personalizado nuevo."
-
-#: C/set-custom-status.page:147(p)
-msgid "Click on Add to add the new message to the presets ones."
-msgstr "Pulse Añadir para añadir un mensaje nuevo a los guardados."
-
-#: C/set-custom-status.page:156(p)
+#: C/set-custom-status.page:133(p)
msgid "When finished, click on Close ."
msgstr "Cuando haya terminado pulse Cerrar ."
-#: C/set-custom-status.page:163(p)
+#: C/set-custom-status.page:140(p)
+#| msgid ""
+#| "When you edit or add a new custom message, it will not be set as the "
+#| "current status message. You will need to select it from the Contact "
+#| "List window."
msgid ""
-"When you edit or add a new custom message, it will not be set as the current "
-"status message. You will need to select it from the Contact List "
-"window."
+"When you edit a custom message, it will not be set as the current status "
+"message. You will need to select it from the Contact List window."
msgstr ""
-"Cuando edita o añade un mensaje personalizado nuevo no se establece como el "
-"mensaje de estado actual. Tiene que seleccionarlo en la ventana de "
-"Lista de contactos ."
+"Cuando edita un mensaje personalizado nuevo no se establece como el mensaje "
+"de estado actual. Deberá seleccionarlo en la ventana de Lista de "
+"contactos ."
#: C/send-message.page:8(desc)
msgid "Send a message to one of your contacts."
msgstr "Enviar un mensaje a uno de sus contactos."
#: C/send-message.page:17(name) C/send-file.page:17(name)
-#: C/prob-conn.page:14(name) C/prob-conn-neterror.page:14(name)
-#: C/prob-conn-auth.page:17(name) C/prob-conn-acctdisabled.page:14(name)
-#: C/change-status.page:19(name) C/add-contact.page:18(name)
+#: C/prob-conn.page:14(name) C/prob-conn-neterror.page:15(name)
+#: C/prob-conn-auth.page:17(name) C/prob-conn-acctdisabled.page:15(name)
+#: C/change-status.page:24(name) C/add-contact.page:18(name)
msgid "Phil Bull"
msgstr "Phil Bull"
#: C/send-message.page:18(email) C/send-file.page:18(email)
-#: C/prob-conn.page:15(email) C/prob-conn-neterror.page:15(email)
-#: C/prob-conn-auth.page:18(email) C/prob-conn-acctdisabled.page:15(email)
-#: C/change-status.page:20(email) C/add-contact.page:19(email)
+#: C/prob-conn.page:15(email) C/prob-conn-neterror.page:16(email)
+#: C/prob-conn-auth.page:18(email) C/prob-conn-acctdisabled.page:16(email)
+#: C/change-status.page:25(email) C/add-contact.page:19(email)
msgid "philbull@gmail.com"
msgstr "philbull@gmail.com"
@@ -782,11 +745,11 @@ msgstr ""
msgid "Completely remove an account from Empathy ."
msgstr "Quitar completamente una cuenta en Empathy ."
-#: C/remove-account.page:33(title)
+#: C/remove-account.page:34(title)
msgid "Remove an account"
msgstr "Quitar una cuenta"
-#: C/remove-account.page:35(p)
+#: C/remove-account.page:36(p)
msgid ""
"You can completely remove an account from Empathy if you no "
"longer wish to use the account. If you wish to use the account in "
@@ -797,8 +760,8 @@ msgstr ""
"seguir usándola. Si quiere usar de nuevo la cuenta en Empathy en "
"el futuro, deberá añadir los detalles de la cuenta de nuevo."
-#: C/remove-account.page:42(p) C/irc-nick-password.page:50(p)
-#: C/disable-account.page:48(p) C/add-account.page:48(p)
+#: C/remove-account.page:43(p) C/irc-nick-password.page:50(p)
+#: C/disable-account.page:49(p) C/add-account.page:49(p)
msgid ""
"From the Contact List window, choose Edit"
"gui>Accounts , or press F4 ."
@@ -806,7 +769,7 @@ msgstr ""
"Desde la ventana Lista de contactos elija Editar"
"gui>Cuentas o pulse F4 ."
-#: C/remove-account.page:46(p)
+#: C/remove-account.page:47(p)
msgid ""
"Select the account you wish to remove from the accounts list on the left "
"side of the window."
@@ -814,11 +777,11 @@ msgstr ""
"Seleccione la cuenta que quiere quitar de la lista de cuentas en la parte "
"izquierda de la ventana."
-#: C/remove-account.page:50(p)
-msgid "Click on Remove ."
-msgstr "Pulse Quitar ."
+#: C/remove-account.page:51(p)
+msgid "Click - ."
+msgstr "Pulse - ."
-#: C/remove-account.page:53(p)
+#: C/remove-account.page:54(p)
msgid ""
"A dialog will be shown asking for confirmation. Click the Remove "
"button to permanently remove the account."
@@ -826,7 +789,7 @@ msgstr ""
"Se mostrará un diálogo preguntando por una confirmación. Pulse el botón "
"Quitar para quitar la cuenta permanentemente."
-#: C/remove-account.page:59(p)
+#: C/remove-account.page:60(p)
msgid ""
"Even after removing an account, Empathy does not delete your "
"conversation history for that account."
@@ -846,7 +809,7 @@ msgstr "Problemas al conectarse a un servicio de mensajerÃa instantánea"
#. When image changes, this message will be marked fuzzy or untranslated for you.
#. It doesn't matter what you translate it to: it's not used at all.
-#: C/prob-conn-neterror.page:58(None) C/prob-conn-name.page:43(None)
+#: C/prob-conn-neterror.page:59(None) C/prob-conn-name.page:44(None)
#: C/prob-conn-auth.page:58(None) C/account-irc.page:109(None)
msgid "@@image: 'figures/gtk-edit.png'; md5=4f21b451732817be0604fe3e2c8da98b"
msgstr "@@image: 'figures/gtk-edit.png'; md5=4f21b451732817be0604fe3e2c8da98b"
@@ -859,15 +822,15 @@ msgstr ""
"Aparecerá el mensaje de error «Error de red » en la ventana "
"principal."
-#: C/prob-conn-neterror.page:33(title)
+#: C/prob-conn-neterror.page:34(title)
msgid "I get a message that says âNetwork errorâ"
msgstr "Obtengo un mensaje que muestra «Error de red»"
-#: C/prob-conn-neterror.page:36(cite)
+#: C/prob-conn-neterror.page:37(cite)
msgid "shaunm"
msgstr "shaunm"
-#: C/prob-conn-neterror.page:37(p)
+#: C/prob-conn-neterror.page:38(p)
msgid ""
"Empathy no longer allows you to create an IRC account without a valid nick. "
"I've removed the guide link. Remove the text."
@@ -875,7 +838,7 @@ msgstr ""
"Empathy ya no le permite crear una cuenta de IRC sin un apodo válido. Se ha "
"quitado el enlace de guÃa. Quitar el texto."
-#: C/prob-conn-neterror.page:41(p)
+#: C/prob-conn-neterror.page:42(p)
msgid ""
"This kind of error happens when Empathy cannot communicate with "
"the instant messaging service for some reason."
@@ -883,7 +846,7 @@ msgstr ""
"Este tipo de mensaje sucede cuando Empathy no se puede comunicar "
"con el servicio de mensajerÃa instantánea por alguna razón."
-#: C/prob-conn-neterror.page:45(p)
+#: C/prob-conn-neterror.page:46(p)
msgid ""
"Also, this kind of error happens when you try to use an IRC account without "
"setting a nickname."
@@ -891,13 +854,13 @@ msgstr ""
"Este tipo de error también sucede cuando intenta usar una cuenta de IRC sin "
"haber configurado el apodo."
-#: C/prob-conn-neterror.page:52(p) C/prob-conn-auth.page:45(p)
-#: C/prob-conn-acctdisabled.page:43(p)
+#: C/prob-conn-neterror.page:53(p) C/prob-conn-auth.page:45(p)
+#: C/prob-conn-acctdisabled.page:44(p)
msgid ""
"Make sure that you are connected to the Internet, or to a local area network."
msgstr "Asegúrese de que está conectado a Internet o a una red de área local."
-#: C/prob-conn-neterror.page:57(p) C/prob-conn-name.page:42(p)
+#: C/prob-conn-neterror.page:58(p) C/prob-conn-name.page:43(p)
#: C/prob-conn-auth.page:57(p)
msgid ""
"Click the Editar en el mensaje de error."
-#: C/prob-conn-neterror.page:65(p) C/prob-conn-acctdisabled.page:59(p)
+#: C/prob-conn-neterror.page:64(p) C/prob-conn-acctdisabled.page:60(p)
msgid ""
"Check in the Advanced section that all the details are correct. "
"You should be able to find these details from the website of the messaging "
@@ -916,19 +879,18 @@ msgstr ""
"correctos. DeberÃa poder encontrar estos detalles en la página web del "
"servicio de mensajerÃa."
-#: C/prob-conn-neterror.page:82(p) C/prob-conn-auth.page:68(p)
+#: C/prob-conn-neterror.page:79(p) C/prob-conn-name.page:65(p)
msgid ""
-"Deselect the Enabled , and then select it again to try to "
-"reconnect to the service."
+"Switch the account off, and then switch it on to try to reconnect to the "
+"service."
msgstr ""
-"Deseleccione la casilla de verificación Activada y después "
-"selecciónela de nuevo para intentar reconectar con el servicio."
+"Salga de la cuenta y vuelva a entrar para volver a conectarse al servicio."
-#: C/prob-conn-neterror.page:90(title)
+#: C/prob-conn-neterror.page:87(title)
msgid "Proxy support"
msgstr "Soporte de proxy"
-#: C/prob-conn-neterror.page:91(p)
+#: C/prob-conn-neterror.page:88(p)
msgid ""
"At the moment Empathy can not be configured to work with a proxy."
msgstr ""
@@ -947,11 +909,11 @@ msgstr ""
"Aparecen en la ventana principal un mensaje de error que dice «Nombre "
"en uso »."
-#: C/prob-conn-name.page:32(title)
+#: C/prob-conn-name.page:33(title)
msgid "I get a message that says âName in useâ"
msgstr "Obtengo un mensaje de error que muestra «Nombre en uso»"
-#: C/prob-conn-name.page:34(p)
+#: C/prob-conn-name.page:35(p)
msgid ""
"This kind of error happens when you try to connect to your IRC account and "
"you are using a nickname that is already being used by someone else on that "
@@ -961,11 +923,11 @@ msgstr ""
"está usando un apodo que ya está usando otra persona en esa red en "
"particular."
-#: C/prob-conn-name.page:50(p)
+#: C/prob-conn-name.page:51(p)
msgid "In the Nickname text box, type a new nickname."
msgstr "En la caja de texto Apodo escriba un apodo nuevo."
-#: C/prob-conn-name.page:55(p)
+#: C/prob-conn-name.page:56(p)
msgid ""
"If you have registered that nickname within the network you are using, set "
"the password for that nickname. For more information, see ."
-#: C/prob-conn-name.page:64(p)
-msgid ""
-"Deselect the Enabled check-box next to the name of your account, "
-"and then select it again to try to reconnect to the service."
-msgstr ""
-"Deseleccione la casilla de verificación Activada junto al nombre "
-"de su cuenta y después selecciónela de nuevo para intentar reconectar con el "
-"servicio."
-
#: C/prob-conn-auth.page:8(desc)
msgid ""
"An error message which says âAuthentication failed â appears in "
@@ -1016,13 +969,21 @@ msgstr ""
"intentando conectarse. Si no tiene una cuenta la mayorÃa de los servicios no "
"le permitirán que se conecte."
-#: C/prob-conn-auth.page:63(p) C/prob-conn-acctdisabled.page:54(p)
+#: C/prob-conn-auth.page:63(p) C/prob-conn-acctdisabled.page:55(p)
msgid ""
"Type your username and password again to make sure that they are correct."
msgstr ""
"Escriba su nombre de usuario y contraseña de nuevo y asegúrese de que son "
"correctos."
+#: C/prob-conn-auth.page:68(p)
+msgid ""
+"Deselect the Enabled , and then select it again to try to "
+"reconnect to the service."
+msgstr ""
+"Deseleccione la casilla de verificación Activada y después "
+"selecciónela de nuevo para intentar reconectar con el servicio."
+
#: C/prob-conn-acctdisabled.page:7(desc)
msgid ""
"The instant messaging account that you want to use is not enabled in the "
@@ -1031,11 +992,11 @@ msgstr ""
"La cuenta de mensajerÃa instantánea que quiere usar no está activada en la "
"lista de cuentas."
-#: C/prob-conn-acctdisabled.page:33(title)
+#: C/prob-conn-acctdisabled.page:34(title)
msgid "My account is not enabled"
msgstr "Mi cuenta no está activada"
-#: C/prob-conn-acctdisabled.page:35(p)
+#: C/prob-conn-acctdisabled.page:36(p)
msgid ""
"If the instant messaging account that you want to use is not enabled in the "
"drop-down account list when you try to start a new conversation or join a "
@@ -1046,7 +1007,7 @@ msgstr ""
"nueva o unirse a una charla, puede que los detalles de su cuenta no sean "
"correctos."
-#: C/prob-conn-acctdisabled.page:48(p)
+#: C/prob-conn-acctdisabled.page:49(p)
msgid ""
"Choose Edit Accounts and select the "
"account that is not working."
@@ -1054,38 +1015,19 @@ msgstr ""
"Elija Editar Cuentas y seleccione la "
"cuenta que no está funcionando."
-#: C/prob-conn-acctdisabled.page:65(p)
-msgid ""
-"Check that the Enabled check-box is selected. "
-"If it is not, select the check-box to enable the account."
-msgstr ""
-"Compruebe que la casilla de verificación Activada"
-"gui> está seleccionada. Si no lo está, marque la casilla de verificación "
-"para activar la cuenta."
+#: C/prob-conn-acctdisabled.page:66(p)
+msgid "Check that the account is switched on."
+msgstr "Compruebe que la cuenta está activada"
#: C/prev-conv.page:8(desc)
msgid "Browse or search your previous conversations."
msgstr "Examinar o buscar en sus conversaciones anteriores"
-#: C/prev-conv.page:35(title)
+#: C/prev-conv.page:36(title)
msgid "View previous conversations"
msgstr "Ver conversaciones anteriores"
-#: C/prev-conv.page:39(p)
-msgid ""
-"Highlighting text is quirky: #593733. If there's an actual highlighting going on, "
-"independent of the selection (like in yellow or something), we can use the "
-"term \"highlight\". Otherwise we need to use the term \"select\". Watch that "
-"bug."
-msgstr ""
-"Resaltar texto es extraño: #593733. Si existe un resaltado actualmente, "
-"independiente de la selección (en amarillo, por ejemplo), se puede usar el "
-"término «resaltar». De otra forma se debe usar el término «seleccionado». "
-"Siga el progreso del error."
-
-#: C/prev-conv.page:46(p)
+#: C/prev-conv.page:38(p)
msgid ""
"Empathy automatically saves all your text conversations you have "
"with your contacts. You can search through all of "
@@ -1097,7 +1039,7 @@ msgstr ""
"todas sus conversaciones anteriores o buscar "
"conversación anteriores por contacto y fecha."
-#: C/prev-conv.page:54(p)
+#: C/prev-conv.page:46(p)
msgid ""
"You do not need to be connected to the Internet to view and search your "
"previous conversations."
@@ -1105,11 +1047,11 @@ msgstr ""
"No necesita estar conectado a Internet para ver y buscar en sus "
"conversaciones anteriores."
-#: C/prev-conv.page:61(title)
+#: C/prev-conv.page:53(title)
msgid "Search previous conversations"
msgstr "Buscar conversaciones anteriores"
-#: C/prev-conv.page:63(p)
+#: C/prev-conv.page:55(p)
msgid ""
"You can perform a full-text search through all of your previous "
"conversations."
@@ -1117,7 +1059,7 @@ msgstr ""
"Puede realizar una búsqueda de texto completo sobre todas sus conversaciones "
"anteriores."
-#: C/prev-conv.page:67(p) C/prev-conv.page:96(p)
+#: C/prev-conv.page:59(p) C/prev-conv.page:87(p)
msgid ""
"From the Contact List window, choose View"
"gui>Previous Conversations . Alternatively, press "
@@ -1127,40 +1069,33 @@ msgstr ""
"gui>Conversaciones anteriores . Alternativamente, pulse "
"F3 ."
-#: C/prev-conv.page:71(p)
-msgid "Select the Search tab."
-msgstr "Seleccione la pestaña Buscar ."
-
-#: C/prev-conv.page:74(p)
+#: C/prev-conv.page:63(p)
msgid ""
-"In the For field, type the text you want to search for. Click "
-"Find or press Enter ."
+"Select an account from the drop-down list in the top. A list of contacts and "
+"chat room for that account will be shown below."
msgstr ""
-"En el campo Para escriba el texto que quiere buscar. Pulse "
-"Buscar o pulse Intro ."
+"Seleccione una cuenta de la lista desplegable en la parte superior. Para esa "
+"cuenta se mostrará debajo una lista de contactos y una sala de chat."
-#: C/prev-conv.page:78(p)
+#: C/prev-conv.page:67(p)
msgid ""
-"Any conversations that matched your search terms will be shown in the list "
-"below the search field. By default, conversations are ordered by date."
+"Type the text you want to search for in the Search text field."
msgstr ""
-"Se mostrará en la lista bajo el campo de búsqueda cualquier conversación que "
-"coincida con sus términos de búsqueda. Las conversaciones se ordenan por "
-"fecha de forma predeterminada."
+"Escriba el texto que quiere buscar en el cuadro de texto Buscar "
-#: C/prev-conv.page:82(p)
+#: C/prev-conv.page:71(p)
msgid ""
-"Click on a conversation to view it. Empathy will select the text "
-"in the conversation that matched your search terms."
+"Any conversations that matched your search terms will be shown. By default, "
+"conversations are ordered by date."
msgstr ""
-"Pulse sobre una conversación para verla. Empathy seleccionará el "
-"texto en la conversación que coincida con sus términos de búsqueda."
+"Se mostrará cualquier conversación que coincida con sus términos de "
+"búsqueda. Las conversaciones se ordenan por fecha de forma predeterminada."
-#: C/prev-conv.page:89(title)
+#: C/prev-conv.page:80(title)
msgid "Browse previous conversations"
msgstr "Examinar conversaciones anteriores"
-#: C/prev-conv.page:91(p)
+#: C/prev-conv.page:82(p)
msgid ""
"You can browse your previous conversations with your contacts or in chat "
"rooms by date."
@@ -1168,11 +1103,7 @@ msgstr ""
"Puede examinar por fecha las conversaciones anteriores con sus contactos o "
"en salas de chat."
-#: C/prev-conv.page:100(p)
-msgid "Select the Conversations tab."
-msgstr "Seleccione la pestaña Conversaciones ."
-
-#: C/prev-conv.page:103(p)
+#: C/prev-conv.page:91(p)
msgid ""
"Select an account from the drop-down list in the top left. A list of "
"contacts and chat room for that account will be shown below."
@@ -1181,7 +1112,7 @@ msgstr ""
"izquierda. Para esa cuenta se mostrará debajo una lista de contactos y una "
"sala de chat."
-#: C/prev-conv.page:107(p)
+#: C/prev-conv.page:95(p)
msgid ""
"Select a contact or chat room to view your previous conversations from. By "
"default the most recent conversation will be shown."
@@ -1189,7 +1120,7 @@ msgstr ""
"Para ver sus conversaciones anteriores, seleccione un contacto o una sala de "
"chat. De forma predeterminada se muestra la conversación más reciente."
-#: C/prev-conv.page:111(p)
+#: C/prev-conv.page:99(p)
msgid ""
"You can browse your conversations by date. Days on which you had a "
"conversation with the selected contact will be shown in bold text. Click a "
@@ -1201,26 +1132,27 @@ msgstr ""
"sobre una fecha para seleccionarla. Pulse las fechas junto al mes y año para "
"examinar fechas anteriores."
-#: C/prev-conv.page:117(p)
+#: C/prev-conv.page:105(p)
msgid ""
-"You can search for text in the displayed conversation by typing into the "
-"search field at the top. The matching text will be highlighted."
+"You can search for text in the conversations by typing into the search field "
+"at the top. The matching conversations will be showed."
msgstr ""
"Puede buscar texto en las conversaciones mostradas escribiéndolo en el campo "
-"de búsqueda en la parte superior. Se resaltará el texto coincidente."
+"de búsqueda en la parte superior. Se resaltarán las conversaciones "
+"coincidentes."
-#: C/prev-conv.page:121(p)
+#: C/prev-conv.page:111(p)
msgid ""
"You can quickly view the previous conversations with one of your contacts "
"from the Contact List window. Simply right click the contact and "
-"choose View Previous Conversations . The Previous "
-"Conversations window will open with that contact already selected."
+"choose Previous Conversations . The Previous Conversations"
+"gui> window will open with that contact already selected."
msgstr ""
"Puede ver rápidamente las conversaciones anteriores con uno de sus contactos "
"desde la ventana Lista de contactos . Simplemente pulse con el "
"botón derecho del ratón sobre el contacto y seleccione Conversaciones "
-"anteriores . Se abrirá la ventana Ver conversaciones previas "
-"con el contacto seleccionado."
+"anteriores . Se abrirá la ventana Conversaciones previas con "
+"el contacto seleccionado."
#: C/link-contacts.page:11(desc)
msgid "Merge and separate different contacts into a single one."
@@ -1516,6 +1448,7 @@ msgstr ""
"usar para registrar su apodo."
#: C/irc-nick-password.page:63(p) C/import-account.page:61(p)
+#: C/add-account.page:74(p)
msgid "Click Apply ."
msgstr "Pulse Aplicar ."
@@ -1529,15 +1462,15 @@ msgstr ""
"en ciertas redes de IRC. Actualmente no es posible registrar un apodo IRC o "
"cambiar la contraseña de su apodo con Empathy ."
-#: C/irc-manage.page:10(desc)
+#: C/irc-manage.page:9(desc)
msgid "How to use IRC with Empathy ."
msgstr "Cómo usar el IRC con Empathy ."
-#: C/irc-manage.page:35(title)
+#: C/irc-manage.page:34(title)
msgid "Internet Relay Chat (IRC)"
msgstr "Internet Relay Chat (IRC)"
-#: C/irc-manage.page:38(p) C/account-irc.page:39(p)
+#: C/irc-manage.page:37(p) C/account-irc.page:39(p)
msgid ""
"You must have the telepathy-idle package installed to use IRC in "
"Empathy ."
@@ -1545,23 +1478,23 @@ msgstr ""
"Debe tener instalado el paquete telepathy-idle para poder usar el "
"IRC en Empathy ."
-#: C/irc-manage.page:42(link)
+#: C/irc-manage.page:41(link)
msgid "Install telepathy-idle"
msgstr "Instale telepathy-idle"
-#: C/irc-manage.page:49(title)
+#: C/irc-manage.page:48(title)
msgid "IRC Chat Rooms and Conversations"
msgstr "Salas de chat y conversaciones en el IRC"
-#: C/irc-manage.page:51(title)
+#: C/irc-manage.page:50(title)
msgid "Chat Rooms and Conversations"
msgstr "Salas de chat y conversaciones"
-#: C/irc-manage.page:56(title)
+#: C/irc-manage.page:55(title)
msgid "Common IRC Problems"
msgstr "Problemas comunes en el IRC"
-#: C/irc-manage.page:58(title) C/index.page:55(title)
+#: C/irc-manage.page:57(title) C/index.page:55(title)
msgid "Common Problems"
msgstr "Problemas comunes"
@@ -2413,11 +2346,11 @@ msgid "Prevent Empathy from automatically logging in to an account."
msgstr ""
"Evitar que Empathy inicie sesión automáticamente en una cuenta."
-#: C/disable-account.page:39(title)
+#: C/disable-account.page:40(title)
msgid "Disable an account"
msgstr "Desactivar una cuenta"
-#: C/disable-account.page:41(p)
+#: C/disable-account.page:42(p)
msgid ""
"You can disable an account to prevent Empathy from logging in to "
"it without removing the account entirely. You may wish to disable and re-"
@@ -2430,7 +2363,7 @@ msgstr ""
"cuenta de vez en cuando, pero sigue queriendo usar Empathy para "
"otras cuentas."
-#: C/disable-account.page:52(p)
+#: C/disable-account.page:53(p)
msgid ""
"Select the account you wish to disable from the accounts list on the left "
"side of the window."
@@ -2438,21 +2371,13 @@ msgstr ""
"Seleccione la cuenta que quiere desactivar desde la lista de cuentas en la "
"parte izquierda de la ventana."
-#: C/disable-account.page:56(p)
-msgid ""
-"Deselect Enabled on the right side of the "
-"window."
-msgstr ""
-"Deseleccione Activada en la parte derecha de "
-"la ventana."
+#: C/disable-account.page:57(p)
+msgid "On the right side of the window, switch it off."
+msgstr "DesactÃvela en la parte derecha de la ventana,"
#: C/disable-account.page:62(p)
-msgid ""
-"To re-enable the account, simply select Enabled"
-"gui>."
-msgstr ""
-"Para reactivar la cuenta simplemente seleccione Activada ."
+msgid "To re-enable the account, switch it on."
+msgstr "Para reactivar la cuenta, actÃvela."
#: C/create-account.page:9(desc)
msgid "Register for an account with one of the supported messaging services."
@@ -2673,11 +2598,11 @@ msgstr "Yahoo!"
msgid "Change your status to advertise your availability to your contacts."
msgstr "Cambie su estado para avisar de su disponibilidad a sus contactos."
-#: C/change-status.page:34(title)
+#: C/change-status.page:39(title)
msgid "Change your status"
msgstr "Cambiar su estado"
-#: C/change-status.page:36(p)
+#: C/change-status.page:41(p)
msgid ""
"You can set your status to indicate your availability to your contacts. "
"Empathy allows you to select from a list of defined statuses."
@@ -2685,30 +2610,30 @@ msgstr ""
"Puede establecer su estado para indicar su disponibilidad a sus contactos. "
"Empathy le permite seleccionar una lista de estados predefinidos."
-#: C/change-status.page:41(p)
+#: C/change-status.page:46(p)
msgid ""
"Click on the drop-down list at the top of the Contact List window."
msgstr ""
"Pulse en la lista desplegable en la parte superior de la ventana de la "
"Lista de contactos ."
-#: C/change-status.page:46(p)
+#: C/change-status.page:51(p)
msgid "Select a status from the list."
msgstr "Seleccione un estado de la lista."
-#: C/change-status.page:52(p)
+#: C/change-status.page:57(p)
msgid ""
"See for a list of the built-in statuses and "
-"what they mean. You can also add custom "
+"what they mean. You can also add custom "
"status messages to provide more information about your availability "
"to your contacts."
msgstr ""
"Consulte la para obtener una lista de los "
"estados predefinidos y lo que significan. También puede añadir mensajes de estado personalizados para "
+"custom-status\">añadir mensajes de estado personalizados para "
"proporcionar a sus contactos más información acerca de su disponibilidad."
-#: C/change-status.page:58(p)
+#: C/change-status.page:63(p)
msgid ""
"If you do not use your computer for a while, or if the screensaver is on, "
"the status will be automatically set to Away."
@@ -3018,11 +2943,11 @@ msgstr ""
msgid "Add a new account to Empathy ."
msgstr "Añadir una cuenta nueva en Empathy ."
-#: C/add-account.page:39(title)
+#: C/add-account.page:40(title)
msgid "Add a new account"
msgstr "Añadir una cuenta nueva"
-#: C/add-account.page:41(p)
+#: C/add-account.page:42(p)
msgid ""
"You can add instant messaging accounts from any supported service to "
"communicate with all of your contacts in Empathy . For some "
@@ -3035,11 +2960,11 @@ msgstr ""
"cuenta nueva. Para obtener más detalles consulte la ."
-#: C/add-account.page:52(p)
-msgid "Click Add ."
-msgstr "Pulse Añadir ."
+#: C/add-account.page:53(p)
+msgid "Click + ."
+msgstr "Pulse + ."
-#: C/add-account.page:57(p)
+#: C/add-account.page:58(p)
msgid ""
"From the Protocol drop-down list, select the type of account you "
"wish to add."
@@ -3047,7 +2972,7 @@ msgstr ""
"Desde la lista desplegable Protocolo seleccione el tipo de cuenta "
"que quiere añadir."
-#: C/add-account.page:61(p)
+#: C/add-account.page:62(p)
msgid ""
"If you do not already have a registered account, select Create a new "
"account on the server . This feature is not available for all account "
@@ -3059,22 +2984,18 @@ msgstr ""
"tipos de cuentas y puede no funcionar con algunos proveedores de cuentas. "
"Para obtener más información consulte la ."
-#: C/add-account.page:66(p)
+#: C/add-account.page:69(p)
msgid ""
"Enter the required information. For most accounts, you will only need a "
"login ID and a password. Some accounts may require additional information. "
-"See for more information."
+"See for more information."
msgstr ""
"Introduzca la información requerida. Para la mayorÃa de cuentas sólo "
"necesitará un ID de inicio de sesión y una contraseña. Algunas cuentas "
"pueden requerir información adicional. Para obtener más información consulte "
"la ."
-#: C/add-account.page:71(p)
-msgid "Click Log in ."
-msgstr "Pulse Iniciar sesión ."
-
-#: C/add-account.page:78(p)
+#: C/add-account.page:81(p)
msgid ""
"To change the name that identifies the account in the Accounts "
"window, select the account from the list on the left and either click on the "
@@ -3486,6 +3407,91 @@ msgstr ""
msgid "translator-credits"
msgstr "Jorge González , 2008-2010"
+#~ msgid "Edit, remove and add a custom message"
+#~ msgstr "Editar, quitar y añadir un mensaje personalizado"
+
+#~ msgid ""
+#~ "To add a new custom message, from the Add New Preset section:"
+#~ msgstr ""
+#~ "Para añadir un mensaje personalizado nuevo, desde la sección Añadir "
+#~ "estado guardado "
+
+#~ msgid ""
+#~ "Click on the drop-down list to select the status you want to set a custom "
+#~ "message to."
+#~ msgstr ""
+#~ "Pulse en la lista desplegable para seleccionar el estado en el que quiere "
+#~ "establecer un mensaje personalizado."
+
+#~ msgid "Click on the text box, and type the new custom message."
+#~ msgstr "Pulse en la caja de texto y escriba el mensaje personalizado nuevo."
+
+#~ msgid "Click on Add to add the new message to the presets ones."
+#~ msgstr ""
+#~ "Pulse Añadir para añadir un mensaje nuevo a los guardados."
+
+#~ msgid "Click on Remove ."
+#~ msgstr "Pulse Quitar ."
+
+#~ msgid ""
+#~ "Highlighting text is quirky: #593733. If there's an actual "
+#~ "highlighting going on, independent of the selection (like in yellow or "
+#~ "something), we can use the term \"highlight\". Otherwise we need to use "
+#~ "the term \"select\". Watch that bug."
+#~ msgstr ""
+#~ "Resaltar texto es extraño: #593733. Si existe un resaltado "
+#~ "actualmente, independiente de la selección (en amarillo, por ejemplo), se "
+#~ "puede usar el término «resaltar». De otra forma se debe usar el término "
+#~ "«seleccionado». Siga el progreso del error."
+
+#~ msgid "Select the Search tab."
+#~ msgstr "Seleccione la pestaña Buscar ."
+
+#~ msgid ""
+#~ "In the For field, type the text you want to search for. Click "
+#~ "Find or press Enter ."
+#~ msgstr ""
+#~ "En el campo Para escriba el texto que quiere buscar. Pulse "
+#~ "Buscar o pulse Intro ."
+
+#~ msgid ""
+#~ "Click on a conversation to view it. Empathy will select the "
+#~ "text in the conversation that matched your search terms."
+#~ msgstr ""
+#~ "Pulse sobre una conversación para verla. Empathy seleccionará "
+#~ "el texto en la conversación que coincida con sus términos de búsqueda."
+
+#~ msgid "Select the Conversations tab."
+#~ msgstr "Seleccione la pestaña Conversaciones ."
+
+#~ msgid "Click Log in ."
+#~ msgstr "Pulse Iniciar sesión ."
+
+#~ msgid ""
+#~ "Deselect the Enabled check-box next to the name of your "
+#~ "account, and then select it again to try to reconnect to the service."
+#~ msgstr ""
+#~ "Deseleccione la casilla de verificación Activada junto al "
+#~ "nombre de su cuenta y después selecciónela de nuevo para intentar "
+#~ "reconectar con el servicio."
+
+#~ msgid ""
+#~ "Check that the Enabled check-box is "
+#~ "selected. If it is not, select the check-box to enable the account."
+#~ msgstr ""
+#~ "Compruebe que la casilla de verificación Activada está seleccionada. Si no lo está, marque la casilla de "
+#~ "verificación para activar la cuenta."
+
+#~ msgid ""
+#~ "Deselect Enabled on the right side of the "
+#~ "window."
+#~ msgstr ""
+#~ "Deseleccione Activada en la parte derecha "
+#~ "de la ventana."
+
#~ msgid ""
#~ "In order to be able to share your desktop or to remotely use your "
#~ "contacts desktop, it is necessary to have a remote desktop viewer "
diff --git a/help/fr/fr.po b/help/fr/fr.po
index c2b331c7..b5a54d6a 100644
--- a/help/fr/fr.po
+++ b/help/fr/fr.po
@@ -1,3530 +1,896 @@
-# French translation of empathy documentation.
+# French translation of cheese documentation.
# Copyright (C) 2008-2011 Free Software Foundation, Inc.
-# This file is distributed under the same license as the empathy
+# This file is distributed under the same license as the cheese
# documentation package.
#
-# Marc Veillet , 2008.
-# Bruno Brouard , 2008, 2011.
-# Claude Paroz , 2008, 2010.
-# Frédéric Peters , 2009.
+# Bruno Brouard , 2008-2011
+# Claude Paroz , 2008-2010
+# Yannick Tailliez , 2008.
+# Laurent Coudeur , 2009.
+# Baptiste Mille-Matthias , 2009 (figures)
+# Luc Pionchon , 2011
+# Luc Guillemin , 2011
#
msgid ""
msgstr ""
-"Project-Id-Version: empathy help fr\n"
-"POT-Creation-Date: 2011-10-01 17:42+0000\n"
-"PO-Revision-Date: 2011-10-04 20:07+0200p\n"
+"Project-Id-Version: cheese doc fr\n"
+"POT-Creation-Date: 2012-01-01 18:48+0000\n"
+"PO-Revision-Date: 2012-02-12 11:00+0100\n"
"Last-Translator: Bruno Brouard \n"
"Language-Team: GNOME French Team \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-#. When image changes, this message will be marked fuzzy or untranslated for you.
-#. It doesn't matter what you translate it to: it's not used at all.
-#: C/video-call.page:38(None) C/audio-video.page:70(None)
-#: C/audio-call.page:36(None)
-msgid "@@image: 'figures/camera-web.png'; md5=8166b4372f25b78cbf5a64fe2eac2ce5"
-msgstr ""
-"@@image: 'figures/camera-web.png'; md5=8166b4372f25b78cbf5a64fe2eac2ce5"
-
-#: C/video-call.page:10(desc)
-msgid "Start a video conversation with one of your contacts."
-msgstr "Commencer une conversation vidéo avec un de vos contacts."
-
-#: C/video-call.page:21(name) C/status-icons.page:16(name)
-#: C/share-desktop.page:14(name) C/set-custom-status.page:19(name)
-#: C/send-file.page:21(name) C/salut-protocol.page:18(name)
-#: C/remove-account.page:18(name) C/prob-conn-neterror.page:18(name)
-#: C/prob-conn-name.page:17(name) C/prob-conn-auth.page:21(name)
-#: C/prob-conn-acctdisabled.page:18(name) C/prev-conv.page:16(name)
-#: C/link-contacts.page:15(name) C/irc-start-conversation.page:15(name)
-#: C/irc-send-file.page:16(name) C/irc-nick-password.page:18(name)
-#: C/irc-manage.page:20(name) C/irc-join-room.page:16(name)
-#: C/irc-join-pwd.page:17(name) C/irc-commands.page:10(name)
-#: C/introduction.page:13(name) C/index.page:19(name)
-#: C/import-account.page:23(name) C/hide-contacts.page:11(name)
-#: C/group-conversations.page:19(name) C/geolocation-what-is.page:18(name)
-#: C/geolocation-turn.page:18(name) C/geolocation-supported.page:16(name)
-#: C/geolocation-privacy.page:17(name) C/geolocation-not-showing.page:17(name)
-#: C/geolocation.page:17(name) C/favorite-rooms.page:14(name)
-#: C/disable-account.page:20(name) C/create-account.page:19(name)
-#: C/audio-video.page:17(name) C/audio-call.page:19(name)
-#: C/add-account.page:20(name)
-msgid "Milo Casagrande"
-msgstr "Milo Casagrande"
-
-#: C/video-call.page:22(email) C/status-icons.page:17(email)
-#: C/share-desktop.page:15(email) C/set-custom-status.page:20(email)
-#: C/send-file.page:22(email) C/salut-protocol.page:19(email)
-#: C/remove-account.page:19(email) C/prob-conn-neterror.page:19(email)
-#: C/prob-conn-name.page:18(email) C/prob-conn-auth.page:22(email)
-#: C/prob-conn-acctdisabled.page:19(email) C/prev-conv.page:17(email)
-#: C/link-contacts.page:16(email) C/irc-start-conversation.page:16(email)
-#: C/irc-send-file.page:17(email) C/irc-nick-password.page:19(email)
-#: C/irc-manage.page:21(email) C/irc-join-room.page:17(email)
-#: C/irc-join-pwd.page:18(email) C/irc-commands.page:11(email)
-#: C/introduction.page:14(email) C/index.page:20(email)
-#: C/import-account.page:24(email) C/hide-contacts.page:12(email)
-#: C/group-conversations.page:20(email) C/geolocation-what-is.page:19(email)
-#: C/geolocation-turn.page:19(email) C/geolocation-supported.page:17(email)
-#: C/geolocation-privacy.page:18(email)
-#: C/geolocation-not-showing.page:18(email) C/geolocation.page:18(email)
-#: C/favorite-rooms.page:15(email) C/disable-account.page:21(email)
-#: C/create-account.page:20(email) C/audio-video.page:18(email)
-#: C/audio-call.page:20(email) C/add-account.page:21(email)
-msgid "milo@ubuntu.com"
-msgstr "milo@ubuntu.com"
-
-#: C/video-call.page:25(p) C/status-icons.page:24(p)
-#: C/share-desktop.page:22(p) C/set-custom-status.page:23(p)
-#: C/send-message.page:21(p) C/send-file.page:25(p)
-#: C/salut-protocol.page:22(p) C/remove-account.page:22(p)
-#: C/prob-conn.page:18(p) C/prob-conn-neterror.page:22(p)
-#: C/prob-conn-name.page:21(p) C/prob-conn-auth.page:25(p)
-#: C/prob-conn-acctdisabled.page:22(p) C/prev-conv.page:24(p)
-#: C/link-contacts.page:19(p) C/irc-start-conversation.page:19(p)
-#: C/irc-send-file.page:20(p) C/irc-nick-password.page:22(p)
-#: C/irc-manage.page:24(p) C/irc-join-room.page:20(p)
-#: C/irc-join-pwd.page:21(p) C/irc-commands.page:14(p)
-#: C/introduction.page:17(p) C/index.page:23(p) C/import-account.page:31(p)
-#: C/hide-contacts.page:15(p) C/group-conversations.page:23(p)
-#: C/geolocation-what-is.page:22(p) C/geolocation-turn.page:22(p)
-#: C/geolocation-supported.page:20(p) C/geolocation-privacy.page:21(p)
-#: C/geolocation-not-showing.page:21(p) C/geolocation.page:21(p)
-#: C/favorite-rooms.page:18(p) C/disable-account.page:28(p)
-#: C/create-account.page:23(p) C/change-status.page:23(p)
-#: C/audio-video.page:21(p) C/audio-call.page:23(p) C/add-contact.page:22(p)
-#: C/add-account.page:28(p) C/accounts-window.page:22(p)
-#: C/account-jabber.page:18(p) C/account-irc.page:20(p)
-msgid "Creative Commons Share Alike 3.0"
-msgstr "Creative Commons Share Alike 3.0"
-
-#: C/video-call.page:28(title)
-msgid "Start a video conversation"
-msgstr "Mise en place d'une conversation vidéo"
-
-#: C/video-call.page:30(p)
-msgid ""
-"If you have a webcam, you can call your contacts and have a video "
-"conversation with them. This features only works with certain types of "
-"accounts, and it requires the other person to have an application that "
-"supports video calls."
-msgstr ""
-"Si vous avez une webcam, vous pouvez appeler vos contacts et avoir une "
-"conversation vidéo avec eux. Cette fonctionnalité n'est disponible qu'avec "
-"certains types de comptes et votre contact doit utiliser une application qui "
-"supporte les appels vidéos."
-
-#: C/video-call.page:37(p)
-msgid ""
-"From the Contact List window, click the video call icon "
-"next to the name of the contact you wish to call and choose Video Call ."
-msgstr ""
-"à partir de la fenêtre Liste des contacts , cliquez sur l'icône "
-"Appel vidéo à côté du contact que vous souhaitez appeler et "
-"choisissez Appel vidéo ."
-
-#: C/video-call.page:43(p) C/audio-call.page:42(p)
-msgid ""
-"A new window will open. When the connection is established, you will see "
-"Connected at the bottom of the window, along with the total "
-"conversation time."
-msgstr ""
-"Une nouvelle fenêtre s'ouvre. Quand la connexion est établie, vous voyez "
-"apparaître Connecté en bas de la fenêtre, ainsi que la durée "
-"totale de la conversation."
-
-#: C/video-call.page:48(p) C/audio-call.page:48(p)
-msgid "To end the conversation, click on Hang up ."
-msgstr ""
-"Pour terminer la conversation, cliquez sur Raccrocher"
-"gui>."
-
-# "Send video" pour transformer une conversation video en audio ?
-#: C/video-call.page:54(p)
-msgid ""
-"To turn a video conversation into an audio conversation, choose Video Video Off ."
-msgstr ""
-"Pour transformer une conversation vidéo en une conversation audio, "
-"choisissez Vidéo Vidéo désactivée ."
-
-#: C/video-call.page:60(title)
-msgid "Start a video conversation with a meta-contact"
-msgstr "Commencer une conversation vidéo avec un méta-contact"
-
-#: C/video-call.page:63(p) C/send-message.page:53(p) C/audio-call.page:66(p)
-msgid ""
-"From the Contact List window, right-click on the meta-contact."
-msgstr ""
-"Dans la fenêtre Liste des contacts , faites un clic droit sur le "
-"méta-contact."
-
-#: C/video-call.page:68(p)
-msgid ""
-"Select the contact you want to have the conversation, and from the menu "
-"select Video Call ."
-msgstr ""
-"Sélectionnez le contact avec lequel vous voulez discuter et choisissez Appel vidéo dans le menu."
-
-#: C/video-call.page:75(p) C/send-message.page:65(p) C/audio-call.page:78(p)
-msgid ""
-"To recognize if a contact is a meta-contact , move your mouse on a "
-"contact in the Contact List window, and stop over it for a "
-"second: a small pop-up message will appear showing the number of the "
-"contacts that form the meta-contact."
-msgstr ""
-"Pour savoir si un contact est un méta-contact , placez votre souris "
-"sur un contact dans la Liste des contacts et laissez-la immobile "
-"pendant environ une seconde : une infobulle apparaît pour afficher le nombre "
-"de contacts qui forment le méta-contact."
-
-#. When image changes, this message will be marked fuzzy or untranslated for you.
-#. It doesn't matter what you translate it to: it's not used at all.
-#: C/status-icons.page:39(None)
-msgid "@@image: 'figures/available.png'; md5=2196b2f0ad4ce26fdb7b9d48e75d1947"
-msgstr "@@image: 'figures/available.png'; md5=2196b2f0ad4ce26fdb7b9d48e75d1947"
-
-#. When image changes, this message will be marked fuzzy or untranslated for you.
-#. It doesn't matter what you translate it to: it's not used at all.
-#: C/status-icons.page:45(None)
-msgid "@@image: 'figures/busy.png'; md5=15eb2adff5faedf97b0cb9105d09410a"
-msgstr "@@image: 'figures/busy.png'; md5=15eb2adff5faedf97b0cb9105d09410a"
-
-#. When image changes, this message will be marked fuzzy or untranslated for you.
-#. It doesn't matter what you translate it to: it's not used at all.
-#: C/status-icons.page:53(None)
-msgid "@@image: 'figures/away.png'; md5=9c504d6ffa0cf1a9cc8933d16e1bea33"
-msgstr "@@image: 'figures/away.png'; md5=9c504d6ffa0cf1a9cc8933d16e1bea33"
-
-#. When image changes, this message will be marked fuzzy or untranslated for you.
-#. It doesn't matter what you translate it to: it's not used at all.
-#: C/status-icons.page:62(None) C/status-icons.page:69(None)
-msgid "@@image: 'figures/offline.png'; md5=c5b0c21181cbd6e13f8909243c0fa964"
-msgstr "@@image: 'figures/offline.png'; md5=c5b0c21181cbd6e13f8909243c0fa964"
-
-#: C/status-icons.page:7(desc)
-msgid "Understanding the various statuses and status icons."
-msgstr "Comprendre les différents états et les icônes d'état."
-
-#: C/status-icons.page:20(name) C/salut-protocol.page:36(cite)
-#: C/prev-conv.page:20(name) C/prev-conv.page:38(cite)
-#: C/import-account.page:27(name) C/disable-account.page:24(name)
-#: C/audio-video.page:109(cite) C/audio-video.page:117(cite)
-#: C/add-account.page:24(name) C/accounts-window.page:18(name)
-#: C/account-jabber.page:14(name) C/account-irc.page:16(name)
-msgid "Shaun McCance"
-msgstr "Shaun McCance"
-
-#: C/status-icons.page:21(email) C/prev-conv.page:21(email)
-#: C/import-account.page:28(email) C/disable-account.page:25(email)
-#: C/add-account.page:25(email) C/accounts-window.page:19(email)
-#: C/account-jabber.page:15(email) C/account-irc.page:17(email)
-msgid "shaunm@gnome.org"
-msgstr "shaunm@gnome.org"
-
-#: C/status-icons.page:35(title)
-msgid "Status Types and Icons"
-msgstr "Types et icônes d'états"
-
-#: C/status-icons.page:39(media)
-msgid "Available icon"
-msgstr "Icône « Disponible »"
-#: C/status-icons.page:40(gui)
-msgid "Available"
-msgstr "Disponible"
-
-#: C/status-icons.page:41(p)
-msgid ""
-"Use the Available status when you are at your computer and able to "
-"chat with your contacts. You can set a custom message for this status."
-msgstr ""
-"Utilisez l'état Disponible quand vous êtes à votre poste et que "
-"vous pouvez discuter avec vos contacts. Vous pouvez créer un message "
-"personnalisé pour cet état."
-
-#: C/status-icons.page:45(media)
-msgid "Busy icon"
-msgstr "Icône « Occupé »"
-
-#: C/status-icons.page:46(gui)
-msgid "Busy"
-msgstr "Occupé"
-
-#: C/status-icons.page:47(p)
-msgid ""
-"Use the Busy status to let your contacts know that you donât want "
-"to chat right now. They can still contact you, for instance if they have "
-"something urgent they need to discuss. By default, Empathy will "
-"not use notification bubbles and sounds when you are busy. You can set a "
-"custom message for this status."
-msgstr ""
-"Utilisez l'état Occupé quand vous voulez indiquer à vos contacts "
-"que vous ne voulez pas discuter pour le moment. Ils peuvent toujours prendre "
-"contact avec vous, s'ils ont quelque chose d'urgent à vous dire par exemple. "
-"Par défaut, Empathy n'utilise aucune alerte visuelle ou sonore "
-"quand vous êtes occupé. Vous pouvez définir un message personnalisé pour cet "
-"état."
-
-#: C/status-icons.page:53(media)
-msgid "Away icon"
-msgstr "Icône « Absent »"
-
-#: C/status-icons.page:54(gui)
-msgid "Away"
-msgstr "Absent"
-
-#: C/status-icons.page:55(p)
-msgid ""
-"Use the Away status when you are going away from your computer. "
-"Empathy automatically sets your status to Away if you do not use "
-"your computer for a while, or if your screensaver is on. By default, "
-"Empathy will not use notification bubbles and sounds when you are "
-"away. You can set a custom message for this status."
-msgstr ""
-"Utilisez l'état Absent quand vous vous absentez de votre "
-"ordinateur. Empathy bascule automatiquement sur l'état « Absent » "
-"si vous n'utilisez pas votre ordinateur pendant un certain temps, ou si "
-"votre écran de veille se déclenche. Par défaut, Empathy n'utilise "
-"aucune alerte visuelle ou sonore quand vous êtes absent. Vous pouvez définir "
-"un message personnalisé pour cet état."
-
-#: C/status-icons.page:62(media) C/status-icons.page:69(media)
-msgid "Offline icon"
-msgstr "Icône « Déconnecté »"
-
-#: C/status-icons.page:63(gui)
-msgid "Invisible"
-msgstr "Invisible"
-
-#: C/status-icons.page:64(p)
-msgid ""
-"When you set your status to Invisible , you will appear as offline "
-"to your contacts. You will still be connected to your accounts, and you "
-"still see your contactsâ statuses and start conversations with them."
-msgstr ""
-"Quand vous utilisez le statut Invisible , vous apparaissez "
-"déconnecté pour vos contacts. Vous restez connecté à vos comptes, vous "
-"pouvez toujours voir le statut de vos contacts et démarrer une discussion "
-"avec eux."
-
-#: C/status-icons.page:70(gui)
-msgid "Offline"
-msgstr "Déconnecté"
-
-#: C/status-icons.page:71(p)
-msgid ""
-"Setting your status to Offline disconnects you from all of your "
-"accounts."
+#. Put one translator per line, in the form NAME , YEAR1, YEAR2
+msgctxt "_"
+msgid "translator-credits"
msgstr ""
-"Passez au statut Déconnecté pour vous déconnecter de tous vos "
-"comptes."
-
-#: C/share-desktop.page:7(desc)
-msgid "Show your desktop to your contacts."
-msgstr "Montrer son bureau à ses contacts."
-
-#: C/share-desktop.page:18(name)
+"Bruno Brouard , 2008-2009,2012\n"
+"Claude Paroz , 2008-2010\n"
+"Yannick Tailliez , 2008\n"
+"Laurent Coudeur , 2009\n"
+"Luc Pionchon , 2011\n"
+"Luc Guillemin , 2011"
+
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#.
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/index.page:26(media)
+msgctxt "_"
+msgid ""
+"external ref='figures/cheese.png' md5='e801510f287b3db068beb2daf8989124'"
+msgstr ""
+"external ref='figures/cheese.png' md5='e801510f287b3db068beb2daf8989124'"
+
+#: C/index.page:7(info/title)
+msgctxt "link"
+msgid "Cheese Webcam Booth"
+msgstr "Studio webcam Cheese"
+
+#: C/index.page:8(info/title)
+msgctxt "text"
+msgid "Cheese Webcam Booth"
+msgstr "Studio webcam Cheese"
+
+#: C/index.page:11(credit/name) C/effects-apply.page:9(credit/name)
+#: C/introduction.page:11(credit/name) C/mode-wide.page:10(credit/name)
+#: C/photo-delete.page:10(credit/name) C/photo-save.page:10(credit/name)
+#: C/photo-take.page:15(credit/name) C/photo-view.page:10(credit/name)
+#: C/pref-burst-mode.page:10(credit/name)
+#: C/pref-countdown.page:10(credit/name) C/pref-flash.page:9(credit/name)
+#: C/pref-image-properties.page:10(credit/name)
+#: C/pref-photo-resolution.page:10(credit/name)
+#: C/video-record.page:10(credit/name)
+msgid "Julita Inca"
+msgstr "Julita Inca"
+
+#: C/index.page:13(credit/years) C/index.page:19(credit/years)
+#: C/effects-apply.page:11(credit/years) C/introduction.page:13(credit/years)
+#: C/mode-wide.page:12(credit/years) C/photo-delete.page:12(credit/years)
+#: C/photo-save.page:12(credit/years) C/photo-take.page:17(credit/years)
+#: C/photo-view.page:12(credit/years) C/pref-burst-mode.page:12(credit/years)
+#: C/pref-countdown.page:12(credit/years) C/pref-flash.page:11(credit/years)
+#: C/pref-image-properties.page:12(credit/years)
+#: C/pref-photo-resolution.page:12(credit/years)
+#: C/video-record.page:12(credit/years)
+msgid "2011"
+msgstr "2011"
+
+#: C/index.page:17(credit/name) C/effects-apply.page:14(credit/name)
+#: C/introduction.page:16(credit/name) C/mode-wide.page:15(credit/name)
+#: C/photo-delete.page:15(credit/name) C/photo-save.page:15(credit/name)
+#: C/photo-take.page:20(credit/name) C/photo-view.page:15(credit/name)
+#: C/pref-burst-mode.page:15(credit/name)
+#: C/pref-countdown.page:15(credit/name) C/pref-flash.page:14(credit/name)
+#: C/pref-image-properties.page:15(credit/name)
+#: C/pref-photo-resolution.page:15(credit/name)
+#: C/video-record.page:15(credit/name)
msgid "Ekaterina Gerasimova"
msgstr "Ekaterina Gerasimova"
-#: C/share-desktop.page:19(email)
-msgid "kittykat3756@gmail.com"
-msgstr "kittykat3756@gmail.com"
-
-#: C/share-desktop.page:33(title)
-msgid "Share your desktop"
-msgstr "Partage du bureau"
-
-#: C/share-desktop.page:35(p)
-msgid ""
-"It is possible to share your desktop with some of your contacts. You can use "
-"this functionality to show your desktop to your contacts to, for example, "
-"ask for help or help your contacts resolve a problem."
-msgstr ""
-"Vous avez la possibilité de partager votre bureau avec certains de vos "
-"contacts. Vous pouvez utiliser cette fonctionnalité pour montrer votre "
-"bureau à vos contacts afin de, par exemple, leur demander de l'aide ou "
-"encore les assister dans la résolution d'un problème."
-
-#: C/share-desktop.page:42(p)
-msgid ""
-"To be able to share your desktop, you need to have a VNC server, which has "
-"support for the feature, installed on your system. Vino , the "
-"GNOME VNC server, has the required support."
-msgstr ""
-"Pour partager votre bureau vous avez besoin d'un serveur VNC qui prend en "
-"charge cette fonctionnalité, installé sur votre système. Vino , le "
-"serveur VNC de GNOME, a la configuration requise."
-
-#: C/share-desktop.page:51(p)
-msgid "From the Contact List window, do one of the following:"
-msgstr ""
-"à partir de la fenêtre Liste des contacts , effectuez une des "
-"actions suivantes :"
-
-#: C/share-desktop.page:56(p)
-msgid ""
-"Select the contact you want to share your desktop with and choose "
-"Edit Contact Share My Desktop "
-"guiseq>."
-msgstr ""
-"Sélectionnez le contact avec lequel vous voulez partager votre bureau, et "
-"sélectionnez Ãdition Contact Partager mon "
-"bureau ."
-
-#: C/share-desktop.page:63(p)
-msgid ""
-"Right-click on the name of the contact you want to share your desktop with "
-"and select Share My Desktop ."
-msgstr ""
-"Faites un clic droit sur le contact avec lequel vous voulez partager votre "
-"bureau et sélectionnez Partager mon bureau ."
-
-#: C/share-desktop.page:71(p)
-msgid ""
-"An invitation to view your desktop will be sent to the contact you have "
-"selected. To view your desktop, they will need to accept it."
-msgstr ""
-"Une invitation va être envoyée aux contacts que vous avez sélectionnés. Pour "
-"voir votre bureau, ils devront accepter l'invitation."
-
-#: C/share-desktop.page:77(p)
-msgid ""
-"You can disconnect the contact from your computer using your desktop sharing "
-"application."
-msgstr ""
-"Vous pouvez déconnecter le contact de votre ordinateur en utilisant votre "
-"application de partage de bureau."
-
-#: C/share-desktop.page:82(p)
-msgid ""
-"For more information about how to use the remote desktop sharing "
-"application, refer to its help."
-msgstr ""
-"Pour plus de détails sur l'utilisation de l'application de contrôle à "
-"distance, référez-vous à sa documentation."
-
-#: C/share-desktop.page:90(p)
-msgid ""
-"When you share your desktop with someone else, it is possible to experience "
-"system performance slowdown and low Internet speed."
-msgstr ""
-"Quand vous partagez votre bureau avec un autre utilisateur, il est possible "
-"que vous remarquiez une baisse des performances du système ainsi qu'un "
-"ralentissement de la connexion internet."
-
-#: C/share-desktop.page:96(p)
-msgid ""
-"Some of your contacts may not be able to use this feature. It is necessary "
-"for them to have version 2.28, or newer, of Empathy and a "
-"compatible remote desktop viewer application installed in their system."
-msgstr ""
-"Certains de vos contacts ne prendront pas nécessairement en charge cette "
-"fonctionnalité. Ils devront utiliser au minimum la version 2.28 "
-"d'Empathy et installer une application de contrôle à distance "
-"compatible."
-
-#: C/set-custom-status.page:9(desc)
-msgid "Add, edit or delete personal messages for your status."
-msgstr ""
-"Ajouter, modifier ou supprimer les messages personnalisés pour votre état."
-
-#: C/set-custom-status.page:15(name)
-msgid "Jim Campbell"
-msgstr "Jim Campbell"
-
-#: C/set-custom-status.page:16(email)
-msgid "jwcampbell@gmail.com"
-msgstr "jwcampbell@gmail.com"
-
-#: C/set-custom-status.page:34(title)
-msgid "Set a custom message"
-msgstr "Paramétrage d'un message personnalisé"
-
-#: C/set-custom-status.page:36(p)
+#: C/index.page:22(info/desc)
msgid ""
-"Sometimes you may want to set a custom message for your status, for example "
-"to let people know that you will be unavailable for a certain period of time."
+"Cheese lets you take pictures and make videos using your webcam. You can "
+"even add special effects!"
msgstr ""
-"Dans certains cas, vous voudrez paramétrer un message personnalisé pour "
-"votre état, par exemple pour vous permettre d'indiquer à vos contacts que "
-"vous êtes indisponible un certain temps."
+"Cheese permet de prendre des photos et des vidéos en utilisant votre webcam. "
+"Vous pouvez même ajouter des effets spéciaux !"
-#: C/set-custom-status.page:40(p)
+#: C/index.page:25(page/title)
msgid ""
-"It is possible to set a custom message based on the different statuses "
-"available."
+" Cheese Webcam Booth"
msgstr ""
-"Vous pouvez paramétrer un message personnalisé pour chaque état disponible."
+" Studio webcam Cheese"
-#: C/set-custom-status.page:46(p) C/set-custom-status.page:82(p)
-msgid ""
-"From the Contact List window, click on the drop-down list at the "
-"top."
-msgstr ""
-"Cliquez sur la liste déroulante en haut de la fenêtre Liste des "
-"contacts ."
-
-#: C/set-custom-status.page:52(p)
-msgid ""
-"Select the status you want to add a custom message to. You have to select "
-"the one identified with the label Custom Message ."
-msgstr ""
-"Sélectionnez l'état auquel vous voulez ajouter un message personnalisé. Vous "
-"devez sélectionner celui libellé Message personnalisé ."
-
-#: C/set-custom-status.page:58(p)
-msgid ""
-"Enter your custom message in the text box at the top of the window, and "
-"press Enter to set the message."
-msgstr ""
-"Saisissez votre message personnalisé dans la zone de texte en haut de la "
-"fenêtre et appuyez sur Entrée pour définir le message."
-
-#: C/set-custom-status.page:64(p)
-msgid ""
-"If you want to set the custom message as a favorite, saving it in order to "
-"use it again, click on the little star on the right of the text box where "
-"you wrote your custom message."
-msgstr ""
-"Si vous voulez paramétrer ce message personnalisé comme favori et "
-"l'enregistrer pour le réutiliser plus tard, cliquez sur la petite étoile à "
-"droite de la zone de texte où vous venez de saisir le message."
-
-#: C/set-custom-status.page:69(p)
-msgid ""
-"If you do not do it, the custom message will not be available the next time "
-"you use Empathy . It will be saved only for the current session."
-msgstr ""
-"Si vous ne le faites pas, le message personnalisé ne sera pas disponible la "
-"prochaine fois que vous utiliserez Empathy . Il est enregistré "
-"pour la session actuelle uniquement."
-
-#: C/set-custom-status.page:78(title)
-msgid "Edit, remove and add a custom message"
-msgstr "Modification, suppression ou ajout d'un message personnalisé"
-
-# Je ne trouve pas le menu en question dans l'ui
-#: C/set-custom-status.page:88(p)
-msgid "Select Edit Custom Message ."
-msgstr "Sélectionnez Ãdition des messages personnalisés ."
-
-#: C/set-custom-status.page:95(p)
-msgid "To edit a custom message:"
-msgstr "Pour modifier un message personnalisé :"
-
-#: C/set-custom-status.page:100(p)
-msgid ""
-"From the Saved Presets box, select the status message you want to "
-"edit and double-click on it."
-msgstr ""
-"Dans la zone de texte Messages prédéfinis enregistrés , "
-"sélectionnez puis faites un double clic sur le message que vous voulez "
-"modifier."
-
-#: C/set-custom-status.page:106(p)
-msgid "Type the new custom message and press Enter to modify it."
-msgstr ""
-"Saisissez le nouveau message personnalisé et appuyez sur Entrée "
-"pour le modifier."
-
-#: C/set-custom-status.page:113(p)
-msgid "To remove a custom message:"
-msgstr "Pour supprimer un message personnalisé :"
-
-#: C/set-custom-status.page:118(p)
-msgid ""
-"From the Saved Presets box, select the status message you want to "
-"remove."
-msgstr ""
-"Dans la zone de texte Messages prédéfinis enregistrés , "
-"sélectionnez le message que vous voulez supprimer."
-
-#: C/set-custom-status.page:124(p)
-msgid "Click on the Remove button."
-msgstr "Cliquez sur le bouton Supprimer ."
-
-#: C/set-custom-status.page:131(p)
-msgid ""
-"To add a new custom message, from the Add New Preset section:"
-msgstr ""
-"Pour ajouter un nouveau message personnalisé, à partir de Ajouter "
-"nouveau message prédéfini  :"
-
-#: C/set-custom-status.page:136(p)
-msgid ""
-"Click on the drop-down list to select the status you want to set a custom "
-"message to."
-msgstr ""
-"Cliquez sur la liste déroulante pour sélectionner l'état pour lequel vous "
-"voulez saisir un message personnalisé."
-
-#: C/set-custom-status.page:142(p)
-msgid "Click on the text box, and type the new custom message."
-msgstr ""
-"Cliquez dans le champ de saisie et saisissez le nouveau message personnalisé."
-
-#: C/set-custom-status.page:147(p)
-msgid "Click on Add to add the new message to the presets ones."
-msgstr ""
-"Cliquez sur Ajouter pour ajouter le nouveau message aux messages "
-"prédéfinis."
-
-#: C/set-custom-status.page:156(p)
-msgid "When finished, click on Close ."
-msgstr "Cliquez sur Fermer quand vous avez terminé."
-
-#: C/set-custom-status.page:163(p)
-msgid ""
-"When you edit or add a new custom message, it will not be set as the current "
-"status message. You will need to select it from the Contact List "
-"window."
-msgstr ""
-"Quand vous modifiez ou créez un message personnalisé, il ne devient pas le "
-"message du statut en cours. Vous devez le sélectionner dans la fenêtre "
-"Liste des contacts ."
-
-#: C/send-message.page:8(desc)
-msgid "Send a message to one of your contacts."
-msgstr "Envoyer un message à l'un de vos contacts."
-
-#: C/send-message.page:17(name) C/send-file.page:17(name)
-#: C/prob-conn.page:14(name) C/prob-conn-neterror.page:14(name)
-#: C/prob-conn-auth.page:17(name) C/prob-conn-acctdisabled.page:14(name)
-#: C/change-status.page:19(name) C/add-contact.page:18(name)
-msgid "Phil Bull"
-msgstr "Phil Bull"
-
-#: C/send-message.page:18(email) C/send-file.page:18(email)
-#: C/prob-conn.page:15(email) C/prob-conn-neterror.page:15(email)
-#: C/prob-conn-auth.page:18(email) C/prob-conn-acctdisabled.page:15(email)
-#: C/change-status.page:20(email) C/add-contact.page:19(email)
-msgid "philbull@gmail.com"
-msgstr "philbull@gmail.com"
+#: C/index.page:32(section/title)
+msgid "Main features"
+msgstr "Principales fonctionnalités"
-#: C/send-message.page:32(title)
-msgid "Send a message to someone"
-msgstr "Envoi d'un message à quelqu'un"
+#: C/index.page:36(section/title)
+msgid "Preferences"
+msgstr "Préférences"
-#: C/send-message.page:36(p)
-msgid ""
-"From the Contact List window, double-click the name of the "
-"contact that you want to have a conversation with."
-msgstr ""
-"Dans la fenêtre Liste des contacts , double-cliquez sur le nom du "
-"contact avec lequel vous voulez discuter."
+#: C/index.page:40(section/title)
+msgid "Common problems and questions"
+msgstr "Problèmes et questions fréquents"
-#: C/send-message.page:42(p)
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/effects-apply.page:45(media)
+msgctxt "_"
msgid ""
-"A new window will open. Type a message into the box at the bottom of the "
-"window and press Enter to send it."
+"external ref='figures/effects.png' md5='27139b3d1500c8caac548fab39e05c28'"
msgstr ""
-"Une nouvelle fenêtre s'ouvre. Saisissez votre message dans la zone de texte "
-"en bas de la fenêtre et appuyez sur Entrée pour l'envoyer."
+"external ref='figures/effects.png' md5='27139b3d1500c8caac548fab39e05c28'"
-#: C/send-message.page:50(title)
-msgid "Send a message to a meta-contact"
-msgstr "Envoi d'un message à un méta-contact"
-
-#: C/send-message.page:58(p)
+#: C/effects-apply.page:18(info/desc)
msgid ""
-"Select the contact you want to have the conversation, and from the menu "
-"select Chat ."
-msgstr ""
-"Sélectionnez le contact avec lequel vous voulez discuter et choisissez Discuter dans le menu."
-
-#: C/send-file.page:8(desc)
-msgid "Send a file from your computer to one of your contacts."
-msgstr "Envoyer un fichier de votre ordinateur à l'un de vos contacts."
-
-#: C/send-file.page:36(title)
-msgid "Send files"
-msgstr "Envoi de fichiers"
-
-#: C/send-file.page:40(p) C/favorite-rooms.page:66(p)
-msgid "From the Contact List window, perform one of the following:"
+"Add fun effects to your photos and videos, like turning yourself green or "
+"distorting the picture like a funhouse mirror."
msgstr ""
-"à partir de la fenêtre Liste des contacts , effectuez une des "
-"actions suivantes :"
+"Ajouter des effets amusants à vos photos et vidéos, comme devenir tout vert "
+"ou distordre l'image comme dans un miroir déformant."
-#: C/send-file.page:45(p)
-msgid ""
-"Right click on the contact you want to send a file to, and choose Send "
-"file ."
-msgstr ""
-"Cliquez droit sur le nom du contact auquel vous voulez envoyer un fichier et "
-"sélectionnez Envoyer un fichier ."
+#: C/effects-apply.page:22(page/title)
+msgid "Apply effects to photos and videos"
+msgstr "Ajout d'effets aux photos et aux vidéos"
-#: C/send-file.page:50(p)
-msgid ""
-"Click on the contact you want to send a file, and choose Edit"
-"gui>Contact Send file ."
-msgstr ""
-"Cliquez sur le contact auquel vous voulez envoyer un fichier et sélectionnez "
-"Ãdition Contact Envoyer un fichier "
-"guiseq>."
+#: C/effects-apply.page:24(page/p)
+msgid "You can apply fun, interesting effects to your photos and videos:"
+msgstr "Vous pouvez appliquer des effets amusants à vos photos et vos vidéos :"
-#: C/send-file.page:58(p)
-msgid "Select the file to send, and click on Send ."
-msgstr "Sélectionnez le fichier à envoyer et cliquez sur Envoyer ."
+#: C/effects-apply.page:26(item/p)
+msgid "Click Effects ."
+msgstr "Cliquez sur Effets ."
-#: C/send-file.page:63(p)
-msgid "The File Transfers window will appear."
-msgstr "La fenêtre Transferts de fichiers apparaît."
+#: C/effects-apply.page:28(item/p)
+msgid "Select the effect you want to use by clicking one of the options."
+msgstr "Sélectionnez les effets souhaités en cliquant sur une des options."
-#: C/send-file.page:66(p)
+#: C/effects-apply.page:29(item/p)
msgid ""
-"Wait for your contact to accept the file transfer, or click Stop "
-"to halt the transfer."
+"If you like, you can select multiple effects. For example, if you select "
+"Hulk and Kung-Fu , the video will be altered to have a "
+"green shade and will show a repeated image."
msgstr ""
-"Attendez que votre contact accepte le transfert de fichier ou cliquez sur "
-"Arrêter pour arrêter le transfert."
+"Si vous le souhaitez, vous pouvez sélectionner plusieurs effets. Par "
+"exemple, si vous sélectionnez Hulk et Kung-Fu , la "
+"vidéo va être transformée pour avoir un ton vert et afficher une image "
+"répétée."
-#: C/send-file.page:72(p)
+#: C/effects-apply.page:34(item/p)
msgid ""
-"Once the transfer is finished, it is possible to close the File "
-"Transfers window."
+"Click Effects to hide the effects menu and return to the normal "
+"view."
msgstr ""
-"à la fin du transfert, vous pouvez fermer la fenêtre Transferts de "
-"fichiers ."
+"Cliquez sur Effets pour cacher le menu des effets et revenir à la "
+"vue normale."
-#: C/send-file.page:80(p)
+#: C/effects-apply.page:39(page/p)
msgid ""
-"If you have multiple finished transfers listed in the window, click on "
-"Clear to empty the list. This will only remove the files from the "
-"list and will not delete them from your computer."
+"Cheese offers 34 effects, of which only 9 are shown on the first "
+"page. Click Next Effects and Previous Effects to "
+"navigate to the other pages."
msgstr ""
-"Si plusieurs transferts apparaissent dans la fenêtre, vous pouvez les "
-"supprimer en cliquant sur Effacer . Les fichiers disparaîtront de "
-"la liste mais ne seront pas supprimés de votre ordinateur."
+"Cheese fournit 34 effets. Seuls 9 d'entre eux sont affichés sur "
+"la première page. Cliquez sur Effets suivants ou Effets "
+"précédents pour naviguer parmi les autres pages."
-#: C/send-file.page:87(p)
-msgid ""
-"It is possible to send files only using the following services: Jabber"
-"em>, Google Talk and People Nearby ."
-msgstr ""
-"Le transfert de fichier n'est possible qu'avec les services suivants : "
-"Jabber , Google Talk et Personnes à proximité ."
+#: C/effects-apply.page:44(figure/title)
+msgid "Some of the effects, from left to right: Bulge, Edge and Mirror"
+msgstr "Quelques effets, de gauche à droite : boursouflure, contours et miroir"
-#: C/send-file.page:93(p)
+#: C/effects-apply.page:48(note/p)
msgid ""
-"In order to send a file to someone, you need to be connected to the "
-"Internet, or to a local area network."
+"To deselect all effects, click Effects and select No Effect"
+"gui>."
msgstr ""
-"Vous devez être connecté sur internet ou au réseau local pour pouvoir "
-"envoyer des fichiers à quelqu'un."
-
-#: C/salut-protocol.page:8(desc)
-msgid "Understanding the People Nearby feature."
-msgstr "Comprendre la fonctionnalité « Personnes à proximité »."
+"Pour enlever tous les effets, cliquez sur Effets et sélectionnez "
+"Aucun effet ."
-#: C/salut-protocol.page:33(title)
-msgid "What is People Nearby?"
-msgstr "Fonctionnalité « Personnes à proximité » ?"
+#: C/introduction.page:20(info/desc)
+msgid "Introduction to the Cheese Webcam Booth ."
+msgstr "Introduction au Studio webcam Cheese ."
-#: C/salut-protocol.page:37(p)
-msgid "I'd like to see this played up a bit more."
-msgstr "J'aimerais bien que cela soit plus souvent utilisé."
-
-#: C/salut-protocol.page:40(p)
-msgid ""
-"The People Nearby service is a serverless communication service: you do not "
-"need to connect and authenticate to a central server in order to use it."
-msgstr ""
-"Le service « Personnes à proximité » est un service de communication sans "
-"serveur : il n'est pas nécessaire de se connecter et de s'identifier à un "
-"serveur central pour l'utiliser."
+#: C/introduction.page:23(page/title)
+msgid "Introduction"
+msgstr "Introduction"
-#: C/salut-protocol.page:45(p)
+#: C/introduction.page:25(page/p)
msgid ""
-"This kind of serverless messaging system is restricted to a local area "
-"network and an active Internet connection is not necessary."
+"Cheese is a fun webcam booth application which lets you take "
+"photos and record videos using your webcam. By using Cheese , you "
+"can make funny, original photos and videos that you can easily share with "
+"others. It can take multiple photos in quick succession (using the Burst mode ) and lets you apply effects that add a special, fancy or funny "
+"touch to your photos and videos."
msgstr ""
-"Ce type de système de messagerie sans serveur est limité aux réseaux locaux "
-"et l'activation d'une connexion à internet n'est pas nécessaire."
+"Cheese est une application amusante pour votre webcam qui vous "
+"permet de prendre des photos et de faire des vidéos avec votre webcam. En "
+"utilisant Cheese , vous pouvez faire des photos et des vidéos "
+"amusantes et originales que vous pouvez facilement partager avec les autres. "
+"Elle permet de prendre de multiples photos les unes à la suite des autres "
+"(en utilisant le mode rafale ) et "
+"vous permet d' utiliser des effets pour "
+"ajouter une touche spéciale, fantaisiste ou amusante à vos photos et vidéos."
-#: C/salut-protocol.page:49(p)
+#: C/introduction.page:33(page/p)
msgid ""
-"The people that use this service inside the same local area network will be "
-"auto-discovered, and it will be possible to send them messages and files as "
-"with other services."
+"By default, Cheese starts in Photo mode , ready to "
+" take a photo. You need to switch to "
+"Video mode to record a video "
+"or switch to Burst mode to take "
+"multiple photos at once."
msgstr ""
-"Les personnes qui utilisent ce service à l'intérieur du même réseau local "
-"sont auto-identifiées et il est possible de leur envoyer des messages et des "
-"fichiers comme avec les autres services."
+"Par défaut, Cheese démarre en mode photo , prêt à prendre une photo. Vous devez basculer en "
+"mode vidéo pour prendre une vidéo"
+"link> ou basculer en mode rafale pour prendre plusieurs photos d'un coup."
-#: C/salut-protocol.page:54(p)
+#: C/introduction.page:39(page/p)
msgid ""
-"All the modern local area networks should be able to support this kind of "
-"service."
+"Cheese works with most webcams, but if your particular make and "
+"model does not seem to work properly, see Webcams"
+"link> for advice on getting it to work."
msgstr ""
-"Tous les réseaux locaux récents devraient être capable de prendre en charge "
-"ce type de service."
-
-#: C/remove-account.page:8(desc)
-msgid "Completely remove an account from Empathy ."
-msgstr "Supprimer complètement un compte dans Empathy ."
+"Cheese fonctionne avec la plupart des webcams, mais si la votre "
+"n'a pas l'air de fonctionner normalement, consultez Webcams pour obtenir des conseils sur la manière dont vous "
+"pourriez la faire fonctionner."
-#: C/remove-account.page:33(title)
-msgid "Remove an account"
-msgstr "Suppression d'un compte"
-
-#: C/remove-account.page:35(p)
+#: C/mode-wide.page:19(info/desc)
msgid ""
-"You can completely remove an account from Empathy if you no "
-"longer wish to use the account. If you wish to use the account in "
-"Empathy again in the future, you will have to add your account "
-"details again."
+"Change the position of the photo stream so that the webcam video feed is "
+"larger."
msgstr ""
-"Vous pouvez supprimer un compte définitivement d'Empathy si vous "
-"ne souhaitez plus l'utiliser. Si vous souhaitez réutiliser ce compte dans "
-"Empathy , il faudra le créer de nouveau avec tous ses paramètres."
+"Modifier la position du flux d'images pour que l'entrée vidéo de la webcam "
+"soit plus grande."
-#: C/remove-account.page:42(p) C/irc-nick-password.page:50(p)
-#: C/disable-account.page:48(p) C/add-account.page:48(p)
-msgid ""
-"From the Contact List window, choose Edit"
-"gui>Accounts , or press F4 ."
-msgstr ""
-"à partir de la fenêtre Liste des contacts , sélectionnez "
-"Ãdition Comptes , ou appuyez sur "
-"F4 ."
+#: C/mode-wide.page:23(page/title)
+msgid "Make the webcam video preview bigger"
+msgstr "Agrandir la prévisualisation de la vidéo de la webcam"
-#: C/remove-account.page:46(p)
+#: C/mode-wide.page:25(page/p)
msgid ""
-"Select the account you wish to remove from the accounts list on the left "
-"side of the window."
+"The photo stream is where photos and videos appear after you have taken or "
+"recorded them. By default, it is a horizontal strip at the bottom of the "
+"Cheese window."
msgstr ""
-"Sélectionnez le compte que vous voulez supprimer dans la liste de comptes de "
-"la partie gauche de la fenêtre."
-
-#: C/remove-account.page:50(p)
-msgid "Click on Remove ."
-msgstr "Cliquez sur Supprimer ."
+"Le flux d'images est l'endroit où les photos et les vidéos apparaissent "
+"après avoir été prises ou enregistrées. Par défaut, c'est une bande "
+"horizontale en bas de la fenêtre Cheese ."
-#: C/remove-account.page:53(p)
+#: C/mode-wide.page:29(page/p)
msgid ""
-"A dialog will be shown asking for confirmation. Click the Remove "
-"button to permanently remove the account."
+"You can make the photo stream appear as a vertical bar. This is useful if "
+"you have a wide computer screen which is not very high; switching to a "
+"vertical layout means that there is more room to display the video feed from "
+"the webcam."
msgstr ""
-"Une boite de dialogue s'ouvre pour vous demander de confirmer la "
-"suppression. Cliquez sur Supprimer pour supprimer le compte "
-"définitivement."
+"Vous pouvez afficher le flux d'images verticalement. C'est utile si vous "
+"avez un écran large mais pas très haut ; le passage à un affichage vertical "
+"laisse plus de place pour afficher l'entrée vidéo de la webcam."
-#: C/remove-account.page:59(p)
+#: C/mode-wide.page:34(page/p)
msgid ""
-"Even after removing an account, Empathy does not delete your "
-"conversation history for that account."
-msgstr ""
-"Même après la suppression d'un compte, Empathy ne supprime pas "
-"l'historique de ses conversations."
-
-#: C/prob-conn.page:7(desc)
-msgid "Diagnose common problems connecting to an instant messaging service."
+"To switch to a vertical layout, click Cheese Wide "
+"Mode . To switch back to a horizontal layout, uncheck the "
+"option."
msgstr ""
-"Diagnostique des problèmes courants de connexion à un service de messagerie "
-"instantanée."
+"Pour passer à un affichage vertical, cliquez sur Cheese "
+"Mode large . Pour revenir à l'affichage horizontal, "
+"décochez l'option."
-#: C/prob-conn.page:29(title)
-msgid "Problems connecting to an instant messaging service"
-msgstr "Problèmes de connexion à un service de messagerie instantanée"
-
-#. When image changes, this message will be marked fuzzy or untranslated for you.
-#. It doesn't matter what you translate it to: it's not used at all.
-#: C/prob-conn-neterror.page:58(None) C/prob-conn-name.page:43(None)
-#: C/prob-conn-auth.page:58(None) C/account-irc.page:109(None)
-msgid "@@image: 'figures/gtk-edit.png'; md5=4f21b451732817be0604fe3e2c8da98b"
-msgstr "@@image: 'figures/gtk-edit.png'; md5=4f21b451732817be0604fe3e2c8da98b"
-
-#: C/prob-conn-neterror.page:7(desc)
+#: C/mode-wide.page:39(note/p)
msgid ""
-"An error message which says âNetwork error â appears in the main "
-"window."
+"Another way to increase the size of the webcam preview is to make "
+"Cheese fullscreen. To do this, click Cheese"
+"gui>Fullscreen or press F11 . To quit the "
+"fullscreen mode, press F11 ."
msgstr ""
-"Un message d'erreur indiquant « Erreur réseau  » apparaît dans la "
-"fenêtre principale."
+"Une autre façon d'agrandir le flux de la webcam est d'utiliser Cheese"
+"app> en mode plein écran. Pour cela, cliquez sur Cheese"
+"gui>Plein écran ou appuyez sur la touche F11 . "
+"Pour quitter le mode plein écran, appuyez sur F11 ."
-#: C/prob-conn-neterror.page:33(title)
-msgid "I get a message that says âNetwork errorâ"
-msgstr "J'obtiens le message « Erreur réseau »"
+#: C/photo-delete.page:19(info/desc)
+msgid "Remove photos and videos that you no longer want to keep."
+msgstr "Supprimer des photos et des vidéos que vous ne voulez plus garder."
-#: C/prob-conn-neterror.page:36(cite)
-msgid "shaunm"
-msgstr "shaunm"
-
-#: C/prob-conn-neterror.page:37(p)
-msgid ""
-"Empathy no longer allows you to create an IRC account without a valid nick. "
-"I've removed the guide link. Remove the text."
-msgstr ""
-"Empathy ne vous autorise plus à créer un compte IRC sans pseudo valide. J'ai "
-"supprimé le lien du guide et supprimé le texte."
+#: C/photo-delete.page:22(page/title)
+msgid "Delete a photo or video"
+msgstr "Suppression d'une photo ou d'une vidéo"
-#: C/prob-conn-neterror.page:41(p)
-msgid ""
-"This kind of error happens when Empathy cannot communicate with "
-"the instant messaging service for some reason."
+#: C/photo-delete.page:24(page/p)
+msgid "If you no longer want a photo or video, you can permanently delete it:"
msgstr ""
-"Ce type d'erreur se produit quand Empathy ne parvient pas à "
-"communiquer avec le service de messagerie instantanée."
+"Si vous ne voulez plus d'une photo ou d'une vidéo, vous pouvez la supprimer "
+"définitivement :"
-#: C/prob-conn-neterror.page:45(p)
+#: C/photo-delete.page:28(item/p)
msgid ""
-"Also, this kind of error happens when you try to use an IRC account without "
-"setting a nickname."
+"Find the photo or video that you want to delete in the photo stream at the "
+"bottom of the Cheese window."
msgstr ""
-"Ce type d'erreur se produit aussi quand vous essayez d'utiliser un compte "
-"IRC sans paramétrer de pseudonyme."
-
-#: C/prob-conn-neterror.page:52(p) C/prob-conn-auth.page:45(p)
-#: C/prob-conn-acctdisabled.page:43(p)
-msgid ""
-"Make sure that you are connected to the Internet, or to a local area network."
-msgstr "Assurez-vous d'être connecté à internet ou au réseau local."
+"Trouvez la photo ou la vidéo que vous voulez supprimer dans le flux d'images "
+"en bas de la fenêtre Cheese ."
-#: C/prob-conn-neterror.page:57(p) C/prob-conn-name.page:42(p)
-#: C/prob-conn-auth.page:57(p)
+#: C/photo-delete.page:32(item/p)
msgid ""
-"Click the edit icon in the error message."
+"Right-click it and select Delete . Alternatively, click it once to "
+"select it and press the Delete key."
msgstr ""
-"Cliquez sur l'icône Modifier dans le message d'erreur."
+"Faites un clic droit et sélectionnez Supprimer . Vous pouvez aussi "
+"cliquer une fois pour la sélectionner puis appuyer sur la touche Suppr"
+"key>."
-#: C/prob-conn-neterror.page:65(p) C/prob-conn-acctdisabled.page:59(p)
+#: C/photo-delete.page:36(item/p)
msgid ""
-"Check in the Advanced section that all the details are correct. "
-"You should be able to find these details from the website of the messaging "
-"service."
+"You will be asked if you want to permanently delete it. Confirm by clicking "
+"Delete ; you will not be able to recover the photo."
msgstr ""
-"Vérifiez dans la section Avancé si tous les paramètres sont "
-"corrects.Vous devriez trouver ces paramètres sur le site internet de votre "
-"service de messagerie."
+"Il vous est demandé si vous souhaitez la supprimer définitivement. Confirmez "
+"en cliquant sur Supprimer . Vous ne pourrez plus récupérer la "
+"photo."
-#: C/prob-conn-neterror.page:82(p) C/prob-conn-auth.page:68(p)
+#: C/photo-delete.page:41(page/p)
msgid ""
-"Deselect the Enabled , and then select it again to try to "
-"reconnect to the service."
+"If you are not sure whether you want to permanently delete the photo or "
+"video, you can right click it and select Move to Trash instead. "
+"This will move it to the computer's Trash folder."
msgstr ""
-"Décochez la case à cocher Activé et cochez-la de nouveau pour "
-"essayer de vous reconnecter au service."
+"Si vous n'êtes pas sûr de vouloir supprimer de manière définitive une photo "
+"ou une vidéo, vous pouvez faire un clic droit dessus et sélectionner "
+"Mettre à la corbeille à la place. La photo est alors déplacée "
+"dans le dossier Corbeille de l'ordinateur."
-#: C/prob-conn-neterror.page:90(title)
-msgid "Proxy support"
-msgstr "Prise en charge d'un service mandataire"
-
-#: C/prob-conn-neterror.page:91(p)
+#: C/photo-delete.page:45(note/p)
msgid ""
-"At the moment Empathy can not be configured to work with a proxy."
+"Cheese does not have its own Trash folder and you cannot access "
+"your computer's Trash folder from within Cheese ."
msgstr ""
-"Pour l'instant, Empathy ne peut pas être configuré pour "
-"fonctionner avec un service mandataire."
-
-#: C/prob-conn-name.page:9(title)
-msgid "âName in useâ"
-msgstr "« Nom déjà utilisé »"
+"Cheese ne possède pas de dossier Corbeille personnel et vous ne "
+"pouvez pas accéder au dossier Corbeille à partir de Cheese"
+"app>."
-#: C/prob-conn-name.page:10(desc)
-msgid ""
-"An error message which says âName in use â appears in the main "
-"window."
-msgstr ""
-"Un message d'erreur indiquant « Nom déjà utilisé  » apparaît dans "
-"la fenêtre principale."
+#: C/photo-save.page:19(info/desc)
+msgid "Save a photo or video in a different folder."
+msgstr "Enregistrer une photo ou une vidéo dans un dossier différent."
-#: C/prob-conn-name.page:32(title)
-msgid "I get a message that says âName in useâ"
-msgstr "J'obtiens le message « Nom déjà utilisé »"
+#: C/photo-save.page:22(page/title)
+msgid "Save a photo or video"
+msgstr "Enregistrement d'une photo ou d'une vidéo"
-#: C/prob-conn-name.page:34(p)
+#: C/photo-save.page:24(page/p)
msgid ""
-"This kind of error happens when you try to connect to your IRC account and "
-"you are using a nickname that is already being used by someone else on that "
-"particular network."
+"By default, Cheese saves the photos and videos in the Pictures"
+"gui>Webcam and Videos Webcam"
+"gui> folders in your user folder."
msgstr ""
-"Ce type d'erreur se produit si vous tentez de vous connecter avec un compte "
-"IRC et que vous utilisez un pseudonyme qui est déjà utilisé par quelqu'un "
-"sur ce réseau."
+"Par défaut, Cheese enregistre les photos et les vidéos dans les dossiers "
+"Images Webcam et Vidéos"
+"gui>Webcam de votre dossier Personnel."
-#: C/prob-conn-name.page:50(p)
-msgid "In the Nickname text box, type a new nickname."
-msgstr ""
-"Dans la zone de texte Pseudonyme , saisissez un nouveau pseudonyme."
-
-#: C/prob-conn-name.page:55(p)
+#: C/photo-save.page:29(page/p)
msgid ""
-"If you have registered that nickname within the network you are using, set "
-"the password for that nickname. For more information, see ."
+"To save an image to a different location, right-click the image in the photo "
+"stream and click Save As . Then, choose where you want to save the "
+"image."
msgstr ""
-"Si vous avez enregistré ce pseudonyme sur le réseau utilisé, saisissez le "
-"mot de passe pour ce pseudonyme. Pour plus d'informations, consultez ."
+"Pour enregistrer une image dans un autre dossier, faites un clic droit sur "
+"la photo dans le flux d'images et cliquez sur Enregistrer sous "
+"puis choisissez le dossier où vous voulez enregistrer l'image."
-#: C/prob-conn-name.page:64(p)
+#: C/photo-save.page:33(page/p)
msgid ""
-"Deselect the Enabled check-box next to the name of your account, "
-"and then select it again to try to reconnect to the service."
+"Alternatively, open the folder where you want to keep the image using the "
+"file manager, then drag it from the photo stream into that folder."
msgstr ""
-"Décochez la case à cocher Activé à côté du nom du compte, et "
-"cochez-la de nouveau pour essayer de vous reconnecter au service."
+"Vous pouvez aussi utiliser le gestionnaire de fichiers pour ouvrir le "
+"dossier où vous souhaitez enregistrer l'image, puis la glisser du flux "
+"d'images vers le dossier."
-# traduction du message d'erreur
-#: C/prob-conn-auth.page:8(desc)
+#: C/photo-save.page:36(page/p)
msgid ""
-"An error message which says âAuthentication failed â appears in "
-"the main window."
+"A new copy of the image will be saved in the new location. The old version "
+"will remain in the Pictures Webcam or "
+"Videos Webcam folder."
msgstr ""
-"Un message d'erreur indiquant « L'authentification a échoué  » "
-"apparaît dans la fenêtre principale."
+"Une nouvelle copie de l'image est enregistrée dans le nouvel emplacement. "
+"L'ancienne version reste dans le dossier Images"
+"gui>Webcam ou Vidéos Webcam"
+"gui> ."
-#: C/prob-conn-auth.page:36(title)
-msgid "I get a message that says âAuthentication failedâ"
-msgstr "J'obtiens le message « L'authentification a échoué »"
+#: C/photo-take.page:24(info/desc)
+msgid "Use your webcam to take photos instead of videos."
+msgstr "Utiliser sa webcam pour faire des photos plutôt que des vidéos."
-#: C/prob-conn-auth.page:38(p)
-msgid ""
-"This kind of error happens when your instant messaging service is not "
-"allowing you to connect because it does not recognize your username or "
-"password for some reason."
-msgstr ""
-"Ce type d'erreur se produit quand votre service de messagerie instantanée ne "
-"vous permet pas de vous connecter parce qu'il ne reconnaît pas votre nom "
-"d'utilisateur ou votre mot de passe."
+#: C/photo-take.page:27(page/title)
+msgid "Take photos with the webcam"
+msgstr "Prise de photos avec la webcam"
-#: C/prob-conn-auth.page:50(p)
+#: C/photo-take.page:29(page/p)
msgid ""
-"Make sure that you have registered an account with the service you are "
-"trying to connect to. If you do not have an account, most services will not "
-"allow you to connect."
+"Webcams can be used to take still photos, as well as videos. To take a photo:"
msgstr ""
-"Vérifiez que vous êtes inscrit au service auquel vous essayez de vous "
-"connecter. Si vous n'avez pas de compte enregistré, la plupart des services "
-"vous refusent la connexion."
+"Les webcams permettent de prendre aussi bien des photos que des vidéos. Pour "
+"prendre une photo :"
-#: C/prob-conn-auth.page:63(p) C/prob-conn-acctdisabled.page:54(p)
+#: C/photo-take.page:34(item/p)
msgid ""
-"Type your username and password again to make sure that they are correct."
+"Make sure that you're in Photo mode . If you are, the button in "
+"the main window will say Take a Photo ."
msgstr ""
-"Saisissez votre nom d'utilisateur et votre mot de passe afin de vous assurer "
-"qu'ils sont corrects."
+"Vérifiez que vous êtes dans le Mode photo . Si c'est le cas, le "
+"bouton de la fenêtre principale affiche Prendre une photo ."
-#: C/prob-conn-acctdisabled.page:7(desc)
+#: C/photo-take.page:36(item/p)
msgid ""
-"The instant messaging account that you want to use is not enabled in the "
-"list of accounts."
+"To switch to Photo mode , click the small photo button in the "
+"bottom left of the window or click Cheese Photo"
+"gui> ."
msgstr ""
-"Le compte que vous voulez utiliser n'est pas activé dans la liste des "
-"comptes."
+"Pour passer au mode photo , cliquez sur le bouton contenant une "
+"petite photo en bas à gauche de la fenêtre ou cliquez sur "
+"Cheese Photo ."
-#: C/prob-conn-acctdisabled.page:33(title)
-msgid "My account is not enabled"
-msgstr "Mon compte n'est pas activé"
-
-#: C/prob-conn-acctdisabled.page:35(p)
-msgid ""
-"If the instant messaging account that you want to use is not enabled in the "
-"drop-down account list when you try to start a new conversation or join a "
-"room, your account details may not be correct."
+#: C/photo-take.page:41(item/p)
+msgid "Click Take a Photo or press the spacebar ."
msgstr ""
-"Si vous essayez de commencer une nouvelle conversation, ou de rejoindre un "
-"groupe de discussion, et que le compte que vous souhaitez utiliser n'est pas "
-"actif dans la liste déroulante, les détails de ce compte sont probablement "
-"incorrects."
+"Cliquez sur Prendre une photo ou appuyez sur la barre "
+"d'espace ."
-#: C/prob-conn-acctdisabled.page:48(p)
+#: C/photo-take.page:44(item/p)
msgid ""
-"Choose Edit Accounts and select the "
-"account that is not working."
+"There will be a short countdown, followed by a flash, and then the photo "
+"will appear in the photo stream at the bottom of the window."
msgstr ""
-"Sélectionnez Ãdition Comptes et "
-"sélectionnez le compte qui ne fonctionne pas."
+"Un court retardateur est affiché, suivi d'un flash, puis la photo apparaît "
+"dans le flux d'images en bas de la fenêtre."
-#: C/prob-conn-acctdisabled.page:65(p)
+#: C/photo-take.page:49(page/p)
msgid ""
-"Check that the Enabled check-box is selected. "
-"If it is not, select the check-box to enable the account."
+"The photos in the photo stream are automatically saved in the "
+"Pictures Webcam folder in your user "
+"folder. They are saved in the JPEG (.jpg ) format."
msgstr ""
-"Vérifiez que la case Activé est bien cochée. "
-"Si ce n'est pas le cas, cochez cette case pour activer le compte."
+"Les photos du flux d'images sont automatiquement enregistrées dans le "
+"dossier Images Webcam de votre dossier "
+"personnel. Elles sont enregistrées dans le format JPEG (.jpg )."
-#: C/prev-conv.page:8(desc)
-msgid "Browse or search your previous conversations."
-msgstr "Parcourir ou faire une recherche parmi vos conversations précédentes."
-
-#: C/prev-conv.page:35(title)
-msgid "View previous conversations"
-msgstr "Affichage des conversations précédentes"
-
-#: C/prev-conv.page:39(p)
+#: C/photo-take.page:53(page/p)
msgid ""
-"Highlighting text is quirky: #593733. If there's an actual highlighting going on, "
-"independent of the selection (like in yellow or something), we can use the "
-"term \"highlight\". Otherwise we need to use the term \"select\". Watch that "
-"bug."
+"To cancel taking a photo after you have clicked Take a Photo , "
+"press Esc before the countdown finishes."
msgstr ""
-"La mise en surbrillance est étrange.... #593733. NON TRADUIT VOLONTAIREMENT "
-"CARÂ N'APPARAITÂ PASÂ DANSÂ LAÂ DOC !!!"
+"Pour annuler la prise d'une photo après avoir cliqué sur Prendre une "
+"photo , appuyez sur la touche Ãchap avant la fin du "
+"retardateur."
-#: C/prev-conv.page:46(p)
+#: C/photo-take.page:57(note/p)
msgid ""
-"Empathy automatically saves all your text conversations you have "
-"with your contacts. You can search through all of "
-"your previous conversations or browse previous "
-"conversations by contact and date."
+"To take multiple photos in rapid succession, use Burst mode."
msgstr ""
-"Empathy enregistre automatiquement toutes les conversations "
-"textuelles que vous avez eu avec vos contacts. Vous pouvez Rechercher parmi toutes vos conversations précédentes ou "
-" Parcourir les conversations précédentes par "
-"contact ou par date."
+"Pour prendre plusieurs photos les unes à la suite des autres, utilisez le "
+" mode rafale."
-#: C/prev-conv.page:54(p)
-msgid ""
-"You do not need to be connected to the Internet to view and search your "
-"previous conversations."
+#: C/photo-view.page:19(info/desc)
+msgid "Photos and videos will automatically appear in the photo stream."
msgstr ""
-"Vous n'avez pas besoin d'être connecté à internet pour consulter ou faire "
-"des recherches dans vos anciennes conversations."
-
-#: C/prev-conv.page:61(title)
-msgid "Search previous conversations"
-msgstr "Recherche de conversations précédentes"
+"Les photos et les vidéos apparaissent automatiquement dans le flux d'images."
-#: C/prev-conv.page:63(p)
-msgid ""
-"You can perform a full-text search through all of your previous "
-"conversations."
-msgstr ""
-"Vous pouvez faire une recherche de texte intégral à travers toutes vos "
-"conversations précédentes."
+#: C/photo-view.page:23(page/title)
+msgid "View a photo or video that you took"
+msgstr "Affichage d'une photo ou d'une vidéo que vous avez faite"
-#: C/prev-conv.page:67(p) C/prev-conv.page:96(p)
+#: C/photo-view.page:25(page/p)
msgid ""
-"From the Contact List window, choose View"
-"gui>Previous Conversations . Alternatively, press "
-"F3 ."
+"After you take a photo or record a video, it will appear in the photo stream "
+"at the bottom of the window."
msgstr ""
-"à partir de la fenêtre Liste des contacts , sélectionnez "
-"Affichage Conversations précédentes . "
-"Vous pouvez aussi appuyer sur F3 ."
+"Après avoir pris une photo ou enregistré une vidéo, elle apparaît dans le "
+"flux d'images en bas de la fenêtre."
-#: C/prev-conv.page:71(p)
-msgid "Select the Search tab."
-msgstr "Sélectionnez l'onglet Rechercher ."
-
-#: C/prev-conv.page:74(p)
+#: C/photo-view.page:28(page/p)
msgid ""
-"In the For field, type the text you want to search for. Click "
-"Find or press Enter ."
+"If you want to see a bigger version of a photo, or to play a video, double-"
+"click it. This will open it in the default photo viewer or video player."
msgstr ""
-"Dans la zone de saisie ce terme , saisissez le texte que vous "
-"voulez rechercher. Cliquez sur Rechercher ou appuyez sur "
-"Entrée ."
+"Si vous souhaitez voir une version plus grande d'une photo ou lire une "
+"vidéo, double-cliquez dessus. Elle est alors ouverte dans le visionneur de "
+"photos ou le lecteur de vidéos par défaut."
-#: C/prev-conv.page:78(p)
+#: C/photo-view.page:31(page/p)
msgid ""
-"Any conversations that matched your search terms will be shown in the list "
-"below the search field. By default, conversations are ordered by date."
+"All of the photos and videos in the photo stream are saved in the "
+"Pictures Webcam or "
+"Videos Webcam folders in your user "
+"folder."
msgstr ""
-"Toutes les conversations correspondant aux termes que vous avez saisis "
-"apparaissent dans la liste sous le champ de recherche. Par défaut, les "
-"conversations sont classées par date."
+"Toutes les photos et vidéos du flux d'images sont enregistrées dans les "
+"dossiers Images Webcam ou "
+"Vidéos Webcam de votre dossier "
+"personnel."
-#: C/prev-conv.page:82(p)
+#: C/pref-burst-mode.page:19(info/desc)
msgid ""
-"Click on a conversation to view it. Empathy will select the text "
-"in the conversation that matched your search terms."
+"Burst mode takes several photos rapidly. Change your pose in "
+"between each shot!"
msgstr ""
-"Cliquez sur la conversation que vous voulez consulter. Empathy "
-"sélectionne le texte qui correspond aux termes recherchés."
+"Le mode rafale prend plusieurs photos rapidement. Changez de pose "
+"entre chaque prise !"
-#: C/prev-conv.page:89(title)
-msgid "Browse previous conversations"
-msgstr "Parcours de conversations précédentes"
+#: C/pref-burst-mode.page:23(page/title)
+msgid "Take multiple photos in quick succession"
+msgstr "Prise de plusieurs photos les unes à la suite des autres"
-#: C/prev-conv.page:91(p)
+#: C/pref-burst-mode.page:25(page/p)
msgid ""
-"You can browse your previous conversations with your contacts or in chat "
-"rooms by date."
+"You can use Burst mode to automatically take several photos in "
+"one go, with a short pause between shots. It is particularly fun if you "
+"change your pose in between photos! To use Burst mode :"
msgstr ""
-"Vous pouvez parcourir vos précédentes conversations avec vos contacts ou "
-"dans des salons de discussion, classées par date."
-
-#: C/prev-conv.page:100(p)
-msgid "Select the Conversations tab."
-msgstr "Sélectionnez l'onglet Conversations ."
+"Vous pouvez utiliser le mode rafale pour prendre plusieurs photos "
+"d'un coup, avec un court temps de pause entre elles. C'est particulièrement "
+"amusant si vous changez de pose entre les prises ! Pour utiliser le "
+"mode rafale  :"
-#: C/prev-conv.page:103(p)
+#: C/pref-burst-mode.page:31(item/p)
msgid ""
-"Select an account from the drop-down list in the top left. A list of "
-"contacts and chat room for that account will be shown below."
+"Click Burst , the Take a Photo button will now say "
+"Take Multiple Photos ."
msgstr ""
-"Sélectionnez un compte dans la liste déroulante en haut à gauche. Une liste "
-"de contacts et de salons de discussion apparaît en dessous."
+"Cliquez sur Rafale . Le bouton Prendre une photo "
+"devient Prendre plusieurs photos ."
-#: C/prev-conv.page:107(p)
+#: C/pref-burst-mode.page:33(item/p)
msgid ""
-"Select a contact or chat room to view your previous conversations from. By "
-"default the most recent conversation will be shown."
+"Alternatively, click Cheese Burst ."
msgstr ""
-"Sélectionnez le contact ou le salon de discussion pour consulter "
-"l'historique des conversations. Par défaut la conversation la plus récente "
-"est affichée."
+"Vous pouvez aussi cliquer sur Cheese Rafale "
+"guiseq>."
-#: C/prev-conv.page:111(p)
-msgid ""
-"You can browse your conversations by date. Days on which you had a "
-"conversation with the selected contact will be shown in bold text. Click a "
-"date to select it. Click the arrows next to the month and year to browse "
-"earlier dates."
+#: C/pref-burst-mode.page:36(item/p)
+msgid "Click Take Multiple Photos or press the spacebar ."
msgstr ""
-"Vous pouvez parcourir vos conversations par date. Vous verrez apparaître en "
-"gras les jours pour lesquels vous avez eu une conversation avec le contact "
-"sélectionné. Cliquez sur un jour pour le sélectionner et sur les flèches à "
-"côté du mois et de l'année pour parcourir des dates plus anciennes."
+"Cliquez sur Prendre plusieurs photos ou appuyez sur la barre "
+"d'espace ."
-#: C/prev-conv.page:117(p)
+#: C/pref-burst-mode.page:38(item/p)
msgid ""
-"You can search for text in the displayed conversation by typing into the "
-"search field at the top. The matching text will be highlighted."
+"By default, four photos will be taken, with a three second delay and a "
+"countdown between photos."
msgstr ""
-"Vous pouvez rechercher du texte dans la conversation actuelle en le "
-"saisissant dans la zone de saisie en haut. Le texte correspondant sera mis "
-"en surbrillance."
+"Par défaut, quatre photos sont prises, avec, entre chaque photo, un délai de "
+"trois secondes et un compte à rebours."
-#: C/prev-conv.page:121(p)
+#: C/pref-burst-mode.page:43(page/p)
msgid ""
-"You can quickly view the previous conversations with one of your contacts "
-"from the Contact List window. Simply right click the contact and "
-"choose View Previous Conversations . The Previous "
-"Conversations window will open with that contact already selected."
+"Press Esc if you want to stop Cheese from taking "
+"photos at any point."
msgstr ""
-"Vous pouvez rapidement afficher vos conversations précédentes avec un de vos "
-"contacts à partir de la fenêtre Liste des contacts . Faites tout "
-"simplement un clic droit sur le contact et choisissez Afficher les "
-"conversations précédentes . La fenêtre Conversations précédentes"
-"gui> s'ouvre directement sur le contact sélectionné."
+"Appuyez sur la touche Ãchap quand vous le souhaitez, si vous "
+"voulez que Cheese arrête de prendre des photos."
-#: C/link-contacts.page:11(desc)
-msgid "Merge and separate different contacts into a single one."
-msgstr "Fusionner et séparer différents contacts en un seul."
+#: C/pref-burst-mode.page:47(section/title)
+msgid "Change how many photos are taken and the delay between them"
+msgstr "Modification du nombre de photos prises et du délai entre elles"
-#: C/link-contacts.page:25(title)
-msgid "Combine and separate contacts"
-msgstr "Fusion et séparation de contacts"
-
-#: C/link-contacts.page:26(p)
+#: C/pref-burst-mode.page:48(section/p)
msgid ""
-"If one, or more, of your contacts has multiple accounts with different "
-"messaging services, you can combine these contacts into a single one."
+"You can change how many photos will be taken in each burst and the length of "
+"the delay between the photos:"
msgstr ""
-"Si un ou plusieurs de vos contacts possèdent de nombreux comptes avec "
-"différents services de messagerie, vous pouvez fusionner ces contacts en un "
-"seul."
+"Vous pouvez changer le nombre de photos à prendre à chaque rafale et la "
+"durée du délai entre les photos :"
-#: C/link-contacts.page:30(p)
-msgid ""
-"The resulting contact is called a meta-contact : a contact composed "
-"from different single contacts."
-msgstr ""
-"Le contact résultant est appelé un méta-contact  : un contact "
-"composé de différents contacts uniques."
+#: C/pref-burst-mode.page:52(item/p) C/pref-image-properties.page:30(item/p)
+#: C/pref-photo-resolution.page:36(item/p)
+msgid "Click Edit Preferences ."
+msgstr "Cliquez sur Ãdition Préférences ."
-#: C/link-contacts.page:34(p)
+#: C/pref-burst-mode.page:55(item/p)
msgid ""
-"If you have a Jane Smith contact that is using three different messaging "
-"services like:"
+"Change the options under Burst mode and click Close ."
msgstr ""
-"Si vous avez un contact appelée Jane Smith qui utilise trois différents "
-"services de messagerie comme :"
-
-#: C/link-contacts.page:40(p)
-msgid "janes@facebook"
-msgstr "janes@facebook"
-
-#: C/link-contacts.page:45(p)
-msgid "jane.smith@gmail"
-msgstr "jane.smith@gmail"
-
-#: C/link-contacts.page:50(p)
-msgid "jane_smith@hotmail"
-msgstr "jane_smith@hotmail"
-
-#: C/link-contacts.page:55(p)
-msgid "You can combine these contacts into a single Jane Smith one."
-msgstr "vous pouvez associer ces contacts dans une unique Jane Smith."
-
-#: C/link-contacts.page:60(title)
-msgid "Combining contacts"
-msgstr "Association de contacts"
-
-#: C/link-contacts.page:63(p)
-msgid ""
-"From the Contact List window, right-click one of the contact that "
-"has different accounts, and select Link Contacts..."
+"Modifiez les options sous Mode rafale et cliquez sur Fermer"
"gui>."
-msgstr ""
-"Dans la fenêtre Liste des contacts , faites un clic droit sur l'un "
-"des contacts qui possède plusieurs comptes et sélectionnez Lier des contacts... ."
-
-#: C/link-contacts.page:70(p)
-msgid ""
-"From the left pane in the Link Contacts window, select the "
-"contacts you want to combine."
-msgstr ""
-"Dans le panneau de gauche de la fenêtre Lier des contacts , "
-"sélectionnez les contacts que vous voulez associer."
-#: C/link-contacts.page:76(p)
-msgid "Click Link ."
-msgstr "Cliquez sur Lier ."
-
-#: C/link-contacts.page:82(p)
+#: C/pref-burst-mode.page:59(note/p)
msgid ""
-"When a meta-contact has been created, the default contact that will be used "
-"to have a conversation with when you double-click on it, is the contact with "
-"the highest presence on-line."
+"The delay is between the last photo taken and the start of the countdown for "
+"the next photo, not between two photos."
msgstr ""
-"Quand un méta-contact a été créé, le contact par défaut qui sera utilisé "
-"comme interlocuteur lors d'un double-clic, est le contact qui est le plus "
-"souvent présent en-ligne."
-
-#: C/link-contacts.page:91(title)
-msgid "Separating contacts"
-msgstr "Séparation de contacts"
+"Le délai est celui entre la dernière prise de photo et le début du compte à "
+"rebours pour la photo suivante et non pas celui entre deux photos."
-#: C/link-contacts.page:94(p)
-msgid ""
-"From the Contact List , right-click the contact to separate, and "
-"select Link Contacts... ."
+#: C/pref-countdown.page:19(info/desc)
+msgid "Remove the countdown so that photos are taken instantly."
msgstr ""
-"Dans la fenêtre Liste des contacts , faites un clic droit sur le "
-"contact à séparer et sélectionnez Lier des "
-"contacts... ."
-
-#: C/link-contacts.page:100(p)
-msgid "Click Unlink ."
-msgstr "Cliquez sur Séparer ."
+"Enlever le compte à rebours pour que les photos soient prises instantanément."
-#: C/license.page:8(desc)
-msgid "Legal information."
-msgstr "Informations légales."
+#: C/pref-countdown.page:22(page/title)
+msgid "Disable the Countdown before photos are taken"
+msgstr "Désactivation du retardateur avant la prise des photos"
-#: C/license.page:11(title)
-msgid "License"
-msgstr "Licence"
-
-#: C/license.page:12(p)
+#: C/pref-countdown.page:24(page/p)
msgid ""
-"This work is distributed under a CreativeCommons Attribution-Share Alike 3.0 "
-"Unported license."
+"By default, Cheese counts down from three before taking a photo. "
+"You can disable this feature by clicking Edit "
+"Preferences and unchecking Countdown ."
msgstr ""
-"Cette Åuvre est distribuée sous licence Creative Commons Paternité-Partage "
-"des Conditions Initiales à l'Identique 3.0 Unported."
-
-#: C/license.page:20(p)
-msgid "You are free:"
-msgstr "Vous êtes libre :"
-
-#: C/license.page:25(em)
-msgid "To share"
-msgstr "de partager"
-
-#: C/license.page:26(p)
-msgid "To copy, distribute and transmit the work."
-msgstr "de reproduire, distribuer et communiquer cette création,"
-
-#: C/license.page:29(em)
-msgid "To remix"
-msgstr "de modifier"
-
-#: C/license.page:30(p)
-msgid "To adapt the work."
-msgstr "d'adapter cette création."
-
-#: C/license.page:33(p)
-msgid "Under the following conditions:"
-msgstr "selon les conditions suivantes :"
-
-#: C/license.page:38(em)
-msgid "Attribution"
-msgstr "Paternité"
+"Par défaut, Cheese affiche un compte à rebours de trois secondes "
+"avant de prendre une photo. Vous pouvez l'empêcher en cliquant sur "
+"Ãdition Préférences et en décochant "
+"Retardateur ."
-#: C/license.page:39(p)
-msgid ""
-"You must attribute the work in the manner specified by the author or "
-"licensor (but not in any way that suggests that they endorse you or your use "
-"of the work)."
-msgstr ""
-"Vous devez citer le nom de l'auteur original de la manière indiquée par "
-"l'auteur de l'Åuvre ou le titulaire des droits qui vous confère cette "
-"autorisation (mais pas d'une manière qui suggérerait qu'ils vous soutiennent "
-"ou approuvent votre utilisation de l'Åuvre)."
+#: C/pref-flash.page:18(info/desc)
+msgid "Stop the screen from flashing white when taking a photo."
+msgstr "Enlever le flash de l'écran lors de la prise de photos."
-#: C/license.page:46(em)
-msgid "Share Alike"
-msgstr "Partage des conditions initiales à l'identique"
+#: C/pref-flash.page:21(page/title)
+msgid "Disable the flash"
+msgstr "Désactivation du flash"
-#: C/license.page:47(p)
+#: C/pref-flash.page:23(page/p)
msgid ""
-"If you alter, transform, or build upon this work, you may distribute the "
-"resulting work only under the same, similar or a compatible license."
+"When you take a photo with Cheese, the computer screen briefly turns white. "
+"This provides additional light."
msgstr ""
-"Si vous modifiez, transformez ou adaptez cette création, vous n'avez le "
-"droit de distribuer la création qui en résulte que sous un contrat identique "
-"Ã celui-ci."
+"Quand vous prenez une photos avec Cheese, l'écran de l'ordinateur devient "
+"blanc un court instant, ce qui augmente la lumière."
-#: C/license.page:53(p)
+#: C/pref-flash.page:26(page/p)
msgid ""
-"For the full text of the license, see the CreativeCommons website"
-"link>, or read the full Commons Deed."
+"To disable this feature, click Edit Preferences"
+"gui> and uncheck Fire Flash ."
msgstr ""
-"Pour prendre connaissance du texte complet de la licence, consultez le site Web "
-"CreativeCommons ou lisez in extenso le contrat Commons."
-
-#: C/irc-start-conversation.page:8(desc)
-msgid "Start a conversation with an IRC contact."
-msgstr "Démarrer une conversation avec un contact IRC."
-
-#: C/irc-start-conversation.page:30(title)
-msgid "Chat with somebody on IRC"
-msgstr "Discussion avec quelqu'un sur IRC"
+"Pour désactiver cette fonctionnalité, cliquez sur Ãdition"
+"gui>Préférences et décochez Utiliser le flash ."
-#: C/irc-start-conversation.page:32(p)
+#. This is a reference to an external file such as an image or video. When
+#. the file changes, the md5 hash will change to let you know you need to
+#. update your localized copy. The msgstr is not used at all. Set it to
+#. whatever you like once you have updated your copy of the file.
+#: C/pref-image-properties.page:45(media)
+msgctxt "_"
msgid ""
-"You can hold private conversations with other IRC users, outside of the "
-"public IRC chat rooms. To start a conversation with another IRC user:"
+"external ref='figures/image-properties.png' "
+"md5='70c32a1dd7c9a20dabef58d0789f2a5a'"
msgstr ""
-"Vous pouvez entretenir une conversation privée avec d'autres utilisateurs "
-"IRC en dehors du salon de discussion IRC public. Pour démarrer une "
-"conversation avec un autre utilisateur :"
+"external ref='figures/image-properties.png' "
+"md5='70c32a1dd7c9a20dabef58d0789f2a5a'"
-#: C/irc-start-conversation.page:37(p)
+#: C/pref-image-properties.page:19(info/desc)
msgid ""
-"In the contact list for an IRC chat room, double click the name of the user "
-"you want to chat with. Alternatively, right click the name of the user and "
-"choose Chat ."
+"Adjust the saturation, contrast, brightness and hue to make photos and "
+"videos look better."
msgstr ""
-"Dans la liste des contacts des salons de discussion IRC, double-cliquez sur "
-"le nom de l'utilisateur avec qui vous souhaitez discuter. Vous pouvez "
-"également faire un clic droit sur le nom de l'utilisateur et choisir "
-"Discuter ."
+"Ajuster la saturation, le contraste, la luminosité et la teinte pour "
+"améliorer vos photos et vos vidéos."
-#: C/irc-start-conversation.page:45(p)
-msgid ""
-"The IRC room contact list is not the same as Empathy contact "
-"list. It contains a list of users in the IRC chat room you joined. Different "
-"rooms can have different contacts listed."
-msgstr ""
-"La liste des contacts des salons de discussion IRC n'est pas la même que la "
-"liste des contacts d'Empathy . Elle contient une liste des "
-"utilisateurs dans le salon de discussion IRC que vous avez rejoint."
+#: C/pref-image-properties.page:23(page/title)
+msgid "My photos and videos look wrong"
+msgstr "Mes photos et vidéos n'ont pas l'air normales"
-#: C/irc-start-conversation.page:52(p)
+#: C/pref-image-properties.page:25(page/p)
msgid ""
-"The IRC room contact list is usually on the right side of the IRC room "
-"window. If you do not see it, choose Conversation"
-"gui>Show Contact List ."
-msgstr ""
-"La liste des contacts des salons de discussion IRC est située sur le côté "
-"droit de la fenêtre du salon IRC. Si vous ne la voyez pas, choisissez "
-"Conversation Afficher la liste des contacts "
-"guiseq>."
-
-#: C/irc-send-file.page:9(desc)
-msgid "Empathy does not currently support sending files using IRC."
-msgstr ""
-"Empathy ne prend pas actuellement en charge l'envoi de fichiers "
-"en utilisant IRC."
-
-#: C/irc-send-file.page:31(title)
-msgid "Send files over IRC"
-msgstr "Envoi de fichiers sur IRC"
-
-#: C/irc-send-file.page:33(p)
-msgid "It is not currently possible to send files using IRC."
+"If your photos or videos are too dark or the colors seem to be wrong, try "
+"adjusting their saturation, contrast, brightness and hue:"
msgstr ""
-"Il n'est actuellement pas possible d'envoyer des fichiers en utilisant IRC."
+"Si vos photos ou vos vidéos sont trop sombres ou si les couleurs ont l'air "
+"fausses, essayez d'ajuster la saturation, le contraste, la luminosité et la "
+"teinte :"
-#: C/irc-nick-password.page:10(desc)
-msgid "Protect your nickname to prevent other IRC users from using it."
-msgstr ""
-"Protéger votre pseudonyme pour empêcher son utilisation par d'autres "
-"utilisateurs IRC."
-
-#: C/irc-nick-password.page:33(title)
-msgid "Use a nickname password on IRC"
-msgstr "Utilisation d'un mot de passe pour pseudonyme sur IRC"
-
-#: C/irc-nick-password.page:35(p)
+#: C/pref-image-properties.page:33(item/p)
msgid ""
-"On some IRC networks, you can register your nickname with a service called "
-"NickServ. By sending special messages to NickServ, you can set your password "
-"and identify yourself. Some IRC chat rooms may not allow you to join without "
-"a registered nickname."
+"Under Image properties , change the sliders to find the best "
+"settings for your webcam."
msgstr ""
-"Sur certains réseaux IRC, vous pouvez inscrire votre pseudonyme à un service "
-"appelé NickServ. En envoyant des messages particuliers à NickServ, vous "
-"pouvez définir votre mot de passe et vous identifier. Certains salons de "
-"discussion interdisent leur accès si votre pseudonyme n'est pas inscrit."
+"Sous Propriétés de l'image , modifiez les positions des glissières "
+"pour trouver les meilleurs réglages pour votre webcam."
-#: C/irc-nick-password.page:40(p)
+#: C/pref-image-properties.page:37(item/p)
msgid ""
-"Empathy does not currently support nickname registration. Some "
-"IRC networks, however, will automatically forward a server password "
-"to NickServ. On these networks, you can use the IRC password in "
-"Empathy to identify yourself to NickServ. The popular freenode "
-"network is known to have this feature."
-msgstr ""
-"Empathy ne prend pas en charge actuellement l'inscription des "
-"pseudonymes. Cependant, certains réseaux IRC vont faire suivre "
-"automatiquement un mot de passe serveur à NickServ. Sur ces "
-"réseaux, vous pouvez utiliser le mot de passe IRC dans Empathy "
-"pour vous identifier à NickServ. Le célèbre réseau freeNode est connu pour "
-"avoir cette fonctionnalité."
-
-#: C/irc-nick-password.page:46(p)
-msgid "To set an IRC server password:"
-msgstr "Pour paramétrer un mot de passe de serveur IRC :"
-
-#: C/irc-nick-password.page:54(p)
-msgid "Select the IRC account from the list on the left of the dialog."
+"Click Close and check to see if the photos and videos look better."
msgstr ""
-"Sélectionnez le compte IRC dans la liste sur la gauche de la boîte de "
-"dialogue."
+"Cliquez sur Fermer et vérifiez que les photos et les vidéos sont "
+"meilleures."
-#: C/irc-nick-password.page:57(p)
+#: C/pref-image-properties.page:43(figure/title)
msgid ""
-"In the Password field, type the password you used to register "
-"your nikcname."
+"Different options under Image properties (left to right): "
+"applying brightness, contrast, hue and saturation"
msgstr ""
-"Dans le champ Mot de passe , saisissez le mot de passe que vous "
-"avez utilisé pour inscrire votre pseudonyme."
+"Différentes options dans Propriétés de l'image (de gauche à "
+"droite) : modification de la luminosité, du contraste, de la teinte et de la "
+"saturation"
-#: C/irc-nick-password.page:63(p) C/import-account.page:61(p)
-msgid "Click Apply ."
-msgstr "Cliquez sur Appliquer ."
+#: C/pref-image-properties.page:50(item/title)
+msgid "Brightness"
+msgstr "Luminosité"
-#: C/irc-nick-password.page:69(p)
+#: C/pref-image-properties.page:51(item/p)
msgid ""
-"These instructions only allow you to use a password-protected nickname on "
-"certain IRC networks. It is not currently possible to register an IRC "
-"nickname or change your nickname password using Empathy ."
+"Increasing the brightness will make the photos and videos lighter. However, "
+"if you are in a dark room, increasing the brightness might make the image "
+"look more noisy."
msgstr ""
-"Ces instructions ne vous permettent d'utiliser un pseudonyme protégé par mot "
-"de passe que sur certains réseaux. Il n'est actuellement pas possible "
-"d'inscrire un pseudonyme IRC ou de modifier le mot de passe de votre "
-"pseudonyme en utilisant Empathy ."
+"Augmenter la luminosité rend la photo et la vidéo plus lumineuse. Cependant, "
+"si vous êtes dans une pièce sombre, augmenter la luminosité augmente le "
+"grain de l'image."
-#: C/irc-manage.page:10(desc)
-msgid "How to use IRC with Empathy ."
-msgstr "Comment utiliser IRC avec Empathy ."
+#: C/pref-image-properties.page:54(item/title)
+msgid "Contrast"
+msgstr "Contraste"
-#: C/irc-manage.page:35(title)
-msgid "Internet Relay Chat (IRC)"
-msgstr "« Internet Relay Chat » (IRC)"
-
-#: C/irc-manage.page:38(p) C/account-irc.page:39(p)
+#: C/pref-image-properties.page:55(item/p)
msgid ""
-"You must have the telepathy-idle package installed to use IRC in "
-"Empathy ."
+"Setting a higher contrast will increase the difference between darker and "
+"lighter colors. If the image looks washed out, try increasing the contrast."
msgstr ""
-"Le paquet telepathy-idle doit être installé pour utiliser IRC "
-"avec Empathy ."
-
-#: C/irc-manage.page:42(link)
-msgid "Install telepathy-idle"
-msgstr "Installer telepathy-idle"
-
-#: C/irc-manage.page:49(title)
-msgid "IRC Chat Rooms and Conversations"
-msgstr "Salon de discussion et conversations IRC"
-
-#: C/irc-manage.page:51(title)
-msgid "Chat Rooms and Conversations"
-msgstr "Salon de discussion et conversations"
-
-#: C/irc-manage.page:56(title)
-msgid "Common IRC Problems"
-msgstr "Problèmes IRC courants"
-
-#: C/irc-manage.page:58(title) C/index.page:55(title)
-msgid "Common Problems"
-msgstr "Problèmes courants"
+"Utiliser un fort contraste augmente la différence entre les couleurs sombres "
+"et claires. Si l'image a l'air délavée, essayez d'augmenter le contraste."
-#: C/irc-join-room.page:8(desc)
-msgid "Join an IRC channel."
-msgstr "Rejoindre un canal IRC."
+#: C/pref-image-properties.page:58(item/title)
+msgid "Hue"
+msgstr "Teinte"
-#: C/irc-join-room.page:31(title)
-msgid "Join an IRC chat room"
-msgstr "Connexion à un salon de discussion IRC"
-
-#: C/irc-join-room.page:33(p)
-msgid ""
-"You can join IRC chat rooms (also known as IRC channels) on any IRC network "
-"youâre connected to. To connect to an IRC network, see and ."
-msgstr ""
-"Vous pouvez rejoindre un salon de discussion IRC (également connus sous le "
-"nom de canaux IRC) sur n'importe quel réseau IRC auquel vous êtes connecté. "
-"Pour se connecter à un réseau IRC, consultez et "
-" ."
-
-#: C/irc-join-room.page:39(p) C/group-conversations.page:58(p)
-#: C/group-conversations.page:122(p)
+#: C/pref-image-properties.page:59(item/p)
msgid ""
-"From the Contact List window, choose Room"
-"gui>Join ."
+"Changing the hue of the image will add a tint to it. If image seems to be "
+"the wrong color (for example, too yellow), try changing the hue."
msgstr ""
-"à partir de la fenêtre Liste des contacts , sélectionnez "
-"Salon Rejoindre ."
+"Modifier la teinte de l'image lui ajoute une couleur particulière. Si les "
+"couleurs de l'image semblent fausses (par exemple, trop de jaune), essayez "
+"de changer la teinte."
-#: C/irc-join-room.page:45(p)
-msgid ""
-"From the Account drop-down list, select the IRC account that "
-"corresponds to the network you want to use."
-msgstr ""
-"Dans la liste déroulante Compte , sélectionnez le compte IRC qui "
-"correspond au réseau que vous voulez utiliser."
+#: C/pref-image-properties.page:62(item/title)
+msgid "Saturation"
+msgstr "Saturation"
-#: C/irc-join-room.page:51(p)
+#: C/pref-image-properties.page:63(item/p)
msgid ""
-"In the Room text box, type the name of the channel you want to "
-"join. IRC channel names start with the hash character (# )."
+"Reducing the saturation makes the image less colorful. If colors seem too "
+"harsh, reduce the saturation."
msgstr ""
-"Dans la zone de texte Salon , saisissez le nom du canal que vous "
-"voulez rejoindre. Les noms de canal IRC commencent par le caractère dièse "
-"(# )."
+"Réduire la saturation rend l'image moins colorée. Si les couleurs semblent "
+"trop accentuées, réduisez la saturation."
-#: C/irc-join-room.page:57(p)
-msgid "Click Join to enter the room."
-msgstr "Cliquez sur Rejoindre pour entrer dans le salon."
-
-#: C/irc-join-room.page:64(p)
+#: C/pref-photo-resolution.page:19(info/desc)
msgid ""
-"To join multiple rooms, you need to repeat the steps above for each room."
+"The resolution of a video or photo determines how much detail you can see in "
+"it, changing it will affect the file size."
msgstr ""
-"Pour rejoindre plusieurs salons, vous devez répéter les étapes précédentes "
-"pour chaque salon."
-
-#: C/irc-join-pwd.page:9(desc)
-msgid "Enter password-protected IRC chat rooms."
-msgstr "Se connecter à un salon de discussion IRC protégé."
+"La résolution d'une vidéo ou d'une photo détermine la quantité de détails "
+"qu'elle contient ; la modifier affecte la taille du fichier."
-#: C/irc-join-pwd.page:25(title)
-msgid "Join a protected IRC chat room"
-msgstr "Connexion à un salon de discussion IRC protégé"
+#: C/pref-photo-resolution.page:24(page/title)
+msgid "Change the capture resolution of your webcam"
+msgstr "Modification de la résolution de capture de votre webcam"
-#: C/irc-join-pwd.page:27(p)
+#: C/pref-photo-resolution.page:26(page/p)
msgid ""
-"On some IRC networks, private IRC rooms may be protected with a password. If "
-"you know the password, use the following steps to join:"
+"Higher resolution generally means better quality images, but photos and "
+"videos with higher resolution take up more space on your hard disk. High "
+"resolution videos, in particular, take up a lot of space."
msgstr ""
-"Sur certains réseaux IRC, des salons de discussion IRC privés sont protégés "
-"par un mot de passe. Si vous le connaissez, utilisez les étapes suivantes "
-"pour les rejoindre :"
+"Une plus haute résolution permet généralement d'obtenir des images de "
+"meilleure qualité, mais les photos et les vidéos avec une plus haute "
+"résolution prennent plus de place sur le disque dur, particulièrement pour "
+"les vidéos."
-#: C/irc-join-pwd.page:33(p)
-msgid " Join the room as normal."
-msgstr ""
-" Rejoignez le salon comme d'habitude."
-
-#: C/irc-join-pwd.page:38(p)
+#: C/pref-photo-resolution.page:30(page/p)
msgid ""
-"Empathy will prompt you for a password. Enter the password for the IRC chat "
-"room and click Join ."
+"If you want your images to take up less disk space, reduce the resolution of "
+"your webcam. If you want better quality images, increase the resolution. To "
+"change the webcam resolution:"
msgstr ""
-"Empathy vous demandera un mot de passe. Saisissez le mot de passe pour le "
-"salon de discussion IRC et cliquez sur Rejoindre ."
-
-#: C/irc-commands.page:7(desc)
-msgid "The supported IRC commands."
-msgstr "Les commandes IRC prises en charge."
-
-#: C/irc-commands.page:18(title)
-msgid "Supported IRC commands"
-msgstr "Commandes IRC prises en charge"
+"Si vous voulez que vos photos prennent moins de place sur le disque, "
+"réduisez la résolution de votre webcam. Si vous voulez des images de "
+"meilleur qualité, augmentez la résolution. Pour modifier la résolution de la "
+"webcam :"
-#: C/irc-commands.page:19(p)
+#: C/pref-photo-resolution.page:39(item/p)
msgid ""
-"To see the list of the supported IRC commands, in a chat room type /"
-"help and press Enter ."
+"Choose a different resolution from the drop-down list. Some webcams only "
+"support one resolution, so you may not have a choice."
msgstr ""
-"Pour afficher la liste des commandes IRC prises en charge dans un salon de "
-"discussion, saisissez /help et appuyez sur Entrée ."
+"Choisissez une résolution différente dans la liste déroulante. Certaines "
+"webcams ne prennent en charge qu'une seule résolution, il est donc possible "
+"que vous n'ayez pas le choix."
-#: C/irc-commands.page:24(p)
-msgid "All commands available have a small description on their usage."
-msgstr "L'usage de toutes les commandes disponibles est décrit succinctement."
+#: C/pref-photo-resolution.page:43(item/p)
+msgid "Click Close ."
+msgstr "Cliquez sur Fermer ."
-#. When image changes, this message will be marked fuzzy or untranslated for you.
-#. It doesn't matter what you translate it to: it's not used at all.
-#: C/introduction.page:41(None)
-msgid ""
-"@@image: 'figures/empathy-main-window.png'; "
-"md5=54908dcb2588beddb15ef0968d2c2582"
+#: C/video-record.page:19(info/desc)
+msgid "Use your webcam to record short movies for sharing with friends."
msgstr ""
-"@@image: 'figures/empathy-main-window.png'; "
-"md5=54908dcb2588beddb15ef0968d2c2582"
-
-#: C/introduction.page:9(desc)
-msgid "Introduction to the Empathy instant messenger."
-msgstr "Introduction à la messagerie instantanée Empathy ."
-
-#: C/introduction.page:21(title)
-msgid "Introduction"
-msgstr "Introduction"
+"Utiliser sa webcam pour enregistrer des films courts pour les partager avec "
+"des amis."
-#: C/introduction.page:23(p)
-msgid ""
-"Empathy is an instant messaging application for the GNOME "
-"Desktop. It supports text messaging, voice & video calls, file "
-"transfers, and all the most used messaging systems such as MSN and Google "
-"Talk."
-msgstr ""
-"Empathy est une application de messagerie instantanée pour le "
-"bureau GNOME. Elle prend en charge les messages textuels, les appels audio "
-"& vidéo, le transfert de fichiers et la plupart des systèmes de "
-"messagerie les plus utilisés tels que MSN et Google Talk."
+#: C/video-record.page:22(page/title)
+msgid "Record a video"
+msgstr "Enregistrement d'une vidéo"
-#: C/introduction.page:28(p)
-msgid ""
-"Empathy includes features that help you better collaborate while "
-"at work, and that let you easily keep in touch with your friends."
-msgstr ""
-"Empathy inclut des fonctionnalités qui vous aident à mieux "
-"collaborer dans le cadre du travail et à rester facilement en contact avec "
-"vos amis."
+#: C/video-record.page:24(page/p)
+msgid "To record a video using your webcam:"
+msgstr "Pour enregistrer une vidéo à l'aide de votre webcam :"
-#: C/introduction.page:32(p)
+#: C/video-record.page:28(item/p)
msgid ""
-"Using Empathy , you can group all the conversations in a single "
-"window, have multiple windows for different kind of conversations, easily "
-"search through your previous conversations, and share your desktop in just "
-"two clicks."
+"Make sure that you are in Video mode . If you are, the button in "
+"the middle of the window will say Start Recording ."
msgstr ""
-"En utilisant Empathy , vous pouvez regrouper toutes les "
-"conversations dans une seule fenêtre ou avoir plusieurs fenêtres pour chaque "
-"type de conversation, faire des recherches dans vos conversations "
-"précédentes et partager votre bureau en quelques clics."
-
-#: C/introduction.page:39(title)
-msgid "Contact List window"
-msgstr "Fenêtre Liste des contacts "
-
-#: C/introduction.page:40(desc)
-msgid "Empathy main window"
-msgstr "Fenêtre principale d'Empathy "
-
-#: C/introduction.page:42(p)
-msgid "Empathy main window."
-msgstr "Fenêtre principale d'Empathy ."
+"Vérifiez que vous êtes dans le Mode vidéo . Si c'est le cas, le "
+"bouton de la fenêtre principale affiche Enregistrer une vidéo ."
-#. When image changes, this message will be marked fuzzy or untranslated for you.
-#. It doesn't matter what you translate it to: it's not used at all.
-#: C/index.page:28(None)
+#: C/video-record.page:30(item/p)
msgid ""
-"@@image: 'figures/empathy-logo.png'; md5=1afc419a644e90b16393807e35cb5cb2"
+"You can switch to Video mode by clicking the button in the main "
+"window or by clicking Cheese Video ."
msgstr ""
-"@@image: 'figures/empathy-logo.png'; md5=1afc419a644e90b16393807e35cb5cb2"
-
-#: C/index.page:7(title) C/index.page:8(title)
-msgid "Empathy Internet Messenger"
-msgstr "Messagerie internet Empathy"
+"Vous pouvez passer au mode vidéo en cliquant sur le bouton de la "
+"fenêtre principale ou en cliquant sur Cheese Vidéo"
+"gui> ."
-#: C/index.page:27(title)
+#: C/video-record.page:34(item/p)
msgid ""
-" "
-"Empathy Internet Messenger logo Empathy Internet Messenger"
-msgstr ""
-"Logo de Messagerie internet Empathy Messagerie internet Empathy"
-
-#: C/index.page:35(title)
-msgid "Account Management"
-msgstr "Gestion des comptes"
-
-#: C/index.page:39(title)
-msgid "Contact Management"
-msgstr "Gestion des contacts"
-
-#: C/index.page:43(title)
-msgid "Text Conversations"
-msgstr "Conversations texte"
-
-#: C/index.page:47(title)
-msgid "Audio and Video Conversations"
-msgstr "Conversations audio et vidéo"
-
-#: C/index.page:51(title)
-msgid "Advanced Actions"
-msgstr "Actions avancées"
-
-#: C/import-account.page:10(desc)
-msgid "Import an account from another instant messaging application."
+"Click Start Recording , or press the spacebar . "
+"Cheese will start recording from your webcam."
msgstr ""
-"Importation de compte en provenance d'une autre application de messagerie "
-"instantanée."
-
-#: C/import-account.page:19(name)
-msgid "Peter Haslam"
-msgstr "Peter Haslam"
-
-#: C/import-account.page:20(email)
-msgid "peter.haslam@freenet.de"
-msgstr "peter.haslam@freenet.de"
-
-#: C/import-account.page:42(title)
-msgid "Import an existing account"
-msgstr "Importation d'un compte existant"
+"Cliquez sur Enregistrer une vidéo ou appuyez sur la barre "
+"d'espace . Cheese démarre l'enregistrement avec votre webcam."
-#: C/import-account.page:44(p)
+#: C/video-record.page:38(item/p)
msgid ""
-"The first time you run Empathy , it will offer to import your "
-"accounts from other instant messaging applications. Currently, the only "
-"supported application is Pidgin ."
+"To stop recording, click Stop Recording or press Esc ."
msgstr ""
-"à la première utilisation d'Empathy , il vous est proposé "
-"d'importer vos comptes à partir d'autres applications de messagerie "
-"instantanée. Actuellement la seule application prise en charge est "
-"Pidgin ."
+"Pour arrêter l'enregistrement, cliquez sur Arrêter l'enregistrement"
+"gui> ou appuyez sur Ãchap ."
-#: C/import-account.page:50(p)
-msgid ""
-"Run Empathy for the first time. An assistant will offer you a "
-"number of options to create new accounts."
+#: C/video-record.page:43(page/p)
+msgid "Videos are saved in the Ogg Theora (.ogv ) format."
msgstr ""
-"Lancer Empathy pour la première fois. Un assistant vous propose "
-"un choix d'options pour créer de nouveaux comptes."
+"Les vidéos sont enregistrées dans le format Ogg Theora (.ogv )."
-#: C/import-account.page:54(p)
+#: C/video-record.page:45(page/p)
msgid ""
-"Select Yes, import my account details from and click "
-"Forward ."
+"After you have stopped recording, the video will automatically appear in the "
+"photo stream at the bottom of the Cheese window. From there, you "
+"can play back the video, upload it to a "
+"social network, post it on your blog or YouTube channel, or share it with "
+"friends by email."
msgstr ""
-"Choisissez Oui, importer les détails de mon compte à partir de et "
-"cliquez sur Suivant ."
-
-#: C/import-account.page:58(p)
-msgid "Select the check box next to each account you wish to import."
-msgstr "Cochez la case en face de chaque compte que vous souhaitez importer."
+"Après avoir arrêté l'enregistrement, la vidéo apparaît automatiquement dans "
+"le flux d'images en bas de la fenêtre de Cheese . à partir de "
+"celui-ci, vous pouvez lire la vidéo, "
+"l'envoyer vers un réseau social, la poster sur votre blog ou sur une chaîne "
+"YouTube ou la partager avec des amis par courriel."
-#: C/import-account.page:66(p)
+#: C/video-record.page:51(page/p)
msgid ""
-"It is not currently possible to import accounts after you have completed the "
-"first-run assistant."
-msgstr ""
-"Il n'est actuellement pas possible d'importer des comptes après avoir "
-"terminé l'assistant de premier lancement."
-
-#: C/hide-contacts.page:8(desc)
-msgid "Hide the offline contacts from your Contact List ."
-msgstr ""
-"Masquer les contacts hors ligne de votre Liste des contacts ."
-
-#: C/hide-contacts.page:19(title)
-msgid "Hide offline contacts"
-msgstr "Masquage des contacts hors ligne"
-
-#: C/hide-contacts.page:21(p)
-msgid ""
-"Normally, Empathy shows all your contacts: those that are online, "
-"with which you can have a conversation, and also those that are offline."
-msgstr ""
-"Normalement, Empathy affiche tous vos contacts : ceux qui sont en "
-"ligne, avec lesquels vous pouvez avoir une conversation mais aussi ceux qui "
-"sont hors ligne."
-
-#: C/hide-contacts.page:25(p)
-msgid "To hide the contacts that are offline:"
-msgstr "Pour masquer les contacts qui sont hors ligne :"
-
-#: C/hide-contacts.page:31(p)
-msgid ""
-"From the Contact List window, choose View"
-"gui>Offline Contacts , or press Ctrl"
-"key>H ."
-msgstr ""
-"à partir de la fenêtre Liste des contacts , sélectionnez "
-"Affichage Contacts déconnectés , ou "
-"appuyez sur Ctrl H ."
-
-#: C/hide-contacts.page:36(p)
-msgid "To show the offline contacts again, repeat the same procedure above."
-msgstr ""
-"Pour afficher à nouveau les contacts hors ligne, répétez la procédure "
-"précédente."
-
-#: C/group-conversations.page:8(desc)
-msgid "Start or join a group conversation with your contacts."
-msgstr "Commencer ou rejoindre une conversation de groupe avec vos contacts."
-
-#: C/group-conversations.page:34(title)
-msgid "Group conversations"
-msgstr "Conversations de groupe"
-
-#: C/group-conversations.page:36(p)
-msgid ""
-"Group conversations permits you to have text conversations with more than "
-"one contact at the same time."
-msgstr ""
-"Les conversations de groupe vous permettent d'avoir des conversations "
-"textuelles avec plus d'un contact à la fois."
-
-#: C/group-conversations.page:40(p)
-msgid ""
-"To have a group conversation you need to have a registered account with "
-"either Jabber or Google Talk, or a People Nearby account."
-msgstr ""
-"Pour avoir une conversation de groupe, vous devez posséder un compte Jabber "
-"ou Google Talk ou un compte Personnes à proximité."
-
-#: C/group-conversations.page:46(p)
-msgid ""
-"You can have a group conversation only with the contacts that are using the "
-"same service as yours."
-msgstr ""
-"Vous ne pouvez avoir de conversation de groupe qu'avec des contacts qui "
-"utilisent le même service que vous."
-
-#: C/group-conversations.page:54(title)
-msgid "Start a group conversation"
-msgstr "Démarrage d'une conversation de groupe"
-
-#: C/group-conversations.page:63(p)
-msgid ""
-"From the Account drop-down list, select the account you want to "
-"use for the group conversation."
-msgstr ""
-"Dans la liste déroulante Compte , sélectionnez le compte que vous "
-"voulez utiliser pour la conversation de groupe."
-
-#: C/group-conversations.page:69(p)
-msgid ""
-"In the Server text box, type the name of server in which the "
-"conversation will be hosted."
-msgstr ""
-"Dans la zone de texte Serveur , saisissez le nom du serveur qui "
-"hébergera la conversation."
-
-#: C/group-conversations.page:73(p)
-msgid "Leave it empty if it will be on the current server."
-msgstr "Laissez-la vide, s'il s'agit du serveur actuel."
-
-#: C/group-conversations.page:78(p)
-msgid ""
-"In the Room text box, type the name you want to give to the "
-"conversation."
-msgstr ""
-"Dans la zone de texte Salon , saisissez le nom que vous souhaitez "
-"donner à la conversation."
-
-#: C/group-conversations.page:82(p)
-msgid ""
-"This will be the name of the room you are going to have a conversation. This "
-"name will be publicly available for other people to join. It is not possible "
-"to create a private room."
-msgstr ""
-"C'est le nom du salon dans lequel vous allez avoir une conversation. Ce nom "
-"sera rendu public pour que d'autres personnes le rejoignent. Il n'est pas "
-"possible de créer un salon privé."
-
-#: C/group-conversations.page:90(p)
-msgid ""
-"To invite other contacts to join the group conversation, from the "
-"Contact List window, select the contact you want to invite, and "
-"perform one of the following:"
-msgstr ""
-"Pour inviter d'autres contacts à rejoindre la conversation de groupe, "
-"sélectionnez dans la fenêtre Liste des contacts le contact que "
-"vous souhaitez inviter et effectuez une des actions suivantes :"
-
-#: C/group-conversations.page:97(p)
-msgid "Right-click on the contact and choose Invite to chatroom ."
-msgstr ""
-"Cliquez droit sur le contact et choisissez Inviter à un salon de "
-"discussion ."
-
-#: C/group-conversations.page:102(p)
-msgid ""
-"Choose Edit Contact Invite to chatroom"
-"gui> ."
-msgstr ""
-"Choisissez Ãdition Contact Inviter à un "
-"salon de discussion ."
-
-#: C/group-conversations.page:107(p)
-msgid ""
-"If you have more than one group conversation open, select the one you want "
-"to invite your contacts."
-msgstr ""
-"Si plusieurs conversations de groupe sont ouvertes, choisissez celle à "
-"laquelle vous invitez vos contacts."
-
-#: C/group-conversations.page:118(title)
-msgid "Join a group conversation"
-msgstr "Connexion à une conversation de groupe"
-
-#: C/group-conversations.page:128(p)
-msgid "Expand the Room List section to see all the existing rooms."
-msgstr ""
-"Agrandir la section liste des salons pour afficher tous les "
-"salons existants."
-
-#: C/group-conversations.page:133(p)
-msgid "Double-click on the name of a room to join it."
-msgstr "Double-cliquez sur le nom d'un salon pour le rejoindre."
-
-#: C/group-conversations.page:139(p)
-msgid ""
-"It is not possible to join all existing rooms. Some of the rooms might "
-"require a password, or might be invitation only. Empathy does not "
-"support these kind of rooms."
-msgstr ""
-"Il n'est pas possible de rejoindre tous les salons existants. Il se peut que "
-"certains salons demandent un mot de passe ou ne soient accessibles que sur "
-"invitation. Empathy ne prend pas en charge ces types de salons."
-
-#: C/geolocation-what-is.page:9(desc)
-msgid "Understanding geolocation."
-msgstr "Comprendre la géolocalisation."
-
-#: C/geolocation-what-is.page:33(title)
-msgid "What is geolocation"
-msgstr "à propos de la géolocalisation"
-
-#: C/geolocation-what-is.page:35(p)
-msgid ""
-"Geolocation allows you to identify the real geographical location of a "
-"computer or a device connected to the Internet."
-msgstr ""
-"La géolocalisation vous permet d'identifier la vraie position géographique "
-"d'un ordinateur ou d'un appareil connecté à internet."
-
-#: C/geolocation-what-is.page:37(p)
-msgid "With geolocation in Empathy you can:"
-msgstr "Avec la géolocalisation dans Empathy vous pouvez :"
-
-#: C/geolocation-what-is.page:42(p)
-msgid "Publish your geographical location to your contacts."
-msgstr "Publier votre position géographique pour vos contacts."
-
-#: C/geolocation-what-is.page:47(p)
-msgid "See your contactsâ geographical location and quickly contact them."
-msgstr ""
-"Voir la position géographique de vos contacts et les contacter rapidement."
-
-#: C/geolocation-what-is.page:52(p)
-msgid ""
-"Set the accuracy of your location and the device used to discover your "
-"location."
-msgstr ""
-"Paramétrer la précision de votre localisation et le périphérique à utiliser "
-"pour retrouver votre position."
-
-#: C/geolocation-what-is.page:60(p)
-msgid ""
-"In order to see your contactsâ geographical locations, they need to use a "
-"service and an application that supports geolocation."
-msgstr ""
-"Afin de pouvoir voir la position géographique de vos contacts, ils doivent "
-"utiliser un service et une application qui prend en charge la "
-"géolocalisation."
-
-#: C/geolocation-turn.page:9(desc)
-msgid "How to activate and deactivate geolocation in Empathy ."
-msgstr ""
-"Comment activer ou désactiver la géolocalisation dans Empathy ."
-
-#: C/geolocation-turn.page:33(title)
-msgid "Activate/Deactivate geolocation"
-msgstr "Activation/désactivation de la géolocalisation"
-
-#: C/geolocation-turn.page:37(p)
-msgid "Choose Edit Preferences ."
-msgstr "Choisissez Ãdition Préférences ."
-
-#: C/geolocation-turn.page:42(p)
-msgid "Select the Location tab."
-msgstr "Sélectionnez l'onglet Position ."
-
-#: C/geolocation-turn.page:47(p)
-msgid ""
-"Select Publish location to my contacts to activate geolocation."
-msgstr ""
-"Sélectionnez Publier ma position pour mes contacts pour activer "
-"la géolocalisation."
-
-#: C/geolocation-turn.page:50(p)
-msgid "To deactivate geolocation, deselect it."
-msgstr "Pour désactiver la géolocalisation, désélectionnez-le."
-
-#: C/geolocation-turn.page:55(p)
-msgid ""
-"To increase the accuracy of your position, deselect Reduce location "
-"accuracy ."
-msgstr ""
-"Pour augmenter la précision de votre position, décocher Réduire la "
-"précision de la position ."
-
-#: C/geolocation-turn.page:61(p)
-msgid ""
-"If you have an external device like a GPS or want to send a more accurate "
-"position, select the appropriate option in the Location sources "
-"section."
-msgstr ""
-"Si vous disposez d'un périphérique externe comme un GPS ou que vous vouliez "
-"envoyer une position plus précise, choisissez l'option appropriée dans la "
-"section Sources de positionnement ."
-
-#: C/geolocation-supported.page:7(desc)
-msgid "Services that supports geolocation and compatibility."
-msgstr "Services prenant en charge la géolocalisation et compatibilité."
-
-#: C/geolocation-supported.page:31(title)
-msgid "Supported services"
-msgstr "Services pris en charge"
-
-#: C/geolocation-supported.page:33(p)
-msgid ""
-"The geolocation feature at the moment is compatible only with the Jabber "
-"service. In order to use it, you and your contacts need to have a Jabber "
-"account."
-msgstr ""
-"La fonction de géolocalisation n'est pour le moment compatible qu'avec le "
-"service Jabber. Afin de l'utiliser, vous et votre contact doivent avoir un "
-"compte Jabber."
-
-#: C/geolocation-supported.page:39(p)
-msgid ""
-"It is necessary that also the server you are using supports the geolocation "
-"feature. Most of the Jabber servers support it. See your service website "
-"documentation for more information."
-msgstr ""
-"Il est aussi nécessaire que le serveur que vous utilisez actuellement prenne "
-"en charge la fonction de géolocalisation. La plupart des serveurs Jabber le "
-"font. Consultez la documentation sur le site Web concernant les services "
-"pour plus d'informations."
-
-#: C/geolocation-supported.page:47(title)
-msgid "Compatibility"
-msgstr "Compatibilité"
-
-#: C/geolocation-supported.page:49(p)
-msgid ""
-"Empathy geolocation feature is not compatible with other "
-"geographical position services such as Google Latitude , Yahoo "
-"Fire Eagle or Brightkite ."
-msgstr ""
-"La fonction de géolocalisation Empathy n'est pas compatible avec "
-"d'autres services de positionnement géographique tels que Google "
-"Latitude , Yahoo Fire Eagle ou Brightkite ."
-
-#: C/geolocation-privacy.page:8(desc)
-msgid "What information are sent and to who."
-msgstr "Quelles informations sont envoyées et à qui."
-
-#: C/geolocation-privacy.page:32(title)
-msgid "Geolocation Privacy"
-msgstr "Confidentialité de la géolocalisation"
-
-#: C/geolocation-privacy.page:35(title)
-msgid "What information is sent"
-msgstr "Informations envoyées"
-
-#: C/geolocation-privacy.page:36(p)
-msgid ""
-"What is possible to send is: your country, region, locality, area, street, "
-"building, floor, room, and postal code, longitude, latitude and altitude, "
-"speed and bearing."
-msgstr ""
-"Il est possible d'envoyer votre pays, département, ville, quartier, rue, "
-"bâtiment, étage, numéro d'appartement et code postal, votre longitude, "
-"latitude et altitude, votre vitesse et allure."
-
-#: C/geolocation-privacy.page:40(p)
-msgid ""
-"The accuracy and the quantity of information about your geographical "
-"position are based on the software or on the infrastructure used to discover "
-"your position."
-msgstr ""
-"La précision et la quantité d'information sur votre position géographique "
-"sont basées sur le logiciel ou l'infrastructure utilisé pour découvrir votre "
-"position."
-
-#: C/geolocation-privacy.page:44(p)
-msgid ""
-"Different kind of networks may have different accuracy settings, and may "
-"send different information. The use of external devices such as GPS or "
-"mobile phone will increase the accuracy of the information sent."
-msgstr ""
-"Il se peut que différents types de réseaux possèdent des réglages de "
-"précision différents et envoient des informations différentes. L'utilisation "
-"de périphériques externes type GPS ou téléphone mobile augmente la précision "
-"et la quantité des informations envoyées."
-
-#: C/geolocation-privacy.page:49(p)
-msgid ""
-"When the privacy mode is enabled, nothing more precise than your city will "
-"be sent, even if you are using an external device."
-msgstr ""
-"Lorsque le mode confidentiel est activé, seule votre ville sera envoyée même "
-"si vous utilisez un périphérique externe."
-
-#: C/geolocation-privacy.page:56(title)
-msgid "Who can see the information sent"
-msgstr "Qui peut voir les informations envoyées"
-
-#: C/geolocation-privacy.page:57(p)
-msgid "Only your contacts can see your geographical position."
-msgstr "Seul vos contacts peuvent voir votre position géographique."
-
-#: C/geolocation-privacy.page:63(title)
-msgid "What is the privacy mode"
-msgstr "Qu'est-ce que le mode confidentiel"
-
-#: C/geolocation-privacy.page:64(p)
-msgid ""
-"The privacy mode, enabled by default, is a reduced accuracy mode that will "
-"decrease the accuracy of the geographical position sent to your contacts."
-msgstr ""
-"Le mode confidentiel, activé par défaut, est un mode de précision réduite "
-"qui va réduire la précision de la position géographique envoyée à vos "
-"contacts."
-
-#: C/geolocation-privacy.page:71(title)
-msgid "Privacy overview"
-msgstr "Résumé sur la confidentialité"
-
-#: C/geolocation-privacy.page:72(p)
-msgid ""
-"Overview of the various geolocation privacy settings in Empathy ."
-msgstr ""
-"Résumé sur les différents réglages de confidentialité de la géolocalisation "
-"dans Empathy ."
-
-#: C/geolocation-privacy.page:77(p)
-msgid "Geolocation is not enabled by default."
-msgstr "La géolocalisation n'est pas activée par défaut."
-
-#: C/geolocation-privacy.page:82(p)
-msgid "Privacy mode is enabled by default."
-msgstr "Le mode confidentiel est activé par défaut."
-
-#: C/geolocation-privacy.page:87(p)
-msgid ""
-"Privacy mode prevails even when using external and more precise devices."
-msgstr ""
-"Le mode confidentiel prévaut même en cas d'utilisation de périphériques "
-"externes plus précis."
-
-#: C/geolocation-privacy.page:92(p)
-msgid "Only your contacts can see your position."
-msgstr "Seul vos contacts peuvent voir votre position."
-
-#: C/geolocation-not-showing.page:8(desc)
-msgid "Empathy does not publish my geographical position."
-msgstr "Empathy ne publie pas ma position géographique."
-
-#: C/geolocation-not-showing.page:32(title)
-msgid "Geographical position not published"
-msgstr "Position géographique non publiée"
-
-#: C/geolocation-not-showing.page:34(p)
-msgid ""
-"If your contacts cannot see your location, Empathy might not be "
-"able to discover with a good margin of precision your geographical position."
-msgstr ""
-"Si vos contacts ne peuvent voir votre position, il est possible que "
-"Empathy ne puisse pas trouver avec une bonne marge de précision "
-"votre position géographique."
-
-#: C/geolocation-not-showing.page:38(p)
-msgid ""
-"In this case, your position will not be published, but you are still able to "
-"see the location of your contacts."
-msgstr ""
-"Dans ce cas, votre position ne sera pas publiée, mais vous êtes toujours "
-"capable de voir la position de vos contacts."
-
-#: C/geolocation-not-showing.page:42(p)
-msgid ""
-"If you want to publish your geographical position, you can try to use an "
-"external device such as a GPS."
-msgstr ""
-"Si vous voulez publier votre position géographique, vous pouvez essayer "
-"d'utiliser un périphérique externe tel qu'un GPS."
-
-#: C/geolocation-not-showing.page:48(p)
-msgid ""
-"In order to publish your geographical location, your Jabber server needs to "
-"support the Personal Eventing Protocal (PEP). A list of servers which support "
-"PEP is maintained online. Google Talk does not support this feature "
-"at this time."
-msgstr ""
-"Afin de pouvoir publier votre position géographique, votre service Jabber "
-"doit prendre en charge le protocole Personal Eventing Protocal (PEP). Une "
-"liste de serveurs prenant en charge le PEP est conservée en ligne. Google "
-"Talk ne prend pas actuellement en charge cette fonctionnalité."
-
-#: C/geolocation.page:8(desc)
-msgid "Use and understand geolocation in Empathy ."
-msgstr ""
-"Utilisation et compréhension de la géolocalisation dans Empathy ."
-
-#: C/geolocation.page:32(title)
-msgid "Geographical position"
-msgstr "Position géographique"
-
-#: C/geolocation.page:35(title)
-msgid "Geolocation"
-msgstr "Géolocalisation "
-
-#: C/geolocation.page:39(title)
-msgid "Fix common problems"
-msgstr "Résolution des problèmes courants"
-
-#: C/favorite-rooms.page:10(desc)
-msgid "Set, join and manage favorite rooms."
-msgstr "Paramétrer, rejoindre et gérer vos salons favoris."
-
-#: C/favorite-rooms.page:29(title)
-msgid "Favorite rooms"
-msgstr "Salons favoris."
-
-#: C/favorite-rooms.page:32(title)
-msgid "Set a room as a favorite"
-msgstr "Paramétrage de salons favoris"
-
-#: C/favorite-rooms.page:35(p)
-msgid "Join a room."
-msgstr "Rejoignez un salon."
-
-#: C/favorite-rooms.page:40(p)
-msgid ""
-"See for more information on how to join an "
-"IRC room."
-msgstr ""
-"Consultez pour plus d'informations sur la "
-"manière de rejoindre un salon IRC."
-
-#: C/favorite-rooms.page:46(p)
-msgid ""
-"See for more information on how to "
-"start or join a group conversation."
-msgstr ""
-"Consultez pour plus d'informations sur "
-"la manière de démarrer ou rejoindre une conversation de groupe."
-
-#: C/favorite-rooms.page:54(p)
-msgid ""
-"From the conversation window, choose Conversation"
-"gui>Favorite Chat Room ."
-msgstr ""
-"Dans la fenêtre conversation, choisissez Conversation"
-"gui>Salons de discussion favoris ."
-
-#: C/favorite-rooms.page:63(title)
-msgid "Join favorite rooms"
-msgstr "Accès aux salons favoris"
-
-#: C/favorite-rooms.page:71(p)
-msgid "Press F5 ."
-msgstr "Appuyez sur F5 ."
-
-#: C/favorite-rooms.page:76(p)
-msgid ""
-"Choose Room Join Favorites , to join "
-"all your favorite rooms."
-msgstr ""
-"Choisissez Salon Joindre les favoris , "
-"pour joindre tous vos salons favoris."
-
-#: C/favorite-rooms.page:82(p)
-msgid "Choose Room , and select the favorite room you want to join."
-msgstr ""
-"Choisissez Salon et sélectionnez le salon favori que vous voulez "
-"joindre."
-
-#: C/favorite-rooms.page:90(p)
-msgid ""
-"To join a favorite room, you need to be connected to the Internet and to "
-"your account."
-msgstr ""
-"Pour joindre un salon favori, vous devez être connecté à internet et à votre "
-"compte."
-
-#: C/favorite-rooms.page:98(title)
-msgid "Manage favorite rooms"
-msgstr "Gestion de vos salons favoris"
-
-#: C/favorite-rooms.page:101(p)
-msgid ""
-"From the Contact List window, choose Room"
-"gui>Manage Favorites ."
-msgstr ""
-"à partir de la fenêtre Liste des contacts , choisissez "
-"Salon Gérer les salons favoris ."
-
-#: C/favorite-rooms.page:107(p)
-msgid ""
-"From the Account drop-down list, select the account you want to "
-"manage the favorite rooms of."
-msgstr ""
-"Dans la liste déroulante Compte , sélectionnez le compte pour "
-"lequel vous voulez gérer les salons favoris."
-
-#: C/favorite-rooms.page:111(p)
-msgid "Select All to see all you favorite rooms."
-msgstr "Sélectionnez Tous pour afficher tous vos salons favoris."
-
-#: C/favorite-rooms.page:116(p)
-msgid "Select the favorite room you want to manage:"
-msgstr "Sélectionnez le salon favori que vous voulez gérer :"
-
-#: C/favorite-rooms.page:121(p)
-msgid ""
-"Select the Auto-Connect check-box in order to automatically join "
-"that room when you connect to your account."
-msgstr ""
-"Cochez la case Connexion automatique afin de joindre "
-"automatiquement ce salon lorsque vous vous connectez à votre compte."
-
-#: C/favorite-rooms.page:127(p)
-msgid "Click on Remove to remove the room from your favorites."
-msgstr ""
-"Cliquez sur Supprimer pour supprimer le salon de vos favoris."
-
-#: C/favorite-rooms.page:134(p)
-msgid "When done, click Close ."
-msgstr "Lorsque vous avez terminé, cliquez sur Fermer ."
-
-#: C/disable-account.page:9(desc)
-msgid "Prevent Empathy from automatically logging in to an account."
-msgstr ""
-"Empêcher Empathy de se connecter automatiquement sur un compte."
-
-#: C/disable-account.page:39(title)
-msgid "Disable an account"
-msgstr "Désactivation d'un compte"
-
-#: C/disable-account.page:41(p)
-msgid ""
-"You can disable an account to prevent Empathy from logging in to "
-"it without removing the account entirely. You may wish to disable and re-"
-"enable an account if you only want to be logged in to the account at certain "
-"times, but you still want to use Empathy for other accounts."
-msgstr ""
-"Vous pouvez désactiver un compte pour empêcher Empathy de se "
-"connecter sur celui-ci sans supprimer le compte complètement. Il se peut que "
-"vous vouliez désactiver et activer un compte si vous ne voulez être connecté "
-"sur ce compte qu'Ã certain instant, mais tout en utilisant Empathy"
-"app> pour d'autres comptes."
-
-#: C/disable-account.page:52(p)
-msgid ""
-"Select the account you wish to disable from the accounts list on the left "
-"side of the window."
-msgstr ""
-"Sélectionnez le compte que vous souhaitez désactiver dans la liste des "
-"comptes dans la partie gauche de la fenêtre."
-
-#: C/disable-account.page:56(p)
-msgid ""
-"Deselect Enabled on the right side of the "
-"window."
-msgstr ""
-"Décochez Activé sur le côté droit de la "
-"fenêtre."
-
-#: C/disable-account.page:62(p)
-msgid ""
-"To re-enable the account, simply select Enabled"
-"gui>."
-msgstr ""
-"Pour réactiver le compte, cochez tout simplement Activé ."
-
-#: C/create-account.page:9(desc)
-msgid "Register for an account with one of the supported messaging services."
-msgstr ""
-"S'inscrire à un compte avec l'un des services de messagerie pris en charge."
-
-#: C/create-account.page:34(title)
-msgid "Register for a new account"
-msgstr "Inscription à un nouveau compte"
-
-#: C/create-account.page:36(p)
-msgid ""
-"Most account types require you to create an account with a account provider "
-"before you can connect using instant messaging applications like "
-"Empathy . With some account providers, you can use Empathy"
-"app> to register for a new account, using the same steps as you would to "
-" add an account."
-msgstr ""
-"Pour la plupart des comptes, il est nécessaire de créer un compte avec un "
-"fournisseur de compte avant de pouvoir se connecter en utilisant des "
-"applications de messagerie instantanée comme Empathy . Avec "
-"certains fournisseurs de compte, vous pouvez utiliser Empathy "
-"pour enregistrer un nouveau compte en utilisant les mêmes étapes que celles "
-"pour Ajouter un compte."
-
-#: C/create-account.page:42(p)
-msgid ""
-"This page provides information on creating a new account for various types "
-"of accounts. Your account provider should give you a login ID and a "
-"password, as well as any additional information you need to connect using "
-"Empathy ."
-msgstr ""
-"Cette page fournit des informations sur la façon de créer un nouveau compte "
-"pour divers types de comptes. Votre fournisseur de compte devrait vous "
-"fournir un identifiant de connexion et un mot de passe ainsi que d'autres "
-"informations qui peuvent être nécessaires pour se connecter en utilisant "
-"Empathy ."
-
-#: C/create-account.page:47(title)
-msgid "Facebook"
-msgstr "Facebook"
-
-#: C/create-account.page:48(p)
-msgid ""
-"Facebook is one of the most-used social networks. It allows users to create "
-"their own profile and to communicate with their friends."
-msgstr ""
-"Facebook est l'un des réseaux sociaux le plus utilisé. Il permet aux "
-"utilisateurs de créer leur propre profil et de communiquer avec leurs amis."
-
-#: C/create-account.page:52(p)
-msgid ""
-"To use Facebook to communicate with your friends, you will need to create a "
-"new account from the website: www."
-"facebook.com."
-msgstr ""
-"Pour utiliser Facebook pour communiquer avec vos amis, vous devez créer un "
-"nouveau compte sur le site Web : www."
-"facebook.com."
-
-#: C/create-account.page:60(title) C/audio-video.page:170(p)
-msgid "Jabber"
-msgstr "Jabber"
-
-#: C/create-account.page:62(p)
-msgid ""
-"Jabber is an open instant messaging system. Like email, Jabber allows you to "
-"choose your account provider and communicate with all other Jabber users, "
-"regardless of their account provider."
-msgstr ""
-"Jabber est un système de messagerie instantanée ouvert. Tout comme les "
-"courriels, Jabber vous permet de choisir votre fournisseur de compte et de "
-"communiquer avec tous les autres utilisateurs de Jabber, indépendamment de "
-"leur fournisseur de compte."
-
-#: C/create-account.page:66(p)
-msgid ""
-"You will need to create a new account with a Jabber provider. There are many "
-"free providers; one popular provider is Jabber.org."
-msgstr ""
-"Vous devez créer un nouveau compte avec un fournisseur Jabber. Il y a de "
-"nombreux fournisseurs gratuits ; un fournisseur célèbre est Jabber.org."
-
-#: C/create-account.page:71(p)
-msgid ""
-"If you use Google Mail or Google Talk, you already have a Jabber account. "
-"Google Talk is a Jabber service. Simply use your Google Mail address and "
-"password in Empathy to connect."
-msgstr ""
-"Si vous utilisez Google Mail ou Google Talk, vous avez déjà un compte "
-"Jabber. Google Talk est un service Jabber. Utilisez tout simplement votre "
-"adresse électronique Google Mail et votre mot de passe dans Empathy"
-"app> pour vous connecter."
-
-#: C/create-account.page:78(title) C/audio-video.page:190(p)
-msgid "People Nearby"
-msgstr "Personnes à proximité"
-
-#: C/create-account.page:80(p)
-msgid ""
-"You do not need to create an account with a service provider to use this "
-"feature. This service works whenever you are connected to a local network, "
-"such as a wireless hotspot. It automatically finds all other users on the "
-"network who are also using this service."
-msgstr ""
-"Vous n'avez pas à créer de compte avec un fournisseur de service pour "
-"utiliser cette fonctionnalité. Ce service fonctionne dès l'instant où vous "
-"êtes connecté à réseau local tel qu'une zone de connexion WiFi. Il recherche "
-"automatiquement tous les autres utilisateurs sur le réseau qui utilisent "
-"également ce service."
-
-#: C/create-account.page:85(p)
-msgid "For more information, see ."
-msgstr "Pour plus d'informations, consultez ."
-
-#: C/create-account.page:89(title) C/audio-video.page:205(p)
-msgid "SIP"
-msgstr "SIP"
-
-#: C/create-account.page:91(p)
-msgid ""
-"SIP is an open system which allows users to have audio and video "
-"conversations over the Internet. You need to create an account with a SIP "
-"provider. You can communicate with all other SIP users, regardless of which "
-"SIP provider they use."
-msgstr ""
-"SIP est un système libre qui permet aux utilisateurs d'avoir des "
-"conversations audio et vidéo sur internet. Vous devez créer un compte avec "
-"un fournisseur SIP. Vous pouvez communiquer avec tous les autres "
-"utilisateurs, quel que soit le fournisseur SIP qu'ils utilisent."
-
-#: C/create-account.page:97(p)
-msgid ""
-"Due to technical differences, the free Ekiga.net service does not currently work "
-"with Empathy ."
-msgstr ""
-"En raison de différences techniques, le service gratuit Ekiga.net ne fonctionne "
-"actuellement pas avec Empathy ."
-
-#: C/create-account.page:102(p)
-msgid ""
-"Some SIP providers allow you to call normal phones from your computer. "
-"Generally, you will need to subscribe to a paid service for this feature."
-msgstr ""
-"Certains fournisseurs SIP vous autorisent à passer des appels téléphoniques "
-"normaux à partir de votre ordinateur. En général, vous devez souscrire à un "
-"service payant pour cette fonctionnalité."
-
-#: C/create-account.page:107(title) C/audio-video.page:165(p)
-msgid "IRC"
-msgstr "IRC"
-
-#: C/create-account.page:109(p)
-msgid ""
-"You do not need to register for an account to use IRC. Although you specify "
-"a nickname when you add an IRC account to Empathy , this nickname "
-"is only established each time you connect. If another user is using the "
-"nickname, you will need to choose a new nickname."
-msgstr ""
-"Il n'est pas nécessaire de s'inscrire à un compte pour utiliser IRC. Bien "
-"que vous deviez indiquer un pseudonyme lorsque vous ajoutez un compte IRC "
-"dans Empathy , ce pseudo n'est en vigueur que lorsque vous vous "
-"connectez. Si un autre utilisateur est en train d'utiliser le pseudo, vous "
-"devez en choisir un nouveau."
-
-#: C/create-account.page:114(p)
-msgid ""
-"Some IRC networks use a service called NickServ to allow users to protect "
-"their nicknames. See for more information."
-msgstr ""
-"Certains réseaux IRC utilisent un service appelé NickServ pour permettre aux "
-"utilisateurs de protéger leur pseudonyme. Consultez pour plus d'informations."
-
-#: C/create-account.page:117(p)
-msgid ""
-"Some IRC servers are password protected. You will need to know the password "
-"to connect to these servers. Generally, these are private IRC networks."
-msgstr ""
-"Certains serveurs IRC sont protégés par mot de passe. Vous devez connaître "
-"le mot de passe pour vous connecter à ces serveurs. En général, ce sont des "
-"réseaux IRC privés."
-
-#: C/create-account.page:122(title)
-msgid "Proprietary Services"
-msgstr "Services propriétaires"
-
-#: C/create-account.page:124(p)
-msgid ""
-"There are many proprietary instant messaging services that have been "
-"developed by different companies or organizations. Empathy allows "
-"you to connect to an existing account for most popular services. To create a "
-"new account with one of these services, you will need to visit the serviceâs "
-"web site and agree to its terms of use."
-msgstr ""
-"Il y a de nombreux services de messagerie instantanée propriétaires qui ont "
-"été développés par différentes compagnies ou organisations. Empathy"
-"app> vous permet de vous connecter à un compte existant pour la plupart des "
-"services populaires. Pour créer un nouveau compte avec l'un de ces services, "
-"vous devez visiter le site Web du service et accepter les conditions "
-"d'utilisation."
-
-#: C/create-account.page:133(link) C/audio-video.page:135(p)
-msgid "AIM"
-msgstr "AIM"
-
-#: C/create-account.page:138(link) C/audio-video.page:160(p)
-msgid "ICQ"
-msgstr "ICQ"
-
-#: C/create-account.page:143(link) C/audio-video.page:175(p)
-msgid "MSN"
-msgstr "MSN"
-
-#: C/create-account.page:148(link) C/audio-video.page:210(p)
-msgid "Yahoo!"
-msgstr "Yahoo!"
-
-#: C/change-status.page:9(desc)
-msgid "Change your status to advertise your availability to your contacts."
-msgstr "Modifier son statut pour prévenir vos contacts de votre disponibilité."
-
-#: C/change-status.page:34(title)
-msgid "Change your status"
-msgstr "Modification de votre statut"
-
-#: C/change-status.page:36(p)
-msgid ""
-"You can set your status to indicate your availability to your contacts. "
-"Empathy allows you to select from a list of defined statuses."
-msgstr ""
-"Vous pouvez modifier votre statut pour indiquer à vos contacts votre "
-"disponibilité. Empathy vous permet de choisir dans une liste de "
-"statuts définis."
-
-#: C/change-status.page:41(p)
-msgid ""
-"Click on the drop-down list at the top of the Contact List window."
-msgstr ""
-"Cliquez sur la liste déroulante au sommet de la fenêtre Liste des "
-"contacts ."
-
-#: C/change-status.page:46(p)
-msgid "Select a status from the list."
-msgstr "Choisissez un statut dans la liste."
-
-# Bruno : Ce lien ne fonctionne pas dans la doc anglaise !
-#: C/change-status.page:52(p)
-msgid ""
-"See for a list of the built-in statuses and "
-"what they mean. You can also add custom "
-"status messages to provide more information about your availability "
-"to your contacts."
-msgstr ""
-"Consultez pour obtenir la liste des statuts "
-"prédéfinis et leur signification. Vous pouvez également ajouter des messages de statut personnalisé pour "
-"donner plus d'informations à vos contacts sur votre disponibilité."
-
-#: C/change-status.page:58(p)
-msgid ""
-"If you do not use your computer for a while, or if the screensaver is on, "
-"the status will be automatically set to Away."
-msgstr ""
-"Si vous n'utilisez pas votre ordinateur pendant un certain temps ou si "
-"l'économiseur d'écran est en marche, le statut sera automatiquement "
-"paramétré à Absent."
-
-#. When image changes, this message will be marked fuzzy or untranslated for you.
-#. It doesn't matter what you translate it to: it's not used at all.
-#: C/audio-video.page:58(None)
-msgid ""
-"@@image: 'figures/audio-input-microphone.png'; "
-"md5=8d89026b66a263a3bc5b1f0665948567"
-msgstr ""
-"@@image: 'figures/audio-input-microphone.png'; "
-"md5=8d89026b66a263a3bc5b1f0665948567"
-
-#: C/audio-video.page:8(desc)
-msgid ""
-"Information on when it is possible to have an audio or video conversation."
-msgstr ""
-"Informations sur les possibilités d'avoir une conversation audio ou vidéo."
-
-#: C/audio-video.page:32(title)
-msgid "Audio and video support"
-msgstr "Prise en charge de l'audio et de la vidéo"
-
-#: C/audio-video.page:34(p)
-msgid ""
-"You can only have audio and video conversation with contacts who are using "
-"an application which also supports this feature. When your contacts support "
-"audio or video conversations, you will see the following icons next to their "
-"names in the contact list:"
-msgstr ""
-"Vous ne pouvez avoir des conversations audio et vidéo avec des contacts qui "
-"utilisent une application qui prend également en charge cette fonction. "
-"Lorsque vos contacts prennent en charge les conversations audio ou vidéo, "
-"les icônes suivantes apparaissent à côté de leur nom dans la liste des "
-"contacts :"
-
-#: C/audio-video.page:43(p)
-msgid "Icon"
-msgstr "Icône"
-
-#: C/audio-video.page:48(p)
-msgid "Description"
-msgstr "Description"
-
-#: C/audio-video.page:58(media)
-msgid "Icon for audio conversation"
-msgstr "Icône pour une conversation audio"
-
-#: C/audio-video.page:64(p)
-msgid "The contact is able to have an audio conversation."
-msgstr "Le contact est capable d'avoir une conversation audio."
-
-#: C/audio-video.page:70(media)
-msgid "Icon for video conversation"
-msgstr "Icône pour une conversation vidéo"
-
-#: C/audio-video.page:76(p)
-msgid "The contact is able to have a video conversation."
-msgstr "Le contact est capable d'avoir une conversation vidéo."
-
-#: C/audio-video.page:83(p)
-msgid ""
-"In order to have an audio conversation, you need to have a sound card that "
-"is supported by your operating system, and a working microphone."
-msgstr ""
-"Afin d'avoir une conversation audio, vous devez posséder une carte son prise "
-"en charge par votre système d'exploitation et un microphone qui fonctionne."
-
-#: C/audio-video.page:87(p)
-msgid ""
-"In order to have a video conversation, you need to have a webcam that is "
-"supported by your operating system, and a working microphone."
-msgstr ""
-"Afin d'avoir une conversation vidéo, vous devez posséder une webcam prise en "
-"charge par votre système d'exploitation et un microphone qui fonctionne."
-
-#: C/audio-video.page:95(title)
-msgid "Supported Account Types"
-msgstr "Types de comptes pris en charge"
-
-#: C/audio-video.page:97(p)
-msgid ""
-"You can only have audio and video conversations using accounts on certain "
-"supported services. The following table lists whether audio and video is "
-"supported for each type of account."
-msgstr ""
-"Vous ne pouvez avoir des conversations audio et vidéo qu'en utilisant les "
-"comptes de certains services pris en charge. Le tableau suivant indique si "
-"l'audio et la vidéo sont pris en charge pour chaque type de compte."
-
-#: C/audio-video.page:102(p)
-msgid ""
-"Account types are provided by plugins. Your system may not have all of the "
-"following types available, or it may have types not listed here. Updated "
-"plugins may make audio or video conversations possible on account types that "
-"are listed as unsupported here."
-msgstr ""
-"Les types de comptes sont fournis par des greffons. Il se peut que votre "
-"système n'ait pas tous les types disponibles ou que certains types ne soient "
-"pas listés ici. Des greffons mis à jour peuvent rendre possible les "
-"conversations audio ou vidéo avec des types de comptes qui sont affichés "
-"comme ne les prenant pas en charge ici."
-
-#: C/audio-video.page:110(p)
-msgid ""
-"I'd like to do tables like this using nothing for No and â for Yes, but we "
-"need to look at the accessibility impact. I've asked the "
-"accessibility team for input."
-msgstr ""
-"J'aimerais faire un tableau comme cela en utilisant rien pour Non et â pour "
-"Oui mais il faut que nous regardions l'impact sur l'accessibilité. J'ai "
-" posé la question à l'équipe d'accessibilité pour "
-"avoir des infos."
-
-#: C/audio-video.page:118(p)
-msgid ""
-"There's recent work on telepathy-butterfly and papyon to support audio and "
-"video for MSN. It might be released in time for 2.28, but since it doesn't "
-"follow the Gnome release schedule, I can't be sure. If it looks like it's "
-"going to ship, let's mark it Yes."
-msgstr ""
-"Il y a des travaux récents sur telepathy-butterfly et papyon pour prendre en "
-"charge l'audio et la vidéo pour MSN. Il se peut qu'ils soient prêts à temps "
-"pour 2.28 mais comme cela ne suit pas le planning de réalisation de GNOME, "
-"je ne peux être sûr. Si cela a l'air d'être mis en place, alors marquons Oui."
-
-#: C/audio-video.page:128(p)
-msgid "Service"
-msgstr "Service"
-
-#: C/audio-video.page:129(p)
-msgid "Audio"
-msgstr "Audio"
-
-#: C/audio-video.page:130(p)
-msgid "Video"
-msgstr "Vidéo"
-
-#: C/audio-video.page:136(p) C/audio-video.page:137(p)
-#: C/audio-video.page:141(p) C/audio-video.page:142(p)
-#: C/audio-video.page:146(p) C/audio-video.page:147(p)
-#: C/audio-video.page:156(p) C/audio-video.page:157(p)
-#: C/audio-video.page:161(p) C/audio-video.page:162(p)
-#: C/audio-video.page:166(p) C/audio-video.page:167(p)
-#: C/audio-video.page:181(p) C/audio-video.page:182(p)
-#: C/audio-video.page:186(p) C/audio-video.page:187(p)
-#: C/audio-video.page:191(p) C/audio-video.page:192(p)
-#: C/audio-video.page:196(p) C/audio-video.page:197(p)
-#: C/audio-video.page:201(p) C/audio-video.page:202(p)
-#: C/audio-video.page:211(p) C/audio-video.page:212(p)
-#: C/audio-video.page:216(p) C/audio-video.page:217(p)
-msgid "No"
-msgstr "Non"
-
-#: C/audio-video.page:140(p)
-msgid "Facebook Chat"
-msgstr "Conversation Facebook"
-
-#: C/audio-video.page:145(p)
-msgid "gadugadu"
-msgstr "gadugadu"
-
-#: C/audio-video.page:150(p)
-msgid "Google Talk"
-msgstr "Google Talk"
-
-#: C/audio-video.page:151(p) C/audio-video.page:152(p)
-#: C/audio-video.page:171(p) C/audio-video.page:172(p)
-#: C/audio-video.page:176(p) C/audio-video.page:177(p)
-#: C/audio-video.page:206(p) C/audio-video.page:207(p)
-msgid "Yes"
-msgstr "Oui"
-
-#: C/audio-video.page:155(p)
-msgid "Groupwise"
-msgstr "Groupwise"
-
-#: C/audio-video.page:180(p)
-msgid "myspace"
-msgstr "myspace"
-
-#: C/audio-video.page:185(p)
-msgid "qq"
-msgstr "qq"
-
-#: C/audio-video.page:195(p)
-msgid "sametime"
-msgstr "sametime"
-
-#: C/audio-video.page:200(p)
-msgid "silc"
-msgstr "silc"
-
-#: C/audio-video.page:215(p)
-msgid "zephyr"
-msgstr "zephyr"
-
-#: C/audio-call.page:9(desc)
-msgid "Call your contacts over the Internet."
-msgstr "Appeler vos contacts sur internet."
-
-#: C/audio-call.page:27(title)
-msgid "Start an audio conversation"
-msgstr "Lancement d'une conversation audio"
-
-#: C/audio-call.page:29(p)
-msgid ""
-"You can call your contacts and have an audio conversation with them. This "
-"features only works with certain types of accounts, and it requires the "
-"other person to have an application that supports audio calls."
-msgstr ""
-"Vous pouvez appeler vos contacts et avoir des conversations audio avec eux. "
-"Cette fonctionnalité ne fonctionne qu'avec certains types de comptes et il "
-"est nécessaire pour l'autre personne d'avoir une application qui prend en "
-"charge les appels audio."
-
-#: C/audio-call.page:34(p)
-msgid ""
-"From the Contact List window, click the video call icon "
-"next to the name of the contact you wish to call and choose Audio Call ."
-msgstr ""
-"à partir de la fenêtre Liste des contacts , cliquez sur l'icône "
-"Appel vidéo à côté du contact que vous souhaitez appeler et "
-"choisissez Appel audio ."
-
-#: C/audio-call.page:55(p)
-msgid ""
-"To turn an audio conversation into a video conversation, choose Video Video On ."
-msgstr ""
-"Pour transformer un appel audio en conversation vidéo, choisissez "
-"Vidéo Vidéo "
-"activée ."
-
-#: C/audio-call.page:63(title)
-msgid "Start an audio conversation with a meta-contact"
-msgstr "Lancement d'une conversation audio avec un méta-contact"
-
-#: C/audio-call.page:71(p)
-msgid ""
-"Select the contact you want to have the conversation, and from the menu "
-"select Audio Call ."
-msgstr ""
-"Sélectionnez le contact avec lequel vous voulez discuter et choisissez Appel audio dans le menu."
-
-#: C/add-contact.page:9(desc)
-msgid "Add someone to the contact list."
-msgstr "Ajouter quelqu'un à la liste des contacts."
-
-#: C/add-contact.page:33(title)
-msgid "Add someone to your list of contacts"
-msgstr "Ajout d'une personne à votre liste de contacts"
-
-#: C/add-contact.page:37(p)
-msgid "Choose Chat Add Contact ."
-msgstr ""
-"Choisissez Discussion Ajouter un contact "
-"guiseq>."
-
-#: C/add-contact.page:40(p)
-msgid ""
-"From the Account drop-down list, select the account you wish to "
-"use to connect to your contact. Your contact will need to be using the same "
-"service as the account you select."
-msgstr ""
-"à partir de la liste déroulante Compte , choisissez le compte que "
-"vous souhaitez utiliser pour contacter votre contact. Votre contact devra "
-"utiliser le même service que le compte sélectionné."
-
-#: C/add-contact.page:45(p)
-msgid ""
-"In the Identifier field, enter your contactâs login ID, username, "
-"screen name, or other appropriate identifier for the service type."
-msgstr ""
-"Dans le champ Identifiant , saisissez l'identifiant de connexion "
-"de votre contact, son nom d'utilisateur, son nom d'écran ou d'autres "
-"identifiants appropriés pour le type de service."
-
-#: C/add-contact.page:49(p)
-msgid ""
-"In the Alias field, type your contactâs name as you would like it "
-"to appear in your contact list."
-msgstr ""
-"Dans le champ Alias , saisissez le nom de votre contact comme vous "
-"souhaitez le voir apparaître dans votre liste des contacts."
-
-#: C/add-contact.page:53(p)
-msgid "Click Add to add the person to your list of contacts."
-msgstr ""
-"Cliquez sur Ajouter pour ajouter la personne dans votre liste de "
-"contacts."
-
-#: C/add-contact.page:61(p)
-msgid ""
-"To add a new person to your list of contacts, you need to be connected to "
-"the Internet and to your account."
-msgstr ""
-"Pour ajouter une nouvelle personne à votre liste de contacts, vous devez "
-"être connecté à internet et à votre compte."
-
-#: C/add-account.page:9(desc)
-msgid "Add a new account to Empathy ."
-msgstr "Ajouter un nouveau compte à Empathy ."
-
-#: C/add-account.page:39(title)
-msgid "Add a new account"
-msgstr "Ajout d'un nouveau compte"
-
-#: C/add-account.page:41(p)
-msgid ""
-"You can add instant messaging accounts from any supported service to "
-"communicate with all of your contacts in Empathy . For some "
-"account providers, these steps will also allow you to register for a new "
-"account. For more details, see ."
-msgstr ""
-"Vous pouvez ajouter des comptes de messagerie instantanée de n'importe quel "
-"service pris en charge pour communiquer avec tous vos contacts dans "
-"Empathy . Pour certains fournisseurs de compte, ces étapes vous "
-"permettront également de vous inscrire sur un nouveau compte. Pour plus de "
-"détails, consultez ."
-
-#: C/add-account.page:52(p)
-msgid "Click Add ."
-msgstr "Cliquez sur Ajouter ."
-
-#: C/add-account.page:57(p)
-msgid ""
-"From the Protocol drop-down list, select the type of account you "
-"wish to add."
-msgstr ""
-"Dans la liste déroulante Protocole , sélectionnez le type de "
-"compte que vous voulez ajouter."
-
-#: C/add-account.page:61(p)
-msgid ""
-"If you do not already have a registered account, select Create a new "
-"account on the server . This feature is not available for all account "
-"types, and may not work with some account providers. See for more information."
-msgstr ""
-"Si vous ne vous êtes pas déjà inscrit sur un compte, choisissez Créer "
-"un nouveau compte sur le serveur . Cette fonctionnalité n'est pas "
-"disponible pour tous les types de compte et il se peut que cela ne "
-"fonctionne pas avec certains fournisseurs de compte. Consultez pour plus d'informations."
-
-#: C/add-account.page:66(p)
-msgid ""
-"Enter the required information. For most accounts, you will only need a "
-"login ID and a password. Some accounts may require additional information. "
-"See for more information."
-msgstr ""
-"Saisissez les informations requises. Pour la plupart des comptes, vous "
-"n'aurez besoin que d'un identifiant de connexion et d'un mot de passe. Il se "
-"peut que certains comptes requièrent plus d'informations. Consultez pour plus d'informations."
-
-#: C/add-account.page:71(p)
-msgid "Click Log in ."
-msgstr "Cliquez sur Se connecter ."
-
-#: C/add-account.page:78(p)
-msgid ""
-"To change the name that identifies the account in the Accounts "
-"window, select the account from the list on the left and either click on the "
-"name or press the space bar. Edit the account name and press Enter"
-"key> when youâre finished."
-msgstr ""
-"Pour modifier le nom qui identifie le compte dans la fenêtre Comptes"
-"gui>, sélectionnez le compte dans la liste sur la gauche et soit vous "
-"cliquez sur le nom, soit vous appuyez sur la barre d'espace. Modifiez le nom "
-"du compte et appuyez sur Entrée lorsque vous avez terminé."
-
-#: C/accounts-window.page:11(desc)
-msgid "Add, modify, and delete accounts."
-msgstr "Ajouter, modifier et supprimer des comptes."
-
-#: C/accounts-window.page:33(title)
-msgid "Accounts Window"
-msgstr "Fenêtre Comptes"
-
-#: C/accounts-window.page:35(p)
-msgid ""
-"The Accounts window allows you to add, modify, and delete "
-"accounts."
-msgstr ""
-"La fenêtre Comptes vous permet d'ajouter, de modifier et de "
-"supprimer des comptes."
-
-#: C/accounts-window.page:43(title)
-msgid "Account Details"
-msgstr "Détails de compte"
-
-#: C/accounts-window.page:44(p)
-msgid ""
-"For most types of accounts, you can simply enter a login ID and a password. "
-"Certain accounts or account types, however, may require additional "
-"information."
-msgstr ""
-"Pour la plupart des comptes, vous pouvez simplement saisir un identifiant de "
-"compte et un mot de passe. Il se peut que certains comptes ou types de "
-"compte requièrent cependant des informations supplémentaires."
-
-#: C/account-jabber.page:7(desc)
-msgid "Advanced options for Jabber and Google Talk accounts."
-msgstr "Options avancées pour les comptes Jabber et Google Talk."
-
-#: C/account-jabber.page:29(title)
-msgid "Jabber account details"
-msgstr "Détails de compte Jabber"
-
-#: C/account-jabber.page:31(p)
-msgid ""
-"Most Jabber accounts will require only a login ID and a password to connect. "
-"For some accounts or on certain types of networks, you may need to enter "
-"additional information in the Advanced section. Normally, you "
-"will not need to use the advanced options below. For general instructions on "
-"adding an account, see ."
-msgstr ""
-"La plupart des comptes Jabber ne requiert qu'un identifiant de connexion et "
-"un mot de passe pour se connecter. Pour certains comptes ou certains types "
-"de réseau, il se peut que vous deviez saisir des informations "
-"supplémentaires dans la section Avancé . Normalement vous ne "
-"devriez pas avoir à utiliser les options avancées ci-dessous. Pour obtenir "
-"des instructions générales sur l'ajout d'un compte, consultez ."
-
-#: C/account-jabber.page:39(p)
-msgid ""
-"Google Talk is a type of Jabber account. These instructions hold for Google "
-"Talk accounts as well."
-msgstr ""
-"Google Talk est un compte de type Jabber. Ces instructions valent donc "
-"également pour les comptes Google Talk."
-
-#: C/account-jabber.page:45(gui)
-msgid "Encryption required (TLS/SSL)"
-msgstr "Chiffrement requis (TLS/SSL)"
-
-#: C/account-jabber.page:46(gui)
-msgid "Ignore SSL certificate errors"
-msgstr "Ignorer les erreurs de certificat SSL"
-
-#: C/account-jabber.page:47(p)
-msgid ""
-"Whenever possible, communication between Empathy and the Jabber "
-"server is encrypted. If encrypted communication is not possible, messages "
-"may be sent unencrypted. Select Encryption required to prevent "
-"Empathy from communicating with the Jabber server when encryption "
-"is not possible."
-msgstr ""
-"Lorsque c'est possible, la communication entre Empathy et le "
-"serveur Jabber est chiffrée. Si la communication chiffrée n'est pas "
-"possible, il se peut que les messages ne soient pas chiffrées. Sélectionnez "
-"Chiffrement requis pour empêcher Empathy de "
-"communiquer avec le serveur Jabber lorsque le chiffrement n'est pas possible."
-
-#: C/account-jabber.page:52(p)
-msgid ""
-"Some Jabber servers may encrypt data using invalid certificates, or using "
-"certificates from unknown authorities. If you trust the server you are "
-"connecting to, you can select Ignore SSL certificate errors to "
-"allow encrypted communication with invalid certificates."
-msgstr ""
-"Il se peut que certains serveurs Jabber chiffrent les données en utilisant "
-"des certificats non valides ou en utilisant des certificats d'autorités "
-"inconnues. Si vous faites confiance dans le serveur auquel vous êtes "
-"connectés, vous pouvez sélectionner Ignorer les erreurs de certificat "
-"SSL pour autoriser la communication chiffrée avec des certificats non "
-"valides."
-
-#: C/account-jabber.page:59(gui)
-msgid "Resource"
-msgstr "Ressource"
-
-#: C/account-jabber.page:60(gui)
-msgid "Priority"
-msgstr "Priorité"
-
-#: C/account-jabber.page:61(p)
-msgid ""
-"If you have multiple applications (for instance, on separate computers) "
-"connected to your account at the same time, you can set a resource to "
-"uniquely identify each one. By default, Empathy will use "
-" Telepathy as the resource."
-msgstr ""
-"Si plusieurs applications (par exemple, sur des ordinateurs différents) sont "
-"connectées à votre compte en même temps, vous pouvez définir une ressource "
-"pour identifier chacun d'eux de manière unique. Par défaut, Empathy"
-"app> utilise Telepathy comme ressource."
-
-#: C/account-jabber.page:65(p)
-msgid ""
-"You can set the priority to specify which application should receive "
-"incoming messages from your contacts. New messages will be sent to the "
-"application with the highest priority."
-msgstr ""
-"Vous pouvez définir une priorité pour indiquer quelles applications doit "
-"recevoir les messages entrants de vos contacts. Les nouveaux messages seront "
-"envoyés à l'application qui possède la plus haute priorité."
-
-#: C/account-jabber.page:70(gui)
-msgid "Override server settings"
-msgstr "Neutralisation des réglages de serveur "
-
-#: C/account-jabber.page:71(p)
-msgid ""
-"Empathy will use default settings to connect to the Jabber server "
-"based on your login ID. For some Jabber servers, you will need to enter "
-"custom server settings manually. These settings should be provided for you "
-"by your Jabber provider."
-msgstr ""
-"Empathy utilise les paramètres par défaut pour se connecter au "
-"serveur Jabber en fonction de votre identifiant de connexion. Pour certains "
-"serveurs Jabber, vous devez saisir des paramètres de serveur personnalisés "
-"manuellement. Ces réglages vous sont fournis par votre fournisseur Jabber."
-
-#. When image changes, this message will be marked fuzzy or untranslated for you.
-#. It doesn't matter what you translate it to: it's not used at all.
-#: C/account-irc.page:106(None)
-msgid "@@image: 'figures/gtk-add.png'; md5=a856b499d8d4681b70b5ce6f25bc5c6d"
-msgstr "@@image: 'figures/gtk-add.png'; md5=a856b499d8d4681b70b5ce6f25bc5c6d"
-
-#. When image changes, this message will be marked fuzzy or untranslated for you.
-#. It doesn't matter what you translate it to: it's not used at all.
-#: C/account-irc.page:112(None)
-msgid "@@image: 'figures/gtk-remove.png'; md5=215e3a325a3dd619874e35c30a018bb6"
-msgstr ""
-"@@image: 'figures/gtk-remove.png'; md5=215e3a325a3dd619874e35c30a018bb6"
-
-#: C/account-irc.page:8(desc)
-msgid "Additional information necessary for connecting to IRC networks."
-msgstr "Informations supplémentaires utiles pour se connecter aux réseaux IRC."
-
-#: C/account-irc.page:31(title)
-msgid "IRC account details"
-msgstr "Détails de comptes IRC"
-
-#: C/account-irc.page:33(p)
-msgid ""
-"IRC accounts require different information than many other types of "
-"accounts. To create an IRC account, you must specify at least an IRC network "
-"and a nickname. This page details the information you can provide for an IRC "
-"account."
-msgstr ""
-"Les comptes IRC ont besoin d'informations différentes des autres types de "
-"comptes. Pour créer un compte IRC, vous devez indiquer au moins un réseau "
-"IRC et un pseudonyme. Cette page détaille les informations que vous pouvez "
-"fournir pour un compte IRC."
-
-#: C/account-irc.page:45(gui) C/account-irc.page:120(gui)
-msgid "Network"
-msgstr "Réseau"
-
-#: C/account-irc.page:46(p)
-msgid ""
-"IRC is an open system that allows people to run separate IRC networks. Each "
-"network is distinct and has its own users and chat rooms. Empathy "
-"lists the most popular networks in the Network drop-down list. "
-"You can add additional networks. See below."
-msgstr ""
-"IRC est un système ouvert qui permet aux gens de lancer des réseaux "
-"IRC distincts. Chaque réseau est différent et possède ses propres "
-"utilisateurs et salons de discussion. Empathy affiche les réseaux "
-"les plus populaires dans la liste déroulante Réseau . Vous pouvez "
-"ajouter d'autres réseaux. Consultez ci-dessous."
-
-#: C/account-irc.page:53(gui)
-msgid "Nickname"
-msgstr "Pseudonyme"
-
-#: C/account-irc.page:54(p)
-msgid ""
-"Your nickname is your unique name on the IRC network. Only one person on a "
-"network may use a given nickname. If you get an error message that says "
-" you will need to change "
-"your nickname."
-msgstr ""
-"Votre pseudonyme est un nom unique sur le réseau IRC. Seul une personne sur "
-"un réseau peut utiliser un pseudonyme donné. Si vous obtenez un message "
-"d'erreur qui indique , "
-"vous devez modifier votre pseudonyme."
-
-#: C/account-irc.page:60(gui)
-msgid "Password"
-msgstr "Mot de passe"
-
-#: C/account-irc.page:61(p)
-msgid ""
-"Some servers, particularly those on private networks, require a password to "
-"connect. If you are authorized to use the network, the network "
-"administrators should provide you with a password."
-msgstr ""
-"Certains serveurs, plus particulièrement ceux des réseaux privés, exigent un "
-"mot de passe pour se connecter. Si vous êtes autorisé à utiliser le réseau, "
-"les administrateurs du réseau doivent vous fournir un mot de passe."
-
-#: C/account-irc.page:65(title)
-msgid "NickServ Passwords"
-msgstr "Mots de passe NickServ"
-
-#: C/account-irc.page:66(p)
-msgid ""
-"On some networks, nicknames can be registered using a service known as "
-"NickServ. Empathy does not directly support nickname passwords. "
-"On some networks, including the popular freenode network, server passwords "
-"are automatically forwarded to NickServ, allowing you to set this field to "
-"identify yourself with NickServ. See for "
-"more details."
-msgstr ""
-"Sur certains réseaux, les pseudonymes peuvent être inscrits en utilisant un "
-"service connu sous le nom de NickServ. Empathy ne prend pas "
-"directement en charge les mots de passe de pseudonyme. Sur certains réseaux, "
-"dont le populaire réseau freeNode, les mots de passe de serveur sont "
-"automatiquement envoyés à NickServ ce qui vous permet de paramétrer ce champ "
-"pour vous identifier avec NickServ. Consultez pour plus de détails."
-
-#: C/account-irc.page:76(gui)
-msgid "Real name"
-msgstr "Nom réel"
-
-#: C/account-irc.page:77(p)
-msgid ""
-"You can provide your real name in addition to your nickname. Other users "
-"will be able to see this when they view your information."
-msgstr ""
-"Vous pouvez fournir votre véritable nom en plus de votre pseudonyme. Les "
-"autres utilisateurs seront capables de le voir lorsqu'ils consultent vos "
-"informations."
-
-#: C/account-irc.page:81(gui)
-msgid "Quit message"
-msgstr "Message de départ"
-
-#: C/account-irc.page:82(p)
-msgid ""
-"When you go offline, a quit message is sent to all the chat rooms youâre in "
-"and to all the users youâre having a private conversation with. Use this "
-"field to provide a custom quit message."
-msgstr ""
-"Lorsque vous quittez le réseau, un message de départ est envoyé à tout le "
-"salon de discussion dans lequel vous êtes et à tous les utilisateurs avec "
-"qui vous avez une conversation privée. Utilisez ce champ pour fournir un "
-"message de départ personnalisé."
-
-#: C/account-irc.page:94(title)
-msgid "IRC Networks"
-msgstr "Réseaux IRC"
-
-#: C/account-irc.page:97(title)
-msgid "Networks"
-msgstr "Réseaux"
-
-#: C/account-irc.page:99(p)
-msgid ""
-"Empathy includes a list of popular IRC networks. If you wish to "
-"another IRC network, you can add it to the list. You can also modify "
-"networks and remove them from the list."
-msgstr ""
-"Empathy est fourni avec une liste des réseaux IRC populaires. Si "
-"vous désirez un autre réseau IRC, vous pouvez l'ajouter à la liste. Vous "
-"pouvez également modifier les réseaux et les supprimer de la liste."
-
-#: C/account-irc.page:104(p)
-msgid ""
-"To add a network to the list, click Add ."
-msgstr ""
-"Pour ajouter un réseau à la liste, cliquez sur Ajouter ."
-
-#: C/account-irc.page:107(p)
-msgid ""
-"To modify a network in the list, select the network and click Edit ."
-msgstr ""
-"Pour modifier un réseau de la liste, sélectionnez le réseau et cliquez sur "
-"Modifier ."
-
-#: C/account-irc.page:110(p)
-msgid ""
-"To remove a network from the list, select the network and click Remove ."
-msgstr ""
-"Pour supprimer un réseau de la liste, sélectionnez le réseau et cliquez sur "
-"Supprimer ."
-
-#: C/account-irc.page:115(p)
-msgid ""
-"When adding or modifying a network, you can enter the following information:"
-msgstr ""
-"Lorsque vous ajoutez ou modifiez un réseau, vous pouvez fournir les "
-"informations suivantes :"
-
-#: C/account-irc.page:121(p)
-msgid ""
-"This is the name of the network as you want it to appear in the list of "
-"networks."
-msgstr ""
-"C'est le nom du réseau tel que vous souhaitez qu'il apparaisse dans la liste "
-"des réseaux."
-
-#: C/account-irc.page:125(gui)
-msgid "Charset"
-msgstr "Jeu de caractères"
-
-#: C/account-irc.page:126(p)
-msgid ""
-"This specifies the character encoding that is typically used on this "
-"network. A character encoding is a specific way of recording characters "
-"internally in a computer. There are many character encodings, and you need "
-"to use the same character encoding as other users to see their messages "
-"correctly."
-msgstr ""
-"Cela spécifie le codage de caractères qui est typiquement utilisé sur ce "
-"réseau. Un codage de caractères est une méthode spécifique pour enregistrer "
-"les caractères de manière interne dans l'ordinateur. Il y a de nombreux "
-"codages de caractères et vous devez utiliser le même codage de caractères "
-"que les autres utilisateurs pour lire leurs messages correctement."
-
-#. Translators: Recommend character encodings that are common
-#. for your language.
-#: C/account-irc.page:135(p)
-msgid ""
-"By default, Empathy uses UTF-8, a modern character encoding that "
-"can handle text from most of the world's languages. Another common encoding "
-"for English and some other Western languages is ISO-8859-1."
-msgstr ""
-"Par défaut, Empathy utilise UTF-8, un codage de caractère moderne "
-"qui peut gérer du texte de la plupart des langues du monde. Un autre codage "
-"courant pour les anglais et certaines autres langues de l'Europe de l'Ouest "
-"est l'ISO-8859-1."
-
-#: C/account-irc.page:141(gui)
-msgid "Servers"
-msgstr "Serveurs"
-
-#: C/account-irc.page:142(p)
-msgid ""
-"An IRC network may have many servers you can connect to. When you are "
-"connected to a server on a particular network, you can communicate with all "
-"users on all other servers on that network. You can add and remove servers "
-"for this network using the Add and Remove buttons."
-msgstr ""
-"Un réseau IRC peut posséder de nombreux serveurs auxquels vous pouvez vous "
-"connecter. Lorsque vous êtes connecté à un serveur sur un réseau "
-"particulier, vous pouvez communiquer avec tous les utilisateurs de tous les "
-"autres serveurs de ce réseau. Vous pouvez ajouter ou supprimer des serveurs "
-"pour ce réseau en utilisant les boutons Ajouter et "
-"Supprimer ."
-
-#: C/account-irc.page:147(p)
-msgid ""
-"When a server is selected, click the field under Server or "
-"Port to edit it. Alternatively, use the left and right arrow keys "
-"to focus the field, and press the space bar to begin editing."
-msgstr ""
-"Lorsqu'un serveur est sélectionné, cliquez sur le champ en dessous de "
-"Serveur ou Port pour le modifier. Vous pouvez "
-"également utiliser les touches fléchées gauche et droite pour donner le "
-"focus au champ et appuyer sur la barre d'espace pour commencer à saisir."
-
-#: C/account-irc.page:151(p)
-msgid ""
-"Select the check box in the SSL column to encrypt all "
-"communication with a server. Note that this does not prevent other users on "
-"the network from seeing what you write on public chat rooms."
-msgstr ""
-"Cochez la case dans la colonne SSL pour chiffrer toutes les "
-"communications avec un serveur. Remarquez bien que cela n'empêche pas les "
-"autres utilisateurs sur le réseau de voir ce que vous écrivez dans les "
-"salons de discussion publics."
-
-#. Put one translator per line, in the form of NAME , YEAR1, YEAR2
-#: C/index.page:0(None)
-msgid "translator-credits"
+"If you have problems sharing a video with people using other operating "
+"systems (like Windows or Mac OS), you may need to convert it to a different format."
msgstr ""
-"Claude Paroz , 2006-2007,2010\n"
-"Jonathan Ernst , 2007\n"
-"Robert-André Mauchin , 2007\n"
-"Bruno Brouard , 2007,2011\n"
-"Frédéric Péters , 2008\n"
-"Rémi Peixoto , 2009"
+"Si vous n'arrivez pas à partager une vidéo avec des personnes utilisant "
+"d'autres systèmes d'exploitation (comme Windows ou Mac OS), vous pouvez "
+"avoir besoin de les convertir "
+"dans un autre format."
diff --git a/help/gl/gl.po b/help/gl/gl.po
index c2f0f98c..9d3405ae 100644
--- a/help/gl/gl.po
+++ b/help/gl/gl.po
@@ -3,13 +3,13 @@
# This file is distributed under the same license as the tomboy package.
# FIRST AUTHOR , YEAR.
# Fran Diéguez , 2011.
-# Fran Dieguez , 2011.
+# Fran Dieguez , 2011, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: tomboy gnome-2-28\n"
-"POT-Creation-Date: 2011-09-08 06:13+0000\n"
-"PO-Revision-Date: 2011-09-09 14:54+0200\n"
+"POT-Creation-Date: 2011-12-19 21:11+0000\n"
+"PO-Revision-Date: 2012-01-16 23:06+0100\n"
"Last-Translator: Fran Dieguez \n"
"Language-Team: Galician \n"
"MIME-Version: 1.0\n"
@@ -19,11 +19,8 @@ msgstr ""
#. When image changes, this message will be marked fuzzy or untranslated for you.
#. It doesn't matter what you translate it to: it's not used at all.
-#: C/video-call.page:38(None) C/audio-video.page:70(None)
+#: C/video-call.page:39(None) C/audio-video.page:70(None)
#: C/audio-call.page:36(None)
-#| msgid ""
-#| "@@image: 'figures/add-to-notebook.png'; "
-#| "md5=03469ddb5137f525ac4f8318caed5532"
msgid "@@image: 'figures/camera-web.png'; md5=8166b4372f25b78cbf5a64fe2eac2ce5"
msgstr ""
"@@image: 'figures/camera-web.png'; md5=8166b4372f25b78cbf5a64fe2eac2ce5"
@@ -32,12 +29,12 @@ msgstr ""
msgid "Start a video conversation with one of your contacts."
msgstr "Comezar unha conversa de viÌdeo con un dos seus contactos."
-#: C/video-call.page:21(name) C/status-icons.page:16(name)
+#: C/video-call.page:22(name) C/status-icons.page:16(name)
#: C/share-desktop.page:14(name) C/set-custom-status.page:19(name)
#: C/send-file.page:21(name) C/salut-protocol.page:18(name)
-#: C/remove-account.page:18(name) C/prob-conn-neterror.page:18(name)
-#: C/prob-conn-name.page:17(name) C/prob-conn-auth.page:21(name)
-#: C/prob-conn-acctdisabled.page:18(name) C/prev-conv.page:16(name)
+#: C/remove-account.page:19(name) C/prob-conn-neterror.page:19(name)
+#: C/prob-conn-name.page:18(name) C/prob-conn-auth.page:21(name)
+#: C/prob-conn-acctdisabled.page:19(name) C/prev-conv.page:17(name)
#: C/link-contacts.page:15(name) C/irc-start-conversation.page:15(name)
#: C/irc-send-file.page:16(name) C/irc-nick-password.page:18(name)
#: C/irc-manage.page:20(name) C/irc-join-room.page:16(name)
@@ -48,18 +45,18 @@ msgstr "Comezar unha conversa de viÌdeo con un dos seus contactos."
#: C/geolocation-turn.page:18(name) C/geolocation-supported.page:16(name)
#: C/geolocation-privacy.page:17(name) C/geolocation-not-showing.page:17(name)
#: C/geolocation.page:17(name) C/favorite-rooms.page:14(name)
-#: C/disable-account.page:20(name) C/create-account.page:19(name)
+#: C/disable-account.page:21(name) C/create-account.page:19(name)
#: C/audio-video.page:17(name) C/audio-call.page:19(name)
-#: C/add-account.page:20(name)
+#: C/add-account.page:21(name)
msgid "Milo Casagrande"
msgstr "Milo Casagrande"
-#: C/video-call.page:22(email) C/status-icons.page:17(email)
+#: C/video-call.page:23(email) C/status-icons.page:17(email)
#: C/share-desktop.page:15(email) C/set-custom-status.page:20(email)
#: C/send-file.page:22(email) C/salut-protocol.page:19(email)
-#: C/remove-account.page:19(email) C/prob-conn-neterror.page:19(email)
-#: C/prob-conn-name.page:18(email) C/prob-conn-auth.page:22(email)
-#: C/prob-conn-acctdisabled.page:19(email) C/prev-conv.page:17(email)
+#: C/remove-account.page:20(email) C/prob-conn-neterror.page:20(email)
+#: C/prob-conn-name.page:19(email) C/prob-conn-auth.page:22(email)
+#: C/prob-conn-acctdisabled.page:20(email) C/prev-conv.page:18(email)
#: C/link-contacts.page:16(email) C/irc-start-conversation.page:16(email)
#: C/irc-send-file.page:17(email) C/irc-nick-password.page:19(email)
#: C/irc-manage.page:21(email) C/irc-join-room.page:17(email)
@@ -70,19 +67,19 @@ msgstr "Milo Casagrande"
#: C/geolocation-turn.page:19(email) C/geolocation-supported.page:17(email)
#: C/geolocation-privacy.page:18(email)
#: C/geolocation-not-showing.page:18(email) C/geolocation.page:18(email)
-#: C/favorite-rooms.page:15(email) C/disable-account.page:21(email)
+#: C/favorite-rooms.page:15(email) C/disable-account.page:22(email)
#: C/create-account.page:20(email) C/audio-video.page:18(email)
-#: C/audio-call.page:20(email) C/add-account.page:21(email)
+#: C/audio-call.page:20(email) C/add-account.page:22(email)
msgid "milo@ubuntu.com"
msgstr "milo@ubuntu.com"
-#: C/video-call.page:25(p) C/status-icons.page:24(p)
+#: C/video-call.page:26(p) C/status-icons.page:24(p)
#: C/share-desktop.page:22(p) C/set-custom-status.page:23(p)
#: C/send-message.page:21(p) C/send-file.page:25(p)
-#: C/salut-protocol.page:22(p) C/remove-account.page:22(p)
-#: C/prob-conn.page:18(p) C/prob-conn-neterror.page:22(p)
-#: C/prob-conn-name.page:21(p) C/prob-conn-auth.page:25(p)
-#: C/prob-conn-acctdisabled.page:22(p) C/prev-conv.page:24(p)
+#: C/salut-protocol.page:22(p) C/remove-account.page:23(p)
+#: C/prob-conn.page:18(p) C/prob-conn-neterror.page:23(p)
+#: C/prob-conn-name.page:22(p) C/prob-conn-auth.page:25(p)
+#: C/prob-conn-acctdisabled.page:23(p) C/prev-conv.page:25(p)
#: C/link-contacts.page:19(p) C/irc-start-conversation.page:19(p)
#: C/irc-send-file.page:20(p) C/irc-nick-password.page:22(p)
#: C/irc-manage.page:24(p) C/irc-join-room.page:20(p)
@@ -92,31 +89,36 @@ msgstr "milo@ubuntu.com"
#: C/geolocation-what-is.page:22(p) C/geolocation-turn.page:22(p)
#: C/geolocation-supported.page:20(p) C/geolocation-privacy.page:21(p)
#: C/geolocation-not-showing.page:21(p) C/geolocation.page:21(p)
-#: C/favorite-rooms.page:18(p) C/disable-account.page:28(p)
-#: C/create-account.page:23(p) C/change-status.page:23(p)
+#: C/favorite-rooms.page:18(p) C/disable-account.page:29(p)
+#: C/create-account.page:23(p) C/change-status.page:28(p)
#: C/audio-video.page:21(p) C/audio-call.page:23(p) C/add-contact.page:22(p)
-#: C/add-account.page:28(p) C/accounts-window.page:22(p)
+#: C/add-account.page:29(p) C/accounts-window.page:22(p)
#: C/account-jabber.page:18(p) C/account-irc.page:20(p)
msgid "Creative Commons Share Alike 3.0"
msgstr "Creative Commons Compartir Igual 3.0"
-#: C/video-call.page:28(title)
+#: C/video-call.page:29(title)
msgid "Start a video conversation"
msgstr "Comezar unha conversa de viÌdeo"
-#: C/video-call.page:30(p)
+#: C/video-call.page:31(p)
+#| msgid ""
+#| "If you have a webcam, you can call your contacts and have a video "
+#| "conversation with them. This features only works with certain types of "
+#| "accounts, and it requires the other person to have an application that "
+#| "supports video calls."
msgid ""
"If you have a webcam, you can call your contacts and have a video "
-"conversation with them. This features only works with certain types of "
+"conversation with them. This feature only works with certain types of "
"accounts, and it requires the other person to have an application that "
"supports video calls."
msgstr ""
-"Se ten unha caÌmara web poderaÌ facer chamadas aos seus contactos e ter unha "
-"conversa con viÌdeo con eles. Estas funcionalidades soÌ funcionaraÌn con certos "
-"tipos de contas, e require que outra persoa tenÌa un aplicativo que admita as "
+"Se ten unha cámara web poderá facer chamadas aos seus contactos e ter unha "
+"conversa con vÃdeo con eles. Estas funcionalidades só funcionan en certos "
+"tipos de contas, e require que outra persoa teña un aplicativo que admita as "
"videochamadas."
-#: C/video-call.page:37(p)
+#: C/video-call.page:38(p)
msgid ""
"From the Contact List window, click the video call icon "
@@ -128,7 +130,7 @@ msgstr ""
"media> ao lado do nome do contacto ao que quere chamar e seleccione Videochamada ."
-#: C/video-call.page:43(p) C/audio-call.page:42(p)
+#: C/video-call.page:44(p) C/audio-call.page:42(p)
msgid ""
"A new window will open. When the connection is established, you will see "
"Connected at the bottom of the window, along with the total "
@@ -138,11 +140,11 @@ msgstr ""
" na parte inferior da xanela, ao caroÌn do tempo de conversa "
"total."
-#: C/video-call.page:48(p) C/audio-call.page:48(p)
+#: C/video-call.page:49(p) C/audio-call.page:48(p)
msgid "To end the conversation, click on Hang up ."
msgstr "Para rematar a conversa, prema sobre "
-#: C/video-call.page:54(p)
+#: C/video-call.page:55(p)
msgid ""
"To turn a video conversation into an audio conversation, choose Video Video Off ."
@@ -151,18 +153,18 @@ msgstr ""
"ViÌdeo Desactivar "
"viÌdeo ."
-#: C/video-call.page:60(title)
+#: C/video-call.page:61(title)
msgid "Start a video conversation with a meta-contact"
msgstr "Comezar unha conversa de viÌdeo con un metacontacto."
-#: C/video-call.page:63(p) C/send-message.page:53(p) C/audio-call.page:66(p)
+#: C/video-call.page:64(p) C/send-message.page:53(p) C/audio-call.page:66(p)
msgid ""
"From the Contact List window, right-click on the meta-contact."
msgstr ""
"Desde a xanela Lista de contactos , prema co botoÌn dereito sobre "
"un metacontacto."
-#: C/video-call.page:68(p)
+#: C/video-call.page:69(p)
msgid ""
"Select the contact you want to have the conversation, and from the menu "
"select Video Call ."
@@ -170,7 +172,7 @@ msgstr ""
"Seleccione o contacto co que desexe ter unha conversa e desde o menuÌ "
"seleccione ViÌdeochamada ."
-#: C/video-call.page:75(p) C/send-message.page:65(p) C/audio-call.page:78(p)
+#: C/video-call.page:76(p) C/send-message.page:65(p) C/audio-call.page:78(p)
msgid ""
"To recognize if a contact is a meta-contact , move your mouse on a "
"contact in the Contact List window, and stop over it for a "
@@ -185,16 +187,12 @@ msgstr ""
#. When image changes, this message will be marked fuzzy or untranslated for you.
#. It doesn't matter what you translate it to: it's not used at all.
#: C/status-icons.page:39(None)
-#| msgid ""
-#| "@@image: 'figures/note-template.png'; md5=49ee364d7e060de4e7a583e49a2f7db7"
msgid "@@image: 'figures/available.png'; md5=2196b2f0ad4ce26fdb7b9d48e75d1947"
msgstr "@@image: 'figures/available.png'; md5=2196b2f0ad4ce26fdb7b9d48e75d1947"
#. When image changes, this message will be marked fuzzy or untranslated for you.
#. It doesn't matter what you translate it to: it's not used at all.
#: C/status-icons.page:45(None)
-#| msgid ""
-#| "@@image: 'figures/tomboy-panel.png'; md5=37fb8231c5dece7539e3471b76ec0d00"
msgid "@@image: 'figures/busy.png'; md5=15eb2adff5faedf97b0cb9105d09410a"
msgstr "@@image: 'figures/busy.png'; md5=15eb2adff5faedf97b0cb9105d09410a"
@@ -207,8 +205,6 @@ msgstr "@@image: 'figures/away.png'; md5=9c504d6ffa0cf1a9cc8933d16e1bea33"
#. When image changes, this message will be marked fuzzy or untranslated for you.
#. It doesn't matter what you translate it to: it's not used at all.
#: C/status-icons.page:62(None) C/status-icons.page:69(None)
-#| msgid ""
-#| "@@image: 'figures/tomboy-panel.png'; md5=37fb8231c5dece7539e3471b76ec0d00"
msgid "@@image: 'figures/offline.png'; md5=c5b0c21181cbd6e13f8909243c0fa964"
msgstr "@@image: 'figures/offline.png'; md5=c5b0c21181cbd6e13f8909243c0fa964"
@@ -217,17 +213,17 @@ msgid "Understanding the various statuses and status icons."
msgstr "Entendendo os diferentes estados e iconas de estado."
#: C/status-icons.page:20(name) C/salut-protocol.page:36(cite)
-#: C/prev-conv.page:20(name) C/prev-conv.page:38(cite)
-#: C/import-account.page:27(name) C/disable-account.page:24(name)
-#: C/audio-video.page:109(cite) C/audio-video.page:117(cite)
-#: C/add-account.page:24(name) C/accounts-window.page:18(name)
-#: C/account-jabber.page:14(name) C/account-irc.page:16(name)
+#: C/prev-conv.page:21(name) C/import-account.page:27(name)
+#: C/disable-account.page:25(name) C/audio-video.page:109(cite)
+#: C/audio-video.page:117(cite) C/add-account.page:25(name)
+#: C/accounts-window.page:18(name) C/account-jabber.page:14(name)
+#: C/account-irc.page:16(name)
msgid "Shaun McCance"
msgstr "Shaun McCance"
-#: C/status-icons.page:21(email) C/prev-conv.page:21(email)
-#: C/import-account.page:28(email) C/disable-account.page:25(email)
-#: C/add-account.page:25(email) C/accounts-window.page:19(email)
+#: C/status-icons.page:21(email) C/prev-conv.page:22(email)
+#: C/import-account.page:28(email) C/disable-account.page:26(email)
+#: C/add-account.page:26(email) C/accounts-window.page:19(email)
#: C/account-jabber.page:15(email) C/account-irc.page:17(email)
msgid "shaunm@gnome.org"
msgstr "shaunm@gnome.org"
@@ -333,12 +329,10 @@ msgid "Ekaterina Gerasimova"
msgstr "Ekaterina Gerasimova"
#: C/share-desktop.page:19(email)
-#| msgid "btimothy@gmail.com"
msgid "kittykat3756@gmail.com"
msgstr "kittykat3756@gmail.com"
#: C/share-desktop.page:33(title)
-#| msgid "Synchronize your notes"
msgid "Share your desktop"
msgstr "Compartir o seu escritorio"
@@ -586,17 +580,16 @@ msgid "Send a message to one of your contacts."
msgstr "Enviar unha mensaxe a un dos seus contactos."
#: C/send-message.page:17(name) C/send-file.page:17(name)
-#: C/prob-conn.page:14(name) C/prob-conn-neterror.page:14(name)
-#: C/prob-conn-auth.page:17(name) C/prob-conn-acctdisabled.page:14(name)
-#: C/change-status.page:19(name) C/add-contact.page:18(name)
+#: C/prob-conn.page:14(name) C/prob-conn-neterror.page:15(name)
+#: C/prob-conn-auth.page:17(name) C/prob-conn-acctdisabled.page:15(name)
+#: C/change-status.page:24(name) C/add-contact.page:18(name)
msgid "Phil Bull"
msgstr "Phil Bull"
#: C/send-message.page:18(email) C/send-file.page:18(email)
-#: C/prob-conn.page:15(email) C/prob-conn-neterror.page:15(email)
-#: C/prob-conn-auth.page:18(email) C/prob-conn-acctdisabled.page:15(email)
-#: C/change-status.page:20(email) C/add-contact.page:19(email)
-#| msgid "btimothy@gmail.com"
+#: C/prob-conn.page:15(email) C/prob-conn-neterror.page:16(email)
+#: C/prob-conn-auth.page:18(email) C/prob-conn-acctdisabled.page:16(email)
+#: C/change-status.page:25(email) C/add-contact.page:19(email)
msgid "philbull@gmail.com"
msgstr "philbull@gmail.com"
@@ -764,11 +757,11 @@ msgstr ""
msgid "Completely remove an account from Empathy ."
msgstr "Quitar completamente unha conta en Empathy ."
-#: C/remove-account.page:33(title)
+#: C/remove-account.page:34(title)
msgid "Remove an account"
msgstr "Eliminar unha conta"
-#: C/remove-account.page:35(p)
+#: C/remove-account.page:36(p)
msgid ""
"You can completely remove an account from Empathy if you no "
"longer wish to use the account. If you wish to use the account in "
@@ -779,8 +772,8 @@ msgstr ""
"seguir usaÌndoa. Se quere usar de novo a conta en Empathy no "
"futuro, deberaÌ engadir os detalles da conta de novo."
-#: C/remove-account.page:42(p) C/irc-nick-password.page:50(p)
-#: C/disable-account.page:48(p) C/add-account.page:48(p)
+#: C/remove-account.page:43(p) C/irc-nick-password.page:50(p)
+#: C/disable-account.page:49(p) C/add-account.page:49(p)
msgid ""
"From the Contact List window, choose Edit"
"gui>Accounts , or press F4 ."
@@ -788,7 +781,7 @@ msgstr ""
"Desde a xanela Lista de contactos seleccione Editar"
"gui>Contas ou prema F4 ."
-#: C/remove-account.page:46(p)
+#: C/remove-account.page:47(p)
msgid ""
"Select the account you wish to remove from the accounts list on the left "
"side of the window."
@@ -796,11 +789,12 @@ msgstr ""
"Seleccione a conta que desexa eliminar desde a lista de contas na parte "
"esquerda da xanela."
-#: C/remove-account.page:50(p)
-msgid "Click on Remove ."
-msgstr "Prema Quitar ."
+#: C/remove-account.page:51(p)
+#| msgid "Click Add ."
+msgid "Click - ."
+msgstr "Prema - ."
-#: C/remove-account.page:53(p)
+#: C/remove-account.page:54(p)
msgid ""
"A dialog will be shown asking for confirmation. Click the Remove "
"button to permanently remove the account."
@@ -808,7 +802,7 @@ msgstr ""
"Mostrarase un diaÌlogo preguntando por unha confirmacioÌn. Prema no botoÌn "
"Eliminar para quitar a conta permanentemente."
-#: C/remove-account.page:59(p)
+#: C/remove-account.page:60(p)
msgid ""
"Even after removing an account, Empathy does not delete your "
"conversation history for that account."
@@ -828,10 +822,8 @@ msgstr "Problemas ao conectarse a un servizo de mensaxariÌa instantaÌnea"
#. When image changes, this message will be marked fuzzy or untranslated for you.
#. It doesn't matter what you translate it to: it's not used at all.
-#: C/prob-conn-neterror.page:58(None) C/prob-conn-name.page:43(None)
+#: C/prob-conn-neterror.page:59(None) C/prob-conn-name.page:44(None)
#: C/prob-conn-auth.page:58(None) C/account-irc.page:109(None)
-#| msgid ""
-#| "@@image: 'figures/note-template.png'; md5=49ee364d7e060de4e7a583e49a2f7db7"
msgid "@@image: 'figures/gtk-edit.png'; md5=4f21b451732817be0604fe3e2c8da98b"
msgstr "@@image: 'figures/gtk-edit.png'; md5=4f21b451732817be0604fe3e2c8da98b"
@@ -842,15 +834,15 @@ msgid ""
msgstr ""
"ApareceraÌ a mensaxe de erro «Erro de rede » na xanela principal."
-#: C/prob-conn-neterror.page:33(title)
+#: C/prob-conn-neterror.page:34(title)
msgid "I get a message that says âNetwork errorâ"
msgstr "ObtenÌo unha mensaxe que mostra «Erro de rede»"
-#: C/prob-conn-neterror.page:36(cite)
+#: C/prob-conn-neterror.page:37(cite)
msgid "shaunm"
msgstr "shaunm"
-#: C/prob-conn-neterror.page:37(p)
+#: C/prob-conn-neterror.page:38(p)
msgid ""
"Empathy no longer allows you to create an IRC account without a valid nick. "
"I've removed the guide link. Remove the text."
@@ -858,7 +850,7 @@ msgstr ""
"Empathy xa non lle permite crear unha conta de IRC sen un alcume vaÌlido. "
"Quitouse a ligazoÌn da guiÌa. Quitar o texto."
-#: C/prob-conn-neterror.page:41(p)
+#: C/prob-conn-neterror.page:42(p)
msgid ""
"This kind of error happens when Empathy cannot communicate with "
"the instant messaging service for some reason."
@@ -866,7 +858,7 @@ msgstr ""
"Este tipo de mensaxe sucede cando Empathy non se pode comunicar "
"co servizo de mensaxariÌa instantaÌnea por algunha razoÌn."
-#: C/prob-conn-neterror.page:45(p)
+#: C/prob-conn-neterror.page:46(p)
msgid ""
"Also, this kind of error happens when you try to use an IRC account without "
"setting a nickname."
@@ -874,14 +866,14 @@ msgstr ""
"Este tipo de erro tameÌn sucede cando intenta usar unha conta de IRC sen ter "
"configurado o alcume"
-#: C/prob-conn-neterror.page:52(p) C/prob-conn-auth.page:45(p)
-#: C/prob-conn-acctdisabled.page:43(p)
+#: C/prob-conn-neterror.page:53(p) C/prob-conn-auth.page:45(p)
+#: C/prob-conn-acctdisabled.page:44(p)
msgid ""
"Make sure that you are connected to the Internet, or to a local area network."
msgstr ""
"AseguÌrese de que estaÌ conectado a Internet ou a unha rede de aÌrea local."
-#: C/prob-conn-neterror.page:57(p) C/prob-conn-name.page:42(p)
+#: C/prob-conn-neterror.page:58(p) C/prob-conn-name.page:43(p)
#: C/prob-conn-auth.page:57(p)
msgid ""
"Click the Logotipo da mensaxariÌa instantaÌnea Empathy MensaxariÌa instantaÌnea "
"Empathy"
-#: C/prob-conn-neterror.page:65(p) C/prob-conn-acctdisabled.page:59(p)
+#: C/prob-conn-neterror.page:64(p) C/prob-conn-acctdisabled.page:60(p)
msgid ""
"Check in the Advanced section that all the details are correct. "
"You should be able to find these details from the website of the messaging "
@@ -901,19 +893,22 @@ msgstr ""
"Vostede poderaÌ encontrar estes detalles no sitio web do seu servizo de "
"mensaxeriÌa."
-#: C/prob-conn-neterror.page:82(p) C/prob-conn-auth.page:68(p)
+#: C/prob-conn-neterror.page:79(p) C/prob-conn-name.page:65(p)
+#| msgid ""
+#| "Deselect the Enabled , and then select it again to try to "
+#| "reconnect to the service."
msgid ""
-"Deselect the Enabled , and then select it again to try to "
-"reconnect to the service."
+"Switch the account off, and then switch it on to try to reconnect to the "
+"service."
msgstr ""
-"Deseleccione , e seleccioÌneo de novo para tentar "
-"reconectarse ao servizo."
+"Deseleccione a conta, e selecciónea de novo para tentar reconectarse ao "
+"servizo."
-#: C/prob-conn-neterror.page:90(title)
+#: C/prob-conn-neterror.page:87(title)
msgid "Proxy support"
msgstr "Compatibilidade de proxy"
-#: C/prob-conn-neterror.page:91(p)
+#: C/prob-conn-neterror.page:88(p)
msgid ""
"At the moment Empathy can not be configured to work with a proxy."
msgstr ""
@@ -932,11 +927,11 @@ msgstr ""
"Aparecen na xanela principal unha mensaxe de erro que dice «Nome en "
"uso »"
-#: C/prob-conn-name.page:32(title)
+#: C/prob-conn-name.page:33(title)
msgid "I get a message that says âName in useâ"
msgstr "ObtenÌo unha mensaxe de erro que mostra «Nome en uso»"
-#: C/prob-conn-name.page:34(p)
+#: C/prob-conn-name.page:35(p)
msgid ""
"This kind of error happens when you try to connect to your IRC account and "
"you are using a nickname that is already being used by someone else on that "
@@ -945,11 +940,11 @@ msgstr ""
"Este tipo de erro sucede cando tenta conectarse aÌ suÌa conta de IRC e estaÌ "
"usando un alcume que xa estaÌ usando outra persoa nesa rede en particular."
-#: C/prob-conn-name.page:50(p)
+#: C/prob-conn-name.page:51(p)
msgid "In the Nickname text box, type a new nickname."
msgstr "Na caixa de texto Alcume escriba un alcume novo."
-#: C/prob-conn-name.page:55(p)
+#: C/prob-conn-name.page:56(p)
msgid ""
"If you have registered that nickname within the network you are using, set "
"the password for that nickname. For more information, see ."
-#: C/prob-conn-name.page:64(p)
-msgid ""
-"Deselect the Enabled check-box next to the name of your account, "
-"and then select it again to try to reconnect to the service."
-msgstr ""
-"Deseleccione , e seleccioÌneo de novo para tentar "
-"reconectarse ao servizo."
-
#: C/prob-conn-auth.page:8(desc)
msgid ""
"An error message which says âAuthentication failed â appears in "
@@ -999,13 +986,21 @@ msgstr ""
"conectarse. Se non ten unha conta a maioriÌa dos servizos non lle permitiraÌn "
"que se conecte."
-#: C/prob-conn-auth.page:63(p) C/prob-conn-acctdisabled.page:54(p)
+#: C/prob-conn-auth.page:63(p) C/prob-conn-acctdisabled.page:55(p)
msgid ""
"Type your username and password again to make sure that they are correct."
msgstr ""
"Escriba o seu nome de usuario e contrasinal de novo e aseguÌrese de que son "
"correctos."
+#: C/prob-conn-auth.page:68(p)
+msgid ""
+"Deselect the Enabled , and then select it again to try to "
+"reconnect to the service."
+msgstr ""
+"Deseleccione , e seleccioÌneo de novo para tentar "
+"reconectarse ao servizo."
+
#: C/prob-conn-acctdisabled.page:7(desc)
msgid ""
"The instant messaging account that you want to use is not enabled in the "
@@ -1014,11 +1009,11 @@ msgstr ""
"A conta de mensaxariÌa instantaÌnea que quere usar non estaÌ activada na lista "
"de contas."
-#: C/prob-conn-acctdisabled.page:33(title)
+#: C/prob-conn-acctdisabled.page:34(title)
msgid "My account is not enabled"
msgstr "A minÌa conta non estaÌ activada"
-#: C/prob-conn-acctdisabled.page:35(p)
+#: C/prob-conn-acctdisabled.page:36(p)
msgid ""
"If the instant messaging account that you want to use is not enabled in the "
"drop-down account list when you try to start a new conversation or join a "
@@ -1028,7 +1023,7 @@ msgstr ""
"lista despregaÌbel de contas, cando tenta iniciar unha conversa nova ou "
"unirse a unha charla, pode que os detalles da suÌa conta non sexa correctos."
-#: C/prob-conn-acctdisabled.page:48(p)
+#: C/prob-conn-acctdisabled.page:49(p)
msgid ""
"Choose Edit Accounts and select the "
"account that is not working."
@@ -1036,37 +1031,19 @@ msgstr ""
"Elixa Editar Contas e seleccione a "
"conta que non estaÌ funcionando."
-#: C/prob-conn-acctdisabled.page:65(p)
-msgid ""
-"Check that the Enabled check-box is selected. "
-"If it is not, select the check-box to enable the account."
-msgstr ""
-"Comprobe que a casilla de verificacioÌn Activada"
-"gui> estaÌ seleccionada. Se non o estaÌ marque a casilla de verificacioÌn para "
-"activar a conta."
+#: C/prob-conn-acctdisabled.page:66(p)
+msgid "Check that the account is switched on."
+msgstr "Comprobe que a conta está activada."
#: C/prev-conv.page:8(desc)
msgid "Browse or search your previous conversations."
msgstr "Explorar ou buscar nas suÌas mensaxes anteriores."
-#: C/prev-conv.page:35(title)
+#: C/prev-conv.page:36(title)
msgid "View previous conversations"
msgstr "Ver as conversas anteriores"
-#: C/prev-conv.page:39(p)
-msgid ""
-"Highlighting text is quirky: #593733. If there's an actual highlighting going on, "
-"independent of the selection (like in yellow or something), we can use the "
-"term \"highlight\". Otherwise we need to use the term \"select\". Watch that "
-"bug."
-msgstr ""
-"Resaltar texto eÌ estranÌo #59733. Se existe un resaltado actualmente, independente "
-"da seleccioÌn (en amarelo, por exemplo), poÌdese usar o termo «resaltar». De "
-"outra forma deÌbese usar o termo «seleccionado». Siga o proceso do erro."
-
-#: C/prev-conv.page:46(p)
+#: C/prev-conv.page:38(p)
msgid ""
"Empathy automatically saves all your text conversations you have "
"with your contacts. You can search through all of "
@@ -1078,7 +1055,7 @@ msgstr ""
"suÌas conversas anteriores ou buscar conversas "
"anteriores por contacto e data."
-#: C/prev-conv.page:54(p)
+#: C/prev-conv.page:46(p)
msgid ""
"You do not need to be connected to the Internet to view and search your "
"previous conversations."
@@ -1086,11 +1063,11 @@ msgstr ""
"Non necesita estar conectado a Internet para ver e buscar nas suÌas conversas "
"anteriores."
-#: C/prev-conv.page:61(title)
+#: C/prev-conv.page:53(title)
msgid "Search previous conversations"
msgstr "Buscar conversas anteriores"
-#: C/prev-conv.page:63(p)
+#: C/prev-conv.page:55(p)
msgid ""
"You can perform a full-text search through all of your previous "
"conversations."
@@ -1098,7 +1075,7 @@ msgstr ""
"Pode realizar unha busca de texto completo sobre todas as suÌas conversas "
"anteriores."
-#: C/prev-conv.page:67(p) C/prev-conv.page:96(p)
+#: C/prev-conv.page:59(p) C/prev-conv.page:87(p)
msgid ""
"From the Contact List window, choose View"
"gui>Previous Conversations . Alternatively, press "
@@ -1108,40 +1085,39 @@ msgstr ""
"gui>Conversas previas . De forma alternativa prema "
"F3 ."
-#: C/prev-conv.page:71(p)
-msgid "Select the Search tab."
-msgstr "Seleccione o separador Buscar ."
-
-#: C/prev-conv.page:74(p)
+#: C/prev-conv.page:63(p)
+#| msgid ""
+#| "Select an account from the drop-down list in the top left. A list of "
+#| "contacts and chat room for that account will be shown below."
msgid ""
-"In the For field, type the text you want to search for. Click "
-"Find or press Enter ."
+"Select an account from the drop-down list in the top. A list of contacts and "
+"chat room for that account will be shown below."
msgstr ""
-"No campo Para escriba o texto que quere buscar. Prema "
-"Buscar ou prema Intro ."
+"Seleccione unha conta desde a lista despregábel na parte superior. "
+"Mostrarase unha lista de contactos e salas de conversa para dita conta."
-#: C/prev-conv.page:78(p)
+#: C/prev-conv.page:67(p)
msgid ""
-"Any conversations that matched your search terms will be shown in the list "
-"below the search field. By default, conversations are ordered by date."
-msgstr ""
-"Mostrarase na lista baixo o campo de busca calquera conversa que coincida "
-"cos seus termos de busca. As conversas ordeÌnanse por data de forma "
-"predefinida."
+"Type the text you want to search for in the Search text field."
+msgstr "Escriba o texto que quere buscar no campo de texto Buscar ."
-#: C/prev-conv.page:82(p)
+#: C/prev-conv.page:71(p)
+#| msgid ""
+#| "Any conversations that matched your search terms will be shown in the "
+#| "list below the search field. By default, conversations are ordered by "
+#| "date."
msgid ""
-"Click on a conversation to view it. Empathy will select the text "
-"in the conversation that matched your search terms."
+"Any conversations that matched your search terms will be shown. By default, "
+"conversations are ordered by date."
msgstr ""
-"Prema sobre unha conversa para vela. Empathy seleccionaraÌ o texto "
-"na conversa que coincida cos seus termos de busca."
+"Mostrarase calquera conversa que coincida cos seus termos de busca. Por "
+"omisión, as conversas ordénanse por data."
-#: C/prev-conv.page:89(title)
+#: C/prev-conv.page:80(title)
msgid "Browse previous conversations"
msgstr "Explorar as conversas anteriores"
-#: C/prev-conv.page:91(p)
+#: C/prev-conv.page:82(p)
msgid ""
"You can browse your previous conversations with your contacts or in chat "
"rooms by date."
@@ -1149,11 +1125,7 @@ msgstr ""
"Pode examinar por data as conversas previas cos seus contactos ou en salas "
"de conversa."
-#: C/prev-conv.page:100(p)
-msgid "Select the Conversations tab."
-msgstr "Seleccione o separador Conversas ."
-
-#: C/prev-conv.page:103(p)
+#: C/prev-conv.page:91(p)
msgid ""
"Select an account from the drop-down list in the top left. A list of "
"contacts and chat room for that account will be shown below."
@@ -1161,7 +1133,7 @@ msgstr ""
"Seleccione unha conta desde a lista despregaÌbel na parte superior esquerda. "
"Mostrarase unha lista de contactos e salas de conversa para dita conta."
-#: C/prev-conv.page:107(p)
+#: C/prev-conv.page:95(p)
msgid ""
"Select a contact or chat room to view your previous conversations from. By "
"default the most recent conversation will be shown."
@@ -1169,7 +1141,7 @@ msgstr ""
"Seleccione un contacto ou sala de conversa desde a que ver as anteriores "
"conversas. Por omisioÌn mostrarase a conversa maÌis recente."
-#: C/prev-conv.page:111(p)
+#: C/prev-conv.page:99(p)
msgid ""
"You can browse your conversations by date. Days on which you had a "
"conversation with the selected contact will be shown in bold text. Click a "
@@ -1181,25 +1153,33 @@ msgstr ""
"para seleccionala e prema nas frechas ao lado do mes e ano para explorar as "
"datas maÌis cercanas."
-#: C/prev-conv.page:117(p)
+#: C/prev-conv.page:105(p)
+#| msgid ""
+#| "You can search for text in the displayed conversation by typing into the "
+#| "search field at the top. The matching text will be highlighted."
msgid ""
-"You can search for text in the displayed conversation by typing into the "
-"search field at the top. The matching text will be highlighted."
+"You can search for text in the conversations by typing into the search field "
+"at the top. The matching conversations will be showed."
msgstr ""
-"Pode buscar dentro do texto das conversas mostradas escribindo na caixa de "
+"Pode buscar dentro do texto das conversas escribindo no campo de texto de "
"busca na parte superior. O texto coincidente resaltarase."
-#: C/prev-conv.page:121(p)
+#: C/prev-conv.page:111(p)
+#| msgid ""
+#| "You can quickly view the previous conversations with one of your contacts "
+#| "from the Contact List window. Simply right click the contact "
+#| "and choose View Previous Conversations . The Previous "
+#| "Conversations window will open with that contact already selected."
msgid ""
"You can quickly view the previous conversations with one of your contacts "
"from the Contact List window. Simply right click the contact and "
-"choose View Previous Conversations . The Previous "
-"Conversations window will open with that contact already selected."
+"choose Previous Conversations . The Previous Conversations"
+"gui> window will open with that contact already selected."
msgstr ""
"Pode ver rapidamente as conversas anteriores con un dos seus contactos desde "
-"a xanela Lista de contactos . Simplemente prema co botoÌn dereito "
+"a xanela Lista de contactos . Simplemente prema co botón dereito "
"do rato sobre o contacto e seleccione Conversas anteriores . "
-"Abrirase a xanela Ver conversas previas co contacto seleccionado."
+"Abrirase a xanela Conversas anteriores co contacto seleccionado."
#: C/link-contacts.page:11(desc)
msgid "Merge and separate different contacts into a single one."
@@ -1286,7 +1266,6 @@ msgstr ""
"presencia en linÌa maÌis alta."
#: C/link-contacts.page:91(title)
-#| msgid "Creating Notes"
msgid "Separating contacts"
msgstr "Separar contactos"
@@ -1344,7 +1323,6 @@ msgid "Under the following conditions:"
msgstr "Baixo as seguintes condicioÌns:"
#: C/license.page:38(em)
-#| msgid "Introduction"
msgid "Attribution"
msgstr "AtribucioÌn"
@@ -1491,6 +1469,7 @@ msgstr ""
"usar para rexistrar o seu alcume."
#: C/irc-nick-password.page:63(p) C/import-account.page:61(p)
+#: C/add-account.page:74(p)
msgid "Click Apply ."
msgstr "Prema Aplicar ."
@@ -1645,9 +1624,6 @@ msgstr ""
#. When image changes, this message will be marked fuzzy or untranslated for you.
#. It doesn't matter what you translate it to: it's not used at all.
#: C/introduction.page:41(None)
-#| msgid ""
-#| "@@image: 'figures/tomboy-main-menu.png'; "
-#| "md5=420af676a38a074abd5431e7a07d1fec"
msgid ""
"@@image: 'figures/empathy-main-window.png'; "
"md5=54908dcb2588beddb15ef0968d2c2582"
@@ -1711,9 +1687,6 @@ msgstr "Xanela principal de Empathy ."
#. When image changes, this message will be marked fuzzy or untranslated for you.
#. It doesn't matter what you translate it to: it's not used at all.
#: C/index.page:28(None)
-#| msgid ""
-#| "@@image: 'figures/delete-notebook.png'; "
-#| "md5=f1b41a9034715d6314ee36b66389c897"
msgid ""
"@@image: 'figures/empathy-logo.png'; md5=1afc419a644e90b16393807e35cb5cb2"
msgstr ""
@@ -1959,7 +1932,6 @@ msgstr ""
"existentes."
#: C/group-conversations.page:133(p)
-#| msgid "Double-click on a note."
msgid "Double-click on the name of a room to join it."
msgstr "Prema duÌas veces sobre o nome dunha sala aÌ que queira unirse."
@@ -2163,7 +2135,6 @@ msgid "Only your contacts can see your geographical position."
msgstr "SoÌ os seus contactos poden ver a suÌa posicioÌn xeograÌfica."
#: C/geolocation-privacy.page:63(title)
-#| msgid "What links here?"
msgid "What is the privacy mode"
msgstr "Que eÌ o modo de privacidade"
@@ -2313,7 +2284,6 @@ msgid "Join favorite rooms"
msgstr "Unirse aÌs salas favoritas"
#: C/favorite-rooms.page:71(p)
-#| msgid "Press the Tab key."
msgid "Press F5 ."
msgstr "Prema F5 ."
@@ -2384,11 +2354,11 @@ msgstr "Cando remate prema ."
msgid "Prevent Empathy from automatically logging in to an account."
msgstr "Evitar que Empathy inicie sesioÌn automaticamente na conta."
-#: C/disable-account.page:39(title)
+#: C/disable-account.page:40(title)
msgid "Disable an account"
msgstr "Desactivar unha conta"
-#: C/disable-account.page:41(p)
+#: C/disable-account.page:42(p)
msgid ""
"You can disable an account to prevent Empathy from logging in to "
"it without removing the account entirely. You may wish to disable and re-"
@@ -2400,7 +2370,7 @@ msgstr ""
"conta e reactivala se soÌ quere iniciar sesioÌn na conta de vez en cando, pero "
"segue querendo usar Empathy para outras contas."
-#: C/disable-account.page:52(p)
+#: C/disable-account.page:53(p)
msgid ""
"Select the account you wish to disable from the accounts list on the left "
"side of the window."
@@ -2408,19 +2378,16 @@ msgstr ""
"Seleccione a conta que quere desactivar desde a lista de contas na parte "
"esquerda da xanela."
-#: C/disable-account.page:56(p)
-msgid ""
-"Deselect Enabled on the right side of the "
-"window."
-msgstr ""
-"Deseleccione Activada na parte dereita da "
-"xanela."
+#: C/disable-account.page:57(p)
+msgid "On the right side of the window, switch it off."
+msgstr "Na parte dereita da xanela, desactÃveo."
#: C/disable-account.page:62(p)
-msgid ""
-"To re-enable the account, simply select Enabled"
-"gui>."
-msgstr "Para reactivar a conta simplemente seleccione ."
+#| msgid ""
+#| "To re-enable the account, simply select Enabled"
+#| "gui>."
+msgid "To re-enable the account, switch it on."
+msgstr "Para reactivar a conta simplemente actÃveo."
#: C/create-account.page:9(desc)
msgid "Register for an account with one of the supported messaging services."
@@ -2642,11 +2609,11 @@ msgid "Change your status to advertise your availability to your contacts."
msgstr ""
"Cambie o seu estado para avisar da suÌa disponÌibilidade aos seus contactos."
-#: C/change-status.page:34(title)
+#: C/change-status.page:39(title)
msgid "Change your status"
msgstr "Cambiar o seu estado"
-#: C/change-status.page:36(p)
+#: C/change-status.page:41(p)
msgid ""
"You can set your status to indicate your availability to your contacts. "
"Empathy allows you to select from a list of defined statuses."
@@ -2655,30 +2622,35 @@ msgstr ""
"contactos Empathy permiÌtelle seleccionar unha lista de estados "
"predefinidos."
-#: C/change-status.page:41(p)
+#: C/change-status.page:46(p)
msgid ""
"Click on the drop-down list at the top of the Contact List window."
msgstr ""
"Prema na lista despregaÌbel na parte superior da xanela da Lista de "
"contactos ."
-#: C/change-status.page:46(p)
+#: C/change-status.page:51(p)
msgid "Select a status from the list."
msgstr "Seleccione o estado desde a lista."
-#: C/change-status.page:52(p)
+#: C/change-status.page:57(p)
+#| msgid ""
+#| "See for a list of the built-in statuses and "
+#| "what they mean. You can also add custom "
+#| "status messages to provide more information about your "
+#| "availability to your contacts."
msgid ""
"See for a list of the built-in statuses and "
-"what they mean. You can also add custom "
+"what they mean. You can also add custom "
"status messages to provide more information about your availability "
"to your contacts."
msgstr ""
"Consulte a para obter unha lista de estados "
-"predefinidos e o que significan. TameÌn pode engadir mensaxes de estado personalizados para fornecerlle aos "
-"seus contactos maÌis informacioÌn sobre a suÌa disponÌibilidade."
+"predefinidos e o que significan. Tamén pode engadir mensaxes de estado personalizados para fornecerlle aos "
+"seus contactos maÃs información sobre a sú dispoñibilidade."
-#: C/change-status.page:58(p)
+#: C/change-status.page:63(p)
msgid ""
"If you do not use your computer for a while, or if the screensaver is on, "
"the status will be automatically set to Away."
@@ -2808,7 +2780,6 @@ msgstr ""
"que vai dar tempo incluirase."
#: C/audio-video.page:128(p)
-#| msgid "Search"
msgid "Service"
msgstr "Servizo"
@@ -2987,11 +2958,11 @@ msgstr ""
msgid "Add a new account to Empathy ."
msgstr "Engadir unha nova conta en Empathy ."
-#: C/add-account.page:39(title)
+#: C/add-account.page:40(title)
msgid "Add a new account"
msgstr "Engadir unha nova conta"
-#: C/add-account.page:41(p)
+#: C/add-account.page:42(p)
msgid ""
"You can add instant messaging accounts from any supported service to "
"communicate with all of your contacts in Empathy . For some "
@@ -3004,11 +2975,12 @@ msgstr ""
"conta. Para obter maÌis informacioÌn consulte a ."
-#: C/add-account.page:52(p)
-msgid "Click Add ."
-msgstr "Prema Engadir ."
+#: C/add-account.page:53(p)
+#| msgid "Click Add ."
+msgid "Click + ."
+msgstr "Prema + ."
-#: C/add-account.page:57(p)
+#: C/add-account.page:58(p)
msgid ""
"From the Protocol drop-down list, select the type of account you "
"wish to add."
@@ -3016,7 +2988,7 @@ msgstr ""
"Desde a lista despregaÌbel Protocolo seleccione o tipo de conta que "
"quere engadir."
-#: C/add-account.page:61(p)
+#: C/add-account.page:62(p)
msgid ""
"If you do not already have a registered account, select Create a new "
"account on the server . This feature is not available for all account "
@@ -3028,22 +3000,23 @@ msgstr ""
"tipos de contas e pode non funcionar con alguÌns fornecedores de contas. Para "
"obter maÌis informacioÌn consulte a ."
-#: C/add-account.page:66(p)
+#: C/add-account.page:69(p)
+#| msgid ""
+#| "Enter the required information. For most accounts, you will only need a "
+#| "login ID and a password. Some accounts may require additional "
+#| "information. See for more "
+#| "information."
msgid ""
"Enter the required information. For most accounts, you will only need a "
"login ID and a password. Some accounts may require additional information. "
-"See for more information."
+"See for more information."
msgstr ""
-"Introduza a informacioÌn requirida. Para a maioriÌa das contas soÌ necesitaraÌ "
-"un ID de inicio de sesioÌn e un contrasinal. Algunhas contas poden requirir "
-"informacioÌn adicional. Para obter maÌis informacioÌn consulte a ."
-#: C/add-account.page:71(p)
-msgid "Click Log in ."
-msgstr "Prema Iniciar sesioÌn ."
-
-#: C/add-account.page:78(p)
+#: C/add-account.page:81(p)
msgid ""
"To change the name that identifies the account in the Accounts "
"window, select the account from the list on the left and either click on the "
@@ -3154,7 +3127,6 @@ msgid "Resource"
msgstr "Recurso"
#: C/account-jabber.page:60(gui)
-#| msgid "Print"
msgid "Priority"
msgstr "Prioridad"
@@ -3199,17 +3171,12 @@ msgstr ""
#. When image changes, this message will be marked fuzzy or untranslated for you.
#. It doesn't matter what you translate it to: it's not used at all.
#: C/account-irc.page:106(None)
-#| msgid ""
-#| "@@image: 'figures/add-to-notebook.png'; "
-#| "md5=03469ddb5137f525ac4f8318caed5532"
msgid "@@image: 'figures/gtk-add.png'; md5=a856b499d8d4681b70b5ce6f25bc5c6d"
msgstr "@@image: 'figures/gtk-add.png'; md5=a856b499d8d4681b70b5ce6f25bc5c6d"
#. When image changes, this message will be marked fuzzy or untranslated for you.
#. It doesn't matter what you translate it to: it's not used at all.
#: C/account-irc.page:112(None)
-#| msgid ""
-#| "@@image: 'figures/new-notebook.png'; md5=b5645185d7fed6183b550c0dab7b72cb"
msgid "@@image: 'figures/gtk-remove.png'; md5=215e3a325a3dd619874e35c30a018bb6"
msgstr ""
"@@image: 'figures/gtk-remove.png'; md5=215e3a325a3dd619874e35c30a018bb6"
@@ -3458,6 +3425,67 @@ msgstr ""
msgid "translator-credits"
msgstr "Fran Dieguez , 2011."
+#~ msgid "Click on Remove ."
+#~ msgstr "Prema Quitar ."
+
+#~ msgid ""
+#~ "Deselect the Enabled check-box next to the name of your "
+#~ "account, and then select it again to try to reconnect to the service."
+#~ msgstr ""
+#~ "Deseleccione , e seleccioÌneo de novo para tentar "
+#~ "reconectarse ao servizo."
+
+#~ msgid ""
+#~ "Check that the Enabled check-box is "
+#~ "selected. If it is not, select the check-box to enable the account."
+#~ msgstr ""
+#~ "Comprobe que a casilla de verificacioÌn Activada"
+#~ "gui> estaÌ seleccionada. Se non o estaÌ marque a casilla de verificacioÌn "
+#~ "para activar a conta."
+
+#~ msgid ""
+#~ "Highlighting text is quirky: #593733. If there's an actual "
+#~ "highlighting going on, independent of the selection (like in yellow or "
+#~ "something), we can use the term \"highlight\". Otherwise we need to use "
+#~ "the term \"select\". Watch that bug."
+#~ msgstr ""
+#~ "Resaltar texto eÌ estranÌo #59733. Se existe un resaltado actualmente, "
+#~ "independente da seleccioÌn (en amarelo, por exemplo), poÌdese usar o termo "
+#~ "«resaltar». De outra forma deÌbese usar o termo «seleccionado». Siga o "
+#~ "proceso do erro."
+
+#~ msgid "Select the Search tab."
+#~ msgstr "Seleccione o separador Buscar ."
+
+#~ msgid ""
+#~ "In the For field, type the text you want to search for. Click "
+#~ "Find or press Enter ."
+#~ msgstr ""
+#~ "No campo Para escriba o texto que quere buscar. Prema "
+#~ "Buscar ou prema Intro ."
+
+#~ msgid ""
+#~ "Click on a conversation to view it. Empathy will select the "
+#~ "text in the conversation that matched your search terms."
+#~ msgstr ""
+#~ "Prema sobre unha conversa para vela. Empathy seleccionaraÌ o "
+#~ "texto na conversa que coincida cos seus termos de busca."
+
+#~ msgid "Select the Conversations tab."
+#~ msgstr "Seleccione o separador Conversas ."
+
+#~ msgid ""
+#~ "Deselect Enabled on the right side of the "
+#~ "window."
+#~ msgstr ""
+#~ "Deseleccione Activada na parte dereita da "
+#~ "xanela."
+
+#~ msgid "Click Log in ."
+#~ msgstr "Prema Iniciar sesioÌn ."
+
#~ msgid ""
#~ "@@image: 'figures/tomboy-new-note.png'; "
#~ "md5=ba337ad3ae256f3fdf79afeef82d7883"
diff --git a/help/it/it.po b/help/it/it.po
index 4f3b1369..b1fdecba 100644
--- a/help/it/it.po
+++ b/help/it/it.po
@@ -1,19 +1,20 @@
# Italian translation of empathy help.
-# Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+# Copyright (C) 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
# This package is distributed under the same license as the empathy package.
+# Milo Casagrande , 2008, 2009, 2010, 2011.
#
-# Milo Casagrande , 2008, 2009, 2010.
msgid ""
msgstr ""
"Project-Id-Version: empathy help\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-09-29 11:54+0000\n"
-"PO-Revision-Date: 2010-10-02 10:42+0200\n"
+"PO-Revision-Date: 2011-12-15 22:20+0100\n"
"Last-Translator: Milo Casagrande \n"
"Language-Team: Italian \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
+"Content-Transfer-Encoding: 8-bit\n"
+"Plural-Forms: nplurals=2; plural=(n!=1);\n"
#. When image changes, this message will be marked fuzzy or untranslated for you.
#. It doesn't matter what you translate it to: it's not used at all.
@@ -131,7 +132,7 @@ msgstr ""
"Dalla finestra Elenco contatti , fare clic sull'icona della chiamata "
"video a fianco del nome del contatto da chiamare e scegliere Chiamata video ."
+"style=\"menuitem\">Chiamata video ."
#: C/video-call.page:43(p) C/audio-call.page:42(p)
msgid ""
@@ -749,8 +750,8 @@ msgid ""
"The People Nearby service is a serverless communication service: you do not "
"need to connect and authenticate to a central server in order to use it."
msgstr ""
-"Il servizio «Persone nelle vicinanze» è un servizio di comunicazione privo di "
-"server centrale: non è necessario connettersi e autenticarsi a un server "
+"Il servizio «Persone nelle vicinanze» è un servizio di comunicazione privo "
+"di server centrale: non è necessario connettersi e autenticarsi a un server "
"centrale per poterlo utilizzare."
#: C/salut-protocol.page:45(p)
@@ -3422,11 +3423,12 @@ msgid ""
"more details."
msgstr ""
"All'interno di alcune reti è possibile registrare i soprannomi utilizzando "
-"un servizio chiamato «NickServ». Empathy non supporta direttamente "
-"le password per i soprannomi, ma con alcune reti, compresa la molto diffusa "
-"FreeNode, le password relative al server vengono inoltrare al «NickServ», "
-"consentendo di usare questo campo per identificarsi con il «NickServ». Per "
-"maggiori informazioni, consultare ."
+"un servizio chiamato «NickServ». Empathy non supporta "
+"direttamente le password per i soprannomi, ma con alcune reti, compresa la "
+"molto diffusa FreeNode, le password relative al server vengono inoltrare al "
+"«NickServ», consentendo di usare questo campo per identificarsi con il "
+"«NickServ». Per maggiori informazioni, consultare ."
#: C/account-irc.page:76(gui)
msgid "Real name"
@@ -3480,8 +3482,8 @@ msgid ""
"src=\"figures/gtk-add.png\" width=\"16\" height=\"16\">Add."
msgstr ""
"Per aggiungere una rete all'elenco, fare clic su Aggiungi ."
+"\"image/png\" src=\"figures/gtk-add.png\" width=\"16\" height="
+"\"16\">Aggiungi."
#: C/account-irc.page:107(p)
msgid ""
diff --git a/help/pl/pl.po b/help/pl/pl.po
index 9d13261b..342520d1 100644
--- a/help/pl/pl.po
+++ b/help/pl/pl.po
@@ -7,14 +7,14 @@
msgid ""
msgstr ""
"Project-Id-Version: empathy\n"
-"POT-Creation-Date: 2011-10-28 13:54+0000\n"
+"POT-Creation-Date: 2011-12-18 15:36+0000\n"
"PO-Revision-Date: 2010-03-15 21:39+0100\n"
"Last-Translator: Aleksander Åukasiewicz \n"
"Language-Team: Polish \n"
-"Language: pl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Language: pl\n"
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
"|| n%100>=20) ? 1 : 2);\n"
"X-Poedit-Language: Polish\n"
@@ -22,7 +22,7 @@ msgstr ""
#. When image changes, this message will be marked fuzzy or untranslated for you.
#. It doesn't matter what you translate it to: it's not used at all.
-#: C/video-call.page:38(None) C/audio-video.page:70(None)
+#: C/video-call.page:39(None) C/audio-video.page:70(None)
#: C/audio-call.page:36(None)
msgid "@@image: 'figures/camera-web.png'; md5=8166b4372f25b78cbf5a64fe2eac2ce5"
msgstr ""
@@ -32,12 +32,12 @@ msgstr ""
msgid "Start a video conversation with one of your contacts."
msgstr "RozpoczÄcie wideorozmowy z jednym z kontaktów."
-#: C/video-call.page:21(name) C/status-icons.page:16(name)
+#: C/video-call.page:22(name) C/status-icons.page:16(name)
#: C/share-desktop.page:14(name) C/set-custom-status.page:19(name)
#: C/send-file.page:21(name) C/salut-protocol.page:18(name)
-#: C/remove-account.page:18(name) C/prob-conn-neterror.page:18(name)
-#: C/prob-conn-name.page:17(name) C/prob-conn-auth.page:21(name)
-#: C/prob-conn-acctdisabled.page:18(name) C/prev-conv.page:16(name)
+#: C/remove-account.page:18(name) C/prob-conn-neterror.page:19(name)
+#: C/prob-conn-name.page:18(name) C/prob-conn-auth.page:21(name)
+#: C/prob-conn-acctdisabled.page:19(name) C/prev-conv.page:16(name)
#: C/link-contacts.page:15(name) C/irc-start-conversation.page:15(name)
#: C/irc-send-file.page:16(name) C/irc-nick-password.page:18(name)
#: C/irc-manage.page:20(name) C/irc-join-room.page:16(name)
@@ -48,18 +48,18 @@ msgstr "RozpoczÄcie wideorozmowy z jednym z kontaktów."
#: C/geolocation-turn.page:18(name) C/geolocation-supported.page:16(name)
#: C/geolocation-privacy.page:17(name) C/geolocation-not-showing.page:17(name)
#: C/geolocation.page:17(name) C/favorite-rooms.page:14(name)
-#: C/disable-account.page:20(name) C/create-account.page:19(name)
+#: C/disable-account.page:21(name) C/create-account.page:19(name)
#: C/audio-video.page:17(name) C/audio-call.page:19(name)
#: C/add-account.page:20(name)
msgid "Milo Casagrande"
msgstr "Milo Casagrande"
-#: C/video-call.page:22(email) C/status-icons.page:17(email)
+#: C/video-call.page:23(email) C/status-icons.page:17(email)
#: C/share-desktop.page:15(email) C/set-custom-status.page:20(email)
#: C/send-file.page:22(email) C/salut-protocol.page:19(email)
-#: C/remove-account.page:19(email) C/prob-conn-neterror.page:19(email)
-#: C/prob-conn-name.page:18(email) C/prob-conn-auth.page:22(email)
-#: C/prob-conn-acctdisabled.page:19(email) C/prev-conv.page:17(email)
+#: C/remove-account.page:19(email) C/prob-conn-neterror.page:20(email)
+#: C/prob-conn-name.page:19(email) C/prob-conn-auth.page:22(email)
+#: C/prob-conn-acctdisabled.page:20(email) C/prev-conv.page:17(email)
#: C/link-contacts.page:16(email) C/irc-start-conversation.page:16(email)
#: C/irc-send-file.page:17(email) C/irc-nick-password.page:19(email)
#: C/irc-manage.page:21(email) C/irc-join-room.page:17(email)
@@ -70,19 +70,19 @@ msgstr "Milo Casagrande"
#: C/geolocation-turn.page:19(email) C/geolocation-supported.page:17(email)
#: C/geolocation-privacy.page:18(email)
#: C/geolocation-not-showing.page:18(email) C/geolocation.page:18(email)
-#: C/favorite-rooms.page:15(email) C/disable-account.page:21(email)
+#: C/favorite-rooms.page:15(email) C/disable-account.page:22(email)
#: C/create-account.page:20(email) C/audio-video.page:18(email)
#: C/audio-call.page:20(email) C/add-account.page:21(email)
msgid "milo@ubuntu.com"
msgstr "milo@ubuntu.com"
-#: C/video-call.page:25(p) C/status-icons.page:24(p)
+#: C/video-call.page:26(p) C/status-icons.page:24(p)
#: C/share-desktop.page:22(p) C/set-custom-status.page:23(p)
#: C/send-message.page:21(p) C/send-file.page:25(p)
#: C/salut-protocol.page:22(p) C/remove-account.page:22(p)
-#: C/prob-conn.page:18(p) C/prob-conn-neterror.page:22(p)
-#: C/prob-conn-name.page:21(p) C/prob-conn-auth.page:25(p)
-#: C/prob-conn-acctdisabled.page:22(p) C/prev-conv.page:24(p)
+#: C/prob-conn.page:18(p) C/prob-conn-neterror.page:23(p)
+#: C/prob-conn-name.page:22(p) C/prob-conn-auth.page:25(p)
+#: C/prob-conn-acctdisabled.page:23(p) C/prev-conv.page:24(p)
#: C/link-contacts.page:19(p) C/irc-start-conversation.page:19(p)
#: C/irc-send-file.page:20(p) C/irc-nick-password.page:22(p)
#: C/irc-manage.page:24(p) C/irc-join-room.page:20(p)
@@ -92,23 +92,23 @@ msgstr "milo@ubuntu.com"
#: C/geolocation-what-is.page:22(p) C/geolocation-turn.page:22(p)
#: C/geolocation-supported.page:20(p) C/geolocation-privacy.page:21(p)
#: C/geolocation-not-showing.page:21(p) C/geolocation.page:21(p)
-#: C/favorite-rooms.page:18(p) C/disable-account.page:28(p)
-#: C/create-account.page:23(p) C/change-status.page:23(p)
+#: C/favorite-rooms.page:18(p) C/disable-account.page:29(p)
+#: C/create-account.page:23(p) C/change-status.page:28(p)
#: C/audio-video.page:21(p) C/audio-call.page:23(p) C/add-contact.page:22(p)
#: C/add-account.page:28(p) C/accounts-window.page:22(p)
#: C/account-jabber.page:18(p) C/account-irc.page:20(p)
msgid "Creative Commons Share Alike 3.0"
msgstr "Creative Commons Na tych samych warunkach 3.0"
-#: C/video-call.page:28(title)
+#: C/video-call.page:29(title)
msgid "Start a video conversation"
msgstr "RozpoczÄcie wideorozmowy"
-#: C/video-call.page:30(p)
+#: C/video-call.page:31(p)
#, fuzzy
msgid ""
"If you have a webcam, you can call your contacts and have a video "
-"conversation with them. This features only works with certain types of "
+"conversation with them. This feature only works with certain types of "
"accounts, and it requires the other person to have an application that "
"supports video calls."
msgstr ""
@@ -117,7 +117,7 @@ msgstr ""
"rodzajami kont i wymaga, aby inna osoba posiadaÅa program obsÅugujÄ
cy "
"wideorozmowy."
-#: C/video-call.page:37(p)
+#: C/video-call.page:38(p)
#, fuzzy
msgid ""
"From the Contact List window, click the Wideorozmowa . Można również nacisnÄ
Ä "
"kontakt prawym przyciskiem myszy i wybraÄ Wideorozmowa ."
-#: C/video-call.page:43(p) C/audio-call.page:42(p)
+#: C/video-call.page:44(p) C/audio-call.page:42(p)
msgid ""
"A new window will open. When the connection is established, you will see "
"Connected at the bottom of the window, along with the total "
@@ -140,14 +140,14 @@ msgstr ""
"Zostanie otworzone nowe okno. Po ustanowieniu poÅÄ
czenia, na dole okna "
"pojawi siÄ komunikat PoÅÄ
czony wraz z czasem rozmowy."
-#: C/video-call.page:48(p) C/audio-call.page:48(p)
+#: C/video-call.page:49(p) C/audio-call.page:48(p)
#, fuzzy
msgid "To end the conversation, click on Hang up ."
msgstr ""
"Aby zakoÅczyÄ rozmowÄ, należy wybraÄ ZadzwoÅ"
"gui>RozÅÄ
cz ."
-#: C/video-call.page:54(p)
+#: C/video-call.page:55(p)
#, fuzzy
msgid ""
"To turn a video conversation into an audio conversation, choose ZadzwoÅ"
"gui>RozÅÄ
cz ."
-#: C/video-call.page:60(title)
+#: C/video-call.page:61(title)
#, fuzzy
msgid "Start a video conversation with a meta-contact"
msgstr "RozpoczÄcie wideorozmowy z jednym z kontaktów."
-#: C/video-call.page:63(p) C/send-message.page:53(p) C/audio-call.page:66(p)
+#: C/video-call.page:64(p) C/send-message.page:53(p) C/audio-call.page:66(p)
#, fuzzy
msgid ""
"From the Contact List window, right-click on the meta-contact."
msgstr ""
"W oknie Lista kontaktów należy kliknÄ
Ä w rozwijanÄ
listÄ na górze."
-#: C/video-call.page:68(p)
+#: C/video-call.page:69(p)
#, fuzzy
msgid ""
"Select the contact you want to have the conversation, and from the menu "
@@ -177,7 +177,7 @@ msgstr ""
"KliknÄ
Ä prawym przyciskiem myszy w nazwÄ kontaktu, z którym chcemy nawiÄ
zaÄ "
"rozmowÄ i wybraÄ Rozmowa "
-#: C/video-call.page:75(p) C/send-message.page:65(p) C/audio-call.page:78(p)
+#: C/video-call.page:76(p) C/send-message.page:65(p) C/audio-call.page:78(p)
msgid ""
"To recognize if a contact is a meta-contact , move your mouse on a "
"contact in the Contact List window, and stop over it for a "
@@ -215,7 +215,7 @@ msgstr "Znaczenie różnych stanów dostÄpnoÅci i ikon tych stanów."
#: C/status-icons.page:20(name) C/salut-protocol.page:36(cite)
#: C/prev-conv.page:20(name) C/prev-conv.page:38(cite)
-#: C/import-account.page:27(name) C/disable-account.page:24(name)
+#: C/import-account.page:27(name) C/disable-account.page:25(name)
#: C/audio-video.page:109(cite) C/audio-video.page:117(cite)
#: C/add-account.page:24(name) C/accounts-window.page:18(name)
#: C/account-jabber.page:14(name) C/account-irc.page:16(name)
@@ -223,7 +223,7 @@ msgid "Shaun McCance"
msgstr "Shaun McCance"
#: C/status-icons.page:21(email) C/prev-conv.page:21(email)
-#: C/import-account.page:28(email) C/disable-account.page:25(email)
+#: C/import-account.page:28(email) C/disable-account.page:26(email)
#: C/add-account.page:25(email) C/accounts-window.page:19(email)
#: C/account-jabber.page:15(email) C/account-irc.page:17(email)
msgid "shaunm@gnome.org"
@@ -586,16 +586,16 @@ msgid "Send a message to one of your contacts."
msgstr "WysyÅanie wiadomoÅci do jednego z kontaktów."
#: C/send-message.page:17(name) C/send-file.page:17(name)
-#: C/prob-conn.page:14(name) C/prob-conn-neterror.page:14(name)
-#: C/prob-conn-auth.page:17(name) C/prob-conn-acctdisabled.page:14(name)
-#: C/change-status.page:19(name) C/add-contact.page:18(name)
+#: C/prob-conn.page:14(name) C/prob-conn-neterror.page:15(name)
+#: C/prob-conn-auth.page:17(name) C/prob-conn-acctdisabled.page:15(name)
+#: C/change-status.page:24(name) C/add-contact.page:18(name)
msgid "Phil Bull"
msgstr "Phil Bull"
#: C/send-message.page:18(email) C/send-file.page:18(email)
-#: C/prob-conn.page:15(email) C/prob-conn-neterror.page:15(email)
-#: C/prob-conn-auth.page:18(email) C/prob-conn-acctdisabled.page:15(email)
-#: C/change-status.page:20(email) C/add-contact.page:19(email)
+#: C/prob-conn.page:15(email) C/prob-conn-neterror.page:16(email)
+#: C/prob-conn-auth.page:18(email) C/prob-conn-acctdisabled.page:16(email)
+#: C/change-status.page:25(email) C/add-contact.page:19(email)
msgid "philbull@gmail.com"
msgstr "philbull@gmail.com"
@@ -776,7 +776,7 @@ msgstr ""
"danych konta."
#: C/remove-account.page:42(p) C/irc-nick-password.page:50(p)
-#: C/disable-account.page:48(p) C/add-account.page:48(p)
+#: C/disable-account.page:49(p) C/add-account.page:48(p)
msgid ""
"From the Contact List window, choose Edit"
"gui>Accounts , or press F4 ."
@@ -824,7 +824,7 @@ msgstr "Problemy z poÅÄ
czeniem z usÅugami komunikatora"
#. When image changes, this message will be marked fuzzy or untranslated for you.
#. It doesn't matter what you translate it to: it's not used at all.
-#: C/prob-conn-neterror.page:58(None) C/prob-conn-name.page:43(None)
+#: C/prob-conn-neterror.page:59(None) C/prob-conn-name.page:44(None)
#: C/prob-conn-auth.page:58(None) C/account-irc.page:109(None)
msgid "@@image: 'figures/gtk-edit.png'; md5=4f21b451732817be0604fe3e2c8da98b"
msgstr "@@image: 'figures/gtk-edit.png'; md5=4f21b451732817be0604fe3e2c8da98b"
@@ -836,15 +836,15 @@ msgid ""
msgstr ""
"Komunikat bÅÄdu \"BÅÄ
d sieci \" wyÅwietlany jest w oknie gÅównym."
-#: C/prob-conn-neterror.page:33(title)
+#: C/prob-conn-neterror.page:34(title)
msgid "I get a message that says âNetwork errorâ"
msgstr "Pojawia siÄ komunikat \"BÅÄ
d sieci\""
-#: C/prob-conn-neterror.page:36(cite)
+#: C/prob-conn-neterror.page:37(cite)
msgid "shaunm"
msgstr "shaunm"
-#: C/prob-conn-neterror.page:37(p)
+#: C/prob-conn-neterror.page:38(p)
msgid ""
"Empathy no longer allows you to create an IRC account without a valid nick. "
"I've removed the guide link. Remove the text."
@@ -852,7 +852,7 @@ msgstr ""
"Program Empathy nie pozwala już na utworzenie konta IRC bez ważnego "
"pseudonimu. Link do podrÄcznika zostaÅ usuniÄty. Należy usunÄ
Ä tekst."
-#: C/prob-conn-neterror.page:41(p)
+#: C/prob-conn-neterror.page:42(p)
msgid ""
"This kind of error happens when Empathy cannot communicate with "
"the instant messaging service for some reason."
@@ -860,7 +860,7 @@ msgstr ""
"Tego rodzaju bÅÄ
d pojawia siÄ, gdy program Empathy nie może, z "
"pewnego powodu, poÅÄ
czyÄ siÄ z usÅugÄ
komunikatora."
-#: C/prob-conn-neterror.page:45(p)
+#: C/prob-conn-neterror.page:46(p)
msgid ""
"Also, this kind of error happens when you try to use an IRC account without "
"setting a nickname."
@@ -868,15 +868,15 @@ msgstr ""
"Ten rodzaj bÅÄdu pojawia siÄ także podczas próby użycia konta IRC bez "
"ustawienia pseudonimu."
-#: C/prob-conn-neterror.page:52(p) C/prob-conn-auth.page:45(p)
-#: C/prob-conn-acctdisabled.page:43(p)
+#: C/prob-conn-neterror.page:53(p) C/prob-conn-auth.page:45(p)
+#: C/prob-conn-acctdisabled.page:44(p)
msgid ""
"Make sure that you are connected to the Internet, or to a local area network."
msgstr ""
"Należy siÄ upewniÄ, że poÅÄ
czenie z Internetem lub sieciÄ
lokalnÄ
zostaÅo "
"ustanowione."
-#: C/prob-conn-neterror.page:57(p) C/prob-conn-name.page:42(p)
+#: C/prob-conn-neterror.page:58(p) C/prob-conn-name.page:43(p)
#: C/prob-conn-auth.page:57(p)
msgid ""
"Click the Edytuj w oknie komunikatu bÅÄdu."
-#: C/prob-conn-neterror.page:65(p) C/prob-conn-acctdisabled.page:59(p)
+#: C/prob-conn-neterror.page:64(p) C/prob-conn-acctdisabled.page:60(p)
msgid ""
"Check in the Advanced section that all the details are correct. "
"You should be able to find these details from the website of the messaging "
@@ -895,19 +895,20 @@ msgstr ""
"sÄ
poprawne. SzczegóÅy powinny byÄ możliwe do sprawdzenia na stronie usÅugi "
"komunikatora."
-#: C/prob-conn-neterror.page:82(p) C/prob-conn-auth.page:68(p)
+#: C/prob-conn-neterror.page:79(p) C/prob-conn-name.page:65(p)
+#, fuzzy
msgid ""
-"Deselect the Enabled , and then select it again to try to "
-"reconnect to the service."
+"Switch the account off, and then switch it on to try to reconnect to the "
+"service."
msgstr ""
"Należy odznaczyÄ pole WÅÄ
czone znajdujÄ
ce siÄ obok nazwy konta, a "
"nastÄpnie wybraÄ je ponownie, aby ustanowiÄ poÅÄ
czenie z usÅugÄ
"
-#: C/prob-conn-neterror.page:90(title)
+#: C/prob-conn-neterror.page:87(title)
msgid "Proxy support"
msgstr "ObsÅuga serwerów proxy"
-#: C/prob-conn-neterror.page:91(p)
+#: C/prob-conn-neterror.page:88(p)
msgid ""
"At the moment Empathy can not be configured to work with a proxy."
msgstr ""
@@ -926,11 +927,11 @@ msgstr ""
"Pojawia siÄ komunikat bÅÄdu \"Pseudonim jest już używany \" w "
"oknie gÅównym."
-#: C/prob-conn-name.page:32(title)
+#: C/prob-conn-name.page:33(title)
msgid "I get a message that says âName in useâ"
msgstr "Pojawia siÄ komunikat \"Używana nazwa\""
-#: C/prob-conn-name.page:34(p)
+#: C/prob-conn-name.page:35(p)
msgid ""
"This kind of error happens when you try to connect to your IRC account and "
"you are using a nickname that is already being used by someone else on that "
@@ -939,11 +940,11 @@ msgstr ""
"Ten rodzaj bÅÄdu zdarza siÄ podczas próby poÅÄ
czenia do konta IRC przy "
"użyciu pseudonimu, który jest już używany przez innÄ
osobÄ w danej sieci."
-#: C/prob-conn-name.page:50(p)
+#: C/prob-conn-name.page:51(p)
msgid "In the Nickname text box, type a new nickname."
msgstr "W polu Pseudonim należy wprowadziÄ pseudonim."
-#: C/prob-conn-name.page:55(p)
+#: C/prob-conn-name.page:56(p)
msgid ""
"If you have registered that nickname within the network you are using, set "
"the password for that nickname. For more information, see ."
-#: C/prob-conn-name.page:64(p)
-msgid ""
-"Deselect the Enabled check-box next to the name of your account, "
-"and then select it again to try to reconnect to the service."
-msgstr ""
-"Należy odznaczyÄ pole WÅÄ
czone znajdujÄ
ce siÄ obok nazwy konta, a "
-"nastÄpnie wybraÄ je ponownie, aby ustanowiÄ poÅÄ
czenie z usÅugÄ
"
-
#: C/prob-conn-auth.page:8(desc)
msgid ""
"An error message which says âAuthentication failed â appears in "
@@ -992,24 +985,32 @@ msgstr ""
"próbujemy siÄ poÅÄ
czyÄ. JeÅli konto nie zostaÅo zarejestrowane, wiÄkszoÅÄ "
"usÅug nie pozwoli na poÅÄ
czenie."
-#: C/prob-conn-auth.page:63(p) C/prob-conn-acctdisabled.page:54(p)
+#: C/prob-conn-auth.page:63(p) C/prob-conn-acctdisabled.page:55(p)
msgid ""
"Type your username and password again to make sure that they are correct."
msgstr ""
"Należy ponownie wprowadziÄ nazwÄ użytkownika i hasÅo, aby upewniÄ siÄ, że sÄ
"
"one poprawne."
+#: C/prob-conn-auth.page:68(p)
+msgid ""
+"Deselect the Enabled , and then select it again to try to "
+"reconnect to the service."
+msgstr ""
+"Należy odznaczyÄ pole WÅÄ
czone znajdujÄ
ce siÄ obok nazwy konta, a "
+"nastÄpnie wybraÄ je ponownie, aby ustanowiÄ poÅÄ
czenie z usÅugÄ
"
+
#: C/prob-conn-acctdisabled.page:7(desc)
msgid ""
"The instant messaging account that you want to use is not enabled in the "
"list of accounts."
msgstr "Konto, którego chcemy użyÄ, nie jest wÅÄ
czone na liÅcie kont."
-#: C/prob-conn-acctdisabled.page:33(title)
+#: C/prob-conn-acctdisabled.page:34(title)
msgid "My account is not enabled"
msgstr "Konto nie jest wÅÄ
czone"
-#: C/prob-conn-acctdisabled.page:35(p)
+#: C/prob-conn-acctdisabled.page:36(p)
msgid ""
"If the instant messaging account that you want to use is not enabled in the "
"drop-down account list when you try to start a new conversation or join a "
@@ -1019,7 +1020,7 @@ msgstr ""
"rozwijanej liÅcie kont podczas rozpoczynania nowej rozmowy lub doÅÄ
czania do "
"pokoju, szczegóÅy tego konta mogÄ
nie byÄ poprawne."
-#: C/prob-conn-acctdisabled.page:48(p)
+#: C/prob-conn-acctdisabled.page:49(p)
msgid ""
"Choose Edit Accounts and select the "
"account that is not working."
@@ -1027,15 +1028,9 @@ msgstr ""
"Należy wybraÄ Edycja Konta i zaznaczyÄ "
"konto, które nie dziaÅa."
-#: C/prob-conn-acctdisabled.page:65(p)
-#, fuzzy
-msgid ""
-"Check that the Enabled check-box is selected. "
-"If it is not, select the check-box to enable the account."
+#: C/prob-conn-acctdisabled.page:66(p)
+msgid "Check that the account is switched on."
msgstr ""
-"Należy upewniÄ siÄ, że pole wyboru WÅÄ
czone "
-"jest zaznaczone. JeÅli nie jest, należy zaznaczyÄ pole wyboru, aby wÅÄ
czyÄ "
-"konto."
#: C/prev-conv.page:8(desc)
msgid "Browse or search your previous conversations."
@@ -1549,7 +1544,7 @@ msgid ""
"gui>Join ."
msgstr ""
"W oknie Listy kontaktów należy wybraÄ Pokój"
-"gui>DoÅÄ
cz... "
+"gui>DoÅÄ
cz... ."
#: C/irc-join-room.page:45(p)
msgid ""
@@ -1918,8 +1913,8 @@ msgid ""
"Choose Edit Contact Invite to chatroom"
"gui> ."
msgstr ""
-"Należy wybraÄ Edycja Kontakt ZaproÅ do pokoju "
-"rozmowy ."
+"Należy wybraÄ Edycja Kontakt ZaproÅ do "
+"pokoju rozmowy ."
#: C/group-conversations.page:107(p)
msgid ""
@@ -2382,11 +2377,11 @@ msgstr ""
"Należy wyÅÄ
czyÄ w programie Empathy funkcjÄ automatycznego "
"logowania na koncie."
-#: C/disable-account.page:39(title)
+#: C/disable-account.page:40(title)
msgid "Disable an account"
msgstr "WyÅÄ
czanie konta"
-#: C/disable-account.page:41(p)
+#: C/disable-account.page:42(p)
msgid ""
"You can disable an account to prevent Empathy from logging in to "
"it without removing the account entirely. You may wish to disable and re-"
@@ -2398,7 +2393,7 @@ msgstr ""
"siÄ czasami na to konto zalogowaÄ, ale chcemy używaÄ programu Empathy"
"app> do obsÅugi innych kont."
-#: C/disable-account.page:52(p)
+#: C/disable-account.page:53(p)
msgid ""
"Select the account you wish to disable from the accounts list on the left "
"side of the window."
@@ -2406,18 +2401,13 @@ msgstr ""
"Należy zaznaczyÄ konto, które chcemy wyÅÄ
czyÄ na liÅcie kont po lewej "
"stronie okna."
-#: C/disable-account.page:56(p)
-msgid ""
-"Deselect Enabled on the right side of the "
-"window."
+#: C/disable-account.page:57(p)
+msgid "On the right side of the window, switch it off."
msgstr ""
-"Należy odznaczyÄ pole WÅÄ
czone po prawej "
-"stronie okna."
#: C/disable-account.page:62(p)
-msgid ""
-"To re-enable the account, simply select Enabled"
-"gui>."
+#, fuzzy
+msgid "To re-enable the account, switch it on."
msgstr ""
"Aby ponownie wÅÄ
czyÄ konto należy jedynie zaznaczyÄ pole WÅÄ
czone ."
@@ -2635,11 +2625,11 @@ msgstr "Yahoo!"
msgid "Change your status to advertise your availability to your contacts."
msgstr "Należy zmieniÄ stan, aby ogÅosiÄ swoim kontaktom dostÄpnoÅÄ."
-#: C/change-status.page:34(title)
+#: C/change-status.page:39(title)
msgid "Change your status"
msgstr "Zmiana stanu dostÄpnoÅci"
-#: C/change-status.page:36(p)
+#: C/change-status.page:41(p)
msgid ""
"You can set your status to indicate your availability to your contacts. "
"Empathy allows you to select from a list of defined statuses."
@@ -2647,20 +2637,21 @@ msgstr ""
"Można ustawiÄ stan, aby pokazaÄ swojÄ
dostÄpnoÅÄ dla kontaktów. Program "
"Empathy pozwala na wybór z listy zdefiniowanych stanów."
-#: C/change-status.page:41(p)
+#: C/change-status.page:46(p)
msgid ""
"Click on the drop-down list at the top of the Contact List window."
msgstr ""
"Należy wybraÄ z rozwijanej listy na górze okna Listy kontaktów ."
-#: C/change-status.page:46(p)
+#: C/change-status.page:51(p)
msgid "Select a status from the list."
msgstr "Należy wybraÄ stan dostÄpnoÅci z listy."
-#: C/change-status.page:52(p)
+#: C/change-status.page:57(p)
+#, fuzzy
msgid ""
"See for a list of the built-in statuses and "
-"what they mean. You can also add custom "
+"what they mean. You can also add custom "
"status messages to provide more information about your availability "
"to your contacts."
msgstr ""
@@ -2669,7 +2660,7 @@ msgstr ""
"custom-message\">dodaÄ wÅasny stan, aby wyÅwietlaÄ wiÄcej informacji "
"o swojej dostÄpnoÅci dla kontaktów."
-#: C/change-status.page:58(p)
+#: C/change-status.page:63(p)
msgid ""
"If you do not use your computer for a while, or if the screensaver is on, "
"the status will be automatically set to Away."
@@ -3258,7 +3249,7 @@ msgid ""
msgstr ""
"Pseudonim jest jedyny w sieci IRC. Tylko jedna osoba może uzyskaÄ dany "
"pseudonim. JeÅli pojawi siÄ komunikat bÅÄdu mówiÄ
cy, że , należy zmieniÄ pseudonim."
+"conn-name\" role=\"error-msg\"/>, należy zmieniÄ pseudonim."
#: C/account-irc.page:60(gui)
msgid "Password"
@@ -3368,8 +3359,8 @@ msgid ""
"height=\"16\">Remove."
msgstr ""
"Aby usunÄ
Ä sieÄ z listy, należy wybraÄ sieÄ i nacisnÄ
Ä na UsuÅ ."
+"\" mime=\"image/png\" src=\"figures/gtk-remove.png\" width=\"16\" height=\"16"
+"\">UsuÅ."
#: C/account-irc.page:115(p)
msgid ""
diff --git a/help/sl/sl.po b/help/sl/sl.po
index ec80885f..61dea1f5 100644
--- a/help/sl/sl.po
+++ b/help/sl/sl.po
@@ -4,7 +4,7 @@
msgid ""
msgstr ""
"Project-Id-Version: Empathy manual\n"
-"POT-Creation-Date: 2011-07-19 20:27+0000\n"
+"POT-Creation-Date: 2012-01-10 13:23+0000\n"
"PO-Revision-Date: \n"
"Last-Translator: Andrej ŽnidarÅ¡iÄ \n"
"Language-Team: Slovenian GNOME Translation Team \n"
@@ -19,7 +19,7 @@ msgstr ""
#. When image changes, this message will be marked fuzzy or untranslated for you.
#. It doesn't matter what you translate it to: it's not used at all.
-#: C/video-call.page:38(None)
+#: C/video-call.page:39(None)
#: C/audio-video.page:70(None)
#: C/audio-call.page:36(None)
msgid "@@image: 'figures/camera-web.png'; md5=8166b4372f25b78cbf5a64fe2eac2ce5"
@@ -29,23 +29,23 @@ msgstr "@@image: 'figures/camera-web.png'; md5=8166b4372f25b78cbf5a64fe2eac2ce5"
msgid "Start a video conversation with one of your contacts."
msgstr "ZaÄnite video pogovor z enim od vaÅ¡ih stikov"
-#: C/video-call.page:21(name)
+#: C/video-call.page:22(name)
#: C/status-icons.page:16(name)
-#: C/share-desktop.page:13(name)
+#: C/share-desktop.page:14(name)
#: C/set-custom-status.page:19(name)
#: C/send-file.page:21(name)
#: C/salut-protocol.page:18(name)
-#: C/remove-account.page:18(name)
-#: C/prob-conn-neterror.page:18(name)
-#: C/prob-conn-name.page:17(name)
+#: C/remove-account.page:19(name)
+#: C/prob-conn-neterror.page:19(name)
+#: C/prob-conn-name.page:18(name)
#: C/prob-conn-auth.page:21(name)
-#: C/prob-conn-acctdisabled.page:18(name)
-#: C/prev-conv.page:16(name)
+#: C/prob-conn-acctdisabled.page:19(name)
+#: C/prev-conv.page:17(name)
#: C/link-contacts.page:15(name)
#: C/irc-start-conversation.page:15(name)
#: C/irc-send-file.page:16(name)
#: C/irc-nick-password.page:18(name)
-#: C/irc-manage.page:19(name)
+#: C/irc-manage.page:20(name)
#: C/irc-join-room.page:16(name)
#: C/irc-join-pwd.page:17(name)
#: C/irc-commands.page:10(name)
@@ -61,31 +61,31 @@ msgstr "ZaÄnite video pogovor z enim od vaÅ¡ih stikov"
#: C/geolocation-not-showing.page:17(name)
#: C/geolocation.page:17(name)
#: C/favorite-rooms.page:14(name)
-#: C/disable-account.page:20(name)
+#: C/disable-account.page:21(name)
#: C/create-account.page:19(name)
#: C/audio-video.page:17(name)
#: C/audio-call.page:19(name)
-#: C/add-account.page:20(name)
+#: C/add-account.page:21(name)
msgid "Milo Casagrande"
msgstr "Milo Casagrande"
-#: C/video-call.page:22(email)
+#: C/video-call.page:23(email)
#: C/status-icons.page:17(email)
-#: C/share-desktop.page:14(email)
+#: C/share-desktop.page:15(email)
#: C/set-custom-status.page:20(email)
#: C/send-file.page:22(email)
#: C/salut-protocol.page:19(email)
-#: C/remove-account.page:19(email)
-#: C/prob-conn-neterror.page:19(email)
-#: C/prob-conn-name.page:18(email)
+#: C/remove-account.page:20(email)
+#: C/prob-conn-neterror.page:20(email)
+#: C/prob-conn-name.page:19(email)
#: C/prob-conn-auth.page:22(email)
-#: C/prob-conn-acctdisabled.page:19(email)
-#: C/prev-conv.page:17(email)
+#: C/prob-conn-acctdisabled.page:20(email)
+#: C/prev-conv.page:18(email)
#: C/link-contacts.page:16(email)
#: C/irc-start-conversation.page:16(email)
#: C/irc-send-file.page:17(email)
#: C/irc-nick-password.page:19(email)
-#: C/irc-manage.page:20(email)
+#: C/irc-manage.page:21(email)
#: C/irc-join-room.page:17(email)
#: C/irc-join-pwd.page:18(email)
#: C/irc-commands.page:11(email)
@@ -101,33 +101,33 @@ msgstr "Milo Casagrande"
#: C/geolocation-not-showing.page:18(email)
#: C/geolocation.page:18(email)
#: C/favorite-rooms.page:15(email)
-#: C/disable-account.page:21(email)
+#: C/disable-account.page:22(email)
#: C/create-account.page:20(email)
#: C/audio-video.page:18(email)
#: C/audio-call.page:20(email)
-#: C/add-account.page:21(email)
+#: C/add-account.page:22(email)
msgid "milo@ubuntu.com"
msgstr "milo@ubuntu.com"
-#: C/video-call.page:25(p)
+#: C/video-call.page:26(p)
#: C/status-icons.page:24(p)
-#: C/share-desktop.page:17(p)
+#: C/share-desktop.page:22(p)
#: C/set-custom-status.page:23(p)
#: C/send-message.page:21(p)
#: C/send-file.page:25(p)
#: C/salut-protocol.page:22(p)
-#: C/remove-account.page:22(p)
+#: C/remove-account.page:23(p)
#: C/prob-conn.page:18(p)
-#: C/prob-conn-neterror.page:22(p)
-#: C/prob-conn-name.page:21(p)
+#: C/prob-conn-neterror.page:23(p)
+#: C/prob-conn-name.page:22(p)
#: C/prob-conn-auth.page:25(p)
-#: C/prob-conn-acctdisabled.page:22(p)
-#: C/prev-conv.page:24(p)
+#: C/prob-conn-acctdisabled.page:23(p)
+#: C/prev-conv.page:25(p)
#: C/link-contacts.page:19(p)
#: C/irc-start-conversation.page:19(p)
#: C/irc-send-file.page:20(p)
#: C/irc-nick-password.page:22(p)
-#: C/irc-manage.page:23(p)
+#: C/irc-manage.page:24(p)
#: C/irc-join-room.page:20(p)
#: C/irc-join-pwd.page:21(p)
#: C/irc-commands.page:14(p)
@@ -143,60 +143,60 @@ msgstr "milo@ubuntu.com"
#: C/geolocation-not-showing.page:21(p)
#: C/geolocation.page:21(p)
#: C/favorite-rooms.page:18(p)
-#: C/disable-account.page:28(p)
+#: C/disable-account.page:29(p)
#: C/create-account.page:23(p)
-#: C/change-status.page:23(p)
+#: C/change-status.page:28(p)
#: C/audio-video.page:21(p)
#: C/audio-call.page:23(p)
#: C/add-contact.page:22(p)
-#: C/add-account.page:28(p)
+#: C/add-account.page:29(p)
#: C/accounts-window.page:22(p)
#: C/account-jabber.page:18(p)
#: C/account-irc.page:20(p)
msgid "Creative Commons Share Alike 3.0"
msgstr "Dovoljenje Creative Commons - deljenje pod istimi pogoji 3.0"
-#: C/video-call.page:28(title)
+#: C/video-call.page:29(title)
msgid "Start a video conversation"
msgstr "ZaÄenjanje video konference"
-#: C/video-call.page:30(p)
-msgid "If you have a webcam, you can call your contacts and have a video conversation with them. This features only works with certain types of accounts, and it requires the other person to have an application that supports video calls."
+#: C/video-call.page:31(p)
+msgid "If you have a webcam, you can call your contacts and have a video conversation with them. This feature only works with certain types of accounts, and it requires the other person to have an application that supports video calls."
msgstr "V primeru da imate spletno kamero, lahko svoje stike pokliÄite in imate z njimi video pogovor. Ta zmožnost deluje le z doloÄenimi vrstami raÄunov in zahteva, da ima druga oseba program, ki podpira video klice."
-#: C/video-call.page:37(p)
+#: C/video-call.page:38(p)
msgid "From the Contact List window, click the video call icon next to the name of the contact you wish to call and choose Video Call ."
msgstr "V oknu Seznam stikov kliknite ikono video klic poleg imena stika, ki ga želite poklicati, in izberite Video klic . Namesto tega lahko desno kliknete na stik in izberete Video klic . "
-#: C/video-call.page:43(p)
+#: C/video-call.page:44(p)
#: C/audio-call.page:42(p)
msgid "A new window will open. When the connection is established, you will see Connected at the bottom of the window, along with the total conversation time."
-msgstr "Odprlo se bo novo okno. Ko je povezava vzpostavljena boste na dnu okna videli Povezano skupaj s celotnim Äasom pogovora."
+msgstr "Odprlo se bo novo okno. Ko je povezava vzpostavljena boste na dnu okna videli Povezano skupaj s celotnim Äasom pogovora."
-#: C/video-call.page:48(p)
+#: C/video-call.page:49(p)
#: C/audio-call.page:48(p)
msgid "To end the conversation, click on Hang up ."
msgstr "Za konÄanje pogovora izberite Klic Odloži ."
-#: C/video-call.page:54(p)
+#: C/video-call.page:55(p)
msgid "To turn a video conversation into an audio conversation, choose Video Video Off ."
msgstr "Za pretvorbo video pogovora v zvoÄni pogovor izberite Video Izklopi ."
-#: C/video-call.page:60(title)
+#: C/video-call.page:61(title)
msgid "Start a video conversation with a meta-contact"
msgstr "ZaÄnite video pogovor z enim od svojih meta-stikov"
-#: C/video-call.page:63(p)
+#: C/video-call.page:64(p)
#: C/send-message.page:53(p)
#: C/audio-call.page:66(p)
msgid "From the Contact List window, right-click on the meta-contact."
msgstr "V oknu Seznam stikov desno kliknite na meta-stik."
-#: C/video-call.page:68(p)
+#: C/video-call.page:69(p)
msgid "Select the contact you want to have the conversation, and from the menu select Video Call ."
msgstr "Desno kliknite na ime stika s katerim želite imeti pogovor in izberite Klepet ."
-#: C/video-call.page:75(p)
+#: C/video-call.page:76(p)
#: C/send-message.page:65(p)
#: C/audio-call.page:78(p)
msgid "To recognize if a contact is a meta-contact , move your mouse on a contact in the Contact List window, and stop over it for a second: a small pop-up message will appear showing the number of the contacts that form the meta-contact."
@@ -233,13 +233,12 @@ msgstr "Razumevanje razliÄnih stanj in ikon stanja."
#: C/status-icons.page:20(name)
#: C/salut-protocol.page:36(cite)
-#: C/prev-conv.page:20(name)
-#: C/prev-conv.page:38(cite)
+#: C/prev-conv.page:21(name)
#: C/import-account.page:27(name)
-#: C/disable-account.page:24(name)
+#: C/disable-account.page:25(name)
#: C/audio-video.page:109(cite)
#: C/audio-video.page:117(cite)
-#: C/add-account.page:24(name)
+#: C/add-account.page:25(name)
#: C/accounts-window.page:18(name)
#: C/account-jabber.page:14(name)
#: C/account-irc.page:16(name)
@@ -247,10 +246,10 @@ msgid "Shaun McCance"
msgstr "Shaun McCance"
#: C/status-icons.page:21(email)
-#: C/prev-conv.page:21(email)
+#: C/prev-conv.page:22(email)
#: C/import-account.page:28(email)
-#: C/disable-account.page:25(email)
-#: C/add-account.page:25(email)
+#: C/disable-account.page:26(email)
+#: C/add-account.page:26(email)
#: C/accounts-window.page:19(email)
#: C/account-jabber.page:15(email)
#: C/account-irc.page:17(email)
@@ -319,49 +318,59 @@ msgid "Setting your status to Offline disconnects you from all of your
msgstr "Nastavitev vaÅ¡ega stanja na Nepovezano prekine povezavo z vsemi vaÅ¡imi raÄuni."
#: C/share-desktop.page:7(desc)
-msgid "Share the desktop with your contacts."
-msgstr "Dajanje namizja v souporabo s stiki."
+msgid "Show your desktop to your contacts."
+msgstr "Dajte namizje v souporabo s svojimi stiki."
-#: C/share-desktop.page:28(title)
+#: C/share-desktop.page:18(name)
+msgid "Ekaterina Gerasimova"
+msgstr "Ekaterina Gerasimova"
+
+#: C/share-desktop.page:19(email)
+msgid "kittykat3756@gmail.com"
+msgstr "kittykat3756@gmail.com"
+
+#: C/share-desktop.page:33(title)
msgid "Share your desktop"
msgstr "Dajte vaše namizje v souporabo"
-#: C/share-desktop.page:30(p)
-msgid "It is possible, with some of your contacts, to share your desktop with them, or to start using your contacts desktop. You can use this functionality to show your desktop to your contacts, to ask for help or to help your contacts resolve a problem."
-msgstr "Z nekaterimi stiki je mogoÄe dati svoje namizje v souporabo ali zaÄeti uporabljati njihovo namizje. To zmožnost lahko uporabljate za prikaz svojega namizja vaÅ¡im stikom, za iskanje pomoÄi ali za pomoÄ svojim stikom pri reÅ¡evanju težav."
+#: C/share-desktop.page:35(p)
+msgid "It is possible to share your desktop with some of your contacts. You can use this functionality to show your desktop to your contacts to, for example, ask for help or help your contacts resolve a problem."
+msgstr "Z nekaterimi stiki je mogoÄe dati svoje namizje v souporabo ali zaÄeti uporabljati njihovo namizje. To zmožnost lahko uporabljate za prikaz svojega namizja vaÅ¡im stikom, za iskanje pomoÄi ali za pomoÄ svojim stikom pri odpravljanju težav."
-#: C/share-desktop.page:38(p)
-msgid "In order to be able to share your desktop or to remotely use your contacts desktop, it is necessary to have a remote desktop viewer application installed in your system."
-msgstr "Za souporabo svojega namizja ali za oddaljeno uporabo namizja svojega stika morate imeti na svojemu sistemu nameÅ¡Äen program oddaljenega pregledovalnika namizja."
+#: C/share-desktop.page:42(p)
+msgid "To be able to share your desktop, you need to have a VNC server, which has support for the feature, installed on your system. Vino , the GNOME VNC server, has the required support."
+msgstr "Za zmožnost souporabe namizja boste morali imeti nameÅ¡Äen strežnik VNC z ustrezno podporo. Vino , GNOME strežnik VNC ima zahtevano podporo."
-#: C/share-desktop.page:46(p)
-#: C/send-file.page:40(p)
-#: C/favorite-rooms.page:66(p)
-msgid "From the Contact List window, perform one of the following:"
+#: C/share-desktop.page:51(p)
+msgid "From the Contact List window, do one of the following:"
msgstr "V oknu Seznam stikov izvedite eno od naslednjega:"
-#: C/share-desktop.page:51(p)
-msgid "Select the contact you want to share your desktop with, and choose Edit Contact Share my desktop ."
+#: C/share-desktop.page:56(p)
+msgid "Select the contact you want to share your desktop with and choose Edit Contact Share My Desktop ."
msgstr "Izberite stik kateremu želite dati svoje namizje v souporabo in izberite Uredi Stik Daj moje namizje v souporabo ."
-#: C/share-desktop.page:57(p)
-msgid "Right-click on the name of the contact you want to share your desktop with, and select Share my desktop ."
+#: C/share-desktop.page:63(p)
+msgid "Right-click on the name of the contact you want to share your desktop with and select Share My Desktop ."
msgstr "Desno kliknite na ime stika kateremu želite dati namizje v souporabo in izberite Daj moje namizje v souporabo ."
-#: C/share-desktop.page:65(p)
-msgid "A request will be sent to the contact you want to share your desktop with. If they accept, the default remote desktop viewer application will be launched in order to permit you to disconnect the user that is controlling your desktop."
-msgstr "VaÅ¡emu stiku bo poslana zahteva za souporabo namizja. V primeru da zahtevo sprejme, se bo zagnal privzeti oddaljeni pregledovalnik namizja, ki vam bo omogoÄal prekinitev povezave z uporabnikom, ki nadzira vaÅ¡e namizje."
+#: C/share-desktop.page:71(p)
+msgid "An invitation to view your desktop will be sent to the contact you have selected. To view your desktop, they will need to accept it."
+msgstr "Povabilo za ogled vašega namizja bo bilo poslano izbranemu stiku. Za ogled vašega namizja ga bo moral sprejeti."
+
+#: C/share-desktop.page:77(p)
+msgid "You can disconnect the contact from your computer using your desktop sharing application."
+msgstr "Povezavo stika s svojim oddaljenim namizjem lahko prekinete s programom souporabe namizja."
-#: C/share-desktop.page:70(p)
-msgid "For more information about how to use the remote desktop viewer application, refer to its help."
+#: C/share-desktop.page:82(p)
+msgid "For more information about how to use the remote desktop sharing application, refer to its help."
msgstr "Za veÄ podrobnosti kako uporabiti program oddaljenega pregledovalnika namizja se sklicujte na pomoÄ."
-#: C/share-desktop.page:77(p)
+#: C/share-desktop.page:90(p)
msgid "When you share your desktop with someone else, it is possible to experience system performance slowdown and low Internet speed."
msgstr "Ko svoje namizje date v souporabo z nekom drugim, boste morda opazili upoÄasnjeno delovanje sistema in nizko hitrost medmrežja."
-#: C/share-desktop.page:83(p)
-msgid "Not all your contacts might be able to support this functionality. It is necessary for them to have at least the 2.28 version of Empathy and a remote desktop viewer application installed in their system."
+#: C/share-desktop.page:96(p)
+msgid "Some of your contacts may not be able to use this feature. It is necessary for them to have version 2.28, or newer, of Empathy and a compatible remote desktop viewer application installed in their system."
msgstr "Vsi stiki morda ne podpirajo te zmožnosti. Stiki morajo imeti vsaj Empathy razliÄico 2.28 in na svojemu sistemu nameÅ¡Äen program pregledovalnika oddaljenega namizja."
#: C/set-custom-status.page:9(desc)
@@ -472,10 +481,10 @@ msgstr "PoÅ¡ljite sporoÄilo enemu od vaÅ¡ih stikov."
#: C/send-message.page:17(name)
#: C/send-file.page:17(name)
#: C/prob-conn.page:14(name)
-#: C/prob-conn-neterror.page:14(name)
+#: C/prob-conn-neterror.page:15(name)
#: C/prob-conn-auth.page:17(name)
-#: C/prob-conn-acctdisabled.page:14(name)
-#: C/change-status.page:19(name)
+#: C/prob-conn-acctdisabled.page:15(name)
+#: C/change-status.page:24(name)
#: C/add-contact.page:18(name)
msgid "Phil Bull"
msgstr "Phil Bull"
@@ -483,10 +492,10 @@ msgstr "Phil Bull"
#: C/send-message.page:18(email)
#: C/send-file.page:18(email)
#: C/prob-conn.page:15(email)
-#: C/prob-conn-neterror.page:15(email)
+#: C/prob-conn-neterror.page:16(email)
#: C/prob-conn-auth.page:18(email)
-#: C/prob-conn-acctdisabled.page:15(email)
-#: C/change-status.page:20(email)
+#: C/prob-conn-acctdisabled.page:16(email)
+#: C/change-status.page:25(email)
#: C/add-contact.page:19(email)
msgid "philbull@gmail.com"
msgstr "philbull@gmail.com"
@@ -519,6 +528,11 @@ msgstr "PoÅ¡ljite datoteko s svojega raÄunalnika enemu od svojih stikov."
msgid "Send files"
msgstr "Pošiljanje datotek"
+#: C/send-file.page:40(p)
+#: C/favorite-rooms.page:66(p)
+msgid "From the Contact List window, perform one of the following:"
+msgstr "V oknu Seznam stikov izvedite eno od naslednjega:"
+
#: C/send-file.page:45(p)
msgid "Right click on the contact you want to send a file to, and choose Send file ."
msgstr "Desno kliknite na stik, kateremu želite poslati datoteko in izberite Pošlji datoteko ."
@@ -564,8 +578,9 @@ msgid "What is People Nearby?"
msgstr "Kaj je \"Ljudje v bližini\"?"
#: C/salut-protocol.page:37(p)
+#, fuzzy
msgid "I'd like to see this played up a bit more."
-msgstr ""
+msgstr "?"
#: C/salut-protocol.page:40(p)
msgid "The People Nearby service is a serverless communication service: you do not need to connect and authenticate to a central server in order to use it."
@@ -587,34 +602,34 @@ msgstr "Vsa novejša krajevna omrežja bi morala podpirati to vrsto storitve."
msgid "Completely remove an account from Empathy ."
msgstr "Popolnoma odstrani raÄun iz Empathy ."
-#: C/remove-account.page:33(title)
+#: C/remove-account.page:34(title)
msgid "Remove an account"
msgstr "Odstranitev raÄuna"
-#: C/remove-account.page:35(p)
+#: C/remove-account.page:36(p)
msgid "You can completely remove an account from Empathy if you no longer wish to use the account. If you wish to use the account in Empathy again in the future, you will have to add your account details again."
msgstr "V primeru da raÄuna ne želite veÄ uporabljati, lahko raÄun popolnoma odstranite iz Empathy . V primeru da želite v prihodnosti raÄun v Empathy ponovno uporabljati boste morali ponovno dodati podrobnosti svojega raÄuna."
-#: C/remove-account.page:42(p)
+#: C/remove-account.page:43(p)
#: C/irc-nick-password.page:50(p)
-#: C/disable-account.page:48(p)
-#: C/add-account.page:48(p)
+#: C/disable-account.page:49(p)
+#: C/add-account.page:49(p)
msgid "From the Contact List window, choose Edit Accounts , or press F4 ."
msgstr "V oknu Seznam stikov izberite Uredi RaÄuni ali pritisnite F4 ."
-#: C/remove-account.page:46(p)
+#: C/remove-account.page:47(p)
msgid "Select the account you wish to remove from the accounts list on the left side of the window."
msgstr "Na seznamu raÄunov na levi strani okna izberite raÄun, ki ga želite odstraniti."
-#: C/remove-account.page:50(p)
-msgid "Click on Remove ."
-msgstr "Kliknite Odstrani ."
+#: C/remove-account.page:51(p)
+msgid "Click - ."
+msgstr "Kliknite - ."
-#: C/remove-account.page:53(p)
+#: C/remove-account.page:54(p)
msgid "A dialog will be shown asking for confirmation. Click the Remove button to permanently remove the account."
msgstr "Pojavilo se pogovorno okno, ki vas bo spraÅ¡evalo za potrditev. Kliknite gumb Odstrani za odstranitev raÄuna."
-#: C/remove-account.page:59(p)
+#: C/remove-account.page:60(p)
msgid "Even after removing an account, Empathy does not delete your conversation history for that account."
msgstr "Tudi po odstraniti raÄuna Empathy ne izbriÅ¡e zgodovine vaÅ¡ih pogovorov za ta raÄun."
@@ -628,8 +643,8 @@ msgstr "Težave s povezovanjem s storitvijo hipnega sporoÄanja"
#. When image changes, this message will be marked fuzzy or untranslated for you.
#. It doesn't matter what you translate it to: it's not used at all.
-#: C/prob-conn-neterror.page:58(None)
-#: C/prob-conn-name.page:43(None)
+#: C/prob-conn-neterror.page:59(None)
+#: C/prob-conn-name.page:44(None)
#: C/prob-conn-auth.page:58(None)
#: C/account-irc.page:109(None)
msgid "@@image: 'figures/gtk-edit.png'; md5=4f21b451732817be0604fe3e2c8da98b"
@@ -639,53 +654,53 @@ msgstr "@@image: 'figures/gtk-edit.png'; md5=4f21b451732817be0604fe3e2c8da98b"
msgid "An error message which says âNetwork error â appears in the main window."
msgstr "V glavnemu oknu se pojavi sporoÄilo napake, ki pravi âNetwork error â."
-#: C/prob-conn-neterror.page:33(title)
+#: C/prob-conn-neterror.page:34(title)
msgid "I get a message that says âNetwork errorâ"
msgstr "Dobim sporoÄilo, ki pravi âNapaka omrežjaâ"
-#: C/prob-conn-neterror.page:36(cite)
+#: C/prob-conn-neterror.page:37(cite)
msgid "shaunm"
msgstr "shaunm"
-#: C/prob-conn-neterror.page:37(p)
+#: C/prob-conn-neterror.page:38(p)
msgid "Empathy no longer allows you to create an IRC account without a valid nick. I've removed the guide link. Remove the text."
msgstr "Empathy vam ne dovoli ustvarjanje raÄuna IRC brez veljavnega vzdevka. Povezava vodiÄa je bila odstranjena. Odstrani besedilo."
-#: C/prob-conn-neterror.page:41(p)
+#: C/prob-conn-neterror.page:42(p)
msgid "This kind of error happens when Empathy cannot communicate with the instant messaging service for some reason."
msgstr "Ta vrsta napake se zgodi, ko Empathy zaradi nekega vzroka ne more komunicirati s storitvijo hipnega sporoÄanja. "
-#: C/prob-conn-neterror.page:45(p)
+#: C/prob-conn-neterror.page:46(p)
msgid "Also, this kind of error happens when you try to use an IRC account without setting a nickname."
msgstr "Ta vrsta napake se zgodi, ko poskuÅ¡ate uporabiti raÄun IRC brez nastavitve vzdevka."
-#: C/prob-conn-neterror.page:52(p)
+#: C/prob-conn-neterror.page:53(p)
#: C/prob-conn-auth.page:45(p)
-#: C/prob-conn-acctdisabled.page:43(p)
+#: C/prob-conn-acctdisabled.page:44(p)
msgid "Make sure that you are connected to the Internet, or to a local area network."
msgstr "PrepriÄajte se, da ste povezani na medmrežje ali na krajevno omrežje."
-#: C/prob-conn-neterror.page:57(p)
-#: C/prob-conn-name.page:42(p)
+#: C/prob-conn-neterror.page:58(p)
+#: C/prob-conn-name.page:43(p)
#: C/prob-conn-auth.page:57(p)
msgid "Click the edit icon in the error message."
msgstr "V sporoÄilu napake kliknite na ikono uredi ."
-#: C/prob-conn-neterror.page:65(p)
-#: C/prob-conn-acctdisabled.page:59(p)
+#: C/prob-conn-neterror.page:64(p)
+#: C/prob-conn-acctdisabled.page:60(p)
msgid "Check in the Advanced section that all the details are correct. You should be able to find these details from the website of the messaging service."
msgstr "V odseku Napredno preverite, da so vse podrobnosti pravilne. Te podrobnosti bi morali najti na spletiÅ¡Äu storitve sporoÄanja."
-#: C/prob-conn-neterror.page:82(p)
-#: C/prob-conn-auth.page:68(p)
-msgid "Deselect the Enabled , and then select it again to try to reconnect to the service."
-msgstr "Odstranite izbiro OmogoÄeno in jo nato ponovno izberite za poskus ponovne povezave s storitvijo."
+#: C/prob-conn-neterror.page:79(p)
+#: C/prob-conn-name.page:65(p)
+msgid "Switch the account off, and then switch it on to try to reconnect to the service."
+msgstr "Izklopite raÄun in ga ponovno vklopite za poskus ponovne povezave s storitvijo."
-#: C/prob-conn-neterror.page:90(title)
+#: C/prob-conn-neterror.page:87(title)
msgid "Proxy support"
msgstr "Podpora posredniških strežnikov"
-#: C/prob-conn-neterror.page:91(p)
+#: C/prob-conn-neterror.page:88(p)
msgid "At the moment Empathy can not be configured to work with a proxy."
msgstr "Trenutno Empathy ni mogoÄe nastaviti za delo s posredovalnim strežnikom."
@@ -697,26 +712,22 @@ msgstr "âIme v uporabiâ"
msgid "An error message which says âName in use â appears in the main window."
msgstr "V glavnemu oknu se pojavi sporoÄilo napake, ki pravi âIme v uporabi â."
-#: C/prob-conn-name.page:32(title)
+#: C/prob-conn-name.page:33(title)
msgid "I get a message that says âName in useâ"
msgstr "Dobim sporoÄilo, ki pravi âIme v uporabiâ "
-#: C/prob-conn-name.page:34(p)
+#: C/prob-conn-name.page:35(p)
msgid "This kind of error happens when you try to connect to your IRC account and you are using a nickname that is already being used by someone else on that particular network."
msgstr "Ta vrsta napak se zgodi, ko se poskusite povezati s svojim raÄunom IRC in uporabljate vzdevek, ki ga na istemu omrežju že uporablja nekdo drug. "
-#: C/prob-conn-name.page:50(p)
+#: C/prob-conn-name.page:51(p)
msgid "In the Nickname text box, type a new nickname."
msgstr "V besedilno polje Vzdevek vpišite nov vzdevek."
-#: C/prob-conn-name.page:55(p)
+#: C/prob-conn-name.page:56(p)
msgid "If you have registered that nickname within the network you are using, set the password for that nickname. For more information, see ."
msgstr "V primeru da ste ta vzdevek ustvarili v omrežju, ki ga uporabljate, nastavite geslo za ta vzdevek. Za veÄ podrobnosti si oglejte ."
-#: C/prob-conn-name.page:64(p)
-msgid "Deselect the Enabled check-box next to the name of your account, and then select it again to try to reconnect to the service."
-msgstr "Odstranite izbiro izbirnega polja OmogoÄeno poleg imena svojega raÄuna, in jo nato ponovno izberite za poskus ponovne povezave s storitvijo."
-
#: C/prob-conn-auth.page:8(desc)
msgid "An error message which says âAuthentication failed â appears in the main window."
msgstr "V glavnemu oknu se pojavi sporoÄilo napake, ki pravi âOveritev je spodletela â."
@@ -734,110 +745,102 @@ msgid "Make sure that you have registered an account with the service you are tr
msgstr "PrepriÄajte se, da ste ustvarili raÄun za storitev s katero se želite povezati. V primeru da nimate raÄuna, vam veÄina storitev ne bo dovolila povezave."
#: C/prob-conn-auth.page:63(p)
-#: C/prob-conn-acctdisabled.page:54(p)
+#: C/prob-conn-acctdisabled.page:55(p)
msgid "Type your username and password again to make sure that they are correct."
msgstr "Ponovno vpiÅ¡ite svoje uporabniÅ¡ko ime in geslo ter se prepriÄajte da sta pravilna."
+#: C/prob-conn-auth.page:68(p)
+msgid "Deselect the Enabled , and then select it again to try to reconnect to the service."
+msgstr "Odstranite izbiro OmogoÄeno in jo nato ponovno izberite za poskus ponovne povezave s storitvijo."
+
#: C/prob-conn-acctdisabled.page:7(desc)
msgid "The instant messaging account that you want to use is not enabled in the list of accounts."
msgstr "RaÄun hipnega sporoÄanja, ki ga želite uporabiti ni omogoÄen na seznamu raÄunov."
-#: C/prob-conn-acctdisabled.page:33(title)
+#: C/prob-conn-acctdisabled.page:34(title)
msgid "My account is not enabled"
msgstr "Moj raÄun ni omogoÄen"
-#: C/prob-conn-acctdisabled.page:35(p)
+#: C/prob-conn-acctdisabled.page:36(p)
msgid "If the instant messaging account that you want to use is not enabled in the drop-down account list when you try to start a new conversation or join a room, your account details may not be correct."
msgstr "V primeru da raÄun hipnega sporoÄanja, ki ga želite uporabiti, v spustnemu seznamu raÄunov ob poskusu zaÄetka novega pogovora ali pridružitve sobe ni omogoÄen, so morda podrobnosti vaÅ¡ega raÄuna nepravilne. "
-#: C/prob-conn-acctdisabled.page:48(p)
+#: C/prob-conn-acctdisabled.page:49(p)
msgid "Choose Edit Accounts and select the account that is not working."
msgstr "Izberite Uredi RaÄuni in izberite raÄun, ki ne deluje."
-#: C/prob-conn-acctdisabled.page:65(p)
-msgid "Check that the Enabled check-box is selected. If it is not, select the check-box to enable the account."
-msgstr "Preverite, Äe je izbrano izbirno polje OmogoÄeno . Äe ni, ga izberite in s tem omogoÄite raÄun."
+#: C/prob-conn-acctdisabled.page:66(p)
+msgid "Check that the account is switched on."
+msgstr "Preverite, da je raÄun vklopljen."
#: C/prev-conv.page:8(desc)
msgid "Browse or search your previous conversations."
msgstr "Brskanje ali iskanje po preteklih pogovorih."
-#: C/prev-conv.page:35(title)
+#: C/prev-conv.page:36(title)
msgid "View previous conversations"
msgstr "Ogled preteklih pogovorov"
-#: C/prev-conv.page:39(p)
-msgid "Highlighting text is quirky: #593733. If there's an actual highlighting going on, independent of the selection (like in yellow or something), we can use the term \"highlight\". Otherwise we need to use the term \"select\". Watch that bug."
-msgstr "Poudarjanje besedila je Äudno: #593733. V primeru da pride do dejanskega poudarjanja neodvisno od izbire (na primer v rumeni barvi), lahko uporabimo izraz \"poudarjanje\". V nasprotnemu primeru moramo uporabiti \"izbira\". Opazujte ta hroÅ¡Ä."
-
-#: C/prev-conv.page:46(p)
+#: C/prev-conv.page:38(p)
msgid "Empathy automatically saves all your text conversations you have with your contacts. You can search through all of your previous conversations or browse previous conversations by contact and date."
msgstr "Empathy samodejno shrani vse vaÅ¡e besedilne pogovore z vaÅ¡imi stiki. Lahko iÅ¡Äete po vseh vaÅ¡ih predhodnih pogovorih ali brskate predhodne pogovore po stiku in datumu."
-#: C/prev-conv.page:54(p)
+#: C/prev-conv.page:46(p)
msgid "You do not need to be connected to the Internet to view and search your previous conversations."
msgstr "Za ogled in iskanje vaših predhodnih pogovorov vam ni treba biti povezan na medmrežje."
-#: C/prev-conv.page:61(title)
+#: C/prev-conv.page:53(title)
msgid "Search previous conversations"
msgstr "Iskanje predhodnih pogovorov"
-#: C/prev-conv.page:63(p)
+#: C/prev-conv.page:55(p)
msgid "You can perform a full-text search through all of your previous conversations."
msgstr "Izvedete lahko iskanje celega besedila skozi vse vaše predhodne pogovore."
-#: C/prev-conv.page:67(p)
-#: C/prev-conv.page:96(p)
+#: C/prev-conv.page:59(p)
+#: C/prev-conv.page:87(p)
msgid "From the Contact List window, choose View Previous Conversations . Alternatively, press F3 ."
msgstr "V oknu Seznam stikov izberite Pogled Pretekli pogovori . Namesto tega lahko pritisnete F3 ."
-#: C/prev-conv.page:71(p)
-msgid "Select the Search tab."
-msgstr "Izberite zavihek Iskanje ."
+#: C/prev-conv.page:63(p)
+msgid "Select an account from the drop-down list in the top. A list of contacts and chat room for that account will be shown below."
+msgstr "Izberite raÄun s spustnega seznama na vrhu. Seznam vseh stikov in klepetalnic za ta raÄun bo prikazan spodaj."
-#: C/prev-conv.page:74(p)
-msgid "In the For field, type the text you want to search for. Click Find or press Enter ."
-msgstr "V polje Za , vtipkajte besedilo, ki ga želite iskati. Kliknite iÅ¡Äi ali pritisnite Enter ."
+#: C/prev-conv.page:67(p)
+msgid "Type the text you want to search for in the Search text field."
+msgstr "Vnesite besedilo, ki ga želite najti, v besedilno polje Iskanje ."
-#: C/prev-conv.page:78(p)
-msgid "Any conversations that matched your search terms will be shown in the list below the search field. By default, conversations are ordered by date."
+#: C/prev-conv.page:71(p)
+msgid "Any conversations that matched your search terms will be shown. By default, conversations are ordered by date."
msgstr "Katerikoli pogovori, ki se skladajo z vaÅ¡imi iskalnimi pogoji bodo prikazani v seznamu pod iskalnim poljem. Privzeto so pogovori razvrÅ¡Äeni po datumu."
-#: C/prev-conv.page:82(p)
-msgid "Click on a conversation to view it. Empathy will select the text in the conversation that matched your search terms."
-msgstr "Za ogled pogovora kliknite nanj. Empathy bo izbral besedilo v pogovoru, ki se sklada z vašimi pogoji iskanja."
-
-#: C/prev-conv.page:89(title)
+#: C/prev-conv.page:80(title)
msgid "Browse previous conversations"
msgstr "Brskaj predhodne pogovore"
-#: C/prev-conv.page:91(p)
+#: C/prev-conv.page:82(p)
msgid "You can browse your previous conversations with your contacts or in chat rooms by date."
msgstr "Svoje predhodne pogovore s svojimi stiki ali klepetalnicami lahko brskate po datumu."
-#: C/prev-conv.page:100(p)
-msgid "Select the Conversations tab."
-msgstr "Izberite zavihek Pogovori ."
-
-#: C/prev-conv.page:103(p)
+#: C/prev-conv.page:91(p)
msgid "Select an account from the drop-down list in the top left. A list of contacts and chat room for that account will be shown below."
msgstr "Izberite raÄun s spustnega seznama zgoraj levo. Seznam vseh stikov in klepetalnic za ta raÄun bo prikazan spodaj."
-#: C/prev-conv.page:107(p)
+#: C/prev-conv.page:95(p)
msgid "Select a contact or chat room to view your previous conversations from. By default the most recent conversation will be shown."
msgstr "Izberite stik ali klepetalnico za ogled svojih predhodnih pogovorov. Privzeto bodo prikazani najbolj nedavni stiki."
-#: C/prev-conv.page:111(p)
+#: C/prev-conv.page:99(p)
msgid "You can browse your conversations by date. Days on which you had a conversation with the selected contact will be shown in bold text. Click a date to select it. Click the arrows next to the month and year to browse earlier dates."
msgstr "Svoje pogovore lahko brskate po datumu. Dnevi ob katerih ste imeli pogovor z izbranim stikom bodo prikazni krepko. Kliknite na datum za izbiro. Kliknite puÅ¡Äice poleg meseca in leta za brskanje zgodnejÅ¡ih datumov."
-#: C/prev-conv.page:117(p)
-msgid "You can search for text in the displayed conversation by typing into the search field at the top. The matching text will be highlighted."
+#: C/prev-conv.page:105(p)
+msgid "You can search for text in the conversations by typing into the search field at the top. The matching conversations will be showed."
msgstr "Besedilo v prikazanemu pogovoru lahko iÅ¡Äete s pisanjem v iskalno polje na vrhu. SkladajoÄe besedilo bo poudarjeno."
-#: C/prev-conv.page:121(p)
-msgid "You can quickly view the previous conversations with one of your contacts from the Contact List window. Simply right click the contact and choose View Previous Conversations . The Previous Conversations window will open with that contact already selected."
-msgstr "Predhodne pogovore z enim od vašim stikov si lahko hitro ogledate v oknu Seznam stikov . Enostavno desno kliknite na stik in izberite Ogled predhodnih pogovorov . Okno Predhodni pogovori bo bilo odprto s predhodno izbranim stikom."
+#: C/prev-conv.page:111(p)
+msgid "You can quickly view the previous conversations with one of your contacts from the Contact List window. Simply right click the contact and choose Previous Conversations . The Previous Conversations window will open with that contact already selected."
+msgstr "Predhodne pogovore z enim od svojih stikov si lahko hitro ogledate v oknu Seznam stikov . Desno kliknite na stik in izberite Ogled predhodnih pogovorov . Odprlo se bo okno Predhodni pogovori s predhodno izbranim stikom."
#: C/link-contacts.page:11(desc)
msgid "Merge and separate different contacts into a single one."
@@ -1029,6 +1032,7 @@ msgstr "V polje Geslo vtipkajte geslo, ki ste ga uporabili za ustvarj
#: C/irc-nick-password.page:63(p)
#: C/import-account.page:61(p)
+#: C/add-account.page:74(p)
msgid "Click Apply ."
msgstr "Kliknite Uveljavi ."
@@ -1036,32 +1040,36 @@ msgstr "Kliknite Uveljavi ."
msgid "These instructions only allow you to use a password-protected nickname on certain IRC networks. It is not currently possible to register an IRC nickname or change your nickname password using Empathy ."
msgstr "Ta navodila vam dovolijo uporabo z geslom zaÅ¡Äitenega vzdevka na doloÄenih omrežjih IRC. Trenutno z Empathy ni mogoÄe ustvariti vzdevka IRC ali spremeniti svojega vzdevka ali gesla. "
-#: C/irc-manage.page:9(desc)
+#: C/irc-manage.page:10(desc)
msgid "How to use IRC with Empathy ."
msgstr "Kako uporabiti IRC z Empathy ."
-#: C/irc-manage.page:34(title)
+#: C/irc-manage.page:35(title)
msgid "Internet Relay Chat (IRC)"
msgstr "Klepet IRC"
-#: C/irc-manage.page:37(p)
+#: C/irc-manage.page:38(p)
#: C/account-irc.page:39(p)
msgid "You must have the telepathy-idle package installed to use IRC in Empathy ."
msgstr "Za uporabo IRC-a v Empathy morate imeti nameÅ¡Äen paket telepathy-idle ."
-#: C/irc-manage.page:43(title)
+#: C/irc-manage.page:42(link)
+msgid "Install telepathy-idle"
+msgstr "Namesite telepathy-idle"
+
+#: C/irc-manage.page:49(title)
msgid "IRC Chat Rooms and Conversations"
msgstr "Pogovori in klepetalnice IRC"
-#: C/irc-manage.page:45(title)
+#: C/irc-manage.page:51(title)
msgid "Chat Rooms and Conversations"
msgstr "Klepetalnice in pogovori"
-#: C/irc-manage.page:50(title)
+#: C/irc-manage.page:56(title)
msgid "Common IRC Problems"
msgstr "Pogoste težave IRC"
-#: C/irc-manage.page:52(title)
+#: C/irc-manage.page:58(title)
#: C/index.page:55(title)
msgid "Common Problems"
msgstr "Pogoste težave"
@@ -1625,25 +1633,25 @@ msgstr "Ko ste konÄali, kliknite Zapri ."
msgid "Prevent Empathy from automatically logging in to an account."
msgstr "PrepreÄitev samodejnega prijavljanja Empathy v raÄun."
-#: C/disable-account.page:39(title)
+#: C/disable-account.page:40(title)
msgid "Disable an account"
msgstr "OnemogoÄitev raÄuna"
-#: C/disable-account.page:41(p)
+#: C/disable-account.page:42(p)
msgid "You can disable an account to prevent Empathy from logging in to it without removing the account entirely. You may wish to disable and re-enable an account if you only want to be logged in to the account at certain times, but you still want to use Empathy for other accounts."
msgstr "Za prepreÄitev prijave v Empaty brez odstranitve raÄuna lahko raÄun onemogoÄite. Morda želite raÄun onemogoÄiti in ponovno omogoÄiti v primeru da želite biti v raÄun prijavljeni le ob doloÄenih Äasih, toda želite Empathy Å¡e vedno uporabiti za druge raÄune. "
-#: C/disable-account.page:52(p)
+#: C/disable-account.page:53(p)
msgid "Select the account you wish to disable from the accounts list on the left side of the window."
msgstr "Izberite raÄun, ki ga želite onemogoÄiti, s seznama raÄunov na levi strani okna."
-#: C/disable-account.page:56(p)
-msgid "Deselect Enabled on the right side of the window."
-msgstr "Odstranite izbiro OmogoÄeno na desni strani okna."
+#: C/disable-account.page:57(p)
+msgid "On the right side of the window, switch it off."
+msgstr "Na desni strani okna ga izklopite."
#: C/disable-account.page:62(p)
-msgid "To re-enable the account, simply select Enabled ."
-msgstr "Za ponovno omogoÄitev raÄuna enostavno izberite OmogoÄeno ."
+msgid "To re-enable the account, switch it on."
+msgstr "Za ponovno omogoÄitev raÄuna ga vklopite."
#: C/create-account.page:9(desc)
msgid "Register for an account with one of the supported messaging services."
@@ -1769,27 +1777,27 @@ msgstr "Yahoo!"
msgid "Change your status to advertise your availability to your contacts."
msgstr "Spremenite svoje stanje za oglaševanje vaše razpoložljivosti vašim stikom."
-#: C/change-status.page:34(title)
+#: C/change-status.page:39(title)
msgid "Change your status"
msgstr "Sprememba stanja"
-#: C/change-status.page:36(p)
+#: C/change-status.page:41(p)
msgid "You can set your status to indicate your availability to your contacts. Empathy allows you to select from a list of defined statuses."
msgstr "Nastavite lahko svoje stanje za nakaz vaÅ¡e razpoložljivosti vaÅ¡im stikov. Empathy vam omogoÄa izbiro s seznama doloÄenih stanj."
-#: C/change-status.page:41(p)
+#: C/change-status.page:46(p)
msgid "Click on the drop-down list at the top of the Contact List window."
msgstr "Kliknite na spustni seznam na vrhu okna Seznam stikov ."
-#: C/change-status.page:46(p)
+#: C/change-status.page:51(p)
msgid "Select a status from the list."
msgstr "Izberite stanje s seznama"
-#: C/change-status.page:52(p)
-msgid "See for a list of the built-in statuses and what they mean. You can also add custom status messages to provide more information about your availability to your contacts."
-msgstr "Oglejte si za seznam vgrajenih stanj in kaj pomenijo. Lahko tudi dodate sporoÄila stanja po meri za veÄ podrobnosti o vaÅ¡ih razpoložljivosti vaÅ¡im stikom."
+#: C/change-status.page:57(p)
+msgid "See for a list of the built-in statuses and what they mean. You can also add custom status messages to provide more information about your availability to your contacts."
+msgstr "Oglejte si za seznam vgrajenih stanj in kaj pomenijo. Lahko tudi dodate sporoÄila stanja po meri za veÄ podrobnosti o vaÅ¡i razpoložljivosti svojim stikom."
-#: C/change-status.page:58(p)
+#: C/change-status.page:63(p)
msgid "If you do not use your computer for a while, or if the screensaver is on, the status will be automatically set to Away."
msgstr "V primeru da svojega raÄunalnika nekaj Äasa ne uporabljate, ali Äe je ohranjevalnik zaslona vklopljen bo stanje samodejno nastavljeno na Odsoten."
@@ -2015,35 +2023,31 @@ msgstr "Za dodajanje nove osebe na vaš seznam stikov morate biti povezani na me
msgid "Add a new account to Empathy ."
msgstr "Dodajanje novega raÄuna v Empathy ."
-#: C/add-account.page:39(title)
+#: C/add-account.page:40(title)
msgid "Add a new account"
msgstr "Dodajanje novega raÄuna"
-#: C/add-account.page:41(p)
+#: C/add-account.page:42(p)
msgid "You can add instant messaging accounts from any supported service to communicate with all of your contacts in Empathy . For some account providers, these steps will also allow you to register for a new account. For more details, see ."
msgstr "RaÄune hipnega sporoÄanja za sporazumevanje z vsemi svojimi stiki v Empathy lahko dodate s katerekoli podprte naprave. Za nekatere ponudnike raÄunov vam bodo ti koraki omogoÄili tudi ustvarjanje novega raÄuna. Za veÄ podrobnosti si oglejte ."
-#: C/add-account.page:52(p)
-msgid "Click Add ."
-msgstr "Kliknite Dodaj ."
+#: C/add-account.page:53(p)
+msgid "Click + ."
+msgstr "Kliknite + ."
-#: C/add-account.page:57(p)
+#: C/add-account.page:58(p)
msgid "From the Protocol drop-down list, select the type of account you wish to add."
msgstr "Na spustnemu seznamu Protokol izberite vrsto raÄuna, ki jo želite dodati."
-#: C/add-account.page:61(p)
+#: C/add-account.page:62(p)
msgid "If you do not already have a registered account, select Create a new account on the server . This feature is not available for all account types, and may not work with some account providers. See for more information."
msgstr "V primeru da Å¡e niste ustvarili novega raÄun, izberite Ustvari nov raÄun na strežniku . Ta zmožnost ni na voljo za vse vrste raÄunov in morda ne bo delovala z nekaterimi ponudniki raÄunov. Za veÄ podrobnosti si oglejte . "
-#: C/add-account.page:66(p)
-msgid "Enter the required information. For most accounts, you will only need a login ID and a password. Some accounts may require additional information. See for more information."
+#: C/add-account.page:69(p)
+msgid "Enter the required information. For most accounts, you will only need a login ID and a password. Some accounts may require additional information. See for more information."
msgstr "Vnesite zahtevane podatke. Za veÄino raÄunov boste potrebovali le ID prijave in geslo. Nekateri raÄuni morda zahtevajo dodatne podrobnosti. Za veÄ podrobnosti si oglejte ."
-#: C/add-account.page:71(p)
-msgid "Click Log in ."
-msgstr "Kliknite Prijava ."
-
-#: C/add-account.page:78(p)
+#: C/add-account.page:81(p)
msgid "To change the name that identifies the account in the Accounts window, select the account from the list on the left and either click on the name or press the space bar. Edit the account name and press Enter when youâre finished."
msgstr "Za spremembo imena, ki identificira raÄun v oknu RaÄuni , izberite raÄun s seznama na levi ali kliknite na ime ali pritisnite preslednico. Uredite ime raÄuna in pritisnite Enter , ko ste konÄali."
@@ -2093,7 +2097,7 @@ msgstr "Prezri napake potrdila SSL"
#: C/account-jabber.page:47(p)
msgid "Whenever possible, communication between Empathy and the Jabber server is encrypted. If encrypted communication is not possible, messages may be sent unencrypted. Select Encryption required to prevent Empathy from communicating with the Jabber server when encryption is not possible."
-msgstr "Kadar je mogoÄe je sporazumevanje med Empathy/app> in strežnikom Jabber Å¡ifrirana. V primeru da Å¡ifrirana komunikacija ni mogoÄa, morda morda sporoÄila poslana neÅ¡ifrirano. Izberite Zahtevano Å¡ifriranj za prepreÄitev komunikacije Empathy s strežniki Jabber, ko Å¡ifriranje ni mogoÄe. "
+msgstr "Kadar je mogoÄe je sporazumevanje med Empathy in strežnikom Jabber Å¡ifrirana. V primeru da Å¡ifrirana komunikacija ni mogoÄa, morda morda sporoÄila poslana neÅ¡ifrirano. Izberite Zahtevano Å¡ifriranj za prepreÄitev komunikacije Empathy s strežniki Jabber, ko Å¡ifriranje ni mogoÄe."
#: C/account-jabber.page:52(p)
msgid "Some Jabber servers may encrypt data using invalid certificates, or using certificates from unknown authorities. If you trust the server you are connecting to, you can select Ignore SSL certificate errors to allow encrypted communication with invalid certificates."
@@ -2262,3 +2266,137 @@ msgstr "Izberite izbirno polje v stolpcu SSL za Å¡ifriranje vse komun
#: C/index.page:0(None)
msgid "translator-credits"
msgstr "Andrej ŽnidarÅ¡iÄ , 2010"
+
+#~ msgid ""
+#~ "In order to be able to share your desktop or to remotely use your "
+#~ "contacts desktop, it is necessary to have a remote desktop viewer "
+#~ "application installed in your system."
+#~ msgstr ""
+#~ "Za souporabo svojega namizja ali za oddaljeno uporabo namizja svojega "
+#~ "stika morate imeti na svojemu sistemu nameÅ¡Äen program oddaljenega "
+#~ "pregledovalnika namizja."
+
+#~ msgid ""
+#~ "A request will be sent to the contact you want to share your desktop "
+#~ "with. If they accept, the default remote desktop viewer application will "
+#~ "be launched in order to permit you to disconnect the user that is "
+#~ "controlling your desktop."
+#~ msgstr ""
+#~ "Vašemu stiku bo poslana zahteva za souporabo namizja. V primeru da "
+#~ "zahtevo sprejme, se bo zagnal privzeti oddaljeni pregledovalnik namizja, "
+#~ "ki vam bo omogoÄal prekinitev povezave z uporabnikom, ki nadzira vaÅ¡e "
+#~ "namizje."
+
+#~ msgid "Click on Remove ."
+#~ msgstr "Kliknite Odstrani ."
+
+#~ msgid ""
+#~ "Deselect the Enabled check-box next to the name of your "
+#~ "account, and then select it again to try to reconnect to the service."
+#~ msgstr ""
+#~ "Odstranite izbiro izbirnega polja OmogoÄeno poleg imena "
+#~ "svojega raÄuna, in jo nato ponovno izberite za poskus ponovne povezave s "
+#~ "storitvijo."
+
+#~ msgid ""
+#~ "Check that the Enabled check-box is "
+#~ "selected. If it is not, select the check-box to enable the account."
+#~ msgstr ""
+#~ "Preverite, Äe je izbrano izbirno polje OmogoÄeno"
+#~ "gui>. Äe ni, ga izberite in s tem omogoÄite raÄun."
+
+#~ msgid ""
+#~ "Highlighting text is quirky: #593733. If there's an actual "
+#~ "highlighting going on, independent of the selection (like in yellow or "
+#~ "something), we can use the term \"highlight\". Otherwise we need to use "
+#~ "the term \"select\". Watch that bug."
+#~ msgstr ""
+#~ "Poudarjanje besedila je Äudno: #593733. V primeru da pride do dejanskega "
+#~ "poudarjanja neodvisno od izbire (na primer v rumeni barvi), lahko "
+#~ "uporabimo izraz \"poudarjanje\". V nasprotnemu primeru moramo uporabiti "
+#~ "\"izbira\". Opazujte ta hroÅ¡Ä."
+
+#~ msgid "Select the Search tab."
+#~ msgstr "Izberite zavihek Iskanje ."
+
+#~ msgid ""
+#~ "In the For field, type the text you want to search for. Click "
+#~ "Find or press Enter ."
+#~ msgstr ""
+#~ "V polje Za , vtipkajte besedilo, ki ga želite iskati. Kliknite "
+#~ "iÅ¡Äi ali pritisnite Enter ."
+
+#~ msgid ""
+#~ "Click on a conversation to view it. Empathy will select the "
+#~ "text in the conversation that matched your search terms."
+#~ msgstr ""
+#~ "Za ogled pogovora kliknite nanj. Empathy bo izbral besedilo v "
+#~ "pogovoru, ki se sklada z vašimi pogoji iskanja."
+
+#~ msgid "Select the Conversations tab."
+#~ msgstr "Izberite zavihek Pogovori ."
+
+#~ msgid ""
+#~ "Deselect Enabled on the right side of the "
+#~ "window."
+#~ msgstr ""
+#~ "Odstranite izbiro OmogoÄeno na desni strani "
+#~ "okna."
+
+#~ msgid "Click Log in ."
+#~ msgstr "Kliknite Prijava ."
+
+#~ msgid ""
+#~ "To turn a video conversation into an audio conversation, choose "
+#~ "Video Video Off"
+#~ "gui> , or click the video call toolbar button to deselect "
+#~ "it."
+#~ msgstr ""
+#~ "Za spremembo video pogovora v zvoÄni pogovor izberiteVideo Izklopi video "
+#~ "ali v orodni vrstici kliknite gumb video klic za odstranitev "
+#~ "njegove izbire."
+
+#~ msgid ""
+#~ "Click on the trash icon next to the account name to remove the account."
+#~ msgstr "Kliknite na ikono smeti poleg imena raÄuna za njegovo odstranitev."
+
+#~ msgid "To join such a room, if you know the password:"
+#~ msgstr "Za pridružitev takšni sobi, v primeru da veste geslo:"
+
+#~ msgid ""
+#~ "There are a number of popular free SIP account providers; one popular "
+#~ "provider is Sipphone."
+#~ msgstr ""
+#~ "Obstaja veliko brezplaÄnih ponudnikov SIP; eden od priljubljenih "
+#~ "ponudnikov je Sipphone."
+
+#~ msgid ""
+#~ "From the Contact List window, click the audio call"
+#~ "media> icon next to the name of the contact you wish to call and choose "
+#~ "Audio Call . Alternatively, right click the "
+#~ "contact and choose Audio Call ."
+#~ msgstr ""
+#~ "V oknu Seznam stikov kliknite ikono zvoÄni klic"
+#~ "media> poleg imena stika, ki ga želite klicati in izberite ZvoÄni klic . Dodatno lahko desno kliknete na stik in "
+#~ "izberete ZvoÄni klic ."
+
+#~ msgid ""
+#~ "To turn an audio conversation into a video conversation, choose "
+#~ "Video Video On"
+#~ "gui> , or click the video call toolbar button to select it."
+#~ msgstr ""
+#~ "Za spremembo zvoÄnega pogovora v video pogovor izberite Video Video vklopljen "
+#~ "guiseq> ali za izbiro kliknite na gumb video klic v orodni vrstici."
diff --git a/help/zh_CN/zh_CN.po b/help/zh_CN/zh_CN.po
index 645d667d..c70bd5cd 100644
--- a/help/zh_CN/zh_CN.po
+++ b/help/zh_CN/zh_CN.po
@@ -4,17 +4,19 @@
# Lavande , 2010
# Tao Wang , 2010
# lainme , 2011
+# Guanhao Yin , 2011
#
msgid ""
msgstr ""
"Project-Id-Version: empathy master\n"
-"POT-Creation-Date: 2011-07-11 12:41+0000\n"
-"PO-Revision-Date: 2011-07-11 20:40+0800\n"
-"Last-Translator: lainme \n"
+"POT-Creation-Date: 2011-12-11 14:58+0000\n"
+"PO-Revision-Date: 2011-12-09 21:36+0800\n"
+"Last-Translator: Guanhao Yin \n"
"Language-Team: Chinese (China) \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Language: zh-CN\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#. When image changes, this message will be marked fuzzy or untranslated for you.
@@ -27,17 +29,17 @@ msgstr ""
#: C/video-call.page:10(desc)
msgid "Start a video conversation with one of your contacts."
-msgstr "åæ¨çè系人åèµ·è§é¢ä¼è¯ã"
+msgstr "åæ¨çè系人è¿è¡è§é¢è天ã"
#: C/video-call.page:21(name) C/status-icons.page:16(name)
-#: C/share-desktop.page:13(name) C/set-custom-status.page:19(name)
+#: C/share-desktop.page:14(name) C/set-custom-status.page:19(name)
#: C/send-file.page:21(name) C/salut-protocol.page:18(name)
#: C/remove-account.page:18(name) C/prob-conn-neterror.page:18(name)
#: C/prob-conn-name.page:17(name) C/prob-conn-auth.page:21(name)
#: C/prob-conn-acctdisabled.page:18(name) C/prev-conv.page:16(name)
#: C/link-contacts.page:15(name) C/irc-start-conversation.page:15(name)
#: C/irc-send-file.page:16(name) C/irc-nick-password.page:18(name)
-#: C/irc-manage.page:19(name) C/irc-join-room.page:16(name)
+#: C/irc-manage.page:20(name) C/irc-join-room.page:16(name)
#: C/irc-join-pwd.page:17(name) C/irc-commands.page:10(name)
#: C/introduction.page:13(name) C/index.page:19(name)
#: C/import-account.page:23(name) C/hide-contacts.page:11(name)
@@ -52,14 +54,14 @@ msgid "Milo Casagrande"
msgstr "Milo Casagrande"
#: C/video-call.page:22(email) C/status-icons.page:17(email)
-#: C/share-desktop.page:14(email) C/set-custom-status.page:20(email)
+#: C/share-desktop.page:15(email) C/set-custom-status.page:20(email)
#: C/send-file.page:22(email) C/salut-protocol.page:19(email)
#: C/remove-account.page:19(email) C/prob-conn-neterror.page:19(email)
#: C/prob-conn-name.page:18(email) C/prob-conn-auth.page:22(email)
#: C/prob-conn-acctdisabled.page:19(email) C/prev-conv.page:17(email)
#: C/link-contacts.page:16(email) C/irc-start-conversation.page:16(email)
#: C/irc-send-file.page:17(email) C/irc-nick-password.page:19(email)
-#: C/irc-manage.page:20(email) C/irc-join-room.page:17(email)
+#: C/irc-manage.page:21(email) C/irc-join-room.page:17(email)
#: C/irc-join-pwd.page:18(email) C/irc-commands.page:11(email)
#: C/introduction.page:14(email) C/index.page:20(email)
#: C/import-account.page:24(email) C/hide-contacts.page:12(email)
@@ -74,7 +76,7 @@ msgid "milo@ubuntu.com"
msgstr "milo@ubuntu.com"
#: C/video-call.page:25(p) C/status-icons.page:24(p)
-#: C/share-desktop.page:17(p) C/set-custom-status.page:23(p)
+#: C/share-desktop.page:22(p) C/set-custom-status.page:23(p)
#: C/send-message.page:21(p) C/send-file.page:25(p)
#: C/salut-protocol.page:22(p) C/remove-account.page:22(p)
#: C/prob-conn.page:18(p) C/prob-conn-neterror.page:22(p)
@@ -82,7 +84,7 @@ msgstr "milo@ubuntu.com"
#: C/prob-conn-acctdisabled.page:22(p) C/prev-conv.page:24(p)
#: C/link-contacts.page:19(p) C/irc-start-conversation.page:19(p)
#: C/irc-send-file.page:20(p) C/irc-nick-password.page:22(p)
-#: C/irc-manage.page:23(p) C/irc-join-room.page:20(p)
+#: C/irc-manage.page:24(p) C/irc-join-room.page:20(p)
#: C/irc-join-pwd.page:21(p) C/irc-commands.page:14(p)
#: C/introduction.page:17(p) C/index.page:23(p) C/import-account.page:31(p)
#: C/hide-contacts.page:15(p) C/group-conversations.page:23(p)
@@ -99,32 +101,19 @@ msgstr "ç¥è¯å
±äº«-ç¸åæ¹å¼å
񄧮 (Creative Commons Share Alike) 3.0"
#: C/video-call.page:28(title)
msgid "Start a video conversation"
-msgstr "åèµ·è§é¢ä¼è¯"
+msgstr "å¼å§è§é¢è天"
#: C/video-call.page:30(p)
-#, fuzzy
-#| msgid ""
-#| "If you have a webcam, you can call your contacts and have an video "
-#| "conversation with them. This features only works with certain types of "
-#| "accounts, and it requires the other person to have an application that "
-#| "supports video calls."
msgid ""
"If you have a webcam, you can call your contacts and have a video "
"conversation with them. This features only works with certain types of "
"accounts, and it requires the other person to have an application that "
"supports video calls."
msgstr ""
-"å¦ææ¨æç½ç»æå头ï¼æ¨å¯ä»¥å¼å«æ¨çè系人并åä»ä»¬è¿è¡è§é¢ä¼è¯ãæ¤åè½ä»
å¯ç¨äº"
-"ç¹å®ç±»åçå¸å·ï¼å¹¶éè¦å¯¹æ¹ä¹å®è£
äºæ¯æè§é¢å¼å«çç¨åºã"
+"å¦ææ¨æç½ç»æå头ï¼æ¨å¯ä»¥å¼å«æ¨çè系人并åä»ä»¬è¿è¡è§é¢è天ãæ¤åè½ä»
ç¹å®ç±»"
+"åçè´¦æ·å¯ç¨ï¼å¹¶éè¦å¯¹æ¹ä½¿ç¨çç¨åºæ¯æè§é¢å¼å«ã"
#: C/video-call.page:37(p)
-#, fuzzy
-#| msgid ""
-#| "From the Contact List window, click the video call icon "
-#| "next to the name of the contact you wish to call and choose Video Call . Alternatively, right click the contact and "
-#| "choose Video Call ."
msgid ""
"From the Contact List window, click the video call icon "
@@ -133,8 +122,7 @@ msgid ""
msgstr ""
"å¨è系人å表 çªå£ï¼ç¹å»æ¨æ³å¼å«çè系人çååæçè§é¢å¼å« "
-"å¾æ 并éæ©è§é¢å¼å« ãåæ ·ï¼ä¹å¯ä»¥å³å»è系人并é"
-"æ©è§é¢å¼å« ã"
+"å¾æ 并éæ©è§é¢å¼å« ã"
#: C/video-call.page:43(p) C/audio-call.page:42(p)
msgid ""
@@ -142,54 +130,36 @@ msgid ""
"Connected at the bottom of the window, along with the total "
"conversation time."
msgstr ""
-"è¿æ¥å»ºç«åï¼ä¼æå¼æ°ççªå£ï¼æ¨å°å¨çªå£åºé¨çè§å·²è¿æ¥ ï¼ä»¥åæ»ä¼è¯æ¶"
-"é´ã"
+"ä¸ä¸ªæ°çªå£ä¼è¢«æå¼ãè¿æ¥å»ºç«åï¼æ¨å°å¨çªå£åºé¨çå°å·²è¿æ¥ ï¼ä»¥åæ»ä¼"
+"è¯æ¶é´ã"
#: C/video-call.page:48(p) C/audio-call.page:48(p)
msgid "To end the conversation, click on Hang up ."
msgstr "ç¹å»ææ 以ç»æä¼è¯ã"
#: C/video-call.page:54(p)
-#, fuzzy
-#| msgid ""
-#| "To turn a video conversation into an audio conversation, choose "
-#| "Video Video Off"
-#| "gui> , or click the video call toolbar button to deselect "
-#| "it."
msgid ""
"To turn a video conversation into an audio conversation, choose Video Video Off ."
msgstr ""
-"è¦å°è§é¢ä¼è¯è½¬ä¸ºé³é¢ä¼è¯ï¼åéæ©è§é¢ å
³éè§é¢ ï¼æè
ç¹å»å·¥å
·æ ä¸çè§é¢å¼å« "
-"æé®ä»¥åæ¶éæ©ã"
+"è¦å°è§é¢ä¼è¯è½¬ä¸ºè¯é³ä¼è¯ï¼éæ© è§é¢ è§é¢å
³é ã"
#: C/video-call.page:60(title)
-#, fuzzy
-#| msgid "Start a video conversation with one of your contacts."
msgid "Start a video conversation with a meta-contact"
-msgstr "åæ¨çè系人åèµ·è§é¢ä¼è¯ã"
+msgstr "åä¸ä½å
è系人è¿è¡è§é¢è天ã"
#: C/video-call.page:63(p) C/send-message.page:53(p) C/audio-call.page:66(p)
-#, fuzzy
-#| msgid ""
-#| "From the Contact List window, click on the drop-down list at "
-#| "the top."
msgid ""
"From the Contact List window, right-click on the meta-contact."
-msgstr "ä» è系人å表 çªå£ï¼ç¹å»é¡¶é¨çä¸æèåã"
+msgstr "å¨è系人å表 çªå£ï¼å³é®ç¹å»è¯¥å
è系人ã"
#: C/video-call.page:68(p)
-#, fuzzy
-#| msgid ""
-#| "Right-click on the name of the contact you want to have a conversation "
-#| "with, and choose Chat ."
msgid ""
"Select the contact you want to have the conversation, and from the menu "
"select Video Call ."
-msgstr "å³é®ç¹å»æ¨æ³è¦è¿è¡äº¤è°çè系人çååï¼ç¶åéæ© è天 "
+msgstr ""
+"éæ©è¦è天çè系人ï¼ç¶åå¨èåä¸éæ©è§é¢å¼å« "
#: C/video-call.page:75(p) C/send-message.page:65(p) C/audio-call.page:78(p)
msgid ""
@@ -198,6 +168,9 @@ msgid ""
"second: a small pop-up message will appear showing the number of the "
"contacts that form the meta-contact."
msgstr ""
+"è¦è¯å«ä¸ä¸ªè系人æ¯å¦æ¯å
è系人 ï¼å°æ¨çé¼ æ 移å¨å°è系人å表"
+"gui>çªå£ä¸çä¸ä¸ªè系人ä¸ï¼å¹¶åçå ç§éï¼ä¸ä¸ªå°å¼¹åºæ¶æ¯ä¼æ¾ç¤ºè¿ä¸ªå
è系人æ¯ç±"
+"å 个è系人ç»æçã"
#. When image changes, this message will be marked fuzzy or untranslated for you.
#. It doesn't matter what you translate it to: it's not used at all.
@@ -300,7 +273,7 @@ msgid ""
"away. You can set a custom message for this status."
msgstr ""
"å½æ¨ä¸å¨çµèææ¶ï¼ä½¿ç¨ç¦»å¼ ç¶æãå¦ææ¨ä¸æ®µæ¶é´å
ä¸ä½¿ç¨çµèï¼æè
å±å¹"
-"ä¿æ¤æå¼äºï¼Empathy å°èªå¨è®¾ç½®æ¨çç¶æ为离å¼ãé»è®¤å°ï¼å½æ¨ç¦»å¼æ¶ï¼"
+"ä¿æ¤æå¼äºï¼Empathy å°èªå¨è®¾ç½®æ¨çç¶æ为离å¼ãé»è®¤å°ï¼å½æ¨ç¦»å¼æ¶ï¼"
"Empathy ä¸ä¼ä½¿ç¨æ°æ³¡æ示å声é³æ示ãæ¨å¯ä»¥ä¸ºæ¤ç¶æèªå®ä¸æ¡æ¶æ¯ã"
#: C/status-icons.page:62(media) C/status-icons.page:69(media)
@@ -317,8 +290,8 @@ msgid ""
"to your contacts. You will still be connected to your accounts, and you "
"still see your contactsâ statuses and start conversations with them."
msgstr ""
-"å½æ¨å°ç¶æ设置为é身 æ¶ï¼æ¨çè系人çå°æ¨æ¯ç¦»çº¿çç¶æãæ¨ä»ç¶è¿æ¥ä¸äº"
-"æ¨çå¸å·ï¼å¹¶ä¸ä»ç¶å¯ä»¥çè§æ¨çè系人çç¶æä¸å¯ä»¥åä»ä»¬åèµ·ä¼è¯ã"
+"å½æ¨å°ç¶æ设置为é身 æ¶ï¼æ¨çè系人ä¼çå°æ¨å·²ç¦»çº¿ãä½æ¨ä»ç¶è¿æ¥çæ¨ç"
+"è´¦æ·ï¼å¹¶ä¸å¯ä»¥çå°æ¨çè系人çç¶æï¼æè
åä»ä»¬è天ã"
#: C/status-icons.page:70(gui)
msgid "Offline"
@@ -328,87 +301,96 @@ msgstr "离线"
msgid ""
"Setting your status to Offline disconnects you from all of your "
"accounts."
-msgstr "å°ç¶æ设置为离线 å°ä¼æå¼æ¨ææå¸å·çè¿æ¥ã"
+msgstr "å°ç¶æ设置为离线 å°ä¼æå¼æ¨ææè´¦æ·çè¿æ¥ã"
#: C/share-desktop.page:7(desc)
-msgid "Share the desktop with your contacts."
-msgstr "ä¸æ¨çè系人å
±äº«æ¡é¢ã"
+msgid "Show your desktop to your contacts."
+msgstr "åæ¨çè系人å±ç¤ºæ¨çæ¡é¢ã"
+
+#: C/share-desktop.page:18(name)
+msgid "Ekaterina Gerasimova"
+msgstr "Ekaterina Gerasimova"
+
+#: C/share-desktop.page:19(email)
+msgid "kittykat3756@gmail.com"
+msgstr "kittykat3756@gmail.com"
-#: C/share-desktop.page:28(title)
+#: C/share-desktop.page:33(title)
msgid "Share your desktop"
msgstr "å
±äº«æ¨çæ¡é¢"
-#: C/share-desktop.page:30(p)
+#: C/share-desktop.page:35(p)
msgid ""
-"It is possible, with some of your contacts, to share your desktop with them, "
-"or to start using your contacts desktop. You can use this functionality to "
-"show your desktop to your contacts, to ask for help or to help your contacts "
-"resolve a problem."
+"It is possible to share your desktop with some of your contacts. You can use "
+"this functionality to show your desktop to your contacts to, for example, "
+"ask for help or help your contacts resolve a problem."
msgstr ""
-"å¯ä»¥åæ¨çä¸äºè系人å
±äº«æ¨çæ¡é¢ï¼æè
使ç¨æ¨è系人çæ¡é¢ãæ¨å¯ä»¥ä½¿ç¨è¿ä¸ªåè½"
-"åæ¨çè系人å±ç¤ºæ¨çæ¡é¢ï¼æ¥å¯»æ±å¸®å©æ帮å©æ¨çè系人解å³é®é¢ã"
+"æ¨å¯ä»¥åè系人å
±äº«æ¡é¢ã使ç¨è¿ä¸ªåè½ï¼æ¨å¯ä»¥åè系人å±ç¤ºæ¨çæ¡é¢ï¼æ¥å¯»æ±å¸®å©"
+"æ帮å©è系人解å³é®é¢ã"
-#: C/share-desktop.page:38(p)
+#: C/share-desktop.page:42(p)
msgid ""
-"In order to be able to share your desktop or to remotely use your contacts "
-"desktop, it is necessary to have a remote desktop viewer application "
-"installed in your system."
+"To be able to share your desktop, you need to have a VNC server, which has "
+"support for the feature, installed on your system. Vino , the "
+"GNOME VNC server, has the required support."
msgstr ""
-"为äºè½å¤å
±äº«æ¨çæ¡é¢æè
è¿ç¨ä½¿ç¨æ¨è系人çæ¡é¢ï¼éè¦å¨æ¨çç³»ç»ä¸å®è£
è¿ç¨æ¡é¢"
-"æ¥çåºç¨ç¨åºã"
-
-#: C/share-desktop.page:46(p) C/send-file.page:40(p)
-#: C/favorite-rooms.page:66(p)
-msgid "From the Contact List window, perform one of the following:"
-msgstr "ä» è系人å表 çªå£ï¼æ§è¡ä¸åæä½ä¸çä¸ä¸ªï¼"
+"è¦å
±äº«æ¨çæ¡é¢ï¼æ¨çç³»ç»ä¸å¿
é¡»å®è£
æ¯ææ¤åè½ç VNC æå¡å¨ãVino ï¼"
+"GNOME ç VNC æå¡å¨ï¼å°±æè¿é¡¹åè½ã"
#: C/share-desktop.page:51(p)
+msgid "From the Contact List window, do one of the following:"
+msgstr "å¨è系人å表 çªå£ï¼æ§è¡ä¸åæä½ä¹ä¸ï¼"
+
+#: C/share-desktop.page:56(p)
msgid ""
-"Select the contact you want to share your desktop with, and choose "
-"Edit Contact Share my desktop "
+"Select the contact you want to share your desktop with and choose "
+"Edit Contact Share My Desktop "
"guiseq>."
msgstr ""
"éæ©æ¨æ³è¦å
±äº«æ¨çæ¡é¢çè系人ï¼å¹¶éæ© ç¼è¾ è系人"
"gui>å
±äº«æçæ¡é¢ ã"
-#: C/share-desktop.page:57(p)
+#: C/share-desktop.page:63(p)
msgid ""
-"Right-click on the name of the contact you want to share your desktop with, "
-"and select Share my desktop ."
+"Right-click on the name of the contact you want to share your desktop with "
+"and select Share My Desktop ."
msgstr ""
-"å³é®ç¹å»æ¨æ³è¦å
±äº«æ¨æ¡é¢çè系人çååï¼ç¶åéæ© å
±äº«æçæ¡é¢ ã"
+"å³é®ç¹å»æ¨æ³è¦å
±äº«æ¨æ¡é¢çè系人çååï¼ç¶åéæ©å
±äº«æçæ¡é¢ ã"
-#: C/share-desktop.page:65(p)
+#: C/share-desktop.page:71(p)
msgid ""
-"A request will be sent to the contact you want to share your desktop with. "
-"If they accept, the default remote desktop viewer application will be "
-"launched in order to permit you to disconnect the user that is controlling "
-"your desktop."
+"An invitation to view your desktop will be sent to the contact you have "
+"selected. To view your desktop, they will need to accept it."
msgstr ""
-"ä¼åè¦å
±äº«æ¨çæ¡é¢çè系人åéä¸ä¸ªè¯·æ±ãå¦æä»ä»¬æ¥åäºè¿ä¸ªè¯·æ±ï¼é£ä¹å°ä¼è¿è¡"
-"é»è®¤çè¿ç¨æ¡é¢æ¥çå¨åºç¨ç¨åºï¼è¿æ ·æ¨å°±å¯ä»¥ éæ¶æå¼æ£å¨æ§å¶æ¨æ¡é¢ç¨æ·çé¾æ¥ã"
+"æ¨éæ©çè系人ä¼æ¶å°ä¸ä¸ªæ¥çæ¨æ¡é¢çé请ãè¦æ¥çæ¨çæ¡é¢ï¼ä»ä»¬éè¦æ¥åé请ã"
-#: C/share-desktop.page:70(p)
+#: C/share-desktop.page:77(p)
msgid ""
-"For more information about how to use the remote desktop viewer application, "
-"refer to its help."
-msgstr "å¦æéè¦æ´å¤å
³äºå¦ä½ä½¿ç¨è¿ç¨æ¡é¢æ¥çå¨åºç¨ç¨åºï¼è¯·åçå
¶å¸®å©ã"
+"You can disconnect the contact from your computer using your desktop sharing "
+"application."
+msgstr "å¨æ¨çæ¡é¢å
±äº«ç¨åºä¸ï¼æ¨å¯ä»¥æå¼æ¨çè系人å°æ¨ç计ç®æºçè¿æ¥ã"
-#: C/share-desktop.page:77(p)
+#: C/share-desktop.page:82(p)
+msgid ""
+"For more information about how to use the remote desktop sharing "
+"application, refer to its help."
+msgstr "å¦æéè¦æ´å¤å
³äºå¦ä½ä½¿ç¨è¿ç¨æ¡é¢æ¥å
±äº«ç¨åºçä¿¡æ¯ï¼è¯·åçå
¶å¸®å©ã"
+
+#: C/share-desktop.page:90(p)
msgid ""
"When you share your desktop with someone else, it is possible to experience "
"system performance slowdown and low Internet speed."
msgstr ""
"å½æ¨ä¸å
¶ä»äººå
±äº«æ¨çæ¡é¢çæ¶åï¼å¯è½ä¼åºç°ç³»ç»æ§è½éä½åç½ç»é度ä¸éçç°è±¡ã"
-#: C/share-desktop.page:83(p)
+#: C/share-desktop.page:96(p)
msgid ""
-"Not all your contacts might be able to support this functionality. It is "
-"necessary for them to have at least the 2.28 version of Empathy "
-"and a remote desktop viewer application installed in their system."
+"Some of your contacts may not be able to use this feature. It is necessary "
+"for them to have version 2.28, or newer, of Empathy and a "
+"compatible remote desktop viewer application installed in their system."
msgstr ""
-"ä¸æ¯ææçæ¨çè系人é½è½å¤æ¯æè¿ä¸ªåè½ãä»ä»¬å¿
é¡»è³å°æ 2.28 çæ¬ä»¥ä¸ç "
-"Empathy 并ä¸å¨ç³»ç»ä¸å®è£
äºè¿ç¨æ¡é¢æ¥çå¨ç¨åºã"
+"并éæ¨çææè系人é½å¯ä»¥ä½¿ç¨è¿ä¸ªåè½ãä»ä»¬å¿
é¡»ä½¿ç¨ 2.28 ææ´æ°çæ¬ç "
+"Empathy 并ä¸å¨å®è£
äºå
¼å®¹çè¿ç¨æ¡é¢æ¥çå¨ç¨åºã"
#: C/set-custom-status.page:9(desc)
msgid "Add, edit or delete personal messages for your status."
@@ -444,22 +426,22 @@ msgstr "å¯ä»¥æ ¹æ®ä¸åçç¶ææ¥è®¾ç½®èªå®ä¹æ¶æ¯ã"
msgid ""
"From the Contact List window, click on the drop-down list at the "
"top."
-msgstr "ä» è系人å表 çªå£ï¼ç¹å»é¡¶é¨çä¸æèåã"
+msgstr "å¨è系人å表 çªå£ï¼ç¹å»é¡¶é¨çä¸æå表ã"
#: C/set-custom-status.page:52(p)
msgid ""
"Select the status you want to add a custom message to. You have to select "
"the one identified with the label Custom Message ."
msgstr ""
-"éæ©æ¨å¸ææ·»å å°å®å¶æ¶æ¯çç¶æãæ¨å¿
é¡»éæ©ä¸ä¸ªæ ææ¯ èªå®ä¹æ¶æ¯ ç"
-"æ ç¾ã"
+"éæ©æ¨å¸ææ·»å èªå®ä¹æ¶æ¯çç¶æãæ¨å¿
é¡»éæ©æèªå®ä¹æ¶æ¯ æ ç¾æ è®°çç¶"
+"æã"
#: C/set-custom-status.page:58(p)
msgid ""
"Enter your custom message in the text box at the top of the window, and "
"press Enter to set the message."
msgstr ""
-"å¨çªå£é¡¶é¨çææ¬æ¡ä¸è¾å
¥æ¨çèªå®ä¹æ¶æ¯ï¼ç¶åæåè½¦é® æ¥è®¾å®è¿ä¸ªæ¶"
+"å¨çªå£é¡¶é¨çææ¬æ¡ä¸è¾å
¥æ¨çèªå®ä¹æ¶æ¯ï¼ç¶åæEnter æ¥è®¾å®è¿ä¸ªæ¶"
"æ¯ã"
#: C/set-custom-status.page:64(p)
@@ -468,16 +450,16 @@ msgid ""
"use it again, click on the little star on the right of the text box where "
"you wrote your custom message."
msgstr ""
-"å¦ææ¨å¸æ设置èªå®ä¹æ¶æ¯ä¸ºå好ï¼é£ä¹å¯ä»¥ä¿åä¸æ¥ä»¥æ¹ä¾¿ä»¥å使ç¨ï¼å¨æ¨æ°åæ¨ç"
-"èªå®ä¹æ¶æ¯çææ¬æ¡çå³ä¾§æä¸ä¸ªå°ææï¼ç¹å»å®å°±å¯ä»¥ä¿åã"
+"å¦ææ¨å¸ææ¶èä¸ä¸ªèªå®ä¹æ¶æ¯ï¼å³å°å®ä¿åä¸æ¥æ¹ä¾¿æ¥å使ç¨ï¼è¯·ç¹å»æ¨æ°åèªå®ä¹"
+"æ¶æ¯çææ¬æ¡å³ä¾§çå°ææã"
#: C/set-custom-status.page:69(p)
msgid ""
"If you do not do it, the custom message will not be available the next time "
"you use Empathy . It will be saved only for the current session."
msgstr ""
-"å¦ææ¨ä¸è¿ä¹åï¼é£ä¹ä¸åæ¨ä½¿ç¨ Empathy çæ¶åï¼è¿ä¸ªèªå®ä¹æ¶æ¯å°±ä¸"
-"ä¼ååºç°ãå®åªä¿çå°å½åä¼è¯ç»æã"
+"å¦ææ¨ä¸è¿ä¹åï¼é£ä¹ä¸æ¬¡æ¨ä½¿ç¨ Empathy çæ¶åï¼è¿ä¸ªèªå®ä¹æ¶æ¯å°±ä¸"
+"ä¼ååºç°ãå®åªå¨ Empathy æ¬æ¬¡è¿è¡æé´è¢«ä¿çã"
#: C/set-custom-status.page:78(title)
msgid "Edit, remove and add a custom message"
@@ -485,7 +467,7 @@ msgstr "ç¼è¾ãå é¤åæ·»å èªå®ä¹æ¶æ¯"
#: C/set-custom-status.page:88(p)
msgid "Select Edit Custom Message ."
-msgstr "éæ© ç¼è¾èªå®ä¹æ¶æ¯ "
+msgstr "éæ©ç¼è¾èªå®ä¹æ¶æ¯ ã"
#: C/set-custom-status.page:95(p)
msgid "To edit a custom message:"
@@ -495,12 +477,11 @@ msgstr "è¦ç¼è¾èªå®ä¹æ¶æ¯ï¼"
msgid ""
"From the Saved Presets box, select the status message you want to "
"edit and double-click on it."
-msgstr ""
-"ä» å·²ä¿åçèªå®ä¹ç¶æ æ¡ä¸ï¼éæ©æ¨æ³è¦ç¼è¾çç¶ææ¶æ¯ï¼ç¶ååå»å®ã"
+msgstr "å¨å·²ä¿åçèªå®ä¹ç¶æ ä¸ï¼éæ©æ¨æ³è¦ç¼è¾çç¶ææ¶æ¯å¹¶åå»å®ã"
#: C/set-custom-status.page:106(p)
msgid "Type the new custom message and press Enter to modify it."
-msgstr "è¾å
¥æ°çèªå®ä¹æ¶æ¯å¹¶ä¸æåè½¦é® æ¥ä¿®æ¹å®ã"
+msgstr "è¾å
¥æ°çèªå®ä¹æ¶æ¯å¹¶ä¸æEnter æ¥ä¿®æ¹å®ã"
#: C/set-custom-status.page:113(p)
msgid "To remove a custom message:"
@@ -510,22 +491,22 @@ msgstr "è¦å é¤èªå®ä¹æ¶æ¯ï¼"
msgid ""
"From the Saved Presets box, select the status message you want to "
"remove."
-msgstr "ä» å·²ä¿åçèªå®ä¹ç¶æ æ¡ä¸ï¼éæ©æ¨æ³è¦å é¤çç¶ææ¶æ¯ã"
+msgstr "å¨å·²ä¿åçèªå®ä¹ç¶æ ä¸ï¼éæ©è¦å é¤çç¶ææ¶æ¯ã"
#: C/set-custom-status.page:124(p)
msgid "Click on the Remove button."
-msgstr "ç¹å» å é¤ æé®ã"
+msgstr "ç¹å»å é¤ æé®ã"
#: C/set-custom-status.page:131(p)
msgid ""
"To add a new custom message, from the Add New Preset section:"
-msgstr "è¦æ·»å ä¸æ¡æ°çèªå®ä¹æ¶æ¯ï¼ä» æ·»å æ°èªå®ä¹ç¶æ é¨åï¼"
+msgstr "è¦æ·»å ä¸æ¡æ°çèªå®ä¹æ¶æ¯ï¼å¨æ·»å æ°èªå®ä¹ç¶æ é项å¡ï¼"
#: C/set-custom-status.page:136(p)
msgid ""
"Click on the drop-down list to select the status you want to set a custom "
"message to."
-msgstr "ç¹å»ä¸æèåæ¥éæ©æ¨æ³è¦è®¾å®èªå®ä¹æ¶æ¯çç¶æã"
+msgstr "ç¹å»ä¸æå表éæ©æ¨æ³è¦è®¾å®èªå®ä¹æ¶æ¯çç¶æã"
#: C/set-custom-status.page:142(p)
msgid "Click on the text box, and type the new custom message."
@@ -533,11 +514,11 @@ msgstr "ç¹å»ææ¬æ¡ï¼è¾å
¥æ°çèªå®ä¹æ¶æ¯ã"
#: C/set-custom-status.page:147(p)
msgid "Click on Add to add the new message to the presets ones."
-msgstr "ç¹å» æ·»å æ¥æ·»å æ°æ¶æ¯å°å·²ä¿åççèªå®ä¹æ¶æ¯å表ä¸ã"
+msgstr "ç¹å»æ·»å å°æ°æ¶æ¯æ·»å å°å·²ä¿åççèªå®ä¹æ¶æ¯å表ä¸ã"
#: C/set-custom-status.page:156(p)
msgid "When finished, click on Close ."
-msgstr "å½è¿äºåå®åï¼ç¹å» å
³é ã"
+msgstr "å®æåï¼ç¹å»å
³é ã"
#: C/set-custom-status.page:163(p)
msgid ""
@@ -545,8 +526,8 @@ msgid ""
"status message. You will need to select it from the Contact List "
"window."
msgstr ""
-"å½ä½ ç¼è¾ææ·»å æ°èªå®ä¹æ¶æ¯çæ¶åï¼å®ä¸ä¼è¢«è®¾ä¸ºå½åç¶ææ¶æ¯ãæ¨éè¦ä» è"
-"系人å表 çªå£ä¸éä¸å®ã"
+"å½ä½ ç¼è¾ææ·»å æ°èªå®ä¹æ¶æ¯çæ¶åï¼å®ä¸ä¼è¢«è®¾ä¸ºå½åç¶ææ¶æ¯ãæ¨éè¦å¨èç³»"
+"人å表 çªå£ä¸éä¸å®ã"
#: C/send-message.page:8(desc)
msgid "Send a message to one of your contacts."
@@ -568,83 +549,79 @@ msgstr "philbull@gmail.com"
#: C/send-message.page:32(title)
msgid "Send a message to someone"
-msgstr "åéä¸æ¡æ¶æ¯ç»æ人"
+msgstr "åæ人åéæ¶æ¯"
#: C/send-message.page:36(p)
-#, fuzzy
-#| msgid ""
-#| "Double click the name of the contact that you want to have a conversation "
-#| "with."
msgid ""
"From the Contact List window, double-click the name of the "
"contact that you want to have a conversation with."
-msgstr "åå»æ¨æ³è¦è¿è¡äº¤è°çè系人çååã"
+msgstr "å¨è系人å表 çªå£ä¸ï¼åå»è¦ä¸ä¹è天çè系人çååã"
#: C/send-message.page:42(p)
msgid ""
"A new window will open. Type a message into the box at the bottom of the "
"window and press Enter to send it."
msgstr ""
-"è¿æ¶ä¼æå¼ä¸ä¸ªæ°ççªå£ãå¨çªå£åºé¨çææ¬æ¡ä¸è¾å
¥ä¸æ¡æ¶æ¯ï¼ç¶åæå车é®"
-"key>æ¥åéã"
+"ä¸ä¸ªæ°çªå£ä¼è¢«æå¼ãå¨çªå£åºé¨çææ¬æ¡ä¸è¾å
¥ä¸æ¡æ¶æ¯ï¼ç¶åæEnter "
+"åéã"
#: C/send-message.page:50(title)
-#, fuzzy
-#| msgid "Send a message to someone"
msgid "Send a message to a meta-contact"
-msgstr "åéä¸æ¡æ¶æ¯ç»æ人"
+msgstr "åä¸ä½å
è系人åéæ¶æ¯"
#: C/send-message.page:58(p)
-#, fuzzy
-#| msgid ""
-#| "Right-click on the name of the contact you want to have a conversation "
-#| "with, and choose Chat ."
msgid ""
"Select the contact you want to have the conversation, and from the menu "
"select Chat ."
-msgstr "å³é®ç¹å»æ¨æ³è¦è¿è¡äº¤è°çè系人çååï¼ç¶åéæ© è天 "
+msgstr ""
+"éæ©æ¨æ³è¦ä¸ä¹è天çè系人ï¼å¹¶å¨èåä¸éæ© è天"
+"gui>ã"
#: C/send-file.page:8(desc)
msgid "Send a file from your computer to one of your contacts."
-msgstr "ä»æ¨ç计ç®æºä¸åéä¸ä¸ªæ件è³æ¨çè系人ã"
+msgstr "ä»æ¨ç计ç®æºåéæ件ç»æ¨çè系人ã"
#: C/send-file.page:36(title)
msgid "Send files"
-msgstr "åéæ件ã"
+msgstr "åéæ件"
+
+#: C/send-file.page:40(p) C/favorite-rooms.page:66(p)
+msgid "From the Contact List window, perform one of the following:"
+msgstr "å¨è系人å表 çªå£ï¼æ§è¡ä¸åæä½ä¹ä¸ï¼"
#: C/send-file.page:45(p)
msgid ""
"Right click on the contact you want to send a file to, and choose Send "
"file ."
-msgstr "å³é®ç¹å»è¦åéæ件çè系人ï¼ç¶åéæ© åéæ件 ã"
+msgstr "å³é®ç¹å»è¦åå
¶åéæ件çè系人ï¼ç¶åéæ©åéæ件 ã"
#: C/send-file.page:50(p)
msgid ""
"Click on the contact you want to send a file, and choose Edit"
"gui>Contact Send file ."
msgstr ""
-"ç¹å»æ¨è¦åéæ件çè系人ï¼ç¶åéæ©ç¼è¾ è系人"
+"ç¹å»è¦åå
¶åéæ件çè系人ï¼ç¶åéæ©ç¼è¾ è系人"
"gui>åéæ件 ã"
#: C/send-file.page:58(p)
msgid "Select the file to send, and click on Send ."
-msgstr "éæ©è¦åéçæ件ï¼ç¶åç¹å» åé ã"
+msgstr "éæ©è¦åéçæ件ï¼å¹¶ç¹å»åé ã"
#: C/send-file.page:63(p)
msgid "The File Transfers window will appear."
-msgstr "è¿æ¶ä¼æ¾ç¤º æä»¶ä¼ è¾ çªå£ã"
+msgstr "æä»¶ä¼ è¾ çªå£ä¼è¢«æ¾ç¤ºã"
#: C/send-file.page:66(p)
msgid ""
"Wait for your contact to accept the file transfer, or click Stop "
"to halt the transfer."
-msgstr "çå¾
æ¨çè系人æ¥åæä»¶ä¼ è¾ï¼æç¹å» åæ¢ æ¥ç»æ¢ä¼ è¾ã"
+msgstr "请çå¾
æ¨çè系人æ¥åæä»¶ä¼ è¾ï¼æç¹å»åæ¢ æ¥ç»æ¢ä¼ è¾ã"
#: C/send-file.page:72(p)
msgid ""
"Once the transfer is finished, it is possible to close the File "
"Transfers window."
-msgstr "åªè¦ä¼ è¾ç»æ¢ï¼å°±å¯ä»¥å
³é æä»¶ä¼ è¾ çªå£ã"
+msgstr "ä¼ è¾ç»æä¹åï¼å°±å¯ä»¥å
³éæä»¶ä¼ è¾ çªå£äºã"
#: C/send-file.page:80(p)
msgid ""
@@ -652,22 +629,22 @@ msgid ""
"Clear to empty the list. This will only remove the files from the "
"list and will not delete them from your computer."
msgstr ""
-"å¦æçªå£ä¸ååºäºå¾å¤å·²ç»å®æçä¼ è¾ï¼ç¹å» æ¸
é¤ å¯ä»¥æ¸
空å表ãè¿åªä¼"
-"å°å表æ¸
空ï¼èä¸ä¼ä»æ¨ç计ç®æºä¸å é¤è¿äºæ件ã"
+"å¦æçªå£ä¸ååºäºå¾å¤å·²ç»å®æçä¼ è¾ï¼ç¹å»æ¸
é¤ å¯ä»¥æ¸
空å表ãè¿åªä¼å°"
+"å表æ¸
空ï¼èä¸ä¼ä»æ¨ç计ç®æºä¸å é¤è¿äºæ件ã"
#: C/send-file.page:87(p)
msgid ""
"It is possible to send files only using the following services: Jabber"
"em>, Google Talk and People Nearby ."
msgstr ""
-"åªå¯è½ä½¿ç¨ä¸åæå¡è¿è¡åéæ件ï¼Jabber ãGoogle Talk å "
-"People Nearby ã"
+"åªæ使ç¨ä¸åæå¡æè½åéæ件ï¼Jabber ãGoogle Talk åéè¿"
+"ç人 ã"
#: C/send-file.page:93(p)
msgid ""
"In order to send a file to someone, you need to be connected to the "
"Internet, or to a local area network."
-msgstr "为äºç»å«äººåéæ件ï¼æ¨éè¦è¿æ¥å°äºèç½ï¼ææ¬å°å±åç½ã"
+msgstr "è¦åå«äººåéæ件ï¼æ¨éè¦è¿æ¥å°äºèç½ï¼ææ¬å°å±åç½ã"
#: C/salut-protocol.page:8(desc)
msgid "Understanding the People Nearby feature."
@@ -712,7 +689,7 @@ msgstr "ææç°ä»£çæ¬å°å±åç½é½åºè¯¥å¯ä»¥æ¯æè¿ç±»æå¡ã"
#: C/remove-account.page:8(desc)
msgid "Completely remove an account from Empathy ."
-msgstr "ä» Empathy ä¸å®å
¨çå é¤ä¸ä¸ªè´¦æ·ã"
+msgstr "ä» Empathy ä¸å®å
¨å°å é¤ä¸ä¸ªè´¦æ·ã"
#: C/remove-account.page:33(title)
msgid "Remove an account"
@@ -725,7 +702,7 @@ msgid ""
"Empathy again in the future, you will have to add your account "
"details again."
msgstr ""
-"å¦æä½ ä¸æ³å使ç¨æ个账æ·ï¼æ¨å¯ä»¥ä» Empathy ä¸å®å
¨çå é¤è¿ä¸ªè´¦æ·ã"
+"å¦æä½ ä¸æ³å使ç¨æ个账æ·ï¼æ¨å¯ä»¥ä» Empathy ä¸å®å
¨å°å é¤è¿ä¸ªè´¦æ·ã"
"å¦ææ¨å°æ¥åå¸æå¨ Empathy ä¸ä½¿ç¨è¿ä¸ªè´¦æ·äºï¼æ¨å¯ä»¥åæ·»å è¿ä¸ªè´¦"
"æ·ã"
@@ -735,8 +712,8 @@ msgid ""
"From the Contact List window, choose Edit"
"gui>Accounts , or press F4 ."
msgstr ""
-"ä» è系人å表 çªå£ï¼éæ© ç¼è¾ è´¦æ· "
-"guiseq>ï¼ææ F4 ã"
+"å¨è系人å表 çªå£ä¸ï¼éæ©ç¼è¾ è´¦æ· "
+"guiseq>ï¼ææF4 ã"
#: C/remove-account.page:46(p)
msgid ""
@@ -746,15 +723,14 @@ msgstr "å¨çªå£å·¦ä¾§çè´¦æ·å表ä¸éæ©æ¨æ³è¦å é¤çè´¦æ·ã"
#: C/remove-account.page:50(p)
msgid "Click on Remove ."
-msgstr "ç¹å» å é¤ ã"
+msgstr "ç¹å»å é¤ ã"
#: C/remove-account.page:53(p)
msgid ""
"A dialog will be shown asking for confirmation. Click the Remove "
"button to permanently remove the account."
msgstr ""
-"è¿æ¶ä¼å¼¹åºä¸ä¸ªçªå£æ¥è¯¢é®æ¯å¦ç¡®è®¤ãç¹å» å é¤ æé®æ¥æ°¸ä¹
çå é¤è¿ä¸ªè´¦"
-"æ·ã"
+"ä¸ä¸ªå¼¹åºå¯¹è¯æ¡ä¼è¦æ±æ¨ç¡®è®¤å é¤ãç¹å»å é¤ æé®æ¥æ°¸ä¹
çå é¤è¿ä¸ªè´¦æ·ã"
#: C/remove-account.page:59(p)
msgid ""
@@ -781,15 +757,15 @@ msgstr "@@image: 'figures/gtk-edit.png'; md5=4f21b451732817be0604fe3e2c8da98b"
msgid ""
"An error message which says âNetwork error â appears in the main "
"window."
-msgstr "ä¸ä¸ªæ¾ç¤ºâç½ç»é误 âçä¿¡æ¯æ¾ç¤ºå¨ä¸»çªå£ä¸ã"
+msgstr "主çªå£ä¸æ¾ç¤ºäºä¸ä¸ªé误æ示信æ¯ï¼âç½ç»é误 âã"
#: C/prob-conn-neterror.page:33(title)
msgid "I get a message that says âNetwork errorâ"
-msgstr "ææ¶å°âç½ç»é误âçä¿¡æ¯"
+msgstr "ææ¶å°âç½ç»é误âçé误æ示信æ¯"
#: C/prob-conn-neterror.page:36(cite)
msgid "shaunm"
-msgstr ""
+msgstr "shaunm"
#: C/prob-conn-neterror.page:37(p)
msgid ""
@@ -822,8 +798,8 @@ msgid ""
"Click the edit icon in the error message."
msgstr ""
-"ç¹å»é误信æ¯ä¸çç¼è¾ å¾æ ã"
+"ç¹å»é误æ示信æ¯ä¸çç¼è¾ å¾æ ã"
#: C/prob-conn-neterror.page:65(p) C/prob-conn-acctdisabled.page:59(p)
msgid ""
@@ -831,7 +807,7 @@ msgid ""
"You should be able to find these details from the website of the messaging "
"service."
msgstr ""
-"æ£æ¥é«çº§ é项å¡ä¸æ¯å¦ææç»èé½æ¯æ£ç¡®çãæ¨å¯ä»¥ä»å³æ¶é讯æå¡åçç½"
+"æ£æ¥é«çº§ é项å¡ä¸çææç»èæ¯å¦æ£ç¡®ãæ¨åºå½å¯ä»¥ä»å³æ¶é讯æå¡åçç½"
"ç«ä¸æ¾å°è¿äºä¿¡æ¯ã"
#: C/prob-conn-neterror.page:82(p) C/prob-conn-auth.page:68(p)
@@ -857,11 +833,11 @@ msgstr "âç¨æ·åå·²ç»è¢«å ç¨â"
msgid ""
"An error message which says âName in use â appears in the main "
"window."
-msgstr "ä¸ä¸ªæ¾ç¤ºâç¨æ·åå·²ç»è¢«å ç¨ âçä¿¡æ¯æ¾ç¤ºå¨ä¸»çªå£ä¸ã"
+msgstr "主çªå£ä¸æ¾ç¤ºäºä¸ä¸ªé误æ示信æ¯ï¼âç¨æ·å已被å ç¨ âã"
#: C/prob-conn-name.page:32(title)
msgid "I get a message that says âName in useâ"
-msgstr "ææ¶å°âç¨æ·åå·²ç»è¢«å ç¨âçä¿¡æ¯"
+msgstr "ææ¶å°âç¨æ·åå·²ç»è¢«å ç¨âçé误æ示信æ¯"
#: C/prob-conn-name.page:34(p)
msgid ""
@@ -882,7 +858,7 @@ msgid ""
"the password for that nickname. For more information, see ."
msgstr ""
-"å¦ææ¨å·²ç»å¨æç¨çç½è·¯ä¸æ³¨åäºæµç§°ï¼è¯·ä¸ºè¯¥æµç§°è®¾ç½®å¯ç ãæ´å¤ä¿¡æ¯åè§ ã"
#: C/prob-conn-name.page:64(p)
@@ -890,17 +866,17 @@ msgid ""
"Deselect the Enabled check-box next to the name of your account, "
"and then select it again to try to reconnect to the service."
msgstr ""
-"åæ¶éæ©è´¦æ·æè¾¹çå·²å¯ç¨ éæ¡ï¼ç¶åå次éä¸ä»¥éæ°è¿æ¥å°æå¡å¨ã"
+"åæ¶éæ©è´¦æ·æè¾¹çå·²å¯ç¨ å¤éæ¡ï¼ç¶åå次éä¸ä»¥éæ°è¿æ¥å°æå¡å¨ã"
#: C/prob-conn-auth.page:8(desc)
msgid ""
"An error message which says âAuthentication failed â appears in "
"the main window."
-msgstr "ä¸ä¸ªæ¾ç¤ºâéªè¯å¤±è´¥ âçä¿¡æ¯æ¾ç¤ºå¨ä¸»çªå£ä¸ã"
+msgstr "主çªå£ä¸æ¾ç¤ºäºä¸ä¸ªé误æ示信æ¯ï¼âéªè¯å¤±è´¥ âã"
#: C/prob-conn-auth.page:36(title)
msgid "I get a message that says âAuthentication failedâ"
-msgstr "ææ¶å°âéªè¯å¤±è´¥âçä¿¡æ¯"
+msgstr "ææ¶å°âéªè¯å¤±è´¥âçé误æ示信æ¯"
#: C/prob-conn-auth.page:38(p)
msgid ""
@@ -908,8 +884,8 @@ msgid ""
"allowing you to connect because it does not recognize your username or "
"password for some reason."
msgstr ""
-"è¿ç§é误æ¯ç±äºæ¨çå³æ¶éä¿¡æå¡å¨ä¸å
许æ¨è¿æ¥ï¼ç±äºæç§åå ï¼å®ä¸è¯å«æ¨çç¨æ·"
-"åæè
å¯ç ã"
+"è¿ç§é误åçå¨æ¨çå³æ¶éä¿¡æå¡å¨æ æ³ç¡®è®¤æ¨ç身份ï¼ä¸å
许æ¨è¿æ¥æ¶ãæ¯å¦ï¼å 为"
+"æç§åå ï¼å®æ æ³è¯å«æ¨çç¨æ·åæè
å¯ç ã"
#: C/prob-conn-auth.page:50(p)
msgid ""
@@ -929,7 +905,7 @@ msgstr "å次è¾å
¥æ¨çç¨æ·ååå¯ç ï¼ä»¥ç¡®ä¿å®ä»¬æ¯æ£ç¡®çã"
msgid ""
"The instant messaging account that you want to use is not enabled in the "
"list of accounts."
-msgstr "æ¨è¦è¿æ¥çå³æ¶éä¿¡è´¦æ·æ²¡æå¨å¸å·å表ä¸å¯ç¨ã"
+msgstr "æ¨è¦è¿æ¥çå³æ¶éä¿¡è´¦æ·æ²¡æå¨è´¦æ·å表ä¸å¯ç¨ã"
#: C/prob-conn-acctdisabled.page:33(title)
msgid "My account is not enabled"
@@ -985,7 +961,7 @@ msgid ""
msgstr ""
"Empathy èªå¨ä¿åæ¨åè系人çæææåä¼è¯ãæ¨å¯ä»¥ æç´¢ä¹åå
¨é¨çä¼è¯æè
æ ¹æ®è系人åæ¥æ æµè§ä¹åçä¼è¯ã"
+"\">æµè§ä¹åçä¼è¯ã"
#: C/prev-conv.page:54(p)
msgid ""
@@ -1021,19 +997,21 @@ msgid ""
"In the For field, type the text you want to search for. Click "
"Find or press Enter ."
msgstr ""
+"å¨å
³é®è¯ ä¸ï¼è¾å
¥æ¨æ³è¦æç´¢çæåãç¹å»æ¥æ¾ ææ"
+"Enter ã"
#: C/prev-conv.page:78(p)
msgid ""
"Any conversations that matched your search terms will be shown in the list "
"below the search field. By default, conversations are ordered by date."
-msgstr ""
-"ä»»ä½ç¬¦åæ索项çä¼è¯é½ä¼æ¾ç¤ºå¨æç´¢åä¸é¢çå表ä¸ãä¼è¯é»è®¤å®è£
æ¶é´æåºã"
+msgstr "符åæç´¢æ¡ä»¶çä¼è¯ä¼æ¾ç¤ºå¨ä¸é¢çå表ä¸ãä¼è¯é»è®¤ææ¥ææåºã"
#: C/prev-conv.page:82(p)
msgid ""
"Click on a conversation to view it. Empathy will select the text "
"in the conversation that matched your search terms."
msgstr ""
+"ç¹å»ä¸ä¸ªä¼è¯ä»¥æ¥çãEmpathy ä¼éæ©è¿ä¸ªä¼è¯ä¸ç¬¦åæ¨æç´¢æ¡ä»¶çæåã"
#: C/prev-conv.page:89(title)
msgid "Browse previous conversations"
@@ -1054,12 +1032,13 @@ msgid ""
"Select an account from the drop-down list in the top left. A list of "
"contacts and chat room for that account will be shown below."
msgstr ""
+"å¨å·¦ä¸çä¸æå表ä¸éæ©ä¸ä¸ªè´¦æ·ãä¸æ¹ä¼æ¾ç¤ºè¿ä¸ªè´¦æ·çè系人åè天室å表ã"
#: C/prev-conv.page:107(p)
msgid ""
"Select a contact or chat room to view your previous conversations from. By "
"default the most recent conversation will be shown."
-msgstr ""
+msgstr "éæ©ä¸ä¸ªè系人æè天室以æ¥çä¹åçä¼è¯ãé»è®¤æ¾ç¤ºçæ¯æè¿çä¼è¯ã"
#: C/prev-conv.page:111(p)
msgid ""
@@ -1068,12 +1047,16 @@ msgid ""
"date to select it. Click the arrows next to the month and year to browse "
"earlier dates."
msgstr ""
+"æ¨å¯ä»¥ææ¥ææµè§æ¨çä¼è¯ãå¦æå¨ææ¥æ¨æéæ©çè´¦æ·æè¿ä¼è¯ï¼è¯¥æ¥ä¼ä»¥ç²ä½æ¾"
+"示ãç¹å»ä¸ä¸ªæ¥æ以éæ©å®ãç¹å»æåå¹´æçç®å¤´ä»¥æµè§æ´æ©çæ¥æã"
#: C/prev-conv.page:117(p)
msgid ""
"You can search for text in the displayed conversation by typing into the "
"search field at the top. The matching text will be highlighted."
msgstr ""
+"æ¨å¯ä»¥å¨ä¸æ¹çæç´¢æ ä¸è¾å
¥æåï¼ä»¥å¨æ¾ç¤ºçä¼è¯ä¸æç´¢æåãå¹é
çæåä¼è¢«é«äº®"
+"æ¾ç¤ºã"
#: C/prev-conv.page:121(p)
msgid ""
@@ -1082,10 +1065,13 @@ msgid ""
"choose View Previous Conversations . The Previous "
"Conversations window will open with that contact already selected."
msgstr ""
+"å¨ è系人å表 çªå£ä¸ï¼æ¨å¯ä»¥å¿«éçæ¥çä¸æ个è系人ä¹åè¿è¡è¿çä¼"
+"è¯ãå³é®ç¹å»è¯¥è系人并éæ© æ¥ç以åçå¯¹è¯ ãæè¿ä¼è¯ çªå£"
+"ä¼æå¼ï¼ä¸è¯¥è系人ä¼è¢«éä¸ã"
#: C/link-contacts.page:11(desc)
msgid "Merge and separate different contacts into a single one."
-msgstr ""
+msgstr "å°ä¸åçè系人å并åå²ä¸ºä¸ä¸ªè系人ã"
#: C/link-contacts.page:25(title)
msgid "Combine and separate contacts"
@@ -1095,19 +1081,19 @@ msgstr "å并ååå²è系人"
msgid ""
"If one, or more, of your contacts has multiple accounts with different "
"messaging services, you can combine these contacts into a single one."
-msgstr ""
+msgstr "å¦ææ¨çè系人æå¤ä¸ªè天æå¡çå¤ä¸ªè´¦æ·ï¼æ¨å¯ä»¥å°ä»ä»¬å并æä¸ä¸ªè系人ã"
#: C/link-contacts.page:30(p)
msgid ""
"The resulting contact is called a meta-contact : a contact composed "
"from different single contacts."
-msgstr ""
+msgstr "产ççè系人称为ä¸ä¸ªå
è系人 ï¼ç±å¤ä¸ªä¸åè系人ç»æçè系人ã"
#: C/link-contacts.page:34(p)
msgid ""
"If you have a Jane Smith contact that is using three different messaging "
"services like:"
-msgstr ""
+msgstr "å¦ææ¨æä¸ä¸ªå«å Jane Smith çè系人ï¼å¥¹ä½¿ç¨ä¸ç§ä¸åçè天æå¡ï¼"
#: C/link-contacts.page:40(p)
msgid "janes@facebook"
@@ -1123,7 +1109,7 @@ msgstr "jane_smith@hotmail"
#: C/link-contacts.page:55(p)
msgid "You can combine these contacts into a single Jane Smith one."
-msgstr ""
+msgstr "æ¨å¯ä»¥å°è¿äºè系人å并æä¸ä¸ª Jane Smith."
#: C/link-contacts.page:60(title)
msgid "Combining contacts"
@@ -1135,22 +1121,18 @@ msgid ""
"has different accounts, and select Link Contacts..."
"gui>."
msgstr ""
+"å¨ è系人å表 çªå£ï¼å³é®ç¹å»æä¸åè´¦æ·çè系人ï¼å¹¶éæ© ç»å®è系人⦠"
#: C/link-contacts.page:70(p)
-#, fuzzy
-#| msgid ""
-#| "From the Saved Presets box, select the status message you want "
-#| "to remove."
msgid ""
"From the left pane in the Link Contacts window, select the "
"contacts you want to combine."
-msgstr "ä» å·²ä¿åçèªå®ä¹ç¶æ æ¡ä¸ï¼éæ©æ¨æ³è¦å é¤çç¶ææ¶æ¯ã"
+msgstr "å¨ ç»å®è系人 çªå£çå·¦çªæ ¼ï¼éæ©æ¨æ³è¦å
³èèµ·æ¥çè系人ã"
#: C/link-contacts.page:76(p)
-#, fuzzy
-#| msgid "Click on Remove ."
msgid "Click Link ."
-msgstr "ç¹å» å é¤ ã"
+msgstr "ç¹å» ç»å® ."
#: C/link-contacts.page:82(p)
msgid ""
@@ -1158,6 +1140,8 @@ msgid ""
"to have a conversation with when you double-click on it, is the contact with "
"the highest presence on-line."
msgstr ""
+"å½ä¸ä¸ªå
è系人被å建åï¼æ¨åå»è¯¥è系人æ¶é»è®¤ä½¿ç¨çè系人æ¯ææé«çå¨çº¿ç¶æç"
+"è系人ã"
#: C/link-contacts.page:91(title)
msgid "Separating contacts"
@@ -1168,12 +1152,12 @@ msgid ""
"From the Contact List , right-click the contact to separate, and "
"select Link Contacts... ."
msgstr ""
+"å¨ è系人å表 çªå£ä¸ï¼å³é®ç¹å»è¦åå²çè系人ï¼å¹¶éæ© ç»å®è系人⦠"
#: C/link-contacts.page:100(p)
-#, fuzzy
-#| msgid "Click on Remove ."
msgid "Click Unlink ."
-msgstr "ç¹å» å é¤ ã"
+msgstr "ç¹å» 解é¤ç»å® ã"
#: C/license.page:8(desc)
msgid "Legal information."
@@ -1251,10 +1235,8 @@ msgstr ""
"creativecommons.org/licenses/by-sa/3.0/\">éä¿åè®®ã"
#: C/irc-start-conversation.page:8(desc)
-#, fuzzy
-#| msgid "Start a video conversation with one of your contacts."
msgid "Start a conversation with an IRC contact."
-msgstr "åæ¨çè系人åèµ·è§é¢ä¼è¯ã"
+msgstr "åä¸ä½ IRC è系人åèµ·ä¼è¯ã"
#: C/irc-start-conversation.page:30(title)
msgid "Chat with somebody on IRC"
@@ -1265,6 +1247,8 @@ msgid ""
"You can hold private conversations with other IRC users, outside of the "
"public IRC chat rooms. To start a conversation with another IRC user:"
msgstr ""
+"æ¨å¯ä»¥å¨å
Œ
±ç IRC è天室ä¹å¤ä¸å
¶ä»ç IRC ç¨æ·è¿è¡ç§äººè天ãè¦ä¸å¦ä¸ä½ IRC ç¨"
+"æ·è¿è¡ä¼è¯ï¼"
#: C/irc-start-conversation.page:37(p)
msgid ""
@@ -1272,6 +1256,8 @@ msgid ""
"you want to chat with. Alternatively, right click the name of the user and "
"choose Chat ."
msgstr ""
+"å¨ä¸ä¸ª IRC è天室çè系人å表ä¸ï¼åå»æ¨æ³è¦è天çç¨æ·ãæè
ï¼å³é®ç¹å»ç¨æ·çå§"
+"å并éæ© è天 "
#: C/irc-start-conversation.page:45(p)
msgid ""
@@ -1279,6 +1265,8 @@ msgid ""
"list. It contains a list of users in the IRC chat room you joined. Different "
"rooms can have different contacts listed."
msgstr ""
+"IRC è天室çè系人åè¡¨ä¸ Empathy çè系人å表ä¸åãå®å
å«äºæ¨å å
¥"
+"çè¿ä¸ª IRC è天室ä¸çç¨æ·å表ãä¸åçè天室å¯è½æä¸åçè系人å表ã"
#: C/irc-start-conversation.page:52(p)
msgid ""
@@ -1286,6 +1274,8 @@ msgid ""
"window. If you do not see it, choose Conversation"
"gui>Show Contact List ."
msgstr ""
+"IRC è天室çè系人å表é常ä½äºçªå£å³ä¾§ãå¦ææ¨æ²¡æçå°å®ï¼éæ© "
+"å¯¹è¯ æ¾ç¤ºè系人å表 ã"
#: C/irc-send-file.page:9(desc)
msgid "Empathy does not currently support sending files using IRC."
@@ -1314,6 +1304,9 @@ msgid ""
"and identify yourself. Some IRC chat rooms may not allow you to join without "
"a registered nickname."
msgstr ""
+"å¨æäº IRC ç½ç»ä¸ï¼æ¨å¯ä»¥éè¿ NickServ æå¡æ³¨åæ¨çæµç§°ãéè¿å NickServ åé"
+"ç¹æ®çæ¶æ¯ï¼æ¨å¯ä»¥è®¾ç½®å¯ç æ¥è®¤è¯æ¨èªå·±ãä¸äº IRC è天室å¯è½ä¸å
许æ¨å å
¥ï¼é¤é"
+"æ¨æ注åè¿çæµç§°ã"
#: C/irc-nick-password.page:40(p)
msgid ""
@@ -1323,6 +1316,9 @@ msgid ""
"Empathy to identify yourself to NickServ. The popular freenode "
"network is known to have this feature."
msgstr ""
+"Empathy ç®åè¿ä¸æ¯ææµç§°æ³¨åãä½ä¸äº IRC ç½ç»ä¼èªå¨å NickServ å"
+"éä¸ä¸ª æå¡å¨å¯ç ãå¨è¿æ ·çç½ç»ä¸ï¼æ¨å¯ä»¥å¨ Empathy ä¸ä½¿"
+"ç¨è¿æ ·çå¯ç å NickServ 认è¯æ¨èªå·±ãæµè¡ç freenode ç½ç»å°±æè¿ä¸ªåè½ã"
#: C/irc-nick-password.page:46(p)
msgid "To set an IRC server password:"
@@ -1330,13 +1326,13 @@ msgstr "设置ä¸ä¸ª IRC å¯ç ï¼"
#: C/irc-nick-password.page:54(p)
msgid "Select the IRC account from the list on the left of the dialog."
-msgstr ""
+msgstr "å¨å·¦ä¾§ç对è¯æ¡ä¸éæ©ä¸ä¸ª IRC è´¦æ·"
#: C/irc-nick-password.page:57(p)
msgid ""
"In the Password field, type the password you used to register "
"your nikcname."
-msgstr ""
+msgstr "å¨ å¯ç ä¸æ ä¸ï¼è¾å
¥æ¨æ³¨åæ¨çæµç§°æ¶ä½¿ç¨çå¯ç ã"
#: C/irc-nick-password.page:63(p) C/import-account.page:61(p)
msgid "Click Apply ."
@@ -1348,34 +1344,41 @@ msgid ""
"certain IRC networks. It is not currently possible to register an IRC "
"nickname or change your nickname password using Empathy ."
msgstr ""
+"è¿äºè¯´æåªæ¯å
许æ¨å¨ç¹å®ç IRC ç½ç»ä¸ä½¿ç¨å¯ç ä¿æ¤çæµç§°ãç®åå¨ "
+"Empathy ä¸è¿ä¸è½æ³¨å IRC æµç§°æä¿®æ¹å¯ç ã"
-#: C/irc-manage.page:9(desc)
+#: C/irc-manage.page:10(desc)
msgid "How to use IRC with Empathy ."
msgstr "å¦ä½å¨ Empathy ä¸ä½¿ç¨ IRCã"
-#: C/irc-manage.page:34(title)
+#: C/irc-manage.page:35(title)
msgid "Internet Relay Chat (IRC)"
msgstr "äºèç½ä¸ç»§è天(IRC)"
-#: C/irc-manage.page:37(p) C/account-irc.page:39(p)
+#: C/irc-manage.page:38(p) C/account-irc.page:39(p)
msgid ""
"You must have the telepathy-idle package installed to use IRC in "
"Empathy ."
msgstr ""
+"è¦å¨ Empathy ä¸ä½¿ç¨ IRCï¼æ¨å¿
é¡»å®è£
telepathy-idle å
ã"
-#: C/irc-manage.page:43(title)
+#: C/irc-manage.page:42(link)
+msgid "Install telepathy-idle"
+msgstr "å®è£
telepathy-idle"
+
+#: C/irc-manage.page:49(title)
msgid "IRC Chat Rooms and Conversations"
msgstr "IRC è天室åä¼è¯"
-#: C/irc-manage.page:45(title)
+#: C/irc-manage.page:51(title)
msgid "Chat Rooms and Conversations"
msgstr "è天室åä¼è¯"
-#: C/irc-manage.page:50(title)
+#: C/irc-manage.page:56(title)
msgid "Common IRC Problems"
msgstr "å¸¸è§ IRC é®é¢"
-#: C/irc-manage.page:52(title) C/index.page:55(title)
+#: C/irc-manage.page:58(title) C/index.page:55(title)
msgid "Common Problems"
msgstr "常è§é®é¢"
@@ -1393,6 +1396,9 @@ msgid ""
"youâre connected to. To connect to an IRC network, see and ."
msgstr ""
+"æ¨å¯ä»¥å å
¥æ¨å·²ç»è¿æ¥çææ IRC ç½ç»ä¸ç IRC è天室(ä¹ç§°ä¸º IRC é¢é)ãè¦è¿æ¥ä¸"
+"个 IRC ç½ç»ï¼åè§ and ã"
#: C/irc-join-room.page:39(p) C/group-conversations.page:58(p)
#: C/group-conversations.page:122(p)
@@ -1400,18 +1406,22 @@ msgid ""
"From the Contact List window, choose Room"
"gui>Join ."
msgstr ""
+"å¨ è系人å表 çªå£ï¼éæ© è天室 å å
¥"
+"gui> ã"
#: C/irc-join-room.page:45(p)
msgid ""
"From the Account drop-down list, select the IRC account that "
"corresponds to the network you want to use."
-msgstr ""
+msgstr "å¨ è´¦æ· ä¸æå表ä¸ï¼éæ©ä¸æ¨æ³è¦ä½¿ç¨çç½ç»å¯¹åºç IRC è´¦æ·ã"
#: C/irc-join-room.page:51(p)
msgid ""
"In the Room text box, type the name of the channel you want to "
"join. IRC channel names start with the hash character (# )."
msgstr ""
+"å¨ è天室 ææ¬æ¡ä¸ï¼è¾å
¥æ¨æ³è¦å å
¥çé¢éçå称ãIRC é¢éå称以äºå·"
+"(# )å¼å¤´ã"
#: C/irc-join-room.page:57(p)
msgid "Click Join to enter the room."
@@ -1435,6 +1445,8 @@ msgid ""
"On some IRC networks, private IRC rooms may be protected with a password. If "
"you know the password, use the following steps to join:"
msgstr ""
+"å¨æäº IRC ç½ç»ä¸ï¼ç§äººç IRC æ¿é´å¯ä»¥è¢«å¯ç ä¿æ¤ãå¦ææ¨ç¥éè¿å¯ç ï¼æç
§ä¸é¢"
+"çæ¥éª¤å å
¥ï¼"
#: C/irc-join-pwd.page:33(p)
msgid " Join the room as normal."
@@ -1445,6 +1457,8 @@ msgid ""
"Empathy will prompt you for a password. Enter the password for the IRC chat "
"room and click Join ."
msgstr ""
+"Empathy ä¼æ示æ¨è¾å
¥å¯ç ãè¾å
¥è¿ä¸ª IRC è天室çå¯ç 并ç¹å» å å
¥ ã"
#: C/irc-commands.page:7(desc)
msgid "The supported IRC commands."
@@ -1459,6 +1473,8 @@ msgid ""
"To see the list of the supported IRC commands, in a chat room type /"
"help and press Enter ."
msgstr ""
+"è¦æ¥çæ¯æç IRC å½ä»¤çå表ï¼å¨ä¸ä¸ªè天室ä¸è¾å
¥ /help并æ"
+"Enter ã"
#: C/irc-commands.page:24(p)
msgid "All commands available have a small description on their usage."
@@ -1489,12 +1505,16 @@ msgid ""
"transfers, and all the most used messaging systems such as MSN and Google "
"Talk."
msgstr ""
+"Empathy æ¯ GNOME æ¡é¢çå³æ¶é讯ç¨åºãå®æ¯ææåæ¶æ¯ï¼è¯é³åè§é¢å¼"
+"å«ï¼æä»¶ä¼ è¾ï¼æ¯ææ常ç¨çå³æ¶é讯系ç»ï¼å
æ¬ MSN å Google Talk."
#: C/introduction.page:28(p)
msgid ""
"Empathy includes features that help you better collaborate while "
"at work, and that let you easily keep in touch with your friends."
msgstr ""
+"Empathy å¯ä»¥å¸®å©æ¨å¨å·¥ä½ä¸æ´å¥½çåä½ï¼ä¹å¯ä»¥å¸®å©æ¨ä¸æ¨çæå们ä¿æ"
+"èç³»ã"
#: C/introduction.page:32(p)
msgid ""
@@ -1503,6 +1523,9 @@ msgid ""
"search through your previous conversations, and share your desktop in just "
"two clicks."
msgstr ""
+"ä½¿ç¨ Empathy ï¼æ¨å¯ä»¥å°ææçä¼è¯ç»ç»å¨åä¸ä¸ªçªå£ä¸ï¼æè
为ä¸åç±»å"
+"çä¼è¯ä½¿ç¨ä¸åççªå£ï¼è¿å¯ä»¥å¾å®¹æå°æç´¢ä¹åçä¼è¯ï¼æè
å
±äº«æ¨çæ¡é¢ï¼åªéè¦"
+"两次ç¹å»ã"
#: C/introduction.page:39(title)
msgid "Contact List window"
@@ -1550,11 +1573,11 @@ msgstr "æåè天"
#: C/index.page:47(title)
msgid "Audio and Video Conversations"
-msgstr "é³é¢åè§é¢è天"
+msgstr "è¯é³åè§é¢è天"
#: C/index.page:51(title)
msgid "Advanced Actions"
-msgstr ""
+msgstr "é«çº§æä½"
#: C/import-account.page:10(desc)
msgid "Import an account from another instant messaging application."
@@ -1578,32 +1601,35 @@ msgid ""
"accounts from other instant messaging applications. Currently, the only "
"supported application is Pidgin ."
msgstr ""
+"Empathy 第ä¸æ¬¡è¿è¡æ¶ï¼ä¼æ示æ¨å¯ä»¥ä»å
¶ä»å³æ¶é讯ç¨åºä¸å¯¼å
¥è´¦æ·ãç®"
+"åï¼æ¯æçç¨åºåªæ Pidgin ã"
#: C/import-account.page:50(p)
msgid ""
"Run Empathy for the first time. An assistant will offer you a "
"number of options to create new accounts."
msgstr ""
+"第ä¸æ¬¡è¿è¡ Empathy ï¼ä¸ä¸ªå©çç¨åºä¼æä¾è¥å¹²é项以å建æ°è´¦æ·ã"
#: C/import-account.page:54(p)
msgid ""
"Select Yes, import my account details from and click "
"Forward ."
-msgstr ""
+msgstr "éæ© æï¼è¯·å¯¼å
¥æçè´¦æ·ä¿¡æ¯ 并ç¹å» åè¿ ã"
#: C/import-account.page:58(p)
msgid "Select the check box next to each account you wish to import."
-msgstr ""
+msgstr "éæ©æ¯ä¸ªæ¨æ³è¦å¯¼å
¥çè´¦æ·æçå¤éæ¡ã"
#: C/import-account.page:66(p)
msgid ""
"It is not currently possible to import accounts after you have completed the "
"first-run assistant."
-msgstr ""
+msgstr "ç®åï¼æ¨åªè½å¨ç¬¬ä¸æ¬¡è¿è¡æ¶çå©çç¨åºä¸å¯¼å
¥è´¦æ·ã"
#: C/hide-contacts.page:8(desc)
msgid "Hide the offline contacts from your Contact List ."
-msgstr ""
+msgstr "å¨ è系人å表 ä¸éè离线è系人ã"
#: C/hide-contacts.page:19(title)
msgid "Hide offline contacts"
@@ -1614,6 +1640,8 @@ msgid ""
"Normally, Empathy shows all your contacts: those that are online, "
"with which you can have a conversation, and also those that are offline."
msgstr ""
+"ä¸è¬æ
åµä¸ï¼Empathy ä¼æ¾ç¤ºæ¨ææçè系人ï¼æ¨å¯ä»¥ä¸ä¹è¿è¡ä¼è¯çå¨çº¿"
+"çè系人ï¼åé£äºç¦»çº¿çè系人ã"
#: C/hide-contacts.page:25(p)
msgid "To hide the contacts that are offline:"
@@ -1625,6 +1653,8 @@ msgid ""
"gui>Offline Contacts , or press Ctrl"
"key>H ."
msgstr ""
+"å¨ è系人å表 çªå£ï¼éæ© æ¥ç 离线è系人"
+"gui> ï¼ææä¸ Ctrl H ã"
#: C/hide-contacts.page:36(p)
msgid "To show the offline contacts again, repeat the same procedure above."
@@ -1632,55 +1662,57 @@ msgstr "è¦å次æ¾ç¤ºç¦»çº¿çè系人ï¼éå¤ä¸é¢çæ¥éª¤ã"
#: C/group-conversations.page:8(desc)
msgid "Start or join a group conversation with your contacts."
-msgstr ""
+msgstr "å¼å§åæ¨çè系人è¿è¡ç¾¤ç»è天ï¼æå å
¥ç¾¤ç»è天ã"
#: C/group-conversations.page:34(title)
msgid "Group conversations"
-msgstr ""
+msgstr "群ç»è天"
#: C/group-conversations.page:36(p)
msgid ""
"Group conversations permits you to have text conversations with more than "
"one contact at the same time."
-msgstr ""
+msgstr "å¨ç¾¤ç»è天ä¸ï¼æ¨å¯ä»¥åä¸æ¢ä¸ä½è系人åæ¶è¿è¡æå交è°ã"
#: C/group-conversations.page:40(p)
msgid ""
"To have a group conversation you need to have a registered account with "
"either Jabber or Google Talk, or a People Nearby account."
msgstr ""
+"è¦è¿è¡ç¾¤ç»è天æ¨éè¦æ³¨åæ Jabber è´¦æ·æè
Google Talk è´¦æ·ï¼æè
âéè¿ç人âè´¦"
+"æ·ã"
#: C/group-conversations.page:46(p)
msgid ""
"You can have a group conversation only with the contacts that are using the "
"same service as yours."
-msgstr ""
+msgstr "æ¨åªè½åé£äºä¸æ¨ä½¿ç¨åæ ·çæå¡çè系人è¿è¡ç¾¤ç»è天ã"
#: C/group-conversations.page:54(title)
msgid "Start a group conversation"
-msgstr ""
+msgstr "å¼å§ç¾¤ç»è天"
#: C/group-conversations.page:63(p)
msgid ""
"From the Account drop-down list, select the account you want to "
"use for the group conversation."
-msgstr ""
+msgstr "å¨ è´¦æ· ä¸æå表ä¸ï¼éæ©ä¸ä¸ªè´¦æ·ç¨æ¥è¿è¡ç¾¤ç»è天ã"
#: C/group-conversations.page:69(p)
msgid ""
"In the Server text box, type the name of server in which the "
"conversation will be hosted."
-msgstr ""
+msgstr "å¨ æå¡å¨ ææ¬æ¡ä¸ï¼è¾å
¥å°ä¼æ¿è½½è¿æ¬¡è天çæå¡å¨å称ã"
#: C/group-conversations.page:73(p)
msgid "Leave it empty if it will be on the current server."
-msgstr ""
+msgstr "å¦æè¦ä½¿ç¨å½åæå¡å¨ï¼è¯·å°å
¶ç空ã"
#: C/group-conversations.page:78(p)
msgid ""
"In the Room text box, type the name you want to give to the "
"conversation."
-msgstr ""
+msgstr "å¨ è天室 ææ¬æ¡ä¸ï¼è¾å
¥æ¨ä¸ºè¿æ¬¡ç¾¤ç»è天起çååã"
#: C/group-conversations.page:82(p)
msgid ""
@@ -1688,6 +1720,8 @@ msgid ""
"name will be publicly available for other people to join. It is not possible "
"to create a private room."
msgstr ""
+"è¿å°æ¯æ¨è¿è¡ç¾¤ç»è天çè天室çååãè¿ä¸ªååä¼è¢«å¤§å®¶çå°ä»¥ä½¿å¤§å®¶å¯ä»¥å å
¥ãæ¨"
+"ä¸è½å»ºç«ä¸ä¸ªç§äººçè天室ã"
#: C/group-conversations.page:90(p)
msgid ""
@@ -1695,34 +1729,38 @@ msgid ""
"Contact List window, select the contact you want to invite, and "
"perform one of the following:"
msgstr ""
+"è¦é请å
¶ä»è系人å å
¥è¿æ¬¡ç¾¤ç»è天ï¼å¨ è系人å表 çªå£ï¼éæ©æ¨æ³è¦é"
+"请çè系人ï¼å¹¶è¿è¡ä¸åæä½ä¸çæä¸é¡¹ï¼"
#: C/group-conversations.page:97(p)
msgid "Right-click on the contact and choose Invite to chatroom ."
-msgstr ""
+msgstr "å³é®ç¹å»è系人ï¼å¹¶éæ© é请å°è天室 ã"
#: C/group-conversations.page:102(p)
msgid ""
"Choose Edit Contact Invite to chatroom"
"gui> ."
msgstr ""
+"éæ© ç¼è¾ è系人 é请å°è天室 "
+"guiseq>ã"
#: C/group-conversations.page:107(p)
msgid ""
"If you have more than one group conversation open, select the one you want "
"to invite your contacts."
-msgstr ""
+msgstr "å¦ææ¨æå¼äºä¸æ¢ä¸ä¸ªç¾¤ç»è天ï¼éæ©æ¨æ³è¦é请è系人å å
¥çé£ä¸ªã"
#: C/group-conversations.page:118(title)
msgid "Join a group conversation"
-msgstr ""
+msgstr "å å
¥ç¾¤ç»è天ã"
#: C/group-conversations.page:128(p)
msgid "Expand the Room List section to see all the existing rooms."
-msgstr "å±å¼æ¿é´å表 é¨åæ¥æ¥çææåå¨çæ¿é´ã"
+msgstr "å±å¼è天室å表 é项å¡æ¥æ¥çææåå¨çæ¿é´ã"
#: C/group-conversations.page:133(p)
msgid "Double-click on the name of a room to join it."
-msgstr "åå»æ¿é´çå称æ¥å å
¥å®ã"
+msgstr "åå»æ¿é´çå称å å
¥ã"
#: C/group-conversations.page:139(p)
msgid ""
@@ -1730,6 +1768,8 @@ msgid ""
"require a password, or might be invitation only. Empathy does not "
"support these kind of rooms."
msgstr ""
+"并éææçè天室é½å¯ä»¥å å
¥ãæäºè天室å¯è½éè¦å¯ç ï¼æäºåªææ¶å°é请æè½å "
+"å
¥ãEmpathy ä¸æ¯æè¿äºæ¿é´ã"
#: C/geolocation-what-is.page:9(desc)
msgid "Understanding geolocation."
@@ -1761,13 +1801,13 @@ msgstr "æ¥çè系人çå°åä½ç½®å¹¶å¿«éèç³»ä»ä»¬ã"
msgid ""
"Set the accuracy of your location and the device used to discover your "
"location."
-msgstr ""
+msgstr "设置æ¨çå°çä½ç½®ç精度åå¯ä»¥ç¨æ¥åç°æ¨çå°çä½ç½®ç设å¤ã"
#: C/geolocation-what-is.page:60(p)
msgid ""
"In order to see your contactsâ geographical locations, they need to use a "
"service and an application that supports geolocation."
-msgstr ""
+msgstr "æ¨çè系人å¿
须使ç¨æ¯æå°çä½ç½®çç¨åºï¼æ¨æè½çå°ä»ä»¬çå°çä½ç½®ã"
#: C/geolocation-turn.page:9(desc)
msgid "How to activate and deactivate geolocation in Empathy ."
@@ -1788,17 +1828,17 @@ msgstr "éæ©ä½ç½® æ ç¾ã"
#: C/geolocation-turn.page:47(p)
msgid ""
"Select Publish location to my contacts to activate geolocation."
-msgstr ""
+msgstr "éæ© åæçè系人å
¬å¸ä½ç½®ä¿¡æ¯ 以æ¿æ´»å°çä½ç½®ã"
#: C/geolocation-turn.page:50(p)
msgid "To deactivate geolocation, deselect it."
-msgstr ""
+msgstr "è¦ç¦ç¨å°çä½ç½®ï¼è¯·åæ¶éæ©ã"
#: C/geolocation-turn.page:55(p)
msgid ""
"To increase the accuracy of your position, deselect Reduce location "
"accuracy ."
-msgstr ""
+msgstr "è¦æé«æ¨çä½ç½®ç精度ï¼è¯·åæ¶éæ© éä½ä½ç½®ä¿¡æ¯ç²¾åº¦ ã"
#: C/geolocation-turn.page:61(p)
msgid ""
@@ -1806,10 +1846,12 @@ msgid ""
"position, select the appropriate option in the Location sources "
"section."
msgstr ""
+"å¦ææ¨æ GPS è¿æ ·çå¤é¨è®¾å¤ï¼æè
æ³è¦åéæ´å 精确çä½ç½®ä¿¡æ¯ï¼å¨ä½ç½®æ¥æº"
+" é项å¡ä¸éæ©éå½çé项ã"
#: C/geolocation-supported.page:7(desc)
msgid "Services that supports geolocation and compatibility."
-msgstr ""
+msgstr "æ¯æå°çä½ç½®çæå¡ååå
¶å
¼å®¹æ§ã"
#: C/geolocation-supported.page:31(title)
msgid "Supported services"
@@ -1821,6 +1863,8 @@ msgid ""
"service. In order to use it, you and your contacts need to have a Jabber "
"account."
msgstr ""
+"ç®åï¼åªæ Jabber æå¡ä¸å°çä½ç½®åè½å
¼å®¹ãè¦ä½¿ç¨å°çä½ç½®ï¼æ¨åæ¨çè系人å¿
é¡»"
+"æ Jabber è´¦æ·ã"
#: C/geolocation-supported.page:39(p)
msgid ""
@@ -1828,10 +1872,12 @@ msgid ""
"feature. Most of the Jabber servers support it. See your service website "
"documentation for more information."
msgstr ""
+"èä¸ï¼æ¨ä½¿ç¨çæå¡å¨ä¹éè¦æ¯æå°çä½ç½®åè½ãå¤§å¤ Jabber æå¡å¨é½æ¯æãè¦äºè§£"
+"æ´å¤ï¼è¯·åçæ¨çæå¡æä¾è
çç½ç«ææ¡£ã"
#: C/geolocation-supported.page:47(title)
msgid "Compatibility"
-msgstr ""
+msgstr "å
¼å®¹æ§"
#: C/geolocation-supported.page:49(p)
msgid ""
@@ -1839,10 +1885,12 @@ msgid ""
"geographical position services such as Google Latitude , Yahoo "
"Fire Eagle or Brightkite ."
msgstr ""
+"Empathy çå°çä½ç½®åè½ä¸å
¶ä»ä¸äºå°çä½ç½®ä¿¡æ¯æå¡å¹¶ä¸å
¼å®¹ï¼å¦ "
+"Google Latitude ï¼Yahoo Fire Eggle å Brightkite ã"
#: C/geolocation-privacy.page:8(desc)
msgid "What information are sent and to who."
-msgstr ""
+msgstr "åéäºä»ä¹ä¿¡æ¯ï¼åéç»è°äºï¼"
#: C/geolocation-privacy.page:32(title)
msgid "Geolocation Privacy"
@@ -1850,7 +1898,7 @@ msgstr "å°çä½ç½®éç§"
#: C/geolocation-privacy.page:35(title)
msgid "What information is sent"
-msgstr ""
+msgstr "ä»ä¹ä¿¡æ¯è¢«åéäº"
#: C/geolocation-privacy.page:36(p)
msgid ""
@@ -1858,13 +1906,15 @@ msgid ""
"building, floor, room, and postal code, longitude, latitude and altitude, "
"speed and bearing."
msgstr ""
+"æå¯è½è¢«åéçä¿¡æ¯ï¼æ¨æå¨çå½å®¶ï¼å°åºï¼å°æ¹ï¼åºåï¼è¡éï¼å»ºçï¼æ¥¼å±ï¼æ¿é´ï¼"
+"é®æ¿ç¼ç åç»çº¬åº¦ï¼æ¨çé度åæ¹åã"
#: C/geolocation-privacy.page:40(p)
msgid ""
"The accuracy and the quantity of information about your geographical "
"position are based on the software or on the infrastructure used to discover "
"your position."
-msgstr ""
+msgstr "æ¨çå°çä½ç½®ä¿¡æ¯ç精度åè´¨éåå³äºè½¯ä»¶æè
ç¨äºåç°æ¨çä½ç½®ç设æ½ã"
#: C/geolocation-privacy.page:44(p)
msgid ""
@@ -1872,20 +1922,23 @@ msgid ""
"send different information. The use of external devices such as GPS or "
"mobile phone will increase the accuracy of the information sent."
msgstr ""
+"ä¸åçç½ç»å¯è½æä¸åç精度设置ï¼å¯è½åéä¸åçä¿¡æ¯ã使ç¨å¤é¨è®¾å¤ï¼å¦ GPS ææ"
+"æºï¼å¯ä»¥å¢å åéçä¿¡æ¯ç精度ã"
#: C/geolocation-privacy.page:49(p)
msgid ""
"When the privacy mode is enabled, nothing more precise than your city will "
"be sent, even if you are using an external device."
msgstr ""
+"å½éç§æ¨¡å¼è¢«å¯ç¨åï¼åªææ¨æå¨çåå¸ä¿¡æ¯ä¼è¢«åéï¼å³ä½¿æ¨æ£å¨ä½¿ç¨å¤é¨è®¾å¤ã"
#: C/geolocation-privacy.page:56(title)
msgid "Who can see the information sent"
-msgstr ""
+msgstr "è°ä¼çå°è¿äºåéåºå»çä¿¡æ¯"
#: C/geolocation-privacy.page:57(p)
msgid "Only your contacts can see your geographical position."
-msgstr ""
+msgstr "åªææ¨çè系人å¯ä»¥çå°æ¨çå°çä½ç½®ã"
#: C/geolocation-privacy.page:63(title)
msgid "What is the privacy mode"
@@ -1896,19 +1949,21 @@ msgid ""
"The privacy mode, enabled by default, is a reduced accuracy mode that will "
"decrease the accuracy of the geographical position sent to your contacts."
msgstr ""
+"éç§æ¨¡å¼æ¯ç²¾åº¦éä½æ¨¡å¼ï¼å®ä¼éä½åéç»æ¨çè系人çå°çä½ç½®ä¿¡æ¯ç精度ãéç§æ¨¡"
+"å¼é»è®¤å¼å¯ã"
#: C/geolocation-privacy.page:71(title)
msgid "Privacy overview"
-msgstr ""
+msgstr "éç§æ¦è¿°"
#: C/geolocation-privacy.page:72(p)
msgid ""
"Overview of the various geolocation privacy settings in Empathy ."
-msgstr ""
+msgstr "Empathy ä¸ä¸äºå
³äºå°çä½ç½®éç§çé项çæ¦åµã"
#: C/geolocation-privacy.page:77(p)
msgid "Geolocation is not enabled by default."
-msgstr ""
+msgstr "å°çä½ç½®é»è®¤ä¸å¼å¯ã"
#: C/geolocation-privacy.page:82(p)
msgid "Privacy mode is enabled by default."
@@ -1917,7 +1972,7 @@ msgstr "éç§æ¨¡å¼é»è®¤è¢«æ¿æ´»"
#: C/geolocation-privacy.page:87(p)
msgid ""
"Privacy mode prevails even when using external and more precise devices."
-msgstr ""
+msgstr "å³ä½¿å¨ä½¿ç¨ç²¾åº¦æ´é«çå¤é¨è®¾å¤ï¼éç§æ¨¡å¼ä¹ä¼åæ¥ä½ç¨ã"
#: C/geolocation-privacy.page:92(p)
msgid "Only your contacts can see your position."
@@ -1925,29 +1980,32 @@ msgstr "åªææ¨çè系人å¯ä»¥çå°æ¨çä½ç½®ã"
#: C/geolocation-not-showing.page:8(desc)
msgid "Empathy does not publish my geographical position."
-msgstr ""
+msgstr "Empathy 没æåå¸æçå°çä½ç½®ã"
#: C/geolocation-not-showing.page:32(title)
msgid "Geographical position not published"
-msgstr ""
+msgstr "å°çä½ç½®æ²¡æ被å
¬å¸ã"
#: C/geolocation-not-showing.page:34(p)
msgid ""
"If your contacts cannot see your location, Empathy might not be "
"able to discover with a good margin of precision your geographical position."
msgstr ""
+"å¦ææ¨çè系人ä¸è½çå°æ¨çä½ç½®ï¼å¯è½æ¯å 为 Empathy æ æ³åç°æä¸å®"
+"精度çæ¨çå°çä½ç½®ä¿¡æ¯ã"
#: C/geolocation-not-showing.page:38(p)
msgid ""
"In this case, your position will not be published, but you are still able to "
"see the location of your contacts."
msgstr ""
+"å¨è¿ç§æ
åµä¸ï¼æ¨çä½ç½®ä¿¡æ¯ä¸ä¼è¢«å
¬å¸ï¼ä½æ¨ä»å¯ä»¥çå°æ¨çè系人çä½ç½®ä¿¡æ¯ã"
#: C/geolocation-not-showing.page:42(p)
msgid ""
"If you want to publish your geographical position, you can try to use an "
"external device such as a GPS."
-msgstr ""
+msgstr "å¦ææ¨æ³è¦å
¬å¸æ¨çå°çä½ç½®ï¼æ¨å¯ä»¥è¯ä¸è¯ä½¿ç¨ GPS çå¤é¨è®¾å¤ã"
#: C/geolocation-not-showing.page:48(p)
msgid ""
@@ -1957,6 +2015,10 @@ msgid ""
"PEP is maintained online. Google Talk does not support this feature "
"at this time."
msgstr ""
+"è¦åå¸æ¨çå°çä½ç½®ï¼æ¨ç Jabber æå¡å¨å¿
é¡»æ¯æ Personal Eventing Protocal "
+"(PEP)ãäºèç½ä¸æ人维æ¤çä¸ä»½ æ¯æ PEP çæå¡å¨å表ãGoogle Talk ç®åä¸"
+"æ¯æ PEPã"
#: C/geolocation.page:8(desc)
msgid "Use and understand geolocation in Empathy ."
@@ -1964,11 +2026,11 @@ msgstr "使ç¨åäºè§£ Empathy ä¸çå°çä½ç½®ã"
#: C/geolocation.page:32(title)
msgid "Geographical position"
-msgstr ""
+msgstr "å°çä½ç½®"
#: C/geolocation.page:35(title)
msgid "Geolocation"
-msgstr ""
+msgstr "å°çä½ç½®"
#: C/geolocation.page:39(title)
msgid "Fix common problems"
@@ -1976,41 +2038,43 @@ msgstr "ä¿®å¤å¸¸è§é®é¢"
#: C/favorite-rooms.page:10(desc)
msgid "Set, join and manage favorite rooms."
-msgstr ""
+msgstr "设ç«ï¼å å
¥æ管çè天室æ¶èã"
#: C/favorite-rooms.page:29(title)
msgid "Favorite rooms"
-msgstr ""
+msgstr "è天室æ¶è"
#: C/favorite-rooms.page:32(title)
msgid "Set a room as a favorite"
-msgstr ""
+msgstr "æ¶èä¸ä¸ªè天室"
#: C/favorite-rooms.page:35(p)
msgid "Join a room."
-msgstr "å å
¥ä¸ä¸ªæ¿é´ã"
+msgstr "å å
¥ä¸ä¸ªè天室ã"
#: C/favorite-rooms.page:40(p)
msgid ""
"See for more information on how to join an "
"IRC room."
-msgstr ""
+msgstr "å
³äºå¦ä½å å
¥ IRC è天室ï¼åè§ ã"
#: C/favorite-rooms.page:46(p)
msgid ""
"See for more information on how to "
"start or join a group conversation."
msgstr ""
+"å
³äºå¦ä½åèµ·æå å
¥ç¾¤ç»è天ï¼åè§ ã"
#: C/favorite-rooms.page:54(p)
msgid ""
"From the conversation window, choose Conversation"
"gui>Favorite Chat Room ."
msgstr ""
+"å¨ä¼è¯çªå£ï¼éæ© ä¼è¯ æ¶èè天室 ã"
#: C/favorite-rooms.page:63(title)
msgid "Join favorite rooms"
-msgstr ""
+msgstr "å å
¥æ¶èçè天室"
#: C/favorite-rooms.page:71(p)
msgid "Press F5 ."
@@ -2021,58 +2085,62 @@ msgid ""
"Choose Room Join Favorites , to join "
"all your favorite rooms."
msgstr ""
+"éæ© è天室 å å
¥å·²æ¶èçè天室 ï¼ä»¥å å
¥"
+"æ¨ä¹åæ¶èçè天室ã"
#: C/favorite-rooms.page:82(p)
msgid "Choose Room , and select the favorite room you want to join."
-msgstr ""
+msgstr "éæ© è天室 ï¼å¹¶éæ©æ¨è¦å å
¥çå·²æ¶èçè天室ã"
#: C/favorite-rooms.page:90(p)
msgid ""
"To join a favorite room, you need to be connected to the Internet and to "
"your account."
-msgstr ""
+msgstr "è¦å å
¥ä¸ä¸ªå·²æ¶èçè天室ï¼æ¨å¿
é¡»è¿æ¥äºèç½åæ¨çè´¦æ·ã"
#: C/favorite-rooms.page:98(title)
msgid "Manage favorite rooms"
-msgstr ""
+msgstr "管çè天室æ¶è"
#: C/favorite-rooms.page:101(p)
msgid ""
"From the Contact List window, choose Room"
"gui>Manage Favorites ."
msgstr ""
+"å¨ è系人å表 çªå£ï¼éæ© è天室 管çæ¶è夹"
+" ã"
#: C/favorite-rooms.page:107(p)
msgid ""
"From the Account drop-down list, select the account you want to "
"manage the favorite rooms of."
-msgstr ""
+msgstr "å¨ è´¦æ· ä¸æå表ä¸ï¼éæ©æ¨è¦ç®¡çè天室æ¶èçè´¦æ·ã"
#: C/favorite-rooms.page:111(p)
msgid "Select All to see all you favorite rooms."
-msgstr ""
+msgstr "éæ© å
¨é¨ 以çå°æææ¨æ¶èçè天室ã"
#: C/favorite-rooms.page:116(p)
msgid "Select the favorite room you want to manage:"
-msgstr ""
+msgstr "éæ©æ¨è¦ç®¡ççæ¶èï¼"
#: C/favorite-rooms.page:121(p)
msgid ""
"Select the Auto-Connect check-box in order to automatically join "
"that room when you connect to your account."
-msgstr ""
+msgstr "éæ© èªå¨è¿æ¥ ï¼åæ¨è¿æ¥å°æ¨çè´¦æ·åï¼ä¼èªå¨å å
¥è¿ä¸ªè天室ã"
#: C/favorite-rooms.page:127(p)
msgid "Click on Remove to remove the room from your favorites."
-msgstr ""
+msgstr "ç¹å» å é¤ ä»¥ä»æ¶è夹ä¸å é¤è¿ä¸ªè天室ã"
#: C/favorite-rooms.page:134(p)
msgid "When done, click Close ."
-msgstr "å®æåç¹å
³é ã"
+msgstr "å®æåï¼ç¹å» å
³é ã"
#: C/disable-account.page:9(desc)
msgid "Prevent Empathy from automatically logging in to an account."
-msgstr ""
+msgstr "使 Empathy ä¸è¦èªå¨ç»å½ä¸ä¸ªè´¦æ·ã"
#: C/disable-account.page:39(title)
msgid "Disable an account"
@@ -2085,28 +2153,31 @@ msgid ""
"enable an account if you only want to be logged in to the account at certain "
"times, but you still want to use Empathy for other accounts."
msgstr ""
+"æ¨å¯ä»¥ç¦ç¨ä¸ä¸ªè´¦æ·ä»¥é»æ¢ Empathy èªå¨ç»å½è¿ä¸ªè´¦æ·èä¸å¿
å°å
¶å½»åºå "
+"é¤ãæ¨å¯è½æ³è¦ç¦ç¨ãå¯ç¨æ个账æ·å¦ææ¨åªæ³å¶å°ç»å½è¿ä¸ªè´¦æ·ï¼ä½åæ³ä½¿ç¨ "
+"Empathy ä¸çå
¶ä»è´¦æ·ã"
#: C/disable-account.page:52(p)
msgid ""
"Select the account you wish to disable from the accounts list on the left "
"side of the window."
-msgstr ""
+msgstr "å¨çªå£å·¦ä¾§çè´¦æ·å表ä¸ï¼éæ©æ¨æ³è¦ç¦ç¨çè´¦æ·ã"
#: C/disable-account.page:56(p)
msgid ""
"Deselect Enabled on the right side of the "
"window."
-msgstr ""
+msgstr "å¨çªå£å³ä¾§ï¼åæ¶éæ© å¯ç¨ ã"
#: C/disable-account.page:62(p)
msgid ""
"To re-enable the account, simply select Enabled"
"gui>."
-msgstr ""
+msgstr "è¦éæ°å¯ç¨è¿ä¸ªè´¦æ·ï¼åªééæ© å¯ç¨ ã"
#: C/create-account.page:9(desc)
msgid "Register for an account with one of the supported messaging services."
-msgstr ""
+msgstr "为æç§æ¯æçæå¡æ³¨åè´¦æ·ã"
#: C/create-account.page:34(title)
msgid "Register for a new account"
@@ -2120,6 +2191,9 @@ msgid ""
"app> to register for a new account, using the same steps as you would to "
" add an account."
msgstr ""
+"大å¤è´¦æ·ç±»åéè¦æ¨å¨ä½¿ç¨ Empathy è¿æ ·çå³æ¶é讯软件è¿æ¥ä¹åå
建ç«"
+"è´¦æ·ãä½å¯¹äºæäºè´¦æ·æä¾åï¼æ¨å¯ä»¥ä½¿ç¨ Empathy æ¥æ³¨åæ°è´¦æ·ï¼ä½¿ç¨"
+"ä¸ æ·»å è´¦æ· ç¸åçæ¥éª¤ã"
#: C/create-account.page:42(p)
msgid ""
@@ -2128,6 +2202,8 @@ msgid ""
"password, as well as any additional information you need to connect using "
"Empathy ."
msgstr ""
+"è¿ä¸é¡µæ¯å
³äºå»ºç«åç§ç±»åçè´¦æ·çãæ¨åºå½å·²ç»ä»æ¨çè´¦æ·æä¾åé£éå¾å°äºç»å½ "
+"ID åå¯ç ï¼ä»¥åå
¶ä»ä½¿ç¨ Empathy è¿æ¥è¿ä¸ªè´¦æ·éè¦çä¿¡æ¯ã"
#: C/create-account.page:47(title)
msgid "Facebook"
@@ -2138,6 +2214,8 @@ msgid ""
"Facebook is one of the most-used social networks. It allows users to create "
"their own profile and to communicate with their friends."
msgstr ""
+"Facebook æ¯æ常ç¨ç社交ç½ç»ä¹ä¸ãå®å
许ç¨æ·å¯¹èªå·±è¿è¡ä¸ªæ§åçæ述并ä¸æå们交"
+"æµã"
#: C/create-account.page:52(p)
msgid ""
@@ -2145,6 +2223,8 @@ msgid ""
"new account from the website: www."
"facebook.com."
msgstr ""
+"è¦ä½¿ç¨ Facebook ä¸æ¨çæå们交æµï¼æ¨éè¦å¨å
¶ç½ç«ä¸å»ºç«ä¸ä¸ªæ°è´¦æ·ï¼ www.facebook.comã"
#: C/create-account.page:60(title) C/audio-video.page:170(p)
msgid "Jabber"
@@ -2156,6 +2236,8 @@ msgid ""
"choose your account provider and communicate with all other Jabber users, "
"regardless of their account provider."
msgstr ""
+"Jabber æ¯ä¸ç§å¼æ¾çå³æ¶é讯系ç»ãå email ä¸æ ·ï¼Jabber å
许æ¨éæ©è´¦æ·æä¾åï¼"
+"并ä¸å
¶ä» Jabber ç¨æ·äº¤æµï¼æ 论ä»ä»¬ä½¿ç¨åªéè´¦æ·æä¾åã"
#: C/create-account.page:66(p)
msgid ""
@@ -2163,6 +2245,8 @@ msgid ""
"free providers; one popular provider is Jabber.org."
msgstr ""
+"æ¨éè¦å¨æ个 Jabber æå¡æä¾åé£é建ç«è´¦æ·ãæè®¸å¤ Jabber æå¡æä¾åï¼ Jabber.org æ¯å¾æµè¡çä¸ä¸ªã"
#: C/create-account.page:71(p)
msgid ""
@@ -2170,10 +2254,13 @@ msgid ""
"Google Talk is a Jabber service. Simply use your Google Mail address and "
"password in Empathy to connect."
msgstr ""
+"å¦ææ¨ä½¿ç¨ Google Mail æè
Google Talkï¼é£ä¹æ¨å·²ç»æ¥æ Jabber è´¦æ·äºã"
+"Google Talk å°±æ¯ä¸ä¸ª Jabber æå¡ãæ¨åªéè¦ä½¿ç¨æ¨ç Google Mail å°ååå¯ç å¨ "
+"Empathy ä¸è¿æ¥ã"
#: C/create-account.page:78(title) C/audio-video.page:190(p)
msgid "People Nearby"
-msgstr ""
+msgstr "éè¿ç人"
#: C/create-account.page:80(p)
msgid ""
@@ -2182,10 +2269,12 @@ msgid ""
"such as a wireless hotspot. It automatically finds all other users on the "
"network who are also using this service."
msgstr ""
+"è¦ä½¿ç¨è¿ä¸ªæå¡ï¼æ¨å¹¶ä¸éè¦å¨æ个æå¡æä¾åé£éå建账æ·ï¼åªéè¦è¿æ¥å°ä¸ä¸ªæ¬å°"
+"ç½ç»ï¼æ¯å¦ä¸ä¸ªæ 线çç¹ãå®ä¼èªå¨åç°ç½ç»ä¸ä½¿ç¨è¿ä¸ªæå¡çå
¶ä»ç¨æ·ã"
#: C/create-account.page:85(p)
msgid "For more information, see ."
-msgstr ""
+msgstr "æ´å¤ä¿¡æ¯åè§ ã"
#: C/create-account.page:89(title) C/audio-video.page:205(p)
msgid "SIP"
@@ -2198,6 +2287,9 @@ msgid ""
"provider. You can communicate with all other SIP users, regardless of which "
"SIP provider they use."
msgstr ""
+"SIP æ¯ä¸ç§å
许ç¨æ·éè¿äºèç½è¿è¡è¯é³åè§é¢ä¼è¯çå¼æ¾ç³»ç»ãæ¨éè¦å¨æ个 SIP æ"
+"å¡æä¾åå¤å建账æ·ãæ¨å¯ä»¥åå
¶ä»ç SIP ç¨æ·äº¤æµï¼æ 论ä»ä»¬ç SIP æå¡æä¾åä¸"
+"æ¨æ¯å¦ç¸åã"
#: C/create-account.page:97(p)
msgid ""
@@ -2205,12 +2297,16 @@ msgid ""
"index.php?page=register\">Ekiga.net service does not currently work "
"with Empathy ."
msgstr ""
+"ç±äºææ¯ä¸çå·®å«ï¼å
è´¹ç Ekiga.net æå¡ç®åå¨ Empathy ä¸è¿ä¸è½ä½¿ç¨ã"
#: C/create-account.page:102(p)
msgid ""
"Some SIP providers allow you to call normal phones from your computer. "
"Generally, you will need to subscribe to a paid service for this feature."
msgstr ""
+"æäº SIP æå¡æä¾åå
许ç¨æ¨ç计ç®æºå¼å«ä¸è¬ççµè¯ãé常ï¼æ¨éè¦è®¢é
æç§ä»è´¹æ"
+"å¡æè½ä½¿ç¨è¿ä¸ªåè½ã"
#: C/create-account.page:107(title) C/audio-video.page:165(p)
msgid "IRC"
@@ -2223,22 +2319,29 @@ msgid ""
"is only established each time you connect. If another user is using the "
"nickname, you will need to choose a new nickname."
msgstr ""
+"æ¨ä¸éè¦æ³¨åè´¦æ·å°±å¯ä»¥ä½¿ç¨ IRCã尽管æ¨å¨ Empathy ä¸æ·»å IRC è´¦æ·æ¶"
+"æå®äºä¸ä¸ªæµç§°ï¼è¿ä¸ªæµç§°åªæ¯æ¨æ¯æ¬¡è¿æ¥æ¶æ建ç«ãå¦ææå
¶ä»ç¨æ·å¨ä½¿ç¨è¿ä¸ªæµ"
+"称ï¼æ¨éè¦éæ©ä¸ä¸ªå
¶ä»æµç§°ã"
#: C/create-account.page:114(p)
msgid ""
"Some IRC networks use a service called NickServ to allow users to protect "
"their nicknames. See for more information."
msgstr ""
+"æäº IRC ç½ç»ä¸æä¸ç§å«å NickServ çæå¡ï¼å
许ç¨æ·ä¿æ¤ä»ä»¬çæµç§°ãæ´å¤ä¿¡æ¯å"
+"è§ ã"
#: C/create-account.page:117(p)
msgid ""
"Some IRC servers are password protected. You will need to know the password "
"to connect to these servers. Generally, these are private IRC networks."
msgstr ""
+"æäº IRC æå¡å¨æ¯è¢«å¯ç ä¿æ¤çãæ¨éè¦ç¥éå¯ç æè½è¿æ¥å°è¿äºæå¡å¨ãé常ï¼è¿æ ·"
+"çæå¡å¨æ¯ç§æçã"
#: C/create-account.page:122(title)
msgid "Proprietary Services"
-msgstr ""
+msgstr "ä¸æçæå¡"
#: C/create-account.page:124(p)
msgid ""
@@ -2248,6 +2351,9 @@ msgid ""
"new account with one of these services, you will need to visit the serviceâs "
"web site and agree to its terms of use."
msgstr ""
+"许å¤ä¸åçå
¬å¸æç»ç»å¼åäºä¸äºä¸è¥çå³æ¶æ¶æ¯æå¡ãEmpathy å
许æ¨è¿"
+"æ¥å¤§å¤å¸¸è§æå¡çæ¢åè´¦æ·ãè¦ä¸ºè¿æ ·çæå¡å建账æ·ï¼æ¨éè¦è®¿é®å
¶ç½ç«å¹¶åæå
¶ä½¿"
+"ç¨æ¡æ¬¾ã"
#: C/create-account.page:133(link) C/audio-video.page:135(p)
msgid "AIM"
@@ -2267,7 +2373,7 @@ msgstr "Yahoo!"
#: C/change-status.page:9(desc)
msgid "Change your status to advertise your availability to your contacts."
-msgstr ""
+msgstr "æ¹åæ¨çç¶æ以åæ¨çè系人表ææ¨æ¯å¦é²æã"
#: C/change-status.page:34(title)
msgid "Change your status"
@@ -2278,15 +2384,17 @@ msgid ""
"You can set your status to indicate your availability to your contacts. "
"Empathy allows you to select from a list of defined statuses."
msgstr ""
+"æ¨å¯ä»¥æ¹åæ¨çç¶æï¼ä»èåè系人表ææ¨ç°å¨æ¯å¦é²æãEmpathy å
许æ¨"
+"ä»ä¸äºå®ä¹å¥½çç¶æä¸éæ©ä¸ä¸ªã"
#: C/change-status.page:41(p)
msgid ""
"Click on the drop-down list at the top of the Contact List window."
-msgstr ""
+msgstr "ç¹å» è系人å表 çªå£é¡¶é¨çä¸æå表ã"
#: C/change-status.page:46(p)
msgid "Select a status from the list."
-msgstr ""
+msgstr "ä»å表ä¸éæ©ä¸ä¸ªç¶æã"
#: C/change-status.page:52(p)
msgid ""
@@ -2295,12 +2403,16 @@ msgid ""
"status messages to provide more information about your availability "
"to your contacts."
msgstr ""
+"å
ç½®çç¶æåå®ä»¬çå«ä¹åè§ ãæ¨ä¹å¯ä»¥ æ·»å èªå®ä¹çç¶æä¿¡æ¯æ¥åæ¨çè系人æä¾æ´å¤æå
³"
+"æ¨å½åç¶æçä¿¡æ¯ã"
#: C/change-status.page:58(p)
msgid ""
"If you do not use your computer for a while, or if the screensaver is on, "
"the status will be automatically set to Away."
msgstr ""
+"å¦ææ¨ä¸æ®µæ¶é´ä¸ä½¿ç¨è®¡ç®æºï¼æå±å¹ä¿æ¤å¼å§è¿è¡ï¼æ¨çç¶æä¼èªå¨å为â离å¼âã"
#. When image changes, this message will be marked fuzzy or untranslated for you.
#. It doesn't matter what you translate it to: it's not used at all.
@@ -2315,11 +2427,11 @@ msgstr ""
#: C/audio-video.page:8(desc)
msgid ""
"Information on when it is possible to have an audio or video conversation."
-msgstr ""
+msgstr "è¯é³æè§é¢ä¼è¯çæ¡ä»¶ã"
#: C/audio-video.page:32(title)
msgid "Audio and video support"
-msgstr "é³é¢åè§é¢æ¯æ"
+msgstr "è¯é³åè§é¢æ¯æ"
#: C/audio-video.page:34(p)
msgid ""
@@ -2328,6 +2440,9 @@ msgid ""
"audio or video conversations, you will see the following icons next to their "
"names in the contact list:"
msgstr ""
+"æ¨çè系人ä¹å¨ä½¿ç¨æ¯æè¯é³åè§é¢ä¼è¯çç¨åºæ¶ï¼æ¨æå¯ä»¥åä»ä»¬è¿è¡è¯é³ãè§é¢ä¼"
+"è¯ãå¦ææ¨çè系人å¯ä»¥è¿è¡è¯é³æè§é¢ä¼è¯ï¼æ¨å°å¨è系人å表ä¸ä»ä»¬çå§åæçå°"
+"ä¸åå¾æ ï¼"
#: C/audio-video.page:43(p)
msgid "Icon"
@@ -2339,11 +2454,11 @@ msgstr "æè¿°"
#: C/audio-video.page:58(media)
msgid "Icon for audio conversation"
-msgstr "é³é¢è天çå¾æ "
+msgstr "è¯é³è天çå¾æ "
#: C/audio-video.page:64(p)
msgid "The contact is able to have an audio conversation."
-msgstr ""
+msgstr "è系人å¯ä»¥è¿è¡è¯é³è天ã"
#: C/audio-video.page:70(media)
msgid "Icon for video conversation"
@@ -2351,19 +2466,21 @@ msgstr "è§é¢è天çå¾æ "
#: C/audio-video.page:76(p)
msgid "The contact is able to have a video conversation."
-msgstr ""
+msgstr "è系人å¯ä»¥è¿è¡è§é¢è天ã"
#: C/audio-video.page:83(p)
msgid ""
"In order to have an audio conversation, you need to have a sound card that "
"is supported by your operating system, and a working microphone."
msgstr ""
+"è¦è¿è¡è¯é³è天ï¼æ¨éè¦æä¸å声å¡ï¼ä¸æ¨çæä½ç³»ç»å¿
éæ¯æå®ï¼è¿éè¦ä¸ä¸ªè½æ£å¸¸"
+"å·¥ä½ç麦å
é£ã"
#: C/audio-video.page:87(p)
msgid ""
"In order to have a video conversation, you need to have a webcam that is "
"supported by your operating system, and a working microphone."
-msgstr ""
+msgstr "è¦è¿è¡è§é¢è天ï¼æ¨éè¦æä½ç³»ç»æ¯æçæå头ï¼åå¯ä»¥æ£å¸¸å·¥ä½ç麦å
é£ã"
#: C/audio-video.page:95(title)
msgid "Supported Account Types"
@@ -2375,6 +2492,8 @@ msgid ""
"supported services. The following table lists whether audio and video is "
"supported for each type of account."
msgstr ""
+"åªæä¸äºç¹å®ç±»åçè´¦æ·æ¯æè¯é³æè§é¢è天ãä¸è¡¨ååºäºæ¯ç§ç±»åçè´¦æ·çè¯é³ãè§"
+"é¢æ¯ææ
åµã"
#: C/audio-video.page:102(p)
msgid ""
@@ -2383,6 +2502,8 @@ msgid ""
"plugins may make audio or video conversations possible on account types that "
"are listed as unsupported here."
msgstr ""
+"è´¦æ·ç±»åæ¯ç±æ件æä¾çãæ¨çç³»ç»ä¸ä¸ä¸å®æ以ä¸ååºçå
¨é¨ç±»åï¼ä¹å¯è½æä¸äºç±»"
+"å没æå¨ä¸é¢ååºãæ件çå级å¯è½ä½¿ä¸è¡¨ä¸ä¸æ¯æè¯é³æè§é¢çè´¦æ·ç±»åè·å¾æ¯æã"
#: C/audio-video.page:110(p)
msgid ""
@@ -2406,7 +2527,7 @@ msgstr "æå¡"
#: C/audio-video.page:129(p)
msgid "Audio"
-msgstr "é³é¢"
+msgstr "è¯é³"
#: C/audio-video.page:130(p)
msgid "Video"
@@ -2426,7 +2547,7 @@ msgstr "è§é¢"
#: C/audio-video.page:211(p) C/audio-video.page:212(p)
#: C/audio-video.page:216(p) C/audio-video.page:217(p)
msgid "No"
-msgstr ""
+msgstr "å¦"
#: C/audio-video.page:140(p)
msgid "Facebook Chat"
@@ -2445,7 +2566,7 @@ msgstr "Google Talk"
#: C/audio-video.page:176(p) C/audio-video.page:177(p)
#: C/audio-video.page:206(p) C/audio-video.page:207(p)
msgid "Yes"
-msgstr ""
+msgstr "æ¯"
#: C/audio-video.page:155(p)
msgid "Groupwise"
@@ -2473,11 +2594,11 @@ msgstr "zephyr"
#: C/audio-call.page:9(desc)
msgid "Call your contacts over the Internet."
-msgstr ""
+msgstr "éè¿äºèç½å¼å«æ¨çè系人ã"
#: C/audio-call.page:27(title)
msgid "Start an audio conversation"
-msgstr "å¼å§é³é¢è天"
+msgstr "å¼å§è¯é³è天"
#: C/audio-call.page:29(p)
msgid ""
@@ -2485,58 +2606,39 @@ msgid ""
"features only works with certain types of accounts, and it requires the "
"other person to have an application that supports audio calls."
msgstr ""
+"æ¨å¯ä»¥å¼å«æ¨çè系人ï¼ä¸ä»ä»¬è¿è¡è¯é³è天ãè¿ä¸ªåè½ä»
对äºä¸äºç¹å®ç±»åçè´¦æ·å¯"
+"ç¨ï¼å¹¶ä¸éè¦å¦ä¸ä¸ªäººä½¿ç¨çåºç¨ç¨åºä¹æ¯æè¯é³å¼å«ã"
#: C/audio-call.page:34(p)
-#, fuzzy
-#| msgid ""
-#| "From the Contact List window, click the video call icon "
-#| "next to the name of the contact you wish to call and choose Video Call . Alternatively, right click the contact and "
-#| "choose Video Call ."
msgid ""
"From the Contact List window, click the video call icon "
"next to the name of the contact you wish to call and choose Audio Call ."
msgstr ""
-"å¨è系人å表 çªå£ï¼ç¹å»æ¨æ³å¼å«çè系人çååæçè§é¢å¼å« "
-"å¾æ 并éæ©è§é¢å¼å« ãåæ ·ï¼ä¹å¯ä»¥å³å»è系人并é"
-"æ©è§é¢å¼å« ã"
+"å¨ è系人å表 çªå£ï¼ç¹å»æ¨æ³å¼å«çè系人çååæç è§é¢å¼å« "
+"å¾æ 并éæ© è¯é³å¼å« ã"
#: C/audio-call.page:55(p)
-#, fuzzy
-#| msgid ""
-#| "To turn a video conversation into an audio conversation, choose "
-#| "Video Video Off"
-#| "gui> , or click the video call toolbar button to deselect "
-#| "it."
msgid ""
"To turn an audio conversation into a video conversation, choose Video Video On ."
msgstr ""
-"è¦å°è§é¢ä¼è¯è½¬ä¸ºé³é¢ä¼è¯ï¼åéæ©è§é¢ å
³éè§é¢ ï¼æè
ç¹å»å·¥å
·æ ä¸çè§é¢å¼å« "
-"æé®ä»¥åæ¶éæ©ã"
+"è¦å°è¯é³ä¼è¯è½¬ä¸ºè§é¢ä¼è¯ï¼éæ© è§é¢ è§é¢å¼å¯ ã"
#: C/audio-call.page:63(title)
-#, fuzzy
-#| msgid "Start a video conversation with one of your contacts."
msgid "Start an audio conversation with a meta-contact"
-msgstr "åæ¨çè系人åèµ·è§é¢ä¼è¯ã"
+msgstr "åä¸ä½å
è系人åèµ·è¯é³ä¼è¯"
#: C/audio-call.page:71(p)
-#, fuzzy
-#| msgid ""
-#| "Right-click on the name of the contact you want to have a conversation "
-#| "with, and choose Chat ."
msgid ""
"Select the contact you want to have the conversation, and from the menu "
"select Audio Call ."
-msgstr "å³é®ç¹å»æ¨æ³è¦è¿è¡äº¤è°çè系人çååï¼ç¶åéæ© è天 "
+msgstr ""
+"éæ©æ¨æ³è¦äº¤è°çè系人ï¼ç¶åå¨èåä¸éæ©è¯é³å¼å«"
+"gui>ã"
#: C/add-contact.page:9(desc)
msgid "Add someone to the contact list."
@@ -2556,28 +2658,32 @@ msgid ""
"use to connect to your contact. Your contact will need to be using the same "
"service as the account you select."
msgstr ""
+"å¨ è´¦æ· ä¸æå表ä¸ï¼éæ©æ¨ç¨æ¥ä¸æ¨çè系人èç³»çè´¦æ·ãæ¨çè系人é"
+"è¦ä½¿ç¨ä¸æ¨éæ©çè´¦æ·ç¸åçæå¡ã"
#: C/add-contact.page:45(p)
msgid ""
"In the Identifier field, enter your contactâs login ID, username, "
"screen name, or other appropriate identifier for the service type."
msgstr ""
+"å¨ æ è¯ç¬¦ ä¸æ ä¸ï¼è¾å
¥è¿ç§æå¡ä¸æ¨çè系人çç»å½ IDï¼ç¨æ·åï¼æ¾ç¤º"
+"åæå
¶ä»åéçæ è¯ç¬¦ã"
#: C/add-contact.page:49(p)
msgid ""
"In the Alias field, type your contactâs name as you would like it "
"to appear in your contact list."
-msgstr ""
+msgstr "å¨ å«å ä¸ï¼è¾å
¥æ¨å¸æè¿ä¸ªè系人æ¾ç¤ºå¨è系人å表ä¸çååã"
#: C/add-contact.page:53(p)
msgid "Click Add to add the person to your list of contacts."
-msgstr ""
+msgstr "ç¹å»æ·»å å°æ¤äººæ·»å å°æ¨çè系人å表ã"
#: C/add-contact.page:61(p)
msgid ""
"To add a new person to your list of contacts, you need to be connected to "
"the Internet and to your account."
-msgstr ""
+msgstr "è¦æ·»å è系人å°æ¨çè系人å表ï¼æ¨éè¦è¿æ¥å ç¹ç½åæ¨çè´¦æ·ã"
#: C/add-account.page:9(desc)
msgid "Add a new account to Empathy ."
@@ -2594,6 +2700,9 @@ msgid ""
"account providers, these steps will also allow you to register for a new "
"account. For more details, see ."
msgstr ""
+"æ¨å¯ä»¥æ·»å ä»»ä½æ¯æçæå¡çå³æ¶æ¶æ¯è´¦æ·ï¼ä»¥å¨ Empathy ä¸ä¸æ¨çèç³»"
+"人交æµã对äºæäºè´¦æ·æä¾åï¼è¿äºæ¥éª¤ä¹å
许æ¨æ³¨åæ°è´¦æ·ãæ´å¤ç»èåè§ ã"
#: C/add-account.page:52(p)
msgid "Click Add ."
@@ -2603,7 +2712,7 @@ msgstr "ç¹å»æ·»å ã"
msgid ""
"From the Protocol drop-down list, select the type of account you "
"wish to add."
-msgstr ""
+msgstr "å¨åè®® ä¸æå表ï¼éæ©æ¨è¦å建çè´¦æ·ç±»åã"
#: C/add-account.page:61(p)
msgid ""
@@ -2612,6 +2721,9 @@ msgid ""
"types, and may not work with some account providers. See for more information."
msgstr ""
+"å¦ææ¨è¿æ²¡æ注åè´¦æ·ï¼éæ©å¨æå¡å¨ä¸å建æ°çè´¦æ· ãè¿ä¸ªåè½å¹¶ä¸æ¯å¯¹"
+"äºæ¯ä¸ç§è´¦æ·é½å¯ç¨ï¼ä¹å¯è½å¯¹äºæäºè´¦æ·æä¾åä¸å¯ç¨ãæ´å¤ä¿¡æ¯åè§ ã"
#: C/add-account.page:66(p)
msgid ""
@@ -2619,10 +2731,12 @@ msgid ""
"login ID and a password. Some accounts may require additional information. "
"See for more information."
msgstr ""
+"è¾å
¥å¿
è¦çä¿¡æ¯ã对äºå¤§å¤æ°è´¦æ·ï¼æ¨åªéè¦è¾å
¥ç»å½ ID åå¯ç ãæäºè´¦æ·å¯è½éè¦"
+"æ´å¤ä¿¡æ¯ãåè§ ã"
#: C/add-account.page:71(p)
msgid "Click Log in ."
-msgstr ""
+msgstr "ç¹å»ç»å
¥ ã"
#: C/add-account.page:78(p)
msgid ""
@@ -2631,6 +2745,8 @@ msgid ""
"name or press the space bar. Edit the account name and press Enter"
"key> when youâre finished."
msgstr ""
+"è¦æ¹åè´¦æ·å¨è´¦æ· çªå£ä¸çä½ä¸ºæ è¯çååï¼å¨å·¦ä¾§çå表ä¸éæ©è´¦æ·ï¼ç¶"
+"åç¹å»ååæè
æç©ºæ ¼é®ãç¼è¾è´¦æ·çååï¼å®æåæEnter ã"
#: C/accounts-window.page:11(desc)
msgid "Add, modify, and delete accounts."
@@ -2656,14 +2772,16 @@ msgid ""
"Certain accounts or account types, however, may require additional "
"information."
msgstr ""
+"对äºå¤§å¤æ°çè´¦æ·ï¼æ¨åªéè¦è¾å
¥ç»å½ ID åå¯ç ãä½æäºè´¦æ·ææäºç±»åçè´¦æ·å¯è½"
+"éè¦é¢å¤çä¿¡æ¯ã"
#: C/account-jabber.page:7(desc)
msgid "Advanced options for Jabber and Google Talk accounts."
-msgstr ""
+msgstr "Jabber å Google Talk è´¦æ·çé«çº§é项ã"
#: C/account-jabber.page:29(title)
msgid "Jabber account details"
-msgstr "Jabber è´¦æ·ä¿¡æ¯"
+msgstr "Jabber è´¦æ·è¯¦æ
"
#: C/account-jabber.page:31(p)
msgid ""
@@ -2673,12 +2791,15 @@ msgid ""
"will not need to use the advanced options below. For general instructions on "
"adding an account, see ."
msgstr ""
+"å¤§å¤ Jabber è´¦æ·åªéè¦ç»å½ ID åå¯ç å°±å¯ä»¥è¿æ¥ãä½å¯¹äºæäºè´¦æ·ææäºç½ç»ï¼æ¨"
+"å¯è½éè¦å¨é«çº§ é项å¡ä¸è¾å
¥ä¸äºé¢å¤çä¿¡æ¯ãé常ï¼æ¨ä¸éè¦ä½¿ç¨ä¸é¢ç"
+"è¿äºé«çº§é项ãæ·»å è´¦æ·çä¸è¬æ导åè§ ã"
#: C/account-jabber.page:39(p)
msgid ""
"Google Talk is a type of Jabber account. These instructions hold for Google "
"Talk accounts as well."
-msgstr ""
+msgstr "Google Talk æ¯ä¸ç§ Jabber è´¦æ·ãè¿äºæå对 Google Talk è´¦æ·åæ ·éç¨ã"
#: C/account-jabber.page:45(gui)
msgid "Encryption required (TLS/SSL)"
@@ -2696,6 +2817,9 @@ msgid ""
"Empathy from communicating with the Jabber server when encryption "
"is not possible."
msgstr ""
+"åªè¦æå¯è½ï¼Empathy ä¸ Jabber æå¡å¨ä¹é´çé讯就ä¼è¢«å å¯ãå¦æä¸å¯"
+"è½å å¯ï¼æ¶æ¯å°±å¯è½è¢«ææåéãéæ©éè¦å å¯ ä»¥é»æ¢ä¸è½å å¯æ¶ "
+"Empathy ä¸ Jabber æå¡å¨è¿è¡ææé讯ã"
#: C/account-jabber.page:52(p)
msgid ""
@@ -2704,6 +2828,9 @@ msgid ""
"connecting to, you can select Ignore SSL certificate errors to "
"allow encrypted communication with invalid certificates."
msgstr ""
+"æäº Jabber æå¡å¨å¯è½ä½¿ç¨ä¸åæ³çè¯ä¹¦å å¯æ°æ®ï¼æè
使ç¨æ¥èªæªç¥çè¯ä¹¦è®¤è¯æº"
+"æçè¯ä¹¦ãå¦ææ¨ä¿¡ä»»æ¨çæå¡å¨ï¼æ¨å¯ä»¥éæ©å¿½ç¥ SSL è¯ä¹¦é误 以å
许"
+"使ç¨ä¸åæ³çè¯ä¹¦è¿è¡å å¯é讯ã"
#: C/account-jabber.page:59(gui)
msgid "Resource"
@@ -2720,6 +2847,9 @@ msgid ""
"uniquely identify each one. By default, Empathy will use "
" Telepathy as the resource."
msgstr ""
+"å¦ææ¨æå¤ä¸ªåºç¨ç¨åº(æ¯å¦ï¼å¨å¦ä¸å°è®¡ç®æºä¸)åæ¶è¿æ¥äºæ¨çè´¦æ·ï¼æ¨å¯ä»¥è®¾ç½®âèµ"
+"æºâ以å¯ä¸å°æ è¯æ¯ä¸ä¸ªè¿æ¥çç¨åºãé»è®¤å°ï¼Empathy ä¼ä½¿ç¨ "
+" Telepathy ä½ä¸ºâèµæºâã"
#: C/account-jabber.page:65(p)
msgid ""
@@ -2727,10 +2857,12 @@ msgid ""
"incoming messages from your contacts. New messages will be sent to the "
"application with the highest priority."
msgstr ""
+"æ¨å¯ä»¥è®¾ç½®ä¼å
级以æå®åªä¸ä¸ªç¨åºä¼å
æ¶å°æ¨çè系人åéæ¥çæ¶æ¯ãæ°çæ¶æ¯ä¼è¢«"
+"åéç»ä¼å
级æé«çç¨åºã"
#: C/account-jabber.page:70(gui)
msgid "Override server settings"
-msgstr ""
+msgstr "è¦çæå¡å¨è®¾ç½®"
#: C/account-jabber.page:71(p)
msgid ""
@@ -2739,6 +2871,9 @@ msgid ""
"custom server settings manually. These settings should be provided for you "
"by your Jabber provider."
msgstr ""
+"Empathy ä¼æ ¹æ®æ¨çç»å½ ID 以é»è®¤ç设置è¿æ¥ Jabber æå¡å¨ã对æäº "
+"Jabber æå¡å¨ï¼æ¨éè¦äººå·¥è¾å
¥ä¸äºæå¡å¨è®¾ç½®ãè¿äºè®¾ç½®åºè¯¥ç±æ¨ç Jabber æå¡æ"
+"ä¾åæä¾ã"
#. When image changes, this message will be marked fuzzy or untranslated for you.
#. It doesn't matter what you translate it to: it's not used at all.
@@ -2755,11 +2890,11 @@ msgstr ""
#: C/account-irc.page:8(desc)
msgid "Additional information necessary for connecting to IRC networks."
-msgstr ""
+msgstr "è¿æ¥ IRC ç½ç»éè¦çé¢å¤ä¿¡æ¯ã"
#: C/account-irc.page:31(title)
msgid "IRC account details"
-msgstr "IRC è´¦æ·ä¿¡æ¯"
+msgstr "IRC è´¦æ·è¯¦æ
"
#: C/account-irc.page:33(p)
msgid ""
@@ -2768,6 +2903,8 @@ msgid ""
"and a nickname. This page details the information you can provide for an IRC "
"account."
msgstr ""
+"IRC è´¦æ·éè¦ä¸å
¶ä»ç±»åçè´¦æ·ä¸åçä¿¡æ¯ãè¦å建 IRC è´¦æ·ï¼æ¨è³å°éè¦æå®ä¸ä¸ª "
+"IRC ç½ç»åä¸ä¸ªæµç§°ãæ¬é¡µè¯¦ç»ä»ç»äºæ¨å¯ä»¥ä¸ºä¸ä¸ª IRC è´¦æ·æä¾çä¿¡æ¯ã"
#: C/account-irc.page:45(gui) C/account-irc.page:120(gui)
msgid "Network"
@@ -2780,6 +2917,9 @@ msgid ""
"lists the most popular networks in the Network drop-down list. "
"You can add additional networks. See below."
msgstr ""
+"IRC æ¯ä¸ç§å¼æ¾çç³»ç»ï¼å®å
许人们è¿è¡åèªç IRC ç½ç»ãæ¯ä¸ªç½ç»æ¯ç¬ç«çï¼æç¹æ"
+"çç¨æ·åè天室ãEmpathy å¨ ç½ç» ä¸æå表ä¸ååºäºä¸äºæ"
+"æµè¡çç½ç»ãæ¨å¯ä»¥æ·»å å
¶ä»çç½ç»ãåçä¸é¢ç ã"
#: C/account-irc.page:53(gui)
msgid "Nickname"
@@ -2792,6 +2932,9 @@ msgid ""
" you will need to change "
"your nickname."
msgstr ""
+"æ¨çæµç§°æ¯æ¨å¨ IRC ç½ç»ä¸çå¯ä¸æ§çååãåªæä¸ä¸ªäººå¯ä»¥ä½¿ç¨æ个ç¹å®çæµç§°ãå¦"
+"ææ¨å¾å° é误信æ¯ï¼æ¨éè¦æ¹å"
+"æ¨çæµç§°ã"
#: C/account-irc.page:60(gui)
msgid "Password"
@@ -2803,6 +2946,8 @@ msgid ""
"connect. If you are authorized to use the network, the network "
"administrators should provide you with a password."
msgstr ""
+"ä¸äºæå¡å¨ï¼å°¤å
¶æ¯é£äºç§æç½ç»ï¼éè¦å¯ç æè½è¿æ¥ãå¦ææ¨è¢«ææ使ç¨ï¼ç½ç»ç管"
+"çååºå½ä¸ºæ¨æä¾äºå¯ç ã"
#: C/account-irc.page:65(title)
msgid "NickServ Passwords"
@@ -2817,20 +2962,26 @@ msgid ""
"identify yourself with NickServ. See for "
"more details."
msgstr ""
+"å¨æäºç½ç»ä¸ï¼æµç§°å¯ä»¥éè¿ä¸ç§å«å NickServ çæå¡è¢«æ³¨åãEmpathy "
+"并ä¸ç´æ¥æ¯ææµç§°å¯ç ãå¨æäºç½ç»ä¸ï¼å
æ¬æµè¡ç freenode ç½ç»ï¼æå¡å¨å¯ç ä¼è¢«"
+"èªå¨è½¬åç» NickServï¼ä»èå
许æ¨è®¾ç½®æ¤é¡¹å NickServ è¯ææ¨èªå·±ãæ´å¤ä¿¡æ¯åè§"
+" ã"
#: C/account-irc.page:76(gui)
msgid "Real name"
-msgstr ""
+msgstr "çå®å§å"
#: C/account-irc.page:77(p)
msgid ""
"You can provide your real name in addition to your nickname. Other users "
"will be able to see this when they view your information."
msgstr ""
+"é¤äºæµç§°ï¼æ¨è¿å¯ä»¥æä¾æ¨ççå®å§åãå
¶ä»ç¨æ·æ¥çæ¨çä¿¡æ¯æ¶å¯ä»¥çå°æ¨ççå®å§"
+"åã"
#: C/account-irc.page:81(gui)
msgid "Quit message"
-msgstr ""
+msgstr "éåºæ¶æ¯"
#: C/account-irc.page:82(p)
msgid ""
@@ -2838,6 +2989,8 @@ msgid ""
"and to all the users youâre having a private conversation with. Use this "
"field to provide a custom quit message."
msgstr ""
+"å½æ¨ç¦»çº¿æ¶ï¼ä¸ä¸ªéåºæ¶æ¯ä¼è¢«åéç»æææ¨å å
¥çè天室åæ£å¨ä¸æ¨è¿è¡ç§äººè天ç"
+"ç¨æ·ã设置æ¤é¡¹ä»¥æä¾èªå®ä¹çéåºæ¶æ¯ã"
#: C/account-irc.page:94(title)
msgid "IRC Networks"
@@ -2853,12 +3006,16 @@ msgid ""
"another IRC network, you can add it to the list. You can also modify "
"networks and remove them from the list."
msgstr ""
+"Empathy å
æ¬äºä¸ä»½å¸¸ç¨ IRC ç½ç»çå表ãå¦ææ¨æ³ä½¿ç¨å
¶ä»ç IRC ç½"
+"ç»ï¼æ¨å¯ä»¥å°å
¶æ·»å å°è¿ä¸ªå表ä¸ãæ¨ä¹å¯ä»¥ä¿®æ¹ç½ç»æä»å表ä¸å é¤ç½ç»ã"
#: C/account-irc.page:104(p)
msgid ""
"To add a network to the list, click Add ."
msgstr ""
+"è¦æ³å表ä¸æ·»å ç½ç»ï¼ç¹å»æ·»å ã"
#: C/account-irc.page:107(p)
msgid ""
@@ -2866,6 +3023,8 @@ msgid ""
"\"image\" mime=\"image/png\" src=\"figures/gtk-edit.png\" width=\"16\" "
"height=\"16\">Edit ."
msgstr ""
+"è¦ä¿®æ¹å表ä¸çç½ç»ï¼éæ©é£ä¸ªç½ç»å¹¶ç¹å»ç¼è¾ ã"
#: C/account-irc.page:110(p)
msgid ""
@@ -2873,17 +3032,20 @@ msgid ""
"\"image\" mime=\"image/png\" src=\"figures/gtk-remove.png\" width=\"16\" "
"height=\"16\">Remove ."
msgstr ""
+"è¦ä»å表ä¸å é¤ç½ç»ï¼éæ©è¦å é¤çç½ç»å¹¶ç¹å»å é¤"
+"media>ã"
#: C/account-irc.page:115(p)
msgid ""
"When adding or modifying a network, you can enter the following information:"
-msgstr ""
+msgstr "å¨æ·»å æä¿®æ¹ä¸ä¸ªç½ç»æ¶ï¼æ¨å¯ä»¥è¾å
¥ä¸åä¿¡æ¯ï¼"
#: C/account-irc.page:121(p)
msgid ""
"This is the name of the network as you want it to appear in the list of "
"networks."
-msgstr ""
+msgstr "è¿æ¯æ¨å¸æç½ç»æ¾ç¤ºå¨ç½ç»å表ä¸çååã"
#: C/account-irc.page:125(gui)
msgid "Charset"
@@ -2897,6 +3059,9 @@ msgid ""
"to use the same character encoding as other users to see their messages "
"correctly."
msgstr ""
+"è¿ææäºç½ç»ä¸å¸¸ç¨çå符ç¼ç ãå符ç¼ç æ¯è®¡ç®æºå
é¨è®°å½å符çä¸ç§ç¹å®æ¹å¼ãæ"
+"许å¤ä¸åçå符ç¼ç ï¼æ¨éè¦ä¸å
¶ä»ç¨æ·ä½¿ç¨åæ ·çå符ç¼ç æè½æ£ç¡®å°çå°ä»ä»¬çä¿¡"
+"æ¯ã"
#. Translators: Recommend character encodings that are common
#. for your language.
@@ -2906,6 +3071,8 @@ msgid ""
"can handle text from most of the world's languages. Another common encoding "
"for English and some other Western languages is ISO-8859-1."
msgstr ""
+"é»è®¤å°ï¼Empathy ä½¿ç¨ UTF-8ï¼ä¸ç§è½å¤å¤çä¸çä¸å¤§å¤æ°è¯è¨çç°ä»£åç"
+"å符ç¼ç ãç®ä½ä¸æ常ç¨çç¼ç è¿æ GB18030ï¼GBK å GB2312ã"
#: C/account-irc.page:141(gui)
msgid "Servers"
@@ -2918,6 +3085,9 @@ msgid ""
"users on all other servers on that network. You can add and remove servers "
"for this network using the Add and Remove buttons."
msgstr ""
+"ä¸ä¸ª IRC ç½ç»å¯è½æ许å¤æå¡å¨ä¾æ¨è¿æ¥ãå½æ¨è¿æ¥å°ä¸ä¸ªç¹å®ç½ç»çæå¡å¨åï¼æ¨å¯"
+"以ååä¸ç½ç»ä¸æææå¡å¨çç¨æ·äº¤æµãæ¨å¯ä»¥ä¸ºä¸ä¸ªç½ç»æ·»å æå é¤æå¡å¨ï¼ä½¿ç¨"
+"æ·»å æå é¤ æé®ã"
#: C/account-irc.page:147(p)
msgid ""
@@ -2925,6 +3095,8 @@ msgid ""
"Port to edit it. Alternatively, use the left and right arrow keys "
"to focus the field, and press the space bar to begin editing."
msgstr ""
+"å½ä¸ä¸ªæå¡å¨è¢«éæ©åï¼ç¹å»æå¡å¨ æç«¯å£ ä¸æ¹çå段æ¥ç¼è¾"
+"å®ãæè
ï¼ä½¿ç¨å·¦å³æ¹åé®æ¥èç¦æ个å段ï¼å¹¶æç©ºæ ¼é®å¼å§ç¼è¾ã"
#: C/account-irc.page:151(p)
msgid ""
@@ -2932,10 +3104,14 @@ msgid ""
"communication with a server. Note that this does not prevent other users on "
"the network from seeing what you write on public chat rooms."
msgstr ""
+"éæ© SSL åä¸çå¤éæ¡ä»¥å å¯ä¸æå¡å¨é´çææé讯ã注æè¿å¹¶ä¸è½æå³"
+"çå
¶ä»ç¨æ·ä¸è½çå°æ¨å¨å
Œ
±è天室ä¸çåè¨ã"
#. Put one translator per line, in the form of NAME , YEAR1, YEAR2
#: C/index.page:0(None)
msgid "translator-credits"
msgstr ""
"Lavande , 2010\n"
-"Tao Wang , 2010lainme , 2011"
+"Tao Wang , 2010\n"
+"lainme , 2011\n"
+"Guanhao Yin , 2011"
diff --git a/libempathy-gtk/Makefile.am b/libempathy-gtk/Makefile.am
index e502736d..c32448fa 100644
--- a/libempathy-gtk/Makefile.am
+++ b/libempathy-gtk/Makefile.am
@@ -15,6 +15,7 @@ AM_CPPFLAGS = \
$(GEOCODE_CFLAGS) \
$(MEEGO_CFLAGS) \
$(CHEESE_CFLAGS) \
+ $(EDS_CFLAGS) \
$(WARN_CFLAGS) \
$(DISABLE_DEPRECATED)
@@ -45,9 +46,7 @@ libempathy_gtk_handwritten_source = \
empathy-contact-blocking-dialog.c \
empathy-contact-dialogs.c \
empathy-contact-chooser.c \
- empathy-contact-menu.c \
empathy-contactinfo-utils.c \
- empathy-linking-dialog.c \
empathy-live-search.c \
empathy-contact-search-dialog.c \
empathy-contact-widget.c \
@@ -56,8 +55,6 @@ libempathy_gtk_handwritten_source = \
empathy-groups-widget.c \
empathy-individual-dialogs.c \
empathy-individual-edit-dialog.c \
- empathy-individual-information-dialog.c \
- empathy-individual-linker.c \
empathy-individual-menu.c \
empathy-individual-store.c \
empathy-individual-store-channel.c \
@@ -68,13 +65,13 @@ libempathy_gtk_handwritten_source = \
empathy-irc-network-chooser.c \
empathy-irc-network-chooser-dialog.c \
empathy-irc-network-dialog.c \
+ empathy-local-xmpp-assistant-widget.c \
empathy-log-window.c \
+ empathy-new-account-dialog.c \
empathy-new-message-dialog.c \
empathy-new-call-dialog.c \
empathy-notify-manager.c \
empathy-password-dialog.c \
- empathy-persona-store.c \
- empathy-persona-view.c \
empathy-presence-chooser.c \
empathy-protocol-chooser.c \
empathy-search-bar.c \
@@ -114,8 +111,6 @@ libempathy_gtk_headers = \
empathy-contact-blocking-dialog.h \
empathy-contact-dialogs.h \
empathy-contact-chooser.h \
- empathy-contact-menu.h \
- empathy-linking-dialog.h \
empathy-live-search.h \
empathy-contact-search-dialog.h \
empathy-contact-widget.h \
@@ -126,8 +121,6 @@ libempathy_gtk_headers = \
empathy-images.h \
empathy-individual-dialogs.h \
empathy-individual-edit-dialog.h \
- empathy-individual-information-dialog.h \
- empathy-individual-linker.h \
empathy-individual-menu.h \
empathy-individual-store.h \
empathy-individual-store-channel.h \
@@ -138,13 +131,13 @@ libempathy_gtk_headers = \
empathy-irc-network-chooser.h \
empathy-irc-network-chooser-dialog.h \
empathy-irc-network-dialog.h \
+ empathy-local-xmpp-assistant-widget.h \
empathy-log-window.h \
+ empathy-new-account-dialog.h \
empathy-new-message-dialog.h \
empathy-new-call-dialog.h \
empathy-notify-manager.h \
empathy-password-dialog.h \
- empathy-persona-store.h \
- empathy-persona-view.h \
empathy-presence-chooser.h \
empathy-protocol-chooser.h \
empathy-search-bar.h \
@@ -187,6 +180,7 @@ libempathy_gtk_la_LIBADD = \
$(GCR_LIBS) \
$(MEEGO_LIBS) \
$(CHEESE_LIBS) \
+ $(EDS_LIBS) \
$(top_builddir)/libempathy/libempathy.la
check_c_sources = \
diff --git a/libempathy-gtk/empathy-account-chooser.c b/libempathy-gtk/empathy-account-chooser.c
index c21a22eb..ae3f1dd1 100644
--- a/libempathy-gtk/empathy-account-chooser.c
+++ b/libempathy-gtk/empathy-account-chooser.c
@@ -90,6 +90,10 @@ filter_result_callback_data_new (EmpathyAccountChooser *self,
{
FilterResultCallbackData *data;
+ g_return_val_if_fail (self != NULL, NULL);
+ g_return_val_if_fail (account != NULL, NULL);
+ g_return_val_if_fail (iter != NULL, NULL);
+
data = g_slice_new0 (FilterResultCallbackData);
data->self = g_object_ref (self);
data->account = g_object_ref (account);
diff --git a/libempathy-gtk/empathy-account-widget-irc.ui b/libempathy-gtk/empathy-account-widget-irc.ui
index aa6e643e..999fd320 100644
--- a/libempathy-gtk/empathy-account-widget-irc.ui
+++ b/libempathy-gtk/empathy-account-widget-irc.ui
@@ -81,6 +81,7 @@
1
+ 0
diff --git a/libempathy-gtk/empathy-account-widget-jabber.ui b/libempathy-gtk/empathy-account-widget-jabber.ui
index f4ee3b55..49ac47e3 100644
--- a/libempathy-gtk/empathy-account-widget-jabber.ui
+++ b/libempathy-gtk/empathy-account-widget-jabber.ui
@@ -2,7 +2,7 @@
- -128
+ 0
127
1
10
diff --git a/libempathy-gtk/empathy-account-widget-local-xmpp.ui b/libempathy-gtk/empathy-account-widget-local-xmpp.ui
index e5fc0967..7e7cfe8e 100644
--- a/libempathy-gtk/empathy-account-widget-local-xmpp.ui
+++ b/libempathy-gtk/empathy-account-widget-local-xmpp.ui
@@ -15,6 +15,7 @@
True
True
+ True
1
@@ -25,6 +26,7 @@
True
True
+ True
1
@@ -35,6 +37,7 @@
True
True
+ True
1
@@ -98,6 +101,7 @@
True
True
+ True
1
@@ -119,6 +123,7 @@
True
True
+ True
1
@@ -129,6 +134,7 @@
True
True
+ True
1
diff --git a/libempathy-gtk/empathy-account-widget.c b/libempathy-gtk/empathy-account-widget.c
index e314ad33..375d6246 100644
--- a/libempathy-gtk/empathy-account-widget.c
+++ b/libempathy-gtk/empathy-account-widget.c
@@ -21,6 +21,7 @@
* Martyn Russell
* Cosimo Cecchi
* Jonathan Tellier
+ * Danielle Madeley
*/
#include
@@ -71,7 +72,7 @@ static ServiceInfo services_infos[N_SERVICES] = {
{ "label_username_f_example", FALSE },
};
-typedef struct {
+struct _EmpathyAccountWidgetPriv {
EmpathyAccountSettings *settings;
GtkWidget *grid_common_settings;
@@ -80,6 +81,7 @@ typedef struct {
GtkWidget *entry_password;
GtkWidget *spinbutton_port;
GtkWidget *radiobutton_reuse;
+ GtkWidget *hbox_buttons;
gboolean simple;
@@ -114,9 +116,7 @@ typedef struct {
/* Used for 'special' XMPP account having a service associated ensuring that
* JIDs have a specific suffix; such as Facebook for example */
gchar *jid_suffix;
-
- gboolean dispose_run;
-} EmpathyAccountWidgetPriv;
+};
enum {
PROP_PROTOCOL = 1,
@@ -130,6 +130,7 @@ enum {
HANDLE_APPLY,
ACCOUNT_CREATED,
CANCELLED,
+ CLOSE,
LAST_SIGNAL
};
@@ -141,7 +142,6 @@ enum {
static guint signals[LAST_SIGNAL] = { 0 };
-#define GET_PRIV(obj) EMPATHY_GET_PRIV (obj, EmpathyAccountWidget)
#define CHANGED_TIMEOUT 300
#define DIGIT "0-9"
@@ -199,7 +199,7 @@ static guint signals[LAST_SIGNAL] = { 0 };
#define ACCOUNT_REGEX_ICQ "^"ICQ_USER_NAME"$"
#define ACCOUNT_REGEX_IRC "^"IRC_NICK_NAME"$"
#define USERNAME_REGEX_IRC "^"IRC_USER_NAME"$"
-#define ACCOUNT_REGEX_JABBER "^"JABBER_USER_NAME"@"HOST"$"
+#define ACCOUNT_REGEX_JABBER "^"JABBER_USER_NAME"@[^@/]+"
#define ACCOUNT_REGEX_MSN "^"MSN_USER_NAME"@"HOST"$"
#define ACCOUNT_REGEX_YAHOO "^"YAHOO_USER_NAME"$"
@@ -207,32 +207,25 @@ static void
account_widget_set_control_buttons_sensitivity (EmpathyAccountWidget *self,
gboolean sensitive)
{
- EmpathyAccountWidgetPriv *priv = GET_PRIV (self);
+ /* we hit this case because of the 'other-accounts-exist' property handler
+ * being called during init (before constructed()) */
+ if (self->priv->apply_button == NULL || self->priv->cancel_button == NULL)
+ return;
- if (!priv->simple)
- {
- /* we hit this case because of the 'other-accounts-exist' property handler
- * being called during init (before constructed()) */
- if (priv->apply_button == NULL || priv->cancel_button == NULL)
- return;
+ gtk_widget_set_sensitive (self->priv->apply_button, sensitive);
- gtk_widget_set_sensitive (priv->apply_button, sensitive);
- gtk_widget_set_sensitive (priv->cancel_button,
- (sensitive || priv->creating_account) && priv->other_accounts_exist);
+ if (sensitive)
+ {
+ /* We can't grab default if the widget hasn't be packed in a
+ * window */
+ GtkWidget *window;
- if (sensitive)
+ window = gtk_widget_get_toplevel (self->priv->apply_button);
+ if (window != NULL &&
+ gtk_widget_is_toplevel (window))
{
- /* We can't grab default if the widget hasn't be packed in a
- * window */
- GtkWidget *window;
-
- window = gtk_widget_get_toplevel (priv->apply_button);
- if (window != NULL &&
- gtk_widget_is_toplevel (window))
- {
- gtk_widget_set_can_default (priv->apply_button, TRUE);
- gtk_widget_grab_default (priv->apply_button);
- }
+ gtk_widget_set_can_default (self->priv->apply_button, TRUE);
+ gtk_widget_grab_default (self->priv->apply_button);
}
}
}
@@ -270,13 +263,11 @@ account_widget_set_entry_highlighting (GtkEntry *entry,
static void
account_widget_handle_control_buttons_sensitivity (EmpathyAccountWidget *self)
{
- EmpathyAccountWidgetPriv *priv = GET_PRIV (self);
gboolean is_valid;
- is_valid = empathy_account_settings_is_valid (priv->settings);
+ is_valid = empathy_account_settings_is_valid (self->priv->settings);
- if (!priv->simple)
- account_widget_set_control_buttons_sensitivity (self, is_valid);
+ account_widget_set_control_buttons_sensitivity (self, is_valid);
g_signal_emit (self, signals[HANDLE_APPLY], 0, is_valid);
}
@@ -287,24 +278,23 @@ account_widget_entry_changed_common (EmpathyAccountWidget *self,
{
const gchar *str;
const gchar *param_name;
- EmpathyAccountWidgetPriv *priv = GET_PRIV (self);
gboolean prev_status;
gboolean curr_status;
str = gtk_entry_get_text (entry);
param_name = g_object_get_data (G_OBJECT (entry), "param_name");
- prev_status = empathy_account_settings_parameter_is_valid (priv->settings,
- param_name);
+ prev_status = empathy_account_settings_parameter_is_valid (
+ self->priv->settings, param_name);
if (EMP_STR_EMPTY (str))
{
const gchar *value = NULL;
- empathy_account_settings_unset (priv->settings, param_name);
+ empathy_account_settings_unset (self->priv->settings, param_name);
if (focus)
{
- value = empathy_account_settings_get_string (priv->settings,
+ value = empathy_account_settings_get_string (self->priv->settings,
param_name);
DEBUG ("Unset %s and restore to %s", param_name, value);
gtk_entry_set_text (entry, value ? value : "");
@@ -314,11 +304,13 @@ account_widget_entry_changed_common (EmpathyAccountWidget *self,
{
DEBUG ("Setting %s to %s", param_name,
tp_strdiff (param_name, "password") ? str : "***");
- empathy_account_settings_set_string (priv->settings, param_name, str);
+ empathy_account_settings_set_string (self->priv->settings, param_name,
+ str);
}
- curr_status = empathy_account_settings_parameter_is_valid (priv->settings,
- param_name);
+ curr_status = empathy_account_settings_parameter_is_valid (
+ self->priv->settings, param_name);
+
if (curr_status != prev_status)
account_widget_set_entry_highlighting (entry, !curr_status);
}
@@ -327,9 +319,7 @@ static void
account_widget_entry_changed_cb (GtkEditable *entry,
EmpathyAccountWidget *self)
{
- EmpathyAccountWidgetPriv *priv = GET_PRIV (self);
-
- if (priv->automatic_change)
+ if (self->priv->automatic_change)
return;
account_widget_entry_changed_common (self, GTK_ENTRY (entry), FALSE);
@@ -340,14 +330,13 @@ static void
account_widget_entry_map_cb (GtkEntry *entry,
EmpathyAccountWidget *self)
{
- EmpathyAccountWidgetPriv *priv = GET_PRIV (self);
const gchar *param_name;
gboolean is_valid;
/* need to initialize input highlighting */
param_name = g_object_get_data (G_OBJECT (entry), "param_name");
- is_valid = empathy_account_settings_parameter_is_valid (priv->settings,
- param_name);
+ is_valid = empathy_account_settings_parameter_is_valid (self->priv->settings,
+ param_name);
account_widget_set_entry_highlighting (entry, !is_valid);
}
@@ -358,12 +347,11 @@ account_widget_int_changed_cb (GtkWidget *widget,
const gchar *param_name;
gint value;
const gchar *signature;
- EmpathyAccountWidgetPriv *priv = GET_PRIV (self);
value = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (widget));
param_name = g_object_get_data (G_OBJECT (widget), "param_name");
- signature = empathy_account_settings_get_dbus_signature (priv->settings,
+ signature = empathy_account_settings_get_dbus_signature (self->priv->settings,
param_name);
g_return_if_fail (signature != NULL);
@@ -373,17 +361,21 @@ account_widget_int_changed_cb (GtkWidget *widget,
{
case DBUS_TYPE_INT16:
case DBUS_TYPE_INT32:
- empathy_account_settings_set_int32 (priv->settings, param_name, value);
+ empathy_account_settings_set_int32 (self->priv->settings, param_name,
+ value);
break;
case DBUS_TYPE_INT64:
- empathy_account_settings_set_int64 (priv->settings, param_name, value);
+ empathy_account_settings_set_int64 (self->priv->settings, param_name,
+ value);
break;
case DBUS_TYPE_UINT16:
case DBUS_TYPE_UINT32:
- empathy_account_settings_set_uint32 (priv->settings, param_name, value);
+ empathy_account_settings_set_uint32 (self->priv->settings, param_name,
+ value);
break;
case DBUS_TYPE_UINT64:
- empathy_account_settings_set_uint64 (priv->settings, param_name, value);
+ empathy_account_settings_set_uint64 (self->priv->settings, param_name,
+ value);
break;
default:
g_return_if_reached ();
@@ -399,7 +391,6 @@ account_widget_checkbutton_toggled_cb (GtkWidget *widget,
gboolean value;
gboolean default_value;
const gchar *param_name;
- EmpathyAccountWidgetPriv *priv = GET_PRIV (self);
value = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget));
param_name = g_object_get_data (G_OBJECT (widget), "param_name");
@@ -407,8 +398,8 @@ account_widget_checkbutton_toggled_cb (GtkWidget *widget,
/* FIXME: This is ugly! checkbox don't have a "not-set" value so we
* always unset the param and set the value if different from the
* default value. */
- empathy_account_settings_unset (priv->settings, param_name);
- default_value = empathy_account_settings_get_boolean (priv->settings,
+ empathy_account_settings_unset (self->priv->settings, param_name);
+ default_value = empathy_account_settings_get_boolean (self->priv->settings,
param_name);
if (default_value == value)
@@ -418,7 +409,8 @@ account_widget_checkbutton_toggled_cb (GtkWidget *widget,
else
{
DEBUG ("Setting %s to %d", param_name, value);
- empathy_account_settings_set_boolean (priv->settings, param_name, value);
+ empathy_account_settings_set_boolean (self->priv->settings, param_name,
+ value);
}
empathy_account_widget_changed (self);
@@ -428,12 +420,11 @@ static void
account_widget_jabber_ssl_toggled_cb (GtkWidget *checkbutton_ssl,
EmpathyAccountWidget *self)
{
- EmpathyAccountWidgetPriv *priv = GET_PRIV (self);
gboolean value;
gint32 port = 0;
value = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (checkbutton_ssl));
- port = empathy_account_settings_get_uint32 (priv->settings, "port");
+ port = empathy_account_settings_get_uint32 (self->priv->settings, "port");
if (value)
{
@@ -446,9 +437,10 @@ account_widget_jabber_ssl_toggled_cb (GtkWidget *checkbutton_ssl,
port = 5222;
}
- gtk_spin_button_set_value (GTK_SPIN_BUTTON (priv->spinbutton_port), port);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (self->priv->spinbutton_port),
+ port);
- priv->contains_pending_changes = TRUE;
+ self->priv->contains_pending_changes = TRUE;
}
static void
@@ -461,7 +453,6 @@ account_widget_combobox_changed_cb (GtkWidget *widget,
const GValue *v;
const gchar *default_value = NULL;
const gchar *param_name;
- EmpathyAccountWidgetPriv *priv = GET_PRIV (self);
if (!gtk_combo_box_get_active_iter (GTK_COMBO_BOX (widget), &iter))
return;
@@ -472,19 +463,20 @@ account_widget_combobox_changed_cb (GtkWidget *widget,
param_name = g_object_get_data (G_OBJECT (widget), "param_name");
- v = empathy_account_settings_get_default (priv->settings, param_name);
+ v = empathy_account_settings_get_default (self->priv->settings, param_name);
if (v != NULL)
default_value = g_value_get_string (v);
if (!tp_strdiff (value, default_value))
{
DEBUG ("Unset %s and restore to %s", param_name, default_value);
- empathy_account_settings_unset (priv->settings, param_name);
+ empathy_account_settings_unset (self->priv->settings, param_name);
}
else
{
DEBUG ("Setting %s to %s", param_name, value);
- empathy_account_settings_set_string (priv->settings, param_name, value);
+ empathy_account_settings_set_string (self->priv->settings, param_name,
+ value);
}
empathy_account_widget_changed (self);
@@ -496,13 +488,12 @@ clear_icon_released_cb (GtkEntry *entry,
GdkEvent *event,
EmpathyAccountWidget *self)
{
- EmpathyAccountWidgetPriv *priv = GET_PRIV (self);
const gchar *param_name;
param_name = g_object_get_data (G_OBJECT (entry), "param_name");
DEBUG ("Unset %s", param_name);
- empathy_account_settings_unset (priv->settings, param_name);
+ empathy_account_settings_unset (self->priv->settings, param_name);
gtk_entry_set_text (entry, "");
empathy_account_widget_changed (self);
@@ -524,9 +515,7 @@ static void
password_entry_activated_cb (GtkEntry *entry,
EmpathyAccountWidget *self)
{
- EmpathyAccountWidgetPriv *priv = GET_PRIV (self);
-
- if (gtk_widget_get_sensitive (priv->apply_button))
+ if (gtk_widget_get_sensitive (self->priv->apply_button))
account_widget_apply_and_log_in (self);
}
@@ -534,9 +523,7 @@ static void
account_entry_activated_cb (GtkEntry *entry,
EmpathyAccountWidget *self)
{
- EmpathyAccountWidgetPriv *priv = GET_PRIV (self);
-
- if (gtk_widget_get_sensitive (priv->apply_button))
+ if (gtk_widget_get_sensitive (self->priv->apply_button))
account_widget_apply_and_log_in (self);
}
@@ -545,8 +532,6 @@ empathy_account_widget_setup_widget (EmpathyAccountWidget *self,
GtkWidget *widget,
const gchar *param_name)
{
- EmpathyAccountWidgetPriv *priv = GET_PRIV (self);
-
g_object_set_data_full (G_OBJECT (widget), "param_name",
g_strdup (param_name), g_free);
@@ -555,28 +540,28 @@ empathy_account_widget_setup_widget (EmpathyAccountWidget *self,
gint value = 0;
const gchar *signature;
- signature = empathy_account_settings_get_dbus_signature (priv->settings,
- param_name);
+ signature = empathy_account_settings_get_dbus_signature (
+ self->priv->settings, param_name);
g_return_if_fail (signature != NULL);
switch ((int)*signature)
{
case DBUS_TYPE_INT16:
case DBUS_TYPE_INT32:
- value = empathy_account_settings_get_int32 (priv->settings,
+ value = empathy_account_settings_get_int32 (self->priv->settings,
param_name);
break;
case DBUS_TYPE_INT64:
- value = empathy_account_settings_get_int64 (priv->settings,
+ value = empathy_account_settings_get_int64 (self->priv->settings,
param_name);
break;
case DBUS_TYPE_UINT16:
case DBUS_TYPE_UINT32:
- value = empathy_account_settings_get_uint32 (priv->settings,
+ value = empathy_account_settings_get_uint32 (self->priv->settings,
param_name);
break;
case DBUS_TYPE_UINT64:
- value = empathy_account_settings_get_uint64 (priv->settings,
+ value = empathy_account_settings_get_uint64 (self->priv->settings,
param_name);
break;
default:
@@ -593,13 +578,14 @@ empathy_account_widget_setup_widget (EmpathyAccountWidget *self,
{
const gchar *str = NULL;
- str = empathy_account_settings_get_string (priv->settings, param_name);
+ str = empathy_account_settings_get_string (self->priv->settings,
+ param_name);
gtk_entry_set_text (GTK_ENTRY (widget), str ? str : "");
if (!tp_strdiff (param_name, "account"))
- priv->param_account_widget = widget;
+ self->priv->param_account_widget = widget;
else if (!tp_strdiff (param_name, "password"))
- priv->param_password_widget = widget;
+ self->priv->param_password_widget = widget;
if (strstr (param_name, "password"))
{
@@ -633,7 +619,7 @@ empathy_account_widget_setup_widget (EmpathyAccountWidget *self,
{
gboolean value = FALSE;
- value = empathy_account_settings_get_boolean (priv->settings,
+ value = empathy_account_settings_get_boolean (self->priv->settings,
param_name);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), value);
@@ -650,7 +636,8 @@ empathy_account_widget_setup_widget (EmpathyAccountWidget *self,
GtkTreeIter iter;
gboolean valid;
- str = empathy_account_settings_get_string (priv->settings, param_name);
+ str = empathy_account_settings_get_string (self->priv->settings,
+ param_name);
model = gtk_combo_box_get_model (GTK_COMBO_BOX (widget));
valid = gtk_tree_model_get_iter_first (model, &iter);
@@ -682,7 +669,8 @@ empathy_account_widget_setup_widget (EmpathyAccountWidget *self,
}
gtk_widget_set_sensitive (widget,
- empathy_account_settings_param_is_supported (priv->settings, param_name));
+ empathy_account_settings_param_is_supported (self->priv->settings,
+ param_name));
}
static GHashTable *
@@ -706,6 +694,8 @@ account_widget_generic_format_param_name (const gchar *param_name)
gchar *p;
static GHashTable *translated_params = NULL;
+ g_return_val_if_fail (param_name != NULL, NULL);
+
if (G_UNLIKELY (translated_params == NULL))
translated_params = build_translated_params ();
@@ -739,10 +729,9 @@ accounts_widget_generic_setup (EmpathyAccountWidget *self,
GtkWidget *grid_advanced_settings)
{
TpConnectionManagerParam *params, *param;
- EmpathyAccountWidgetPriv *priv = GET_PRIV (self);
guint row_common = 0, row_advanced = 0;
- params = empathy_account_settings_get_tp_params (priv->settings);
+ params = empathy_account_settings_get_tp_params (self->priv->settings);
for (param = params; param != NULL && param->name != NULL; param++)
{
@@ -756,7 +745,7 @@ accounts_widget_generic_setup (EmpathyAccountWidget *self,
grid_settings = grid_common_settings;
row = row_common++;
}
- else if (priv->simple)
+ else if (self->priv->simple)
{
return;
}
@@ -890,6 +879,7 @@ account_widget_cancel_clicked_cb (GtkWidget *button,
EmpathyAccountWidget *self)
{
g_signal_emit (self, signals[CANCELLED], 0);
+ g_signal_emit (self, signals[CLOSE], 0, GTK_RESPONSE_CANCEL);
}
static void
@@ -899,8 +889,7 @@ account_widget_account_enabled_cb (GObject *source_object,
{
GError *error = NULL;
TpAccount *account = TP_ACCOUNT (source_object);
- EmpathyAccountWidget *widget = EMPATHY_ACCOUNT_WIDGET (user_data);
- EmpathyAccountWidgetPriv *priv = GET_PRIV (widget);
+ EmpathyAccountWidget *self = EMPATHY_ACCOUNT_WIDGET (user_data);
tp_account_set_enabled_finish (account, res, &error);
@@ -911,11 +900,11 @@ account_widget_account_enabled_cb (GObject *source_object,
}
else
{
- empathy_connect_new_account (account, priv->account_manager);
+ empathy_connect_new_account (account, self->priv->account_manager);
}
- /* unref widget - part of the workaround */
- g_object_unref (widget);
+ /* unref self - part of the workaround */
+ g_object_unref (self);
}
static void
@@ -926,8 +915,7 @@ account_widget_applied_cb (GObject *source_object,
GError *error = NULL;
TpAccount *account;
EmpathyAccountSettings *settings = EMPATHY_ACCOUNT_SETTINGS (source_object);
- EmpathyAccountWidget *widget = EMPATHY_ACCOUNT_WIDGET (user_data);
- EmpathyAccountWidgetPriv *priv = GET_PRIV (widget);
+ EmpathyAccountWidget *self = EMPATHY_ACCOUNT_WIDGET (user_data);
gboolean reconnect_required;
empathy_account_settings_apply_finish (settings, res, &reconnect_required,
@@ -940,20 +928,20 @@ account_widget_applied_cb (GObject *source_object,
return;
}
- account = empathy_account_settings_get_account (priv->settings);
+ account = empathy_account_settings_get_account (self->priv->settings);
if (account != NULL)
{
- if (priv->creating_account)
+ if (self->priv->creating_account)
{
/* By default, when an account is created, we enable it. */
- /* workaround to keep widget alive during async call */
- g_object_ref (widget);
+ /* workaround to keep self alive during async call */
+ g_object_ref (self);
tp_account_set_enabled_async (account, TRUE,
- account_widget_account_enabled_cb, widget);
- g_signal_emit (widget, signals[ACCOUNT_CREATED], 0, account);
+ account_widget_account_enabled_cb, self);
+ g_signal_emit (self, signals[ACCOUNT_CREATED], 0, account);
}
else
{
@@ -976,34 +964,37 @@ account_widget_applied_cb (GObject *source_object,
}
}
- if (!priv->destroyed)
- account_widget_set_control_buttons_sensitivity (widget, FALSE);
+ if (!self->priv->destroyed)
+ account_widget_set_control_buttons_sensitivity (self, FALSE);
+
+ self->priv->contains_pending_changes = FALSE;
- priv->contains_pending_changes = FALSE;
+ /* 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 (widget);
+ g_object_unref (self);
}
static void
account_widget_apply_and_log_in (EmpathyAccountWidget *self)
{
- EmpathyAccountWidgetPriv *priv = GET_PRIV (self);
gboolean display_name_overridden;
- if (priv->radiobutton_reuse != NULL)
+ if (self->priv->radiobutton_reuse != NULL)
{
gboolean reuse = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (
- priv->radiobutton_reuse));
+ self->priv->radiobutton_reuse));
DEBUG ("Set register param: %d", !reuse);
- empathy_account_settings_set_boolean (priv->settings, "register", !reuse);
+ empathy_account_settings_set_boolean (self->priv->settings, "register",
+ !reuse);
}
- g_object_get (priv->settings,
+ g_object_get (self->priv->settings,
"display-name-overridden", &display_name_overridden, NULL);
- if (priv->creating_account || !display_name_overridden)
+ if (self->priv->creating_account || !display_name_overridden)
{
gchar *display_name;
@@ -1011,7 +1002,7 @@ account_widget_apply_and_log_in (EmpathyAccountWidget *self)
* manually override it. */
display_name = empathy_account_widget_get_default_display_name (self);
- empathy_account_settings_set_display_name_async (priv->settings,
+ empathy_account_settings_set_display_name_async (self->priv->settings,
display_name, NULL, NULL);
g_free (display_name);
@@ -1019,7 +1010,7 @@ account_widget_apply_and_log_in (EmpathyAccountWidget *self)
/* workaround to keep widget alive during async call */
g_object_ref (self);
- empathy_account_settings_apply_async (priv->settings,
+ empathy_account_settings_apply_async (self->priv->settings,
account_widget_applied_cb, self);
}
@@ -1053,9 +1044,8 @@ account_widget_settings_ready_cb (EmpathyAccountSettings *settings,
gpointer user_data)
{
EmpathyAccountWidget *self = user_data;
- EmpathyAccountWidgetPriv *priv = GET_PRIV (self);
- if (empathy_account_settings_is_ready (priv->settings))
+ if (empathy_account_settings_is_ready (self->priv->settings))
account_widget_setup_generic (self);
}
@@ -1063,205 +1053,34 @@ static void
account_widget_build_generic (EmpathyAccountWidget *self,
const char *filename)
{
- EmpathyAccountWidgetPriv *priv = GET_PRIV (self);
GtkWidget *expander_advanced;
self->ui_details->gui = empathy_builder_get_file (filename,
- "grid_common_settings", &priv->grid_common_settings,
+ "grid_common_settings", &self->priv->grid_common_settings,
"vbox_generic_settings", &self->ui_details->widget,
"expander_advanced_settings", &expander_advanced,
NULL);
- if (priv->simple)
+ if (self->priv->simple)
gtk_widget_hide (expander_advanced);
g_object_ref (self->ui_details->gui);
- if (empathy_account_settings_is_ready (priv->settings))
+ if (empathy_account_settings_is_ready (self->priv->settings))
account_widget_setup_generic (self);
else
- g_signal_connect (priv->settings, "notify::ready",
+ g_signal_connect (self->priv->settings, "notify::ready",
G_CALLBACK (account_widget_settings_ready_cb), self);
}
-static void
-account_widget_launch_external_clicked (GtkWidget *button,
- TpAccount *account)
-{
- GdkAppLaunchContext *context = NULL;
- GdkDisplay *display;
- GAppInfo *app_info;
- GError *error = NULL;
-
- app_info = g_object_get_data (G_OBJECT (button), "app-info");
-
- g_return_if_fail (G_IS_APP_INFO (app_info));
-
- display = gdk_display_get_default ();
- context = gdk_display_get_app_launch_context (display);
-
- if (!g_app_info_launch (app_info, NULL, (GAppLaunchContext *) context,
- &error))
- {
- g_critical ("Failed to bisho: %s", error->message);
- g_clear_error (&error);
- }
-}
-
-static void
-account_widget_launch_external_clicked_meego (GtkWidget *button,
- TpAccount *account)
-{
- if (!tp_strdiff (tp_account_get_storage_provider (account),
- "com.meego.libsocialweb"))
- {
- /* we know how to handle this external provider */
- GDesktopAppInfo *desktop_info;
- GError *error = NULL;
- GdkAppLaunchContext *context = NULL;
- GdkDisplay *display;
- gchar *cmd;
- GAppInfo *app_info;
-
- desktop_info = g_desktop_app_info_new ("gnome-control-center.desktop");
- if (desktop_info == NULL)
- {
- g_critical ("Could not locate 'gnome-control-center.desktop'");
- return;
- }
-
- /* glib doesn't have API to start a desktop file with args... (#637875) */
- cmd = g_strdup_printf ("%s bisho.desktop", g_app_info_get_commandline (
- (GAppInfo *) desktop_info));
-
- app_info = g_app_info_create_from_commandline (cmd, NULL, 0, &error);
- g_free (cmd);
-
- if (app_info == NULL)
- {
- DEBUG ("Failed to create app info: %s", error->message);
- g_error_free (error);
- goto out;
- }
-
- display = gdk_display_get_default ();
- context = gdk_display_get_app_launch_context (display);
-
- if (!g_app_info_launch (app_info, NULL, (GAppLaunchContext *) context,
- &error))
- {
- g_critical ("Failed to bisho: %s", error->message);
- g_clear_error (&error);
- }
-
-out:
- g_object_unref (desktop_info);
- tp_clear_object (&app_info);
- tp_clear_object (&context);
- }
-}
-
-static void
-account_widget_build_external (EmpathyAccountWidget *self,
- EmpathyAccountSettings *settings)
-{
- EmpathyAccountWidgetPriv *priv = GET_PRIV (self);
- TpAccount *account = empathy_account_settings_get_account (settings);
- GtkWidget *bar, *widget;
- gchar *str;
- const gchar *provider, *name = NULL;
- GDesktopAppInfo *desktop_info = NULL;
-
- self->ui_details->widget = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
- priv->grid_common_settings = gtk_grid_new ();
-
- provider = tp_account_get_storage_provider (account);
-
- if (!tp_strdiff (provider, "com.meego.libsocialweb"))
- {
- name = _("My Web Accounts");
- }
- else if (!tp_strdiff (provider, "org.gnome.OnlineAccounts"))
- {
- /* FIXME: we should publish the .desktop file in some general way */
- desktop_info = g_desktop_app_info_new (
- "gnome-online-accounts-panel.desktop");
-
- if (desktop_info == NULL)
- g_critical ("Could not locate 'gnome-online-accounts-panel.desktop'");
- else
- name = g_app_info_get_name (G_APP_INFO (desktop_info));
- }
-
- if (name != NULL)
- {
- str = g_strdup_printf (
- _("The account %s is edited via %s."),
- empathy_account_settings_get_display_name (settings), name);
- }
- else
- {
- str = g_strdup_printf (
- _("The account %s cannot be edited in Empathy."),
- empathy_account_settings_get_display_name (settings));
- }
-
- widget = gtk_label_new (str);
- gtk_label_set_line_wrap (GTK_LABEL (widget), TRUE);
- g_free (str);
-
- bar = gtk_info_bar_new ();
- gtk_info_bar_set_message_type (GTK_INFO_BAR (bar), GTK_MESSAGE_INFO);
- gtk_container_add (
- GTK_CONTAINER (gtk_info_bar_get_content_area (GTK_INFO_BAR (bar))),
- widget);
- gtk_container_set_border_width (GTK_CONTAINER (bar), 6);
-
- if (!tp_strdiff (provider, "com.meego.libsocialweb"))
- {
- /* we know how to handle this external provider */
- widget = gtk_info_bar_add_button (GTK_INFO_BAR (bar),
- _("Launch My Web Accounts"), RESPONSE_LAUNCH);
-
- g_signal_connect (widget, "clicked",
- G_CALLBACK (account_widget_launch_external_clicked_meego), account);
- }
- else if (desktop_info != NULL)
- {
- /* general handler */
- str = g_strdup_printf (_("Edit %s"), name);
-
- widget = gtk_info_bar_add_button (GTK_INFO_BAR (bar),
- str, RESPONSE_LAUNCH);
-
- g_object_set_data_full (G_OBJECT (widget), "app-info",
- g_object_ref (desktop_info), g_object_unref);
-
- g_signal_connect (widget, "clicked",
- G_CALLBACK (account_widget_launch_external_clicked), account);
-
- g_free (str);
- }
-
- gtk_box_pack_start (GTK_BOX (self->ui_details->widget), bar,
- FALSE, TRUE, 0);
- gtk_box_pack_start (GTK_BOX (self->ui_details->widget),
- priv->grid_common_settings, FALSE, TRUE, 0);
-
- gtk_widget_show_all (self->ui_details->widget);
-
- tp_clear_object (&desktop_info);
-}
-
static void
account_widget_build_salut (EmpathyAccountWidget *self,
const char *filename)
{
- EmpathyAccountWidgetPriv *priv = GET_PRIV (self);
GtkWidget *expander_advanced;
self->ui_details->gui = empathy_builder_get_file (filename,
- "grid_common_settings", &priv->grid_common_settings,
+ "grid_common_settings", &self->priv->grid_common_settings,
"vbox_salut_settings", &self->ui_details->widget,
"expander_advanced_settings", &expander_advanced,
NULL);
@@ -1275,7 +1094,7 @@ account_widget_build_salut (EmpathyAccountWidget *self,
"entry_jid", "jid",
NULL);
- if (priv->simple)
+ if (self->priv->simple)
gtk_widget_hide (expander_advanced);
self->ui_details->default_focus = g_strdup ("entry_first_name");
@@ -1285,22 +1104,20 @@ static void
account_widget_build_irc (EmpathyAccountWidget *self,
const char *filename)
{
- EmpathyAccountWidgetPriv *priv = GET_PRIV (self);
-
- empathy_account_settings_set_regex (priv->settings, "account",
+ empathy_account_settings_set_regex (self->priv->settings, "account",
ACCOUNT_REGEX_IRC);
- empathy_account_settings_set_regex (priv->settings, "username",
+ empathy_account_settings_set_regex (self->priv->settings, "username",
USERNAME_REGEX_IRC);
- if (priv->simple)
+ if (self->priv->simple)
{
- priv->irc_network_chooser = empathy_account_widget_irc_build_simple (self,
- filename);
+ self->priv->irc_network_chooser = empathy_account_widget_irc_build_simple
+ (self, filename);
}
else
{
- priv->irc_network_chooser = empathy_account_widget_irc_build (self,
- filename, &priv->grid_common_settings);
+ self->priv->irc_network_chooser = empathy_account_widget_irc_build (self,
+ filename, &self->priv->grid_common_settings);
}
}
@@ -1308,19 +1125,19 @@ static void
account_widget_build_sip (EmpathyAccountWidget *self,
const char *filename)
{
- EmpathyAccountWidgetPriv *priv = GET_PRIV (self);
empathy_account_widget_sip_build (self, filename,
- &priv->grid_common_settings);
+ &self->priv->grid_common_settings);
- if (priv->simple)
+ if (self->priv->simple)
{
- priv->remember_password_widget = GTK_WIDGET (gtk_builder_get_object (
- self->ui_details->gui, "remember_password_simple"));
+ self->priv->remember_password_widget = GTK_WIDGET (
+ gtk_builder_get_object (self->ui_details->gui,
+ "remember_password_simple"));
}
else
{
- priv->remember_password_widget = GTK_WIDGET (gtk_builder_get_object (
- self->ui_details->gui, "remember_password"));
+ self->priv->remember_password_widget = GTK_WIDGET (
+ gtk_builder_get_object (self->ui_details->gui, "remember_password"));
}
}
@@ -1328,12 +1145,10 @@ static void
account_widget_build_msn (EmpathyAccountWidget *self,
const char *filename)
{
- EmpathyAccountWidgetPriv *priv = GET_PRIV (self);
-
- empathy_account_settings_set_regex (priv->settings, "account",
+ empathy_account_settings_set_regex (self->priv->settings, "account",
ACCOUNT_REGEX_MSN);
- if (priv->simple)
+ if (self->priv->simple)
{
self->ui_details->gui = empathy_builder_get_file (filename,
"vbox_msn_simple", &self->ui_details->widget,
@@ -1346,13 +1161,14 @@ account_widget_build_msn (EmpathyAccountWidget *self,
self->ui_details->default_focus = g_strdup ("entry_id_simple");
- priv->remember_password_widget = GTK_WIDGET (gtk_builder_get_object (
- self->ui_details->gui, "remember_password_simple"));
+ self->priv->remember_password_widget = GTK_WIDGET (
+ gtk_builder_get_object (self->ui_details->gui,
+ "remember_password_simple"));
}
else
{
self->ui_details->gui = empathy_builder_get_file (filename,
- "grid_common_msn_settings", &priv->grid_common_settings,
+ "grid_common_msn_settings", &self->priv->grid_common_settings,
"vbox_msn_settings", &self->ui_details->widget,
NULL);
@@ -1365,8 +1181,8 @@ account_widget_build_msn (EmpathyAccountWidget *self,
self->ui_details->default_focus = g_strdup ("entry_id");
- priv->remember_password_widget = GTK_WIDGET (gtk_builder_get_object (
- self->ui_details->gui, "remember_password"));
+ self->priv->remember_password_widget = GTK_WIDGET (
+ gtk_builder_get_object (self->ui_details->gui, "remember_password"));
}
}
@@ -1374,24 +1190,25 @@ static void
suffix_id_widget_changed_cb (GtkWidget *entry,
EmpathyAccountWidget *self)
{
- EmpathyAccountWidgetPriv *priv = GET_PRIV (self);
const gchar *account;
- g_assert (priv->jid_suffix != NULL);
+ g_assert (self->priv->jid_suffix != NULL);
account_widget_entry_changed_common (self, GTK_ENTRY (entry), FALSE);
- account = empathy_account_settings_get_string (priv->settings, "account");
+ account = empathy_account_settings_get_string (self->priv->settings,
+ "account");
if (!EMP_STR_EMPTY (account) &&
- !g_str_has_suffix (account, priv->jid_suffix))
+ !g_str_has_suffix (account, self->priv->jid_suffix))
{
gchar *tmp;
- tmp = g_strdup_printf ("%s%s", account, priv->jid_suffix);
+ tmp = g_strdup_printf ("%s%s", account, self->priv->jid_suffix);
DEBUG ("Change account from '%s' to '%s'", account, tmp);
- empathy_account_settings_set_string (priv->settings, "account", tmp);
+ empathy_account_settings_set_string (self->priv->settings, "account",
+ tmp);
g_free (tmp);
}
@@ -1402,14 +1219,12 @@ static gchar *
remove_jid_suffix (EmpathyAccountWidget *self,
const gchar *str)
{
- EmpathyAccountWidgetPriv *priv = GET_PRIV (self);
-
- g_assert (priv->jid_suffix != NULL);
+ g_assert (self->priv->jid_suffix != NULL);
- if (!g_str_has_suffix (str, priv->jid_suffix))
+ if (!g_str_has_suffix (str, self->priv->jid_suffix))
return g_strdup (str);
- return g_strndup (str, strlen (str) - strlen (priv->jid_suffix));
+ return g_strndup (str, strlen (str) - strlen (self->priv->jid_suffix));
}
static void
@@ -1417,16 +1232,15 @@ setup_id_widget_with_suffix (EmpathyAccountWidget *self,
GtkWidget *widget,
const gchar *suffix)
{
- EmpathyAccountWidgetPriv *priv = GET_PRIV (self);
const gchar *str = NULL;
g_object_set_data_full (G_OBJECT (widget), "param_name",
g_strdup ("account"), g_free);
- g_assert (priv->jid_suffix == NULL);
- priv->jid_suffix = g_strdup (suffix);
+ g_assert (self->priv->jid_suffix == NULL);
+ self->priv->jid_suffix = g_strdup (suffix);
- str = empathy_account_settings_get_string (priv->settings, "account");
+ str = empathy_account_settings_get_string (self->priv->settings, "account");
if (str != NULL)
{
gchar *tmp;
@@ -1436,7 +1250,7 @@ setup_id_widget_with_suffix (EmpathyAccountWidget *self,
g_free (tmp);
}
- priv->param_account_widget = widget;
+ self->priv->param_account_widget = widget;
g_signal_connect (widget, "changed",
G_CALLBACK (suffix_id_widget_changed_cb), self);
@@ -1445,11 +1259,10 @@ setup_id_widget_with_suffix (EmpathyAccountWidget *self,
static Service
account_widget_get_service (EmpathyAccountWidget *self)
{
- EmpathyAccountWidgetPriv *priv = GET_PRIV (self);
const gchar *icon_name, *service;
- icon_name = empathy_account_settings_get_icon_name (priv->settings);
- service = empathy_account_settings_get_service (priv->settings);
+ icon_name = empathy_account_settings_get_icon_name (self->priv->settings);
+ service = empathy_account_settings_get_service (self->priv->settings);
/* Previous versions of Empathy didn't set the Service property on Facebook
* and gtalk accounts, so we check using the icon name as well. */
@@ -1468,7 +1281,6 @@ static void
account_widget_build_jabber (EmpathyAccountWidget *self,
const char *filename)
{
- EmpathyAccountWidgetPriv *priv = GET_PRIV (self);
GtkWidget *spinbutton_port;
GtkWidget *checkbutton_ssl;
GtkWidget *label_id, *label_password;
@@ -1481,10 +1293,10 @@ account_widget_build_jabber (EmpathyAccountWidget *self,
service = account_widget_get_service (self);
- empathy_account_settings_set_regex (priv->settings, "account",
+ empathy_account_settings_set_regex (self->priv->settings, "account",
ACCOUNT_REGEX_JABBER);
- if (priv->simple && service == NO_SERVICE)
+ if (self->priv->simple && service == NO_SERVICE)
{
/* Simple widget for XMPP */
self->ui_details->gui = empathy_builder_get_file (filename,
@@ -1495,7 +1307,8 @@ account_widget_build_jabber (EmpathyAccountWidget *self,
"label_password_create", &label_password_create,
NULL);
- if (empathy_account_settings_get_boolean (priv->settings, "register"))
+ if (empathy_account_settings_get_boolean (self->priv->settings,
+ "register"))
{
gtk_widget_hide (label_id);
gtk_widget_hide (label_password);
@@ -1510,10 +1323,11 @@ account_widget_build_jabber (EmpathyAccountWidget *self,
self->ui_details->default_focus = g_strdup ("entry_id_simple");
- priv->remember_password_widget = GTK_WIDGET (gtk_builder_get_object (
- self->ui_details->gui, "remember_password_simple"));
+ self->priv->remember_password_widget = GTK_WIDGET (
+ gtk_builder_get_object (self->ui_details->gui,
+ "remember_password_simple"));
}
- else if (priv->simple && service == GTALK_SERVICE)
+ else if (self->priv->simple && service == GTALK_SERVICE)
{
/* Simple widget for Google Talk */
self->ui_details->gui = empathy_builder_get_file (filename,
@@ -1527,10 +1341,11 @@ account_widget_build_jabber (EmpathyAccountWidget *self,
self->ui_details->default_focus = g_strdup ("entry_id_g_simple");
- priv->remember_password_widget = GTK_WIDGET (gtk_builder_get_object (
- self->ui_details->gui, "remember_password_g_simple"));
+ self->priv->remember_password_widget = GTK_WIDGET (
+ gtk_builder_get_object (self->ui_details->gui,
+ "remember_password_g_simple"));
}
- else if (priv->simple && service == FACEBOOK_SERVICE)
+ else if (self->priv->simple && service == FACEBOOK_SERVICE)
{
/* Simple widget for Facebook */
self->ui_details->gui = empathy_builder_get_file (filename,
@@ -1546,8 +1361,9 @@ account_widget_build_jabber (EmpathyAccountWidget *self,
self->ui_details->default_focus = g_strdup ("entry_id_fb_simple");
- priv->remember_password_widget = GTK_WIDGET (gtk_builder_get_object (
- self->ui_details->gui, "remember_password_fb_simple"));
+ self->priv->remember_password_widget = GTK_WIDGET (
+ gtk_builder_get_object (self->ui_details->gui,
+ "remember_password_fb_simple"));
}
else
{
@@ -1555,7 +1371,7 @@ account_widget_build_jabber (EmpathyAccountWidget *self,
/* Full widget for XMPP, Google Talk and Facebook*/
self->ui_details->gui = empathy_builder_get_file (filename,
- "grid_common_settings", &priv->grid_common_settings,
+ "grid_common_settings", &self->priv->grid_common_settings,
"vbox_jabber_settings", &self->ui_details->widget,
"spinbutton_port", &spinbutton_port,
"checkbutton_ssl", &checkbutton_ssl,
@@ -1591,10 +1407,10 @@ account_widget_build_jabber (EmpathyAccountWidget *self,
}
self->ui_details->default_focus = g_strdup ("entry_id");
- priv->spinbutton_port = spinbutton_port;
+ self->priv->spinbutton_port = spinbutton_port;
- priv->remember_password_widget = GTK_WIDGET (gtk_builder_get_object (
- self->ui_details->gui, "remember_password"));
+ self->priv->remember_password_widget = GTK_WIDGET (
+ gtk_builder_get_object (self->ui_details->gui, "remember_password"));
g_signal_connect (checkbutton_ssl, "toggled",
G_CALLBACK (account_widget_jabber_ssl_toggled_cb),
@@ -1624,13 +1440,12 @@ static void
account_widget_build_icq (EmpathyAccountWidget *self,
const char *filename)
{
- EmpathyAccountWidgetPriv *priv = GET_PRIV (self);
GtkWidget *spinbutton_port;
- empathy_account_settings_set_regex (priv->settings, "account",
+ empathy_account_settings_set_regex (self->priv->settings, "account",
ACCOUNT_REGEX_ICQ);
- if (priv->simple)
+ if (self->priv->simple)
{
self->ui_details->gui = empathy_builder_get_file (filename,
"vbox_icq_simple", &self->ui_details->widget,
@@ -1643,13 +1458,14 @@ account_widget_build_icq (EmpathyAccountWidget *self,
self->ui_details->default_focus = g_strdup ("entry_uin_simple");
- priv->remember_password_widget = GTK_WIDGET (gtk_builder_get_object (
- self->ui_details->gui, "remember_password_simple"));
+ self->priv->remember_password_widget = GTK_WIDGET (
+ gtk_builder_get_object (self->ui_details->gui,
+ "remember_password_simple"));
}
else
{
self->ui_details->gui = empathy_builder_get_file (filename,
- "grid_common_settings", &priv->grid_common_settings,
+ "grid_common_settings", &self->priv->grid_common_settings,
"vbox_icq_settings", &self->ui_details->widget,
"spinbutton_port", &spinbutton_port,
NULL);
@@ -1664,8 +1480,8 @@ account_widget_build_icq (EmpathyAccountWidget *self,
self->ui_details->default_focus = g_strdup ("entry_uin");
- priv->remember_password_widget = GTK_WIDGET (gtk_builder_get_object (
- self->ui_details->gui, "remember_password"));
+ self->priv->remember_password_widget = GTK_WIDGET (
+ gtk_builder_get_object (self->ui_details->gui, "remember_password"));
}
}
@@ -1673,10 +1489,9 @@ static void
account_widget_build_aim (EmpathyAccountWidget *self,
const char *filename)
{
- EmpathyAccountWidgetPriv *priv = GET_PRIV (self);
GtkWidget *spinbutton_port;
- if (priv->simple)
+ if (self->priv->simple)
{
self->ui_details->gui = empathy_builder_get_file (filename,
"vbox_aim_simple", &self->ui_details->widget,
@@ -1689,13 +1504,14 @@ account_widget_build_aim (EmpathyAccountWidget *self,
self->ui_details->default_focus = g_strdup ("entry_screenname_simple");
- priv->remember_password_widget = GTK_WIDGET (gtk_builder_get_object (
- self->ui_details->gui, "remember_password_simple"));
+ self->priv->remember_password_widget = GTK_WIDGET (
+ gtk_builder_get_object (self->ui_details->gui,
+ "remember_password_simple"));
}
else
{
self->ui_details->gui = empathy_builder_get_file (filename,
- "grid_common_settings", &priv->grid_common_settings,
+ "grid_common_settings", &self->priv->grid_common_settings,
"vbox_aim_settings", &self->ui_details->widget,
"spinbutton_port", &spinbutton_port,
NULL);
@@ -1709,8 +1525,8 @@ account_widget_build_aim (EmpathyAccountWidget *self,
self->ui_details->default_focus = g_strdup ("entry_screenname");
- priv->remember_password_widget = GTK_WIDGET (gtk_builder_get_object (
- self->ui_details->gui, "remember_password"));
+ self->priv->remember_password_widget = GTK_WIDGET (
+ gtk_builder_get_object (self->ui_details->gui, "remember_password"));
}
}
@@ -1718,12 +1534,10 @@ static void
account_widget_build_yahoo (EmpathyAccountWidget *self,
const char *filename)
{
- EmpathyAccountWidgetPriv *priv = GET_PRIV (self);
-
- empathy_account_settings_set_regex (priv->settings, "account",
+ empathy_account_settings_set_regex (self->priv->settings, "account",
ACCOUNT_REGEX_YAHOO);
- if (priv->simple)
+ if (self->priv->simple)
{
self->ui_details->gui = empathy_builder_get_file (filename,
"vbox_yahoo_simple", &self->ui_details->widget,
@@ -1736,13 +1550,14 @@ account_widget_build_yahoo (EmpathyAccountWidget *self,
self->ui_details->default_focus = g_strdup ("entry_id_simple");
- priv->remember_password_widget = GTK_WIDGET (gtk_builder_get_object (
- self->ui_details->gui, "remember_password_simple"));
+ self->priv->remember_password_widget = GTK_WIDGET (
+ gtk_builder_get_object (self->ui_details->gui,
+ "remember_password_simple"));
}
else
{
self->ui_details->gui = empathy_builder_get_file (filename,
- "grid_common_settings", &priv->grid_common_settings,
+ "grid_common_settings", &self->priv->grid_common_settings,
"vbox_yahoo_settings", &self->ui_details->widget,
NULL);
@@ -1757,8 +1572,8 @@ account_widget_build_yahoo (EmpathyAccountWidget *self,
self->ui_details->default_focus = g_strdup ("entry_id");
- priv->remember_password_widget = GTK_WIDGET (gtk_builder_get_object (
- self->ui_details->gui, "remember_password"));
+ self->priv->remember_password_widget = GTK_WIDGET (
+ gtk_builder_get_object (self->ui_details->gui, "remember_password"));
}
}
@@ -1766,9 +1581,7 @@ static void
account_widget_build_groupwise (EmpathyAccountWidget *self,
const char *filename)
{
- EmpathyAccountWidgetPriv *priv = GET_PRIV (self);
-
- if (priv->simple)
+ if (self->priv->simple)
{
self->ui_details->gui = empathy_builder_get_file (filename,
"vbox_groupwise_simple", &self->ui_details->widget,
@@ -1781,13 +1594,14 @@ account_widget_build_groupwise (EmpathyAccountWidget *self,
self->ui_details->default_focus = g_strdup ("entry_id_simple");
- priv->remember_password_widget = GTK_WIDGET (gtk_builder_get_object (
- self->ui_details->gui, "remember_password_simple"));
+ self->priv->remember_password_widget = GTK_WIDGET (
+ gtk_builder_get_object (self->ui_details->gui,
+ "remember_password_simple"));
}
else
{
self->ui_details->gui = empathy_builder_get_file (filename,
- "grid_common_groupwise_settings", &priv->grid_common_settings,
+ "grid_common_groupwise_settings", &self->priv->grid_common_settings,
"vbox_groupwise_settings", &self->ui_details->widget,
NULL);
@@ -1800,8 +1614,8 @@ account_widget_build_groupwise (EmpathyAccountWidget *self,
self->ui_details->default_focus = g_strdup ("entry_id");
- priv->remember_password_widget = GTK_WIDGET (gtk_builder_get_object (
- self->ui_details->gui, "remember_password"));
+ self->priv->remember_password_widget = GTK_WIDGET (
+ gtk_builder_get_object (self->ui_details->gui, "remember_password"));
}
}
@@ -1809,9 +1623,8 @@ static void
account_widget_destroy_cb (GtkWidget *widget,
EmpathyAccountWidget *self)
{
- EmpathyAccountWidgetPriv *priv = GET_PRIV (self);
/* set the destroyed flag - workaround */
- priv->destroyed = TRUE;
+ self->priv->destroyed = TRUE;
g_object_unref (self);
}
@@ -1820,11 +1633,9 @@ void
empathy_account_widget_set_other_accounts_exist (EmpathyAccountWidget *self,
gboolean others_exist)
{
- EmpathyAccountWidgetPriv *priv = GET_PRIV (self);
+ self->priv->other_accounts_exist = others_exist;
- priv->other_accounts_exist = others_exist;
-
- if (priv->creating_account)
+ if (self->priv->creating_account)
account_widget_handle_control_buttons_sensitivity (self);
}
@@ -1834,18 +1645,18 @@ do_set_property (GObject *object,
const GValue *value,
GParamSpec *pspec)
{
- EmpathyAccountWidgetPriv *priv = GET_PRIV (object);
+ EmpathyAccountWidget *self = EMPATHY_ACCOUNT_WIDGET (object);
switch (prop_id)
{
case PROP_SETTINGS:
- priv->settings = g_value_dup_object (value);
+ self->priv->settings = g_value_dup_object (value);
break;
case PROP_SIMPLE:
- priv->simple = g_value_get_boolean (value);
+ self->priv->simple = g_value_get_boolean (value);
break;
case PROP_CREATING_ACCOUNT:
- priv->creating_account = g_value_get_boolean (value);
+ self->priv->creating_account = g_value_get_boolean (value);
break;
case PROP_OTHER_ACCOUNTS_EXIST:
empathy_account_widget_set_other_accounts_exist (
@@ -1862,25 +1673,25 @@ do_get_property (GObject *object,
GValue *value,
GParamSpec *pspec)
{
- EmpathyAccountWidgetPriv *priv = GET_PRIV (object);
+ EmpathyAccountWidget *self = EMPATHY_ACCOUNT_WIDGET (object);
switch (prop_id)
{
case PROP_PROTOCOL:
g_value_set_string (value,
- empathy_account_settings_get_protocol (priv->settings));
+ empathy_account_settings_get_protocol (self->priv->settings));
break;
case PROP_SETTINGS:
- g_value_set_object (value, priv->settings);
+ g_value_set_object (value, self->priv->settings);
break;
case PROP_SIMPLE:
- g_value_set_boolean (value, priv->simple);
+ g_value_set_boolean (value, self->priv->simple);
break;
case PROP_CREATING_ACCOUNT:
- g_value_set_boolean (value, priv->creating_account);
+ g_value_set_boolean (value, self->priv->creating_account);
break;
case PROP_OTHER_ACCOUNTS_EXIST:
- g_value_set_boolean (value, priv->other_accounts_exist);
+ g_value_set_boolean (value, self->priv->other_accounts_exist);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -1890,18 +1701,17 @@ do_get_property (GObject *object,
static void
set_apply_button (EmpathyAccountWidget *self)
{
- EmpathyAccountWidgetPriv *priv = GET_PRIV (self);
GtkWidget *image;
/* We can't use the stock button as its accelerator ('A') clashes with the
* Add button. */
- gtk_button_set_use_stock (GTK_BUTTON (priv->apply_button), FALSE);
+ gtk_button_set_use_stock (GTK_BUTTON (self->priv->apply_button), FALSE);
- gtk_button_set_label (GTK_BUTTON (priv->apply_button), _("A_pply"));
- gtk_button_set_use_underline (GTK_BUTTON (priv->apply_button), TRUE);
+ gtk_button_set_label (GTK_BUTTON (self->priv->apply_button), _("A_pply"));
+ gtk_button_set_use_underline (GTK_BUTTON (self->priv->apply_button), TRUE);
image = gtk_image_new_from_stock (GTK_STOCK_APPLY, GTK_ICON_SIZE_BUTTON);
- gtk_button_set_image (GTK_BUTTON (priv->apply_button), image);
+ gtk_button_set_image (GTK_BUTTON (self->priv->apply_button), image);
}
static void
@@ -1911,27 +1721,26 @@ presence_changed_cb (TpAccountManager *manager,
const gchar *message,
EmpathyAccountWidget *self)
{
- EmpathyAccountWidgetPriv *priv = GET_PRIV (self);
-
- if (priv->destroyed)
+ if (self->priv->destroyed)
return;
- if (priv->apply_button == NULL)
+ if (self->priv->apply_button == NULL)
/* This button doesn't exist in 'simple' mode */
return;
if (state > TP_CONNECTION_PRESENCE_TYPE_OFFLINE &&
- priv->creating_account)
+ self->priv->creating_account)
{
/* We are online and creating a new account, display a Login button */
GtkWidget *image;
- gtk_button_set_use_stock (GTK_BUTTON (priv->apply_button), FALSE);
- gtk_button_set_label (GTK_BUTTON (priv->apply_button), _("L_og in"));
+ gtk_button_set_use_stock (GTK_BUTTON (self->priv->apply_button), FALSE);
+ gtk_button_set_label (GTK_BUTTON (self->priv->apply_button),
+ _("L_og in"));
image = gtk_image_new_from_stock (GTK_STOCK_CONNECT,
GTK_ICON_SIZE_BUTTON);
- gtk_button_set_image (GTK_BUTTON (priv->apply_button), image);
+ gtk_button_set_image (GTK_BUTTON (self->priv->apply_button), image);
}
else
{
@@ -1979,15 +1788,14 @@ static void
add_register_buttons (EmpathyAccountWidget *self,
TpAccount *account)
{
- EmpathyAccountWidgetPriv *priv = GET_PRIV (self);
const TpConnectionManagerProtocol *protocol;
GtkWidget *radiobutton_register;
GtkWidget *vbox = self->ui_details->widget;
- if (!priv->creating_account)
+ if (!self->priv->creating_account)
return;
- protocol = empathy_account_settings_get_tp_protocol (priv->settings);
+ protocol = empathy_account_settings_get_tp_protocol (self->priv->settings);
if (protocol == NULL)
return;
@@ -1997,20 +1805,22 @@ add_register_buttons (EmpathyAccountWidget *self,
if (account_widget_get_service (self) != NO_SERVICE)
return;
- if (priv->simple)
+ if (self->priv->simple)
return;
- priv->radiobutton_reuse = gtk_radio_button_new_with_label (NULL,
+ self->priv->radiobutton_reuse = gtk_radio_button_new_with_label (NULL,
_("This account already exists on the server"));
radiobutton_register = gtk_radio_button_new_with_label (
- gtk_radio_button_get_group (GTK_RADIO_BUTTON (priv->radiobutton_reuse)),
+ gtk_radio_button_get_group (
+ GTK_RADIO_BUTTON (self->priv->radiobutton_reuse)),
_("Create a new account on the server"));
- gtk_box_pack_start (GTK_BOX (vbox), priv->radiobutton_reuse, FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (vbox), 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), priv->radiobutton_reuse, 0);
+ gtk_box_reorder_child (GTK_BOX (vbox), self->priv->radiobutton_reuse, 0);
gtk_box_reorder_child (GTK_BOX (vbox), radiobutton_register, 1);
- gtk_widget_show (priv->radiobutton_reuse);
+ gtk_widget_show (self->priv->radiobutton_reuse);
gtk_widget_show (radiobutton_register);
}
#endif /* HAVE_MEEGO */
@@ -2019,17 +1829,15 @@ static void
remember_password_toggled_cb (GtkToggleButton *button,
EmpathyAccountWidget *self)
{
- EmpathyAccountWidgetPriv *priv = GET_PRIV (self);
-
if (gtk_toggle_button_get_active (button))
{
- gtk_widget_set_sensitive (priv->param_password_widget, TRUE);
+ gtk_widget_set_sensitive (self->priv->param_password_widget, TRUE);
}
else
{
- gtk_widget_set_sensitive (priv->param_password_widget, FALSE);
- gtk_entry_set_text (GTK_ENTRY (priv->param_password_widget), "");
- empathy_account_settings_unset (priv->settings, "password");
+ gtk_widget_set_sensitive (self->priv->param_password_widget, FALSE);
+ gtk_entry_set_text (GTK_ENTRY (self->priv->param_password_widget), "");
+ empathy_account_settings_unset (self->priv->settings, "password");
}
}
@@ -2038,22 +1846,22 @@ account_settings_password_retrieved_cb (GObject *object,
gpointer user_data)
{
EmpathyAccountWidget *self = user_data;
- EmpathyAccountWidgetPriv *priv = GET_PRIV (self);
const gchar *password = empathy_account_settings_get_string (
- priv->settings, "password");
+ self->priv->settings, "password");
if (password != NULL)
{
/* We have to do this so that when we call gtk_entry_set_text,
* the ::changed callback doesn't think the user made the
* change. */
- priv->automatic_change = TRUE;
- gtk_entry_set_text (GTK_ENTRY (priv->param_password_widget), password);
- priv->automatic_change = FALSE;
+ self->priv->automatic_change = TRUE;
+ gtk_entry_set_text (GTK_ENTRY (self->priv->param_password_widget),
+ password);
+ self->priv->automatic_change = FALSE;
}
gtk_toggle_button_set_active (
- GTK_TOGGLE_BUTTON (priv->remember_password_widget),
+ GTK_TOGGLE_BUTTON (self->priv->remember_password_widget),
!EMP_STR_EMPTY (password));
}
@@ -2061,9 +1869,7 @@ static void
do_constructed (GObject *obj)
{
EmpathyAccountWidget *self = EMPATHY_ACCOUNT_WIDGET (obj);
- EmpathyAccountWidgetPriv *priv = GET_PRIV (self);
TpAccount *account;
- TpStorageRestrictionFlags storage_restrictions;
const gchar *display_name, *default_display_name;
guint i = 0;
struct {
@@ -2083,51 +1889,35 @@ do_constructed (GObject *obj)
WIDGET (idle, irc),
WIDGET (sofiasip, sip),
};
+ const gchar *protocol, *cm_name;
- account = empathy_account_settings_get_account (priv->settings);
-
- if (account != NULL)
- storage_restrictions = tp_account_get_storage_restrictions (account);
- else
- storage_restrictions = 0;
+ account = empathy_account_settings_get_account (self->priv->settings);
- /* Empathy can only edit accounts without the Cannot_Set_Parameters flag */
- if (storage_restrictions & TP_STORAGE_RESTRICTION_FLAG_CANNOT_SET_PARAMETERS)
- {
- DEBUG ("Account is provided by an external storage provider");
+ cm_name = empathy_account_settings_get_cm (self->priv->settings);
+ protocol = empathy_account_settings_get_protocol (self->priv->settings);
- account_widget_build_external (self, priv->settings);
- }
- else
+ for (i = 0 ; i < G_N_ELEMENTS (widgets); i++)
{
- const gchar *protocol, *cm_name;
-
- cm_name = empathy_account_settings_get_cm (priv->settings);
- protocol = empathy_account_settings_get_protocol (priv->settings);
-
- for (i = 0 ; i < G_N_ELEMENTS (widgets); i++)
+ if (!tp_strdiff (widgets[i].cm_name, cm_name) &&
+ !tp_strdiff (widgets[i].protocol, protocol))
{
- if (!tp_strdiff (widgets[i].cm_name, cm_name) &&
- !tp_strdiff (widgets[i].protocol, protocol))
- {
- gchar *filename;
+ gchar *filename;
- filename = empathy_file_lookup (widgets[i].file,
- "libempathy-gtk");
- widgets[i].func (self, filename);
- g_free (filename);
+ filename = empathy_file_lookup (widgets[i].file,
+ "libempathy-gtk");
+ widgets[i].func (self, filename);
+ g_free (filename);
- break;
- }
+ break;
}
+ }
- if (i == G_N_ELEMENTS (widgets))
- {
- gchar *filename = empathy_file_lookup (
- "empathy-account-widget-generic.ui", "libempathy-gtk");
- account_widget_build_generic (self, filename);
- g_free (filename);
- }
+ if (i == G_N_ELEMENTS (widgets))
+ {
+ gchar *filename = empathy_file_lookup (
+ "empathy-account-widget-generic.ui", "libempathy-gtk");
+ account_widget_build_generic (self, filename);
+ g_free (filename);
}
/* handle default focus */
@@ -2143,101 +1933,89 @@ do_constructed (GObject *obj)
}
/* remember password */
- if (priv->param_password_widget != NULL
- && priv->remember_password_widget != NULL
- && empathy_account_settings_supports_sasl (priv->settings))
+ if (self->priv->param_password_widget != NULL
+ && self->priv->remember_password_widget != NULL
+ && empathy_account_settings_supports_sasl (self->priv->settings))
{
- if (priv->simple)
+ if (self->priv->simple)
{
gtk_toggle_button_set_active (
- GTK_TOGGLE_BUTTON (priv->remember_password_widget), TRUE);
+ GTK_TOGGLE_BUTTON (self->priv->remember_password_widget), TRUE);
}
else
{
gtk_toggle_button_set_active (
- GTK_TOGGLE_BUTTON (priv->remember_password_widget),
+ GTK_TOGGLE_BUTTON (self->priv->remember_password_widget),
!EMP_STR_EMPTY (empathy_account_settings_get_string (
- priv->settings, "password")));
+ self->priv->settings, "password")));
/* The password might not have been retrieved from the
* keyring yet. We should update the remember password
* toggle button and the password entry when/if it is. */
- tp_g_signal_connect_object (priv->settings, "password-retrieved",
+ tp_g_signal_connect_object (self->priv->settings,
+ "password-retrieved",
G_CALLBACK (account_settings_password_retrieved_cb), self, 0);
}
- g_signal_connect (priv->remember_password_widget, "toggled",
+ g_signal_connect (self->priv->remember_password_widget, "toggled",
G_CALLBACK (remember_password_toggled_cb), self);
remember_password_toggled_cb (
- GTK_TOGGLE_BUTTON (priv->remember_password_widget), self);
+ GTK_TOGGLE_BUTTON (self->priv->remember_password_widget), self);
}
- else if (priv->remember_password_widget != NULL
- && !empathy_account_settings_supports_sasl (priv->settings))
+ else if (self->priv->remember_password_widget != NULL
+ && !empathy_account_settings_supports_sasl (self->priv->settings))
{
- gtk_widget_set_visible (priv->remember_password_widget, FALSE);
+ gtk_widget_set_visible (self->priv->remember_password_widget, FALSE);
}
/* dup and init the account-manager */
- priv->account_manager = tp_account_manager_dup ();
+ self->priv->account_manager = tp_account_manager_dup ();
g_object_ref (self);
- tp_proxy_prepare_async (priv->account_manager, NULL,
+ tp_proxy_prepare_async (self->priv->account_manager, NULL,
account_manager_ready_cb, self);
/* handle apply and cancel button */
- if (!priv->simple &&
- !(storage_restrictions &
- TP_STORAGE_RESTRICTION_FLAG_CANNOT_SET_PARAMETERS))
- {
- GtkWidget *hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 3);
- GtkWidget *image;
-
- gtk_box_set_homogeneous (GTK_BOX (hbox), TRUE);
-
- /* We can't use the stock button as its accelerator ('C') clashes with
- * the Close button. */
- priv->cancel_button = gtk_button_new ();
- gtk_button_set_label (GTK_BUTTON (priv->cancel_button), _("Ca_ncel"));
- gtk_button_set_use_underline (GTK_BUTTON (priv->cancel_button), TRUE);
-
- image = gtk_image_new_from_stock (GTK_STOCK_CANCEL, GTK_ICON_SIZE_BUTTON);
- gtk_button_set_image (GTK_BUTTON (priv->cancel_button), image);
-
- priv->apply_button = gtk_button_new ();
- set_apply_button (self);
-
- /* We'll change this button to a "Log in" one if we are creating a new
- * account and are connected. */
- tp_g_signal_connect_object (priv->account_manager,
- "most-available-presence-changed",
- G_CALLBACK (presence_changed_cb), obj, 0);
-
- gtk_box_pack_end (GTK_BOX (hbox), priv->apply_button, TRUE,
- TRUE, 3);
- gtk_box_pack_end (GTK_BOX (hbox), priv->cancel_button, TRUE,
- TRUE, 3);
-
- gtk_box_pack_end (GTK_BOX (self->ui_details->widget), hbox, FALSE,
- FALSE, 3);
-
- g_signal_connect (priv->cancel_button, "clicked",
- G_CALLBACK (account_widget_cancel_clicked_cb),
- self);
- g_signal_connect (priv->apply_button, "clicked",
- G_CALLBACK (account_widget_apply_clicked_cb),
- self);
- gtk_widget_show_all (hbox);
-
- if (priv->creating_account)
- /* When creating an account, the user might have nothing to enter.
- * That means that no control interaction might occur,
- * so we update the control button sensitivity manually.
- */
- account_widget_handle_control_buttons_sensitivity (self);
- else
- account_widget_set_control_buttons_sensitivity (self, FALSE);
- }
+ self->priv->hbox_buttons = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 3);
+
+ gtk_box_set_homogeneous (GTK_BOX (self->priv->hbox_buttons), TRUE);
+
+ self->priv->cancel_button = gtk_button_new_from_stock (GTK_STOCK_CLOSE);
+
+ self->priv->apply_button = gtk_button_new ();
+ set_apply_button (self);
+
+ /* We'll change this button to a "Log in" one if we are creating a new
+ * account and are connected. */
+ tp_g_signal_connect_object (self->priv->account_manager,
+ "most-available-presence-changed",
+ G_CALLBACK (presence_changed_cb), obj, 0);
+
+ gtk_box_pack_end (GTK_BOX (self->priv->hbox_buttons),
+ self->priv->apply_button, TRUE, TRUE, 3);
+ 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,
+ FALSE, 3);
+
+ g_signal_connect (self->priv->cancel_button, "clicked",
+ G_CALLBACK (account_widget_cancel_clicked_cb),
+ self);
+ g_signal_connect (self->priv->apply_button, "clicked",
+ G_CALLBACK (account_widget_apply_clicked_cb),
+ self);
+ gtk_widget_show_all (self->priv->hbox_buttons);
+
+ if (self->priv->creating_account)
+ /* When creating an account, the user might have nothing to enter.
+ * That means that no control interaction might occur,
+ * so we update the control button sensitivity manually.
+ */
+ account_widget_handle_control_buttons_sensitivity (self);
+ else
+ account_widget_set_control_buttons_sensitivity (self, FALSE);
#ifndef HAVE_MEEGO
add_register_buttons (self, account);
@@ -2254,15 +2032,17 @@ do_constructed (GObject *obj)
self->ui_details->gui = NULL;
}
- display_name = empathy_account_settings_get_display_name (priv->settings);
+ display_name = empathy_account_settings_get_display_name (
+ self->priv->settings);
default_display_name = empathy_account_widget_get_default_display_name (self);
if (tp_strdiff (display_name, default_display_name) &&
- !priv->creating_account)
+ !self->priv->creating_account)
{
/* The display name of the account is not the one that we'd assign by
* default; assume that the user changed it manually */
- g_object_set (priv->settings, "display-name-overridden", TRUE, NULL);
+ g_object_set (self->priv->settings, "display-name-overridden", TRUE,
+ NULL);
}
}
@@ -2270,24 +2050,9 @@ static void
do_dispose (GObject *obj)
{
EmpathyAccountWidget *self = EMPATHY_ACCOUNT_WIDGET (obj);
- EmpathyAccountWidgetPriv *priv = GET_PRIV (self);
-
- if (priv->dispose_run)
- return;
-
- priv->dispose_run = TRUE;
-
- if (priv->settings != NULL)
- {
- g_object_unref (priv->settings);
- priv->settings = NULL;
- }
- if (priv->account_manager != NULL)
- {
- g_object_unref (priv->account_manager);
- priv->account_manager = NULL;
- }
+ g_clear_object (&self->priv->settings);
+ g_clear_object (&self->priv->account_manager);
if (G_OBJECT_CLASS (empathy_account_widget_parent_class)->dispose != NULL)
G_OBJECT_CLASS (empathy_account_widget_parent_class)->dispose (obj);
@@ -2297,12 +2062,11 @@ static void
do_finalize (GObject *obj)
{
EmpathyAccountWidget *self = EMPATHY_ACCOUNT_WIDGET (obj);
- EmpathyAccountWidgetPriv *priv = GET_PRIV (self);
g_free (self->ui_details->default_focus);
g_slice_free (EmpathyAccountWidgetUIDetails, self->ui_details);
- g_free (priv->jid_suffix);
+ g_free (self->priv->jid_suffix);
if (G_OBJECT_CLASS (empathy_account_widget_parent_class)->finalize != NULL)
G_OBJECT_CLASS (empathy_account_widget_parent_class)->finalize (obj);
@@ -2375,40 +2139,38 @@ empathy_account_widget_class_init (EmpathyAccountWidgetClass *klass)
G_TYPE_NONE,
0);
+ signals[CLOSE] =
+ g_signal_new ("close", G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST, 0, NULL, NULL,
+ g_cclosure_marshal_VOID__INT,
+ G_TYPE_NONE,
+ 1, G_TYPE_INT);
+
g_type_class_add_private (klass, sizeof (EmpathyAccountWidgetPriv));
}
static void
empathy_account_widget_init (EmpathyAccountWidget *self)
{
- EmpathyAccountWidgetPriv *priv =
- G_TYPE_INSTANCE_GET_PRIVATE ((self), EMPATHY_TYPE_ACCOUNT_WIDGET,
+ self->priv = G_TYPE_INSTANCE_GET_PRIVATE ((self), EMPATHY_TYPE_ACCOUNT_WIDGET,
EmpathyAccountWidgetPriv);
- self->priv = priv;
- priv->dispose_run = FALSE;
-
self->ui_details = g_slice_new0 (EmpathyAccountWidgetUIDetails);
}
/* public methods */
void
-empathy_account_widget_discard_pending_changes
- (EmpathyAccountWidget *widget)
+empathy_account_widget_discard_pending_changes (EmpathyAccountWidget *self)
{
- EmpathyAccountWidgetPriv *priv = GET_PRIV (widget);
-
- empathy_account_settings_discard_changes (priv->settings);
- priv->contains_pending_changes = FALSE;
+ empathy_account_settings_discard_changes (self->priv->settings);
+ self->priv->contains_pending_changes = FALSE;
}
gboolean
-empathy_account_widget_contains_pending_changes (EmpathyAccountWidget *widget)
+empathy_account_widget_contains_pending_changes (EmpathyAccountWidget *self)
{
- EmpathyAccountWidgetPriv *priv = GET_PRIV (widget);
-
- return priv->contains_pending_changes;
+ return self->priv->contains_pending_changes;
}
void
@@ -2450,14 +2212,14 @@ empathy_account_widget_new_for_protocol (EmpathyAccountSettings *settings,
gchar *
empathy_account_widget_get_default_display_name (EmpathyAccountWidget *self)
{
- EmpathyAccountWidgetPriv *priv = GET_PRIV (self);
const gchar *login_id;
const gchar *protocol, *p;
gchar *default_display_name;
Service service;
- login_id = empathy_account_settings_get_string (priv->settings, "account");
- protocol = empathy_account_settings_get_protocol (priv->settings);
+ login_id = empathy_account_settings_get_string (self->priv->settings,
+ "account");
+ protocol = empathy_account_settings_get_protocol (self->priv->settings);
service = account_widget_get_service (self);
if (login_id != NULL)
@@ -2468,7 +2230,7 @@ empathy_account_widget_get_default_display_name (EmpathyAccountWidget *self)
EmpathyIrcNetwork *network;
network = empathy_irc_network_chooser_get_network (
- priv->irc_network_chooser);
+ self->priv->irc_network_chooser);
g_assert (network != NULL);
/* To translators: The first parameter is the login id and the
@@ -2479,7 +2241,7 @@ empathy_account_widget_get_default_display_name (EmpathyAccountWidget *self)
default_display_name = g_strdup_printf (_("%1$s on %2$s"),
login_id, empathy_irc_network_get_name (network));
}
- else if (service == FACEBOOK_SERVICE && priv->jid_suffix != NULL)
+ else if (service == FACEBOOK_SERVICE && self->priv->jid_suffix != NULL)
{
gchar *tmp;
@@ -2516,40 +2278,38 @@ empathy_account_widget_get_default_display_name (EmpathyAccountWidget *self)
void
empathy_account_widget_changed (EmpathyAccountWidget *self)
{
- EmpathyAccountWidgetPriv *priv = GET_PRIV (self);
-
account_widget_handle_control_buttons_sensitivity (self);
- priv->contains_pending_changes = TRUE;
+ self->priv->contains_pending_changes = TRUE;
}
void
empathy_account_widget_set_account_param (EmpathyAccountWidget *self,
const gchar *account)
{
- EmpathyAccountWidgetPriv *priv = GET_PRIV (self);
-
- if (priv->param_account_widget == NULL)
+ if (self->priv->param_account_widget == NULL)
return;
- gtk_entry_set_text (GTK_ENTRY (priv->param_account_widget), account);
+ gtk_entry_set_text (GTK_ENTRY (self->priv->param_account_widget), account);
}
void
empathy_account_widget_set_password_param (EmpathyAccountWidget *self,
const gchar *account)
{
- EmpathyAccountWidgetPriv *priv = GET_PRIV (self);
-
- if (priv->param_password_widget == NULL)
+ if (self->priv->param_password_widget == NULL)
return;
- gtk_entry_set_text (GTK_ENTRY (priv->param_password_widget), account);
+ gtk_entry_set_text (GTK_ENTRY (self->priv->param_password_widget), account);
}
EmpathyAccountSettings *
empathy_account_widget_get_settings (EmpathyAccountWidget *self)
{
- EmpathyAccountWidgetPriv *priv = GET_PRIV (self);
+ return self->priv->settings;
+}
- return priv->settings;
+void
+empathy_account_widget_hide_buttons (EmpathyAccountWidget *self)
+{
+ gtk_widget_hide (self->priv->hbox_buttons);
}
diff --git a/libempathy-gtk/empathy-account-widget.h b/libempathy-gtk/empathy-account-widget.h
index ab1f3a5d..5279d75f 100644
--- a/libempathy-gtk/empathy-account-widget.h
+++ b/libempathy-gtk/empathy-account-widget.h
@@ -42,6 +42,7 @@ G_BEGIN_DECLS
#define EMPATHY_ACCOUNT_WIDGET_GET_CLASS(obj) \
(G_TYPE_INSTANCE_GET_CLASS ((obj), EMPATHY_TYPE_ACCOUNT_WIDGET, EmpathyAccountWidgetClass))
+typedef struct _EmpathyAccountWidgetPriv EmpathyAccountWidgetPriv;
typedef struct _EmpathyAccountWidgetUIDetails EmpathyAccountWidgetUIDetails;
typedef struct {
@@ -49,8 +50,7 @@ typedef struct {
EmpathyAccountWidgetUIDetails *ui_details;
- /* private */
- gpointer priv;
+ EmpathyAccountWidgetPriv *priv;
} EmpathyAccountWidget;
typedef struct {
@@ -82,6 +82,8 @@ void empathy_account_widget_set_password_param (EmpathyAccountWidget *self,
void empathy_account_widget_set_other_accounts_exist (
EmpathyAccountWidget *self, gboolean others_exist);
+void empathy_account_widget_hide_buttons (EmpathyAccountWidget *self);
+
/* protected methods */
void empathy_account_widget_changed (EmpathyAccountWidget *widget);
diff --git a/libempathy-gtk/empathy-base-password-dialog.c b/libempathy-gtk/empathy-base-password-dialog.c
index be708e81..5ca6cb67 100644
--- a/libempathy-gtk/empathy-base-password-dialog.c
+++ b/libempathy-gtk/empathy-base-password-dialog.c
@@ -272,6 +272,8 @@ empathy_base_password_dialog_constructed (GObject *object)
gtk_widget_grab_focus (self->entry);
gtk_window_set_position (GTK_WINDOW (self), GTK_WIN_POS_CENTER_ALWAYS);
+
+ gtk_window_set_keep_above (GTK_WINDOW (self), TRUE);
}
static void
diff --git a/libempathy-gtk/empathy-chat-text-view.c b/libempathy-gtk/empathy-chat-text-view.c
index c251f1f4..60d642cc 100644
--- a/libempathy-gtk/empathy-chat-text-view.c
+++ b/libempathy-gtk/empathy-chat-text-view.c
@@ -717,7 +717,8 @@ chat_text_view_scroll_down (EmpathyChatView *view)
static void
chat_text_view_append_message (EmpathyChatView *view,
- EmpathyMessage *msg)
+ EmpathyMessage *msg,
+ gboolean should_highlight)
{
EmpathyChatTextView *text_view = EMPATHY_CHAT_TEXT_VIEW (view);
EmpathyChatTextViewPriv *priv = GET_PRIV (text_view);
@@ -739,7 +740,8 @@ chat_text_view_append_message (EmpathyChatView *view,
chat_text_maybe_append_date_and_time (text_view, timestamp);
if (EMPATHY_CHAT_TEXT_VIEW_GET_CLASS (view)->append_message) {
EMPATHY_CHAT_TEXT_VIEW_GET_CLASS (view)->append_message (text_view,
- msg);
+ msg,
+ should_highlight);
}
if (bottom) {
diff --git a/libempathy-gtk/empathy-chat-text-view.h b/libempathy-gtk/empathy-chat-text-view.h
index 12edbcc6..ce83fd2f 100644
--- a/libempathy-gtk/empathy-chat-text-view.h
+++ b/libempathy-gtk/empathy-chat-text-view.h
@@ -56,7 +56,8 @@ struct _EmpathyChatTextViewClass {
/* */
void (*append_message) (EmpathyChatTextView *view,
- EmpathyMessage *message);
+ EmpathyMessage *message,
+ gboolean should_highlight);
};
#define EMPATHY_CHAT_TEXT_VIEW_TAG_CUT "cut"
diff --git a/libempathy-gtk/empathy-chat-view.c b/libempathy-gtk/empathy-chat-view.c
index 088b1208..f5d6ddf0 100644
--- a/libempathy-gtk/empathy-chat-view.c
+++ b/libempathy-gtk/empathy-chat-view.c
@@ -61,13 +61,15 @@ chat_view_base_init (gpointer klass)
void
empathy_chat_view_append_message (EmpathyChatView *view,
- EmpathyMessage *msg)
+ EmpathyMessage *msg,
+ gboolean should_highlight)
{
g_return_if_fail (EMPATHY_IS_CHAT_VIEW (view));
if (EMPATHY_TYPE_CHAT_VIEW_GET_IFACE (view)->append_message) {
EMPATHY_TYPE_CHAT_VIEW_GET_IFACE (view)->append_message (view,
- msg);
+ msg,
+ should_highlight);
}
}
diff --git a/libempathy-gtk/empathy-chat-view.h b/libempathy-gtk/empathy-chat-view.h
index bc9e9176..2c47e042 100644
--- a/libempathy-gtk/empathy-chat-view.h
+++ b/libempathy-gtk/empathy-chat-view.h
@@ -43,7 +43,8 @@ struct _EmpathyChatViewIface {
/* VTabled */
void (*append_message) (EmpathyChatView *view,
- EmpathyMessage *msg);
+ EmpathyMessage *msg,
+ gboolean should_highlight);
void (*append_event) (EmpathyChatView *view,
const gchar *str);
void (*append_event_markup) (EmpathyChatView *view,
@@ -81,7 +82,8 @@ struct _EmpathyChatViewIface {
GType empathy_chat_view_get_type (void) G_GNUC_CONST;
void empathy_chat_view_append_message (EmpathyChatView *view,
- EmpathyMessage *msg);
+ EmpathyMessage *msg,
+ gboolean should_highlight);
void empathy_chat_view_append_event (EmpathyChatView *view,
const gchar *str);
void empathy_chat_view_append_event_markup (EmpathyChatView *view,
diff --git a/libempathy-gtk/empathy-chat.c b/libempathy-gtk/empathy-chat.c
index 70e35dda..d273a379 100644
--- a/libempathy-gtk/empathy-chat.c
+++ b/libempathy-gtk/empathy-chat.c
@@ -51,7 +51,6 @@
#include "empathy-contact-dialogs.h"
#include "empathy-individual-store-channel.h"
#include "empathy-individual-view.h"
-#include "empathy-contact-menu.h"
#include "empathy-input-text-view.h"
#include "empathy-search-bar.h"
#include "empathy-theme-manager.h"
@@ -74,6 +73,7 @@ struct _EmpathyChatPriv {
gchar *id;
gchar *name;
gchar *subject;
+ EmpathyContact *self_contact;
EmpathyContact *remote_contact;
gboolean show_contacts;
@@ -156,6 +156,14 @@ struct _EmpathyChatPriv {
* the keyboard or the mouse. We can't ask GTK for the most recent
* event, because it will be a notify event. Instead we track it here */
GdkEventType most_recent_event_type;
+
+ /* A regex matching our own current nickname in the room, or %NULL if
+ * !empathy_chat_is_room (). */
+ GRegex *highlight_regex;
+
+ /* TRUE if empathy_chat_is_room () and there are unread highlighted messages.
+ * Cleared by empathy_chat_messages_read (). */
+ gboolean highlighted;
};
typedef struct {
@@ -369,11 +377,18 @@ static gboolean
chat_composing_stop_timeout_cb (EmpathyChat *chat)
{
EmpathyChatPriv *priv;
+ gboolean send_chat_states;
priv = GET_PRIV (chat);
priv->composing_stop_timeout_id = 0;
- set_chat_state (chat, TP_CHANNEL_CHAT_STATE_PAUSED);
+ send_chat_states = g_settings_get_boolean (priv->gsettings_chat,
+ EMPATHY_PREFS_CHAT_SEND_CHAT_STATES);
+ if (!send_chat_states) {
+ set_chat_state (chat, TP_CHANNEL_CHAT_STATE_ACTIVE);
+ } else {
+ set_chat_state (chat, TP_CHANNEL_CHAT_STATE_PAUSED);
+ }
return FALSE;
}
@@ -382,9 +397,16 @@ static void
chat_composing_start (EmpathyChat *chat)
{
EmpathyChatPriv *priv;
+ gboolean send_chat_states;
priv = GET_PRIV (chat);
+ send_chat_states = g_settings_get_boolean (priv->gsettings_chat,
+ EMPATHY_PREFS_CHAT_SEND_CHAT_STATES);
+ if (!send_chat_states) {
+ return;
+ }
+
if (priv->composing_stop_timeout_id) {
/* Just restart the timeout */
chat_composing_remove_timeout (chat);
@@ -897,14 +919,12 @@ chat_command_me (EmpathyChat *chat,
if (!tp_text_channel_supports_message_type (channel,
TP_CHANNEL_TEXT_MESSAGE_TYPE_ACTION)) {
/* Action message are not supported, 'simulate' the action */
- EmpathyContact *self_contact;
gchar *tmp;
- self_contact = empathy_tp_chat_get_self_contact (priv->tp_chat);
/* The TpChat can't be ready if it doesn't have the self contact */
- g_assert (self_contact != NULL);
+ g_assert (priv->self_contact != NULL);
- tmp = g_strdup_printf ("%s %s", empathy_contact_get_alias (self_contact),
+ tmp = g_strdup_printf ("%s %s", empathy_contact_get_alias (priv->self_contact),
strv[1]);
message = tp_client_message_new_text (TP_CHANNEL_TEXT_MESSAGE_TYPE_NORMAL,
tmp);
@@ -1384,6 +1404,86 @@ chat_state_changed_cb (EmpathyTpChat *tp_chat,
}
}
+static GRegex *
+get_highlight_regex_for (const gchar *name)
+{
+ GRegex *regex;
+ gchar *name_esc, *pattern;
+ GError *error = NULL;
+
+ name_esc = g_regex_escape_string (name, -1);
+ pattern = g_strdup_printf ("\\b%s\\b", name_esc);
+ regex = g_regex_new (pattern, G_REGEX_CASELESS | G_REGEX_OPTIMIZE, 0,
+ &error);
+
+ if (regex == NULL) {
+ DEBUG ("couldn't compile regex /%s/: %s", pattern,
+ error->message);
+
+ g_error_free (error);
+ }
+
+ g_free (pattern);
+ g_free (name_esc);
+
+ return regex;
+}
+
+/* Called when priv->self_contact changes, or priv->self_contact:alias changes.
+ * Only connected if empathy_chat_is_room() is TRUE, for obvious-ish reasons.
+ */
+static void
+chat_self_contact_alias_changed_cb (EmpathyChat *chat)
+{
+ EmpathyChatPriv *priv = GET_PRIV (chat);
+
+ tp_clear_pointer (&priv->highlight_regex, g_regex_unref);
+
+ if (priv->self_contact != NULL) {
+ const gchar *alias = empathy_contact_get_alias (priv->self_contact);
+
+ g_return_if_fail (alias != NULL);
+ priv->highlight_regex = get_highlight_regex_for (alias);
+ }
+}
+
+static gboolean
+chat_should_highlight (EmpathyChat *chat,
+ EmpathyMessage *message)
+{
+ EmpathyChatPriv *priv = GET_PRIV (chat);
+ const gchar *msg;
+ TpChannelTextMessageFlags flags;
+
+ g_return_val_if_fail (EMPATHY_IS_MESSAGE (message), FALSE);
+
+ if (!empathy_chat_is_room (chat)) {
+ return FALSE;
+ }
+
+ if (!empathy_message_is_incoming (message)) {
+ return FALSE;
+ }
+
+ msg = empathy_message_get_body (message);
+ if (!msg) {
+ return FALSE;
+ }
+
+ flags = empathy_message_get_flags (message);
+ if (flags & TP_CHANNEL_TEXT_MESSAGE_FLAG_SCROLLBACK) {
+ /* FIXME: Ideally we shouldn't highlight scrollback messages only if they
+ * have already been received by the user before (and so are in the logs) */
+ return FALSE;
+ }
+
+ if (priv->highlight_regex == NULL) {
+ return FALSE;
+ }
+
+ return g_regex_match (priv->highlight_regex, msg, 0, NULL);
+}
+
static void
chat_message_received (EmpathyChat *chat,
EmpathyMessage *message,
@@ -1401,19 +1501,26 @@ chat_message_received (EmpathyChat *chat,
empathy_chat_view_edit_message (chat->view, message);
} else {
+ gboolean should_highlight = chat_should_highlight (chat, message);
+
+ if (should_highlight) {
+ priv->highlighted = TRUE;
+ }
+
DEBUG ("Appending new message '%s' from %s (%d)",
empathy_message_get_token (message),
empathy_contact_get_alias (sender),
empathy_contact_get_handle (sender));
- empathy_chat_view_append_message (chat->view, message);
+ empathy_chat_view_append_message (chat->view, message, should_highlight);
if (empathy_message_is_incoming (message)) {
priv->unread_messages++;
g_object_notify (G_OBJECT (chat), "nb-unread-messages");
}
- g_signal_emit (chat, signals[NEW_MESSAGE], 0, message, pending);
+ g_signal_emit (chat, signals[NEW_MESSAGE], 0, message, pending,
+ should_highlight);
}
/* We received a message so the contact is no longer
@@ -1605,15 +1712,26 @@ chat_subject_changed_cb (EmpathyChat *chat)
gtk_widget_show (priv->hbox_topic);
}
if (priv->block_events_timeout_id == 0) {
- gchar *str;
+ gchar *str = NULL;
if (!EMP_STR_EMPTY (priv->subject)) {
- str = g_strdup_printf (_("Topic set to: %s"), priv->subject);
- } else {
+ const gchar *actor = empathy_tp_chat_get_subject_actor (priv->tp_chat);
+
+ if (tp_str_empty (actor)) {
+ str = g_strdup_printf (_("Topic set to: %s"), priv->subject);
+ } else {
+ str = g_strdup_printf (_("Topic set by %s to: %s"),
+ actor, priv->subject);
+ }
+ } else if (empathy_tp_chat_supports_subject (priv->tp_chat)) {
+ /* No need to display this 'event' is no topic can be defined anyway */
str = g_strdup (_("No topic defined"));
}
- empathy_chat_view_append_event (EMPATHY_CHAT (chat)->view, str);
- g_free (str);
+
+ if (str != NULL) {
+ empathy_chat_view_append_event (EMPATHY_CHAT (chat)->view, str);
+ g_free (str);
+ }
}
}
@@ -2492,13 +2610,15 @@ got_filtered_messages_cb (GObject *manager,
"sender", empathy_message_get_sender (message),
NULL);
- empathy_chat_view_append_message (chat->view, syn_msg);
+ empathy_chat_view_append_message (chat->view, syn_msg,
+ chat_should_highlight (chat, syn_msg));
empathy_chat_view_edit_message (chat->view, message);
g_object_unref (syn_msg);
} else {
/* append the latest message */
- empathy_chat_view_append_message (chat->view, message);
+ empathy_chat_view_append_message (chat->view, message,
+ chat_should_highlight (chat, message));
}
g_object_unref (message);
@@ -2796,6 +2916,32 @@ empathy_chat_set_show_contacts (EmpathyChat *chat,
g_object_notify (G_OBJECT (chat), "show-contacts");
}
+static void
+chat_self_contact_changed_cb (EmpathyChat *chat)
+{
+ EmpathyChatPriv *priv = GET_PRIV (chat);
+
+ if (priv->self_contact != NULL) {
+ g_signal_handlers_disconnect_by_func (priv->self_contact,
+ chat_self_contact_alias_changed_cb,
+ chat);
+ }
+ g_clear_object (&priv->self_contact);
+
+ priv->self_contact = empathy_tp_chat_get_self_contact (priv->tp_chat);
+ if (priv->self_contact != NULL) {
+ g_object_ref (priv->self_contact);
+
+ if (empathy_chat_is_room (chat)) {
+ g_signal_connect_swapped (priv->self_contact, "notify::alias",
+ G_CALLBACK (chat_self_contact_alias_changed_cb),
+ chat);
+ }
+ }
+
+ chat_self_contact_alias_changed_cb (chat);
+}
+
static void
chat_remote_contact_changed_cb (EmpathyChat *chat)
{
@@ -3150,6 +3296,8 @@ chat_finalize (GObject *object)
chat_state_changed_cb, chat);
g_signal_handlers_disconnect_by_func (priv->tp_chat,
chat_members_changed_cb, chat);
+ g_signal_handlers_disconnect_by_func (priv->tp_chat,
+ chat_self_contact_changed_cb, chat);
g_signal_handlers_disconnect_by_func (priv->tp_chat,
chat_remote_contact_changed_cb, chat);
g_signal_handlers_disconnect_by_func (priv->tp_chat,
@@ -3162,6 +3310,12 @@ chat_finalize (GObject *object)
if (priv->account) {
g_object_unref (priv->account);
}
+ if (priv->self_contact) {
+ g_signal_handlers_disconnect_by_func (priv->self_contact,
+ chat_self_contact_alias_changed_cb,
+ chat);
+ g_object_unref (priv->self_contact);
+ }
if (priv->remote_contact) {
g_object_unref (priv->remote_contact);
}
@@ -3175,6 +3329,8 @@ chat_finalize (GObject *object)
g_free (priv->subject);
g_completion_free (priv->completion);
+ tp_clear_pointer (&priv->highlight_regex, g_regex_unref);
+
G_OBJECT_CLASS (empathy_chat_parent_class)->finalize (object);
}
@@ -3297,6 +3453,14 @@ empathy_chat_class_init (EmpathyChatClass *klass)
G_TYPE_NONE,
1, G_TYPE_BOOLEAN);
+ /**
+ * EmpathyChat::new-message:
+ * @self: the #EmpathyChat
+ * @message: the new message
+ * @pending: whether the message was in the pending queue when @self
+ * was created
+ * @should_highlight: %TRUE if the message mentions the local user
+ */
signals[NEW_MESSAGE] =
g_signal_new ("new-message",
G_OBJECT_CLASS_TYPE (object_class),
@@ -3305,7 +3469,7 @@ empathy_chat_class_init (EmpathyChatClass *klass)
NULL, NULL,
g_cclosure_marshal_generic,
G_TYPE_NONE,
- 2, EMPATHY_TYPE_MESSAGE, G_TYPE_BOOLEAN);
+ 3, EMPATHY_TYPE_MESSAGE, G_TYPE_BOOLEAN, G_TYPE_BOOLEAN);
signals[PART_COMMAND_ENTERED] =
g_signal_new ("part-command-entered",
@@ -3871,6 +4035,9 @@ empathy_chat_set_tp_chat (EmpathyChat *chat,
g_signal_connect (tp_chat, "member-renamed",
G_CALLBACK (chat_member_renamed_cb),
chat);
+ g_signal_connect_swapped (tp_chat, "notify::self-contact",
+ G_CALLBACK (chat_self_contact_changed_cb),
+ chat);
g_signal_connect_swapped (tp_chat, "notify::remote-contact",
G_CALLBACK (chat_remote_contact_changed_cb),
chat);
@@ -3892,6 +4059,7 @@ empathy_chat_set_tp_chat (EmpathyChat *chat,
/* Get initial value of properties */
chat_sms_channel_changed_cb (chat);
+ chat_self_contact_changed_cb (chat);
chat_remote_contact_changed_cb (chat);
chat_title_changed_cb (chat);
chat_subject_changed_cb (chat);
@@ -3989,16 +4157,30 @@ empathy_chat_get_contact_menu (EmpathyChat *chat)
{
EmpathyChatPriv *priv = GET_PRIV (chat);
GtkWidget *menu = NULL;
+ FolksIndividual *individual;
+ TpContact *contact;
g_return_val_if_fail (EMPATHY_IS_CHAT (chat), NULL);
- if (priv->remote_contact) {
- menu = empathy_contact_menu_new (priv->remote_contact,
- EMPATHY_CONTACT_FEATURE_CALL |
- EMPATHY_CONTACT_FEATURE_LOG |
- EMPATHY_CONTACT_FEATURE_INFO |
- EMPATHY_CONTACT_FEATURE_BLOCK);
- }
+ if (priv->remote_contact == NULL)
+ return NULL;
+
+ contact = empathy_contact_get_tp_contact (priv->remote_contact);
+ if (contact == NULL)
+ return NULL;
+
+ individual = empathy_ensure_individual_from_tp_contact (contact);
+
+ if (individual == NULL)
+ return NULL;
+
+ menu = empathy_individual_menu_new (individual,
+ EMPATHY_INDIVIDUAL_FEATURE_CALL |
+ EMPATHY_INDIVIDUAL_FEATURE_LOG |
+ EMPATHY_INDIVIDUAL_FEATURE_INFO |
+ EMPATHY_INDIVIDUAL_FEATURE_BLOCK, NULL);
+
+ g_object_unref (individual);
return menu;
}
@@ -4150,6 +4332,16 @@ empathy_chat_is_room (EmpathyChat *chat)
return (priv->handle_type == TP_HANDLE_TYPE_ROOM);
}
+gboolean
+empathy_chat_is_highlighted (EmpathyChat *chat)
+{
+ EmpathyChatPriv *priv = GET_PRIV (chat);
+
+ g_return_val_if_fail (EMPATHY_IS_CHAT (chat), FALSE);
+
+ return priv->highlighted;
+}
+
guint
empathy_chat_get_nb_unread_messages (EmpathyChat *self)
{
@@ -4178,6 +4370,8 @@ empathy_chat_messages_read (EmpathyChat *self)
TP_TEXT_CHANNEL (priv->tp_chat), NULL, NULL);
}
+ priv->highlighted = FALSE;
+
if (priv->unread_messages_when_offline > 0) {
/* We can't ack those as the connection has gone away so just consider
* them as read. */
diff --git a/libempathy-gtk/empathy-chat.h b/libempathy-gtk/empathy-chat.h
index 0031410d..00da3d64 100644
--- a/libempathy-gtk/empathy-chat.h
+++ b/libempathy-gtk/empathy-chat.h
@@ -89,7 +89,7 @@ gboolean empathy_chat_is_room (EmpathyChat *chat);
void empathy_chat_set_show_contacts (EmpathyChat *chat,
gboolean show);
guint empathy_chat_get_nb_unread_messages (EmpathyChat *chat);
-
+gboolean empathy_chat_is_highlighted (EmpathyChat *chat);
void empathy_chat_messages_read (EmpathyChat *self);
gboolean empathy_chat_is_composing (EmpathyChat *chat);
diff --git a/libempathy-gtk/empathy-contact-blocking-dialog.c b/libempathy-gtk/empathy-contact-blocking-dialog.c
index c28362b7..eee88aa5 100644
--- a/libempathy-gtk/empathy-contact-blocking-dialog.c
+++ b/libempathy-gtk/empathy-contact-blocking-dialog.c
@@ -27,7 +27,6 @@
#include
-#include
#include
#include
@@ -433,9 +432,8 @@ contact_blocking_dialog_account_changed (GtkWidget *account_chooser,
TpConnection *conn = empathy_account_chooser_get_connection (
EMPATHY_ACCOUNT_CHOOSER (account_chooser));
GPtrArray *blocked;
- EmpathyContactManager *contact_manager;
- EmpathyTpContactList *contact_list;
- GList *members, *ptr;
+ GPtrArray *members;
+ guint i;
if (self->priv->block_account_changed > 0)
return;
@@ -472,37 +470,29 @@ contact_blocking_dialog_account_changed (GtkWidget *account_chooser,
contact_blocking_dialog_add_blocked (self, blocked);
- /* load the completion list */
- g_return_if_fail (empathy_contact_manager_initialized ());
-
DEBUG ("Loading contacts");
- contact_manager = empathy_contact_manager_dup_singleton ();
- contact_list = empathy_contact_manager_get_list (contact_manager, conn);
- members = empathy_contact_list_get_members (
- EMPATHY_CONTACT_LIST (contact_list));
+ members = tp_connection_dup_contact_list (conn);
- for (ptr = members; ptr != NULL; ptr = ptr->next)
+ for (i = 0; i < members->len; i++)
{
- EmpathyContact *contact = ptr->data;
+ TpContact *contact = g_ptr_array_index (members, i);
gchar *tmpstr;
tmpstr = g_strdup_printf ("%s (%s)",
- empathy_contact_get_alias (contact),
- empathy_contact_get_id (contact));
+ tp_contact_get_alias (contact),
+ tp_contact_get_identifier (contact));
gtk_list_store_insert_with_values (self->priv->completion_contacts,
NULL, -1,
- COL_COMPLETION_IDENTIFIER, empathy_contact_get_id (contact),
+ COL_COMPLETION_IDENTIFIER, tp_contact_get_identifier (contact),
COL_COMPLETION_TEXT, tmpstr,
-1);
g_free (tmpstr);
- g_object_unref (contact);
}
- g_list_free (members);
- g_object_unref (contact_manager);
+ g_ptr_array_unref (members);
}
static void
diff --git a/libempathy-gtk/empathy-contact-chooser.c b/libempathy-gtk/empathy-contact-chooser.c
index cba419be..ccdd5fa6 100644
--- a/libempathy-gtk/empathy-contact-chooser.c
+++ b/libempathy-gtk/empathy-contact-chooser.c
@@ -51,6 +51,9 @@ struct _EmpathyContactChooserPrivate
EmpathyContactChooserFilterFunc filter_func;
gpointer filter_data;
+
+ /* list of reffed TpContact */
+ GList *tp_contacts;
};
struct _AddTemporaryIndividualCtx
@@ -104,6 +107,9 @@ contact_chooser_dispose (GObject *object)
tp_clear_object (&self->priv->account_mgr);
+ g_list_free_full (self->priv->tp_contacts, g_object_unref);
+ self->priv->tp_contacts = NULL;
+
G_OBJECT_CLASS (empathy_contact_chooser_parent_class)->dispose (
object);
}
@@ -212,6 +218,7 @@ get_contacts_cb (TpConnection *connection,
(EmpathyContactChooser *) weak_object;
AddTemporaryIndividualCtx *ctx = user_data;
FolksIndividual *individual;
+ TpContact *contact;
if (self->priv->add_temp_ctx != ctx)
/* another request has been started */
@@ -220,10 +227,20 @@ get_contacts_cb (TpConnection *connection,
if (n_contacts != 1)
return;
- individual = empathy_create_individual_from_tp_contact (contacts[0]);
+ contact = contacts[0];
+
+ individual = empathy_create_individual_from_tp_contact (contact);
+ if (individual == NULL)
+ return;
+
+ /* tp-glib will unref the TpContact once we return from this callback
+ * but folks expect us to keep a reference on the TpContact.
+ * Ideally folks shouldn't force us to do that: bgo #666580 */
+ self->priv->tp_contacts = g_list_prepend (self->priv->tp_contacts,
+ g_object_ref (contact));
/* listen for updates to the capabilities */
- tp_g_signal_connect_object (contacts[0], "notify::capabilities",
+ tp_g_signal_connect_object (contact, "notify::capabilities",
G_CALLBACK (contact_capabilities_changed), self, 0);
/* Pass ownership to the list */
@@ -433,6 +450,9 @@ empathy_contact_chooser_new (void)
NULL);
}
+/* Note that because of bgo #666580 the returned invidivdual is valid until
+ * @self is destroyed. To keep it around after that, the TpContact associated
+ * with the individual needs to be manually reffed. */
FolksIndividual *
empathy_contact_chooser_dup_selected (EmpathyContactChooser *self)
{
diff --git a/libempathy-gtk/empathy-contact-dialogs.c b/libempathy-gtk/empathy-contact-dialogs.c
index 1c56a868..00d737bd 100644
--- a/libempathy-gtk/empathy-contact-dialogs.c
+++ b/libempathy-gtk/empathy-contact-dialogs.c
@@ -39,8 +39,6 @@
static GList *subscription_dialogs = NULL;
static GList *information_dialogs = NULL;
-static GList *edit_dialogs = NULL;
-static GtkWidget *personal_dialog = NULL;
static GtkWidget *new_contact_dialog = NULL;
static gint
@@ -262,117 +260,6 @@ empathy_contact_information_dialog_show (EmpathyContact *contact,
gtk_widget_show (dialog);
}
-void
-empathy_contact_edit_dialog_show (EmpathyContact *contact,
- GtkWindow *parent)
-{
- GtkWidget *dialog;
- GtkWidget *button;
- GtkWidget *contact_widget;
- GList *l;
-
- g_return_if_fail (EMPATHY_IS_CONTACT (contact));
-
- l = g_list_find_custom (edit_dialogs,
- contact,
- (GCompareFunc) contact_dialogs_find);
- if (l) {
- gtk_window_present (GTK_WINDOW (l->data));
- return;
- }
-
- /* Create dialog */
- dialog = gtk_dialog_new ();
- gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE);
- gtk_window_set_title (GTK_WINDOW (dialog), _("Edit Contact Information"));
-
- /* Close button */
- button = gtk_button_new_with_label (GTK_STOCK_CLOSE);
- gtk_button_set_use_stock (GTK_BUTTON (button), TRUE);
- gtk_dialog_add_action_widget (GTK_DIALOG (dialog),
- button,
- GTK_RESPONSE_CLOSE);
- gtk_widget_set_can_default (button, TRUE);
- gtk_window_set_default (GTK_WINDOW (dialog), button);
- gtk_widget_show (button);
-
- /* Contact info widget */
- contact_widget = empathy_contact_widget_new (contact,
- EMPATHY_CONTACT_WIDGET_EDIT_ALIAS |
- EMPATHY_CONTACT_WIDGET_EDIT_GROUPS |
- EMPATHY_CONTACT_WIDGET_EDIT_FAVOURITE);
- gtk_container_set_border_width (GTK_CONTAINER (contact_widget), 8);
- gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))),
- contact_widget,
- TRUE, TRUE, 0);
- gtk_widget_show (contact_widget);
-
- g_object_set_data (G_OBJECT (dialog), "contact_widget", contact_widget);
- edit_dialogs = g_list_prepend (edit_dialogs, dialog);
-
- g_signal_connect (dialog, "response",
- G_CALLBACK (contact_dialogs_response_cb),
- &edit_dialogs);
-
- if (parent) {
- gtk_window_set_transient_for (GTK_WINDOW (dialog), parent);
- }
-
- gtk_widget_show (dialog);
-}
-
-void
-empathy_contact_personal_dialog_show (GtkWindow *parent)
-{
- GtkWidget *button;
- GtkWidget *contact_widget;
-
- if (personal_dialog) {
- gtk_window_present (GTK_WINDOW (personal_dialog));
- return;
- }
-
- /* Create dialog */
- personal_dialog = gtk_dialog_new ();
- gtk_window_set_resizable (GTK_WINDOW (personal_dialog), FALSE);
- gtk_window_set_title (GTK_WINDOW (personal_dialog), _("Personal Information"));
-
- /* Close button */
- button = gtk_button_new_with_label (GTK_STOCK_CLOSE);
- gtk_button_set_use_stock (GTK_BUTTON (button), TRUE);
- gtk_dialog_add_action_widget (GTK_DIALOG (personal_dialog),
- button,
- GTK_RESPONSE_CLOSE);
- gtk_widget_set_can_default (button, TRUE);
- gtk_window_set_default (GTK_WINDOW (personal_dialog), button);
- gtk_widget_show (button);
-
- /* Contact info widget */
- contact_widget = empathy_contact_widget_new (NULL,
- EMPATHY_CONTACT_WIDGET_EDIT_ACCOUNT |
- EMPATHY_CONTACT_WIDGET_EDIT_ALIAS |
- EMPATHY_CONTACT_WIDGET_EDIT_AVATAR |
- EMPATHY_CONTACT_WIDGET_EDIT_DETAILS);
- gtk_container_set_border_width (GTK_CONTAINER (contact_widget), 8);
- gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (personal_dialog))),
- contact_widget,
- TRUE, TRUE, 0);
- empathy_contact_widget_set_account_filter (contact_widget,
- empathy_account_chooser_filter_is_connected, NULL);
- gtk_widget_show (contact_widget);
-
- g_signal_connect (personal_dialog, "response",
- G_CALLBACK (gtk_widget_destroy), NULL);
- g_object_add_weak_pointer (G_OBJECT (personal_dialog),
- (gpointer) &personal_dialog);
-
- if (parent) {
- gtk_window_set_transient_for (GTK_WINDOW (personal_dialog), parent);
- }
-
- gtk_widget_show (personal_dialog);
-}
-
/*
* New contact dialog
*/
diff --git a/libempathy-gtk/empathy-contact-dialogs.h b/libempathy-gtk/empathy-contact-dialogs.h
index 5dbb7765..8eb78770 100644
--- a/libempathy-gtk/empathy-contact-dialogs.h
+++ b/libempathy-gtk/empathy-contact-dialogs.h
@@ -33,9 +33,6 @@ void empathy_subscription_dialog_show (EmpathyContact *contact,
GtkWindow *parent);
void empathy_contact_information_dialog_show (EmpathyContact *contact,
GtkWindow *parent);
-void empathy_contact_edit_dialog_show (EmpathyContact *contact,
- GtkWindow *parent);
-void empathy_contact_personal_dialog_show (GtkWindow *parent);
void empathy_new_contact_dialog_show (GtkWindow *parent);
void empathy_new_contact_dialog_show_with_contact (GtkWindow *parent,
EmpathyContact *contact);
diff --git a/libempathy-gtk/empathy-contact-menu.c b/libempathy-gtk/empathy-contact-menu.c
deleted file mode 100644
index dd9ea5c1..00000000
--- a/libempathy-gtk/empathy-contact-menu.c
+++ /dev/null
@@ -1,662 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Copyright (C) 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
- */
-
-#include "config.h"
-
-#include
-
-#include
-#include
-#include
-
-#include
-#include
-#include
-#include
-#include
-
-#include "empathy-contact-menu.h"
-#include "empathy-images.h"
-#include "empathy-log-window.h"
-#include "empathy-contact-dialogs.h"
-#include "empathy-ui-utils.h"
-#include "empathy-share-my-desktop.h"
-#include "empathy-call-utils.h"
-
-static GtkWidget *empathy_contact_block_menu_item_new (EmpathyContact *);
-
-GtkWidget *
-empathy_contact_menu_new (EmpathyContact *contact,
- EmpathyContactFeatureFlags features)
-{
- GtkWidget *menu;
- GtkMenuShell *shell;
- GtkWidget *item;
-
- g_return_val_if_fail (EMPATHY_IS_CONTACT (contact), NULL);
-
- if (features == EMPATHY_CONTACT_FEATURE_NONE) {
- return NULL;
- }
-
- menu = gtk_menu_new ();
- shell = GTK_MENU_SHELL (menu);
-
- /* Add Contact */
- item = empathy_contact_add_menu_item_new (contact);
- if (item) {
- gtk_menu_shell_append (shell, item);
- gtk_widget_show (item);
- }
-
- /* Chat */
- if (features & EMPATHY_CONTACT_FEATURE_CHAT) {
- item = empathy_contact_chat_menu_item_new (contact);
- gtk_menu_shell_append (shell, item);
- gtk_widget_show (item);
- }
-
- if (features & EMPATHY_CONTACT_FEATURE_CALL) {
- /* Audio Call */
- item = empathy_contact_audio_call_menu_item_new (contact);
- gtk_menu_shell_append (shell, item);
- gtk_widget_show (item);
-
- /* Video Call */
- item = empathy_contact_video_call_menu_item_new (contact);
- gtk_menu_shell_append (shell, item);
- gtk_widget_show (item);
- }
-
- /* Invite */
- item = empathy_contact_invite_menu_item_new (contact);
- gtk_menu_shell_append (shell, item);
- gtk_widget_show (item);
-
- /* File transfer */
- if (features & EMPATHY_CONTACT_FEATURE_FT) {
- item = empathy_contact_file_transfer_menu_item_new (contact);
- gtk_menu_shell_append (shell, item);
- gtk_widget_show (item);
- }
-
- /* Share my desktop */
- /* FIXME we should add the "Share my desktop" menu item if Vino is
- a registered handler in MC5 */
- item = empathy_contact_share_my_desktop_menu_item_new (contact);
- gtk_menu_shell_append (shell, item);
- gtk_widget_show (item);
-
- /* Separator */
- if (features & (EMPATHY_CONTACT_FEATURE_EDIT |
- EMPATHY_CONTACT_FEATURE_INFO)) {
- item = gtk_separator_menu_item_new ();
- gtk_menu_shell_append (shell, item);
- gtk_widget_show (item);
- }
-
- /* Edit */
- if (features & EMPATHY_CONTACT_FEATURE_EDIT) {
- item = empathy_contact_edit_menu_item_new (contact);
- gtk_menu_shell_append (shell, item);
- gtk_widget_show (item);
- }
-
- /* Log */
- if (features & EMPATHY_CONTACT_FEATURE_LOG) {
- item = empathy_contact_log_menu_item_new (contact);
- gtk_menu_shell_append (shell, item);
- gtk_widget_show (item);
- }
-
- /* Info */
- if (features & EMPATHY_CONTACT_FEATURE_INFO) {
- item = empathy_contact_info_menu_item_new (contact);
- gtk_menu_shell_append (shell, item);
- gtk_widget_show (item);
- }
-
- /* Separator & Block */
- if (features & EMPATHY_CONTACT_FEATURE_BLOCK &&
- (item = empathy_contact_block_menu_item_new (contact)) != NULL) {
- GtkWidget *sep;
-
- sep = gtk_separator_menu_item_new ();
- gtk_menu_shell_append (shell, sep);
- gtk_widget_show (sep);
-
- gtk_menu_shell_append (shell, item);
- gtk_widget_show (item);
- }
-
- return menu;
-}
-
-static void
-empathy_contact_add_menu_item_activated (GtkMenuItem *item,
- EmpathyContact *contact)
-{
- GtkWidget *toplevel;
-
- toplevel = gtk_widget_get_toplevel (GTK_WIDGET (item));
- if (!gtk_widget_is_toplevel (toplevel) || !GTK_IS_WINDOW (toplevel)) {
- toplevel = NULL;
- }
-
- empathy_new_contact_dialog_show_with_contact (GTK_WINDOW (toplevel),
- contact);
-}
-
-GtkWidget *
-empathy_contact_add_menu_item_new (EmpathyContact *contact)
-{
- GtkWidget *item;
- GtkWidget *image;
- EmpathyContactManager *manager;
- TpConnection *connection;
- GList *l, *members;
- gboolean found = FALSE;
-
- g_return_val_if_fail (EMPATHY_IS_CONTACT (contact), NULL);
-
- if (!empathy_contact_manager_initialized ()) {
- return NULL;
- }
-
- manager = empathy_contact_manager_dup_singleton ();
- connection = empathy_contact_get_connection (contact);
-
- if (!tp_connection_get_can_change_contact_list (connection))
- return NULL;
-
- members = empathy_contact_list_get_members (EMPATHY_CONTACT_LIST (manager));
- for (l = members; l; l = l->next) {
- if (!found && empathy_contact_equal (l->data, contact)) {
- found = TRUE;
- /* we keep iterating so that we don't leak contact
- * refs */
- }
-
- g_object_unref (l->data);
- }
- g_list_free (members);
- g_object_unref (manager);
-
- if (found) {
- return NULL;
- }
-
- item = gtk_image_menu_item_new_with_mnemonic (_("_Add Contactâ¦"));
- image = gtk_image_new_from_icon_name (GTK_STOCK_ADD,
- GTK_ICON_SIZE_MENU);
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
-
- g_signal_connect (item, "activate",
- G_CALLBACK (empathy_contact_add_menu_item_activated),
- contact);
-
- return item;
-}
-
-static void
-empathy_contact_block_menu_item_toggled (GtkCheckMenuItem *item,
- EmpathyContact *contact)
-{
- static guint block_signal = 0;
- gboolean blocked, abusive;
- TpContact *tp_contact;
-
- if (block_signal > 0)
- return;
-
- blocked = gtk_check_menu_item_get_active (item);
-
- if (blocked) {
- /* confirm the user really wishes to block the contact */
- GtkWidget *parent;
- GdkPixbuf *avatar;
-
- /* gtk_menu_get_attach_widget () doesn't behave properly here
- * for some reason */
- parent = g_object_get_data (
- G_OBJECT (gtk_widget_get_parent (GTK_WIDGET (item))),
- "window");
-
- avatar = empathy_pixbuf_avatar_from_contact_scaled (contact, 48, 48);
-
- if (!empathy_block_contact_dialog_show (GTK_WINDOW (parent),
- contact, avatar, &abusive))
- return;
- }
-
- tp_contact = empathy_contact_get_tp_contact (contact);
-
- if (blocked)
- tp_contact_block_async (tp_contact, abusive, NULL, NULL);
- else
- tp_contact_unblock_async (tp_contact, NULL, NULL);
-
- /* update the toggle with the blocked status */
- block_signal++;
- gtk_check_menu_item_set_active (item, blocked);
- block_signal--;
-}
-
-static GtkWidget *
-empathy_contact_block_menu_item_new (EmpathyContact *contact)
-{
- GtkWidget *item;
- TpConnection *connection;
- TpContact *tp_contact;
-
- g_return_val_if_fail (EMPATHY_IS_CONTACT (contact), NULL);
-
- if (!empathy_contact_manager_initialized ()) {
- return NULL;
- }
-
- connection = empathy_contact_get_connection (contact);
-
- if (!tp_proxy_has_interface_by_id (connection,
- TP_IFACE_QUARK_CONNECTION_INTERFACE_CONTACT_BLOCKING))
- return NULL;
-
- item = gtk_check_menu_item_new_with_mnemonic (_("_Block Contact"));
-
- tp_contact = empathy_contact_get_tp_contact (contact);
-
- gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item),
- tp_contact_is_blocked (tp_contact));
-
- g_signal_connect (item, "toggled",
- G_CALLBACK (empathy_contact_block_menu_item_toggled),
- contact);
-
- return item;
-}
-
-static void
-empathy_contact_chat_menu_item_activated (GtkMenuItem *item,
- EmpathyContact *contact)
-{
- empathy_chat_with_contact (contact, empathy_get_current_action_time ());
-}
-
-GtkWidget *
-empathy_contact_chat_menu_item_new (EmpathyContact *contact)
-{
- GtkWidget *item;
- GtkWidget *image;
-
- g_return_val_if_fail (EMPATHY_IS_CONTACT (contact), NULL);
-
- item = gtk_image_menu_item_new_with_mnemonic (_("_Chat"));
- image = gtk_image_new_from_icon_name (EMPATHY_IMAGE_MESSAGE,
- GTK_ICON_SIZE_MENU);
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
- gtk_widget_set_sensitive (item, !empathy_contact_is_user (contact));
- gtk_widget_show (image);
-
- g_signal_connect (item, "activate",
- G_CALLBACK (empathy_contact_chat_menu_item_activated),
- contact);
-
- return item;
-}
-
-static void
-empathy_contact_audio_call_menu_item_activated (GtkMenuItem *item,
- EmpathyContact *contact)
-{
- empathy_call_new_with_streams (empathy_contact_get_id (contact),
- empathy_contact_get_account (contact),
- TRUE, FALSE,
- empathy_get_current_action_time ());
-}
-
-GtkWidget *
-empathy_contact_audio_call_menu_item_new (EmpathyContact *contact)
-{
- GtkWidget *item;
- GtkWidget *image;
-
- g_return_val_if_fail (EMPATHY_IS_CONTACT (contact), NULL);
-
- item = gtk_image_menu_item_new_with_mnemonic (C_("menu item", "_Audio Call"));
- image = gtk_image_new_from_icon_name (EMPATHY_IMAGE_VOIP,
- GTK_ICON_SIZE_MENU);
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
- gtk_widget_set_sensitive (item, empathy_contact_can_voip_audio (contact) &&
- !empathy_contact_is_user (contact));
- gtk_widget_show (image);
-
- g_signal_connect (item, "activate",
- G_CALLBACK (empathy_contact_audio_call_menu_item_activated),
- contact);
-
- return item;
-}
-
-static void
-empathy_contact_video_call_menu_item_activated (GtkMenuItem *item,
- EmpathyContact *contact)
-{
- empathy_call_new_with_streams (empathy_contact_get_id (contact),
- empathy_contact_get_account (contact),
- TRUE, TRUE,
- empathy_get_current_action_time ());
-}
-
-GtkWidget *
-empathy_contact_video_call_menu_item_new (EmpathyContact *contact)
-{
- GtkWidget *item;
- GtkWidget *image;
-
- g_return_val_if_fail (EMPATHY_IS_CONTACT (contact), NULL);
-
- item = gtk_image_menu_item_new_with_mnemonic (C_("menu item", "_Video Call"));
- image = gtk_image_new_from_icon_name (EMPATHY_IMAGE_VIDEO_CALL,
- GTK_ICON_SIZE_MENU);
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
- gtk_widget_set_sensitive (item, empathy_contact_can_voip_video (contact) &&
- !empathy_contact_is_user (contact));
- gtk_widget_show (image);
-
- g_signal_connect (item, "activate",
- G_CALLBACK (empathy_contact_video_call_menu_item_activated),
- contact);
-
- return item;
-}
-
-static void
-contact_log_menu_item_activate_cb (EmpathyContact *contact)
-{
- empathy_log_window_show (empathy_contact_get_account (contact),
- empathy_contact_get_id (contact),
- FALSE, NULL);
-}
-
-GtkWidget *
-empathy_contact_log_menu_item_new (EmpathyContact *contact)
-{
- TplLogManager *manager;
- TplEntity *entity;
- gboolean have_log;
- GtkWidget *item;
- GtkWidget *image;
-
- g_return_val_if_fail (EMPATHY_IS_CONTACT (contact), NULL);
-
- manager = tpl_log_manager_dup_singleton ();
- entity = tpl_entity_new_from_tp_contact (empathy_contact_get_tp_contact (contact),
- TPL_ENTITY_CONTACT);
-
- have_log = tpl_log_manager_exists (manager,
- empathy_contact_get_account (contact),
- entity,
- TPL_EVENT_MASK_TEXT);
-
- g_object_unref (entity);
- g_object_unref (manager);
-
- item = gtk_image_menu_item_new_with_mnemonic (_("_Previous Conversations"));
- image = gtk_image_new_from_icon_name (EMPATHY_IMAGE_LOG,
- GTK_ICON_SIZE_MENU);
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
- gtk_widget_set_sensitive (item, have_log);
- gtk_widget_show (image);
-
- g_signal_connect_swapped (item, "activate",
- G_CALLBACK (contact_log_menu_item_activate_cb),
- contact);
-
- return item;
-}
-
-GtkWidget *
-empathy_contact_file_transfer_menu_item_new (EmpathyContact *contact)
-{
- GtkWidget *item;
- GtkWidget *image;
-
- g_return_val_if_fail (EMPATHY_IS_CONTACT (contact), NULL);
-
- item = gtk_image_menu_item_new_with_mnemonic (_("Send File"));
- image = gtk_image_new_from_icon_name (EMPATHY_IMAGE_DOCUMENT_SEND,
- GTK_ICON_SIZE_MENU);
- gtk_widget_set_sensitive (item, empathy_contact_can_send_files (contact) &&
- !empathy_contact_is_user (contact));
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
- gtk_widget_show (image);
-
- g_signal_connect_swapped (item, "activate",
- G_CALLBACK (empathy_send_file_with_file_chooser),
- contact);
-
- return item;
-}
-
-GtkWidget *
-empathy_contact_share_my_desktop_menu_item_new (EmpathyContact *contact)
-{
- GtkWidget *item;
- GtkWidget *image;
-
- g_return_val_if_fail (EMPATHY_IS_CONTACT (contact), NULL);
-
- item = gtk_image_menu_item_new_with_mnemonic (_("Share My Desktop"));
- image = gtk_image_new_from_icon_name (GTK_STOCK_NETWORK,
- GTK_ICON_SIZE_MENU);
- gtk_widget_set_sensitive (item, empathy_contact_can_use_rfb_stream_tube (
- contact));
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
- gtk_widget_show (image);
-
- g_signal_connect_swapped (item, "activate",
- G_CALLBACK (empathy_share_my_desktop_share_with_contact),
- contact);
-
- return item;
-}
-
-static void
-contact_info_menu_item_activate_cb (EmpathyContact *contact)
-{
- empathy_contact_information_dialog_show (contact, NULL);
-}
-
-GtkWidget *
-empathy_contact_info_menu_item_new (EmpathyContact *contact)
-{
- GtkWidget *item;
- GtkWidget *image;
-
- g_return_val_if_fail (EMPATHY_IS_CONTACT (contact), NULL);
-
- item = gtk_image_menu_item_new_with_mnemonic (_("Infor_mation"));
- image = gtk_image_new_from_icon_name (EMPATHY_IMAGE_CONTACT_INFORMATION,
- GTK_ICON_SIZE_MENU);
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
- gtk_widget_show (image);
-
- g_signal_connect_swapped (item, "activate",
- G_CALLBACK (contact_info_menu_item_activate_cb),
- contact);
-
- return item;
-}
-
-static void
-contact_edit_menu_item_activate_cb (EmpathyContact *contact)
-{
- empathy_contact_edit_dialog_show (contact, NULL);
-}
-
-GtkWidget *
-empathy_contact_edit_menu_item_new (EmpathyContact *contact)
-{
- GtkWidget *item;
- GtkWidget *image;
- gboolean enable = FALSE;
-
- g_return_val_if_fail (EMPATHY_IS_CONTACT (contact), NULL);
-
- if (empathy_contact_manager_initialized ()) {
- TpConnection *connection;
-
- connection = empathy_contact_get_connection (contact);
-
- enable = (tp_connection_can_set_contact_alias (connection) ||
- tp_connection_get_group_storage (connection) !=
- TP_CONTACT_METADATA_STORAGE_TYPE_NONE);
- }
-
- item = gtk_image_menu_item_new_with_mnemonic (
- C_("Edit contact (contextual menu)",
- "_Edit"));
- image = gtk_image_new_from_icon_name (GTK_STOCK_EDIT,
- GTK_ICON_SIZE_MENU);
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
- gtk_widget_show (image);
-
- gtk_widget_set_sensitive (item, enable);
-
- g_signal_connect_swapped (item, "activate",
- G_CALLBACK (contact_edit_menu_item_activate_cb),
- contact);
-
- return item;
-}
-
-typedef struct {
- EmpathyContact *contact;
- EmpathyChatroom *chatroom;
-} RoomSubMenuData;
-
-static RoomSubMenuData *
-room_sub_menu_data_new (EmpathyContact *contact,
- EmpathyChatroom *chatroom)
-{
- RoomSubMenuData *data;
-
- data = g_slice_new (RoomSubMenuData);
- data->contact = g_object_ref (contact);
- data->chatroom = g_object_ref (chatroom);
- return data;
-}
-
-static void
-room_sub_menu_data_free (RoomSubMenuData *data)
-{
- g_object_unref (data->contact);
- g_object_unref (data->chatroom);
- g_slice_free (RoomSubMenuData, data);
-}
-
-static void
-room_sub_menu_activate_cb (GtkWidget *item,
- RoomSubMenuData *data)
-{
- EmpathyTpChat *chat;
-
- chat = empathy_chatroom_get_tp_chat (data->chatroom);
- if (chat == NULL) {
- /* channel was invalidated. Ignoring */
- return;
- }
-
- /* send invitation */
- empathy_contact_list_add (EMPATHY_CONTACT_LIST (chat), data->contact,
- _("Inviting you to this room"));
-}
-
-static GtkWidget *
-create_room_sub_menu (EmpathyContact *contact,
- EmpathyChatroom *chatroom)
-{
- GtkWidget *item;
- RoomSubMenuData *data;
-
- item = gtk_menu_item_new_with_label (empathy_chatroom_get_name (chatroom));
- data = room_sub_menu_data_new (contact, chatroom);
- g_signal_connect_data (item, "activate",
- G_CALLBACK (room_sub_menu_activate_cb), data,
- (GClosureNotify) room_sub_menu_data_free, 0);
-
- return item;
-}
-
-GtkWidget *
-empathy_contact_invite_menu_item_new (EmpathyContact *contact)
-{
- GtkWidget *item;
- GtkWidget *image;
- GtkWidget *room_item;
- EmpathyChatroomManager *mgr;
- GList *rooms, *l;
- GtkWidget *submenu = NULL;
-
- g_return_val_if_fail (EMPATHY_IS_CONTACT (contact), NULL);
-
- item = gtk_image_menu_item_new_with_mnemonic (_("_Invite to Chat Room"));
- image = gtk_image_new_from_icon_name (EMPATHY_IMAGE_GROUP_MESSAGE,
- GTK_ICON_SIZE_MENU);
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
-
- if (empathy_contact_is_user (contact)) {
- gtk_widget_set_sensitive (item, FALSE);
- gtk_widget_show (image);
- return item;
- }
-
- mgr = empathy_chatroom_manager_dup_singleton (NULL);
- rooms = empathy_chatroom_manager_get_chatrooms (mgr,
- empathy_contact_get_account (contact));
-
- for (l = rooms; l != NULL; l = g_list_next (l)) {
- EmpathyChatroom *chatroom = l->data;
-
- if (empathy_chatroom_get_tp_chat (chatroom) != NULL) {
- if (G_UNLIKELY (submenu == NULL))
- submenu = gtk_menu_new ();
-
- room_item = create_room_sub_menu (contact, chatroom);
- gtk_menu_shell_append ((GtkMenuShell *) submenu, room_item);
- gtk_widget_show (room_item);
- }
- }
-
- if (submenu) {
- gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), submenu);
- } else {
- gtk_widget_set_sensitive (item, FALSE);
- }
-
- gtk_widget_show (image);
-
- g_object_unref (mgr);
- g_list_free (rooms);
-
- return item;
-}
-
diff --git a/libempathy-gtk/empathy-contact-menu.h b/libempathy-gtk/empathy-contact-menu.h
deleted file mode 100644
index b99e1410..00000000
--- a/libempathy-gtk/empathy-contact-menu.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Copyright (C) 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
- */
-
-#ifndef __EMPATHY_CONTACT_MENU_H__
-#define __EMPATHY_CONTACT_MENU_H__
-
-#include
-
-#include
-
-G_BEGIN_DECLS
-
-typedef enum {
- EMPATHY_CONTACT_FEATURE_NONE = 0,
- EMPATHY_CONTACT_FEATURE_CHAT = 1 << 0,
- EMPATHY_CONTACT_FEATURE_CALL = 1 << 1,
- EMPATHY_CONTACT_FEATURE_LOG = 1 << 2,
- EMPATHY_CONTACT_FEATURE_EDIT = 1 << 3,
- EMPATHY_CONTACT_FEATURE_INFO = 1 << 4,
- EMPATHY_CONTACT_FEATURE_FT = 1 << 6,
- EMPATHY_CONTACT_FEATURE_BLOCK = 1 << 7,
- EMPATHY_CONTACT_FEATURE_ALL = (1 << 8) - 1,
-} EmpathyContactFeatureFlags;
-
-GtkWidget * empathy_contact_menu_new (EmpathyContact *contact,
- EmpathyContactFeatureFlags features);
-GtkWidget * empathy_contact_add_menu_item_new (EmpathyContact *contact);
-GtkWidget * empathy_contact_chat_menu_item_new (EmpathyContact *contact);
-GtkWidget * empathy_contact_audio_call_menu_item_new (EmpathyContact *contact);
-GtkWidget * empathy_contact_video_call_menu_item_new (EmpathyContact *contact);
-GtkWidget * empathy_contact_log_menu_item_new (EmpathyContact *contact);
-GtkWidget * empathy_contact_info_menu_item_new (EmpathyContact *contact);
-GtkWidget * empathy_contact_edit_menu_item_new (EmpathyContact *contact);
-GtkWidget * empathy_contact_invite_menu_item_new (EmpathyContact *contact);
-GtkWidget * empathy_contact_file_transfer_menu_item_new (EmpathyContact *contact);
-GtkWidget * empathy_contact_share_my_desktop_menu_item_new (EmpathyContact *contact);
-
-G_END_DECLS
-
-#endif /* __EMPATHY_CONTACT_MENU_H__ */
-
diff --git a/libempathy-gtk/empathy-contact-widget.c b/libempathy-gtk/empathy-contact-widget.c
index 476fb621..b352ee12 100644
--- a/libempathy-gtk/empathy-contact-widget.c
+++ b/libempathy-gtk/empathy-contact-widget.c
@@ -37,7 +37,6 @@
#include
#include
-#include
#include
#include
#include
@@ -81,7 +80,6 @@
typedef struct
{
- EmpathyContactManager *manager;
EmpathyContact *contact;
EmpathyContactWidgetFlags flags;
guint widget_id_timeout;
@@ -90,7 +88,6 @@ typedef struct
GtkWidget *vbox_contact_widget;
/* Contact */
- GtkWidget *hbox_contact;
GtkWidget *widget_avatar;
GtkWidget *widget_account;
GtkWidget *image_account;
@@ -104,6 +101,7 @@ typedef struct
GtkWidget *grid_contact;
GtkWidget *vbox_avatar;
GtkWidget *favourite_checkbox;
+ GtkWidget *label_details;
/* Location */
GtkWidget *vbox_location;
@@ -1335,19 +1333,6 @@ contact_widget_presence_notify_cb (EmpathyContactWidget *information)
gtk_widget_show (information->image_state);
}
-static void
-contact_widget_favourites_changed_cb (EmpathyContactManager *manager,
- EmpathyContact *contact,
- gboolean is_favourite,
- EmpathyContactWidget *information)
-{
- if (contact != information->contact)
- return;
-
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (
- information->favourite_checkbox), is_favourite);
-}
-
static void
contact_widget_remove_contact (EmpathyContactWidget *information)
{
@@ -1449,24 +1434,19 @@ contact_widget_contact_update (EmpathyContactWidget *information)
contact_widget_presence_notify_cb (information);
contact_widget_avatar_notify_cb (information);
- if (information->flags & EMPATHY_CONTACT_WIDGET_EDIT_FAVOURITE)
- {
- FolksPersona *persona = empathy_contact_get_persona (
- information->contact);
-
- if (persona != NULL && FOLKS_IS_FAVOURITE_DETAILS (persona))
- {
- gboolean is_favourite = folks_favourite_details_get_is_favourite (
- FOLKS_FAVOURITE_DETAILS (persona));
- contact_widget_favourites_changed_cb (information->manager,
- information->contact, is_favourite, information);
- }
- }
-
gtk_widget_show (information->label_alias);
gtk_widget_show (information->widget_alias);
- gtk_widget_show (information->hbox_presence);
gtk_widget_show (information->widget_avatar);
+
+ gtk_widget_set_visible (information->hbox_presence,
+ !(information->flags & EMPATHY_CONTACT_WIDGET_NO_STATUS));
+
+ if (empathy_contact_is_user (information->contact))
+ gtk_label_set_text (GTK_LABEL (information->label_details),
+ _("Personal Details"));
+ else
+ gtk_label_set_text (GTK_LABEL (information->label_details),
+ _("Contact Details"));
}
else
{
@@ -1582,20 +1562,6 @@ contact_widget_id_focus_out_cb (GtkWidget *widget,
return FALSE;
}
-static void
-favourite_toggled_cb (GtkToggleButton *button,
- EmpathyContactWidget *information)
-{
- FolksPersona *persona = empathy_contact_get_persona (information->contact);
-
- if (persona != NULL && FOLKS_IS_FAVOURITE_DETAILS (persona))
- {
- gboolean active = gtk_toggle_button_get_active (button);
- folks_favourite_details_set_is_favourite (
- FOLKS_FAVOURITE_DETAILS (persona), active);
- }
-}
-
static void
contact_widget_contact_setup (EmpathyContactWidget *information)
{
@@ -1737,25 +1703,6 @@ contact_widget_contact_setup (EmpathyContactWidget *information)
gtk_label_set_selectable (GTK_LABEL (information->label_status), FALSE);
}
gtk_widget_show (information->widget_alias);
-
- /* Favorite */
- if (information->flags & EMPATHY_CONTACT_WIDGET_EDIT_FAVOURITE)
- {
- information->favourite_checkbox = gtk_check_button_new_with_label (
- _("Favorite"));
-
- g_signal_connect (information->favourite_checkbox, "toggled",
- G_CALLBACK (favourite_toggled_cb), information);
-
- gtk_grid_attach (GTK_GRID (information->grid_contact),
- information->favourite_checkbox, 0, 3, 1, 1);
-
- information->fav_sig_id = g_signal_connect (information->manager,
- "favourites-changed",
- G_CALLBACK (contact_widget_favourites_changed_cb), information);
-
- gtk_widget_show (information->favourite_checkbox);
- }
}
static void
@@ -1769,11 +1716,6 @@ contact_widget_destroy_cb (GtkWidget *widget,
g_source_remove (information->widget_id_timeout);
}
- if (information->fav_sig_id != 0)
- g_signal_handler_disconnect (information->manager, information->fav_sig_id);
-
- g_object_unref (information->manager);
-
g_slice_free (EmpathyContactWidget, information);
}
@@ -1803,7 +1745,6 @@ empathy_contact_widget_new (EmpathyContact *contact,
"libempathy-gtk");
gui = empathy_builder_get_file (filename,
"vbox_contact_widget", &information->vbox_contact_widget,
- "hbox_contact", &information->hbox_contact,
"hbox_presence", &information->hbox_presence,
"label_alias", &information->label_alias,
"image_state", &information->image_state,
@@ -1822,6 +1763,7 @@ empathy_contact_widget_new (EmpathyContact *contact,
"vbox_client", &information->vbox_client,
"grid_client", &information->grid_client,
"hbox_client_requested", &information->hbox_client_requested,
+ "label_details", &information->label_details,
NULL);
g_free (filename);
@@ -1834,8 +1776,6 @@ empathy_contact_widget_new (EmpathyContact *contact,
"EmpathyContactWidget",
information);
- information->manager = empathy_contact_manager_dup_singleton ();
-
/* Create widgets */
contact_widget_contact_setup (information);
contact_widget_details_setup (information);
diff --git a/libempathy-gtk/empathy-contact-widget.h b/libempathy-gtk/empathy-contact-widget.h
index fb684a41..2533248b 100644
--- a/libempathy-gtk/empathy-contact-widget.h
+++ b/libempathy-gtk/empathy-contact-widget.h
@@ -61,9 +61,9 @@ typedef enum
EMPATHY_CONTACT_WIDGET_FOR_TOOLTIP = 1 << 5,
EMPATHY_CONTACT_WIDGET_SHOW_LOCATION = 1 << 6,
EMPATHY_CONTACT_WIDGET_NO_SET_ALIAS = 1 << 7,
- EMPATHY_CONTACT_WIDGET_EDIT_FAVOURITE = 1 << 8,
- EMPATHY_CONTACT_WIDGET_SHOW_DETAILS = 1 << 9,
- EMPATHY_CONTACT_WIDGET_EDIT_DETAILS = 1 << 10,
+ EMPATHY_CONTACT_WIDGET_SHOW_DETAILS = 1 << 8,
+ EMPATHY_CONTACT_WIDGET_EDIT_DETAILS = 1 << 9,
+ EMPATHY_CONTACT_WIDGET_NO_STATUS = 1 << 10,
} EmpathyContactWidgetFlags;
GtkWidget * empathy_contact_widget_new (EmpathyContact *contact,
diff --git a/libempathy-gtk/empathy-contact-widget.ui b/libempathy-gtk/empathy-contact-widget.ui
index 96e9275e..a8d9fbe7 100644
--- a/libempathy-gtk/empathy-contact-widget.ui
+++ b/libempathy-gtk/empathy-contact-widget.ui
@@ -5,104 +5,75 @@
6
-
+
True
- 6
+ 6
+ 6
+
+
+ True
+ 0
+ Account:
+
+
+
+
-
+
+ True
+ 0
+ Identifier:
+
+
+ 1
+ 0
+
+
+
+
+ True
+ 0
+ Alias:
+
+
+ 2
+ 0
+
+
+
+
True
6
-
- True
- 6
- 6
-
-
- True
- 0
- Account:
-
-
-
-
-
-
- True
- 0
- Identifier:
-
-
- 1
- 0
-
-
-
-
- True
- 0
- Alias:
-
-
- 2
- 0
-
-
-
-
-
-
-
-
-
-
-
+
+ gtk-missing-image
+ False
+ False
0
-
-
- True
- 6
-
-
- gtk-missing-image
-
-
- False
- False
- 0
-
-
-
-
-
-
-
- 1
-
-
- 0
+ 3
+ 0
- True
-
-
-
-
-
- False
- False
- 1
-
-
-
+ True
+
+
+
+
+
+ 0
+ 2
+ 3
+
+
+
0
@@ -173,7 +144,7 @@
6
-
+
True
0
Contact Details
diff --git a/libempathy-gtk/empathy-contactinfo-utils.c b/libempathy-gtk/empathy-contactinfo-utils.c
index 695d1ee3..b995297b 100644
--- a/libempathy-gtk/empathy-contactinfo-utils.c
+++ b/libempathy-gtk/empathy-contactinfo-utils.c
@@ -314,7 +314,7 @@ empathy_contact_info_create_channel_list_label (TpAccount *account,
g_string_append (label_markup, ", ");
g_string_append_printf (label_markup, "%s ",
- escaped, channel_name);
+ escaped, escaped);
g_free (escaped);
}
diff --git a/libempathy-gtk/empathy-groups-widget.c b/libempathy-gtk/empathy-groups-widget.c
index fa092b6d..5d87ef4f 100644
--- a/libempathy-gtk/empathy-groups-widget.c
+++ b/libempathy-gtk/empathy-groups-widget.c
@@ -32,7 +32,7 @@
#include
#include
-#include
+#include
#include "empathy-groups-widget.h"
#include "empathy-ui-utils.h"
@@ -150,7 +150,7 @@ static void
populate_data (EmpathyGroupsWidget *self)
{
EmpathyGroupsWidgetPriv *priv = GET_PRIV (self);
- EmpathyContactManager *manager;
+ EmpathyConnectionAggregator *aggregator;
GtkTreeIter iter;
GeeSet *member_groups;
GList *all_groups, *l;
@@ -158,12 +158,12 @@ populate_data (EmpathyGroupsWidget *self)
/* Remove the old groups */
gtk_list_store_clear (priv->group_store);
- /* FIXME: We have to get the whole group list from EmpathyContactManager, as
- * libfolks hasn't grown API to get the whole group list yet. (bgo#627398) */
- manager = empathy_contact_manager_dup_singleton ();
- all_groups = empathy_contact_list_get_all_groups (
- EMPATHY_CONTACT_LIST (manager));
- g_object_unref (manager);
+ /* FIXME: We have to get the whole group list from
+ * EmpathyConnectionAggregator, as libfolks hasn't grown API to get the whole
+ * group list yet. (bgo#627398) */
+ aggregator = empathy_connection_aggregator_dup_singleton ();
+ all_groups = empathy_connection_aggregator_get_all_groups (aggregator);
+ g_object_unref (aggregator);
/* Get the list of groups that this #FolksGroupDetails is currently in */
member_groups = folks_group_details_get_groups (priv->group_details);
@@ -182,8 +182,6 @@ populate_data (EmpathyGroupsWidget *self)
COL_EDITABLE, TRUE,
COL_ENABLED, enabled,
-1);
-
- g_free (l->data);
}
g_list_free (all_groups);
diff --git a/libempathy-gtk/empathy-individual-dialogs.c b/libempathy-gtk/empathy-individual-dialogs.c
index ed566329..0aca78fd 100644
--- a/libempathy-gtk/empathy-individual-dialogs.c
+++ b/libempathy-gtk/empathy-individual-dialogs.c
@@ -33,7 +33,6 @@
#include
#include
-#include
#include "empathy-individual-dialogs.h"
#include "empathy-contact-widget.h"
diff --git a/libempathy-gtk/empathy-individual-information-dialog.c b/libempathy-gtk/empathy-individual-information-dialog.c
deleted file mode 100644
index 42bfb205..00000000
--- a/libempathy-gtk/empathy-individual-information-dialog.c
+++ /dev/null
@@ -1,318 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Copyright (C) 2007-2010 Collabora Ltd.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Authors: Xavier Claessens
- * Philip Withnall
- * Travis Reitter
- */
-
-#include
-
-#include
-#include
-
-#include
-#include
-
-#include
-#include
-#include
-
-#include
-#include
-
-#include "empathy-individual-information-dialog.h"
-#include "empathy-individual-widget.h"
-#include "empathy-ui-utils.h"
-
-#define GET_PRIV(obj) EMPATHY_GET_PRIV (obj, EmpathyIndividualInformationDialog)
-typedef struct {
- FolksIndividual *individual;
- GtkWidget *individual_widget; /* child widget */
- GtkWidget *label; /* child widget */
-} EmpathyIndividualInformationDialogPriv;
-
-enum {
- PROP_0,
- PROP_INDIVIDUAL,
-};
-
-/* Info dialogs currently open.
- * Each dialog contains a referenced pointer to its Individual */
-static GList *information_dialogs = NULL;
-
-static void individual_information_dialog_set_individual (
- EmpathyIndividualInformationDialog *dialog,
- FolksIndividual *individual);
-
-G_DEFINE_TYPE (EmpathyIndividualInformationDialog,
- empathy_individual_information_dialog, GTK_TYPE_DIALOG);
-
-static void
-individual_dialogs_response_cb (GtkDialog *dialog,
- gint response,
- GList **dialogs)
-{
- *dialogs = g_list_remove (*dialogs, dialog);
- gtk_widget_destroy (GTK_WIDGET (dialog));
-}
-
-static gint
-individual_dialogs_find (GObject *object,
- FolksIndividual *individual)
-{
- EmpathyIndividualInformationDialogPriv *priv = GET_PRIV (object);
-
- return individual != priv->individual;
-}
-
-void
-empathy_individual_information_dialog_show (FolksIndividual *individual,
- GtkWindow *parent)
-{
- GtkWidget *dialog;
- GList *l;
-
- g_return_if_fail (FOLKS_IS_INDIVIDUAL (individual));
- g_return_if_fail (parent == NULL || GTK_IS_WINDOW (parent));
-
- l = g_list_find_custom (information_dialogs, individual,
- (GCompareFunc) individual_dialogs_find);
-
- if (l != NULL)
- {
- gtk_window_present (GTK_WINDOW (l->data));
- return;
- }
-
- /* Create dialog */
- dialog = g_object_new (EMPATHY_TYPE_INDIVIDUAL_INFORMATION_DIALOG,
- "individual", individual,
- NULL);
-
- information_dialogs = g_list_prepend (information_dialogs, dialog);
- gtk_widget_show (dialog);
-}
-
-static void
-individual_removed_cb (FolksIndividual *individual,
- FolksIndividual *replacement_individual,
- EmpathyIndividualInformationDialog *self)
-{
- individual_information_dialog_set_individual (self,
- replacement_individual);
-
- /* Destroy the dialogue */
- if (replacement_individual == NULL)
- {
- individual_dialogs_response_cb (GTK_DIALOG (self),
- GTK_RESPONSE_DELETE_EVENT, &information_dialogs);
- }
-}
-
-static void
-set_label_visibility (EmpathyIndividualInformationDialog *dialog)
-{
- EmpathyIndividualInformationDialogPriv *priv = GET_PRIV (dialog);
- guint num_personas = 0;
-
- /* Count how many Telepathy personas we have, to see whether we can
- * unlink */
- if (priv->individual != NULL)
- {
- GeeSet *personas;
- GeeIterator *iter;
-
- personas = folks_individual_get_personas (priv->individual);
- iter = gee_iterable_iterator (GEE_ITERABLE (personas));
- while (gee_iterator_next (iter))
- {
- FolksPersona *persona = gee_iterator_get (iter);
- if (empathy_folks_persona_is_interesting (persona))
- num_personas++;
-
- g_clear_object (&persona);
- }
- g_clear_object (&iter);
- }
-
- /* Only make the label visible if we have enough personas */
- gtk_widget_set_visible (priv->label, (num_personas > 1) ? TRUE : FALSE);
-}
-
-static void
-individual_information_dialog_set_individual (
- EmpathyIndividualInformationDialog *dialog,
- FolksIndividual *individual)
-{
- EmpathyIndividualInformationDialogPriv *priv;
-
- g_return_if_fail (EMPATHY_INDIVIDUAL_INFORMATION_DIALOG (dialog));
- g_return_if_fail (individual == NULL || FOLKS_IS_INDIVIDUAL (individual));
-
- priv = GET_PRIV (dialog);
-
- /* Remove the old Individual */
- if (priv->individual != NULL)
- {
- g_signal_handlers_disconnect_by_func (priv->individual,
- (GCallback) individual_removed_cb, dialog);
- }
-
- tp_clear_object (&priv->individual);
-
- /* Add the new Individual */
- priv->individual = individual;
-
- if (individual != NULL)
- {
- g_object_ref (individual);
- g_signal_connect (individual, "removed",
- (GCallback) individual_removed_cb, dialog);
-
- /* Update the UI */
- gtk_window_set_title (GTK_WINDOW (dialog),
- folks_alias_details_get_alias (FOLKS_ALIAS_DETAILS (individual)));
- empathy_individual_widget_set_individual (
- EMPATHY_INDIVIDUAL_WIDGET (priv->individual_widget), individual);
- set_label_visibility (dialog);
- }
-}
-
-static void
-individual_information_dialog_get_property (GObject *object,
- guint param_id,
- GValue *value,
- GParamSpec *pspec)
-{
- EmpathyIndividualInformationDialogPriv *priv = GET_PRIV (object);
-
- switch (param_id) {
- case PROP_INDIVIDUAL:
- g_value_set_object (value, priv->individual);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
- break;
- };
-}
-
-static void
-individual_information_dialog_set_property (GObject *object,
- guint param_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- EmpathyIndividualInformationDialog *dialog =
- EMPATHY_INDIVIDUAL_INFORMATION_DIALOG (object);
-
- switch (param_id) {
- case PROP_INDIVIDUAL:
- individual_information_dialog_set_individual (dialog,
- FOLKS_INDIVIDUAL (g_value_get_object (value)));
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
- break;
- };
-}
-
-static void
-individual_information_dialog_dispose (GObject *object)
-{
- individual_information_dialog_set_individual (
- EMPATHY_INDIVIDUAL_INFORMATION_DIALOG (object), NULL);
-
- G_OBJECT_CLASS (
- empathy_individual_information_dialog_parent_class)->dispose (object);
-}
-
-static void
-empathy_individual_information_dialog_class_init (
- EmpathyIndividualInformationDialogClass *klass)
-{
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
- object_class->dispose = individual_information_dialog_dispose;
- object_class->get_property = individual_information_dialog_get_property;
- object_class->set_property = individual_information_dialog_set_property;
-
- g_object_class_install_property (object_class,
- PROP_INDIVIDUAL,
- g_param_spec_object ("individual",
- "Folks Individual",
- "Folks Individual to base the dialog upon",
- FOLKS_TYPE_INDIVIDUAL,
- G_PARAM_CONSTRUCT |
- G_PARAM_READWRITE |
- G_PARAM_STATIC_STRINGS));
-
- g_type_class_add_private (object_class,
- sizeof (EmpathyIndividualInformationDialogPriv));
-}
-
-static void
-empathy_individual_information_dialog_init (
- EmpathyIndividualInformationDialog *dialog)
-{
- GtkWidget *button;
- GtkBox *content_area;
- gchar *label_string;
- EmpathyIndividualInformationDialogPriv *priv = G_TYPE_INSTANCE_GET_PRIVATE (
- dialog, EMPATHY_TYPE_INDIVIDUAL_INFORMATION_DIALOG,
- EmpathyIndividualInformationDialogPriv);
-
- dialog->priv = priv;
- priv->individual = NULL;
-
- gtk_window_set_resizable (GTK_WINDOW (dialog), TRUE);
-
- content_area = GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog)));
-
- /* Translators: the heading at the top of the Information dialogue */
- label_string = g_strdup_printf ("%s ", _("Linked Contacts"));
- priv->label = gtk_label_new (NULL);
- gtk_label_set_markup (GTK_LABEL (priv->label), label_string);
- g_free (label_string);
-
- gtk_misc_set_alignment (GTK_MISC (priv->label), 0.0, 0.5);
- gtk_misc_set_padding (GTK_MISC (priv->label), 6, 6);
- gtk_box_pack_start (content_area, priv->label, FALSE, TRUE, 0);
- gtk_widget_show (priv->label);
-
- /* Individual widget */
- priv->individual_widget = empathy_individual_widget_new (priv->individual,
- EMPATHY_INDIVIDUAL_WIDGET_SHOW_LOCATION |
- EMPATHY_INDIVIDUAL_WIDGET_SHOW_DETAILS |
- EMPATHY_INDIVIDUAL_WIDGET_SHOW_PERSONAS);
- gtk_container_set_border_width (GTK_CONTAINER (priv->individual_widget), 6);
- gtk_box_pack_start (content_area, priv->individual_widget, TRUE, TRUE, 0);
- gtk_widget_show (priv->individual_widget);
-
- /* Close button */
- button = gtk_button_new_with_label (GTK_STOCK_CLOSE);
- gtk_button_set_use_stock (GTK_BUTTON (button), TRUE);
- gtk_dialog_add_action_widget (GTK_DIALOG (dialog), button,
- GTK_RESPONSE_CLOSE);
- gtk_widget_set_can_default (button, TRUE);
- gtk_window_set_default (GTK_WINDOW (dialog), button);
- gtk_widget_show (button);
-
- g_signal_connect (dialog, "response",
- G_CALLBACK (individual_dialogs_response_cb), &information_dialogs);
-}
diff --git a/libempathy-gtk/empathy-individual-information-dialog.h b/libempathy-gtk/empathy-individual-information-dialog.h
deleted file mode 100644
index aad26702..00000000
--- a/libempathy-gtk/empathy-individual-information-dialog.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Copyright (C) 2010 Collabora Ltd.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Authors: Philip Withnall
- * Travis Reitter
- */
-
-#ifndef __EMPATHY_INDIVIDUAL_INFORMATION_DIALOG_H__
-#define __EMPATHY_INDIVIDUAL_INFORMATION_DIALOG_H__
-
-#include
-
-#include
-
-G_BEGIN_DECLS
-
-#define EMPATHY_TYPE_INDIVIDUAL_INFORMATION_DIALOG (empathy_individual_information_dialog_get_type ())
-#define EMPATHY_INDIVIDUAL_INFORMATION_DIALOG(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_INDIVIDUAL_INFORMATION_DIALOG, EmpathyIndividualInformationDialog))
-#define EMPATHY_INDIVIDUAL_INFORMATION_DIALOG_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), EMPATHY_TYPE_INDIVIDUAL_INFORMATION_DIALOG, EmpathyIndividualInformationDialogClass))
-#define EMPATHY_IS_INDIVIDUAL_INFORMATION_DIALOG(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_INDIVIDUAL_INFORMATION_DIALOG))
-#define EMPATHY_IS_INDIVIDUAL_INFORMATION_DIALOG_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EMPATHY_TYPE_INDIVIDUAL_INFORMATION_DIALOG))
-#define EMPATHY_INDIVIDUAL_INFORMATION_DIALOG_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EMPATHY_TYPE_INDIVIDUAL_INFORMATION_DIALOG, EmpathyIndividualInformationDialogClass))
-
-typedef struct _EmpathyIndividualInformationDialog EmpathyIndividualInformationDialog;
-typedef struct _EmpathyIndividualInformationDialogClass EmpathyIndividualInformationDialogClass;
-
-struct _EmpathyIndividualInformationDialog {
- GtkDialog parent;
-
- /**/
- gpointer priv;
-};
-
-struct _EmpathyIndividualInformationDialogClass {
- GtkDialogClass parent_class;
-};
-
-GType empathy_individual_information_dialog_get_type (void) G_GNUC_CONST;
-
-void empathy_individual_information_dialog_show (FolksIndividual *individual,
- GtkWindow *parent);
-
-G_END_DECLS
-
-#endif /* __EMPATHY_INDIVIDUAL_INFORMATION_DIALOG_H__ */
diff --git a/libempathy-gtk/empathy-individual-linker.c b/libempathy-gtk/empathy-individual-linker.c
deleted file mode 100644
index 7de5e4ad..00000000
--- a/libempathy-gtk/empathy-individual-linker.c
+++ /dev/null
@@ -1,779 +0,0 @@
-/*
- * Copyright (C) 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: Philip Withnall
- */
-
-#include "config.h"
-
-#include
-
-#include
-#include
-
-#include
-
-#include
-
-#include
-#include
-
-#include "empathy-individual-linker.h"
-#include "empathy-individual-store.h"
-#include "empathy-individual-store-manager.h"
-#include "empathy-individual-view.h"
-#include "empathy-individual-widget.h"
-#include "empathy-persona-store.h"
-#include "empathy-persona-view.h"
-
-/**
- * SECTION:empathy-individual-linker
- * @title:EmpathyIndividualLinker
- * @short_description: A widget used to link together #FolksIndividuals
- * @include: libempathy-gtk/empathy-individual-linker.h
- *
- * #EmpathyIndividualLinker is a widget which allows selection of several
- * #FolksIndividuals to link together to form a single new individual.
- * The widget provides a preview of the linked individual.
- */
-
-/**
- * EmpathyIndividualLinker:
- * @parent: parent object
- *
- * Widget which extends #GtkBin to provide a list of #FolksIndividuals
- * to link together.
- */
-
-#define GET_PRIV(obj) EMPATHY_GET_PRIV (obj, EmpathyIndividualLinker)
-
-typedef struct {
- EmpathyIndividualStore *individual_store; /* owned */
- EmpathyIndividualView *individual_view; /* child widget */
- GtkWidget *preview_widget; /* child widget */
- EmpathyPersonaStore *persona_store; /* owned */
- GtkTreeViewColumn *toggle_column; /* child widget */
- GtkCellRenderer *toggle_renderer; /* child widget */
- GtkWidget *search_widget; /* child widget */
-
- FolksIndividual *start_individual; /* owned, allow-none */
- FolksIndividual *new_individual; /* owned, allow-none */
-
- /* Stores the Individuals whose Personas have been added to the
- * new_individual */
- /* unowned Individual (borrowed from EmpathyIndividualStore) -> bool */
- GHashTable *changed_individuals;
-} EmpathyIndividualLinkerPriv;
-
-enum {
- PROP_START_INDIVIDUAL = 1,
- PROP_HAS_CHANGED,
-};
-
-G_DEFINE_TYPE (EmpathyIndividualLinker, empathy_individual_linker,
- GTK_TYPE_BOX);
-
-static void
-contact_toggle_cell_data_func (GtkTreeViewColumn *tree_column,
- GtkCellRenderer *cell,
- GtkTreeModel *tree_model,
- GtkTreeIter *iter,
- EmpathyIndividualLinker *self)
-{
- EmpathyIndividualLinkerPriv *priv;
- FolksIndividual *individual;
- gboolean is_group, individual_added;
-
- priv = GET_PRIV (self);
-
- gtk_tree_model_get (tree_model, iter,
- EMPATHY_INDIVIDUAL_STORE_COL_IS_GROUP, &is_group,
- EMPATHY_INDIVIDUAL_STORE_COL_INDIVIDUAL, &individual,
- -1);
-
- individual_added = GPOINTER_TO_UINT (g_hash_table_lookup (
- priv->changed_individuals, individual));
-
- /* We don't want to show checkboxes next to the group rows.
- * All checkboxes should be sensitive except the checkbox for the start
- * individual, which should be permanently active and insensitive */
- g_object_set (cell,
- "visible", !is_group,
- "sensitive", individual != priv->start_individual,
- "activatable", individual != priv->start_individual,
- "active", individual_added || individual == priv->start_individual,
- NULL);
-
- tp_clear_object (&individual);
-}
-
-static void
-update_toggle_renderers (EmpathyIndividualLinker *self)
-{
- EmpathyIndividualLinkerPriv *priv = GET_PRIV (self);
-
- /* Re-setting the cell data func to the same function causes a refresh of the
- * entire column, ensuring that each toggle button is correctly active or
- * inactive. This is necessary because one Individual might appear multiple
- * times in the list (in different groups), so toggling one instance of the
- * Individual should toggle all of them. */
- gtk_tree_view_column_set_cell_data_func (priv->toggle_column,
- priv->toggle_renderer,
- (GtkTreeCellDataFunc) contact_toggle_cell_data_func, self, NULL);
-}
-
-static void
-link_individual (EmpathyIndividualLinker *self,
- FolksIndividual *individual)
-{
- EmpathyIndividualLinkerPriv *priv = GET_PRIV (self);
- GeeSet *old_personas, *new_personas;
- GeeHashSet *final_personas;
- gboolean personas_changed;
-
- /* Add the individual to the link */
- g_hash_table_insert (priv->changed_individuals, individual,
- GUINT_TO_POINTER (TRUE));
-
- /* Add personas which are in @individual to priv->new_individual, adding them
- * to the set of personas. */
- old_personas = folks_individual_get_personas (individual);
- new_personas = folks_individual_get_personas (priv->new_individual);
- final_personas = gee_hash_set_new (FOLKS_TYPE_PERSONA, g_object_ref,
- g_object_unref, g_direct_hash, g_direct_equal);
- gee_collection_add_all (GEE_COLLECTION (final_personas),
- GEE_COLLECTION (old_personas));
- personas_changed = gee_collection_add_all (GEE_COLLECTION (final_personas),
- GEE_COLLECTION (new_personas));
-
- /* avoid updating all values in the Individual if the set of personas doesn't
- * actually change */
- if (personas_changed)
- {
- folks_individual_set_personas (priv->new_individual,
- GEE_SET (final_personas));
- }
-
- g_clear_object (&final_personas);
-
- /* Update the toggle renderers, so that if this Individual is listed in
- * another group in the EmpathyIndividualView, the toggle button for that
- * group is updated. */
- update_toggle_renderers (self);
-
- g_object_notify (G_OBJECT (self), "has-changed");
-}
-
-static void
-unlink_individual (EmpathyIndividualLinker *self,
- FolksIndividual *individual)
-{
- EmpathyIndividualLinkerPriv *priv = GET_PRIV (self);
- GeeSet *removed_personas, *old_personas;
- GeeHashSet *final_personas;
- gboolean personas_changed;
-
- /* Remove the individual from the link */
- g_hash_table_remove (priv->changed_individuals, individual);
-
- /* Remove personas which are in @individual from priv->new_individual. */
- old_personas = folks_individual_get_personas (priv->new_individual);
- removed_personas = folks_individual_get_personas (individual);
-
- final_personas = gee_hash_set_new (FOLKS_TYPE_PERSONA, g_object_ref,
- g_object_unref, g_direct_hash, g_direct_equal);
- gee_collection_add_all (GEE_COLLECTION (final_personas),
- GEE_COLLECTION (old_personas));
- personas_changed = gee_collection_remove_all (GEE_COLLECTION (final_personas),
- GEE_COLLECTION (removed_personas));
-
- if (personas_changed)
- {
- folks_individual_set_personas (priv->new_individual,
- GEE_SET (final_personas));
- }
-
- g_clear_object (&final_personas);
-
- /* Update the toggle renderers, so that if this Individual is listed in
- * another group in the EmpathyIndividualView, the toggle button for that
- * group is updated. */
- update_toggle_renderers (self);
-
- g_object_notify (G_OBJECT (self), "has-changed");
-}
-
-static void
-toggle_individual_row (EmpathyIndividualLinker *self,
- GtkTreePath *path)
-{
- EmpathyIndividualLinkerPriv *priv = GET_PRIV (self);
- FolksIndividual *individual;
- GtkTreeIter iter;
- GtkTreeModel *tree_model;
- gboolean individual_added;
-
- tree_model = gtk_tree_view_get_model (GTK_TREE_VIEW (priv->individual_view));
-
- gtk_tree_model_get_iter (tree_model, &iter, path);
- gtk_tree_model_get (tree_model, &iter,
- EMPATHY_INDIVIDUAL_STORE_COL_INDIVIDUAL, &individual,
- -1);
-
- if (individual == NULL)
- return;
-
- individual_added = GPOINTER_TO_UINT (g_hash_table_lookup (
- priv->changed_individuals, individual));
-
- /* Toggle the Individual's linked status */
- if (individual_added)
- unlink_individual (self, individual);
- else
- link_individual (self, individual);
-
- g_object_unref (individual);
-}
-
-static void
-row_activated_cb (EmpathyIndividualView *view,
- GtkTreePath *path,
- GtkTreeViewColumn *column,
- EmpathyIndividualLinker *self)
-{
- toggle_individual_row (self, path);
-}
-
-static void
-row_toggled_cb (GtkCellRendererToggle *cell_renderer,
- const gchar *path,
- EmpathyIndividualLinker *self)
-{
- GtkTreePath *tree_path = gtk_tree_path_new_from_string (path);
- toggle_individual_row (self, tree_path);
- gtk_tree_path_free (tree_path);
-}
-
-static gboolean
-individual_view_drag_motion_cb (GtkWidget *widget,
- GdkDragContext *context,
- gint x,
- gint y,
- guint time_)
-{
- EmpathyIndividualView *view = EMPATHY_INDIVIDUAL_VIEW (widget);
- GdkAtom target;
-
- target = gtk_drag_dest_find_target (GTK_WIDGET (view), context, NULL);
-
- if (target == gdk_atom_intern_static_string ("text/x-persona-id"))
- {
- GtkTreePath *path;
-
- /* FIXME: It doesn't make sense for us to highlight a specific row or
- * position to drop a Persona in, so just highlight the entire widget.
- * Since I can't find a way to do this, just highlight the first possible
- * position in the tree. */
- gdk_drag_status (context, gdk_drag_context_get_suggested_action (context),
- time_);
-
- path = gtk_tree_path_new_first ();
- gtk_tree_view_set_drag_dest_row (GTK_TREE_VIEW (view), path,
- GTK_TREE_VIEW_DROP_BEFORE);
- gtk_tree_path_free (path);
-
- return TRUE;
- }
-
- /* Unknown or unhandled drag target */
- gdk_drag_status (context, GDK_ACTION_DEFAULT, time_);
- gtk_tree_view_set_drag_dest_row (GTK_TREE_VIEW (view), NULL, 0);
-
- return FALSE;
-}
-
-static gboolean
-individual_view_drag_persona_received_cb (EmpathyIndividualView *view,
- GdkDragAction action,
- FolksPersona *persona,
- FolksIndividual *individual,
- EmpathyIndividualLinker *self)
-{
- EmpathyIndividualLinkerPriv *priv = GET_PRIV (self);
-
- /* A Persona has been dragged onto the EmpathyIndividualView (from the
- * EmpathyPersonaView), so we try to remove the Individual which contains
- * the Persona from the link. */
- if (individual != priv->start_individual)
- {
- unlink_individual (self, individual);
- return TRUE;
- }
-
- return FALSE;
-}
-
-static gboolean
-persona_view_drag_individual_received_cb (EmpathyPersonaView *view,
- GdkDragAction action,
- FolksIndividual *individual,
- EmpathyIndividualLinker *self)
-{
- /* An Individual has been dragged onto the EmpathyPersonaView (from the
- * EmpathyIndividualView), so we try to add the Individual to the link. */
- link_individual (self, individual);
-
- return TRUE;
-}
-
-static void
-set_up (EmpathyIndividualLinker *self)
-{
- EmpathyIndividualLinkerPriv *priv;
- EmpathyIndividualManager *individual_manager;
- GtkWidget *top_vbox;
- GtkPaned *paned;
- GtkWidget *label, *scrolled_window;
- GtkBox *vbox;
- EmpathyPersonaView *persona_view;
- gchar *tmp;
- GtkWidget *alignment;
-
- priv = GET_PRIV (self);
-
- top_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
-
- /* Layout panes */
-
- paned = GTK_PANED (gtk_paned_new (GTK_ORIENTATION_HORIZONTAL));
-
- /* Left column heading */
- alignment = gtk_alignment_new (0.5, 0.5, 1, 1);
- gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 0, 0, 6);
- gtk_widget_show (alignment);
-
- vbox = GTK_BOX (gtk_box_new (GTK_ORIENTATION_VERTICAL, 6));
- label = gtk_label_new (NULL);
- tmp = g_strdup_printf ("%s ", _("Select contacts to link"));
- gtk_label_set_markup (GTK_LABEL (label), tmp);
- g_free (tmp);
- gtk_box_pack_start (vbox, label, FALSE, TRUE, 0);
- gtk_widget_show (label);
-
- /* Individual selector */
- individual_manager = empathy_individual_manager_dup_singleton ();
- priv->individual_store = EMPATHY_INDIVIDUAL_STORE (
- empathy_individual_store_manager_new (individual_manager));
- g_object_unref (individual_manager);
-
- empathy_individual_store_set_show_protocols (priv->individual_store, FALSE);
-
- priv->individual_view = empathy_individual_view_new (priv->individual_store,
- EMPATHY_INDIVIDUAL_VIEW_FEATURE_INDIVIDUAL_DRAG |
- EMPATHY_INDIVIDUAL_VIEW_FEATURE_INDIVIDUAL_DROP |
- EMPATHY_INDIVIDUAL_VIEW_FEATURE_PERSONA_DROP,
- EMPATHY_INDIVIDUAL_FEATURE_NONE);
- empathy_individual_view_set_show_offline (priv->individual_view, TRUE);
- empathy_individual_view_set_show_untrusted (priv->individual_view, FALSE);
-
- g_signal_connect (priv->individual_view, "row-activated",
- (GCallback) row_activated_cb, self);
- g_signal_connect (priv->individual_view, "drag-motion",
- (GCallback) individual_view_drag_motion_cb, self);
- g_signal_connect (priv->individual_view, "drag-persona-received",
- (GCallback) individual_view_drag_persona_received_cb, self);
-
- /* Add a checkbox column to the selector */
- priv->toggle_renderer = gtk_cell_renderer_toggle_new ();
- g_signal_connect (priv->toggle_renderer, "toggled",
- (GCallback) row_toggled_cb, self);
-
- priv->toggle_column = gtk_tree_view_column_new ();
- gtk_tree_view_column_pack_start (priv->toggle_column, priv->toggle_renderer,
- FALSE);
- gtk_tree_view_column_set_cell_data_func (priv->toggle_column,
- priv->toggle_renderer,
- (GtkTreeCellDataFunc) contact_toggle_cell_data_func, self, NULL);
-
- gtk_tree_view_insert_column (GTK_TREE_VIEW (priv->individual_view),
- priv->toggle_column, 0);
-
- scrolled_window = gtk_scrolled_window_new (NULL, NULL);
- gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
- GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
- gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_window),
- GTK_SHADOW_IN);
- gtk_container_add (GTK_CONTAINER (scrolled_window),
- GTK_WIDGET (priv->individual_view));
- gtk_widget_show (GTK_WIDGET (priv->individual_view));
-
- gtk_box_pack_start (vbox, scrolled_window, TRUE, TRUE, 0);
- gtk_widget_show (scrolled_window);
-
- /* Live search */
- priv->search_widget = empathy_live_search_new (
- GTK_WIDGET (priv->individual_view));
- empathy_individual_view_set_live_search (priv->individual_view,
- EMPATHY_LIVE_SEARCH (priv->search_widget));
-
- gtk_box_pack_end (vbox, priv->search_widget, FALSE, TRUE, 0);
-
- gtk_container_add (GTK_CONTAINER (alignment), GTK_WIDGET (vbox));
- gtk_paned_pack1 (paned, alignment, TRUE, FALSE);
- gtk_widget_show (GTK_WIDGET (vbox));
-
- /* Right column heading */
- alignment = gtk_alignment_new (0.5, 0.5, 1, 1);
- gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 0, 6, 0);
- gtk_widget_show (alignment);
-
- vbox = GTK_BOX (gtk_box_new (GTK_ORIENTATION_VERTICAL, 6));
- label = gtk_label_new (NULL);
- tmp = g_strdup_printf ("%s ", _("New contact preview"));
- gtk_label_set_markup (GTK_LABEL (label), tmp);
- g_free (tmp);
- gtk_box_pack_start (vbox, label, FALSE, TRUE, 0);
- gtk_widget_show (label);
-
- /* New individual preview */
- priv->preview_widget = empathy_individual_widget_new (priv->new_individual,
- EMPATHY_INDIVIDUAL_WIDGET_SHOW_DETAILS);
- gtk_box_pack_start (vbox, priv->preview_widget, FALSE, TRUE, 0);
- gtk_widget_show (priv->preview_widget);
-
- /* Persona list */
- scrolled_window = gtk_scrolled_window_new (NULL, NULL);
- gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
- GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
- gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_window),
- GTK_SHADOW_IN);
-
- priv->persona_store = empathy_persona_store_new (priv->new_individual);
- empathy_persona_store_set_show_protocols (priv->persona_store, TRUE);
- persona_view = empathy_persona_view_new (priv->persona_store,
- EMPATHY_PERSONA_VIEW_FEATURE_ALL);
- empathy_persona_view_set_show_offline (persona_view, TRUE);
-
- g_signal_connect (persona_view, "drag-individual-received",
- (GCallback) persona_view_drag_individual_received_cb, self);
-
- gtk_container_add (GTK_CONTAINER (scrolled_window),
- GTK_WIDGET (persona_view));
- gtk_widget_show (GTK_WIDGET (persona_view));
-
- gtk_box_pack_start (vbox, scrolled_window, TRUE, TRUE, 0);
- gtk_widget_show (scrolled_window);
-
- gtk_container_add (GTK_CONTAINER (alignment), GTK_WIDGET (vbox));
- gtk_paned_pack2 (paned, alignment, TRUE, FALSE);
- gtk_widget_show (GTK_WIDGET (vbox));
-
- gtk_widget_show (GTK_WIDGET (paned));
-
- /* Footer label */
- label = gtk_label_new (NULL);
- tmp = g_strdup_printf ("%s ",
- _("Contacts selected in the list on the left will be linked together."));
- gtk_label_set_markup (GTK_LABEL (label), tmp);
- g_free (tmp);
- gtk_widget_show (label);
-
- gtk_box_pack_start (GTK_BOX (top_vbox), GTK_WIDGET (paned), TRUE, TRUE, 0);
- gtk_box_pack_start (GTK_BOX (top_vbox), label, FALSE, TRUE, 0);
-
- /* Add the main vbox to the bin */
- gtk_box_pack_start (GTK_BOX (self), GTK_WIDGET (top_vbox), TRUE, TRUE, 0);
- gtk_widget_show (GTK_WIDGET (top_vbox));
-}
-
-static void
-empathy_individual_linker_init (EmpathyIndividualLinker *self)
-{
- EmpathyIndividualLinkerPriv *priv = G_TYPE_INSTANCE_GET_PRIVATE (self,
- EMPATHY_TYPE_INDIVIDUAL_LINKER, EmpathyIndividualLinkerPriv);
-
- self->priv = priv;
-
- priv->changed_individuals = g_hash_table_new (NULL, NULL);
-
- set_up (self);
-}
-
-static void
-get_property (GObject *object,
- guint param_id,
- GValue *value,
- GParamSpec *pspec)
-{
- EmpathyIndividualLinkerPriv *priv;
-
- priv = GET_PRIV (object);
-
- switch (param_id)
- {
- case PROP_START_INDIVIDUAL:
- g_value_set_object (value, priv->start_individual);
- break;
- case PROP_HAS_CHANGED:
- g_value_set_boolean (value, empathy_individual_linker_get_has_changed (
- EMPATHY_INDIVIDUAL_LINKER (object)));
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
- break;
- }
-}
-
-static void
-set_property (GObject *object,
- guint param_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- switch (param_id)
- {
- case PROP_START_INDIVIDUAL:
- empathy_individual_linker_set_start_individual (
- EMPATHY_INDIVIDUAL_LINKER (object), g_value_get_object (value));
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
- break;
- }
-}
-
-static void
-dispose (GObject *object)
-{
- EmpathyIndividualLinkerPriv *priv = GET_PRIV (object);
-
- tp_clear_object (&priv->individual_store);
- tp_clear_object (&priv->persona_store);
- tp_clear_object (&priv->start_individual);
- tp_clear_object (&priv->new_individual);
-
- G_OBJECT_CLASS (empathy_individual_linker_parent_class)->dispose (object);
-}
-
-static void
-finalize (GObject *object)
-{
- EmpathyIndividualLinkerPriv *priv = GET_PRIV (object);
-
- g_hash_table_unref (priv->changed_individuals);
-
- G_OBJECT_CLASS (empathy_individual_linker_parent_class)->finalize (object);
-}
-
-static void
-empathy_individual_linker_class_init (EmpathyIndividualLinkerClass *klass)
-{
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
- object_class->get_property = get_property;
- object_class->set_property = set_property;
- object_class->dispose = dispose;
- object_class->finalize = finalize;
-
- /**
- * EmpathyIndividualLinker:start-individual:
- *
- * The #FolksIndividual to link other individuals to. This individual is
- * selected by default in the list of individuals, and cannot be unselected.
- * This ensures that empathy_individual_linker_get_linked_personas() will
- * always return at least one persona to link.
- */
- g_object_class_install_property (object_class, PROP_START_INDIVIDUAL,
- g_param_spec_object ("start-individual",
- "Start Individual",
- "The #FolksIndividual to link other individuals to.",
- FOLKS_TYPE_INDIVIDUAL,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- /**
- * EmpathyIndividualLinker:has-changed:
- *
- * Whether #FolksIndividuals have been added to or removed from
- * the linked individual currently displayed in the widget.
- *
- * This will be %FALSE after the widget is initialised, and set to %TRUE when
- * an individual is checked in the individual view on the left of the widget.
- * If the individual is later unchecked, this will be reset to %FALSE, etc.
- */
- g_object_class_install_property (object_class, PROP_HAS_CHANGED,
- g_param_spec_boolean ("has-changed",
- "Changed?",
- "Whether individuals have been added to or removed from the linked "
- "individual currently displayed in the widget.",
- FALSE,
- G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
-
- g_type_class_add_private (object_class, sizeof (EmpathyIndividualLinkerPriv));
-}
-
-/**
- * empathy_individual_linker_new:
- * @start_individual: (allow-none): the #FolksIndividual to link to, or %NULL
- *
- * Creates a new #EmpathyIndividualLinker.
- *
- * Return value: a new #EmpathyIndividualLinker
- */
-GtkWidget *
-empathy_individual_linker_new (FolksIndividual *start_individual)
-{
- g_return_val_if_fail (start_individual == NULL ||
- FOLKS_IS_INDIVIDUAL (start_individual), NULL);
-
- return g_object_new (EMPATHY_TYPE_INDIVIDUAL_LINKER,
- "start-individual", start_individual,
- NULL);
-}
-
-/**
- * empathy_individual_linker_get_start_individual:
- * @self: an #EmpathyIndividualLinker
- *
- * Get the value of #EmpathyIndividualLinker:start-individual.
- *
- * Return value: (transfer none): the start individual for linking, or %NULL
- */
-FolksIndividual *
-empathy_individual_linker_get_start_individual (EmpathyIndividualLinker *self)
-{
- g_return_val_if_fail (EMPATHY_IS_INDIVIDUAL_LINKER (self), NULL);
-
- return GET_PRIV (self)->start_individual;
-}
-
-/**
- * empathy_individual_linker_set_start_individual:
- * @self: an #EmpathyIndividualLinker
- * @individual: (allow-none): the start individual, or %NULL
- *
- * Set the value of #EmpathyIndividualLinker:start-individual to @individual.
- */
-void
-empathy_individual_linker_set_start_individual (EmpathyIndividualLinker *self,
- FolksIndividual *individual)
-{
- EmpathyIndividualLinkerPriv *priv;
-
- g_return_if_fail (EMPATHY_IS_INDIVIDUAL_LINKER (self));
- g_return_if_fail (individual == NULL || FOLKS_IS_INDIVIDUAL (individual));
-
- priv = GET_PRIV (self);
-
- tp_clear_object (&priv->start_individual);
- tp_clear_object (&priv->new_individual);
- g_hash_table_remove_all (priv->changed_individuals);
-
- if (individual != NULL)
- {
- priv->start_individual = g_object_ref (individual);
- priv->new_individual = folks_individual_new (
- folks_individual_get_personas (individual));
- empathy_individual_view_set_store (priv->individual_view,
- priv->individual_store);
- }
- else
- {
- priv->start_individual = NULL;
- priv->new_individual = NULL;
-
- /* We only display Individuals in the individual view if we have a
- * new_individual to link them into */
- empathy_individual_view_set_store (priv->individual_view, NULL);
- }
-
- empathy_individual_widget_set_individual (
- EMPATHY_INDIVIDUAL_WIDGET (priv->preview_widget), priv->new_individual);
- empathy_persona_store_set_individual (priv->persona_store,
- priv->new_individual);
-
- g_object_freeze_notify (G_OBJECT (self));
- g_object_notify (G_OBJECT (self), "start-individual");
- g_object_notify (G_OBJECT (self), "has-changed");
- g_object_thaw_notify (G_OBJECT (self));
-}
-
-/**
- * empathy_individual_linker_get_linked_personas:
- * @self: an #EmpathyIndividualLinker
- *
- * Return a list of the #FolksPersonas which comprise the linked
- * individual currently displayed in the widget.
- *
- * The return value is guaranteed to contain at least one element.
- *
- * Return value: (transfer none) (element-type Folks.Persona): a set of
- * #FolksPersonas to link together
- */
-GeeSet *
-empathy_individual_linker_get_linked_personas (EmpathyIndividualLinker *self)
-{
- EmpathyIndividualLinkerPriv *priv;
- GeeSet *personas;
-
- g_return_val_if_fail (EMPATHY_IS_INDIVIDUAL_LINKER (self), NULL);
-
- priv = GET_PRIV (self);
-
- if (priv->new_individual == NULL)
- return NULL;
-
- personas = folks_individual_get_personas (priv->new_individual);
- g_assert (personas != NULL);
- return personas;
-}
-
-/**
- * empathy_individual_linker_get_has_changed:
- * @self: an #EmpathyIndividualLinker
- *
- * Return whether #FolksIndividuals have been added to or removed from
- * the linked individual currently displayed in the widget.
- *
- * This will be %FALSE after the widget is initialised, and set to %TRUE when
- * an individual is checked in the individual view on the left of the widget.
- * If the individual is later unchecked, this will be reset to %FALSE, etc.
- *
- * Return value: %TRUE if the linked individual has been changed, %FALSE
- * otherwise
- */
-gboolean
-empathy_individual_linker_get_has_changed (EmpathyIndividualLinker *self)
-{
- EmpathyIndividualLinkerPriv *priv;
-
- g_return_val_if_fail (EMPATHY_IS_INDIVIDUAL_LINKER (self), FALSE);
-
- priv = GET_PRIV (self);
-
- return (g_hash_table_size (priv->changed_individuals) > 0) ? TRUE : FALSE;
-}
-
-void
-empathy_individual_linker_set_search_text (EmpathyIndividualLinker *self,
- const gchar *search_text)
-{
- g_return_if_fail (EMPATHY_IS_INDIVIDUAL_LINKER (self));
-
- empathy_live_search_set_text (
- EMPATHY_LIVE_SEARCH (GET_PRIV (self)->search_widget), search_text);
-}
diff --git a/libempathy-gtk/empathy-individual-linker.h b/libempathy-gtk/empathy-individual-linker.h
deleted file mode 100644
index 3079fa09..00000000
--- a/libempathy-gtk/empathy-individual-linker.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Copyright (C) 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: Philip Withnall
- */
-
-#ifndef __EMPATHY_INDIVIDUAL_LINKER_H__
-#define __EMPATHY_INDIVIDUAL_LINKER_H__
-
-#include
-
-#include
-
-G_BEGIN_DECLS
-
-#define EMPATHY_TYPE_INDIVIDUAL_LINKER (empathy_individual_linker_get_type ())
-#define EMPATHY_INDIVIDUAL_LINKER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), \
- EMPATHY_TYPE_INDIVIDUAL_LINKER, EmpathyIndividualLinker))
-#define EMPATHY_INDIVIDUAL_LINKER_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), \
- EMPATHY_TYPE_INDIVIDUAL_LINKER, EmpathyIndividualLinkerClass))
-#define EMPATHY_IS_INDIVIDUAL_LINKER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), \
- EMPATHY_TYPE_INDIVIDUAL_LINKER))
-#define EMPATHY_IS_INDIVIDUAL_LINKER_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), \
- EMPATHY_TYPE_INDIVIDUAL_LINKER))
-#define EMPATHY_INDIVIDUAL_LINKER_GET_CLASS(o) ( \
- G_TYPE_INSTANCE_GET_CLASS ((o), EMPATHY_TYPE_INDIVIDUAL_LINKER, \
- EmpathyIndividualLinkerClass))
-
-typedef struct {
- GtkBox parent;
-
- /**/
- gpointer priv;
-} EmpathyIndividualLinker;
-
-typedef struct {
- GtkBoxClass parent_class;
-} EmpathyIndividualLinkerClass;
-
-GType empathy_individual_linker_get_type (void) G_GNUC_CONST;
-GtkWidget * empathy_individual_linker_new (FolksIndividual *start_individual);
-
-FolksIndividual * empathy_individual_linker_get_start_individual (
- EmpathyIndividualLinker *self);
-void empathy_individual_linker_set_start_individual (
- EmpathyIndividualLinker *self,
- FolksIndividual *individual);
-
-GeeSet * empathy_individual_linker_get_linked_personas (
- EmpathyIndividualLinker *self);
-
-gboolean empathy_individual_linker_get_has_changed (
- EmpathyIndividualLinker *self);
-
-void empathy_individual_linker_set_search_text (EmpathyIndividualLinker *self,
- const gchar *search_text);
-
-G_END_DECLS
-
-#endif /* __EMPATHY_INDIVIDUAL_LINKER_H__ */
diff --git a/libempathy-gtk/empathy-individual-menu.c b/libempathy-gtk/empathy-individual-menu.c
index e19fde3d..7b8da52d 100644
--- a/libempathy-gtk/empathy-individual-menu.c
+++ b/libempathy-gtk/empathy-individual-menu.c
@@ -26,6 +26,8 @@
#include
#include
+#include
+
#include
#include
@@ -37,6 +39,7 @@
#include
#include
#include
+#include
#include "empathy-account-selector-dialog.h"
#include "empathy-individual-menu.h"
@@ -44,11 +47,10 @@
#include "empathy-log-window.h"
#include "empathy-contact-dialogs.h"
#include "empathy-gtk-enum-types.h"
+#include "empathy-individual-dialogs.h"
#include "empathy-individual-edit-dialog.h"
-#include "empathy-individual-information-dialog.h"
#include "empathy-ui-utils.h"
#include "empathy-share-my-desktop.h"
-#include "empathy-linking-dialog.h"
#include "empathy-call-utils.h"
#include "empathy-individual-store-channel.h"
@@ -60,7 +62,7 @@
typedef struct {
FolksIndividual *individual; /* owned */
EmpathyIndividualFeatureFlags features;
- EmpathyIndividualStore *store;
+ EmpathyIndividualStore *store; /* may be NULL */
} EmpathyIndividualMenuPriv;
enum {
@@ -69,15 +71,33 @@ enum {
PROP_STORE,
};
-enum {
- SIGNAL_LINK_CONTACTS_ACTIVATED,
- LAST_SIGNAL
-};
-
-static guint signals[LAST_SIGNAL];
-
G_DEFINE_TYPE (EmpathyIndividualMenu, empathy_individual_menu, GTK_TYPE_MENU);
+static GtkWidget * empathy_individual_chat_menu_item_new (
+ FolksIndividual *individual);
+static GtkWidget * empathy_individual_sms_menu_item_new (
+ FolksIndividual *individual);
+static GtkWidget * empathy_individual_log_menu_item_new (
+ FolksIndividual *individual);
+static GtkWidget * empathy_individual_info_menu_item_new (
+ FolksIndividual *individual);
+static GtkWidget * empathy_individual_edit_menu_item_new (
+ FolksIndividual *individual);
+static GtkWidget * empathy_individual_invite_menu_item_new (
+ FolksIndividual *individual,
+ EmpathyContact *contact);
+static GtkWidget * empathy_individual_file_transfer_menu_item_new (
+ FolksIndividual *individual);
+static GtkWidget * empathy_individual_share_my_desktop_menu_item_new (
+ FolksIndividual *individual);
+static GtkWidget * empathy_individual_favourite_menu_item_new (
+ FolksIndividual *individual);
+static GtkWidget * empathy_individual_add_menu_item_new (
+ EmpathyIndividualMenu *self,
+ FolksIndividual *individual);
+static GtkWidget * empathy_individiual_block_menu_item_new (
+ FolksIndividual *individual);
+
static void
individual_menu_add_personas (GtkMenuShell *menu,
FolksIndividual *individual,
@@ -117,7 +137,6 @@ individual_menu_add_personas (GtkMenuShell *menu,
gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
gtk_widget_show (item);
- personas = folks_individual_get_personas (individual);
for (c = gee_iterator_first (iter); c; c = gee_iterator_next (iter))
{
GtkWidget *image;
@@ -130,6 +149,8 @@ individual_menu_add_personas (GtkMenuShell *menu,
FolksPersonaStore *store;
const gchar *account;
GtkWidget *action;
+ /* Individual containing only persona */
+ FolksIndividual *single_individual;
if (!empathy_folks_persona_is_interesting (FOLKS_PERSONA (persona)))
goto while_finish;
@@ -139,6 +160,8 @@ individual_menu_add_personas (GtkMenuShell *menu,
goto while_finish;
contact = empathy_contact_dup_from_tp_contact (tp_contact);
+ single_individual = empathy_create_individual_from_tp_contact (
+ tp_contact);
store = folks_persona_get_store (FOLKS_PERSONA (persona));
account = folks_persona_store_get_display_name (store);
@@ -162,7 +185,7 @@ individual_menu_add_personas (GtkMenuShell *menu,
/* Chat */
if (features & EMPATHY_INDIVIDUAL_FEATURE_CHAT)
{
- action = empathy_individual_chat_menu_item_new (NULL, contact);
+ action = empathy_individual_chat_menu_item_new (single_individual);
gtk_menu_shell_append (GTK_MENU_SHELL (contact_submenu), action);
gtk_widget_show (action);
}
@@ -170,7 +193,7 @@ individual_menu_add_personas (GtkMenuShell *menu,
/* SMS */
if (features & EMPATHY_INDIVIDUAL_FEATURE_SMS)
{
- action = empathy_individual_sms_menu_item_new (NULL, contact);
+ action = empathy_individual_sms_menu_item_new (single_individual);
gtk_menu_shell_append (GTK_MENU_SHELL (contact_submenu), action);
gtk_widget_show (action);
}
@@ -178,12 +201,14 @@ individual_menu_add_personas (GtkMenuShell *menu,
if (features & EMPATHY_INDIVIDUAL_FEATURE_CALL)
{
/* Audio Call */
- action = empathy_individual_audio_call_menu_item_new (NULL, contact);
+ action = empathy_individual_audio_call_menu_item_new (
+ single_individual);
gtk_menu_shell_append (GTK_MENU_SHELL (contact_submenu), action);
gtk_widget_show (action);
/* Video Call */
- action = empathy_individual_video_call_menu_item_new (NULL, contact);
+ action = empathy_individual_video_call_menu_item_new (
+ single_individual);
gtk_menu_shell_append (GTK_MENU_SHELL (contact_submenu), action);
gtk_widget_show (action);
}
@@ -191,7 +216,7 @@ individual_menu_add_personas (GtkMenuShell *menu,
/* Log */
if (features & EMPATHY_INDIVIDUAL_FEATURE_LOG)
{
- action = empathy_individual_log_menu_item_new (NULL, contact);
+ action = empathy_individual_log_menu_item_new (single_individual);
gtk_menu_shell_append (GTK_MENU_SHELL (contact_submenu), action);
gtk_widget_show (action);
}
@@ -202,21 +227,37 @@ individual_menu_add_personas (GtkMenuShell *menu,
gtk_widget_show (action);
/* File transfer */
- action = empathy_individual_file_transfer_menu_item_new (NULL, contact);
+ action = empathy_individual_file_transfer_menu_item_new (
+ single_individual);
gtk_menu_shell_append (GTK_MENU_SHELL (contact_submenu), action);
gtk_widget_show (action);
/* Share my desktop */
- action = empathy_individual_share_my_desktop_menu_item_new (NULL,
- contact);
+ action = empathy_individual_share_my_desktop_menu_item_new (
+ single_individual);
gtk_menu_shell_append (GTK_MENU_SHELL (contact_submenu), action);
gtk_widget_show (action);
+ /* Block */
+ if (features & EMPATHY_INDIVIDUAL_FEATURE_BLOCK &&
+ (item = empathy_individiual_block_menu_item_new (single_individual))
+ != NULL) {
+ GtkWidget *sep;
+
+ sep = gtk_separator_menu_item_new ();
+ gtk_menu_shell_append (GTK_MENU_SHELL (contact_submenu), sep);
+ gtk_widget_show (sep);
+
+ gtk_menu_shell_append (GTK_MENU_SHELL (contact_submenu), item);
+ gtk_widget_show (item);
+ }
+
gtk_menu_shell_append (GTK_MENU_SHELL (menu), contact_item);
gtk_widget_show (contact_item);
g_free (label);
g_object_unref (contact);
+ g_object_unref (single_individual);
while_finish:
g_clear_object (&persona);
@@ -225,16 +266,6 @@ while_finish:
g_clear_object (&iter);
}
-static void
-individual_link_menu_item_activate_cb (EmpathyIndividualMenu *self)
-{
- EmpathyIndividualMenuPriv *priv = GET_PRIV (self);
- GtkWidget *dialog;
-
- dialog = empathy_linking_dialog_show (priv->individual, NULL);
- g_signal_emit (self, signals[SIGNAL_LINK_CONTACTS_ACTIVATED], 0, dialog);
-}
-
static void
empathy_individual_menu_init (EmpathyIndividualMenu *self)
{
@@ -443,6 +474,210 @@ add_phone_numbers (EmpathyIndividualMenu *self)
}
}
+/* return a list of TpContact supporting the blocking iface */
+static GList *
+get_contacts_supporting_blocking (FolksIndividual *individual)
+{
+ GeeSet *personas;
+ GeeIterator *iter;
+ GList *result = NULL;
+
+ personas = folks_individual_get_personas (individual);
+
+ iter = gee_iterable_iterator (GEE_ITERABLE (personas));
+ while (gee_iterator_next (iter))
+ {
+ TpfPersona *persona = gee_iterator_get (iter);
+ TpContact *contact;
+ TpConnection *conn;
+
+ if (!TPF_IS_PERSONA (persona))
+ continue;
+
+ contact = tpf_persona_get_contact (persona);
+ if (contact == NULL)
+ continue;
+
+ conn = tp_contact_get_connection (contact);
+
+ if (tp_proxy_has_interface_by_id (conn,
+ TP_IFACE_QUARK_CONNECTION_INTERFACE_CONTACT_BLOCKING))
+ result = g_list_prepend (result, contact);
+ }
+
+ g_clear_object (&iter);
+
+ return result;
+}
+
+typedef struct
+{
+ gboolean blocked;
+ GtkWidget *parent;
+} GotAvatarCtx;
+
+static GotAvatarCtx *
+got_avatar_ctx_new (gboolean blocked,
+ GtkWidget *parent)
+{
+ GotAvatarCtx *ctx = g_slice_new0 (GotAvatarCtx);
+
+ ctx->blocked = blocked;
+ ctx->parent = parent != NULL ? g_object_ref (parent) : NULL;
+ return ctx;
+}
+
+static void
+got_avatar_ctx_free (GotAvatarCtx *ctx)
+{
+ g_clear_object (&ctx->parent);
+ g_slice_free (GotAvatarCtx, ctx);
+}
+
+static void
+got_avatar (GObject *source_object,
+ GAsyncResult *result,
+ gpointer user_data)
+{
+ FolksIndividual *individual = FOLKS_INDIVIDUAL (source_object);
+ GotAvatarCtx *ctx = user_data;
+ GdkPixbuf *avatar;
+ GError *error = NULL;
+ gboolean abusive = FALSE;
+ EmpathyIndividualManager *manager;
+
+ avatar = empathy_pixbuf_avatar_from_individual_scaled_finish (individual,
+ result, &error);
+
+ if (error != NULL)
+ {
+ DEBUG ("Could not get avatar: %s", error->message);
+ g_error_free (error);
+ }
+
+ if (ctx->blocked) {
+ /* confirm the user really wishes to block the contact */
+ if (!empathy_block_individual_dialog_show (GTK_WINDOW (ctx->parent),
+ individual, avatar, &abusive))
+ goto out;
+ }
+
+ manager = empathy_individual_manager_dup_singleton ();
+
+ empathy_individual_manager_set_blocked (manager, individual,
+ ctx->blocked, abusive);
+
+ g_object_unref (manager);
+
+out:
+ g_clear_object (&avatar);
+ got_avatar_ctx_free (ctx);
+}
+
+static void
+empathy_individual_block_menu_item_toggled (GtkCheckMenuItem *item,
+ FolksIndividual *individual)
+{
+ GotAvatarCtx *ctx;
+ gboolean blocked;
+ GtkWidget *parent;
+
+ /* @item may be destroyed while the async call is running to get the things
+ * we need from it right now. */
+ blocked = gtk_check_menu_item_get_active (item);
+
+ parent = g_object_get_data (
+ G_OBJECT (gtk_widget_get_parent (GTK_WIDGET (item))),
+ "window");
+
+ ctx = got_avatar_ctx_new (blocked, parent);
+
+ empathy_pixbuf_avatar_from_individual_scaled_async (individual,
+ 48, 48, NULL, got_avatar, ctx);
+}
+
+static void
+update_block_menu_item (GtkWidget *item,
+ FolksIndividual *individual)
+{
+ GList *contacts, *l;
+ gboolean is_blocked = TRUE;
+
+ contacts = get_contacts_supporting_blocking (individual);
+
+ if (contacts == NULL)
+ is_blocked = FALSE;
+
+ /* Check the menu item if all his personas are blocked */
+ for (l = contacts; l != NULL; l = g_list_next (l))
+ {
+ TpContact *contact = l->data;
+
+ if (!tp_contact_is_blocked (contact))
+ {
+ is_blocked = FALSE;
+ break;
+ }
+ }
+
+ g_signal_handlers_block_by_func (item,
+ empathy_individual_block_menu_item_toggled, individual);
+
+ gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item), is_blocked);
+
+ g_signal_handlers_unblock_by_func (item,
+ empathy_individual_block_menu_item_toggled, individual);
+
+ g_list_free (contacts);
+}
+
+static void
+contact_blocked_changed_cb (TpContact *contact,
+ GParamSpec *spec,
+ GtkWidget *item)
+{
+ FolksIndividual *individual;
+
+ individual = g_object_get_data (G_OBJECT (item), "individual");
+
+ update_block_menu_item (item, individual);
+}
+
+static GtkWidget *
+empathy_individiual_block_menu_item_new (FolksIndividual *individual)
+{
+ GtkWidget *item;
+ GList *contacts, *l;
+
+ contacts = get_contacts_supporting_blocking (individual);
+
+ /* Can't block, no persona supports blocking */
+ if (contacts == NULL)
+ return NULL;
+
+ item = gtk_check_menu_item_new_with_mnemonic (_("_Block Contact"));
+
+ g_object_set_data_full (G_OBJECT (item), "individual",
+ g_object_ref (individual), g_object_unref);
+
+ for (l = contacts; l != NULL; l = g_list_next (l))
+ {
+ TpContact *contact = l->data;
+
+ tp_g_signal_connect_object (contact, "notify::is-blocked",
+ G_CALLBACK (contact_blocked_changed_cb), item, 0);
+ }
+
+ g_signal_connect (item, "toggled",
+ G_CALLBACK (empathy_individual_block_menu_item_toggled), individual);
+
+ update_block_menu_item (item, individual);
+
+ g_list_free (contacts);
+
+ return item;
+}
+
static void
constructed (GObject *object)
{
@@ -472,7 +707,7 @@ constructed (GObject *object)
/* Chat */
if (features & EMPATHY_INDIVIDUAL_FEATURE_CHAT)
{
- item = empathy_individual_chat_menu_item_new (individual, NULL);
+ item = empathy_individual_chat_menu_item_new (individual);
if (item != NULL)
{
gtk_menu_shell_append (shell, item);
@@ -483,7 +718,7 @@ constructed (GObject *object)
/* SMS */
if (features & EMPATHY_INDIVIDUAL_FEATURE_SMS)
{
- item = empathy_individual_sms_menu_item_new (individual, NULL);
+ item = empathy_individual_sms_menu_item_new (individual);
if (item != NULL)
{
gtk_menu_shell_append (shell, item);
@@ -494,12 +729,12 @@ constructed (GObject *object)
if (features & EMPATHY_INDIVIDUAL_FEATURE_CALL)
{
/* Audio Call */
- item = empathy_individual_audio_call_menu_item_new (individual, NULL);
+ item = empathy_individual_audio_call_menu_item_new (individual);
gtk_menu_shell_append (shell, item);
gtk_widget_show (item);
/* Video Call */
- item = empathy_individual_video_call_menu_item_new (individual, NULL);
+ item = empathy_individual_video_call_menu_item_new (individual);
gtk_menu_shell_append (shell, item);
gtk_widget_show (item);
}
@@ -513,14 +748,14 @@ constructed (GObject *object)
gtk_widget_show (item);
/* File transfer */
- item = empathy_individual_file_transfer_menu_item_new (individual, NULL);
+ item = empathy_individual_file_transfer_menu_item_new (individual);
gtk_menu_shell_append (shell, item);
gtk_widget_show (item);
/* Share my desktop */
/* FIXME we should add the "Share my desktop" menu item if Vino is
a registered handler in MC5 */
- item = empathy_individual_share_my_desktop_menu_item_new (individual, NULL);
+ item = empathy_individual_share_my_desktop_menu_item_new (individual);
gtk_menu_shell_append (shell, item);
gtk_widget_show (item);
@@ -530,8 +765,7 @@ constructed (GObject *object)
/* Separator */
if (features & (EMPATHY_INDIVIDUAL_FEATURE_EDIT |
EMPATHY_INDIVIDUAL_FEATURE_INFO |
- EMPATHY_INDIVIDUAL_FEATURE_FAVOURITE |
- EMPATHY_INDIVIDUAL_FEATURE_LINK))
+ EMPATHY_INDIVIDUAL_FEATURE_FAVOURITE))
{
item = gtk_separator_menu_item_new ();
gtk_menu_shell_append (shell, item);
@@ -546,22 +780,10 @@ constructed (GObject *object)
gtk_widget_show (item);
}
- /* Link */
- if (features & EMPATHY_INDIVIDUAL_FEATURE_LINK)
- {
- item = empathy_individual_link_menu_item_new (individual);
- gtk_menu_shell_append (shell, item);
-
- g_signal_connect_swapped (item, "activate",
- (GCallback) individual_link_menu_item_activate_cb, object);
-
- gtk_widget_show (item);
- }
-
/* Log */
if (features & EMPATHY_INDIVIDUAL_FEATURE_LOG)
{
- item = empathy_individual_log_menu_item_new (individual, NULL);
+ item = empathy_individual_log_menu_item_new (individual);
gtk_menu_shell_append (shell, item);
gtk_widget_show (item);
}
@@ -581,6 +803,19 @@ constructed (GObject *object)
gtk_menu_shell_append (shell, item);
gtk_widget_show (item);
}
+
+ /* Separator & Block */
+ if (features & EMPATHY_INDIVIDUAL_FEATURE_BLOCK &&
+ (item = empathy_individiual_block_menu_item_new (individual)) != NULL) {
+ GtkWidget *sep;
+
+ sep = gtk_separator_menu_item_new ();
+ gtk_menu_shell_append (shell, sep);
+ gtk_widget_show (sep);
+
+ gtk_menu_shell_append (shell, item);
+ gtk_widget_show (item);
+ }
}
static void
@@ -690,12 +925,6 @@ empathy_individual_menu_class_init (EmpathyIndividualMenuClass *klass)
EMPATHY_TYPE_INDIVIDUAL_STORE,
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS));
- signals[SIGNAL_LINK_CONTACTS_ACTIVATED] =
- g_signal_new ("link-contacts-activated", G_OBJECT_CLASS_TYPE (klass),
- G_SIGNAL_RUN_LAST, 0, NULL, NULL,
- g_cclosure_marshal_generic,
- G_TYPE_NONE, 1, EMPATHY_TYPE_LINKING_DIALOG);
-
g_type_class_add_private (object_class, sizeof (EmpathyIndividualMenuPriv));
}
@@ -705,7 +934,8 @@ empathy_individual_menu_new (FolksIndividual *individual,
EmpathyIndividualStore *store)
{
g_return_val_if_fail (FOLKS_IS_INDIVIDUAL (individual), NULL);
- g_return_val_if_fail (EMPATHY_IS_INDIVIDUAL_STORE (store), NULL);
+ g_return_val_if_fail (store == NULL ||
+ EMPATHY_IS_INDIVIDUAL_STORE (store), NULL);
g_return_val_if_fail (features != EMPATHY_INDIVIDUAL_FEATURE_NONE, NULL);
return g_object_new (EMPATHY_TYPE_INDIVIDUAL_MENU,
@@ -775,17 +1005,14 @@ empathy_individual_chat_menu_item_activated (GtkMenuItem *item,
empathy_chat_with_contact (contact, empathy_get_current_action_time ());
}
-GtkWidget *
-empathy_individual_chat_menu_item_new (FolksIndividual *individual,
- EmpathyContact *contact)
+static GtkWidget *
+empathy_individual_chat_menu_item_new (FolksIndividual *individual)
{
GtkWidget *item;
GtkWidget *image;
- g_return_val_if_fail ((FOLKS_IS_INDIVIDUAL (individual) &&
- empathy_folks_individual_contains_contact (individual)) ||
- EMPATHY_IS_CONTACT (contact),
- NULL);
+ g_return_val_if_fail (FOLKS_IS_INDIVIDUAL (individual) &&
+ empathy_folks_individual_contains_contact (individual), NULL);
item = gtk_image_menu_item_new_with_mnemonic (_("_Chat"));
image = gtk_image_new_from_icon_name (EMPATHY_IMAGE_MESSAGE,
@@ -793,18 +1020,9 @@ empathy_individual_chat_menu_item_new (FolksIndividual *individual,
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
gtk_widget_show (image);
- if (contact != NULL)
- {
- menu_item_set_contact (item, contact,
- G_CALLBACK (empathy_individual_chat_menu_item_activated),
- EMPATHY_ACTION_CHAT);
- }
- else
- {
- menu_item_set_first_contact (item, individual,
- G_CALLBACK (empathy_individual_chat_menu_item_activated),
- EMPATHY_ACTION_CHAT);
- }
+ menu_item_set_first_contact (item, individual,
+ G_CALLBACK (empathy_individual_chat_menu_item_activated),
+ EMPATHY_ACTION_CHAT);
return item;
}
@@ -822,17 +1040,14 @@ empathy_individual_sms_menu_item_activated (GtkMenuItem *item,
NULL, NULL);
}
-GtkWidget *
-empathy_individual_sms_menu_item_new (FolksIndividual *individual,
- EmpathyContact *contact)
+static GtkWidget *
+empathy_individual_sms_menu_item_new (FolksIndividual *individual)
{
GtkWidget *item;
GtkWidget *image;
- g_return_val_if_fail ((FOLKS_IS_INDIVIDUAL (individual) &&
- empathy_folks_individual_contains_contact (individual)) ||
- EMPATHY_IS_CONTACT (contact),
- NULL);
+ g_return_val_if_fail (FOLKS_IS_INDIVIDUAL (individual) &&
+ empathy_folks_individual_contains_contact (individual), NULL);
item = gtk_image_menu_item_new_with_mnemonic (_("_SMS"));
image = gtk_image_new_from_icon_name (EMPATHY_IMAGE_SMS,
@@ -840,18 +1055,9 @@ empathy_individual_sms_menu_item_new (FolksIndividual *individual,
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
gtk_widget_show (image);
- if (contact != NULL)
- {
- menu_item_set_contact (item, contact,
- G_CALLBACK (empathy_individual_sms_menu_item_activated),
- EMPATHY_ACTION_SMS);
- }
- else
- {
- menu_item_set_first_contact (item, individual,
- G_CALLBACK (empathy_individual_sms_menu_item_activated),
- EMPATHY_ACTION_SMS);
- }
+ menu_item_set_first_contact (item, individual,
+ G_CALLBACK (empathy_individual_sms_menu_item_activated),
+ EMPATHY_ACTION_SMS);
return item;
}
@@ -869,33 +1075,21 @@ empathy_individual_audio_call_menu_item_activated (GtkMenuItem *item,
}
GtkWidget *
-empathy_individual_audio_call_menu_item_new (FolksIndividual *individual,
- EmpathyContact *contact)
+empathy_individual_audio_call_menu_item_new (FolksIndividual *individual)
{
GtkWidget *item;
GtkWidget *image;
- g_return_val_if_fail (FOLKS_IS_INDIVIDUAL (individual) ||
- EMPATHY_IS_CONTACT (contact),
- NULL);
+ g_return_val_if_fail (FOLKS_IS_INDIVIDUAL (individual), NULL);
item = gtk_image_menu_item_new_with_mnemonic (C_("menu item", "_Audio Call"));
image = gtk_image_new_from_icon_name (EMPATHY_IMAGE_VOIP, GTK_ICON_SIZE_MENU);
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
gtk_widget_show (image);
- if (contact != NULL)
- {
- menu_item_set_contact (item, contact,
- G_CALLBACK (empathy_individual_audio_call_menu_item_activated),
- EMPATHY_ACTION_AUDIO_CALL);
- }
- else
- {
- menu_item_set_first_contact (item, individual,
- G_CALLBACK (empathy_individual_audio_call_menu_item_activated),
- EMPATHY_ACTION_AUDIO_CALL);
- }
+ menu_item_set_first_contact (item, individual,
+ G_CALLBACK (empathy_individual_audio_call_menu_item_activated),
+ EMPATHY_ACTION_AUDIO_CALL);
return item;
}
@@ -913,16 +1107,13 @@ empathy_individual_video_call_menu_item_activated (GtkMenuItem *item,
}
GtkWidget *
-empathy_individual_video_call_menu_item_new (FolksIndividual *individual,
- EmpathyContact *contact)
+empathy_individual_video_call_menu_item_new (FolksIndividual *individual)
{
GtkWidget *item;
GtkWidget *image;
EmpathyCameraMonitor *monitor;
- g_return_val_if_fail (FOLKS_IS_INDIVIDUAL (individual) ||
- EMPATHY_IS_CONTACT (contact),
- NULL);
+ g_return_val_if_fail (FOLKS_IS_INDIVIDUAL (individual), NULL);
item = gtk_image_menu_item_new_with_mnemonic (C_("menu item", "_Video Call"));
image = gtk_image_new_from_icon_name (EMPATHY_IMAGE_VIDEO_CALL,
@@ -930,18 +1121,9 @@ empathy_individual_video_call_menu_item_new (FolksIndividual *individual,
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
gtk_widget_show (image);
- if (contact != NULL)
- {
- menu_item_set_contact (item, contact,
- G_CALLBACK (empathy_individual_video_call_menu_item_activated),
- EMPATHY_ACTION_VIDEO_CALL);
- }
- else
- {
- menu_item_set_first_contact (item, individual,
- G_CALLBACK (empathy_individual_video_call_menu_item_activated),
- EMPATHY_ACTION_VIDEO_CALL);
- }
+ menu_item_set_first_contact (item, individual,
+ G_CALLBACK (empathy_individual_video_call_menu_item_activated),
+ EMPATHY_ACTION_VIDEO_CALL);
/* Only follow available cameras if the contact can do Video calls */
if (gtk_widget_get_sensitive (item))
@@ -966,34 +1148,22 @@ empathy_individual_log_menu_item_activated (GtkMenuItem *item,
empathy_contact_get_id (contact), FALSE, NULL);
}
-GtkWidget *
-empathy_individual_log_menu_item_new (FolksIndividual *individual,
- EmpathyContact *contact)
+static GtkWidget *
+empathy_individual_log_menu_item_new (FolksIndividual *individual)
{
GtkWidget *item;
GtkWidget *image;
- g_return_val_if_fail (FOLKS_IS_INDIVIDUAL (individual) ||
- EMPATHY_IS_CONTACT (contact),
- NULL);
+ g_return_val_if_fail (FOLKS_IS_INDIVIDUAL (individual), NULL);
item = gtk_image_menu_item_new_with_mnemonic (_("_Previous Conversations"));
image = gtk_image_new_from_icon_name (EMPATHY_IMAGE_LOG, GTK_ICON_SIZE_MENU);
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
gtk_widget_show (image);
- if (contact != NULL)
- {
- menu_item_set_contact (item, contact,
- G_CALLBACK (empathy_individual_log_menu_item_activated),
- EMPATHY_ACTION_VIEW_LOGS);
- }
- else
- {
- menu_item_set_first_contact (item, individual,
- G_CALLBACK (empathy_individual_log_menu_item_activated),
- EMPATHY_ACTION_VIEW_LOGS);
- }
+ menu_item_set_first_contact (item, individual,
+ G_CALLBACK (empathy_individual_log_menu_item_activated),
+ EMPATHY_ACTION_VIEW_LOGS);
return item;
}
@@ -1007,16 +1177,13 @@ empathy_individual_file_transfer_menu_item_activated (GtkMenuItem *item,
empathy_send_file_with_file_chooser (contact);
}
-GtkWidget *
-empathy_individual_file_transfer_menu_item_new (FolksIndividual *individual,
- EmpathyContact *contact)
+static GtkWidget *
+empathy_individual_file_transfer_menu_item_new (FolksIndividual *individual)
{
GtkWidget *item;
GtkWidget *image;
- g_return_val_if_fail (FOLKS_IS_INDIVIDUAL (individual) ||
- EMPATHY_IS_CONTACT (contact),
- NULL);
+ g_return_val_if_fail (FOLKS_IS_INDIVIDUAL (individual), NULL);
item = gtk_image_menu_item_new_with_mnemonic (_("Send File"));
image = gtk_image_new_from_icon_name (EMPATHY_IMAGE_DOCUMENT_SEND,
@@ -1024,18 +1191,9 @@ empathy_individual_file_transfer_menu_item_new (FolksIndividual *individual,
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
gtk_widget_show (image);
- if (contact != NULL)
- {
- menu_item_set_contact (item, contact,
- G_CALLBACK (empathy_individual_file_transfer_menu_item_activated),
- EMPATHY_ACTION_SEND_FILE);
- }
- else
- {
- menu_item_set_first_contact (item, individual,
- G_CALLBACK (empathy_individual_file_transfer_menu_item_activated),
- EMPATHY_ACTION_SEND_FILE);
- }
+ menu_item_set_first_contact (item, individual,
+ G_CALLBACK (empathy_individual_file_transfer_menu_item_activated),
+ EMPATHY_ACTION_SEND_FILE);
return item;
}
@@ -1049,34 +1207,22 @@ empathy_individual_share_my_desktop_menu_item_activated (GtkMenuItem *item,
empathy_share_my_desktop_share_with_contact (contact);
}
-GtkWidget *
-empathy_individual_share_my_desktop_menu_item_new (FolksIndividual *individual,
- EmpathyContact *contact)
+static GtkWidget *
+empathy_individual_share_my_desktop_menu_item_new (FolksIndividual *individual)
{
GtkWidget *item;
GtkWidget *image;
- g_return_val_if_fail (FOLKS_IS_INDIVIDUAL (individual) ||
- EMPATHY_IS_CONTACT (contact),
- NULL);
+ g_return_val_if_fail (FOLKS_IS_INDIVIDUAL (individual), NULL);
item = gtk_image_menu_item_new_with_mnemonic (_("Share My Desktop"));
image = gtk_image_new_from_icon_name (GTK_STOCK_NETWORK, GTK_ICON_SIZE_MENU);
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
gtk_widget_show (image);
- if (contact != NULL)
- {
- menu_item_set_contact (item, contact,
- G_CALLBACK (empathy_individual_share_my_desktop_menu_item_activated),
- EMPATHY_ACTION_SHARE_MY_DESKTOP);
- }
- else
- {
- menu_item_set_first_contact (item, individual,
- G_CALLBACK (empathy_individual_share_my_desktop_menu_item_activated),
- EMPATHY_ACTION_SHARE_MY_DESKTOP);
- }
+ menu_item_set_first_contact (item, individual,
+ G_CALLBACK (empathy_individual_share_my_desktop_menu_item_activated),
+ EMPATHY_ACTION_SHARE_MY_DESKTOP);
return item;
}
@@ -1090,7 +1236,7 @@ favourite_menu_item_toggled_cb (GtkCheckMenuItem *item,
gtk_check_menu_item_get_active (item));
}
-GtkWidget *
+static GtkWidget *
empathy_individual_favourite_menu_item_new (FolksIndividual *individual)
{
GtkWidget *item;
@@ -1108,12 +1254,120 @@ empathy_individual_favourite_menu_item_new (FolksIndividual *individual)
}
static void
-individual_info_menu_item_activate_cb (FolksIndividual *individual)
+show_gnome_contacts_error_dialog (void)
{
- empathy_individual_information_dialog_show (individual, NULL);
+ GtkWidget *dialog;
+
+ dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_MODAL,
+ GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE,
+ _("gnome-contacts not installed"));
+
+ gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
+ _("Please install gnome-contacts to access contacts details."));
+
+ g_signal_connect_swapped (dialog, "response",
+ G_CALLBACK (gtk_widget_destroy), dialog);
+
+ gtk_widget_show (dialog);
}
-GtkWidget *
+static void
+start_gnome_contacts (FolksIndividual *individual,
+ gboolean try_installing);
+
+static void
+install_gnome_contacts_cb (GObject *source,
+ GAsyncResult *result,
+ gpointer user_data)
+{
+ FolksIndividual *individual = user_data;
+ GError *error = NULL;
+
+ if (!empathy_pkg_kit_install_packages_finish (result, &error))
+ {
+ DEBUG ("Failed to install gnome-contacts: %s", error->message);
+ g_error_free (error);
+
+ show_gnome_contacts_error_dialog ();
+ goto out;
+ }
+
+ DEBUG ("gnome-contacts installed");
+
+ start_gnome_contacts (individual, FALSE);
+
+out:
+ g_object_unref (individual);
+}
+
+static void
+start_gnome_contacts (FolksIndividual *individual,
+ gboolean try_installing)
+{
+ GDesktopAppInfo *desktop_info;
+ gchar *cmd;
+ GAppInfo *app_info;
+ GError *error = NULL;
+ GdkAppLaunchContext *context = NULL;
+ GdkDisplay *display;
+
+ g_return_if_fail (FOLKS_IS_INDIVIDUAL (individual));
+
+ /* Start gnome-contacts */
+ display = gdk_display_get_default ();
+ context = gdk_display_get_app_launch_context (display);
+
+ desktop_info = g_desktop_app_info_new ("gnome-contacts.desktop");
+ if (desktop_info == NULL)
+ {
+ if (try_installing)
+ {
+ const gchar *packages[] = { "gnome-contacts", NULL };
+
+ DEBUG ("gnome-contacts not installed; try to install it");
+
+ empathy_pkg_kit_install_packages_async (0, packages, NULL,
+ NULL, install_gnome_contacts_cb, g_object_ref (individual));
+ }
+ else
+ {
+ show_gnome_contacts_error_dialog ();
+ }
+
+ return;
+ }
+
+ /* glib doesn't have API to start a desktop file with args... (#637875) */
+ cmd = g_strdup_printf ("%s -i %s", g_app_info_get_commandline (
+ (GAppInfo *) desktop_info), folks_individual_get_id (individual));
+
+ app_info = g_app_info_create_from_commandline (cmd, NULL, 0, &error);
+ if (app_info == NULL)
+ {
+ DEBUG ("Failed to create app_info: %s", error->message);
+ g_error_free (error);
+ return;
+ }
+
+ if (!g_app_info_launch (app_info, NULL, (GAppLaunchContext *) context,
+ &error))
+ {
+ g_critical ("Failed to start gnome-contacts: %s", error->message);
+ g_error_free (error);
+ }
+
+ g_object_unref (desktop_info);
+ g_object_unref (app_info);
+}
+
+static void
+individual_info_menu_item_activate_cb (GtkMenuItem *item,
+ FolksIndividual *individual)
+{
+ start_gnome_contacts (individual, TRUE);
+}
+
+static GtkWidget *
empathy_individual_info_menu_item_new (FolksIndividual *individual)
{
GtkWidget *item;
@@ -1129,7 +1383,7 @@ empathy_individual_info_menu_item_new (FolksIndividual *individual)
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
gtk_widget_show (image);
- g_signal_connect_swapped (item, "activate",
+ g_signal_connect (item, "activate",
G_CALLBACK (individual_info_menu_item_activate_cb),
individual);
@@ -1142,7 +1396,7 @@ individual_edit_menu_item_activate_cb (FolksIndividual *individual)
empathy_individual_edit_dialog_show (individual, NULL);
}
-GtkWidget *
+static GtkWidget *
empathy_individual_edit_menu_item_new (FolksIndividual *individual)
{
EmpathyIndividualManager *manager;
@@ -1187,31 +1441,6 @@ empathy_individual_edit_menu_item_new (FolksIndividual *individual)
return item;
}
-GtkWidget *
-empathy_individual_link_menu_item_new (FolksIndividual *individual)
-{
- GtkWidget *item;
- /*GtkWidget *image;*/
-
- g_return_val_if_fail (FOLKS_IS_INDIVIDUAL (individual), NULL);
-
- item = gtk_image_menu_item_new_with_mnemonic (
- /* Translators: this is a verb meaning "to connect two contacts together
- * to form a meta-contact". */
- C_("Link individual (contextual menu)", "_Link Contactsâ¦"));
- /* TODO */
- /*image = gtk_image_new_from_icon_name (GTK_STOCK_EDIT, GTK_ICON_SIZE_MENU);
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
- gtk_widget_show (image);*/
-
- /* Only allow trusted Individuals to be linked */
- gtk_widget_set_sensitive (item,
- folks_individual_get_trust_level (individual) ==
- FOLKS_TRUST_LEVEL_PERSONAS);
-
- return item;
-}
-
typedef struct
{
FolksIndividual *individual;
@@ -1337,7 +1566,7 @@ create_room_sub_menu (FolksIndividual *individual,
return item;
}
-GtkWidget *
+static GtkWidget *
empathy_individual_invite_menu_item_new (FolksIndividual *individual,
EmpathyContact *contact)
{
@@ -1479,7 +1708,7 @@ add_menu_item_activated (GtkMenuItem *item,
g_object_unref (contact);
}
-GtkWidget *
+static GtkWidget *
empathy_individual_add_menu_item_new (EmpathyIndividualMenu *self,
FolksIndividual *individual)
{
diff --git a/libempathy-gtk/empathy-individual-menu.h b/libempathy-gtk/empathy-individual-menu.h
index 31acc156..a2187da6 100644
--- a/libempathy-gtk/empathy-individual-menu.h
+++ b/libempathy-gtk/empathy-individual-menu.h
@@ -37,11 +37,10 @@ typedef enum {
EMPATHY_INDIVIDUAL_FEATURE_EDIT = 1 << 3,
EMPATHY_INDIVIDUAL_FEATURE_INFO = 1 << 4,
EMPATHY_INDIVIDUAL_FEATURE_FAVOURITE = 1 << 5,
- EMPATHY_INDIVIDUAL_FEATURE_LINK = 1 << 6,
- EMPATHY_INDIVIDUAL_FEATURE_SMS = 1 << 7,
- EMPATHY_INDIVIDUAL_FEATURE_CALL_PHONE = 1 << 8,
- EMPATHY_INDIVIDUAL_FEATURE_ADD_CONTACT = 1 << 9,
- EMPATHY_INDIVIDUAL_FEATURE_ALL = (1 << 10) - 1,
+ EMPATHY_INDIVIDUAL_FEATURE_SMS = 1 << 6,
+ EMPATHY_INDIVIDUAL_FEATURE_CALL_PHONE = 1 << 7,
+ EMPATHY_INDIVIDUAL_FEATURE_ADD_CONTACT = 1 << 8,
+ EMPATHY_INDIVIDUAL_FEATURE_BLOCK = 1 << 9,
} EmpathyIndividualFeatureFlags;
#define EMPATHY_TYPE_INDIVIDUAL_MENU (empathy_individual_menu_get_type ())
@@ -73,33 +72,10 @@ GType empathy_individual_menu_get_type (void) G_GNUC_CONST;
GtkWidget * empathy_individual_menu_new (FolksIndividual *individual,
EmpathyIndividualFeatureFlags features,
EmpathyIndividualStore *store);
-GtkWidget * empathy_individual_chat_menu_item_new (FolksIndividual *individual,
- EmpathyContact *contact);
-GtkWidget * empathy_individual_sms_menu_item_new (FolksIndividual *individual,
- EmpathyContact *contact);
+
GtkWidget * empathy_individual_audio_call_menu_item_new (
- FolksIndividual *individual,
- EmpathyContact *contact);
-GtkWidget * empathy_individual_video_call_menu_item_new (
- FolksIndividual *individual,
- EmpathyContact *contact);
-GtkWidget * empathy_individual_log_menu_item_new (FolksIndividual *individual,
- EmpathyContact *contact);
-GtkWidget * empathy_individual_info_menu_item_new (FolksIndividual *individual);
-GtkWidget * empathy_individual_edit_menu_item_new (FolksIndividual *individual);
-GtkWidget * empathy_individual_link_menu_item_new (FolksIndividual *individual);
-GtkWidget * empathy_individual_invite_menu_item_new (
- FolksIndividual *individual,
- EmpathyContact *contact);
-GtkWidget * empathy_individual_file_transfer_menu_item_new (
- FolksIndividual *individual,
- EmpathyContact *contact);
-GtkWidget * empathy_individual_share_my_desktop_menu_item_new (
- FolksIndividual *individual,
- EmpathyContact *contact);
-GtkWidget * empathy_individual_favourite_menu_item_new (
FolksIndividual *individual);
-GtkWidget * empathy_individual_add_menu_item_new (EmpathyIndividualMenu *self,
+GtkWidget * empathy_individual_video_call_menu_item_new (
FolksIndividual *individual);
G_END_DECLS
diff --git a/libempathy-gtk/empathy-individual-store-channel.c b/libempathy-gtk/empathy-individual-store-channel.c
index 75284602..76ff74e2 100644
--- a/libempathy-gtk/empathy-individual-store-channel.c
+++ b/libempathy-gtk/empathy-individual-store-channel.c
@@ -82,6 +82,8 @@ add_members (EmpathyIndividualStoreChannel *self,
continue;
individual = empathy_create_individual_from_tp_contact (contact);
+ if (individual == NULL)
+ return;
DEBUG ("%s joined channel %s", tp_contact_get_identifier (contact),
tp_proxy_get_object_path (self->priv->channel));
diff --git a/libempathy-gtk/empathy-individual-store.c b/libempathy-gtk/empathy-individual-store.c
index aa3f6334..c22e1114 100644
--- a/libempathy-gtk/empathy-individual-store.c
+++ b/libempathy-gtk/empathy-individual-store.c
@@ -330,94 +330,100 @@ void
empathy_individual_store_add_individual (EmpathyIndividualStore *self,
FolksIndividual *individual)
{
- GtkTreeIter iter;
- GeeIterator *group_iter = NULL;
+ GtkTreeIter iter, iter_group;
+ GeeSet *group_set = NULL;
+ gboolean grouped = FALSE;
if (EMP_STR_EMPTY (folks_alias_details_get_alias (
FOLKS_ALIAS_DETAILS (individual))))
return;
- if (self->priv->show_groups)
+ if (!self->priv->show_groups)
{
- GeeSet *group_set = NULL;
-
- group_set = folks_group_details_get_groups (
- FOLKS_GROUP_DETAILS (individual));
+ /* add our individual to the toplevel of the store */
+ add_individual_to_store (GTK_TREE_STORE (self), &iter, NULL,
+ individual);
- if (gee_collection_get_size (GEE_COLLECTION (group_set)) > 0)
- group_iter = gee_iterable_iterator (GEE_ITERABLE (group_set));
+ goto finally;
}
- /* fall-back groups, in case there are no named groups */
- if (group_iter == NULL)
+ group_set = folks_group_details_get_groups (
+ FOLKS_GROUP_DETAILS (individual));
+
+ if (gee_collection_get_size (GEE_COLLECTION (group_set)) > 0)
+ {
+ /* add the contact to its groups */
+ GeeIterator *group_iter =
+ gee_iterable_iterator (GEE_ITERABLE (group_set));
+
+ while (group_iter != NULL && gee_iterator_next (group_iter))
+ {
+ gchar *group_name = gee_iterator_get (group_iter);
+
+ individual_store_get_group (self, group_name, &iter_group,
+ NULL, NULL, FALSE);
+
+ add_individual_to_store (GTK_TREE_STORE (self), &iter, &iter_group,
+ individual);
+ grouped = TRUE;
+
+ g_free (group_name);
+ }
+
+ g_clear_object (&group_iter);
+ }
+ else
{
- GtkTreeIter iter_group, *parent;
+ /* fall-back groups, in case there are no named groups */
EmpathyContact *contact;
TpConnection *connection;
- gchar *protocol_name = NULL;
-
- parent = &iter_group;
+ const gchar *protocol_name = NULL;
contact = empathy_contact_dup_from_folks_individual (individual);
if (contact != NULL)
{
connection = empathy_contact_get_connection (contact);
- tp_connection_parse_object_path (connection, &protocol_name, NULL);
+ protocol_name = tp_connection_get_protocol_name (connection);
}
- if (!self->priv->show_groups)
- parent = NULL;
- else if (!tp_strdiff (protocol_name, "local-xmpp"))
+ if (!tp_strdiff (protocol_name, "local-xmpp"))
{
/* these are People Nearby */
individual_store_get_group (self,
EMPATHY_INDIVIDUAL_STORE_PEOPLE_NEARBY, &iter_group, NULL, NULL,
TRUE);
+ add_individual_to_store (GTK_TREE_STORE (self), &iter, &iter_group,
+ individual);
+ grouped = TRUE;
}
- else
- {
- individual_store_get_group (self,
- EMPATHY_INDIVIDUAL_STORE_UNGROUPED,
- &iter_group, NULL, NULL, TRUE);
- }
-
- add_individual_to_store (GTK_TREE_STORE (self), &iter, parent,
- individual);
- g_free (protocol_name);
g_clear_object (&contact);
}
- /* Else add to each group. */
- while (group_iter != NULL && gee_iterator_next (group_iter))
+ if (folks_favourite_details_get_is_favourite (
+ FOLKS_FAVOURITE_DETAILS (individual)))
{
- gchar *group_name = gee_iterator_get (group_iter);
- GtkTreeIter iter_group;
-
- individual_store_get_group (self, group_name, &iter_group, NULL, NULL,
- FALSE);
+ /* Add contact to the fake 'Favorites' group */
+ individual_store_get_group (self, EMPATHY_INDIVIDUAL_STORE_FAVORITE,
+ &iter_group, NULL, NULL, TRUE);
add_individual_to_store (GTK_TREE_STORE (self), &iter, &iter_group,
individual);
-
- g_free (group_name);
+ grouped = TRUE;
}
- g_clear_object (&group_iter);
- if (self->priv->show_groups &&
- folks_favourite_details_get_is_favourite (
- FOLKS_FAVOURITE_DETAILS (individual)))
+ if (!grouped)
{
- /* Add contact to the fake 'Favorites' group */
- GtkTreeIter iter_group;
-
- individual_store_get_group (self, EMPATHY_INDIVIDUAL_STORE_FAVORITE,
+ /* Else add the contact to 'Ungrouped' */
+ individual_store_get_group (self,
+ EMPATHY_INDIVIDUAL_STORE_UNGROUPED,
&iter_group, NULL, NULL, TRUE);
-
add_individual_to_store (GTK_TREE_STORE (self), &iter, &iter_group,
individual);
}
+
+finally:
individual_store_contact_update (self, individual);
}
diff --git a/libempathy-gtk/empathy-individual-view.c b/libempathy-gtk/empathy-individual-view.c
index 64aaf5a0..34ca7c09 100644
--- a/libempathy-gtk/empathy-individual-view.c
+++ b/libempathy-gtk/empathy-individual-view.c
@@ -46,10 +46,9 @@
#include "empathy-individual-view.h"
#include "empathy-individual-menu.h"
#include "empathy-individual-store.h"
-#include "empathy-contact-dialogs.h"
+#include "empathy-individual-edit-dialog.h"
#include "empathy-individual-dialogs.h"
#include "empathy-images.h"
-#include "empathy-linking-dialog.h"
#include "empathy-cell-renderer-expander.h"
#include "empathy-cell-renderer-text.h"
#include "empathy-cell-renderer-activatable.h"
@@ -219,8 +218,10 @@ individual_view_query_tooltip_cb (EmpathyIndividualView *view,
EMPATHY_INDIVIDUAL_WIDGET_SHOW_CLIENT_TYPES);
gtk_container_set_border_width (GTK_CONTAINER (priv->tooltip_widget), 8);
g_object_ref (priv->tooltip_widget);
- g_signal_connect (priv->tooltip_widget, "destroy",
- G_CALLBACK (individual_view_tooltip_destroy_cb), view);
+
+ tp_g_signal_connect_object (priv->tooltip_widget, "destroy",
+ G_CALLBACK (individual_view_tooltip_destroy_cb), view, 0);
+
gtk_widget_show (priv->tooltip_widget);
}
else
@@ -890,6 +891,12 @@ individual_view_drag_end (GtkWidget *widget,
gtk_tree_row_reference_free (priv->drag_row);
priv->drag_row = NULL;
}
+
+ if (priv->auto_scroll_timeout_id != 0)
+ {
+ g_source_remove (priv->auto_scroll_timeout_id);
+ priv->auto_scroll_timeout_id = 0;
+ }
}
static gboolean
@@ -988,7 +995,6 @@ individual_view_key_press_event_cb (EmpathyIndividualView *view,
g_idle_add (individual_view_popup_menu_idle_cb, data);
} else if (event->keyval == GDK_KEY_F2) {
FolksIndividual *individual;
- EmpathyContact *contact;
g_return_val_if_fail (EMPATHY_IS_INDIVIDUAL_VIEW (view), FALSE);
@@ -996,15 +1002,9 @@ individual_view_key_press_event_cb (EmpathyIndividualView *view,
if (individual == NULL)
return FALSE;
- contact = empathy_contact_dup_from_folks_individual (individual);
- if (contact == NULL) {
- g_object_unref (individual);
- return FALSE;
- }
- empathy_contact_edit_dialog_show (contact, NULL);
+ empathy_individual_edit_dialog_show (individual, NULL);
g_object_unref (individual);
- g_object_unref (contact);
}
return FALSE;
@@ -1080,12 +1080,12 @@ individual_view_call_activated_cb (EmpathyCellRendererActivatable *cell,
shell = GTK_MENU_SHELL (menu);
/* audio */
- item = empathy_individual_audio_call_menu_item_new (individual, NULL);
+ item = empathy_individual_audio_call_menu_item_new (individual);
gtk_menu_shell_append (shell, item);
gtk_widget_show (item);
/* video */
- item = empathy_individual_video_call_menu_item_new (individual, NULL);
+ item = empathy_individual_video_call_menu_item_new (individual);
gtk_menu_shell_append (shell, item);
gtk_widget_show (item);
@@ -1642,54 +1642,6 @@ individual_view_row_has_child_toggled_cb (GtkTreeModel *model,
g_free (name);
}
-/* FIXME: This is a workaround for bgo#621076 */
-static void
-individual_view_verify_group_visibility (EmpathyIndividualView *view,
- GtkTreePath *path)
-{
- EmpathyIndividualViewPriv *priv = GET_PRIV (view);
- GtkTreeModel *model;
- GtkTreePath *parent_path;
- GtkTreeIter parent_iter;
-
- if (gtk_tree_path_get_depth (path) < 2)
- return;
-
- /* A group row is visible if and only if at least one if its child is visible.
- * So when a row is inserted/deleted/changed in the base model, that could
- * modify the visibility of its parent in the filter model.
- */
-
- model = GTK_TREE_MODEL (priv->store);
- parent_path = gtk_tree_path_copy (path);
- gtk_tree_path_up (parent_path);
- if (gtk_tree_model_get_iter (model, &parent_iter, parent_path))
- {
- /* This tells the filter to verify the visibility of that row, and
- * show/hide it if necessary */
- gtk_tree_model_row_changed (GTK_TREE_MODEL (priv->store),
- parent_path, &parent_iter);
- }
- gtk_tree_path_free (parent_path);
-}
-
-static void
-individual_view_store_row_changed_cb (GtkTreeModel *model,
- GtkTreePath *path,
- GtkTreeIter *iter,
- EmpathyIndividualView *view)
-{
- individual_view_verify_group_visibility (view, path);
-}
-
-static void
-individual_view_store_row_deleted_cb (GtkTreeModel *model,
- GtkTreePath *path,
- EmpathyIndividualView *view)
-{
- individual_view_verify_group_visibility (view, path);
-}
-
static gboolean
individual_view_is_visible_individual (EmpathyIndividualView *self,
FolksIndividual *individual,
@@ -1820,14 +1772,6 @@ individual_view_filter_visible_func (GtkTreeModel *model,
g_object_unref (individual);
g_free (group);
- /* FIXME: Work around bgo#626552/bgo#621076 */
- if (visible)
- {
- GtkTreePath *path = gtk_tree_model_get_path (model, iter);
- individual_view_verify_group_visibility (self, path);
- gtk_tree_path_free (path);
- }
-
return visible;
}
@@ -2592,19 +2536,6 @@ individual_view_remove_activate_cb (GtkMenuItem *menuitem,
}
}
-static void
-individual_menu_link_contacts_activated_cb (EmpathyIndividualMenu *menu,
- EmpathyLinkingDialog *linking_dialog,
- EmpathyIndividualView *self)
-{
- EmpathyIndividualViewPriv *priv = GET_PRIV (self);
- EmpathyIndividualLinker *linker;
-
- linker = empathy_linking_dialog_get_individual_linker (linking_dialog);
- empathy_individual_linker_set_search_text (linker,
- empathy_live_search_get_text (EMPATHY_LIVE_SEARCH (priv->search_widget)));
-}
-
GtkWidget *
empathy_individual_view_get_individual_menu (EmpathyIndividualView *view)
{
@@ -2679,12 +2610,6 @@ empathy_individual_view_get_individual_menu (EmpathyIndividualView *view)
G_CALLBACK (individual_view_remove_activate_cb), view);
}
- /* Connect to EmpathyIndividualMenu::link-contacts-activated so that we can
- * set the live search text on the new linking dialogue to be the same as
- * our own. */
- g_signal_connect (menu, "link-contacts-activated",
- (GCallback) individual_menu_link_contacts_activated_cb, view);
-
out:
g_object_unref (individual);
@@ -2825,11 +2750,6 @@ empathy_individual_view_set_store (EmpathyIndividualView *self,
/* Destroy the old filter and remove the old store */
if (priv->store != NULL)
{
- g_signal_handlers_disconnect_by_func (priv->store,
- individual_view_store_row_changed_cb, self);
- g_signal_handlers_disconnect_by_func (priv->store,
- individual_view_store_row_deleted_cb, self);
-
g_signal_handlers_disconnect_by_func (priv->filter,
individual_view_row_has_child_toggled_cb, self);
@@ -2856,13 +2776,6 @@ empathy_individual_view_set_store (EmpathyIndividualView *self,
G_CALLBACK (individual_view_row_has_child_toggled_cb), self);
gtk_tree_view_set_model (GTK_TREE_VIEW (self),
GTK_TREE_MODEL (priv->filter));
-
- tp_g_signal_connect_object (priv->store, "row-changed",
- G_CALLBACK (individual_view_store_row_changed_cb), self, 0);
- tp_g_signal_connect_object (priv->store, "row-inserted",
- G_CALLBACK (individual_view_store_row_changed_cb), self, 0);
- tp_g_signal_connect_object (priv->store, "row-deleted",
- G_CALLBACK (individual_view_store_row_deleted_cb), self, 0);
}
}
diff --git a/libempathy-gtk/empathy-individual-view.h b/libempathy-gtk/empathy-individual-view.h
index 00506daf..87dd20c7 100644
--- a/libempathy-gtk/empathy-individual-view.h
+++ b/libempathy-gtk/empathy-individual-view.h
@@ -63,7 +63,6 @@ typedef enum
EMPATHY_INDIVIDUAL_VIEW_FEATURE_INDIVIDUAL_CALL = 1 << 8,
EMPATHY_INDIVIDUAL_VIEW_FEATURE_PERSONA_DROP = 1 << 9,
EMPATHY_INDIVIDUAL_VIEW_FEATURE_FILE_DROP = 1 << 10,
- EMPATHY_INDIVIDUAL_VIEW_FEATURE_ALL = (1 << 11) - 1,
} EmpathyIndividualViewFeatureFlags;
struct _EmpathyIndividualView
diff --git a/libempathy-gtk/empathy-individual-widget.c b/libempathy-gtk/empathy-individual-widget.c
index 5a1c559d..3cbd1d5e 100644
--- a/libempathy-gtk/empathy-individual-widget.c
+++ b/libempathy-gtk/empathy-individual-widget.c
@@ -680,8 +680,7 @@ location_update (EmpathyIndividualWidget *self)
#ifdef HAVE_LIBCHAMPLAIN
if ((g_hash_table_lookup (location, EMPATHY_LOCATION_LAT) != NULL) &&
- (g_hash_table_lookup (location, EMPATHY_LOCATION_LON) != NULL) &&
- !(priv->flags & EMPATHY_INDIVIDUAL_WIDGET_FOR_TOOLTIP))
+ (g_hash_table_lookup (location, EMPATHY_LOCATION_LON) != NULL))
{
/* Cannot be displayed in tooltips until Clutter-Gtk can deal with such
* windows */
@@ -1675,6 +1674,17 @@ individual_grid_destroy (EmpathyIndividualWidget *self)
gtk_container_remove (GTK_CONTAINER (priv->vbox_individual),
GTK_WIDGET (priv->individual_grid));
+
+#ifdef HAVE_LIBCHAMPLAIN
+ if (priv->map_view_embed != NULL)
+ {
+ gtk_container_remove (GTK_CONTAINER (priv->viewport_map),
+ priv->map_view_embed);
+
+ priv->map_view_embed = NULL;
+ }
+#endif
+
priv->individual_grid = NULL;
}
diff --git a/libempathy-gtk/empathy-irc-network-chooser-dialog.c b/libempathy-gtk/empathy-irc-network-chooser-dialog.c
index 9d29aff4..755eb584 100644
--- a/libempathy-gtk/empathy-irc-network-chooser-dialog.c
+++ b/libempathy-gtk/empathy-irc-network-chooser-dialog.c
@@ -132,6 +132,9 @@ dup_selected_network (EmpathyIrcNetworkChooserDialog *self,
GtkTreeModel *model;
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (priv->treeview));
+ if (selection == NULL)
+ return NULL;
+
if (!gtk_tree_selection_get_selected (selection, &model, &iter))
return NULL;
@@ -157,7 +160,7 @@ treeview_changed_cb (GtkTreeView *treeview,
network = dup_selected_network (self, NULL);
if (network == priv->network)
{
- g_object_unref (network);
+ g_clear_object (&network);
return;
}
diff --git a/libempathy-gtk/empathy-irc-network-chooser.c b/libempathy-gtk/empathy-irc-network-chooser.c
index 7a6bd789..74c9685e 100644
--- a/libempathy-gtk/empathy-irc-network-chooser.c
+++ b/libempathy-gtk/empathy-irc-network-chooser.c
@@ -118,6 +118,40 @@ unset_server_params (EmpathyIrcNetworkChooser *self)
empathy_account_settings_unset (priv->settings, "use-ssl");
}
+static gchar *
+dup_network_service (EmpathyIrcNetwork *network)
+{
+ /* Account.Service has to be a lower case alphanumeric string which may
+ * also contain '-' but not start with it. */
+#define VALID G_CSET_a_2_z G_CSET_DIGITS "-"
+ gchar *service, *tmp;
+
+ service = g_strdup (empathy_irc_network_get_name (network));
+ service = g_strstrip (service);
+
+ if (tp_str_empty (service))
+ {
+ g_free (service);
+ return NULL;
+ }
+
+ tmp = service;
+ service = g_ascii_strdown (service, -1);
+ g_free (tmp);
+
+ service = g_strcanon (service, VALID, '-');
+
+ if (service[0] == '-')
+ {
+ tmp = service;
+ service = g_strdup (service + 1);
+
+ g_free (tmp);
+ }
+
+ return service;
+}
+
static void
update_server_params (EmpathyIrcNetworkChooser *self)
{
@@ -139,6 +173,7 @@ update_server_params (EmpathyIrcNetworkChooser *self)
gchar *address;
guint port;
gboolean ssl;
+ gchar *service;
g_object_get (server,
"address", &address,
@@ -153,7 +188,13 @@ update_server_params (EmpathyIrcNetworkChooser *self)
DEBUG ("Setting use-ssl to %s", ssl ? "TRUE": "FALSE" );
empathy_account_settings_set_boolean (priv->settings, "use-ssl", ssl);
+ /* Set Account.Service */
+ service = dup_network_service (priv->network);
+ DEBUG ("Setting Service to %s", service);
+ empathy_account_settings_set_service (priv->settings, service);
+
g_free (address);
+ g_free (service);
}
else
{
diff --git a/libempathy-gtk/empathy-linking-dialog.c b/libempathy-gtk/empathy-linking-dialog.c
deleted file mode 100644
index 350bfdc2..00000000
--- a/libempathy-gtk/empathy-linking-dialog.c
+++ /dev/null
@@ -1,276 +0,0 @@
-/*
- * Copyright (C) 2010 Collabora Ltd.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Authors: Philip Withnall
- */
-
-#include
-
-#include
-#include
-
-#include
-#include
-
-#include
-#include
-
-#include
-#include
-
-#include "empathy-linking-dialog.h"
-#include "empathy-individual-linker.h"
-#include "empathy-ui-utils.h"
-
-/**
- * SECTION:empathy-individual-widget
- * @title:EmpathyLinkingDialog
- * @short_description: A dialog used to link individuals together
- * @include: libempathy-empathy-linking-dialog.h
- *
- * #EmpathyLinkingDialog is a dialog which allows selection of individuals to
- * link together, and preview of the newly linked individual. When submitted, it
- * pushes the new links to backing storage.
- */
-
-/**
- * EmpathyLinkingDialog:
- * @parent: parent object
- *
- * Widget which displays appropriate widgets with details about an individual,
- * also allowing changing these details, if desired.
- *
- * Currently, it's just a thin wrapper around #EmpathyContactWidget, and
- * displays the details of the first eligible persona found in the individual.
- */
-
-static GtkWidget *linking_dialog = NULL;
-
-/* Fairly arbitrary response ID for the "Unlink" button */
-#define RESPONSE_UNLINK 5
-
-#define GET_PRIV(obj) EMPATHY_GET_PRIV (obj, EmpathyLinkingDialog)
-
-typedef struct {
- EmpathyIndividualLinker *linker; /* child widget */
- GtkWidget *link_button; /* child widget */
-} EmpathyLinkingDialogPriv;
-
-G_DEFINE_TYPE (EmpathyLinkingDialog, empathy_linking_dialog,
- GTK_TYPE_DIALOG);
-
-static void
-linker_notify_has_changed_cb (EmpathyIndividualLinker *linker,
- GParamSpec *pspec,
- EmpathyLinkingDialog *self)
-{
- EmpathyLinkingDialogPriv *priv = GET_PRIV (self);
-
- /* Only make the "Link" button sensitive if the linked Individual has been
- * changed. */
- gtk_widget_set_sensitive (priv->link_button,
- empathy_individual_linker_get_has_changed (linker));
-}
-
-static void
-empathy_linking_dialog_class_init (EmpathyLinkingDialogClass *klass)
-{
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
- g_type_class_add_private (object_class, sizeof (EmpathyLinkingDialogPriv));
-}
-
-static void
-empathy_linking_dialog_init (EmpathyLinkingDialog *self)
-{
- EmpathyLinkingDialogPriv *priv;
- GtkDialog *dialog;
- GtkWidget *button;
- GtkBox *content_area;
-
- priv = G_TYPE_INSTANCE_GET_PRIVATE (self,
- EMPATHY_TYPE_LINKING_DIALOG, EmpathyLinkingDialogPriv);
- self->priv = priv;
-
- dialog = GTK_DIALOG (self);
-
- /* Set up dialog */
- gtk_window_set_resizable (GTK_WINDOW (self), TRUE);
- /* Translators: this is the title of the linking dialogue (reached by
- * right-clicking on a contact and selecting "Linkâ¦"). "Link" in this title
- * is a verb. */
- gtk_window_set_title (GTK_WINDOW (self), _("Link Contacts"));
- gtk_widget_set_size_request (GTK_WIDGET (self), 600, 500);
-
- /* Unlink button */
- button = gtk_button_new_with_mnemonic (
- C_("Unlink individual (button)", "_Unlinkâ¦"));
- gtk_widget_set_tooltip_text (button, _("Completely split the displayed "
- "linked contacts into the separate contacts."));
- gtk_dialog_add_action_widget (dialog, button, RESPONSE_UNLINK);
- gtk_widget_show (button);
-
- /* Cancel button */
- button = gtk_button_new_with_label (GTK_STOCK_CANCEL);
- gtk_button_set_use_stock (GTK_BUTTON (button), TRUE);
- gtk_dialog_add_action_widget (dialog, button, GTK_RESPONSE_CANCEL);
- gtk_widget_show (button);
-
- /* Add button */
- /* Translators: this is an action button in the linking dialogue. "Link" is
- * used here as a verb meaning "to connect two contacts to form a
- * meta-contact". */
- priv->link_button = gtk_button_new_with_mnemonic (_("_Link"));
- gtk_dialog_add_action_widget (dialog, priv->link_button, GTK_RESPONSE_OK);
- gtk_widget_show (priv->link_button);
-
- /* Linker widget */
- priv->linker =
- EMPATHY_INDIVIDUAL_LINKER (empathy_individual_linker_new (NULL));
- g_signal_connect (priv->linker, "notify::has-changed",
- (GCallback) linker_notify_has_changed_cb, self);
-
- gtk_container_set_border_width (GTK_CONTAINER (priv->linker), 8);
- content_area = GTK_BOX (gtk_dialog_get_content_area (dialog));
- gtk_box_pack_start (content_area, GTK_WIDGET (priv->linker), TRUE, TRUE, 0);
- gtk_widget_show (GTK_WIDGET (priv->linker));
-}
-
-static void
-linking_response_cb (EmpathyLinkingDialog *self,
- gint response,
- gpointer user_data)
-{
- EmpathyLinkingDialogPriv *priv = GET_PRIV (self);
-
- if (response == GTK_RESPONSE_OK)
- {
- EmpathyIndividualManager *manager;
- GeeSet *personas;
-
- manager = empathy_individual_manager_dup_singleton ();
-
- personas = empathy_individual_linker_get_linked_personas (priv->linker);
- empathy_individual_manager_link_personas (manager, personas);
-
- g_object_unref (manager);
- }
- else if (response == RESPONSE_UNLINK)
- {
- EmpathyIndividualManager *manager;
- FolksIndividual *individual;
- GtkWidget *dialog;
-
- individual =
- empathy_individual_linker_get_start_individual (priv->linker);
-
- /* Show a confirmation dialogue first */
- dialog = gtk_message_dialog_new (GTK_WINDOW (self), GTK_DIALOG_MODAL,
- GTK_MESSAGE_WARNING, GTK_BUTTONS_NONE,
- _("Unlink linked contacts '%s'?"),
- folks_alias_details_get_alias (FOLKS_ALIAS_DETAILS (individual)));
- gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
- _("Are you sure you want to unlink these linked contacts? This will "
- "completely split the linked contacts into separate contacts."));
- gtk_dialog_add_buttons (GTK_DIALOG (dialog),
- GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
- C_("Unlink individual (button)", "_Unlink"), GTK_RESPONSE_OK,
- NULL);
-
- if (gtk_dialog_run (GTK_DIALOG (dialog)) != GTK_RESPONSE_OK)
- {
- gtk_widget_destroy (dialog);
- return;
- }
-
- gtk_widget_destroy (dialog);
-
- manager = empathy_individual_manager_dup_singleton ();
- empathy_individual_manager_unlink_individual (manager, individual);
- g_object_unref (manager);
- }
-
- linking_dialog = NULL;
- gtk_widget_destroy (GTK_WIDGET (self));
-}
-
-/**
- * empathy_linking_dialog_show:
- * @individual: the #FolksIndividual to start linking against
- * @parent: a parent window for the dialogue, or %NULL
- *
- * Create and show the linking dialogue, with @individual selected as the
- * individual to link to. If the dialogue is already being shown, raise it and
- * reset it so the start individual is @individual.
- *
- * Return value: the linking dialog
- */
-GtkWidget *
-empathy_linking_dialog_show (FolksIndividual *individual,
- GtkWindow *parent)
-{
- EmpathyLinkingDialogPriv *priv;
- GeeSet *personas;
- GeeIterator *iter;
- guint num_personas = 0;
-
- /* Create the dialogue if it doesn't exist */
- if (linking_dialog == NULL)
- {
- linking_dialog = GTK_WIDGET (g_object_new (EMPATHY_TYPE_LINKING_DIALOG,
- NULL));
-
- g_signal_connect (linking_dialog, "response",
- (GCallback) linking_response_cb, NULL);
- }
-
- priv = GET_PRIV (linking_dialog);
-
- if (parent != NULL)
- gtk_window_set_transient_for (GTK_WINDOW (linking_dialog), parent);
-
- empathy_individual_linker_set_start_individual (priv->linker, individual);
-
- /* Count how many Telepathy personas we have, to see whether we can
- * unlink */
- personas = folks_individual_get_personas (individual);
- iter = gee_iterable_iterator (GEE_ITERABLE (personas));
- while (gee_iterator_next (iter))
- {
- FolksPersona *persona = gee_iterator_get (iter);
- if (empathy_folks_persona_is_interesting (persona))
- num_personas++;
-
- g_clear_object (&persona);
- }
- g_clear_object (&iter);
-
- /* Only make the "Unlink" button sensitive if we have enough personas */
- gtk_dialog_set_response_sensitive (GTK_DIALOG (linking_dialog),
- RESPONSE_UNLINK, (num_personas > 1) ? TRUE : FALSE);
-
- gtk_window_present (GTK_WINDOW (linking_dialog));
-
- return linking_dialog;
-}
-
-EmpathyIndividualLinker *
-empathy_linking_dialog_get_individual_linker (EmpathyLinkingDialog *self)
-{
- g_return_val_if_fail (EMPATHY_IS_LINKING_DIALOG (self), NULL);
-
- return GET_PRIV (self)->linker;
-}
diff --git a/libempathy-gtk/empathy-linking-dialog.h b/libempathy-gtk/empathy-linking-dialog.h
deleted file mode 100644
index fb47641c..00000000
--- a/libempathy-gtk/empathy-linking-dialog.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright (C) 2010 Collabora Ltd.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Authors: Philip Withnall
- */
-
-#ifndef __EMPATHY_LINKING_DIALOG_H__
-#define __EMPATHY_LINKING_DIALOG_H__
-
-#include
-
-#include
-
-#include "empathy-individual-linker.h"
-
-G_BEGIN_DECLS
-
-#define EMPATHY_TYPE_LINKING_DIALOG (empathy_linking_dialog_get_type ())
-#define EMPATHY_LINKING_DIALOG(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), \
- EMPATHY_TYPE_LINKING_DIALOG, EmpathyLinkingDialog))
-#define EMPATHY_LINKING_DIALOG_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), \
- EMPATHY_TYPE_LINKING_DIALOG, EmpathyLinkingDialogClass))
-#define EMPATHY_IS_LINKING_DIALOG(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), \
- EMPATHY_TYPE_LINKING_DIALOG))
-#define EMPATHY_IS_LINKING_DIALOG_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), \
- EMPATHY_TYPE_LINKING_DIALOG))
-#define EMPATHY_LINKING_DIALOG_GET_CLASS(o) ( \
- G_TYPE_INSTANCE_GET_CLASS ((o), EMPATHY_TYPE_LINKING_DIALOG, \
- EmpathyLinkingDialogClass))
-
-typedef struct {
- GtkDialog parent;
-
- /**/
- gpointer priv;
-} EmpathyLinkingDialog;
-
-typedef struct {
- GtkDialogClass parent_class;
-} EmpathyLinkingDialogClass;
-
-GType empathy_linking_dialog_get_type (void) G_GNUC_CONST;
-
-GtkWidget * empathy_linking_dialog_show (FolksIndividual *individual,
- GtkWindow *parent);
-
-EmpathyIndividualLinker * empathy_linking_dialog_get_individual_linker (
- EmpathyLinkingDialog *self);
-
-G_END_DECLS
-
-#endif /* __EMPATHY_LINKING_DIALOG_H__ */
diff --git a/libempathy-gtk/empathy-local-xmpp-assistant-widget.c b/libempathy-gtk/empathy-local-xmpp-assistant-widget.c
new file mode 100644
index 00000000..3a6c8ee1
--- /dev/null
+++ b/libempathy-gtk/empathy-local-xmpp-assistant-widget.c
@@ -0,0 +1,309 @@
+/*
+ * empathy-local-xmpp-assistant-widget.h - Source for
+ * EmpathyLocalXmppAssistantWidget
+ *
+ * Copyright (C) 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
+ * 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, see .
+ */
+
+#include "config.h"
+#include "empathy-local-xmpp-assistant-widget.h"
+
+#include
+
+#if HAVE_EDS
+#include
+#endif
+
+#include
+
+#include
+#include
+
+#define DEBUG_FLAG EMPATHY_DEBUG_ACCOUNT
+#include
+
+G_DEFINE_TYPE (EmpathyLocalXmppAssistantWidget,
+ empathy_local_xmpp_assistant_widget, GTK_TYPE_GRID)
+
+enum {
+ SIG_VALID = 1,
+ LAST_SIGNAL
+};
+
+static gulong signals[LAST_SIGNAL] = { 0, };
+
+struct _EmpathyLocalXmppAssistantWidgetPrivate
+{
+ EmpathyAccountSettings *settings;
+};
+
+static void
+empathy_local_xmpp_assistant_widget_init (EmpathyLocalXmppAssistantWidget *self)
+{
+ self->priv = G_TYPE_INSTANCE_GET_PRIVATE ((self),
+ EMPATHY_TYPE_LOCAL_XMPP_ASSISTANT_WIDGET,
+ EmpathyLocalXmppAssistantWidgetPrivate);
+}
+
+static EmpathyAccountSettings *
+create_salut_account_settings (void)
+{
+ EmpathyAccountSettings *settings;
+#if HAVE_EDS
+ EBook *book;
+ EContact *contact;
+ gchar *nickname = NULL;
+ gchar *first_name = NULL;
+ gchar *last_name = NULL;
+ gchar *email = NULL;
+ gchar *jid = NULL;
+ GError *error = NULL;
+#endif
+
+ settings = empathy_account_settings_new ("salut", "local-xmpp", NULL,
+ _("People nearby"));
+
+#if HAVE_EDS
+ /* Get self EContact from EDS */
+ if (!e_book_get_self (&contact, &book, &error))
+ {
+ DEBUG ("Failed to get self econtact: %s", error->message);
+ g_error_free (error);
+ return settings;
+ }
+
+ nickname = e_contact_get (contact, E_CONTACT_NICKNAME);
+ first_name = e_contact_get (contact, E_CONTACT_GIVEN_NAME);
+ last_name = e_contact_get (contact, E_CONTACT_FAMILY_NAME);
+ email = e_contact_get (contact, E_CONTACT_EMAIL_1);
+ jid = e_contact_get (contact, E_CONTACT_IM_JABBER_HOME_1);
+
+ if (!tp_strdiff (nickname, "nickname"))
+ {
+ g_free (nickname);
+ nickname = NULL;
+ }
+
+ DEBUG ("Salut account created:\nnickname=%s\nfirst-name=%s\n"
+ "last-name=%s\nemail=%s\njid=%s\n",
+ nickname, first_name, last_name, email, jid);
+
+ empathy_account_settings_set_string (settings,
+ "nickname", nickname ? nickname : "");
+ empathy_account_settings_set_string (settings,
+ "first-name", first_name ? first_name : "");
+ empathy_account_settings_set_string (settings,
+ "last-name", last_name ? last_name : "");
+ empathy_account_settings_set_string (settings, "email", email ? email : "");
+ empathy_account_settings_set_string (settings, "jid", jid ? jid : "");
+
+ g_free (nickname);
+ g_free (first_name);
+ g_free (last_name);
+ g_free (email);
+ g_free (jid);
+ g_object_unref (contact);
+ g_object_unref (book);
+#endif
+
+ return settings;
+}
+
+static void
+handle_apply_cb (EmpathyAccountWidget *widget_object,
+ gboolean is_valid,
+ EmpathyLocalXmppAssistantWidget *self)
+{
+ g_signal_emit (self, signals[SIG_VALID], 0, is_valid);
+}
+
+static void
+empathy_local_xmpp_assistant_widget_constructed (GObject *object)
+{
+ EmpathyLocalXmppAssistantWidget *self = (EmpathyLocalXmppAssistantWidget *)
+ object;
+ GtkWidget *w;
+ GdkPixbuf *pix;
+ GtkWidget *account_widget;
+ EmpathyAccountWidget *widget_object;
+ gchar *markup;
+
+ G_OBJECT_CLASS (empathy_local_xmpp_assistant_widget_parent_class)->
+ constructed (object);
+
+ gtk_container_set_border_width (GTK_CONTAINER (self), 12);
+
+ w = gtk_label_new (
+ _("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."));
+ gtk_misc_set_alignment (GTK_MISC (w), 0, 0.5);
+ gtk_label_set_line_wrap (GTK_LABEL (w), TRUE);
+ gtk_grid_attach (GTK_GRID (self), w, 0, 0, 1, 1);
+ gtk_widget_show (w);
+
+ pix = empathy_pixbuf_from_icon_name_sized ("im-local-xmpp", 48);
+ w = gtk_image_new_from_pixbuf (pix);
+ gtk_grid_attach (GTK_GRID (self), w, 1, 0, 1, 1);
+ gtk_widget_show (w);
+
+ g_object_unref (pix);
+
+ 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_get_widget (widget_object);
+
+ g_signal_connect (widget_object, "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);
+
+ w = gtk_label_new (NULL);
+ markup = g_strdup_printf (
+ "%s ",
+ _("You can change these details later or disable this feature "
+ "by choosing Edit â Accounts "
+ "in the Contact List."));
+ gtk_label_set_markup (GTK_LABEL (w), markup);
+ g_free (markup);
+ gtk_misc_set_alignment (GTK_MISC (w), 0, 0.5);
+ gtk_label_set_line_wrap (GTK_LABEL (w), TRUE);
+ gtk_grid_attach (GTK_GRID (self), w, 0, 2, 2, 1);
+ gtk_widget_show (w);
+}
+
+static void
+empathy_local_xmpp_assistant_widget_dispose (GObject *object)
+{
+ EmpathyLocalXmppAssistantWidget *self = (EmpathyLocalXmppAssistantWidget *)
+ object;
+
+ g_clear_object (&self->priv->settings);
+
+ G_OBJECT_CLASS (empathy_local_xmpp_assistant_widget_parent_class)->
+ dispose (object);
+}
+
+static void
+empathy_local_xmpp_assistant_widget_class_init (
+ EmpathyLocalXmppAssistantWidgetClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+ object_class->constructed = empathy_local_xmpp_assistant_widget_constructed;
+ object_class->dispose = empathy_local_xmpp_assistant_widget_dispose;
+
+ signals[SIG_VALID] =
+ g_signal_new ("valid",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST, 0, NULL, NULL,
+ g_cclosure_marshal_generic,
+ G_TYPE_NONE, 1, G_TYPE_BOOLEAN);
+
+ g_type_class_add_private (object_class,
+ sizeof (EmpathyLocalXmppAssistantWidgetPrivate));
+}
+
+GtkWidget *
+empathy_local_xmpp_assistant_widget_new ()
+{
+ return g_object_new (EMPATHY_TYPE_LOCAL_XMPP_ASSISTANT_WIDGET,
+ "row-spacing", 12,
+ NULL);
+}
+
+static void
+account_enabled_cb (GObject *source,
+ GAsyncResult *result,
+ gpointer user_data)
+{
+ TpAccount *account = TP_ACCOUNT (source);
+ GError *error = NULL;
+ TpAccountManager *account_mgr;
+
+ if (!tp_account_set_enabled_finish (account, result, &error))
+ {
+ DEBUG ("Failed to enable account: %s", error->message);
+ g_error_free (error);
+ return;
+ }
+
+ account_mgr = tp_account_manager_dup ();
+
+ empathy_connect_new_account (account, account_mgr);
+
+ g_object_unref (account_mgr);
+}
+
+static void
+apply_account_cb (GObject *source,
+ GAsyncResult *result,
+ gpointer user_data)
+{
+ EmpathyAccountSettings *settings = EMPATHY_ACCOUNT_SETTINGS (source);
+ TpAccount *account;
+ GError *error = NULL;
+
+ if (!empathy_account_settings_apply_finish (settings, result, NULL, &error))
+ {
+ DEBUG ("Failed to create account: %s", error->message);
+ g_error_free (error);
+ return;
+ }
+
+ /* enable the newly created account */
+ account = empathy_account_settings_get_account (settings);
+ tp_account_set_enabled_async (account, TRUE, account_enabled_cb, NULL);
+}
+
+void
+empathy_local_xmpp_assistant_widget_create_account (
+ EmpathyLocalXmppAssistantWidget *self)
+{
+ empathy_account_settings_apply_async (self->priv->settings,
+ apply_account_cb, NULL);
+}
+
+gboolean
+empathy_local_xmpp_assistant_widget_should_create_account (
+ TpAccountManager *manager)
+{
+ gboolean salut_created = FALSE;
+ GList *accounts, *l;
+
+ accounts = tp_account_manager_get_valid_accounts (manager);
+
+ for (l = accounts; l != NULL; l = g_list_next (l))
+ {
+ TpAccount *account = TP_ACCOUNT (l->data);
+
+ if (!tp_strdiff (tp_account_get_protocol (account), "local-xmpp"))
+ {
+ salut_created = TRUE;
+ break;
+ }
+ }
+
+ g_list_free (accounts);
+
+ return !salut_created;
+}
diff --git a/libempathy-gtk/empathy-local-xmpp-assistant-widget.h b/libempathy-gtk/empathy-local-xmpp-assistant-widget.h
new file mode 100644
index 00000000..35343bd4
--- /dev/null
+++ b/libempathy-gtk/empathy-local-xmpp-assistant-widget.h
@@ -0,0 +1,63 @@
+/*
+ * empathy-local-xmpp-assistant-widget.h - Source for
+ * EmpathyLocalXmppAssistantWidget
+ *
+ * Copyright (C) 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
+ * 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, see .
+ */
+
+#ifndef __EMPATHY_LOCAL_XMPP_ASSISTANT_WIDGET_H__
+#define __EMPATHY_LOCAL_XMPP_ASSISTANT_WIDGET_H__
+
+#include
+
+#include
+
+G_BEGIN_DECLS
+
+#define EMPATHY_TYPE_LOCAL_XMPP_ASSISTANT_WIDGET (empathy_local_xmpp_assistant_widget_get_type ())
+#define EMPATHY_LOCAL_XMPP_ASSISTANT_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EMPATHY_TYPE_LOCAL_XMPP_ASSISTANT_WIDGET, EmpathyLocalXmppAssistantWidget))
+#define EMPATHY_LOCAL_XMPP_ASSISTANT_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EMPATHY_TYPE_LOCAL_XMPP_ASSISTANT_WIDGET, EmpathyLocalXmppAssistantWidgetClass))
+#define EMPATHY_IS_LOCAL_XMPP_ASSISTANT_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EMPATHY_TYPE_LOCAL_XMPP_ASSISTANT_WIDGET))
+#define EMPATHY_IS_LOCAL_XMPP_ASSISTANT_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EMPATHY_TYPE_LOCAL_XMPP_ASSISTANT_WIDGET))
+#define EMPATHY_LOCAL_XMPP_ASSISTANT_WIDGET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), EMPATHY_TYPE_LOCAL_XMPP_ASSISTANT_WIDGET, EmpathyLocalXmppAssistantWidgetClass))
+
+typedef struct _EmpathyLocalXmppAssistantWidget EmpathyLocalXmppAssistantWidget;
+typedef struct _EmpathyLocalXmppAssistantWidgetClass EmpathyLocalXmppAssistantWidgetClass;
+typedef struct _EmpathyLocalXmppAssistantWidgetPrivate EmpathyLocalXmppAssistantWidgetPrivate;
+
+struct _EmpathyLocalXmppAssistantWidget {
+ GtkGrid parent;
+
+ EmpathyLocalXmppAssistantWidgetPrivate *priv;
+};
+
+struct _EmpathyLocalXmppAssistantWidgetClass {
+ GtkGridClass parent_class;
+};
+
+GType empathy_local_xmpp_assistant_widget_get_type (void) G_GNUC_CONST;
+
+GtkWidget * empathy_local_xmpp_assistant_widget_new (void);
+
+void empathy_local_xmpp_assistant_widget_create_account (
+ EmpathyLocalXmppAssistantWidget *self);
+
+gboolean empathy_local_xmpp_assistant_widget_should_create_account (
+ TpAccountManager *manager);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_LOCAL_XMPP_ASSISTANT_WIDGET_H__ */
diff --git a/libempathy-gtk/empathy-log-window.c b/libempathy-gtk/empathy-log-window.c
index af375f1b..51a47c7a 100644
--- a/libempathy-gtk/empathy-log-window.c
+++ b/libempathy-gtk/empathy-log-window.c
@@ -62,6 +62,7 @@
#include "empathy-theme-manager.h"
#include "empathy-ui-utils.h"
#include "empathy-webkit-utils.h"
+#include "empathy-geometry.h"
#define DEBUG_FLAG EMPATHY_DEBUG_OTHER
#include
@@ -773,6 +774,8 @@ empathy_log_window_init (EmpathyLogWindow *self)
log_window_update_buttons_sensitivity (self);
gtk_widget_show (GTK_WIDGET (self));
+
+ empathy_geometry_bind (GTK_WINDOW (self), "log-window");
}
GtkWidget *
@@ -2069,31 +2072,78 @@ log_window_search_entry_icon_pressed_cb (GtkEntry *entry,
"", -1);
}
+static void
+do_update_buttons_sensitivity (EmpathyLogWindow *self)
+{
+ EmpathyCapabilities capabilities;
+ gboolean profile, chat, call, video;
+
+ tp_clear_object (&self->priv->button_video_binding);
+
+ if (self->priv->selected_contact != NULL)
+ {
+ capabilities = empathy_contact_get_capabilities (
+ self->priv->selected_contact);
+
+ profile = chat = TRUE;
+ call = capabilities & EMPATHY_CAPABILITIES_AUDIO;
+ video = capabilities & EMPATHY_CAPABILITIES_VIDEO;
+ }
+ else
+ {
+ profile = chat = call = video = FALSE;
+ }
+
+ gtk_widget_set_sensitive (self->priv->button_profile, profile);
+ gtk_widget_set_sensitive (self->priv->button_chat, chat);
+ gtk_widget_set_sensitive (self->priv->button_call, call);
+
+ if (video)
+ {
+ self->priv->button_video_binding = g_object_bind_property (
+ self->priv->camera_monitor, "available",
+ self->priv->button_video, "sensitive",
+ G_BINDING_SYNC_CREATE);
+ }
+ else
+ {
+ /* Don't override the binding */
+ gtk_widget_set_sensitive (self->priv->button_video, video);
+ }
+}
+
+static void
+contact_capabilities_changed_cb (EmpathyContact *contact,
+ GParamSpec *spec,
+ EmpathyLogWindow *self)
+{
+ do_update_buttons_sensitivity (self);
+}
+
static void
log_window_update_buttons_sensitivity (EmpathyLogWindow *self)
{
GtkTreeView *view;
GtkTreeModel *model;
GtkTreeSelection *selection;
- EmpathyCapabilities capabilities;
TpAccount *account;
TplEntity *target;
GtkTreeIter iter;
GList *paths;
GtkTreePath *path;
- gboolean profile, chat, call, video;
- profile = chat = call = video = FALSE;
+ if (self->priv->selected_contact != NULL)
+ {
+ g_signal_handlers_disconnect_by_func (self->priv->selected_contact,
+ contact_capabilities_changed_cb, self);
- tp_clear_object (&self->priv->button_video_binding);
- tp_clear_object (&self->priv->selected_contact);
+ tp_clear_object (&self->priv->selected_contact);
+ }
view = GTK_TREE_VIEW (self->priv->treeview_who);
model = gtk_tree_view_get_model (view);
selection = gtk_tree_view_get_selection (view);
- profile = chat = call = video = FALSE;
-
if (!gtk_tree_model_get_iter_first (model, &iter))
goto events;
@@ -2121,12 +2171,6 @@ log_window_update_buttons_sensitivity (EmpathyLogWindow *self)
g_object_unref (account);
g_object_unref (target);
- capabilities = empathy_contact_get_capabilities (self->priv->selected_contact);
-
- profile = chat = TRUE;
- call = capabilities & EMPATHY_CAPABILITIES_AUDIO;
- video = capabilities & EMPATHY_CAPABILITIES_VIDEO;
-
goto out;
events:
@@ -2136,29 +2180,16 @@ log_window_update_buttons_sensitivity (EmpathyLogWindow *self)
if (self->priv->events_contact != NULL)
self->priv->selected_contact = g_object_ref (self->priv->events_contact);
- else
- goto out;
-
- capabilities = empathy_contact_get_capabilities (self->priv->selected_contact);
-
- profile = chat = TRUE;
- call = capabilities & EMPATHY_CAPABILITIES_AUDIO;
- video = capabilities & EMPATHY_CAPABILITIES_VIDEO;
-
- if (video)
- self->priv->button_video_binding = g_object_bind_property (
- self->priv->camera_monitor, "available",
- self->priv->button_video, "sensitive",
- G_BINDING_SYNC_CREATE);
out:
- gtk_widget_set_sensitive (self->priv->button_profile, profile);
- gtk_widget_set_sensitive (self->priv->button_chat, chat);
- gtk_widget_set_sensitive (self->priv->button_call, call);
+ if (self->priv->selected_contact != NULL)
+ {
+ tp_g_signal_connect_object (self->priv->selected_contact,
+ "notify::capabilities", G_CALLBACK (contact_capabilities_changed_cb),
+ self, 0);
+ }
- /* Don't override the binding */
- if (!video)
- gtk_widget_set_sensitive (self->priv->button_video, video);
+ do_update_buttons_sensitivity (self);
}
static void
diff --git a/libempathy-gtk/empathy-new-account-dialog.c b/libempathy-gtk/empathy-new-account-dialog.c
new file mode 100644
index 00000000..cab22ea4
--- /dev/null
+++ b/libempathy-gtk/empathy-new-account-dialog.c
@@ -0,0 +1,212 @@
+/*
+ * empathy-new-account-dialog.c - Source for EmpathyNewAccountDialog
+ *
+ * Copyright (C) 2011 - 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, see .
+ */
+
+#include "config.h"
+#include "empathy-new-account-dialog.h"
+
+#include
+
+#define DEBUG_FLAG EMPATHY_DEBUG_ACCOUNT
+#include
+
+#include
+#include
+
+G_DEFINE_TYPE (EmpathyNewAccountDialog, empathy_new_account_dialog, \
+ GTK_TYPE_DIALOG)
+
+struct _EmpathyNewAccountDialogPrivate
+{
+ GtkWidget *chooser;
+ GtkWidget *current_account_widget;
+ GtkWidget *main_vbox;
+ GtkWidget *connect_button;
+
+ EmpathyAccountWidget *current_widget_object;
+ EmpathyAccountSettings *settings;
+};
+
+static void
+account_created_cb (EmpathyAccountWidget *widget,
+ TpAccount *account,
+ 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);
+}
+
+static void
+protocol_changed_cb (GtkComboBox *chooser,
+ EmpathyNewAccountDialog *self)
+{
+ EmpathyAccountSettings *settings;
+ GtkWidget *account_widget;
+ EmpathyAccountWidget *widget_object;
+ gchar *password = NULL, *account = NULL;
+
+ settings = empathy_protocol_chooser_create_account_settings (
+ EMPATHY_PROTOCOL_CHOOSER (chooser));
+
+ if (settings == NULL)
+ return;
+
+ /* Save "account" and "password" parameters */
+ if (self->priv->settings != NULL)
+ {
+ account = g_strdup (empathy_account_settings_get_string (
+ self->priv->settings, "account"));
+
+ password = g_strdup (empathy_account_settings_get_string (
+ self->priv->settings, "password"));
+
+ 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);
+
+ 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);
+
+ gtk_widget_destroy (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);
+
+ /* Restore "account" and "password" parameters in the new widget */
+ if (account != NULL)
+ {
+ empathy_account_widget_set_account_param (widget_object, account);
+ g_free (account);
+ }
+
+ if (password != NULL)
+ {
+ empathy_account_widget_set_password_param (widget_object, password);
+ g_free (password);
+ }
+
+ gtk_box_pack_start (GTK_BOX (self->priv->main_vbox), account_widget,
+ FALSE, FALSE, 0);
+ gtk_widget_show (account_widget);
+}
+
+static void
+empathy_new_account_dialog_init (EmpathyNewAccountDialog *self)
+{
+ GtkWidget *w, *hbox, *content;
+
+ self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self,
+ EMPATHY_TYPE_NEW_ACCOUNT_DIALOG, EmpathyNewAccountDialogPrivate);
+
+ self->priv->main_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12);
+ gtk_container_set_border_width (GTK_CONTAINER (self->priv->main_vbox), 12);
+ gtk_widget_show (self->priv->main_vbox);
+
+ hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
+ gtk_box_pack_start (GTK_BOX (self->priv->main_vbox), hbox, FALSE, FALSE, 0);
+ gtk_widget_show (hbox);
+
+ w = gtk_label_new (_("What kind of chat account do you have?"));
+ gtk_box_pack_start (GTK_BOX (hbox), w, FALSE, FALSE, 0);
+ gtk_widget_show (w);
+
+ w = gtk_alignment_new (0, 0, 0, 0);
+ gtk_alignment_set_padding (GTK_ALIGNMENT (w), 0, 0, 12, 0);
+ gtk_box_pack_start (GTK_BOX (self->priv->main_vbox), w, FALSE, FALSE, 0);
+ gtk_widget_show (w);
+
+ self->priv->chooser = empathy_protocol_chooser_new ();
+ gtk_box_pack_start (GTK_BOX (hbox), self->priv->chooser, FALSE, FALSE, 0);
+ gtk_widget_show (self->priv->chooser);
+
+ content = gtk_dialog_get_content_area (GTK_DIALOG (self));
+ gtk_container_add (GTK_CONTAINER (content), self->priv->main_vbox);
+
+ g_signal_connect (self->priv->chooser, "changed",
+ G_CALLBACK (protocol_changed_cb), self);
+
+ /* trigger show the first account widget */
+ protocol_changed_cb (GTK_COMBO_BOX (self->priv->chooser), self);
+
+ gtk_window_set_title (GTK_WINDOW (self), _("Adding new account"));
+}
+
+static void
+empathy_new_account_dialog_dispose (GObject *object)
+{
+ EmpathyNewAccountDialog *self = (EmpathyNewAccountDialog *) object;
+
+ g_clear_object (&self->priv->settings);
+
+ G_OBJECT_CLASS (empathy_new_account_dialog_parent_class)->dispose (object);
+}
+
+static void
+empathy_new_account_dialog_class_init (EmpathyNewAccountDialogClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+ object_class->dispose = empathy_new_account_dialog_dispose;
+
+ g_type_class_add_private (object_class,
+ sizeof (EmpathyNewAccountDialogPrivate));
+}
+
+GtkWidget *
+empathy_new_account_dialog_new (GtkWindow *parent)
+{
+ GtkWidget *result;
+
+ g_return_val_if_fail (parent == NULL || GTK_IS_WINDOW (parent), NULL);
+
+ result = g_object_new (EMPATHY_TYPE_NEW_ACCOUNT_DIALOG,
+ "modal", TRUE,
+ "destroy-with-parent", TRUE,
+ NULL);
+
+ if (parent != NULL)
+ gtk_window_set_transient_for (GTK_WINDOW (result), parent);
+
+ return result;
+}
+
+EmpathyAccountSettings *
+empathy_new_account_dialog_get_settings (EmpathyNewAccountDialog *self)
+{
+ return self->priv->settings;
+}
diff --git a/libempathy-gtk/empathy-new-account-dialog.h b/libempathy-gtk/empathy-new-account-dialog.h
new file mode 100644
index 00000000..07fc22f9
--- /dev/null
+++ b/libempathy-gtk/empathy-new-account-dialog.h
@@ -0,0 +1,59 @@
+/*
+ * empathy-new-account-dialog.h - Source for EmpathyNewAccountDialog
+ *
+ * Copyright (C) 2011 - 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, see .
+ */
+
+#ifndef ___EMPATHY_NEW_ACCOUNT_DIALOG_H__
+#define ___EMPATHY_NEW_ACCOUNT_DIALOG_H__
+
+#include
+
+#include
+
+G_BEGIN_DECLS
+
+#define EMPATHY_TYPE_NEW_ACCOUNT_DIALOG (empathy_new_account_dialog_get_type ())
+#define EMPATHY_NEW_ACCOUNT_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EMPATHY_TYPE_NEW_ACCOUNT_DIALOG, EmpathyNewAccountDialog))
+#define EMPATHY_NEW_ACCOUNT_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EMPATHY_TYPE_NEW_ACCOUNT_DIALOG, EmpathyNewAccountDialogClass))
+#define EMPATHY_IS_NEW_ACCOUNT_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EMPATHY_TYPE_NEW_ACCOUNT_DIALOG))
+#define EMPATHY_IS_NEW_ACCOUNT_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EMPATHY_TYPE_NEW_ACCOUNT_DIALOG))
+#define EMPATHY_NEW_ACCOUNT_DIALOG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), EMPATHY_TYPE_NEW_ACCOUNT_DIALOG, EmpathyNewAccountDialogClass))
+
+typedef struct _EmpathyNewAccountDialog EmpathyNewAccountDialog;
+typedef struct _EmpathyNewAccountDialogClass EmpathyNewAccountDialogClass;
+typedef struct _EmpathyNewAccountDialogPrivate EmpathyNewAccountDialogPrivate;
+
+struct _EmpathyNewAccountDialog {
+ GtkDialog parent;
+
+ EmpathyNewAccountDialogPrivate *priv;
+};
+
+struct _EmpathyNewAccountDialogClass {
+ GtkDialogClass parent_class;
+};
+
+GType empathy_new_account_dialog_get_type (void) G_GNUC_CONST;
+
+GtkWidget * empathy_new_account_dialog_new (GtkWindow *parent);
+
+EmpathyAccountSettings * empathy_new_account_dialog_get_settings (
+ EmpathyNewAccountDialog *self);
+
+G_END_DECLS
+
+#endif /* ___EMPATHY_NEW_ACCOUNT_DIALOG_H__ */
diff --git a/libempathy-gtk/empathy-new-call-dialog.c b/libempathy-gtk/empathy-new-call-dialog.c
index 6c55f095..0fecedde 100644
--- a/libempathy-gtk/empathy-new-call-dialog.c
+++ b/libempathy-gtk/empathy-new-call-dialog.c
@@ -32,7 +32,6 @@
#include
#include
-#include
#include
#include
diff --git a/libempathy-gtk/empathy-new-message-dialog.c b/libempathy-gtk/empathy-new-message-dialog.c
index 8ed1712a..3fcff98f 100644
--- a/libempathy-gtk/empathy-new-message-dialog.c
+++ b/libempathy-gtk/empathy-new-message-dialog.c
@@ -29,7 +29,6 @@
#include
#include
-#include
#include
#include
diff --git a/libempathy-gtk/empathy-persona-store.c b/libempathy-gtk/empathy-persona-store.c
deleted file mode 100644
index a48fa121..00000000
--- a/libempathy-gtk/empathy-persona-store.c
+++ /dev/null
@@ -1,1215 +0,0 @@
-/*
- * Copyright (C) 2005-2007 Imendio AB
- * Copyright (C) 2007-2008, 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: Mikael Hallendal
- * Martyn Russell
- * Xavier Claessens
- * Philip Withnall
- *
- * Based off EmpathyContactListStore.
- */
-
-#include "config.h"
-
-#include
-
-#include
-#include
-#include
-
-#include
-
-#include
-#include
-
-#include
-
-#include "empathy-persona-store.h"
-#include "empathy-gtk-enum-types.h"
-#include "empathy-ui-utils.h"
-
-#define DEBUG_FLAG EMPATHY_DEBUG_CONTACT
-#include
-
-/* Active users are those which have recently changed state
- * (e.g. online, offline or from normal to a busy state). */
-
-/* Time in seconds user is shown as active */
-#define ACTIVE_USER_SHOW_TIME 7
-
-/* Time in seconds after connecting which we wait before active users are
- * enabled */
-#define ACTIVE_USER_WAIT_TO_ENABLE_TIME 5
-
-static void add_persona (EmpathyPersonaStore *self,
- FolksPersona *persona);
-static GtkTreePath * find_persona (EmpathyPersonaStore *self,
- FolksPersona *persona);
-static void update_persona (EmpathyPersonaStore *self,
- FolksPersona *persona);
-static void remove_persona (EmpathyPersonaStore *self,
- FolksPersona *persona);
-
-#define GET_PRIV(obj) EMPATHY_GET_PRIV (obj, EmpathyPersonaStore)
-
-typedef struct
-{
- FolksIndividual *individual; /* owned */
- GHashTable *personas; /* owned Persona -> owned GtkTreeRowReference */
-
- gboolean show_avatars;
- gboolean show_protocols;
- gboolean show_active;
- EmpathyPersonaStoreSort sort_criterion;
-
- guint inhibit_active;
- guint setup_idle_id;
-
- GHashTable *status_icons; /* owned icon name -> owned GdkPixbuf */
-} EmpathyPersonaStorePriv;
-
-enum {
- PROP_0,
- PROP_INDIVIDUAL,
- PROP_SHOW_AVATARS,
- PROP_SHOW_PROTOCOLS,
- PROP_SORT_CRITERION
-};
-
-G_DEFINE_TYPE (EmpathyPersonaStore, empathy_persona_store, GTK_TYPE_LIST_STORE);
-
-static gboolean
-inhibit_active_cb (EmpathyPersonaStore *store)
-{
- EmpathyPersonaStorePriv *priv;
-
- priv = GET_PRIV (store);
-
- priv->show_active = TRUE;
- priv->inhibit_active = 0;
-
- return FALSE;
-}
-
-typedef struct {
- EmpathyPersonaStore *store;
- FolksPersona *persona;
- gboolean remove;
- guint timeout;
-} ShowActiveData;
-
-static void persona_active_free (ShowActiveData *data);
-
-static void
-persona_active_invalidated (ShowActiveData *data,
- GObject *old_object)
-{
- /* Remove the timeout and free the struct, since the persona or persona
- * store has disappeared. */
- g_source_remove (data->timeout);
-
- if (old_object == (GObject *) data->store)
- data->store = NULL;
- else if (old_object == (GObject *) data->persona)
- data->persona = NULL;
- else
- g_assert_not_reached ();
-
- persona_active_free (data);
-}
-
-static ShowActiveData *
-persona_active_new (EmpathyPersonaStore *self,
- FolksPersona *persona,
- gboolean remove_)
-{
- ShowActiveData *data;
-
- DEBUG ("Contact:'%s' now active, and %s be removed",
- folks_alias_details_get_alias (FOLKS_ALIAS_DETAILS (persona)),
- remove_ ? "WILL" : "WILL NOT");
-
- data = g_slice_new0 (ShowActiveData);
-
- /* We don't actually want to force either the PersonaStore or the
- * Persona to stay alive, since the user could quit Empathy or disable
- * the account before the persona_active timeout is fired. */
- g_object_weak_ref (G_OBJECT (self),
- (GWeakNotify) persona_active_invalidated, data);
- g_object_weak_ref (G_OBJECT (persona),
- (GWeakNotify) persona_active_invalidated, data);
-
- data->store = self;
- data->persona = persona;
- data->remove = remove_;
-
- return data;
-}
-
-static void
-persona_active_free (ShowActiveData *data)
-{
- if (data->store != NULL)
- {
- g_object_weak_unref (G_OBJECT (data->store),
- (GWeakNotify) persona_active_invalidated, data);
- }
-
- if (data->persona != NULL)
- {
- g_object_weak_unref (G_OBJECT (data->persona),
- (GWeakNotify) persona_active_invalidated, data);
- }
-
- g_slice_free (ShowActiveData, data);
-}
-
-static void
-persona_set_active (EmpathyPersonaStore *self,
- FolksPersona *persona,
- gboolean active,
- gboolean set_changed)
-{
- GtkTreePath *path;
- GtkTreeIter iter;
-
- path = find_persona (self, persona);
- if (path == NULL)
- return;
-
- gtk_tree_model_get_iter (GTK_TREE_MODEL (self), &iter, path);
- gtk_list_store_set (GTK_LIST_STORE (self), &iter,
- EMPATHY_PERSONA_STORE_COL_IS_ACTIVE, active,
- -1);
-
- DEBUG ("Set item %s", active ? "active" : "inactive");
-
- if (set_changed)
- gtk_tree_model_row_changed (GTK_TREE_MODEL (self), path, &iter);
-
- gtk_tree_path_free (path);
-}
-
-static gboolean
-persona_active_cb (ShowActiveData *data)
-{
- const gchar *alias =
- folks_alias_details_get_alias (FOLKS_ALIAS_DETAILS (data->persona));
-
- if (data->remove)
- {
- DEBUG ("Contact:'%s' active timeout, removing item", alias);
- remove_persona (data->store, data->persona);
- }
-
- DEBUG ("Contact:'%s' no longer active", alias);
- persona_set_active (data->store, data->persona, FALSE, TRUE);
-
- persona_active_free (data);
-
- return FALSE;
-}
-
-static void
-persona_updated_cb (FolksPersona *persona,
- GParamSpec *pspec,
- EmpathyPersonaStore *self)
-{
- DEBUG ("Contact:'%s' updated, checking roster is in sync...",
- folks_alias_details_get_alias (FOLKS_ALIAS_DETAILS (persona)));
-
- update_persona (self, persona);
-}
-
-static void
-add_persona_and_connect (EmpathyPersonaStore *self,
- FolksPersona *persona)
-{
- /* We don't want any non-Telepathy personas */
- if (!TPF_IS_PERSONA (persona))
- return;
-
- g_signal_connect (persona, "notify::presence",
- (GCallback) persona_updated_cb, self);
- g_signal_connect (persona, "notify::presence-message",
- (GCallback) persona_updated_cb, self);
- g_signal_connect (persona, "notify::alias",
- (GCallback) persona_updated_cb, self);
- g_signal_connect (persona, "notify::avatar",
- (GCallback) persona_updated_cb, self);
-
- add_persona (self, persona);
-}
-
-static void
-remove_persona_and_disconnect (EmpathyPersonaStore *self,
- FolksPersona *persona)
-{
- if (!TPF_IS_PERSONA (persona))
- return;
-
- g_signal_handlers_disconnect_by_func (persona,
- (GCallback) persona_updated_cb, self);
-
- remove_persona (self, persona);
-}
-
-static void
-add_persona (EmpathyPersonaStore *self,
- FolksPersona *persona)
-{
- EmpathyPersonaStorePriv *priv;
- GtkTreeIter iter;
- GtkTreePath *path;
- FolksPersonaStore *store;
- TpContact *tp_contact;
- EmpathyContact *contact;
- const gchar *alias;
-
- if (!TPF_IS_PERSONA (persona))
- return;
-
- priv = GET_PRIV (self);
-
- alias = folks_alias_details_get_alias (FOLKS_ALIAS_DETAILS (persona));
- if (EMP_STR_EMPTY (alias))
- return;
-
- tp_contact = tpf_persona_get_contact (TPF_PERSONA (persona));
- if (tp_contact == NULL)
- return;
-
- contact = empathy_contact_dup_from_tp_contact (tp_contact);
- store = folks_persona_get_store (persona);
-
- gtk_list_store_insert_with_values (GTK_LIST_STORE (self), &iter, 0,
- EMPATHY_PERSONA_STORE_COL_NAME, alias,
- EMPATHY_PERSONA_STORE_COL_ACCOUNT_NAME,
- folks_persona_store_get_display_name (store),
- EMPATHY_PERSONA_STORE_COL_DISPLAY_ID,
- folks_persona_get_display_id (persona),
- EMPATHY_PERSONA_STORE_COL_PERSONA, persona,
- EMPATHY_PERSONA_STORE_COL_CAN_AUDIO_CALL,
- empathy_contact_get_capabilities (contact) &
- EMPATHY_CAPABILITIES_AUDIO,
- EMPATHY_PERSONA_STORE_COL_CAN_VIDEO_CALL,
- empathy_contact_get_capabilities (contact) &
- EMPATHY_CAPABILITIES_VIDEO,
- -1);
-
- g_object_unref (contact);
-
- path = gtk_tree_model_get_path (GTK_TREE_MODEL (self), &iter);
- g_hash_table_replace (priv->personas, g_object_ref (persona),
- gtk_tree_row_reference_new (GTK_TREE_MODEL (self), path));
- gtk_tree_path_free (path);
-
- update_persona (self, persona);
-}
-
-static void
-remove_persona (EmpathyPersonaStore *self,
- FolksPersona *persona)
-{
- EmpathyPersonaStorePriv *priv;
- GtkTreePath *path;
- GtkTreeIter iter;
-
- if (!TPF_IS_PERSONA (persona))
- return;
-
- priv = GET_PRIV (self);
-
- path = find_persona (self, persona);
- if (path == NULL)
- return;
-
- g_hash_table_remove (priv->personas, persona);
-
- gtk_tree_model_get_iter (GTK_TREE_MODEL (self), &iter, path);
- gtk_list_store_remove (GTK_LIST_STORE (self), &iter);
- gtk_tree_path_free (path);
-}
-
-static GdkPixbuf *
-get_persona_status_icon (EmpathyPersonaStore *self,
- FolksPersona *persona)
-{
- EmpathyPersonaStorePriv *priv = GET_PRIV (self);
- TpContact *tp_contact;
- EmpathyContact *contact;
- const gchar *protocol_name = NULL;
- gchar *icon_name = NULL;
- GdkPixbuf *pixbuf_status = NULL;
- const gchar *status_icon_name = NULL;
-
- tp_contact = tpf_persona_get_contact (TPF_PERSONA (persona));
- if (tp_contact == NULL)
- return NULL;
-
- contact = empathy_contact_dup_from_tp_contact (tp_contact);
-
- status_icon_name = empathy_icon_name_for_contact (contact);
- if (status_icon_name == NULL)
- {
- g_object_unref (contact);
- return NULL;
- }
-
- if (priv->show_protocols)
- {
- protocol_name = empathy_protocol_name_for_contact (contact);
- icon_name = g_strdup_printf ("%s-%s", status_icon_name, protocol_name);
- }
- else
- {
- icon_name = g_strdup_printf ("%s", status_icon_name);
- }
-
- pixbuf_status = g_hash_table_lookup (priv->status_icons, icon_name);
-
- if (pixbuf_status == NULL)
- {
- pixbuf_status = empathy_pixbuf_contact_status_icon_with_icon_name (
- contact, status_icon_name, priv->show_protocols);
-
- if (pixbuf_status != NULL)
- {
- g_hash_table_insert (priv->status_icons, g_strdup (icon_name),
- pixbuf_status);
- }
- }
-
- g_object_unref (contact);
- g_free (icon_name);
-
- return pixbuf_status;
-}
-
-static void
-update_persona (EmpathyPersonaStore *self,
- FolksPersona *persona)
-{
- EmpathyPersonaStorePriv *priv = GET_PRIV (self);
- GtkTreePath *path;
- gboolean do_set_active = FALSE;
- gboolean do_set_refresh = FALSE;
- const gchar *alias;
-
- path = find_persona (self, persona);
- alias = folks_alias_details_get_alias (FOLKS_ALIAS_DETAILS (persona));
-
- if (path == NULL)
- {
- DEBUG ("Contact:'%s' in list:NO, should be:YES", alias);
-
- add_persona (self, persona);
-
- if (priv->show_active)
- {
- do_set_active = TRUE;
- DEBUG ("Set active (contact added)");
- }
- }
- else
- {
- FolksPersonaStore *store;
- TpContact *tp_contact;
- EmpathyContact *contact;
- GtkTreeIter iter;
- GdkPixbuf *pixbuf_avatar = NULL;
- GdkPixbuf *pixbuf_status;
- gboolean now_online = FALSE;
- gboolean was_online = TRUE;
-
- DEBUG ("Contact:'%s' in list:YES, should be:YES", alias);
-
- gtk_tree_model_get_iter (GTK_TREE_MODEL (self), &iter, path);
- gtk_tree_path_free (path);
-
- /* Get online state now. */
- now_online = folks_presence_details_is_online (
- FOLKS_PRESENCE_DETAILS (persona));
-
- /* Get online state before. */
- gtk_tree_model_get (GTK_TREE_MODEL (self), &iter,
- EMPATHY_PERSONA_STORE_COL_IS_ONLINE, &was_online,
- -1);
-
- /* Is this really an update or an online/offline. */
- if (priv->show_active)
- {
- if (was_online != now_online)
- {
- do_set_active = TRUE;
- do_set_refresh = TRUE;
-
- DEBUG ("Set active (contact updated %s)",
- was_online ? "online -> offline" : "offline -> online");
- }
- else
- {
- /* Was TRUE for presence updates. */
- /* do_set_active = FALSE; */
- do_set_refresh = TRUE;
- DEBUG ("Set active (contact updated)");
- }
- }
-
- /* We still need to use EmpathyContact for the capabilities stuff */
- tp_contact = tpf_persona_get_contact (TPF_PERSONA (persona));
- if (tp_contact != NULL)
- {
- contact = empathy_contact_dup_from_tp_contact (tp_contact);
- store = folks_persona_get_store (persona);
-
- pixbuf_avatar = empathy_pixbuf_avatar_from_contact_scaled (contact,
- 32, 32);
- pixbuf_status = get_persona_status_icon (self, persona);
-
- gtk_list_store_set (GTK_LIST_STORE (self), &iter,
- EMPATHY_PERSONA_STORE_COL_ICON_STATUS, pixbuf_status,
- EMPATHY_PERSONA_STORE_COL_PIXBUF_AVATAR, pixbuf_avatar,
- EMPATHY_PERSONA_STORE_COL_PIXBUF_AVATAR_VISIBLE,
- priv->show_avatars,
- EMPATHY_PERSONA_STORE_COL_NAME, alias,
- EMPATHY_PERSONA_STORE_COL_ACCOUNT_NAME,
- folks_persona_store_get_display_name (store),
- EMPATHY_PERSONA_STORE_COL_DISPLAY_ID,
- folks_persona_get_display_id (persona),
- EMPATHY_PERSONA_STORE_COL_PRESENCE_TYPE,
- folks_presence_details_get_presence_type (
- FOLKS_PRESENCE_DETAILS (persona)),
- EMPATHY_PERSONA_STORE_COL_STATUS,
- folks_presence_details_get_presence_message (
- FOLKS_PRESENCE_DETAILS (persona)),
- EMPATHY_PERSONA_STORE_COL_IS_ONLINE, now_online,
- EMPATHY_PERSONA_STORE_COL_CAN_AUDIO_CALL,
- empathy_contact_get_capabilities (contact) &
- EMPATHY_CAPABILITIES_AUDIO,
- EMPATHY_PERSONA_STORE_COL_CAN_VIDEO_CALL,
- empathy_contact_get_capabilities (contact) &
- EMPATHY_CAPABILITIES_VIDEO,
- -1);
-
- g_object_unref (contact);
- }
-
- if (pixbuf_avatar)
- g_object_unref (pixbuf_avatar);
- }
-
- if (priv->show_active && do_set_active)
- {
- persona_set_active (self, persona, do_set_active, do_set_refresh);
-
- if (do_set_active)
- {
- ShowActiveData *data;
-
- data = persona_active_new (self, persona, FALSE);
- data->timeout = g_timeout_add_seconds (ACTIVE_USER_SHOW_TIME,
- (GSourceFunc) persona_active_cb,
- data);
- }
- }
-
- /* FIXME: when someone goes online then offline quickly, the
- * first timeout sets the user to be inactive and the second
- * timeout removes the user from the contact list, really we
- * should remove the first timeout.
- */
-}
-
-static void
-individual_personas_changed_cb (GObject *object,
- GeeSet *added,
- GeeSet *removed,
- EmpathyPersonaStore *self)
-{
- GeeIterator *iter;
-
- /* One of the personas' row references might hold the last reference to the
- * PersonaStore, so we need to keep a reference ourselves so we don't get
- * finalised. */
- g_object_ref (self);
-
- /* Remove the old personas. */
- iter = gee_iterable_iterator (GEE_ITERABLE (removed));
- while (gee_iterator_next (iter))
- {
- FolksPersona *persona = gee_iterator_get (iter);
- remove_persona_and_disconnect (self, persona);
- g_clear_object (&persona);
- }
- g_clear_object (&iter);
-
- /* Add each of the new personas to the tree model */
- iter = gee_iterable_iterator (GEE_ITERABLE (added));
- while (gee_iterator_next (iter))
- {
- FolksPersona *persona = gee_iterator_get (iter);
- add_persona_and_connect (self, persona);
- g_clear_object (&persona);
- }
- g_clear_object (&iter);
-
- g_object_unref (self);
-}
-
-static gint
-sort_personas (FolksPersona *persona_a,
- FolksPersona *persona_b)
-{
- EmpathyContact *contact;
- TpAccount *account_a, *account_b;
- TpContact *tp_contact_a, *tp_contact_b;
- gint ret_val;
-
- g_return_val_if_fail (persona_a != NULL || persona_b != NULL, 0);
-
- /* alias */
- ret_val = g_utf8_collate (
- folks_alias_details_get_alias (FOLKS_ALIAS_DETAILS (persona_a)),
- folks_alias_details_get_alias (FOLKS_ALIAS_DETAILS (persona_b)));
-
- if (ret_val != 0)
- goto out;
-
- /* identifier */
- ret_val = g_utf8_collate (folks_persona_get_display_id (persona_a),
- folks_persona_get_display_id (persona_b));
-
- if (ret_val != 0)
- goto out;
-
- tp_contact_a = tpf_persona_get_contact (TPF_PERSONA (persona_a));
- tp_contact_b = tpf_persona_get_contact (TPF_PERSONA (persona_b));
-
- /* handle the case that one or more of these personas are from the cache */
- if (tp_contact_a == NULL || tp_contact_b == NULL)
- {
- ret_val = (tp_contact_a != NULL ? 1 : -1);
- goto out;
- }
-
- contact = empathy_contact_dup_from_tp_contact (tp_contact_a);
- account_a = empathy_contact_get_account (contact);
- g_object_unref (contact);
-
- contact = empathy_contact_dup_from_tp_contact (tp_contact_b);
- account_b = empathy_contact_get_account (contact);
- g_object_unref (contact);
-
- /* protocol */
- ret_val = strcmp (tp_account_get_protocol (account_a),
- tp_account_get_protocol (account_b));
-
- if (ret_val != 0)
- goto out;
-
- /* account ID */
- ret_val = strcmp (tp_proxy_get_object_path (account_a),
- tp_proxy_get_object_path (account_b));
-
-out:
- return ret_val;
-}
-
-static gint
-state_sort_func (GtkTreeModel *model,
- GtkTreeIter *iter_a,
- GtkTreeIter *iter_b,
- gpointer user_data)
-{
- gint ret_val;
- gchar *name_a, *name_b;
- FolksPersona *persona_a, *persona_b;
-
- gtk_tree_model_get (model, iter_a,
- EMPATHY_PERSONA_STORE_COL_NAME, &name_a,
- EMPATHY_PERSONA_STORE_COL_PERSONA, &persona_a,
- -1);
- gtk_tree_model_get (model, iter_b,
- EMPATHY_PERSONA_STORE_COL_NAME, &name_b,
- EMPATHY_PERSONA_STORE_COL_PERSONA, &persona_b,
- -1);
-
- if (persona_a == NULL || persona_b == NULL) {
- ret_val = 0;
- goto free_and_out;
- }
-
- /* If we managed to get this far, we can start looking at
- * the presences.
- */
- ret_val = -tp_connection_presence_type_cmp_availability (
- folks_presence_details_get_presence_type (
- FOLKS_PRESENCE_DETAILS (persona_a)),
- folks_presence_details_get_presence_type (
- FOLKS_PRESENCE_DETAILS (persona_b)));
-
- if (ret_val == 0) {
- /* Fallback: compare by name et al. */
- ret_val = sort_personas (persona_a, persona_b);
- }
-
-free_and_out:
- g_free (name_a);
- g_free (name_b);
-
- tp_clear_object (&persona_a);
- tp_clear_object (&persona_b);
-
- return ret_val;
-}
-
-static gint
-name_sort_func (GtkTreeModel *model,
- GtkTreeIter *iter_a,
- GtkTreeIter *iter_b,
- gpointer user_data)
-{
- gchar *name_a, *name_b;
- FolksPersona *persona_a, *persona_b;
- gint ret_val;
-
- gtk_tree_model_get (model, iter_a,
- EMPATHY_PERSONA_STORE_COL_NAME, &name_a,
- EMPATHY_PERSONA_STORE_COL_PERSONA, &persona_a,
- -1);
- gtk_tree_model_get (model, iter_b,
- EMPATHY_PERSONA_STORE_COL_NAME, &name_b,
- EMPATHY_PERSONA_STORE_COL_PERSONA, &persona_b,
- -1);
-
- if (persona_a == NULL || persona_b == NULL)
- ret_val = 0;
- else
- ret_val = sort_personas (persona_a, persona_b);
-
- tp_clear_object (&persona_a);
- tp_clear_object (&persona_b);
-
- return ret_val;
-}
-
-static GtkTreePath *
-find_persona (EmpathyPersonaStore *self,
- FolksPersona *persona)
-{
- EmpathyPersonaStorePriv *priv = GET_PRIV (self);
- GtkTreeRowReference *row;
-
- row = g_hash_table_lookup (priv->personas, persona);
- if (row == NULL)
- return NULL;
-
- return gtk_tree_row_reference_get_path (row);
-}
-
-static gboolean
-update_list_mode_foreach (GtkTreeModel *model,
- GtkTreePath *path,
- GtkTreeIter *iter,
- EmpathyPersonaStore *self)
-{
- EmpathyPersonaStorePriv *priv;
- FolksPersona *persona;
- GdkPixbuf *pixbuf_status;
-
- priv = GET_PRIV (self);
-
- gtk_tree_model_get (model, iter,
- EMPATHY_PERSONA_STORE_COL_PERSONA, &persona,
- -1);
-
- if (persona == NULL)
- return FALSE;
-
- /* get icon from hash_table */
- pixbuf_status = get_persona_status_icon (self, persona);
-
- gtk_list_store_set (GTK_LIST_STORE (self), iter,
- EMPATHY_PERSONA_STORE_COL_ICON_STATUS, pixbuf_status,
- EMPATHY_PERSONA_STORE_COL_PIXBUF_AVATAR_VISIBLE, priv->show_avatars,
- -1);
-
- tp_clear_object (&persona);
-
- return FALSE;
-}
-
-static void
-set_up (EmpathyPersonaStore *self)
-{
- EmpathyPersonaStorePriv *priv;
- GType types[] = {
- GDK_TYPE_PIXBUF, /* Status pixbuf */
- GDK_TYPE_PIXBUF, /* Avatar pixbuf */
- G_TYPE_BOOLEAN, /* Avatar pixbuf visible */
- G_TYPE_STRING, /* Name */
- G_TYPE_STRING, /* Account name */
- G_TYPE_STRING, /* Display ID */
- G_TYPE_UINT, /* Presence type */
- G_TYPE_STRING, /* Status string */
- FOLKS_TYPE_PERSONA, /* Persona */
- G_TYPE_BOOLEAN, /* Is active */
- G_TYPE_BOOLEAN, /* Is online */
- G_TYPE_BOOLEAN, /* Can make audio calls */
- G_TYPE_BOOLEAN, /* Can make video calls */
- };
-
- priv = GET_PRIV (self);
-
- gtk_list_store_set_column_types (GTK_LIST_STORE (self),
- EMPATHY_PERSONA_STORE_COL_COUNT, types);
-
- /* Set up sorting */
- gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (self),
- EMPATHY_PERSONA_STORE_COL_NAME, name_sort_func, self, NULL);
- gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (self),
- EMPATHY_PERSONA_STORE_COL_STATUS, state_sort_func, self, NULL);
-
- priv->sort_criterion = EMPATHY_PERSONA_STORE_SORT_NAME;
- empathy_persona_store_set_sort_criterion (self, priv->sort_criterion);
-}
-
-static void
-empathy_persona_store_init (EmpathyPersonaStore *self)
-{
- EmpathyPersonaStorePriv *priv = G_TYPE_INSTANCE_GET_PRIVATE (self,
- EMPATHY_TYPE_PERSONA_STORE, EmpathyPersonaStorePriv);
-
- self->priv = priv;
-
- priv->show_avatars = TRUE;
- priv->show_protocols = FALSE;
- priv->inhibit_active = g_timeout_add_seconds (ACTIVE_USER_WAIT_TO_ENABLE_TIME,
- (GSourceFunc) inhibit_active_cb, self);
-
- priv->status_icons = g_hash_table_new_full (g_str_hash, g_str_equal, g_free,
- g_object_unref);
- priv->personas = g_hash_table_new_full (g_direct_hash, g_direct_equal,
- g_object_unref, (GDestroyNotify) gtk_tree_row_reference_free);
-
- set_up (self);
-}
-
-static void
-get_property (GObject *object,
- guint param_id,
- GValue *value,
- GParamSpec *pspec)
-{
- EmpathyPersonaStorePriv *priv = GET_PRIV (object);
-
- switch (param_id)
- {
- case PROP_INDIVIDUAL:
- g_value_set_object (value, priv->individual);
- break;
- case PROP_SHOW_AVATARS:
- g_value_set_boolean (value, priv->show_avatars);
- break;
- case PROP_SHOW_PROTOCOLS:
- g_value_set_boolean (value, priv->show_protocols);
- break;
- case PROP_SORT_CRITERION:
- g_value_set_enum (value, priv->sort_criterion);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
- break;
- }
-}
-
-static void
-set_property (GObject *object,
- guint param_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- EmpathyPersonaStore *self = EMPATHY_PERSONA_STORE (object);
-
- switch (param_id)
- {
- case PROP_INDIVIDUAL:
- empathy_persona_store_set_individual (self, g_value_get_object (value));
- break;
- case PROP_SHOW_AVATARS:
- empathy_persona_store_set_show_avatars (self,
- g_value_get_boolean (value));
- break;
- case PROP_SHOW_PROTOCOLS:
- empathy_persona_store_set_show_protocols (self,
- g_value_get_boolean (value));
- break;
- case PROP_SORT_CRITERION:
- empathy_persona_store_set_sort_criterion (self,
- g_value_get_enum (value));
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
- break;
- }
-}
-
-static void
-dispose (GObject *object)
-{
- EmpathyPersonaStorePriv *priv = GET_PRIV (object);
-
- empathy_persona_store_set_individual (EMPATHY_PERSONA_STORE (object), NULL);
-
- if (priv->inhibit_active != 0)
- {
- g_source_remove (priv->inhibit_active);
- priv->inhibit_active = 0;
- }
-
- if (priv->setup_idle_id != 0)
- {
- g_source_remove (priv->setup_idle_id);
- priv->setup_idle_id = 0;
- }
-
- G_OBJECT_CLASS (empathy_persona_store_parent_class)->dispose (object);
-}
-
-static void
-finalize (GObject *object)
-{
- EmpathyPersonaStorePriv *priv = GET_PRIV (object);
-
- g_hash_table_unref (priv->status_icons);
- g_hash_table_unref (priv->personas);
-
- G_OBJECT_CLASS (empathy_persona_store_parent_class)->finalize (object);
-}
-
-static void
-empathy_persona_store_class_init (EmpathyPersonaStoreClass *klass)
-{
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
- object_class->get_property = get_property;
- object_class->set_property = set_property;
- object_class->dispose = dispose;
- object_class->finalize = finalize;
-
- /**
- * EmpathyPersonaStore:individual:
- *
- * The #FolksIndividual whose personas should be listed by the store. This
- * may be %NULL, which results in an empty store.
- */
- g_object_class_install_property (object_class, PROP_INDIVIDUAL,
- g_param_spec_object ("individual",
- "Individual",
- "The FolksIndividual whose Personas should be listed by the store.",
- FOLKS_TYPE_INDIVIDUAL,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- /**
- * EmpathyPersonaStore:show-avatars:
- *
- * Whether the store should display avatars for personas. This is a property
- * of the store rather than of #EmpathyPersonaView for efficiency reasons.
- */
- g_object_class_install_property (object_class, PROP_SHOW_AVATARS,
- g_param_spec_boolean ("show-avatars",
- "Show Avatars",
- "Whether the store should display avatars for personas.",
- TRUE,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- /**
- * EmpathyPersonaStore:show-protocols:
- *
- * Whether the store should display protocol icons for personas. This is a
- * property of the store rather than of #EmpathyPersonaView because it is
- * closely tied in with #EmpathyPersonaStore:show-avatars.
- */
- g_object_class_install_property (object_class, PROP_SHOW_PROTOCOLS,
- g_param_spec_boolean ("show-protocols",
- "Show Protocols",
- "Whether the store should display protocol icons for personas.",
- FALSE,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- /**
- * EmpathyPersonaStore:sort-criterion:
- *
- * The criterion used to sort the personas in the store.
- */
- g_object_class_install_property (object_class, PROP_SORT_CRITERION,
- g_param_spec_enum ("sort-criterion",
- "Sort criterion",
- "The sort criterion to use for sorting the persona list",
- EMPATHY_TYPE_PERSONA_STORE_SORT,
- EMPATHY_PERSONA_STORE_SORT_NAME,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- g_type_class_add_private (object_class, sizeof (EmpathyPersonaStorePriv));
-}
-
-/**
- * empathy_persona_store_new:
- * @individual: the #FolksIndividual whose personas should be used in the store,
- * or %NULL
- *
- * Create a new #EmpathyPersonaStore with the personas from the given
- * @individual.
- *
- * Return value: a new #EmpathyPersonaStore
- */
-EmpathyPersonaStore *
-empathy_persona_store_new (FolksIndividual *individual)
-{
- g_return_val_if_fail (individual == NULL || FOLKS_IS_INDIVIDUAL (individual),
- NULL);
-
- return g_object_new (EMPATHY_TYPE_PERSONA_STORE,
- "individual", individual, NULL);
-}
-
-/**
- * empathy_persona_store_get_individual:
- * @self: an #EmpathyPersonaStore
- *
- * Get the value of #EmpathyPersonaStore:individual.
- *
- * Return value: the individual being displayed by the store, or %NULL
- */
-FolksIndividual *
-empathy_persona_store_get_individual (EmpathyPersonaStore *self)
-{
- g_return_val_if_fail (EMPATHY_IS_PERSONA_STORE (self), NULL);
-
- return GET_PRIV (self)->individual;
-}
-
-/**
- * empathy_persona_store_set_individual:
- * @self: an #EmpathyPersonaStore
- * @individual: the new individual to display in the store, or %NULL
- *
- * Set #EmpathyPersonaStore:individual to @individual, replacing the personas
- * which were in the store with the personas belonging to @individual, or with
- * nothing if @individual is %NULL.
- */
-void
-empathy_persona_store_set_individual (EmpathyPersonaStore *self,
- FolksIndividual *individual)
-{
- EmpathyPersonaStorePriv *priv;
-
- g_return_if_fail (EMPATHY_IS_PERSONA_STORE (self));
- g_return_if_fail (individual == NULL || FOLKS_IS_INDIVIDUAL (individual));
-
- priv = GET_PRIV (self);
-
- /* Remove the old individual */
- if (priv->individual != NULL)
- {
- GeeSet *personas;
- GeeIterator *iter;
-
- g_signal_handlers_disconnect_by_func (priv->individual,
- (GCallback) individual_personas_changed_cb, self);
-
- /* Disconnect from and remove all personas belonging to this individual */
- personas = folks_individual_get_personas (priv->individual);
- iter = gee_iterable_iterator (GEE_ITERABLE (personas));
- while (gee_iterator_next (iter))
- {
- FolksPersona *persona = gee_iterator_get (iter);
- remove_persona_and_disconnect (self, persona);
- g_clear_object (&persona);
- }
- g_clear_object (&iter);
-
- g_object_unref (priv->individual);
- }
-
- priv->individual = individual;
-
- /* Add the new individual */
- if (individual != NULL)
- {
- GeeSet *personas;
- GeeIterator *iter;
-
- g_object_ref (individual);
-
- g_signal_connect (individual, "personas-changed",
- (GCallback) individual_personas_changed_cb, self);
-
- /* Add pre-existing Personas */
-
- personas = folks_individual_get_personas (individual);
- iter = gee_iterable_iterator (GEE_ITERABLE (personas));
- while (gee_iterator_next (iter))
- {
- FolksPersona *persona = gee_iterator_get (iter);
- add_persona_and_connect (self, persona);
- g_clear_object (&persona);
- }
- g_clear_object (&iter);
- }
-
- g_object_notify (G_OBJECT (self), "individual");
-}
-
-/**
- * empathy_persona_store_get_show_avatars:
- * @self: an #EmpathyPersonaStore
- *
- * Get the value of #EmpathyPersonaStore:show-avatars.
- *
- * Return value: %TRUE if avatars are made available by the store, %FALSE
- * otherwise
- */
-gboolean
-empathy_persona_store_get_show_avatars (EmpathyPersonaStore *self)
-{
- g_return_val_if_fail (EMPATHY_IS_PERSONA_STORE (self), TRUE);
-
- return GET_PRIV (self)->show_avatars;
-}
-
-/**
- * empathy_persona_store_set_show_avatars:
- * @self: an #EmpathyPersonaStore
- * @show_avatars: %TRUE to make avatars available through the store, %FALSE
- * otherwise
- *
- * Set #EmpathyPersonaStore:show-avatars to @show_avatars.
- */
-void
-empathy_persona_store_set_show_avatars (EmpathyPersonaStore *self,
- gboolean show_avatars)
-{
- EmpathyPersonaStorePriv *priv;
-
- g_return_if_fail (EMPATHY_IS_PERSONA_STORE (self));
-
- priv = GET_PRIV (self);
- priv->show_avatars = show_avatars;
-
- gtk_tree_model_foreach (GTK_TREE_MODEL (self),
- (GtkTreeModelForeachFunc) update_list_mode_foreach, self);
-
- g_object_notify (G_OBJECT (self), "show-avatars");
-}
-
-/**
- * empathy_persona_store_get_show_protocols:
- * @self: an #EmpathyPersonaStore
- *
- * Get the value of #EmpathyPersonaStore:show-protocols.
- *
- * Return value: %TRUE if protocol images are made available by the store,
- * %FALSE otherwise
- */
-gboolean
-empathy_persona_store_get_show_protocols (EmpathyPersonaStore *self)
-{
- g_return_val_if_fail (EMPATHY_IS_PERSONA_STORE (self), TRUE);
-
- return GET_PRIV (self)->show_protocols;
-}
-
-/**
- * empathy_persona_store_set_show_protocols:
- * @self: an #EmpathyPersonaStore
- * @show_protocols: %TRUE to make protocol images available through the store,
- * %FALSE otherwise
- *
- * Set #EmpathyPersonaStore:show-protocols to @show_protocols.
- */
-void
-empathy_persona_store_set_show_protocols (EmpathyPersonaStore *self,
- gboolean show_protocols)
-{
- EmpathyPersonaStorePriv *priv;
-
- g_return_if_fail (EMPATHY_IS_PERSONA_STORE (self));
-
- priv = GET_PRIV (self);
- priv->show_protocols = show_protocols;
-
- gtk_tree_model_foreach (GTK_TREE_MODEL (self),
- (GtkTreeModelForeachFunc) update_list_mode_foreach, self);
-
- g_object_notify (G_OBJECT (self), "show-protocols");
-}
-
-/**
- * empathy_persona_store_get_sort_criterion:
- * @self: an #EmpathyPersonaStore
- *
- * Get the value of #EmpathyPersonaStore:sort-criterion.
- *
- * Return value: the criterion used to sort the personas in the store
- */
-EmpathyPersonaStoreSort
-empathy_persona_store_get_sort_criterion (EmpathyPersonaStore *self)
-{
- g_return_val_if_fail (EMPATHY_IS_PERSONA_STORE (self), 0);
-
- return GET_PRIV (self)->sort_criterion;
-}
-
-/**
- * empathy_persona_store_set_sort_criterion:
- * @self: an #EmpathyPersonaStore
- * @show_avatars: a criterion to be used to sort personas in the store
- *
- * Set #EmpathyPersonaStore:sort-criterion to @sort_criterion.
- */
-void
-empathy_persona_store_set_sort_criterion (EmpathyPersonaStore *self,
- EmpathyPersonaStoreSort sort_criterion)
-{
- EmpathyPersonaStorePriv *priv;
-
- g_return_if_fail (EMPATHY_IS_PERSONA_STORE (self));
-
- priv = GET_PRIV (self);
- priv->sort_criterion = sort_criterion;
-
- switch (sort_criterion)
- {
- case EMPATHY_PERSONA_STORE_SORT_STATE:
- gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (self),
- EMPATHY_PERSONA_STORE_COL_STATUS, GTK_SORT_ASCENDING);
- break;
- case EMPATHY_PERSONA_STORE_SORT_NAME:
- gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (self),
- EMPATHY_PERSONA_STORE_COL_NAME, GTK_SORT_ASCENDING);
- break;
- default:
- g_assert_not_reached ();
- break;
- }
-
- g_object_notify (G_OBJECT (self), "sort-criterion");
-}
diff --git a/libempathy-gtk/empathy-persona-store.h b/libempathy-gtk/empathy-persona-store.h
deleted file mode 100644
index 892f8fa7..00000000
--- a/libempathy-gtk/empathy-persona-store.h
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Copyright (C) 2005-2007 Imendio AB
- * Copyright (C) 2007-2008, 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: Mikael Hallendal
- * Martyn Russell
- * Xavier Claessens
- * Philip Withnall
- *
- * Based off EmpathyContactListStore.
- */
-
-#ifndef __EMPATHY_PERSONA_STORE_H__
-#define __EMPATHY_PERSONA_STORE_H__
-
-#include
-
-#include
-
-G_BEGIN_DECLS
-
-#define EMPATHY_TYPE_PERSONA_STORE (empathy_persona_store_get_type ())
-#define EMPATHY_PERSONA_STORE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), \
- EMPATHY_TYPE_PERSONA_STORE, EmpathyPersonaStore))
-#define EMPATHY_PERSONA_STORE_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), \
- EMPATHY_TYPE_PERSONA_STORE, EmpathyPersonaStoreClass))
-#define EMPATHY_IS_PERSONA_STORE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), \
- EMPATHY_TYPE_PERSONA_STORE))
-#define EMPATHY_IS_PERSONA_STORE_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), \
- EMPATHY_TYPE_PERSONA_STORE))
-#define EMPATHY_PERSONA_STORE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), \
- EMPATHY_TYPE_PERSONA_STORE, EmpathyPersonaStoreClass))
-
-typedef enum
-{
- EMPATHY_PERSONA_STORE_SORT_STATE,
- EMPATHY_PERSONA_STORE_SORT_NAME
-} EmpathyPersonaStoreSort;
-
-typedef enum
-{
- EMPATHY_PERSONA_STORE_COL_ICON_STATUS,
- EMPATHY_PERSONA_STORE_COL_PIXBUF_AVATAR,
- EMPATHY_PERSONA_STORE_COL_PIXBUF_AVATAR_VISIBLE,
- EMPATHY_PERSONA_STORE_COL_NAME,
- EMPATHY_PERSONA_STORE_COL_ACCOUNT_NAME,
- EMPATHY_PERSONA_STORE_COL_DISPLAY_ID,
- EMPATHY_PERSONA_STORE_COL_PRESENCE_TYPE,
- EMPATHY_PERSONA_STORE_COL_STATUS,
- EMPATHY_PERSONA_STORE_COL_PERSONA,
- EMPATHY_PERSONA_STORE_COL_IS_ACTIVE,
- EMPATHY_PERSONA_STORE_COL_IS_ONLINE,
- EMPATHY_PERSONA_STORE_COL_CAN_AUDIO_CALL,
- EMPATHY_PERSONA_STORE_COL_CAN_VIDEO_CALL,
- EMPATHY_PERSONA_STORE_COL_COUNT,
-} EmpathyPersonaStoreCol;
-
-typedef struct
-{
- GtkListStore parent;
- gpointer priv;
-} EmpathyPersonaStore;
-
-typedef struct
-{
- GtkListStoreClass parent_class;
-} EmpathyPersonaStoreClass;
-
-GType empathy_persona_store_get_type (void) G_GNUC_CONST;
-
-EmpathyPersonaStore *empathy_persona_store_new (FolksIndividual *individual);
-
-FolksIndividual *empathy_persona_store_get_individual (
- EmpathyPersonaStore *self);
-void empathy_persona_store_set_individual (EmpathyPersonaStore *self,
- FolksIndividual *individual);
-
-gboolean empathy_persona_store_get_show_avatars (EmpathyPersonaStore *self);
-void empathy_persona_store_set_show_avatars (EmpathyPersonaStore *self,
- gboolean show_avatars);
-
-gboolean empathy_persona_store_get_show_protocols (EmpathyPersonaStore *self);
-void empathy_persona_store_set_show_protocols (EmpathyPersonaStore *self,
- gboolean show_protocols);
-
-EmpathyPersonaStoreSort empathy_persona_store_get_sort_criterion (
- EmpathyPersonaStore *self);
-void empathy_persona_store_set_sort_criterion (EmpathyPersonaStore *self,
- EmpathyPersonaStoreSort sort_criterion);
-
-G_END_DECLS
-
-#endif /* __EMPATHY_PERSONA_STORE_H__ */
diff --git a/libempathy-gtk/empathy-persona-view.c b/libempathy-gtk/empathy-persona-view.c
deleted file mode 100644
index 7df94a63..00000000
--- a/libempathy-gtk/empathy-persona-view.c
+++ /dev/null
@@ -1,844 +0,0 @@
-/*
- * Copyright (C) 2005-2007 Imendio AB
- * Copyright (C) 2007-2008, 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: Mikael Hallendal
- * Martyn Russell
- * Xavier Claessens
- * Philip Withnall
- *
- * Based off EmpathyContactListView.
- */
-
-#include "config.h"
-
-#include
-
-#include
-#include
-
-#include
-
-#include
-#include
-
-#include
-#include
-
-#include "empathy-persona-view.h"
-#include "empathy-contact-widget.h"
-#include "empathy-images.h"
-#include "empathy-cell-renderer-text.h"
-#include "empathy-cell-renderer-activatable.h"
-#include "empathy-gtk-enum-types.h"
-#include "empathy-ui-utils.h"
-
-#define DEBUG_FLAG EMPATHY_DEBUG_CONTACT
-#include
-
-/**
- * SECTION:empathy-persona-view
- * @title: EmpathyPersonaView
- * @short_description: A tree view which displays personas from an individual
- * @include: libempathy-gtk/empathy-persona-view.h
- *
- * #EmpathyPersonaView is a tree view widget which displays the personas from
- * a given #EmpathyPersonaStore.
- *
- * It supports hiding offline personas and highlighting active personas. Active
- * personas are those which have recently changed state (e.g. online, offline or
- * from normal to a busy state).
- */
-
-#define GET_PRIV(obj) EMPATHY_GET_PRIV (obj, EmpathyPersonaView)
-
-typedef struct
-{
- GtkTreeModelFilter *filter;
- GtkWidget *tooltip_widget;
- gboolean show_offline;
- EmpathyPersonaViewFeatureFlags features;
-} EmpathyPersonaViewPriv;
-
-enum
-{
- PROP_0,
- PROP_MODEL,
- PROP_SHOW_OFFLINE,
- PROP_FEATURES,
-};
-
-typedef enum
-{
- DND_DRAG_TYPE_UNKNOWN = -1,
- DND_DRAG_TYPE_INDIVIDUAL_ID = 0,
- DND_DRAG_TYPE_PERSONA_ID,
- DND_DRAG_TYPE_STRING,
-} DndDragType;
-
-#define DRAG_TYPE(T,I) \
- { (gchar *) T, 0, I }
-
-static const GtkTargetEntry drag_types_dest[] = {
- DRAG_TYPE ("text/x-individual-id", DND_DRAG_TYPE_INDIVIDUAL_ID),
- DRAG_TYPE ("text/plain", DND_DRAG_TYPE_STRING),
- DRAG_TYPE ("STRING", DND_DRAG_TYPE_STRING),
-};
-
-static const GtkTargetEntry drag_types_source[] = {
- DRAG_TYPE ("text/x-persona-id", DND_DRAG_TYPE_PERSONA_ID),
-};
-
-#undef DRAG_TYPE
-
-static GdkAtom drag_atoms_dest[G_N_ELEMENTS (drag_types_dest)];
-
-enum
-{
- DRAG_INDIVIDUAL_RECEIVED,
- LAST_SIGNAL
-};
-
-static guint signals[LAST_SIGNAL];
-
-G_DEFINE_TYPE (EmpathyPersonaView, empathy_persona_view, GTK_TYPE_TREE_VIEW);
-
-static gboolean
-filter_visible_func (GtkTreeModel *model,
- GtkTreeIter *iter,
- EmpathyPersonaView *self)
-{
- EmpathyPersonaViewPriv *priv = GET_PRIV (self);
- gboolean is_online;
-
- gtk_tree_model_get (model, iter,
- EMPATHY_PERSONA_STORE_COL_IS_ONLINE, &is_online,
- -1);
-
- return (priv->show_offline || is_online);
-}
-
-static void
-set_model (EmpathyPersonaView *self,
- GtkTreeModel *model)
-{
- EmpathyPersonaViewPriv *priv = GET_PRIV (self);
-
- tp_clear_object (&priv->filter);
-
- priv->filter = GTK_TREE_MODEL_FILTER (gtk_tree_model_filter_new (model,
- NULL));
- gtk_tree_model_filter_set_visible_func (priv->filter,
- (GtkTreeModelFilterVisibleFunc) filter_visible_func, self, NULL);
-
- gtk_tree_view_set_model (GTK_TREE_VIEW (self), GTK_TREE_MODEL (priv->filter));
-}
-
-static void
-tooltip_destroy_cb (GtkWidget *widget,
- EmpathyPersonaView *self)
-{
- EmpathyPersonaViewPriv *priv = GET_PRIV (self);
-
- if (priv->tooltip_widget)
- {
- DEBUG ("Tooltip destroyed");
- g_object_unref (priv->tooltip_widget);
- priv->tooltip_widget = NULL;
- }
-}
-
-static gboolean
-query_tooltip_cb (EmpathyPersonaView *self,
- gint x,
- gint y,
- gboolean keyboard_mode,
- GtkTooltip *tooltip,
- gpointer user_data)
-{
- EmpathyPersonaViewPriv *priv = GET_PRIV (self);
- FolksPersona *persona;
- TpContact *tp_contact;
- EmpathyContact *contact;
- GtkTreeModel *model;
- GtkTreeIter iter;
- GtkTreePath *path;
- static gint running = 0;
- gboolean ret = FALSE;
-
- /* Avoid an infinite loop. See GNOME bug #574377 */
- if (running > 0)
- return FALSE;
- running++;
-
- if (!gtk_tree_view_get_tooltip_context (GTK_TREE_VIEW (self), &x, &y,
- keyboard_mode, &model, &path, &iter))
- {
- goto OUT;
- }
-
- gtk_tree_view_set_tooltip_row (GTK_TREE_VIEW (self), tooltip, path);
- gtk_tree_path_free (path);
-
- gtk_tree_model_get (model, &iter,
- EMPATHY_PERSONA_STORE_COL_PERSONA, &persona,
- -1);
- if (persona == NULL)
- goto OUT;
-
- tp_contact = tpf_persona_get_contact (TPF_PERSONA (persona));
- if (tp_contact == NULL)
- {
- g_clear_object (&persona);
- goto OUT;
- }
-
- contact = empathy_contact_dup_from_tp_contact (tp_contact);
-
- if (priv->tooltip_widget == NULL)
- {
- priv->tooltip_widget = empathy_contact_widget_new (contact,
- EMPATHY_CONTACT_WIDGET_FOR_TOOLTIP |
- EMPATHY_CONTACT_WIDGET_SHOW_LOCATION);
- gtk_container_set_border_width (GTK_CONTAINER (priv->tooltip_widget), 8);
- g_object_ref (priv->tooltip_widget);
- g_signal_connect (priv->tooltip_widget, "destroy",
- (GCallback) tooltip_destroy_cb, self);
- gtk_widget_show (priv->tooltip_widget);
- }
- else
- {
- empathy_contact_widget_set_contact (priv->tooltip_widget, contact);
- }
-
- gtk_tooltip_set_custom (tooltip, priv->tooltip_widget);
- ret = TRUE;
-
- g_object_unref (contact);
- g_object_unref (persona);
-
-OUT:
- running--;
-
- return ret;
-}
-
-static void
-cell_set_background (EmpathyPersonaView *self,
- GtkCellRenderer *cell,
- gboolean is_active)
-{
- if (is_active)
- {
- GdkRGBA color;
- GtkStyleContext *style;
-
- style = gtk_widget_get_style_context (GTK_WIDGET (self));
-
- gtk_style_context_get_background_color (style, GTK_STATE_FLAG_SELECTED,
- &color);
-
- /* Here we take the current theme colour and add it to
- * the colour for white and average the two. This
- * gives a colour which is inline with the theme but
- * slightly whiter.
- */
- empathy_make_color_whiter (&color);
-
- g_object_set (cell, "cell-background-rgba", &color, NULL);
- }
- else
- {
- g_object_set (cell, "cell-background-rgba", NULL, NULL);
- }
-}
-
-static void
-pixbuf_cell_data_func (GtkTreeViewColumn *tree_column,
- GtkCellRenderer *cell,
- GtkTreeModel *model,
- GtkTreeIter *iter,
- EmpathyPersonaView *self)
-{
- GdkPixbuf *pixbuf;
- gboolean is_active;
-
- gtk_tree_model_get (model, iter,
- EMPATHY_PERSONA_STORE_COL_IS_ACTIVE, &is_active,
- EMPATHY_PERSONA_STORE_COL_ICON_STATUS, &pixbuf,
- -1);
-
- g_object_set (cell, "pixbuf", pixbuf, NULL);
- tp_clear_object (&pixbuf);
-
- cell_set_background (self, cell, is_active);
-}
-
-static void
-audio_call_cell_data_func (GtkTreeViewColumn *tree_column,
- GtkCellRenderer *cell,
- GtkTreeModel *model,
- GtkTreeIter *iter,
- EmpathyPersonaView *self)
-{
- gboolean is_active;
- gboolean can_audio, can_video;
-
- gtk_tree_model_get (model, iter,
- EMPATHY_PERSONA_STORE_COL_IS_ACTIVE, &is_active,
- EMPATHY_PERSONA_STORE_COL_CAN_AUDIO_CALL, &can_audio,
- EMPATHY_PERSONA_STORE_COL_CAN_VIDEO_CALL, &can_video,
- -1);
-
- g_object_set (cell,
- "visible", (can_audio || can_video),
- "icon-name", can_video? EMPATHY_IMAGE_VIDEO_CALL : EMPATHY_IMAGE_VOIP,
- NULL);
-
- cell_set_background (self, cell, is_active);
-}
-
-static void
-avatar_cell_data_func (GtkTreeViewColumn *tree_column,
- GtkCellRenderer *cell,
- GtkTreeModel *model,
- GtkTreeIter *iter,
- EmpathyPersonaView *self)
-{
- GdkPixbuf *pixbuf;
- gboolean show_avatar, is_active;
-
- gtk_tree_model_get (model, iter,
- EMPATHY_PERSONA_STORE_COL_PIXBUF_AVATAR, &pixbuf,
- EMPATHY_PERSONA_STORE_COL_PIXBUF_AVATAR_VISIBLE, &show_avatar,
- EMPATHY_PERSONA_STORE_COL_IS_ACTIVE, &is_active,
- -1);
-
- g_object_set (cell,
- "visible", show_avatar,
- "pixbuf", pixbuf,
- NULL);
-
- tp_clear_object (&pixbuf);
-
- cell_set_background (self, cell, is_active);
-}
-
-static void
-text_cell_data_func (GtkTreeViewColumn *tree_column,
- GtkCellRenderer *cell,
- GtkTreeModel *model,
- GtkTreeIter *iter,
- EmpathyPersonaView *self)
-{
- gboolean is_active;
-
- gtk_tree_model_get (model, iter,
- EMPATHY_PERSONA_STORE_COL_IS_ACTIVE, &is_active,
- -1);
-
- cell_set_background (self, cell, is_active);
-}
-
-static gboolean
-individual_drag_received (EmpathyPersonaView *self,
- GdkDragContext *context,
- GtkSelectionData *selection)
-{
- EmpathyIndividualManager *manager = NULL;
- FolksIndividual *individual;
- const gchar *individual_id;
- gboolean success = FALSE;
-
- individual_id = (const gchar *) gtk_selection_data_get_data (selection);
- manager = empathy_individual_manager_dup_singleton ();
- individual = empathy_individual_manager_lookup_member (manager,
- individual_id);
-
- if (individual == NULL)
- {
- DEBUG ("Failed to find drag event individual with ID '%s'",
- individual_id);
- g_object_unref (manager);
- return FALSE;
- }
-
- /* Emit a signal notifying of the drag. */
- g_signal_emit (self, signals[DRAG_INDIVIDUAL_RECEIVED], 0,
- gdk_drag_context_get_selected_action (context), individual, &success);
-
- g_object_unref (manager);
-
- return success;
-}
-
-static void
-drag_data_received (GtkWidget *widget,
- GdkDragContext *context,
- gint x,
- gint y,
- GtkSelectionData *selection,
- guint info,
- guint time_)
-{
- EmpathyPersonaView *self = EMPATHY_PERSONA_VIEW (widget);
- gboolean success = TRUE;
-
- if (info == DND_DRAG_TYPE_INDIVIDUAL_ID || info == DND_DRAG_TYPE_STRING)
- success = individual_drag_received (self, context, selection);
-
- gtk_drag_finish (context, success, FALSE, GDK_CURRENT_TIME);
-}
-
-static gboolean
-drag_motion (GtkWidget *widget,
- GdkDragContext *context,
- gint x,
- gint y,
- guint time_)
-{
- EmpathyPersonaView *self = EMPATHY_PERSONA_VIEW (widget);
- GdkAtom target;
- guint i;
- DndDragType drag_type = DND_DRAG_TYPE_UNKNOWN;
-
- target = gtk_drag_dest_find_target (GTK_WIDGET (self), context, NULL);
-
- /* Determine the DndDragType of the data */
- for (i = 0; i < G_N_ELEMENTS (drag_atoms_dest); i++)
- {
- if (target == drag_atoms_dest[i])
- {
- drag_type = drag_types_dest[i].info;
- break;
- }
- }
-
- if (drag_type == DND_DRAG_TYPE_INDIVIDUAL_ID)
- {
- GtkTreePath *path;
-
- /* FIXME: It doesn't make sense for us to highlight a specific row or
- * position to drop an Individual in, so just highlight the entire
- * widget.
- * Since I can't find a way to do this, just highlight the first possible
- * position in the tree. */
- gdk_drag_status (context, gdk_drag_context_get_suggested_action (context),
- time_);
-
- path = gtk_tree_path_new_first ();
- gtk_tree_view_set_drag_dest_row (GTK_TREE_VIEW (self), path,
- GTK_TREE_VIEW_DROP_BEFORE);
- gtk_tree_path_free (path);
-
- return TRUE;
- }
-
- /* Unknown or unhandled drag target */
- gdk_drag_status (context, GDK_ACTION_DEFAULT, time_);
- gtk_tree_view_set_drag_dest_row (GTK_TREE_VIEW (self), NULL, 0);
-
- return FALSE;
-}
-
-static void
-drag_data_get (GtkWidget *widget,
- GdkDragContext *context,
- GtkSelectionData *selection,
- guint info,
- guint time_)
-{
- EmpathyPersonaView *self = EMPATHY_PERSONA_VIEW (widget);
- FolksPersona *persona;
- const gchar *persona_uid;
-
- if (info != DND_DRAG_TYPE_PERSONA_ID)
- return;
-
- persona = empathy_persona_view_dup_selected (self);
- if (persona == NULL)
- return;
-
- persona_uid = folks_persona_get_uid (persona);
- gtk_selection_data_set (selection,
- gdk_atom_intern ("text/x-persona-id", FALSE), 8,
- (guchar *) persona_uid, strlen (persona_uid) + 1);
-
- g_object_unref (persona);
-}
-
-static gboolean
-drag_drop (GtkWidget *widget,
- GdkDragContext *drag_context,
- gint x,
- gint y,
- guint time_)
-{
- return FALSE;
-}
-
-static void
-set_features (EmpathyPersonaView *self,
- EmpathyPersonaViewFeatureFlags features)
-{
- EmpathyPersonaViewPriv *priv = GET_PRIV (self);
-
- priv->features = features;
-
- /* Setting reorderable is a hack that gets us row previews as drag icons
- for free. We override all the drag handlers. It's tricky to get the
- position of the drag icon right in drag_begin. GtkTreeView has special
- voodoo for it, so we let it do the voodoo that he do (but only if dragging
- is enabled). */
- gtk_tree_view_set_reorderable (GTK_TREE_VIEW (self),
- (features & EMPATHY_PERSONA_VIEW_FEATURE_PERSONA_DRAG));
-
- /* Update DnD source/dest */
- if (features & EMPATHY_PERSONA_VIEW_FEATURE_PERSONA_DRAG)
- {
- gtk_drag_source_set (GTK_WIDGET (self),
- GDK_BUTTON1_MASK,
- drag_types_source,
- G_N_ELEMENTS (drag_types_source),
- GDK_ACTION_MOVE | GDK_ACTION_COPY);
- }
- else
- {
- gtk_drag_source_unset (GTK_WIDGET (self));
- }
-
- if (features & EMPATHY_PERSONA_VIEW_FEATURE_PERSONA_DROP)
- {
- gtk_drag_dest_set (GTK_WIDGET (self),
- GTK_DEST_DEFAULT_ALL,
- drag_types_dest,
- G_N_ELEMENTS (drag_types_dest), GDK_ACTION_MOVE | GDK_ACTION_COPY);
- }
- else
- {
- gtk_drag_dest_unset (GTK_WIDGET (self));
- }
-
- g_object_notify (G_OBJECT (self), "features");
-}
-
-static void
-empathy_persona_view_init (EmpathyPersonaView *self)
-{
- EmpathyPersonaViewPriv *priv = G_TYPE_INSTANCE_GET_PRIVATE (self,
- EMPATHY_TYPE_PERSONA_VIEW, EmpathyPersonaViewPriv);
-
- self->priv = priv;
-
- /* Connect to tree view signals rather than override. */
- g_signal_connect (self, "query-tooltip", (GCallback) query_tooltip_cb, NULL);
-}
-
-static void
-constructed (GObject *object)
-{
- EmpathyPersonaView *self = EMPATHY_PERSONA_VIEW (object);
- GtkCellRenderer *cell;
- GtkTreeViewColumn *col;
- guint i;
-
- /* Set up view */
- g_object_set (self,
- "headers-visible", FALSE,
- "show-expanders", FALSE,
- NULL);
-
- col = gtk_tree_view_column_new ();
-
- /* State */
- cell = gtk_cell_renderer_pixbuf_new ();
- gtk_tree_view_column_pack_start (col, cell, FALSE);
- gtk_tree_view_column_set_cell_data_func (col, cell,
- (GtkTreeCellDataFunc) pixbuf_cell_data_func, self, NULL);
-
- g_object_set (cell,
- "xpad", 5,
- "ypad", 1,
- "visible", TRUE,
- NULL);
-
- /* Name */
- cell = empathy_cell_renderer_text_new ();
- gtk_tree_view_column_pack_start (col, cell, TRUE);
- gtk_tree_view_column_set_cell_data_func (col, cell,
- (GtkTreeCellDataFunc) text_cell_data_func, self, NULL);
-
- /* We (ab)use the name and status properties here to display display ID and
- * account name, respectively. Harmless. */
- gtk_tree_view_column_add_attribute (col, cell,
- "name", EMPATHY_PERSONA_STORE_COL_DISPLAY_ID);
- gtk_tree_view_column_add_attribute (col, cell,
- "text", EMPATHY_PERSONA_STORE_COL_DISPLAY_ID);
- gtk_tree_view_column_add_attribute (col, cell,
- "presence-type", EMPATHY_PERSONA_STORE_COL_PRESENCE_TYPE);
- gtk_tree_view_column_add_attribute (col, cell,
- "status", EMPATHY_PERSONA_STORE_COL_ACCOUNT_NAME);
-
- /* Audio Call Icon */
- cell = empathy_cell_renderer_activatable_new ();
- gtk_tree_view_column_pack_start (col, cell, FALSE);
- gtk_tree_view_column_set_cell_data_func (col, cell,
- (GtkTreeCellDataFunc) audio_call_cell_data_func, self, NULL);
-
- g_object_set (cell,
- "visible", FALSE,
- NULL);
-
- /* Avatar */
- cell = gtk_cell_renderer_pixbuf_new ();
- gtk_tree_view_column_pack_start (col, cell, FALSE);
- gtk_tree_view_column_set_cell_data_func (col, cell,
- (GtkTreeCellDataFunc) avatar_cell_data_func, self, NULL);
-
- g_object_set (cell,
- "xpad", 0,
- "ypad", 0,
- "visible", FALSE,
- "width", 32,
- "height", 32,
- NULL);
-
- /* Actually add the column now we have added all cell renderers */
- gtk_tree_view_append_column (GTK_TREE_VIEW (self), col);
-
- /* Drag & Drop. */
- for (i = 0; i < G_N_ELEMENTS (drag_types_dest); ++i)
- drag_atoms_dest[i] = gdk_atom_intern (drag_types_dest[i].target, FALSE);
-}
-
-static void
-get_property (GObject *object,
- guint param_id,
- GValue *value,
- GParamSpec *pspec)
-{
- EmpathyPersonaViewPriv *priv = GET_PRIV (object);
-
- switch (param_id)
- {
- case PROP_MODEL:
- g_value_set_object (value, priv->filter);
- break;
- case PROP_SHOW_OFFLINE:
- g_value_set_boolean (value, priv->show_offline);
- break;
- case PROP_FEATURES:
- g_value_set_flags (value, priv->features);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
- break;
- }
-}
-
-static void
-set_property (GObject *object,
- guint param_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- EmpathyPersonaView *self = EMPATHY_PERSONA_VIEW (object);
-
- switch (param_id)
- {
- case PROP_MODEL:
- set_model (self, g_value_get_object (value));
- break;
- case PROP_SHOW_OFFLINE:
- empathy_persona_view_set_show_offline (self,
- g_value_get_boolean (value));
- break;
- case PROP_FEATURES:
- set_features (self, g_value_get_flags (value));
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
- break;
- }
-}
-
-static void
-dispose (GObject *object)
-{
- EmpathyPersonaView *self = EMPATHY_PERSONA_VIEW (object);
- EmpathyPersonaViewPriv *priv = GET_PRIV (self);
-
- tp_clear_object (&priv->filter);
-
- if (priv->tooltip_widget)
- gtk_widget_destroy (priv->tooltip_widget);
- priv->tooltip_widget = NULL;
-
- G_OBJECT_CLASS (empathy_persona_view_parent_class)->dispose (object);
-}
-
-static void
-empathy_persona_view_class_init (EmpathyPersonaViewClass *klass)
-{
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
- GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
-
- object_class->constructed = constructed;
- object_class->dispose = dispose;
- object_class->get_property = get_property;
- object_class->set_property = set_property;
-
- widget_class->drag_data_received = drag_data_received;
- widget_class->drag_drop = drag_drop;
- widget_class->drag_data_get = drag_data_get;
- widget_class->drag_motion = drag_motion;
-
- signals[DRAG_INDIVIDUAL_RECEIVED] =
- g_signal_new ("drag-individual-received",
- G_OBJECT_CLASS_TYPE (klass),
- G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (EmpathyPersonaViewClass, drag_individual_received),
- NULL, NULL,
- g_cclosure_marshal_generic,
- G_TYPE_BOOLEAN, 2, G_TYPE_UINT, FOLKS_TYPE_INDIVIDUAL);
-
- /* We override the "model" property so that we can wrap it in a
- * GtkTreeModelFilter for showing/hiding offline personas. */
- g_object_class_override_property (object_class, PROP_MODEL, "model");
-
- /**
- * EmpathyPersonaStore:show-offline:
- *
- * Whether to display offline personas.
- */
- g_object_class_install_property (object_class, PROP_SHOW_OFFLINE,
- g_param_spec_boolean ("show-offline",
- "Show Offline",
- "Whether to display offline personas.",
- FALSE,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- /**
- * EmpathyPersonaStore:features:
- *
- * Features of the view, such as whether drag and drop is enabled.
- */
- g_object_class_install_property (object_class, PROP_FEATURES,
- g_param_spec_flags ("features",
- "Features",
- "Flags for all enabled features.",
- EMPATHY_TYPE_PERSONA_VIEW_FEATURE_FLAGS,
- EMPATHY_PERSONA_VIEW_FEATURE_NONE,
- G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- g_type_class_add_private (object_class, sizeof (EmpathyPersonaViewPriv));
-}
-
-/**
- * empathy_persona_view_new:
- * @store: an #EmpathyPersonaStore
- * @features: a set of flags specifying the view's functionality, or
- * %EMPATHY_PERSONA_VIEW_FEATURE_NONE
- *
- * Create a new #EmpathyPersonaView displaying the personas in
- * #EmpathyPersonaStore.
- *
- * Return value: a new #EmpathyPersonaView
- */
-EmpathyPersonaView *
-empathy_persona_view_new (EmpathyPersonaStore *store,
- EmpathyPersonaViewFeatureFlags features)
-{
- g_return_val_if_fail (EMPATHY_IS_PERSONA_STORE (store), NULL);
-
- return g_object_new (EMPATHY_TYPE_PERSONA_VIEW,
- "model", store,
- "features", features,
- NULL);
-}
-
-/**
- * empathy_persona_view_dup_selected:
- * @self: an #EmpathyPersonaView
- *
- * Return the #FolksPersona associated with the currently selected row. The
- * persona is referenced before being returned. If no row is selected, %NULL is
- * returned.
- *
- * Return value: the currently selected #FolksPersona, or %NULL; unref with
- * g_object_unref()
- */
-FolksPersona *
-empathy_persona_view_dup_selected (EmpathyPersonaView *self)
-{
- GtkTreeSelection *selection;
- GtkTreeIter iter;
- GtkTreeModel *model;
- FolksPersona *persona;
-
- g_return_val_if_fail (EMPATHY_IS_PERSONA_VIEW (self), NULL);
-
- selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (self));
- if (!gtk_tree_selection_get_selected (selection, &model, &iter))
- return NULL;
-
- gtk_tree_model_get (model, &iter,
- EMPATHY_PERSONA_STORE_COL_PERSONA, &persona,
- -1);
-
- return persona;
-}
-
-/**
- * empathy_persona_view_get_show_offline:
- * @self: an #EmpathyPersonaView
- *
- * Get the value of the #EmpathyPersonaView:show-offline property.
- *
- * Return value: %TRUE if offline personas are being shown, %FALSE otherwise
- */
-gboolean
-empathy_persona_view_get_show_offline (EmpathyPersonaView *self)
-{
- g_return_val_if_fail (EMPATHY_IS_PERSONA_VIEW (self), FALSE);
-
- return GET_PRIV (self)->show_offline;
-}
-
-/**
- * empathy_persona_view_set_show_offline:
- * @self: an #EmpathyPersonaView
- * @show_offline: %TRUE to show personas which are offline, %FALSE otherwise
- *
- * Set the #EmpathyPersonaView:show-offline property to @show_offline.
- */
-void
-empathy_persona_view_set_show_offline (EmpathyPersonaView *self,
- gboolean show_offline)
-{
- EmpathyPersonaViewPriv *priv;
-
- g_return_if_fail (EMPATHY_IS_PERSONA_VIEW (self));
-
- priv = GET_PRIV (self);
- priv->show_offline = show_offline;
-
- gtk_tree_model_filter_refilter (priv->filter);
-
- g_object_notify (G_OBJECT (self), "show-offline");
-}
diff --git a/libempathy-gtk/empathy-persona-view.h b/libempathy-gtk/empathy-persona-view.h
deleted file mode 100644
index 0a6317c6..00000000
--- a/libempathy-gtk/empathy-persona-view.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright (C) 2005-2007 Imendio AB
- * Copyright (C) 2007-2008, 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: Mikael Hallendal
- * Martyn Russell
- * Xavier Claessens
- * Philip Withnall
- *
- * Based off EmpathyContactListView.
- */
-
-#ifndef __EMPATHY_PERSONA_VIEW_H__
-#define __EMPATHY_PERSONA_VIEW_H__
-
-#include
-
-#include
-
-#include "empathy-persona-store.h"
-
-G_BEGIN_DECLS
-
-typedef enum
-{
- EMPATHY_PERSONA_VIEW_FEATURE_NONE = 0,
- EMPATHY_PERSONA_VIEW_FEATURE_PERSONA_DRAG = 1 << 0,
- EMPATHY_PERSONA_VIEW_FEATURE_PERSONA_DROP = 1 << 1,
- EMPATHY_PERSONA_VIEW_FEATURE_ALL = (1 << 2) - 1,
-} EmpathyPersonaViewFeatureFlags;
-
-#define EMPATHY_TYPE_PERSONA_VIEW (empathy_persona_view_get_type ())
-#define EMPATHY_PERSONA_VIEW(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), \
- EMPATHY_TYPE_PERSONA_VIEW, EmpathyPersonaView))
-#define EMPATHY_PERSONA_VIEW_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), \
- EMPATHY_TYPE_PERSONA_VIEW, EmpathyPersonaViewClass))
-#define EMPATHY_IS_PERSONA_VIEW(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), \
- EMPATHY_TYPE_PERSONA_VIEW))
-#define EMPATHY_IS_PERSONA_VIEW_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), \
- EMPATHY_TYPE_PERSONA_VIEW))
-#define EMPATHY_PERSONA_VIEW_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), \
- EMPATHY_TYPE_PERSONA_VIEW, EmpathyPersonaViewClass))
-
-typedef struct
-{
- GtkTreeView parent;
- gpointer priv;
-} EmpathyPersonaView;
-
-typedef struct
-{
- GtkTreeViewClass parent_class;
-
- void (* drag_individual_received) (EmpathyPersonaView *self,
- GdkDragAction action,
- FolksIndividual *individual);
-} EmpathyPersonaViewClass;
-
-GType empathy_persona_view_get_type (void) G_GNUC_CONST;
-
-EmpathyPersonaView *empathy_persona_view_new (EmpathyPersonaStore *store,
- EmpathyPersonaViewFeatureFlags features);
-
-FolksPersona *empathy_persona_view_dup_selected (EmpathyPersonaView *self);
-
-gboolean empathy_persona_view_get_show_offline (EmpathyPersonaView *self);
-void empathy_persona_view_set_show_offline (EmpathyPersonaView *self,
- gboolean show_offline);
-
-G_END_DECLS
-
-#endif /* __EMPATHY_PERSONA_VIEW_H__ */
diff --git a/libempathy-gtk/empathy-sound-manager.c b/libempathy-gtk/empathy-sound-manager.c
index afa27bed..1d4d118d 100644
--- a/libempathy-gtk/empathy-sound-manager.c
+++ b/libempathy-gtk/empathy-sound-manager.c
@@ -126,8 +126,11 @@ repeating_sounds_item_delete (gpointer data)
if (repeatable_sound->replay_timeout_id != 0)
g_source_remove (repeatable_sound->replay_timeout_id);
- g_signal_handlers_disconnect_by_func (repeatable_sound->widget,
- empathy_sound_widget_destroyed_cb, repeatable_sound);
+ if (repeatable_sound->widget != NULL)
+ {
+ g_signal_handlers_disconnect_by_func (repeatable_sound->widget,
+ empathy_sound_widget_destroyed_cb, repeatable_sound);
+ }
g_object_unref (repeatable_sound->self);
@@ -252,8 +255,11 @@ empathy_sound_play_internal (GtkWidget *widget, EmpathySound sound_id,
gettext (entry->event_ca_description)) < 0)
goto failed;
- if (ca_gtk_proplist_set_for_widget (p, widget) < 0)
- goto failed;
+ if (widget != NULL)
+ {
+ if (ca_gtk_proplist_set_for_widget (p, widget) < 0)
+ goto failed;
+ }
ca_context_play_full (ca_gtk_context_get (), entry->sound_id, p, callback,
user_data);
@@ -298,7 +304,7 @@ empathy_sound_manager_play_full (EmpathySoundManager *self,
ca_finish_callback_t callback,
gpointer user_data)
{
- g_return_val_if_fail (GTK_IS_WIDGET (widget), FALSE);
+ g_return_val_if_fail (widget == NULL || GTK_IS_WIDGET (widget), FALSE);
g_return_val_if_fail (sound_id < LAST_EMPATHY_SOUND, FALSE);
if (!empathy_sound_pref_is_enabled (self, sound_id))
@@ -329,7 +335,7 @@ empathy_sound_manager_play (EmpathySoundManager *self,
GtkWidget *widget,
EmpathySound sound_id)
{
- g_return_val_if_fail (GTK_IS_WIDGET (widget), FALSE);
+ g_return_val_if_fail (widget == NULL || GTK_IS_WIDGET (widget), FALSE);
g_return_val_if_fail (sound_id < LAST_EMPATHY_SOUND, FALSE);
return empathy_sound_manager_play_full (self, widget, sound_id, NULL, NULL);
@@ -401,7 +407,7 @@ empathy_sound_manager_start_playing (EmpathySoundManager *self,
EmpathyRepeatableSound *repeatable_sound;
gboolean playing = FALSE;
- g_return_val_if_fail (GTK_IS_WIDGET (widget), FALSE);
+ g_return_val_if_fail (widget == NULL || GTK_IS_WIDGET (widget), FALSE);
g_return_val_if_fail (sound_id < LAST_EMPATHY_SOUND, FALSE);
if (!empathy_sound_pref_is_enabled (self, sound_id))
@@ -424,9 +430,12 @@ empathy_sound_manager_start_playing (EmpathySoundManager *self,
g_hash_table_insert (self->priv->repeating_sounds, GINT_TO_POINTER (sound_id),
repeatable_sound);
- g_signal_connect (G_OBJECT (widget), "destroy",
- G_CALLBACK (empathy_sound_widget_destroyed_cb),
- repeatable_sound);
+ if (widget != NULL)
+ {
+ g_signal_connect (G_OBJECT (widget), "destroy",
+ G_CALLBACK (empathy_sound_widget_destroyed_cb),
+ repeatable_sound);
+ }
playing = empathy_sound_play_internal (widget, sound_id, playing_finished_cb,
repeatable_sound);
diff --git a/libempathy-gtk/empathy-theme-adium.c b/libempathy-gtk/empathy-theme-adium.c
index 7b0cd216..98df46b7 100644
--- a/libempathy-gtk/empathy-theme-adium.c
+++ b/libempathy-gtk/empathy-theme-adium.c
@@ -132,13 +132,15 @@ typedef struct {
guint type;
EmpathyMessage *msg;
char *str;
+ gboolean should_highlight;
} QueuedItem;
static QueuedItem *
queue_item (GQueue *queue,
guint type,
EmpathyMessage *msg,
- const char *str)
+ const char *str,
+ gboolean should_highlight)
{
QueuedItem *item = g_slice_new0 (QueuedItem);
@@ -146,6 +148,7 @@ queue_item (GQueue *queue,
if (msg != NULL)
item->msg = g_object_ref (msg);
item->str = g_strdup (str);
+ item->should_highlight = should_highlight;
g_queue_push_tail (queue, item);
@@ -775,7 +778,8 @@ theme_adium_remove_all_focus_marks (EmpathyThemeAdium *theme)
static void
theme_adium_append_message (EmpathyChatView *view,
- EmpathyMessage *msg)
+ EmpathyMessage *msg,
+ gboolean should_highlight)
{
EmpathyThemeAdium *theme = EMPATHY_THEME_ADIUM (view);
EmpathyThemeAdiumPriv *priv = GET_PRIV (theme);
@@ -797,7 +801,7 @@ theme_adium_append_message (EmpathyChatView *view,
gboolean action;
if (priv->pages_loading != 0) {
- queue_item (&priv->message_queue, QUEUED_MESSAGE, msg, NULL);
+ queue_item (&priv->message_queue, QUEUED_MESSAGE, msg, NULL, should_highlight);
return;
}
@@ -886,7 +890,7 @@ theme_adium_append_message (EmpathyChatView *view,
} else {
g_string_append (message_classes, " incoming");
}
- if (empathy_message_should_highlight (msg)) {
+ if (should_highlight) {
g_string_append (message_classes, " mention");
}
if (empathy_message_get_tptype (msg) == TP_CHANNEL_TEXT_MESSAGE_TYPE_AUTO_REPLY) {
@@ -975,7 +979,7 @@ theme_adium_append_event (EmpathyChatView *view,
gchar *str_escaped;
if (priv->pages_loading != 0) {
- queue_item (&priv->message_queue, QUEUED_EVENT, NULL, str);
+ queue_item (&priv->message_queue, QUEUED_EVENT, NULL, str, FALSE);
return;
}
@@ -1005,7 +1009,7 @@ theme_adium_edit_message (EmpathyChatView *view,
GError *error = NULL;
if (priv->pages_loading != 0) {
- queue_item (&priv->message_queue, QUEUED_EDIT, message, NULL);
+ queue_item (&priv->message_queue, QUEUED_EDIT, message, NULL, FALSE);
return;
}
@@ -1345,7 +1349,8 @@ theme_adium_load_finished_cb (WebKitWebView *view,
switch (item->type)
{
case QUEUED_MESSAGE:
- theme_adium_append_message (chat_view, item->msg);
+ theme_adium_append_message (chat_view, item->msg,
+ item->should_highlight);
break;
case QUEUED_EDIT:
diff --git a/libempathy-gtk/empathy-theme-boxes.c b/libempathy-gtk/empathy-theme-boxes.c
index b9fd08d8..cf0c6526 100644
--- a/libempathy-gtk/empathy-theme-boxes.c
+++ b/libempathy-gtk/empathy-theme-boxes.c
@@ -337,7 +337,8 @@ theme_boxes_maybe_append_header (EmpathyThemeBoxes *theme,
static void
theme_boxes_append_message (EmpathyChatTextView *view,
- EmpathyMessage *message)
+ EmpathyMessage *message,
+ gboolean should_highlight)
{
EmpathyContact *sender;
diff --git a/libempathy-gtk/empathy-theme-irc.c b/libempathy-gtk/empathy-theme-irc.c
index 2ee81a23..ed8e3b38 100644
--- a/libempathy-gtk/empathy-theme-irc.c
+++ b/libempathy-gtk/empathy-theme-irc.c
@@ -50,7 +50,8 @@ theme_irc_create_tags (EmpathyThemeIrc *theme)
static void
theme_irc_append_message (EmpathyChatTextView *view,
- EmpathyMessage *message)
+ EmpathyMessage *message,
+ gboolean should_highlight)
{
GtkTextBuffer *buffer;
const gchar *name;
@@ -77,7 +78,7 @@ theme_irc_append_message (EmpathyChatTextView *view,
if (empathy_contact_is_user (contact)) {
nick_tag = EMPATHY_THEME_IRC_TAG_NICK_SELF;
} else {
- if (empathy_message_should_highlight (message)) {
+ if (should_highlight) {
nick_tag = EMPATHY_THEME_IRC_TAG_NICK_HIGHLIGHT;
} else {
nick_tag = EMPATHY_THEME_IRC_TAG_NICK_OTHER;
diff --git a/libempathy-gtk/empathy-tls-dialog.c b/libempathy-gtk/empathy-tls-dialog.c
index 991f5213..9fb2297a 100644
--- a/libempathy-gtk/empathy-tls-dialog.c
+++ b/libempathy-gtk/empathy-tls-dialog.c
@@ -278,12 +278,13 @@ empathy_tls_dialog_constructed (GObject *object)
gtk_dialog_add_buttons (dialog,
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
- _("Continue"), GTK_RESPONSE_YES,
+ _("C_ontinue"), GTK_RESPONSE_YES,
NULL);
text = reason_to_string (self);
g_object_set (message_dialog,
+ "title", _("Untrusted connection"),
"text", _("This connection is untrusted. Would you like to "
"continue anyway?"),
"secondary-text", text,
@@ -312,6 +313,8 @@ empathy_tls_dialog_constructed (GObject *object)
gtk_container_add (GTK_CONTAINER (expander), details);
gtk_widget_show (details);
+ gtk_window_set_keep_above (GTK_WINDOW (self), TRUE);
+
tp_g_signal_connect_object (priv->certificate, "invalidated",
G_CALLBACK (certificate_invalidated_cb), self, 0);
}
diff --git a/libempathy-gtk/empathy-ui-utils.c b/libempathy-gtk/empathy-ui-utils.c
index a387160d..f3761e5c 100644
--- a/libempathy-gtk/empathy-ui-utils.c
+++ b/libempathy-gtk/empathy-ui-utils.c
@@ -552,7 +552,8 @@ pixbuf_avatar_from_individual_closure_new (FolksIndividual *individual,
closure->result = g_object_ref (result);
closure->width = width;
closure->height = height;
- closure->cancellable = g_object_ref (cancellable);
+ if (cancellable != NULL)
+ closure->cancellable = g_object_ref (cancellable);
return closure;
}
@@ -561,7 +562,7 @@ static void
pixbuf_avatar_from_individual_closure_free (
PixbufAvatarFromIndividualClosure *closure)
{
- g_object_unref (closure->cancellable);
+ g_clear_object (&closure->cancellable);
tp_clear_object (&closure->loader);
g_object_unref (closure->individual);
g_object_unref (closure->result);
@@ -717,26 +718,25 @@ empathy_pixbuf_avatar_from_individual_scaled_async (
avatar_icon =
folks_avatar_details_get_avatar (FOLKS_AVATAR_DETAILS (individual));
- if (avatar_icon == NULL)
- goto out;
+ if (avatar_icon == NULL) {
+ g_simple_async_result_set_error (result, TP_ERRORS,
+ TP_ERROR_INVALID_ARGUMENT, "no avatar found");
+
+ g_simple_async_result_complete (result);
+ g_object_unref (result);
+ return;
+ }
closure = pixbuf_avatar_from_individual_closure_new (individual, result,
width, height,
cancellable);
- if (closure == NULL)
- goto out;
+
+ g_return_if_fail (closure != NULL);
g_loadable_icon_load_async (avatar_icon, width, cancellable,
avatar_icon_load_cb, closure);
g_object_unref (result);
-
- return;
-
-out:
- g_simple_async_result_set_op_res_gpointer (result, NULL, NULL);
- g_simple_async_result_complete (result);
- g_object_unref (result);
}
/* Return a ref on the GdkPixbuf */
@@ -2177,3 +2177,120 @@ out:
g_free (path);
g_free (cmd);
}
+
+/* Most of the workspace manipulation code has been copied from libwnck
+ * Copyright (C) 2001 Havoc Pennington
+ * Copyright (C) 2005-2007 Vincent Untz
+ */
+static void
+_wnck_activate_workspace (Screen *screen,
+ int new_active_space,
+ Time timestamp)
+{
+ Display *display;
+ Window root;
+ XEvent xev;
+
+ display = DisplayOfScreen (screen);
+ root = RootWindowOfScreen (screen);
+
+ xev.xclient.type = ClientMessage;
+ xev.xclient.serial = 0;
+ xev.xclient.send_event = True;
+ xev.xclient.display = display;
+ xev.xclient.window = root;
+ xev.xclient.message_type = gdk_x11_get_xatom_by_name ("_NET_CURRENT_DESKTOP");
+ xev.xclient.format = 32;
+ xev.xclient.data.l[0] = new_active_space;
+ xev.xclient.data.l[1] = timestamp;
+ xev.xclient.data.l[2] = 0;
+ xev.xclient.data.l[3] = 0;
+ xev.xclient.data.l[4] = 0;
+
+ gdk_error_trap_push ();
+ XSendEvent (display, root, False,
+ SubstructureRedirectMask | SubstructureNotifyMask,
+ &xev);
+ XSync (display, False);
+ gdk_error_trap_pop_ignored ();
+}
+
+static gboolean
+_wnck_get_cardinal (Screen *screen,
+ Window xwindow,
+ Atom atom,
+ int *val)
+{
+ Display *display;
+ Atom type;
+ int format;
+ gulong nitems;
+ gulong bytes_after;
+ gulong *num;
+ int err, result;
+
+ display = DisplayOfScreen (screen);
+
+ *val = 0;
+
+ gdk_error_trap_push ();
+ type = None;
+ result = XGetWindowProperty (display, xwindow, atom,
+ 0, G_MAXLONG, False, XA_CARDINAL, &type, &format, &nitems,
+ &bytes_after, (void *) &num);
+ err = gdk_error_trap_pop ();
+ if (err != Success ||
+ result != Success)
+ return FALSE;
+
+ if (type != XA_CARDINAL)
+ {
+ XFree (num);
+ return FALSE;
+ }
+
+ *val = *num;
+
+ XFree (num);
+
+ return TRUE;
+}
+
+static int
+window_get_workspace (Screen *xscreen,
+ Window win)
+{
+ int number;
+
+ if (!_wnck_get_cardinal (xscreen, win,
+ gdk_x11_get_xatom_by_name ("_NET_WM_DESKTOP"), &number))
+ return -1;
+
+ return number;
+}
+
+/* Ask X to move to the desktop on which @window currently is
+ * and the present @window. */
+void
+empathy_move_to_window_desktop (GtkWindow *window,
+ guint32 timestamp)
+{
+ GdkScreen *screen;
+ Screen *xscreen;
+ GdkWindow *gdk_window;
+ int workspace;
+
+ screen = gtk_window_get_screen (window);
+ xscreen = gdk_x11_screen_get_xscreen (screen);
+ gdk_window = gtk_widget_get_window (GTK_WIDGET (window));
+
+ workspace = window_get_workspace (xscreen,
+ gdk_x11_window_get_xid (gdk_window));
+ if (workspace == -1)
+ goto out;
+
+ _wnck_activate_workspace (xscreen, workspace, timestamp);
+
+out:
+ gtk_window_present_with_time (window, timestamp);
+}
diff --git a/libempathy-gtk/empathy-ui-utils.h b/libempathy-gtk/empathy-ui-utils.h
index f76b7491..2ffbf2cd 100644
--- a/libempathy-gtk/empathy-ui-utils.h
+++ b/libempathy-gtk/empathy-ui-utils.h
@@ -126,6 +126,9 @@ void empathy_window_present_with_time (GtkWindow *windo
guint32 timestamp);
GtkWindow * empathy_get_toplevel_window (GtkWidget *widget);
+void empathy_move_to_window_desktop (GtkWindow *window,
+ guint32 timestamp);
+
/* URL */
gchar * empathy_make_absolute_url (const gchar *url);
diff --git a/libempathy/Makefile.am b/libempathy/Makefile.am
index 1f4bdbcb..6a6e2ce7 100644
--- a/libempathy/Makefile.am
+++ b/libempathy/Makefile.am
@@ -36,9 +36,9 @@ libempathy_headers = \
empathy-client-factory.h \
empathy-connection-managers.h \
empathy-connectivity.h \
+ empathy-connection-aggregator.h \
empathy-contact-groups.h \
empathy-contact-list.h \
- empathy-contact-manager.h \
empathy-contact.h \
empathy-debug.h \
empathy-ft-factory.h \
@@ -52,6 +52,7 @@ libempathy_headers = \
empathy-keyring.h \
empathy-location.h \
empathy-message.h \
+ empathy-pkg-kit.h \
empathy-request-util.h \
empathy-server-sasl-handler.h \
empathy-server-tls-handler.h \
@@ -62,7 +63,6 @@ libempathy_headers = \
empathy-tp-chat.h \
empathy-tp-contact-factory.h \
empathy-tp-contact-list.h \
- empathy-tp-file.h \
empathy-tp-roomlist.h \
empathy-tp-streamed-media.h \
empathy-types.h \
@@ -79,9 +79,9 @@ libempathy_handwritten_source = \
empathy-client-factory.c \
empathy-connection-managers.c \
empathy-connectivity.c \
+ empathy-connection-aggregator.c \
empathy-contact-groups.c \
empathy-contact-list.c \
- empathy-contact-manager.c \
empathy-contact.c \
empathy-debug.c \
empathy-ft-factory.c \
@@ -93,6 +93,7 @@ libempathy_handwritten_source = \
empathy-irc-server.c \
empathy-keyring.c \
empathy-message.c \
+ empathy-pkg-kit.c \
empathy-request-util.c \
empathy-server-sasl-handler.c \
empathy-server-tls-handler.c \
@@ -103,7 +104,6 @@ libempathy_handwritten_source = \
empathy-tp-chat.c \
empathy-tp-contact-factory.c \
empathy-tp-contact-list.c \
- empathy-tp-file.c \
empathy-tp-roomlist.c \
empathy-tp-streamed-media.c \
empathy-utils.c
diff --git a/libempathy/cheese-camera-device-monitor.c b/libempathy/cheese-camera-device-monitor.c
index 78b40fb7..57c00876 100644
--- a/libempathy/cheese-camera-device-monitor.c
+++ b/libempathy/cheese-camera-device-monitor.c
@@ -1,3 +1,5 @@
+/* This file is a copy of cheese-camera-device-monitor.c from Empathy. We
+ * just renamespaced it to avoid conflicts when linking on libcheese. */
/*
* Copyright © 2007,2008 Jaap Haitsma
* Copyright © 2007-2009 daniel g. siegel
@@ -49,31 +51,31 @@
* @short_description: Simple object to enumerate v4l devices
* @include: cheese/cheese-camera-device-monitor.h
*
- * #CheeseCameraDeviceMonitor provides a basic interface for
+ * #EmpathyCameraDeviceMonitor provides a basic interface for
* video4linux device enumeration and hotplugging.
*
* It uses either GUdev or some platform specific code to list video
* devices. It is also capable (right now in linux only, with the
* udev backend) to monitor device plugging and emit a
- * CheeseCameraDeviceMonitor::added or
- * CheeseCameraDeviceMonitor::removed signal when an event happens.
+ * EmpathyCameraDeviceMonitor::added or
+ * EmpathyCameraDeviceMonitor::removed signal when an event happens.
*/
-G_DEFINE_TYPE (CheeseCameraDeviceMonitor, cheese_camera_device_monitor, G_TYPE_OBJECT)
+G_DEFINE_TYPE (EmpathyCameraDeviceMonitor, empathy_camera_device_monitor, G_TYPE_OBJECT)
-#define CHEESE_CAMERA_DEVICE_MONITOR_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), \
- CHEESE_TYPE_CAMERA_DEVICE_MONITOR, \
- CheeseCameraDeviceMonitorPrivate))
+#define EMPATHY_CAMERA_DEVICE_MONITOR_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), \
+ EMPATHY_TYPE_CAMERA_DEVICE_MONITOR, \
+ EmpathyCameraDeviceMonitorPrivate))
-#define CHEESE_CAMERA_DEVICE_MONITOR_ERROR cheese_camera_device_monitor_error_quark ()
+#define EMPATHY_CAMERA_DEVICE_MONITOR_ERROR empathy_camera_device_monitor_error_quark ()
-GST_DEBUG_CATEGORY (cheese_device_monitor_cat);
-#define GST_CAT_DEFAULT cheese_device_monitor_cat
+GST_DEBUG_CATEGORY (empathy_device_monitor_cat);
+#define GST_CAT_DEFAULT empathy_device_monitor_cat
-enum CheeseCameraDeviceMonitorError
+enum EmpathyCameraDeviceMonitorError
{
- CHEESE_CAMERA_DEVICE_MONITOR_ERROR_UNKNOWN,
- CHEESE_CAMERA_DEVICE_MONITOR_ERROR_ELEMENT_NOT_FOUND
+ EMPATHY_CAMERA_DEVICE_MONITOR_ERROR_UNKNOWN,
+ EMPATHY_CAMERA_DEVICE_MONITOR_ERROR_ELEMENT_NOT_FOUND
};
typedef struct
@@ -83,7 +85,7 @@ typedef struct
#else
guint filler;
#endif /* HAVE_UDEV */
-} CheeseCameraDeviceMonitorPrivate;
+} EmpathyCameraDeviceMonitorPrivate;
enum
{
@@ -96,15 +98,15 @@ static guint monitor_signals[LAST_SIGNAL];
#if 0
GQuark
-cheese_camera_device_monitor_error_quark (void)
+empathy_camera_device_monitor_error_quark (void)
{
- return g_quark_from_static_string ("cheese-camera-error-quark");
+ return g_quark_from_static_string ("empathy-camera-error-quark");
}
#endif
#ifdef HAVE_UDEV
static void
-cheese_camera_device_monitor_added (CheeseCameraDeviceMonitor *monitor,
+empathy_camera_device_monitor_added (EmpathyCameraDeviceMonitor *monitor,
GUdevDevice *udevice)
{
const char *device_file;
@@ -190,7 +192,7 @@ cheese_camera_device_monitor_added (CheeseCameraDeviceMonitor *monitor,
}
static void
-cheese_camera_device_monitor_removed (CheeseCameraDeviceMonitor *monitor,
+empathy_camera_device_monitor_removed (EmpathyCameraDeviceMonitor *monitor,
GUdevDevice *udevice)
{
g_signal_emit (monitor, monitor_signals[REMOVED], 0,
@@ -198,20 +200,20 @@ cheese_camera_device_monitor_removed (CheeseCameraDeviceMonitor *monitor,
}
static void
-cheese_camera_device_monitor_uevent_cb (GUdevClient *client,
+empathy_camera_device_monitor_uevent_cb (GUdevClient *client,
const gchar *action,
GUdevDevice *udevice,
- CheeseCameraDeviceMonitor *monitor)
+ EmpathyCameraDeviceMonitor *monitor)
{
if (g_str_equal (action, "remove"))
- cheese_camera_device_monitor_removed (monitor, udevice);
+ empathy_camera_device_monitor_removed (monitor, udevice);
else if (g_str_equal (action, "add"))
- cheese_camera_device_monitor_added (monitor, udevice);
+ empathy_camera_device_monitor_added (monitor, udevice);
}
/**
- * cheese_camera_device_monitor_coldplug:
- * @monitor: a #CheeseCameraDeviceMonitor object.
+ * empathy_camera_device_monitor_coldplug:
+ * @monitor: a #EmpathyCameraDeviceMonitor object.
*
* Will actively look for plugged in cameras and emit
* ::added for those new cameras.
@@ -219,9 +221,9 @@ cheese_camera_device_monitor_uevent_cb (GUdevClient *client,
* to those signals before they are emitted.
*/
void
-cheese_camera_device_monitor_coldplug (CheeseCameraDeviceMonitor *monitor)
+empathy_camera_device_monitor_coldplug (EmpathyCameraDeviceMonitor *monitor)
{
- CheeseCameraDeviceMonitorPrivate *priv = CHEESE_CAMERA_DEVICE_MONITOR_GET_PRIVATE (monitor);
+ EmpathyCameraDeviceMonitorPrivate *priv = EMPATHY_CAMERA_DEVICE_MONITOR_GET_PRIVATE (monitor);
GList *devices, *l;
gint i = 0;
@@ -235,7 +237,7 @@ cheese_camera_device_monitor_coldplug (CheeseCameraDeviceMonitor *monitor)
/* Initialize camera structures */
for (l = devices; l != NULL; l = l->next)
{
- cheese_camera_device_monitor_added (monitor, l->data);
+ empathy_camera_device_monitor_added (monitor, l->data);
g_object_unref (l->data);
i++;
}
@@ -246,10 +248,10 @@ cheese_camera_device_monitor_coldplug (CheeseCameraDeviceMonitor *monitor)
#else /* HAVE_UDEV */
void
-cheese_camera_device_monitor_coldplug (CheeseCameraDeviceMonitor *monitor)
+empathy_camera_device_monitor_coldplug (EmpathyCameraDeviceMonitor *monitor)
{
#if 0
- CheeseCameraDeviceMonitorPrivate *priv = CHEESE_CAMERA_DEVICE_MONITOR_GET_PRIVATE (monitor);
+ EmpathyCameraDeviceMonitorPrivate *priv = EMPATHY_CAMERA_DEVICE_MONITOR_GET_PRIVATE (monitor);
struct v4l2_capability v2cap;
struct video_capability v1cap;
int fd, ok;
@@ -307,7 +309,7 @@ cheese_camera_device_monitor_coldplug (CheeseCameraDeviceMonitor *monitor)
/* Initialize camera structures */
for (l = devices; l != NULL; l = l->next)
{
- cheese_camera_device_monitor_added (monitor, l->data);
+ empathy_camera_device_monitor_added (monitor, l->data);
g_object_unref (l->data);
}
g_list_free (devices);
@@ -317,11 +319,11 @@ cheese_camera_device_monitor_coldplug (CheeseCameraDeviceMonitor *monitor)
#endif /* HAVE_UDEV */
static void
-cheese_camera_device_monitor_finalize (GObject *object)
+empathy_camera_device_monitor_finalize (GObject *object)
{
#ifdef HAVE_UDEV
- CheeseCameraDeviceMonitor *monitor = CHEESE_CAMERA_DEVICE_MONITOR (object);
- CheeseCameraDeviceMonitorPrivate *priv = CHEESE_CAMERA_DEVICE_MONITOR_GET_PRIVATE (monitor);
+ EmpathyCameraDeviceMonitor *monitor = EMPATHY_CAMERA_DEVICE_MONITOR (object);
+ EmpathyCameraDeviceMonitorPrivate *priv = EMPATHY_CAMERA_DEVICE_MONITOR_GET_PRIVATE (monitor);
if (priv->client != NULL)
{
@@ -329,23 +331,23 @@ cheese_camera_device_monitor_finalize (GObject *object)
priv->client = NULL;
}
#endif /* HAVE_UDEV */
- G_OBJECT_CLASS (cheese_camera_device_monitor_parent_class)->finalize (object);
+ G_OBJECT_CLASS (empathy_camera_device_monitor_parent_class)->finalize (object);
}
static void
-cheese_camera_device_monitor_class_init (CheeseCameraDeviceMonitorClass *klass)
+empathy_camera_device_monitor_class_init (EmpathyCameraDeviceMonitorClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
- if (cheese_device_monitor_cat == NULL)
- GST_DEBUG_CATEGORY_INIT (cheese_device_monitor_cat,
- "cheese-device-monitor",
- 0, "Cheese Camera Device Monitor");
+ if (empathy_device_monitor_cat == NULL)
+ GST_DEBUG_CATEGORY_INIT (empathy_device_monitor_cat,
+ "empathy-device-monitor",
+ 0, "Empathy Camera Device Monitor");
- object_class->finalize = cheese_camera_device_monitor_finalize;
+ object_class->finalize = empathy_camera_device_monitor_finalize;
/**
- * CheeseCameraDeviceMonitor::added:
+ * EmpathyCameraDeviceMonitor::added:
* @device: A private object representing the newly added camera.
* @id: Device unique identifier.
* @device: Device file name (e.g. /dev/video2).
@@ -353,17 +355,17 @@ cheese_camera_device_monitor_class_init (CheeseCameraDeviceMonitorClass *klass)
* @api_version: Supported video4linux API: 1 for v4l, 2 for v4l2.
*
* The ::added signal is emitted when a camera is added, or on start-up
- * after #cheese_camera_device_monitor_colplug is called.
+ * after #empathy_camera_device_monitor_colplug is called.
**/
monitor_signals[ADDED] = g_signal_new ("added", G_OBJECT_CLASS_TYPE (klass),
G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
- G_STRUCT_OFFSET (CheeseCameraDeviceMonitorClass, added),
+ G_STRUCT_OFFSET (EmpathyCameraDeviceMonitorClass, added),
NULL, NULL,
g_cclosure_marshal_generic,
G_TYPE_NONE, 4, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INT);
/**
- * CheeseCameraDeviceMonitor::removed:
+ * EmpathyCameraDeviceMonitor::removed:
* @device: A private object representing the newly added camera
* @id: Device unique identifier.
*
@@ -372,38 +374,38 @@ cheese_camera_device_monitor_class_init (CheeseCameraDeviceMonitorClass *klass)
**/
monitor_signals[REMOVED] = g_signal_new ("removed", G_OBJECT_CLASS_TYPE (klass),
G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
- G_STRUCT_OFFSET (CheeseCameraDeviceMonitorClass, removed),
+ G_STRUCT_OFFSET (EmpathyCameraDeviceMonitorClass, removed),
NULL, NULL,
g_cclosure_marshal_generic,
G_TYPE_NONE, 1, G_TYPE_STRING);
- g_type_class_add_private (klass, sizeof (CheeseCameraDeviceMonitorPrivate));
+ g_type_class_add_private (klass, sizeof (EmpathyCameraDeviceMonitorPrivate));
}
static void
-cheese_camera_device_monitor_init (CheeseCameraDeviceMonitor *monitor)
+empathy_camera_device_monitor_init (EmpathyCameraDeviceMonitor *monitor)
{
#ifdef HAVE_UDEV
- CheeseCameraDeviceMonitorPrivate *priv = CHEESE_CAMERA_DEVICE_MONITOR_GET_PRIVATE (monitor);
+ EmpathyCameraDeviceMonitorPrivate *priv = EMPATHY_CAMERA_DEVICE_MONITOR_GET_PRIVATE (monitor);
const gchar *const subsystems[] = {"video4linux", NULL};
priv->client = g_udev_client_new (subsystems);
g_signal_connect (G_OBJECT (priv->client), "uevent",
- G_CALLBACK (cheese_camera_device_monitor_uevent_cb), monitor);
+ G_CALLBACK (empathy_camera_device_monitor_uevent_cb), monitor);
#endif /* HAVE_UDEV */
}
/**
- * cheese_camera_device_monitor_new:
+ * empathy_camera_device_monitor_new:
*
- * Returns a new #CheeseCameraDeviceMonitor object.
+ * Returns a new #EmpathyCameraDeviceMonitor object.
*
- * Return value: a new #CheeseCameraDeviceMonitor object.
+ * Return value: a new #EmpathyCameraDeviceMonitor object.
**/
-CheeseCameraDeviceMonitor *
-cheese_camera_device_monitor_new (void)
+EmpathyCameraDeviceMonitor *
+empathy_camera_device_monitor_new (void)
{
- return g_object_new (CHEESE_TYPE_CAMERA_DEVICE_MONITOR, NULL);
+ return g_object_new (EMPATHY_TYPE_CAMERA_DEVICE_MONITOR, NULL);
}
/*
diff --git a/libempathy/cheese-camera-device-monitor.h b/libempathy/cheese-camera-device-monitor.h
index d0d98a45..ff0bfa76 100644
--- a/libempathy/cheese-camera-device-monitor.h
+++ b/libempathy/cheese-camera-device-monitor.h
@@ -1,3 +1,5 @@
+/* This file is a copy of cheese-camera-device-monitor.h from Empathy. We
+ * just renamespaced it to avoid conflicts when linking on libcheese. */
/*
* Copyright © 2007,2008 Jaap Haitsma
* Copyright © 2007-2009 daniel g. siegel
@@ -20,48 +22,48 @@
*/
-#ifndef __CHEESE_CAMERA_DEVICE_MONITOR_H__
-#define __CHEESE_CAMERA_DEVICE_MONITOR_H__
+#ifndef __EMPATHY_CAMERA_DEVICE_MONITOR_H__
+#define __EMPATHY_CAMERA_DEVICE_MONITOR_H__
#include
#include
G_BEGIN_DECLS
-#define CHEESE_TYPE_CAMERA_DEVICE_MONITOR (cheese_camera_device_monitor_get_type ())
-#define CHEESE_CAMERA_DEVICE_MONITOR(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), CHEESE_TYPE_CAMERA_DEVICE_MONITOR, \
- CheeseCameraDeviceMonitor))
-#define CHEESE_CAMERA_DEVICE_MONITOR_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), CHEESE_TYPE_CAMERA_DEVICE_MONITOR, \
- CheeseCameraDeviceMonitorClass))
-#define CHEESE_IS_CAMERA_DEVICE_MONITOR(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), CHEESE_TYPE_CAMERA_DEVICE_MONITOR))
-#define CHEESE_IS_CAMERA_DEVICE_MONITOR_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), CHEESE_TYPE_CAMERA_DEVICE_MONITOR))
-#define CHEESE_CAMERA_DEVICE_MONITOR_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), CHEESE_TYPE_CAMERA_DEVICE_MONITOR, \
- CheeseCameraDeviceMonitorClass))
+#define EMPATHY_TYPE_CAMERA_DEVICE_MONITOR (empathy_camera_device_monitor_get_type ())
+#define EMPATHY_CAMERA_DEVICE_MONITOR(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_CAMERA_DEVICE_MONITOR, \
+ EmpathyCameraDeviceMonitor))
+#define EMPATHY_CAMERA_DEVICE_MONITOR_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), EMPATHY_TYPE_CAMERA_DEVICE_MONITOR, \
+ EmpathyCameraDeviceMonitorClass))
+#define EMPATHY_IS_CAMERA_DEVICE_MONITOR(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_CAMERA_DEVICE_MONITOR))
+#define EMPATHY_IS_CAMERA_DEVICE_MONITOR_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EMPATHY_TYPE_CAMERA_DEVICE_MONITOR))
+#define EMPATHY_CAMERA_DEVICE_MONITOR_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EMPATHY_TYPE_CAMERA_DEVICE_MONITOR, \
+ EmpathyCameraDeviceMonitorClass))
-typedef struct _CheeseCameraDeviceMonitorClass CheeseCameraDeviceMonitorClass;
-typedef struct _CheeseCameraDeviceMonitor CheeseCameraDeviceMonitor;
+typedef struct _EmpathyCameraDeviceMonitorClass EmpathyCameraDeviceMonitorClass;
+typedef struct _EmpathyCameraDeviceMonitor EmpathyCameraDeviceMonitor;
-struct _CheeseCameraDeviceMonitor
+struct _EmpathyCameraDeviceMonitor
{
GObject parent;
};
-struct _CheeseCameraDeviceMonitorClass
+struct _EmpathyCameraDeviceMonitorClass
{
GObjectClass parent_class;
- void (*added)(CheeseCameraDeviceMonitor *camera,
+ void (*added)(EmpathyCameraDeviceMonitor *camera,
const char *id,
const char *device_file,
const char *product_name,
int api_version);
- void (*removed)(CheeseCameraDeviceMonitor *camera, const char *id);
+ void (*removed)(EmpathyCameraDeviceMonitor *camera, const char *id);
};
-GType cheese_camera_device_monitor_get_type (void) G_GNUC_CONST;
-CheeseCameraDeviceMonitor *cheese_camera_device_monitor_new (void);
-void cheese_camera_device_monitor_coldplug (CheeseCameraDeviceMonitor *monitor);
+GType empathy_camera_device_monitor_get_type (void) G_GNUC_CONST;
+EmpathyCameraDeviceMonitor *empathy_camera_device_monitor_new (void);
+void empathy_camera_device_monitor_coldplug (EmpathyCameraDeviceMonitor *monitor);
G_END_DECLS
-#endif /* __CHEESE_CAMERA_DEVICE_MONITOR_H__ */
+#endif /* __EMPATHY_CAMERA_DEVICE_MONITOR_H__ */
diff --git a/libempathy/empathy-account-settings.c b/libempathy/empathy-account-settings.c
index 78d60968..4d979568 100644
--- a/libempathy/empathy-account-settings.c
+++ b/libempathy/empathy-account-settings.c
@@ -18,6 +18,7 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
+#include "config.h"
#include
#include
@@ -103,6 +104,8 @@ struct _EmpathyAccountSettingsPriv
/* If TRUE, the account should have 'tel' in its
* Account.Interface.Addressing.URISchemes property. */
gboolean uri_scheme_tel;
+ /* If TRUE, Service property needs to be updated when applying changes */
+ gboolean update_service;
GSimpleAsyncResult *apply_result;
};
@@ -743,6 +746,21 @@ empathy_account_settings_get_service (EmpathyAccountSettings *settings)
return priv->service;
}
+void
+empathy_account_settings_set_service (EmpathyAccountSettings *settings,
+ const gchar *service)
+{
+ EmpathyAccountSettingsPriv *priv = GET_PRIV (settings);
+
+ if (!tp_strdiff (priv->service, service))
+ return;
+
+ g_free (priv->service);
+ priv->service = g_strdup (service);
+ g_object_notify (G_OBJECT (settings), "service");
+ priv->update_service = TRUE;
+}
+
gchar *
empathy_account_settings_get_icon_name (EmpathyAccountSettings *settings)
{
@@ -1445,6 +1463,32 @@ update_account_uri_schemes (EmpathyAccountSettings *self)
priv->uri_scheme_tel, NULL, NULL);
}
+static void
+set_service_cb (GObject *source,
+ GAsyncResult *result,
+ gpointer user_data)
+{
+ GError *error = NULL;
+
+ if (!tp_account_set_service_finish (TP_ACCOUNT (source), result, &error))
+ {
+ DEBUG ("Failed to set Account.Service: %s", error->message);
+ g_error_free (error);
+ }
+}
+
+static void
+update_account_service (EmpathyAccountSettings *self)
+{
+ EmpathyAccountSettingsPriv *priv = GET_PRIV (self);
+
+ if (!priv->update_service)
+ return;
+
+ tp_account_set_service_async (priv->account,
+ priv->service != NULL ? priv->service : "", set_service_cb, self);
+}
+
static void
empathy_account_settings_account_updated (GObject *source,
GAsyncResult *result,
@@ -1486,6 +1530,7 @@ empathy_account_settings_account_updated (GObject *source,
}
update_account_uri_schemes (settings);
+ update_account_service (settings);
g_simple_async_result_set_op_res_gboolean (priv->apply_result,
g_strv_length (reconnect_required) > 0);
diff --git a/libempathy/empathy-account-settings.h b/libempathy/empathy-account-settings.h
index ea0c5b04..10ed3684 100644
--- a/libempathy/empathy-account-settings.h
+++ b/libempathy/empathy-account-settings.h
@@ -78,6 +78,9 @@ const gchar *empathy_account_settings_get_protocol (
const gchar *empathy_account_settings_get_service (
EmpathyAccountSettings *settings);
+void empathy_account_settings_set_service (EmpathyAccountSettings *settings,
+ const gchar *service);
+
TpAccount *empathy_account_settings_get_account (
EmpathyAccountSettings *settings);
diff --git a/libempathy/empathy-camera-monitor.c b/libempathy/empathy-camera-monitor.c
index 7d9d695e..977b1f2c 100644
--- a/libempathy/empathy-camera-monitor.c
+++ b/libempathy/empathy-camera-monitor.c
@@ -33,7 +33,7 @@
struct _EmpathyCameraMonitorPrivate
{
- CheeseCameraDeviceMonitor *cheese_monitor;
+ EmpathyCameraDeviceMonitor *empathy_monitor;
GQueue *cameras;
gint num_cameras;
};
@@ -108,18 +108,20 @@ empathy_camera_monitor_free_camera_foreach (gpointer data,
}
static void
-on_camera_added (CheeseCameraDeviceMonitor *device,
+on_camera_added (EmpathyCameraDeviceMonitor *device,
gchar *id,
gchar *filename,
gchar *product_name,
gint api_version,
EmpathyCameraMonitor *self)
{
- EmpathyCamera *camera = empathy_camera_new (id, filename, product_name);
+ EmpathyCamera *camera;
if (self->priv->cameras == NULL)
return;
+ camera = empathy_camera_new (id, filename, product_name);
+
g_queue_push_tail (self->priv->cameras, camera);
self->priv->num_cameras++;
@@ -131,7 +133,7 @@ on_camera_added (CheeseCameraDeviceMonitor *device,
}
static void
-on_camera_removed (CheeseCameraDeviceMonitor *device,
+on_camera_removed (EmpathyCameraDeviceMonitor *device,
gchar *id,
EmpathyCameraMonitor *self)
{
@@ -192,7 +194,7 @@ empathy_camera_monitor_dispose (GObject *object)
{
EmpathyCameraMonitor *self = EMPATHY_CAMERA_MONITOR (object);
- tp_clear_object (&self->priv->cheese_monitor);
+ tp_clear_object (&self->priv->empathy_monitor);
g_queue_foreach (self->priv->cameras,
empathy_camera_monitor_free_camera_foreach, NULL);
@@ -208,7 +210,7 @@ empathy_camera_monitor_constructed (GObject *object)
G_OBJECT_CLASS (empathy_camera_monitor_parent_class)->constructed (object);
- cheese_camera_device_monitor_coldplug (self->priv->cheese_monitor);
+ empathy_camera_device_monitor_coldplug (self->priv->empathy_monitor);
}
static void
@@ -250,11 +252,11 @@ empathy_camera_monitor_init (EmpathyCameraMonitor *self)
self->priv->cameras = g_queue_new ();
- self->priv->cheese_monitor = cheese_camera_device_monitor_new ();
+ self->priv->empathy_monitor = empathy_camera_device_monitor_new ();
- g_signal_connect (self->priv->cheese_monitor, "added",
+ g_signal_connect (self->priv->empathy_monitor, "added",
G_CALLBACK (on_camera_added), self);
- g_signal_connect (self->priv->cheese_monitor, "removed",
+ g_signal_connect (self->priv->empathy_monitor, "removed",
G_CALLBACK (on_camera_removed), self);
#ifndef HAVE_UDEV
diff --git a/libempathy/empathy-client-factory.c b/libempathy/empathy-client-factory.c
index a02b8b14..294eaf5f 100644
--- a/libempathy/empathy-client-factory.c
+++ b/libempathy/empathy-client-factory.c
@@ -24,7 +24,6 @@
#include "empathy-client-factory.h"
#include "empathy-tp-chat.h"
-#include "empathy-tp-file.h"
#include "empathy-utils.h"
#include
@@ -89,11 +88,6 @@ empathy_client_factory_create_channel (TpSimpleClientFactory *factory,
return TP_CHANNEL (call_channel_new_with_factory (
TP_SIMPLE_CLIENT_FACTORY (factory), conn, path, properties, error));
}
- else if (!tp_strdiff (chan_type, TP_IFACE_CHANNEL_TYPE_FILE_TRANSFER))
- {
- return TP_CHANNEL (empathy_tp_file_new (
- TP_SIMPLE_CLIENT_FACTORY (factory), conn, path, properties, error));
- }
return chainup->create_channel (factory, conn, path, properties, error);
}
@@ -175,15 +169,21 @@ empathy_client_factory_dup_contact_features (TpSimpleClientFactory *factory,
TpConnection *connection)
{
GArray *features;
- TpContactFeature feature;
+ TpContactFeature extra_features[] = {
+ TP_CONTACT_FEATURE_ALIAS,
+ TP_CONTACT_FEATURE_PRESENCE,
+ TP_CONTACT_FEATURE_AVATAR_TOKEN,
+ TP_CONTACT_FEATURE_AVATAR_DATA,
+ TP_CONTACT_FEATURE_CAPABILITIES,
+ /* Needed by empathy_individual_add_menu_item_new to check if a contact
+ * is already in the contact list. This feature is pretty cheap to
+ * prepare as it doesn't prepare the full roster. */
+ TP_CONTACT_FEATURE_SUBSCRIPTION_STATES,
+ };
features = chainup->dup_contact_features (factory, connection);
- /* Needed by empathy_individual_add_menu_item_new to check if a contact is
- * already in the contact list. This feature is pretty cheap to prepare as
- * it doesn't prepare the full roster. */
- feature = TP_CONTACT_FEATURE_SUBSCRIPTION_STATES;
- g_array_append_val (features, feature);
+ g_array_append_vals (features, extra_features, G_N_ELEMENTS (extra_features));
return features;
}
diff --git a/libempathy/empathy-connection-aggregator.c b/libempathy/empathy-connection-aggregator.c
new file mode 100644
index 00000000..fde365c2
--- /dev/null
+++ b/libempathy/empathy-connection-aggregator.c
@@ -0,0 +1,290 @@
+/*
+ * empathy-connection-aggregator.c - Source for EmpathyConnectionAggregator
+ * Copyright (C) 2010 Collabora Ltd.
+ * @author Cosimo Cecchi
+ *
+ * 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
+
+#include "empathy-connection-aggregator.h"
+
+#include
+
+#define DEBUG_FLAG EMPATHY_DEBUG_OTHER
+#include "empathy-debug.h"
+#include "empathy-utils.h"
+
+
+#include "extensions/extensions.h"
+
+G_DEFINE_TYPE (EmpathyConnectionAggregator, empathy_connection_aggregator,
+ G_TYPE_OBJECT);
+
+enum {
+ EVENT_CONTACT_LIST_CHANGED,
+ LAST_SIGNAL
+};
+
+static guint signals[LAST_SIGNAL];
+
+struct _EmpathyConnectionAggregatorPriv {
+ TpAccountManager *mgr;
+
+ /* List of owned TpConnection */
+ GList *conns;
+};
+
+static void
+empathy_connection_aggregator_dispose (GObject *object)
+{
+ EmpathyConnectionAggregator *self = (EmpathyConnectionAggregator *) object;
+
+ g_clear_object (&self->priv->mgr);
+
+ g_list_free_full (self->priv->conns, g_object_unref);
+ self->priv->conns = NULL;
+
+ G_OBJECT_CLASS (empathy_connection_aggregator_parent_class)->dispose (object);
+}
+
+static void
+empathy_connection_aggregator_class_init (
+ EmpathyConnectionAggregatorClass *klass)
+{
+ GObjectClass *oclass = G_OBJECT_CLASS (klass);
+
+ oclass->dispose = empathy_connection_aggregator_dispose;
+
+ signals[EVENT_CONTACT_LIST_CHANGED] =
+ g_signal_new ("contact-list-changed",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ 0,
+ NULL, NULL,
+ g_cclosure_marshal_generic,
+ G_TYPE_NONE,
+ 2, G_TYPE_PTR_ARRAY, G_TYPE_PTR_ARRAY);
+
+ g_type_class_add_private (klass, sizeof (EmpathyConnectionAggregatorPriv));
+}
+
+static void
+contact_list_changed_cb (TpConnection *conn,
+ GPtrArray *added,
+ GPtrArray *removed,
+ EmpathyConnectionAggregator *self)
+{
+ g_signal_emit (self, signals[EVENT_CONTACT_LIST_CHANGED], 0, added, removed);
+}
+
+static void
+conn_invalidated_cb (TpConnection *conn,
+ guint domain,
+ gint code,
+ gchar *message,
+ EmpathyConnectionAggregator *self)
+{
+ self->priv->conns = g_list_remove (self->priv->conns, conn);
+
+ g_object_unref (conn);
+}
+
+static void
+check_connection (EmpathyConnectionAggregator *self,
+ TpConnection *conn)
+{
+ GPtrArray *contacts;
+
+ if (g_list_find (self->priv->conns, conn) != NULL)
+ return;
+
+ self->priv->conns = g_list_prepend (self->priv->conns,
+ g_object_ref (conn));
+
+ tp_g_signal_connect_object (conn, "contact-list-changed",
+ G_CALLBACK (contact_list_changed_cb), self, 0);
+
+ contacts = tp_connection_dup_contact_list (conn);
+ if (contacts != NULL)
+ {
+ GPtrArray *empty;
+
+ empty = g_ptr_array_new ();
+
+ contact_list_changed_cb (conn, contacts, empty, self);
+ g_ptr_array_unref (empty);
+ }
+
+ tp_g_signal_connect_object (conn, "invalidated",
+ G_CALLBACK (conn_invalidated_cb), self, 0);
+}
+
+static void
+check_account (EmpathyConnectionAggregator *self,
+ TpAccount *account)
+{
+ TpConnection *conn;
+
+ conn = tp_account_get_connection (account);
+ if (conn != NULL)
+ check_connection (self, conn);
+}
+
+static void
+account_conn_changed_cb (TpAccount *account,
+ GParamSpec *spec,
+ EmpathyConnectionAggregator *self)
+{
+ check_account (self, account);
+}
+
+static void
+add_account (EmpathyConnectionAggregator *self,
+ TpAccount *account)
+{
+ check_account (self, account);
+
+ tp_g_signal_connect_object (account, "notify::connection",
+ G_CALLBACK (account_conn_changed_cb), self, 0);
+}
+
+static void
+account_validity_changed_cb (TpAccountManager *manager,
+ TpAccount *account,
+ gboolean valid,
+ EmpathyConnectionAggregator *self)
+{
+ if (valid)
+ add_account (self, account);
+}
+
+static void
+am_prepare_cb (GObject *source,
+ GAsyncResult *result,
+ gpointer user_data)
+{
+ EmpathyConnectionAggregator *self = EMPATHY_CONNECTION_AGGREGATOR (user_data);
+ GError *error = NULL;
+ GList *accounts, *l;
+
+ if (!tp_proxy_prepare_finish (source, result, &error))
+ {
+ DEBUG ("Failed to prepare account manager: %s", error->message);
+ g_error_free (error);
+ goto out;
+ }
+
+ accounts = tp_account_manager_get_valid_accounts (self->priv->mgr);
+ for (l = accounts; l != NULL; l = g_list_next (l))
+ {
+ TpAccount *account = l->data;
+
+ add_account (self, account);
+ }
+
+ tp_g_signal_connect_object (self->priv->mgr, "account-validity-changed",
+ G_CALLBACK (account_validity_changed_cb), self, 0);
+
+ g_list_free (accounts);
+
+out:
+ g_object_unref (self);
+}
+
+static void
+empathy_connection_aggregator_init (EmpathyConnectionAggregator *self)
+{
+ self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self,
+ EMPATHY_TYPE_CONNECTION_AGGREGATOR, EmpathyConnectionAggregatorPriv);
+
+ self->priv->mgr = tp_account_manager_dup ();
+
+ tp_proxy_prepare_async (self->priv->mgr, NULL, am_prepare_cb,
+ g_object_ref (self));
+}
+
+EmpathyConnectionAggregator *
+empathy_connection_aggregator_dup_singleton (void)
+{
+ static EmpathyConnectionAggregator *aggregator = NULL;
+
+ if (G_LIKELY (aggregator != NULL))
+ return g_object_ref (aggregator);
+
+ aggregator = g_object_new (EMPATHY_TYPE_CONNECTION_AGGREGATOR, NULL);
+
+ g_object_add_weak_pointer (G_OBJECT (aggregator), (gpointer *) &aggregator);
+ return aggregator;
+}
+
+/* (transfer container) */
+GList *
+empathy_connection_aggregator_get_all_groups (EmpathyConnectionAggregator *self)
+{
+ GList *keys, *l;
+ GHashTable *set;
+
+ set = g_hash_table_new (g_str_hash, g_str_equal);
+
+ for (l = self->priv->conns; l != NULL; l = g_list_next (l))
+ {
+ TpConnection *conn = l->data;
+ const gchar * const *groups;
+ guint i;
+
+ groups = tp_connection_get_contact_groups (conn);
+ if (groups == NULL)
+ continue;
+
+ for (i = 0; groups[i] != NULL; i++)
+ g_hash_table_insert (set, (gchar *) groups[i], GUINT_TO_POINTER (TRUE));
+ }
+
+ keys = g_hash_table_get_keys (set);
+ g_hash_table_unref (set);
+
+ return keys;
+}
+
+GPtrArray *
+empathy_connection_aggregator_dup_all_contacts (
+ EmpathyConnectionAggregator *self)
+{
+ GPtrArray *result;
+ GList *l;
+
+ result = g_ptr_array_new_with_free_func (g_object_unref);
+
+ for (l = self->priv->conns; l != NULL; l = g_list_next (l))
+ {
+ TpConnection *conn = l->data;
+ GPtrArray *contacts;
+
+ contacts = tp_connection_dup_contact_list (conn);
+ if (contacts == NULL)
+ continue;
+
+ tp_g_ptr_array_extend (result, contacts);
+
+ /* tp_g_ptr_array_extend() doesn't give us an extra ref */
+ g_ptr_array_foreach (contacts, (GFunc) g_object_ref, NULL);
+
+ g_ptr_array_unref (contacts);
+ }
+
+ return result;
+}
diff --git a/libempathy/empathy-connection-aggregator.h b/libempathy/empathy-connection-aggregator.h
new file mode 100644
index 00000000..c21c04de
--- /dev/null
+++ b/libempathy/empathy-connection-aggregator.h
@@ -0,0 +1,72 @@
+/*
+ * empathy-connection-aggregator.h - Header for EmpathyConnectionAggregator
+ * Copyright (C) 2010 Collabora Ltd.
+ * @author Cosimo Cecchi
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef __EMPATHY_CONNECTION_AGGREGATOR_H__
+#define __EMPATHY_CONNECTION_AGGREGATOR_H__
+
+#include
+
+#include
+
+G_BEGIN_DECLS
+
+typedef struct _EmpathyConnectionAggregator EmpathyConnectionAggregator;
+typedef struct _EmpathyConnectionAggregatorClass EmpathyConnectionAggregatorClass;
+typedef struct _EmpathyConnectionAggregatorPriv EmpathyConnectionAggregatorPriv;
+
+struct _EmpathyConnectionAggregatorClass {
+ GObjectClass parent_class;
+};
+
+struct _EmpathyConnectionAggregator {
+ GObject parent;
+ EmpathyConnectionAggregatorPriv *priv;
+};
+
+GType empathy_connection_aggregator_get_type (void);
+
+/* TYPE MACROS */
+#define EMPATHY_TYPE_CONNECTION_AGGREGATOR \
+ (empathy_connection_aggregator_get_type ())
+#define EMPATHY_CONNECTION_AGGREGATOR(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST((obj), EMPATHY_TYPE_CONNECTION_AGGREGATOR, \
+ EmpathyConnectionAggregator))
+#define EMPATHY_CONNECTION_AGGREGATOR_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_CAST((klass), EMPATHY_TYPE_CONNECTION_AGGREGATOR, \
+ EmpathyConnectionAggregatorClass))
+#define EMPATHY_IS_CONNECTION_AGGREGATOR(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE((obj), EMPATHY_TYPE_CONNECTION_AGGREGATOR))
+#define EMPATHY_IS_CONNECTION_AGGREGATOR_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_TYPE((klass), EMPATHY_TYPE_CONNECTION_AGGREGATOR))
+#define EMPATHY_CONNECTION_AGGREGATOR_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS ((obj), EMPATHY_TYPE_CONNECTION_AGGREGATOR, \
+ EmpathyConnectionAggregatorClass))
+
+EmpathyConnectionAggregator * empathy_connection_aggregator_dup_singleton (void);
+
+GList * empathy_connection_aggregator_get_all_groups (
+ EmpathyConnectionAggregator *self);
+
+GPtrArray * empathy_connection_aggregator_dup_all_contacts (
+ EmpathyConnectionAggregator *self);
+
+G_END_DECLS
+
+#endif /* #ifndef __EMPATHY_CONNECTION_AGGREGATOR_H__*/
diff --git a/libempathy/empathy-contact-list.c b/libempathy/empathy-contact-list.c
index 3f24998f..b80071c5 100644
--- a/libempathy/empathy-contact-list.c
+++ b/libempathy/empathy-contact-list.c
@@ -145,18 +145,6 @@ empathy_contact_list_get_pendings (EmpathyContactList *list)
return NULL;
}
-GList *
-empathy_contact_list_get_all_groups (EmpathyContactList *list)
-{
- g_return_val_if_fail (EMPATHY_IS_CONTACT_LIST (list), NULL);
-
- if (EMPATHY_CONTACT_LIST_GET_IFACE (list)->get_all_groups) {
- return EMPATHY_CONTACT_LIST_GET_IFACE (list)->get_all_groups (list);
- }
-
- return NULL;
-}
-
GList *
empathy_contact_list_get_groups (EmpathyContactList *list,
EmpathyContact *contact)
diff --git a/libempathy/empathy-contact-list.h b/libempathy/empathy-contact-list.h
index ddd81c33..a9149369 100644
--- a/libempathy/empathy-contact-list.h
+++ b/libempathy/empathy-contact-list.h
@@ -48,7 +48,6 @@ struct _EmpathyContactListIface {
const gchar *message);
GList * (*get_members) (EmpathyContactList *list);
GList * (*get_pendings) (EmpathyContactList *list);
- GList * (*get_all_groups) (EmpathyContactList *list);
GList * (*get_groups) (EmpathyContactList *list,
EmpathyContact *contact);
void (*add_to_group) (EmpathyContactList *list,
@@ -73,7 +72,6 @@ void empathy_contact_list_remove (EmpathyContactList *list,
const gchar *message);
GList * empathy_contact_list_get_members (EmpathyContactList *list);
GList * empathy_contact_list_get_pendings (EmpathyContactList *list);
-GList * empathy_contact_list_get_all_groups (EmpathyContactList *list);
GList * empathy_contact_list_get_groups (EmpathyContactList *list,
EmpathyContact *contact);
void empathy_contact_list_add_to_group (EmpathyContactList *list,
diff --git a/libempathy/empathy-contact-manager.c b/libempathy/empathy-contact-manager.c
deleted file mode 100644
index 1ec6cba1..00000000
--- a/libempathy/empathy-contact-manager.c
+++ /dev/null
@@ -1,578 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Copyright (C) 2007-2008 Collabora Ltd.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Authors: Xavier Claessens
- */
-
-#include
-
-#include
-
-#include